diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx
index 7a3b476e8..2d3e31355 100644
--- a/packages/app/src/pages/session.tsx
+++ b/packages/app/src/pages/session.tsx
@@ -1184,8 +1184,6 @@ export default function Page() {
on(
() => sdk.directory,
() => {
- void file.tree.list("")
-
const tab = activeFileTab()
if (!tab) return
const path = file.pathFromTab(tab)
@@ -1640,6 +1638,9 @@ export default function Page() {
sessionID: () => params.id,
messagesReady,
visibleUserMessages,
+ historyMore,
+ historyLoading,
+ loadMore: (sessionID) => sync.session.history.loadMore(sessionID),
turnStart: historyWindow.turnStart,
currentMessageId: () => store.messageId,
pendingMessage: () => ui.pendingMessage,
@@ -1711,7 +1712,7 @@ export default function Page() {
-
+
string | undefined
messagesReady: () => boolean
visibleUserMessages: () => UserMessage[]
+ historyMore: () => boolean
+ historyLoading: () => boolean
+ loadMore: (sessionID: string) => Promise
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"
--
cgit v1.2.3