spec: prevent overshoot scrolling code diff to top (#9808)#10228
spec: prevent overshoot scrolling code diff to top (#9808)#10228lonexreb wants to merge 1 commit intowarpdotdev:masterfrom
Conversation
There was a problem hiding this comment.
Overview
This spec defines a gesture-window clamp for nested scroll containers to prevent in-progress overscroll from moving the parent blocklist.
Concerns
- The behavior contract does not define ownership after a new gesture starts at an inner-scroll boundary, so implementers could bubble only the first delta and then consume the rest of the same gesture.
- The scope expands from code diff to all blocklist-embedded scroll containers, but acceptance criteria, implementation pointers, and tests remain diff-only.
- The scrollbar click acceptance criterion should identify which scrollbar target bypasses the gesture clamp.
Verdict
Found: 0 critical, 2 important, 1 suggestions
Request changes
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
| scroll-event-stream timing: events within ≤200ms of each other | ||
| belong to the same gesture (matches macOS/Windows trackpad | ||
| inertia conventions). | ||
| - B3. After a 200ms gap, the next scroll arriving at the diff |
There was a problem hiding this comment.
| - B4. Same behavior at top AND bottom edges. | ||
| - B5. Click-to-jump (clicking the scrollbar) bypasses this rule | ||
| — that's a discrete event, not part of a gesture. | ||
| - B6. The new behavior applies to **all** scroll containers |
There was a problem hiding this comment.
| top remains visible. | ||
| - A2. Stop scrolling for >200ms, scroll up again — blocklist | ||
| scrolls normally. | ||
| - A3. Click the scrollbar above the diff to jump up — works as |
There was a problem hiding this comment.
💡 [SUGGESTION] Clarify whether this means the inner diff scrollbar, the parent blocklist scrollbar, or both, because the bypass behavior depends on which scrollable receives the click.
Spec for #9808. Clamp in-progress scroll gestures to the diff container; only new gestures (after a 200ms settling window) bubble up to the parent blocklist. Applies to all blocklist-embedded scroll containers, not just diff.
Closes (spec-only) #9808.