Skip to content

cmux NEXT composer: searchable tools and sessions in the plus menu - #26616

Open
teamleaderleo wants to merge 9 commits into
feat-cmux-nextfrom
lane/nx-plus-tools
Open

teamleaderleo wants to merge 9 commits into
feat-cmux-nextfrom
lane/nx-plus-tools

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Leo, 2026-10-28: “likewise, the chatgpt desktop app, let's do their + symbol's capabiliities for our composer. we want to be having more command palette related capabilities and stff to be able to to be surfaced”.

Mounts the shared searchable PaletteMenu from landed #26843 in Chat and New Tab. The host supplies only currently performable Tools, Apps, Sessions and Tabs catalog actions; selection uses the existing gesture-gated action.run route. Search Tabs opens its search page without a tab target; creation actions retain the current tab placement.

Catalog reads remain passive so untouched New Tab pages stay recyclable. Synchronous errors and rejected native actions keep the mounted palettes open and show an error; New Tab retains its draft and attachments. No timer or observer is added.

Stack: #26843 is merged. This PR contains only the native catalog and production mounting slice. #26859 owns New Tab capability rows and #27049 owns capture/Plan/Build App wiring. The shared PaletteMenu and registry API are unchanged.

Reference: ChatGPT desktop + menu, adapting its sectioned capabilities to cmux colors, glass and current popup styling.

Validation

Candidate: 78cd7956bc257827cee7a10356bbf08b9cd23155, base 90e1666c0ff07ebbc896f0e5400f8a9de02a847a. Only the four parent commits after 11a563002c080edc5a1bb4731c70104f27f6bfde were rebased after the palette squash; the landed component commits were not replayed. Later fixes address passive reads and mounted error propagation.

  • Linux app compile passed for snapshot c66291449a712ab27f1e5e728ca3135dec78dfce (identical Swift sources to the final candidate); the final subsequent change only corrects the web callback return type.
  • Final web check and isolated suites passed: 46 tests and 196 assertions across New Tab, mounted composer failures, gallery reachability, PaletteMenu and registry coverage. DOM suites run in separate Bun processes.
  • Independent Astra review passed at the exact final candidate across all 17 changed files and the final repair.
  • Native regression suites passed on the exact candidate snapshot: AgentPaneComposerActionsTests and ComposerPlusActionTargetTests (two tests in two suites), including passive catalog reads and Search Tabs placement.
  • History-complete pre-push gate and web lint passed against the exact base.
  • Prior failing review findings are repaired; prior review verdicts are not transferred.

No capture: the Swift changes add catalog transport, passive-read handling and targeting of existing actions; they do not change native views, layout or styling. The visible changes are in webview menus, shown by the real Chromium gallery pairs below. No native GUI capture is claimed.

Before / after

Real gallery captures (Chromium, synthetic fixtures). Before is the stack base 3a7653b0; after is historical source a87fc7d3; these show the unchanged mounting design. The final rejection/passive-read repairs are covered by the tests below.

Surface Before (3a7653b0) After (a87fc7d3)
New Tab +, dark
New Tab +, light
Chat +, dark
Chat +, light

New Tab (agent-pane.new-tab/attachment-menu, 900×560): before, + offers only Attach files or images. After, the same searchable palette as chat, with Tools, Apps, Sessions and Open Tabs from the native catalog. Chat (agent-pane.composer/add-menu, 760×560): the Add rows are unchanged, and the native catalog sections follow. Text under an open menu reads through its glass in these Chromium gallery frames. That is the documented Chromium backdrop behaviour (ui/glass/glass.css); the app's WebKit frosts it.

Outstanding scope, kept explicit:

  • Sessions and Tabs currently open native Search Chats and Search Tabs. Recent chats and lanes, open tabs, and attaching a selected item as context need a native item catalog and a context action, in separate small PRs.
  • The native catalog exposes the existing browser, computer, cloud and terminal palette commands, not an invented MCP-tool catalog.

