Follow-up to v0.7.23’s resolver-shadow filter extension: single-flights the reorder source read (one fetch per batch instead of one per unresolved target) and tags loose-match
sourceHfIdCount: 0 events so they’re distinguishable on the telemetry dashboard.Fixes
- Studio: Single-flight reorder source read, tag loose-match sourceHfIdCount, brace style (69b927a30)
This release unifies CLI and Studio telemetry identity, extends the resolver-shadow noise filter to cover timing/GSAP/reorder edits, and auto-infers composition duration for CSS/WAAPI/Lottie compositions so
data-duration is no longer required. Also includes pre-flight validation for malformed sub-compositions and a batch of CLI/lint reliability fixes.Features
- Telemetry: Unify CLI and Studio PostHog identity (Layer 1) (9c4d9e50a, #1829)
- Capture: Extract chips/stat-cells/tabs, detect icon fonts, transparent grounds (6cc87312d)
Fixes
- Studio: Extend resolver-shadow runtime-node filter to timing/GSAP/reorder chokepoints (c215a20c8, #1839)
- Player: Rescale on cross-origin timeline ready, guard warn spam (e5ec4cf53, #1840)
- Runtime: Auto-infer composition duration for CSS/WAAPI/Lottie so data-duration is optional (24edb1509, #1830)
- Core,producer,cli: Pre-flight validation for empty/malformed sub-compositions (cf573f7f3, #1831)
- Engine: Retry probe on pollHfReady zero-duration timeout (b33d54f54, #1824)
- Skills: Clear two Snyk Fails and harden the network + supply-chain surface (535297280, #1804)
- Skills: Make hyperframes package version resolution non-fatal and overridable (060889f84, #1825)
- CLI: Keep doctor resilient to a corrupt browser cache (0d202ea77, #1822)
- CLI: Exclude clip-path-hidden text from inspect layout and contrast audits (a7d0ab2d6, #1821)
- Lint: Catch visible markup comments (d1038918b, #1819)
- CLI: Don’t run unbounded ffprobe on remote snapshot inputs (1a36b2abb)
- CLI: Extract snapshot video frames from remote http(s) srcs (1f377f732)
Docs & Examples
- Clarify transparent WebM shows as yuv420p under ffprobe (alpha is a VP9 side-channel) (534d6177b, #1823)
- Sdk: Republish SDK tab pages (Mintlify incremental deploy skipped the new files) (bd27ea31a)
- Sdk: Pin editing-affordances availability to @hyperframes/sdk@0.7.22 (9140ee51b)
This release makes
@hyperframes/sdk a first-class editing engine: a new shared resolveEditingAffordances API (with a browser SDK adapter) tells custom editors what’s editable on any element, backed by comprehensive SDK reference docs and guides. The storyboard view is now on by default, plus encode, lint, and CLI reliability fixes.Features
- Editing: Shared resolveEditingAffordances (core) + studio re-point + SDK adapter (5915590b0, #1814)
- CLI: Add —public flag to publish (856bb0980, #1815)
- CLI: File a GitHub issue with a published repro from feedback (010df6a0a, #1816)
- Studio: Make storyboard view default available (remove FF) (f24a1a9ce, #1794)
Fixes
- Lint: Recognize Three.js loaded via ESM URL/path imports (27a7f3749, #1805)
- Lint: Stop font_family_without_font_face flagging system-ui stacks and var() (11432ea8c, #1796)
- Engine: Pad odd output dimensions up to even for H.264/H.265 encode (3a2f05288, #1802)
- Examples: Host the kinetic-type A-roll so the video actually renders (c01d1ae03, #1799)
- Lint: Stop overlapping_gsap_tweens flagging distinct unresolved targets (036e3660c, #1798)
- CLI: Never print “[object Object]” from validate/inspect errors (a5c2636e8, #1810)
- CLI: Skip AI skills install when git is unavailable (23adfdc49, #1803)
- CLI: Omit render duration when feedback command has none (db61509dd, #1797)
- CLI: Show output video length in render summary, not render time (e7939ccd5, #1812)
- CLI: Serve project media with HTTP Range so validate reads WAV duration (466ee08ff, #1811)
- Storyboard-angle review follow-ups (M1 bg-on-clip, B3 slideshow, parser guard, CLI fixes) (a4303137c, #1791)
- Studio: Filter runtime-generated nodes from resolver-shadow telemetry (a4eacaec3, #1795)
Docs & Examples
- Sdk: Comprehensive SDK reference + guides (26e9283f6, #1817)
- Root composition duration is compile-time, not script/—variables parameterizable (bdd0084c2, #1818)
Adds a lint rule that errors on
crossorigin on media (it renders fine but shows blank in preview) and fixes the root cause of id-less media rendering as a blank wash in the timing compiler.Features
Fixes
Docs & Examples
View the full commit range.This release fixes a render-correctness bug where a video or audio element identified only by a
data-hf-id (no real id) rendered as a blank white wash with dropped audio. It also restores Studio keyframe retiming (drag-to-retime and Move to Playhead) and ships capture and runtime reliability improvements.Features
- Studio: Restore keyframe retiming — drag-to-retime + Move to Playhead (closes #1782) (b403c54a, #1784)
- CLI: Expose Studio selection through preview (9983f37c, #1777)
Fixes
- Producer,lint: Id-less media renders blank wash instead of footage (74f9c31b, #1790)
- Producer: Keep video captures viewport-bound on software (c9613cd8, #1788)
- Core: Publish runtime inline artifact (e73076e9, #1787)
- Studio: Keyframe/position editing correctness + thumbnail cache busting + local-studio preview discovery (0a9555a0, #1781)
- Render: Avoid empty WAAPI scans and llvmpipe auto GPU (fc0f8c31, #1775)
Performance
Docs & Examples
Internal
- Skills: Rebuild faceless-explainer + pr-to-video on the shot-sequence architecture (7cb83865, #1778)
This release fixes the
@hyperframes/core package by publishing the generated
runtime inline module required by the top-level entrypoint. It also improves
Studio keyframe editing and retiming, refreshes bundled skills, and trims the
README motion preview.Features
- Studio: Restore keyframe retiming — drag-to-retime + Move to Playhead (closes #1782) (b403c54a, #1784)
Fixes
- Core: Publish runtime inline artifact (e73076e9, #1787)
- Studio: Keyframe/position editing correctness + thumbnail cache busting + local-studio preview discovery (0a9555a0, #1781)
Docs & Examples
Internal
- Skills: Rebuild faceless-explainer + pr-to-video on the shot-sequence architecture (7cb83865, #1778)
This release targets the reported render regression by removing per-frame empty
animation scans, fixing software WebGL auto-detection on CPU render hosts, and
reducing headless capture setup overhead. It also exposes Studio selection state
through
hyperframes preview so coding agents can inspect and edit the active
composition more directly.Features
Fixes
Performance
View the full commit range.@hyperframes/lint can now run fully in the browser — validate compositions client-side with no Node.js and no server round-trip — and it now depends only on @hyperframes/parsers, so installing the validator no longer pulls the studio server or other unrelated packages.Features
- Lint: New
@hyperframes/lint/browserentry — a node-free, client-side rule engine (lintHyperframeHtml,lintMediaUrls,shouldBlockRender) for browser-only editors and tools (6aaab32c, #1773)
Internal
- Lint: Depend only on
@hyperframes/parsers(dropped@hyperframes/core); relocated the shared URL/asset-path, font-alias, and slideshow-parser utilities into@hyperframes/parserswith back-compat stubs in core, and hardened the CSSurl()regex against polynomial-ReDoS (6aaab32c, #1773)
Docs & Examples
View the full commit range.Studio gains element groups: select multiple elements and group them into a single editable unit — on the canvas and in the timeline — then ungroup back to their original positions. This release also reads inline-authored GSAP timelines and fixes keyframe commit routing, 3D-transform edits, and ungroup positioning.
Features
- Studio: Expand sub-composition groups + children in the timeline (6a729b7e, #1761)
- Gsap: Read timelines authored inline (acorn read path) (2e02bcf7, #1760)
- Studio: Element groups — studio UI (1eed7a9b, #1759)
- Studio: Element groups — source mutations (4c461b4a, #1758)
Fixes
- Studio: Keep useGsapTweenCache under the size cap + correct non-sticky drill test (a44ef47e, #1770)
- Studio: Bake the group transform into members on ungroup (bc5a51a6, #1764)
- Studio: Remove keyframe dragging from the timeline (cf8f8aa5, #1763)
- Studio: Keyframe commit routing for 3D and cross-group edits (2d3b19d2, #1762)
Internal
View the full commit range.This CLI release keeps
hyperframes init on the GitHub-backed skills
freshness path while the skills.sh registry catches up, with a CI-only escape
hatch and offline-safe best-effort install behavior. It also publishes the newly
extracted parser, lint, and studio-server packages as part of the fixed-version
package set.Fixes
Internal
- Extract @hyperframes/studio-server from core (7a4853df, #1757)
- Extract @hyperframes/lint from core (98d0bdd7, #1756)
- Extract @hyperframes/parsers from core (cdf9c817, #1755)
This CLI release makes HyperFrames skills self-healing: installs now keep a
freshness manifest, install once globally, and mirror only HyperFrames-owned
skills into detected agent stores.
Features
- CLI: Skills freshness — version check, manifest, global install + multi-agent mirror (bf961d12, #1753)
This lint reliability release catches malformed generated HTML that leaves CSS
or code-looking text between the document head and the composition root, where a
browser would render it as visible video text.
Fixes
View the full commit range.This release unblocks Zephyr and other producer-backed generation flows that use
Google Fonts: those imports now warn instead of hard-failing lint when the
producer can resolve them. It also keeps HyperFrames skills installs targeted to
the agents a project actually uses and adds a product-launch video skill.
Features
- Skills: Product-launch-video skill + consolidate motion knowledge into hyperframes-animation (05af482f, #1745)
Fixes
- Lint: Allow producer-resolved google fonts (aacce27a, #1750)
- CLI: Scope skill installs to relevant agents, not all ~70 via —all (70a03f78, #1748)
This release keeps the
hyperframes skills CLI honest about what’s installed. skills check now flags skills that were renamed or dropped upstream, skills update prunes them and installs with --copy so a freshly installed set matches the published manifest, and login persists and shows a friendly user identity. It also lands producer and runtime reliability work: render fps is honored when seeking, /health is served from a worker thread so probes survive main-thread stalls, and binary file responses now stream.Features
- CLI: Persist + show friendly user identity; preserve unknown credential fields (b9b578039, #1741)
- CLI: Surface and prune skills removed upstream (88fffb04d, #1740)
- CLI: Add skills version check, update, and freshness manifest (d70ee134c, #1738)
Fixes
- CLI: Install skills with —copy so check sees a faithful, correctly-placed set (51f8231eb, #1744)
- CLI: Close skills removed-detection power-user gaps (follow-up to #1740) (13b115e00, #1743)
- Runtime: Honor render fps when seeking (c9e8dd386, #1739)
- Producer: Serve /health from a worker_thread so probes survive main-thread stalls (01a10cdc5, #1733)
Performance
View the full commit range.This producer reliability release blocks impossible distributed plans before they
fan out to chunk workers, preventing unbounded runtime timelines from turning
into runaway render work. It also fixes distributed frame-path indexing so
reconstructed extracted-frame assets resolve from the correct zero-based keys.
Fixes
- Producer: Reject impossible distributed durations (dca5fa90, #1732)
- Producer: RebuildExtractedFramesFromPlanDir off-by-one in framePaths key indexing (7db84fc0, #1730)
A reliability release for Studio authoring: Enable-keyframes now works (and auto-tracks endpoints) on statically-positioned elements backed by a global
gsap.set, and manually dragging such elements no longer flings them off-canvas — the position is migrated cleanly onto GSAP. Rounded out with composition-lint and clip hold-frame fixes.Fixes
- Studio: Enable keyframes works (and auto-tracks) on elements with a global gsap.set (226a741c, #1728)
- Core: Lint leaked head text in compositions (bafed1fc, #1727)
- Engine: Hold last frame when a clip’s media is shorter than its slot (92385711, #1726)
Headlining this release is a draggable 3D-transform cube in the Studio design panel — tilt an element in X/Y/Z, dial in perspective and scale right on the canvas, and keyframe it like any other property. It ships alongside per-slide slideshow autoplay, new lower-thirds catalog blocks, and producer reliability and security fixes.
Features
- Studio: Draggable 3D-transform cube in the design panel (37ac1380, #1710)
- Slideshow: Per-slide autoplay (manual-advance, opt-in) (7517f6ac, #1708)
Fixes
- Producer: Stop retrying capture attempts that made zero progress (690cf1b7, #1725)
- Media Use: Kill shell command injection in probe/heygen-search/eval (041f2fa1)
Catalog
- Registry: Add lower thirds catalog blocks (ab818a2f, #1134)
- Add 19-skills catalog to README, CLAUDE.md, and Mintlify docs (f7bc0384, #1722)
Internal
- Skills: Run skills/**/*.test.mjs in CI (0c05025c, #1724)
- Skills: Rename graphic-overlays skill to talking-head-recut (56859b61, #1720)
This release ships the post-0.7.6 fixes that unblock stable adoption: producer probe navigation timeouts now retry, and the Claude plugin fixture no longer trips compression guards during install. It also improves slideshow player interactivity and includes the latest Studio motion-editing and media-use provider work.
Features
- Slideshow: Auto-set interactive on inner player (64eaad7d, #1712)
- Studio: Motion editing — speed-curve editor, class-tween attribution, per-keyframe size & ease (36499220, #1705)
- Studio: Redesign Asset tab + fix beat analysis auto-trigger (92befea3, #1684)
- Media Use: Resolve engine + BGM/SFX/image/icon providers (b2dc3537, #1683)
- Media Use: Core infrastructure — manifest, cache, adopt, probe (73f6d3e5, #1682)
Fixes
- Plugin: Avoid high compression silence fixture (96ab4b18, #1717)
- Producer: Retry probe navigation timeouts (0558b876, #1713)
- Skills: Make media-use frontmatter valid YAML so
skills addworks (814c96ce, #1709)
Internal
View the full commit range.This release sharpens Studio’s animation editing — per-keyframe ease presets, velocity fitting, gesture smoothing, and marquee multi-selection — and adds
.srt/.vtt caption export to the CLI. It also improves preview and render fidelity: document-flow layouts now preview WYSIWYG, project-root-relative assets resolve in the preview iframe, and the CLI ships its player/slideshow bundles so present/play work from npm.Features
- CLI: Export .srt/.vtt caption sidecars from a transcript (821bf292, #1704)
- Studio: Per-keyframe ease presets, velocity fitting, gesture smoothing (97db811a, #1694)
- Studio: Marquee multi-selection + off-canvas indicators (8ae010bf, #1693)
- CLI: Shared TTS/BGM auth preflight + caption and skill-workflow fixes (54cab331, #1697)
- Telemetry: Attribute renders to the authoring workflow skill (5242dde2, #1695)
Fixes
- Runtime: Keep stamped flow children in document flow in preview (9bf1e1c2, #1702)
- CLI: Ship player + slideshow bundles so present/play work from npm (1c389983, #1706)
- Engine: Defend macOS regular Chrome screenshots (89ff299a)
- Runtime: ImmediateRender for set tweens + array timeline normalization (6987447a, #1692)
- Studio: Resolve project-root-relative asset URLs in preview iframe (c7b9bf33, #1698)
Docs & Examples
Internal
View the full commit range.This stable release fixes cross-origin player readiness so hosted HyperFrames
previews can play through the runtime bridge without app-origin blob wrappers.
It also improves render robustness by retrying transient producer probe crashes
and preventing visible GSAP transition overlays from leaking into output.
Fixes
- Player: Treat runtime timeline as cross-origin ready (ea23e630, #1690)
- Producer: Retry probe stage on transient browser errors (546b2d77, #1688)
- Flag visible GSAP transition overlays (899b8faa, #1686)
This stable release improves render reliability and skill authoring: producer duration
now falls back to sub-composition timing, empty sub-composition files no longer abort
renders, and Studio timeline styling handles missing tags safely. It also ships
music-to-video workflow updates, per-skill telemetry, and clearer CLI install/debug
guidance.
Features
- CLI: Per-skill usage telemetry (4961e4e4)
- Skills: Unify bgm-to-video flows into music-to-video (a34d3dba)
- Skills: Add bgm-to-video skill (d596379e)
- Skills: Guide install when a matched workflow isn’t installed (08328b04, #1647)
Fixes
- Producer: Derive duration from sub-composition timing when root has no data-duration (45a9440c, #1680)
- Core: Skip empty sub-composition files instead of aborting render (656c1200, #1678)
- Studio: Guard against null tag in timeline track style (d4aa5f93, #1679)
- CLI: Improve whisper-cpp install guidance and add doctor check (344618e2, #1681)
- Engine: Restore fast screenshot path for viewport captures (f622e5a7, #1670)
- CLI: Install skills into project dir on non-interactive init (bf4f34b3, #1671)
- CLI: Expose render debug mode (7133c396)
- Unblock music video ci checks (5d1bff51)
- Producer: Store css-var-fonts baseline as raw binary, not LFS pointer (119284d3)
- Producer: Restore css-var-fonts regression baseline (f012b8b8)
- Lint: Catch CSS↔GSAP transform conflicts in scoped selectors and frame sub-compositions (9ccae863)
Docs & Examples
- Skills: Add music-source brief to music-to-video Step 0 (7a464689)
- Skills: Register music-to-video in the hyperframes router (44b04324)
- Skills: Add beat-synced montage authoring recipe (0dcf914e)
Catalog
- Refine music-to-video planning catalogs (a23ca348)
Internal
- Lint: Keep the fallow audit gate green (4a8e2f1c)
Other Changes
- Merge pull request #1672 from heygen-com/fix/skill-authoring-fixes (26810856)
- Skills: Apply oxfmt to music-to-video and router docs (265b0273)
This stable release fixes a production render visibility leak where timed descendants could remain visible after their parent clip ended. It also includes producer render performance cleanup and documentation coverage for package entrypoints.
Fixes
Performance
Docs & Examples
View the full commit range.Fixes several production-rendering edge cases: shader transitions now survive the producer capture path, audio muxing preserves full stream duration, and CSS variable font declarations no longer trip deterministic font resolution.
Fixes
- Compiler: Skip CSS var() in font resolver (468f7ec3, #1655)
- Producer: Capture page-side shader composites via screenshot (8c13a726, #1656)
- Producer: Split capture average timing (4976b5e0, #1657)
- Engine: Remove -shortest from muxVideoWithAudio (#1648) (e9957eca, #1650)
Internal
View the full commit range.Fixes gesture recording selection sync and video-heavy render base64 frame injection.
Fixes
- Studio:
selectedGsapAnimationsempty after gesture recording — motion path nodes non-interactive, timeline diamonds missing. Root cause: animation fetch dedup key didn’t include the selection target, and the preview sync didn’t re-run after soft reloads (82a5298, #1646) - Producer: Inline base64 frames in injector to unblock video-heavy renders (4be81b4, #1630)
Studio GSAP keyframe and motion-path editing, instant flicker-free manual editing, sub-composition rendering fixes, and frame-preset foundation for skills.
Features
- Studio: GSAP keyframe + motion-path editing — drag to add keyframes, Alt+drag to move entire animation path, click-to-add waypoints on motion paths, canvas shortcuts panel (091137e, #1605)
- Studio: Instant, flicker-free manual editing — soft-reload preserves inline styles, stale-ID guard prevents duplicate tweens, resize delete+add pattern (091137e, #1605)
- Skills: Frame-preset library + shared audio engine foundation (d0f0ec2, #1632)
- Skills: Product-launch, pr-to-video, faceless-explainer moved to script-driven architecture (1967901, #1635)
Fixes
- Studio: Preview freeze after ~10s — clock duration no longer shrinks during playback (1f5dbdb, #1636)
- Studio:
crypto.randomUUIDfallback for plain HTTP preview (1f5dbdb, #1637) - Producer: ENOTEMPTY race on worker directory cleanup (1f5dbdb, #1644)
- Core: Register sub-composition timelines after async build (4db708e, #1638)
- Core: Render standalone sub-composition previews + surface captured video assets (0e75eb2, #1631)
- CLI: Classify missing whisper-cpp as a setup gap, not a command error (f12754f, #1628)
- Skills: Reject empty/partial scene files at assembly, not at render (a843b2a, #1629)
This hotfix restores
hyperframes skills on Windows by invoking npm’s npx.cmd
shim through cmd.exe, while preserving direct npx execution on Linux and macOS.
The same resolver also covers the local Studio preview’s npx vite path and is
verified by CI on all three operating systems.Fixes
View the full commit range.This hotfix restores Node-compatible package entrypoints for published HyperFrames
packages, so npm consumers load built JavaScript and declaration files instead of
source TypeScript. It also improves page-side rendering so shader transitions paint
correctly and final-scene content remains visible through the end of the render.
Fixes
- Publish Node-compatible package entrypoints (2612b9bd, #1622)
- Shader Transitions: Page-side render dropped shader transitions and final-scene content (a85a507c)
This hotfix makes slideshow presenter decks more reliable when they contain interactive
media. Presenter and audience views now keep media controls, muted autoplay fallback,
global mute, editable speaker notes, and first-load navigation chrome in sync.
Fixes
View the full commit range.This hotfix restores the published
@hyperframes/core subpath contract used by Studio,
SDK, and CLI consumers. Installed packages can now resolve the beats, storyboard,
HTML attribute safety, package metadata, and clip tree entry points that already existed
in source.Fixes
View the full commit range.This hotfix improves render reliability across WebM and MP4 outputs: VP9 encodes now use a shared, tunable speed default across render paths, and MP4 muxing preserves AAC start offsets so audio stays aligned.
Fixes
- Engine: Preserve AAC start time during MP4 mux (0473254b, #1615)
- Engine: Tune VP9 cpu-used across render paths (8408a447, #1614)
Full slideshow stack: schema, parser, controller,
<hyperframes-slideshow> web component, presenter mode, branching editor panel, and hyperframes present CLI command. SDK gains element add/remove ops, elastic timing, keyframe writers, variables/brand model, and image-alpha hit-testing. Fixes cross-realm iframe media handling, per-element audio muting, querySelector injection, and DOM edit parity.Features
- Studio: Slideshow branching editor panel UI (04a775b5, #1592)
- Studio: Slideshow manifest persistence + panel helpers (b74020fa, #1591)
- Player: <hyperframes-slideshow> web component + presenter (075302cd, #1590)
- Player: Slideshow controller state machine (6938d6ac, #1589)
- Studio: Slideshow branching editor panel (3861e8e9, #1582)
- Player: Slideshow controller + <hyperframes-slideshow> component (7af3eb8f, #1581)
- Core: Slideshow schema, parser, and lint rule (83764579, #1580)
- Sdk: Image-alpha hit-test phase 1 (WS-G) (37efbcb9, #1574)
- Sdk: Ws-3c — addWithKeyframes + replaceWithKeyframes SDK ops (acorn writer) (418f198b, #1572)
- Sdk: AddElement forward op — mint hf-id, inverse = removeElement (WS-D) (0ca01c88, #1571)
- Sdk: Ws-c elastic timing + word-alignment resolver (WS-C) (f65e2296, #1570)
- Sdk: Ws-b variables/brand — object-valued font/image + B1 JSON model (d0e520db, #1569)
Fixes
- Slideshow: Present media controls (f0c4dee7, #1601)
- Core: Mute preview audio per-element so a slow-decoding track isn’t silenced (cd832f01, #1602)
- Core: Import cssSelector test from vitest, not bun:test (82b6ccde, #1599)
- Core,studio: Escape user values in querySelector attribute selectors (c0ffdc0f)
- Sdk,studio: Restore DOM edit cutover parity (758eda99, #1565)
- Slideshow: Finish remaining split-PR review findings (f05b3f9c, #1594)
- Slideshow: Address code-review findings #1580-1584 (cc2220e5, #1585)
- Release: Scope tag-monotonicity guard to tags reachable from HEAD (3a28d3f6)
- Sdk: Code-review follow-ups (WS-B/C/3.C, #1569/#1570/#1572) (dd6fad6b, #1588)
- Engine: Hold the last video frame at the inclusive clip end (fdb8f33f, #1564)
Docs & Examples
Internal
- Examples: Slideshow demos — airbnb deck, startup pitch, fixture (ae404984, #1584)
- Core: Gate acorn GSAP writer behind cutover flag; keep recast default (WS-3F) (967bf9f9, #1573)
- Publish: Publish @hyperframes/sdk to npm (7607a714, #1587)
Adds slideshow support end-to-end: a player-side controller state machine and
<hyperframes-slideshow> web component, a Studio branching-editor panel with manifest persistence, plus authoring-skill guidance and example decks.Features
- Studio: Slideshow branching editor panel UI (04a775b5, #1592)
- Studio: Slideshow manifest persistence + panel helpers (b74020fa, #1591)
- Player: <hyperframes-slideshow> web component + presenter (075302cd, #1590)
- Player: Slideshow controller state machine (6938d6ac, #1589)
- Studio: Slideshow branching editor panel (3861e8e9, #1582)
- Player: Slideshow controller + <hyperframes-slideshow> component (7af3eb8f, #1581)
Fixes
- Slideshow: Finish remaining split-PR review findings (f05b3f9c, #1594)
- Slideshow: Address code-review findings #1580-1584 (cc2220e5, #1585)
Docs & Examples
Internal
View the full commit range.Brings the AI Studio (Pacific) SDK integration surface online — object-valued font/image variables, elastic timing with word-alignment, element insertion, and keyframe animation ops — all on the acorn GSAP writer, now gated behind the cutover flag with recast kept as the default. Also adds a slideshow schema/parser/lint rule and phase-1 image-alpha hit-testing, so clicks on transparent image pixels fall through to the layer behind.
Features
- Core: Slideshow schema, parser, and lint rule (83764579, #1580)
- Sdk: Image-alpha hit-test phase 1 (WS-G) (37efbcb9, #1574)
- Sdk: Ws-3c — addWithKeyframes + replaceWithKeyframes SDK ops (acorn writer) (418f198b, #1572)
- Sdk: AddElement forward op — mint hf-id, inverse = removeElement (WS-D) (0ca01c88, #1571)
- Sdk: Ws-c elastic timing + word-alignment resolver (WS-C) (f65e2296, #1570)
- Sdk: Ws-b variables/brand — object-valued font/image + B1 JSON model (d0e520db, #1569)
Fixes
- Release: Scope tag-monotonicity guard to tags reachable from HEAD (3a28d3f6)
- Sdk: Code-review follow-ups (WS-B/C/3.C, #1569/#1570/#1572) (dd6fad6b, #1588)
- Engine: Hold the last video frame at the inclusive clip end (fdb8f33f, #1564)
Internal
- Core: Gate acorn GSAP writer behind cutover flag; keep recast default (WS-3F) (967bf9f9, #1573)
- Publish: Publish @hyperframes/sdk to npm (7607a714, #1587)
Static-frame dedup is now on by default for screenshot capture (with render telemetry), the SDK gains a
reorderElements op for batch z-index updates, and the resolver-parity shadow tripwire stops emitting false element_not_found divergences for elements inside inlined sub-compositions.Features
- Engine: Static-frame dedup default-on + render telemetry (7310223b6, #1549)
- Sdk: Ws-3 — reorderElements op (batch z-index update) (28bfe09f2, #1502)
Fixes
View the full commit range.This release lands the bulk of the Studio→SDK editing cutover — style, text, timing, delete, and GSAP ops now route through the SDK behind a default-off dark-launch flag — alongside a resolver-parity shadow tripwire that reports any SDK/server resolution divergence as telemetry. It also ships the storyboard editor (view modes, markdown source, frame focus) and asset-readiness adapters for three.js, map, and visualization libraries.
Features
- Studio: Resolver-parity shadow tripwire (decoupled telemetry) (933b88ec3, #1547)
- Core: Add readiness adapters for map and visualization libraries (75d92b55e, #1548)
- Sdk,core: Ws-3 — unrollDynamicAnimations acorn port + SDK op (09cefc1bb, #1501)
- Sdk: Stage 6 — arc path ops (setArcPath, updateArcSegment, removeArcPath) (1612d18fd, #1500)
- Sdk,core: Ws-3 prerequisites — acorn keyframe-collapse foundation + removeAllKeyframes (a746db601, #1499)
- Sdk,studio: Ws-1.2 — percentage-based removeGsapKeyframe (ceb815c31, #1498)
- Sdk,studio: Ws-1.1 — add set method to GsapTweenSpec; route addGsapAnimation(set) through sdk (a5016ed41, #1497)
- Sdk,studio: Ws-4 — add history:false option; disable unused sdk undo in studio (e35846176, #1496)
- Sdk: Ws-a2 — applyDraft/commitPreview/cancelPreview → moveElement op (53717a77f, #1490)
- Sdk: Ws-a1 — iframe preview adapter (hit-test + selection) (b96e8a307, #1489)
- Studio: Route GSAP keyframe add through SDK (§3.5 PR2) (7ca449032, #1470)
- Studio: Route GSAP tween add/update/delete through SDK (§3.5 PR1) (592f7c775, #1469)
- Studio: Route timeline trim/move through SDK setTiming (§3.2) (39f37e8aa, #1466)
- Studio: Route element delete through SDK removeElement (§3.1) (bce571c2a, #1465)
- Studio: S7.5 — delete shadow scaffolding; keep cutover flag (dark launch) (ca1a8a687, #1462)
- Studio: Stage 7 step 3c — sdk cutover for inline-style ops (ab7145ad9, #1522)
- Studio: Storyboard frame focus + voiceover iteration (c8fd16f2d, #1532)
- Studio: Storyboard markdown source editor (raw + live preview) (29809069c, #1531)
- Lint: Warn when a sub-composition slot blanks before the host (13af5540c, #1542)
- Studio: Storyboard frame contact-sheet grid (015529e66, #1530)
- Studio: Storyboard view-mode toggle and shell (195d7aa7b, #1529)
- Studio: Add storyboard manifest contract, parser, and read API (8a13a0707, #1528)
Fixes
- Core: Auto-detect three.js asset readiness via adapter contract (bb5f5f8c5, #1543)
- Sdk,studio: R5 cutover review fixes (on top of #1539) (e57e75b9b, #1545)
- Studio: Restore timeline move/resize fallback parity (review #1466) (8c981a451, #1539)
- Studio,core: Resolve SDK-cutover review findings (377b0368b, #1471)
- Studio: Wire onTrySdkPersist to sdkCutoverPersist (cutover was unwired) (8585fffc9, #1463)
- Studio: Force-reload sdk session after undo/redo bypasses suppress window (0ca1a8a9d, #1524)
- Studio: Storyboard polish — a11y, preview, and edit-race fixes (e662fcdea, #1544)
- Lint: Match @font-face when a comment inside the block holds a brace (f72ea25b3, #1538)
Internal
- Studio: Document CSS-path position cut-over; GSAP-path deferred (§3.3) (e65c3c791, #1467)
- Core: Recast-vs-acorn differential suite for GSAP writer ops (+ fixes) (c040e4973, #1533)
A fixes-only release. Studio rendering no longer 503s when ffmpeg lives outside the server’s PATH (the common GUI-launch case on macOS), plus correctness fixes across the CLI, player, and SDK.
Fixes
- Studio: Resolve ffmpeg outside PATH so render doesn’t 503 (ff25058c5, #1536)
- Studio: Apply split-bounds epsilon in razor split-all (66dde0898, #1404)
- Studio: Add GSAP 3D inspector metadata (937ba2ceb, #1250)
- CLI: Validate init flags before creating the project directory (a4ae3c92a, #1207)
- CLI: Default capture output to
./capture/(auto-suffixcapture-2/,capture-3/on re-run) (969d6a334) - Player: Reject non-finite composition dimensions from attributes and stage-size (513819ee8, #1205)
- SDK: Resolve composition-id targets and emit canonical
data-hf-idfor GSAP tweens (6e3214233, #1526) - Release: Stop advising
git push --tagsin release next-steps (9cc3550f7, #1521)
Promotes 21 lint rules from warnings to errors, with exemptions for registry source and installed blocks. Includes false-positive fixes across fonts, GSAP, captions, and composition rules.
Catalog
View the full commit range.Adds color grading — a LUT-based color pipeline (schema +
.cube parsing) applied consistently in both preview and render, with Studio inspector controls. Also rebuilds the SDK’s acorn GSAP keyframe writer to match the server writer (fixing a keyframe-parity bug) and ships a managed cloud-rendering guide.Features
- Studio: Add color grading inspector controls (8b92f3763)
- Runtime: Apply color grading in preview and render (1ad158d2f)
- Core: Add color grading schema and lut parsing (3109acb88)
Fixes
- Core,sdk: Rebuild acorn GSAP keyframe writer for recast parity (b5ad51895, #1520)
- Release: Annotate version tag + correct release push instructions (ca3cab340, #1517)
Docs & Examples
Internal
- Studio: Simplify color grading controls (12955869e)
- Studio: Simplify color grading inspector (3661d51e6)
- Runtime: Trim color grading api (d1162cd1b)
- Runtime: Trim color grading helpers (48fb42e5f)
- Core: Trim color grading api surface (8aaaaf181)
- Core: Trim color grading helpers (90582d7fa)
Hardens the Studio’s SDK shadow-parity telemetry — adds GSAP keyframe-op coverage and clears false-positive mismatches from float precision, selector form, and live typing. Also fixes two SDK correctness bugs the telemetry surfaced:
setStyle now removes hyphenated properties, and removeElement/getElement agree on which element a duplicated bare id targets.Features
Fixes
- Studio: Serialize GSAP script commits per file (shadow request race) (4ee57d550, #1512)
- Sdk: Agree removeElement/getElement on duplicate bare ids (cc055f318, #1511)
- Sdk: SetStyle removes hyphenated properties (was kebab/camel key mismatch) (066ea798b, #1510)
- Studio: Suppress shadow-parity false positives in timing + text (5aca3ad77, #1508)
- Studio: Kill false-positive shadow GSAP fidelity mismatches (c096ff3af, #1507)
Internal
View the full commit range.Studio now resolves and displays keyframes for computed GSAP timelines (helper functions, bounded loops) at their true positions, with Arc Motion activation for MotionPath tweens. Drag improvements fix tween selection and outside-range keyframe creation.
Features
- Core: Static evaluation pre-pass inlines helper-built and bounded-loop timelines so the read parser resolves true positions and motionPath arcs (b9bd9ed, #1506)
- Studio: Runtime-authoritative keyframe display with correct clip-relative conversion and arcPath extraction for dynamic timelines
- Studio: “Unroll to edit” action converts helper/loop tweens into literal tweens for direct editing
- Studio: Provenance-based editability classifier surfaces per-tween editing strategy in the Animation panel
Fixes
- Studio: GSAP drag intercept picks the position tween closest to the playhead instead of the one with the most keyframes
- Studio: Dragging outside all tweens’ ranges creates a new keyframed tween instead of destructively replacing the nearest one
- Studio: Convert-to-keyframes reads runtime position at tween start time for correct interpolation from preceding tweens
- Core: Lint rule uses the acorn parser (with inlining) so
overlapping_gsap_tweensreflects true positions
Restores
remove-background by moving sharp and onnxruntime-node back to regular dependencies (they were skipped as optional deps, so the command’s required native modules weren’t installed). Also fixes the Linux GPU render path (deprecated EGL + NVENC probe failure on data-center GPUs).Fixes
- CLI: Restore sharp + onnxruntime-node as dependencies (unbreak remove-background) (322147aef, #1505)
- Engine: Linux GPU path uses deprecated EGL + NVENC probe fails on data-center GPUs (e5346afdd, #1504)
Fixes telemetry attribution for studio-triggered renders: render completion and error events are now logged under the browser user who started the render instead of the preview-server process, so render outcomes correlate with the session that triggered them.
Fixes
View the full commit range.Sharpens the Studio↔SDK shadow with GSAP update/delete and value-fidelity parity, adds a video-frame format render option, and lands command-failure telemetry so CLI failures (browser / info) report their cause. Plus a Studio keyframe-cache fix and new catalog/skill docs.
Features
- Sdk,studio: Populate animationIds; shadow GSAP update/delete + value fidelity (7593aac5e, #1474)
- CLI: Report command failure reasons to telemetry (de-blind browser/info) (5f6ced116, #1484)
- Add video frame format render option (36b24acf2, #1481)
Fixes
Docs & Examples
Catalog
View the full commit range.Hardens the CLI across diverse installs —
sharp and onnxruntime-node are now optional, transcribe failures report their cause, and capture captioning gains an OpenRouter vision provider. Also lands Studio timeline inline expansion, an SDK shadow expansion, a render path-safety chokepoint, and a Code Animations catalog section.Features
- CLI: Support OpenRouter as an alternative vision provider for capture captioning (646ffff92, #1478)
- Studio: Timeline inline expansion + __clipTree runtime primitive (8cbf4384e)
- Studio: Extend SDK shadow to delete/timing/gsap-add + default on (8f15e9f09, #1473)
Fixes
- Core: Route renders/file serving through resolveWithinProject chokepoint (fada39953, #1477)
- CLI: Report transcribe failure reasons via cli_error (command_error) (40b49d402, #1479)
- Producer: Guard fileServer.close in all render cleanup paths (1f9c70cf1, #1406)
- CLI: Make native modules (sharp, onnxruntime) optional + soften inspect overlap (8f7137818, #1476)
Docs & Examples
Catalog
- Registry: Add Code Animations catalog section (9 blocks, incl. GPU) (07030294e)
Internal
View the full commit range.Wires the SDK session into Studio (stage 7 steps 1-3b), adding shadow dispatch parity mode, persist-path reload, selection API, and HTTP persist adapter. Also adds motion verification and text occlusion detection to
inspect.Features
- Studio: Stage 7 step 3b — SDK shadow dispatch parity mode (69aa595f, #1450)
- Sdk,studio: Stage 7 step 3a — persistPath + SDK session reload-on-change (5fe87cc3, #1449)
- Studio: Stage 7 step 1 — wire SDK session into Studio (92e2c8ce, #1443)
- Sdk: Stage 7 step 2 — setSelection API (30ce1f35, #1442)
- Sdk: Stage 7 step 1 — http persist adapter (c19898e7, #1441)
- CLI: Declarative motion verification in inspect (#1437) (9175eced, #1459)
- CLI: Flag text occluded by opaque elements in inspect (1e548279, #1435)
Fixes
- CLI: Restore
hyperframes capture \<url\>; move video download to--videoflag (f8d9f512) - Core: Stop transport re-seek from clobbering Studio drag drafts (1ab7dcfe, #1464)
Docs & Examples
View the full commit range.Introduces the HyperFrames SDK (session API, undo/redo, adapters, sub-composition scoped IDs), per-property-group keyframes with gesture recording and beat-snapping, batch rendering with variables, and the acorn-based GSAP parser.
Features
- Sdk: Stage 6 — sub-composition scoped ids (F9) (b158870d, #1434)
- Sdk: Stage 5 — export adapter factories from package root (f10f3425, #1432)
- Sdk: Stage 4 — canUndo/canRedo, removeElement GSAP cascade, override-set cleanup (9627e03f, #1431)
- Sdk: Can() returns CanResult; T4 dispatch-boundary tests (5ecaac1f, #1426)
- Sdk: File-backed fs adapter + setTiming GSAP sync; sdk-playground workspace (577a6898, #1458)
- CLI: Capture-video on-demand fetcher + capture pipeline robustness (6a024a36)
- Sdk,core: Phase 3b — 8 gsap/label ops + setClassStyle (6dcbb553, #1379)
- Core: Parse-parity suite for acorn parser (T6d) (8b56e558, #1370)
- Core: Acorn GSAP write path — magic-string offset-splice (T6c) (0fbda8ac, #1369)
- Core: Acorn GSAP read path with T6b differential corpus tests (be4a28ae, #1368)
- Studio: Scale GSAP positions on clip resize + shift on drag + diamond fixes (11b050de, #1448)
- CLI: Flag overlapping text blocks in inspect (abaf6717, #1436)
- Studio: Drag keyframes with live beat snapping (e6da47d8, #1439)
- Studio,cli: Music beat detection with timeline guides + headless beats CLI (d9f69f61, #1424)
- Skills: Video-creation workflow suite — routable workflows (211e0adb, #1349)
- CLI: Batch rendering — one output per variables row with manifest (e5a78ef6, #1336)
- CLI: Add —at-transitions to inspect for sampling at tween boundaries (6364281b, #1386)
- Lint: Add gsap_studio_edit_blocked rule for manual timeline + GSAP element targeting (511665b9, #1345)
- Sdk: Session API, optional history + persist-queue, adapters — Phase 3a complete (7010edac, #1325)
- Sdk: Scaffold @hyperframes/sdk — engine layer (model, RFC 6902 patches, mutate, apply-patches) (22bb6737, #1324)
- Core: Expose hf-ids as subpath export for @hyperframes/sdk (2c64f996, #1323)
Fixes
- Sdk: Fs adapter flush() tracks in-flight writes; add to T13 contract suite (0a30011a, #1425)
- Studio: Delete only the active element’s selected keyframes (f1a50e03, #1453)
- Core,player,studio: Bound trimmed audio playback to the clip window (a95e49db, #1430)
- Studio: Route rotation field edits through the animation like X/Y/W/H (5c8b6373, #1427)
- Studio: Break all 7 circular dependency cycles and fix rules-of-hooks violation (a241f259, #1422)
- Player: Replace or clear the audio-src proxy instead of stacking (fbc3cdf2, #1409)
- Studio: Disable the rotation field when the element can’t be rotated (3c560706, #1412)
- Render: Make WebGL video textures deterministic in headless render (d580f2a1, #1403)
- Player: Clean up controls on destroy (a0375051, #1407)
- Studio: Surface gesture recording controls (5b6c62e1, #1390)
- Core: Block symlink-based path escape in studio-api isSafePath (953bab31, #1397)
- Studio: Reject unsafe keyframe values (3bcab3dc, #1389)
- Studio: Save retries, mutation queue circuit breaker, save_failure diagnostics (5f12e692, #1366)
- Sdk: Bridge preview selection into session state (84a56986, #1362)
- Core: Exclude dot-directories and node_modules from studio composition discovery and lint (b952dc9c, #1385)
- Studio: Journal source writebacks (aec3c3b5, #1388)
- CLI: Validate project directory before starting preview (2ec00629, #1394)
- Runtime: Respect hidden ancestor clips in Studio preview (#1387) (7fa36961, #1395)
- Address review feedback from #1333 and #1335 (28e2ab9d, #1343)
- Studio: Stabilize manual drag targets (1ea0ed55, #1393)
- Studio: Remove motion tab from right panel (d0a7f7d8, #1391)
- Release: Include sdk in fixed-version bump (ad5229af, #1363)
- Core: Honor root data-duration when GSAP timeline ends short (7a99ccec, #1378)
- Engine: Respect cgroup memory limits in low-memory detection (2ce5b421, #1373)
- Engine: Real back-pressure in StreamingEncoder.writeFrame (c609850b, #1372)
- Producer: Pass resolved engine config through every encode path (5917c038, #1371)
- Studio: Remove unused onSelectElementById after indicator removal (9e5b3d64, #1377)
- Studio: Remove off-screen element indicators for UX redesign (3ba01129, #1376)
- CLI: Verify browser/ffmpeg binaries exist before render starts (cee6fd02, #1365)
- Studio: Disable keyframes feature flag by default, release v0.6.93 (c3554dcf)
- Studio: Update drag intercept test for true default (6babf5be)
- Studio: Trim PropertyPanel to 600-line limit (a433d83f)
- Studio: Gesture recording replaces existing position keyframes (d49ee416, #1360)
- Studio: Gesture recording replaces existing position keyframes (191a33dc, #1359)
- Studio: Property panel group-aware keyframe routing (c435a4ee, #1358)
- Studio: Keyframe cache propertyGroup tagging + timeline UI (caf23eff, #1357)
- Studio: Per-property-group intercept routing + drag/resize fixes (95029e08, #1356)
- Core: Split-into-property-groups and replace-with-keyframes mutations (b6bf1b11, #1355)
- Core: Per-property-group keyframe foundations (889e9f09, #1354)
- Core: Actionable error for empty sub-composition HTML in compile (8802c3fd, #1364)
- Sdk,core: Css tokenizer, override-set replay, setattribute safety, persist errors (a0ee9721, #1350)
- Studio: Watch external project dirs so preview ETag invalidates (69d67f1d, #1347)
- Studio,core: Persist manual position edits for GSAP-owned elements (fc3ab76c, #1346)
- Studio: Accept razor splits at the canvas clamp boundary (c52165d1, #1340)
Docs & Examples
- Add changelog entries for v0.6.92-v0.6.95 (740f244c)
Catalog
- CLI: Resolve and install transitive registry dependencies (8eac7e1c, #1396)
- CLI: Respect registry compatibility metadata (583b47b0, #1251)
Internal
- Core: Swap studio-api read path from recast to acorn parser (T6e) (b8fa4b5d, #1392)
- Stop tracking lefthook-local.yml (2002aa2c, #1454)
- Producer: Simplify — extract HDR compositor, delete dead code, consolidate patterns (a0d72953, #1414)
- Studio: Simplify hooks, split contexts, remove dead code (7bff49ec, #1416)
- Core: Simplify packages/core — dead code, dedup, type safety (6f677292, #1413)
- Core: Route project paths through a single resolveWithinProject chokepoint (1c47ba99, #1398)
- Core: Align file-tree test with backup-only hiding (#1366) (ab7f69c1, #1400)
- Core: Fix contradictory composition-discovery file-tree test (#1385) (e2cc134c, #1399)
Keyframe-aware timeline editing with proportional scaling on resize, music beat detection, and diamond rendering fixes.
Features
- Studio: Scale GSAP positions on clip resize + shift on drag + diamond edge fixes (#1448)
- Studio: Drag keyframes with live beat snapping (#1439)
- Studio, CLI: Music beat detection with timeline guides + headless beats CLI (#1424)
- CLI: Flag overlapping text blocks in inspect (#1436)
- Skills: Video-creation workflow suite — routable workflows (#1349)
Fixes
- Studio: Delete only the active element’s selected keyframes (#1453)
- Studio: Route rotation field edits through the animation like X/Y/W/H (#1427)
- Studio: Break all 7 circular dependency cycles and fix rules-of-hooks violation (#1422)
- Core, Player, Studio: Bound trimmed audio playback to the clip window (#1430)
- Player: Replace or clear the audio-src proxy instead of stacking (#1409)
- Studio: Disable the rotation field when the element can’t be rotated (#1412)
Refactors
- Producer: Simplify — extract HDR compositor, delete dead code, consolidate patterns (#1414)
- Studio: Simplify hooks, split contexts, remove dead code (#1416)
- Core: Simplify packages/core — dead code, dedup, type safety (#1413)
Batch rendering, WebGL determinism, studio resilience, and security hardening.
Features
- CLI: Batch rendering — one output per variables row with manifest (#1336)
- CLI: Add
--at-transitionsto inspect for sampling at tween boundaries (#1386)
Fixes
- Render: Make WebGL video textures deterministic in headless render (#1403)
- Player: Clean up controls on destroy (#1407)
- Core: Route project paths through a single
resolveWithinProjectchokepoint (#1398) - Core: Block symlink-based path escape in studio-api
isSafePath(#1397) - Core: Exclude dot-directories and node_modules from studio composition discovery and lint (#1385)
- Studio: Surface gesture recording controls (#1390)
- Studio: Reject unsafe keyframe values (#1389)
- Studio: Save retries, mutation queue circuit breaker, save_failure diagnostics (#1366)
- Studio: Journal source writebacks (#1388)
- SDK: Bridge preview selection into session state (#1362)
- CLI: Validate project directory before starting preview (#1394)
- CLI: Resolve and install transitive registry dependencies (#1396)
- CLI: Respect registry compatibility metadata (#1251)
- Runtime: Respect hidden ancestor clips in Studio preview (#1387)
Engine: adaptive memory-aware encoding with system memory monitoring, chunked encoder improvements, and streaming encoder resilience.
Features
- Engine: Adaptive memory-aware encoding with system memory monitoring and dynamic chunk sizing
- Engine: Chunked encoder improvements for parallel coordination
- Engine: Streaming encoder resilience with better error recovery
Remove off-screen element indicators for UX redesign. The NLELayout unclipped overlay split remains for selection handle interaction near composition edges.
Fixes
- Studio: Remove off-screen element indicators (UX redesign pending) (#1376)
- Studio: Clean up unused
onSelectElementByIdprop (#1377)
Hotfix: disable keyframes feature flag by default. The flag was accidentally shipped as enabled in v0.6.92.
Fixes
- Studio: Set
STUDIO_KEYFRAMES_ENABLEDdefault tofalse
Per-property-group keyframe architecture: the keyframe system redesign ships across 7 stacked PRs. Each GSAP tween now targets a single property group (position, scale, rotation, etc.), eliminating cross-property contamination during drag, resize, and gesture recording.
Features
- Core: Per-property-group type system (
PropertyGroupName,PROPERTY_GROUPS,classifyPropertyGroup) (#1354) - Core:
split-into-property-groupsandreplace-with-keyframesserver mutations (#1355) - Core:
delete-all-for-selectoratomic mutation for bulk animation removal - Studio: GSAP drag intercept enabled by default with per-property-group routing (#1356)
- Studio: Gesture recording merges into existing position tweens instead of replacing (#1359)
- Studio: Unclipped overlay for off-screen element interaction (#1360)
Fixes
- Studio: Keyframe cache tags with
propertyGroupfor group-aware operations (#1357) - Studio: Property panel routes keyframe diamonds to correct animation per property (#1358)
- Studio: Context menus portaled to
document.bodywith smart overflow positioning - Studio: Delete All Keyframes uses atomic server mutation (no stale ID race)
- Studio: Block CSS drag on GSAP-animated elements to prevent keyframe corruption
- Studio:
onMoveKeyframepercentage-space conversion (clip-relative to tween-relative)
Razor/blade tool for splitting timeline clips with GSAP-aware keyframe preservation, plus GSAP drag intercept is now behind a feature flag (off by default) to fix buggy drag behavior on animated elements.
Features
- Studio: Razor/blade tool UI for timeline clip splitting (ef186139, #1331)
- Core: GSAP-aware split engine for timeline clip splitting (45d4a71e, #1330)
Fixes
Internal
View the full commit range.GIF support: render to GIF with two-pass palette encoding, and animated GIF inputs now play frame-synced via VP9 transcode. Plus new agent detection for Windsurf, Cline, Gemini CLI, and Crush.
Features
- Producer,core: Play animated GIF inputs frame-synced via prep-time VP9 transcode (edd85473, #1335)
- Cli,producer: Add gif output format with two-pass palette encode (e6b8d66c, #1333)
- CLI: Detect Windsurf, Cline, Gemini CLI, and Crush agents (e0ecd4d2, #1328)
- Producer: Optional targetChunkFrames to bound per-chunk frames (9b18fadc, #1332)
- Producer: Stage wall-clock split in chunk perf telemetry (69eac249, #1327)
- CLI: Detect Gemini managed-agent sandbox in detectAgentRuntime (0766eb81, #1294)
Internal
View the full commit range.Fixes audio dropout during playback (WebAudio source cleanup), muted video audio leak in renders, IEEE 754 frame-index precision, and keyframe editing stability.
Fixes
- Runtime: Preserve authored muted attr; clean up WebAudio on end (036b991c, #1319)
- Studio: Keyframe bug fixes — gate delete hooks, fix value corruption, gesture recording (f0b499b5, #1314)
- Engine: Add epsilon to frame index floor to prevent IEEE 754 boundary duplicates (3a72aa52, #1318)
- Producer: Don’t mix audio from muted videos into the render (8133d934, #1322)
Docs & Examples
Internal
- Shrink repo — untrack failure frames, recompress backgrounds, harden LFS (e845793c, #1326)
- Studio: Split oversized files to pass 600-line check (81416ab3, #1313)
Fixes a regression where Studio’s element stamping code ran during production renders, causing sub-composition elements to become incorrectly visible.
Fixes
- Core: Guard element stamping to iframe-only (Studio preview) (192417b7)
Studio keyframe system, render queue improvements, and GSAP parser arc path mutations. Feature-gated behind
VITE_STUDIO_ENABLE_KEYFRAMES.View the full commit range.Fixes a race condition where
audio-locked (and other bridge controls) were silently dropped on warm-cache reloads of claude.ai and inside the Claude desktop Electron client. The runtime now emits a ready handshake once its message listener is installed; the player replays current bridge state on receipt.Fixes
- Runtime,player: Replay bridge state on iframe ready to repair race (5a0966df)
Fixes
audio-locked attribute not surviving into the rendered DOM on Claude Desktop. Also ships the GCP Cloud Run distributed render adapter, font self-bundling for compositions, and several stability fixes.Features
- Player: Force audio lock on Claude desktop via UA fallback (cc45b1fa)
- Core: Implement createPreviewAdapter (R7, Task 3) (1a23938b, #1291)
- Core: Hf-id write-back to disk + serve-time surfacing (R7, Tasks 1-2) (740a83ab, #1289)
- Core: SourceMutation data-hf-id targeting (R1, T7) (1cd4ad6a, #1272)
- Studio: SourcePatcher data-hf-id targeting (R1, T3) (42c247d2, #1271)
- Core: Clip-model hf- ids minted at parse, emitted as data-hf-id (R1) (8d6b7cf5, #1270)
- Core: EnsureHfIds node-id pass + shared hf- mint helper (R1) (c12854b4, #1269)
- Font resolution pipeline — compositions capture and embed their own fonts (0bf15119, #1255)
- Gcp Cloud Run: Google Cloud Run + Workflows distributed render adapter (4da567df, #1253)
Fixes
- Core: Apply playbackRate to all media duration resolution sites (908b455e, #1288)
- Core: Account for playbackRate in media duration resolution (7b6c87fa, #1287)
- Producer: Revert Proxy-based wrapTimeline to plain-object approach (c12987e3, #1284)
- Release: Guard against non-monotonic tags (24279c8c, #1283)
- Core: Re-register hf-timelines-built listener in maybePublishRenderReady (1bcd6ec3, #1279)
Docs & Examples
- Mcp: Add Grok as a supported host (b4210f65, #1280)
- Mcp: Remove voiceover/TTS references and surface MCP guide in sidebar (b2be289d, #1278)
Catalog
- Catalog: Add motion-blur component (1fd1b316, #1274)
- Registry: Add morph-text component and text-effects catalog section (48fcf4ad, #1247)
Internal
- Core,studio: Extract draft-marker constants + R7 code-review fixes (Task 4) (3d7d7c02, #1292)
- Core: PreviewAdapter contract failing tests (T10 spec for R7) (72e4f1a0, #1286)
- Skip ffmpeg-static CDN download on ubuntu; retry Windows FFmpeg install (25420bf4, #1275)
- Core: Address review feedback on T6a / T10 / T7 stubs (63fd322d, #1268)
- Core,studio: Add T3+T7 hfId targeting stubs (spec for R1) (1e705b11, #1267)
- Core: Add T6a GSAP parser golden baselines (Recast/Babel snapshot) (184ef033, #1263)
- Core: Add T10 PreviewAdapter contract stubs (spec for R7) (1fdce71c, #1262)
- Core: Extract maxEndTime+serialize to parsers/test-utils.ts (TU) (ffc54c78, #1261)
- Studio: Add T5c review-fix gaps in manualEditsDomPatches characterization (5b29bea0, #1259)
- Studio: Add T5b rotation+motion build-patches characterization (63ff0c16, #1258)
- Studio: Add T5a pathOffset+boxSize build-patches characterization (19f46cd1, #1257)
- Remove plan docs and gitignore docs/plans/ (fc01717c, #1265)
- Core: Add T9 CompositionVariable font/image parse spec (before R1) (806b226b, #1246)
- Core: Add T2 stable id spec for parse-to-hf id contract (before R1) (a890d093, #1245)
- Studio: Add T4 op-contract stubs for editor dispatch boundary (bdbd8b1d, #1243)
Completes the playbackRate fix across all media duration resolution sites — visibility, timeline payload, and auto-calculated duration now all respect
defaultPlaybackRate.Fixes
View the full commit range.Fixes media elements with custom playback rates being clipped to the raw source duration instead of the rate-adjusted timeline duration. Also adds a release tag monotonicity guard.
Fixes
- Core: Account for playbackRate in media duration resolution (7b6c87fa, #1287)
- Producer: Revert Proxy-based wrapTimeline to plain-object approach (c12987e3, #1284)
- Release: Guard against non-monotonic tags (24279c8c, #1283)
Fixes a render-ready listener race and adds Grok MCP support, a motion-blur catalog component, and improved CI reliability.
Fixes
Docs & Examples
- Mcp: Add Grok as a supported host (b4210f65, #1280)
- Mcp: Remove voiceover/TTS references and surface MCP guide in sidebar (b2be289d, #1278)
Catalog
Internal
- Skip ffmpeg-static CDN download on ubuntu; retry Windows FFmpeg install (25420bf4, #1275)
- Core: Address review feedback on T6a / T10 / T7 stubs (63fd322d, #1268)
- Core,studio: Add T3+T7 hfId targeting stubs (spec for R1) (1e705b11, #1267)
- Core: Add T6a GSAP parser golden baselines (Recast/Babel snapshot) (184ef033, #1263)
- Core: Add T10 PreviewAdapter contract stubs (spec for R7) (1fdce71c, #1262)
- Core: Extract maxEndTime+serialize to parsers/test-utils.ts (TU) (ffc54c78, #1261)
- Studio: Add T5c review-fix gaps in manualEditsDomPatches characterization (5b29bea0, #1259)
- Studio: Add T5b rotation+motion build-patches characterization (63ff0c16, #1258)
- Studio: Add T5a pathOffset+boxSize build-patches characterization (19f46cd1, #1257)
- Remove plan docs and gitignore docs/plans/ (fc01717c, #1265)
Adds Google Cloud Run + Cloud Workflows as a distributed-render target (
@hyperframes/gcp-cloud-run) — the GCP counterpart to the AWS Lambda adapter, sharing the same plan → renderChunk → assemble primitives. Also lands a font-resolution pipeline so compositions capture and embed their own fonts for deterministic rendering.Features
- Font resolution pipeline — compositions capture and embed their own fonts (0bf15119, #1255)
- Gcp Cloud Run: Google Cloud Run + Workflows distributed render adapter (4da567df, #1253)
Catalog
Internal
- Core: Add T9 CompositionVariable font/image parse spec (before R1) (806b226b, #1246)
- Core: Add T2 stable id spec for parse-to-hf id contract (before R1) (a890d093, #1245)
- Studio: Add T4 op-contract stubs for editor dispatch boundary (bdbd8b1d, #1243)
Fixes a main-thread hang on compositions with thousands of GSAP tween calls by batching timeline construction through
requestAnimationFrame, and adds innerText support to the GSAP inspector for counter animations.Features
Fixes
- Batch GSAP timeline construction to prevent main-thread hang (#1231) (ebd156bc, #1249)
- Render: Add end-to-end observability (29d6f1ea, #1248)
Internal
- Studio: Add T11 history coalescing and cross-prop separation suite (9aebc8db, #1242)
- Core: Add T8 override-set merge semantics suite for getVariables (37d02f26, #1241)
- Core: Add T1 round-trip idempotence suite for parse/serialize (dd956744, #1240)
Switches the parity harness page navigation to
domcontentloaded instead of load, preventing timeouts caused by slow video preload on compositions with large or numerous media sources.Fixes
View the full commit range.Adds detailed diagnostics around page navigation timeouts — captures failed requests, HTTP errors, and timing context to help debug environment-specific render failures.
Internal
View the full commit range.Ensures the probe stage respects low-memory mode by threading the
forceScreenshot flag, preventing BeginFrame probe failures on memory-constrained systems.Fixes
View the full commit range.Adds the
audio-locked player attribute for embedding contexts that need force-muted playback, a full GSAP keyframe system (parsing → runtime bridge → design panel), Figma-quality snap guides in Studio, and reliability improvements for low-memory render environments.Features
- Player: Add audio-locked attribute (force-mute + hide controls) (f39b5988, #1234)
- Studio: Draggable layer reorder with z-index persistence (7a0cb085, #1216)
- Producer: Auto low-memory safe render profile (bacfb175, #1225)
- Studio: Add fit-to-children button in property panel (4d968866, #1224)
- Studio: Wire snap engine into preview drag and resize gestures (0a965dc4, #1223)
- Studio: Add snap guide overlay, toolbar, grid, and target collection (f8bf039a, #1228)
- Studio: Add stateless snap engine with alignment computation (1863831a, #1227)
- Studio: Runtime-synced design panel + 3D props + split polish (1bdb2d4e, #1188)
- Studio: Runtime-first dynamic keyframe system [8/10] (c1699ec9, #1190)
- Studio: Split clip at playhead for media elements [7/10] (d1aad77f, #1189)
- Studio: Design panel, timeline polish, feature flag [6/6] (a5211954, #1172)
- Studio: Keyframe hooks wiring — session, cache, toolbar [5/6] (7a088326, #1171)
- Studio: Keyframe diamonds, navigation, context menu [4/6] (5984c588, #1170)
- Studio: GSAP runtime bridge + optimistic updates [3/6] (12e87e05, #1169)
- Core: Spring physics solver + runtime fixes [2/6] (aab73774, #1168)
- Core: GSAP keyframe parsing, mutations, and API routes (e639a163, #1167)
Fixes
- Producer: Restore calibration timeout ceiling + add pipeline observability (1d16216a, #1233)
- AWS Lambda: Validate event S3 URIs against render bucket (F-004) (65888840, #1213)
- CLI: Re-validate SSRF denylist on redirects + harden isPrivateUrl (1f37920f, #1212)
- Studio: Fix PropertyPanel format and file size regression (2c73fa9c, #1229)
- CLI: Bind studio preview server to loopback by default (1324de54, #1210)
- Runtime: Make audio/media sync boundary inclusive to match visibility fix (b6a14ea9, #1173)
- Add progress logging during silent render pipeline stages (6bd1e764, #1220)
- Respect user timeouts on low-memory systems (20894ab9, #1221)
Docs & Examples
View the full commit range.Figma-quality snap lines, grid overlay, and fit-to-children for the Studio preview canvas. Also ships the GSAP keyframe system (parsing, runtime bridge, diamonds, dynamic keyframes, design panel) and a batch of CLI reliability fixes.
Features
- Studio: Add fit-to-children button in property panel (4d968866, #1224)
- Studio: Wire snap engine into preview drag and resize gestures (0a965dc4, #1223)
- Studio: Add snap guide overlay, toolbar, grid, and target collection (f8bf039a, #1228)
- Studio: Add stateless snap engine with alignment computation (1863831a, #1227)
- Studio: Runtime-synced design panel + 3D props + split polish (1bdb2d4e, #1188)
- Studio: Runtime-first dynamic keyframe system [8/10] (c1699ec9, #1190)
- Studio: Split clip at playhead for media elements [7/10] (d1aad77f, #1189)
- Studio: Design panel, timeline polish, feature flag [6/6] (a5211954, #1172)
- Studio: Keyframe hooks wiring — session, cache, toolbar [5/6] (7a088326, #1171)
- Studio: Keyframe diamonds, navigation, context menu [4/6] (5984c588, #1170)
- Studio: GSAP runtime bridge + optimistic updates [3/6] (12e87e05, #1169)
- Core: Spring physics solver + runtime fixes [2/6] (aab73774, #1168)
- Core: GSAP keyframe parsing, mutations, and API routes (e639a163, #1167)
- Docs: Add weekly update drafts (1abe69f3, #1183)
- Docs: Add changelog release workflow (248f6407, #1164)
Fixes
- Studio: Fix PropertyPanel format and file size regression (2c73fa9c, #1229)
- CLI: Bind studio preview server to loopback by default (1324de54, #1210)
- Runtime: Make audio/media sync boundary inclusive to match visibility fix (b6a14ea9, #1173)
- Add progress logging during silent render pipeline stages (6bd1e764, #1220)
- Respect user timeouts on low-memory systems (20894ab9, #1221)
- Runtime: Don’t restart non-loop media that has naturally ended (faa3f588, #1203)
- CLI: Report available memory instead of free memory in doctor (96795031, #1204)
- CLI: Reject directory —composition and add —browser-timeout (#1199) (6affe2d2, #1200)
- Scripts: Make release change-guard robust to git status prefix (8228932e, #1198)
- Producer: Localize remote <img> sources + await image readiness (72c461d8, #1197)
- CLI: Support arm64 hosts for
--dockerrender (2be41937, #1196) - Engine: Fast-fail on zero duration instead of 45s timeout (efb8d90f, #1186)
- CLI: Lazy-load @puppeteer/browsers to prevent debug package crash (8c6faa45, #1185)
- CLI: Suppress EPIPE crashes in piped agent environments (cabd0616, #1184)
- Delay ObjectURL revocation and silence TS5 baseUrl deprecations (6de6ea53, #1181)
- Engine: Add —autoplay-policy=no-user-gesture-required to headless Chrome args (9e5adafd, #1177)
- Runtime: Apply parent composition offset to WebAudio scheduling for sub-comp audio (ac73cbbc, #1175)
- Runtime: Show elements at exact end of their duration (inclusive boundary) (b652c0a2, #1166)
- CLI: Localize external assets in publish archive (a4706da5, #1160)
Docs & Examples
- Add reap as HyperFrames adopter (4b51cc64, #876)
- README: Add Frame.md design template gallery (1a617d30, #1182)
- Skills: Prefer frame.md over design.md for video specs (fcff442a, #1180)
Catalog
- Registry: Add 14 missing blocks to registry manifest (d8ed343d, #1163)
- Registry: Add Apple Terminal blocks to registry manifest (e9949d76, #1162)
- Registry: Add Apple Terminal theme code snippet blocks (689deaf4, #1161)
Internal
- CLI: Cover the cloud client 401-refresh-retry decorator (0870394d, #1202)
- Producer: Regenerate stale style-7-prod baseline in Docker (1aa651bd, #1178)
- Add release prepare command (17b0db1d, #1165)
Runtime stability and CLI improvements: fixes audio stuttering in the preview player when a media file ends before the composition does, adds a configurable browser navigation timeout, localizes remote
<img> sources before render to eliminate image flicker, and adds ARM64 Docker render support for Apple Silicon.Fixes
- Runtime: Don’t restart non-loop media that has naturally ended (faa3f588, #1203)
- CLI: Report available memory instead of free memory in doctor (96795031, #1204)
- CLI: Reject directory —composition and add —browser-timeout (#1199) (6affe2d2, #1200)
- Scripts: Make release change-guard robust to git status prefix (8228932e, #1198)
- Producer: Localize remote <img> sources + await image readiness (72c461d8, #1197)
- CLI: Support arm64 hosts for
--dockerrender (2be41937, #1196)
Internal
View the full commit range.A render-reliability release: the producer now localizes remote
<img> sources and waits for them to load before capturing frames, fixing blank-frame flicker in compositions that reference remote (S3) images. --docker renders also now run on arm64 hosts.Fixes
- Producer: Localize remote <img> sources + await image readiness (72c461d8, #1197)
- CLI: Support arm64 hosts for
--dockerrender (2be41937, #1196)
Fixes three production-observed CLI and engine errors: EPIPE crashes in piped agent environments,
@puppeteer/browsers import failures that blocked all commands when the debug package was missing, and zero-duration composition timeouts reduced from 45s to ~11s with an actionable diagnostic.Features
Fixes
- Engine: Fast-fail on zero duration instead of 45s timeout (efb8d90f, #1186)
- CLI: Lazy-load @puppeteer/browsers to prevent debug package crash (8c6faa45, #1185)
- CLI: Suppress EPIPE crashes in piped agent environments (cabd0616, #1184)
- Delay ObjectURL revocation and silence TS5 baseUrl deprecations (6de6ea53, #1181)
Docs & Examples
- README: Add Frame.md design template gallery (1a617d30, #1182)
- Skills: Prefer frame.md over design.md for video specs (fcff442a, #1180)
Runtime audio and rendering stability improvements: fixes audio in sub-compositions playing at the wrong timeline position, elements showing blank at the exact last frame, and a headless Chrome deadlock when GSAP tweens audio volume. Includes Apple Terminal catalog blocks and registry manifest fixes.
Features
- Docs: Add changelog release workflow (248f6407, #1164)
- CLI: Validate cloud render aspect/composition/format before upload (42ad3050, #1156)
Fixes
- Engine: Add —autoplay-policy=no-user-gesture-required to headless Chrome args (9e5adafd, #1177)
- Runtime: Apply parent composition offset to WebAudio scheduling for sub-comp audio (ac73cbbc, #1175)
- Runtime: Show elements at exact end of their duration (inclusive boundary) (b652c0a2, #1166)
- CLI: Localize external assets in publish archive (a4706da5, #1160)
- Producer: Localize remote @font-face src URLs before render (b1b03782, #1155)
- Core: Emit mediaVolumeEnvelope in tsc lib output (e7c874cc, #1159)
- Producer: Honor variables + outputResolution in HTTP render server (8b6d35e2, #1152)
- CLI: Mock findFFmpeg in render tests for CI without ffmpeg (a01a266e, #1154)
Catalog
- Registry: Add 14 missing blocks to registry manifest (d8ed343d, #1163)
- Registry: Add Apple Terminal blocks to registry manifest (e9949d76, #1162)
- Registry: Add Apple Terminal theme code snippet blocks (689deaf4, #1161)
Internal
- Producer: Regenerate stale style-7-prod baseline in Docker (1aa651bd, #1178)
- Add release prepare command (17b0db1d, #1165)
This release focuses on stability improvements across Studio rendering, producer telemetry, and core timeline handling.
Fixed
- Studio: Added an FFmpeg pre-flight check before rendering so setup issues fail earlier with a clearer path to resolution.
- Producer: Normalized structured error messages so telemetry and logs no longer collapse details into
[object Object]. - Core: Guarded timeline method calls for non-conformant timeline-like objects.
- Release: Removed a stale marketplace version field from packaged release metadata.