Repository navigation
feat(agent-pane): bridge opt-in native tab-row icon tools - #27135
Conversation
|
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 f287294; does not block Gallery before/after for
States
Pick other states with a |
|
Review (Astra): SHIP at 8697d78 The seven-line test-only delta correctly initializes and clears shared quick-action and lit state. Earlier product review still applies; no new findings. |
|
Bead |
|
Review (Astra): SHIP at 2af5d59 |
|
Orphaned: no activity for 13 h, and no lane holds a lease on it. The orphan sweep could not merge |
# Conflicts: # webviews/src/agent-session/acpmux/inspector/ChatInspector.tsx
|
Found 4 test failures on Blacksmith runners: Failures
|
# Conflicts: # plans/cmux-next/coordination/react-pages.md # webviews/src/agent-session/acpmux/header/ChatHeaderTools.gallery.tsx
|
Review (codex gpt-6-astra): SHIP at e749d7d No P1/P2/P3 findings. Full review of the PR against feat-cmux-next 570b452 (merge base f287294, which includes the native half #27133). The review box's target is pinned to head e749d7d. In the reviewer's words: "The native descriptor protocol, host-event dispatch, fallback behavior, stale callback handling, and existing header behavior align with the native Swift implementation and added tests." Scope: the message and field contract against the Swift host and policy.json; the opt-in off and zero-height paths; no duplicate or missing buttons; toggle sync; stale callbacks; cleanup on unmount; and the merge resolution in react-pages.md and the header gallery. CI at this head (run 41075450537): Base reds, not from this PR, which changes no Swift, policy or latency files:
|
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
When the host offers
tabRow.nativeRowTools: truewith a positive row height, the chat's quick-action icons and Session Info/Summary toggle are described to the native tab-row host. A shared button list supplies both DOM and native labels, symbols, visibility, toggle state and callbacks. The opt-in remains off by default. This web half lands after the native implementation in #27133 and coordinator clearance.Leo, 2026-10-29:
The page calls
pane.tabRowTools.setthroughcallNativewith{tools: [{id, symbol, label, enabled, toggled}]}.tabRowToolInvoked {id, menuItemId?}arrives throughcmux.agent.host.eventsand dispatches the shared callbacks. These buttons have no native menus; unknown ids, disabled tools and menu-item invocations do nothing. Labels are bounded to 64 characters and lists to 16 tools.Values are deduplicated, so callback identity changes and token renders do not resend tools. Hiding/unmounting the header or disabling the opt-in clears the list and unregisters dispatch. A rejected host update restores the web buttons. No timers, polling, observers, animation loops or per-token RPCs are added.
Scope: quick actions plus Inspector/Summary only. Summary has no badge today; none is invented. Needs You retains its web button and correctly anchored rich popover (Allow/Deny/choices, Go to source, Ask about this); its native migration belongs to a later step. PR chip, worktree pill, presence, status, chat menu and clearance CSS are unchanged. Existing automation can still open Summary while its visible toggle is native.
The change is kept together because extracting the shared action list, its host bridge, and the native/off lifecycle tests establish one dispatch path; splitting the extraction from the consumer would leave the behavior invariant untested.
Risk: normal — opt-in web/native action routing. No default changes. The native renderer and tunable ship in #27133; this PR does not claim native appearance evidence.
Validation:
tabRowevents and invokes Terminal/Summary throughtabRowToolInvoked; web clicks use the same callbacks. Removing either the flag parser or invocation routing makes this regression fail. Native mode hides migrated DOM buttons, restoring them when disabled.native-row-off/native-row-tools, light and dark: the web icons disappear only with native opt-in; Needs You and the chat menu remain.2af5d59e4175c09ce60921135c1edef38259bb00. This update strengthens the host-event regression without product changes.2af5d59e4175c09ce60921135c1edef38259bb00, including the page-level host-event regression.Gallery comparison: native opt-in off/on in the same header fixture. The after image shows the remaining web controls; native icons are rendered by the separate native PR.
Agent session: agent session