Dailies coverage wall and judgments (#55) #110

Merged
crowmaki merged 3 commits from issue-55-dailies into main 2026-10-09 04:48:27 +00:00
Owner

Closes #55. Part of #24 (User Stories 144, 145, 147, 151–153 and 159–161).

What changes

A filmmaker can review a Scene's coverage in Dailies and judge its Takes.

  • Coverage wall. /scenes/<scene>/dailies is no longer a placeholder. Each Shot is a row of Take tiles, grouped by Setup in the Scene's Setup order. The row head shows the Shot's label and length, its Board's first Panel, a no circled Take warning, and "Mark N seen". Each row ends in a + Take tile, which opens the existing queue dialog. A tile shows the poster, the render status, a dot while the Take is unseen, the name (ringed when circled), D/F, pinned, and the note count. A failed tile offers Retry and Delete. NG Takes are left off the wall.
  • Details panel. Clicking a tile opens the Take beside the wall (?take=<id>). The panel plays the Take, has Circle / Pin for Animatic / Mark NG, and lists notes. A new note gets the playhead's time when "At the playhead" is ticked.
  • Circling and pinning. A Shot can have several circled Takes. Only a circled Take can be pinned, there is one pin per Shot, and uncircling clears the pin. scene_takes reports the Take the Animatic plays: the pinned Take, or else the most recently circled one. Only a Take with something rendered can be circled.
  • Seen. A Take becomes seen when it is opened in details or played through there. "Mark all seen" works per Shot and per Scene, and marks only rendered Takes. Seen is not an undoable edit.
  • NG. A circled Take cannot be NG, and an NG Take cannot be circled. NG Takes stay in scene_takes for the #56 table.
  • Failed Takes. Retry queues the stored job again at the end of its class, as the same Take and Rendition with the same seed and graph. Delete removes a failed Take that has nothing rendered, with its Rendition, job, inputs and notes. Its number is not reused. Neither one is undoable, like queuing and cancelling. Edits recorded earlier on a deleted Take still undo and redo, and do nothing.
  • Undo. Circle, uncircle, pin, unpin, NG and notes are app-level edits. Their labels name the Take, as ADR-0006 asks ("Undo Circle 12A-3").
  • Schema. V27 adds take.circle_order, pinned, ng and seen. CHECKs enforce pin ⇒ circled and NG ⇒ not circled, and a partial unique index allows one pin per Shot. V27 also adds a take_note table.
  • CONTEXT.md defines Seen take and Take note.

Not here: the table, screening mode, compare tray and new seed (#56), the stale count (#58) and the Animatic (#62).

Screenshots

The wall. 1A-2 is circled and pinned, and 1A-4 is circled too. 1B has no circled Take, 1B-3 is NG and hidden, and 1B-5 failed.

Coverage wall

1A-3 opened in details, which marks it seen.

Details panel

Notes on 1A-2, one with a timecode. The last one was added through the panel.

Notes

The clips came from a stand-in ComfyUI serving ffmpeg test patterns, so the player shows no picture.

Tests

  • crates/studio-core/tests/dailies.rs runs every rule through ProjectSession against the fake ComfyUI:
    • the listing order of Shots and Takes
    • several Takes circled, with the most recently circled played
    • nothing rendered can't be circled
    • pin requires a circled Take and moves between Takes
    • uncircling clears the pin
    • NG against circled, both ways
    • a failed Take can be NG
    • notes with and without timecodes, and empty notes refused
    • seen when opened, and per Shot and per Scene, only for rendered Takes
    • seen isn't undoable
    • full undo and redo of circling, pinning, NG and notes
    • Retry re-runs the same graph as the same Take with the same seed
    • Delete keeps the number unused, and earlier edits still undo and redo
  • src-tauri/tests/takes.rs judges a Take through the adapter.
  • src/lib/dailies/wall.test.ts covers the wall helpers.
  • I checked it in the running app: circling, pinning, notes, undo and Retry.

bun test src (164 passed) and bun run check pass. cargo test --workspace --all-features runs 647 tests, and two fail on this machine. The two ffmpeg::tests proxy tests fail because this machine's ffmpeg has no libopenh264 encoder. This branch does not touch ffmpeg.

Closes #55. Part of #24 (User Stories 144, 145, 147, 151–153 and 159–161). ## What changes A filmmaker can review a Scene's coverage in Dailies and judge its Takes. - **Coverage wall.** `/scenes/<scene>/dailies` is no longer a placeholder. Each Shot is a row of Take tiles, grouped by Setup in the Scene's Setup order. The row head shows the Shot's label and length, its Board's first Panel, a **no circled Take** warning, and "Mark N seen". Each row ends in a **+ Take** tile, which opens the existing queue dialog. A tile shows the poster, the render status, a dot while the Take is unseen, the name (ringed when circled), D/F, **pinned**, and the note count. A failed tile offers **Retry** and **Delete**. NG Takes are left off the wall. - **Details panel.** Clicking a tile opens the Take beside the wall (`?take=<id>`). The panel plays the Take, has Circle / Pin for Animatic / Mark NG, and lists notes. A new note gets the playhead's time when "At the playhead" is ticked. - **Circling and pinning.** A Shot can have several circled Takes. Only a circled Take can be pinned, there is one pin per Shot, and uncircling clears the pin. `scene_takes` reports the Take the Animatic plays: the pinned Take, or else the most recently circled one. Only a Take with something rendered can be circled. - **Seen.** A Take becomes seen when it is opened in details or played through there. "Mark all seen" works per Shot and per Scene, and marks only rendered Takes. Seen is not an undoable edit. - **NG.** A circled Take cannot be NG, and an NG Take cannot be circled. NG Takes stay in `scene_takes` for the #56 table. - **Failed Takes.** **Retry** queues the stored job again at the end of its class, as the same Take and Rendition with the same seed and graph. **Delete** removes a failed Take that has nothing rendered, with its Rendition, job, inputs and notes. Its number is not reused. Neither one is undoable, like queuing and cancelling. Edits recorded earlier on a deleted Take still undo and redo, and do nothing. - **Undo.** Circle, uncircle, pin, unpin, NG and notes are app-level edits. Their labels name the Take, as ADR-0006 asks ("Undo Circle 12A-3"). - **Schema.** V27 adds `take.circle_order`, `pinned`, `ng` and `seen`. CHECKs enforce pin ⇒ circled and NG ⇒ not circled, and a partial unique index allows one pin per Shot. V27 also adds a `take_note` table. - **CONTEXT.md** defines **Seen take** and **Take note**. Not here: the table, screening mode, compare tray and new seed (#56), the stale count (#58) and the Animatic (#62). ## Screenshots The wall. 1A-2 is circled and pinned, and 1A-4 is circled too. 1B has no circled Take, 1B-3 is NG and hidden, and 1B-5 failed. ![Coverage wall](https://git.crowmaki.me/attachments/f6b8ec33-1947-4900-a2ff-013db87a2a5a) 1A-3 opened in details, which marks it seen. ![Details panel](https://git.crowmaki.me/attachments/6c08eaec-3f01-4f42-99f1-eee7291c0e19) Notes on 1A-2, one with a timecode. The last one was added through the panel. ![Notes](https://git.crowmaki.me/attachments/e1eb495d-b8d4-43ca-85fc-0ef61a8d1896) The clips came from a stand-in ComfyUI serving ffmpeg test patterns, so the player shows no picture. ## Tests - `crates/studio-core/tests/dailies.rs` runs every rule through `ProjectSession` against the fake ComfyUI: - the listing order of Shots and Takes - several Takes circled, with the most recently circled played - nothing rendered can't be circled - pin requires a circled Take and moves between Takes - uncircling clears the pin - NG against circled, both ways - a failed Take can be NG - notes with and without timecodes, and empty notes refused - seen when opened, and per Shot and per Scene, only for rendered Takes - seen isn't undoable - full undo and redo of circling, pinning, NG and notes - Retry re-runs the same graph as the same Take with the same seed - Delete keeps the number unused, and earlier edits still undo and redo - `src-tauri/tests/takes.rs` judges a Take through the adapter. - `src/lib/dailies/wall.test.ts` covers the wall helpers. - I checked it in the running app: circling, pinning, notes, undo and Retry. `bun test src` (164 passed) and `bun run check` pass. `cargo test --workspace --all-features` runs 647 tests, and two fail on this machine. The two `ffmpeg::tests` proxy tests fail because this machine's ffmpeg has no `libopenh264` encoder. This branch does not touch ffmpeg.
Circle several Takes per Shot, pin one for the Animatic (most recently
circled otherwise), mark Takes seen, note them with optional timecodes,
mark them NG, and retry or delete failed Takes. Circling, pinning, notes
and NG are undoable. The Dailies view shows the coverage wall with a
details panel.
Playing a Take through marks it seen, the Take name's circle ring and NG
strike live in one component, and the glossary and undo notes name Seen
takes, Take notes and the new edits.
crowmaki deleted branch issue-55-dailies 2026-10-09 04:48:27 +00:00
Sign in to join this conversation.
No description provided.