diff --git a/src/composables/auth/useFirebaseAuthActions.ts b/src/composables/auth/useFirebaseAuthActions.ts index 04cc2dd09..81dde3016 100644 --- a/src/composables/auth/useFirebaseAuthActions.ts +++ b/src/composables/auth/useFirebaseAuthActions.ts @@ -55,14 +55,17 @@ export const useFirebaseAuthActions = () => { life: 5000 }) - // Redirect to login page if we're on cloud domain + // CRITICAL: Use full page navigation for logout to prevent stale app state + // Issue: SPA routing during logout can leave extensions loaded with stale auth state + // This causes subscription dialogs to appear incorrectly during re-login onboarding + // Full page reload ensures complete app state reset and proper onboarding flow const hostname = window.location.hostname if (hostname.includes('cloud.comfy.org')) { if (route.query.inviteCode) { const inviteCode = route.query.inviteCode - await router.push({ name: 'cloud-login', query: { inviteCode } }) + window.location.href = `/cloud/login?inviteCode=${encodeURIComponent(inviteCode)}` } else { - await router.push({ name: 'cloud-login' }) + window.location.href = '/cloud/login' } } }, reportError) diff --git a/src/platform/cloud/subscription/composables/useSubscription.ts b/src/platform/cloud/subscription/composables/useSubscription.ts index 061e0bf45..c330723cb 100644 --- a/src/platform/cloud/subscription/composables/useSubscription.ts +++ b/src/platform/cloud/subscription/composables/useSubscription.ts @@ -1,4 +1,5 @@ import { computed, ref, watch } from 'vue' +import { useRoute } from 'vue-router' import { useCurrentUser } from '@/composables/auth/useCurrentUser' import { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions' @@ -108,6 +109,14 @@ export function useSubscription() { } const requireActiveSubscription = async (): Promise => { + // DEFENSIVE: Never show subscription dialogs during onboarding flows + // All cloud onboarding routes start with '/cloud/' (login, signup, survey, waitlist, etc.) + // This prevents subscription enforcement from interfering with user onboarding + const route = useRoute() + if (route.path.startsWith('/cloud/')) { + return + } + await fetchSubscriptionStatus() if (!isActiveSubscription.value) {