Skip to content

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 27 Jul 23:37
· 24 commits to main since this release

   🚨 Breaking Changes

  • Engine loop policy derived from jitter; remove idle prop and setDotSize  -  by @TheeKia and Claude Fable 5 (85270)
  • Grouped dots/motion props replace flat tuning props  -  by @TheeKia and Claude Fable 5 (f454a)

   🚀 Features

  • Honor prefers-reduced-motion (snap morphs, opacity-only changes, zero jitter)  -  by @TheeKia and Claude Fable 5 (49cd2)
  • A11y role/label, React 19 ref prop, docs sync  -  by @TheeKia and Claude Fable 5 (c9398)
  • MaxDpr prop — configurable density cap (default unchanged at 2)  -  by @TheeKia and Claude Fable 5 (1bec6)
  • ReducedMotion prop override + playground toggle  -  by @TheeKia and Claude Fable 5 (9c1c7)
  • Fill mode — parent-driven sizing via ResizeObserver  -  by @TheeKia and Claude Fable 5 (810fd)
  • Matching='nearest' — Morton-rank spatial pairing for coherent morphs  -  by @TheeKia and Claude Fable 5 (0dfcf)
  • Pure params core — DotOptions/MotionOptions resolution and SimParams  -  by @TheeKia and Claude Fable 5 (4639c)
  • Backends consume live SimParams via Backend.setParams  -  by @TheeKia and Claude Fable 5 (e6a94)

   🐞 Bug Fixes

  • Own canvas sizing in one pre-paint layout effect, drop JSX width/height  -  by @TheeKia and Claude Fable 5 (4bc6d)
  • Make dotSize CSS-px on all tiers so dots render the same size at every DPR  -  by @TheeKia and Claude Fable 5 (95610)
  • Clamp auto font sizing to the canvas height; add font/draw unit tests  -  by @TheeKia and Claude Fable 5 (644d0)
  • Explicit webgpu request falls back through webgl2 before canvas2d  -  by @TheeKia and Claude Fable 5 (f3e08)
  • Replace sin-fract GPU jitter hash with integer PCG matching the [0,1) contract  -  by @TheeKia and Claude Fable 5 (54cdc)
  • Reserve correct CSS box at SSR/first paint; silence server useLayoutEffect  -  by @TheeKia and Claude Fable 5 (6cd5b)
  • Re-rasterize text once its custom web font finishes loading  -  by @TheeKia and Claude Fable 5 (84021)
  • Gate continuous loop on field content; public-surface test; export SimParams  -  by @TheeKia and Claude Fable 5 (3fa03)
  • Gate loop on active particles; correct ts-expect-error guard placement  -  by @TheeKia and Claude Fable 5 (fdbbb)

   🏎 Performance

  • Drop fully-overwritten copySlot from reconcile spawn path  -  by @TheeKia and Claude Fable 5 (7ffe9)
  • Fuse settle detection into stepField so settled() is O(1) per frame  -  by @TheeKia and Claude Fable 5 (12d25)
  • Draw every running frame and drop preserveDrawingBuffer copy cost  -  by @TheeKia and Claude Fable 5 (871ec)
  • Switch idle behavior live via engine.setIdle instead of recreating the backend  -  by @TheeKia and Claude Fable 5 (007d6)
  • Coalesce rasterization with a latest-wins scheduler  -  by @TheeKia and Claude Fable 5 (7fc16)
  • Cache decoded images/bitmaps with a small LRU in both rasterizers  -  by @TheeKia and Claude Fable 5 (91b05)
    View changes on GitHub