From 482ef946fe38978ed3e8a382062f44f73875c2e8 Mon Sep 17 00:00:00 2001 From: LukeParkerDev <10430890+Hona@users.noreply.github.com> Date: Thu, 16 Apr 2026 16:32:16 +1000 Subject: [PATCH] fix: remove route dependency from server dialog --- packages/app/src/components/dialog-select-server.tsx | 7 +++---- packages/app/src/components/status-popover-body.tsx | 5 ++++- packages/app/src/pages/home.tsx | 2 +- packages/app/src/pages/layout.tsx | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/app/src/components/dialog-select-server.tsx b/packages/app/src/components/dialog-select-server.tsx index 45e67d88dc..c229c37189 100644 --- a/packages/app/src/components/dialog-select-server.tsx +++ b/packages/app/src/components/dialog-select-server.tsx @@ -8,7 +8,6 @@ import { List } from "@opencode-ai/ui/list" import { TextField } from "@opencode-ai/ui/text-field" import { useMutation } from "@tanstack/solid-query" import { showToast } from "@opencode-ai/ui/toast" -import { useNavigate } from "@solidjs/router" import { createEffect, createMemo, createResource, onCleanup, Show } from "solid-js" import { createStore, reconcile } from "solid-js/store" import { DialogLocalServer } from "@/components/dialog-local-server" @@ -23,6 +22,7 @@ const DEFAULT_USERNAME = "opencode" interface DialogSelectServerProps { initialView?: "list" | "local" initialTargetMode?: "windows" | "wsl" + onNavigateHome?: () => void } interface ServerFormProps { @@ -178,7 +178,6 @@ function ServerForm(props: ServerFormProps) { } export function DialogSelectServer(props: DialogSelectServerProps = {}) { - const navigate = useNavigate() const dialog = useDialog() const server = useServer() const platform = usePlatform() @@ -364,10 +363,10 @@ export function DialogSelectServer(props: DialogSelectServerProps = {}) { dialog.close() if (persist && conn.type === "http") { server.add(conn) - navigate("/") + props.onNavigateHome?.() return } - navigate("/") + props.onNavigateHome?.() queueMicrotask(() => server.setActive(ServerConnection.key(conn))) } diff --git a/packages/app/src/components/status-popover-body.tsx b/packages/app/src/components/status-popover-body.tsx index 0f6a1c1355..e94c9f112e 100644 --- a/packages/app/src/components/status-popover-body.tsx +++ b/packages/app/src/components/status-popover-body.tsx @@ -329,7 +329,10 @@ export function StatusPopoverBody(props: { shown: Accessor }) { const run = ++dialogRun void import("./dialog-select-server").then((x) => { if (dialogDead || dialogRun !== run) return - dialog.show(() => , defaultServer.refresh) + dialog.show( + () => navigate("/")} />, + defaultServer.refresh, + ) }) }} > diff --git a/packages/app/src/pages/home.tsx b/packages/app/src/pages/home.tsx index 46cacdf627..b779ebd4f5 100644 --- a/packages/app/src/pages/home.tsx +++ b/packages/app/src/pages/home.tsx @@ -75,7 +75,7 @@ export default function Home() { size="large" variant="ghost" class="mt-4 mx-auto text-14-regular text-text-weak" - onClick={() => dialog.show(() => )} + onClick={() => dialog.show(() => navigate("/")} />)} >
{ if (dialogDead || dialogRun !== run) return - dialog.show(() => ) + dialog.show(() => navigate("/")} />) }) }