diff --git a/neode-ui/src/views/OnboardingSeedGenerate.vue b/neode-ui/src/views/OnboardingSeedGenerate.vue index 03af51f6..45f3a4a0 100644 --- a/neode-ui/src/views/OnboardingSeedGenerate.vue +++ b/neode-ui/src/views/OnboardingSeedGenerate.vue @@ -44,7 +44,19 @@
-
+ +
+ +
+ +
+
+ +

+ The code contains your seed words — scan only into a wallet you trust, + and treat it exactly like the words themselves. +

+
+

@@ -99,6 +119,19 @@ import { playNavSound } from '@/composables/useNavSounds' const router = useRouter() const continueButton = ref(null) const words = ref([]) + +// Words / QR code view of the seed — words are the default first view. +const seedTab = ref<'words' | 'qr'>('words') +const seedQrCanvas = ref(null) +watch(seedTab, async (tab) => { + if (tab !== 'qr') return + await nextTick() + if (!seedQrCanvas.value || words.value.length === 0) return + try { + const QRCode = await import('qrcode') + await QRCode.toCanvas(seedQrCanvas.value, words.value.join(' '), { width: 240, margin: 1 }) + } catch { /* QR is a convenience — the words remain authoritative */ } +}) const confirmed = ref(false) const loading = ref(false) const waitingForServer = ref(false) diff --git a/neode-ui/src/views/appDetails/LndSeedBackup.vue b/neode-ui/src/views/appDetails/LndSeedBackup.vue index 95e0b016..668b9b81 100644 --- a/neode-ui/src/views/appDetails/LndSeedBackup.vue +++ b/neode-ui/src/views/appDetails/LndSeedBackup.vue @@ -1,5 +1,5 @@