Agent chat: every status row's words on one column; session names read as words

Merged
TE
2d ago
+138-2

Leo, 2026-11-03, on a running turn's last rows ("Subagent finished: [Push stranded lane ref] › 4m 1s", "Writing a command 5m 16s Ā· ↓ 7.5K out ↑ 2.1M in", "šŸ¤– 1 message from 1 session"):

weird indenting /cut off text?

This follows #33083, which fixed the cut-off name. Two more fixes here:

  • One text column for every status row. The live line ("Thinking", "Writing a command", "Running …") drew no icon, so its words started on the icon column, 24px left of the words in "Subagent finished" and "1 message from 1 session". It now keeps the shared icon slot empty (.cv-worked--live, padding-inline-start: var(--cv-tool-text-inset)), so its words start where every iconed row's words start. The design spec already says this: design/chat-transcript.md, "One icon column": "a row without one still starts its words at that x", and "the live activity line ... reserves the shared empty icon slot". A folded turn's "Worked for" line keeps col-left. The cause dates to before the 22-pitch work: .cv-worked never reserved the slot.
  • Session names read as words. The waiting head's senders (.cv-message-group__senders) inherited font-variant-numeric: tabular-nums from the status line around them. In Inter, tabular figures widen every digit, so a lane name such as "lane-2/message-actions" read as letter-spaced. Names and session chips (.cv-agent-tag) now use normal figures. #33062 restyled the chips with letter-spacing: inherit, which is the row's own 0.045px tracking, so it is not the cause. Timers keep tabular figures.
  • Fix-forward for #33083: its failed-with-long-error check ran at 420px, where the name alone is wider than the room the line leaves it. It now runs at 900px.

Design spec: leo-workspace design/chat-transcript.md ("One icon column") and design/transcript-spacing.md (rule 3). References: cmux-design-references cmux/live/status-running-bar-subagent-chip-clipped and cmux/live/transcript-activity-rows-spacing (Leo's captures).

Test

cmux-ci test --setup playwright -- bash -c 'cd webviews && bun test test/transcript-status-text-column.test.ts', on gallery agent-pane.transcript-spacing-table, variants working-bottom and reply-received:

  • Red on base (test commit, before the fix): 3 of 4 fail. The live line is 24px left of the iconed rows in both variants, and the senders use tabular-nums.
  • Green at the fix: passes, along with bun run check, transcript-row-alignment, transcript-spacing-kinds, session-chip-browser, transcript-chevron-after-label, transcript-live-line-continuous, transcript-glyph-alignment, agent-pane-working-counts and subagent-done-chip-width, 158 tests in all. The one #33083 test that failed is fixed above and was re-run green.

Observed / Not run

  • Observed: the fleet runs above, scripts/web-lint.sh (heavy checks left to CI on this host) and prepush-gate.py.
  • Not run: a DEV or nightly build. The running tray above the composer ("1 subagent running Ā· 1 command") is a separate ask in the same capture and is not changed here.

Changelog

  • Fixed: In the agent chat, the running line's words line up with the other status rows, and session names no longer look letter-spaced.

Agent session: agent session

šŸ¤– Generated with Claude Code