diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f9a1d8e5181..71527f9ccf3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -625,6 +625,9 @@ jobs: router_url="${T3CODE_WEB_ROUTER_URL:-https://app.t3.codes}" latest_domain="${T3CODE_WEB_LATEST_DOMAIN:-latest.app.t3.codes}" nightly_domain="${T3CODE_WEB_NIGHTLY_DOMAIN:-nightly.app.t3.codes}" + router_domain="${router_url#http://}" + router_domain="${router_domain#https://}" + router_domain="${router_domain%%/*}" if [[ "${{ needs.preflight.outputs.release_channel }}" == "stable" ]]; then channel_domain="$latest_domain" @@ -657,6 +660,13 @@ jobs: --token "$VERCEL_TOKEN" \ "${vercel_scope_args[@]}" + if [[ "$channel_name" == "latest" && -n "$router_domain" && "$router_domain" != "$channel_domain" ]]; then + echo "Aliasing $deployment_url to router domain $router_domain." + bunx vercel@53.1.1 alias set "$deployment_url" "$router_domain" \ + --token "$VERCEL_TOKEN" \ + "${vercel_scope_args[@]}" + fi + finalize: name: Finalize release if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' && needs.release.result == 'success' && needs.preflight.outputs.release_channel == 'stable' }} diff --git a/apps/web/src/branding.test.ts b/apps/web/src/branding.test.ts index 764b63cdb4b..096fc16ecc0 100644 --- a/apps/web/src/branding.test.ts +++ b/apps/web/src/branding.test.ts @@ -42,6 +42,8 @@ describe("branding", () => { expect(branding.HOSTED_APP_CHANNEL).toBe("nightly"); expect(branding.HOSTED_APP_CHANNEL_LABEL).toBe("Nightly"); + expect(branding.APP_STAGE_LABEL).toBe("Nightly"); + expect(branding.APP_DISPLAY_NAME).toBe("T3 Code (Nightly)"); }); it("ignores unknown hosted app channels", async () => { diff --git a/apps/web/src/branding.ts b/apps/web/src/branding.ts index d8018f0d924..5c1309ca06b 100644 --- a/apps/web/src/branding.ts +++ b/apps/web/src/branding.ts @@ -11,13 +11,15 @@ function readInjectedDesktopAppBranding(): DesktopAppBranding | null { const injectedDesktopAppBranding = readInjectedDesktopAppBranding(); const hostedAppChannel = import.meta.env.VITE_HOSTED_APP_CHANNEL?.trim().toLowerCase(); +export const HOSTED_APP_CHANNEL = + hostedAppChannel === "latest" || hostedAppChannel === "nightly" ? hostedAppChannel : null; +export const HOSTED_APP_CHANNEL_LABEL = + HOSTED_APP_CHANNEL === "nightly" ? "Nightly" : HOSTED_APP_CHANNEL === "latest" ? "Latest" : null; export const APP_BASE_NAME = injectedDesktopAppBranding?.baseName ?? "T3 Code"; export const APP_STAGE_LABEL = - injectedDesktopAppBranding?.stageLabel ?? (import.meta.env.DEV ? "Dev" : "Alpha"); + injectedDesktopAppBranding?.stageLabel ?? + HOSTED_APP_CHANNEL_LABEL ?? + (import.meta.env.DEV ? "Dev" : "Alpha"); export const APP_DISPLAY_NAME = injectedDesktopAppBranding?.displayName ?? `${APP_BASE_NAME} (${APP_STAGE_LABEL})`; export const APP_VERSION = import.meta.env.APP_VERSION || "0.0.0"; -export const HOSTED_APP_CHANNEL = - hostedAppChannel === "latest" || hostedAppChannel === "nightly" ? hostedAppChannel : null; -export const HOSTED_APP_CHANNEL_LABEL = - HOSTED_APP_CHANNEL === "nightly" ? "Nightly" : HOSTED_APP_CHANNEL === "latest" ? "Latest" : null; diff --git a/apps/web/src/components/settings/SettingsPanels.tsx b/apps/web/src/components/settings/SettingsPanels.tsx index 505be5c73f8..e7f21da4809 100644 --- a/apps/web/src/components/settings/SettingsPanels.tsx +++ b/apps/web/src/components/settings/SettingsPanels.tsx @@ -892,7 +892,7 @@ export function GeneralSettingsPanel() { - {isElectron ? ( + {isElectron || HOSTED_APP_CHANNEL ? ( ) : (