|
@@ -10,14 +10,15 @@ import {
|
|
|
useCommand,
|
|
useCommand,
|
|
|
} from "@opencode-ai/app"
|
|
} from "@opencode-ai/app"
|
|
|
import type { AsyncStorage } from "@solid-primitives/storage"
|
|
import type { AsyncStorage } from "@solid-primitives/storage"
|
|
|
-import { createResource, onCleanup, onMount, Show } from "solid-js"
|
|
|
|
|
-import { render } from "solid-js/web"
|
|
|
|
|
import { MemoryRouter } from "@solidjs/router"
|
|
import { MemoryRouter } from "@solidjs/router"
|
|
|
|
|
+import { createEffect, createResource, onCleanup, onMount, Show } from "solid-js"
|
|
|
|
|
+import { render } from "solid-js/web"
|
|
|
import pkg from "../../package.json"
|
|
import pkg from "../../package.json"
|
|
|
import { initI18n, t } from "./i18n"
|
|
import { initI18n, t } from "./i18n"
|
|
|
import { UPDATER_ENABLED } from "./updater"
|
|
import { UPDATER_ENABLED } from "./updater"
|
|
|
import { webviewZoom } from "./webview-zoom"
|
|
import { webviewZoom } from "./webview-zoom"
|
|
|
import "./styles.css"
|
|
import "./styles.css"
|
|
|
|
|
+import { useTheme } from "@opencode-ai/ui/theme"
|
|
|
|
|
|
|
|
const root = document.getElementById("root")
|
|
const root = document.getElementById("root")
|
|
|
if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
|
|
if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
|
|
@@ -226,7 +227,9 @@ const createPlatform = (): Platform => {
|
|
|
const image = await window.api.readClipboardImage().catch(() => null)
|
|
const image = await window.api.readClipboardImage().catch(() => null)
|
|
|
if (!image) return null
|
|
if (!image) return null
|
|
|
const blob = new Blob([image.buffer], { type: "image/png" })
|
|
const blob = new Blob([image.buffer], { type: "image/png" })
|
|
|
- return new File([blob], `pasted-image-${Date.now()}.png`, { type: "image/png" })
|
|
|
|
|
|
|
+ return new File([blob], `pasted-image-${Date.now()}.png`, {
|
|
|
|
|
+ type: "image/png",
|
|
|
|
|
+ })
|
|
|
},
|
|
},
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -240,6 +243,8 @@ listenForDeepLinks()
|
|
|
render(() => {
|
|
render(() => {
|
|
|
const platform = createPlatform()
|
|
const platform = createPlatform()
|
|
|
|
|
|
|
|
|
|
+ const [windowCount] = createResource(() => window.api.getWindowCount())
|
|
|
|
|
+
|
|
|
// Fetch sidecar credentials (available immediately, before health check)
|
|
// Fetch sidecar credentials (available immediately, before health check)
|
|
|
const [sidecar] = createResource(() => window.api.awaitInitialization(() => undefined))
|
|
const [sidecar] = createResource(() => window.api.awaitInitialization(() => undefined))
|
|
|
|
|
|
|
@@ -276,6 +281,18 @@ render(() => {
|
|
|
function Inner() {
|
|
function Inner() {
|
|
|
const cmd = useCommand()
|
|
const cmd = useCommand()
|
|
|
menuTrigger = (id) => cmd.trigger(id)
|
|
menuTrigger = (id) => cmd.trigger(id)
|
|
|
|
|
+
|
|
|
|
|
+ const theme = useTheme()
|
|
|
|
|
+
|
|
|
|
|
+ createEffect(() => {
|
|
|
|
|
+ theme.themeId()
|
|
|
|
|
+ theme.mode()
|
|
|
|
|
+ const bg = getComputedStyle(document.documentElement).getPropertyValue("--background-base").trim()
|
|
|
|
|
+ if (bg) {
|
|
|
|
|
+ void window.api.setBackgroundColor(bg)
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
return null
|
|
return null
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -289,13 +306,14 @@ render(() => {
|
|
|
return (
|
|
return (
|
|
|
<PlatformProvider value={platform}>
|
|
<PlatformProvider value={platform}>
|
|
|
<AppBaseProviders>
|
|
<AppBaseProviders>
|
|
|
- <Show when={!defaultServer.loading && !sidecar.loading}>
|
|
|
|
|
|
|
+ <Show when={!defaultServer.loading && !sidecar.loading && !windowCount.loading}>
|
|
|
{(_) => {
|
|
{(_) => {
|
|
|
return (
|
|
return (
|
|
|
<AppInterface
|
|
<AppInterface
|
|
|
defaultServer={defaultServer.latest ?? ServerConnection.Key.make("sidecar")}
|
|
defaultServer={defaultServer.latest ?? ServerConnection.Key.make("sidecar")}
|
|
|
servers={servers()}
|
|
servers={servers()}
|
|
|
router={MemoryRouter}
|
|
router={MemoryRouter}
|
|
|
|
|
+ disableHealthCheck={(windowCount() ?? 0) > 1}
|
|
|
>
|
|
>
|
|
|
<Inner />
|
|
<Inner />
|
|
|
</AppInterface>
|
|
</AppInterface>
|