Status: exact hosted-check reconciliation pending.
HOLD: needs a redesign on the current + menu before landing: base now has one short + menu for chat and New Tab (#28798, #30230), so the native catalog sections cannot be re-added as + rows; the base merge also conflicts in 12 files.

Changelog

Added: The composer’s + menu searches and runs the app’s tools, apps, sessions and tabs.

Agent session: agent session

@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 78cd795: 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=pr26616 -f ref=lane/nx-plus-tools -f platform=macos -f backend_mode=local

Unclear: web / react-apps-check failed: no known signature; failed step: Check webview test shards.

CI failed on 78cd7956bc (run 40928111465 attempt 1): 2 code, 1 unknown.

Job Verdict Why
web / react-apps-base-check (1) code a web test failed
web / react-apps-base-check (4) code a web test failed
web / react-apps-check unknown no known signature; failed step: Check webview test shards

Failures:

  • seen on other PRs rowSummary.test.tsx no description line on any Settings page is over 60 characters, in any language: failed (job)
  • seen on other PRs rowSummary.test.tsx every schema summary fits 60 characters in every language: failed (job)
  • seen on other PRs agent-pane-suggested-tasks.test.ts messages from other agents > another agent's message keeps its images and shows no steer line: failed (job)
  • seen on other PRs composer-menu-dismiss.test.ts chromium: agent-pane.new-tab reasoning-chip at 760 px: picking a mode or a level hands the keyboard ...: failed (job)
  • seen on other PRs composer-menu-dismiss.test.ts chromium: agent-pane.new-tab reasoning-chip at 300 px: picking a mode or a level hands the keyboard ...: failed (job)
  • seen on other PRs composer-menu-dismiss.test.ts webkit: agent-pane.new-tab reasoning-chip at 760 px: picking a mode or a level hands the keyboard ba...: failed (job)
  • seen on other PRs composer-menu-dismiss.test.ts webkit: agent-pane.new-tab reasoning-chip at 300 px: picking a mode or a level hands the keyboard ba...: failed (job)
  • seen on other PRs markdown-table-obsidian.test.ts markdown tables (webkit) > a drag across cells selects text from the press to the pointer, not whole...: failed (job)
  • seen on other PRs MarkdownMath.test.tsx keeps shell command dollar signs as plain text without dropping content: failed (job)
  • seen on other PRs queuedMessages.test.ts each agent message is a received-card row, in the queue's order, with its promptId: failed (job)
  • ... 6 more in the job logs
Matched log lines
web / react-apps-base-check (1): (fail) no description line on any Settings page is over 60 characters, in any language [23680.87ms]
web / react-apps-base-check (4): (fail) keeps shell command dollar signs as plain text without dropping content [4.88ms]

Not re-run automatically: web / react-apps-base-check (1), web / react-apps-base-check (4), web / react-apps-check are not machine failures.

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 56f0399 to compare; do not merge until green; see lane-rules
red: web / Web status; base red: the same failure on the base 56f0399; does not block
red: web / react-apps-base-check (1); no finished base run on 56f0399 to compare; do not merge until green; see lane-rules
red: web / react-apps-base-check (4); no finished base run on 56f0399 to compare; do not merge until green; see lane-rules
red: web / react-apps-check; base red: the same failure on the base 56f0399; does not block

CI fast guards failed on 0b505d510a (https://github.com/manaflow-ai/cmux/actions/runs/40781865803). It does not block the merge; a red guard merged into main breaks it for every open PR.
The log named no failed step; see the run.

Agents: python3 scripts/ci/guard_attribution.py fix applies the mechanical fixes locally.

Gallery before/after for 78cd795: 16 states rendered, 0 images differ, 1016 more touched states not rendered. Images are in the run's artifact, not on this public PR.

gh run download 40928110981 -R manaflow-ai/cmux -n gallery-advisory-26616-78cd7956bc257827cee7a10356bbf08b9cd23155 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.chat-width/standard Apple System Colors Light unchanged 0% own App.tsx
agent-pane.chat-width/standard Apple System Colors unchanged 0% own App.tsx
agent-pane.chat-width/wide Apple System Colors Light unchanged 0% own App.tsx
agent-pane.chat-width/wide Apple System Colors unchanged 0% own App.tsx
agent-pane.chat-width/wide-blocks Apple System Colors Light unchanged 0% own App.tsx
agent-pane.chat-width/wide-blocks Apple System Colors unchanged 0% own App.tsx
agent-pane.composer/font-size-chat-14 Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/font-size-chat-14 Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer/font-size-new-chat-14 Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/font-size-new-chat-14 Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer/font-size-new-tab-14 Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/font-size-new-tab-14 Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer/font-size-chat-21 Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/font-size-chat-21 Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer/font-size-new-chat-21 Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/font-size-new-chat-21 Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer/font-size-new-tab-21 Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/font-size-new-tab-21 Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer/font-size-chat-28 Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/font-size-chat-28 Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer/font-size-new-chat-28 Apple System Colors Light unchanged 0% own Composer.tsx
agent-pane.composer/font-size-new-chat-28 Apple System Colors unchanged 0% own Composer.tsx
agent-pane.composer-edge/short-edge Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-edge/short-edge Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-edge/wide-edge Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-edge/wide-edge Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-edge/no-edge Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-edge/no-edge Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-floats/scrolled-to-end Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-floats/scrolled-to-end Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-floats/composer-grown Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-floats/composer-grown Apple System Colors unchanged 0% own App.tsx

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

@github-actions github-actions Bot added the risk:high Risk tier (docs/ci/risk-tiers.md) label Oct 28, 2026
@blacksmith-sh

blacksmith-sh Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Found 36 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmps4xn7v7v/summary-missing.json (live):/summary-missing.json (live): View Logs
/tmp/tmpw5b_n5z_/summary-fail.json (live):/summary-fail.json (live): View Logs
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows/
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows
View Logs
[new_workspaces] the window draws no frames/[new_workspaces] the window draws no frames View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs
src/agent-session/acpmux/conversation/MarkdownMath.test.tsx/MarkdownMath.test.tsx View Logs
src/agent-session/acpmux/conversation/MarkdownMath.test.tsx/MarkdownMath.test.tsx View Logs
src/agent-session/acpmux/conversation/queuedMessages.test.ts/queuedMessages.test View Logs
src/agent-session/acpmux/conversation/queuedMessages.test.ts/queuedMessages.test View Logs

...and 26 more test failures. View all on Blacksmith

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-g7krfy created for this PR by the cmux coordinator.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, next-review): SHIP at e32bd45

No blocking findings.

@teamleaderleo
teamleaderleo changed the base branch from feat-cmux-next to lane/nx-composer-plus-menu October 28, 2026 06:38
@teamleaderleo
teamleaderleo force-pushed the lane/nx-composer-plus-menu branch from 71409fb to 0a76f85 Compare October 28, 2026 07:40
@cursor

cursor Bot commented Oct 28, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Orphaned: no activity for 15 h, and no lane holds a lease on it. The orphan sweep could not merge feat-cmux-next in: conflicts in webviews/src/agent-session/acpmux/Localizable.xcstrings, webviews/src/agent-session/acpmux/PaletteMenu.gallery.tsx, webviews/src/agent-session/acpmux/PaletteMenu.tsx. Listed for a lane to resolve.

teamleaderleo and others added 9 commits October 29, 2026 07:09
After dependency db519 restores native Home/End editing in the search field, the skill-navigation fixture focuses the listbox for End and subsequent selection keys. The component input-editing regressions remain unchanged.

Validation: inherited keyboard test failed after rebase (picked add.mention instead of skill23); all 37 focused tests in five isolated suites now pass, 140 assertions. bun run check passes. Native and GUI verification remain on HOLD; strict menu CLS acceptance awaits the separately owned shared-anchor repair.
Agent-Session: https://cmux.com/deeplink/agent?id=aid-97c8fe4890b3452e72be
…es row

The New Tab + is the shared PaletteMenu here, whose Add files row is
data-value=add.files; the old menu's data-value=attach no longer exists,
so new-tab-gallery-reached failed agent-pane.new-tab#attachment-menu in CI
(run 40770678122, react-apps-base-check (1): red on this change, not on base).

CMUX_BROWSER_TESTS=1 bun test test/new-tab-gallery-reached.test.ts:
1 fail / 3 pass before, 4 pass after (Chromium, Linux).

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

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra high, next-review): SHIP at 78cd795

