From bdc5779b425151f47a4f5c93566a9f40f952428d Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 24 Jun 2026 15:06:26 -0700 Subject: Add optional password-encrypted persistence for full accounts Per-account "Save on this device" encrypts a seed account into a localStorage vault (scrypt KDF + XChaCha20-Poly1305 via @noble), so it survives a browser close. On reopen, a vault prompt unlocks all saved wallets with the password (or "Use another wallet" to skip). Default stays session-only; the password is held only in memory for the session and re-encrypts on save/forget. Wrong password fails closed (AEAD). Adds @noble/ciphers dependency. New strings translated across all 19 locales. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/i18n.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/i18n.js') diff --git a/src/i18n.js b/src/i18n.js index f75e014..9a48796 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -49,6 +49,23 @@ const STR = { labelOptional: 'Label (optional)', walletLabelN: 'Wallet {n}', watchLabelN: 'Watch {n}', + saveDevice: 'Save on this device', + forgetDevice: 'Saved ยท forget', + savedTag: 'saved', + setPassword: 'Set a password', + setPasswordDesc: 'Encrypts this wallet on this device. You will need it to unlock saved wallets later.', + enterPassword: 'Enter your password', + enterPasswordDesc: 'Unlock your saved wallets to continue.', + password: 'Password', + confirmPassword: 'Confirm password', + pwTooShort: 'Use at least 8 characters.', + pwMismatch: 'Passwords do not match.', + pwWrong: 'Wrong password.', + unlockSaved: 'Unlock saved wallets', + unlockSavedDesc: 'Enter your password to open the wallets saved on this device.', + unlock: 'Unlock', + useAnotherWallet: 'Use another wallet', + save: 'Save', publicKey: 'Public key', publicKeyDesc: 'Share this to watch this wallet read-only on another device or app. It reveals your addresses, not your keys.', copyKey: 'Copy key', -- cgit v1.2.3