・ci: bound the ffmpeg apt fetch so a stalled mirror costs a retry, not the job (#3356) * ci: bound the ffmpeg apt fetch so a stalled mirror costs a retry, not the job Hosted runners intermittently stall on an apt mirror, and an unbounded apt-get inherits the whole job budget.
・The producer integration lane normally finishes in ~11 minutes against a 20 minute cap; on a stalled fetch it ran to the cap and failed.
・feat(cli): add normalize-audio to match one clip's loudness to another (#3306) * feat(cli): add normalize-audio to match one clip's loudness to another Measures two authored `<audio>` clips with FFmpeg's integrated EBU R128 loudness and writes the target's matching `data-volume`, leaving the reference untouched.
・The measurement is bounded to the window the composition actually plays.
・`data-end` bounds a clip's timeli
・fix(cli): zip the publish archive to the same bytes every time (#3358) adm-zip stamps every entry with `new Date()` as it is constructed, and a ZIP timestamp resolves to two seconds — so archiving identical content twice gave different bytes whenever the two runs landed either side of a boundary.
・The archive's digest was a function of the clock rather than of its contents, which is backwards for something `cloud rend
・feat(skills): anchored-connector rule + source-traceable visuals doctrine (#3354) * feat(skills): anchored-connector rule + source-traceable visuals doctrine Two advisory rules absorbed from a community-skill comparison study (4-cell sandbox replay vs geekjourneyx/hyperframes-motion-director; ideas only — no upstream text, the repo is AGPL-3.0): - Connector lines earn their place: any beam/rail/scan/underline must na
・fix(studio): make the volume fader tell the truth about the gain it writes (#3305) * fix(studio): make the volume fader tell the truth about the gain it writes The fader travels in dB, so its stops are irrational values; serializing them through the generic two-decimal numeric formatter collapsed the bottom quarter of its travel onto "0" — a hard mute — and made the knob jump on release everywhere below unity.
・What's Changed ⚠️ remotion: Revert nested HTML-in-canvas support by @JonnyBurger in #10567 remotion: Hide checkerboard while resolving Suspense by @JonnyBurger in #10600 remotion: Avoid duplicate delay-render initialization by @JonnyBurger in #10558 @remotion/studio: Configure defaults in Settings by @JonnyBurger in #10523 @remotion/studio: Add "Split video from audio" quick action by @JonnyBurger in #10583 @remotion
・`@remotion/lambda`: Default to veryfast in Remotion 5.0 (#10650) * `@remotion/lambda-client`: Default to veryfast in Remotion 5.0 * `@remotion/lambda`: Resolve v5 x264 default in runtime
・`@remotion/renderer`: Apply backpressure while encoding frames (#10656) * `@remotion/renderer`: Apply backpressure while encoding frames * Docs: Mark async frame callbacks as available in v4.0.515
・feat(cli): run a managed background preview in every launch mode (#3310) `--background` was rejected outside the embedded server.
・It now re-execs the CLI in foreground, which makes it mode-agnostic by construction: whichever server the child resolves to serves the config endpoint the readiness probe looks for.
・`--foreground` is its counterpart, for a non-interactive shell that wants to stay attached, and a bare launc
・fix(core): keep authored gain above unity off el.volume in the sandbox bridge (#3349) Authoring a clip above unity gain throws at runtime today.
・## What breaks `MAX_AUDIO_GAIN_DB = 12` makes `data-volume` legal up to ~3.98.
・The sandbox runtime's volume bridge assigns the product straight to the element: ```ts el.volume = clipVolume * volume; // init.ts, onSetVolume ``` `HTMLMediaElement.volume` is spec-pinned to [0,1
・fix(producer): seek once per step when discovering video visibility (#3233) Seek the GSAP timeline once per timestep and sample every auto-start video, instead of re-walking per media element.
・Keeps probe cost proportional to duration, not video count.
・fix(studio): capture the storyboard frame hero at full resolution (#3338) The thumbnail route bounds every preview capture to 240x135.
・That bound came from the timeline, where thumbnails are small and numerous and their decoded bytes are budgeted.
・The storyboard reuses the same route for its frame detail hero, which is up to 900px wide, so the poster arrived at 240x135 and upscaled past 7x on a retina display.
・HyperFrames v0.8.4 Released on 2026-08-19.
・A new normalize-audio command matches one clip's loudness to another, and the volume fader now tells the truth about the gain it writes.
・Features CLI: Add normalize-audio to match one clip's loudness to another (b3c43e248, #3306).