diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx
index 19dcba58e..722a688bb 100644
--- a/packages/app/src/pages/session.tsx
+++ b/packages/app/src/pages/session.tsx
@@ -1179,8 +1179,6 @@ export default function Page() {
on(
() => sdk.directory,
() => {
- void file.tree.list("")
-
const tab = activeFileTab()
if (!tab) return
const path = file.pathFromTab(tab)
@@ -1635,6 +1633,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,
@@ -1706,7 +1707,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