Skip to content

fix(cmux-next): steer-read-hover gallery play shows the read check's tooltip again - #24000

Closed
teamleaderleo wants to merge 6 commits into
feat-cmux-nextfrom
tp/fix-steer-read-hover
Closed

teamleaderleo wants to merge 6 commits into
feat-cmux-nextfrom
tp/fix-steer-read-hover

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Fixes the gallery health red on feat-cmux-next that #23769 started: agent-pane.composer#steer-read-hover timed out its play on every run (on #23769's head and on base pushes since).

Cause: a race in the play. In the steer state the steer's row sits right under the scroller's top edge, and #23769's 24 px read check sticks out above it. ctx.hover scrolls the target into view and sends the pointer at once; the scroll event lands after the pointerover, titleTooltips puts the tooltip away on that scroll, and with the pointer already on the check nothing brings it back.

  • The play now centres the check first and, if that scrolled, waits for the scroller's scroll event before hovering. A pointerover inside the tooltip's scroll quiet period then shows the tooltip once the scroll settles.
  • No product change: the check keeps its 24 px square.

Test plan

  • scripts/web-lint.sh passes.
  • Gallery health on this PR runs the play (the check that was red).

Changelog

None (gallery play only).

Agent session: cosmic-gray

🤖 Generated with Claude Code

…tooltip again

#23769 made the read check 24 px tall, so in the steer gallery state it stuck out above the
scroller. The hover's scroll-into-view then scrolled, titleTooltips put the tooltip away on that
scroll, and with no new pointerover it never came back: the play timed out on every run.

The check keeps its 24 px width but takes its icon's height again (the row still centres it),
and the play brings the steer into view and lets the scroll end before it hovers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16030-bf28-7072-b1f6-b83bbd0beacc&host=cosmic-gray
@cursor

cursor Bot commented Oct 22, 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 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 bf98a54: 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=pr24000 -f ref=tp/fix-steer-read-hover -f platform=macos -f backend_mode=local

Seen on other PRs too (likely flaky): agent-pane-older-rows-fade.test.ts, agent-pane-older-rows-fade.test.ts, lit-glyph-css.test.ts and 1 more also failed on other PRs before this one; check whether it is this PR's before re-running.

CI failed on bf98a54135 (run 39795173076 attempt 1): 1 code.

Job Verdict Why
web / react-apps-check (2) code a web test failed

Failures:

  • seen on other PRs agent-pane-older-rows-fade.test.ts rows of an older page fade in once as they come into view; opened and live rows do not: failed (job)
  • seen on other PRs agent-pane-older-rows-fade.test.ts Reduce Motion draws rows of an older page in full ink at once: failed (job)
  • seen on other PRs lit-glyph-css.test.ts a lit control's ink is the lit glyph, not the raw accent: failed (job)
  • seen on other PRs motion-scale.test.ts motion scale > no webview CSS, TS or TSX animates off the scale: failed (job)
Matched log lines
web / react-apps-check (2): (fail) rows of an older page fade in once as they come into view; opened and live rows do not [4376.61ms]

Not re-run automatically: web / react-apps-check (2) is not a machine failure.

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 cba27b0 to compare; do not merge until green; see lane-rules
red: web / react-apps-check (2); NEW: test/agent-pane-older-rows-fade.test.ts > Reduce Motion draws rows of an older page in full ink at once is not red on the base cba27b0; do not merge until green; see lane-rules

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

