--- title: "Changelog" description: "Release notes for HyperFrames." rss: true --- Recent HyperFrames releases, including user-facing features, fixes, and migration notes. {/* New release entries are prepended by `bun run changelog:draft --write`. */} Export in Studio now renders the composition you have selected, not the project's root file. Multi-part projects can finally be exported without dropping to the CLI. ## Fixes - **Studio:** Export the composition the user has selected ([b71f45981](https://github.com/heygen-com/hyperframes/commit/b71f45981c376d3b2b4ae8e07a0837f63a091a8c), [#3550](https://github.com/heygen-com/hyperframes/pull/3550)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.18...v0.8.19). Studio now switches the canvas and timeline for compositions stored anywhere in a project. Snapshots now preserve playback rate, nested-media timing, static compositions, and source files. ## Fixes - **Studio:** Switch the canvas and timeline for compositions stored outside `compositions/` ([adf9b0cce](https://github.com/heygen-com/hyperframes/commit/adf9b0cceeb561fd5424e8cad73b781f5383a9ef)). - **Core:** Keep long nested videos visible when their local start precedes the host window ([3dc185623](https://github.com/heygen-com/hyperframes/commit/3dc18562323c9dd7dfa1f9416d90708677f3652b), [#3535](https://github.com/heygen-com/hyperframes/pull/3535)). - **CLI:** Capture the correct source frame for trimmed or accelerated videos ([d99eeef0b](https://github.com/heygen-com/hyperframes/commit/d99eeef0b27460683831664b4ac68f5cf4f700cd), [#3536](https://github.com/heygen-com/hyperframes/pull/3536)). - **CLI:** Reject keyframe-shot outputs that would overwrite the active composition source ([e4dabf830](https://github.com/heygen-com/hyperframes/commit/e4dabf830c6cf377734de043d5f5345bcefe7b02), [#3534](https://github.com/heygen-com/hyperframes/pull/3534)). - **CLI:** Allow intentional `data-no-timeline` compositions without false frozen-sweep errors ([b28747df0](https://github.com/heygen-com/hyperframes/commit/b28747df0f2db9c5e7148e188a6ce6b99bcdda85), [#3533](https://github.com/heygen-com/hyperframes/pull/3533)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.17...v0.8.18). Studio now exposes live editing state to agentic browsers, including browsers without native WebMCP. Renders now fail instead of silently succeeding when sub-compositions, media extraction, or artifact validation break, while nested runtime videos keep distinct identities. ## Features - **Studio:** Fall back to a WebMCP polyfill where the browser has none ([097d901d7](https://github.com/heygen-com/hyperframes/commit/097d901d703be01781a47f2a8aa2dc65e0a3e19e), [#3514](https://github.com/heygen-com/hyperframes/pull/3514)). - **Studio:** Expose Studio's live state to an agentic browser (WebMCP) ([94da403d6](https://github.com/heygen-com/hyperframes/commit/94da403d6d9e3bdf23665794572a90918832036d), [#3511](https://github.com/heygen-com/hyperframes/pull/3511)). ## Fixes - **Producer:** Enforce video extraction failures by default (#3372) ([4d87f8bba](https://github.com/heygen-com/hyperframes/commit/4d87f8bbae3d4cda71f75fa33e8d48ce38a3afc7), [#3526](https://github.com/heygen-com/hyperframes/pull/3526)). - **Core,producer:** Stamp render ids on empty-src media and pair the snapshot by them ([9eb84c91b](https://github.com/heygen-com/hyperframes/commit/9eb84c91b6a785028d6bc4c122b633bda0741c7f), [#3513](https://github.com/heygen-com/hyperframes/pull/3513)). - **Engine:** Fail render on sub-composition script failures (#3352) ([e69be30e9](https://github.com/heygen-com/hyperframes/commit/e69be30e985a32a70d04de607763135884246193), [#3528](https://github.com/heygen-com/hyperframes/pull/3528)). - **Producer:** Assert render artifact duration and frame count before commit ([05275c1e8](https://github.com/heygen-com/hyperframes/commit/05275c1e8ce3bee6d331cca9ff9c8eec02c34977), [#3506](https://github.com/heygen-com/hyperframes/pull/3506)). - **Core:** Read CSS animation opacity through color grading's own hide (#3329) ([e5c7dc75e](https://github.com/heygen-com/hyperframes/commit/e5c7dc75e8ae7146d81d07e1f0e0731d4ad9eb6c), [#3507](https://github.com/heygen-com/hyperframes/pull/3507)). - **Studio:** Let a failed DOM edit report that it failed ([21bcd5745](https://github.com/heygen-com/hyperframes/commit/21bcd5745cc0d8bb4c51363ef4183b343cbbd169), [#3510](https://github.com/heygen-com/hyperframes/pull/3510)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.16...v0.8.17). Rendering is more reliable across audio, embedded sources, long sequences, and empty caches, while CJK and Thai captions keep phrase boundaries. Local video generation now avoids dead model tiers, and the player can retain runtime data channels for richer integrations. ## Features - **Player:** Add retained runtime data channels ([4f00336c9](https://github.com/heygen-com/hyperframes/commit/4f00336c92f6418aab82c060853da604dd832197), [#3471](https://github.com/heygen-com/hyperframes/pull/3471)). ## Fixes - **Media Use:** Repoint the dead videogen tier, demote past unusable local models ([8392e84a1](https://github.com/heygen-com/hyperframes/commit/8392e84a1839dbe083b74d093cb441f4610389c4), [#3509](https://github.com/heygen-com/hyperframes/pull/3509)). - **Engine:** Stop destroying the AAC priming edit list when muxing ([ee64c3b11](https://github.com/heygen-com/hyperframes/commit/ee64c3b1168a3466269344197ba6774f9eb15e14), [#3505](https://github.com/heygen-com/hyperframes/pull/3505)). - **CLI:** Keep phrase-level CJK and Thai transcripts as separate cues ([18409c9f2](https://github.com/heygen-com/hyperframes/commit/18409c9f2742e491ef7ff6a1454675a295e5d0a0), [#3436](https://github.com/heygen-com/hyperframes/pull/3436)). - **Engine,producer,lint:** Resolve \ children for media extract and localize ([97991bbd3](https://github.com/heygen-com/hyperframes/commit/97991bbd3566a70f857412739dfa6ca9acfcaf27), [#3238](https://github.com/heygen-com/hyperframes/pull/3238)). - **Engine:** Preserve source frame identity above 99,999 ([c9f43ebcf](https://github.com/heygen-com/hyperframes/commit/c9f43ebcfbc05a83b18f46007f31a5cbd973ebb9), [#3503](https://github.com/heygen-com/hyperframes/pull/3503)). - **Studio:** Dedupe repeated selection telemetry ([9aaa7552f](https://github.com/heygen-com/hyperframes/commit/9aaa7552fc7a41d479e4b4638cd0c47472652ddc), [#3498](https://github.com/heygen-com/hyperframes/pull/3498)). - **Engine:** Treat a sentineled cache entry with no frames as a miss ([dae5b7b90](https://github.com/heygen-com/hyperframes/commit/dae5b7b90b7eefceffc9e64cc532b5cc74eeeedd), [#3434](https://github.com/heygen-com/hyperframes/pull/3434)). - **Producer,core:** Honor relative data-start id-refs in render media scheduling ([f52ec1c25](https://github.com/heygen-com/hyperframes/commit/f52ec1c25f3af20fcceefad24acb06f37feab24c), [#3252](https://github.com/heygen-com/hyperframes/pull/3252)). - **Producer:** Fall back to screenshot capture on drawElement canvas-not-initialized ([a7e867475](https://github.com/heygen-com/hyperframes/commit/a7e86747586b5aad0263b6b00bbd9d32c51ff7e6), [#3480](https://github.com/heygen-com/hyperframes/pull/3480)). - **Core:** Evict cached MediaElementSource on src mutation, soften enforcement-point claims ([f7fc0017a](https://github.com/heygen-com/hyperframes/commit/f7fc0017a6a6f31a4ae725f9f391d8dc63e3d9cc)). - **Core:** Correct web-audio-route subpath export resolution ([32ef37cfc](https://github.com/heygen-com/hyperframes/commit/32ef37cfc31975afbeae85a3f6805e575a43e87a)). - **Core:** Address review — gate early diagnostic, fix empty crossOrigin, document gaps ([acc689825](https://github.com/heygen-com/hyperframes/commit/acc689825543942939bbef14ccd2844b7f13298d)). - **Core:** Prevent cross-origin Web Audio capture from silencing audio ([cce17da5a](https://github.com/heygen-com/hyperframes/commit/cce17da5a9eb1c6efa21db084d786a1d34b5d8f9)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.15...v0.8.16). Preview publishers can now use the same deterministic font resolver as final renders, preventing CSS case transforms from changing typography between preview and export. Rendering now exits stalled parallel capture paths, while template editing and JSON attribute linting handle promoted media and encoded values more safely. ## Features - **CLI:** Stamp font compiler version in localized HTML ([d6de08341](https://github.com/heygen-com/hyperframes/commit/d6de083411d76a0819768b21d30a305500a92048)). - **CLI:** Expose deterministic font localization ([38f8f9250](https://github.com/heygen-com/hyperframes/commit/38f8f9250a3f2a551a2e0a5f685ac4f64109e218)). ## Fixes - **Fonts:** Harden localizer release diagnostics ([7c40efbc6](https://github.com/heygen-com/hyperframes/commit/7c40efbc62bd7bd70bcfdb80cd55aef4bafb39d6)). - **CLI:** Keep font localizer process ownership explicit ([ec68d40cc](https://github.com/heygen-com/hyperframes/commit/ec68d40cc617272943069123383e7a9f6e463e93)). - **Fonts:** Cover rendered case variants in subsets ([744146eb6](https://github.com/heygen-com/hyperframes/commit/744146eb6e71f3c108091fe981a7d63859a6287b)). - **Producer:** Trip DE parallel-router circuit breaker on stalls and hangs ([3202f3fb8](https://github.com/heygen-com/hyperframes/commit/3202f3fb87e0f7babfdfe0a9d62703b293abfd80), [#3479](https://github.com/heygen-com/hyperframes/pull/3479)). - **Lint:** Decode JSON attribute entities ([3cacac5bd](https://github.com/heygen-com/hyperframes/commit/3cacac5bdc405b808e74df3da14e6c1595357325)). - Document safe template default editing ([71e8e92ae](https://github.com/heygen-com/hyperframes/commit/71e8e92ae940584a2be5a82c5a3d102187043dea)). - Expose promoted template media slots ([1e11608d4](https://github.com/heygen-com/hyperframes/commit/1e11608d443d0cadeb64b5b005d72763f1a6dccd)). - **Scripts:** Stop the large-file guard firing on text ([a562946e1](https://github.com/heygen-com/hyperframes/commit/a562946e11538a87ac2a0766fdad7833b2798696), [#3475](https://github.com/heygen-com/hyperframes/pull/3475)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.14...v0.8.15). Agent skills no longer teach composition rules the renderer does not enforce, four of which used to make a render fail outright. `hyperframes add` now records what it installed in `hyperframes.json`, so a render can report which catalog blocks the video used. ## Fixes - **Skills,lint:** Correct composition-contract claims the code contradicts ([b2fc18b2d](https://github.com/heygen-com/hyperframes/commit/b2fc18b2df60fd9049cb694c97c45104ee5b4e0d), [#3468](https://github.com/heygen-com/hyperframes/pull/3468)). ## Catalog - **CLI:** Report which catalog items a render actually used ([045b3a4fd](https://github.com/heygen-com/hyperframes/commit/045b3a4fd7df71b46f4432c114f70fb25d13b551), [#3470](https://github.com/heygen-com/hyperframes/pull/3470)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.13...v0.8.14). Automation is easier to shape in Studio: drag a segment to move both endpoints, and click lanes to reveal their controls. Audio bus selection now reliably clears clip selection, while CLI and skill fixes keep validation scoped and project previews attached. ## Features - **Studio:** Drag between automation points to move both endpoints together. Segments thicken on hover and preserve their shape within lane bounds ([7caf4b887](https://github.com/heygen-com/hyperframes/commit/7caf4b887192d90e53fe08460b1e79554b8fe37e), [#3465](https://github.com/heygen-com/hyperframes/pull/3465)). ## Fixes - **Studio:** Keep audio bus selection authoritative, even when an earlier clip selection resolves late. Group automation labels now reveal the exact rack control ([7caf4b887](https://github.com/heygen-com/hyperframes/commit/7caf4b887192d90e53fe08460b1e79554b8fe37e), [#3465](https://github.com/heygen-com/hyperframes/pull/3465)). - **Skills:** Keep seam-gate project previews attached, preventing false early-exit failures and leaked preview servers ([ac00560d7](https://github.com/heygen-com/hyperframes/commit/ac00560d7d9778b7e7a1f29701b66a83e39248af), [#3463](https://github.com/heygen-com/hyperframes/pull/3463)). - **CLI:** Restrict overlap waivers to marked text so parent markers cannot hide descendant collisions or caption-zone intrusions ([e5a5e6b15](https://github.com/heygen-com/hyperframes/commit/e5a5e6b151aaf0dd489456c2681da6d664983de4), [#3464](https://github.com/heygen-com/hyperframes/pull/3464)). - **Skills:** Avoid duplicate Pi skill discovery by skipping per-agent mirrors when the agent already reads the universal skill store ([95e1ac9f0](https://github.com/heygen-com/hyperframes/commit/95e1ac9f041ded5cd5c2a034de1dbd16c499bd04), [#3325](https://github.com/heygen-com/hyperframes/pull/3325)). ## Docs & Examples - **Changelog:** Weekly digest 2026-08-17–2026-08-24 ([21dc4aed0](https://github.com/heygen-com/hyperframes/commit/21dc4aed0cef3cdaf328cb3f84a8d8029bf6d6d6), [#3462](https://github.com/heygen-com/hyperframes/pull/3462)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.12...v0.8.13). Grouped audio now stays consistent from Studio preview through export, with safer edits, carve analysis, and validation. This release also removes the unfinished solo and group meter controls. ## Breaking Changes - **Studio:** Remove the session-only “Hear only this” control and live group meter. Existing compositions need no migration because neither wrote project data ([05affaae2](https://github.com/heygen-com/hyperframes/commit/05affaae2175a6dde0e2eafa5e702b67863d721c), [#3454](https://github.com/heygen-com/hyperframes/pull/3454)). - **Core:** Remove `window.__hf.setAudioSolo`. Custom Studio integrations must stop calling this preview bridge ([05affaae2](https://github.com/heygen-com/hyperframes/commit/05affaae2175a6dde0e2eafa5e702b67863d721c), [#3454](https://github.com/heygen-com/hyperframes/pull/3454)). ## Features - **Lint:** Report invalid group timing, misplaced carve settings, and membership problems without rejecting valid cross-file groups ([54091b501](https://github.com/heygen-com/hyperframes/commit/54091b5015aa0d45ca61275e75567701daf6e2b2), [#3447](https://github.com/heygen-com/hyperframes/pull/3447)). ## Fixes - **Core, Engine:** Keep group identity, mute state, gain, automation, and FX routing consistent across inlined previews and FFmpeg exports ([#3444](https://github.com/heygen-com/hyperframes/pull/3444), [#3445](https://github.com/heygen-com/hyperframes/pull/3445), [#3446](https://github.com/heygen-com/hyperframes/pull/3446)). - **Engine:** Preserve bus headroom and clean temporary files when grouped mixes fail. Render errors now retain structured context ([1aec3b4a0](https://github.com/heygen-com/hyperframes/commit/1aec3b4a09ea99e35b8d082b329fd3152d088e78), [#3446](https://github.com/heygen-com/hyperframes/pull/3446)). - **Studio:** Apply group creation and edits as one transaction across source files, live DOM state, undo, and expanded sub-compositions ([#3448](https://github.com/heygen-com/hyperframes/pull/3448), [#3449](https://github.com/heygen-com/hyperframes/pull/3449)). - **Studio:** Keep preview hydration, selection, reveal requests, group state, and property-panel controls synchronized through HMR and remounts ([#3450](https://github.com/heygen-com/hyperframes/pull/3450), [#3453](https://github.com/heygen-com/hyperframes/pull/3453)). - **Studio:** Prevent self-carve, reciprocal carve, and duplicate analysis. Repeated FX reveal requests now reopen the intended control ([f575bdadc](https://github.com/heygen-com/hyperframes/commit/f575bdadcbc9461df038a9fa84092ba22da9b18a), [#3452](https://github.com/heygen-com/hyperframes/pull/3452)). - **Studio:** Align group rows, track headers, and automation lanes. Audition starts where selected audio is actually playing ([4ea018a4a](https://github.com/heygen-com/hyperframes/commit/4ea018a4a7ccdfee4e77538c336c37d366876779), [#3451](https://github.com/heygen-com/hyperframes/pull/3451)). ## Docs & Examples - **Audio:** Document submix buses, group attributes, routing rules, and carve guardrails in the HyperFrames skills and contributor guidance ([2685c8f22](https://github.com/heygen-com/hyperframes/commit/2685c8f2231e39da31871f25b2e4609551a78c76), [#3455](https://github.com/heygen-com/hyperframes/pull/3455)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.11...v0.8.12). Caption-heavy transparent renders can now reuse unchanged frames without missing mounted clip boundaries. Studio's grouping dialog also stays within the window on short screens. ## Fixes - **Engine:** Keep static-frame dedup active across dense caption changes while preserving mounted clip boundaries and safe verification fallbacks ([65b2299db](https://github.com/heygen-com/hyperframes/commit/65b2299db284ece3232de26ed7afbe0360e097bd), [#3438](https://github.com/heygen-com/hyperframes/pull/3438)). - **Studio:** Stop the grouping dialog opening off the bottom of the window ([dd0626a55](https://github.com/heygen-com/hyperframes/commit/dd0626a55a0d0f24cae1b00bd2c95c0ebfa7a573), [#3421](https://github.com/heygen-com/hyperframes/pull/3421)). ## Internal - **Sdk:** Render-faithfulness test for serialize() bake contract (WS-F) ([f11b60854](https://github.com/heygen-com/hyperframes/commit/f11b60854a3ab1490bee8aef14086c8b245a3376), [#1575](https://github.com/heygen-com/hyperframes/pull/1575)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.10...v0.8.11). When a render fails to reach the Studio server, the error now says why. Before, every cause showed the same message, so a failure you could repeat every time still gave you nothing to act on. ## Fixes - **Studio:** Name the cause when a render request fails ([7a024cf68](https://github.com/heygen-com/hyperframes/commit/7a024cf68ee64b13ad6d7694b19efb252c0ce699), [#3424](https://github.com/heygen-com/hyperframes/pull/3424)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.9...v0.8.10). The last release turned the audio effects rack on for everyone. This one fixes what people hit first when they used it, and documents the whole system. ## Features - **Engine:** Renders no longer finish with the drawElement self-check silently switched off. That check compares frames with ffmpeg's `psnr` filter, and an ffmpeg built without it made every comparison fail quietly. HyperFrames now tests for the filter once at startup and captures by screenshot instead when it is missing ([073b098e2](https://github.com/heygen-com/hyperframes/commit/073b098e21aa006571b60c446711c6dff57a2eac), [#3418](https://github.com/heygen-com/hyperframes/pull/3418)). ## Fixes - **Studio:** The effects preset list on a timeline track no longer runs off the top or bottom of the window. It fits the space it opens into and scrolls, so every preset and both footer buttons stay reachable ([277fe0fa2](https://github.com/heygen-com/hyperframes/commit/277fe0fa221756480928605d71590ead55cbfb64), [#3413](https://github.com/heygen-com/hyperframes/pull/3413)). - **Studio:** The timeline's popovers and menus can no longer be painted behind other parts of the app. Every panel that floats above the timeline now sits on the same layer as the rest of the studio's popovers ([8612cfd40](https://github.com/heygen-com/hyperframes/commit/8612cfd40fcfd2d4dae6bff6b9b9ac940c7e7bbd), [#3414](https://github.com/heygen-com/hyperframes/pull/3414)). - **Studio:** The expand arrow on an audio group row is back to the size and shape the properties panel uses, instead of a smaller rotated one ([c59402389](https://github.com/heygen-com/hyperframes/commit/c59402389555ef2fca455e504fa40c5773354cf3), [#3415](https://github.com/heygen-com/hyperframes/pull/3415)). - **Skills:** The voiceover carve command now runs in your own project. It could not load HyperFrames from a published install at all, and the error it printed suggested reinstalling, which never helped. It also records the voice group rather than a list of clip ids, so a narration clip added later is covered without editing the carve ([f0cc9b1a3](https://github.com/heygen-com/hyperframes/commit/f0cc9b1a3441522797cfe06dc3892ac2065c7bf2), [#3416](https://github.com/heygen-com/hyperframes/pull/3416)). - **Producer, CLI:** A render that cannot find its manifest now lists every path it looked in, instead of naming one ([718bf5ef3](https://github.com/heygen-com/hyperframes/commit/718bf5ef32d4e521f686ea6ebe64545a6a2647ed), [#3387](https://github.com/heygen-com/hyperframes/pull/3387)). ## Docs & Examples - **Audio:** The audio effects system is documented. There are new pages for [mixing and presets](/studio/audio-effects), the [voiceover carve](/studio/voiceover-carve), [groups, mute and solo](/studio/audio-groups), and [automation lanes](/studio/audio-automation), plus a [full reference](/reference/audio-effects) covering every effect, parameter range, preset, and attribute ([0eca7b1e0](https://github.com/heygen-com/hyperframes/commit/0eca7b1e0aef831bbab1265395f942378468afc0), [#3420](https://github.com/heygen-com/hyperframes/pull/3420)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.8...v0.8.9). The audio effects rack, track groups, mute and solo are on for everyone. They shipped across twelve releases behind a flag at zero percent, so this is the first release where you can reach them. ## Features - **Audio:** Open the audio FX, group and mute features to everyone ([0e9a4f371](https://github.com/heygen-com/hyperframes/commit/0e9a4f371d4cff4e853640ea87caf76814af5278), [#3401](https://github.com/heygen-com/hyperframes/pull/3401)). ## Fixes - **CLI:** Stop a caught post-render throw reporting a valid render as failed ([ea95b7d44](https://github.com/heygen-com/hyperframes/commit/ea95b7d44e6de95a514931026d6c01be7f9c01a0), [#3409](https://github.com/heygen-com/hyperframes/pull/3409)). - **Lint:** Surface unloadable media variable defaults, stop reading data-var-src ids as paths ([41edbfb2c](https://github.com/heygen-com/hyperframes/commit/41edbfb2ce5a8beb1c9d9de2a3eb09195a369a4b), [#3406](https://github.com/heygen-com/hyperframes/pull/3406)). - **Studio:** Invalidate the preview signature off the watcher that sees project writes ([5842dd8df](https://github.com/heygen-com/hyperframes/commit/5842dd8df4c7fca3ed895e4bc047299c9274ed14), [#3364](https://github.com/heygen-com/hyperframes/pull/3364)). - **Lint:** Stop duplicate_composition_id firing on repeated sub-composition mounts ([09a5ef709](https://github.com/heygen-com/hyperframes/commit/09a5ef70925f8a67276df0166ff1e1a6eca5db6f), [#3404](https://github.com/heygen-com/hyperframes/pull/3404)). - **Producer:** Anchor local-font embedding to its url() occurrence ([e1191edba](https://github.com/heygen-com/hyperframes/commit/e1191edba6d8ec44e3d79624cc92ef32fe99805d), [#3405](https://github.com/heygen-com/hyperframes/pull/3405)). ## Internal - **Engine:** Give the audio grouping mixes room, and make a stall say why ([9c73e64a0](https://github.com/heygen-com/hyperframes/commit/9c73e64a07635fe02922ec2f0f3bc0b37ef6483d), [#3408](https://github.com/heygen-com/hyperframes/pull/3408)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.7...v0.8.8). Audio now works in groups. Set one volume, one mute, or one FX rack across many clips at once, and hear the same thing in preview that lands in the export. Studio also got a broad UX pass across captions, the player, the panels, and the sidebar, and lint findings now show up inside Studio. ## Features - **Studio,core:** Reach presets and the rack from the timeline ([6a92d2140](https://github.com/heygen-com/hyperframes/commit/6a92d21401974441a6a9b311c78e40df522e209d), [#3292](https://github.com/heygen-com/hyperframes/pull/3292)). - **Studio,core:** Mute groups, and hear-only-this that cannot reach the export ([0d26072e6](https://github.com/heygen-com/hyperframes/commit/0d26072e6cb3f5b901891c26396a0f6c1e0d8853), [#3291](https://github.com/heygen-com/hyperframes/pull/3291)). - **Studio,core:** A volume and a living meter on the group row ([5fd84c395](https://github.com/heygen-com/hyperframes/commit/5fd84c395b52d8533c924ea31628e71e7e5bc3f6), [#3290](https://github.com/heygen-com/hyperframes/pull/3290)). - **Engine:** Render grouped audio through a summed, FX-processed bus ([99f42be04](https://github.com/heygen-com/hyperframes/commit/99f42be04ce6bce535600c42a8eb694fed8ebc9e), [#3289](https://github.com/heygen-com/hyperframes/pull/3289)). - **Studio,lint:** Carve targets voiceover groups — always, when plural ([485c037dc](https://github.com/heygen-com/hyperframes/commit/485c037dcf2602b2b92fc9297a8dec8f965e79dc), [#3288](https://github.com/heygen-com/hyperframes/pull/3288)). - **Core:** Route grouped audio through a group bus in preview ([602cf53cf](https://github.com/heygen-com/hyperframes/commit/602cf53cf6d556711dc02592baad5f7e6088e748), [#3287](https://github.com/heygen-com/hyperframes/pull/3287)). - **Studio:** Group rows in the timeline, and a split disclosure ([acfa7c55a](https://github.com/heygen-com/hyperframes/commit/acfa7c55a2f3dcdb070e304bfb8e7b819d2ef3cf), [#3286](https://github.com/heygen-com/hyperframes/pull/3286)). - **Core:** The audio group model — element, membership, helpers ([524036715](https://github.com/heygen-com/hyperframes/commit/524036715043c4685d0fd41eaccb5addf5ce31c7), [#3278](https://github.com/heygen-com/hyperframes/pull/3278)). - **Core,studio:** The character presets pitch shift unlocks ([5e0cc7511](https://github.com/heygen-com/hyperframes/commit/5e0cc75115e3080aeb2ebab0f13ceac435fd52c4), [#3277](https://github.com/heygen-com/hyperframes/pull/3277)). - **Core:** Pitch shift — a granular shifter as the fifth FX worklet ([1b86b5612](https://github.com/heygen-com/hyperframes/commit/1b86b561273e85e09e4f1a2cc57233ceac1a2945), [#3276](https://github.com/heygen-com/hyperframes/pull/3276)). - **Studio:** Make presets the primary path into the FX rack ([43c4e6935](https://github.com/heygen-com/hyperframes/commit/43c4e6935ef34468b09b71f49a1977b83781e9a1), [#3274](https://github.com/heygen-com/hyperframes/pull/3274)). - **Producer:** Host/render telemetry in RenderPerfSummary ([7e3bcd9ef](https://github.com/heygen-com/hyperframes/commit/7e3bcd9ef145b9d0ebac7dd2b497b58b3e5d0ca2), [#1551](https://github.com/heygen-com/hyperframes/pull/1551)). ## Fixes - **Lint:** Break two fix-loops and drop two rules the runtime owns ([9bb4b4ce6](https://github.com/heygen-com/hyperframes/commit/9bb4b4ce60b6d41f2aa5fc4c1bcfc3e4efa73b16), [#3400](https://github.com/heygen-com/hyperframes/pull/3400)). - **Core:** Bind native window methods in the scoped sub-composition proxy ([a1c1f519c](https://github.com/heygen-com/hyperframes/commit/a1c1f519cb1d83baf3162e78aa5271c72abcd937), [#3378](https://github.com/heygen-com/hyperframes/pull/3378)). - **Cli,studio:** Surface project lint in Studio ([8b67bb6db](https://github.com/heygen-com/hyperframes/commit/8b67bb6db591e8d2866abd914fd791583f5cc701), [#3393](https://github.com/heygen-com/hyperframes/pull/3393)). - **Studio:** Captions UX — mode exit, undo, autosave surfacing, honest gating ([254de3d1c](https://github.com/heygen-com/hyperframes/commit/254de3d1c4c1babe4484e0d3112a3c1e3e5c4cc1), [#1968](https://github.com/heygen-com/hyperframes/pull/1968)). - **Studio:** Player UX — honest waveform, keyframe menu actions, beat-delete gesture ([a01a5d7b3](https://github.com/heygen-com/hyperframes/commit/a01a5d7b3c6555b5e577fed45fbeb59c8f1cfcfe), [#1967](https://github.com/heygen-com/hyperframes/pull/1967)). - **Studio:** Sidebar/panels UX — asset delete confirm, rename, search trap, undo ([44791c3f7](https://github.com/heygen-com/hyperframes/commit/44791c3f7da178a114950e498ffd6396f8dcf2f1), [#1966](https://github.com/heygen-com/hyperframes/pull/1966)). - **Studio:** Editor panel UX — commit safety, keyboard a11y, wired BlockParamsPanel ([ba607bf88](https://github.com/heygen-com/hyperframes/commit/ba607bf88683f129a489ea6855e1ff562e4a4d93), [#1965](https://github.com/heygen-com/hyperframes/pull/1965)). - **Deps:** Bump puppeteer so the browser hides its console window on Windows ([63eb35041](https://github.com/heygen-com/hyperframes/commit/63eb35041c0c1ad4f571d7d21f24ac3689ac5df7), [#3394](https://github.com/heygen-com/hyperframes/pull/3394)). - **Engine:** Hide ffmpeg console windows on Windows ([315a7b758](https://github.com/heygen-com/hyperframes/commit/315a7b758cca73b67dc9cb0b2548bae6295cea73), [#3381](https://github.com/heygen-com/hyperframes/pull/3381)). - **CLI:** Reject blank default composition entries ([a9ea07edd](https://github.com/heygen-com/hyperframes/commit/a9ea07edde6648463e3970a572dc42f4007a3d7f), [#3392](https://github.com/heygen-com/hyperframes/pull/3392)). - **Core,studio:** Silence hidden audio in preview, and call it mute ([8f3ab60b5](https://github.com/heygen-com/hyperframes/commit/8f3ab60b5a2f5a3fc1757d43d2ff45b53368c5bd), [#3275](https://github.com/heygen-com/hyperframes/pull/3275)). - **Producer:** Attach src URL to ffprobe failures for compile-phase attribution (STUDIO-5433) ([00f08e8de](https://github.com/heygen-com/hyperframes/commit/00f08e8de461aa03f9c9c13aa6b1e6cb428ea5e7), [#3033](https://github.com/heygen-com/hyperframes/pull/3033)). - **Producer:** Decode percent-encoded video src in HDR pre-extract ([13c867267](https://github.com/heygen-com/hyperframes/commit/13c867267e50030e786bf209164d4817ff12869a), [#2759](https://github.com/heygen-com/hyperframes/pull/2759)). - **CLI:** Surface HYPERFRAMES_BROWSER_PATH hint on Windows chrome-headless-shell launch crashes ([7563b644a](https://github.com/heygen-com/hyperframes/commit/7563b644a2f5c4f8b6787b2b088695219aaf9419), [#2481](https://github.com/heygen-com/hyperframes/pull/2481)). - **CLI:** Add missing cache fields to telemetry test fixture ([24b3ebdf9](https://github.com/heygen-com/hyperframes/commit/24b3ebdf9f71d49aaffc48e077ab36ff5d5e3871), [#1915](https://github.com/heygen-com/hyperframes/pull/1915)). - **Studio:** Resume drag-paused timelines instead of only re-seeking ([64b94ebf3](https://github.com/heygen-com/hyperframes/commit/64b94ebf3a5ac4611292e10f6b676a4616e9dfe2), [#1876](https://github.com/heygen-com/hyperframes/pull/1876)). - **Core:** Play bounded WebAudio clips full-length at non-1x playback rate ([1ff99a50f](https://github.com/heygen-com/hyperframes/commit/1ff99a50f5b3673a5af722c848c3f13b161e0a03), [#1494](https://github.com/heygen-com/hyperframes/pull/1494)). - **Core:** Prevent symlink path traversal in htmlBundler safePath (F-005) ([c09b0b918](https://github.com/heygen-com/hyperframes/commit/c09b0b91830f26e34e2393d0c5ac8abc8b2da027), [#1214](https://github.com/heygen-com/hyperframes/pull/1214)). ## Docs & Examples - Drop --full-depth from skills install commands ([9ec75a485](https://github.com/heygen-com/hyperframes/commit/9ec75a485f05e0e6a6190b0931aefbdc48bd8535), [#3399](https://github.com/heygen-com/hyperframes/pull/3399)). ## Catalog - **Catalog:** Render the Matrix Decode docs preview; remove Checkout Flow ([d4765512d](https://github.com/heygen-com/hyperframes/commit/d4765512df8b9ff9636c7a2e5e4a41de08039a78), [#3396](https://github.com/heygen-com/hyperframes/pull/3396)). ## Internal - **Engine:** Give the ffmpeg-bound grouping mixes their 30s timeout ([77566a198](https://github.com/heygen-com/hyperframes/commit/77566a198bcc8844f6f901be26b0dfc0c1f333f4), [#3398](https://github.com/heygen-com/hyperframes/pull/3398)). - **CLI:** Bump pinned Chromium to 152.0.7977.30 ([556fe936f](https://github.com/heygen-com/hyperframes/commit/556fe936f89d5d4cc520f2a4e7b60e31bb7ae01c), [#3231](https://github.com/heygen-com/hyperframes/pull/3231)). - Gitignore local chrome-for-testing downloads ([865f7fec5](https://github.com/heygen-com/hyperframes/commit/865f7fec52bf6288fcec55be8499757c0ab631e4), [#1451](https://github.com/heygen-com/hyperframes/pull/1451)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.6...v0.8.7). Audio now replays reliably after backward seeks, and rendered mixes keep every clip at its authored time. Studio keeps nested timelines open, skill updates require confirmation, and a brittle lint error is gone. ## Fixes - **Audio:** Keep delayed clips at their authored times in rendered mixes, preventing late clips from jumping to the start or disappearing ([c056289d8](https://github.com/heygen-com/hyperframes/commit/c056289d832351dc35256bda8b36188a77bc557a), [#3380](https://github.com/heygen-com/hyperframes/pull/3380)). - **Core:** Replay ended audio after backward timeline seeks without repeating tails during ordinary playback ([477e09642](https://github.com/heygen-com/hyperframes/commit/477e09642b6db735866316301d924d0dfdc3cf38), [#3383](https://github.com/heygen-com/hyperframes/pull/3383)). - **Skills:** Ask for confirmation before updating installed skills ([efc2e1964](https://github.com/heygen-com/hyperframes/commit/efc2e1964a1c837f748a1c319896998a0e9da211), [#3295](https://github.com/heygen-com/hyperframes/pull/3295)). - **Studio:** Keep subcomposition timelines open during playback ([a340ed382](https://github.com/heygen-com/hyperframes/commit/a340ed382aa5d335a3b7e40b6cfb4dfae1870569), [#3382](https://github.com/heygen-com/hyperframes/pull/3382)). - **Lint:** Remove the fragile `head_leaked_text` rule that could block correct compositions ([a89780679](https://github.com/heygen-com/hyperframes/commit/a8978067981805bdae72b8f16ca1c57153ec207a), [#3385](https://github.com/heygen-com/hyperframes/pull/3385)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.5...v0.8.6). Lint is quieter and more accurate. Seven rules that fired on correct compositions are gone, so you waste fewer edits chasing errors that were never real. The clip example in the docs also stopped failing its own linter. ## Features - **Telemetry:** Measure which lint rules fire, cost, and fail to converge ([f822200fb8](https://github.com/heygen-com/hyperframes/commit/f822200fb8f437b73985f43837c195f5e7312289), [#3367](https://github.com/heygen-com/hyperframes/pull/3367)). - **Skills:** Anchored-connector rule + source-traceable visuals doctrine ([a6a9e2f89e](https://github.com/heygen-com/hyperframes/commit/a6a9e2f89e509424a64a1dcd976aabfd54b60d02), [#3354](https://github.com/heygen-com/hyperframes/pull/3354)). ## Fixes - **Studio:** Capture storyboard tiles at review density ([b4d5abd7b2](https://github.com/heygen-com/hyperframes/commit/b4d5abd7b2cdc419906153ca75d99bd813adf614), [#3371](https://github.com/heygen-com/hyperframes/pull/3371)). - **Lint:** Stop erroring on the documented canonical clip block ([2be5a03b80](https://github.com/heygen-com/hyperframes/commit/2be5a03b800e0b17ee36e99167c99edc383065ce), [#3374](https://github.com/heygen-com/hyperframes/pull/3374)). - **Skills:** Resolve the blueprint id from a qualified `blueprint:` field ([d1482b0129](https://github.com/heygen-com/hyperframes/commit/d1482b012926d7118fa39e53ef8974328e84cc9e), [#3337](https://github.com/heygen-com/hyperframes/pull/3337)). - **Skills:** Stage SVGs that capture wrote into capture/assets/svgs/ ([c66c9a4c76](https://github.com/heygen-com/hyperframes/commit/c66c9a4c76ff0681cadc8007a8e02744bbcdab10), [#3336](https://github.com/heygen-com/hyperframes/pull/3336)). - **Core:** Keep authored gain above unity off el.volume in the sandbox bridge ([9140c0eaa1](https://github.com/heygen-com/hyperframes/commit/9140c0eaa1b332de7ca061af040611f5b1c64419), [#3349](https://github.com/heygen-com/hyperframes/pull/3349)). - **Producer:** Seek once per step when discovering video visibility ([d09145faab](https://github.com/heygen-com/hyperframes/commit/d09145faabfd3078c29969fbcf293067d50275ac), [#3233](https://github.com/heygen-com/hyperframes/pull/3233)). - **Studio:** Capture the storyboard frame hero at full resolution ([f0e637375f](https://github.com/heygen-com/hyperframes/commit/f0e637375f2c43b22192f1ad8c3aef1b5d010e8a), [#3338](https://github.com/heygen-com/hyperframes/pull/3338)). ## Internal - **Lint:** Drop seven rules that fire on correct compositions ([83ceaeb902](https://github.com/heygen-com/hyperframes/commit/83ceaeb902f07ffc4bed976ca3bdd501eb60aa55), [#3366](https://github.com/heygen-com/hyperframes/pull/3366)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.4...v0.8.5). A new `normalize-audio` command matches one clip's loudness to another, and the volume fader now tells the truth about the gain it writes. Previews keep running in the background in every launch mode, and pressing Delete in Studio now removes the whole selection. ## Features - **CLI:** Add normalize-audio to match one clip's loudness to another ([b3c43e248](https://github.com/heygen-com/hyperframes/commit/b3c43e24804e632ef2437e2ebd6789094ced2569), [#3306](https://github.com/heygen-com/hyperframes/pull/3306)). - **CLI:** Run a managed background preview in every launch mode ([9da422fd7](https://github.com/heygen-com/hyperframes/commit/9da422fd7f75b0d5fe7f7f2defd889239bb82fe6), [#3310](https://github.com/heygen-com/hyperframes/pull/3310)). - **CLI:** Give every preview lifecycle op one JSON document ([0e3c5f6be](https://github.com/heygen-com/hyperframes/commit/0e3c5f6bef4760d863309e997619bb1db99f5530), [#3309](https://github.com/heygen-com/hyperframes/pull/3309)). ## Fixes - **CLI:** Zip the publish archive to the same bytes every time ([d464f60b9](https://github.com/heygen-com/hyperframes/commit/d464f60b9600485cd97c537338e25b7f77f9ca90), [#3358](https://github.com/heygen-com/hyperframes/pull/3358)). - **Studio:** Make the volume fader tell the truth about the gain it writes ([228eabd43](https://github.com/heygen-com/hyperframes/commit/228eabd43fa6164dc1296e4615bae33dcca98696), [#3305](https://github.com/heygen-com/hyperframes/pull/3305)). - **Producer:** Give inlined media a document-unique render id ([634df5a5a](https://github.com/heygen-com/hyperframes/commit/634df5a5af7aad3e529035d62d324aca1512df35), [#3342](https://github.com/heygen-com/hyperframes/pull/3342)). - **Studio:** Make Delete remove the whole canvas selection ([ec0b23f3c](https://github.com/heygen-com/hyperframes/commit/ec0b23f3cec98ea9bb4b61d54ad18bb48ee1c721), [#3339](https://github.com/heygen-com/hyperframes/pull/3339)). - **Audio:** Raise the authoring gain ceiling and carry it through the probes ([e282ff15c](https://github.com/heygen-com/hyperframes/commit/e282ff15cc8b8ef519d514c7741e6b27cfd92aae), [#3333](https://github.com/heygen-com/hyperframes/pull/3333)). - **CLI:** Keep a live preview's ownership record and stop past a bad one ([74149e249](https://github.com/heygen-com/hyperframes/commit/74149e249ac5a2e7a88d15f241d12ec58db01283), [#3308](https://github.com/heygen-com/hyperframes/pull/3308)). - **Producer:** Clamp embedded video/audio windows to the scene ([b31dde35b](https://github.com/heygen-com/hyperframes/commit/b31dde35b13a3c23c677ba3b648d01a7d735f5be), [#3332](https://github.com/heygen-com/hyperframes/pull/3332)). - **CLI:** Signal only processes the OS says own the port ([c1c70f44b](https://github.com/heygen-com/hyperframes/commit/c1c70f44bd9d43e22e80449d1b084d6e4d8ae034), [#3307](https://github.com/heygen-com/hyperframes/pull/3307)). ## Internal - Bound the ffmpeg apt fetch so a stalled mirror costs a retry, not the job ([7e96e60fe](https://github.com/heygen-com/hyperframes/commit/7e96e60fe228548fe4813aa5e9917bbde9a50feb), [#3356](https://github.com/heygen-com/hyperframes/pull/3356)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.3...v0.8.4). Studio now keeps voices natural at every preview speed and applies authored track gain and user volume exactly once. Creator skills also add copyable recipes for cuts, trims, zooms, masks, transitions, and placed audio. ## Features - Make creator media edits render-safe ([afafca4b9](https://github.com/heygen-com/hyperframes/commit/afafca4b9670cad60afd66475207ef6a016a759b), [#3322](https://github.com/heygen-com/hyperframes/pull/3322)). ## Fixes - Separate Studio author and user audio gain ([995c9e346](https://github.com/heygen-com/hyperframes/commit/995c9e346e5b1bfff015db3979896ec576cff12c), [#3328](https://github.com/heygen-com/hyperframes/pull/3328)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.2...v0.8.3). The variables panel on a component's catalog page now changes its preview. Pick an accent or a size and the preview answers, so what you see is what the copied snippet installs. ## Fixes - **Skills:** Count proxy-driver tweens in the animation map ([0d874adc6](https://github.com/heygen-com/hyperframes/commit/0d874adc685a94a519311cf9ed9e4107bb0347c9), [#3301](https://github.com/heygen-com/hyperframes/pull/3301)). - **Skills:** Declare the caption brand font's style axis, not just its weight ([a41da8651](https://github.com/heygen-com/hyperframes/commit/a41da8651768942adf588a959d9dc062c90c6a13), [#3300](https://github.com/heygen-com/hyperframes/pull/3300)). - **Skills:** Pin UTF-8 in Python scripts instead of the platform code page ([f8a1e2d31](https://github.com/heygen-com/hyperframes/commit/f8a1e2d315e51856491af003958914152371c29d), [#3298](https://github.com/heygen-com/hyperframes/pull/3298)). ## Catalog - **Catalog:** Make component previews answer their variables panel ([406bf316a](https://github.com/heygen-com/hyperframes/commit/406bf316a38d8a6ff24c00696d9e537ee85997d4), [#3323](https://github.com/heygen-com/hyperframes/pull/3323)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.1...v0.8.2). Variables you pass to `hyperframes add` now reach the file it installs, instead of being dropped without a word. Studio also asks for FFmpeg before an export starts, rather than after one fails. ## Features - **Studio:** Prompt to install FFmpeg before Export, not after ([5058236ed](https://github.com/heygen-com/hyperframes/commit/5058236eda13cc31536e39bd37cf7eb4f9a99025), [#3314](https://github.com/heygen-com/hyperframes/pull/3314)). ## Fixes - **Docs:** Load the player from latest, not a pinned minor ([d7688f994](https://github.com/heygen-com/hyperframes/commit/d7688f9943814b44ab20b7d4b079ab50f7ca36df), [#3320](https://github.com/heygen-com/hyperframes/pull/3320)). - **Add:** Make chosen variables actually take effect, in the CLI and the preview ([ea7c48f37](https://github.com/heygen-com/hyperframes/commit/ea7c48f37249aff26211913562c74e29b85e8ddb), [#3316](https://github.com/heygen-com/hyperframes/pull/3316)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.8.0...v0.8.1). HyperFrames 0.8 establishes the supported version boundary for Plan v2 as the default distributed cloud transport. Version 0.7.111 already contained this behavior. Version 0.8.0 adds no further cloud runtime changes beyond that release. ## Migration - Redeploy AWS Lambda, SAM, or CDK infrastructure from version 0.8.0 before upgrading SDK callers to 0.8.0. - Redeploy GCP Cloud Run services and workflows from version 0.8.0 before upgrading SDK callers to 0.8.0. - Omitting `planProtocol` selects Plan v2. Explicit `"v1"` remains available for compatibility while older work drains. - Keep the producer, SDK, and cloud adapter packages on the same version during the upgrade. ## Catalog - **Catalog:** Remove two AI UI items ([ed18f1ea9](https://github.com/heygen-com/hyperframes/commit/ed18f1ea9aae00c26fdb712b231ac123e9170086), [#3317](https://github.com/heygen-com/hyperframes/pull/3317)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.111...v0.8.0). Distributed cloud renders now use the content-addressed Plan v2 transport by default, with explicit Plan v1 compatibility during upgrades. Catalog search now ranks names and rarer words more accurately, while new text-measurement hooks give custom tools better layout data. ## Features - **Cloud:** Default distributed plans to v2 ([17a2a00ed](https://github.com/heygen-com/hyperframes/commit/17a2a00ed5248bfc1b5f4efee1267610b0610727), [#3311](https://github.com/heygen-com/hyperframes/pull/3311)). - **Core:** Expose pretext text measurement on window.__hyperframes ([0285a711e](https://github.com/heygen-com/hyperframes/commit/0285a711e926a592bd189d647474b50de474581c), [#3302](https://github.com/heygen-com/hyperframes/pull/3302)). ## Catalog - **Catalog:** Rank on where a word appears and how rare it is ([6b17c24f9](https://github.com/heygen-com/hyperframes/commit/6b17c24f980f9514345c8c882b00477328dbc3e6), [#3312](https://github.com/heygen-com/hyperframes/pull/3312)). ## Internal - **Studio:** Split the two files over the 600-line cap ([35eb6d290](https://github.com/heygen-com/hyperframes/commit/35eb6d290698fd6aac90a63fd03b70a8cd2f2b07), [#3313](https://github.com/heygen-com/hyperframes/pull/3313)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.110...v0.7.111). A registry the CLI cannot reach no longer empties the catalog. Search and browse now fall back to the last copy on disk, so one network timeout cannot send you off to hand-write a move you already have. When a search finds nothing that fits, the CLI hands you the command to report the gap. Studio also gains a preview volume control. ## Features - **Studio:** Add a preview volume control ([fecaf72d1](https://github.com/heygen-com/hyperframes/commit/fecaf72d1f6de66224b3857efb78a2f2c44c41bc), [#3282](https://github.com/heygen-com/hyperframes/pull/3282)). ## Fixes - Create temp dirs with mkdtemp, not a name built from Date.now() ([de4062a93](https://github.com/heygen-com/hyperframes/commit/de4062a93300cbe1826edfbd8d71fbc44be25cb7), [#3241](https://github.com/heygen-com/hyperframes/pull/3241)). ## Docs & Examples - **Skills:** Fix anime.js v3 syntax in v4 adapter guidance ([67edb01bf](https://github.com/heygen-com/hyperframes/commit/67edb01bf4aa2f5931e838e46e14e0f51a5809ee), [#3064](https://github.com/heygen-com/hyperframes/pull/3064)). ## Catalog - **Catalog:** Survive an unreachable registry, and ask for the gap ([37f8c4844](https://github.com/heygen-com/hyperframes/commit/37f8c48449d6c846788a76edf055bf2a888b7be5), [#3299](https://github.com/heygen-com/hyperframes/pull/3299)). - **Registry:** Add avatar promo and Slack notification templates ([b9a4dfcbe](https://github.com/heygen-com/hyperframes/commit/b9a4dfcbe56de5141b9a379ff30605cf23984d1e), [#3279](https://github.com/heygen-com/hyperframes/pull/3279)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.109...v0.7.110). Audio and video clips now continue from the correct source position after a split. Renders also honor mixer settings and carry diagnostic metadata. ## Features - **Engine:** Add invisible, unsigned renderer and version metadata to encoded files for diagnostics ([f7d2260f9](https://github.com/heygen-com/hyperframes/commit/f7d2260f9d8edb33e708138067a0eaf393c1f214), [#3264](https://github.com/heygen-com/hyperframes/pull/3264)). ## Fixes - **Producer:** Honor configured FFmpeg timeouts and master gain during audio mixing ([c32b8041d](https://github.com/heygen-com/hyperframes/commit/c32b8041dbd157178220b7a364071fe8e3cb783a), [#3239](https://github.com/heygen-com/hyperframes/pull/3239)). - **Studio:** Keep audio and video at the correct source position after splitting a clip ([b1b368d0f](https://github.com/heygen-com/hyperframes/commit/b1b368d0f0967506db02224ce1503f88b36b6487), [#3272](https://github.com/heygen-com/hyperframes/pull/3272)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.108...v0.7.109). Studio can now automate any effect parameter with keyframed lanes, complete with copy, retime, and reshape tools. The full audio FX rack ships behind a staged rollout, so it isn't visible yet. ## Features - **Studio:** Instrument the audio FX rack, including work an agent did ([d6c4774ef](https://github.com/heygen-com/hyperframes/commit/d6c4774ef41c54f66dc02c6dd433facee822a8f8), [#3229](https://github.com/heygen-com/hyperframes/pull/3229)). - **Studio:** Fold a preset shut, and give each one its own title design ([e3ec48adc](https://github.com/heygen-com/hyperframes/commit/e3ec48adce494d40d787cd4cbca6464a3b53362f), [#3191](https://github.com/heygen-com/hyperframes/pull/3191)). - Switch a preset off, or ramp it, as one thing ([acdb11250](https://github.com/heygen-com/hyperframes/commit/acdb11250ce3bb97a70cdd63d080968900a2f003), [#3189](https://github.com/heygen-com/hyperframes/pull/3189)). - One knob for the five effects that cannot honestly have one ([29f516d49](https://github.com/heygen-com/hyperframes/commit/29f516d490c00697594f3b88a565d69115b7af12), [#3188](https://github.com/heygen-com/hyperframes/pull/3188)). - **Studio:** Family lettering, tints, and the rack as a signal path ([2020b82c9](https://github.com/heygen-com/hyperframes/commit/2020b82c9b8f2d2050b5b11c76bdb27323d64e07), [#3187](https://github.com/heygen-com/hyperframes/pull/3187)). - **Studio:** Two faces, and the shared frequency ruler ([96fd4d061](https://github.com/heygen-com/hyperframes/commit/96fd4d061ecddef59e3949b4fb3e30d51209bd76), [#3186](https://github.com/heygen-com/hyperframes/pull/3186)). - Offer the job, not the machine — the range IS the module ([31fa523b7](https://github.com/heygen-com/hyperframes/commit/31fa523b7ed71c6fbbc0c4b2558fb83bf636fc88), [#3185](https://github.com/heygen-com/hyperframes/pull/3185)). - **Studio:** Make the FX rack speak the author's language ([0e4da52c8](https://github.com/heygen-com/hyperframes/commit/0e4da52c8222b8d18a1211b34f2fb3bd0f7e79ee), [#3192](https://github.com/heygen-com/hyperframes/pull/3192)). - **Core:** Land the plain-language layer, and test that it covers the rack ([27cdd4d5b](https://github.com/heygen-com/hyperframes/commit/27cdd4d5b1684afae16f96fe3e4af30c73178e1a), [#3184](https://github.com/heygen-com/hyperframes/pull/3184)). - **Core:** The levelling script — "Even Out Levels" ([71066fc25](https://github.com/heygen-com/hyperframes/commit/71066fc25ba362a18d52ba0648b6b279e9ee3206), [#3180](https://github.com/heygen-com/hyperframes/pull/3180)). - **Studio:** The Tone module — a multi-band EQ on faders ([818a7b281](https://github.com/heygen-com/hyperframes/commit/818a7b281b44182b6a4e47b7f30f92df332f62a2), [#3179](https://github.com/heygen-com/hyperframes/pull/3179)). - **Core:** Name every preset node, and add a multi-band EQ over existing filters ([9f6762052](https://github.com/heygen-com/hyperframes/commit/9f676205239a4e1ce03498223ef9f6ce5448aeec), [#3178](https://github.com/heygen-com/hyperframes/pull/3178)). - **Studio:** Give the clips on a track one automation lane row ([9b18fa7a2](https://github.com/heygen-com/hyperframes/commit/9b18fa7a26bd5e7b4f8b4b4e10c984585767620b), [#3214](https://github.com/heygen-com/hyperframes/pull/3214)). - **Studio:** The carve is one module in the rack ([d18cbcb7f](https://github.com/heygen-com/hyperframes/commit/d18cbcb7f31862a37b9051b85ebb562f104a516c), [#3213](https://github.com/heygen-com/hyperframes/pull/3213)). - **Studio:** Show every automated knob at the playhead ([7d38fed97](https://github.com/heygen-com/hyperframes/commit/7d38fed97fd50f70e5a67229250a186baac98d3c), [#3210](https://github.com/heygen-com/hyperframes/pull/3210)). - **Studio:** Retime and edge-stretch an automation selection ([120ea37c2](https://github.com/heygen-com/hyperframes/commit/120ea37c2fbd7202a443b94c0ff21c1ee7a63996), [#3207](https://github.com/heygen-com/hyperframes/pull/3207)). - **Studio:** Copy and paste automation ranges across lanes ([c7c95e2f0](https://github.com/heygen-com/hyperframes/commit/c7c95e2f018efa961b7a5e06fb142a98fd14ecc9), [#3056](https://github.com/heygen-com/hyperframes/pull/3056)). - **Studio:** Shape and simplify an automation selection ([64a85e775](https://github.com/heygen-com/hyperframes/commit/64a85e775a2259938e24d2fc7dc279c402397761), [#3055](https://github.com/heygen-com/hyperframes/pull/3055)). - **Studio:** Select a time range on an automation lane ([3670e9a92](https://github.com/heygen-com/hyperframes/commit/3670e9a921ddcbcd84e5d448faec5b08fca0ba40), [#3050](https://github.com/heygen-com/hyperframes/pull/3050)). - **Studio:** Curve, snap and type a value in an automation lane ([e465a07a3](https://github.com/heygen-com/hyperframes/commit/e465a07a322db8a63fc757bda5a53a842a0c269f), [#3038](https://github.com/heygen-com/hyperframes/pull/3038)). - **Engine:** Let an FX tail decay instead of cutting it at the clip ([6a0e409fc](https://github.com/heygen-com/hyperframes/commit/6a0e409fc2704683613b0a94cc734635dd9ded94), [#3036](https://github.com/heygen-com/hyperframes/pull/3036)). - **Studio:** Automate and un-automate each effect parameter ([32f29721d](https://github.com/heygen-com/hyperframes/commit/32f29721d2fd9ab7e85c0cf87108aa2c1b9859a9), [#3026](https://github.com/heygen-com/hyperframes/pull/3026)). - **Studio:** Automate a parameter without reloading the preview ([7203e0a73](https://github.com/heygen-com/hyperframes/commit/7203e0a73ca9f51cde74f0820bc31fed16454972), [#3025](https://github.com/heygen-com/hyperframes/pull/3025)). - **Studio:** The automation lane itself ([0d3c0246d](https://github.com/heygen-com/hyperframes/commit/0d3c0246d00fe1cfb33492581fc06c5d0abf17ba), [#3024](https://github.com/heygen-com/hyperframes/pull/3024)). - **Studio:** The geometry and plumbing behind automation lanes ([3cfacf440](https://github.com/heygen-com/hyperframes/commit/3cfacf440d4d0631618df48ed50cd06f42922db6), [#3023](https://github.com/heygen-com/hyperframes/pull/3023)). - **Audio:** Play automation envelopes in preview and bake them at render ([23ba58cfd](https://github.com/heygen-com/hyperframes/commit/23ba58cfd33a5a5ec627e2e88d65da2cbc43a55c), [#3016](https://github.com/heygen-com/hyperframes/pull/3016)). - **Audio:** Automation envelope model ([fd97926cf](https://github.com/heygen-com/hyperframes/commit/fd97926cf67e860330624072050043c2bc03ccfe), [#3015](https://github.com/heygen-com/hyperframes/pull/3015)). - **Audio:** Hear the FX chain while previewing ([9b0c5e855](https://github.com/heygen-com/hyperframes/commit/9b0c5e85596efaf93823bf5f19b7f1d1216ca7d5), [#3014](https://github.com/heygen-com/hyperframes/pull/3014)). - **Engine:** Render the FX chain offline, and the carve analysis behind it ([cc40e35aa](https://github.com/heygen-com/hyperframes/commit/cc40e35aa0995c2731c4d34a4502d45927997a2d), [#3021](https://github.com/heygen-com/hyperframes/pull/3021)). ## Fixes - **Studio:** Audition from the playhead while paused, and let an author out of a menu ([6bcf73939](https://github.com/heygen-com/hyperframes/commit/6bcf739390842dc00f94ba1e99f2baea1b989717), [#3190](https://github.com/heygen-com/hyperframes/pull/3190)). - **Core:** Give the chorus and phaser LFOs a phase, and unwire them on dispose ([b839dbd2c](https://github.com/heygen-com/hyperframes/commit/b839dbd2cc2c7e6e1da432fd8c000cf9e897375c), [#3183](https://github.com/heygen-com/hyperframes/pull/3183)). - **Core:** Retire worklet processors, retry failed registration, reuse FFT scratch ([f6cf3b242](https://github.com/heygen-com/hyperframes/commit/f6cf3b242bf425b6149a42c9708f287ddc36d905), [#3175](https://github.com/heygen-com/hyperframes/pull/3175)). - **Engine:** Duck before quantising, chunk the PCM, reschedule on rate change ([ea0344122](https://github.com/heygen-com/hyperframes/commit/ea0344122c22b6e82828216b8ce72e08afef3b46), [#3174](https://github.com/heygen-com/hyperframes/pull/3174)). - **Audio:** Eleven small correctness fixes across engine, core and the panel ([95751d6b1](https://github.com/heygen-com/hyperframes/commit/95751d6b10c44c982ce1aeed97b4abb44a7bb7d7), [#3173](https://github.com/heygen-com/hyperframes/pull/3173)). - **Studio:** The shared-row follow-ups ([df57ad4ba](https://github.com/heygen-com/hyperframes/commit/df57ad4bace78f97bef51d9b1dc32ec1f6ded431), [#3215](https://github.com/heygen-com/hyperframes/pull/3215)). - **Core:** Make audio automation survive being rescheduled ([69face9dc](https://github.com/heygen-com/hyperframes/commit/69face9dc6a8faab5c728860cc7a3f7170d17e07), [#3208](https://github.com/heygen-com/hyperframes/pull/3208)). - **Core:** Escape `\<` in compiler-emitted composition variable CSS ([f9a20692f](https://github.com/heygen-com/hyperframes/commit/f9a20692f8a0ee10330d0a95de1abd422e92d74a), [#3072](https://github.com/heygen-com/hyperframes/pull/3072)). - **Core:** Escape `\<` in the compiler-emitted variables script ([91db93aa3](https://github.com/heygen-com/hyperframes/commit/91db93aa345a8dfc2b68ec0ac18c81065a805cd9), [#3071](https://github.com/heygen-com/hyperframes/pull/3071)). - **Audio:** Two things the envelopes needed to be heard at all ([2c41a74ff](https://github.com/heygen-com/hyperframes/commit/2c41a74ff72bcfe21cbb9beb02c07de6fe247019), [#3017](https://github.com/heygen-com/hyperframes/pull/3017)). - **Capture:** Bound scroll/evaluate timeouts so heavy pages keep capturing ([43dba2205](https://github.com/heygen-com/hyperframes/commit/43dba22057e1fc131f6a2758e5ae3481b81efdc5), [#3236](https://github.com/heygen-com/hyperframes/pull/3236)). - **Fonts:** Supplement alias faces from the canonical family ([a16222d9a](https://github.com/heygen-com/hyperframes/commit/a16222d9a278e93b0eff8ebbc62fef04e3c979e9), [#3230](https://github.com/heygen-com/hyperframes/pull/3230)). ## Docs & Examples - **Skills:** Add /hyperframes-audio, and key the waveform cache by file ([56d8df65c](https://github.com/heygen-com/hyperframes/commit/56d8df65ca0314f0089c366335c19cbf224546e2), [#3211](https://github.com/heygen-com/hyperframes/pull/3211)). ## Catalog - **Core:** The audio FX preset catalogue, and applying one from the rack ([7d0d74dca](https://github.com/heygen-com/hyperframes/commit/7d0d74dcae1bd9110f64f6836101fc25e2146500), [#3177](https://github.com/heygen-com/hyperframes/pull/3177)). - **Catalog:** Restore the caption texture preview ([cbd38b32f](https://github.com/heygen-com/hyperframes/commit/cbd38b32f7a1cc38964e898991b8767d3a05506c), [#3258](https://github.com/heygen-com/hyperframes/pull/3258)). - **Catalog:** Center the menu morph preview ([c71fab322](https://github.com/heygen-com/hyperframes/commit/c71fab322e555463bde94953a006a1c46c0c2a12), [#3256](https://github.com/heygen-com/hyperframes/pull/3256)). - **Catalog:** Keep the text stagger preview inside the frame ([a2109a863](https://github.com/heygen-com/hyperframes/commit/a2109a863319e6c603b3d5758bc4a180c7cff064), [#3255](https://github.com/heygen-com/hyperframes/pull/3255)). - **Catalog:** Keep the animated bar chart preview in frame ([158f15e8f](https://github.com/heygen-com/hyperframes/commit/158f15e8f0739c08d72eca46b34904285dae09c5), [#3254](https://github.com/heygen-com/hyperframes/pull/3254)). - **Catalog:** Keep the typewriter preview inside the frame ([dc01a12d7](https://github.com/heygen-com/hyperframes/commit/dc01a12d71022b60ee0d12cad74c46a2e8753f81), [#3249](https://github.com/heygen-com/hyperframes/pull/3249)). - **Studio:** The FX panel, generated from the registry ([c2996c862](https://github.com/heygen-com/hyperframes/commit/c2996c8626135db5253519359d8a063d3bafad8d), [#3022](https://github.com/heygen-com/hyperframes/pull/3022)). - **Registry:** Add ChatGPT and Claude exchange templates ([0474d4ae2](https://github.com/heygen-com/hyperframes/commit/0474d4ae266ccc4b482ed6631fc46fb2dd19b1af), [#3244](https://github.com/heygen-com/hyperframes/pull/3244)). - Simplify the Catalog overview with a section tour ([9b1232965](https://github.com/heygen-com/hyperframes/commit/9b1232965201baae4764c470edd33878a0c1ceef), [#3240](https://github.com/heygen-com/hyperframes/pull/3240)). - **Core:** Web Audio graphs for the FX registry ([2350f9b69](https://github.com/heygen-com/hyperframes/commit/2350f9b69b10c32ec12d0f84800133aa5173804e), [#3020](https://github.com/heygen-com/hyperframes/pull/3020)). - **Core:** The audio FX registry ([5752d2249](https://github.com/heygen-com/hyperframes/commit/5752d224929f00ac2fa2757df02339f781cdd6fa), [#3019](https://github.com/heygen-com/hyperframes/pull/3019)). - **Registry:** Normalize ai chat portrait canvas ([93fbb6d7f](https://github.com/heygen-com/hyperframes/commit/93fbb6d7fd3e4c925927df994bf7cbab8d223d92), [#3235](https://github.com/heygen-com/hyperframes/pull/3235)). - **Registry:** Align notes reveal typing ([c69692464](https://github.com/heygen-com/hyperframes/commit/c69692464ea42d5d4c4ff878f60e0642f25e419e), [#3234](https://github.com/heygen-com/hyperframes/pull/3234)). ## Internal - **Studio:** Lift the effect row out of the FX section file ([2f97fc2b8](https://github.com/heygen-com/hyperframes/commit/2f97fc2b89c67725a03b70f95e2510e0bc90b3a3), [#3182](https://github.com/heygen-com/hyperframes/pull/3182)). - **Studio:** Lift the carve out of the FX section file ([c327740c7](https://github.com/heygen-com/hyperframes/commit/c327740c79e2cb448a26cc1b848c45d4b3ecd7ed), [#3181](https://github.com/heygen-com/hyperframes/pull/3181)). - **Audio:** The review's cleanup list, and the design record behind the rack ([fd4d41153](https://github.com/heygen-com/hyperframes/commit/fd4d41153c76f25f50feb4f4c3b380787cbfb136), [#3176](https://github.com/heygen-com/hyperframes/pull/3176)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.107...v0.7.108). Studio can now edit and style rich text directly in the preview, including mixed selections and partial character ranges. Feedback prompts now appear after renders, while playback, capture, and editing fixes improve reliability. ## Features - **Studio:** Show every colour of a mixed selection in the swatch ([896bc336a](https://github.com/heygen-com/hyperframes/commit/896bc336a2eb058fa7cd21e6686b3c6a23879d28), [#3144](https://github.com/heygen-com/hyperframes/pull/3144)). - **Studio:** Edit and style text in the preview ([4cc46f5f9](https://github.com/heygen-com/hyperframes/commit/4cc46f5f9f6ba063bcebcc663a9b04c008f119d4), [#3143](https://github.com/heygen-com/hyperframes/pull/3143)). - **Studio:** Apply a style to a run of characters ([cb73c8dc2](https://github.com/heygen-com/hyperframes/commit/cb73c8dc2e0d9c6b911044de0e0d7fb5fbb49752), [#3142](https://github.com/heygen-com/hyperframes/pull/3142)). - **Core:** Sanitize rich text on the way into a composition ([636dc042a](https://github.com/heygen-com/hyperframes/commit/636dc042a7b773d9038b6bea589b4118051764c5), [#3141](https://github.com/heygen-com/hyperframes/pull/3141)). - **Studio:** Ask for feedback when a render ends, not on a session counter ([20d915938](https://github.com/heygen-com/hyperframes/commit/20d915938b33301d78402407d167841f8da3e9a5), [#3205](https://github.com/heygen-com/hyperframes/pull/3205)). ## Fixes - **Skills:** Stop embedded-captions shipping author-only paths; dedupe slideshow ([d3a4e9037](https://github.com/heygen-com/hyperframes/commit/d3a4e9037096c0234c58b44fcbcc7df87ba8958b), [#3225](https://github.com/heygen-com/hyperframes/pull/3225)). - **Capture:** Fall back from networkidle2 to domcontentloaded on nav timeout ([7860d1943](https://github.com/heygen-com/hyperframes/commit/7860d19433e45507c9544f6e6b542e7e572e47c9), [#3224](https://github.com/heygen-com/hyperframes/pull/3224)). - **Studio:** Match the write receipt in dev, so an edit stops reloading the preview ([fceb37655](https://github.com/heygen-com/hyperframes/commit/fceb376551093be69e918786532d88eb63a2d07c), [#3206](https://github.com/heygen-com/hyperframes/pull/3206)). - **Producer:** Mix audio into a container that can record encoder delay ([dc4383113](https://github.com/heygen-com/hyperframes/commit/dc4383113cfad3677d016b457cce8b4d41ff7b9c), [#3200](https://github.com/heygen-com/hyperframes/pull/3200)). - **Core:** Key the preview volume envelope to the clip, not the timeline ([eee9b26fb](https://github.com/heygen-com/hyperframes/commit/eee9b26fb78a6bf3a80e81d6077f7fd93aeca150), [#3198](https://github.com/heygen-com/hyperframes/pull/3198)). - **Core:** Stop a graded plate painting through an inactive clip ([91f14958c](https://github.com/heygen-com/hyperframes/commit/91f14958cc449f95a412993373077a6f53fabc1a), [#3196](https://github.com/heygen-com/hyperframes/pull/3196)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.106...v0.7.107). Catalog pages now play the real composition in the player instead of a recorded video. The sidebar groups 358 items under eight sections you can open. Every item with variables gets a panel you can change. The preview rebuilds with your values, a link keeps them, and the install command copies with them attached. Reinstalling an item no longer overwrites your edits. ## Fixes - **Studio:** Read the rotate property when measuring an element's angle ([3e5be0e8c](https://github.com/heygen-com/hyperframes/commit/3e5be0e8c30812e45d302f24dc5aecd3d135ef04), [#3163](https://github.com/heygen-com/hyperframes/pull/3163)). ## Docs & Examples - **Changelog:** Weekly digest 2026-08-03–2026-08-10 ([945988d61](https://github.com/heygen-com/hyperframes/commit/945988d61facb36ae1a7e27519db2acb3c84fced), [#3154](https://github.com/heygen-com/hyperframes/pull/3154)). - **Studio:** Write down what Studio does not tell you about itself ([604f02b31](https://github.com/heygen-com/hyperframes/commit/604f02b31a4e5950262066cf39adbc01d65bbade), [#3165](https://github.com/heygen-com/hyperframes/pull/3165)). ## Catalog - **Catalog:** Put the variables panel back, on payloads ([1ae2067b8](https://github.com/heygen-com/hyperframes/commit/1ae2067b8da54555889f09f05b826fc791c5ec4c), [#3199](https://github.com/heygen-com/hyperframes/pull/3199)). - **Catalog:** Group the sidebar by what you came to make ([ce18acf07](https://github.com/heygen-com/hyperframes/commit/ce18acf075d56e44ebe6382edffc8f3baa96c2c8), [#3194](https://github.com/heygen-com/hyperframes/pull/3194)). - **CLI:** Keep your edits when you reinstall a catalog item ([0c33b2dc7](https://github.com/heygen-com/hyperframes/commit/0c33b2dc7ab711ebd9c124ce44535d36d47da748), [#3193](https://github.com/heygen-com/hyperframes/pull/3193)). - **Registry:** Bring back the video-primitive moves ([9734578e6](https://github.com/heygen-com/hyperframes/commit/9734578e6065d6dec8993c4e30a978263c3eaa8b), [#3169](https://github.com/heygen-com/hyperframes/pull/3169)). - **Catalog:** Keep the recorded video for canvas drawElement previews ([0f7630519](https://github.com/heygen-com/hyperframes/commit/0f763051910f9b38ada67a0f3699a0a75f00b22a), [#3171](https://github.com/heygen-com/hyperframes/pull/3171)). - **Catalog:** Resolve assets a script loads by name ([470f802d9](https://github.com/heygen-com/hyperframes/commit/470f802d9f387b0a6e77e25d0b199bf9c16e68f0), [#3170](https://github.com/heygen-com/hyperframes/pull/3170)). - **Catalog:** Play the real composition on catalog pages ([536165b6e](https://github.com/heygen-com/hyperframes/commit/536165b6ef1ad2fbd5d799a4a43fe0f31495852f), [#3168](https://github.com/heygen-com/hyperframes/pull/3168)). - **Media Use:** Derive provider cost tier from the registry ([6de29f5be](https://github.com/heygen-com/hyperframes/commit/6de29f5beabf29545c1c70e97530d4cf24542c5b), [#3155](https://github.com/heygen-com/hyperframes/pull/3155)). ## Internal - Regenerate the skills manifest ([0156b5688](https://github.com/heygen-com/hyperframes/commit/0156b5688da70690770ec8dd5253482d0b82c7df), [#3203](https://github.com/heygen-com/hyperframes/pull/3203)). ## Other Changes - **Studio:** Format AGENTS.md ([a58ebf610](https://github.com/heygen-com/hyperframes/commit/a58ebf610bc56dcced7505c706e031cc8fd36d3c), [#3167](https://github.com/heygen-com/hyperframes/pull/3167)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.105...v0.7.106). Catalog search now understands meaning, not just keywords, and runs entirely on your machine. Finding the right block no longer depends on guessing its name. ## Features - **Scripts:** Fail a branch that deletes files main still ships ([f28bc80a1](https://github.com/heygen-com/hyperframes/commit/f28bc80a1d9c238ecaf36d8a5fee13933a3824fb), [#3150](https://github.com/heygen-com/hyperframes/pull/3150)). - **Scripts:** Typecheck the scripts directory ([79dff2051](https://github.com/heygen-com/hyperframes/commit/79dff2051699c9bae28088eb795c4cbebff6dde1), [#3149](https://github.com/heygen-com/hyperframes/pull/3149)). ## Fixes - **Producer,engine:** Stop mislabelling capture mode, and name the silent drawElement refusals ([33ac86fd3](https://github.com/heygen-com/hyperframes/commit/33ac86fd3842f5f40cc66033fd8ad06d0c495c44), [#3151](https://github.com/heygen-com/hyperframes/pull/3151)). - **CLI:** Follow every redirect a host may answer with ([db3de4c1b](https://github.com/heygen-com/hyperframes/commit/db3de4c1bf2fa8e093aeb26c67f79e352ef5af89), [#3148](https://github.com/heygen-com/hyperframes/pull/3148)). ## Catalog - **CLI:** Search the catalog by meaning, on this machine ([68205dbbc](https://github.com/heygen-com/hyperframes/commit/68205dbbc159412209663ede7732629b4f50bcf1), [#3089](https://github.com/heygen-com/hyperframes/pull/3089)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.104...v0.7.105). Selecting and moving elements in Studio's canvas now behaves the way it looks. Multi-selection sticks, a dragged group lands where you dropped it, a resized element keeps its size, and editing no longer flashes the preview. ## Fixes - **Studio:** Canvas selection, drag and resize correctness ([17ac986bf](https://github.com/heygen-com/hyperframes/commit/17ac986bfe0fffbbc8aac2a68b9e9814f561b562), [#3146](https://github.com/heygen-com/hyperframes/pull/3146)). - **Studio:** Stop a Studio edit from reloading the preview ([bea32b8aa](https://github.com/heygen-com/hyperframes/commit/bea32b8aae5bd9008c5fbe453a17a8a4588365ba), [#3137](https://github.com/heygen-com/hyperframes/pull/3137)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.103...v0.7.104). Long renders use the faster parallel capture path again. A gate added in 0.7.101 had switched it off for most installs, making renders slower. ## Features - **Core,cli:** Ship the DE parallel router fleet-wide — remove the canary gate ([19defeabf](https://github.com/heygen-com/hyperframes/commit/19defeabfe8fa47747d1d8bc087a84d69a09cb59)). ## Fixes - **Core:** Retry bpm-detective import after transient failure ([b4bd67040](https://github.com/heygen-com/hyperframes/commit/b4bd670402b82f25c1f5e0343336e21455284f80), [#2736](https://github.com/heygen-com/hyperframes/pull/2736)). ## Docs & Examples - Fix preview port in DOCS_GUIDELINES example ([9ec9e3a71](https://github.com/heygen-com/hyperframes/commit/9ec9e3a711531b3d45c30a1e2c3006df97dbe5cb), [#2903](https://github.com/heygen-com/hyperframes/pull/2903)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.102...v0.7.103). Text with spaces in it now reaches your composition intact. Before, a space could arrive as a plus sign, which garbled headlines and left some shapes drawing nothing at all. Compositions can also read their own variables the moment they start, because the runtime now loads before your scripts do. ## Fixes - Preserve the composition query and serve the runtime before author scripts ([b6ff3ab74](https://github.com/heygen-com/hyperframes/commit/b6ff3ab74556b844dd87b067cf850badc000bba7), [#3114](https://github.com/heygen-com/hyperframes/pull/3114)). - **CLI:** Stop skills update deleting skills the manifest never covered ([ed3ff98ce](https://github.com/heygen-com/hyperframes/commit/ed3ff98ce0443a232fc740a5821c601e67fd09cc), [#3118](https://github.com/heygen-com/hyperframes/pull/3118)). - **Core:** Draw the dim baseline only from tweens the guess still applies to ([cef0dde5f](https://github.com/heygen-com/hyperframes/commit/cef0dde5f2e9028349be0eef31e6ba2622405fe2)). - **Core:** Let a composition declare its caption colour states ([1e7799bfb](https://github.com/heygen-com/hyperframes/commit/1e7799bfbb08c30a55b01a262653f40a2bbeda8a)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.101...v0.7.102). Faster drawElement capture starts rolling out to a small slice of installs. Five in a hundred now use the parallel capture path for long renders. If a render ever has to fall back, that install turns it off and keeps it off. Set HF_DE_PARALLEL_ROUTER=false to opt out, or =true to opt in early. Studio also stops three editor crashes. ## Features - **Cli,core:** Ramp the default-on router through the canary ([4a2514232](https://github.com/heygen-com/hyperframes/commit/4a2514232b9f20ea4baa94510e79a42bae85e92f)). - **Producer:** Enable the parallel-DE router by default, behind a per-install circuit breaker ([c6df112ac](https://github.com/heygen-com/hyperframes/commit/c6df112ac1843e228a9d40bbcb6bad1752f53de5)). ## Fixes - **Studio:** Stop three crash-boundary trips in the editor ([d8a91fc34](https://github.com/heygen-com/hyperframes/commit/d8a91fc347df4def4a957609d1847ca3306eb867), [#3102](https://github.com/heygen-com/hyperframes/pull/3102)). - **CLI:** Keep a set-but-empty router env var breaker-managed (review) ([af535080a](https://github.com/heygen-com/hyperframes/commit/af535080a250bb150c0a6448517a075cd8076818)). ## Docs & Examples - **CLI:** Stop calling the router trial an opt-in in risk prose ([1033d0327](https://github.com/heygen-com/hyperframes/commit/1033d03271fb381be51fbc1103063cd8147a626b)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.100...v0.7.101). Components that another composition mounts now keep their own styles in the live preview. Some of them rendered unstyled before, even though the video they produced was correct. Screenshot captures on software rendering no longer accumulate earlier frames, and Studio keeps the preview alive in a tight window. ## Features - **Producer:** Sniff HTML payload before ffprobe in resolveMediaDuration ([8a11e9776](https://github.com/heygen-com/hyperframes/commit/8a11e9776d3c65c2512c595bbde3dfc5bb194f39)). ## Fixes - **Engine:** Stop SwiftShader ghosting in software screenshot captures ([b57dc13cb](https://github.com/heygen-com/hyperframes/commit/b57dc13cb6c8752c4f8f9426cfda2faf529136c2), [#3096](https://github.com/heygen-com/hyperframes/pull/3096)). - **Studio:** Resize an element whose scale is an instant hold ([a850e97f3](https://github.com/heygen-com/hyperframes/commit/a850e97f3d5a2cfcf183aec2cc2620020e8e1bf4), [#3092](https://github.com/heygen-com/hyperframes/pull/3092)). - **Core:** Stop dropping a mounted composition styles, and gate the divergence ([8d9db3df7](https://github.com/heygen-com/hyperframes/commit/8d9db3df731409d5aaed4ba0af70ea1c81ab40e4), [#3094](https://github.com/heygen-com/hyperframes/pull/3094)). - **Compiler:** Split font-family only on top-level commas ([172311e95](https://github.com/heygen-com/hyperframes/commit/172311e95e99b04cd2d76d43de9bbadd69c630ab), [#3067](https://github.com/heygen-com/hyperframes/pull/3067)). - **Studio:** Keep the preview alive when the window is tight ([d5cc1c9c6](https://github.com/heygen-com/hyperframes/commit/d5cc1c9c6249c27a63269288d8b7771656eb50db), [#3091](https://github.com/heygen-com/hyperframes/pull/3091)). - **CLI:** Refresh identity persistence classification ([7640adc5f](https://github.com/heygen-com/hyperframes/commit/7640adc5f2c39bd5d330aca3d0180ea2f67a793d)). - **Producer:** Classify JSON error bodies as non-media sources too ([349c066a8](https://github.com/heygen-com/hyperframes/commit/349c066a83c21046f888073776212348c2c5057b)). - **Producer:** Scope and harden the markup-payload sniff ([f3689c148](https://github.com/heygen-com/hyperframes/commit/f3689c148190b0c72d1b5296b2a5b740d8dd97d8)). ## Catalog - **Scripts:** Render template-only blocks in catalog previews ([218eff7d3](https://github.com/heygen-com/hyperframes/commit/218eff7d361487becf7e1d6fc0d85453ac199b5e), [#3098](https://github.com/heygen-com/hyperframes/pull/3098)). ## Internal - **Core:** Settle the four remaining preview-vs-render divergences ([57ec008cb](https://github.com/heygen-com/hyperframes/commit/57ec008cb295efb0a817840a1eadac53fbbf355e), [#3097](https://github.com/heygen-com/hyperframes/pull/3097)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.99...v0.7.100). Publishing now retries brief network failures during upload and tells you which step failed when it cannot recover. Long timeouts are not retried, and signed upload secrets stay out of error messages. ## Fixes - **CLI:** Harden publish retry behavior ([dd629697d](https://github.com/heygen-com/hyperframes/commit/dd629697d3356971e50132703b8a897c1a79bfdf)). - **CLI:** Recover transient publish failures ([f2d6ce324](https://github.com/heygen-com/hyperframes/commit/f2d6ce32459fc4c6be604a152e8707df03ce96e2)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.98...v0.7.99). Failed renders now record whether the parallel drawElement router was active. That state was on almost every successful render and almost no failed one, so a crash or hang looked the same as a render that never used the router. Nothing changes about how renders run. ## Fixes - **Producer:** Record routing state on the failure path ([a3d13e267](https://github.com/heygen-com/hyperframes/commit/a3d13e2673405dee68643003574d5b260c4d5d18)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.97...v0.7.98). Studio resizes now keep animated elements exactly where they were dropped. The saved GSAP scale and position match the frame shown during the gesture, preventing post-drop jumps. ## Fixes - **Studio:** Keep first, repeated, rotated, uniform, and per-axis animated resizes pinned to their drop point ([#3076](https://github.com/heygen-com/hyperframes/pull/3076)). - **Studio:** Measure stylesheet-sized and legacy elements from their real box instead of a 200px fallback ([#3076](https://github.com/heygen-com/hyperframes/pull/3076)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.96...v0.7.97). Canary rollouts now record why each install landed in or out of a cohort, on both the CLI and Studio. Before this, a forced override and an ordinary cohort roll looked identical, so cohort changes could not be explained. Telemetry events also say whether an install's anonymous id will survive to the next run. For everyday use the visible changes are a Studio fix for rooted timeline media in preview, cancelable thumbnail generation, and a large pass over the docs examples. ## Features - **Studio:** Emit the canary reason on Studio events too ([b3990ac78](https://github.com/heygen-com/hyperframes/commit/b3990ac789a40242b38eb740475811a03e701b2b)). - **Core,cli:** Emit the canary decision reason alongside the assignment ([076657a63](https://github.com/heygen-com/hyperframes/commit/076657a63994a911deba65cd4d54131d5997e1d1)). - **CLI:** Classify identity persistence on every telemetry event ([3b65321a2](https://github.com/heygen-com/hyperframes/commit/3b65321a204383582e3794ac19eca5d6f5eb3474), [#3065](https://github.com/heygen-com/hyperframes/pull/3065)). ## Fixes - **Studio:** Route rooted timeline media through preview ([88853f170](https://github.com/heygen-com/hyperframes/commit/88853f170f9ab6c7bfa515d59694d1f995ac0e7d), [#3061](https://github.com/heygen-com/hyperframes/pull/3061)). - **Scripts:** Import the changelog style note instead of duplicating it ([8cadefa5d](https://github.com/heygen-com/hyperframes/commit/8cadefa5d8d0f558863e35327b6059aeef76523c)). - **Scripts:** Restore the texture instruction phrase a core test pins ([ddbd547fa](https://github.com/heygen-com/hyperframes/commit/ddbd547fad33042c10172b4e3607ed0b12fd7a06)). - **Scripts:** The repo already knew which items have no poster ([74ba97b7e](https://github.com/heygen-com/hyperframes/commit/74ba97b7edcc6ed2166fe00ee280c8c05ff718fc)). - **Scripts:** Actually commit the delivery encode ([4f1ace9f4](https://github.com/heygen-com/hyperframes/commit/4f1ace9f476fe10e9b6da2a9e9bae0332f5ead1a)). - **Docs:** Stop claiming a poster image that was never generated ([a6217f5ed](https://github.com/heygen-com/hyperframes/commit/a6217f5ed145b28e80ecfb5744fd7d3537f1335e)). ## Performance - **Studio Server:** Coordinate cancelable thumbnail generation ([96861cbaf](https://github.com/heygen-com/hyperframes/commit/96861cbafc33e9e7b853b31c56610d50599cb96b), [#2720](https://github.com/heygen-com/hyperframes/pull/2720)). ## Docs & Examples - Add user interview booking links ([27d113e56](https://github.com/heygen-com/hyperframes/commit/27d113e56c8ebb52a805e73308ffbfe313f8cc32), [#3059](https://github.com/heygen-com/hyperframes/pull/3059)). - Correct composition offset rationale; pin nav fix; label-in-name ([fed2baf27](https://github.com/heygen-com/hyperframes/commit/fed2baf27882cda0e19ae0e972f7335a162c36eb)). - **Examples:** Stop the sound control from following the card's link ([83db94e75](https://github.com/heygen-com/hyperframes/commit/83db94e75e87271c86f8823e636b729c500cbac9)). - **Examples:** Reset control state on offscreen release; precise a11y labels ([f3d1d531d](https://github.com/heygen-com/hyperframes/commit/f3d1d531d138d69e7d347391e5f7a4b35fb599a3)). - Complete the media-start layer map + fix the third page ([c49fea2e0](https://github.com/heygen-com/hyperframes/commit/c49fea2e0c4caaa7c4329493cdd5112581addc06)). - **Examples:** Reduced-motion play starts both films; precise media-start layers ([630c8900f](https://github.com/heygen-com/hyperframes/commit/630c8900f5866d5cd51eb3da96293981e41fc971)). - **Studio:** Note the third arrow-key meaning after merging Timeline navigation ([b541245f1](https://github.com/heygen-com/hyperframes/commit/b541245f1a49b1c784797050c7ae81040115d946)). - **Examples:** Allow voluntary playback under reduced motion; a11y parity ([c9fd7465c](https://github.com/heygen-com/hyperframes/commit/c9fd7465c9b9d516b53241fee1f8ca78d18ba905)). - **Sdk:** Fix dispatch/can contract, second stale GSAP site, media-start layers ([8e658bd6c](https://github.com/heygen-com/hyperframes/commit/8e658bd6c932ee1b8c65f247f9767d75fbd56275)). - **Examples:** Intersection-gate the recreate pair too ([aa077e000](https://github.com/heygen-com/hyperframes/commit/aa077e000df94db2348fa6d744909a67706b09e1)). - **Examples:** Make hover-audio accessible, lazy-loaded, and guard-complete ([0467bc812](https://github.com/heygen-com/hyperframes/commit/0467bc812916259a53a3f08eb30fb8a35586ee19)). - Correct three source-contradiction findings from review ([0f6259d46](https://github.com/heygen-com/hyperframes/commit/0f6259d461cfb678d60ae7926d343fbe44aee925)). - **Theme:** Brand the Playground CTA + align the navbar logo ([b62c3fd65](https://github.com/heygen-com/hyperframes/commit/b62c3fd65617cb1d89c828e1f7460893d34a3216)). - **Nav:** Lift 30 Days above the update feeds in Explore ([c53c7efd1](https://github.com/heygen-com/hyperframes/commit/c53c7efd1ec1070251ecf1a25643f96d5b96e7a7)). - **Examples:** Fix silent recreate references (stale keys -\> new audio keys) ([4b1a526fa](https://github.com/heygen-com/hyperframes/commit/4b1a526facb128b98a33a2c8878761320bfea529)). - **Examples:** K3 promo now hover-to-hear with its audio version from X ([821189586](https://github.com/heygen-com/hyperframes/commit/821189586f19da6a67472ddfb952a63f0f1afc85)). - **Examples:** Replace two padded launch films + wire figma audio ([630c6c880](https://github.com/heygen-com/hyperframes/commit/630c6c880ddf164ca3dbad0a6979b0d943ec2691)). - **Examples:** More hover-audio + a 'Where HyperFrames plugs in' strip ([59a2ee31c](https://github.com/heygen-com/hyperframes/commit/59a2ee31c93818ce06c8575af4043948f0404a34)). - **Examples:** Hover-audio on six more grid films from the X launch archive ([e6bc8f139](https://github.com/heygen-com/hyperframes/commit/e6bc8f139c032d202d94fe2b4837b2e1b0f45ff8)). - **Examples:** Hover-to-hear on the four launch films that have audio masters ([fb6a82c50](https://github.com/heygen-com/hyperframes/commit/fb6a82c5052d5c801ecd6ec52d1ceadf4757e6a9)). - **30 Days:** Hover a card to hear the film's audio ([5361b9e10](https://github.com/heygen-com/hyperframes/commit/5361b9e10c80c787527ffa25a0db01002ddebbf0)). - **Examples:** Drop three dead source links (no such launch folder) ([8298bd439](https://github.com/heygen-com/hyperframes/commit/8298bd439092f67badef626987f385bb020a61dc)). - **Examples:** Bind reference video muted to state so unmute sticks ([407a5fd51](https://github.com/heygen-com/hyperframes/commit/407a5fd5139cda1dc10aae21aa52f6bc69c1e502)). - **Examples:** Sync the recreate pairs with a tap-to-unmute button ([bde03484a](https://github.com/heygen-com/hyperframes/commit/bde03484ae46345d4f10051a6db7155073e1eb76)). - **Examples:** Add 1:1 recreate-any-video comparison block ([98ae45e06](https://github.com/heygen-com/hyperframes/commit/98ae45e0661f120cedb8bda2d6002224db146924)). - 30 Days shows all thirty films, the real ones ([a46bc9d56](https://github.com/heygen-com/hyperframes/commit/a46bc9d565de76ad6e6dc5d35c6a9ff7d1e5cf76)). - Remove the Reference Project — nobody wants to be sent to GitHub ([b5509602f](https://github.com/heygen-com/hyperframes/commit/b5509602fa9f8ad9944c79b9f73f3a440357ecbf)). - 30 Days keeps its structure but borrows no videos ([06d2d6f24](https://github.com/heygen-com/hyperframes/commit/06d2d6f24c31b094198e4cd630d1f34c5df5dd2e)). - Examples shows 19 launch films grouped by what they prove, and 30 Days moves into Explore ([8483b51d4](https://github.com/heygen-com/hyperframes/commit/8483b51d4b7111710b8ac98befbd3c9ca07432cd)). - Light-theme videos on nine guides, plus two rewritten pages ([ad4c6a9b6](https://github.com/heygen-com/hyperframes/commit/ad4c6a9b6e0781e4253507ec4a179b83b3faee9b)). - Put the ten workflows in one place, and connect the two tracks ([f742084fa](https://github.com/heygen-com/hyperframes/commit/f742084fa85c1e2be1c0711c4467c48d4cd6f214)). - Name the two workflows the captions page covers ([c66961637](https://github.com/heygen-com/hyperframes/commit/c669616370db90f63ef4828e53db8a34e760406b)). - The examples gallery now tells you what it is ([18c0b8319](https://github.com/heygen-com/hyperframes/commit/18c0b8319d657d6b7578c6a34b8c183b5ff1865e)). - E_NO_GSAP_TIMELINE is not a missing feature ([d3331aad2](https://github.com/heygen-com/hyperframes/commit/d3331aad28ccb1f3ace49227e06d844e0c4ee58d)). - An Inspector map that matches the Inspector, and an example that can run ([9a659053d](https://github.com/heygen-com/hyperframes/commit/9a659053db3a3da95a4eece58f15e871ce9dc9d8)). - Four more the source contradicts, one of them mine ([af5ebf09c](https://github.com/heygen-com/hyperframes/commit/af5ebf09ce8bd15991da51bf83a9fe852e8dca29)). - Three things the source contradicts, found by reading the pages ([d01253771](https://github.com/heygen-com/hyperframes/commit/d01253771fa7f3eac4fa9126c7bedb9911e0be30)). - A compare example that works, and prose instead of a semicolon list ([1a22d6542](https://github.com/heygen-com/hyperframes/commit/1a22d6542a9a1492882cd11943b68e4a29522407)). - Three Studio shortcuts the page never mentioned ([f28b6d2bf](https://github.com/heygen-com/hyperframes/commit/f28b6d2bf73490cae7dd0403682064169951af5a)). - Write down the house narrator, and stop the videos sounding like two products ([bb7b0c899](https://github.com/heygen-com/hyperframes/commit/bb7b0c899f91bcfd1b4f36378bc750aa74e95976)). - Put the slideshow demo on the slideshow page ([199885b85](https://github.com/heygen-com/hyperframes/commit/199885b85edea981a3ce132fd09e3bcaac7ff316)). - Six pages get a real film instead of a six-second clip ([b4648e0e5](https://github.com/heygen-com/hyperframes/commit/b4648e0e5a45734970e3e905efcac4cf76d51057)). - Make the ten hardest-reading prompting pages readable ([8dba394d4](https://github.com/heygen-com/hyperframes/commit/8dba394d4dd52678cd49b68a3ec8fd8a921a1d6d)). - Stop serving render masters as if they were deliverables ([158d0fea1](https://github.com/heygen-com/hyperframes/commit/158d0fea1fa8e267f9e77aafc1f359ae37781beb)). - Draw the project model instead of describing it twice ([31366d724](https://github.com/heygen-com/hyperframes/commit/31366d724d83ff855c1a02edb2c37ff441a3648c)). - The last five blind guides now show the thing ([f595a7d68](https://github.com/heygen-com/hyperframes/commit/f595a7d68388c2e8842d3b8f5346273d0f9450b7)). - Move 19 anchor links onto the headings that now exist ([d16f6e69d](https://github.com/heygen-com/hyperframes/commit/d16f6e69d72c8582fac9577f57aaad158596b1e1)). - Make the two hardest-reading pages readable, and draw the two core concepts ([eb199bd15](https://github.com/heygen-com/hyperframes/commit/eb199bd1595f7774a16fb7baea12510a8d8a02d6)). - Four more guides show the thing instead of describing it ([8762887a5](https://github.com/heygen-com/hyperframes/commit/8762887a5b3773f460fa61e017d870f68f5d540a)). - Point two prompting links at headings that exist ([951c6ea45](https://github.com/heygen-com/hyperframes/commit/951c6ea45c1eddc377a40542a84acd40d1f472ef)). - Give every click-to-play video an audio track ([60f09dfcf](https://github.com/heygen-com/hyperframes/commit/60f09dfcfd3f8b18ac51e9d26f34e614969477e8)). - Keep the audio on the Huly launch film ([61cd3f1da](https://github.com/heygen-com/hyperframes/commit/61cd3f1da2afd8b59ee1a729c6653513a70e73bf)). - Show GSAP keyframes moving, and drop the weakest video on Examples ([ef9980948](https://github.com/heygen-com/hyperframes/commit/ef9980948206fa6c13f7c0c55e00f3f906c42a9f)). - Rewrite four pages that told instead of showed ([72d4016f5](https://github.com/heygen-com/hyperframes/commit/72d4016f5f25fb71c856f0d6fd9e52e91686c83a)). - Show the work on Media effects, Product launch, and Examples ([84b5160b6](https://github.com/heygen-com/hyperframes/commit/84b5160b663c8bf758c4134fdffceba4982ae374)). ## Catalog - **Catalog:** Explicit section ownership, no body-sniffing heuristic ([d373c3f4a](https://github.com/heygen-com/hyperframes/commit/d373c3f4a09f59b349586c0885be47388844a658)). - **Catalog:** Restore the required Related topics section on generated pages ([6ff6601dd](https://github.com/heygen-com/hyperframes/commit/6ff6601dd03026f55be3d974222ac5c4ff890a8e)). - Quiet fallow complexity on the catalog generator's grown functions ([b33974cf7](https://github.com/heygen-com/hyperframes/commit/b33974cf72270fded5b9caf2244f26acf6b3c7e6)). - **Scripts:** Drop the catalog poster instead of guarding it, and cut the encode pass down ([592301248](https://github.com/heygen-com/hyperframes/commit/592301248ea93336189aa723b0b24971f7173ae0)). - **Docs:** The poster guard again, for the catalog index this time ([663f3e832](https://github.com/heygen-com/hyperframes/commit/663f3e8325c192324520113fa1819b3e1fcdd07a)). - Rebuild the catalog generator, and show what background removal and HDR do ([2a7d9bd0a](https://github.com/heygen-com/hyperframes/commit/2a7d9bd0ad114a7aadf65f1f65b8556f8da6d61d)). ## Internal - Regenerate skills manifest after the media-use voice rule ([00a4f454e](https://github.com/heygen-com/hyperframes/commit/00a4f454ee75d4c434ee034f6dc62e5e924783fb)). ## Other Changes - **Scripts:** Oxfmt the nav-suppression assertion ([aa928f399](https://github.com/heygen-com/hyperframes/commit/aa928f399a571fa9b61c67a931db4a97dfb1875d)). - Format the house-narrator note in tts.md, resync manifest ([08fadcef4](https://github.com/heygen-com/hyperframes/commit/08fadcef41d1128ed2493978ea665874306f60c6)). - Format changelog-weekly.ts ([fffc56c33](https://github.com/heygen-com/hyperframes/commit/fffc56c33b96c0fa9e3db15cb0f4799d0cbd6e5b)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.94...v0.7.96). Studio now previews rooted timeline media through the correct asset route, preventing missing clips in nested project layouts. Thumbnail work is cancelable under rapid edits, while refreshed docs make key workflows easier to learn. ## Fixes - **Studio:** Route rooted timeline media through preview ([88853f170](https://github.com/heygen-com/hyperframes/commit/88853f170f9ab6c7bfa515d59694d1f995ac0e7d), [#3061](https://github.com/heygen-com/hyperframes/pull/3061)). ## Performance - **Studio Server:** Coordinate cancelable thumbnail generation ([96861cbaf](https://github.com/heygen-com/hyperframes/commit/96861cbafc33e9e7b853b31c56610d50599cb96b), [#2720](https://github.com/heygen-com/hyperframes/pull/2720)). ## Docs & Examples - Rebuild the docs and catalog with real films, accessible playback, clearer workflow maps, and source-checked SDK guidance ([b793e42ef](https://github.com/heygen-com/hyperframes/commit/b793e42efdf6d674f98da0a63fcc80947ba1751b), [#3010](https://github.com/heygen-com/hyperframes/pull/3010)). - Add user interview booking links ([27d113e56](https://github.com/heygen-com/hyperframes/commit/27d113e56c8ebb52a805e73308ffbfe313f8cc32), [#3059](https://github.com/heygen-com/hyperframes/pull/3059)). ## Internal - **CLI:** Classify identity persistence on every telemetry event ([3b65321a2](https://github.com/heygen-com/hyperframes/commit/3b65321a204383582e3794ac19eca5d6f5eb3474), [#3065](https://github.com/heygen-com/hyperframes/pull/3065)). [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.94...v0.7.95). The CLI now supports explicit RFC 8628 device authorization for attended SSH and remote-terminal sessions, so users can sign in without copying API keys or exposing a loopback callback. The flow is fail-closed, validates minted tokens before atomic persistence, and leaves the existing browser login unchanged. ## Features - **CLI:** Add device authorization login ([b9233525b](https://github.com/heygen-com/hyperframes/commit/b9233525b2e02ec9329445ab2602ebd557033daf), [#2836](https://github.com/heygen-com/hyperframes/pull/2836)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.93...v0.7.94). Studio now preserves and recovers external file edits instead of silently overwriting them, while logical timeline navigation makes keyboard control more predictable. The engine and producer also harden remote downloads, ffprobe invocation, telemetry path redaction, GPU verification, and cross-frame-rate BeginFrame timing. ## Features - **Studio:** Model logical timeline navigation ([0f1333c80](https://github.com/heygen-com/hyperframes/commit/0f1333c80d3c18eddf8af69110168cc910d14fec), [#2712](https://github.com/heygen-com/hyperframes/pull/2712)) - **Studio:** Add external conflict recovery UI ([8a0dccfc7](https://github.com/heygen-com/hyperframes/commit/8a0dccfc72224d993efdb0ae8d95fc0e020327d4), [#2992](https://github.com/heygen-com/hyperframes/pull/2992)) - **Studio:** Coordinate external file changes ([a99caad58](https://github.com/heygen-com/hyperframes/commit/a99caad581496f2ad8e132b750ced73be8cf3e51), [#2991](https://github.com/heygen-com/hyperframes/pull/2991)) - **Studio:** Preserve external file conflicts ([b30a23402](https://github.com/heygen-com/hyperframes/commit/b30a23402e2db19b43cb0283e1553048746fb8bb), [#2990](https://github.com/heygen-com/hyperframes/pull/2990)) ## Fixes - **Engine:** Keep BeginFrame time monotonic across frame rates ([b390b71bd](https://github.com/heygen-com/hyperframes/commit/b390b71bde982ffbf55c9ec93f1491d99011bfc3), [#3011](https://github.com/heygen-com/hyperframes/pull/3011)) - **Engine:** Validate remote download integrity ([bbdfee116](https://github.com/heygen-com/hyperframes/commit/bbdfee1166c45e348ef76d2e384a0ad2243ac847), [#2938](https://github.com/heygen-com/hyperframes/pull/2938)) - **Studio:** Reconcile external edits before reload ([ebdd1893c](https://github.com/heygen-com/hyperframes/commit/ebdd1893c4a0d86b984fb627fed0283a981d2713), [#2993](https://github.com/heygen-com/hyperframes/pull/2993)) - **Studio:** Drain pending edits before reload ([471313854](https://github.com/heygen-com/hyperframes/commit/47131385445c0f8ee4203f8d6ff4f5600d8c8b2e), [#2989](https://github.com/heygen-com/hyperframes/pull/2989)) - **Studio:** Make inspector commits transactional ([552419c52](https://github.com/heygen-com/hyperframes/commit/552419c52d16fa5a5e8d15a9263bc5f41e596360), [#2987](https://github.com/heygen-com/hyperframes/pull/2987)) - **Engine:** Distinguish probe failure from a genuinely absent GPU ([f69c4a0e3](https://github.com/heygen-com/hyperframes/commit/f69c4a0e3aa8feb1110b52d538f8ca127481c95d)) - **Studio:** Respect GSAP transform ownership ([cf45c9845](https://github.com/heygen-com/hyperframes/commit/cf45c984549bc41ed4debc99d5283d2a60108cbb), [#2986](https://github.com/heygen-com/hyperframes/pull/2986)) - **Parsers:** Preserve safe GSAP helper defaults ([532f06158](https://github.com/heygen-com/hyperframes/commit/532f06158b3a930b85a289ab0608d720311cd5a1), [#2985](https://github.com/heygen-com/hyperframes/pull/2985)) - **Engine:** Warn once per process about unverified hardware GPU ([6703ea7e0](https://github.com/heygen-com/hyperframes/commit/6703ea7e04701b490c5fb563db4f532fbc8aec89)) - **Engine:** Verify explicit browserGpuMode=hardware instead of trusting it ([131780fe9](https://github.com/heygen-com/hyperframes/commit/131780fe9627ee7fb17cb871ef6a144a6ef02735)) - **Core,producer,skills:** Unicode paths, non-Error rejections, shell callers ([1664fe6ad](https://github.com/heygen-com/hyperframes/commit/1664fe6ad773c76e0dc7314e7f2eb439cd3687d6)) - **Producer:** Drop the ReDoS-prone literal-argv regex for a linear scan ([6c5403f7c](https://github.com/heygen-com/hyperframes/commit/6c5403f7cd5e5b21f301b88d6d9f84451751ba15)) - **Skills,producer:** Terminate ffprobe options in shipped skill scripts ([255cf9291](https://github.com/heygen-com/hyperframes/commit/255cf929150977fa57dc1cadde2e9cf626f5c20c)) - **Core,producer:** Redact bare relative paths and the known input path ([e79ab3ab3](https://github.com/heygen-com/hyperframes/commit/e79ab3ab31a5f789f8c998430f2b58cb95973f07)) - **Core:** Redact any path in telemetry, not an allowlist of roots ([d04569e37](https://github.com/heygen-com/hyperframes/commit/d04569e37f1c63967ce7373557ded4e4f150e7de)) - **Producer,studio Server:** Finish the ffprobe argv sweep, pin the contract ([d0dbf11ef](https://github.com/heygen-com/hyperframes/commit/d0dbf11ef53dd7ca535ed40a10e8f2dad4f12c4d)) - **Cli,core,lint,producer:** Terminate ffprobe options at every call site ([47564ab94](https://github.com/heygen-com/hyperframes/commit/47564ab94cc4bac5de6715169939353c211af689)) ## Docs & Examples - **Studio:** Document timeline keyboard navigation ([7bf425b7a](https://github.com/heygen-com/hyperframes/commit/7bf425b7a90c5a3c8154c66025261ff9e52c8c72), [#3031](https://github.com/heygen-com/hyperframes/pull/3031)) ## Internal - **Studio:** Relax large fixture timeout ([bce2140ff](https://github.com/heygen-com/hyperframes/commit/bce2140ff208e16f83ee0854bca8baf85ad7216e), [#3040](https://github.com/heygen-com/hyperframes/pull/3040)) - **Studio:** Extract live timeline clock ([19b8a1f3c](https://github.com/heygen-com/hyperframes/commit/19b8a1f3c5a55c30b5aa367c9054ca1b31552536), [#2711](https://github.com/heygen-com/hyperframes/pull/2711)) - **Studio:** Pin text-field Backspace routing ([cde5bae4c](https://github.com/heygen-com/hyperframes/commit/cde5bae4c5a6afa167faf827ab1073e66964cd35), [#2988](https://github.com/heygen-com/hyperframes/pull/2988)) - **Producer:** Treat an all-literal probe argv as taking no input ([c81f68b59](https://github.com/heygen-com/hyperframes/commit/c81f68b59225d0acd34acbc419e408125fa51e36)) - **Producer:** Discover ffprobe callers and pin terminator position ([91a7cb1f5](https://github.com/heygen-com/hyperframes/commit/91a7cb1f5b7f9a4bb539384fb50645a8feab3f29)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.92...v0.7.93). Percentage-based canary rollouts land, so a change can ship to a stable slice of installs instead of all-or-nothing — decided locally and offline, with two inert calibration canaries validating the mechanism before anything depends on it. Also 29 new registry theme items across three families, a faster virtualized Studio timeline, and sub-composition sibling asset paths now resolving everywhere. ## Features - **Cli,studio:** Telemetry opt-out is canary opt-out ([4f464dc42](https://github.com/heygen-com/hyperframes/commit/4f464dc424c648c1210fbfd0675ff774ee0037d4)) - **CLI:** Bucket canaries on a machine-lineage seed, not the telemetry id ([8dd20ac2e](https://github.com/heygen-com/hyperframes/commit/8dd20ac2e8f8c082c69ac9a4be5f3df8b7690b2c)) - **Core:** Inert calibration canaries to validate the mechanism in the wild ([a7bb061af](https://github.com/heygen-com/hyperframes/commit/a7bb061afeaec9f39acc04314a673a2b2ded5fc2)) - **Core:** Emit canary assignments as PostHog flag properties ([a1682e122](https://github.com/heygen-com/hyperframes/commit/a1682e12282c537f7692a3d0b8541263cde7bd50)) - **Studio:** Browser canary binding + leaf subpath imports ([71ee156da](https://github.com/heygen-com/hyperframes/commit/71ee156dacd16e236590ccb5b1d936d0c414a771)) - **CLI:** Attach canary cohort to telemetry, harden canary tests, document ([df1521a0b](https://github.com/heygen-com/hyperframes/commit/df1521a0b6fd64885f1c16d5c075c005755a7dbd)) - **Core:** Percentage-based canary rollouts ([3aea78668](https://github.com/heygen-com/hyperframes/commit/3aea78668734772f9cc83bac81e2495cae2140b0)) ## Fixes - **Studio:** Scope timeline ease focus lifecycle ([0a70ba671](https://github.com/heygen-com/hyperframes/commit/0a70ba67179f00bd149aed42421ed77f56436199), [#2710](https://github.com/heygen-com/hyperframes/pull/2710)) - **Studio:** Scope timeline context targets ([423c5ffad](https://github.com/heygen-com/hyperframes/commit/423c5ffadb47d1a97a65c4ef0f7229097e14ad0e), [#2708](https://github.com/heygen-com/hyperframes/pull/2708)) - **Core:** Resolve sub-composition sibling asset paths everywhere ([4e7fcf7f2](https://github.com/heygen-com/hyperframes/commit/4e7fcf7f2a5af2922ecb6855f08ed879018b8521), [#2994](https://github.com/heygen-com/hyperframes/pull/2994)) - **Studio:** Resolve sibling asset paths in sub-composition previews ([cbd8a77d1](https://github.com/heygen-com/hyperframes/commit/cbd8a77d162be059126698f7e20680c5430dd3d5), [#2983](https://github.com/heygen-com/hyperframes/pull/2983)) - **CLI:** Stop bare --frame-check from swallowing the next flag ([70cc4f59a](https://github.com/heygen-com/hyperframes/commit/70cc4f59a1165f1a132a7bf96d2c8f98ceef2d1a), [#2966](https://github.com/heygen-com/hyperframes/pull/2966)) - **Producer:** Correct short VFR frame coverage ([127eb1937](https://github.com/heygen-com/hyperframes/commit/127eb193715a79252ac77969a95d431a89fee4fe), [#2936](https://github.com/heygen-com/hyperframes/pull/2936)) - **Producer:** Reject asset media type mismatches ([9792c3295](https://github.com/heygen-com/hyperframes/commit/9792c32950133cc7a6aa55361f682bb431db5439), [#2937](https://github.com/heygen-com/hyperframes/pull/2937)) - **CLI:** Stop dropping queued telemetry when process.exit races the final flush ([bc6dbc7e2](https://github.com/heygen-com/hyperframes/commit/bc6dbc7e216353a67700230164e81c3f6076f559), [#2970](https://github.com/heygen-com/hyperframes/pull/2970)) - **Cli,studio:** Adopt the CLI's canary decisions in a launched Studio ([98b23a885](https://github.com/heygen-com/hyperframes/commit/98b23a8850dfe01a9f12957eef25a240294cbe21)) - **CLI:** Keep the canary bucket seed inside the config dir ([9f2b892a7](https://github.com/heygen-com/hyperframes/commit/9f2b892a7137dc14b3e58a0773ba55384562d875)) ## Performance - **Studio:** Stabilize virtualized beat gestures ([677fd31e9](https://github.com/heygen-com/hyperframes/commit/677fd31e9a7bf52475236abbfb662f528862d795), [#2709](https://github.com/heygen-com/hyperframes/pull/2709)) - **Studio:** Virtualize timeline marquee selection ([91d14744a](https://github.com/heygen-com/hyperframes/commit/91d14744a09fefab92363af78065097327a092ce), [#2707](https://github.com/heygen-com/hyperframes/pull/2707)) - **Studio:** Stabilize virtualized timeline drops ([bb5c60387](https://github.com/heygen-com/hyperframes/commit/bb5c603870a0ef2b0defe485c57e4b7d084d5b90), [#2706](https://github.com/heygen-com/hyperframes/pull/2706)) - **Studio:** Stabilize virtualized keyframe retiming ([44bee4c3c](https://github.com/heygen-com/hyperframes/commit/44bee4c3cf208c1f2757beca2e2aa38e96aebc3c), [#2705](https://github.com/heygen-com/hyperframes/pull/2705)) - **Studio:** Stabilize virtualized clip gestures ([f52398cee](https://github.com/heygen-com/hyperframes/commit/f52398ceeff388bab66a8ce2fd8db96c786e8f69), [#2704](https://github.com/heygen-com/hyperframes/pull/2704)) ## Docs & Examples - Add the shared page components and the Reference Project ([edfe66a95](https://github.com/heygen-com/hyperframes/commit/edfe66a95375234f0d261a09a46a29424d040318), [#2977](https://github.com/heygen-com/hyperframes/pull/2977)) - **Changelog:** Weekly digest 2026-07-27–2026-08-03 ([1d0d4d893](https://github.com/heygen-com/hyperframes/commit/1d0d4d8939d358edb7cdb017733b7641d5eec42c), [#2969](https://github.com/heygen-com/hyperframes/pull/2969)) - **Canary:** Connect canary rollouts to the telemetry docs ([54534d53c](https://github.com/heygen-com/hyperframes/commit/54534d53c257fda8fa0f14d4d91fd58724f6b6a6)) - **Canary:** Calibration check 2 reflects the breaker rollover ([0d98de023](https://github.com/heygen-com/hyperframes/commit/0d98de023f5d38b0f7767c7f4defc6a85bff217a)) - **Canary:** Keep contributor docs vendor- and access-neutral ([18d6dd2d7](https://github.com/heygen-com/hyperframes/commit/18d6dd2d7ff44994d24d360edd0d7981967fd29d)) - **Canary:** Note override contamination as check 3's innocent explanation ([10536e847](https://github.com/heygen-com/hyperframes/commit/10536e8473b31eef5b35a2977673bcae35be83c5)) - **Canary:** Make calibration check 4 compare per-surface values ([c43b4e2d9](https://github.com/heygen-com/hyperframes/commit/c43b4e2d951c229935f65a4e224ef8a66c43dd12)) - **Canary:** Link the calibration dashboard from the checks section ([00b576297](https://github.com/heygen-com/hyperframes/commit/00b57629746d3006d8cf3d8fc760b7e0e84c4f77)) ## Catalog - **Registry:** Animate mk card offsets with transforms, not top/left ([ce7d75dba](https://github.com/heygen-com/hyperframes/commit/ce7d75dbaa29e3920216f6e848e68b4b6257602e)) - **Registry:** Add beat-freeze-cut ([d3d286a1a](https://github.com/heygen-com/hyperframes/commit/d3d286a1a53ed52d78ab3994195e83d2188ec163)) - **Registry:** Connector geometry, family accent, and demo legibility ([35231e964](https://github.com/heygen-com/hyperframes/commit/35231e964daab6d6b73d8dc3917f9f95f5944157)) - **Registry:** Mk / yt / hw theme families — 29 items ([f252ec6d9](https://github.com/heygen-com/hyperframes/commit/f252ec6d9942486b4bbdbbdae05f25e683c4ab26)) - **Registry:** Add hw-scribble-transition — scribble transition ([264f2f140](https://github.com/heygen-com/hyperframes/commit/264f2f14016f88bf4fcf6a450031e5975dabc97e)) - **Registry:** Add hw-frame — sketched frame ([4467a8d61](https://github.com/heygen-com/hyperframes/commit/4467a8d61cb591a798ad17fef0bb53cf8ebf76d6)) - **Registry:** Add hw-path-text — text along a path ([662402337](https://github.com/heygen-com/hyperframes/commit/66240233748e1e3c10958882565af656891456a5)) - **Registry:** Add hw-pipeline — hand-drawn flowchart ([b77a16384](https://github.com/heygen-com/hyperframes/commit/b77a163845c600741163b6541fcc64d07a0cb5e5)) - **Registry:** Add hw-underline — squiggle marks ([b0f6cc7b9](https://github.com/heygen-com/hyperframes/commit/b0f6cc7b9b528142890600760f508889939d828a)) - **Registry:** Add hw-box-label — hand-drawn box label ([0ba613e57](https://github.com/heygen-com/hyperframes/commit/0ba613e571f746a6fc65699f86fa8ede842f4d42)) - **Registry:** Add hw-title — handwritten title ([fae656076](https://github.com/heygen-com/hyperframes/commit/fae6560766193f8c894e39238bdbd16e10422dc1)) - **Registry:** Add hw-text-cloud — speech bubble ([3beed70e5](https://github.com/heygen-com/hyperframes/commit/3beed70e56fdbeaa4d2cd4cc96a06ac984a08b23)) - **Registry:** Add hw-callout-circle — scribble callout circle ([f1a506eb4](https://github.com/heygen-com/hyperframes/commit/f1a506eb4b8c03ceb751288d36c100654225e3ee)) - **Registry:** Add hw-arrow — hand-drawn arrow ([95a2ae0a4](https://github.com/heygen-com/hyperframes/commit/95a2ae0a498534ff48f6eac17a0b44eae2c907c6)) - **Registry:** Add hw-boil — hand-drawn boil ([d4f1ad0c3](https://github.com/heygen-com/hyperframes/commit/d4f1ad0c37e56e0aa6651b4d041598c2b438cdb7)) - **Registry:** Add yt-doc-lower-third — documentary lower third ([e9d279282](https://github.com/heygen-com/hyperframes/commit/e9d279282487e5c3a64013be3e08f590e7046ae2)) - **Registry:** Add mk-emphasis-type — background emphasis type ([cc98f5fd6](https://github.com/heygen-com/hyperframes/commit/cc98f5fd6d84101708134d58d10c25aa28c2841f)) - **Registry:** Add yt-screen-warp — on-screen display effect ([1ead7a768](https://github.com/heygen-com/hyperframes/commit/1ead7a768ae88edaa7ecacfda4f868e4e1073cbf)) - **Registry:** Add mk-logo-sting — outline logo sting ([44cd52025](https://github.com/heygen-com/hyperframes/commit/44cd5202533f176593b37404a85f51997877438f)) - **Registry:** Add yt-vertical-fill — vertical media filler ([ba774de05](https://github.com/heygen-com/hyperframes/commit/ba774de05ccb6bac895b96d6abace85a29caffcc)) - **Registry:** Add mk-line-graph — minimal line graph ([4ce35b7cb](https://github.com/heygen-com/hyperframes/commit/4ce35b7cba683d7f2ffe8ad4e3f03e853f6425c3)) - **Registry:** Add yt-circle-pointer — pointer circle + countdown ([c4425bfb4](https://github.com/heygen-com/hyperframes/commit/c4425bfb40e28caf4f4e1e42715331f0c8a50929)) - **Registry:** Add mk-progress-stat — count-up stat card ([2039bf5f4](https://github.com/heygen-com/hyperframes/commit/2039bf5f44285c26cfe4f1f46c62215dcf5d8337)) - **Registry:** Add yt-feather-highlight — feathered spotlight ([4e0a7dda8](https://github.com/heygen-com/hyperframes/commit/4e0a7dda8859aa9d89be05d364144a78dd96bbfa)) - **Registry:** Add mk-usage-arc — hairline arc gauge ([63c6cd02e](https://github.com/heygen-com/hyperframes/commit/63c6cd02ead1c8bd93cde2a354a84cd9ff3b6a1f)) - **Registry:** Add yt-logo-intro — logo intro sequence ([894861235](https://github.com/heygen-com/hyperframes/commit/8948612359947e5b721af764725ddae9cda3a020)) - **Registry:** Add mk-cta-button — pill cta button ([eed6adafb](https://github.com/heygen-com/hyperframes/commit/eed6adafb0a98705ba42a8b65802c8946d7028bc)) - **Registry:** Add yt-prism-title — chromatic fringe title ([9036e3c76](https://github.com/heygen-com/hyperframes/commit/9036e3c76caef82f582f53effe5b6888c07d8560)) - **Registry:** Add mk-clone-wall-transition — text clone wall transition ([fc40c882e](https://github.com/heygen-com/hyperframes/commit/fc40c882e1db9c8924f21b34335308bb875f76c2)) - **Registry:** Add yt-avatar-pip — circle pip window ([d924630f2](https://github.com/heygen-com/hyperframes/commit/d924630f23b0075bc69a3497426323c83c351969)) - **Registry:** Add mk-placeholder-grid — rounded media grid ([ac8d34fb9](https://github.com/heygen-com/hyperframes/commit/ac8d34fb9db1442e6d4ea1e7f0bbdf9c91df2b79)) - **Registry:** Add yt-comment-card — comment cards ([a4ef52fcb](https://github.com/heygen-com/hyperframes/commit/a4ef52fcb044b99c8547c336ccdfb7aa0d94b2bc)) - **Registry:** Add mk-callout-highlight — word-sweep highlight ([9be7a6415](https://github.com/heygen-com/hyperframes/commit/9be7a6415c7847690a3216f958ae834100ccfcbf)) - **Registry:** Add yt-lcd-background — scanline board background ([a7f83f6fc](https://github.com/heygen-com/hyperframes/commit/a7f83f6fc6f0767049b8308837c602cd179d7f7f)) - **Registry:** Add mk-specs-list — specs checklist ([3e4a4042e](https://github.com/heygen-com/hyperframes/commit/3e4a4042e550e176689233bc33c6db631c5daad5)) - **Registry:** Add yt-camera-move — camera punch-in ([ea5e5e5bb](https://github.com/heygen-com/hyperframes/commit/ea5e5e5bb5f755a3eb4bcded663d03d0cf858521)) - **Registry:** Add mk-pill-callout — capsule callout chip ([95125834e](https://github.com/heygen-com/hyperframes/commit/95125834e8b3bd810e9f16eb65f85455887384ec)) - **Registry:** Add mk-background — minimal procedural gradient background ([61c82135f](https://github.com/heygen-com/hyperframes/commit/61c82135f3677ae61a963d587b5aaec134d1656b)) ## Internal - **Release:** Fold the unpublished v0.7.91 artifacts into v0.7.92 ([e70ffad93](https://github.com/heygen-com/hyperframes/commit/e70ffad93987296ac8b351e85dd4872fdc2da285)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.90...v0.7.92). Prevents short compositions from decoding entire long video sources and exhausting producer memory through HDR raw-frame scratch and filesystem page cache. Extraction now follows the playable timeline, reserves bounded scratch capacity across concurrent renders, and cleans resources on every exit path. ## Fixes - **Producer:** Bound video extraction to the composition's playable interval instead of the source's full duration, including negative timeline starts, non-zero media offsets, loops, held tails, and distributed planning ([#2955](https://github.com/heygen-com/hyperframes/pull/2955)) - **Producer:** Limit concurrent HDR raw-frame scratch against the configured ceiling, cgroup memory, and free disk; release reservations and temporary resources after success, cancellation, and partial failure ([#2955](https://github.com/heygen-com/hyperframes/pull/2955)) - **Engine:** Resolve the true final playable frame for held-tail media, including streams with non-zero or negative timestamp bases, without sharing cancellation state across renders ([#2955](https://github.com/heygen-com/hyperframes/pull/2955)) - **Producer API:** Add `outputDynamicRange: auto | hdr | sdr` while temporarily accepting the legacy `hdrMode` field for rolling migrations ([#2955](https://github.com/heygen-com/hyperframes/pull/2955)) ## Rollout - Upgrade the HyperFrames producer fleet to v0.7.90 before deploying callers that send `outputDynamicRange`; the legacy `hdrMode` field remains accepted only to bridge the rolling deployment. ## Catalog - **Contributing:** Refresh the catalog contribution guide ([#2954](https://github.com/heygen-com/hyperframes/pull/2954)) ## Internal - **Release:** Publish stable packages only from a reviewed release PR's exact merge commit, with fail-closed checkout/tag verification and safe same-commit retries ([#2959](https://github.com/heygen-com/hyperframes/pull/2959)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.89...v0.7.90). Stops generated waveform, thumbnail, and transcode caches from retriggering Studio project reloads or appearing as project files. Real source edits still invalidate previews normally. ## Fixes - **CLI:** Ignore generated cache directories in the recursive project watcher, preventing preview refresh loops during cache generation ([#2952](https://github.com/heygen-com/hyperframes/pull/2952)) - **Studio:** Keep generated caches out of Storyboard signatures and the project file tree while retaining invalidation for real source edits ([#2952](https://github.com/heygen-com/hyperframes/pull/2952)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.88...v0.7.89). Hardens the media probe against malformed and hostile input — ffprobe invocation, AAC duration refinement, frame-rate parsing and PNG inspection — and adds a color grading chapter to the Prompt Guide. ## Fixes - **Engine:** Harden the ffprobe invocation — reject stdin input, decode stdout correctly, and bound its size ([9e275423e](https://github.com/heygen-com/hyperframes/commit/9e275423e2f44e37d73d5b7372a3ead3ba95cf75)) - **Engine:** Make the AAC duration refinement safe, cancellable and LC-only, allowlisting AAC-LC rather than denying HE-AAC ([242a42f6c](https://github.com/heygen-com/hyperframes/commit/242a42f6c94d5cc780477ed94c7938448639f67f), [361fd4992](https://github.com/heygen-com/hyperframes/commit/361fd4992636188e484e719a149f452b87c98b2b)) - **Engine:** Reject non-finite, negative and malformed frame rates, and strict-parse rationals ([19dc83bc2](https://github.com/heygen-com/hyperframes/commit/19dc83bc2beebebc136da776b2718594f41a469d), [4d563fa75](https://github.com/heygen-com/hyperframes/commit/4d563fa7523f0ef2e630d0da214b3b667bf7c982)) - **Engine:** Fix PNG probing — merge color per field, detect alpha correctly, defer the parse, stop the chunk walk at cICP, and use native crc32 ([62b96c227](https://github.com/heygen-com/hyperframes/commit/62b96c227e7934ec8be4f7a806a99d7cd8decef0), [2af3f4d0e](https://github.com/heygen-com/hyperframes/commit/2af3f4d0ed9fac2fadc1266bcadde04e6513d800)) - **Engine:** Keep the PNG CRC working on Node 22.0 and 22.1 ([96a6e8bd9](https://github.com/heygen-com/hyperframes/commit/96a6e8bd95410695340b2671b1dc167f14f49999)) ## Docs & Examples - **Prompting:** New [Color grading and film effects](https://hyperframes.heygen.com/prompting/color-grading) chapter — ten A/B renders, each with the prompt that produced it and the payload it compiled to, covering tonal work, hue keys, print and analogue looks, and why the source matters more than the payload ([#2911](https://github.com/heygen-com/hyperframes/pull/2911)) - **Guides:** Two new sections in [Color Grading](https://hyperframes.heygen.com/guides/color-grading) — *Animating a Grade* (which properties tween, and which do not) and *Limiting a Grade to Part of the Frame* (the layer technique for region-limited grades, previously listed as unsupported with no workaround) ([#2911](https://github.com/heygen-com/hyperframes/pull/2911)) ## Full changelog https://github.com/heygen-com/hyperframes/compare/v0.7.87...v0.7.88 Website capture now exits predictably: runtime stages share a live budget, blocked or degraded pages fail fast, and vision/Lottie failures retain accurate, sanitized diagnostics. This release also enables Studio timeline virtualization by default and includes dense-keyframe and preview-resource fixes. ## Features - **Studio:** Enable timeline virtualization by default ([c6925e471](https://github.com/heygen-com/hyperframes/commit/c6925e471a1ab4df911f5b4aab08740084c5412c), [#2926](https://github.com/heygen-com/hyperframes/pull/2926)) ## Fixes - **CLI:** Preserve capture failure diagnostics ([9ae000726](https://github.com/heygen-com/hyperframes/commit/9ae00072614f35785e4a1d7bad48787451462a91)) - **CLI:** Omit skipped Lottie previews ([ac9458888](https://github.com/heygen-com/hyperframes/commit/ac9458888c7a6e05aa6b4d5d74063b5859782d02)) - **CLI:** Narrow blocked page titles ([b38e90740](https://github.com/heygen-com/hyperframes/commit/b38e90740407ac50fd83e124b8211d3efc7282be)) - **CLI:** Report bounded vision failures ([dfc60797a](https://github.com/heygen-com/hyperframes/commit/dfc60797a2adeddef120f4c800f06b30cc155117)) - **CLI:** Reject blocked website captures ([22e3cca96](https://github.com/heygen-com/hyperframes/commit/22e3cca966e4f3c5dfe0f8b716dec80259206300)) - **CLI:** Validate capture budget milliseconds ([d3607606e](https://github.com/heygen-com/hyperframes/commit/d3607606eeced5c826923f536d0d33d0cd799fb9)) - **CLI:** Propagate live capture budget ([49091e614](https://github.com/heygen-com/hyperframes/commit/49091e6142c98b9fcab967c88e210df601a118d9)) - **CLI:** Bound capture runtime stages ([765a5ae83](https://github.com/heygen-com/hyperframes/commit/765a5ae83f31b01b65426f34a3c80a47330456a0)) - **Studio:** Keep dense keyframes readable ([723d3381c](https://github.com/heygen-com/hyperframes/commit/723d3381c4cabb3c238d883adf4fca487ead9df6), [#2925](https://github.com/heygen-com/hyperframes/pull/2925)) - **Studio:** Release retained preview resources ([fbfffb1aa](https://github.com/heygen-com/hyperframes/commit/fbfffb1aa785fe48aa94a3570bd04c9128a80d18), [#2924](https://github.com/heygen-com/hyperframes/pull/2924)) - Align local WebGPU capture behavior ([3a6b7f061](https://github.com/heygen-com/hyperframes/commit/3a6b7f06127102be719aa4d91f1a8b40b299a0c6), [#2907](https://github.com/heygen-com/hyperframes/pull/2907)) - **CLI:** Move install-state into the config dir so deleting it is a full reset ([dae1b63d4](https://github.com/heygen-com/hyperframes/commit/dae1b63d4a59fc6dff7fe19861d90efce9dc6948)) ## Docs & Examples - **Skills:** Gate blocked website captures ([30f383074](https://github.com/heygen-com/hyperframes/commit/30f38307411908237201ed227f5350aa18ba156e)) - Add THU-MAIC as HyperFrames adopter ([1738b5a11](https://github.com/heygen-com/hyperframes/commit/1738b5a11f7eee1c130b29b3c489f79473e7aec2), [#2761](https://github.com/heygen-com/hyperframes/pull/2761)) - Unlist the Send-to guide from the docs nav (tool-served, not web-searched) ([a3c8f897f](https://github.com/heygen-com/hyperframes/commit/a3c8f897f2cdb4231521a752d6b320c8edb77a45), [#2918](https://github.com/heygen-com/hyperframes/pull/2918)) ## Internal - **CLI:** Cover bounded capture stages ([45aead84c](https://github.com/heygen-com/hyperframes/commit/45aead84c9467398cd18bc0878d6f4943daf65fd)) - **Producer:** Share plan execution builder ([1d636f603](https://github.com/heygen-com/hyperframes/commit/1d636f603c6502e1d1421b0d04e67e47765f835f), [#2906](https://github.com/heygen-com/hyperframes/pull/2906)) - **Lint:** Consolidate asset-src placeholder skip into a shared predicate ([5a6e4b1a8](https://github.com/heygen-com/hyperframes/commit/5a6e4b1a8f4176250b5c92b63845399fcfe7f256), [#2894](https://github.com/heygen-com/hyperframes/pull/2894)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.86...v0.7.87). Ships the **Prompt Guide** — a novice-to-capstone arc across `/prompting`, where every prompt sits beside the unedited render it produced and each chapter cuts its own region out of one 62-second capstone film. The guide now opens with the intent interview the agent runs before building, and records its answers to `BRIEF.md` so a later session resumes without re-asking. Also lands fixes from running `product-launch-video` end to end, plus lint and transition-duration corrections. ## Features - **Studio:** Track timeline performance ([10b517dab](https://github.com/heygen-com/hyperframes/commit/10b517dab9515988cb82100c3975b53a47da1f35), [#2898](https://github.com/heygen-com/hyperframes/pull/2898)) ## Fixes - **Docs:** Correct mediabunny GitHub link in CREDITS.md ([1481fe1ed](https://github.com/heygen-com/hyperframes/commit/1481fe1ed936ee2aac7220061f258155c274bfb8), [#2897](https://github.com/heygen-com/hyperframes/pull/2897)) - **Skills:** Extend transition roots without explicit duration ([14ced9051](https://github.com/heygen-com/hyperframes/commit/14ced9051795b32db75a479ac2580eef3c5df85c), [#2873](https://github.com/heygen-com/hyperframes/pull/2873)) - **Lint:** Don't flag unresolved templating-token asset srcs as missing ([6c185f252](https://github.com/heygen-com/hyperframes/commit/6c185f252f38a5a1f1dc9e23f17ef98f63ea18c7), [#2893](https://github.com/heygen-com/hyperframes/pull/2893)) - **Capture,audio,docs:** Defects found running product-launch-video end to end ([e0dc255e8](https://github.com/heygen-com/hyperframes/commit/e0dc255e8a4108833ac727d54f4b039cca397042), [#2892](https://github.com/heygen-com/hyperframes/pull/2892)) ## Docs & Examples - **Prompt Guide:** Restructured into a seven-level arc, novice to capstone, with the nav regrouped to match ([#2109](https://github.com/heygen-com/hyperframes/pull/2109)) - **Prompt Guide:** Every embedded render is now reproducible from the prompt printed beside it — 18 verified examples, plus validated renders across the chapters - **Prompting:** The eight-rule motion grammar, each rule shown as an A/B render built twice from the same composition ([8fb1482e7](https://github.com/heygen-com/hyperframes/commit/8fb1482e7ff59a7007e5f6e40d38a7a02ede3adb), [cdac57c07](https://github.com/heygen-com/hyperframes/commit/cdac57c0757cee22db67e9595b29809cfabd056c), [dd4fd9cef](https://github.com/heygen-com/hyperframes/commit/dd4fd9cefaa1f5816a8a2ff404e2152af542b25d)) - **Prompting:** New capstone chapter dissecting *The Timeline* — one continuous camera across nine regions, rendered twice from one template ([a90e343e8](https://github.com/heygen-com/hyperframes/commit/a90e343e8e4f7c15424cb2b33030a2522509218d)) - **Prompting:** New chapters for storyboards, porting from Remotion, and recreating a reference from text alone ([630ad482c](https://github.com/heygen-com/hyperframes/commit/630ad482c627c850dcc4dade7b4aef5a189f3bb5), [ead4341c7](https://github.com/heygen-com/hyperframes/commit/ead4341c7c7d57a78c944d7e3fbac1ed545d9cfd)) - **Prompting:** "Avoiding the slideshow" — the continuity contract, framed as one method among several ([4f6fb8fc1](https://github.com/heygen-com/hyperframes/commit/4f6fb8fc16c566bd8f473820a559a16c15b1fbeb)) - **Prompting:** Documented the intent interview, run-shape questions, and `BRIEF.md` ([2efbfd475](https://github.com/heygen-com/hyperframes/commit/2efbfd47583f75534b194d90ec0f689278b370f5), [#2872](https://github.com/heygen-com/hyperframes/pull/2872)) - **Prompting:** Appendix of traps the validation runs exposed — layout waivers and the contrast-gate side effect, `fromTo` back-render, round-linecap dots ([4d89bd426](https://github.com/heygen-com/hyperframes/commit/4d89bd426150e054cf42e3c05d6bc75585bcffbb), [fda3d9a65](https://github.com/heygen-com/hyperframes/commit/fda3d9a65af9ef02c21bf4c632857ff0f801f925)) - **Prompting:** `frame.md` is the design spec; `design.md` references removed throughout ([4260f12b0](https://github.com/heygen-com/hyperframes/commit/4260f12b01a7bbcd9b5841e5f29cbba02fe0604f)) - **Skills:** Text corrections found while validating the guide's prompts ([e7a6cb0da](https://github.com/heygen-com/hyperframes/commit/e7a6cb0da622e2086afb27fe1ecb6144af2734c4)) Every prompt-guide commit is listed in the full changelog below. ## Catalog - **Prompting:** Fix misquoted caption-color phrase in captions-catalog bridge ([16224fd2f](https://github.com/heygen-com/hyperframes/commit/16224fd2fbd1b591e88e4029352d682dcf8b734d)) ## Internal - Format prompt-guide-expansion plan (fixes Format CI) ([b71ce85c2](https://github.com/heygen-com/hyperframes/commit/b71ce85c2cd830d16af28299adf2df6938ab306a)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.84...v0.7.85). Makes the composition element-count signal trustworthy fleet-wide: every render now reports its live DOM size (not just the ~17% that get a probe session), and the static fallback scan no longer inflates counts from markup written inside inline scripts. Observational only — no routing behaviour changes. ## Features - **Engine:** Measure live DOM size on every render, not just probed ones ([d74afc7b7](https://github.com/heygen-com/hyperframes/commit/d74afc7b7dc620036439b398c6bca823fb3911b4)) ## Fixes - **Producer:** Strip script bodies to a fixed point, not one pass ([042d5aaba](https://github.com/heygen-com/hyperframes/commit/042d5aaba6d10c1f0497db9c86f6f71f9e69368c)) - **Producer:** Unbias the static element count and stop zeroing failures ([c61a24b51](https://github.com/heygen-com/hyperframes/commit/c61a24b510b022fb7956caa089ee093f87053f96)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.83...v0.7.84). Lays the measurement groundwork for opening the drawElement fast path to short compositions: renders now report their live DOM element count and whether the short-comp routing band would apply, while routing itself stays unchanged behind a default-off flag. Also carries a batch of Windows and browser-resolution fixes, audio-mix corrections, and transparent GIF output. ## Features - **Producer:** Surface init telemetry from parallel workers — the band's missing motion axis ([23854f7c6](https://github.com/heygen-com/hyperframes/commit/23854f7c6a328ef1f6913160af345c9fda70b036)) - **Producer:** Open the DE single-worker inversion to short comps under an element ceiling ([0749cd9ff](https://github.com/heygen-com/hyperframes/commit/0749cd9ff83ad41c72c7dc6be1b224e9bc27731b)) - **CLI:** Roll circuit-breaker state over across config wipes ([dfe92b2aa](https://github.com/heygen-com/hyperframes/commit/dfe92b2aabcea8d934e4696f9dfe063307fccdf7)) ## Fixes - **Studio:** Stop popovers and tooltips clipping at panel edges ([f81ac7457](https://github.com/heygen-com/hyperframes/commit/f81ac745726d3195d07b79d7de9c31357ce8ab43), [#2890](https://github.com/heygen-com/hyperframes/pull/2890)) - **Producer:** Fail closed when no live element count is available ([4dbf0d90b](https://github.com/heygen-com/hyperframes/commit/4dbf0d90b05de2c3db7c983641c8785fd9988148)) - **Producer:** Count live DOM, not source markup, for the short-band gate ([def98f79c](https://github.com/heygen-com/hyperframes/commit/def98f79c3fa746e805c6fbe9ee51392c267ea1e)) - **Producer:** Keep large local fonts file-backed ([87791fd01](https://github.com/heygen-com/hyperframes/commit/87791fd01d93ee82226bf09d98a4dfe339c42307), [#2864](https://github.com/heygen-com/hyperframes/pull/2864)) - Exclude hidden audio from render mix ([b7160f69b](https://github.com/heygen-com/hyperframes/commit/b7160f69bba87254f8d33853df21a8be862605e1), [#2870](https://github.com/heygen-com/hyperframes/pull/2870)) - **Parsers:** Validate Windows FFmpeg discovery candidates ([4ad1cf455](https://github.com/heygen-com/hyperframes/commit/4ad1cf4551b724e7d54f82f86b233ef734545250), [#2871](https://github.com/heygen-com/hyperframes/pull/2871)) - Preserve plateaus in sampled audio automation ([04e0ccce4](https://github.com/heygen-com/hyperframes/commit/04e0ccce429c0c7c579cd06db09e7bad8fb550f3), [#2863](https://github.com/heygen-com/hyperframes/pull/2863)) - **CLI:** Select host-compatible cached browser ([85f0c9d35](https://github.com/heygen-com/hyperframes/commit/85f0c9d3546b1973dfba884fe6d2a7a8188d4ad3), [#2861](https://github.com/heygen-com/hyperframes/pull/2861)) - **CLI:** Honor check navigation timeout ([fdc593289](https://github.com/heygen-com/hyperframes/commit/fdc5932897ea3ecf778d520da77e6f6d493017d5), [#2860](https://github.com/heygen-com/hyperframes/pull/2860)) - **CLI:** Simplify nextInstallState's dead hadFired branch (review nit) ([ec76985f4](https://github.com/heygen-com/hyperframes/commit/ec76985f4072469762388739f16b1c6904e84519)) - **Producer:** Address R2 review findings — element undercount and kill-switch attribution ([7bb9e3cbf](https://github.com/heygen-com/hyperframes/commit/7bb9e3cbf920e04d01854a839d01619cb3615ab4)) - **Render:** Preserve transparency in GIF output ([6cfb05e38](https://github.com/heygen-com/hyperframes/commit/6cfb05e38bcb0ad02fa848500b462f0193a639b1), [#2327](https://github.com/heygen-com/hyperframes/pull/2327)) - **Studio:** Resolve Chrome on Windows ([d8d626537](https://github.com/heygen-com/hyperframes/commit/d8d626537bf6a830711f38e24cc8756bc26f8d48), [#2878](https://github.com/heygen-com/hyperframes/pull/2878)) ## Docs & Examples - **Product Launch Video:** Use real screenshots for site showcases ([860954d71](https://github.com/heygen-com/hyperframes/commit/860954d71c15dcd7d47ce9d8bda55009010f08f7), [#2881](https://github.com/heygen-com/hyperframes/pull/2881)) - **Product Launch Video:** Catch motion jumps at frame cuts ([5466bcecc](https://github.com/heygen-com/hyperframes/commit/5466bceccef70a3663f5a92bc567455fd018f050), [#2880](https://github.com/heygen-com/hyperframes/pull/2880)) - **Audio:** Avoid weak music openings in short launch videos ([30900c346](https://github.com/heygen-com/hyperframes/commit/30900c3465f457bf65f07ed4b4b55c384286bd20), [#2882](https://github.com/heygen-com/hyperframes/pull/2882)) - **Skills:** Name the media-treatment policy targets instead of alluding to them ([6cab53a68](https://github.com/heygen-com/hyperframes/commit/6cab53a681bf159ffe34f66506a8004e38213fae), [#2879](https://github.com/heygen-com/hyperframes/pull/2879)) ## Internal - **Studio:** Split ease mode controls out of EaseCurveSection ([e0b190947](https://github.com/heygen-com/hyperframes/commit/e0b19094758044b6e6b9e57d8a13e19d738c6952)) - **Studio:** Remove fully rolled-out studio feature flags ([cef3b86c9](https://github.com/heygen-com/hyperframes/commit/cef3b86c95cb257be7c61ac3bdc4dd6dc9692e11), [#2889](https://github.com/heygen-com/hyperframes/pull/2889)) - **Producer:** Make the short-comp band baseline-first and its attribution decisive ([e9de2fa14](https://github.com/heygen-com/hyperframes/commit/e9de2fa14f61f503287c9d87ec0487c165ecbcba)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.82...v0.7.83). Studio exports now preserve the selected orientation-aware resolution, including 4K, instead of silently falling back to the composition's native canvas size. Browser startup also honors explicit HyperFrames browser-path environment overrides and retries transient launch failures without hanging preview requests. ## Fixes - **Studio:** Honor selected render resolution ([f1655b930](https://github.com/heygen-com/hyperframes/commit/f1655b9302dc870c1e2ee24f19fd23897c767b42), [#2876](https://github.com/heygen-com/hyperframes/pull/2876)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.81...v0.7.82). HyperFrames now retries transient Google Fonts CSS and font-file failures during distributed planning without misclassifying them as deterministic project errors. Retries remain tightly bounded, respect cancellation and `Retry-After` within a shared budget, and surface exhaustion as `FONT_FETCH_UNAVAILABLE` for orchestration-level recovery. ## Fixes - **Producer:** Retry transient deterministic font fetches ([20f4f8f49](https://github.com/heygen-com/hyperframes/commit/20f4f8f49c19181adfb4194f1965ee00845219f9), [#2865](https://github.com/heygen-com/hyperframes/pull/2865)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.80...v0.7.81). HyperFrames now renders scene-local video timing correctly across sequential nested templates and removes vulnerable runtime dependency paths. Studio also gains exact bulk easing for merged keyframes, atomic keyframe-cache refreshes, and smoother optimistic ease-mode changes. ## Features - **Studio:** Bulk-edit easing for merged keyframes ([10d45def0](https://github.com/heygen-com/hyperframes/commit/10d45def058248d0d59d1448beef6a6ee91ddeba)) ## Fixes - **Studio:** Keep hidden state on expanded sub-composition rows ([5dad52370](https://github.com/heygen-com/hyperframes/commit/5dad52370f77a9a0618827279b8a4dcd86868456)) - **Studio:** Open the path node menu on arc waypoints ([adb7de535](https://github.com/heygen-com/hyperframes/commit/adb7de5358d7ed6feeb41c55e6152ed7758bf1b5)) - **Studio:** Switch keyframe ease modes optimistically ([659e22656](https://github.com/heygen-com/hyperframes/commit/659e22656e51aef54d079b3822fa40086d93726b)) - **Studio:** Publish keyframe cache refresh atomically ([6b11d3743](https://github.com/heygen-com/hyperframes/commit/6b11d3743339c13424073fca63791d941d3fbbf6)) - **Studio:** Target colliding keyframes exactly ([7482c22d8](https://github.com/heygen-com/hyperframes/commit/7482c22d821c0a46b48cb17421c4df73014dbbd6), [#2692](https://github.com/heygen-com/hyperframes/pull/2692)) - **Core:** Preserve scene-local video timing across sequential nested templates ([9bbb6d50a](https://github.com/heygen-com/hyperframes/commit/9bbb6d50a02e128fcdab9ae20d33649b65406788), [#2859](https://github.com/heygen-com/hyperframes/pull/2859)) - **Security:** Remove vulnerable runtime dependency paths ([13ac9e390](https://github.com/heygen-com/hyperframes/commit/13ac9e390585e75b80f5efd46393531315f0be2c)) ## Internal - **Studio:** Split bulk easing helpers ([23ab104af](https://github.com/heygen-com/hyperframes/commit/23ab104aff7a90de6d41aa7af2fb425314015d1d)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.79...v0.7.80). Studio editing is now more exact and predictable: timeline, motion-path, and playhead keyframe operations stay scoped to the intended element; nested-composition timing preserves its host rows; and color, shortcuts, ruler, and accessibility interactions are more reliable. This release also adds a narrow caption-zone layout waiver, makes CLI telemetry opt-out durable, and recognizes the renamed Codex image-generation feature flag. ## Features - **Check:** Add data-layout-allow-caption-zone waiver ([3a7950fd6](https://github.com/heygen-com/hyperframes/commit/3a7950fd63b501788f39f1fd44c12fc317139d79), [#2853](https://github.com/heygen-com/hyperframes/pull/2853)) ## Fixes - **Media Use:** Accept renamed codex image_generation feature flag ([02c57609a](https://github.com/heygen-com/hyperframes/commit/02c57609ab2919792c5f4442b9eb08d729ddf544)) - **Studio:** Give the motion path and the fallbacks a one-element target ([1f3fd2800](https://github.com/heygen-com/hyperframes/commit/1f3fd2800cd2e4df9e8a2c2b81ea11ed5b799630)) - **Studio:** Author every new tween against one element ([3d9243606](https://github.com/heygen-com/hyperframes/commit/3d924360667a15745d85dc060689d913b5dcc5d7)) - **Studio:** Scope lane ids per timeline and stop inventing a track row ([ba0d6406d](https://github.com/heygen-com/hyperframes/commit/ba0d6406d23d11e12305ba79834a69ae672b8432)) - **Studio:** Never re-author a target the DOM proved is not unique ([f04cdb79c](https://github.com/heygen-com/hyperframes/commit/f04cdb79c5f1475fa7d6048036a4e0af354a60a2)) - **Studio:** Label undo history with the track display row ([477916cbe](https://github.com/heygen-com/hyperframes/commit/477916cbe25dd6dd1877c09df3d826cd60b609e5)) - **Studio:** Target one element when adding a keyframe at the playhead ([fd5555be7](https://github.com/heygen-com/hyperframes/commit/fd5555be758450d73335dd3f89c70329aac8ee35)) - **Studio:** Announce real track numbers and point aria-controls at the lanes ([1faa0cbda](https://github.com/heygen-com/hyperframes/commit/1faa0cbdadc71abdea220d8705682c0a18e499bb)) - **Studio:** Resolve a panel edit through the lane groups it can see ([be3451aae](https://github.com/heygen-com/hyperframes/commit/be3451aae43779d47cd593e12bdf8fb2f4da2889)) - **CLI:** Make telemetry opt-out durable ([880021411](https://github.com/heygen-com/hyperframes/commit/880021411d785e7470d3150868dee916245ffce8), [#2852](https://github.com/heygen-com/hyperframes/pull/2852)) - **Studio:** Lane every tween and attribute tweens to their real target ([59a818e80](https://github.com/heygen-com/hyperframes/commit/59a818e80a3ef561c5cb4a25ea30128cd18458b2)) - **Studio:** Keep every host row on the drill path, not just the top ([acad7b268](https://github.com/heygen-com/hyperframes/commit/acad7b268ea1e9e4b35e15265ac6c8a178e43865)) - **Studio:** Keep the host row when drilling into a sub-composition ([d48440a9b](https://github.com/heygen-com/hyperframes/commit/d48440a9bacb83aef8007b3667e78e02a2481d8f)) - **Studio:** Expand sub-comp children against their resolved parent host ([12546985f](https://github.com/heygen-com/hyperframes/commit/12546985f588df8cf984d241dd27e3417edb3320)) - **Studio:** Compute keyframe percentages in the tween's own time frame ([3f0c20f63](https://github.com/heygen-com/hyperframes/commit/3f0c20f633e9ac064e45df838e03d4412ddafda8)) - **Studio:** Accept 3-digit hex shorthand in the colour field ([86f633f98](https://github.com/heygen-com/hyperframes/commit/86f633f98573a79f88422c8a24a69bd55d718c3d)) - **Studio:** Drop aria-modal from the non-modal shortcuts popup ([7f0cadcbb](https://github.com/heygen-com/hyperframes/commit/7f0cadcbb1f24df12bee091d5156e3cbf67f51e4)) - **Studio:** Dismiss the shortcuts panel on escape and outside press ([aa2811642](https://github.com/heygen-com/hyperframes/commit/aa2811642fecabdef58ce45329b115993d1e43fb)) - **Studio:** Let the colour hex field be edited and commit it on outside press ([55614033e](https://github.com/heygen-com/hyperframes/commit/55614033e501b5e55bfd3a2099396b74443652cd)) - **Studio:** Grow the ease target only where the segment has room ([b82506363](https://github.com/heygen-com/hyperframes/commit/b82506363f08bf9b2efbd37dce94c0eaec71844e)) - **Studio:** Meet the 24x24 pointer target minimum on toolbar and lane controls ([4e74eefdd](https://github.com/heygen-com/hyperframes/commit/4e74eefddd4c1e38f7c97662cc52fae6d2a01698)) - **Studio:** Seek ruler clicks to the pressed position and round retime percentages ([69020699d](https://github.com/heygen-com/hyperframes/commit/69020699dfb595194c8bf85117525045439bcdb2)) ## Internal - Regenerate skills-manifest for media-use change ([b6da5bd6b](https://github.com/heygen-com/hyperframes/commit/b6da5bd6b3e95e391ad340c9e11e162f647b8a4b)) ## Other Changes - **Studio:** Keep StudioRightPanel under the 600 line cap ([bb24d0037](https://github.com/heygen-com/hyperframes/commit/bb24d0037a96d14a63eeb4c6e2a983f4971f331d)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.78...v0.7.79). Windows renders on a hardware GPU now use drawElement fast capture, which was previously macOS-only — roughly 2× faster capture on the same safety net (per-frame self-verification with automatic screenshot fallback), covering about 78% of Windows renders. Render telemetry also gains GPU-backend and laptop power-state fields so performance can be diagnosed per machine rather than per platform. ## Features - **Engine:** drawElement fast capture now runs on Windows with a hardware GPU (previously macOS-only); Linux/software-GPU hosts are unchanged ([cb30157eb](https://github.com/heygen-com/hyperframes/commit/cb30157ebbbcfedd3606b9d566d565f4412de45e)) - **Producer:** The parallel-drawElement router (still opt-in via `HF_DE_PARALLEL_ROUTER`) now engages from 700 frames instead of 2000, and renders report `on_battery` / `low_power_mode` ([3da31e399](https://github.com/heygen-com/hyperframes/commit/3da31e399b498d0ab6b1ce32b008b8b10cdcd2dc)) ## Fixes - **CLI:** Persist authoring skill in hyperframes.json for durable render attribution ([d287e5244](https://github.com/heygen-com/hyperframes/commit/d287e5244c1e6d9051642f94f368ef7a1e26bd34), [#2762](https://github.com/heygen-com/hyperframes/pull/2762)) - **Producer:** Installs with telemetry disabled no longer spawn `pmset` while building render events, and the parallel-drawElement router no longer pins a worker count on renders where its streaming path can't run (compositions over the streaming duration cap) ([b99c80389](https://github.com/heygen-com/hyperframes/commit/b99c8038983e2c0bb2545e8eaf5fcd7c4f9abe03)) - **Engine:** `gpu_renderer` telemetry reports a low-cardinality backend/vendor bucket rather than the raw driver string, and is attached to failed renders as well as successful ones ([4520cd240](https://github.com/heygen-com/hyperframes/commit/4520cd240b9a4ac20f77e6a2e8204866e549fd35)) - **Producer:** Validate distributed video metadata ([557d82b6a](https://github.com/heygen-com/hyperframes/commit/557d82b6a9547e403598713e2840c41736d35544), [#2839](https://github.com/heygen-com/hyperframes/pull/2839)) - **Studio:** Harden preview recovery ([c62bd4c45](https://github.com/heygen-com/hyperframes/commit/c62bd4c454d7a53aac39e03b10da8eeb2a93d77e)) - **Studio:** Improve preview loading reliability ([18b9acac1](https://github.com/heygen-com/hyperframes/commit/18b9acac12269899b0bfacb289d9bde3e1b065e4)) ## Docs & Examples - Clarify media treatment contracts ([12452a115](https://github.com/heygen-com/hyperframes/commit/12452a11569812003a067073c0497d69279b620d)) - Refine media treatment guides ([182862773](https://github.com/heygen-com/hyperframes/commit/182862773187dc01f08b2c29d2a3a5951afe5c5e)) - Document professional grading and media treatments ([1a2c30a79](https://github.com/heygen-com/hyperframes/commit/1a2c30a7994fc488685e9251a41e40eea2c3bcb2)) ## Catalog - **Registry:** Register device timeline synchronously ([2bb620517](https://github.com/heygen-com/hyperframes/commit/2bb620517749eefaa19e5fefbb2a85b9d6f538b8), [#2546](https://github.com/heygen-com/hyperframes/pull/2546)) ## Internal - **Studio:** Reuse player probe errors ([3af9a7df2](https://github.com/heygen-com/hyperframes/commit/3af9a7df2d687ec018f7d0705d25b5416c8dfa78)) - **Studio:** Mock composition thumbnails in smoke ([0faeb42f8](https://github.com/heygen-com/hyperframes/commit/0faeb42f86e20c5503e0827fa18b89050663bad7)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.77...v0.7.78). Studio's timeline now exposes expandable property lanes, track headers, precise keyframe retiming, and selection-safe editing across nested compositions. This release also makes stalled CLI download cleanup reliable on Windows and adds an opt-in prose-coverage floor to layout checks. ## Features - **Studio:** Add expanded keyframe lanes, track headers, retiming interactions, and nested-composition timeline support ([#2791](https://github.com/heygen-com/hyperframes/pull/2791)) - **Check:** Add the opt-in `proseCoverageFloor` layout rule ([#2834](https://github.com/heygen-com/hyperframes/pull/2834)) ## Fixes - **CLI:** Wait for stalled download pipelines to release temporary files before cleanup, fixing the Windows locked-file failure ([#2835](https://github.com/heygen-com/hyperframes/pull/2835)) - **Telemetry:** Send CLI feedback through the plain-event path instead of the PostHog survey API ([#2831](https://github.com/heygen-com/hyperframes/pull/2831)) ## Performance - **CI:** Distribute the two heaviest render fixtures and improve Docker layer reuse for producer-only changes ([#2825](https://github.com/heygen-com/hyperframes/pull/2825), [#2822](https://github.com/heygen-com/hyperframes/pull/2822)) ## Docs & Examples - **Send-to guide:** Clarify that enhance turns are free and rendering is the paid step ([#2827](https://github.com/heygen-com/hyperframes/pull/2827)) ## Internal - **CLI:** Separate telemetry delivery from event policy while preserving the queued flush and process-exit behavior ([#2344](https://github.com/heygen-com/hyperframes/pull/2344)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.76...v0.7.77). Plan v2 chunk materialization now recreates declared video directory skeletons even when a sparse chunk needs no frames, so inactive-video chunks render without downloading unused artifacts. Layout checks also improve rotation-pivot drift diagnostics. ## Fixes - **Producer:** Materialize declared video directories for sparse Plan v2 chunks ([ddb59d356](https://github.com/heygen-com/hyperframes/commit/ddb59d3567fc70d808f86ef8b5b531078e3df2d6), [#2823](https://github.com/heygen-com/hyperframes/pull/2823)) - **Check:** Improve elongated rotation-pivot drift detection and detached-connector diagnostics ([75ed99e1d](https://github.com/heygen-com/hyperframes/commit/75ed99e1d4f45015812575ff26c07efb0b253f21), [#2819](https://github.com/heygen-com/hyperframes/pull/2819)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.75...v0.7.76). Distributed capture now preflights `BeginFrame` support and falls back to screenshot capture when the browser cannot provide a healthy `BeginFrame` session. A targeted retry also recovers from `BeginFrame`-specific failures without masking unrelated errors. ## Fixes - **Producer:** Fall back from unhealthy distributed `BeginFrame` capture safely ([96cafb47c](https://github.com/heygen-com/hyperframes/commit/96cafb47c6c9850939c85e2cc76e578d3b6dbd1b), [#2821](https://github.com/heygen-com/hyperframes/pull/2821)) - **Regression:** Schedule the Plan v2 color fixture in regression shards ([51cbbe6fc](https://github.com/heygen-com/hyperframes/commit/51cbbe6fc93e025ee94fc73ad2b65afce8a35d3b), [#2820](https://github.com/heygen-com/hyperframes/pull/2820)) ## Internal - **Regression:** Compute the shard matrix from recorded fixture timings ([f67012eb9](https://github.com/heygen-com/hyperframes/commit/f67012eb9f6a953de90a3d7828979b56a3c96006), [#2815](https://github.com/heygen-com/hyperframes/pull/2815)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.74...v0.7.75). Distributed Plan v2 now handles extraction-cache sentinels and partial color metadata without corrupting chunk dependencies. Distributed cold starts also preserve live GSAP volume state, while GCP captures honor the effective `BeginFrame` boundary. ## Fixes - **Producer:** Handle partial color metadata and extraction sentinels in Plan v2 ([58869f087](https://github.com/heygen-com/hyperframes/commit/58869f0878e304fd39d564b93cc4a8b18e885b4e), [#2814](https://github.com/heygen-com/hyperframes/pull/2814)) - **GCP Cloud Run:** Enforce effective `BeginFrame` capture ([2a284a8e3](https://github.com/heygen-com/hyperframes/commit/2a284a8e3aca62100ec037c23c98706e7146aa14), [#2817](https://github.com/heygen-com/hyperframes/pull/2817)) - **Core:** Avoid live volume probes during render ([477defc7e](https://github.com/heygen-com/hyperframes/commit/477defc7e7397684c2def4459b3981f62a06816d), [#2816](https://github.com/heygen-com/hyperframes/pull/2816)) ## Performance - **Producer:** Compute regression PSNR in one ffmpeg pass ([98a4cd70f](https://github.com/heygen-com/hyperframes/commit/98a4cd70fd2df38f300a2e19c86f75cd8dd93895), [#2813](https://github.com/heygen-com/hyperframes/pull/2813)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.73...v0.7.74). Distributed Plan v2 publishers now stream content-addressed artifacts directly to S3 and GCS, while oversized-plan diagnostics identify the dominant files and phases. Rendering is more resilient through atomic media downloads, typed extraction retries, and frame-coverage accounting aligned with FFmpeg's CFR rounding. ## Features - **Studio:** Add professional grading controls ([20ef48abc](https://github.com/heygen-com/hyperframes/commit/20ef48abcb190e3e9ef132d1b1dd711201d3c58b)) - **CLI:** Expose agent-native color grading ([6d5961b80](https://github.com/heygen-com/hyperframes/commit/6d5961b8024fe70f87879f271dd91149717d41a8)) - **Gcp Cloud Run:** Publish plan v2 directly to GCS ([74d7bfde4](https://github.com/heygen-com/hyperframes/commit/74d7bfde4870bbc1c6c4471cfc004964807df3e7)) - **AWS Lambda:** Publish plan v2 directly to S3 ([09998789b](https://github.com/heygen-com/hyperframes/commit/09998789b5ff012adcd97e9fb33537e473f1cc52)) - **Core:** Add professional color grading controls ([f99fc4e56](https://github.com/heygen-com/hyperframes/commit/f99fc4e5686239f5ef56d4eb6083bee796ceeddc)) ## Fixes - **Producer:** Align frame coverage with extraction rounding ([f0c2c7d23](https://github.com/heygen-com/hyperframes/commit/f0c2c7d23384de589f54c11ff093f128c9a39e56)) - **Render:** Aggregate extraction launch failures ([33ca1de06](https://github.com/heygen-com/hyperframes/commit/33ca1de0631be66bfa5c591a231256c69667226e)) - **Producer:** Narrow extraction error shapes honestly ([c01e1a5f9](https://github.com/heygen-com/hyperframes/commit/c01e1a5f96839e1a2650516ceb3745ed7b28517f)) - **Producer:** Type video extraction failures ([9b63646c8](https://github.com/heygen-com/hyperframes/commit/9b63646c8aa036b786513137f2efcdf637ad432c)) - **Engine:** Block future-use IPv4 downloads ([2e84faeb2](https://github.com/heygen-com/hyperframes/commit/2e84faeb28ff8689da212a5b7db805f3b454d4d9)) - **Engine:** Close downloader trust-boundary gaps ([4b81f7858](https://github.com/heygen-com/hyperframes/commit/4b81f785868362fbb5c4bd7f1c5be24b2ccb7f94)) - **Engine:** Narrow network error shapes honestly ([5ce2eb879](https://github.com/heygen-com/hyperframes/commit/5ce2eb879db1bb2b3dd740bcd7e9abf8adaa3230)) - **Engine:** Make video downloads atomic and retry transient failures ([c01f6b446](https://github.com/heygen-com/hyperframes/commit/c01f6b446829f15c2c18dfd43da7013b412b2bf7)) - **Producer:** Reset distributed plan scratch state ([ebb02cafe](https://github.com/heygen-com/hyperframes/commit/ebb02cafe7e1d1e067bc37c00fd3613e20230ee5)) - **Producer:** Attribute and stop oversized plans early ([d699cbf01](https://github.com/heygen-com/hyperframes/commit/d699cbf014ac2232e3d2cec5c06c9d74103fa61f)) - **Studio:** Align professional grading contracts ([794930a07](https://github.com/heygen-com/hyperframes/commit/794930a07568deddd55ba0d891b68bec739641fa)) - **Studio:** Clear stale color scopes ([c1fcf7534](https://github.com/heygen-com/hyperframes/commit/c1fcf7534f730f5677b0d5201e6af6d17bd19cb0)) - **Core:** Register media analyzer subpath ([9b504045f](https://github.com/heygen-com/hyperframes/commit/9b504045f7cfd1a13e7b4d128cfdfe2e0631017f)) - **CLI:** Address media treatment review findings ([c1dde2898](https://github.com/heygen-com/hyperframes/commit/c1dde2898076b4d9b71b81d86cdf0f419350d93f)) - **Core:** Align secondary mask contracts ([e446de602](https://github.com/heygen-com/hyperframes/commit/e446de60234b837672100334fd169d2f2b547218)) - **Core:** Preserve curve compiler subpath exports ([9a515858c](https://github.com/heygen-com/hyperframes/commit/9a515858c9c65b749f1a976b3a72c5f4868a8256)) - **Core:** Address grading review findings ([1ffef9a26](https://github.com/heygen-com/hyperframes/commit/1ffef9a262ca13ada04d53d93d6f8bfbbfa83f26)) ## Internal - **CLI:** Harden media treatment parity ([20f4bde46](https://github.com/heygen-com/hyperframes/commit/20f4bde46a8862584470f895c8a6a4bf69716b2a)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.72...v0.7.73). Distributed rendering now has a versioned Plan v2 contract with integrity-checked, content-addressed artifacts and a remote publisher seam for object-storage-backed workers, while retaining Plan v1 compatibility. This release also improves audio duration accuracy, diagnostics, deterministic media treatments, and animation tooling. ## Features - **AWS Lambda:** Support plan protocol v2 ([5bf61d6df](https://github.com/heygen-com/hyperframes/commit/5bf61d6df0694c3077ecc7e84cd9d72f2029a5e6), [#2789](https://github.com/heygen-com/hyperframes/pull/2789)) - **Producer:** Version distributed plan protocol ([f9f00b0ef](https://github.com/heygen-com/hyperframes/commit/f9f00b0efc2d1006967d5b2e0009ea3c3f6ed2e6), [#2777](https://github.com/heygen-com/hyperframes/pull/2777)) - **Lint:** Dense motion re-sampling for content_overlap ([72e2f08f1](https://github.com/heygen-com/hyperframes/commit/72e2f08f15ceec105eb2bca6e9e35b8020e040be), [#2746](https://github.com/heygen-com/hyperframes/pull/2746)) - **Studio:** Add keyframe ease editor ([c253dec23](https://github.com/heygen-com/hyperframes/commit/c253dec23b0a6f1ccfe49c17371fdc9823f73b4c)) - **Core:** Add deterministic keyframe ease runtime ([5acbf240c](https://github.com/heygen-com/hyperframes/commit/5acbf240cbab38594d06b59b9ef7f2a4b37d31b7)) - **Studio:** Add media treatment inspector ([39c2341c4](https://github.com/heygen-com/hyperframes/commit/39c2341c4d1edf52a00fb8db4a49553c739860cc)) - **CLI:** Add agent-first media treatment tools ([4582881d0](https://github.com/heygen-com/hyperframes/commit/4582881d002c361afff59cc1c74ae072a50e17f7)) - **Lint:** Add off_pivot_rotation hub-referenced layout check ([e710a1686](https://github.com/heygen-com/hyperframes/commit/e710a1686f2442b460ea4973dca0be97c81ef184), [#2744](https://github.com/heygen-com/hyperframes/pull/2744)) - **Runtime:** Render media treatments deterministically ([944640c32](https://github.com/heygen-com/hyperframes/commit/944640c3283d604383fd437fcca8c63941d8e3d7)) ## Fixes - **Gcp Cloud Run:** Normalize v2 integrity codes ([0499a5cbc](https://github.com/heygen-com/hyperframes/commit/0499a5cbcb298c7dc4352a2d672b9e18c9db1d81), [#2790](https://github.com/heygen-com/hyperframes/pull/2790)) - **Producer:** Document read-only plan hashing ([c6fdd9c01](https://github.com/heygen-com/hyperframes/commit/c6fdd9c0154aacef9e16ab9c89d3249d0ef5d356), [#2788](https://github.com/heygen-com/hyperframes/pull/2788)) - **Producer:** Use portable audio padding filter ([3b9552ef9](https://github.com/heygen-com/hyperframes/commit/3b9552ef9db36b133485e4ce805892346e0b9006)) - **Producer:** Normalize padded audio on sample timeline ([4b116b988](https://github.com/heygen-com/hyperframes/commit/4b116b98802c05f0eeb541878806692eea975541)) - **Engine:** Stop mux at shortest normalized stream ([63bc525ca](https://github.com/heygen-com/hyperframes/commit/63bc525ca90b08356d50ebb41d4e15581c9d3470)) - **Producer:** Preserve normalized audio mux duration ([532461599](https://github.com/heygen-com/hyperframes/commit/532461599b7518f4609002cdb314ff2ce9f3a70f)) - **Render:** Cap final mux to video duration ([19258ea5b](https://github.com/heygen-com/hyperframes/commit/19258ea5ba47067e9d5756b122051c467ece0b04)) - **Render:** Cap trimmed audio container duration ([afc4e96bb](https://github.com/heygen-com/hyperframes/commit/afc4e96bbed21dbcd29544a6be95d35db7dd4eed)) - **Render:** Scope M4A priming preservation to trims ([9289551e9](https://github.com/heygen-com/hyperframes/commit/9289551e98958f006ec14af8ae9058096a4932fe)) - **Render:** Preserve normalized M4A edit timing ([59c56d325](https://github.com/heygen-com/hyperframes/commit/59c56d325723bbcb7c54315023aedeb72b376cd8)) - **Render:** Trim AAC packet padding exactly ([113a4985b](https://github.com/heygen-com/hyperframes/commit/113a4985b51bc1d77babe7113d6c96bbe46d41bf)) - **Engine:** Preserve bounded ffprobe diagnostics ([8c5077068](https://github.com/heygen-com/hyperframes/commit/8c50770684bc87ca67592c45d4101e3c029193d2), [#2772](https://github.com/heygen-com/hyperframes/pull/2772)) - **Audio:** Preserve causes and use portable padding ([37b88688e](https://github.com/heygen-com/hyperframes/commit/37b88688e7ae854e377c47fe3d9560ab0c930161), [#2769](https://github.com/heygen-com/hyperframes/pull/2769)) - **Parsers:** Preserve duration-authored keyframe timing ([4bfbd89d6](https://github.com/heygen-com/hyperframes/commit/4bfbd89d633d5fd227023643db62d2a566984edb)) - **Parsers:** Preserve authored keyframe intent ([d84e999f7](https://github.com/heygen-com/hyperframes/commit/d84e999f728e25cee15a71995805a52d0a7907c4)) - **Studio:** Preserve composed media treatments ([d5c7d3ee1](https://github.com/heygen-com/hyperframes/commit/d5c7d3ee16c2db53b91c66353d4f6387fe23e920)) - **Lint:** Drop false media_in_subcomposition rule ([e7f9918d2](https://github.com/heygen-com/hyperframes/commit/e7f9918d21f9fa57f1799c7b3ba38963cfcb52f1), [#2765](https://github.com/heygen-com/hyperframes/pull/2765)) ## Catalog - **Registry:** Add media treatment overlays ([b0d3164dd](https://github.com/heygen-com/hyperframes/commit/b0d3164ddb6177c6b31634f02a908fdae607850f)) ## Internal - **Producer:** Add remote-ready plan v2 publisher ([07f9a3de9](https://github.com/heygen-com/hyperframes/commit/07f9a3de954d663e61d0e7da233fe8d33a06a5f9), [#2792](https://github.com/heygen-com/hyperframes/pull/2792)) - **Producer:** Remove stale audio concat remnants ([3ef194234](https://github.com/heygen-com/hyperframes/commit/3ef194234e6104664b8b1902ae916dd7480c3617)) - **Render:** Cover duration-capped audio mux ([20188d637](https://github.com/heygen-com/hyperframes/commit/20188d637b51bed607593592469863ba189ea4ec)) - **CLI:** Move render module collection outside hooks ([3b3d4f559](https://github.com/heygen-com/hyperframes/commit/3b3d4f559ca0b97a4d48d5dbaef10c296407c9cb), [#2780](https://github.com/heygen-com/hyperframes/pull/2780)) - **Studio:** Simplify preview workspace layout ([bf47416e1](https://github.com/heygen-com/hyperframes/commit/bf47416e144bbd45c41375f357b229215aa11ccb)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.71...v0.7.72). Finite compositions can now use GSAP `repeat: -1` loops when an explicit root `data-duration` bounds the export, while unbounded infinite timelines remain blocking. Preview also serves external symlink assets correctly, and this release adds media-treatment capabilities plus performance and stability improvements for data-driven caption templates. ## Features - **Core:** Define media treatment capabilities ([70213c5a8](https://github.com/heygen-com/hyperframes/commit/70213c5a8526b12c8b26f01b8288d78bb9edc917)) ## Fixes - **Lint:** Allow bounded GSAP infinite repeats ([adb149b86](https://github.com/heygen-com/hyperframes/commit/adb149b86939e61bb3fce91cb8d0e5530f7bd29c), [#2763](https://github.com/heygen-com/hyperframes/pull/2763)) - **Preview:** Serve external symlink assets ([7778c093b](https://github.com/heygen-com/hyperframes/commit/7778c093b6288756cf5e27311828e6049e7c85c3), [#2764](https://github.com/heygen-com/hyperframes/pull/2764)) - **Caption Weight Shift:** Remove O(n^2) redundant hide-all-others loop ([5af6203ae](https://github.com/heygen-com/hyperframes/commit/5af6203ae7fcd506511ca5683a9097d666c4a63e)) - **Caption Editorial Emphasis / Emoji Pop:** Remove O(n²) redundant hide-all-others loop ([18de2b1f1](https://github.com/heygen-com/hyperframes/commit/18de2b1f1de8062a79ae7aa6fa4796e320fe6131)) ## Catalog - **Registry:** Liberal emoji-pop brand colors, weight-shift fit fixes, 8192 clamp ([8bf939043](https://github.com/heygen-com/hyperframes/commit/8bf939043fb44e05f6dd7caba81822ac5ef18334)) - **Registry:** Reject non-numeric caption-data versions; boot fetch never clobbers a manual attach ([5c2981d06](https://github.com/heygen-com/hyperframes/commit/5c2981d066480000d623e4d023e9cf918b2772e3)) - **Registry:** Encapsulate caption template runtimes in IIFEs ([e2846eb7c](https://github.com/heygen-com/hyperframes/commit/e2846eb7cc81821f7fc21a9c4dccdd85c7ef3429)) - **Registry:** Clear brand CSS custom properties on unbranded re-attach; remove dead italic path ([4f6994719](https://github.com/heygen-com/hyperframes/commit/4f6994719196e72dc01ebe8f60d869e064ec7685)) - **Registry:** Make caption-editorial-emphasis data-driven with emphasis heuristic ([ed8973952](https://github.com/heygen-com/hyperframes/commit/ed8973952dda2aa43931e0ffa05b3fc6ba0cb1cb)) - **Registry:** Make caption-highlight data-driven with automatic grouping ([7d4e71d10](https://github.com/heygen-com/hyperframes/commit/7d4e71d10b617b858fde2e764e15d530e9ffdf19)) - **Registry:** Make caption-emoji-pop data-driven with generic emoji lexicon ([392a9d251](https://github.com/heygen-com/hyperframes/commit/392a9d251a4feadbf7703ba4f9157c1857c7a59b)) - **Registry:** Force GSAP render at attach — seek(0) is a no-op on a fresh timeline ([020c8986f](https://github.com/heygen-com/hyperframes/commit/020c8986f46f795757203900cd251ad551ccc620)) - **Registry:** Make caption-pill-karaoke data-driven via caption-data runtime ([08620b75d](https://github.com/heygen-com/hyperframes/commit/08620b75df5275739fd9b0b8f480527fdc1d9a98)) - **Registry:** Make caption-weight-shift data-driven via caption-data runtime ([c67e9dc1f](https://github.com/heygen-com/hyperframes/commit/c67e9dc1f843122225468ce63a67c57f70c2bba2)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.70...v0.7.71). Multi-worker renders using experimental fast capture (`--experimental-fast-capture`) now self-verify their frames on the disk path and automatically fall back to screenshot capture when GPU or memory pressure corrupts output — previously that corruption (e.g. a worker's frames displaced into vertical strips) could ship silently. ## Fixes - **Engine/Producer:** Parallel and sequential disk-path drawElement capture now verify sampled frames against pre-injection ground truth and screenshot-retry on a breach — closing the gap where `--experimental-fast-capture --workers N` shipped compositor-damaged frames with no error (PRINFRA-352) ([060b6f8ae](https://github.com/heygen-com/hyperframes/commit/060b6f8ae53e8ae243d8e2c2c3afd690dbe7f99c), [ec791e91d](https://github.com/heygen-com/hyperframes/commit/ec791e91d97c0070502c4ad208923d4f98005846), [9fc1c2f15](https://github.com/heygen-com/hyperframes/commit/9fc1c2f15990fc44f50533362bec2f075aa1d53d), [c85cfae8f](https://github.com/heygen-com/hyperframes/commit/c85cfae8fa97229e9c4f4d7217cf08b4bc859f3d)) - **Producer:** Close the orphaned probe session before a verify-triggered retry so the probe Chrome process isn't leaked under the GPU/memory pressure the retry is recovering from ([b8e101547](https://github.com/heygen-com/hyperframes/commit/b8e10154762f5a0fe71fb4a6a9f3d472e9bf99ec)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.69...v0.7.70). HyperFrames now catches rotation pivot drift during layout audits, helping surface off-center spinners before render. This release also preserves editable \ line breaks in SDK text edits, strengthens producer font, probe, and worker-memory handling, and improves preflight and pre-commit feedback. ## Features - **Lint:** Add rotation_pivot_drift layout check ([222aec45a](https://github.com/heygen-com/hyperframes/commit/222aec45ab0553c014dddccd563e273affd9b71a), [#2741](https://github.com/heygen-com/hyperframes/pull/2741)) ## Fixes - **Sdk:** Keep \ line breaks editable and uncorrupted in setText ([dd7378bbd](https://github.com/heygen-com/hyperframes/commit/dd7378bbd934ecc0da85c1edfae7946ac7e2271a), [#2742](https://github.com/heygen-com/hyperframes/pull/2742)) - **Lint:** Address render preflight review feedback ([7a294f195](https://github.com/heygen-com/hyperframes/commit/7a294f19562928036dae20d5e73c2637d1e19060), [#2739](https://github.com/heygen-com/hyperframes/pull/2739)) - **Producer:** Resolve residual font and probe failures ([948264d6b](https://github.com/heygen-com/hyperframes/commit/948264d6b205cadd191e04f36af332ed4a6bb233), [#2738](https://github.com/heygen-com/hyperframes/pull/2738)) - **Hooks:** Pre-commit gate denies commit instead of ending the turn ([97ec7db5c](https://github.com/heygen-com/hyperframes/commit/97ec7db5cccd14a47fcfbe534d269dfea7a0d37d)) - **Producer:** Emit heap advisory at orchestrator, lock message + telemetry props with tests ([c6462a0a2](https://github.com/heygen-com/hyperframes/commit/c6462a0a225772c7a357afd5fe2f5c9a39bca238)) - **Engine:** Realistic worker memory budget + sizing/feedback telemetry ([12e599a6b](https://github.com/heygen-com/hyperframes/commit/12e599a6bac7dea5feec59c71dd0e5aeecab354e)) [View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.68...v0.7.69). Bug-fix release. The video coverage gate no longer aborts renders of looping short videos, and composition-level CSS with native CSS Nesting now applies to nested selectors instead of being silently ignored. ## Fixes - **Producer:** Credit looping short videos in coverage gate (#2665). A short clip in a longer slot with `loop` set delivers all its source frames once and reuses them per repeat; the gate now measures against source-source instead of unique-source-vs-slot, so a 3s looping clip in a 10s slot no longer aborts at 30% coverage ([a637f394e](https://github.com/heygen-com/hyperframes/commit/a637f394ee900c64c8f2e1ee78cf1e0ce17b8739), [#2732](https://github.com/heygen-com/hyperframes/pull/2732)) - **Core:** Preserve nested-rule selectors in composition CSS scoping (#2721). Native CSS Nesting (Chrome 112+ / Firefox 117+ / Safari 16.5+) now works inside a composition's `