Skip to content

fix(chat): the wheel over the bottom stack's parts scrolls nothing in Chromium - #31767

Merged
teamleaderleo merged 2 commits into
feat-cmux-nextfrom
lane/grid-basered-dockwheel
Nov 2, 2026
Merged

teamleaderleo merged 2 commits into
feat-cmux-nextfrom
lane/grid-basered-dockwheel

Conversation

@teamleaderleo

Copy link
Copy Markdown
Collaborator

Fixes a base red from #31497 (squash 7a9e1ab): test/agent-pane-dock-gutters.test.ts failed in Chromium only, in the running tray's case ("tray": boxScrolls: true). A wheel over the tray's head scrolled the transcript under the floating stack by -300px. The tray head takes the pointer, but nothing stopped the wheel there, so Chromium's compositor scrolled the transcript under it. WebKit already held it. The 22px row pitch from #31497 moved the rows under the tray, and that is when this surfaced.

The fix is wheelPassThrough.ts installDockWheelHold. It is one non-passive wheel listener on the stack (.acpmux-dock), installed from App.tsx while the dock is mounted. A vertical wheel over a part of the stack is prevented unless something under the pointer, inside the stack, can still scroll that way (a long draft, the queue, a menu's list). These still go to the transcript, through passesThrough / installWheelPassThrough as before: wheels over Jump to latest and over the parts' own bands and gutters. Pinch (ctrl) and sideways wheels are left alone. The listener sits on the stack only, so a wheel over the transcript never waits on it. It is removed when the dock changes or unmounts.

Tests: agent-pane-dock-gutters chromium "the gutter beside every part of the stack…" went from red to green. The rest of that file and all of agent-pane-wheel-pass-through (chromium and webkit: Jump to latest, composer card, long draft) stayed green. fmt and tsc are clean.

Agent session: agent session

🤖 Generated with Claude Code

… Chromium

Chromium sent a wheel over the running tray's head to the transcript under the floating
stack (the tray head took the pointer, but nothing held the wheel), so
agent-pane-dock-gutters failed on chromium ("tray": boxScrolls true). A non-passive
listener on the stack now holds a wheel over a part that has nothing of its own left to
scroll that way; gutters and Jump to latest still pass through to the transcript.

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

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 3d4733a: 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=pr31767 -f ref=lane/grid-basered-dockwheel -f platform=macos -f backend_mode=local

Gallery before/after for 3bf77e6: 16 states rendered, 0 images differ, 1247 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 41391581011 -R manaflow-ai/cmux -n gallery-advisory-31767-3bf77e6b0dd1ab04d99fed32dd044abb1e91d67a (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.chat-width/standard Apple System Colors Light unchanged 0% own App.tsx
agent-pane.chat-width/standard Apple System Colors unchanged 0% own App.tsx
agent-pane.chat-width/wide Apple System Colors Light unchanged 0% own App.tsx
agent-pane.chat-width/wide Apple System Colors unchanged 0% own App.tsx
agent-pane.chat-width/wide-blocks Apple System Colors Light unchanged 0% own App.tsx
agent-pane.chat-width/wide-blocks Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-edge/short-edge Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-edge/short-edge Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-edge/wide-edge Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-edge/wide-edge Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-edge/no-edge Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-edge/no-edge Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-floats/scrolled-to-end Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-floats/scrolled-to-end Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-floats/composer-grown Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-floats/composer-grown Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-40 Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-40 Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-56 Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-56 Apple System Colors unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-72 Apple System Colors Light unchanged 0% own App.tsx
agent-pane.composer-rest-gap/gap-72 Apple System Colors unchanged 0% own App.tsx
agent-pane.continuation-spacing/shipped Apple System Colors Light unchanged 0% own App.tsx
agent-pane.continuation-spacing/shipped Apple System Colors unchanged 0% own App.tsx
agent-pane.continuation-spacing/two-thirds Apple System Colors Light unchanged 0% own App.tsx
agent-pane.continuation-spacing/two-thirds Apple System Colors unchanged 0% own App.tsx
agent-pane.continuation-spacing/half-tucked Apple System Colors Light unchanged 0% own App.tsx
agent-pane.continuation-spacing/half-tucked Apple System Colors unchanged 0% own App.tsx
agent-pane.continuation-spacing/before Apple System Colors Light unchanged 0% own App.tsx
agent-pane.continuation-spacing/before Apple System Colors unchanged 0% own App.tsx
agent-pane.copy-controls/output Apple System Colors Light unchanged 0% own App.tsx
agent-pane.copy-controls/output Apple System Colors unchanged 0% own App.tsx

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

Passes: CI passes on 3bf77e6b0d.

CI passes on 3bf77e6b0d (run 41391581088 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:

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Nov 2, 2026
@blacksmith-sh

blacksmith-sh Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Found 6 test failures on Blacksmith runners:

Failures

Test View Logs
main.DeveloperIdAppTests.test_download_prints_the_active_profile_only/
test_download_prints_the_active_profile_only
View Logs
stubs: /System/Library/Frameworks/Security.framework/Versions/A/Security has no stub/
Security has no stub
View Logs
stubs: CoreFoundation.tbd: install-name /System/Library/Frameworks/
CoreFoundation.framework/Versions/A/CoreFoundation, missing 1: ['_CFRetain']/
CoreFoundation, missing 1: ['_CFRetain']
View Logs
stubs: CoreFoundation.tbd: install-name /System/Library/Frameworks/
CoreFoundation.framework/Versions/A/CoreFoundation, missing 1: ['_log2']/
CoreFoundation, missing 1: ['_log2']
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
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)/
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)
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

Review (codex gpt-6.1-sol high, review-router): SHIP at 3d4733a
No correctness findings: nested scrolling, gutter pass-through and lifecycle cleanup hold.
Follow-ups: before/after captures (not blocking).

@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 05:01 Inactive
@cmux-bot
cmux-bot Bot temporarily deployed to ci-routing-agent November 2, 2026 05:04 Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (next-review patch-id; carried): SHIP at 3bf77e6

The independent SHIP at 3d4733a carries to this head: the PR's own change (git diff $(git merge-base feat-cmux-next HEAD) HEAD) has the same git patch-id --verbatim (a13e60d15d0aa734) at both heads, and no merge between them was resolved by hand. Nothing new to review. A newer BLOCK, or any change to the PR's own diff, ends the carry.

@teamleaderleo
teamleaderleo merged commit 0b0894a into feat-cmux-next Nov 2, 2026
167 of 171 checks passed
@teamleaderleo
teamleaderleo deleted the lane/grid-basered-dockwheel branch November 2, 2026 05:40

This branch was previously deployed

1 inactive deployment
ci-routing-agent — 3bf77e6b Deployed Nov 2, 2026 by cmux-bot[bot] via wait for same-key tree publisher #99380
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