gh run download 39795172859 -R manaflow-ai/cmux -n gallery-advisory-24000-bf98a5413502d003cc3eeb30f0e996d0f2e806e6 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.composer/new-chat Apple System Colors Light unchanged 0% own composer.gallery.ts
agent-pane.composer/new-chat Apple System Colors unchanged 0% own composer.gallery.ts
agent-pane.composer/side-session Apple System Colors Light unchanged 0% own composer.gallery.ts
agent-pane.composer/side-session Apple System Colors unchanged 0% own composer.gallery.ts
agent-pane.composer/new-chat-suggest-open Apple System Colors Light unchanged 0% own composer.gallery.ts
agent-pane.composer/new-chat-suggest-open Apple System Colors unchanged 0% own composer.gallery.ts
agent-pane.composer/new-chat-suggest-failing Apple System Colors Light unchanged 0% own composer.gallery.ts
agent-pane.composer/new-chat-suggest-failing Apple System Colors unchanged 0% own composer.gallery.ts
agent-pane.composer/new-chat-suggest-draft Apple System Colors Light unchanged 0% own composer.gallery.ts
agent-pane.composer/new-chat-suggest-draft Apple System Colors unchanged 0% own composer.gallery.ts
agent-pane.composer/new-chat-reasoning Apple System Colors Light unchanged 0% own composer.gallery.ts
agent-pane.composer/new-chat-reasoning Apple System Colors unchanged 0% own composer.gallery.ts
agent-pane.composer/agent-home Apple System Colors Light unchanged 0% own composer.gallery.ts
agent-pane.composer/agent-home Apple System Colors unchanged 0% own composer.gallery.ts
agent-pane.composer/agent-home-path Apple System Colors Light changed 0% own composer.gallery.ts
agent-pane.composer/agent-home-path Apple System Colors unchanged 0% own composer.gallery.ts
agent-pane.add-project-panel/environment Apple System Colors Light unchanged 0% same-folder composer.gallery.ts
agent-pane.add-project-panel/environment Apple System Colors unchanged 0% same-folder composer.gallery.ts
agent-pane.add-project-panel/sources Apple System Colors Light unchanged 0% same-folder composer.gallery.ts
agent-pane.add-project-panel/sources Apple System Colors unchanged 0% same-folder composer.gallery.ts
agent-pane.add-project-panel/directory Apple System Colors Light unchanged 0% same-folder composer.gallery.ts
agent-pane.add-project-panel/directory Apple System Colors unchanged 0% same-folder composer.gallery.ts
agent-pane.add-project-panel/keyboard Apple System Colors Light unchanged 0% same-folder composer.gallery.ts
agent-pane.add-project-panel/keyboard Apple System Colors unchanged 0% same-folder composer.gallery.ts
agent-pane.bottom-stack/pr-queue Apple System Colors Light changed 0.0281% same-folder composer.gallery.ts
agent-pane.bottom-stack/pr-queue Apple System Colors changed 0.0177% same-folder composer.gallery.ts
agent-pane.bottom-stack/trust-permission-queue Apple System Colors changed 0.0241% same-folder composer.gallery.ts
agent-pane.bottom-stack/trust-permission-queue Apple System Colors Light changed 0.0232% same-folder composer.gallery.ts
agent-pane.bottom-stack/trust-individual-queue Apple System Colors Light changed 0.0339% same-folder composer.gallery.ts
agent-pane.bottom-stack/trust-individual-queue Apple System Colors changed 0.0283% same-folder composer.gallery.ts
agent-pane.bottom-stack/trust-then-permission Apple System Colors Light changed 0.0271% same-folder composer.gallery.ts
agent-pane.bottom-stack/trust-then-permission Apple System Colors changed 0.0268% same-folder composer.gallery.ts

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by transcript-parity on cosmic-gray · session

@github-actions github-actions Bot added the risk:normal 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 9 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmp0nb5r5eg/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmph16xmd10/summary-missing.json (live):/summary-missing.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
test_every_part_of_bun_run_check_runs_in_the_warn_branch (main.WebviewsWarnSplitCov
ersCheck.test_every_part_of_bun_run_check_runs_in_the_warn_branch)/
test_every_part_of_bun_run_check_runs_in_the_warn_branch (main.WebviewsWarnSplitCov
ersCheck.test_every_part_of_bun_run_check_runs_in_the_warn_branch)
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

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

… not a fixed time

The play alone fixes the race, so the check keeps Leo's 24px square (its tooltip lines up with
Copy, Retry and Fork's). The play waits for the scroller's scroll event before hovering instead of
a fixed 250 ms: a pointerover inside titleTooltips' quiet period then shows the tooltip once the
scroll settles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a16030-bf28-7072-b1f6-b83bbd0beacc&host=cosmic-gray
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent, correctness first): SHIP at 180a0bc

  • Race confirmed in code: ctx.hover's scrollIntoView (playRunner.ts:477) can scroll after the pointerover; titleTooltips' onScroll then dismisses and keeps target, so the tooltip never returns.
  • The play now centres the check and waits for the scroller's scroll event; titleTooltips' capture-phase listener has already armed its quiet period, so the hover takes the pending path and shows after the quiet period.
  • No product change; the read check keeps its 24 px square. Fleet compile-check --app passed at this head.

@cursor

cursor Bot commented Oct 22, 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

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

@teamleaderleo teamleaderleo added the ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds label Oct 22, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent, correctness first): SHIP at 72b9c82. Since the SHIP at 180a0bc the branch only took in the base; the PR diff is the same 9-line gallery play change. Gallery health passed on all 4 shards at 225b606; fleet compile-check --app passed at 72b9c82. The fast-gates conflict list names files this PR never touches; a local three-way with the base at eaccc63 is clean.

@cursor

cursor Bot commented Oct 22, 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, correctness first): SHIP at 1114bec. Base sync only since the SHIP at 180a0bc; the PR diff is the same 9-line gallery play change. Fleet compile-check --app passed at this head. The webview type error at the previous head (composer-row-layout Row.muted) was a base red that base fixed in e3a31de, now included.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Closing: superseded by #24364 (f157041), which landed the same steer-read-hover play fix (scroll the steer in, wait for the transcript to stop scrolling, then hover). Merging base into this branch leaves no diff, and gallery health on feat-cmux-next has been green on every push since (latest b306960).

@teamleaderleo teamleaderleo removed the ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds label Oct 23, 2026
@teamleaderleo
teamleaderleo deleted the tp/fix-steer-read-hover branch October 23, 2026 00:00
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