diff options
| author | Adam <[email protected]> | 2025-12-14 06:06:07 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-12-14 21:38:58 -0600 |
| commit | 62ffeb3987ad1188e37141513bee7d1f3ce0dcd8 (patch) | |
| tree | e23eb45bedc47bfefcae53932cd6b5c397473183 | |
| parent | 4a8e8f537ca688cca52674a619065f577cbd3f9b (diff) | |
| download | opencode-62ffeb3987ad1188e37141513bee7d1f3ce0dcd8.tar.gz opencode-62ffeb3987ad1188e37141513bee7d1f3ce0dcd8.zip | |
fix(desktop): auto scroll
| -rw-r--r-- | packages/ui/src/components/session-turn.tsx | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/packages/ui/src/components/session-turn.tsx b/packages/ui/src/components/session-turn.tsx index a4a762fc6..196e0bdb6 100644 --- a/packages/ui/src/components/session-turn.tsx +++ b/packages/ui/src/components/session-turn.tsx @@ -55,11 +55,13 @@ export function SessionTurn( userScrolled: false, stickyHeaderHeight: 0, scrollY: 0, + autoScrolling: false, }) function handleScroll() { if (!scrollRef) return setState("scrollY", scrollRef.scrollTop) + if (state.autoScrolling) return const { scrollTop, scrollHeight, clientHeight } = scrollRef const atBottom = scrollHeight - scrollTop - clientHeight < 50 if (!atBottom && working()) { @@ -74,9 +76,13 @@ export function SessionTurn( } function scrollToBottom() { - if (!scrollRef || state.userScrolled || !working()) return + if (!scrollRef || state.userScrolled || !working() || state.autoScrolling) return + setState("autoScrolling", true) requestAnimationFrame(() => { scrollRef?.scrollTo({ top: scrollRef.scrollHeight, behavior: "auto" }) + requestAnimationFrame(() => { + setState("autoScrolling", false) + }) }) } |
