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 }}
-
-
+
@@ -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)