Repository navigation
Agent chat: Claude's hover rows under every message (read receipts, Pin, Read aloud) - #22773
Conversation
|
Bead |
Puts back the two-tick wording in UserBubble.tsx and conversation.css, which #22773 owns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray
… with read receipts, Pin and Read aloud Answers: Copy, Fork from here (with Claude's tooltip), Pin, Read aloud and the answer's age, under the left edge, on hover or focus only. Prompts: age, a read receipt (one check delivered, two read, 'Read by <agent>'), Copy, Edit, Retry, Fork and Pin under the bubble's right edge. The 'Steered · the agent read it' mark and the lone bookmark are gone; the answer footer draws no focus box. acpmux lets a Pin mark a turn's turn_result as well as a prompt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c08-3514-7430-9c71-6b7ba4fdac72&host=cosmic-gray
… rows Another agent's message gets its age, read receipt, Copy, Retry and Pin under the card (Retry for it lived on the answer footer). A failed turn's footer keeps Retry. Tests move from the Steered line and the always-on rows to the receipts and the hover-only rows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c08-3514-7430-9c71-6b7ba4fdac72&host=cosmic-gray
0481687 to
2099901
Compare
The steer's read state and the prompt's action-row visibility belong to #22773, which deletes SteerMark. This puts SteerMark back under the bubble as on feat-cmux-next, restores the row's own opacity rules, and drops the steer from the spacing test and the gallery fixture. The spacing tokens, the row's height and margin, and the estimates stay; model.ts now counts a steer's status line under the meta row. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray
|
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)
Unclear: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by red: web / Web status; base red: the same failure on the base 84494d5; does not block
Agents: |
Repairs the prompt-row test file, keeps an answer's Pin through a fork, gives a Chief-sent prompt the same row (it lost Retry with the footer's), and drops the now unread data-last-turn mark. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c08-3514-7430-9c71-6b7ba4fdac72&host=cosmic-gray
|
Found 4 test failures on Blacksmith runners: Failures
|
… end_turn Send now continues too Coordinator ruling on #22691: nothing new reads "Steered" (#22773 removes the steer marks). acpmux #22808 ends Claude's Send now with end_turn rather than a cancel, which must also draw as one turn; a failed turn still shows its failure. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray
…ed mark, whatever ended it - The prompt row is marked `continues` (accepted, drawn inline) instead of steer "landed", so it shows no "Steered" line (coordinator ruling; #22773 removes the steer marks). continuesTurn reads either. - acpmux #22808 ends Claude's Send now with end_turn: any turn_result while a Send now waits marks the summary continued, except a failure, which shows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray
oxfmt and rustfmt layout, the age's exact-time tooltip marked as allowed, the new icons covered by the prompt-bubble gallery entry, and the receipt's role=img lint exemption on the attribute it applies to. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c08-3514-7430-9c71-6b7ba4fdac72&host=cosmic-gray
…-hover-rows-rebased # Conflicts: # webviews/src/agent-session/acpmux/conversation/UserBubble.tsx
|
owner: 01a15c08-3514-7430-9c71-6b7ba4fdac72 |
…-hover-rows-rebased # Conflicts: # webviews/src/agent-session/acpmux/App.tsx # webviews/test/agent-pane-suggested-tasks.test.ts
|
Visual preview of 726388f: in the maintainers' private review feed. |
…-hover-rows-rebased # Conflicts: # webviews/src/agent-session/acpmux/App.tsx # webviews/src/agent-session/acpmux/conversation/UserBubble.tsx # webviews/src/agent-session/acpmux/conversation/icons.tsx
|
Receipt review (merge resolution cc65008..bdf0136): PASS Checked (read-only, git only):
Not run: bun test, vite, gallery, Swift/Rust builds and tests. Test outcomes above come from reading the code, not from running it. Agent session: cosmic-gray |
|
|
Only Localizable.xcstrings conflicted; merged key by key. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c08-3514-7430-9c71-6b7ba4fdac72&host=cosmic-gray
|
Receipt review (merge resolution bdf0136..3bd6142): PASS Head 3bd6142 = merge of bdf0136 (reviewed) and base a18aa77. Read-only, git objects only. Checked:
Not run: bun test, bun run check/lint, vite/gallery, cargo, swift. This is a static read of the merge only. Known base lint reds not from this PR: the run-board timeline.css text-focus ring (#22408) and web/ eslint |
icons.tsx: base added DoubleCheck for a delivered MessageCard; keep one DoubleCheck (base's glyph) for both it and the prompt read receipt, plus this branch's Pin and Speaker. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c08-3514-7430-9c71-6b7ba4fdac72&host=cosmic-gray
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. |
|
Receipt review (merge resolution 3bd6142..c19ca3d): FAIL Defect:
Checked
Not run: bun test, vite, gen-strings, cargo, swift, lints. All reading was done with git at explicit SHAs. Known base lint red (#22408 run-board timeline.css) not assessed. |
…veredAtStepEnd); base's message.delivered is MessageCard's Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c08-3514-7430-9c71-6b7ba4fdac72&host=cosmic-gray
|
Receipt review 1e73560: PASS Checked (read-only through git, in a separate clone):
Not run: bun tests, |
JSON parsers keep the last of a repeated key, so two branches that each added `message.delivered` with their own text merged cleanly and one text silently replaced the other (#22773). check-xcstrings-keys.py parses every tracked .xcstrings with an object_pairs_hook and refuses a repeated key at any depth (string key, language, plural category) or a catalog that is not valid JSON. It runs in `check` and, on feat-cmux-next, with the hard-fail webviews checks rather than the warn-only style ones; its test runs in the cmux-next script tests. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c08-3514-7430-9c71-6b7ba4fdac72&host=cosmic-gray Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
Shipped in:
|
|
Review (subagent, correctness first): SHIP at 1e73560 This is a post-hoc independent review of the merged change (merge commit 8aa26c6). It was read-only and nothing was run. risk:low. Nothing blocks. Notes:
The merge-audit revert of this PR is handled separately. See leo-workspace |
…d label (#23731) The steer-marks gallery note still said a read steer reads "Steered"; that caption (SteerMark.tsx) was removed in #22773. The note now says what the transcript does: no label, a faint clock and Send now while unread, and the same read check and tooltip every prompt has. A new steer-read-hover state hovers the read steer's check, waits for its "Read by" tooltip and fails if the transcript says Steered or Steering anywhere. The tests now also pin that a read steer shows the two-check receipt with no Steer text, and that the catalog holds no steer.landed key or "Steered" value. Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16030-bf28-7072-b1f6-b83bbd0beacc&host=cosmic-gray Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Builds on #22675 (transcript-density's action rows, merged).
Problem
Leo (2026-10-20): the rows under chat messages should match Claude Code desktop.
Change
TurnRows.tsxTurnFooter), at the answer's left edge:data-tooltip-detailinui/titleTooltips.ts).UserBubble.tsx), at the bubble's right edge:SteerMark("Steering…" / "Steered · the agent read it"), the bookmark icon under prompts, and the always-on row for the latest prompt and turn.turn_resultseq, so answers can be pinned too (hub/bookmarks.rs).speechSynthesis(the macOS voice). It is one message at a time, and pressing it again stops.message.readBy,message.readByAgent,message.delivered,message.pin,message.unpin,message.readAloud,message.stopReading,turn.forkDetail. Removed the unusedsteer.*,message.readandmessage.unread.Observed / Not run
scripts/cmux-next/prepush-gate.py: no new violations.Changelog
Agent session: cosmic-gray
🤖 Generated with Claude Code
Summary by cubic
Matches Claude Code desktop's hover action rows under every chat message, on hover or focus only. Answers show Copy, Fork (with Claude's "starts a new session" tooltip), Pin, Read aloud and the message's age under their left edge; prompts show age, a read receipt, Copy, Edit, Retry, Fork and Pin under the bubble's right edge; another agent's message shows age, the receipt, Copy, Retry and Pin under its card, after its Reply. A Chief-sent prompt gets the same row as one the person sends. The receipt is one check while a steer waits and two once read ("Read by "). The Steered line, the lone bookmark icon and the always-on latest rows are gone, and no answer footer draws a focus box. This also reconciles with base's steer-as-one-turn, row-height-estimate, Reply placement and rewritten Retry model menu (
RetryModelMenu.tsx) changes, which the prompt's row and a failed turn's footer now reuse; Copy reuses base'sCopyButton(tooltip name, resetting check).Bug Fixes
message.deliveredbelongs toMessageCard.Written for commit 1e73560. Summary will update on new commits.