Files
wallet/ui/src
grenadeandClaude Fable 5.1 4ea85465c6
ci / gate (push) Successful in 14m23s
feat: one password unlocks every wallet
Unlocking each wallet with its own password was a convoluted UX, and
the wallets people already use open everything with one. This drops
per-wallet passwords entirely (#84).

The files stay in quantus-cli's format, so there is no vault: the
password is simply the one every wallet file is encrypted with.

- unlock(password) opens every wallet in the keystore. A file it does
  not open (one the CLI wrote under a password of its own) is named in
  the outcome's `unopened`; a password that opens nothing is wrong.
- The session holds the password while open and wipes it on lock, so
  creating, restoring or importing a wallet asks only for a name and
  writes the file under the same password. On first run, with no wallet
  yet, the flow sets it. With wallets on disk and the session locked, a
  new wallet is refused, so a second password cannot come into being.
- wallet_rekey re-encrypts one file from its own password to the
  wallet's, once; the accounts page offers it for every unopened file.
  Importing a CLI file re-encrypts it the same way at import.
- password_change re-encrypts every file: all decrypted before any is
  written, every new file written before any replaces its old one, so a
  wrong password or a full disk changes nothing.
- lock takes no wallet. The per-wallet lock buttons, the open-another
  page and the wallet picker on the lock screen are gone; the sidebar
  offers "add a wallet", and Settings a password change.

Checked in a dev run from an empty data directory: the first import set
the password, the second inherited it, a wrong password was refused, a
CLI file dropped beside them was reported and re-keyed, and a password
change moved all three; the lock screen has one password field and no
picker. quantus-cli exported a re-keyed file's phrase with the new
password and refused the old, so the CLI keeps opening these files.

Closes #84

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NUx7SPonBnB3ofU4mH41WT
2026-10-12 11:06:11 +03:00
..