Skip to content

3.0 phase 1b for Linux: local accounts + 2.x import (1.0.0-alpha.1, Lab only) - #14

Merged
usermaneGermane merged 1 commit into
mainfrom
v3-local-accounts
Nov 8, 2026
Merged

usermaneGermane merged 1 commit into
mainfrom
v3-local-accounts

Conversation

@usermaneGermane

Copy link
Copy Markdown
Owner

This ports Windows PR #16 (3.0.0-alpha.1). Lab only. The app opens PassMan 3 accounts instead of 2.x vault files. Keep 0.9.0 for real use, and don't install this over it: your 2.x vaults would not show up. Nothing changes them.

Same as Windows

  • accounts.py, secret_store.py, dialogs.py and tests/test_accounts.py are byte-identical to the Windows branch.
  • gui.py has the same diff, and vault.py gains the same read_vault_file / import_entries.
  • What this version adds:
    • create an account: name and password → Emergency Kit → 12-word phrase with type-back
    • unlock through Argon2id + Secret Key
    • Import of 2.x vaults with their history and archive state
    • sync hidden until phase 2

Linux-specific

  • The Secret Key is kept under the master password (Argon2id, then AES-GCM), because there is no DPAPI. So a copied account folder opens with the master password alone, a 2.x vault file does too. The README says this. The desktop keyring could replace it later, but it needs secretstorage and a running keyring.
  • Permissions: accounts/ and each account folder are 700, their files 600 (as vault/ is), and a saved Emergency Kit is 600. The tests and the smoke run check this.
  • Open folder uses xdg-open.
  • Version 1.0.0-alpha.1, matching Windows 3.0.0-alpha.1. The .deb spells it 1.0.0~alpha.1 (build_deb.deb_version). With a hyphen, apt would treat alpha.1 as a Debian revision and sort it after 1.0.0. test_dpkg_orders_a_test_version_between_releases asks dpkg itself, and runs in the deb jobs.
  • tools/smoke_gui.py now unlocks a throwaway PassMan 3 account instead of a 2.x vault, and checks the account's folders and files are private.

Proof

  • Here (Windows, so the POSIX and dpkg tests skip): 492 passed, 6 skipped. CI runs those.
  • The end-to-end dialog checks ran against the identical Windows files in the Lab (42/42, 6 mutants killed).

🤖 Generated with Claude Code

https://claude.ai/code/session_011ojnyVg7ccsR3pZ64s7aRH

The port of PassMan for Windows 3.0.0-alpha.1 (Windows PR #16).
accounts.py, secret_store.py, dialogs.py and test_accounts.py are the
Windows files unchanged; gui.py has the same changes; vault.py gains the
same import functions.

On Linux the Secret Key is kept under the master password (Argon2id +
AES-GCM; secret_store's portable scheme), account folders are 700 and
their files 600, and Open folder uses xdg-open.

Version 1.0.0-alpha.1 (= Windows 3.0.0-alpha.1). The .deb spells it
1.0.0~alpha.1 (build_deb.deb_version): with a hyphen apt would sort it
after 1.0.0. A dpkg --compare-versions test runs where dpkg exists.

tools/smoke_gui.py now unlocks a throwaway PassMan 3 account and checks
its folders and files are private.

Tests here (Windows): 492 passed, 6 skipped (POSIX and dpkg checks run
in CI).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011ojnyVg7ccsR3pZ64s7aRH
@usermaneGermane
usermaneGermane merged commit f894b31 into main Nov 8, 2026
6 checks passed
@usermaneGermane
usermaneGermane deleted the v3-local-accounts branch November 8, 2026 21:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant