summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-14 06:06:07 -0600
committerAdam <[email protected]>2025-12-14 21:38:58 -0600
commit62ffeb3987ad1188e37141513bee7d1f3ce0dcd8 (patch)
treee23eb45bedc47bfefcae53932cd6b5c397473183
parent4a8e8f537ca688cca52674a619065f577cbd3f9b (diff)
downloadopencode-62ffeb3987ad1188e37141513bee7d1f3ce0dcd8.tar.gz
opencode-62ffeb3987ad1188e37141513bee7d1f3ce0dcd8.zip
fix(desktop): auto scroll
-rw-r--r--packages/ui/src/components/session-turn.tsx8
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)
+ })
})
}