Skip to content

Latest commit

 

History

History
252 lines (133 loc) · 15.8 KB

File metadata and controls

252 lines (133 loc) · 15.8 KB

Changelog

0.13.1 (2026-07-20)

Bug Fixes

  • perf: stop hardware sniffing that misclassified capable devices (f8131eb)
  • perf: stop hardware sniffing that misclassified capable devices (d52e959)

0.13.0 (2026-07-19)

Features

  • canvas: configurable zoom bounds (maxZoom + per-input pinch/wheel) (8d2c50d)
  • canvas: configurable zoom bounds via zoomConfig (maxZoom + per-input) (5c922c5)
  • perf: capability-based performance tiers — assume capable by default (c439c67)
  • perf: capability-based performance tiers — assume capable by default (e27d06c)

Bug Fixes

  • canvas: don't promote the scene layer on iOS (WebKit crash risk) (46b50b6)
  • canvas: don't promote the scene layer on iOS (WebKit crash risk) (3dc0d5c)
  • canvas: key stable will-change on isMobile, not performance tier (d3ad76d)
  • canvas: key stable will-change on isMobile, not performance tier (1b5fb96)
  • canvas: stable will-change on mobile — stop gesture-toggled layer thrash (pan/zoom flashing) (830c9c6)
  • canvas: stop toggling will-change per gesture on mobile (24d9861)

0.12.2 (2026-07-19)

Performance Improvements

  • navbar: lazy-load lucide-react icons to fix consumer bundle bloat (1536851)
  • navbar: lazy-load lucide-react icons to fix consumer bundle bloat (e36058e)

Miscellaneous Chores

  • bench: add native Go profile analyzer (341229e)
  • bench: enforce native batch ceilings (2acacda)
  • bench: harden and batch native analysis (0c760fd)
  • bench: harden native profiling workflow (f017f2a)
  • bench: match JavaScript numeric seed formatting (b2cd95d)
  • bench: migrate profiling tools to TypeScript and Go (f8f868e)
  • bench: preserve interrupted report state (399e65e)
  • bench: reject nonportable analyzer options (e80797a)
  • bench: spawn converted runtime entry point (133d18e)
  • bench: update bundle baseline for lucide code-split (9c4ff1d)

Code Refactoring

  • bench: convert bundle tooling to TypeScript (256cb7b)
  • bench: convert e2e tooling to TypeScript (e4dc1c2)
  • bench: convert runtime tooling to TypeScript (aeaf6f2)
  • test: convert browser test to TypeScript (138c7cb)

Tests

  • bench: exercise native analysis end to end (d2d923b)
  • bench: exercise parity harness on every PR (5fce5a4)

Build System

  • bench: preserve package size budget (dca3f77)

Continuous Integration

  • bench: keep the bundle report free of build-tool noise (d6f783c)
  • bench: make bundle budget informational, report deltas on the PR (aa7e8b2)
  • bench: make bundle budget informational, report deltas on the PR (7c3a6eb)
  • bench: render the bundle report as a Markdown table (bec285e)
  • bench: show before/after deltas in the bundle report (309ef80)

0.12.1 (2026-07-18)

This release reduces rendering, subscription, and interaction hot-path overhead while adding reproducible before/after performance and strict visual-parity tooling. The public API and import paths are unchanged, so no migration is required. The complete work landed in PR #49.

Performance improvements

  • Reduced unnecessary React work by sharing window-size updates, removing duplicate internal dimension subscriptions, skipping unused high-mode visibility subscriptions, stopping loading-state updates after the intro, and avoiding toolbar React renders unless custom formatters need them.
  • Reduced wheel and pan property reads, removed per-event pinch arrays and midpoint allocations, and reused draggable-image geometry for bounds and alpha hit-testing.
  • Improved consumer tree-shaking by marking only CSS as side-effectful and removed Framer Motion overhead from the already-static default intro logo.

Benchmark evidence

Against 0.12.0, two independent 10-pair production-profiling fixture runs produced:

Metric Replication A Replication B
Total React Profiler work 65.05 → 22.35 ms 63.85 → 21.15 ms
React commits 754 → 20 789 → 20
Active listeners 273 → 221 273 → 221
Active resize listeners 79 → 27 79 → 27

The primary React-work metrics improved in every measured pair: about 66% less total React Profiler work and 97.3–97.5% fewer commits. These are fixture-specific React Profiler and listener measurements, not whole-application CPU-cycle or FPS guarantees.

Pinned-toolchain consumer fixture bundles all became smaller. Focused-import gzip bundles shrank 10.9–89.5%, the Draggable fixture shrank 21.3%, and the full Canvas fixture shrank 0.18%; generated CSS was byte-identical. The packed npm artifact instead grew from 99,302 to 101,288 bytes (+2.000%), with the same 95 files, and remained within the explicitly reviewed package-size gate.

A fail-closed 14-scenario Chromium comparison at 1280×720/DPR 1 detected 0 differing pixels across 12,902,400 compared pixels, 0 px maximum geometry difference, and 0 numeric difference across 160 interaction checkpoints. Animation semantics and sampled trajectories also matched in the fixed benchmark environment.

Fixes and examples

  • Made shared window-dimension snapshots deterministic and hydration-safe.
  • Restored the HackWestern example's 1.05× draggable-image hover expansion by opting that demo into the existing hoverScale behavior; this is not a new library default.

Benchmarking and CI

  • Added paired production-runtime benchmarks for React commits and render work, listeners, frame pacing, Long Tasks, Long Animation Frames, heap usage, and motion trajectories.
  • Added opt-in CPU, browser-trace, allocation, and forced-GC profiling, plus exact screenshot, DOM, style, SVG, geometry, interaction, and animation-parity comparisons.
  • Added Node 24 CI checks for dependency auditing, package and fixture types, tests, builds, consumer bundle/package budgets, fail-closed browser capture, and strict parity.

Measurement scope and disclosed tradeoffs

  • Final-head frame-time signals were noisy or inconclusive, so this release does not claim universally higher FPS or smoother frames. A single report-only dynamic-toolbar p99 warning did not reproduce in six focused repeats.
  • Two forced-GC studies found about 1.1–1.4% more incremental live-heap growth even though absolute post-capture live heap decreased by roughly 257–305 KB and sampled allocation traffic improved. This release therefore does not claim uniformly lower memory use.
  • CPU, trace, and allocation profiles remain diagnostic: they were captured on a near-final source revision before the final hydration-only change and are not presented as release-head guarantees.

See the full benchmark evidence and interpretation limits.

0.12.0 (2026-02-25)

Features

  • add configurable zoom multipliers via zoomConfig prop (#47) (d8aa866)

0.11.1 (2026-02-24)

Bug Fixes

  • resize off-screen canvas to match image for alpha detection (#45) (ee2b982), closes #44

0.11.0 (2026-02-23)

Features

  • add navigateToSection to canvas context (#42) (2037274)

0.10.1 (2026-02-22)

Bug Fixes

  • skip all animations when skipIntro is true (#39) (406cd91)

0.10.0 (2026-02-05)

Features

  • add panTransition prop for customizable pan-to-home animation timing (#37) (24d33cd)

0.9.0 (2026-02-03)

Features

  • add rolldown bundler for library builds (#35) (b88611d)

0.8.0 (2026-01-31)

Features

Documentation

  • add claude.md for AI assistant guidelines (#32) (3f42e85)

0.7.0 (2026-01-15)

Features

0.6.0 (2026-01-15)

Features

0.5.0 (2026-01-14)

Features

0.4.1 (2026-01-14)

Bug Fixes

  • npm downloads badge to show total downloads (#23) (b49c7f7)

Miscellaneous Chores

  • Add npm downloads badge to README (#21) (71c44e2)

0.4.0 (2026-01-13)

Features

0.3.1 (2026-01-13)

Miscellaneous Chores

0.3.0 (2026-01-12)

Features

0.2.1 (2026-01-12)

Bug Fixes

  • add repo url to package.json (#9) (687731a)

0.2.0 (2026-01-12)

Features

0.1.3 (2026-01-11)

Initial version tracked by release-please.