Repository navigation
fix(ui): preserve nested scroll gesture ownership - #688
Merged
Merged
Conversation
Keep middle-button drags on the scrollers selected at pointerdown rather than depending on host-specific native autoscroll. Resolve horizontal and vertical owners independently so a wide code block cannot swallow vertical movement intended for its containing shell. Release capture and animation on pointer termination, blur, hidden/detached content, or component cleanup; leave links, editors and interactive controls to their normal handlers. Latch vertical wheel sequences until their idle boundary so an output passing under a stationary pointer cannot steal the transcript's gesture. Allow ancestor chaining at an edge and leave zoom, Shift-wheel, horizontal and uncancellable events to the browser. Notify existing follow controllers before applying redirected motion. Replace Virtua's outstanding imperative scroll only once on user intent: unconditional scrollBy(0) on each wheel/key event itself creates a new measurement-time pin. Keep nested keyboard navigation in its scroller and respect keys already consumed by descendant controls. Replace simulated MMB scrollTop writes with actual browser mouse movement. Add real ToolCall fixtures and regression coverage for pointer target crossings, release, streaming appends/window shifts, wheel handoff, repeated navigation keys, independent axes, hidden panes and prevented Home. The three review findings were reproduced before their fixes and re-reviewed. Validation: 43 Chromium regressions pass in two full runs, 57 focused virtual-scroll tests pass, and UI/Electron typechecks pass. The rebuilt Windows Tauri release passes 14 targeted WebView2 checks for both MMB owners, release, passing-shell wheel routing, nested navigation and repeated transcript keys. Loaded source maps match the reviewed source files. This is targeted validation, not exhaustive desktop or cross-platform coverage.
|
PR builds are available as GitHub Actions artifacts: https://github.com/NeuralNomadsAI/CodeNomad/actions/runs/34457348610 Artifacts expire in 7 days.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow up on the MMB, wheel and keyboard scrolling regressions reported after #683.
scrollBy(0)on every wheel/key event and creating another measurement-time pin.Review and regressions
Review identified three additional defects, each reproduced by a failing browser test before correction:
Homeevent could still navigate the transcript.The subsequent scoped review identified no remaining actionable findings. Existing MMB tests now drive actual mouse movement rather than writing
scrollTopto simulate the drag. Tests exercise the real Solid virtual list/follow controllers and a realToolCallfixture.Validation
Validated source:
5b1926cf8e9464a8828ff68ec33852ca94567950.--no-bundle).git diff --check.Native release executable SHA-256:
BC2EDF02138440691008DD1E1F4B28EF12E5C76555F681D299D6ED8827013735.These are targeted checks, not a claim of exhaustive desktop or cross-platform coverage. An initial native test run lost its target DOM element; the completed-shell-targeted rerun passed all 14 checks. The user's separate UI #667 executable was restored unchanged after validation; no UI-worktree changes are included here. GitHub CI remains separate from these local checks.
Scope / maintenance
Only four files change. No preferences, translations, dependencies or native-host implementation changes.
packages/ui/src/components/virtual-follow-list.tsxis an existing oversized file (~1,188 lines); the gesture routing is isolated in a focused helper rather than adding a general refactor.