Skip to content

fix(composer): retain dictation hover while its menu is open - #34606

Merged
teamleaderleo merged 11 commits into
feat-cmux-nextfrom
lane/parity-hover-audit
Nov 4, 2026
Merged

teamleaderleo merged 11 commits into
feat-cmux-nextfrom
lane/parity-hover-audit

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

Opening Hide Dictation Button now keeps the invoking mic or Finish control at its hover tone until dismissal. Listening dictation preserves its accent. The surrounding row and neighboring controls stay unchanged.

Leo (2026-11-04):

"the cohesiveness, the consistency of, say, whatever, the lines, the hovering, hoverable bits, like how much to highlight, which parts to highlight, which parts to do the hover tooltips, like just these little things, like the dictation button or whatever."

Extends #28861's existing ContextMenu opener marker to the dictation styles introduced in #22713. No new state, timers, observers or animation; on by default, with a one-commit revert.

Design: leo-workspace/design/composer.md and design/menus.md. Private reference id: claude/live/composer-voice-listening-waveform (preserved active mic accent and quiet Finish control). Gallery: agent-pane.dictation, idle-menu, listening-menu, finish-menu; retained hover is the chosen treatment.

Validation at 7094ae981e0bcf70a51940a6780ef7e113ee4437: fleet run 41761893377 passed all 12 browser cases and 14 DictationButton/ContextMenu unit tests. Original CSS failed all 12 retention cases in the same harness. The browser test covers glyph right-click, exact source-only retention, stable bounds and dismissal cleanup. Static prepush gate and changed-file formatting passed.

