summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/app.tsx
diff options
context:
space:
mode:
authorBrendan Allan <[email protected]>2026-03-13 09:18:27 +0800
committerGitHub <[email protected]>2026-03-13 09:18:27 +0800
commit84df96eaefe7a920b48b205501fc849ba027e9ad (patch)
tree65ac52fde124e5cde48f56bba46c2d7fc1c2f070 /packages/app/src/app.tsx
parentd9dd33aeebad49120ea8204e34520db872c9f553 (diff)
downloadopencode-84df96eaefe7a920b48b205501fc849ba027e9ad.tar.gz
opencode-84df96eaefe7a920b48b205501fc849ba027e9ad.zip
desktop: multi-window support in electron (#17155)
Diffstat (limited to 'packages/app/src/app.tsx')
-rw-r--r--packages/app/src/app.tsx35
1 files changed, 19 insertions, 16 deletions
diff --git a/packages/app/src/app.tsx b/packages/app/src/app.tsx
index 1b7ffde46..c6fca36d5 100644
--- a/packages/app/src/app.tsx
+++ b/packages/app/src/app.tsx
@@ -159,7 +159,7 @@ const effectMinDuration =
<A, E, R>(e: Effect.Effect<A, E, R>) =>
Effect.all([e, Effect.sleep(duration)], { concurrency: "unbounded" }).pipe(Effect.map((v) => v[0]))
-function ConnectionGate(props: ParentProps) {
+function ConnectionGate(props: ParentProps<{ disableHealthCheck?: boolean }>) {
const server = useServer()
const checkServerHealth = useCheckServerHealth()
@@ -168,21 +168,23 @@ function ConnectionGate(props: ParentProps) {
// performs repeated health check with a grace period for
// non-http connections, otherwise fails instantly
const [startupHealthCheck, healthCheckActions] = createResource(() =>
- Effect.gen(function* () {
- if (!server.current) return true
- const { http, type } = server.current
+ props.disableHealthCheck
+ ? true
+ : Effect.gen(function* () {
+ if (!server.current) return true
+ const { http, type } = server.current
- while (true) {
- const res = yield* Effect.promise(() => checkServerHealth(http))
- if (res.healthy) return true
- if (checkMode() === "background" || type === "http") return false
- }
- }).pipe(
- effectMinDuration(checkMode() === "blocking" ? "1.2 seconds" : 0),
- Effect.timeoutOrElse({ duration: "10 seconds", onTimeout: () => Effect.succeed(false) }),
- Effect.ensuring(Effect.sync(() => setCheckMode("background"))),
- Effect.runPromise,
- ),
+ while (true) {
+ const res = yield* Effect.promise(() => checkServerHealth(http))
+ if (res.healthy) return true
+ if (checkMode() === "background" || type === "http") return false
+ }
+ }).pipe(
+ effectMinDuration(checkMode() === "blocking" ? "1.2 seconds" : 0),
+ Effect.timeoutOrElse({ duration: "10 seconds", onTimeout: () => Effect.succeed(false) }),
+ Effect.ensuring(Effect.sync(() => setCheckMode("background"))),
+ Effect.runPromise,
+ ),
)
return (
@@ -261,10 +263,11 @@ export function AppInterface(props: {
defaultServer: ServerConnection.Key
servers?: Array<ServerConnection.Any>
router?: Component<BaseRouterProps>
+ disableHealthCheck?: boolean
}) {
return (
<ServerProvider defaultServer={props.defaultServer} servers={props.servers}>
- <ConnectionGate>
+ <ConnectionGate disableHealthCheck={props.disableHealthCheck}>
<GlobalSDKProvider>
<GlobalSyncProvider>
<Dynamic