Skip to content

Add all the shown tickets to the AI queue, from the Tickets page heading - #1679

Merged
brillout merged 4 commits into
mainfrom
claude/agent-spinup-button-x-tickets-dtquyh
Aug 24, 2026
Merged

Add all the shown tickets to the AI queue, from the Tickets page heading#1679
brillout merged 4 commits into
mainfrom
claude/agent-spinup-button-x-tickets-dtquyh

Conversation

@brillout

@brillout brillout commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Adds the button beside the /tickets page heading: "Add all X tickets shown below to the AI queue".

What it does

  • Whenever the filters leave at least one unclaimed ticket showing, the heading row offers one button that adds the whole shown set to the AI queue. Each ticket is queued exactly as the ticket detail page's Queue action queues one (Queue button doesn't seem to work? #1164) — title as the entry, linked back to the ticket, its priority picking the section — walked in the shown order, so entries within a priority section keep the order the reader saw. Each ticket lands on its own project's queue, so cross-project views need no special case.
  • No agent starts. The queue is what the framework already works from: the routine drain fans out over it (Setting to set number of concurrent agents #1204) and the AI Queue card's play buttons start one entry at a time (Auto PM fills the queue but nothing drains it: autonomy stops after one turn #855). Queueing keeps the click cheap and durable — entries survive anything that interrupts the work, and spend nothing until an agent actually starts.
  • Idempotent per ticket: a ticket an open queue entry already links to is left as it stands ("add" means the set ends up queued, never queued twice — a duplicate entry would outlive its agent's check-off as an open entry naming a closed ticket, costing the sweep an agent). Checked-off entries don't count as queued.
  • Claimed tickets are skipped — they're being worked — and the label then counts only the unclaimed tickets, never promising a row it will skip. The tooltip explains the mechanics (shown order, priority sections, already-queued stays) and names how many claimed tickets are left alone.
  • After a successful click the button flips to "Queued" (the detail page's own post-queue state) and rests; any change to the shown set — a filter, newly arrived tickets — arms it again for the new set. Failures stop the batch and render their reason under the heading in grouped and flat mode alike; everything already queued stays.
  • With nothing to add (nothing shown, or everything shown claimed) there is no button.

Implementation

  • Reuses the existing vocabulary end to end: sendQueueTicket (the detail page's Queue), queueEntryLabel (entry↔ticket linkage), onQueue read once at click time for the dedupe; ListPlus/Check iconography matches the detail page's Queue button.
  • Specs updated per SDD: TicketsPage.SPEC.md ("Queue the whole shown set" section, TL;DR, user story), TicketsPage.test.SPEC.md, and a FEATURES-SPEC.md line under "Tickets" beside "Queue a ticket into the AI queue".

Tests

  • 5 tests in TicketsPage.test.tsx: every shown ticket queued with title/link/priority, no agent started, button resting as "Queued" and re-arming when the set changes; already-queued tickets not queued twice (done entries don't count); claimed tickets skipped with the label counting only unclaimed; button absent when nothing is shown; button absent when every shown ticket is claimed.
  • Full dashboard suite: 83 files / 811 tests pass; pnpm typecheck clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_019vS2EK2vVFJc3oDCtrgShR

claude added 2 commits August 24, 2026 10:00
A button beside the /tickets heading starts an unattended agent working
exactly the tickets the current filters show, told to start nothing else.
A shown set spanning several projects fans out one agent per project (an
agent works inside one repo), and the button's label counts the tickets
and the agents one click costs. A single shown ticket degrades to the
row start's own one-ticket ask, ticket named on the agent (#1117).
Page-level start failures now render under the heading, so grouped mode
shows them too.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019vS2EK2vVFJc3oDCtrgShR
The heading button now spins up one agent per shown ticket instead of
one batch agent per project: each unclaimed shown ticket is queued the
way the detail page's Queue action queues it (#1164) — reusing an open
entry that already links to it rather than writing a duplicate — and
gets its own unattended agent started on that one entry, the queue
card's per-entry start (#855), ticket named on the agent (#1117).
Claimed tickets are left to the agents holding them, and the label
counts only the agents one click costs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019vS2EK2vVFJc3oDCtrgShR
@brillout brillout changed the title Spin up an agent on the whole shown set from the Tickets page heading Spin up agents on the whole shown set from the Tickets page heading — one per ticket, via the AI queue Aug 24, 2026
"Add all X tickets shown below to the AI queue": every unclaimed shown
ticket joins the AI queue exactly as the detail page's Queue action
queues one (#1164), in the shown order, skipping tickets an open entry
already links to. No agent starts — the queue is what the routine drain
fans out over (#1204) and what the queue card's play buttons work one
entry at a time (#855). After a click the button reads "Queued" and
rests until the shown set changes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019vS2EK2vVFJc3oDCtrgShR
@brillout brillout changed the title Spin up agents on the whole shown set from the Tickets page heading — one per ticket, via the AI queue Add all the shown tickets to the AI queue, from the Tickets page heading Aug 24, 2026
"in the shown order, each in its priority section" read as two orders
fighting; the tooltip now says how the queue is actually worked:
highest priority first and, within a priority, in the order shown.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019vS2EK2vVFJc3oDCtrgShR
@brillout
brillout enabled auto-merge (squash) August 24, 2026 10:53
@brillout
brillout merged commit 624d204 into main Aug 24, 2026
2 checks passed
@brillout
brillout deleted the claude/agent-spinup-button-x-tickets-dtquyh branch August 24, 2026 10:54
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