Agent pane (Labs): live todo card and activity line (cx-ncc.102)

Closed
TE
9d ago
+391-32

Claude Code desktop's in-session status (its 10-14 release, video 5), harness-agnostic, behind the Debug Settings toggle agent.sessionStatus (bead cx-ncc.102).

With the Debug Settings toggle In-session status (agent.sessionStatus, off by default) on, a running turn changes in two ways:

  • Todo card. The turn's todo list (Claude TodoWrite through acpmux, Codex's plan, any ACP plan update) draws as a quiet card under the work. Steps show a dashed circle while waiting, a spinner while running and a filled check when done. There is no heading, strike-through or bold, and a screen reader still hears progress and each step's state.
  • Activity line. One line under the card names what the agent is doing now and ticks the turn's time, e.g. ••• Edit ProductGrid.module.css 26s. It shows the running tool call as its row names it (a command shows as itself), else the todo in progress. It takes the "Working for" status's place. While the answer streams, the card stays above the answer and the line goes away.

With the toggle off, or for a turn without a list, nothing changes.

Base fix included: the todo list row is also .acpmux-plan (rows are acpmux-row acpmux-${kind}), the composer's Plan toggle class. The toggle's 28px height and flex centering applied to the row, and the row's paint containment clipped the existing list to about one item. The toggle's unscoped rules now name the button.

Captures

Real cmux NEXT: a DEV build of this PR merged with #20878, taken while the opt-in was still the Labs preview flag (it now reads the Debug toggle; the cards are unchanged), on a fleet capture slot, with a fake ACP agent sending a plan and tool calls. These were taken before the last commit: the activity line now names the file only (Edit ProductGrid.module.css) instead of its full path.

Toggle on, darkToggle on, light
real plan card darkreal plan card light

Toggle on, live: the card moves through its steps while the activity line names each call.

real plan card clip

Full quality:

Toggle off (before), real app

plan real before labs off dark

Gallery (agent-pane.plan-list, sbx Linux Chromium, dark):

Toggle on: live todo card and activity line

plan card labs on

Toggle off, base: the existing list clipped to about one item (no heading, no third item)

todo list base clipped

Toggle off, this PR: the existing list whole again

todo list labs off fixed

Depends on #20953 (the agent.sessionStatus Debug toggle and its page event). #20878 has landed.

Testing

  • bun test test/transcript-plan-card.test.ts test/transcript-worked-fold.test.ts (sbx): 13 pass, including a file-name test that was red before its fix. The first commit adds the new test, which is red without the change (no statusCards option or ACTIVITY_LINE in turns.ts).
  • vp check (format, lint, typecheck) is clean on sbx, and check-type-scale, check-layers and check-system-blue pass.

Follow-ups

  • Present-tense labels ("Editing…") from TodoWrite's activeForm: cx-ncc.105, next PR.
  • The reference's › on the line (jump to the running call) is left out until the transcript can reveal a row by id.

Changelog

Added: Debug Settings toggle: a running agent turn shows its todo list as a live card with the current activity under it.

🤖 Generated with Claude Code