Visual-diff console
The console is the front door. It lists the screenshot sets captured so far — each with the branch it came from, how many stories it holds and how large it is — and it starts the jobs that produce and compare them.
The behaviour worth knowing is what happens at the edges. A set held by a registered worktree cannot be deleted, and the console says what holds it rather than failing quietly. Choosing two sets to compare fills the job form for you, and the tab you are on is part of the address, so a comparison you set up survives a reload and a link.


Before each task
- the console has screenshot sets
The console lists the screenshot sets
- When I visit the console
- Then I see each screenshot set with its branch, story count and size
- And a set captured from a dirty tree is marked as dirty
Comparing two sets pre-fills the job form
- When I visit the console
- And I choose two sets to compare
- Then the job form is set to compare those two sets
Deleting a held screenshot set is refused with the reason
- Given a screenshot set is held by a registered worktree
- When I delete the held set
- Then the deletion is refused naming what holds it
The console names the next capture set for me
- When I visit the console
- And I ask the console to name the capture set
- Then the label field holds a set label no screenshot set already uses
The selected job tab is a link
- When I visit the console
- And I switch to the compare job tab
- Then the URL carries the compare job mode
- When I reload the console
- Then the compare job tab is selected
Asking for the same comparison again lands, from another tab
- When I visit the console
- And I choose two sets to compare
- And I switch to the capture job tab
- Then the URL has dropped the compare job mode
- When I choose the same two sets to compare
- Then the job form is set to compare those two sets
Past runs are listed with their outcome
- When I visit the console
- Then the history lists each run with its outcome, exit code and duration