summaryrefslogtreecommitdiffhomepage
path: root/packages/app
diff options
context:
space:
mode:
Diffstat (limited to 'packages/app')
-rw-r--r--packages/app/src/app.tsx132
-rw-r--r--packages/app/src/entry.tsx6
-rw-r--r--packages/app/src/index.ts2
3 files changed, 74 insertions, 66 deletions
diff --git a/packages/app/src/app.tsx b/packages/app/src/app.tsx
index a2f1aa401..13d9d147e 100644
--- a/packages/app/src/app.tsx
+++ b/packages/app/src/app.tsx
@@ -1,5 +1,5 @@
import "@/index.css"
-import { ErrorBoundary, Show, Suspense, lazy, type ParentProps } from "solid-js"
+import { ErrorBoundary, Show, lazy, type ParentProps } from "solid-js"
import { Router, Route, Navigate } from "@solidjs/router"
import { MetaProvider } from "@solidjs/meta"
import { Font } from "@opencode-ai/ui/font"
@@ -20,10 +20,12 @@ import { FileProvider } from "@/context/file"
import { NotificationProvider } from "@/context/notification"
import { DialogProvider } from "@opencode-ai/ui/context/dialog"
import { CommandProvider } from "@/context/command"
+import { Logo } from "@opencode-ai/ui/logo"
import Layout from "@/pages/layout"
import DirectoryLayout from "@/pages/directory-layout"
import { ErrorPage } from "./pages/error"
import { iife } from "@opencode-ai/util/iife"
+import { Suspense } from "solid-js"
const Home = lazy(() => import("@/pages/home"))
const Session = lazy(() => import("@/pages/session"))
@@ -31,7 +33,7 @@ const Loading = () => <div class="size-full flex items-center justify-center tex
declare global {
interface Window {
- __OPENCODE__?: { updaterEnabled?: boolean; port?: number }
+ __OPENCODE__?: { updaterEnabled?: boolean; port?: number; serverReady?: boolean }
}
}
@@ -47,16 +49,7 @@ const defaultServerUrl = iife(() => {
return window.location.origin
})
-function ServerKey(props: ParentProps) {
- const server = useServer()
- return (
- <Show when={server.url} keyed>
- {props.children}
- </Show>
- )
-}
-
-export function App() {
+export function AppBaseProviders(props: ParentProps) {
return (
<MetaProvider>
<Font />
@@ -65,57 +58,7 @@ export function App() {
<DialogProvider>
<MarkedProvider>
<DiffComponentProvider component={Diff}>
- <CodeComponentProvider component={Code}>
- <ServerProvider defaultUrl={defaultServerUrl}>
- <ServerKey>
- <GlobalSDKProvider>
- <GlobalSyncProvider>
- <Router
- root={(props) => (
- <PermissionProvider>
- <LayoutProvider>
- <NotificationProvider>
- <CommandProvider>
- <Layout>{props.children}</Layout>
- </CommandProvider>
- </NotificationProvider>
- </LayoutProvider>
- </PermissionProvider>
- )}
- >
- <Route
- path="/"
- component={() => (
- <Suspense fallback={<Loading />}>
- <Home />
- </Suspense>
- )}
- />
- <Route path="/:dir" component={DirectoryLayout}>
- <Route path="/" component={() => <Navigate href="session" />} />
- <Route
- path="/session/:id?"
- component={(p) => (
- <Show when={p.params.id ?? "new"} keyed>
- <TerminalProvider>
- <FileProvider>
- <PromptProvider>
- <Suspense fallback={<Loading />}>
- <Session />
- </Suspense>
- </PromptProvider>
- </FileProvider>
- </TerminalProvider>
- </Show>
- )}
- />
- </Route>
- </Router>
- </GlobalSyncProvider>
- </GlobalSDKProvider>
- </ServerKey>
- </ServerProvider>
- </CodeComponentProvider>
+ <CodeComponentProvider component={Code}>{props.children}</CodeComponentProvider>
</DiffComponentProvider>
</MarkedProvider>
</DialogProvider>
@@ -124,3 +67,66 @@ export function App() {
</MetaProvider>
)
}
+
+function ServerKey(props: ParentProps) {
+ const server = useServer()
+ return (
+ <Show when={server.url} keyed>
+ {props.children}
+ </Show>
+ )
+}
+
+export function AppInterface() {
+ return (
+ <ServerProvider defaultUrl={defaultServerUrl}>
+ <ServerKey>
+ <GlobalSDKProvider>
+ <GlobalSyncProvider>
+ <Router
+ root={(props) => (
+ <PermissionProvider>
+ <LayoutProvider>
+ <NotificationProvider>
+ <CommandProvider>
+ <Layout>{props.children}</Layout>
+ </CommandProvider>
+ </NotificationProvider>
+ </LayoutProvider>
+ </PermissionProvider>
+ )}
+ >
+ <Route
+ path="/"
+ component={() => (
+ <Suspense fallback={<Loading />}>
+ <Home />
+ </Suspense>
+ )}
+ />
+ <Route path="/:dir" component={DirectoryLayout}>
+ <Route path="/" component={() => <Navigate href="session" />} />
+ <Route
+ path="/session/:id?"
+ component={(p) => (
+ <Show when={p.params.id ?? "new"} keyed>
+ <TerminalProvider>
+ <FileProvider>
+ <PromptProvider>
+ <Suspense fallback={<Loading />}>
+ <Session />
+ </Suspense>
+ </PromptProvider>
+ </FileProvider>
+ </TerminalProvider>
+ </Show>
+ )}
+ />
+ </Route>
+ </Router>
+ </GlobalSyncProvider>
+ </GlobalSDKProvider>
+ </ServerKey>
+ </ServerProvider>
+ )
+}
diff --git a/packages/app/src/entry.tsx b/packages/app/src/entry.tsx
index a915aa25b..28741098c 100644
--- a/packages/app/src/entry.tsx
+++ b/packages/app/src/entry.tsx
@@ -1,6 +1,6 @@
// @refresh reload
import { render } from "solid-js/web"
-import { App } from "@/app"
+import { AppBaseProviders, AppInterface } from "@/app"
import { Platform, PlatformProvider } from "@/context/platform"
import pkg from "../package.json"
@@ -55,7 +55,9 @@ const platform: Platform = {
render(
() => (
<PlatformProvider value={platform}>
- <App />
+ <AppBaseProviders>
+ <AppInterface />
+ </AppBaseProviders>
</PlatformProvider>
),
root!,
diff --git a/packages/app/src/index.ts b/packages/app/src/index.ts
index cf5be9f51..df3181133 100644
--- a/packages/app/src/index.ts
+++ b/packages/app/src/index.ts
@@ -1,2 +1,2 @@
export { PlatformProvider, type Platform } from "./context/platform"
-export { App } from "./app"
+export { AppBaseProviders, AppInterface } from "./app"