From 018f3c84d39021b381dc1ba4ef48cfb5cb1f5011 Mon Sep 17 00:00:00 2001 From: Dorian Date: Fri, 27 Mar 2026 19:19:51 +0000 Subject: [PATCH] fix: onboarding auth, stale CI build, autocomplete attrs - Add identity.create + server.echo to UNAUTHENTICATED_METHODS - Clear web/dist before frontend build to prevent stale artifacts - Add autocomplete attrs to login inputs Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitea/workflows/build-iso.yml | 4 +++- core/archipelago/src/api/rpc/middleware.rs | 3 +++ neode-ui/src/views/Login.vue | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/build-iso.yml b/.gitea/workflows/build-iso.yml index 63c3a6ad..e225f6b0 100644 --- a/.gitea/workflows/build-iso.yml +++ b/.gitea/workflows/build-iso.yml @@ -22,7 +22,9 @@ jobs: cargo build --release --manifest-path core/Cargo.toml - name: Build frontend - run: cd neode-ui && npm ci && npm run build + run: | + rm -rf web/dist/neode-ui + cd neode-ui && npm ci && npm run build - name: Type check frontend run: cd neode-ui && npx vue-tsc -b --noEmit diff --git a/core/archipelago/src/api/rpc/middleware.rs b/core/archipelago/src/api/rpc/middleware.rs index 0470a855..c30250ef 100644 --- a/core/archipelago/src/api/rpc/middleware.rs +++ b/core/archipelago/src/api/rpc/middleware.rs @@ -11,11 +11,14 @@ pub(super) const UNAUTHENTICATED_METHODS: &[&str] = &[ "auth.setup", "auth.onboardingComplete", "health", + // Server readiness check (Login.vue polls this before showing form) + "server.echo", // Onboarding flow (before user has a session — DID creation, signing, backup) "node.did", "node.signChallenge", "node.nostr-pubkey", "node.createBackup", + "identity.create", "identity.verify", "identity.resolve-did", // Onboarding restore (before user account exists) diff --git a/neode-ui/src/views/Login.vue b/neode-ui/src/views/Login.vue index 4ab635a8..4893109d 100644 --- a/neode-ui/src/views/Login.vue +++ b/neode-ui/src/views/Login.vue @@ -53,6 +53,7 @@ id="setup-password" v-model="password" type="password" + autocomplete="new-password" class="w-full px-4 py-3 bg-transparent border border-white/20 rounded-lg text-white placeholder-white/40 focus:outline-none focus:border-white/40 focus:ring-1 focus:ring-white/20 transition-colors" :placeholder="t('login.enterPasswordSetup')" @keyup.enter="handleSetupWithSound" @@ -68,6 +69,7 @@ id="setup-confirm-password" v-model="confirmPassword" type="password" + autocomplete="new-password" class="w-full px-4 py-3 bg-transparent border border-white/20 rounded-lg text-white placeholder-white/40 focus:outline-none focus:border-white/40 focus:ring-1 focus:ring-white/20 transition-colors" :placeholder="t('login.confirmPasswordPlaceholder')" @keyup.enter="handleSetupWithSound" @@ -151,6 +153,7 @@ id="login-password" v-model="password" type="password" + autocomplete="current-password" class="w-full px-4 py-3 bg-transparent border border-white/20 rounded-lg text-white placeholder-white/40 focus:outline-none focus:border-white/40 focus:ring-1 focus:ring-white/20 transition-colors" :placeholder="t('login.enterPasswordPlaceholder')" @keyup.enter="handleLoginWithSound"