v0.0.4

CoreBunch/Instaticv0.0.4Jun 13, 2026by github-actions[bot]

AI Summary

A performance-focused release featuring inline text editing and import fidelity improvements. It standardizes container usage and optimizes hot paths across the publish pipeline.

Key Highlights

  • Enable inline text editing on the canvas (double-click to edit)
  • Standardize on GHCR and drop Docker Hub mirror
  • Remove generated import scope classes for per-stylesheet modes
  • Fix critical hot paths across publish pipeline and public serving

New Features

  • Inline text editing on canvas
  • Per-stylesheet import modes

Full Release Notes

## What's Changed
* Standardize on GHCR; drop the unconfigured Docker Hub mirror by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/20
* Per-stylesheet import modes; remove generated import scope classes by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/15
* Fix import fidelity: rgba color tokens and import-from-anywhere by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/19
* Make var()/env() declarations engine-proof at the import boundary by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/21
* Fix plugin useCanvasNodeRect: measure real canvas nodes, not admin chrome by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/22
* perf: fix critical hot paths across publish pipeline, public serving, and editor store by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/24
* Remove AI credential authentication selector by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/30
* perf: incremental site saves; hoist runtime builds out of the publish transaction by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/27
* perf(canvas): kill per-node selector storms, per-frame DOM re-measures, and whole-site loop subscriptions by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/28
* perf(plugins): handle-based VM dispatch, native base64, and indexed content-API lookups by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/29
* Content Outlet availability + toast layering; close outlet invariant holes by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/23
* Per-module published-JS channel; migrate the form runtime onto it by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/26
* Inline text editing on the canvas (double-click to edit) by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/25
* Clean up Style-rules review pane + fix icons:sync for in-house icons by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/31
* Fix template read-only hint/open firing over editable page content by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/32
* feat(editor): user-saved layouts — save any subtree, re-insert it exactly by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/33
* fix(canvas): live mode shows the shared frame skeleton while hydrating by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/35
* Remove inconsistent panel keyboard shortcuts from the rail by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/36
* feat(canvas): open design mode at 50% zoom; pin live mode to 100% by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/34
* fix(cms): homepage swap + delete in one save no longer fails publish by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/37
* refactor(publish): one-way layering — repositories never import the publish layer by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/38
* refactor(publisher): single class-CSS emission engine for publish and canvas by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/39
* fix(media): retina screens download the WebP variants, not the multi-MB original by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/40
* refactor(explorer): one structural-row enumeration + shared dnd pointer math by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/46
* docs(agents): document PR conventions by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/50
* Add a "Not found" template target for designed 404 pages by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/52
* refactor(vc): one slot-outlet collector — export it from @core/visualComponents by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/44
* refactor(vc): split vcTreeOps out of visualComponentsSlice by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/47
* feat(editor): double-click rows to rename in explorer panels by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/49
* chore(cleanup): dead-code spring cleanup — knip reports zero unused surface by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/41
* refactor(siteImport): one adapter contract, phase-decomposed pipeline, deduped helpers by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/42
* refactor(siteImport): decompose conflict-resolution hotspots into named concerns by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/43
* feat(publisher): derive <img sizes> from the layout — remove the manual Sizes field by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/45
* fix(ai): tools inherit caller capabilities instead of ai.chat acting as a blanket read grant by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/51
* fix(editor): apply node inline styles in read-only composed canvas content by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/54
* fix(admin): redirect unknown admin URLs to the dashboard instead of a blank page by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/55
* chore(release): prepare v0.0.4 by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/56
* fix(test): make canvas breakpoint-frame tests wait on readiness instead of fixed sleeps by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/57
* refactor(canvas): mount breakpoint frames directly, drop progressive staggering by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/58
* test(canvas): render CanvasTransformLayer directly in the no-staggering test by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/59
* test: stub user-preference fetches in global setup to stop a cross-test ECONNREFUSED leak by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/60
* test: register global afterEach(cleanup) so RTL trees don't leak across files under bun by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/61


**Full Changelog**: https://github.com/CoreBunch/Instatic/compare/v0.0.3...v0.0.4