diff --git a/docs/weekly-updates.mdx b/docs/weekly-updates.mdx
index 365173119e7..0e3bfc082f2 100644
--- a/docs/weekly-updates.mdx
+++ b/docs/weekly-updates.mdx
@@ -12,6 +12,94 @@ 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`. */}
+
+
+
+
+
+
+Renders match the preview in more places, and a re-render gives the same film every time. Motion blur draws with the filter tier by default and can set when its shutter opens. Studio scrubs full-quality video and shows the agent's storyboard. Cloud renders carry their fonts and upload big files in parts. `check` replays an unchanged project in about a second. v0.9.6 through v0.9.26 shipped.
+
+## Renders match the preview
+
+A render now matches the preview when a GSAP `set` interrupts a running tween, so it no longer comes out blank ([6abc62a17](https://github.com/heygen-com/hyperframes/commit/6abc62a1796f7ebafd001dd13869a049f1f87dc5), [#7283](https://github.com/heygen-com/hyperframes/pull/7283)). That holds at any worker count ([3e3ba8d0d](https://github.com/heygen-com/hyperframes/commit/3e3ba8d0d076f1487b4e0aa9261ed148c26936eb), [#7318](https://github.com/heygen-com/hyperframes/pull/7318)). A `set` beside a tween on another property no longer rewinds the render ([539c70cee](https://github.com/heygen-com/hyperframes/commit/539c70ceea4607883fb79dbc55eae2346ce1a91d), [#7339](https://github.com/heygen-com/hyperframes/pull/7339)). A `set` written before its tween no longer erases the tween's end, so a fade-in that follows a starting `set` ends fully visible ([75fe18c62](https://github.com/heygen-com/hyperframes/commit/75fe18c621be5297d7b09a788fabc75a3cd6c734), [#7397](https://github.com/heygen-com/hyperframes/pull/7397)). Preview playback lands on the same frame as a scrub or an export in the same case ([0f85af7c7](https://github.com/heygen-com/hyperframes/commit/0f85af7c7fd90ab755cd6f5c7f879eef7ed2aacc), [#7061](https://github.com/heygen-com/hyperframes/pull/7061)).
+
+Every render seeds its random values, so a re-render with the same settings gives the same film at any worker count ([eb16510a1](https://github.com/heygen-com/hyperframes/commit/eb16510a10fbc30f230ae2b7d6e5a7ac50e31eeb), [#7410](https://github.com/heygen-com/hyperframes/pull/7410)). Page timers run on film time during a render ([59c2065d6](https://github.com/heygen-com/hyperframes/commit/59c2065d636700b629b8f6add9132cb7008d98c8), [#7362](https://github.com/heygen-com/hyperframes/pull/7362)), at every worker count ([fed14b016](https://github.com/heygen-com/hyperframes/commit/fed14b0161baa6edf170ba37e2fb4a0f4656a8f1), [#7390](https://github.com/heygen-com/hyperframes/pull/7390)). A render no longer finishes without an image that loaded late ([a9a8d8937](https://github.com/heygen-com/hyperframes/commit/a9a8d8937750db083e843da06a75c2febb3738d2), [#7304](https://github.com/heygen-com/hyperframes/pull/7304)), and script loading time no longer shifts WAAPI frames ([982070388](https://github.com/heygen-com/hyperframes/commit/982070388eeb4429d21c7bdd8bb61c7e24e303ae), [#5017](https://github.com/heygen-com/hyperframes/pull/5017)). Snapshot and preview show a clip on the same frame the render does ([5377b756b](https://github.com/heygen-com/hyperframes/commit/5377b756b5d1fcf06171a133b715003f05ff71c7), [#7238](https://github.com/heygen-com/hyperframes/pull/7238)). A sub-composition written as a full HTML document with its `` inside now renders instead of failing with zero duration ([caa62fe68](https://github.com/heygen-com/hyperframes/commit/caa62fe68ba49a851b82331088ce57f9f6fee8e8), [#7249](https://github.com/heygen-com/hyperframes/pull/7249)).
+
+Lint flags a `set` that fires inside a running tween on the same property ([5e30bbdbe](https://github.com/heygen-com/hyperframes/commit/5e30bbdbe14b8295f8102c6439aa8bfdacc0fd1e), [#7059](https://github.com/heygen-com/hyperframes/pull/7059)), and `crypto.randomUUID()`, which changes on every render ([cc7a760f0](https://github.com/heygen-com/hyperframes/commit/cc7a760f03991c74bf27dc6e1784dac5619ef4f7), [#7322](https://github.com/heygen-com/hyperframes/pull/7322)).
+
+## Motion blur
+
+Motion blur is still opt-in with `data-motion-blur="on"`. The default `auto` tier now draws with the filter tier. Capture stays available with `data-motion-blur-tier="capture"` for spins and zooms that need a real streak ([e2bb7da25](https://github.com/heygen-com/hyperframes/commit/e2bb7da25da9d268e33d766683885ad69b088169), [#7288](https://github.com/heygen-com/hyperframes/pull/7288)). `data-motion-blur-phase` sets when the shutter opens in each frame. Leave it unset and the shutter stays centred on the frame ([aace91b5e](https://github.com/heygen-com/hyperframes/commit/aace91b5ec0d937772f66ab06e63c5755e579646), [#6983](https://github.com/heygen-com/hyperframes/pull/6983)). Distributed and range renders now blur a film the same way a whole render does ([c38ac5438](https://github.com/heygen-com/hyperframes/commit/c38ac5438c751094a720c55c68bd15fc6450ec37), [#7311](https://github.com/heygen-com/hyperframes/pull/7311)).
+
+Blurred frames keep overflowing content and SVG clip paths ([d89bf35b1](https://github.com/heygen-com/hyperframes/commit/d89bf35b1dcd4a1652062148ab1fd4f7ad1897ce), [#7080](https://github.com/heygen-com/hyperframes/pull/7080)), a mover's `::before` and `::after` outside its box ([4bee04e4a](https://github.com/heygen-com/hyperframes/commit/4bee04e4a1590fb3b33da5b7aabcd435b8cd6b95), [#7295](https://github.com/heygen-com/hyperframes/pull/7295)), and a scrolled list's offset ([aa34cffe4](https://github.com/heygen-com/hyperframes/commit/aa34cffe4b8d66053bc1bf999275b12265c22ab7), [#7190](https://github.com/heygen-com/hyperframes/pull/7190)). A mover holding a fixed child stays sharp ([b6f2bec16](https://github.com/heygen-com/hyperframes/commit/b6f2bec165af61a0a1103fc416814146849a4fdf), [#7292](https://github.com/heygen-com/hyperframes/pull/7292)). A canvas in a blurred composition stays where it was laid out ([2bdc866c8](https://github.com/heygen-com/hyperframes/commit/2bdc866c85198acb143accaf1dedfeff22b6f9d0), [#6975](https://github.com/heygen-com/hyperframes/pull/6975)). In Studio, a scene that draws to a WebGL canvas no longer freezes during playback with blur on ([112ba5330](https://github.com/heygen-com/hyperframes/commit/112ba53302726f2135dc7b28b03033b5a897ffbd), [#7060](https://github.com/heygen-com/hyperframes/pull/7060)).
+
+## Preview and playback
+
+Studio scrubs full-quality video with decoded preview frames ([b7157bdab](https://github.com/heygen-com/hyperframes/commit/b7157bdabbabb194f60126bca45cad21c263a7dc), [#7379](https://github.com/heygen-com/hyperframes/pull/7379)), and a seek keeps a complete picture on screen ([b87a01f6a](https://github.com/heygen-com/hyperframes/commit/b87a01f6a851b0ca02bfad3acfd0c56398024267), [#7378](https://github.com/heygen-com/hyperframes/pull/7378)). A video the browser cannot play, such as HEVC with no decoder or ProRes, shows its own frame at the playhead while its playable copy is made ([eb3562966](https://github.com/heygen-com/hyperframes/commit/eb3562966fcbac74da75566b660cbb41aa940739), [#6589](https://github.com/heygen-com/hyperframes/pull/6589)). MPEG-2, DNxHD, MPEG-4 Part 2 and MJPEG videos get a playable preview copy ([6004508e6](https://github.com/heygen-com/hyperframes/commit/6004508e6571b02bea15ac205f67ce1ce4e1fb7b), [#7348](https://github.com/heygen-com/hyperframes/pull/7348), [f3e45b492](https://github.com/heygen-com/hyperframes/commit/f3e45b492eb91be881ba44c529fae524f2c76849), [#7310](https://github.com/heygen-com/hyperframes/pull/7310)), and so does a video with a codec nobody listed ([cf75dfd7a](https://github.com/heygen-com/hyperframes/commit/cf75dfd7af51ee6c690313874fb7dbe297fda184), [#7356](https://github.com/heygen-com/hyperframes/pull/7356)).
+
+A film skips a video the browser cannot decode instead of freezing ([9058fd1a7](https://github.com/heygen-com/hyperframes/commit/9058fd1a7aff9e2ac14fcf13f23fc83e143bc60d), [#7355](https://github.com/heygen-com/hyperframes/pull/7355)), and moves on past a video the browser never starts loading ([a595755a3](https://github.com/heygen-com/hyperframes/commit/a595755a35f4d7ad49b83a47f4e39445562bf3d9), [#7368](https://github.com/heygen-com/hyperframes/pull/7368)). A muted video's picture no longer waits on its own audio track at a cut ([fa2e63515](https://github.com/heygen-com/hyperframes/commit/fa2e63515f3a4b80c7f0399c4f393a9a4c6f6d3f), [#7412](https://github.com/heygen-com/hyperframes/pull/7412)). Audio no longer plays fast for a moment after Play ([3eead5432](https://github.com/heygen-com/hyperframes/commit/3eead5432d29735461116fd78045de51bf838357), [#7067](https://github.com/heygen-com/hyperframes/pull/7067)). The preview recovers its WebGL scenes and effects after a lost context ([e8ffaa410](https://github.com/heygen-com/hyperframes/commit/e8ffaa410fa8b3265a178bd7d3384d625ab16324), [#7028](https://github.com/heygen-com/hyperframes/pull/7028)). Words in a scene the preview mounts later keep their spaces ([1ddd42558](https://github.com/heygen-com/hyperframes/commit/1ddd425587b78e9b247cb87e4a1a17012a1876c1), [#7342](https://github.com/heygen-com/hyperframes/pull/7342)), and accented Latin letters draw in the bundled font at its bundled weights ([6011d9d0d](https://github.com/heygen-com/hyperframes/commit/6011d9d0dd555a21430baeee8d84cca8cbacbb6a), [#7299](https://github.com/heygen-com/hyperframes/pull/7299)). The player shows the blurred frame and the HyperFrames mark while assets load, like Desktop ([e3a7cdd2b](https://github.com/heygen-com/hyperframes/commit/e3a7cdd2b87b447175ca4f0cb7f521c4369db7f4), [#6934](https://github.com/heygen-com/hyperframes/pull/6934)).
+
+## The browser editor
+
+When an agent writes a storyboard, Studio shows it in a Storyboard tab beside the preview, as the Desktop app does. Step through its frames with the arrow keys, and jump back to the film at any frame ([318724f5f](https://github.com/heygen-com/hyperframes/commit/318724f5f4b7293de19f610f309dec2748942ed8), [#7284](https://github.com/heygen-com/hyperframes/pull/7284)). Click the zoom readout to type an exact zoom. Zoom now goes to 1600%, and above 800% a grid shows one cell per composition pixel ([25a61016d](https://github.com/heygen-com/hyperframes/commit/25a61016d11cba89f344d3a89b9e21f13c8158b3), [#5708](https://github.com/heygen-com/hyperframes/pull/5708)). Hold Alt while you drag a marquee to remove the covered items from the selection, on the canvas and the timeline ([bdf9ba0ee](https://github.com/heygen-com/hyperframes/commit/bdf9ba0ee68369ddfa19e7bb59b5432544970294), [#5680](https://github.com/heygen-com/hyperframes/pull/5680)). Moving, resizing and rotating on the canvas shows the live position, size and angle ([a4a84deec](https://github.com/heygen-com/hyperframes/commit/a4a84deec59af994a95a872059b495a97bb91c32), [#5594](https://github.com/heygen-com/hyperframes/pull/5594)).
+
+Splitting a clip that starts after another clip cuts where it plays ([0bbc9b294](https://github.com/heygen-com/hyperframes/commit/0bbc9b2943ad6d97edd4acd9b50bb8d648e208d2), [#7172](https://github.com/heygen-com/hyperframes/pull/7172)). Two exports started in the same second get their own jobs and files ([92943d99f](https://github.com/heygen-com/hyperframes/commit/92943d99f08394b4a9d3964471ccae1bb86c83de), [#7053](https://github.com/heygen-com/hyperframes/pull/7053)). A large project's first history copy takes a fraction of the time ([2927fe615](https://github.com/heygen-com/hyperframes/commit/2927fe615581f03258205a876fada7d6f3111dc8), [#7415](https://github.com/heygen-com/hyperframes/pull/7415)). Pressing Shift no longer re-renders the timeline ([66cbabc39](https://github.com/heygen-com/hyperframes/commit/66cbabc39aefc91cc3f82b102499c37a2d546ff8), [#7298](https://github.com/heygen-com/hyperframes/pull/7298)), and a film cut from one file into many clips plays smoothly while their durations load ([3a28ef41a](https://github.com/heygen-com/hyperframes/commit/3a28ef41aeb68c43cccdf7f963e19ea8d6feb36a), [#6745](https://github.com/heygen-com/hyperframes/pull/6745)).
+
+## Cloud renders
+
+`cloud render` packs the system fonts a project uses into its upload ([cba66f20a](https://github.com/heygen-com/hyperframes/commit/cba66f20a69c9e929564a756852dac71c4c437de), [#7165](https://github.com/heygen-com/hyperframes/pull/7165)). A font with no file on your computer no longer stops the render. It falls back to the next font in the stack, as a local render does, and names the missing font ([b56e2c036](https://github.com/heygen-com/hyperframes/commit/b56e2c03669cc0515209b0f886594b36867eab02), [#7287](https://github.com/heygen-com/hyperframes/pull/7287)). Font shorthands with `var()`, names like `font-X-400` and linked font sheets no longer fail a cloud render ([af0c815c7](https://github.com/heygen-com/hyperframes/commit/af0c815c72b14bb3d70f6ef762012e87927dff6b), [#7166](https://github.com/heygen-com/hyperframes/pull/7166)).
+
+Big files upload in parts, so a dropped connection resends one part instead of the whole file ([3d7f12acd](https://github.com/heygen-com/hyperframes/commit/3d7f12acd761c55a6f25ae0634346aa9ee1b3e6e), [#7375](https://github.com/heygen-com/hyperframes/pull/7375)). A stalled upload ends and starts again ([f98218a22](https://github.com/heygen-com/hyperframes/commit/f98218a224ba5b3ad0591485d9b1b9344ba0ce11), [#7237](https://github.com/heygen-com/hyperframes/pull/7237)). The upload now includes media referenced by a filesystem path ([e0c11bf09](https://github.com/heygen-com/hyperframes/commit/e0c11bf09aa457523a54e975d5b57b7ad119548d), [#7381](https://github.com/heygen-com/hyperframes/pull/7381)), files under dot-folders ([6161ae740](https://github.com/heygen-com/hyperframes/commit/6161ae740a34b341aba98f2fcd4583f79a4f1332), [#7353](https://github.com/heygen-com/hyperframes/pull/7353)), and files whose accented names macOS stores differently from the page ([91ad7fb6e](https://github.com/heygen-com/hyperframes/commit/91ad7fb6ee3fb4d0098385abdea64a1d5acd0dfd), [#7419](https://github.com/heygen-com/hyperframes/pull/7419)). Media whose contents do not match its file extension is re-encoded before upload ([472b750ac](https://github.com/heygen-com/hyperframes/commit/472b750acba1a94183c672c690426028e60652c3), [#7033](https://github.com/heygen-com/hyperframes/pull/7033)). A refused upload names the file and the reason ([11f43268a](https://github.com/heygen-com/hyperframes/commit/11f43268a1ebc7fba5203aa8230e8febbe836f9c), [#7155](https://github.com/heygen-com/hyperframes/pull/7155)), and a long job prints a status line every minute ([41b7aeeaf](https://github.com/heygen-com/hyperframes/commit/41b7aeeafb99dba664f32b7ac0a8b0af5b7b75f1), [#7262](https://github.com/heygen-com/hyperframes/pull/7262)). `cloud render` no longer offers `--page-motion-blur`, which the hosted API rejected. Turn blur on in the composition with `data-motion-blur="on"` ([dffc640e8](https://github.com/heygen-com/hyperframes/commit/dffc640e8556b675e7e1d73f482c19ee7e855782), [#7062](https://github.com/heygen-com/hyperframes/pull/7062)).
+
+## Local renders
+
+`--resolution` takes 1440p presets: `landscape-1440p`, `portrait-1440p` and `square-1440p`, with the aliases `1440p` and `qhd` ([5e8abd757](https://github.com/heygen-com/hyperframes/commit/5e8abd7574a78e159ac51761e62fa25179e151a5), [#7418](https://github.com/heygen-com/hyperframes/pull/7418)).
+
+Renders recover from more failures. A BeginFrame capture failure re-renders with screenshot capture ([9a2cd9e61](https://github.com/heygen-com/hyperframes/commit/9a2cd9e61b6398122e46ee604d9b032649d12327), [#7070](https://github.com/heygen-com/hyperframes/pull/7070)), and a render request can ask for screenshot capture from the start ([79b6af9b4](https://github.com/heygen-com/hyperframes/commit/79b6af9b484280706da5d1af8e981305f4e1a13d), [#7066](https://github.com/heygen-com/hyperframes/pull/7066)). A stalled capture resumes at the first unwritten frame instead of frame 0 ([3dc82f18e](https://github.com/heygen-com/hyperframes/commit/3dc82f18e3f99350f9a0c0f1738bcee8d1e44741), [#7104](https://github.com/heygen-com/hyperframes/pull/7104)). A laptop that sleeps mid-render no longer counts the sleep as a stall ([e2edc93f5](https://github.com/heygen-com/hyperframes/commit/e2edc93f5f4127fd44d4fcfd6534db7bb0d8d4aa), [#7096](https://github.com/heygen-com/hyperframes/pull/7096)). When every page times out loading, the render retries with fewer workers ([04bc4737a](https://github.com/heygen-com/hyperframes/commit/04bc4737ad1d300e45c8ad3ebb220ebec1b7ed2d), [#7171](https://github.com/heygen-com/hyperframes/pull/7171)). A page that never becomes ready fails the render once, with a plain reason ([5cea10e76](https://github.com/heygen-com/hyperframes/commit/5cea10e76e687fc381760aab73773b154577abf5), [#7154](https://github.com/heygen-com/hyperframes/pull/7154)). A full disk during frame extraction says so instead of calling the video broken ([ac1948a88](https://github.com/heygen-com/hyperframes/commit/ac1948a88b89a2ef08d02d748f107d55e50d3f9c), [#7161](https://github.com/heygen-com/hyperframes/pull/7161)).
+
+Exports keep more of their audio level. An export over the peak ceiling now loses only what it must ([d40d0b251](https://github.com/heygen-com/hyperframes/commit/d40d0b251f6dc5d97dff472cc99d528a46cab9db), [#7246](https://github.com/heygen-com/hyperframes/pull/7246)). On FFmpeg 4, a mix already under the limit is no longer turned down by several dB when its length is matched to the video ([f6ae9bfb4](https://github.com/heygen-com/hyperframes/commit/f6ae9bfb43a4e4bee0d132a5ac2a0b1ce4bf383f), [#7199](https://github.com/heygen-com/hyperframes/pull/7199)). HLG footage tone-maps to SDR at the right reference white ([5ee9e928d](https://github.com/heygen-com/hyperframes/commit/5ee9e928d5d1377826dd025a73bb5ec22666bcee), [#7234](https://github.com/heygen-com/hyperframes/pull/7234), [b559a98d3](https://github.com/heygen-com/hyperframes/commit/b559a98d37f4044d6d24a43ae660c5c6092c8fc4), [#7349](https://github.com/heygen-com/hyperframes/pull/7349)), and an unsized phone video exports at the size it plays at ([659ef568d](https://github.com/heygen-com/hyperframes/commit/659ef568d71442a3e4f1b919cf03a547c79e7005), [#7228](https://github.com/heygen-com/hyperframes/pull/7228)).
+
+BeginFrame capture skips the screenshot on frames the page reports unchanged ([3bb0a9a5b](https://github.com/heygen-com/hyperframes/commit/3bb0a9a5b52b86aeaf69a79584f5b659c43e83f2), [#7027](https://github.com/heygen-com/hyperframes/pull/7027)), and capture pages load only the clips on screen ([12906e0bf](https://github.com/heygen-com/hyperframes/commit/12906e0bfba41b72d9aad83d6a98c0c8943e5682), [#7402](https://github.com/heygen-com/hyperframes/pull/7402)). For long renders with segmented capture, `HF_VIDEO_FRAME_WINDOW=true` extracts each segment's source frames when it starts and deletes them when it closes, so far less sits on disk. It is opt-in and off by default ([968f97fe9](https://github.com/heygen-com/hyperframes/commit/968f97fe954f733d8610ab86a09ded1e78fec23c), [#7242](https://github.com/heygen-com/hyperframes/pull/7242), [599eaad2b](https://github.com/heygen-com/hyperframes/commit/599eaad2ba6a908b6da9de724bc04474c79fa019), [#7241](https://github.com/heygen-com/hyperframes/pull/7241)).
+
+On Windows, a render to the top of a drive like `D:\` saves instead of failing ([50ce9fb51](https://github.com/heygen-com/hyperframes/commit/50ce9fb514fefb544213666af5f1daa87a9a25bc), [#7151](https://github.com/heygen-com/hyperframes/pull/7151)), and `init` no longer crashes there ([d810bdbb2](https://github.com/heygen-com/hyperframes/commit/d810bdbb27ed5fe1d428ec5389dbd6861318386a), [#7220](https://github.com/heygen-com/hyperframes/pull/7220)). A render on a busy PC no longer stalls behind its own lint ([72326a3ac](https://github.com/heygen-com/hyperframes/commit/72326a3ac7abb650b7bb4bbd33b2b855bc790cac), [#7268](https://github.com/heygen-com/hyperframes/pull/7268)), and installing Chrome no longer takes ten minutes ([8fd754207](https://github.com/heygen-com/hyperframes/commit/8fd754207050650568df870397cc5287400b907c), [#7301](https://github.com/heygen-com/hyperframes/pull/7301)).
+
+## Check and lint
+
+`check` replays an unchanged project's last pass in about a second, and `--no-craft` skips the craft pass for a quick preflight before a render ([070b964d7](https://github.com/heygen-com/hyperframes/commit/070b964d7b8cd844a893f0abbe8e0b7f1ac6d879), [#7398](https://github.com/heygen-com/hyperframes/pull/7398)). `--budget` stops the whole check in time and reports what it found ([b7d72c947](https://github.com/heygen-com/hyperframes/commit/b7d72c9478bf0717458ced2d8ab35b5807b45f3c), [#7245](https://github.com/heygen-com/hyperframes/pull/7245)). The craft pass thins its samples on slow frames so it ends near 90 seconds ([be8122d0c](https://github.com/heygen-com/hyperframes/commit/be8122d0c4054c785fddb277b330267555080cd0), [#7183](https://github.com/heygen-com/hyperframes/pull/7183)), and check copies only the stretch of a video it plays ([c6f87f59b](https://github.com/heygen-com/hyperframes/commit/c6f87f59b0c9ab17fc704aa8609cfee5294a3951), [#7182](https://github.com/heygen-com/hyperframes/pull/7182)). Each step prints a line on stderr, and check names the report file it saved ([9ac2a2387](https://github.com/heygen-com/hyperframes/commit/9ac2a2387aa1afeb7c8942dbf4e46c7fdee359d8), [#7344](https://github.com/heygen-com/hyperframes/pull/7344)).
+
+Check makes fewer false findings. It reads SVG gradient text by its gradient stops ([478ef2f26](https://github.com/heygen-com/hyperframes/commit/478ef2f26e8b2811383d6e0e31b69efebf508148), [#7258](https://github.com/heygen-com/hyperframes/pull/7258)), sees an SVG stroke drawing on ([644b166e7](https://github.com/heygen-com/hyperframes/commit/644b166e78c40fa527715cb843adf1c0ddf9182c), [#7250](https://github.com/heygen-com/hyperframes/pull/7250)), skips contrast samples over a layer in motion ([7862e271d](https://github.com/heygen-com/hyperframes/commit/7862e271d16baa9052c78d3b85535ebc725cd136), [#7205](https://github.com/heygen-com/hyperframes/pull/7205)), and no longer counts masked or clipped text as overlapping ([a3b8f521d](https://github.com/heygen-com/hyperframes/commit/a3b8f521d9114286fa410a49bfd07ccf7d541689), [#7364](https://github.com/heygen-com/hyperframes/pull/7364)). A Korean number and its counter count as one word in reading time ([bc2773d04](https://github.com/heygen-com/hyperframes/commit/bc2773d04770aed1870f2d680c30f4dd7d92ccdb), [#7343](https://github.com/heygen-com/hyperframes/pull/7343)). Lint and check skip compositions the project never mounts ([7b79ab429](https://github.com/heygen-com/hyperframes/commit/7b79ab42905a730dd5d0aeb01b8b2dadecc7433e), [#7369](https://github.com/heygen-com/hyperframes/pull/7369)) and compositions listed in `.hyperframesignore` ([80e02e74a](https://github.com/heygen-com/hyperframes/commit/80e02e74a0af8bc6be30cb4c671b03b064c667b6), [#7239](https://github.com/heygen-com/hyperframes/pull/7239)). Lint flags a `data-automation` or `data-fx-chain` the render cannot read ([cd7b7383c](https://github.com/heygen-com/hyperframes/commit/cd7b7383cb19c36d63e6d7ad039221bcaccce34a), [#7169](https://github.com/heygen-com/hyperframes/pull/7169)).
+
+## The CLI
+
+`hyperframes update` updates the CLI and then its skills. `update --check` reports what is out of date, and agents get a one-line notice to pass on ([7cb6018c6](https://github.com/heygen-com/hyperframes/commit/7cb6018c6be55979a997b277a59331d330fc1aa6), [#7094](https://github.com/heygen-com/hyperframes/pull/7094)). The CLI no longer auto-updates across 0.x minor versions, and it installs the skills that match its own release ([b2acef586](https://github.com/heygen-com/hyperframes/commit/b2acef5869bf6375e855ef3795014e6a3aa46bbb), [#7013](https://github.com/heygen-com/hyperframes/pull/7013)). A session from `hyperframes auth login` now takes priority over a `HEYGEN_API_KEY` left in your shell ([d03bdeae9](https://github.com/heygen-com/hyperframes/commit/d03bdeae9d992c9bb653bb1e67cf5569d16455f3), [#7051](https://github.com/heygen-com/hyperframes/pull/7051)). `auth login --device` works without a terminal, such as in an agent's shell or over SSH ([de2603e63](https://github.com/heygen-com/hyperframes/commit/de2603e637f09fc0490d06bf92151dddc8d0650f), [#7045](https://github.com/heygen-com/hyperframes/pull/7045)). Every settings file follows `HYPERFRAMES_CONFIG_DIR` ([216395e98](https://github.com/heygen-com/hyperframes/commit/216395e98e094972ec905e20c851149ab302a6f1), [#7229](https://github.com/heygen-com/hyperframes/pull/7229)), and every per-user cache follows `HYPERFRAMES_CACHE_DIR` ([ecf0e1438](https://github.com/heygen-com/hyperframes/commit/ecf0e14387482bf7ca35c7797292d6bbb67b66d1), [#7224](https://github.com/heygen-com/hyperframes/pull/7224)).
+
+`info --media` lists every clip the render hears, on the film's clock ([df54f380c](https://github.com/heygen-com/hyperframes/commit/df54f380cbcada23c56019972441b98160f2adb8), [#7235](https://github.com/heygen-com/hyperframes/pull/7235)). `diff --offset` compares the original at a time with yours that many seconds later ([3f42dc1c7](https://github.com/heygen-com/hyperframes/commit/3f42dc1c73b0c9915b311e48bd0099b39a0865a9), [#7057](https://github.com/heygen-com/hyperframes/pull/7057)). `audio --read` reads stems through your HeyGen account, with no Gemini key ([acd5c30e6](https://github.com/heygen-com/hyperframes/commit/acd5c30e6060f641941b12607bdb913bbba4eb2d), [#6993](https://github.com/heygen-com/hyperframes/pull/6993)), and `--layer music|sfx|voice` reads a one-layer file whole ([b37db1122](https://github.com/heygen-com/hyperframes/commit/b37db112252e48f2850716c356756e09967b42e3), [#7345](https://github.com/heygen-com/hyperframes/pull/7345)). An unknown command answers in a few lines and says what to run instead ([0a6746e1d](https://github.com/heygen-com/hyperframes/commit/0a6746e1d6fabab6178ef8ead0e6da1593a1e59a), [#7247](https://github.com/heygen-com/hyperframes/pull/7247)). A failed fetch names the network cause ([f55990ebc](https://github.com/heygen-com/hyperframes/commit/f55990ebca68780a680af4080df88e114537739c), [#7236](https://github.com/heygen-com/hyperframes/pull/7236)), and `transcribe` says why whisper is missing and the one line that fixes it ([9efbbdf5a](https://github.com/heygen-com/hyperframes/commit/9efbbdf5ae69047e39a2770e95d0771ca12356ed), [#7366](https://github.com/heygen-com/hyperframes/pull/7366)). On a Mac without the developer tools, the CLI no longer sets off the install prompt ([c14973081](https://github.com/heygen-com/hyperframes/commit/c149730819437fbf0d8fda7de6952293bcf69c50), [#7257](https://github.com/heygen-com/hyperframes/pull/7257)). A person typing in the terminal of a Claude Code IDE extension is no longer treated as an agent, and Auggie, Amp, Muse and Warp Oz are now recognized as agents ([7bf65995b](https://github.com/heygen-com/hyperframes/commit/7bf65995b34fc2293bdd0b8e6273e86e56e1c3b1), [#7425](https://github.com/heygen-com/hyperframes/pull/7425)).
+
+## Billing, plans and media
+
+`hyperframes billing` shows the price and pays from the terminal when you press Enter ([87a42e747](https://github.com/heygen-com/hyperframes/commit/87a42e7470c28aa689934a28a0a53784459b99f2), [#7068](https://github.com/heygen-com/hyperframes/pull/7068)). `billing add-credits` replaces `billing top-up`, with no alias ([d21877eb2](https://github.com/heygen-com/hyperframes/commit/d21877eb20b0a22588fb6cd5c024438bafc0bb89), [#7121](https://github.com/heygen-com/hyperframes/pull/7121)). A credit limit you set now holds on every paid media call, not only calls that pass `--max-credits` ([76da5f693](https://github.com/heygen-com/hyperframes/commit/76da5f6932600f4ffd5a3773b40b03c116b0ee42), [#7145](https://github.com/heygen-com/hyperframes/pull/7145)). The voices a film can use are listed from your HyperFrames account ([19be35a46](https://github.com/heygen-com/hyperframes/commit/19be35a463a4b446ff5e60bf81d8d0da7aebe3b7), [#7144](https://github.com/heygen-com/hyperframes/pull/7144)). Your own voice recording works as a voice line, and speed applies to it ([14e598e5a](https://github.com/heygen-com/hyperframes/commit/14e598e5a17cbf541c2201f5c84dbbde3c25ce1c), [#7377](https://github.com/heygen-com/hyperframes/pull/7377)). `--voice` takes language codes ([fc0b53361](https://github.com/heygen-com/hyperframes/commit/fc0b53361bf3eff695389200f6caf7b72ea7c9af), [#7261](https://github.com/heygen-com/hyperframes/pull/7261)). GPT Image 2.6 calls and their reference pictures are priced ([ab50e9c14](https://github.com/heygen-com/hyperframes/commit/ab50e9c14892e45d5e94ca6f9633236dc27f4988), [#7307](https://github.com/heygen-com/hyperframes/pull/7307)).
+
+## Skills
+
+HyperFrames plan members can pull style templates with `hyperframes templates pull` and make films in them with the style-sampling skill ([2daedcdaf](https://github.com/heygen-com/hyperframes/commit/2daedcdafcb6857d04f7c5490d652057656a2129), [#6842](https://github.com/heygen-com/hyperframes/pull/6842)). `/reverse-any-video` and style-sampling now install with the core skills ([ad6f7858f](https://github.com/heygen-com/hyperframes/commit/ad6f7858f649f44e16f21128a88992ea3c01dd74), [#7445](https://github.com/heygen-com/hyperframes/pull/7445)). Ask for a style outside the templates and the skill offers the two routes that fit, instead of listing the templates ([37f1819f3](https://github.com/heygen-com/hyperframes/commit/37f1819f32cf0b1329f2241295dbad9a3dea354e), [#7450](https://github.com/heygen-com/hyperframes/pull/7450)). `/reverse-any-video` hands billing commands to you instead of running them ([410a516ce](https://github.com/heygen-com/hyperframes/commit/410a516ceec79177c6e456e73f9f8aca974f45d8), [#7314](https://github.com/heygen-com/hyperframes/pull/7314)).
+
+## Docs and catalog
+
+The catalog has a search box ([b2b034fcd](https://github.com/heygen-com/hyperframes/commit/b2b034fcd88f95dc52377279d556a9a8e3434885), [#7147](https://github.com/heygen-com/hyperframes/pull/7147)), and every card on screen plays a small looping video ([b3dd76661](https://github.com/heygen-com/hyperframes/commit/b3dd76661a2c0f32abfd9f82f1cea8d8e4a22d15), [#7146](https://github.com/heygen-com/hyperframes/pull/7146)). The quickstart has a download card, and the install page links the Windows zip ([7128dc059](https://github.com/heygen-com/hyperframes/commit/7128dc0599c8f1071b12dc93039e2e3650da1aa8), [#6988](https://github.com/heygen-com/hyperframes/pull/6988)). The docs say HyperFrames is free and what the Studio app's Pro plan adds ([c3eb05254](https://github.com/heygen-com/hyperframes/commit/c3eb052545668af14ab7578f964c5e7dacfdc6ce), [#7131](https://github.com/heygen-com/hyperframes/pull/7131)). Discord links point at the new community server ([1071ff35a](https://github.com/heygen-com/hyperframes/commit/1071ff35a7ba803decfc1a6f8fcf810009e83018), [#7097](https://github.com/heygen-com/hyperframes/pull/7097)). The registry has a `path-traced-3d` example that previews with raster rendering and exports path-traced ([d452a6fad](https://github.com/heygen-com/hyperframes/commit/d452a6fad4752277ef23e0920bf1dc92b989ae31), [#7219](https://github.com/heygen-com/hyperframes/pull/7219)).
+
+Some of this landed after v0.9.26 and ships in the next release: blur in distributed and range renders, the two skills joining the core set and the style routing, the full-document sub-composition fix, the Claude Code terminal fix and the macOS developer tools fix.
+
+For exact versioned release notes, see the [Changelog](/changelog).
+
+