Skip to content

release: 5.9.0 — TOTP→QR export, dedicated importers, on-device 2FA audit - #141

Merged
sansyourways merged 1 commit into
mainfrom
release/5.9.0
Sep 25, 2026
Merged

sansyourways merged 1 commit into
mainfrom
release/5.9.0

Conversation

@sansyourways

Copy link
Copy Markdown
Owner

Summary

Three high-priority enhancements from the audit backlog, shipped in one release. No vault format change (format 6); existing vaults are untouched.

  • ENH-9 — Export a stored TOTP as an otpauth:// QR (roadmap 9). spm authenticator-qr <id> prints a scannable QR and the URI; the Dashboard authenticator view gains a Show QR reveal. The QR encodes the raw secret, so it is revealed on demand, served only to the unlocked session (/authenticator-otpauth-qr), and never rendered up front. It round-trips through SPM's own otpauth:// parser.
  • ENH-3 — Dedicated importers for LastPass, Chrome/Edge and 1Password. The Export / Import page reads each manager's own CSV export directly, with autodetection when a file is picked as plain CSV. TOTP secrets become authenticators; folders, tags and LastPass secure notes are preserved. Import-only, like the Bitwarden importers; the field mapping lives in the shared core so the CLI and Dashboard read a given export identically.
  • ENH-5 — On-device 2FA-availability audit (roadmap 9 companion). The security review can flag password records for a 2FA-supporting service that have no matching authenticator. spm security --twofa on the CLI and a Check for missing 2FA action on the Dashboard. On-device against a bundled list (extendable via SPM_TWOFA_DOMAINS); nothing leaves the device.

Tests

  • tests/core-test.py: 195 passing (+4 — otpauth round-trip, authenticator_otpauth, 2FA-gap findings, three-importer mapping/detection).
  • tests/regression.sh: new ENH-9, ENH-5 and ENH-3 blocks — all green in the full suite (with the argon2 backend on PATH).
  • Gates verified locally: build.sh --check, bash -n, shellcheck -x -S warning, py_compile, locale parity (585 keys × 12 languages).

Release mechanics

  • VERSION → 5.9.0 in src/spm.sh.in and the 3 browser-extension manifests; spm.sh rebuilt.
  • CHANGELOG [5.9.0], docs/releases/5.9.0.md, FULL_DOCUMENTATION current-release marker + importer/security sections.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FL4yeQE2QLfThZ9vjAaqZd

…udit (roadmap 3/9)

Three high-priority enhancements from the audit backlog, in one release. No
vault format change.

- Export a stored TOTP as an otpauth:// QR (roadmap 9): `spm authenticator-qr
  <id>` and a Dashboard "Show QR" reveal, gated like the secret reveal. The QR
  round-trips through SPM's own otpauth parser.
- Dedicated importers for LastPass, Chrome/Edge and 1Password CSV exports
  (roadmap 3): import-only, with autodetection when picked as plain CSV; TOTP,
  folders/tags and secure notes preserved. Field mapping lives in the shared
  core so the CLI and Dashboard agree.
- On-device 2FA-availability audit (roadmap 9 companion): flags password
  records for a 2FA-supporting service that have no matching authenticator.
  `spm security --twofa` and a Dashboard action; nothing leaves the device.

Tests: core-test +4 (195 passing); regression gains ENH-9/5/3 blocks. Locale
parity holds at 585 keys across 12 languages.

Signed-off-by: sansyourways <sansyourways@duck.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FL4yeQE2QLfThZ9vjAaqZd
@sansyourways
sansyourways merged commit 50c8bf7 into main Sep 25, 2026
4 checks passed
@sansyourways
sansyourways deleted the release/5.9.0 branch September 25, 2026 10:23
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