diff --git a/packages/desktop/src/index.tsx b/packages/desktop/src/index.tsx index 0d631a5a..9fe5da2f 100644 --- a/packages/desktop/src/index.tsx +++ b/packages/desktop/src/index.tsx @@ -12,7 +12,9 @@ import Home from "@/pages" const host = import.meta.env.VITE_OPENCODE_SERVER_HOST ?? "127.0.0.1" const port = import.meta.env.VITE_OPENCODE_SERVER_PORT ?? "4096" -const url = new URLSearchParams(document.location.search).get("url") || `http://${host}:${port}` +const url = + new URLSearchParams(document.location.search).get("url") || + (location.hostname.includes("opencode.ai") ? `http://${host}:${port}` : "/") const root = document.getElementById("root") if (import.meta.env.DEV && !(root instanceof HTMLElement)) { diff --git a/packages/opencode/src/cli/cmd/tui/app.tsx b/packages/opencode/src/cli/cmd/tui/app.tsx index 7938ec86..e57ef8cd 100644 --- a/packages/opencode/src/cli/cmd/tui/app.tsx +++ b/packages/opencode/src/cli/cmd/tui/app.tsx @@ -358,6 +358,7 @@ function App() { event.on(SessionApi.Event.Deleted.type, (evt) => { if (route.data.type === "session" && route.data.sessionID === evt.properties.info.id) { + dialog.clear() route.navigate({ type: "home" }) toast.show({ variant: "info", diff --git a/packages/opencode/src/cli/cmd/tui/component/dialog-session-list.tsx b/packages/opencode/src/cli/cmd/tui/component/dialog-session-list.tsx index 31b1c2b5..4a720aa1 100644 --- a/packages/opencode/src/cli/cmd/tui/component/dialog-session-list.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/dialog-session-list.tsx @@ -72,7 +72,7 @@ export function DialogSessionList() { }, }) setToDelete(undefined) - dialog.clear() + // dialog.clear() return } setToDelete(option.value) diff --git a/packages/opencode/src/cli/cmd/web.ts b/packages/opencode/src/cli/cmd/web.ts index 4823414f..8fc8a991 100644 --- a/packages/opencode/src/cli/cmd/web.ts +++ b/packages/opencode/src/cli/cmd/web.ts @@ -26,12 +26,15 @@ export const WebCommand = cmd({ port, hostname, }) - const url = `https://desktop.dev.opencode.ai?url=${server.url}` UI.empty() UI.println(UI.logo(" ")) UI.empty() - UI.println(UI.Style.TEXT_INFO_BOLD + " Web interface: ", UI.Style.TEXT_NORMAL, url) - open(url).catch(() => {}) + UI.println( + UI.Style.TEXT_INFO_BOLD + " Web interface: ", + UI.Style.TEXT_NORMAL, + server.url.toString(), + ) + open(server.url.toString()).catch(() => {}) await new Promise(() => {}) await server.stop() }, diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts index 919d6828..68c61453 100644 --- a/packages/opencode/src/server/server.ts +++ b/packages/opencode/src/server/server.ts @@ -10,6 +10,7 @@ import { import { Hono } from "hono" import { cors } from "hono/cors" import { stream, streamSSE } from "hono/streaming" +import { proxy } from "hono/proxy" import { Session } from "../session" import z from "zod" import { Provider } from "../provider/provider" @@ -1696,7 +1697,15 @@ export namespace Server { }) }) }, - ), + ) + .all("/*", async (c) => { + return proxy(`https://desktop.dev.opencode.ai${c.req.path}`, { + ...c.req, + headers: { + host: "desktop.dev.opencode.ai", + }, + }) + }), ) export async function openapi() {