Skip to content

cmux NEXT composer: the quiet row's hover pill is the native selection pill's size (8 px, not 4) - #24138

Merged
teamleaderleo merged 3 commits into
feat-cmux-nextfrom
glass-regressions/pill-glass-symbol
Oct 22, 2026
Merged

teamleaderleo merged 3 commits into
feat-cmux-nextfrom
glass-regressions/pill-glass-symbol

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

Leo (2026-10-22): "this isn't glass? and the highlight pill is too small and i said to make it symbol... where are the changes... are they already in..."

His screenshot is the composer's mode button ("Full access ⌄") and its mode menu (Normal / Auto / Full access) from NIGHTLY 3955ea8. This PR fixes one part: the highlight pill is too small. The other two parts are already covered (below).

What changed: the quiet row's hover pill

Under the composer box, the mode chip on the left and the model/effort chip on the right are text chips. Their hover, open and press pill was padded only 4 px from the text (.acpmux-composer-foot { --acpmux-row-inset: 4px }), so the pill hugged the label like a sliver. It is now 8 px, the inset of the native selection pill (an NSMenu row's highlight; Codex's and ChatGPT's mode chip).

  • The row's padding and the context ring's margins are counted from the inset, so the text and the ring stay exactly where they were. Only the pill grows.
  • No other surface changes. The box row (+, the prompt, mic, Send) keeps its own 6 px inset.

Before → after (gallery agent-pane.composer-row, Chromium at 2x, hovered):

before (4 px) after (8 px)
mode, dark "Auto" pill 4 px from its text 8 px
model, dark "Opus 5.5 Medium" pill 4 px from its text 8 px

(Captures: /tmp/glass-regressions/captures/pill-glass-symbol/{before,after}-{mode,model}-{dark,light}.png on cosmic-gray.)

The other two parts of the ask are already in flight

Tests

  • New webviews/test/composer-foot-pill-inset.test.ts: the foot's inset is 8 px, chips pad by the inset, and the row padding and context ring are compensated. Red on base (1 fail: inset 4), green on head (4 pass).
  • webviews/test/composer-row-rhythm.test.ts now also measures each foot chip's pill edge to its text in real Chromium. Red on base: "foot: mode's pill starts 4.0 px before its text, not 8 px" (and model) at every width. Green on head: 8/8.

Observed (huge-blue, CMUX_BROWSER_TESTS=1, on the head)

composer-foot-pill-inset 4/4, composer-row-rhythm 8/8, composer-footer-plain 19/19, composer-claude-split 18/18, composer-row-layout 29/29, composer-footer-essentials 3/3, quiet-access-chip 4/4, composer-chip-plain-rest 4/4, composer-chip-press 49 pass / 0 fail, composer-turn-cycle 6/6, composer-caret-focus 42/42, agent-pane-bottom-stack 2/2.

No capture: webview-only change (agent pane CSS); gallery before/after above.

Leo-ask: ask-608336bd91

Agent session: cosmic-gray

🤖 Generated with Claude Code

…n pill's size

Leo (2026-10-22): "the highlight pill is too small". Under the composer box the
mode, model and effort chips padded their hover/open/press pill 4 px from the
text, a sliver hugging the label. The row's --acpmux-row-inset is now 8 px, the
inset of an NSMenu row's highlight and of Codex's and ChatGPT's mode chip. The
row's padding and the context ring's margins are counted from that inset, so
the text and the ring keep their places; only the pill grows.

test/composer-foot-pill-inset.test.ts pins the inset and the compensations;
composer-row-rhythm.test.ts now measures 8 px from each foot chip's pill edge
to its text in Chromium (red on base: 4.0 px).

Leo-ask: ask-608336bd91

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 28ef87f: 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=pr24138 -f ref=glass-regressions/pill-glass-symbol -f platform=macos -f backend_mode=local

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

gh run download 39728758998 -R manaflow-ai/cmux -n gallery-advisory-24138-28ef87fa32451d6dada8a0e80c7debc9768dc006 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.composer-context/closed Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.composer-context/closed Apple System Colors unchanged 0% own composerLocation.css
agent-pane.composer-context/folder-menu Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.composer-context/folder-menu Apple System Colors unchanged 0% own composerLocation.css
agent-pane.composer-context/folder-favicons Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.composer-context/folder-favicons Apple System Colors unchanged 0% own composerLocation.css
agent-pane.composer-context/duplicate-worktrees Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.composer-context/duplicate-worktrees Apple System Colors unchanged 0% own composerLocation.css
agent-pane.composer-context/duplicate-search Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.composer-context/duplicate-search Apple System Colors unchanged 0% own composerLocation.css
agent-pane.composer-context/repo-worktrees Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.composer-context/repo-worktrees Apple System Colors unchanged 0% own composerLocation.css
agent-pane.composer-context/repo-worktrees-open Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.composer-context/repo-worktrees-open Apple System Colors unchanged 0% own composerLocation.css
agent-pane.composer-context/repo-worktrees-search Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.composer-context/repo-worktrees-search Apple System Colors unchanged 0% own composerLocation.css
agent-pane.composer-context-side/filter-keeps-side Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.composer-context-side/filter-keeps-side Apple System Colors unchanged 0% own composerLocation.css
agent-pane.options-menu/closed Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.options-menu/closed Apple System Colors unchanged 0% own composerLocation.css
agent-pane.options-menu/one-open Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.options-menu/one-open Apple System Colors unchanged 0% own composerLocation.css
agent-pane.options-menu/several-open Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.options-menu/several-open Apple System Colors unchanged 0% own composerLocation.css
agent-pane.permission-panel/buttons-current Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.permission-panel/buttons-current Apple System Colors unchanged 0% own composerLocation.css
agent-pane.permission-panel/buttons-under Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.permission-panel/buttons-under Apple System Colors unchanged 0% own composerLocation.css
agent-pane.permission-panel/buttons-segmented Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.permission-panel/buttons-segmented Apple System Colors unchanged 0% own composerLocation.css
agent-pane.permission-panel/buttons-text Apple System Colors Light unchanged 0% own composerLocation.css
agent-pane.permission-panel/buttons-text Apple System Colors unchanged 0% own composerLocation.css

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

red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: red check: No fleet host names in gallery fixtures is not red on the base b256392; do not merge until green; see lane-rules

Tour of 28ef87fa32 (run): no media. The tour did not run: only webview code changed (3 path(s)), which the gallery advisory run checks in Linux Chromium on the pull request (its artifact holds any captures); add the media-tour-mac label, then re-add media-tour, to tour it on a Mac.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by glass-regressions on cosmic-gray · session

@teamleaderleo teamleaderleo added the risk:low Risk tier (docs/ci/risk-tiers.md) label Oct 22, 2026
@blacksmith-sh

blacksmith-sh Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Found 13 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmp9ufstc90/summary-missing.json (live):/summary-missing.json (live): View Logs
/tmp/tmp_w20j2s9/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
convention violations found (ERROR lines above)./
convention violations found (ERROR lines above).
View Logs
nightly cmux-tui resolve/nightly cmux-tui resolve View Logs
test_every_submodule_free_checkout_on_an_owned_runner_resets_submodules (main.Reuse
dWorkspaceSubmodules.test_every_submodule_free_checkout_on_an_owned_runner_resets_submo
dules)/
test_every_submodule_free_checkout_on_an_owned_runner_resets_submodules (main.Reuse
dWorkspaceSubmodules.test_every_submodule_free_checkout_on_an_owned_runner_resets_submo
dules)
View Logs
test_every_submodule_free_checkout_on_an_owned_runner_resets_submodules (main.Reuse
dWorkspaceSubmodules.test_every_submodule_free_checkout_on_an_owned_runner_resets_submo
dules) (job='web-bundles')/
test_every_submodule_free_checkout_on_an_owned_runner_resets_submodules (main.Reuse
dWorkspaceSubmodules.test_every_submodule_free_checkout_on_an_owned_runner_resets_submo
dules) (job='web-bundles')
View Logs

...and 3 more test failures. View all on Blacksmith: run 39728758842, run 39728758893

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

@github-actions github-actions Bot added risk:normal Risk tier (docs/ci/risk-tiers.md) and removed risk:low Risk tier (docs/ci/risk-tiers.md) labels Oct 22, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

…dLast)

