summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/components
diff options
context:
space:
mode:
authorAndrew Thal <[email protected]>2026-01-10 08:56:48 -0600
committerGitHub <[email protected]>2026-01-10 08:56:48 -0600
commit02b7eb59f8ce9d80a9a80210c0a8ca9de716962e (patch)
treeca46a3c7e598e64c4885cb0ba802e52450572c92 /packages/app/src/components
parenta8f23fb54812c4cbd60a8b1057d234200a7f6e02 (diff)
downloadopencode-02b7eb59f8ce9d80a9a80210c0a8ca9de716962e.tar.gz
opencode-02b7eb59f8ce9d80a9a80210c0a8ca9de716962e.zip
feat: support configuring default server URL for desktop (#7363)
Diffstat (limited to 'packages/app/src/components')
-rw-r--r--packages/app/src/components/dialog-select-server.tsx51
1 files changed, 50 insertions, 1 deletions
diff --git a/packages/app/src/components/dialog-select-server.tsx b/packages/app/src/components/dialog-select-server.tsx
index 6d224c6c3..7e2bcc181 100644
--- a/packages/app/src/components/dialog-select-server.tsx
+++ b/packages/app/src/components/dialog-select-server.tsx
@@ -1,4 +1,4 @@
-import { createEffect, createMemo, onCleanup } from "solid-js"
+import { createResource, createEffect, createMemo, onCleanup, Show } from "solid-js"
import { createStore, reconcile } from "solid-js/store"
import { useDialog } from "@opencode-ai/ui/context/dialog"
import { Dialog } from "@opencode-ai/ui/dialog"
@@ -35,6 +35,8 @@ export function DialogSelectServer() {
error: "",
status: {} as Record<string, ServerStatus | undefined>,
})
+ const [defaultUrl, defaultUrlActions] = createResource(() => platform.getDefaultServerUrl?.())
+ const isDesktop = platform.platform === "desktop"
const items = createMemo(() => {
const current = server.url
@@ -173,6 +175,53 @@ export function DialogSelectServer() {
</div>
</form>
</div>
+
+ <Show when={isDesktop}>
+ <div class="mt-6 px-3 flex flex-col gap-1.5">
+ <div class="px-3">
+ <h3 class="text-14-regular text-text-weak">Default server</h3>
+ <p class="text-12-regular text-text-weak mt-1">
+ Connect to this server on app launch instead of starting a local server. Requires restart.
+ </p>
+ </div>
+ <div class="flex items-center gap-2 px-3 py-2">
+ <Show
+ when={defaultUrl()}
+ fallback={
+ <Show
+ when={server.url}
+ fallback={<span class="text-14-regular text-text-weak">No server selected</span>}
+ >
+ <Button
+ variant="secondary"
+ size="small"
+ onClick={async () => {
+ await platform.setDefaultServerUrl?.(server.url)
+ defaultUrlActions.refetch(server.url)
+ }}
+ >
+ Set current server as default
+ </Button>
+ </Show>
+ }
+ >
+ <div class="flex items-center gap-2 flex-1 min-w-0">
+ <span class="truncate text-14-regular">{serverDisplayName(defaultUrl()!)}</span>
+ </div>
+ <Button
+ variant="ghost"
+ size="small"
+ onClick={async () => {
+ await platform.setDefaultServerUrl?.(null)
+ defaultUrlActions.refetch()
+ }}
+ >
+ Clear
+ </Button>
+ </Show>
+ </div>
+ </div>
+ </Show>
</div>
</Dialog>
)