From c8d0dda65650745ee761fb4e75ecec695ad065ab Mon Sep 17 00:00:00 2001 From: archipelago Date: Sun, 26 Jul 2026 07:34:19 -0400 Subject: [PATCH] feat(ui): Words / QR code tabs on LND seed reveal + onboarding seed Both seed screens get the wallet-settings segmented tab style: words stay the default first view; the QR tab renders the space-joined seed words for wallets that support seed import by scan. The LND reveal QR sits behind the same tap-to-reveal blur as the words, and both panes warn that the code is equivalent to the words. Co-Authored-By: Claude Fable 5 --- neode-ui/src/views/OnboardingSeedGenerate.vue | 35 ++++++++- .../src/views/appDetails/LndSeedBackup.vue | 73 +++++++++++++++---- 2 files changed, 93 insertions(+), 15 deletions(-) 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 @@