Animatic with Boards (#61) #116
No reviewers
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
needs-info
needs-triage
question
ready-for-agent
ready-for-human
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crowmaki/ai-studio!116
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-61-animatic-boards"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #61.
The Animatic now plays a Scene's Cut with Boards: each Line from exactly one covering Shot, timed from its Lines, with a Line lane for cut decisions. Decisions follow #8.
What changed
Core (
studio-core)animatic.rs:scene_animaticcomputes the Cut. By default each Line plays from the first covering Setup in Setup order, then from that Setup's earliest Shot. A dual dialogue pair is one unit. Neighbouring units on the same Shot merge into one event, and so do uncovered ones ("no coverage"). Transitions and shot directions are zero-length markers.cut_overridetable, and only overrides are stored.assign_cut_lineis undoable ("Assign line to 12B" / "Reset line to default"). An override whose Shot was deleted or no longer covers the Line falls back to the default and is flaggedreassigned. Splitting a Shot carries its overrides to the new parts, and undo moves them back.line.duration_ms, undoable) wins, else a text estimate. The estimate is dialogue at the Project's rate plus 0.5 s per parenthetical, and action at its rate with a 1 s minimum. The rates are per Project, in words a minute (default 150 / 90 = 2.5 / 1.5 words/s), set withset_reading_rates(undoable).App
/scenes/<scene>/animatic):/settings/timing) for the reading rates. ADR-0006's route table is updated.Out of scope (later tickets): circled Takes replacing Boards (#62) and Performance audio and timing (#63–65). Board events play silence with captions.
Screenshots
Shot 1B at 2.39:1, letterboxed into the 16:9 Project, with the line assigned to it by override and its caption:

Line lane menu on a dual dialogue pair (assigned as a unit), with both speakers' captions stacked over a Shot with no Board:

After Shot 1B is deleted, its line falls back to 1A·1 and is flagged reassigned:

Play from here, run on into Scene 3 (Scene 2 is omitted and skipped). Its uncovered Lines show the no-coverage slate:

A no-coverage stretch, with the

CUT TO:marker:A Line's duration set by hand (6.0 s):

Project settings → Timing:

Tests
crates/studio-core/tests/animatic.rs(20 tests) covers durations and rates, manual durations, Cut defaults and Setup order, overrides and undo, pairs as units, reassigned fallback, carry-over on split, Panel spans and omitted Scenes.src/lib/animatic/cut.test.tscovers playback lookup, captions, lane blocks, run-on order and the clock.cargo test --workspace --all-features: everything passes except 2ffmpegproxy tests. They fail locally because this machine's ffmpeg has nolibopenh264encoder, which is unrelated to this change.bun test srcandbun run checkare clean.