diff --git a/packages/app/src/app.tsx b/packages/app/src/app.tsx index c0715cc940..a21dd9ecd3 100644 --- a/packages/app/src/app.tsx +++ b/packages/app/src/app.tsx @@ -295,6 +295,7 @@ export function AppInterface(props: { {routerProps.children}} + base={import.meta.env.BASE_URL.replace(/\/$/, "") || undefined} > diff --git a/packages/app/src/entry.tsx b/packages/app/src/entry.tsx index b5cbed6e75..d08ccaf179 100644 --- a/packages/app/src/entry.tsx +++ b/packages/app/src/entry.tsx @@ -98,10 +98,13 @@ if (!(root instanceof HTMLElement) && import.meta.env.DEV) { } const getCurrentUrl = () => { + let serverBaseUrl = import.meta.env.VITE_OPENCODE_SERVER_BASE_URL ?? "" + // Normalizing slashes. Add starting slash if needed, remove trailing slash. Default value will be empty string. + serverBaseUrl = ("/" + serverBaseUrl.replace(/^\//, "")).replace(/\/$/, "") if (location.hostname.includes("opencode.ai")) return "http://localhost:4096" if (import.meta.env.DEV) - return `http://${import.meta.env.VITE_OPENCODE_SERVER_HOST ?? "localhost"}:${import.meta.env.VITE_OPENCODE_SERVER_PORT ?? "4096"}` - return location.origin + return `http://${import.meta.env.VITE_OPENCODE_SERVER_HOST ?? "localhost"}:${import.meta.env.VITE_OPENCODE_SERVER_PORT ?? "4096"}{serverBaseUrl}` + return location.origin + serverBaseUrl } const getDefaultUrl = () => { diff --git a/packages/app/src/env.d.ts b/packages/app/src/env.d.ts index 89721f34f2..c8d0a7d241 100644 --- a/packages/app/src/env.d.ts +++ b/packages/app/src/env.d.ts @@ -1,6 +1,7 @@ import "solid-js" interface ImportMetaEnv { + readonly BASE_URL: string readonly VITE_OPENCODE_SERVER_HOST: string readonly VITE_OPENCODE_SERVER_PORT: string } diff --git a/packages/app/vite.config.ts b/packages/app/vite.config.ts index 6a29ae6345..9c0685aa03 100644 --- a/packages/app/vite.config.ts +++ b/packages/app/vite.config.ts @@ -2,6 +2,7 @@ import { defineConfig } from "vite" import desktopPlugin from "./vite" export default defineConfig({ + base: process.env.VITE_BASE_URL || "/", plugins: [desktopPlugin] as any, server: { host: "0.0.0.0",