Mark a Shot complex, with the dot everywhere (#158) #168

Merged
crowmaki merged 2 commits from issue-158-complex-shot into main 2026-10-10 21:28:57 +00:00
Owner

Closes #158. Part of #139.

What changed

  • Complex flag on a Shot. Migration V45 adds shot.complex (false by default). set_shot_complex marks or unmarks a Shot as one undoable edit ("Mark shot complex" / "Unmark shot complex"). Setting the flag a Shot already has records no edit. When a complex Shot is split, only the first part keeps the flag, as with Takes. Undoing the split puts it back.

  • Shot read model. ShotView and BoardView (and their DTOs) gain complex and a previz status, none / current / mismatched. The status is always none until Playblasts exist. A new previz module holds PrevizStatus, ready for the later slices of #139.

  • ComplexShotDot. A small dot before the over budget chip in the four Shot listings: the Board timeline, the Scenes view's Setups block, the Animatic's cut tracks and Dailies. A pure helper (complexShot.ts) maps the status to a colour and a tooltip:

    • grey: no Playblast yet;
    • green: the Playblast matches the Shot;
    • amber: it doesn't match the Shot's length or aspect ratio.

    Shots that aren't complex show no dot.

  • Shot panel. A "Complex shot" switch next to the aspect ratio picker.

  • Docs. CONTEXT.md defines Complex shot, Previz and Playblast. ADR-0006's badge list now includes the dot.

Tests

  • tests/previz.rs (new):
    • A Shot starts not complex, with no previz.
    • Marking and unmarking is undoable and redoable.
    • Setting the current flag is no edit.
    • The flag survives reopening the Project.
    • A split keeps the flag on the first part only.
    • The Board timeline reports it.
  • tests/notation.rs: the hand-made rewind to V14 also drops the new column.
  • Frontend: complexShot.test.ts covers all three statuses and the no-dot case. It uses bun:test, as the other src/lib/scenes tests do, not Vitest as the issue says.
  • The full suites pass: cargo test --workspace --features studio-core/test-support, bun test and bun run check.

Manual

I checked this in the running app with a seeded Project: Scene 1 with Shots 1A and 1B, and 1A marked complex by clicking its "Complex shot" switch label.

  • The undo label read "Mark shot complex". Ctrl+Z took the dot away everywhere, and Ctrl+Y brought it back.
  • The dot's tooltip reads "Complex shot: no playblast yet".
  • 1B, which isn't complex, shows no dot in any listing.

The Scenes view's Setups block, with the switch on and the grey dot after "1 line":

Setups block

The Board timeline:

Board timeline

The Animatic's cut tracks:

Animatic

Dailies:

Dailies

Closes #158. Part of #139. ## What changed - **Complex flag on a Shot.** Migration V45 adds `shot.complex` (false by default). `set_shot_complex` marks or unmarks a Shot as one undoable edit ("Mark shot complex" / "Unmark shot complex"). Setting the flag a Shot already has records no edit. When a complex Shot is split, only the first part keeps the flag, as with Takes. Undoing the split puts it back. - **Shot read model.** `ShotView` and `BoardView` (and their DTOs) gain `complex` and a previz status, `none` / `current` / `mismatched`. The status is always `none` until Playblasts exist. A new `previz` module holds `PrevizStatus`, ready for the later slices of #139. - **`ComplexShotDot`.** A small dot before the over budget chip in the four Shot listings: the Board timeline, the Scenes view's Setups block, the Animatic's cut tracks and Dailies. A pure helper (`complexShot.ts`) maps the status to a colour and a tooltip: - grey: no Playblast yet; - green: the Playblast matches the Shot; - amber: it doesn't match the Shot's length or aspect ratio. Shots that aren't complex show no dot. - **Shot panel.** A "Complex shot" switch next to the aspect ratio picker. - **Docs.** `CONTEXT.md` defines Complex shot, Previz and Playblast. ADR-0006's badge list now includes the dot. ## Tests - `tests/previz.rs` (new): - A Shot starts not complex, with no previz. - Marking and unmarking is undoable and redoable. - Setting the current flag is no edit. - The flag survives reopening the Project. - A split keeps the flag on the first part only. - The Board timeline reports it. - `tests/notation.rs`: the hand-made rewind to V14 also drops the new column. - Frontend: `complexShot.test.ts` covers all three statuses and the no-dot case. It uses `bun:test`, as the other `src/lib/scenes` tests do, not Vitest as the issue says. - The full suites pass: `cargo test --workspace --features studio-core/test-support`, `bun test` and `bun run check`. ## Manual I checked this in the running app with a seeded Project: Scene 1 with Shots 1A and 1B, and 1A marked complex by clicking its "Complex shot" switch label. - The undo label read "Mark shot complex". Ctrl+Z took the dot away everywhere, and Ctrl+Y brought it back. - The dot's tooltip reads "Complex shot: no playblast yet". - 1B, which isn't complex, shows no dot in any listing. The Scenes view's Setups block, with the switch on and the grey dot after "1 line": ![Setups block](https://git.crowmaki.me/attachments/fca37ad6-1224-41bd-a1bd-eff522d4134e) The Board timeline: ![Board timeline](https://git.crowmaki.me/attachments/e8ad516a-a9cd-4594-a985-b90cb8f97d0f) The Animatic's cut tracks: ![Animatic](https://git.crowmaki.me/attachments/0c0b718e-1ebf-48f4-a0fb-2b974353ff06) Dailies: ![Dailies](https://git.crowmaki.me/attachments/977d5861-6c01-4c2d-87a1-d161427907ae)
A Shot gains an undoable complex flag (V45) that a split keeps on its
first part, and the Shot and Board reads gain it with a previz status
(always none until Playblasts exist). A ComplexShotDot beside the over
budget badge on the Board timeline, the Setups block, the Animatic's cut
tracks and Dailies shows it, and the Shot panel gets a Complex shot
switch. CONTEXT.md defines Complex shot, Previz and Playblast.

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
crowmaki deleted branch issue-158-complex-shot 2026-10-10 21:28:57 +00:00
Sign in to join this conversation.
No description provided.