From 35d95c3044fd2b76bbaa0e3d81e9426acc294ef8 Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Thu, 7 May 2026 19:24:52 +0300 Subject: [PATCH] fix: allow scrolling during streaming User scroll-up now unpins active chat streaming Auto-follow no longer snaps back after trusted upward scrolls --- packages/ui/src/hooks/useChatScrollManager.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/ui/src/hooks/useChatScrollManager.ts b/packages/ui/src/hooks/useChatScrollManager.ts index 6573a845..ab12c151 100644 --- a/packages/ui/src/hooks/useChatScrollManager.ts +++ b/packages/ui/src/hooks/useChatScrollManager.ts @@ -375,7 +375,10 @@ export const useChatScrollManager = ({ return; } - const isProgrammatic = isMarkedAutoScroll(container.scrollTop); + const currentScrollTop = container.scrollTop; + const scrollingUp = currentScrollTop < lastScrollTopRef.current; + const isTrustedScrollUp = Boolean(event?.isTrusted && scrollingUp); + const isProgrammatic = !isTrustedScrollUp && isMarkedAutoScroll(currentScrollTop); if (isProgrammatic) { autoScrollMarkerRef.current = null; } @@ -393,9 +396,6 @@ export const useChatScrollManager = ({ schedulePinnedStateAndIndicators(); // Handle pin/unpin logic - const currentScrollTop = container.scrollTop; - const scrollingUp = currentScrollTop < lastScrollTopRef.current; - if (event?.isTrusted && !isProgrammatic) { if (scrollingUp && isPinnedRef.current) { setFollowMode('none');