Repository navigation
cmux NEXT composer: chips press like Codex's (arrow cursor, instant press tone, no stray focus ring, 28 px folder target) - #21051
Conversation
…t backslashes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s one The color transition's rgba parser (cx-3rf4z) put a regular expression with Swift-escaped backslashes in WebTheme.bootstrapScript. The gallery's reader refused every backslash, so each gallery page answered 500 and the browser lanes that load it could not run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The arrow cursor over every chip, a press tone with no ease, no focus ring after a mouse click (on the chip or its menu, after typing too), a press target at least 24 px tall, and full-row menu hits, in Chromium and WebKit at 760 and 300 px, on a chat's composer, a new chat's and the New Tab page's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ress, no stray ring, 28 px folder target) - The arrow cursor over the composer's chips and Plan, as the pane's other controls (macOS), not the pointer hand. - A press shows its tone the moment the button goes down: the hover's 80 ms ease no longer delays it. - Hover washes apply only under a fine pointer; an open chip keeps its wash. - A mouse click on the + menu no longer draws a focus ring on it (WebKit drew its programmatic focus as keyboard focus after typing), and an open menu never draws a ring around itself. - The location strip's 22 px folder chip takes a press over 28 px, the bar chips' height, without moving anything. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
red: web / Web status; do not merge until green; see lane-rules |
|
Unclear: CI failed on
Not re-run automatically: Written by |
|
Agents: |
589f575) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Gallery236 states changed: agent-pane.artifact-panel/markdown, agent-pane.artifact-panel/closed, agent-pane.chat-width/wide-blocks, agent-pane.transcript/long-code, agent-pane.transcript/side-chat-acpmux, ... · 106 play checks failed Diff page and renders (the run's 230 more on the diff page. Live preview (follows this branch; start it with
Play checks failed (0 px anchor movement, 0 layout shift, no frame over 33 ms unless the entry gives a reason):
523 nondeterministic states differed from a second render of the same head (a clock or fixture leak) and are not counted as changes. |
…efore it reads it (macOS base red) (#30779) durable_agents stalled_turn::an_adopted_turn_whose_model_went_quiet_ends_as_stalled_and_frees_its_agent read the session row right after `host_adopted` and asserted its turn's startedAt. The daemon logs `host_adopted` before recovery restores the turn in flight (hub/hosts.rs recover_work; documented on until_turn_restored, #21051-era Ctrl-B test), so on a slow host the row still had "turn": null: "the restart made the adopted turn new", left Null. Red on macOS: in the full suite at feat fe81446 (932b72be) and alone 1 of 5 at e27f116 (f0673748, also failed its gate rerun). The test now waits with until_turn_restored, as the other adoption tests do. The assertion still catches the bug it was written for (#25033: a restart that made the adopted turn new gives another startedAt, not null). Test fault, not product: the order is deliberate (the status is set after recovery, see the comment there). Co-authored-by: cmux-bot[bot] <348531757+cmux-bot[bot]@users.noreply.github.com>






Problem
Clicking the composer's chips (the + menu, model, reasoning and permission chips, and the folder chip on the location strip) felt off next to Codex desktop:
Change
:activedrops the transition, so the press tone shows the moment the button goes down. Nothing moves; the open chip keeps its wash.(hover: hover) and (pointer: fine).focusVisible: falsewhen a mouse press opens it, so keys still reach the menu. An open menu (.ui-popup.ui-menu) never draws an outline around itself; its rows show the highlight.::beforeon the button, without moving anything.Footer layout, label step-down and gaps are untouched (composerRowFit.ts and the row geometry belong to op-next-composer-footer-cx). The effort menu's layout lines from #20787 and #20796 are untouched.
Codex reference. In Codex desktop the composer pickers are menu buttons with the arrow cursor, a tonal press, no ring after a click, and they open on the press.
references/has no frame of Codex's composer menus mid-click, so this follows the behaviour rather than a still.Borrowed from AI Elements. The trigger keeps its wash while the menu is open (
aria-expanded:bg-muted), the ring isfocus-visibleonly, menu rows usecursor-default, and touch is gated separately (pointer-coarse). AI Elements nudges a pressed button down 1 px (active:translate-y-px) but not a menu trigger; we keep a tonal step with no shift.Verified
webviews/test/composer-chip-press.test.ts(new, real pointer events, Chromium and WebKit, 760 and 300 px, on a chat's composer, a new chat's and the New Tab page's): arrow cursor on every chip; the press tone is there the moment the button goes down and the box doesn't move; no ring on the chip or its menu after a mouse click, after typing too, while keyboard focus still draws one; every chip takes a press over at least 24 px; every menu row takes a press at its gutter, its trailing edge, its top and its bottom. Commit cd44a91 adds the test alone: 32 of 50 fail on the base. With the fix: 50 pass, and still 50 after mergingfeat-cmux-next(its own gallery fix, 589f575, replaces webviews: gallery reads Swift backslashes in WebTheme.bootstrapScript (base red) #21020's, which this branch no longer carries).row-focus(4) andno-system-blue(1) fail the same way on the base on this Mac.vp checkpasses (types, lint, format).cg-composerat 7c220e3 (CMUX_SKIP_ZIG_BUILD=1 ./scripts/reload.sh --tag cg-composer) built and launched. In the app,debug.agent_pane clickdelivers native clicks to the New Tab chips (model: pointerdown, mousedown, mouseup, click; reasoning: pointerdown, click). This Mac's display is locked, so the page is hidden (visibilityState: hidden, no animation frames) and menus never finish opening or closing. Menu state, focus rings and the cursor couldn't be observed in the app; the browser tests above cover them.Stills
WebKit on the gallery stage (the app's engine), after typing a draft. Latte and Mocha at 760 and 400 px.
Permission chip held down (the press tone is there with no ease; the menu opens on the press and is fading in):
Open permission menu after a click. Before: a system-blue ring around the whole menu. After: none.
Open menu with the pointer over a row (Chromium; headless WebKit's synthetic mouse moves report no movement, so Base UI ignores them and draws no row hover):
One-press switch (model menu open, press on the permission chip held, released). One press switches; it already did on the base.
Latte 760

Latte 400

Mocha 760

Mocha 400

🤖 Generated with Claude Code