From 90d795cc9cdcc082aa1efe8e0736ea0f5f1a7179 Mon Sep 17 00:00:00 2001 From: Developing-Gamer Date: Sun, 5 Jul 2026 22:57:33 -0700 Subject: [PATCH] fix --- .../remote-development-environment/manager.ts | 3 +++ packages/template/scripts/generate-env.ts | 6 ++++++ .../template/src/dev-tool/dev-tool-core.ts | 18 ++++++++++++++++-- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/apps/dashboard/src/lib/remote-development-environment/manager.ts b/apps/dashboard/src/lib/remote-development-environment/manager.ts index 6cbd16d15..f32af66eb 100644 --- a/apps/dashboard/src/lib/remote-development-environment/manager.ts +++ b/apps/dashboard/src/lib/remote-development-environment/manager.ts @@ -396,11 +396,14 @@ function createInternalApp(apiBaseUrl: string, anonymousRefreshToken?: string) { function envVarsForProject(project: RemoteDevelopmentEnvironmentProject): Record { const brands = ["HEXCLAVE", "STACK"]; const publicPrefixes = ["", "NEXT_PUBLIC_", "VITE_", "EXPO_PUBLIC_"]; + const dashboardUrl = getPublicEnvVar("NEXT_PUBLIC_STACK_DASHBOARD_URL"); const publicValues: Record = { PROJECT_ID: project.projectId, PUBLISHABLE_CLIENT_KEY: project.publishableClientKey, API_URL: project.apiBaseUrl, + IS_REMOTE_DEVELOPMENT_ENVIRONMENT: "true", + ...(dashboardUrl == null ? {} : { DASHBOARD_URL: dashboardUrl }), }; const secretValues: Record = { SECRET_SERVER_KEY: project.secretServerKey, diff --git a/packages/template/scripts/generate-env.ts b/packages/template/scripts/generate-env.ts index 1b3058495..09f963c39 100644 --- a/packages/template/scripts/generate-env.ts +++ b/packages/template/scripts/generate-env.ts @@ -28,6 +28,9 @@ const envVarsConfig: Record): string { return getBaseUrl(opts.baseUrl); } +function resolveConfiguredLocalDashboardBaseUrl(): string | undefined { + const dashboardUrl = envVars.HEXCLAVE_DASHBOARD_URL; + if (dashboardUrl == null || !isLocalhost(dashboardUrl)) return undefined; + try { + return new URL(dashboardUrl).origin; + } catch { + return undefined; + } +} + function shouldShowDashboardTab(app: StackClientApp): boolean { - return envVars.HEXCLAVE_IS_LOCAL_EMULATOR === "true" && isLocalhost(resolveApiBaseUrl(app)); + return ( + envVars.HEXCLAVE_IS_LOCAL_EMULATOR === "true" && isLocalhost(resolveApiBaseUrl(app)) + ) || ( + envVars.HEXCLAVE_IS_REMOTE_DEVELOPMENT_ENVIRONMENT === "true" && resolveConfiguredLocalDashboardBaseUrl() != null + ); } function getTabsForApp(app: StackClientApp): { id: TabId; label: string; icon: string }[] { @@ -222,7 +236,7 @@ function deriveDashboardBaseUrl(apiBaseUrl: string): string { } function resolveDashboardUrl(app: StackClientApp): string { - const base = deriveDashboardBaseUrl(resolveApiBaseUrl(app)); + const base = resolveConfiguredLocalDashboardBaseUrl() ?? deriveDashboardBaseUrl(resolveApiBaseUrl(app)); return `${base}/projects/${encodeURIComponent(app.projectId)}`; }