Repository navigation
3.0 phase 1b: local accounts + 2.x import (3.0.0-alpha.1, Lab only) - #16
Merged
Merged
Conversation
…ort (3.0.0-alpha.1) PassMan 3's first usable step, for the lab only. The app now opens accounts instead of 2.x vault files: - Create an account: name + master password, then the Emergency Kit (Secret Key) and the 12-word recovery phrase with a type-back check of words 3, 7 and 11. Nothing is written until the last step. - Unlock = Argon2id(master password) + Secret Key -> keyset -> personal vault in PMV3 (account_crypto, phase 1a). The Secret Key is kept per PC: DPAPI on Windows (secret_store.py); a PC that cannot read it asks for the Emergency Kit once, then keeps it. - Import lists the 2.x vaults on this PC (or takes a .vault.enc file) and copies every entry whole -- id, history, archive state. The 2.x file is only read; its sync settings stay behind. - Settings: change master password (keyset resealed, vault untouched), save the Emergency Kit again, open the account folder for a backup, delete the account. Sync is shown as "not in this test version"; the login screen has no Restore from server until phase 2. - version.py: 3.0.0-alpha.1, with file_version() -> 3.0.0.1 for the exe resource; the builder passes /DFileVersion to Inno Setup. Tests: 499 passed, 1 skipped (51 new in test_accounts.py). Lab flow flows_accounts.py 42/42; 6 mutants all killed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ojnyVg7ccsR3pZ64s7aRH
So dialogs.py stays the same file in both client repos: xdg-open where there is no os.startfile, and a prompt that does not name Windows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ojnyVg7ccsR3pZ64s7aRH
The Emergency Kit is plain English and the BIP39 list holds words like account, page and file, so the per-word check failed now and then (seen once in the Lab flow). No two phrase words in a row is the real claim; it has no false alarms in 300 tries and still catches a leaked phrase. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ojnyVg7ccsR3pZ64s7aRH
As the 2.x vault folder and the plaintext export already are on Linux: other users of the machine can neither list the accounts nor read the Secret Key from a saved kit. Windows ignores the modes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ojnyVg7ccsR3pZ64s7aRH
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011ojnyVg7ccsR3pZ64s7aRH
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PassMan 3's first usable step. Lab only. The app now opens PassMan 3 accounts instead of 2.x vault files. Keep 2.11.0 for real use, and don't install this over it: your 2.x vaults would not show up. Nothing changes or deletes them.
What it does
secret_store.py). A PC that can't read it, such as a new PC or another Windows user, asks for the Emergency Kit once, catches typos via the check character, then keeps it..vault.encfile. Every entry is copied whole: id, history, archive state and timestamps. The 2.x file is only read, and its sync URL and token stay behind. Importing again adds nothing twice.On disk
<home>/accounts/<name>/holds:account.json: nothing secretkeyset.pmkrecovery.pmkvaults/<id>.pmv3(+.bak)It sits beside the 2.x
vault/folder, which 3.0 only reads.Versions
3.0.0-alpha.1. Windows needs four plain numbers, soversion.file_version()turns it into3.0.0.1for the exe's version resource. The builder passes/DFileVersion=3.0.0.1to Inno Setup. I built locally to check: the exe shows FileVersion 3.0.0-alpha.1 (raw 3.0.0.1), and the installer shows 3.0.0.1.Not yet
accounts.check_recovery_phraseproves it opensrecovery.pmkProof
test_accounts.py:.bakfallback, password change, recovery phraseLab\dev-shots\flows_accounts.py, which drives the real dialogs: 42/42.Lab\dev-shots\accountshots.Follow-up commits
dialogs.pynow works on Linux too: Open folder usesxdg-open, and the Secret Key prompt doesn't name Windows. That keeps the file byte-identical with Linux PR #14.accounts.write_emergency_kit). Windows ignores the modes.🤖 Generated with Claude Code
https://claude.ai/code/session_011ojnyVg7ccsR3pZ64s7aRH