diff options
| author | Adam <[email protected]> | 2026-03-24 13:23:41 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-03-24 13:23:41 -0500 |
| commit | 98b3340ceeb6928d0d57898d02665d763ef1ea9c (patch) | |
| tree | 8c775bf02b6ba61c86ca8fca96067bfaf0cd42f6 /packages/app/src/pages | |
| parent | 5e684c6e80d30a77ba02db013c61b8ecfe420f7f (diff) | |
| download | opencode-98b3340ceeb6928d0d57898d02665d763ef1ea9c.tar.gz opencode-98b3340ceeb6928d0d57898d02665d763ef1ea9c.zip | |
fix(app): more startup efficiency (#18985)
Diffstat (limited to 'packages/app/src/pages')
| -rw-r--r-- | packages/app/src/pages/home.tsx | 8 | ||||
| -rw-r--r-- | packages/app/src/pages/session.tsx | 7 | ||||
| -rw-r--r-- | packages/app/src/pages/session/use-session-hash-scroll.ts | 18 |
3 files changed, 30 insertions, 3 deletions
diff --git a/packages/app/src/pages/home.tsx b/packages/app/src/pages/home.tsx index ba3a2b942..4c795b968 100644 --- a/packages/app/src/pages/home.tsx +++ b/packages/app/src/pages/home.tsx @@ -113,6 +113,14 @@ export default function Home() { </ul> </div> </Match> + <Match when={!sync.ready}> + <div class="mt-30 mx-auto flex flex-col items-center gap-3"> + <div class="text-12-regular text-text-weak">{language.t("common.loading")}</div> + <Button class="px-3" onClick={chooseProject}> + {language.t("command.project.open")} + </Button> + </div> + </Match> <Match when={true}> <div class="mt-30 mx-auto flex flex-col items-center gap-3"> <Icon name="folder-add-left" size="large" /> 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() { <div class="flex-1 min-h-0 overflow-hidden"> <Switch> <Match when={params.id}> - <Show when={lastUserMessage()}> + <Show when={messagesReady()}> <MessageTimeline mobileChanges={mobileChanges()} mobileFallback={reviewContent({ 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" |