vp check failed on the PR: composer-row-rhythm.test.ts was not formatted, and
composer-foot-pill-inset.test.ts called Array.prototype.findLast, which the
webviews tsconfig lib does not declare (TS2550). The last declared inset is now
read by index after a filter; the assertion is unchanged.

Leo-ask: ask-608336bd91

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e with the wider pill

Review (Codex xhigh) found the 8 px inset moved labels when the quiet row's right
side holds more than the model: chips touch (no gap), so each neighbour's extra
4 px a side pushed the chips before it. With the model, Plan and a harness's
Options chip, the model's label moved 16 px and Plan's 8 px; with the model and
Options, the model's moved 8 px.

Each right-side chip after the first now starts calc(8px - 2 * inset) early,
tucking its leading pill padding under the one before it, so neighbouring labels
stay 8 px apart as on base (the effort chip keeps its 1 px more). Measured in
Chromium against base, LTR and RTL, for model+ring, model+Plan+Options+ring,
model+effort+ring and mode-first orders: every label and the ring move 0.00 px;
every pill starts 8 px before its text. The later chip takes the pointer over
the shared 8 px.

test/composer-foot-pill-inset.test.ts pins the neighbour rule (red at e4fdde1).

Leo-ask: ask-608336bd91

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (Codex xhigh via acpmux, correctness first): SHIP at 28ef87f

