diff --git a/packages/tm-core/src/auth/config.ts b/packages/tm-core/src/auth/config.ts index c5c0f8c7..0a780c2e 100644 --- a/packages/tm-core/src/auth/config.ts +++ b/packages/tm-core/src/auth/config.ts @@ -7,11 +7,13 @@ import path from 'path'; import { AuthConfig } from './types.js'; // Single base domain for all URLs -// Build-time: process.env.TM_PUBLIC_BASE_DOMAIN gets replaced by tsup's env option +// Runtime vars (TM_*) take precedence over build-time vars (TM_PUBLIC_*) +// Build-time: process.env.TM_PUBLIC_BASE_DOMAIN gets replaced by tsdown's env option +// Runtime: process.env.TM_BASE_DOMAIN can override for staging/development // Default: https://tryhamster.com for production const BASE_DOMAIN = - process.env.TM_PUBLIC_BASE_DOMAIN || // This gets replaced at build time by tsup - 'https://tryhamster.com'; + process.env.TM_BASE_DOMAIN || // Runtime override (for staging/tux) + process.env.TM_PUBLIC_BASE_DOMAIN; // Build-time (baked into compiled code) /** * Default authentication configuration @@ -19,7 +21,7 @@ const BASE_DOMAIN = */ export const DEFAULT_AUTH_CONFIG: AuthConfig = { // Base domain for all services - baseUrl: BASE_DOMAIN, + baseUrl: BASE_DOMAIN!, // Configuration directory and file paths configDir: path.join(os.homedir(), '.taskmaster'), diff --git a/packages/tm-core/src/clients/supabase-client.ts b/packages/tm-core/src/clients/supabase-client.ts index fbf9d4c0..a2d1dcab 100644 --- a/packages/tm-core/src/clients/supabase-client.ts +++ b/packages/tm-core/src/clients/supabase-client.ts @@ -29,13 +29,17 @@ export class SupabaseAuthClient { */ getClient(): SupabaseJSClient { if (!this.client) { - // Get Supabase configuration from environment - using TM_PUBLIC prefix - const supabaseUrl = process.env.TM_PUBLIC_SUPABASE_URL; - const supabaseAnonKey = process.env.TM_PUBLIC_SUPABASE_ANON_KEY; + // Get Supabase configuration from environment + // Runtime vars (TM_*) take precedence over build-time vars (TM_PUBLIC_*) + const supabaseUrl = + process.env.TM_SUPABASE_URL || process.env.TM_PUBLIC_SUPABASE_URL; + const supabaseAnonKey = + process.env.TM_SUPABASE_ANON_KEY || + process.env.TM_PUBLIC_SUPABASE_ANON_KEY; if (!supabaseUrl || !supabaseAnonKey) { throw new AuthenticationError( - 'Supabase configuration missing. Please set TM_PUBLIC_SUPABASE_URL and TM_PUBLIC_SUPABASE_ANON_KEY environment variables.', + 'Supabase configuration missing. Please set TM_SUPABASE_URL and TM_SUPABASE_ANON_KEY (runtime) or TM_PUBLIC_SUPABASE_URL and TM_PUBLIC_SUPABASE_ANON_KEY (build-time) environment variables.', 'CONFIG_MISSING' ); }