cmux NEXT: the running tray counts only what runs, calls every child a subagent, and names commands by what they do

Merged
TE
15d ago
+585-124

Leo-ask: ask-e8f4d71db1 (also covers part of ask-83816d57e0 and ask-dde0a17982)

Leo, on the running tray above the composer: "Isn't this a lot more sessions? What is this depicting? Is stuff actually running? THIS IS LYING." and "SHOULDN'T THIS SAY SUBAGENTS?"

What changes:

  1. The header's counts equal the rows. Only live items are counted and listed: running, or waiting on the person. Chats the agent started that ended no longer count; they sit behind one folded "N subagents done" line, next to the subagents that ended.
  2. A subagent whose end arrived stays done. A trailing subagent_progress (Claude's last task_progress) no longer brings it back to running.
  3. One word for the chat's children: harness subagents and chats started with acpmux new are both "subagents" ("4 subagents running · 1 command"; between turns "Running in background · 3 subagents · 1 command"). The same word appears on the running line (WorkingFor/Thinking) and in the summary card's header. Uses the existing translated keys subagents.allRunning, subagents.count and subagents.allDone.
  4. A command shows the Bash call's description when the harness gives one. Otherwise it shows the command with its leading cd … &&, export X=… && and env prefixes stripped. The full command stays in the tooltip.
  5. Each row shows what it is doing now. A subagent's action follows its newest tool call, so a late update to an older call can't take the action back. A started chat shows acpmux's doing line.
  6. The first row under the header divider gets the tray's 2px gap.

Linux gallery before/after (scripts/gallery-compare.sh, states between-turns, several-running, and the new counts-equal-rows): https://cmux-lawrences-mac-mini.tail137216.ts.net:18796/compare/sp-tray-truth/?entry=agent-pane.subagent-tray

Fleet compile-check at a9921cab: passed. Review: SHIP at a9921cab (after a BLOCK on regex backtracking, now fixed with a linear scanner).

No capture: webview-only

Agent session: cosmic-gray