Agent chat: tool rows and the live line read as Claude Code's
Leo, 2026-11-03: "i feel like comparing claude code's to ours, we're not faithfully following how they're doing stuff" / "wrt tool calls and the lowest level thinking". On the live line's mark: "we don't want the claude symbol ellipsis thing btw we just keep the shimmer ONLY".
What changes
- Finished MCP rows read as Claude Code's: "Used repo: repo grep" (was "Called repo · repo grep"); running, "Using repo: repo grep". Commands and reads already read "Ran git status", "Read App.tsx" and are pinned by the new test. Friendlier lines (Read/Started/Sent a message to …, cmux's own calls) are unchanged.
- The live line names the current action with its verb in full ink and the rest muted ("Using repo: repo grep", "Running bun test", "Sending message to …"), then the turn's time and one token count: "3m 2s · 47.4K tokens" (was "↓ 47.4K out ↑ 2.7M in"). The count is the turn's output, so nothing is folded into a total; the split is on its hover, on the finished turn's footer tooltip, and behind the new
live-line-tokensexperiment'ssplitarm. The shimmer stays its only working mark; no dots, no spinner. - The running bar above the composer (SubagentTray) and the received-messages line are untouched.
Variants (gallery agent-pane.claude-code-tool-rows)
| Variant | What |
|---|---|
shipped (chosen) | Claude Code's words and one-count tokens; our icon column and down chevron stay |
bare | No icons, as Claude Code |
caret | Claude Code's right-pointing caret |
split | The earlier out/in tokens |
Chosen because it copies Claude Code's wording, single live line and token count, while keeping two settled designs Leo asked for: the shared icon column (tool, inbox and message rows on one glyph and text x, design/chat-transcript.md "One icon column") and the ChatGPT-style chevron right after the words (settled 2026-11-03). Dropping the icons on tool rows alone would put them out of line with the inbox and message rows. Claude's orange dots get no variant (Leo's word above). Spec: design/chat-transcript.md, updated in the leo-workspace companion PR.
References used (private repo, not attached): claude/live/transcript-tool-rows-and-task-list, claude/live/transcript-peer-session-message, claude/live/status-thinking-line-token-counts, claude/live/transcript-grouped-activity-summary-counts.
Tests
- New
webviews/test/claude-code-tool-rows.test.tsx(committed first, 5ed20fd9af5): finished and running MCP wording, a command and a read, the live line naming an MCP call, the live line as one line (action, time, one token count), the lead in full ink, no mark but the shimmer, and the split arm.- Red on base adb7fe3b0e6:
cd webviews && bun test test/claude-code-tool-rows.test.tsx: 5 fail, 3 pass. - Green at head: 8 pass.
- Red on base adb7fe3b0e6:
- Updated tests that pinned the old look:
ToolVerb.test.tsx(lone MCP row now has a verb, "Used hub: frobnicate"),transcript-density.test.tsx("Using cmux: list workspaces"),agent-pane-turn-token-split.test.tsx(live line on thesplitarm),agent-pane-turn-tokens-muted.test.tsxandtranscript-codex-live-line.test.tsx("2.1M tokens" on the live line).
Observed / Not run
- Observed (fleet, cmux-ci test --setup playwright): 71 transcript, tool-row and token unit test files: 776 pass, 3 fail; the 2 failing tests in
transcript-working-line.test.tsxfail the same way on base (checked at adb7fe3b0e6), the third wastranscript-codex-live-line, fixed in ec6bc38. Browser suitestranscript-icon-column,tool-row-column-browser,agent-pane-turn-tokens-muted-browser,transcript-chevron-after-label: 52 pass, 0 fail.bun run check: lint and types pass;check:design-tokensis red on base (cloudStart.css), the fixed-waits and fmt reds came from an uncommitted capture script in that run, not the branch. - Observed: 2x gallery captures of every variant, light and dark, compared with the references.
- Not run: a DEV build with a live Claude session.
Changelog
- Changed: Agent chat tool rows and the live line read the way Claude Code words them ("Used repo: repo grep", "Using repo: repo grep 3m 2s · 47.4K tokens").
Agent session: agent session
🤖 Generated with Claude Code
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Agent chat tool rows and the live line now read as Claude Code words them, matching its transcript style instead of our previous phrasing.
- Finished MCP calls read
Used repo: repo grep(wasCalled repo · repo grep); running ones readUsing repo: repo grep. - The live line names the current action with its verb in full ink and the rest muted, then the turn's time and one token count ("3m 2s · 47.4K tokens") instead of "↓ 47.4K out ↑ 2.7M in".
- The count is the turn's output; the out/in split moved to the hover and behind the new
live-line-tokensexperiment'ssplitarm. - The shimmer stays the live line's only working mark; no spinner or dots.