diff options
| author | Adam <[email protected]> | 2026-03-26 13:41:22 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-03-26 13:41:22 -0500 |
| commit | c7760b433b1bdbcaed7e7cd55d53b5b331f0f0fa (patch) | |
| tree | 4d1a865b8890dc30767b66293923c15e2b3f6d24 /packages/app/src/pages | |
| parent | 2e6ac8ff49eabcb1b62c1bd504338e7449f80c6e (diff) | |
| download | opencode-c7760b433b1bdbcaed7e7cd55d53b5b331f0f0fa.tar.gz opencode-c7760b433b1bdbcaed7e7cd55d53b5b331f0f0fa.zip | |
fix(app): more startup perf (#19288)
Diffstat (limited to 'packages/app/src/pages')
| -rw-r--r-- | packages/app/src/pages/directory-layout.tsx | 7 | ||||
| -rw-r--r-- | packages/app/src/pages/session.tsx | 1 | ||||
| -rw-r--r-- | packages/app/src/pages/session/session-side-panel.tsx | 9 | ||||
| -rw-r--r-- | packages/app/src/pages/session/use-session-commands.tsx | 28 |
4 files changed, 32 insertions, 13 deletions
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 ( <DataProvider data={sync.data} diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx index 2d3e31355..8a158cad5 100644 --- a/packages/app/src/pages/session.tsx +++ b/packages/app/src/pages/session.tsx @@ -712,7 +712,6 @@ export default function Page() { return Date.now() - info.at > 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(() => <DialogSelectFile mode="files" onOpenFile={showAllFiles} />) - } + onClick={() => { + void import("@/components/dialog-select-file").then((x) => { + dialog.show(() => <x.DialogSelectFile mode="files" onOpenFile={showAllFiles} />) + }) + }} aria-label={language.t("command.file.open")} /> </TooltipKeybind> 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(() => <DialogSelectFile onOpenFile={showAllFiles} />), + onSelect: () => { + void import("@/components/dialog-select-file").then((x) => { + dialog.show(() => <x.DialogSelectFile onOpenFile={showAllFiles} />) + }) + }, }), 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(() => <DialogSelectModel model={local.model} />), + onSelect: () => { + void import("@/components/dialog-select-model").then((x) => { + dialog.show(() => <x.DialogSelectModel model={local.model} />) + }) + }, }), 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(() => <DialogSelectMcp />), + onSelect: () => { + void import("@/components/dialog-select-mcp").then((x) => { + dialog.show(() => <x.DialogSelectMcp />) + }) + }, }), 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(() => <DialogFork />), + onSelect: () => { + void import("@/components/dialog-fork").then((x) => { + dialog.show(() => <x.DialogFork />) + }) + }, }), ...share, ] |
