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