diff options
| author | Adam <[email protected]> | 2026-03-24 13:51:09 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-03-24 13:51:09 -0500 |
| commit | b848b7ebae7b783ae5dc121f1c865f17da453543 (patch) | |
| tree | 65a75a7a9483f7f3a706304567d702aafd46b236 | |
| parent | e837dcc1c5d3b44f6adc6f3f9f26eb7f125fbf56 (diff) | |
| download | opencode-b848b7ebae7b783ae5dc121f1c865f17da453543.tar.gz opencode-b848b7ebae7b783ae5dc121f1c865f17da453543.zip | |
fix(app): session timeline jumping on scroll (#18993)
| -rw-r--r-- | packages/app/src/pages/session.tsx | 13 |
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 = () => { |
