fix(ui): stabilize streaming chat scroll follow#375
Conversation
Stabilize the chat viewport scroll-follow behavior during streaming with a smaller, one-file fix centered on VirtualFollowList. The original failure mode was that streaming output could keep follow mode sticky or trigger visible snapbacks when the user tried to inspect earlier parts of a long response. The important fixes are to treat upward wheel input as an immediate exit from follow, to allow native browsing while escaped, to rejoin follow only when the viewport deliberately returns near the bottom, and to rely on the DOM scroller as the source of truth when Virtua's internal scroll offset lags behind real manual movement. This version keeps the fix narrowly scoped to virtual-follow-list.tsx. Immediate programmatic top/bottom moves use direct DOM scroll position writes, content-growth follow is coalesced through scrollHeight checks, and the state machine is trimmed down to the minimal follow/escape geometry that still preserves smooth exit, smooth re-entry, and no visible snapback during long streamed responses.
|
I want you to perform the gatekeeper checks for latest PR state check for regressions |
|
Gatekeeper review for latest PR state completed. Request understood: review PR #375 ruthlessly for regressions and better implementation options. I treated this as review-only and did not make code changes. Status: request changes Findings:
Implementation quality notes:
Verification:
Gatekeeper verdict: do not merge as-is. The PR likely fixes one scroll snapback symptom, but it regresses the long-stream hold control and introduces inconsistent follow-state semantics. Fix the state reset/API issues and either restore or intentionally remove the hold feature/UI before this should pass review. -- |
fix(ui): tighten virtual follow state transitions
|
I want you to perform the gatekeeper checks for latest PR state check for regressions |
|
Gatekeeper review for the latest PR #375 state completed. Request understood: perform another ruthless gatekeeper pass for regressions and better implementations. I treated this as review-only and did not make code changes. Status: no new blocking PR-specific findings from static review What changed since the previous gatekeeper review:
Remaining review notes:
Verification:
Gatekeeper verdict: the previously reported blockers appear resolved in the latest PR state. I do not see a remaining static-code blocker, but I would still require a clean dependency-installed CI run or maintainer-local run of the advertised UI typecheck/build plus manual scroll scenarios before merge. -- |
|
@VooDisss
I’m still narrowing down ... |
|
So I found multiple reproducible regressions in the latest PR state:
I reproduced this in both Tauri and Electron builds with both overlay arrows.
This is not just a UX preference issue: explicit “go to latest” should not behave as if hold mode silently overrode it.
@VooDisss do you see the same problemes ? |
Summary
VirtualFollowList.packages/ui/src/components/virtual-follow-list.tsxonly.Testing
npm run typecheck --workspace @codenomad/uinpm run build --workspace @codenomad/uiReview Notes