feat(agent-pane): the running turn's line names the call in flight, with a working mark

Merged
TE
16d ago
+228-49

Summary

While a turn runs, the agent pane's status line only ever reads "Working for 2m 26s" or a shimmering "Thinking". Claude desktop's line starts with a small animated mark and says what's happening now (row 2 of #21604, refs transcript-task-list-in-progress.png and session-running-with-side-panels.png in cmux-design-references).

Now:

  • The line starts with a working mark: three accent dots that pulse in turn on a slow 2s cycle. They hold still under Reduce Motion. Per the motion spec in #21604, this is the pane's one running motion, so the "Thinking" shimmer is gone and the label stays still in the muted color.
  • While a tool call runs, the line names that call beside the turn's time, for example "bun test src/net 2m 21s". It is the newest running call in the live turn's latest row, named by the tool row's own label (toolLabel), so a call whose title is raw JSON input reads "Read src/app.ts" (inFlightTitle in turns.ts).
  • Between calls the line reads "Working for …" as before. "Thinking" gets the same mark.

The title is stored on the status row as a separate doing field, not text, so range copy and Find don't change. The line stays where it is (over the turn's work), with the same 27px height. Claude also shows a turn token count. That's left out because acpmux only reports context usage, not per-turn tokens.

#20833 has a similar activity line behind the agent.sessionStatus Debug toggle. This PR changes the existing line for everyone and adds no new row.

Testing

  • bun test test/transcript-working-line.test.tsx, which shapes a live turn with turnView and renders WorkingFor and Thinking:
    • Red on c1ea04e, the test commit alone: 3 fail.
    • Green on 3010452: 3 pass.
    • Review follow-ups, test first: ebaa6c5 adds the raw-JSON-title case, red with the JSON shown. 1850873 adds the no-shimmer and 2s-cycle case, red. Both are green on 12c02b5 (5 pass, 11 with gallery-coverage).
  • bun test on gallery-coverage, transcript-live-runs, transcript-worked-fold and transcript-range-content passes. transcript-long-chat-updates times out at the default 5s on this host, on base as well, with load average ~475. With --timeout 30000 it passes (3/3).
  • vp check passes (format, lint, types); bun run typecheck passes again on 12c02b5. acpmux-protocol:check couldn't run in my sparse checkout because the IR file is missing. The protocol is untouched.
  • No app build. Screenshots come from the gallery stage agent-pane.transcript in headless Chromium.
  • Localization: no new strings. The line shows the call's own title, and the time uses formatDuration.

Changelog

Changed: While an agent works, its status line shows an animated mark and names the command or tool it's running

Proof

Gallery agent-pane.transcript, dark. These are from 3010452. The Thinking frame still shows the shimmer, which is now removed, and the dots are mid-cycle. I couldn't retake them because the gallery dev server wouldn't warm at load ~350.

BeforeAfter

Checklist

  • Behavior changes have added or updated tests, or Testing says why not
  • UI, settings, menu, schema, help-text or user-facing docs change: localization audited, and the result is stated above
  • Reviewed with a subagent before merge (cmux-review), and all bot and human review comments resolved

šŸ¤– Generated with Claude Code


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