summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOpeOginni <[email protected]>2026-02-09 08:18:06 +0100
committerGitHub <[email protected]>2026-02-09 07:18:06 +0000
commit687210a55d6158a1f749b9f08333bd479853958f (patch)
treed2088e60f6d7185a519054658b3a212a237c11c2
parentb12eab782fab6039337ec2345cc708ea4957ca5e (diff)
downloadopencode-687210a55d6158a1f749b9f08333bd479853958f.tar.gz
opencode-687210a55d6158a1f749b9f08333bd479853958f.zip
feat(desktop): add isSidecar prop to AppInterface and logic to persist sidecar server urls (#12366)
Co-authored-by: Brendan Allan <[email protected]>
-rw-r--r--packages/app/src/app.tsx5
-rw-r--r--packages/app/src/context/server.tsx22
-rw-r--r--packages/desktop/src/index.tsx3
3 files changed, 24 insertions, 6 deletions
diff --git a/packages/app/src/app.tsx b/packages/app/src/app.tsx
index 8a111472b..937aab011 100644
--- a/packages/app/src/app.tsx
+++ b/packages/app/src/app.tsx
@@ -84,7 +84,8 @@ function ServerKey(props: ParentProps) {
)
}
-export function AppInterface(props: { defaultUrl?: string; children?: JSX.Element }) {
+
+export function AppInterface(props: { defaultUrl?: string; children?: JSX.Element; isSidecar?: boolean }) {
const platform = usePlatform()
const stored = (() => {
@@ -106,7 +107,7 @@ export function AppInterface(props: { defaultUrl?: string; children?: JSX.Elemen
}
return (
- <ServerProvider defaultUrl={defaultServerUrl()}>
+ <ServerProvider defaultUrl={defaultServerUrl()} isSidecar={props.isSidecar}>
<ServerKey>
<GlobalSDKProvider>
<GlobalSyncProvider>
diff --git a/packages/app/src/context/server.tsx b/packages/app/src/context/server.tsx
index 72693e6ef..e01a93381 100644
--- a/packages/app/src/context/server.tsx
+++ b/packages/app/src/context/server.tsx
@@ -28,7 +28,7 @@ function projectsKey(url: string) {
export const { use: useServer, provider: ServerProvider } = createSimpleContext({
name: "Server",
- init: (props: { defaultUrl: string }) => {
+ init: (props: { defaultUrl: string, isSidecar?: boolean }) => {
const platform = usePlatform()
const [store, setStore, _, ready] = persisted(
@@ -59,7 +59,13 @@ export const { use: useServer, provider: ServerProvider } = createSimpleContext(
const fallback = normalizeServerUrl(props.defaultUrl)
if (fallback && url === fallback) {
- setState("active", url)
+ batch(() => {
+ if (!store.list.includes(url)) {
+ // Add the fallback url to the list if it's not already in the list
+ setStore("list", store.list.length, url)
+ }
+ setState("active", url)
+ })
return
}
@@ -89,7 +95,17 @@ export const { use: useServer, provider: ServerProvider } = createSimpleContext(
if (state.active) return
const url = normalizeServerUrl(props.defaultUrl)
if (!url) return
- setState("active", url)
+ batch(() => {
+
+ // Add the new sidecar url
+ if(props.isSidecar && props.defaultUrl) {
+ add(props.defaultUrl)
+ }
+
+ setState("active", url)
+ })
+
+ console.log(store.list)
})
const isReady = createMemo(() => ready() && !!state.active)
diff --git a/packages/desktop/src/index.tsx b/packages/desktop/src/index.tsx
index dd78224e3..c0da8d254 100644
--- a/packages/desktop/src/index.tsx
+++ b/packages/desktop/src/index.tsx
@@ -404,6 +404,7 @@ render(() => {
window.__OPENCODE__ ??= {}
window.__OPENCODE__.serverPassword = data().password ?? undefined
+
function Inner() {
const cmd = useCommand()
@@ -413,7 +414,7 @@ render(() => {
}
return (
- <AppInterface defaultUrl={data().url}>
+ <AppInterface defaultUrl={data().url} isSidecar>
<Inner />
</AppInterface>
)