Skip to content

Agent chat: message rows on one line, names whole, in the text tone - #34464

Merged
teamleaderleo merged 4 commits into
feat-cmux-nextfrom
agent-msg-rows-inline-preview
Nov 4, 2026
Merged

teamleaderleo merged 4 commits into
feat-cmux-nextfrom
agent-msg-rows-inline-preview

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

Leo, on the agent message rows in the transcript ("Sent to " rows, "Received 2 messages", an opened "Sent 3 messages" group, a bot's line with a subtitle under it):

i don't think these subtitles are as good as just doing it directly in the same line. likewise, idk why everything is grey other than the recieving message bubble. and idk why names are ellipses'd so early plus the weird chevron spacing thing

This is a restyle only. No control is removed or switched off.

1. The preview goes back on the same line. messageLineLook.ts now defaults to single, so the row reads verb, then name, then count, then the muted first line, then the chevron. The stacked look stays available as the stacked gallery version.

2. The rows aren't grey any more. Sent, received and group rows read in the transcript's text tone (--cv-text). The preview is the one muted span (--cv-text-muted). An opened send now matches an opened received message in tone and size, where before it was muted detail-size text. The line's hover lift is gone, so a row keeps one tone.

3. Names are no longer cut early.

4. Chevron spacing.

  • The sentence and preview take only their words' width, so the chevron sits right after the words.
  • Every message-row chevron is one size (14 at stroke 1.2). The received line and group head drew 12 at 1.4.
  • transcript-chevron-after-label.test.ts now covers message rows (agent-pane.message-line-look leo-capture and single).
  • Regressed by Agent chat: message rows put the recipient and count on the row, the first line under it #33249, whose empty-toggle pull-back left the chevron floating once the preview moved off the line.

Gallery. agent-pane.message-line-look has these variants:

Tests. The stacked expectations #33249 added go back to the one-line ones. A new SentMessageLine.test.tsx case covers both looks. Locally scoped unit run: 93 pass, 0 fail.

Spec. design/chat-transcript.md, "Always draw a message row between agents ... on one line" (private notes repo).

Follow-up for #34149 (stacked gallery plays): it needs a rebase after this lands. That rebase is its owner's.

Agent session: agent session

🤖 Generated with Claude Code


Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.


Summary by cubic

Restyles agent message rows in the transcript so they read on one line with the recipient's whole name, in the transcript's text tone. This is a restyle only; no control is removed or switched off.

  • The message's first line sits back on the row after the name and count, muted, instead of on its own line underneath; the stacked look stays as a gallery variant.
  • Sent, received, and group rows switch from the grey activity tone to the transcript's text tone; the preview is the one muted span.
  • Names lose their 40%/45% width caps and never shrink — only the full line width cuts them, and the preview yields first.
  • Chevrons sit right after the words, all at one size; an opened send matches an opened received message in tone and size.
  • The gallery adds leo-capture and leo-capture-stacked variants; tests and row-height estimates update to the one-line layout.

Written for commit f45d0e7. Summary will update on new commits.

View guided diff Turn on auto-fix

teamleaderleo and others added 4 commits November 3, 2026 15:13
Leo, 2026-11-03, on the stacked message rows: "i don't think these subtitles are as
good as just doing it directly in the same line. likewise, idk why everything is grey
other than the recieving message bubble. and idk why names are ellipses'd so early
plus the weird chevron spacing thing".

- messageLineLook.ts: the default is single again (the first line on the row after the
  name); stacked (#33249) stays as a gallery version.
- The other agent's name takes its whole width: no 40%/45% caps; the preview gives way
  first (flex-shrink 1000).
- Sent, received and group rows read in --cv-text; the preview in --cv-text-muted.
- The chevron follows the words (the sentence takes its words' width).
- Gallery: agent-pane.message-line-look leo-capture and leo-capture-stacked.
- Tests: #33249's stacked expectations go back to one line; a unit test covers both looks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-92fa78a91e29868c5eaa
…xt tone; chevron-after-label covers message rows

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-92fa78a91e29868c5eaa
@teamleaderleo teamleaderleo added the leo-named-fix An obvious fix to something Leo named: lands on push, review runs in parallel label Nov 4, 2026
@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review f45d0e7: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr34464 -f ref=agent-msg-rows-inline-preview -f platform=macos -f backend_mode=local

Gallery before/after for f45d0e7: the capture produced no images (run).

red: web / Web status; a job it gathers is red on this change (its line here); do not merge until green; see lane-rules
red: web / react-apps-base-check (6); NEW webview test reds: test/session-chip-browser.test.ts > light received: the session chip sits on the icon's centre line, padded, a link, lit alone; test/session-chip-browser.test.ts > dark received: the session chip sits on the icon's centre line, padded, a link, lit alone; test/incoming-message-disclosure-browser.test.ts > a delivered message and a waiting one draw the same line: chevron after the words, actions on hover; do not merge until green; see lane-rules
red: web / react-apps-check; a job it gathers is red on this change (its line here); do not merge until green; see lane-rules

Shipped in:

@teamleaderleo
teamleaderleo merged commit 1e8a45b into feat-cmux-next Nov 4, 2026
119 of 140 checks passed
@teamleaderleo
teamleaderleo deleted the agent-msg-rows-inline-preview branch November 4, 2026 01:00
@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Nov 4, 2026
teamleaderleo added a commit that referenced this pull request Nov 4, 2026
…tays in view (#34509)

* Agent chat: a long name gives way after the preview, so the chevron and status stay in view

Follow-up to #34464 (review). Names keep their natural width while the first line has room;
once it is gone the name is cut, never the chevron or status. A send's file name is cut as the
preview is. The declined message line's chevron takes the rows' 14/1.2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-92fa78a91e29868c5eaa

* Agent chat: a received line's toggle gives way before its sender's name

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-92fa78a91e29868c5eaa

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Nov 4, 2026
* Agent chat: test that message lines rest in the activity tone

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64

* Agent chat: message lines rest in the activity tone, light only on hover or focus

Leo, 2026-11-03: "these are now too lit up by default? they should only be
this bright when u hover over it", on "Received 6 messages" / "Sent 2
messages". #34464 drew sent, received, group-head and run lines in --cv-text
at rest; they now rest at --cv-activity-text like the finished tool rows and
light to --cv-text on hover or keyboard focus. Opened cards keep --cv-text.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64

* Agent chat: received lines rest dim in the browser test; open group heads and plain senders follow the line

received-message-steady-tone-browser.test.ts pinned the earlier no-lift order;
it now asserts rest = activity tone, hover = text tone, cards unchanged. An open
group head keeps its words lit; .cv-received__from inherits the line's tone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-d750cf10922c785efa64

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Nov 4, 2026
…w the live line kept last (base reds) (#34620)

* gallery: message-row plays click the one-line row's first line (#34464)

#34464 returned message rows to one line: the first line sits on the row
after the name, and stacked (#33249) stays a gallery version. #34149's plays
clicked .cv-agentmsg__below, the stacked first line, which the default no
longer draws (agent-message-row#sent-opened, #sent-opened-long: no element),
and message-line-look#opened waited for Copy under the opened message,
which only the stacked version moves there (waitFor timed out). The plays
click the first line's words on the row, never the recipient's chip, and
wait for what the one-line look draws.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5

* gallery: shift rows follow the one-line message rows and the live line kept last

incoming-message#minimal-fade-count, #minimal-inline-name and #minimal-open
go back down to 0.0175, 0.0175 and 0.0624: #34149 raised them for #33249's
stacked lines, and #34464's one-line rows measure 0.01749, 0.01749 and
0.0623 again on base (push run 41756372530).

queued-agent-messages#subsession-outbox and composer#queued-from-agent-open
open a waiting message above the running turn's live Thinking line, which
#34370 keeps as the last row by design (Leo: "thinking shimmer not being at
the bottom looks bad"), so opening it moves the live line down by what
opened (0.0159, 0.0082). Their 0 rows were measured with the live line over
the waiting group.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
lawrencecchen added a commit that referenced this pull request Nov 4, 2026
…t spacing test's after() helper (#34577)

* base red: the What's New brief's More line sits on the spacing scale (design tokens)

check:design-tokens is red on feat since b7c9441 (#34477): the brief
popover's .wn-pop-more used margin-top 2px, off the token scale. It now
uses --ds-space-1 (4px), the same gap .wn-pop-all uses above it.

* base red: transcript spacing test defines after() again (webviews typecheck)

webviews typecheck is red on feat: test/transcript-spacing-kinds.test.ts:247
calls after(), which #34464 (1e8a45b) removed together with below()
while #34370 (8557b10, written on a base that still had them) added a
new use. Restore both helpers as #34370 measured with them; no other change.

* base red: cloudRun test names a string in its template (vp lint restrict-template-expressions)

#34592 (31ffec4) builds a call label with ${params.cwd}, an unknown;
vp lint treats that as an error in the pre-push web lint, so the merge
service's hook refused #34577's squash. String() it; no behavior change.

* base red: format three webviews files the way vp fmt --check wants

feat's emoji shortcode change (#34364) left App.tsx, emojiShortcodes.test.ts
and composer-emoji.browser.test.ts unformatted, so vp fmt --check fails the
pre-push web lint on every webviews push. Output of scripts/web-lint.sh --fix.

* base red: the Cloud start source check accepts the formatted App.tsx call

vp fmt puts cloudFolderGrant.granting(folder.cwd, pickFolder(...)) on
several lines, and cloudRun.test.ts read it as one line, so it failed
after the format commit. The pattern now allows whitespace between the
arguments. bun test cloudRun.test.ts: 21 pass, 0 fail.
teamleaderleo added a commit that referenced this pull request Nov 4, 2026
…view, not the sender (#35851)

#34464 put the sender and the first line on one row again, so the line holds both
.cv-received__from and .cv-received__preview. querySelector with the list
".cv-received__preview, .cv-received__from" returns the earlier node in the
document, the sender, and the test read the gap from the sender's name to the
chevron (233-275 px) instead of from the words (under 8.5 px). It now takes
the preview first and falls back to the sender in the stacked look.

Red on the base, green here:
cd webviews && CMUX_BROWSER_TESTS=1 bun test ./test/incoming-message-disclosure-browser.test.ts -t "a delivered message and a waiting one"


Agent-Session: https://cmux.com/deeplink/agent?id=aid-8707001042ea634e8771

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

This branch was previously deployed

1 inactive deployment
ci-routing-agent — f45d0e7b Deployed Nov 4, 2026 by teamleaderleo via cmux-tui tree preflight #108375
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

leo-named-fix An obvious fix to something Leo named: lands on push, review runs in parallel risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant