Skip to content

Agent chat: every status row's words on one column; session names read as words - #33157

Merged
teamleaderleo merged 3 commits into
feat-cmux-nextfrom
lane/status-row-column
Nov 3, 2026
Merged

teamleaderleo merged 3 commits into
feat-cmux-nextfrom
lane/status-row-column

Conversation

@teamleaderleo

Copy link
Copy Markdown
Collaborator

Leo, 2026-11-03, on a running turn's last rows ("Subagent finished: [Push stranded lane ref] › 4m 1s", "Writing a command 5m 16s · ↓ 7.5K out ↑ 2.1M in", "🤖 1 message from 1 session"):

weird indenting /cut off text?

This follows #33083, which fixed the cut-off name. Two more fixes here:

  • One text column for every status row. The live line ("Thinking", "Writing a command", "Running …") drew no icon, so its words started on the icon column, 24px left of the words in "Subagent finished" and "1 message from 1 session". It now keeps the shared icon slot empty (.cv-worked--live, padding-inline-start: var(--cv-tool-text-inset)), so its words start where every iconed row's words start. The design spec already says this: design/chat-transcript.md, "One icon column": "a row without one still starts its words at that x", and "the live activity line ... reserves the shared empty icon slot". A folded turn's "Worked for" line keeps col-left. The cause dates to before the 22-pitch work: .cv-worked never reserved the slot.
  • Session names read as words. The waiting head's senders (.cv-message-group__senders) inherited font-variant-numeric: tabular-nums from the status line around them. In Inter, tabular figures widen every digit, so a lane name such as "lane-2/message-actions" read as letter-spaced. Names and session chips (.cv-agent-tag) now use normal figures. Transcript: status rows on the 22 pitch under a status row; lighter session chips #33062 restyled the chips with letter-spacing: inherit, which is the row's own 0.045px tracking, so it is not the cause. Timers keep tabular figures.
  • Fix-forward for Agent chat: a finished subagent's name takes its row, the chevron right after it #33083: its failed-with-long-error check ran at 420px, where the name alone is wider than the room the line leaves it. It now runs at 900px.

