diff --git a/neode-ui/src/views/OnboardingSeedGenerate.vue b/neode-ui/src/views/OnboardingSeedGenerate.vue index eb3b8885..3dd5fca0 100644 --- a/neode-ui/src/views/OnboardingSeedGenerate.vue +++ b/neode-ui/src/views/OnboardingSeedGenerate.vue @@ -274,7 +274,14 @@ async function generateSeed() { stopTimers() loading.value = false waitingForServer.value = false - errorMessage.value = err instanceof Error ? err.message : 'Failed to generate seed' + const raw = err instanceof Error ? err.message : 'Failed to generate seed' + // The backend's provisioned-guard refusal is precise but written for + // developers ("authenticated system.factory-reset"). Operators hit it + // when a node that already has an identity lands on this screen — + // translate it into what they can actually do about it. + errorMessage.value = raw.startsWith('Not supported: this node is already provisioned') + ? 'This node already has an identity, so a new seed cannot be created. Sign in normally — or to start this node over, run a factory reset from Settings first.' + : raw } } }