Skip to content

Select tickets row by row: the Tickets page's queue buttons act on just the selected tickets - #1688

Merged
brillout merged 1 commit into
mainfrom
claude/multi-agent-queue-button-zv5evp
Aug 24, 2026
Merged

Select tickets row by row: the Tickets page's queue buttons act on just the selected tickets#1688
brillout merged 1 commit into
mainfrom
claude/multi-agent-queue-button-zv5evp

Conversation

@brillout

Copy link
Copy Markdown
Contributor

Makes each ticket row selectable (a checkbox, GitHub's list idiom); while any ticket is selected, the Tickets page's heading queue buttons apply only to the selected tickets.

What it does

  • A checkbox per row, leading the row's left edge, in grouped and flat mode alike. Selecting is page state, never an action: the box is never disabled and ticking it starts nothing.
  • Selection narrows the existing queue buttons rather than adding new ones: while ≥1 shown row is ticked, "Add all X tickets shown below…" / "Queue plans for all X tickets shown below" become "Add the X selected tickets to the AI queue" / "Queue plans for the X selected tickets", and each click acts on just the ticked tickets. All skip rules carry over unchanged (claimed skipped, planned/already-queued skipped for plans), with the labels still counting only what a click will actually add.
  • A selection readout + exit in the heading: "N selected" and a Clear-selection button.
  • Honest scoping under filters: only selected rows the filters still show count — a selected ticket the filters hide is neither counted nor acted on (what a button acts on is always visible below it), but the tick survives and comes back with the row. With every selected row hidden, the buttons speak for the whole shown set again.
  • Rest-state carries over: "Queued"/"Plans queued" rest per acted-on set, so changing the selection re-arms the buttons exactly as changing the filters does.
  • Selection is keyed project/file, so the flat cross-project list selects the same way with each ticket queued on its own project.

Implementation notes

  • TicketRow/TicketsPanel take the selection as optional wired-down props (selected/onToggleSelect, isSelected/onToggleSelect), following the file's existing idiom for page features threaded to rows (onTopicClick, onClaimedClick): no wiring, no checkbox.
  • TicketsPage owns the selection (Set<"projectId/file">) and derives the buttons' scope from selected ∩ shown.

Spec updates (SDD)

  • TicketsPage.SPEC.md: new "Selecting rows narrows the queue buttons" section, TL;DR/user-story entries, and cross-references from the two queue-button sections.
  • TicketsPanel.SPEC.md: the row's selection checkbox and its page-owns-the-selection contract.
  • Both test SPECs updated; FEATURES-SPEC.md gets the feature line under "Tickets" (feature explicitly requested, taken as the human approval the file requires).

Tests

6 new TicketsPage tests (selection scopes the queue-add and the plan button, re-arm on selection change, clear-selection restores the shown set, claimed-selected still skipped, hidden-selected neither counted nor acted on but preserved, flat-mode selection queues on the row's own project) and 1 new TicketsPanel test (checkbox only when wired, toggles by file, never navigates). Full dashboard suite: 84 files / 834 tests green; pnpm typecheck clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_014rbYrkf4V76bEszetYStXE


Generated by Claude Code

…ading's queue buttons then act on just the selected tickets

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014rbYrkf4V76bEszetYStXE
@brillout
brillout merged commit 413a18f into main Aug 24, 2026
2 checks passed
@brillout
brillout deleted the claude/multi-agent-queue-button-zv5evp branch August 24, 2026 13:32
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.

2 participants