ci / gate (push) Successful in 14m23s
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