Repository navigation
v0.26.0
Highlights
Comedy shorts about your own group, and the tools that make generated people hold up in them.
parody-shortskill: comedy shorts about a group's own life (a team's launch, a club's season, a family's Christmas) or a shared topic, told in a borrowed genre (80s action intro, creature feature, Dickens Christmas ad), starring the group's real animated photos or an invented cast. Two made with it: You're On Mute and The Great Return.tools/ltx_extend.py: continues an LTX clip from its last good frame, so long shots no longer freeze or loop.tools/sync_check.py: places a sound on generated movement (a sneeze, a landing) by measurement, then checks every cue in the render.qc.py --rendercatches motion that stops dead: a clip that ran out and froze while the rest of the frame kept moving.- YouTube AI-content disclosure:
youtube_upload.py --synthetic-media, asked by/publish. - Agent video jobs take the person's own media (still experimental): kits with someone's photos, clips and cloned voice, and host checks before any spend.
Full details in _internal/CHANGELOG.md.
All commits
- FIX: youtube_upload.py sets the AI-content disclosure with videos.update, which keeps it (690ac54)
- DOCS: privacy policy for the YouTube uploader (needed for the OAuth app's production mode) (8e1f553)
- FEAT: sync_check.py --kind onset for sustained movements, and cue sounds resolve from the cue file (d776940)
- FEAT: youtube_upload.py --synthetic-media discloses an AI-generated cast, and /publish asks about it (16fcb08)
- DOCS: README and ltx2 doc list parody-short, ltx_extend and sync_check; two invented-cast shorts in the showcase (1631461)
- FIX: ltx_extend.py --times 2 works, and a failed chain keeps the clips it paid for (9c8c906)
- FIX: parody-short review: no "tripod" in examples, stale settle advice, trim-aware sync placement (2d59460)
- FEAT: sync_check.py places sounds on generated movement and checks them in the render (badc960)
- DOCS: parody-short continuations: never from a close-up, no "tripod" in webcam prompts (f1639ec)
- FEAT: ltx_extend.py continues an LTX clip instead of looping or freezing it (f79f218)
- FEAT: LivingPhoto plays a clip once and holds its last good frame, and qc.py catches motion that stops dead (5f28fbf)
- DOCS: parody-short learns invented casts, designed voices, vertical cuts and brand editions (c6ceae2)
- DOCS: parody-short keep-clause covers people who wear glasses, and props in hands (2f2835b)
- DOCS: parody-short is for any group, not only engineering teams (711b402)
- FEAT: parody-short skill and LivingPhoto, for comedy shorts about your own team (991e609)
- FIX: estimate's host lines parse on Python 3.10 (0500b5c)
- FIX: Video jobs take a person's file only from the kit, the agent workspace, the submitting directory or the toolkit, the worker keeps the paths submit resolved, the expander is asked again when its copy is refused, and the MCP brief route uses the kit's format (850a072)
- FIX: The host check no longer refuses a default spec for want of a music key (the bed is soft, as it always was at run time), names every env var a provider needs, reports an unknown provider as a bad request instead of crashing, runs on resume, and honours VIDEO_JOB_SKIP_HOST_CHECK in estimate too (8e4592d)
- FEAT: Copy is checked before spend (dashes and stock AI phrasing in the narration, title, headlines and sublines, and narration repeated from an earlier finished job are refused with the line named), and catalog counts how often each kit asset was used in its last three videos so the next one picks others (6d0b9a6)
- FEAT: host capabilities include the local tools a run needs (ffmpeg, ffprobe, moviepy, numpy; Node 18+ for a session route) and which route levels this host can run, and submit refuses a job on a host missing them (f75fe68)
- FEAT: A kit can carry a cloned voice (refAudio relative to the kit folder) and a minTempo for the pace clamp (92dbdeb)
- FEAT: video jobs report what this host can make (catalog and presets carry host: visual kinds, voices, music providers it has keys or endpoints for) and submit refuses a spec that needs a missing provider before any spend, naming the env vars and an alternative (3e481a1)
- FEAT: A kit's focus map (and a scene's own focus, 0-1) keeps an off-centre subject in the crop, so a landscape clip in a 9:16 video shows its candle instead of the blur beside it (2cf6382)
- FIX: Kits work end to end: a file scene or local background no longer fails the job (the worker priced it as a tool), --kit (CLI) and kit (MCP) name a kit for the flat form, a spec or a brief, and a kit describes its assets so an agent that can't see them can choose (e4bc5fe)
- FEAT: Video jobs take a kit (brand, voice, format and someone's own photos, set up once in a session) and file scenes from it, and text scenes get a local brand-colour background on a host without FLUX, so one-prompt videos run with no GPU provider (1c9fa5b)
- CHORE: Drop the agent-docs CI check; CLAUDE.md asks for agent skill mentions instead of failing the build on them (d19342d)
- DOCS: Routes carry a support level, job (one prompt, any runtime) or session (a Claude Code-style working session, a person's or an agent's run headless, with the requester reviewing drafts), in the agent skill and as agent_support in catalog (2e43814)
- DOCS: The agent skill says who it is for (an agent taking requests from a channel with nobody at the terminal) and that only the job route is autonomous: builds are offered as a working session, not started unattended (6daf7f5)
- FEAT: The agent skill opens with a routes table (which template, skill and example fits what a user asks, and whether it runs as a job or is a build), video_job.py catalog and MCP video_catalog list them from the registry, and CI fails when a registry entry is missing from the skill (259b44a)