cmux-next agent pane: a paused queue names its error; held prompts wait for Resume

Merged
TE
15d ago
+421-5

When a turn fails, acpmux pauses the chat's queue (queuePaused). The pane said only "Paused after an error" and still labeled every held prompt "Sends after this turn", so the messages looked queued normally while nothing would send (Leo hit this live; it held a coordinator's messages).

App side only. The daemon side (a failed send fails alone, auto-resume, steers and answers never held) is acpmux-unify's work.

  • The paused note names the error of the chat's last turn: its turn summary's errorText (queuePause.ts). The whole text is the tooltip when the row cuts it.
  • The note keeps its one Resume.
  • The held prompts' header reads Waits for Resume instead of "Sends after this turn".
  • Two new strings in 21 locales: composer.queuePausedWhy, composer.queueHeld.
  • Gallery queued-paused now has a failed turn with an error, so the note shows it.

Changelog

Fixed: A chat queue paused by a failed turn now says which error paused it, and its waiting messages say they wait for Resume.

Test

webviews/test/queue-paused-why.test.tsx, committed first (c0524f299b90) and fixed by 015eb1e6a18f.

Observed / Not run

  • Ran on cosmic-gray: vp check --no-fmt (pass, 2231 files), vp fmt on the changed files.
  • Not run locally: bun test (cosmic-gray refuses it); CI runs the new test and test/agent-pane-queue.test.ts. No Swift or Rust changed.

Agent session: cosmic-gray

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

When a turn fails, acpmux pauses the chat's queue, but the pane only said "Paused after an error" while held prompts still read "Sends after this turn", making a paused queue look like it would send. The note now names the error that paused the queue, and held prompts say they wait for Resume.

  • The note names the latest failed turn's error, so a prompt sent meanwhile that ends well doesn't hide why the queue is held; the note stays one line, with the full text as a tooltip, and keeps its single Resume.
  • An agent that couldn't start (error without errorText) now also names its error on the summary row.
  • Held prompts read "Waits for Resume"; two new localization strings cover 21 locales, plus the queued-paused gallery case and a new test.