BLOCKING: none

NON-BLOCKING:

  • webviews/src/agent-session/acpmux/composerLocation.css:1127: The optional Plan chip's display:contents wrapper ignores the compensating margin. Chromium reproduction shows its label gap growing from 8 to 16 px and the model moving 8 px left. Current App callers disable Plan with showPlan={false}; add rendered Plan coverage if retaining this support.

CHECKED:

  • manaflow-ai/cmux: exact requested head and all three changed files against merge base 164b139; PR body read once. Scope is footer-pill geometry, preserving existing glass styling.
  • Traced chat and New Tab callers, spacing, translucent theme washes, accent tokens, and host/media Reduce Transparency fallbacks. No opaque glass fill, hard-coded orange, or runtime allocation loop introduced.
  • Exact-head temporary export: inset tests 5 passed; the same tests against merge-base CSS fail, including expected 8 versus actual 4. Glass opacity/state/edge tests: 17 passed.
  • Changed Chromium rhythm suite: 8 passed, 0 failed, light/dark at 420–760 px, exit 0. Broader browser run stopped during cleanup after 12 passing tests; not counted as completed.
  • Shared checkout remained clean at 9ac220d. Only requested private refs fetched; no Mac build or Swift tests run.

@teamleaderleo
teamleaderleo merged commit 13e4530 into feat-cmux-next Oct 22, 2026
@teamleaderleo
teamleaderleo deleted the glass-regressions/pill-glass-symbol branch October 22, 2026 08:34
@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

Shipped in:

teamleaderleo added a commit that referenced this pull request Oct 23, 2026
- ComposerBox.tsx: base #24367 gave the box a Codex look (useQuietRow, the
  ring before the model in the box's row, a bottom slot); this branch removes
  Codex's bolt (FastToggle) from the box. Kept base's quietRow gating
  (useRowFit(bar, quietRow), {!quietRow && chips}, the ring for Codex's look)
  and this branch's removal of the speed state and SpeedToggleHost wrapper,
  so chips go in unwrapped (FastToggle.tsx stays deleted; nothing else
  imports it).
- composerLocation.css, context ring: kept this branch's margin-inline-start: 0
  and its comment (no 8 px margin on top of the button's inset), and noted
  #23785. Base #24138 raised the row's pill inset from 4 to 8 px, so the
  ring's glyph now sits 13 px after the effort, not 9.
- test/composer-model-quiet.test.ts: the ring-gap bound follows #24138's
  inset (<= 14 px, was <= 10); the name and header comment say so.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant