@@ -25,7 +25,6 @@ import {
2525 onCleanup ,
2626 type ParentProps ,
2727 Show ,
28- Suspense ,
2928} from "solid-js"
3029import { Dynamic } from "solid-js/web"
3130import { CommandProvider } from "@/context/command"
@@ -44,6 +43,7 @@ import { PromptProvider } from "@/context/prompt"
4443import { ServerConnection , ServerProvider , serverName , useServer } from "@/context/server"
4544import { SettingsProvider , useSettings } from "@/context/settings"
4645import { TerminalProvider } from "@/context/terminal"
46+ import { TabsProvider } from "@/context/tabs"
4747import DirectoryLayout from "@/pages/directory-layout"
4848import Layout from "@/pages/layout"
4949import { ErrorPage } from "./pages/error"
@@ -211,26 +211,21 @@ function ConnectionGate(props: ParentProps<{ disableHealthCheck?: boolean }>) {
211211 Effect . runPromise ,
212212 ) ,
213213 )
214+ const checking = createMemo (
215+ ( ) => checkMode ( ) === "blocking" && [ "unresolved" , "pending" ] . includes ( startupHealthCheck . state ) ,
216+ )
214217
215218 return (
216- < Suspense
219+ < Show
220+ when = { ! checking ( ) }
217221 fallback = {
218222 < div class = "h-dvh w-screen flex flex-col items-center justify-center bg-background-base" >
219223 < Splash class = "w-16 h-20 opacity-50 animate-pulse" />
220224 </ div >
221225 }
222226 >
223- { /*<Show
224- when={checkMode() === "blocking" ? !startupHealthCheck.loading : startupHealthCheck.state !== "pending"}
225- fallback={
226- <div class="h-dvh w-screen flex flex-col items-center justify-center bg-background-base">
227- <Splash class="w-16 h-20 opacity-50 animate-pulse" />
228- </div>
229- }
230- >*/ }
231- { checkMode ( ) === "blocking" ? startupHealthCheck ( ) : startupHealthCheck . latest }
232227 < Show
233- when = { startupHealthCheck ( ) }
228+ when = { startupHealthCheck . latest }
234229 fallback = {
235230 < ConnectionError
236231 onRetry = { ( ) => {
@@ -246,8 +241,7 @@ function ConnectionGate(props: ParentProps<{ disableHealthCheck?: boolean }>) {
246241 >
247242 { props . children }
248243 </ Show >
249- { /*</Show>*/ }
250- </ Suspense >
244+ </ Show >
251245 )
252246}
253247
@@ -310,32 +304,41 @@ function ServerKey(props: ParentProps) {
310304export function AppInterface ( props : {
311305 children ?: JSX . Element
312306 defaultServer : ServerConnection . Key
307+ canonicalLocalServer ?: ServerConnection . Key
313308 servers ?: Array < ServerConnection . Any >
314309 router ?: Component < BaseRouterProps >
315310 disableHealthCheck ?: boolean
316311} ) {
317312 return (
318- < ServerProvider defaultServer = { props . defaultServer } servers = { props . servers } >
319- < GlobalProvider defaultServer = { props . defaultServer } servers = { props . servers } >
313+ < ServerProvider
314+ defaultServer = { props . defaultServer }
315+ canonicalLocalServer = { props . canonicalLocalServer }
316+ servers = { props . servers }
317+ >
318+ < GlobalProvider >
320319 < ConnectionGate disableHealthCheck = { props . disableHealthCheck } >
321- < ServerKey >
322- < QueryProvider >
323- < ServerSDKProvider >
324- < ServerSyncProvider >
325- < Dynamic
326- component = { props . router ?? Router }
327- root = { ( routerProps ) => < RouterRoot appChildren = { props . children } > { routerProps . children } </ RouterRoot > }
328- >
329- < Route path = "/" component = { HomeRoute } />
330- < Route path = "/:dir" component = { DirectoryLayout } >
331- < Route path = "/" component = { ( ) => < Navigate href = "session" /> } />
332- < Route path = "/session/:id?" component = { SessionRoute } />
333- </ Route >
334- </ Dynamic >
335- </ ServerSyncProvider >
336- </ ServerSDKProvider >
337- </ QueryProvider >
338- </ ServerKey >
320+ < Dynamic
321+ component = { props . router ?? Router }
322+ root = { ( routerProps ) => (
323+ < TabsProvider >
324+ < ServerKey >
325+ < QueryProvider >
326+ < ServerSDKProvider >
327+ < ServerSyncProvider >
328+ < RouterRoot appChildren = { props . children } > { routerProps . children } </ RouterRoot >
329+ </ ServerSyncProvider >
330+ </ ServerSDKProvider >
331+ </ QueryProvider >
332+ </ ServerKey >
333+ </ TabsProvider >
334+ ) }
335+ >
336+ < Route path = "/" component = { HomeRoute } />
337+ < Route path = "/:dir" component = { DirectoryLayout } >
338+ < Route path = "/" component = { ( ) => < Navigate href = "session" /> } />
339+ < Route path = "/session/:id?" component = { SessionRoute } />
340+ </ Route >
341+ </ Dynamic >
339342 </ ConnectionGate >
340343 </ GlobalProvider >
341344 </ ServerProvider >
0 commit comments