diff --git a/docker-compose.yml b/docker-compose.yml index 29b9f18..c41ab8b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,7 +20,7 @@ services: context: . dockerfile: Dockerfile args: - CACHEBUST: "31" + CACHEBUST: "32" VITE_USE_MOCK_DATA: "false" VITE_CONTENT_ORIGIN: ${FRONTEND_URL} VITE_INDEEHUB_API_URL: /api diff --git a/src/components/AuthModal.vue b/src/components/AuthModal.vue index ad66501..ea9b59d 100644 --- a/src/components/AuthModal.vue +++ b/src/components/AuthModal.vue @@ -24,23 +24,35 @@ {{ errorMessage }} - -
+ +
-
you@example.com
+ +
you@example.com
-
{{ mode === 'register' ? 'Create a password' : 'Enter your password' }}
+ +
{{ mode === 'register' ? 'Create a password' : 'Enter your password' }}
Forgot password?
- -
+
@@ -143,10 +155,10 @@ {{ isLoading ? 'Generating...' : 'Generate Sovereign Identity' }}
@@ -222,6 +234,7 @@ const amberPhase = ref<'idle' | 'waiting'>('idle') type SovereignPhase = 'normal' | 'nah' | 'own-privacy' | 'generated' const sovereignPhase = ref('normal') const sovereignGenerating = ref(false) +const sovereignDismissed = ref(false) // Store the generated keypair so it can be downloaded const generatedKeys = ref<{ nsec: string; npub: string; hexSecret: string; hexPub: string } | null>(null) @@ -230,6 +243,7 @@ const generatedKeys = ref<{ nsec: string; npub: string; hexSecret: string; hexPu watch(() => props.isOpen, (open) => { if (open) { sovereignPhase.value = 'normal' + sovereignDismissed.value = false generatedKeys.value = null errorMessage.value = null amberPhase.value = 'idle' @@ -241,6 +255,7 @@ function closeModal() { errorMessage.value = null amberPhase.value = 'idle' sovereignPhase.value = 'normal' + sovereignDismissed.value = false generatedKeys.value = null } @@ -251,14 +266,16 @@ function toggleMode() { /** * Intercept clicks on the legacy auth form. - * Triggers the "NAH!" → sovereign identity animation. + * Triggers the "STOP!" → sovereign identity animation. + * Skipped if the user already dismissed the sovereign flow. */ function triggerSovereignFlow(e: Event) { + if (sovereignDismissed.value) return e.preventDefault() e.stopPropagation() sovereignPhase.value = 'nah' - // After "NAH!" animation plays, transition to the privacy message + // After "STOP!" animation plays, transition to the privacy message setTimeout(() => { sovereignPhase.value = 'own-privacy' }, 1400)