Agent chat: message rows put the recipient and count on the row, the first line under it
Leo said "yes" to this, on his screenshot of the coordinator chat. The row he showed, "Sent to build-box/spinner-lane · and 5 more commands coordinator: Leo's answer (v…", put a count, a target and a message preview on one truncated line. Then, of two more captures of the same rows: "i also think this is quite weird looking". In those captures:
- an opened send floated its Copy beside the chevron, with "Raw ⌄" on an oddly indented line;
- envelope rows were bright or dim with no rule;
- the live "Sending message to … 3m 56s · ↓1.4K out ↑819.5K in" line had no icon.
Change
A message row between agents now puts its verb, recipient chip, count and chevron on the row. The message's first line goes on its own line under it, at the text column, cut there. This covers:
- a send (
SentMessageLine.tsxforacpmux sendand sub-session sends,AgentMessageRow.tsxfor SendMessage); - another agent's received line and an inbox thread (
IncomingMessageCard.tsx,InboxNoticeCard.tsx, through a newbelowslot onDisclosureRow); - a folded group's head (
MessageGroupHead.tsx: the senders under "7 messages from 6 sessions").
messageLineLook.ts holds the look: stacked (the default) and two gallery versions, single (before) and quiet (no preview until opened). I compared the three and picked stacked: the chip and count read at a glance, and the preview stays one click from the whole message.
- Opened send. The message sits at the text column, with Copy and Raw quiet on one line under it at the same indent. Nothing sits beside the chevron, and Raw no longer indents twice (
SubsessionCallCard.css). - One tone. A send row the reader clicked no longer brightens on focus. It keeps the rows' steady tone, as a received line already does. "Sending" and "Sent" are told apart by their words.
- Live send line. "Sending message to …" drops the turn's token count, which said nothing about the send (
Thinking.tsx). - Estimates.
model.tsadds the preview's 18px line to a shut stacked row that has one: sends, received lines, inbox threads, the waiting group and an inbox batch's head.
Gallery: agent-pane.message-line-look shows a coordinator turn like Leo's capture in stacked, opened, single and quiet.
Spec: leo-workspace design/chat-transcript.md.
Activity rows, one grammar
Then, on the tray and its rows: "stuff like this is just extremely bruh" and "and this...". This head also:
- Icon column. The live line's words start on the rows' text column with no mark of its own, as #33241 settled (Claude Code's live line); this head keeps that.
- Token counts. The live line says one count, "47.4K tokens", with the out/in split on its hover (#33241's default), never "↓ out ↑ in" in its words; a send's line shows none.
- Notices. A tool's notice (#32970) keeps its title and severity tag on its line; a plain message stacks its first line under it.
- One message, one line. A pending card or lane batch holding a single message renders as that message's own line ("Message from X" with its preview), not a group head over a repeated child. The estimate in
model.tsfollows. - Not here: the Thinking duration is #33248's timer fix; the queued-message controls were aligned in #33333; the host label stays (it shows only when it differs, per the earlier decision); the chip's style is left for the design-system tokens.
Tests
SentMessageLine.test.tsx now checks the stacked line: the chip and count on the row, the preview below it, the preview toggling the row, and Copy with Raw under an opened message. It also checks that single keeps the old line. The earlier assertions now read the preview from its own line.
Observed / Not run
- Unit tests for the affected rows ran on the build fleet; typecheck and format pass at this head; the rows' estimate, grammar and preview tests were updated to read the first line from its own line.
- Browser layout tests (spacing table, row pitch, chevron column) run in this PR's webview suite; their one-line pitch values are being restated for the two-line message rows here.
Changelog
- Changed: message rows between agents show the recipient and count on one line and the message's first line under it; an opened sent message shows Copy and Raw under it.
🤖 Generated with Claude Code
Agent session: agent session