The full web check found four failures outside this diff: design tokens in pages/changelog/updateSurfaces.css (margin-top: 2px); formatting in App.tsx and cloudRun.test.ts; lint/typecheck for missing after in test/transcript-spacing-kinds.test.ts:247 (owned by #34577). These files are unchanged from base 49d2b6e52cb9494d59ce798689c78ac913533621; the attempted exact-base run 41762865343 returned no command receipt or artifacts, so it does not establish an executed base comparison. The scoped behavior suite is green; the unrelated failures remain source-attributed to unchanged base files.

Performance

Metric Before After Delta Harness
Popup opener hover mismatches, 12 cases 12 0 −12 (−100%) dictation-popup-hover.test.ts, original vs patched CSS; run 41761893377
Maximum control/row movement 0 px 0 px 0 px Same browser run

Screenshots (synthetic, 2×): left before, right after; dark idle/listening/Finish, then light. Private reference was compared locally and is not included here.

Dictation popup hover before and after

🤖 Generated with Codex

Agent session: agent session

Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-1fcd01147ccc682ec320
@cursor

cursor Bot commented Nov 4, 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.

@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 102fe65: 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=pr34606 -f ref=lane/parity-hover-audit -f platform=macos -f backend_mode=local

Gallery before/after for 7ba213e: 16 states rendered, 8 images differ, 1953 more touched states not rendered. Images are in the run's artifact, not on this public PR; the independent review of this head reads them on its own, so the PR needs no hand-made screenshots of these states.

gh run download 41918247512 -R manaflow-ai/cmux -n gallery-advisory-34606-7ba213e87ed46bb06232105cc948b194b2b999ca (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.composer-dictation/idle Apple System Colors Light unchanged 0% own dictation.css
agent-pane.composer-dictation/idle Apple System Colors unchanged 0% own dictation.css
agent-pane.composer-dictation/listening-empty Apple System Colors Light unchanged 0% own dictation.css
agent-pane.composer-dictation/listening-empty Apple System Colors unchanged 0% own dictation.css
agent-pane.composer-dictation/listening-words Apple System Colors Light unchanged 0% own dictation.css
agent-pane.composer-dictation/listening-words Apple System Colors unchanged 0% own dictation.css
agent-pane.composer-dictation/finalizing Apple System Colors Light changed 0.956% own dictation.css
agent-pane.composer-dictation/finalizing Apple System Colors changed 0.932% own dictation.css
agent-pane.dictation/idle-menu Apple System Colors Light new 0% own Dictation.gallery.tsx
agent-pane.dictation/idle-menu Apple System Colors new 0% own Dictation.gallery.tsx
agent-pane.dictation/listening-menu Apple System Colors Light new 0% own Dictation.gallery.tsx
agent-pane.dictation/listening-menu Apple System Colors new 0% own Dictation.gallery.tsx
agent-pane.dictation/finish-menu Apple System Colors Light new 0% own Dictation.gallery.tsx
agent-pane.dictation/finish-menu Apple System Colors new 0% own Dictation.gallery.tsx
agent-pane.dictation/idle Apple System Colors Light unchanged 0% own Dictation.gallery.tsx
agent-pane.dictation/idle Apple System Colors unchanged 0% own Dictation.gallery.tsx
agent-pane.dictation/listening Apple System Colors Light unchanged 0% own Dictation.gallery.tsx
agent-pane.dictation/listening Apple System Colors unchanged 0% own Dictation.gallery.tsx
agent-pane.dictation/starting Apple System Colors Light unchanged 0% own Dictation.gallery.tsx
agent-pane.dictation/starting Apple System Colors unchanged 0% own Dictation.gallery.tsx
agent-pane.dictation/finalizing Apple System Colors Light unchanged 0% own Dictation.gallery.tsx
agent-pane.dictation/finalizing Apple System Colors unchanged 0% own Dictation.gallery.tsx
agent-pane.dictation/start Apple System Colors Light unchanged 0% own Dictation.gallery.tsx
agent-pane.dictation/start Apple System Colors unchanged 0% own Dictation.gallery.tsx
agent-pane.new-tab/start-refused Apple System Colors Light unchanged 0% imports dictation.css (2 hops)
agent-pane.new-tab/start-refused Apple System Colors unchanged 0% imports dictation.css (2 hops)
agent-pane.new-tab/empty Apple System Colors Light unchanged 0% imports dictation.css (2 hops)
agent-pane.new-tab/empty Apple System Colors unchanged 0% imports dictation.css (2 hops)
agent-pane.new-tab/chats-loading Apple System Colors Light unchanged 0% imports dictation.css (2 hops)
agent-pane.new-tab/chats-loading Apple System Colors unchanged 0% imports dictation.css (2 hops)
agent-pane.new-tab/inherited-project Apple System Colors Light unchanged 0% imports dictation.css (2 hops)
agent-pane.new-tab/inherited-project Apple System Colors unchanged 0% imports dictation.css (2 hops)

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

Passes: CI passes on 7ba213e87e.

CI passes on 7ba213e87e (run 41918248136 attempt 1).

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.

web and size checks: green

Shipped in:

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Nov 4, 2026
Co-authored-by: Codex <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-1fcd01147ccc682ec320

@teamleaderleo teamleaderleo left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Review (gpt-6.1-sol high): SHIP at 7094ae9

Review (subagent gpt-6.1-sol high): SHIP at 7094ae9

The CSS preserves only the invoking dictation control's existing hover tone, including the running mic accent. The browser-test marker assertion now excludes ContextMenu's hidden host marker, resolving the prior blocker. No code or test regressions found in the correction.

Visual verdict: captures pending; missing captures are a follow-up only. Fleet behavioral results remain pending.
Follow-ups: inspect the light/dark captures when the fleet run returns.

@blacksmith-sh

blacksmith-sh Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Found 1 test failure on Blacksmith runners:

Failure

Test View Logs
test_every_compile_job_names_its_warm_sources (main.ThisTree.test_every_compile_job
_names_its_warm_sources)/
test_every_compile_job_names_its_warm_sources (main.ThisTree.test_every_compile_job
_names_its_warm_sources)
View Logs

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Visual follow-up (independent subagent gpt-6.1-sol high) at 7094ae9: SHIP. Reviewed the synthetic before/after contact sheet and private reference comparison. Only the invoking mic/Finish control retains its existing hover fill across light/dark states; neighboring controls remain at rest, with no row-wide highlight or movement. The listening waveform/accent treatment is preserved. Capture follow-up closed.

@teamleaderleo teamleaderleo left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Review (gpt-6.1-sol high): SHIP at ff514a8

Review (subagent gpt-6.1-sol high): SHIP at ff514a8.

Independent reviewer checked the clean base merge against 2fc8c42: the scoped hover patch is unchanged and introduces no integration regression.

Visual verdict: prior light/dark visual SHIP remains applicable to the unchanged hover patch. Only the invoking control stays lit while its menu is open; neighbors stay at rest, without movement.

Follow-ups: none.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@vercel

vercel Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
cmux Error Error Nov 4, 2026 1:03pm UTC

@coderabbitai

coderabbitai Bot commented Nov 4, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: ea8fe339-50db-4fd3-9376-275d12be6022

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Share

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Pushed an empty commit 4650b0b to resync the PR head; GitHub had missed the synchronize event for 5b821dd during the 2026-11-04 Git Operations incident. Previous reviews were at ff514a8; a fresh exact-head review and CI run are needed.

@github-actions

github-actions Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

⚠️ CodeRabbit/cubic familiar-intent warning @lawrence

This PR changes a hunk marked @intent ... stability=familiar in tests/test_intent_familiar_warning.py. If the familiar behavior changes on purpose, an optional Intent-Delta: line in the description (preserved, modified, retired or new) records it. This is advisory and does not block the PR.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium): BLOCK at 4650b0b

The head commit 4650b0b201b ("ci: resync PR head after GitHub missed the synchronize event") is not empty: its tree is the empty tree (4b825dc642cb), so it deletes every file in the repo (about 43k files). Merging it would wipe feat-cmux-next. GitHub reports the PR as CONFLICTING for the same reason.

Its parent 5b821ddec7b has the real tree, and git merge-tree of that parent against feat-cmux-next b657cec72db3 is clean (the earlier turns.ts conflict on #34983 is resolved there). The fix is to replace the head with a real empty commit on the parent (git commit --allow-empty) and review again at that head. Nothing else was reviewed at this head.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium): SHIP at 820e18f

Scoped to the change since the passing product review at ff514a8. The tree at 820e18f equals 5b821dd's tree, so the two resync commits net to nothing. The net diff against the merge base (Dictation.gallery.tsx, dictation.css, test/dictation-popup-hover.test.ts; +152) is byte-identical to the reviewed one at ff514a8. git merge-tree against feat-cmux-next b657cec is clean. The CSS keys off data-popup-open, which ContextMenu already sets on base (ContextMenu.test.tsx). The new test is a browser-lane test, so it runs in CI (this host has no Playwright engines); its verdict comes from the webview CI at this head.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo force-pushed the lane/parity-hover-audit branch from 820e18f to 102fe65 Compare November 4, 2026 12:32
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

SHIP carried to 102fe65: delta = history rewrite

History rewrite: the resync commit 4650b0b had the empty tree (the helper committed from a --no-checkout worktree), and the restore commit 820e18f then failed the fast-gates prepush gate, which judges each commit. I force-pushed the branch, leasing against 820e18f, to 5b821dd plus one empty commit 102fe65 built with git commit-tree (git diff --quiet 5b821dde 102fe65026a2aa3d68ba1c87665198e99aa7160d holds). The code is the same as at the reviewed head.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Not merged at 102fe65: blocked on a feat-cmux-next webview red.

Net scope against the reviewed parent: git rev-parse 5b821dde^{tree} 102fe650^{tree} gives b4b95a4a90ad… for both, and git diff --stat 5b821dde 102fe650 is empty.

Classifier (base copy): fast gates run 41830233606, cmux-next checks run 41830233864 and nightly-guards run 41830234081 are excused (exit 0). gallery health run 41830233690 was refused at first; one rerun of that job passed (attempt 2, success). CI run 41830234107 web / react-apps-check (1) is refused (exit 1): no feat-cmux-next verdict to compare with. Its two failing tests, a machine stuck starting is read at most STARTING_READS times and the webviews draw no off-scale icon beyond the recorded baseline (ExtraFolderList, ComposerContext, TaskGoalStrip), fail the same way on the feat-cmux-next tip b5ed5f0, and this PR touches none of those files. The webview verdict cannot clear until base is green there.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

SHIP carried to 5c36f6a: delta = base merge (update-branch, merge of feat-cmux-next 3dcd5db, which carries the webview base-red fix #35471)

Net scope: the PR's diff against its merge base 3dcd5db (Dictation.gallery.tsx, dictation.css, dictation-popup-hover.test.ts; +152) has git patch-id --stable df4171a7a864, the same as at 102fe65 and at the reviewed parent 5b821dd.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Not merged at 5c36f6a: one base red that the classifier does not excuse.

Webview verdict (next_autoland.py webview-wait): clear (exit 0). CI ran green after the update-branch to feat-cmux-next 3dcd5db.

Classifier (base copy) on run 41851440771, nightly-guards / workflow-guard-tests / release-notary: "not excused: … is not red on feat-cmux-next run 41857673486 (success), and not fixed on base: a failed step names no failing test (##[error]Process completed with exit code 1.)" (exit 1). The failing steps are nightly workflow guards (test_nightly_delivery_concurrency.py, test_ci_homebrew_untrusted_input.py, test_nightly_cmux_tui_resolve.py, test_nightly_sign_admit.py). The same job failed at the merged base 3dcd5db (push run 41851220519), and #35524 fixed it later on base. This PR changes nothing under .github/ or tests/. Waiting on a decision about a second base merge.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium): SHIP at 61d735d

Carried from 5c36f6a. The delta is a base merge of feat-cmux-next cea84c3 (update-branch), which brings in the nightly-guards fix #35524. The net diff against merge base cea84c3 (3 files, +152) has git patch-id --stable df4171a7a864, the same as at 5c36f6a, 102fe65 and the reviewed parent 5b821dd.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Not merged at 61d735d: the classifier refuses gallery health run 41860236635 (health (4)): 'agent-pane.agent-start#slow-start: play threw: layout shift(s) while the agent started (cv-shimmer__row "Writing…")', not on base runs 41861455104, 41858251275, 41856863458, 41856346528. It is the same flaky shimmer CLS that passed on its one allowed rerun at 102fe65. Every other red is excused: nightly-guards (exit 0, same failure on base run 41865097385). Waiting on a decision about a rerun.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 4, 2026 16:39 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 4, 2026 16:40 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent claude-opus-5-5 medium): SHIP at 5f8d6e3

Carried from 61d735d. The delta is cmux-bot's base merge of feat-cmux-next f17660f. The net diff against merge base f17660f (3 files, +152) has git patch-id --stable df4171a7a864, unchanged since the reviewed parent 5b821dd.

@cursor

cursor Bot commented Nov 4, 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

Review (subagent claude-opus-5-5 medium): SHIP at 9e8a7bf

Carried from 85e1f91. The delta is a base merge of feat-cmux-next e01bbae (update-branch), which brings in the webview timeout fix #35839 and the chat-row test fix #35851. The net diff against merge base e01bbae (3 files, +152) has git patch-id --stable df4171a7a864, unchanged since the reviewed parent 5b821dd.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Not merged at 9e8a7bf. The webview verdict is clear, CI and fast gates are green, and the patch-id is unchanged. The base classifier refuses the remaining reds (see the coordinator report): the gallery-health agent-start shimmer CLS (cmux#35744) and a cmux-next guards infra failure. Parked for a coordinator decision.

@cursor

cursor Bot commented Nov 4, 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.

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 4, 2026 21:40 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at 7ba213e

Carried from the SHIP at 9e8a7bf (#34606 (comment)). The delta is cmux-bot's base merge of feat-cmux-next fe924c0 (update-branch, 21:40Z). The net diff against merge base fe924c0 has git patch-id --stable df4171a7a864, unchanged since the reviewed head 9e8a7bf.

@teamleaderleo
teamleaderleo merged commit 7539623 into feat-cmux-next Nov 4, 2026
195 checks passed
@teamleaderleo
teamleaderleo deleted the lane/parity-hover-audit branch November 4, 2026 22:20

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 7ba213e8 Deployed Nov 4, 2026 by cmux-bot[bot] via cmux-tui tree preflight #113173
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