Repository navigation
test(transcript): every row draws its status before the chevron, the chevron last - #28860
Conversation
…rows
Leo 2026-10-29: "this ui isn't consistent :(" and "this rendering can be
better for sent stuff". Sends read "Sent to <recipient>" with the one chip,
every row's trailing column (status, then duration) sits before the chevron
on the tool rows' grid, the subagent line's duration moves to that column,
and the started sub-session row drops its narration prefix (HQ#5154 audit).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-92fa78a91e29868c5eaa
…ooks Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-92fa78a91e29868c5eaa
…transcript-row-grammar # Conflicts: # webviews/src/agent-session/acpmux/conversation/SentMessageLine.tsx
…e started row's bare name Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-92fa78a91e29868c5eaa
…end's lowercase word, Reply in the sentence Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-92fa78a91e29868c5eaa
…transcript-row-grammar
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-92fa78a91e29868c5eaa
…ts rows Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-92fa78a91e29868c5eaa
… too 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> Agent-Session: https://cmux.com/deeplink/agent?id=aid-92fa78a91e29868c5eaa
…28291 # Conflicts: # webviews/src/agent-session/acpmux/conversation/SubsessionCallCard.css
…ules (463e538) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-f71664ebfb6cf5206479
…each (red) The chevron beside SubagentDoneLine's open button, and beside a message row's toggle, was a second clickable element hidden from assistive tech. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-f71664ebfb6cf5206479
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Gallery before/after for
States
Pick other states with a Unclear: CI failed on
Not re-run automatically: Written by red: web / Web status; a job it gathers is red on this change (its line here); do not merge until green; see lane-rules Shipped in:
|
|
Found 1 test failure on Blacksmith runners: Failure
|
|
Review (codex gpt-6-astra high fast, review-router): BLOCK at 57d2d54
Visual: The changed rows fit cleanly in both themes and match the claimed chips, status placement, durations, and chevrons. The unchanged received |
The done line's and the message row's chevrons drop data-interactive and onClick. The open button's and the toggle's ::before hit areas span the row under the words, and the trailing column and chevron pass clicks through, so clicking the chevron still opens or toggles. Fixes the test's TS2345: the nav context passes `string | undefined`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639
|
Handing off to ux-owner, which carries this to the finish. Open BLOCK (issuecomment-6540767973): the chevrons in AgentMessageRow.tsx:144 and SubagentDoneLine.tsx:179 still have data-interactive, onClick and cursor: pointer, so the RowGrammar tests fail and the ::before hit areas are missing. Its own red: web lint TS2345 at RowGrammar.test.tsx:237:66 (id is string | undefined). Follow-up to file: the IncomingMessageCard.tsx:187 chevron alignment (P2). |
Base made the message line a flex row with the chevron inside its toggle, and every tool row's chevron follow its label. Resolved toward that design and dropped this PR's pinned-sibling grid: the chevrons sit inline inside each row's one control (the message toggle, the subagent line's open button) and only draw; the status or duration (.cv-tool__trail) sits at the row's right edge with pointer-events: none, reached by the control's ::before hit area. Kept: Sent to wording, the recipient chip, one preview cut, compact opened sends, no Started narration, the subagent duration out of the sentence. RowGrammar tests now assert that grammar instead of grid columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-63b9964940c20354b639
The gallery note's apostrophe ended its single-quoted string (a template literal now), the chevron test's toBe compared HTMLButtonElement | null with HTMLElement (typed closest), and the rows' under-the-words hit areas used a raw z-index: -1 (now calc(var(--layer-base) - 1), inside each row's own isolation: isolate). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-f71664ebfb6cf5206479
|
Review (codex gpt-6-astra, lane-place review box, independent, carried): SHIP at 093e645 Carried from the independent review box at this head, which reviewed 8e7abce..093e645. The SHIP line was glued onto the end of a paragraph, so the receipt parser missed it. It found no data, accessibility or layout regression. This supersedes the BLOCK at 0a785e0 (an older head). That BLOCK's single P1 is wrong: the Visual verdict: after screenshots checked; no repeated controls, bloated menus or off-screen layout. Follow-ups: none |
|
Review (the owner lane's independent review, at its land request): SHIP at 093e645 Recorded by lane-gh-broker from this PR's owner lane, which asked to land this exact head after its independent review. next-autoland lands it once every red is the base's; a BLOCK at this head, a HOLD line or a hold label still stops it. |
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Review (codex gpt-6.1-sol high fast, router-review): BLOCK at 0414769 This head is the lander's update-branch for stale guards. The full diff was reviewed.
|
…inline caret) RowGrammar.test.tsx asserted the trail's parent but never sibling order. Each row kind now checks the chevron is drawn before the trailing status: DOM order on a message line, the trail's order: 4 on a tool row. Red with AgentMessageRow's status moved before the toggle, green here (9 pass). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-f71664ebfb6cf5206479
|
Re the BLOCK at 0414769 ("status renders after the chevron"): pushed 6df3f7d. It's a test-only delta. I did not move the status in front of the chevron, because that order is base's settled design, not something this PR introduces:
The P2 is done: |
|
Review (codex gpt-6-astra high, next-review): BLOCK at 6df3f7d BLOCK at 6df3f7d Visual verdict: after screenshots reviewed; they show status/duration before the chevron, but the current flex ordering renders the reverse.
Follow-ups: none |
Base landed #28291 itself (985e3a2) and #29754 (48f4dfb), which already draw each send, message and subagent row as icon, sentence, trailing status or duration, then the chevron last, with the chevron only drawing. The carry's inline-chevron reorder is what the reviewers blocked, so every conflict takes base's side. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-f71664ebfb6cf5206479
…n CSS order too Base's grammar test checks DOM order; this one loads the rows' stylesheets and reads computed flex `order`, so a CSS reorder that draws the chevron before the status or duration (what the carry's last head did) fails. Red on the carry's row sources (2 fail), green on base's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-f71664ebfb6cf5206479
|
Review (codex-review-box/gpt-6-astra high, lane-place): SHIP at d8c3223 SHIP at d8c3223
Validation: Bun is unavailable in the box, so the targeted test could not run. Follow-ups: none |
|
Review (codex, independent): SHIP at d8c3223. No findings. CI: 88 pass, 0 fail at this head. |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
#28291 landed on feat-cmux-next as 985e3a2, and #29754 (48f4dfb) followed it with shared activity rows. Together they already give send, message and subagent rows the order two reviews asked for: icon, sentence, status or duration, then the chevron last. They also make the chevron only draw, inside the line's one control.
This carry's later commits had moved the chevron inline, before the status, and that is what the reviews blocked. The base merge took base's version of every conflicting file, so that change is gone. What this PR adds now is one test.
Changes
RowGrammar.test.tsx: "each row draws its trailing status or duration before the chevron, and the chevron last". It loads the five row stylesheets, sorts each row's children by their computed CSSorder, and asserts the chevron is drawn last with the trail right before it. It also checks that both kinds of send and the subagent row have a trail, so the assertion applies to them. Base's existing DOM-order test ("…chevron last") stays.Testing
bun test src/agent-session/acpmux/conversation/RowGrammar.test.tsxagainst the carry's earlier row files gives 0 pass, 2 fail (the DOM-order and CSS-order tests).CMUX_BROWSER_TESTS=1at d8c3223: the chevron-column and tool-group-alignment browser tests plus five row unit test files give 88 pass, 0 fail, 0 skip (run).Changelog
none
Agent session: agent session
🤖 Generated with Claude Code