Design spec: leo-workspace design/chat-transcript.md ("One icon column") and design/transcript-spacing.md (rule 3). References: cmux-design-references cmux/live/status-running-bar-subagent-chip-clipped and cmux/live/transcript-activity-rows-spacing (Leo's captures).

Test

cmux-ci test --setup playwright -- bash -c 'cd webviews && bun test test/transcript-status-text-column.test.ts', on gallery agent-pane.transcript-spacing-table, variants working-bottom and reply-received:

  • Red on base (test commit, before the fix): 3 of 4 fail. The live line is 24px left of the iconed rows in both variants, and the senders use tabular-nums.
  • Green at the fix: passes, along with bun run check, transcript-row-alignment, transcript-spacing-kinds, session-chip-browser, transcript-chevron-after-label, transcript-live-line-continuous, transcript-glyph-alignment, agent-pane-working-counts and subagent-done-chip-width, 158 tests in all. The one Agent chat: a finished subagent's name takes its row, the chevron right after it #33083 test that failed is fixed above and was re-run green.

Observed / Not run

  • Observed: the fleet runs above, scripts/web-lint.sh (heavy checks left to CI on this host) and prepush-gate.py.
  • Not run: a DEV or nightly build. The running tray above the composer ("1 subagent running · 1 command") is a separate ask in the same capture and is not changed here.

Changelog

  • Fixed: In the agent chat, the running line's words line up with the other status rows, and session names no longer look letter-spaced.

Agent session: agent session

🤖 Generated with Claude Code

teamleaderleo and others added 3 commits November 3, 2026 06:11
…es take no tabular figures

Red on base: the live line ("Thinking", "Writing a command") starts its words
on the icon column, 24px left of every iconed row's words, and the waiting
head's senders take tabular figures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-81baa1463f6190d4c5dc
…n; session names in normal figures

Leo, 2026-11-03: "weird indenting /cut off text?". The live line ("Thinking",
"Writing a command") drew no icon and started its words on the icon column,
24px left of "Subagent finished" and "1 message from 1 session". It now keeps
the shared icon slot empty (design/chat-transcript.md "One icon column").
Session names (the waiting head's senders, every session chip) inherited the
status line's tabular figures, which spread the digits and read letter-spaced;
they are set in normal figures.

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

#33083's check ran at 420px, where the name alone is wider than the room the
line leaves it, so the chip was cut too and the check failed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-81baa1463f6190d4c5dc
@teamleaderleo teamleaderleo added risk:low Risk tier (docs/ci/risk-tiers.md) leo-named-fix An obvious fix to something Leo named: lands on push, review runs in parallel labels Nov 3, 2026
@teamleaderleo
teamleaderleo merged commit 0181b00 into feat-cmux-next Nov 3, 2026
141 of 159 checks passed
@teamleaderleo
teamleaderleo deleted the lane/status-row-column branch November 3, 2026 06:14
@github-actions

github-actions Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 51d3868: 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=pr33157 -f ref=lane/status-row-column -f platform=macos -f backend_mode=local

Gallery before/after for 51d3868: 16 states rendered, 4 images differ, 1621 more touched states not rendered. Images are in the run's artifact, not on this public PR; the independent review of this head reads them on its own, so the PR needs no hand-made screenshots of these states.

gh run download 41588587384 -R manaflow-ai/cmux -n gallery-advisory-33157-51d3868df7a104e77b355f938a2098a83136a493 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.access-offer/turn-no-credits Apple System Colors Light unchanged 0% own conversation.css
agent-pane.access-offer/turn-no-credits Apple System Colors unchanged 0% own conversation.css
agent-pane.access-offer/turn-low-credits Apple System Colors Light unchanged 0% own conversation.css
agent-pane.access-offer/turn-low-credits Apple System Colors unchanged 0% own conversation.css
agent-pane.access-offer/turn-no-offer Apple System Colors Light unchanged 0% own conversation.css
agent-pane.access-offer/turn-no-offer Apple System Colors unchanged 0% own conversation.css
agent-pane.activity-line-looks/none Apple System Colors Light unchanged 0% own conversation.css
agent-pane.activity-line-looks/none Apple System Colors unchanged 0% own conversation.css
agent-pane.activity-line-looks/spinner Apple System Colors changed 0.0529% own conversation.css
agent-pane.activity-line-looks/spinner Apple System Colors Light changed 0.0509% own conversation.css
agent-pane.activity-line-looks/kind Apple System Colors Light changed 0.0274% own conversation.css
agent-pane.activity-line-looks/kind Apple System Colors changed 0.0248% own conversation.css
agent-pane.activity-line-looks/aligned Apple System Colors Light unchanged 0% own conversation.css
agent-pane.activity-line-looks/aligned Apple System Colors unchanged 0% own conversation.css
agent-pane.approval-edits/single Apple System Colors Light unchanged 0% own conversation.css
agent-pane.approval-edits/single Apple System Colors unchanged 0% own conversation.css
agent-pane.approval-edits/grouped Apple System Colors Light unchanged 0% own conversation.css
agent-pane.approval-edits/grouped Apple System Colors unchanged 0% own conversation.css
agent-pane.approval-edits/single-multiedit Apple System Colors Light unchanged 0% own conversation.css
agent-pane.approval-edits/single-multiedit Apple System Colors unchanged 0% own conversation.css
agent-pane.approval-edits/grouped-multiedit Apple System Colors Light unchanged 0% own conversation.css
agent-pane.approval-edits/grouped-multiedit Apple System Colors unchanged 0% own conversation.css
agent-pane.approval-edits/single-long Apple System Colors Light unchanged 0% own conversation.css
agent-pane.approval-edits/single-long Apple System Colors unchanged 0% own conversation.css
agent-pane.approval-edits/grouped-long Apple System Colors Light unchanged 0% own conversation.css
agent-pane.approval-edits/grouped-long Apple System Colors unchanged 0% own conversation.css
agent-pane.attachment-source/before Apple System Colors Light unchanged 0% own conversation.css
agent-pane.attachment-source/before Apple System Colors unchanged 0% own conversation.css
agent-pane.attachment-source/corner Apple System Colors Light unchanged 0% own conversation.css
agent-pane.attachment-source/corner Apple System Colors unchanged 0% own conversation.css
agent-pane.attachment-source/small Apple System Colors Light unchanged 0% own conversation.css
agent-pane.attachment-source/small Apple System Colors unchanged 0% own conversation.css

Pick other states with a Gallery: entry.id, entry.id/variant line in the PR body.

Unclear: web / react-apps-check failed: no known signature; failed step: Check webview test shards. CI was cancelled before it finished. This PR merged before its CI finished: fix forward on main.

CI stopped on 51d3868df7 (run 41588587471 attempt 1): 1 unknown.

Job Verdict Why
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Not re-run automatically: web / react-apps-check is not a machine failure.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on eeb28af to compare; do not merge until green; see lane-rules

Shipped in:

@github-actions github-actions Bot added risk:normal Risk tier (docs/ci/risk-tiers.md) and removed risk:low Risk tier (docs/ci/risk-tiers.md) labels Nov 3, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent opus medium): SHIP at 51d3868

Checked: cv-worked--live goes only on Thinking's main render; the spinner and silent start looks, WorkingFor and the folded "Worked for" toggle (TurnRows) keep col-left. The 24px inset is --cv-tool-text-inset, the same 16px slot plus 8px gap the tool rows use. is-below, the after-step height, the ⌃B hint (absolute, right: 0), the hover and focus rings and is-quiet all still work on the padded box. browser/transcript-rhythm's col-left and first-ink checks measure the .cv-worked box, not its words, so they still pass. The font-variant-numeric: normal changes are scoped to names. This matches design/chat-transcript.md "One icon column": a row without an icon still starts its words at that x, and the live line reserves the empty slot.

Follow-ups:

  • [follow-up] WorkingFor's running line (.acpmux-working, the path used when the session status list is off) still starts its words on col-left, and only sometimes shows a TerminalSquare glyph there. Either put its glyph in the slot or give it the same inset, so the two live-line paths match.
  • [follow-up] subagent-done-chip-width now runs the failed-long-error case only at 900px. Add the 420px case back with the behaviour we want at narrow widths, so the coverage Agent chat: a finished subagent's name takes its row, the chevron right after it #33083 meant to have is not lost.
  • [follow-up] In a narrow pane the live line has 24px less room for its label, time, tokens and counts. They shrink rather than wrap, but it is worth one capture at about 360px.

cmux-bot Bot pushed a commit that referenced this pull request Nov 3, 2026
…29938's live line (#33614)

* base red: the spacing table finds the live line across its lead span (#33241)

#33241 draws the live line's verb in its own span ("Sending" | " message to …"),
so no single text node holds "Sending message to" and step-to-live / live-to-step
measured nothing. The test now finds the live line by its row's text.

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

* base red: the codex live line test reads the live line's column class (#33157)

#33157 gives the live line `cv-worked--live` (its words on the status rows' text
column), so its quiet box renders "cv-worked cv-worked--live is-quiet".

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

* base red: the working-counts tray lists its subagents newest first (#33364)

#33364 orders the open running tray newest first: Tester (spawned after Reviewer)
now leads.

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

* base red: the live permission tests move the turn past the approved call (#33408, #33439)

In a running turn with nothing after it, the latest finished call is lifted onto the
live line (turns.ts liftedStep, #29938), so its row and its Approved mark are not drawn.
#33439 pushed only the call's completion; the tests now push the reply's first words
after it, the state the passing resync test already reaches.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Nov 3, 2026
…3773)

- Geometry: the running turn's live line keeps its icon slot empty by design
  (#33157), so its words start 24px in; gallery/invariants.ts now reads its
  lead edge from its box (data-lead-slot) instead of its words, which sat 4px
  off a subagent card's avatar column.
- agent-pane.subagent-tray-names: the scene's turn still runs, so its
  transcript-only command is a tray line and the tray gets its header.
- agent-pane.subagent-split-pair: the parent's play opens Session Info with
  the toggle in a pane too narrow to open it from the saved state.
- shift-baseline: subagent-tray#one-agent-two-commands opens the tray since
  #33104; the open grows it upward like the other opening tray states.


Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Nov 4, 2026
…s the last row (#34370)

* test(agent-pane): the running turn's live line stays under the waiting messages

Fails on base: withWaitingRows does not exist and App.tsx appended the
waiting-messages group after the live line.

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

* Agent pane: the live Thinking line starts on the icon column and stays the last row

Leo: "the indent looks bad" / "thinking shimmer not being at the bottom looks bad".
Drops the live line's text-column inset (#33157) and keeps it under the
waiting-messages group and held guest prompts (withWaitingRows).

Leo-ask: ask-f654b777b7

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

* test(agent-pane): the live line's spacing and column tests read the new order and icon column

Router review (gpt-6.1-sol) at 14e9fcb: the text-column and spacing browser
tests still asserted the live line on the text column and over the waiting group.

Leo-ask: ask-f654b777b7

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

* test(agent-pane): the live line's gap under the waiting group counts from the group's last line

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

* test(agent-pane): measure the live line under the waiting group as the kinds test does

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

---------

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

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 51d3868d Deployed Nov 3, 2026 by teamleaderleo via cmux-tui tree preflight #104293
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