diff --git a/desktop/frontend/src/App.tsx b/desktop/frontend/src/App.tsx index 30ac745e3..1f3165f54 100644 --- a/desktop/frontend/src/App.tsx +++ b/desktop/frontend/src/App.tsx @@ -1,4 +1,4 @@ -import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { Suspense, lazy, useCallback, useEffect, useMemo, useRef, useState } from "react"; import type { CSSProperties, KeyboardEvent, PointerEvent as ReactPointerEvent } from "react"; import { SquarePen, @@ -26,11 +26,14 @@ import { TodoPanel } from "./components/TodoPanel"; import { ApprovalModal } from "./components/ApprovalModal"; import { AskCard } from "./components/AskCard"; import { StatusBar } from "./components/StatusBar"; -import { MemoryPanel } from "./components/MemoryPanel"; -import { HistoryPanel } from "./components/HistoryPanel"; -import { SettingsPanel } from "./components/SettingsPanel"; +// The four drawable panels (Memory / History / Settings / Update) are opened +// conditionally and are mutually exclusive in practice. Code-split them so +// their JS only lands when the user first opens the corresponding chip. +const MemoryPanel = lazy(() => import("./components/MemoryPanel").then((m) => ({ default: m.MemoryPanel }))); +const HistoryPanel = lazy(() => import("./components/HistoryPanel").then((m) => ({ default: m.HistoryPanel }))); +const SettingsPanel = lazy(() => import("./components/SettingsPanel").then((m) => ({ default: m.SettingsPanel }))); +const UpdateBanner = lazy(() => import("./components/UpdateBanner").then((m) => ({ default: m.UpdateBanner }))); import { CapabilitiesPanel } from "./components/CapabilitiesPanel"; -import { UpdateBanner } from "./components/UpdateBanner"; import { WorkspacePanel } from "./components/WorkspacePanel"; import { Tooltip } from "./components/Tooltip"; import { OnboardingOverlay } from "./components/OnboardingOverlay"; @@ -935,7 +938,9 @@ export default function App() {
{t("topbar.startupError", { msg: state.meta.startupErr })}
)} - + + +
{state.meta?.ready === false && !state.meta?.startupErr ? ( @@ -1041,28 +1046,36 @@ export default function App() { {memView !== null && ( - + + + )} {histView !== null && ( - + + + )} - {settingsOpen && setSettingsOpen(false)} onChanged={() => void refreshMeta()} />} + {settingsOpen && ( + + setSettingsOpen(false)} onChanged={() => void refreshMeta()} /> + + )} {capsOpen && setCapsOpen(false)} />}