Agent pane: a sent agent message is one collapsed line, shared with received ones
Leo, on the card the agent pane draws when an agent sends a message to another agent ("This agent → release-rings-32", "SendMessage ›", a 2-line preview, "Show more"): the styling looks bad and it should be more collapsed from the start, as Claude draws message rows.
A sent message is now one collapsed line, drawn as a tool row is (cv-tool: the rows' font, 26px, icon column):
- an envelope, then "Sent to" and the recipient as a glass chip, then the message's first line, muted and cut with an ellipsis, then the chevron;
- a send still going out reads "Sending to" with the working mark; a finished send shows its check at the line's end on hover, as a tool row does; a failed one says Failed in the danger colour;
- the whole line opens it: the full message in a compact glass card (selectable), then one status line (Sending…, Sent, Delivered to …, never the receipt's id) and how it went out (SendMessage, Coordinator, cmux send, Mailbox), then what else the send printed;
- whether it is open lasts across the virtualized transcript (
useTranscriptDisclosure), and Find in Chat opens a send that holds its match.
No bordered opaque card, no Show more.
One component for both directions. The row is AgentMessageRow.tsx (+ .css): icon, a sentence with the other agent's name as a chip (optionally a button that opens its chat), preview, chevron, card, and whatever the caller puts under it. MessageCard.tsx (outgoing) now draws with it. The incoming line (IncomingMessageCard.tsx, restyled to the same shape by #23727) moves onto AgentMessageRow in a follow-up by the agent-message-style lane; the row already has the icon slot (a harness mark) and an actions slot (Reply, hover row) it needs, and messagePreview reads a first line the way #23727's does (Markdown marks dropped). A unit test draws a received row through those slots.
Strings: message.sentTo and message.sendingTo, in all 21 languages the catalog carries; Channels Home's string table gets them (and the channel/status keys it was missing).
Tests (webviews/test/transcript-row-message.test.tsx): a sent message starts collapsed (one line, Sent to, recipient chip, first-line preview, aria-expanded=false, no card, no status, no Show more); opening shows the whole message selectable with aria-controls on the card and the receipt as a status line without its id, and closing hides it again; sending → sent; what else the send printed shows without the receipt.
Gallery: agent-pane.agent-message-row (sent, sent-opened, both-directions, both-directions-opened); agent-pane.transcript/agent-messages also shows the new rows.
Before/after (gallery-compare, tailnet): https://cmux-lawrences-mac-mini.tail137216.ts.net:18796/compare/tp-sent-message-row/
| State | Before (base) | After |
|---|---|---|
| transcript/agent-messages, dark | before | after |
| transcript/agent-messages, light | before | after |
| sent, collapsed | dark · light | |
| sent, opened | dark · light | |
| sent + received, opened | dark · light |
Changelog
Changed: A message an agent sends to another agent is one collapsed line ("Sent to " and its first line) that opens to the whole message.
Observed / Not run
Ran: focused webview tests on the fleet (scripts/ci/run-webviews-tests.sh: transcript-row-message, agentMessages, transcript-received-messages, agent-pane-suggested-tasks): 4 files, 0 failed at 1349a1fe. Fleet cmux-ci compile-check --app passed at 1349a1fe. Not run: an app build (webview-only change).
No capture: webview-only change; the gallery states above show it.
Risk: normal (agent pane UI only).
Agent session: cosmic-gray
🤖 Generated with Claude Code