agent transcript: plain "Ran 2 commands", regular sub-session rows, the row opens its chat

Closed
TE
6d ago
+409-128

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

  1. "Ran 2 commands" reads with one space. A group's line (ToolGroupRow) passed its whole label through ToolLabel, 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 now whole. Single-call rows ("Ran git status", "Read App.tsx") keep the column as before.
  2. No bold sub-session row. DisclosureRow's label was font-weight: 500; the received-message line next to it is 400, as are tool rows. The family is 400 now.
  3. No gap between those rows. DisclosureRow had margin: 4px 0 6px around a taller line (--ds-control-compact plus 3px padding); the received-message line it sits beside uses 26px in 2px margins. The family uses that now.
  4. No "Open chat" button. Removed from DisclosureRow (the hover word at the line's end) and from AgentCard'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 name toggleLabel or "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).

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.

BeforeAfter
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