Skip to main content
Recent HyperFrames releases, including user-facing features, fixes, and migration notes.
ReleaseStudio
Released - 2026-11-15
In Studio menus, the highlighted row now follows the menu’s rounded corner. The shared menu row style is exported so other apps can match it.

Fixes

  • Studio: Menu row highlight follows the menu’s corner (b5f5ab36a, #7791).
View the full commit range.
ReleaseEngineCli,studio ServerCLI
Released - 2026-11-15
Render services can name extra networks their renders must treat as non-public, and mapped or NAT64 addresses are judged by the IPv4 address they carry. Website capture keeps Chrome’s sandbox where the host supports it, and helper programs start only from trusted folders.

Features

  • Engine: Operators can add networks the render must treat as non-public (b54f2079e, #7790).

Fixes

  • Engine: Judge mapped and NAT64 addresses by the IPv4 they carry; producer exports the rule (54e4a2be3, #7789).
  • Docs image upload publishes only regular files, and CI rejects new symlinks (9320c44e1, #7776).
  • CLI and Studio server: Received-file guard covers subfolders and spellings; playlists named as media never reach ffmpeg (870b1fa4d, #7771).
  • CLI: Keep Chrome’s sandbox on for website capture where the host supports it (27b195feb, #7774).
  • CLI: Keep captured page text out of generated agent instruction files (e4e93d6ed, #7772).
  • Engine: Start nvidia-smi, vm_stat, ps and tasklist from trusted folders only (e3ff9c803, #7788).
  • Producer: Every video’s size samples share one grid (1d83e2520, #7782).
View the full commit range.
ReleaseAWS LambdaEngineLint
Released - 2026-11-15
Renders now read only the media and files that belong to them, including every playlist a playlist names. Lambda renders reach only public addresses by default, like the other cloud render paths, and lint rules check large files faster.

Fixes

  • AWS Lambda: Lambda renders reach only public addresses unless the function opts out (e8a59bf17, #7780).
  • Engine: Media playlists are checked through every list they name (f4b6aad33, #7778).
  • Engine: Refuse media playlists that name files outside their folder (06cf96464, #7768).
  • Render file servers refuse env and Git files; shown-box sampling stays within the render (603395c89, #7765).
  • Producer: Render-service media probes stay on public HTTPS (0e767d620, #7764).

Performance

  • Lint: Rules scan script, style and comment blocks in linear time (12832e3a9, #7770).
View the full commit range.
ReleaseProducerEngine
Released - 2026-11-14
Compiling a render now downloads composition scripts through the same downloader as other assets. Renders also log what kind of address the network limit refused.

Features

  • Engine: Renders log the class of every address the proxy refuses (89bca002e, #7762).

Fixes

  • Producer: Compile downloads composition scripts through the shared asset downloader (cd55f059c, #7763).
View the full commit range.
ReleaseEngineProducerStudio
Released - 2026-11-14
Press ? in Studio to see every keyboard shortcut. A render service that limits the render page’s network now applies the same limit to the whole render browser.

Features

  • Studio: Press ? to open the keyboard shortcuts panel (a03e85f43, #7478).

Fixes

  • Engine: Renders reach only public addresses from every part of the browser (a6ff3922b, #7758).
  • Studio: A refused edit names the file and why, on every edit path (f7f2c535b, #7749).
  • Engine: Look a host up again after a failed lookup instead of refusing it for the whole page (b100cf461, #7751).
  • Scripts: The comment check names a git too old for check-attr —source (8e0f196a8, #7750).

Internal

  • Producer: Make path contracts portable on Windows (aeaf9463e, #5032).
View the full commit range.
ReleaseEngineProducerStudio Server
Released - 2026-11-14
A clip whose file name has a space or accent is no longer heard twice in an export. HEVC phone video keeps its shape in Studio, and check, render and downloads work on drives without hard links.

Features

  • Core: A folder with index.html is one a step can work on, apart from finding projects (32f562bbd, #7734).

Fixes

  • Engine: A render service can hold the render page to the asset download address rules (off by default) (29533f631, #7748).
  • Producer: A clip whose file name has a space or accent is mixed into the export once (a3fa250b2, #7747).
  • Studio Server: Save an edit Windows briefly holds without freezing the app (a92498b90, #7744).
  • CLI: An unknown flag’s error leaves out hidden rename shims (cb52dcf64, #7746).
  • Check, render and downloads work on a drive without hard links (b746a0ee1, #7737).
  • Studio: HEVC with long-term reference pictures keeps its pixel aspect ratio (b72387446, #7739).
  • CLI: Check still reports a film’s other GL driver notes (d26ec2538, #7745).
  • CLI: An unknown flag lists the command’s real flags (88beb282f, #7740).
  • CLI: Check no longer reports GPU stalls from its own pixel reads as the film’s warnings (35d145157, #7736).
  • CLI: Check times a line held across a split clip as one hold (c31e7dd08, #7733).

Catalog

  • Registry: Caption-highlight clears a short word’s highlight when the word ends (e21e64f6a, #7735).
View the full commit range.
ReleaseStudio ServerEngine
Released - 2026-11-14
Editing a project file that is read-only is now refused, and the file stays as it was. A capture failure the engine does not recognise is now reported as unknown, not blamed on the project.

Fixes

  • Studio Server: An edit to a read-only project file is refused and leaves it unchanged (b5e9bc689, #7731).
  • Engine: An unrecognised capture failure is unknown, not the author’s fault (ff9c3b761, #7730).
View the full commit range.
ReleaseCore
Released - 2026-11-14
A preview of 4K takes uses far less memory at full quality. Each 4K clip now plays a copy at the size the preview shows it, so long edits of 4K footage no longer run out of memory. Exports still use the original files.

Fixes

  • Core: At full quality a 4K clip plays a copy at the size the preview shows it (2f0ade181, #7723).
View the full commit range.
ReleaseStudioCLICore
Released - 2026-11-14
Check now warns when text leaves the safe areas of a 9:16 social video. Previews free a clip’s decoder once the playhead leaves it, and a cancelled audio fade no longer crashes the page. Set HYPERFRAMES_OWNER to tell which run started a leftover browser.

Features

  • CLI: Name a caller’s owner id on the browsers and warm check it starts (798c241e4d0cf, #7687).
  • CLI: Check warns when text leaves the 9:16 social safe areas (45882027bd284, #7680).

Fixes

Performance

Catalog

View the full commit range.
ReleaseEngineStudioCLI
Released - 2026-11-13
Renders on Windows no longer show coloured fringes around text, and previews open no audio device until a clip with sound plays. That second change ends long freezes on Windows. Drag and resize on an opaque preview now start from one read.

Features

  • Studio: Drag and resize on an opaque preview start from one gesture-start read (6bdf9291647f3, #7657).

Fixes

  • Engine: Render text without ClearType colour fringes on Windows (273672ab13112, #7663).
  • Core: A looping preview keeps playing when a scene reloads during a hold for data (b8f630c643b2b, #7659).
  • Release: Draft the changelog from a freshly fetched origin/main (d7202bd42a4d7, #7660).
  • Deps: Refresh vulnerable transitive resolutions in bun.lock (0c2384db8816f, #7654).
  • Deps: Bump tar, hono, @hono/node-server, adm-zip, sharp and postcss-selector-parser (f01209d4aebf8, #7656).

Performance

  • Core: Open the preview’s audio context when a clip with sound plays (ccdcf6710c49e, #7658).

Internal

  • CLI: Remove committed TLS private key and generate test certificates (85503a352b26d, #7644).
View the full commit range.
ReleaseStudioDepsProducer
Released - 2026-11-13
Studio now says why a file cannot be saved when another program holds it open or it is read-only. Dragging and resizing a layer draw live over an opaque preview, local renders bring in only media, font, CSS and JS files from outside the project, and preparing fonts for large pages is faster.

Features

  • Studio: Drag and resize draw live on an opaque preview over its channel (87c4a07dc99a9, #7646).
  • Studio: Layers panel and marquee read an opaque preview over its channel (be67089a80b59, #7639).

Fixes

  • Producer: Local renders bring in only media, font, CSS and JS from outside the project (2c2b399bfa229, #7647).
  • Studio: A file held open or read-only answers 423 or 403 with a reason, not 404 or 500 (0bce3315e645e, #7649).
  • Deps: Update dependency undici to v7.30.1 [security] (d79e72c02479b, #6695).
  • Studio: Open the canvas context menu when a pointer move overtakes its lookup (d208281091b1c, #7643).

Performance

Docs & Examples

Internal

View the full commit range.
ReleaseCLIEngineProducer
Released - 2026-11-13
Fast capture works again on Chrome 157 and newer, which fixes Windows exports that failed at drawElementImage. Local renders keep Chrome’s sandbox on where the host supports it and launch Chrome with only the environment it needs and explain a failed launch with the environment it had, cloud render —json lists the files an upload leaves out, publish copies only media, font, CSS and JS files from outside the project and leaves out the rest that came in with an import, a video variable given as a link now plays its sound once, media ids that differ only by case get separate folders so a render no longer fails with a missing file, and the Studio timeline and overlays read an opaque preview over its channel.

Features

  • CLI: Cloud render —json lists the files an upload leaves out (2591abfbf, #7631).
  • Studio: Read overlay geometry from an opaque preview over its channel (faff4e16a, #7628).
  • Studio: Timeline select and selection refresh read an opaque preview over its channel (aed4c18fe, #7613).

Fixes

  • CLI: Copy only media, font, CSS and JS files from outside the project (89a7aa300, #7636).
  • Engine: Keep media ids that differ only by case in separate folders (b54e4981f, #7635).
  • Producer: A video variable given as a link plays its sound once (2760fa119, #7633).
  • Engine: Diagnose a failed Chrome launch with the env it had (9701f4bbf, #7634).
  • Engine: Launch Chrome with only the env it needs (24d56e681, #7629).
  • Engine: Diagnose the launch attempt whose error surfaces (43722355a, #7630).
  • CLI: Publish leaves out outside files that came in with an imported project (a810a8b00, #7598).
  • Engine: Keep Chrome’s sandbox on for local renders where the host supports it (400a4e228, #7625).
  • Engine: Fast capture works on Chrome 157+, which wants content=drawable (9c3258ccb, #7626).
  • Producer,docs: Motion blur’s compile hint and preview claim say what is measured (e09fe6e50, #7581).

Internal

  • Tests: Move gen-os-static asset links to static.heygen.ai (aadd5bd6f, #7536).
  • Give Test (runtime) 15 minutes (d30f1f4ce, #7627).
  • Engine: The blur trail mask covers the shutter’s sweep, not only whole frames (2df837be9, #7624).
View the full commit range.
ReleaseSkillsCLIDocker
Released - 2026-11-12
A local render now extracts each video at about the size it is shown, so a long export of 4K footage in a 1080p film no longer fills the disk. A frame’s pixels no longer depend on the frames drawn before it, render work is sized to the CPUs the process may use, and check hears a WAV whose header misstates its byte rate.

Features

  • Core: Runtime element handles for the editing channel (e1ddb2e16, #7603).

Fixes

  • CLI: Check hears a WAV whose header misstates its byte rate, as render plays it (97df93fb0, #7618).
  • Docker: Node 22.23.5 for the November 2026 security release (5bf361f52, #7611).
  • Engine: A frame’s pixels no longer depend on the frames drawn before it (b4fc4736d, #7181).
  • CLI: Add —dir names the exact init command for a missing folder (bfd3fe644, #7615).
  • Producer: A local render extracts each video at about the size it is shown (54bcdc616, #7609).
  • Engine: Render work is sized by the CPUs the process may use (395c845cd, #7612).
  • Engine: A video shown at exactly half its size is extracted at half size (cc47f7ea7, #7607).

Catalog

  • CLI: ‘hyperframes registry search’ runs catalog (83b34cbe4, #7610).

Internal

  • Skills: Move the Python encoding guard out of the skills root (33304cff0, #7606).
  • Producer: Pay the first render’s start-up cost before the stall and frame-window tests (d1a366b42, #7503).
View the full commit range.
ReleaseStudioCi
Released - 2026-11-12
Studio shows the move, resize and rotate readout in a chip under the element. Desktop and other hosts can now import key parsing and defaults from a light @hyperframes/studio/keys path.

Features

  • Studio: Show the move, resize and rotate readout as a chip under the element (6e0e03f54, #7588).
  • Studio: Add a light @hyperframes/studio/keys subpath for key parsing and defaults (234fb1aee, #7600).
  • Studio: Picker styles and composition size read an opaque preview over its channel (01618d504, #7602).
  • Studio: Playback and timeline reads go over the preview’s message channel (940963afa, #7561).

Fixes

  • Ci: A release fails its checks when its notes miss a commit merged after the cut (5d2914f7c, #7601).
View the full commit range.
ReleaseScriptsStudioLint
Released - 2026-11-12
The Volume control in Studio now changes the whole clip, a paused video shows the same colors as the playing one on Mac, and edit history records which layer each edit touched. Publish also keeps Library files out for projects on cloud drives, and render servers only load assets from inside the project.

Features

  • Studio: Record the layer name on each history entry’s target (4fad43db2, #7586).
  • CLI: Heygen generate defaults images to nano-banana-2.1 (fc7cb1aad, #7591).
  • CLI: Price and validate minimax-h3-image, and image models at 1.5x (88e74e088, #7589).

Fixes

  • Scripts: Release:prepare refuses a baseline that skips a release whose tag this clone lacks (f3626e97c).
  • Studio: A preview reload survives its pane unmounting mid-load (5a3e46235, #7590).
  • Core: Show a paused video frame with the same color as the playing video on Mac (303a4c477, #7584).
  • Studio: The Volume control changes the whole clip, fades included (245904d55, #7587).
  • CLI: Publish keeps Library files out for projects on cloud drives (f7bf5f0c4, #7582).
  • Producer: Render servers only load assets from inside the project (03ddfb189, #7579).

Performance

  • Lint: Parse each style block once per lint instead of once per rule (32cacab74, #7593).

Docs & Examples

  • Skills: Name the model next to each media-use image price (748bfe3b2, #7592).
  • Every link to hyperframes.studio carries where the visit began, shared with the homepage (6b602495d, #7580).
View the full commit range.
ReleaseCLIShare
Released - 2026-11-12
Sharing refuses to build an archive when it can’t read .hyperframesignore, so ignored files stay out. templates pull also refuses archives that hold links.

Fixes

  • CLI: hyperframes templates pull refuses an archive that holds anything other than plain files and folders, such as a symlink, hard link or device entry. Nothing is unpacked, and no partial folder is left behind. A link inside a pulled template could otherwise let preview, render and publish reach files elsewhere on your machine (ab66e5bd7, #7576).
  • Share: snapshotProject and snapshotFiles throw invalid_source_ignore again when .hyperframesignore can’t be read. In 0.9.35 they skipped the unreadable file, so an archive built from the snapshot could include files the ignore file meant to leave out. Hosts that use these functions only for change detection should pass { lenientIgnore: true } to keep the 0.9.35 behavior. projectFingerprint already does (35cf03cab, #7573).
View the full commit range.
ReleaseLintCore
Released - 2026-11-11
Motion blur previews more smoothly when you lower preview quality. Renders still draw full-quality blur.

Features

  • Core: Lowering preview quality now makes motion blur lighter too. The preview draws 16 blur copies at 1/2 and 8 at 1/4 and below, instead of 32. Renders always draw 32. A host that lowers quality on choppy playback can now do so for a film slowed only by blur (6cc734fd2, #7547).

Fixes

  • Lint: Don’t look for audio on another computer’s share (7ba8f8507, #7572).
View the full commit range.
ReleaseSecurityShareCLIStudio App
Released - 2026-11-11
Private files like .env and git data stay out of preview bundles, and local sharing only answers your own machine. Sharing also keeps tracking changes when .hyperframesignore uses gitignore patterns.

Fixes

  • Security: Preview bundles never include .env files or git data, even through a link. A render that names one of these files now stops with an error. Local sharing only answers this machine, so sharing from Studio in a container now gets a 403 (a243169f8, #7563).
  • Security: Helper programs are found by walking your trusted PATH folders directly. On Windows, the working folder is never searched (9a048ac01, #7562).
  • Share: Change detection keeps working when .hyperframesignore uses gitignore patterns such as /exports/ or **/*.mov. Before, those patterns stopped it with an error (c07468d6a, #7568).
  • CLI: Durations and sizes roll over to the next unit when rounded, so you see 1m 0.0s and 1.0 MB, not 60.0s and 1024.0 KB (182608311, #7565).

Docs & Examples

  • Studio App: The brand kits page says kits are shared with your workspace only (c218b37a3, #7570).

Internal

  • Core: The preview runtime offers its parent a typed message port. This prepares Studio for a sealed preview frame and changes nothing yet (ef5cdeb0a, #7556).
  • CLI: Local Studio’s share window counts button clicks and choices. Only fixed categories are recorded, never links, paths or email addresses (2a70733c1, #7566).
View the full commit range.
ReleaseStudio ServerSkillsCLI
Released - 2026-11-11
HyperFrames now runs helper programs like FFmpeg only from where they are installed, never from a project folder. Renders can also refuse variables a page does not declare, when that check is turned on.

Features

  • Producer: With strict variables turned on, a render fails when it is given a variable the page does not declare. It is off by default, so renders are unchanged (f312fca7e, #7548).

Fixes

  • Studio Server: Load fonts and modules only in the Studio’s own preview frames (ffb13c3b6, #7553).
  • Skills: Plugin launcher and media helpers run the pinned CLI, not a project copy (a8fe3a5b6, #7552).
  • CLI: Preview uses the bundled Studio unless local Studio mode is opted in (668983e1a, #7551).
  • Security: FFmpeg, FFprobe and other helper programs are taken only from where they are installed or a path you set, never from a project folder (84799bdc5, #7524).
  • Core: Saving a file works on drives that refuse hard links with a permission error (f36463e29, #7474).
  • Studio: Thumbnails are captured in a sealed page, and shader transitions still work where the browser blocks local storage (80cda85d7, #7528).

Catalog

  • CLI: Refuse more coding-agent instruction files in registry installs (9bab57ab4, #7549).
  • CLI and Studio: Registry installs and Studio file writes stay inside the project content folders (b96c82b78, #7523).

Internal

  • Engine: The URL-read concurrency test passes on machines with 32 or more cores (3ad7611f9, #7544).
View the full commit range.
ReleaseEngineShareParsers,lint,producer,cli
Released - 2026-11-11
Clips that start partway into a voice recording now keep their sound to the end, even when the WAV file misreports its own byte rate. Variable-bound media also renders at the right length and loudness.

Fixes

  • Engine: A clip that starts partway into a WAV whose header gives the wrong byte rate now plays the right sound to its end, instead of going quiet early or staying silent (7ae1ae649, #7541).
  • Share: When you reach the hourly limit on review versions, the message now explains that limit (8a15d9fee, #7539).
  • Projects: A composition can only look up files inside its own project folder (5a88c9938, #7534).
  • Capture: A wrong captioning region or model name is reported before captioning starts (bcc1437d7, #7533).
  • Producer: A video or sound set through a variable now renders at its clip’s length and loudness (789d28121, #7529).

Docs & Examples

  • Variables: Say what can be a variable, including a video or sound per account (28d69d9a9, #7530).

Internal

  • CLI: Give each test file its own home so renders never wait on another file’s lock (2b86c49dc, #7526).
View the full commit range.
ReleaseShareStudioInspector
Released - 2026-11-11
Long films that are slow to open now render instead of failing before their first frame. The CLI, Studio and the renderer also stop a project folder from choosing what they run or serve.

Features

  • SDR MP4 renders can keep full colour detail with --chroma-subsampling 444, for masters that will be re-encoded; the default is unchanged (1a9fb8acb, #5820).
  • Producer: The render stream’s complete event names the producer version that rendered it (7afa05a78, #7515).

Fixes

  • Share: Guide recovery when an export replay is refused (941049a84, #7531).
  • Studio: The composition hover preview runs walled off from Studio’s own page, so a composition’s scripts cannot reach into Studio (0c229a26c, #7522).
  • Studio: Pressing Enter or Escape while an input method is still composing text no longer commits it, and Escape then leaving a text field no longer saves the cancelled edit (ff285d3f2, #6011).
  • Share: A share or export killed while taking its lock no longer leaves a lock that later attempts cannot clear, on file systems without hard links (b37e4b026, #7516).
  • Producer: Long films that are slow to open no longer fail before their first frame: the wait for the first frame now follows how long the browser took to start, up to 15 minutes (7ff8ece46, #7517).
  • Lint: Flag a script that calls gsap before GSAP loads, and say so when a render fails on it (124591a9d, #7514).
  • Producer,engine: Harden render paths, render slots and local listeners (60fb9d2c5, #7508).
  • Studio Server: Harden preview paths, cache folders and local servers (b8bb49190, #7510).
  • CLI: Keep project folders from choosing the programs and config the CLI runs (84c7d02a1, #7511).
  • CLI: Harden lambda destroy, snapshot media, upgrade and project file serving (c96ff540c, #7509).

Performance

  • Docs: Load showcase film tiles only when they are near the screen (fd0c2337c, #7507).

Docs & Examples

  • List the hub’s /blog, /vs and /tools sitemaps in robots.txt (499a17e67, #7527).
  • README: Show the GitHub rank and skills downloads badges (717d3d02c, #7519).

Catalog

  • Harden docs snippets, SVG sanitizer, lint regexes, GSAP writers and registry pins (24508ce2d, #7512).

Internal

  • Inspector: Decode file URLs in HTTP contract fixtures (e7a323ade, #6010).
View the full commit range.
ReleaseCoreStudioPublish
Released - 2026-11-10
In Safari, long videos no longer load the whole file at once, and playing clips keep their source. The Studio dev server now checks the Host on its API routes, so a tunnel or remote setup may need one setting.

Fixes

  • Core: In Safari, a small video file keeps its preload, and a clip that is playing keeps its source (cda84222a, #7498).
  • Studio: The Studio dev server now checks the Host header on its API routes too, as the preview server does since 0.9.30. A tunnel, Codespaces or remote dev host that worked before can now get a 403: name the host in HYPERFRAMES_PREVIEW_ALLOWED_HOSTS (comma separated), which now also reaches the dev server’s own allowed hosts (b0835262a, #7493).
  • Studio Server: Thumbnail links take their origin from the server, and previews from other sites open sandboxed (983e865ad, #7492).
  • Producer: A render that loads the default GSAP file from the CDN uses the copy the CLI already ships, so it works with no network (5c5799975, #7388).
  • CLI: The message about another install shadowing this one only names an install its package manager can move (b28bd2b34, #7499).
  • Studio: Messages that count clips or keyframes say 1 clip, not 1 clips (ec30de062, #7496).
  • Studio Server: When a file is still changing, a claim waits for its first copy, so the edit can still be undone (248f56fba, #7497).

Performance

  • Core: In Safari, the clips of a long video no longer load the whole file at once (fecde9992, #7436).

Docs & Examples

Internal

  • Release: Hardened release build.
View the full commit range.
ReleaseReverseAWS LambdaStudio Server
Released - 2026-11-10
Studio stays responsive on large projects while it keeps history. The preview server now refuses writes from other sites and host names it does not serve, so a tunnel or remote setup may need one setting.

Fixes

  • CLI: When hyperframes reverse needs you to sign in, the agent now tells you why in one message with the link (and the device code on a remote terminal). The reverse skill also spots an outdated CLI install and runs the latest release instead (007664e25, #7488).
  • AWS Lambda: The Lambda handler ZIP installs its runtime from a committed lockfile, with install scripts turned off (f9255e39a, #7485).
  • Studio Server: On large projects, Studio’s history checks no longer hold up the server (61e720b0e, #7491).
  • Gcp Cloud Run: The Cloud Run image pins its base image and checks its browser and bun downloads by checksum (c6d243a2d, #7487).
  • Studio Server: The preview server refuses writes from other sites and requests for host names it does not serve. Local use needs no change. If you open hyperframes preview or the Studio dev server through a tunnel, Codespaces or a remote dev host, that setup can now be refused with a 403: name the host in HYPERFRAMES_PREVIEW_ALLOWED_HOSTS (comma separated), for example HYPERFRAMES_PREVIEW_ALLOWED_HOSTS=demo.tunnels.example hyperframes preview (f318d3d08, #7490).
View the full commit range.
ReleaseCLIStudio ServerProducer
Released - 2026-11-10
Undo no longer loses work caught in the middle of a save, and the CLI shows the credits an image actually cost. Fewer renders are wrongly refused as too slow, and every frame of a video clip shows its own source frame.

Features

  • CLI: Label GPT image prices as estimates and show the charged credits (0ba894123, #7351).

Fixes

  • Studio Server: History waits out a file a save has emptied, and rereads one written mid-copy (e8416b2a4, #7480).
  • Producer: Refuse a too-slow render only when its typical frame says it cannot finish (88db83092, #7479).
  • Engine: A video clip shows a new source frame on every frame it is on screen (235c80bae, #7471).

Docs & Examples

  • Studio App: The Reference read is paid by Pro or a saved HeyGen API key (b12365d67, #7440).

Internal

  • Engine: Split the frame extractor tests so each file stays under the flake gate budget (1a758fd60, #7476).
View the full commit range.
ReleaseStudio AppEngineShare
Released - 2026-11-10
A piped render now reports how its motion blur went. Short clips from Apple-encoded videos keep their last frame.

Features

  • CLI: A piped render’s @hf-result line now carries the motion blur outcome (tier, movers, failed frames), so a host app can report it (651de1d94, #7468).

Fixes

  • Engine: Short clips from Apple-encoded videos keep their last frame (4d0fa2baa, #7469).
  • Share: Preserve re-invites and validate workspace responses (58e9cae75, #7470).
  • Player: Unload the video when its src is cleared (e5e79e59e, #7466).

Docs & Examples

  • Studio App: Cloud exports come with the plan, not only an API key (756bd6b17, #7441).
View the full commit range.
ReleaseEngineCLIMcp
Released - 2026-11-09
Studio renders now wait for the same one-at-a-time render slot as the CLI, so two renders no longer split one machine between them. Long project paths on Windows and the macOS developer-tools prompt are fixed too.

Features

  • Skills: Route a style outside the templates instead of listing them (37f1819f3, #7450).
  • CLI: Reverse and templates report their own runs; commands say which skills are installed (448f88ff3, #7444).
  • Skills: Reverse-any-video and style-sampling install with the core set (ad6f7858f, #7445).
  • Producer: Distributed and range renders honour page motion blur (c38ac5438, #7311).
  • CLI: Add agent markers other detectors use, verified upstream (7bf65995b, #7425).
  • CLI: Detect more agent runtimes in telemetry (c14f25890, #7423).

Fixes

  • CLI: Studio renders take the same one-render-slot lock as the CLI (4b3f70fb1, #7459).
  • CLI: Templates pull unpacks under .hyperframes, not beside templates/ (a4e16d87c, #7269).
  • Skills: Await the player seek in seam-gate (fc13420de, #7454).
  • CLI: Label SVG contact sheet thumbnails by file name on Windows (0ca2b1ae9, #6732).
  • CLI: Staging folders beside a project path no longer fail past 260 characters on Windows (b59fa2083, #7338).
  • CLI: No macOS developer-tools prompt from git, xcrun or cc checks on a Mac without the tools (c14973081, #7257).
  • CLI: Transcribe reads whisper output with nan or inf values (7b30a50b5, #7110).
  • CLI: Spaced-path hint takes the longest path and reads —flag=value; telemetry docs name the reverse session id (3a24da8a8, #7452).
  • Core: Detect template entries structurally (caa62fe68, #7249).
  • CLI: Measure answers the four mistakes agents make most (eb0a52c29, #7443).
  • Core: A video held on its tail is seeked once, not every frame (a73572c3b, #7442).
  • CLI: Let an agent’s own name beat editor and host markers (c1e96a45b, #7424).

Docs & Examples

  • Mcp: Current ChatGPT and Claude setup steps, the hosted render’s real output, and a first prompt that works (48a2b4e01, #7439).
  • Changelog: Weekly digest 2026-11-02-2026-11-09 (3ff0b3d81, #7453).
  • CLI: Correct Claude Code marker comments in agent detection (e35125372, #7426).
  • List the 1440p presets in the v0.9.26 notes (d09584382, #7422).

Internal

  • Engine: Nightly motion blur run over generated compositions (7bf19ab5f, #7437).
  • Engine: Real-Chrome tests get 30 s per test on slow runners, not 5 s (4d29a64b0, #7456).
  • Codegen: Resync the generated cloud client (b95ab794e, #7455).
  • Engine: Drive the empty-screenshot probe test with fake timers (c9fe04150, #7000).
View the full commit range.
ReleaseCLIStudio Server
Released - 2026-11-08
Cloud renders now find media whose file names have accents, even when macOS stores the name differently from the page. A large project’s first history copy is also much faster, and --resolution gains 1440p presets.

Features

  • CLI: Add 1440p resolution presets to —resolution (5e8abd757, #7418).

Fixes

  • CLI: Cloud render finds media whose file name is stored in another Unicode form than the page’s (91ad7fb6e, #7419).

Performance

  • Studio Server: A large project’s first history copy takes a fraction of the time (2927fe615, #7415).
View the full commit range.
ReleaseCoreProducerCLI
Released - 2026-11-08
Re-rendering a film with the same settings now gives the same result, because every render seeds its random values. A muted video’s picture also no longer waits on its own audio track at a cut, and check replays an unchanged project’s last pass.

Features

  • CLI: Check replays an unchanged project’s last pass and takes —no-craft (070b964d7, #7398).

Fixes

  • Core: A muted video’s picture no longer waits on its own audio track at a cut (fa2e63515, #7412).
  • Producer: Seed random values in every render so re-renders give the same film (eb16510a1, #7410).
  • Core: Capture pages load only the clips on screen (12906e0bf, #7402).

Internal

  • Install ffmpeg through the GitHub API asset route with a cache (074de9dd1, #7401).
View the full commit range.
ReleaseCoreEngineStudio
Released - 2026-11-08
Fade-ins that follow a starting set now end fully visible instead of vanishing when the fade finishes. Failed script reports also name their library, and menu highlights match their panel.

Features

  • Engine: A failed CDN script’s report names its library and version, never its URL (adf14d732, #7394).
  • Core: Preview health names the media element that held play (fd05a3860, #7159).

Fixes

  • Core: A set written before its tween no longer erases the tween’s end (75fe18c62, #7397).
  • Studio: A menu row’s highlight is rounder than its panel (ab785e9c5, #7395).
  • Studio: Bound recovery and verify full-quality playback (3151fd213, #7393).

Internal

  • Engine: The decode timeout warning reaches every caller (0f5914dc4, #7119).
View the full commit range.
ReleaseProducerStudioCore
Released - 2026-11-08
Studio previews look sharper: scrubbing shows full-quality decoded frames, and seeking no longer drops to an incomplete picture. Renders also keep page timers on the film’s schedule at any worker count.

Features

  • Studio: Scrub full-quality video with decoded preview frames (b7157bdab, #7379).

Fixes

  • Producer: Keep page timers on the film’s schedule at every worker count (fed14b016, #7390).
  • Core: Retain complete preview pictures during native seeks (b87a01f6a, #7378).

Internal

  • Producer: The injector budget test no longer leaves a no-op injector for later tests (34118d8f2, #7384).
View the full commit range.
ReleaseCoreCLICheck
Released - 2026-11-07
Cloud exports take big files and files given by full path, HDR clips keep their brightness, and Safari’s picture meets the cut again.

Features

  • CLI: Cloud uploads send a big file in parts, so a cut connection resends one part (3d7f12acd, #7375).
  • Media Use: The voice credits line names the real source, your recording or any vendor (f5bde9533, #7380).
  • Media Use: Your own voice recording is a voice line, and speed applies to it (14e598e5a, #7377).

Fixes

  • Core: Safari video picture lands on the cut again, undoing the hidden pre-roll (841e90ffe, #7383).
  • CLI: A media file referenced by its filesystem path goes into the cloud archive (e0c11bf09, #7381).
  • Check: Lint and check skip compositions the project never mounts (7b79ab429, #7369).
  • Engine: Hlg footage with a large header sei also tone-maps at hlg’s white (b559a98d3, #7349).
  • CLI: A re-encode of a media file over the cap is limited to fit it (57a75337b, #7376).
  • Core: A film moves on past a video the browser never starts loading (a595755a3, #7368).
  • Producer: Page timers during a render run on film time (59c2065d6, #7362).
  • CLI: Transcribe names why whisper is missing and the one line that fixes it (9efbbdf5a, #7366).
  • Check: Masked or clipped-away text no longer counts as overlapping (a3b8f521d, #7364).
  • Check: The overlap finding names the decorative mark, data-layout-ignore (330be7cd2, #7365).
  • CLI: Open stops the project’s background preview first (896a77c30, #7297).
  • CLI: Stop waiting for the cloud’s file check when the caller aborts (336abaa80, #7361).
  • Check: A Chrome that never becomes ready ends the check with a named error (e827de256, #7360).

Performance

  • Producer: Size a long video’s chunks in one plan, no re-plan (c27475b97, #7382).

Internal

  • CLI: The cloud upload’s PUT and retry code moves to its own file (b418bb24f, #7374).
  • Player: A Safari perf run that fails says which wait timed out and why (7b1d9cceb, #7347).
View the full commit range.
ReleaseCLICoreStudio Server
Released - 2026-11-07
Cloud export of footage cuts works again, Safari no longer freezes on a video stuck at its header, and any video format nobody listed now gets a playable copy instead of a blank card.

Features

  • Check: Name the saved report file and print one stderr line per check step (9ac2a2387, #7344).
  • CLI: Audio —read —layer reads a one-layer file whole, no separation (b37db1122, #7345).
  • Studio: Type an exact preview zoom and see a pixel grid at high zoom (25a61016d, #5708).
  • Studio: Improve element picker cancellation feedback (f004622a6, #6900).
  • Studio: Show canvas gesture position, size and rotation (a4a84deec, #5594).
  • CLI: Support JSON telemetry status (6c0cab814, #7289).
  • CLI: The sign-in page the browser lands on follows the design (9acdce4a2, #7332).
  • Studio: Show the agent’s storyboard in a Storyboard tab beside the preview (318724f5f, #7284).
  • Core: Motion blur reports what a composition holds, as counts (a874a6324, #7306).
  • CLI: Check_report counts the browser-playable copies a check waited for (de2d21a8a, #7316).
  • CLI: Check_report names the finding that stopped the check (9fcd06cbb, #7305).
  • Core: Auto motion blur draws with the filter tier (e2bb7da25, #7288).
  • Share: Extract shared review kernel for local hosts (f54b2227f, #7134).
  • CLI: A line_unread finding carries the frames it measured around where the line was first read (a81b34410, #7294).

Fixes

  • CLI: Cloud upload tests stop flaking and two cuts at the same age count as one (555c788a3, #7352).
  • Core: Skip a video the browser can’t decode instead of freezing the film (9058fd1a7, #7355).
  • Studio Server: A video with a codec nobody listed gets a playable preview copy (cf75dfd7a, #7356).
  • CLI: Cloud render zip carries files the composition references under dot-folders (6161ae740, #7353).
  • Studio Server: MPEG-2 and DNxHD videos get a playable preview copy (6004508e6, #7348).
  • CLI: A cloud upload cut at a fixed age stops early and shows its progress (65c62f314, #7350).
  • Check: A Korean number and its counter count as one word in line reading time (bc2773d04, #7343).
  • Core: Words in a scene the preview mounts later keep their spaces (1ddd42558, #7342).
  • Lint: Flag crypto.randomUUID() as non-deterministic (cc7a760f0, #7322).
  • Core: A render no longer rewinds when a set sits beside a tween on another property (539c70cee, #7339).
  • CLI: Price GPT Image 2.6 and every GPT Image reference picture (ab50e9c14, #7307).
  • Engine: A missing frame file skips its self-verify sample instead of aborting the render (cfa0d0cef, #7334).
  • Producer: A failure before the first frame reports frame capture as its stage (fe0f54b38, #7331).
  • Engine: A render no longer finishes without an image that loaded late (a9a8d8937, #7304).
  • Producer: Segmented capture gives up on a session stuck opening or initializing (6fab21914, #7329).
  • Engine: DrawElement falls back on gpu-less linux and beginframe launches instead of hanging self-verify (18fc75dcd, #7324).
  • Core: A set that interrupts a tween holds in a real render at any worker count (3e3ba8d0d, #7318).
  • Producer: Render reads a composition src like the preview, refuses paths outside (4cf26b5b4, #7317).
  • Skills: Reverse hands billing commands to the person instead of running them (410a516ce, #7314).
  • Core: A decoded buffer’s handover leaves the routed element silent (cb8e02e82, #7309).
  • Studio Server: Proxy MPEG-4 Part 2 and MJPEG video the browser cannot decode (f3e45b492, #7310).
  • Templates: Pin the five style-sampling packs with the release-check fixes (9e2510bda, #7263).
  • CLI: Media-use voices says whose clones it lists, and —voice takes language codes (fc0b53361, #7261).
  • Core: Video starts a second early and catches up hidden, so the picture meets the cut (3e86def58, #7265).
  • CLI: Cloud render logs a line a minute while a job holds its status (41b7aeeaf, #7262).
  • CLI: Installing Chrome on a busy Windows PC no longer takes ten minutes (8fd754207, #7301).
  • Core: Accented Latin letters draw in a bundled family at its bundled weights (6011d9d0d, #7299).
  • Studio: Pressing Shift no longer re-renders the timeline (66cbabc39, #7298).
  • Core: A mover’s ::before and ::after outside its box stay in the blur (4bee04e4a, #7295).
  • Core: A mover holding a fixed child stays sharp in the filter tier (b6f2bec16, #7292).
  • Core: The filter tier’s svg no longer changes which child is last in the root (2066a2ff5, #7293).
  • Core: Blur quiets discrete callbacks instead of undoing what they wrote (cd7e93baa, #7271).

Internal

  • Engine: The effect scan resolves its options before scanning (ca64c2a6d, #7336).
  • Studio: Kill and retry a test Chrome that hangs after it starts listening (d2b170ce5, #7337).
  • Engine: Blur gates fail on CI when they cannot run, and prove blur drew (07824098e, #7302).
View the full commit range.
ReleaseCLICore
Released - 2026-11-06
A render now matches preview when a set interrupts a running tween, so it no longer comes out blank. cloud render also keeps going when a project uses a font with no file on this computer. It falls back to the next font in the stack, as a local render does, and names the missing font.

Fixes

  • CLI: A font missing from this computer no longer stops a cloud render, and is named (b56e2c036, #7287).
  • Core: A render lands where preview does when a set interrupts a tween (6abc62a17, #7283).
View the full commit range.
ReleaseCLICore
Released - 2026-11-05
A render on a busy Windows PC no longer stalls behind its own lint. Under heavy CPU load in our test, the wait before the browser check fell from over 30 seconds to about 3. check also stops piling up GPU memory on graded images, and normalize-audio now reports the level a held clip actually stays at.

Fixes

  • CLI: A render’s lint runs at normal priority, so a busy Windows PC no longer stalls it (72326a3ac, #7268).
  • CLI: Normalize-audio says where the target stays when a limit holds its gain (4935d6736, #7267).
  • Core: Check’s no-draw seeks no longer upload graded images to the GPU (256b84a41, #7264).
View the full commit range.
ReleaseProducerCLIEngine
Released - 2026-11-05
Set HF_VIDEO_FRAME_WINDOW=true with segmented capture and a long render holds far less on disk. Each segment extracts only the frames it shows, then deletes them. Segmented capture also checks drawElement frames against their reference samples now, and check --budget stops a whole check in time.

Features

  • Producer: Render long videos with windowed source frames behind a flag (968f97fe9, #7242).
  • Producer: A capture segment extracts the frames it shows and deletes them (599eaad2b, #7241).
  • CLI: Check —budget stops the whole check in time and reports what it found (b7d72c947, #7245).
  • CLI: Info —media lists every clip the render hears, on the film’s clock (df54f380c, #7235).

Fixes

  • CLI: Check judges SVG gradient text by its gradient stops, not as black (478ef2f26, #7258).
  • Engine: Name a failed script’s origin and error before the free text of its warning (7290ee68c, #7256).
  • CLI: Normalize-audio —reference stops short of the peak ceiling instead of refusing (2f2195515, #7254).
  • Producer: Segmented and sequential capture check drawElement samples (8df4f21c2, #7255).
  • Core: Two scenes drawing SVGs with the same ids each show their own (b108f8512, #7251).
  • CLI: End a stalled cloud upload and send it again (f98218a22, #7237).
  • Core: Decode WebKit sources by memory budget, not by length (600bfa451, #7232).
  • Core: Snapshot and preview show a clip on the frame render shows it (5377b756b, #7238).
  • Producer: An export over the peak ceiling loses only what it must (d40d0b251, #7246).
  • Lint: Every selector in a comma list counts as hidden by authored CSS (a664f99ec, #7252).
  • Core: The bundle’s contract check reads a timeline registered in a local script (0b3559824, #7248).
  • CLI: Check sees an SVG stroke drawing on, so it no longer calls it a dead stretch (644b166e7, #7250).
  • CLI: An unknown command answers in a few lines and says what to run instead (0a6746e1d, #7247).
  • CLI: Lint says nothing when the OS refuses to lower its priority (c1977fab3, #7244).
  • Lint: Compositions in .hyperframesignore no longer count as the project’s (80e02e74a, #7239).
  • CLI: Name the network cause of a failed fetch in the error box (f55990ebc, #7236).
  • Core: Hlg footage tone-maps to sdr at the bt.2408 reference white (5ee9e928d, #7234).

Internal

  • Producer: Deferred frame extraction moves out of the distributed code (35cbca992, #7240).
View the full commit range.
ReleaseCLISkillsStudio Server
Released - 2026-11-05
Capture now retries a refused screenshot once before reporting it, and Studio’s cancel route replies only after the agent has stopped. Windows init no longer crashes at a drive root, and checks skip contrast samples taken mid-motion.

Features

  • Studio: Alt marquee removes the covered items from the selection (bdf9ba0ee, #5680).
  • CLI: Print the render’s reference_background as an @hf-result line and in batch manifest rows (58b9ec0ef, #7203).

Fixes

  • CLI: Billing re-reads the account on Enter and sells nothing it can’t price (5f7b85c5d, #7226).
  • Engine: Read a video’s length from its packets when headers state none (2af37ac0c, #7233).
  • CLI: Every settings file follows HYPERFRAMES_CONFIG_DIR (216395e98, #7229).
  • Core: Keep long WebKit sources and unloaded clips on the audio clock (b7a8cfa73, #7225).
  • CLI: Previews and every per-user cache follow HYPERFRAMES_CACHE_DIR (ecf0e1438, #7224).
  • Producer: Resolve template sub-composition entries in the shared compile stage (0180c603d, #7217).
  • Core: A multi-worker render replays overlapping tweens behind the timeline stand-in (b96d3c8bd, #7231).
  • Producer: Export sizes an unsized phone video as it plays, not as stored (659ef568d, #7228).
  • CLI: Capture takes a refused screenshot once more before naming it (ada71da92, #7222).
  • Skills: Reword the billing lines the Snyk audit reads as hiding cost (7bebcb9fc, #7218).
  • Studio Server: The cancel route replies once the adapter’s stop has settled (18513d46d, #7221).
  • Engine: Report a pending setup as a setup timeout, not zero duration (b98718fe9, #7211).
  • Studio Server: A refused cut says which way it was refused (7050b9b5b, #7212).
  • CLI: Init no longer crashes copying into a folder at a Windows drive root (d810bdbb2, #7220).
  • Core: Blur scan and eventful reads put back the DOM a timeline call changed (898d0fb00, #7191).
  • CLI: Billing stops checkout work once the payment wait ends, even mid sign-in refresh (060e6e4a1, #7216).
  • CLI: Two CLI fixes from Wenbo’s reverse test (paywall link, plan label) (1fecf5b82, #7099).
  • CLI: Reverse start makes its —dir project, and init takes the video already in it (6728b82e6, #7089).
  • CLI: Measure reads an odd-sized box exactly (823cd126e, #7090).
  • CLI: Timeline apply checks the overlap of a plan’s end state, not each step (fa1942d5a, #7214).
  • Core: A scrolled list keeps its offset when blur moves the root (aa34cffe4, #7190).
  • Lint: A video gets no timing from its wrapper, and the docs and hints stop implying it (e976fdbfa, #7210).
  • CLI: Check skips a contrast sample measured over a layer that is mid-motion (7862e271d, #7205).
  • Core: Stop script loading time from shifting WAAPI frames (982070388, #5017).
  • CLI: Bound the loopback Studio probe so a dropped connection costs 1 s, not 10 (6e8454d6d, #6466).
  • CLI: Lint and check accept —lint-verbose, and two skills stop teaching —describe false (924bb64da, #7201).
  • Runtime: Fail readiness waits when a buildReady promise rejects (071ec1fdd, #5746).

Docs & Examples

Catalog

  • Registry: Add path-traced-3d example with raster preview and path-traced export (d452a6fad, #7219).

Internal

  • Engine: Pin the motion blur sweep defects A to O by their symptoms (f3e5b81df, #7149).
  • Codegen: Resync cloud client from EF dd7ca48f (3b3d7c2cd, #7207).
View the full commit range.
ReleaseProducerCore
Released - 2026-11-05
Local renders on FFmpeg 4 no longer turn a finished mix down by several dB when they match its length to the video. Motion blur can now choose when its shutter opens.

Features

  • Core: data-motion-blur-phase sets when the motion-blur shutter opens in each frame (aace91b, #6983).

Fixes

  • Render: On FFmpeg 4, a mix already under the peak limit is no longer turned down by several dB when its length is matched to the video. Two near-identical mixes no longer land about 4 LU apart (f6ae9bf, #7199).
View the full commit range.
ReleaseCLIFontsCatalog
Released - 2026-11-04
Cloud renders no longer fail on common font styles, and they now carry the system fonts a project uses. A wedged render stops itself, and check no longer hangs on long videos.

Features

  • CLI: Cloud render carries the system fonts a project uses in its zip (cba66f20a69c9, #7165).

Fixes

  • CLI: Tell a failed billing checkout apart from a payment not finished in time (60ca970ed60df, #7185).
  • Fonts: Stop failing cloud renders on var() shorthands, font-X-400 names and linked font sheets (af0c815c72b14, #7166).
  • CLI: Check copies only the stretch of a video it plays and stops after 2 minutes of copies (c6f87f59b0c9a, #7182).
  • CLI: Report why a reverse session could not be recorded (21e2038595047, #7186).
  • CLI: Check thins its craft samples when frames are slow, so the pass ends near 90 seconds (be8122d0c4054, #7183).
  • CLI: A command waiting on the project lock says what it waits for (00ea86570a8c8, #7184).
  • Engine: A background image that never finishes decoding no longer stalls the frame (73e65e2c7826b, #6972).
  • CLI: A track with no beats answers an empty result, not an error (cffd70f2f9b24, #7173).
  • Core: A logo image no longer renders stretched to the frame bottom (3d78ac0fa6671, #7179).
  • CLI: A wedged render trips its 60 s watchdog, one local render at a time, and fonts the cloud can’t resolve are flagged (d4e4b07e3cbc1, #7168).

Docs & Examples

  • Nav: The docs menu button names the section you are in (054cf4f119a76, #7133).
  • Drop the hidden add-a-transition button; hand-off now works on windows and linux (97b805dcbdb11, #7132).
  • Say HyperFrames is free, and what the Studio app’s Pro plan adds (c3eb052545668, #7131).

Catalog

  • Catalog: A search box over the cards; it fills the ?q= filter the gallery already reads (b2b034fcd88f9, #7147).

Internal

  • Studio: The studio-open journey counts the same thumbnails on every runner image (2f321e0b0bb13, #7187).
  • Studio: The timeline viewport gate runs one pinned Chrome build, not the runner’s (2679bcdee71aa, #7180).
View the full commit range.
ReleaseProducerLintStudio Server
Released - 2026-11-04
A render that stalls while its pages load now retries with fewer workers instead of hanging. A full disk now says so, and splitting a clip that follows another clip cuts where it plays.

Fixes

  • Producer: Retry with fewer workers when every page times out loading (04bc4737ad1d3, #7171).
  • Lint: Flag a data-automation or data-fx-chain the render cannot read (cd7b7383cb19c, #7169).
  • Studio Server: Splitting a clip that starts after another clip cuts where it plays (0bbc9b2943ad6, #7172).
  • Producer: A drive that refuses frame links gets a copy, whatever code it refuses with (845bd638a7784, #7163).
  • Engine: A full disk during frame extraction says so, not that the video is broken (ac1948a88b89a, #7161).
  • CLI: Address skills install and update hints to the person (604a25fbaaba5, #7160).
  • CLI: A failed run exits 1 when its output pipe closes early (b3b6a8116bb58, #7158).

Docs & Examples

  • Discord in the top bar and footer, and each Discord link tagged by where it sits (21f2119194ffd, #7153).
View the full commit range.
ReleaseProducerCLISkills
Released - 2026-11-04
A render to the top of a Windows drive, like D:\, now saves instead of failing. A refused cloud upload names the file and the reason, and a render whose page never loads fails once with a plain reason.

Fixes

  • Producer: Fail a render once when its page never became ready (5cea10e76e687, #7154).
  • CLI: Name the refused file and parameter when a cloud upload is rejected (11f43268a1ebc, #7155).
  • CLI: An output in a drive root (D:\) no longer fails before it is written on Windows (50ce9fb514fef, #7151).

Docs & Examples

  • Skills: Stop directing the agent to install, update or remove skills (6857bb08e8464, #7102).
View the full commit range.
ReleaseCLICore
Released - 2026-11-04
A spending limit you set now holds on every paid media call, and the voice list comes from your HyperFrames account. Agents also learn when the CLI or skills are out of date, and hyperframes update --check reports it.

Features

  • CLI: Surface outdated CLI and skills to agents; add hyperframes update —check (7cb6018c6be55, #7094).

Fixes

  • CLI: A credit limit the person names holds on every paid media call (76da5f6932600, #7145).
  • Core: A host inside a scene keeps its own timeline when its file shares a composition id (7e717189c5f89, #7143).
  • CLI: The voice a film uses is listed from the HyperFrames account, never the heygen sign-in (19be35a463a4b, #7144).
View the full commit range.
ReleaseCLIProducerSkills
Released - 2026-11-04
hyperframes billing now shows the price and pays from the terminal on Enter, and billing add-credits replaces billing top-up. Templates pull no longer counts an empty folder or a stray file as an installed template, and media-use sends pictures without ffmpeg.

Features

  • CLI: Billing and upgrade links carry the signed-in workspace (c5a5e0882, #7103).
  • CLI: Billing top-up is renamed to add-credits with no alias (d21877eb2, #7121).
  • CLI: Billing shows the price and pays from the terminal on Enter (87a42e747, #7068).

Fixes

  • CLI: Check skill freshness at the install destination (b02fe6506, #7120).
  • CLI: Check ignores the cancelled fetch of a proxy-swapped media file, not a broken image (e46ecd850, #6928).
  • CLI: Check waits for the composition as long as snapshot and render do (f487a20b2, #6947).
  • CLI: Media-use sends a picture on a machine with no ffmpeg (3adc9f130, #7112).
  • CLI: The FFmpeg cannot-start error names the OS error code or signal (482bcd73e, #7115).
  • CLI: Templates pull reuses only a template it pulled, not any path in the way (d88d2cce4, #7116).
  • Producer: A laptop that sleeps mid-render no longer counts the sleep as a capture stall (e2edc93f5, #7096).
  • Producer: A stalled capture resumes at the first unwritten frame, not frame 0 (3dc82f18e, #7104).
  • Check: The analysis restarts the idle window with every call it makes (3aaed65ef, #6919).
  • CLI: Don’t invent a purchase link when the server withholds upgrade_url (a5a612133, #7031).

Performance

  • Studio: A long film’s media durations write the store once per file, not once per clip (3a28ef41a, #6745).

Docs & Examples

  • Skills: Reverse-any-video runs sign-in and payment itself and opens the result (341fdd353, #7101).

Internal

  • Skills: Core-skills test matches the reverse start wording (9304d73ec, #7114).
  • CLI: Templates pull unpacks the verified pack from memory (faae6017d, #7084).
View the full commit range.
ReleaseStudio ServerEngineCLI
Released - 2026-11-03
HyperFrames plan members can pull style templates with hyperframes templates pull and make films in them with the style-sampling skill. The CLI now installs skills that match its own release and no longer auto-updates across 0.x minor versions.

Features

  • Engine: A script-load failure names where the script came from and why it failed (dec465949, #7088).
  • Skills: Style templates on the HyperFrames plan (2daedcdaf, #6842).
  • CLI: Diff —offset compares the original at t with yours at t + offset (3f42dc1c7, #7057).

Fixes

  • Studio Server: A render that ran over 5 minutes can still be read after it finishes (fc006f713, #7087).
  • CLI: No auto-update across 0.x minors; install skills at the CLI’s release tag (b2acef586, #7013).
  • Core: Safari audio frozen after its cut is pulled onto the playhead at 0.5 s behind, not 1 s (47dddedd6, #7082).
  • CLI: Measure cuts reads a zoom that speeds up as a move, not a cut (7ae108005, #7075).
  • CLI: Measure picks more than 100 frames on ffmpeg 8 (e9de593fe, #7071).
  • Core: Keep overflowing content and SVG clip paths in motion-blurred frames (d89bf35b1, #7080).
  • CLI: Measure and diff tell an agent what to type after a wrong call (91e7f4d48, #7072).
  • Studio Server: A project’s signature no longer freezes the host while it walks the files (ce9830fec, #7073).

Performance

  • Studio Server: Preview steps skip the page parse when a tag scan answers (4ceec0171, #7092).
  • Parsers: EnsureHfIds skips the parse when every element already has its id (35753f382, #7069).

Docs & Examples

  • Skills: Reverse checks the plan before downloading a linked video (95a86a19c, #7076).
View the full commit range.
ReleaseStudio ServerProducerCore
Released - 2026-11-03
Renders that capture faster with BeginFrame now fall back to screenshot capture when that path fails. A render request can also ask for screenshot capture directly.

Features

  • Studio Server: The preview records the kind and origin of each early error (b84835c41, #7041).
  • Producer: A render request can force screenshot capture for that render (79b6af9b4, #7066).

Fixes

  • Producer: A BeginFrame capture failure re-renders on a screenshot session (9a2cd9e61, #7070).
  • Core: Audio no longer plays fast for a moment after Play (3eead5432, #7067).
  • CLI: Reverse on Free runs billing subscribe credited to the run (3baf81f9a, #7046).
View the full commit range.
ReleaseCLICoreStudio
Released - 2026-11-03
Studio playback no longer freezes WebGL scenes when motion blur is on. Preview playback now lands on the same frame as a scrub or an export when a set cuts into a running tween. Your CLI login now takes priority over an API key left in your shell.

Features

  • Lint: overlapping_gsap_tweens now also flags a set that fires while a tween on the same element and property is still running, a pattern that plays differently from how it scrubs and exports (5e30bbdbe, #7059).
  • Preview: A video the browser cannot play, such as HEVC without a decoder or ProRes, shows its own frame at the playhead instead of black while its playable copy is made. Copy progress is now reported at Full quality too (eb3562966, #6589).

Fixes

  • Studio: With motion blur on, a scene that draws to a WebGL canvas no longer freezes during preview playback. Motion blur now falls back for those scenes, as it already did in renders (112ba5330, #7060).
  • Core: Preview playback now lands on the same frame as a scrub or an export when a set fires inside a running tween on the same property. Before, a word hidden just before its pop-in ended could stay on screen while playing (0f85af7c7, #7061).
  • CLI: hyperframes cloud render no longer offers --page-motion-blur, because the hosted render API rejected requests that used it. Turn motion blur on in the composition with data-motion-blur="on". Local hyperframes render --page-motion-blur is unchanged (dffc640e8, #7062).
  • CLI: A session from hyperframes auth login now takes priority over HEYGEN_API_KEY and HYPERFRAMES_API_KEY, so a key left in your shell no longer replaces the account you signed in with. The key still wins when HEYGEN_API_URL or HEYGEN_API_BASE points at another host, or when the login cannot refresh (d03bdeae9, #7051).
  • Studio Server: Two exports of the same project started within one second now get their own jobs and output files. Before, the second export replaced the first (92943d99f, #7053).
  • CLI: hyperframes snapshot no longer crashes Chrome on a project with many clips cut from one 4K video. Like render, it now stops Chrome from decoding local videos it already replaces with extracted frames (81b93cf05, #6949).
  • CLI: The latestVersion value in --json output is never older than the CLI you are running, even right after an upgrade (8a6636efe, #7049).
  • CLI: hyperframes auth login --device now works without a terminal, such as in a coding agent’s shell or an SSH command. It still refuses to run in CI (de2603e63, #7045).

Docs & Examples

  • Skills: The reverse skill asks once for a credit top-up that covers the whole run when several steps run out at the same time, and builds its project with init --video (05ddddbbf, #7048).
  • Changelog: Added the weekly update for October 26 to November 2, 2026 (6feb4bec7, #7032).
  • Changelog: The v0.9.6 release notes now list four changes they had missed (4ef8c1de5, #7040).

Internal

  • Studio Server: Raised the package size budget to fit the new preview features (b22af8f25, #7044).
View the full commit range.
ReleaseCLIPlayer
Released - 2026-11-02
Audio stems can now be read through your HeyGen account, with no Gemini key. The player shows the blurred frame and the mark while assets load. Safari audio is ready at the cut, and the preview recovers its WebGL scenes after a lost context. Reverse start records a run and stops a Free account when the server blocks it. Cloud export converts media whose contents do not match its file extension, and frames the page reports unchanged skip their screenshot.

Features

  • CLI: hyperframes audio --read describes audio stems through your HeyGen account, with no Gemini key needed (acd5c30e60, #6993).
  • CLI: reverse start records a reverse run, and cloud render carries its session (7d3c225207, #7016).
  • CLI: reverse start stops a Free account when the server blocks it (7da583ec69, #7017).
  • Player: Loading assets shows the blurred frame and the mark, like Desktop (e3a7cdd2b8, #6934).

Fixes

  • Core: Safari audio is ready at the cut, and a stuck one resyncs in 1 s (c25e092114, #7024).
  • Core: The preview recovers its WebGL scenes and effects after a lost context (e8ffaa410f, #7028).
  • CLI: Cloud export re-encodes media whose bytes differ from its file extension before uploading it (472b750acb, #7033).
  • Core: A motion blur worker starting mid-film keeps the right state (01c0bf4962, #6967).
  • Core: A canvas in a blurred composition stays where it was laid out (2bdc866c85, #6975).

Other Changes

  • Engine: Add a chunk-fed encoder and the rule for which films may use it, off by default (0bcd816d5b, #7029).
  • Engine: Beginframe capture skips the screenshot on frames the page reports unchanged (3bb0a9a5b5, #7027).
View the full commit range.
ReleaseProducerCLI
Released - 2026-11-02
Renders no longer release a scene’s WebGL context early. A render stops when every composition script fails. Catalog says when the registry could not be read, and the producer reports browser-computed backgrounds.

Features

  • Producer: Report browser-computed reference backgrounds (346f0e49fa, #7007).

Fixes

  • Producer: A render stops when a capture session sees every composition script fail (070780c695, #7009).

Catalog

  • CLI: Catalog says the registry could not be read instead of listing nothing (5a07ea2e5f, #7015).

Other Changes

  • Stop releasing a WebGL context when its clip’s window has ended (6fd96ddd04, #7020).
View the full commit range.
ReleaseCLICoreStudio
Released - 2026-11-02
Snapshot now fails when a video frame on screen cannot be read, instead of finishing with black or stale videos. iPhone Safari keeps one connection per file. Undo clears a leftover transform in the preview.

Fixes

  • CLI: Snapshot fails when an on-screen video frame cannot be read (b23b51f4f0, #7011).
  • Core: iPhone Safari keeps one connection per file for the take on screen and the next (036e41fa09, #7012).
  • Studio: An undo that drops the keyframes clears the transform the old preview still shows (cd5984261a, #7005).
  • CLI: Exit-time telemetry stays silent when the temp folder cannot be written (8891449401, #6925).
View the full commit range.
ReleaseStudio ServerCLIStudio
Released - 2026-11-02
Stamping a project’s ids no longer holds up the Studio host, and long media clips no longer leave it unanswered. A preview reload writes the composition as it is now. Measure and diff say why they failed.

Features

  • Studio Server: Stamp a project hf-ids without holding the event loop (d17b958318, #7004).

Fixes

  • Studio Server: Long media clips no longer leave the host unanswered (c54f84859d, #7002).
  • CLI: Measure and diff report why they failed, and reverse reports its runs (618c486734, #6997).
  • Studio: A preview reload writes the composition as it is now, not as it was when it asked (a46412ee07, #6998).
  • Core: Keep media prefetch queue ordered (aaa5b63f55, #6996).
  • Lint: A helper script’s timeline nested by the page is not reported as unregistered (43f8b1a3fc, #6999).
View the full commit range.
ReleaseEngineStudioCore
Released - 2026-11-02
A scene that has ended now gives up its WebGL context, so the next scene is not slowed. A heavy clip’s lighter copy can be made ahead of time. Apps that host Studio can ask which action holds a key combination.

Features

  • Studio: Hosts can ask which action holds a key combination (5fca435623, #6979).
  • Core: A heavy clip’s lighter copy can be made ahead of time (e5b10f8bc2, #6982).

Fixes

  • Engine: A scene that has ended gives up its WebGL context so the next scene is not slowed (26d6e3eef1, #6984).
View the full commit range.
ReleaseChangelogAWS Lambda
Released - 2026-11-02
A Lambda render started straight on the state machine without a PlanProtocol now runs as Plan v2 instead of failing at its first step. The SDK and CLI always send "v2", so they were not affected.

Fixes

  • AWS Lambda: A state machine input with no PlanProtocol defaults to Plan v2 instead of failing with States.Runtime (758759673, #6985).

Docs & Examples

View the full commit range.
ReleaseProducerAWS LambdaGcp Cloud RunCoreCLI
Released - 2026-11-02
Distributed rendering on AWS Lambda and Google Cloud Run now runs only on Plan v2. This is a breaking release: the Plan v1 transport, the planProtocol option and the Plan v1 event and result types are removed. A preview video that runs short of data now holds instead of looping snippets.

Upgrading from 0.8

  • Upgrade the SDK and the deployment together. Redeploy your Lambda stack or Cloud Run service from 0.9.0 when you move your app to the 0.9.0 SDK.
  • Drop planProtocol from renderToLambda and renderToCloudRun calls. Leaving it out, or passing "v2", works as before. Passing "v1" now throws.
  • Old Plan v1 events are rejected. A handler or service on 0.9.0 answers a v1 payload with PLAN_PROTOCOL_UNSUPPORTED before doing any render work.
  • Removed producer exports: plan, createPlanV2FromV1, publishPlanV2FromV1, readPlanProtocol, readPlanProtocolV1, PLAN_PROTOCOL_V1, CURRENT_PLAN_PROTOCOL, PLAN_SCHEMA_VERSION, PLAN_HASH_SCHEMA, PLAN_ARTIFACT_LAYOUT, DISTRIBUTED_RENDER_CAPABILITIES and getDistributedRenderCapabilities, plus their types. Use planV2, planV2WithPublisher or publishPlanV2FromExecutionPlan instead.
  • PLAN_TOO_LARGE and PlanTooLargeError are removed from @hyperframes/producer/distributed. The plan-size cap only applied to Plan v1, and Plan v2 never raises it, so drop any checks for that error.
  • Removed adapter types: LambdaPlanProtocol, PlanV1LambdaResult, CloudRunPlanProtocol, PlanV1ResultBody, and PlanV1Event, RenderChunkV1Event and AssembleV1Event from both adapter packages.

Breaking Changes

  • Producer, AWS Lambda, Cloud Run: Remove the Plan v1 distributed transport (7f48a6894, #6970).

Fixes

  • Core: A preview video short of data holds the film instead of looping snippets (8519f2836, #6974).
  • CLI: Diff warns when yours runs at another frame rate (99223d993, #6976).
  • Core: A smaller preview copy nobody wants any more no longer swaps in (6bbda219b, #6973).
  • CLI: Diff stops counting a fast move as an extra cut (b1316e61d, #6978).
View the full commit range.
ReleaseStudioCLILint
Released - 2026-11-02
Every Studio shortcut can now be remapped by an app that hosts it. Media-treatment finds a relative grading file in the project folder. The browser install hint names only a Chrome that exists, and scenes can use Three.js or Lottie from their parent page.

Features

  • Studio: Every editor and player shortcut is remappable (9fa02badfc, #6966).

Fixes

  • CLI: Media-treatment reads a relative —grading file from the project folder (f8309b356e, #6964).
  • CLI: The browser install hint names only a Chrome that exists (7c5c1ce849, #6954).
  • Lint: A scene may use Three.js or Lottie loaded by the parent document (6b008cbc2c, #6961).

Internal

  • CLI: Run the real npx shim check only in its own CI job (c06427b063, #6969).
View the full commit range.
ReleaseShader TransitionsStudioParsers
Released - 2026-11-01
Apps that host Studio can now remap its single-key shortcuts. Media sources given as file: URLs or Git Bash paths now resolve. Cache folders follow HYPERFRAMES_CACHE_DIR, and a preview reload that timed out is tried once more.

Features

  • Studio: Hosts can remap Studio’s single-key shortcuts (57d23598a, #6957).

Fixes

  • Shader Transitions: Keep the loading panel out of snapshot and check captures (13b42bec3, #6959).
  • Cache paths follow HYPERFRAMES_CACHE_DIR (de6ec3811, #6716).
  • Parsers: Resolve file URLs and Git Bash paths in media sources (8b029f4fb, #6956).
  • CLI: Media-treatment says which media the file has when the selector matches none (465128d00, #6958).
  • CLI: Say a font or image URL is a download, not a page, when capture is given one (5c5794287, #6952).
  • Studio: A preview reload that timed out is tried once more, so an edit is not left unseen (7d8cdfbb8, #6953).
  • Core: Accept 65-point .cube LUTs, the size grading apps export (9284e69ff, #6921).
View the full commit range.
ReleaseCLIStudioSkills
Released - 2026-11-01
Signing in from the CLI now waits up to 60 minutes, so finishing checkout during sign-in no longer ends on a connection error. Trimming a clip keeps its thumbnail strip in place, and masks hold up better on moving footage.

Fixes

  • CLI: Keep browser sign-in open through checkout (34ddced2d, #6879).
  • Studio: A clip’s thumbnail strip stays put while you trim it (0ab493115, #6942).
  • CLI: A stale mask takes its frame’s colours instead of delogo’s streaks (6b0abb4eb, #6950).
  • CLI: A masked box follows the frame while the camera moves (7f8ae5b4b, #6948).

Docs & Examples

  • Skills: Animated films in reverse-any-video decide code or generation per shot (0f76a7d01, #6946).
View the full commit range.
ReleaseProducerCoreCLI
Released - 2026-11-01
One loud moment no longer turns down a whole export. Only its peaks come down, so quiet passages keep their level. Preview music keeps playing while a video swaps to a new copy, and a render now warns when it does have to lower the whole mix.

Fixes

  • Producer: An export over the ceiling limits its peaks and keeps the mix’s level (d1d631f60, #6940). A mix far over the ceiling now gets several dB of limiting on those peaks, which can be audible on dense material, and the export can differ from its preview there.
  • Core: Music keeps playing while a preview video swaps to a new copy (89a595316, #6937).
  • CLI: A render says when it lowered the whole mix, and how to keep the level (f9e8cab67, #6938).

Docs & Examples

  • Skills: Reverse-any-video gets a recipe for animated and painted films (aa77770eb, #6933).
View the full commit range.
ReleaseEngineCLIStudio
Released - 2026-11-01
Apps can upload a project’s heavy media themselves and keep each asset id. Check and snapshot use about half the memory on films cut from many clips. GPU renders work on older NVENC builds.

Features

  • CLI: The api exports offloadHeavyMedia and every offloaded file reports its asset_id (ef250cc9d, #6932).

Fixes

  • Engine: GPU renders use the NVENC preset names the host’s ffmpeg lists (90f7fe624, #6930).
  • Studio: Opening the thumbnail browser no longer stalls the server to read its version (a23cc59ee, #6931).
  • CLI: The cut detector keeps real cuts in live footage (69400df27, #6923).
  • CLI: Check and snapshot free video clips the playhead left, halving memory on cut films (6b3e7a7a9, #6929).
  • CLI: A shot from —first-frame comes back in that frame’s shape (439d01784, #6924).
  • Core: A resized preview video keeps its picture while its new copy loads (af0d68d61, #6922).
  • Engine: A video with no source no longer holds capture for 45 seconds (9aaa3ae67, #6926).
  • Engine: Passthrough keeps frame count and accepts films whose audio outlasts the picture (58428b44b, #6920).
  • Studio Server: A copy another process holds without progress ends in a named error (e5887959b, #6918).
  • CLI: Snapshot warns when self-closed audio or video clips have swallowed the page (8c22ddba0, #6915).
View the full commit range.
ReleaseProducerStudioCore
Released - 2026-11-01
Safari keeps edited films’ audio playing, and renders can pass a lone full-frame video straight through when you opt in. Apps that host Studio can show their own preview loader.

Features

  • Producer: Opt-in video layer passthrough for a lone full-canvas video (98520366a, #6914).
  • Studio: A host that draws its own loader can turn off both of Studio’s preview loaders (a7075fcb6, #6911).
  • Core: WebKit plays bare audio from a decoded buffer on the audio clock (e181d34ed, #6912).
  • Core: The playback health reading says which clock the film followed (bba3676a3, #6906).

Fixes

  • Core: Safari keeps playing edits’ audio without seeks or rate changes (2c1a10f3a, #6888).
  • CLI: Snapshot gives a seek that will not settle its own —timeout, not three minutes (52a42983d, #6910).
  • Engine: Ffprobe read intervals never carry an exponent (f486ad6d4, #6909).
  • Producer: A failed video extraction names which clip files failed (32de0196d, #6905).
  • CLI: Billing and Desktop handoff read their hosts from settings (5ce6b30bd, #6897).
  • Engine: Scale static-frame verification budget with the job (f3cdf2b47, #6901).
  • CLI: Measure ink, one output-folder flag spelling, logo wordmark variant (8a0b8a9c2, #6891).
  • Producer: Render telemetry reports beyond-viewport capture as the workers used it (bb3c3b211, #6702).
  • CLI: One cut detector that tells real cuts from flashes and fast moves (525909726, #6894).
  • CLI: Cloud render uses the composition’s data-fps and skips unused heavy files (ee50cd2fc, #6895).
  • Core: A page saved as UTF-16 bundles as its text, not NUL bytes (88f9ae846, #6580).

Internal

  • Engine: One builder for the video frame filter chain (94849bf1e, #6908).
  • Split the cli test job into two shards so each stays well under its limit (a2c5a8a02, #6902).
  • Engine: Run the non-PNG probe test on a fake clock (ef0007b00, #6907).
View the full commit range.