Repository navigation
feat(composer): add shared searchable plus palette surface - #26843
Conversation
|
Found 18 test failures on Blacksmith runners: Failures
...and 8 more test failures. View all on Blacksmith
|
|
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: cmux-next checks (god files, concurrency, crash safety, l10n); base red: the same failure on the base 89b99d5; does not block
Agents: Gallery before/after for
States
Pick other states with a |
0a76f85 to
0f264b2
Compare
|
Bead |
Keep Home/End selection in the search input; listbox navigation stays explicit. Require the caller to dispatch host catalog actions and retain the menu with the source error on rejection. Reuse translated labels and translate the remaining Tools/Apps section names. Regression: three tests failed at ca9cfdc before the repair; all 13 focused tests (45 assertions) now pass. Web lint/typecheck and gallery build pass. Chromium search-editing assertions pass; opening still reproduces the separately owned shared-anchor CLS 0.01525829 at its unchanged strict-zero budget.
|
Owned by an agent session · session |
db519f2 to
df873fa
Compare
The focused PaletteMenu IME and pointer suite first failed both middle/right trigger cases, then passed all 6 tests after the fix; the broader focused suite passes 16 tests with 57 assertions. Agent-Session: https://cmux.com/deeplink/agent?id=aid-35156c7026767df4b97a
|
Review (Codex gpt-6-astra high, priority service configured): SHIP at 11a5630 Independent reviewer inspected the complete eight-file diff against 3a7653b and the primary-button repair. No remaining concrete correctness findings. The earlier BLOCK at df873fa identified middle/right clicks opening the palette or executing native actions; 00b1923 committed the failing regressions and 11a5630 guards trigger and row dispatch. Focused verification: 16 tests, 57 assertions; web lint, prepush gate, and diff whitespace pass. The reviewer independently confirmed a clean checkout and diff whitespace; test results were author-supplied evidence. Primary review: the rebase retains landed #26566 registry behavior and current shared anchor/scroll helpers. Diff remains component-only; it does not mount another production menu or alter model/harness/profile pickers. Native-catalog mounting belongs to #26616. Exact runtime model/effort/tier were requested through the collaboration API; the reviewer could not independently introspect them. Capture verification is tracked separately. Reviewed head: 11a5630 |
|
Review (Astra HIGH/FAST, exact head): SHIP. Base: 3a7653b The full nine-file diff was rechecked. PaletteMenu filtering, keyboard/IME handling, primary-button dispatch, async failures, popup behavior, registry mapping, tests, and galleries have no concrete correctness defect. The bottom-stack repair retains the geometry assertion and uses the existing trusted input path for the multiline draft. Model picker changes are absent. git diff --check is clean. Focused GCP2 verification separately passes: 16 tests / 57 assertions, bun check, web-lint, and prepush gate. Static review only; no browser run. |
|
Paired gallery capture for How it ran:
Chat composer +,
|
base 3a7653b0 |
head 82d88fe4 |
|
|---|---|---|
| Dark | ![]() |
![]() |
| Light | ![]() |
![]() |
New Tab +, agent-pane.new-tab#attachment-menu: unchanged (base and head PNGs are byte-identical, and the head repeat matches)
base 3a7653b0 |
head 82d88fe4 |
|
|---|---|---|
| Dark | ![]() |
![]() |
| Light | ![]() |
![]() |
Both host + menus render the same at base and head. That fits the PR body: this PR adds the component and #26616 mounts it in Chat and New Tab.
New entry agent-pane.composer-plus-menu (head only, no base)
| variant | Dark | Light | play |
|---|---|---|---|
balanced |
![]() |
![]() |
pass, CLS 0, no long frames |
keyboard |
![]() |
![]() |
fail: step 2 type "browser": layout shift 0.1662 (limit 0) |
The keyboard play check fails on head itself, in both themes and in both head runs. The entry declares layoutShiftMax: 0, but typing "browser" filters the list down to one row. The menu is anchored to its bottom edge, so it shrinks toward the + button, and the search field moves from the top of the old menu to just above +. Compare the balanced and keyboard stills. This is the PR's own red, not a base red. To fix it, either keep the field still while filtering (anchor the menu's top edge, or hold its height while a query is typed), or declare that shift on the entry with a reason. The other tools and sessions variants were not part of this run.
Image sha256 (first 12): chat dark 511ef9f36400, chat light f5a62e6ac73a, New Tab dark 238b05778eb8, New Tab light ff7e3e6a630e (the same at base, head and head repeat), balanced 8c8b4c2dbc9e/cbf69cfe2b0e, keyboard b3d0f4556cb7/43816b78228c.
…s-palette-component # Conflicts: # webviews/src/agent-session/acpmux/Localizable.xcstrings
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40872205512 at eef18f1 failed: cmux-next checks (god files, concurrency, crash safety, l10n). |
|
Shipped in:
|
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40870120427 at 5f33ee4 failed: cmux-next checks (god files, concurrency, crash safety, l10n). |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40870378984 at 90e1666 failed: cmux-next checks (god files, concurrency, crash safety, l10n). |
|
The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/40873692330 at 52fea2d failed: cmux-next checks (god files, concurrency, crash safety, l10n). |
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)












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”.
Adds the shared searchable
PaletteMenucomponent for Tools, Apps, Sessions, and Tabs, with localized catalog labels, keyboard navigation, IME-safe search editing, and native-catalog dispatch. Rejected host actions keep the menu open with an error; only primary mouse presses open or select actions.Filtering an above-anchored palette previously shrank the menu and moved the search field. The menu now retains its opening height during search, including clearing and zero-result queries, while the existing viewport maximum still constrains it. Reopening measures the current content again. This adds no timers, observers, animations, or default changes.
This source prerequisite follows #26566. #26616 owns production mounting, followed by #26859 and #27049. Its exported
PaletteMenu,PaletteSection,PaletteChoice,paletteSections, and native catalog contract are unchanged. #27144 migrates existing composer menu consumers to native popups; it does not currently replace this shared source or catalog contract. That migration must preserve these semantics when integrating the dependent stack.Reference: ChatGPT desktop + menu, Plugins/Apps/Sites, retaining cmux colors, glass and shared popup behavior. Existing balanced, tools and sessions gallery alternatives remain available.
Before / after
Actual component captures from the same Chromium gallery harness, 520×560 CSS pixels, device scale 2. Before is the regression commit
fd3a175fd8c0eb355b14e92d230948b6dfb16f38; after ise15cf5ba631b953981acc3bff3571a708fec6823. Both show the same step: type “browser”.The shared component is new relative to
feat-cmux-next; these compare its pre-fix and fixed implementations. Earlier actual Chat and New Tab host captures were byte-identical between their base and head, consistent with production mounting belonging to #26616.Validation
Candidate head:
a81736b913391d7464fdd464ccad7152b824da9a. Current comparison base:89b99d5b2b8309bc92461e74b36cf0bf40650466. The normal base merge preserves palette source and focused tests byte-for-byte; the catalog now adds only the two 21-locale section labels, preserving every existing key and base formatting.a81736b913391d7464fdd464ccad7152b824da9a. Primary integration review at the same head found no correctness issues.HomeChatColorsPanel.swiftandHomeChatColorsView.swift. Exact base/head comparison 40868975675 reproduces both named errors with byte-identical output and exit 1 on base89b99d5b2b8309bc92461e74b36cf0bf40650466and the final head; the comparison itself passes. No other static guard failure is attributed to base.89b99d5b2b8309bc92461e74b36cf0bf40650466.b40bd2379d222b5d6b140d750723569d447c8f91has tree9d6533c6438e3241076a351d4cc75bdedc5b45f3, exactly matching the final merge commit.cd webviews && bun run checkpasses, including formatting, lint, 3013-file typecheck and protocol generation. Focused PaletteMenu, IME, catalog and scrolling tests: 16 pass, 57 assertions. The appended pre-push invocation failed because the runner checkout lacked history; history-complete run 40857804619 subsequently passed the gate and web lint at that same historical tree.scripts/gallery-matrix/runner.tscommand runs both revisions. The overall driver reports failure on the separate short-pane draft CLS check, which also fails on the actual base; its measured reduction is below, with no raised threshold.model-picker#many-harnessestimeout now passes on both revisions;composer-context#computer-searchreaches its state on both, with identical 0.010718 CLS.empty-state#searchandnarrow#model-menuretain the same 5000 ms wait failure on both.streaming-text#jump-during-streamtakes 17304 ms on base versus 17321 ms on head, with identical CLS. These account for the three old gallery job reds individually.At the pinned merge attempt, CI run 40866778911 still has its base React comparison and test-duration reporting tail pending. All four head React checks and all four gallery-health shards have completed successfully; no required check is reported missing.
Observed / Not run
Build, lint, typecheck, tests and Chromium gallery runs executed remotely on Linux. The component uses synthetic catalog fixtures with real rendering and handlers. Native builds and end-to-end Chat/New Tab production integration were not run. Screenshot publishing used the repository media helper; its local OCR was unavailable and its hosted privacy workflow scans the uploaded media. The captures were visually inspected and contain only synthetic gallery content.
Performance
bottom-stack#short-520-long-draftready time, darkbottom-stack#short-520-long-draftready time, lightThe long-draft fixture submits twelve lines as one trusted input action; it preserves geometry checks and removes repeated settle waits. The earlier 3706 ms observation is superseded by this current paired measurement.
Changelog
Added: Reusable searchable composer action palette for shared Tools, Apps, Sessions, and Tabs menus.
Agent session: agent session