From c7760b433b1bdbcaed7e7cd55d53b5b331f0f0fa Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Thu, 26 Mar 2026 13:41:22 -0500 Subject: fix(app): more startup perf (#19288) --- packages/app/src/pages/directory-layout.tsx | 7 ++++++ packages/app/src/pages/session.tsx | 1 - .../app/src/pages/session/session-side-panel.tsx | 9 +++---- .../app/src/pages/session/use-session-commands.tsx | 28 +++++++++++++++------- 4 files changed, 32 insertions(+), 13 deletions(-) (limited to 'packages/app/src/pages') diff --git a/packages/app/src/pages/directory-layout.tsx b/packages/app/src/pages/directory-layout.tsx index 6d3b04be9..427b4823b 100644 --- a/packages/app/src/pages/directory-layout.tsx +++ b/packages/app/src/pages/directory-layout.tsx @@ -12,6 +12,7 @@ import { decode64 } from "@/utils/base64" function DirectoryDataProvider(props: ParentProps<{ directory: string }>) { const location = useLocation() const navigate = useNavigate() + const params = useParams() const sync = useSync() const slug = createMemo(() => base64Encode(props.directory)) @@ -22,6 +23,12 @@ function DirectoryDataProvider(props: ParentProps<{ directory: string }>) { navigate(`/${base64Encode(next)}${path}${location.search}${location.hash}`, { replace: true }) }) + createEffect(() => { + const id = params.id + if (!id) return + void sync.session.sync(id) + }) + return ( SESSION_PREFETCH_TTL })() const todos = untrack(() => sync.data.todo[id] !== undefined || globalSync.data.session_todo[id] !== undefined) - untrack(() => { void sync.session.sync(id) }) diff --git a/packages/app/src/pages/session/session-side-panel.tsx b/packages/app/src/pages/session/session-side-panel.tsx index 58c650fcd..c07942627 100644 --- a/packages/app/src/pages/session/session-side-panel.tsx +++ b/packages/app/src/pages/session/session-side-panel.tsx @@ -13,7 +13,6 @@ import { useDialog } from "@opencode-ai/ui/context/dialog" import FileTree from "@/components/file-tree" import { SessionContextUsage } from "@/components/session-context-usage" -import { DialogSelectFile } from "@/components/dialog-select-file" import { SessionContextTab, SortableTab, FileVisual } from "@/components/session" import { useCommand } from "@/context/command" import { useFile, type SelectedLineRange } from "@/context/file" @@ -293,9 +292,11 @@ export function SessionSidePanel(props: { variant="ghost" iconSize="large" class="!rounded-md" - onClick={() => - dialog.show(() => ) - } + onClick={() => { + void import("@/components/dialog-select-file").then((x) => { + dialog.show(() => ) + }) + }} aria-label={language.t("command.file.open")} /> diff --git a/packages/app/src/pages/session/use-session-commands.tsx b/packages/app/src/pages/session/use-session-commands.tsx index 7394765ae..1a1c290f6 100644 --- a/packages/app/src/pages/session/use-session-commands.tsx +++ b/packages/app/src/pages/session/use-session-commands.tsx @@ -11,10 +11,6 @@ import { usePrompt } from "@/context/prompt" import { useSDK } from "@/context/sdk" import { useSync } from "@/context/sync" import { useTerminal } from "@/context/terminal" -import { DialogSelectFile } from "@/components/dialog-select-file" -import { DialogSelectModel } from "@/components/dialog-select-model" -import { DialogSelectMcp } from "@/components/dialog-select-mcp" -import { DialogFork } from "@/components/dialog-fork" import { showToast } from "@opencode-ai/ui/toast" import { findLast } from "@opencode-ai/util/array" import { createSessionTabs } from "@/pages/session/helpers" @@ -257,7 +253,11 @@ export const useSessionCommands = (actions: SessionCommandContext) => { description: language.t("palette.search.placeholder"), keybind: "mod+k,mod+p", slash: "open", - onSelect: () => dialog.show(() => ), + onSelect: () => { + void import("@/components/dialog-select-file").then((x) => { + dialog.show(() => ) + }) + }, }), fileCommand({ id: "tab.close", @@ -351,7 +351,11 @@ export const useSessionCommands = (actions: SessionCommandContext) => { description: language.t("command.model.choose.description"), keybind: "mod+'", slash: "model", - onSelect: () => dialog.show(() => ), + onSelect: () => { + void import("@/components/dialog-select-model").then((x) => { + dialog.show(() => ) + }) + }, }), mcpCommand({ id: "mcp.toggle", @@ -359,7 +363,11 @@ export const useSessionCommands = (actions: SessionCommandContext) => { description: language.t("command.mcp.toggle.description"), keybind: "mod+;", slash: "mcp", - onSelect: () => dialog.show(() => ), + onSelect: () => { + void import("@/components/dialog-select-mcp").then((x) => { + dialog.show(() => ) + }) + }, }), agentCommand({ id: "agent.cycle", @@ -487,7 +495,11 @@ export const useSessionCommands = (actions: SessionCommandContext) => { description: language.t("command.session.fork.description"), slash: "fork", disabled: !params.id || visibleUserMessages().length === 0, - onSelect: () => dialog.show(() => ), + onSelect: () => { + void import("@/components/dialog-fork").then((x) => { + dialog.show(() => ) + }) + }, }), ...share, ] -- cgit v1.2.3