From 8383da8a50d9fd39c3a746b97470c55b76b57ff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alptekin=20G=C3=BClcan?= <5773704+alpgul@users.noreply.github.com> Date: Sat, 28 Feb 2026 18:46:50 +0000 Subject: [PATCH] fix: improve API base URL handling and filter for chat models in CopilotToolCard --- .../dashboard/cli-tools/CLIToolsPageClient.tsx | 12 ++---------- .../cli-tools/components/CopilotToolCard.tsx | 9 +++------ 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/src/app/(dashboard)/dashboard/cli-tools/CLIToolsPageClient.tsx b/src/app/(dashboard)/dashboard/cli-tools/CLIToolsPageClient.tsx index 15df54eb18..7f8f1c5544 100644 --- a/src/app/(dashboard)/dashboard/cli-tools/CLIToolsPageClient.tsx +++ b/src/app/(dashboard)/dashboard/cli-tools/CLIToolsPageClient.tsx @@ -33,7 +33,6 @@ export default function CLIToolsPageClient({ machineId }) { const [apiKeys, setApiKeys] = useState([]); const [toolStatuses, setToolStatuses] = useState({}); const [statusesLoaded, setStatusesLoaded] = useState(false); - const [apiBaseUrl, setApiBaseUrl] = useState(""); useEffect(() => { fetchConnections(); @@ -48,12 +47,6 @@ export default function CLIToolsPageClient({ machineId }) { if (res.ok) { const data = await res.json(); setCloudEnabled(data.cloudEnabled || false); - if (typeof window !== "undefined") { - const protocol = window.location.protocol; - const hostname = window.location.hostname; - const apiPort = data?.apiPort || 20128; - setApiBaseUrl(`${protocol}//${hostname}:${apiPort}`); - } } } catch (error) { console.log("Error loading cloud settings:", error); @@ -155,9 +148,8 @@ export default function CLIToolsPageClient({ machineId }) { if (cloudEnabled && CLOUD_URL) { return CLOUD_URL; } - if (apiBaseUrl) { - return apiBaseUrl; - } + // Use window.location.origin directly — works correctly in Docker/reverse-proxy + // Per @alpgul feedback: don't use baseUrl prop (has port duplication issues) if (typeof window !== "undefined") { return window.location.origin; } diff --git a/src/app/(dashboard)/dashboard/cli-tools/components/CopilotToolCard.tsx b/src/app/(dashboard)/dashboard/cli-tools/components/CopilotToolCard.tsx index 21d2a73d85..24eb9778ec 100644 --- a/src/app/(dashboard)/dashboard/cli-tools/components/CopilotToolCard.tsx +++ b/src/app/(dashboard)/dashboard/cli-tools/components/CopilotToolCard.tsx @@ -60,7 +60,7 @@ export default function CopilotToolCard({ .then((data) => { if (cancelled) return; const modelList = (data.data || []) - .filter((m: any) => m.id) // Only models with valid IDs + .filter((m: any) => m && !m.type && !m.parent && m.id) // Only chat models with valid IDs .map((m: any) => ({ value: m.id, label: m.id, @@ -112,11 +112,8 @@ export default function CopilotToolCard({ }; const getBaseUrlForConfig = () => { - // Use window.location.origin directly — works correctly in Docker/reverse-proxy - // Per @alpgul feedback: don't use baseUrl prop (has port duplication issues) - const origin = - typeof window !== "undefined" ? window.location.origin : "http://localhost:20128"; - return `${origin}/v1/chat/completions`; + const url = baseUrl; + return `${url}/v1/chat/completions`; }; // Generate the Copilot chatLanguageModels.json config