summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/pages/session/use-session-hash-scroll.ts
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-03-25 06:25:57 -0500
committerAdam <[email protected]>2026-03-25 06:25:57 -0500
commit1041ae91d1a39401fe099747e3bc093bdcdaa079 (patch)
treeca5515910ad01f76639577ef8e3a991b644a5ade /packages/app/src/pages/session/use-session-hash-scroll.ts
parent898456a25cf2edbfc4ae4961b37424f633419dd6 (diff)
downloadopencode-1041ae91d1a39401fe099747e3bc093bdcdaa079.tar.gz
opencode-1041ae91d1a39401fe099747e3bc093bdcdaa079.zip
Reapply "fix(app): startup efficiency"
This reverts commit 898456a25cf2edbfc4ae4961b37424f633419dd6.
Diffstat (limited to 'packages/app/src/pages/session/use-session-hash-scroll.ts')
-rw-r--r--packages/app/src/pages/session/use-session-hash-scroll.ts18
1 files changed, 18 insertions, 0 deletions
diff --git a/packages/app/src/pages/session/use-session-hash-scroll.ts b/packages/app/src/pages/session/use-session-hash-scroll.ts
index 5fadb1f22..c582749d1 100644
--- a/packages/app/src/pages/session/use-session-hash-scroll.ts
+++ b/packages/app/src/pages/session/use-session-hash-scroll.ts
@@ -8,6 +8,9 @@ export const useSessionHashScroll = (input: {
sessionID: () => string | undefined
messagesReady: () => boolean
visibleUserMessages: () => UserMessage[]
+ historyMore: () => boolean
+ historyLoading: () => boolean
+ loadMore: (sessionID: string) => Promise<void>
turnStart: () => number
currentMessageId: () => string | undefined
pendingMessage: () => string | undefined
@@ -181,6 +184,21 @@ export const useSessionHashScroll = (input: {
queue(() => scrollToMessage(msg, "auto"))
})
+ createEffect(() => {
+ const sessionID = input.sessionID()
+ if (!sessionID || !input.messagesReady()) return
+
+ visibleUserMessages()
+
+ let targetId = input.pendingMessage()
+ if (!targetId && !clearing) targetId = messageIdFromHash(location.hash)
+ if (!targetId) return
+ if (messageById().has(targetId)) return
+ if (!input.historyMore() || input.historyLoading()) return
+
+ void input.loadMore(sessionID)
+ })
+
onMount(() => {
if (typeof window !== "undefined" && "scrollRestoration" in window.history) {
window.history.scrollRestoration = "manual"