Agent chat: compact, consistent message actions
Message controls now share one compact action row: 24px hit targets, 16px glyphs, and no negative margin between Retry and its model chevron. User prompts, assistant footers, received messages and sent messages use the same component. Native pages ask the existing validated harness.symbol image cache for actual SF Symbols; galleries and older hosts use the icon-catalog fallback in the same box.
Leo, 2026-10-27: "why is the copy button and the refresh button so far apart?" and "not ... evenly spaced, compact, unified, concise, simple, well-placed".
The layout follows the compact controls in the Claude Code action-row reference. No new motion or menu timing. Open model menus keep the shared row visible.
Gallery: agent-pane.message-action-row (compact, narrow). Captures use public-safe fixture text and the catalog fallback; they prove geometry, not native SF rasterization.
| Before | After |
|---|---|
![]() | ![]() |
| Claude Code reference | cmux action rows |
|---|---|
![]() | ![]() |
Validation: the Chromium regression first failed at 08720fc17f0733 because Retry's chevron target was 14px rather than 24px. The same command now passes 2 tests / 51 assertions, including keyboard Retry and another-model selection. The SF-symbol cache and existing user-action tests pass 16 tests / 72 assertions. bun run check also passes (format, lint, 2,887-file typecheck and protocol checks). Gallery coverage has exactly the same two failing assertions and finding lists on base and head; the new components are covered. Existing native localization baseline drift makes verify-local.py red in untouched catalogs; this change adds no shipped strings.
Coordination: this leaves the generic floating-copy removal/right-padding repair to #26096 and the PR pills to #26082. Queued/received presentation is nx-chat's separate work. This PR preserves their action callbacks and does not change IncomingMessageCard or QueuedMessageCard.
Status: exact-head Codex xhigh review and CI reconciliation are pending with nx-chat; do not merge before that receipt.
Changelog
Fixed: Message copy, retry and other actions use compact, evenly spaced controls with native SF Symbols.
Agent session: agent session


