diff options
| author | OpeOginni <[email protected]> | 2026-02-09 08:18:06 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-02-09 07:18:06 +0000 |
| commit | 687210a55d6158a1f749b9f08333bd479853958f (patch) | |
| tree | d2088e60f6d7185a519054658b3a212a237c11c2 | |
| parent | b12eab782fab6039337ec2345cc708ea4957ca5e (diff) | |
| download | opencode-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.tsx | 5 | ||||
| -rw-r--r-- | packages/app/src/context/server.tsx | 22 | ||||
| -rw-r--r-- | packages/desktop/src/index.tsx | 3 |
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> ) |
