agent transcript: plain "Ran 2 commands", regular sub-session rows, the row opens its chat
Leo, 2026-10-29: "Man, what the fuck is this spacing? Why is there space between ran and two? And why is one of these bold? And why is there space, a fucking gap in between them? And why do you have the fucking open chat? Nobody asked for open chat. We can just click. Just have the thing be clickable, and then you can open it."
Gallery: agent-pane.transcript-row-tidy, agent-pane.transcript-row-tidy/hover, agent-pane.subsession-cards/started, agent-pane.incoming-message-disclosure/a-shipped
What changes
- "Ran 2 commands" reads with one space. A group's line (
ToolGroupRow) passed its whole label throughToolLabel, which split "Ran" into the turn's verb column (as wide as the widest verb in the turn, e.g. "Searched"), so the count sat a column away. The group label is nowwhole. Single-call rows ("Ran git status", "Read App.tsx") keep the column as before. - No bold sub-session row.
DisclosureRow's label wasfont-weight: 500; the received-message line next to it is 400, as are tool rows. The family is 400 now. - No gap between those rows.
DisclosureRowhadmargin: 4px 0 6pxaround a taller line (--ds-control-compactplus 3px padding); the received-message line it sits beside uses 26px in 2px margins. The family uses that now. - No "Open chat" button. Removed from
DisclosureRow(the hover word at the line's end) and fromAgentCard's card form. A row that has a chat to open is that chat's button: a click (or Enter/Space) on the line opens the chat.- The line used to toggle the panel (the sub-session's prompt, or the received message's full text). That disclosure is kept: the chevron after the status is now its own button (
.cv-disclosure__toggle.is-chevron,aria-expanded/aria-controls, accessible nametoggleLabelor "Details"). A row with no chat to open (a sender nothing lists, a gallery sub-session with no id) is unchanged: its whole line toggles the panel. - The line's tooltip names what it opens ("Open mesh", or "Open ()" for a peer).
- The line used to toggle the panel (the sub-session's prompt, or the received message's full text). That disclosure is kept: the chevron after the status is now its own button (
Scope: only subagents/DisclosureRow.*, subagents/AgentCard.* and one prop in conversation/ToolGroupRow.tsx. IncomingMessageCard.tsx and SubsessionCallCard.tsx are untouched (they pass the same props); their gallery notes that mention "Open chat on hover" are left for the lane that owns that copy.
Before / after (Linux gallery, Chromium)
The new gallery state agent-pane.transcript-row-tidy has no base render (it is new), so its "after" stands alone; the two existing states show both.
After, transcript-row-tidy/rows (dark, light): "Ran 3 commands" in one space, the sub-session and message rows at regular weight on the same 26px rhythm, no "Open chat".

After, transcript-row-tidy/hover: the hovered row is the chat's button; the chevron is its own target.
| Before | After | |
|---|---|---|
subsession-cards/started | ![]() | ![]() |
incoming-message-disclosure/a-shipped | ![]() | ![]() |
Tests
Another lane (agent session aid-a4efd6c1314eb5a4fc3e) also pushed three commits to this branch: a base merge, the 26px line moved into one variable (--cv-disclosure-line-height in conversation.css, used by DisclosureRow.css and the received line) with the design-token baseline reduced to match, oxfmt formatting, and transcript-hover-fade.test.ts updated to say a message line's Open chat is now the line itself. The review below covers the whole head.
webviews/test/subsession-row-opens-chat.test.tsx(new): a click on a sub-session row opens its chat and leaves the prompt closed; the chevron alone opens it; a row with no chat keeps the whole-line toggle; the card form's head is the button; no "Open chat" text; the CSS keeps 2px margins, 26px line and weight 400.ToolVerb.test.tsx: a group's line is "Ran 2 commands" with no verb-column span, while its calls' rows keep theirs.incoming-sender-chip,incoming-minimal-collapse,agent-pane-suggested-tasks: updated for the line being the open button and the chevron the toggle.
Review (Codex gpt-6-astra high, via review-router; independent, correctness first): SHIP at 007ce290c561eefa14a44f21499410fd9884c430
Performance
No perf numbers: this changes CSS and which element takes the click; no new timer, observer, animation loop or per-token work. The group label skips ToolVerb's per-mount verb-column registration, so it does less work than before.
Risk
Low to medium. Behaviour change for received-message rows from a chat cmux knows: a click on the line now opens the sender's chat instead of expanding the message; the chevron expands it. Rows with no chat behave as before. Visual: the sub-session row family is 2-4px shorter and regular weight.
š¤ Generated with Claude Code
Agent session: agent session



