diff --git a/apps/backend/src/lib/internal-feedback-emails.tsx b/apps/backend/src/lib/internal-feedback-emails.tsx index 43765e62a..203be85c5 100644 --- a/apps/backend/src/lib/internal-feedback-emails.tsx +++ b/apps/backend/src/lib/internal-feedback-emails.tsx @@ -153,6 +153,17 @@ import.meta.vitest?.test("getInternalFeedbackRecipients()", ({ expect }) => { // eslint-disable-next-line no-restricted-syntax process.env.HEXCLAVE_INTERNAL_FEEDBACK_RECIPIENTS = ", "; expect(() => getInternalFeedbackRecipients()).toThrow("empty recipient"); + + // legacy STACK_ name still resolves when the canonical name is unset or empty + // eslint-disable-next-line no-restricted-syntax + delete process.env.HEXCLAVE_INTERNAL_FEEDBACK_RECIPIENTS; + // eslint-disable-next-line no-restricted-syntax + process.env.STACK_INTERNAL_FEEDBACK_RECIPIENTS = "legacy@example.com"; + expect(getInternalFeedbackRecipients()).toEqual(["legacy@example.com"]); + + // eslint-disable-next-line no-restricted-syntax + process.env.HEXCLAVE_INTERNAL_FEEDBACK_RECIPIENTS = ""; + expect(getInternalFeedbackRecipients()).toEqual(["legacy@example.com"]); } finally { if (previousValue === undefined) { // eslint-disable-next-line no-restricted-syntax diff --git a/apps/internal-tool/scripts/spacetime-publish.mjs b/apps/internal-tool/scripts/spacetime-publish.mjs index ef2af02ea..78d109141 100644 --- a/apps/internal-tool/scripts/spacetime-publish.mjs +++ b/apps/internal-tool/scripts/spacetime-publish.mjs @@ -37,7 +37,7 @@ if (!args) { } if (target === "prod" && !(process.env.HEXCLAVE_MCP_LOG_TOKEN || process.env.STACK_MCP_LOG_TOKEN)) { - console.error("Error: STACK_MCP_LOG_TOKEN must be set for prod publish"); + console.error("Error: HEXCLAVE_MCP_LOG_TOKEN (or legacy STACK_MCP_LOG_TOKEN) must be set for prod publish"); process.exit(1); } diff --git a/examples/demo/src/app/turnstile-signup/page-client.tsx b/examples/demo/src/app/turnstile-signup/page-client.tsx index 2d619177a..077ac0f88 100644 --- a/examples/demo/src/app/turnstile-signup/page-client.tsx +++ b/examples/demo/src/app/turnstile-signup/page-client.tsx @@ -66,11 +66,13 @@ function getDebugInternals(app: ReturnType): { } function getDemoApiUrl(): string { - const baseUrl = (process.env.NEXT_PUBLIC_HEXCLAVE_API_URL || process.env.NEXT_PUBLIC_STACK_API_URL) - ?? (process.env.NEXT_PUBLIC_HEXCLAVE_URL || process.env.NEXT_PUBLIC_STACK_URL); + const baseUrl = process.env.NEXT_PUBLIC_HEXCLAVE_API_URL + || process.env.NEXT_PUBLIC_STACK_API_URL + || process.env.NEXT_PUBLIC_HEXCLAVE_URL + || process.env.NEXT_PUBLIC_STACK_URL; if (typeof baseUrl !== "string" || baseUrl.length === 0) { - throw new Error("Expected NEXT_PUBLIC_STACK_API_URL to be configured for Turnstile OAuth debug flows"); + throw new Error("Expected NEXT_PUBLIC_HEXCLAVE_API_URL to be configured for Turnstile OAuth debug flows"); } return `${baseUrl.replace(/\/$/, "")}/api/v1`; @@ -301,9 +303,11 @@ export default function TurnstileSignupPageClient() { const signInWithTokens = internals.signInWithTokens; const apiUrl = getDemoApiUrl(); const oauthClientSecret = app[hexclaveAppInternalsSymbol].toClientJson().publishableClientKey - ?? (process.env.NEXT_PUBLIC_HEXCLAVE_PUBLISHABLE_CLIENT_KEY || process.env.NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY) - ?? (process.env.HEXCLAVE_PUBLISHABLE_CLIENT_KEY || process.env.STACK_PUBLISHABLE_CLIENT_KEY) - ?? publishableClientKeyNotNecessarySentinel; + || process.env.NEXT_PUBLIC_HEXCLAVE_PUBLISHABLE_CLIENT_KEY + || process.env.NEXT_PUBLIC_STACK_PUBLISHABLE_CLIENT_KEY + || process.env.HEXCLAVE_PUBLISHABLE_CLIENT_KEY + || process.env.STACK_PUBLISHABLE_CLIENT_KEY + || publishableClientKeyNotNecessarySentinel; useEffect(() => { const redirectSource = window.sessionStorage.getItem(authReturnStorageKey);