docs(changelog): weekly digest 2026-09-14 to 2026-09-21 (#4248)

* docs(changelog): weekly digest 2026-09-14 to 2026-09-21

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* docs(changelog): embed weekly video for 2026-09-14 to 2026-09-21

Adds the rendered weekly changelog video to the Sep 14-21 digest entry,
using the file's existing DocsVideo component and CDN path convention.

Video: 52.4s, square 1080, six themed scenes cut from the digest's eight.
Gates green before upload: hyperframes check 0 errors (layout 0 issues
across 33 samples, contrast 67/67), seam gate 0 fail / 0 warn across 7
seams, captions present across all 1572 frames, all scene midpoints and
payoff frames read individually.

CDN object verified byte-for-byte after invalidation (sha256 match,
x-cache Miss).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
James Russo
2026-09-21 18:57:46 +01:00
committed by GitHub
co-authored by Claude Opus 5
parent 0641921558
commit badf49b551
+58
View File
@@ -12,6 +12,64 @@ For exact versioned release notes, see the [Changelog](/changelog).
{/* New weekly digest entries are prepended by `bun run changelog:weekly --from YYYY-MM-DD --to YYYY-MM-DD --write`. */}
<Update
label="Week of September 14, 2026"
description="Weekly digest - September 14, 2026 - September 21, 2026"
tags={["Weekly update", "Highlights"]}
>
<Frame>
<DocsVideo
title="HyperFrames video: Weekly Changelog Sep14 21"
src="https://static.heygen.ai/hyperframes/changelog-videos/weekly-changelog-sep14-21.mp4"
/>
</Frame>
Studio became something you can build on this week. Speed ramps landed end to end, and long renders got a new capture route.
## Studio is now a library, not just an app
Host apps can take the parts of Studio they need instead of embedding the whole editor. The timeline is composable ([064192155](https://github.com/heygen-com/hyperframes/commit/0641921558eadcee0a026fa6db39e3e9e5b76f62), [#4229](https://github.com/heygen-com/hyperframes/pull/4229)), the player exposes a handle ([4ff4435e1](https://github.com/heygen-com/hyperframes/commit/4ff4435e1d46f16ae1f10a19109cd7824b9ae775), [#4227](https://github.com/heygen-com/hyperframes/pull/4227)), and timeline editing works outside EditorShell ([5262062e7](https://github.com/heygen-com/hyperframes/commit/5262062e7be20b26a7c1a4ce4be2ec3831f151d6), [#4201](https://github.com/heygen-com/hyperframes/pull/4201)). A host can place overlays on the preview and restyle its stage ([ef6432317](https://github.com/heygen-com/hyperframes/commit/ef64323174c94b58550cb32e59a6819daf1a5e41), [#4187](https://github.com/heygen-com/hyperframes/pull/4187)), import the render queue ([fd020ca27](https://github.com/heygen-com/hyperframes/commit/fd020ca27cfd6a3a78524e22d69339a3dcdf1740), [#4184](https://github.com/heygen-com/hyperframes/pull/4184)), open the ask-agent flow from a picked element ([e174b1715](https://github.com/heygen-com/hyperframes/commit/e174b1715b6ef0897693a0d278c72343d11f2a1d), [#4075](https://github.com/heygen-com/hyperframes/pull/4075)), or make the preview read-only ([84e653166](https://github.com/heygen-com/hyperframes/commit/84e65316683c5636e83720d7d4a8cd612275df9d), [#4200](https://github.com/heygen-com/hyperframes/pull/4200)). The header logo, button sizes and a stable `styles.css` subpath are exported too ([2d84937e1](https://github.com/heygen-com/hyperframes/commit/2d84937e1f28ee60dd7dc23bdedfd324793e10d0), [#4197](https://github.com/heygen-com/hyperframes/pull/4197)).
## Speed ramps, all the way through
You can author a speed ramp as a rate lane in `data-automation` ([7f452ad27](https://github.com/heygen-com/hyperframes/commit/7f452ad27656f14e58403069190c1856b1a91a0b), [#4129](https://github.com/heygen-com/hyperframes/pull/4129)), edit it in Studio with a lane and presets ([0c158be16](https://github.com/heygen-com/hyperframes/commit/0c158be165068cbbce55d0613750e7474d3c486a), [#4153](https://github.com/heygen-com/hyperframes/pull/4153)), and render it with the same source-time mapping the preview uses ([bdecae066](https://github.com/heygen-com/hyperframes/commit/bdecae066a1a9a1f270b29378975b5a1830de4b0), [#4143](https://github.com/heygen-com/hyperframes/pull/4143)). The render matches what you saw. No flag to turn any of it on.
## Timeline editing
Copy, paste and duplicate clip groups ([0b6d1039e](https://github.com/heygen-com/hyperframes/commit/0b6d1039ed0a799fd088fd7af8a4b9440208e23a), [#4064](https://github.com/heygen-com/hyperframes/pull/4064)). The main track is magnetic and closes gaps when you delete ([8fe480c0a](https://github.com/heygen-com/hyperframes/commit/8fe480c0a0a4796ebc4b12f05f45ac1329707bb9), [#4069](https://github.com/heygen-com/hyperframes/pull/4069)). Undo and redo moved into the timeline toolbar ([f9fc55218](https://github.com/heygen-com/hyperframes/commit/f9fc55218880ff62bb580d8a2340cfe4bf323282), [#4196](https://github.com/heygen-com/hyperframes/pull/4196)). Trimming shows the snap guide and the frame at the edge you are dragging ([86667203c](https://github.com/heygen-com/hyperframes/commit/86667203ce14adc398326fe75bd5af81a1dd6436), [#4163](https://github.com/heygen-com/hyperframes/pull/4163)). The timeline shows one row per top-level element ([7797c5ead](https://github.com/heygen-com/hyperframes/commit/7797c5ead4c0ecd41745b3be9b8f5a266762e603), [#4132](https://github.com/heygen-com/hyperframes/pull/4132)), and the preview gained ruler and safe-margin toggles ([898d27869](https://github.com/heygen-com/hyperframes/commit/898d27869ea16aeb6e58d7f6fe0ef1267ccbfe30), [#4127](https://github.com/heygen-com/hyperframes/pull/4127)).
The CLI caught up. `hyperframes timeline` prints a project's tracks and clips ([0a5c23517](https://github.com/heygen-com/hyperframes/commit/0a5c235173ddcc1118e68eb6d84d0b01b6895aa6), [#4138](https://github.com/heygen-com/hyperframes/pull/4138)), reports real media durations ([7597b80c9](https://github.com/heygen-com/hyperframes/commit/7597b80c950f22ab61dcc5fec4bb59e37f05fe64), [#4169](https://github.com/heygen-com/hyperframes/pull/4169)), lists nested clips in one flat list ([ac0d8ced2](https://github.com/heygen-com/hyperframes/commit/ac0d8ced2a19f2ef9700e57f5b2d2297992cb9e9), [#4173](https://github.com/heygen-com/hyperframes/pull/4173)), and now has editing verbs ([f92d017b9](https://github.com/heygen-com/hyperframes/commit/f92d017b999d26b14c49a8439dc16d2e476bffde), [#4221](https://github.com/heygen-com/hyperframes/pull/4221)).
## One design system, and a layout you can move
Studio moved onto shared primitives: buttons, icon buttons, tooltips and tabs ([01aa446ed](https://github.com/heygen-com/hyperframes/commit/01aa446edf6a4282a6ac1fc080a002478f91434b), [#3622](https://github.com/heygen-com/hyperframes/pull/3622)), then menus, popovers and value controls ([3ec26b5e2](https://github.com/heygen-com/hyperframes/commit/3ec26b5e27d0e935c8c30ecceed73ee4ef2599d4), [#4191](https://github.com/heygen-com/hyperframes/pull/4191)). Every design value lives in one theme file ([339dc7602](https://github.com/heygen-com/hyperframes/commit/339dc76026b90828d29700ff13edcb3e364852c3), [#3621](https://github.com/heygen-com/hyperframes/pull/3621)), timeline colours read from CSS tokens ([9bd6da848](https://github.com/heygen-com/hyperframes/commit/9bd6da848fb39513ed4e21911c574315aab477e5), [#4211](https://github.com/heygen-com/hyperframes/pull/4211)), and Studio is on Tailwind CSS v4 ([68b61675e](https://github.com/heygen-com/hyperframes/commit/68b61675ed4debabe1cbd453b9b926cf76451b5f), [#3618](https://github.com/heygen-com/hyperframes/pull/3618)). A test now fails the suite on a class that resolves to nothing ([93ff9a994](https://github.com/heygen-com/hyperframes/commit/93ff9a994d5f6f7770035a80bf3609d09f15f8c0), [#3623](https://github.com/heygen-com/hyperframes/pull/3623)).
Panels sit on a dockable, persisted layout ([98e8372a0](https://github.com/heygen-com/hyperframes/commit/98e8372a0aaaefd498a558db96ed2d2feac3a275), [#4192](https://github.com/heygen-com/hyperframes/pull/4192)) built on a new dock engine ([dc9469244](https://github.com/heygen-com/hyperframes/commit/dc94692441d6aaf4ed56531ba1f88ac4c48b76b0), [#4165](https://github.com/heygen-com/hyperframes/pull/4165)). Dividers and tabs work from the keyboard, and side columns fit narrow windows ([e505dcc5c](https://github.com/heygen-com/hyperframes/commit/e505dcc5c5b507c45b5010baa31b836b934dab29), [#4186](https://github.com/heygen-com/hyperframes/pull/4186)). UI preferences scope per project ([a192701ad](https://github.com/heygen-com/hyperframes/commit/a192701adb118e510d6c4f284108e99f2e37ed85), [#4093](https://github.com/heygen-com/hyperframes/pull/4093)).
## Motion blur
Capture accumulates sub-frame samples ([0a1c6f5a4](https://github.com/heygen-com/hyperframes/commit/0a1c6f5a457ca1345d6b8ccede04769a0e009719), [#4019](https://github.com/heygen-com/hyperframes/pull/4019)) with an adaptive per-frame sample count ([2ab7b8686](https://github.com/heygen-com/hyperframes/commit/2ab7b8686870cb435674e20d48b4100db2fa2052), [#4031](https://github.com/heygen-com/hyperframes/pull/4031)), and it is reachable from a render ([b64a7a3a6](https://github.com/heygen-com/hyperframes/commit/b64a7a3a67ae1f5c22915a88938853169eb3cea2), [#4020](https://github.com/heygen-com/hyperframes/pull/4020)). Registry blur now matches After Effects shutter-based blur ([9aa60a844](https://github.com/heygen-com/hyperframes/commit/9aa60a844fa645ef92949cf6025ddbb634a97e63), [#4008](https://github.com/heygen-com/hyperframes/pull/4008)), and you mark an element to blur it instead of calling a function ([752b55278](https://github.com/heygen-com/hyperframes/commit/752b55278986089636aaf3b2eb113d1da2f037d7), [#4045](https://github.com/heygen-com/hyperframes/pull/4045)). A capture route that cannot blur fails loudly instead of quietly shipping sharp frames ([77a45f608](https://github.com/heygen-com/hyperframes/commit/77a45f6080daedd12ab67a3d1c9d165b8ae003b3), [#4026](https://github.com/heygen-com/hyperframes/pull/4026)).
## Long renders
There is a new segmented capture route for long-form work. It plans segments, writes a manifest keyed by a content-addressed plan hash, skips segments it already validated on resume, and recycles the browser between segments. It is **opt-in behind `HF_SEGMENTED_CAPTURE`** and is not the default yet. The flip to routing long renders through it automatically is a separate release step, gated on a 40-minute soak.
Reliability work landed alongside it. Disk capture stops early when the frames cannot fit ([35a4fe1da](https://github.com/heygen-com/hyperframes/commit/35a4fe1da7e6564693fbc96996eeaa96836a2ca5), [#4164](https://github.com/heygen-com/hyperframes/pull/4164)), a dead browser tab retries once ([73f39862f](https://github.com/heygen-com/hyperframes/commit/73f39862f2019a13d9a36f635c808e5cba7fc57e), [#4162](https://github.com/heygen-com/hyperframes/pull/4162)), and a CDP screenshot refusal retries instead of failing the render ([a0a6244be](https://github.com/heygen-com/hyperframes/commit/a0a6244be7a40956c5343f5846609e584ee5c6b5), [#3892](https://github.com/heygen-com/hyperframes/pull/3892)). Render events now carry Chrome memory and the capture path they took.
## Playback and output
Playback waits for real readiness instead of guessing. Play gates on composition readiness ([72b223d57](https://github.com/heygen-com/hyperframes/commit/72b223d57f5bf21c91ba77c244254672bf9c6023), [#4054](https://github.com/heygen-com/hyperframes/pull/4054)), cross-origin compositions wait for their assets ([a7282dcd0](https://github.com/heygen-com/hyperframes/commit/a7282dcd0eb888ab496dcbd41a1e35ac2a3bb1c7), [#4103](https://github.com/heygen-com/hyperframes/pull/4103)), and the interactive clock absorbs a main-thread stall instead of skipping past it ([2de3ca5f8](https://github.com/heygen-com/hyperframes/commit/2de3ca5f86da3b8bb2fdc3e62dd181c4ca565f55), [#4053](https://github.com/heygen-com/hyperframes/pull/4053)). A finished film rests on its last frame ([f4e00ce2b](https://github.com/heygen-com/hyperframes/commit/f4e00ce2b52591bd901d937debb1922b321cb0d7), [#4158](https://github.com/heygen-com/hyperframes/pull/4158)), and a WebGPU composition never renders silently blank ([9981d9afb](https://github.com/heygen-com/hyperframes/commit/9981d9afb74e1280bf7136cd0043d895cb570b24), [#4091](https://github.com/heygen-com/hyperframes/pull/4091)).
A composition with no authored length now takes it from its clips ([fa44d7621](https://github.com/heygen-com/hyperframes/commit/fa44d7621d3aa664761731322a6cda62b1444b58), [#4174](https://github.com/heygen-com/hyperframes/pull/4174)), with video, audio and image length coming from one shared resolver ([09aadd86a](https://github.com/heygen-com/hyperframes/commit/09aadd86a5b87805bb4917604199e4367627d8d7), [#4166](https://github.com/heygen-com/hyperframes/pull/4166)). HLS is available as an output format from both the producer ([462f9db73](https://github.com/heygen-com/hyperframes/commit/462f9db73dc0951a112a057416d03effb2fcf1a0), [#4014](https://github.com/heygen-com/hyperframes/pull/4014)) and the CLI ([e4b1832fa](https://github.com/heygen-com/hyperframes/commit/e4b1832fadd4c063bcf9a19cd351684815fbc23e), [#4022](https://github.com/heygen-com/hyperframes/pull/4022)).
## CLI
macOS 12 users get Chrome 150 automatically and can render again ([0cde88433](https://github.com/heygen-com/hyperframes/commit/0cde88433071eb0572ebe84f3b5c1680f54f537c), [#4185](https://github.com/heygen-com/hyperframes/pull/4185)). Capture runs are bounded and WebGL navigation degrades instead of hanging ([952e9228b](https://github.com/heygen-com/hyperframes/commit/952e9228b5cdf4387ecb4b6f220ef8e5d9143a73), [#4215](https://github.com/heygen-com/hyperframes/pull/4215)). A failed Docker render names the container's last error ([45f92e557](https://github.com/heygen-com/hyperframes/commit/45f92e55725364003718b7e3c36e05179dcbf43a), [#4168](https://github.com/heygen-com/hyperframes/pull/4168)), and a missing or stale Studio build is caught before it crashes ([de9206e0f](https://github.com/heygen-com/hyperframes/commit/de9206e0f8512ea6fca539c981c1688db6771045), [#4076](https://github.com/heygen-com/hyperframes/pull/4076)).
For exact versioned release notes, see the [Changelog](/changelog).
</Update>
<Update
label="Week of September 7, 2026"
description="Weekly digest - September 7, 2026 - September 14, 2026"