Skip to content

Commit triage marks from the toolbar, not just from the deck - #49

Merged
JacobPoteet merged 1 commit into
mainfrom
triage-commit-from-list
Aug 24, 2026
Merged

Commit triage marks from the toolbar, not just from the deck#49
JacobPoteet merged 1 commit into
mainfrom
triage-commit-from-list

Conversation

@JacobPoteet

Copy link
Copy Markdown
Owner

The problem

Marks are made in the list with K/X/U as often as in the card deck, but the main window could only discard them. The pending-marks pill carried a Discard link and nothing else; committing meant Triage → a deck you didn't ask for (Open starts on the first unmarked file) → ReviewCommit. Three clicks and a mode switch to reach the productive action, one click to destroy the work.

Why it was shaped that way

Commit_Click lived on TriageView — a control that has nothing to do with committing. CommitDialog was already independent of the deck (it takes a per-folder summary and a totals callback, nothing else), so only the call site was trapped in the overlay.

What changed

  • TriageCommitFlow (new) owns the dialog, the issue [BUG] There is significant lag when deleting a video #1 preview-handle release, and the commit. The deck and the toolbar both call it, so neither can drift from the other or skip the handle release before files start moving. TriageView.Commit_Click is now three lines.
  • The pill becomes the staging control: ✓ n · ✗ n, an optional in N folders, Review, a primary Commit, and Discard demoted into a overflow — a destructive action shouldn't outrank the productive one.
  • Review is reachable directly. TriageView.Open(vm, startInReview: true) opens onto the piles, skipping the deck. Previously the review screen could only be reached through the deck.
  • Ctrl+Enter commits, registered as a window InputBinding rather than in FileList_KeyDown so it works from the filter box and rename bar too. Added to the status-bar hint chips next to K / X and U.
  • MainViewModel.TotalsFor(bool) replaces the InScope filtering the dialog's caller did over the piles, which duplicated TriageSession.Pending.
  • Dropped the trailing ellipsis from the three commit labels. Commit… is the Windows convention for "opens a dialog", but at 12px it reads as truncated text — not what you want on the button that touches the disk.

Reviewer notes

  • CommitTriage's behaviour is untouched: same scoping, same undo entry, same partial-failure handling. This PR only changes who can reach it.
  • The commit path from the toolbar clears Preview and re-shows it after the folder reload, mirroring what TriageView does with CardPreview.
  • A pill-shaped button needs horizontal padding wider than its corner radius or the text sits where the background has already curved away; the Commit button is Padding="14,4" / CornerRadius="12" for that reason, noted in a comment.
  • No test project, per the repo. Verified by building and driving the real app: marks made with K/X, pill renders the split counts, commit dialog opens from the toolbar.

🤖 Generated with Claude Code

Marks are made in the list with K/X/U as often as in the deck, but the only
thing the main window could do with them was throw them away: the pending-marks
pill carried a Discard link and nothing else. Committing meant clicking Triage,
landing on a card deck you didn't want (Open starts at the first *unmarked*
file), then Review, then Commit — three clicks and a mode switch to reach the
productive action, one to destroy the work.

The cause was ownership: Commit_Click lived on TriageView, a control that has
nothing to do with committing. CommitDialog was already independent of the deck
— it takes a per-folder summary and a totals callback and knows nothing else —
so only the call site was trapped. TriageCommitFlow now owns the dialog, the
issue #1 preview-handle release and the commit itself; the deck and the toolbar
both go through it, so neither can drift from the other or forget the handle
release before files start moving.

The pill becomes the staging control it was already halfway to being: the
keep/reject split, Review (which opens the overlay straight onto the piles,
skipping the deck), a primary Commit, and Discard demoted into the overflow —
destructive actions shouldn't outrank productive ones. Ctrl+Enter commits from
anywhere in the window rather than FileList_KeyDown, so it still works from the
filter box, and it gets a chip in the status-bar hint row next to K / X and U.

Also drops the trailing ellipsis from the commit labels. "Commit…" is the
Windows convention for "opens a dialog", but at 12px it reads as truncated text,
which is the opposite of reassuring on the button that touches the disk.

MainViewModel.TotalsFor replaces the InScope filtering the commit dialog's
caller was doing over the piles, which duplicated TriageSession.Pending.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@JacobPoteet
JacobPoteet merged commit 6884482 into main Aug 24, 2026
1 check passed
@JacobPoteet
JacobPoteet deleted the triage-commit-from-list branch August 24, 2026 19:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant