mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
1b0aa557ba
The staging D6 dashboard rendered no data because the client did a direct cross-origin fetch to the harness URL — CORS-blocked and the wrong path (`/probes` instead of `/api/probes`). Root cause: getRuntimeConfig() sourced the client RuntimeConfig.opsBaseUrl from the server proxy target OPS_BASE_URL (the harness URL), which the root layout serialized into window.__SHOWCASE_CONFIG__, so resolveBaseUrl() used it as the fetch base instead of falling through to the same-origin /api/ops proxy. Decouple the two: the client direct override is now an explicit, opt-in, client-intended env var (NEXT_PUBLIC_OPS_DIRECT_BASE_URL) that defaults to "" in every environment, so the client lands on /api/ops. The Route Handler's server-only OPS_BASE_URL read and its sentinel behavior are unchanged. - showcase/shell-dashboard/src/lib/runtime-config.ts: opsBaseUrl now read from NEXT_PUBLIC_OPS_DIRECT_BASE_URL (default ""), not OPS_BASE_URL; no sentinel. - showcase/shell-dashboard/src/lib/ops-api.ts: update resolveBaseUrl comments to describe the client override vs server proxy target distinction. - showcase/shell-dashboard/src/app/layout.tsx: note opsBaseUrl is the client override, never the harness URL. - tests: encode the contract (client falls through to /api/ops when no direct override; server proxy target does not leak into the client config), incl. an end-to-end regression in the env-switch spike test.