Commit Graph

5 Commits

Author SHA1 Message Date
Roger bf96ba8c80 feat(restore): cross-platform restore via dump engine rebuild (#606) (#611)
* feat(restore): cross-platform restore via dump engine rebuild (#606)

Restore previously required the dump's origin OS, overlaying keys onto locally-discovered browsers. It now rebuilds Chromium engines from the dump's vaults (v2 adds engine kind), so copied data or an archive zip decrypts on any OS.

* fix(restore): polish help text, drop dead check, dedup dump kinds

pflag treats backticked words in flag usage as the value placeholder,
so --data-zip rendered as "--data-zip archive" in help output.
2026-06-12 20:53:00 +08:00
Roger c444314832 refactor: extract master-key code into masterkey package (#604) 2026-06-01 16:08:32 +08:00
Roger b901f7dff0 refactor(browser): split installation and profile abstractions (#603)
* refactor(browser): split installation and profile abstractions

A Chromium installation shares one master key across its profiles, but
modeling each profile as its own Browser re-derived the key per profile.
Browser now represents one installation holding its profiles and derives
the key once; new types.Profile/ExtractResult/CountResult carry per-profile
results.

* style: gofumpt safari_test.go

* test(chromium): rename shadowed loop var to path
2026-05-31 16:37:23 +08:00
Roger b468c5d0dc feat(keys): add --keys flag to dump for cross-host decryption (#600)
* feat(keys): add --keys flag to dump for cross-host decryption

Consumer side of the cross-host key workflow (pairs with #599).
ApplyDump wires StaticProviders from a dump.json into matching
browsers, so dump --keys f.json -p /copied/data decrypts without
native retrievers.

* fix(keys): guard --keys against misuse + hint Safari

Without -p, dumped keys would be applied to local profile data and
decrypt to garbage; -b all hits the same path because pickFromConfigs
ignores -p when name == "all". Require both.

* chore(keys): address PR #600 Copilot review

- example: add -b chrome (without it, --keys + default -b all errors out)
- use %q for keysPath in error wrap, matching surrounding style
2026-05-23 21:44:57 +08:00
Roger 0fe35542f2 feat(keys): add cross-host master key export (#599) 2026-05-16 20:24:19 +08:00