summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-03-24 13:51:09 -0500
committerGitHub <[email protected]>2026-03-24 13:51:09 -0500
commitb848b7ebae7b783ae5dc121f1c865f17da453543 (patch)
tree65a75a7a9483f7f3a706304567d702aafd46b236
parente837dcc1c5d3b44f6adc6f3f9f26eb7f125fbf56 (diff)
downloadopencode-b848b7ebae7b783ae5dc121f1c865f17da453543.tar.gz
opencode-b848b7ebae7b783ae5dc121f1c865f17da453543.zip
fix(app): session timeline jumping on scroll (#18993)
-rw-r--r--packages/app/src/pages/session.tsx13
1 files changed, 9 insertions, 4 deletions
diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx
index 722a688bb..2d3e31355 100644
--- a/packages/app/src/pages/session.tsx
+++ b/packages/app/src/pages/session.tsx
@@ -246,14 +246,19 @@ function createSessionHistoryWindow(input: SessionHistoryWindowInput) {
if (added <= 0) return
if (growth <= 0) return
+
+ if (opts?.prefetch) {
+ const current = turnStart()
+ preserveScroll(() => setTurnStart(current + growth))
+ return
+ }
+
if (turnStart() !== start) return
- const reveal = !opts?.prefetch
const currentRendered = renderedUserMessages().length
const base = Math.max(beforeRendered, currentRendered)
- const target = reveal ? Math.min(afterVisible, base + turnBatch) : base
- const nextStart = Math.max(0, afterVisible - target)
- preserveScroll(() => setTurnStart(nextStart))
+ const target = Math.min(afterVisible, base + turnBatch)
+ preserveScroll(() => setTurnStart(Math.max(0, afterVisible - target)))
}
const onScrollerScroll = () => {