Skip to content

v0.25.0

Choose a tag to compare

@github-actions github-actions released this 05 Nov 23:46
· 89 commits to main since this release
f95c82c

Highlights

  • Design a video from any design source. The new video-design skill turns a direction into scenes: colour changes only at a turn in the story, one data accent, five type sizes, two-line titles, a ground drawn from the subject. Plug in your own design skill (taste-skill is recommended, Anthropic's frontend-design works too) or use ours, which needs nothing installed. /video now sets the direction before any scene is built, and /design refines a scene or critiques the render from a contact_sheet.py sheet. The bundled frontend-design skill is removed: install it as a design source instead.
  • Data charts drawn to the narration. LineChart, BarChart, Counter and SplitBar in lib/components are brand-themed SVG, and each stretch of data is drawn on the word that talks about it. See examples/data-chart-stars.
  • Choose music by watching it. music_gen.py --variations N now really makes N takes. pick_music.py rules out bad takes and recommends one with its reasons, and audition.py puts every take under the finished picture in seconds, so the choice is made against the video.
  • PageTurns turns one scene into new pages in place, each on its narration cue; synthetic UI scenes take their click frames from the narration with cue().
  • Also: the digital-samba brand in DS's own colours, agent video jobs that resume after a crash, qc.py --allow-silent, Remotion 4.0.539 and Node 24 LTS.

All commits

  • Release v0.25.0: video-design sets how a video looks from any design source (taste-skill recommended, or ours) and /video sets it before scenes are built; data charts drawn to the narration; music takes chosen by watching them under the picture (1d522f2)
  • FIX: music_gen.py --repaint and --cover keep the input's length by default, instead of cutting it to the 30s generation default without saying so (833bcbe)
  • DOCS: The roadmap adds music that follows the picture: snap flexible frames to the take's beats, choose the tempo from the act cuts, and repaint the bed at each act turn, judged by ear in audition renders (90a3a12)
  • FEAT: tools/audition.py puts each music take under the finished picture in seconds, so the user chooses a take by watching the video, with pick_music.py's measured pick shown first (2c06d18)
  • FEAT: tools/pick_music.py recommends one of several music takes with its reasons (no dropouts, a calm bed under voice or text, a clean ending, a note on the act cuts) for the user to listen to and confirm (c6020cb)
  • FIX: music_gen.py --variations N saves N takes (name_1 ... name_N) instead of one, because the acemusic API returns one take per request whatever batch_size says, and --json now prints only the JSON on stdout (3928437)
  • FEAT: video-design sets how a video looks from any design source (taste-skill recommended, or ours), /video sets the direction before scenes are built, and contact_sheet.py and PageTurns join the toolkit (#178) (85e102f)
  • FIX: The digital-samba brand uses DS's own colours (wordmark coral and navy, product blue) instead of an orange that isn't a DS colour (53f8a85)
  • FIX: SplitBar stacks two zero shares' labels instead of printing them on top of each other, and chart parts key by position so repeated labels don't collide (d7048ee)
  • FEAT: DataChart adds a flat area fill, a bar corner radius and per-bar grow cues (b8c1a10)
  • DOCS: Qwen3 pronunciation fixes for words read as acronyms (sentence case or a carrying phrase, checked against a raw transcript) (e6f2ceb)
  • FEAT: DataChart adds several series with a legend, Counter and SplitBar, and CI now type-checks the shared chart and cue code (dfeccd6)
  • DOCS: data-chart-stars joins the README showcase log, with its demo video linked from the registry (948463a)
  • EXAMPLES: data-chart-stars, a 31s narrated chart video of the toolkit's GitHub star history drawn word by word to Lugh's voice (3a47afe)
  • FEAT: LineChart and BarChart in lib/components draw brand-themed SVG charts frame by frame, with the line drawn to narration cues (77dd421)
  • FIX: qc.py --layout reads SVG text colour from its fill, so chart and diagram labels are no longer judged as black text (8b55ab7)
  • DOCS: easybrandkit joins the community add-ons, reading a live site's logo, colors and fonts into a BRAND.md for /brand (#173) (cc5660d)
  • DOCS: qc.py --allow-silent is documented beside the other render checks in CLAUDE.md instead of a page of its own (45a4e25)
  • docs(silent-qc): explain the narrow silent-output exception (8277dae)
  • test(silent-qc): exercise missing audio digital silence and missing files (6e40483)
  • feat(silent-qc): add explicit opt-in for intentional silence (32bf7f1)
  • Sync official Remotion skills (upstream v4.0.540, c7cb2fd) (a663a87)
  • CHORE: Node 24 LTS in CI and the docs (18 and 20 are end of life), verify_setup.py flags an end-of-life Node, and a JS test workflow runs the narration-cue tests (44dc551)
  • DOCS: The synthetic-ui-demo skill and the ds-release-notes README show how to cue a scene from its narration; the roadmap marks narration cues done (10c5d28)
  • FEAT: Synthetic UI scenes look their click frames up from the narration (cue('save') in lib/components/cues.ts), so cursor, clicks and camera follow the voice when it is regenerated or re-timed (f55dac6)
  • DOCS: Release-notes videos can start from Lugh's brief (click paths and UI strings traced to code, narration split into phrases), and a spec-driven release job for agents joins the roadmap (d65ba99)
  • FIX: video job captions drop words with no letters or digits, so a slash or ampersand in the narration no longer shows up as a caption on its own (d0f2148)
  • FIX: video job resume never reuses a half-written file, the lock can't be stolen while a job is being set up or resumed, and generated backgrounds stop lettering the narration (77c7c53)
  • FIX: a brief expanded by an LLM (e.g. VIDEO_JOB_EXPANDER='claude -p') passes the clip-prompt rules: the expander is told them, and a refused spec goes back to it once with the error (621aef2)
  • DOCS: Agent video jobs document resume, prune, events, warnings, per-host ETAs, the 9.5 MB size cap, the cost event on every exit, and what is unverified on Windows (1650583)
  • FIX: video job estimates match what jobs actually cost (LTX $0.10, FLUX $0.0075, from ten jobs' receipts), and a job without music no longer gets a QC warning about a missing music file (79958eb)
  • FEAT: video jobs resume after a crash, prune old projects, report timestamped events and warnings, and calibrate ETAs per host (e62873e)
  • FEAT: voiceover.py --progress relays Qwen3's cloud progress and cost event, so job runners book the real voice cost instead of the table price (d8e8ba9)
  • PERF: concept-explainer-short builds 3.3x faster (175 s to 53 s on a 52 s video, CPU 289 s to 79 s with the job preset) and can cap the file size (7f97c0a)
  • DOCS: Roadmap brought up to v0.24.0 with a Next Up list; shipped items leave the backlog (2abe58a)
  • FEAT: check_versions.py fails when a project that pins Remotion is missing from dependabot.yml, and CI runs it on every package.json change (3662d1b)
  • DEPS: Remotion 4.0.539 for ds-release-notes, ds-free-schedule-demo and ds-release-649, which Dependabot now watches too (2402322)
  • DEPS: Bump the remotion group across 10 directories with 29 updates (7c13be5)

Full Changelog: v0.24.0...v0.25.0