No blocking findings.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex gpt-6-astra, router-review): SHIP at 78cd795

SHIP at 78cd795

Visual verdict: no images supplied (range review); the visual verdict must come separately

  1. [P2] [follow-up] Native composer actions are only wired in AgentTabStore.wire (AgentTabs.swift:468). Quick Composer uses standaloneView (AgentTabs.swift:574), whose model has neither onListComposerActions nor onRunAction, so the new action.composerList call returns no rows and Quick Composer never exposes these native actions.

Follow-ups:

  • [P2] [follow-up] Wire standalone/Quick Composer models to the catalog and action dispatcher, or explicitly scope this feature to tab-backed composers.

router-review: follow-up: [P2] [follow-up] Wire standalone/Quick Composer models to the catalog and action dispatcher, or explicitly scope this feature to tab-backed composers.
exit=0

@teamleaderleo teamleaderleo removed the risk:high Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
@github-actions github-actions Bot added the risk:high Risk tier (docs/ci/risk-tiers.md) label Oct 31, 2026
cmux-bot[bot]
cmux-bot Bot previously approved these changes Nov 2, 2026

@cmux-bot cmux-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cmux-bot approves 78cd795: an independent review passed this exact head (next-review receipt by teamleaderleo). A push needs a new review; a later BLOCK at this head dismisses this approval.

@cmux-bot
cmux-bot Bot dismissed their stale review November 2, 2026 19:39

A newer verdict blocks 78cd795 (a HOLD line in the body).

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Before this lands: base replaced the + menu with one short menu for chat and New Tab (#28798, #30230), so the searchable tools and sessions sections need a redesign on that menu rather than re-adding them as + rows; the base merge also conflicts in 12 files. A mechanical merge would undo base's design, so this needs a rework.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Tried a base merge (base at c874cb9); stopped without pushing because the resolution needs a design call, not a mechanical merge.

What clashes:

Conflicts: 12 files (5 Swift, 7 web). Still open: whether the native Tools/Apps catalog gets one "Tools and apps…" row that opens a searchable sub-list (like "Commands and skills…"), lives under / instead, or is dropped. Once that is chosen, this should be redone on a fresh branch from base, not merged.

This branch had an error being deployed

1 failed (outdated) and 2 inactive (1 outdated) deployments
ci-routing-agent — 78cd7956 Deployed Oct 29, 2026 by teamleaderleo via cmux-tui tree preflight #77686
artifacts — 3ae0f298 Deployed Oct 28, 2026 by teamleaderleo via publish to R2 #71506
sentry-dsyms — 3ae0f298 Deployed Oct 28, 2026 by teamleaderleo via upload cmux-tui dSYMs to Sentry #71506
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:high Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant