Features
- choose the destination vault for an inbound transfer
- reachable UI for OS credential transfer (phase 3)
- credential exchange plugin, plists and token handoff (phase 2)
- CXF 1.0 mapper, both directions (phase 1)
- import passkeys from Bitwarden JSON
- expose passkey key import across platforms
- convert imported P-256 PKCS#8 keys
Bug Fixes
- let mobile pickers select .1pux, .kdbx and the other containers
- don't blame the user's data when the converter is missing
- re-export hexToBytes for the Bitwarden passkey importer
- wait for the pending-transfer peek before claiming
- ask for the destination vault on the condition that actually holds
- route to the import screen at a cold launch, not just on the event
- land on the preview, and stop advising a file cleanup
- passkey keys are PKCS#8 on the wire, raw scalars at rest
- register CredentialExchangePlugin with the bridge
- say why a transfer is unavailable instead of hiding it
- erase the provider mirror and biometric item on delete
Refactors
- share the file-picker row and the notched field outline
- fold three duplicated helpers into single homes
- one ES256 constant, shared by both import paths
- one PKCS#8 conversion, in the Rust core
Documentation
- export verified on device, including a passkey sign-in
- mark phase 3 done, phase 4 is the device pass
- fold the phase 1 result back into the plan
- plan credential exchange on iOS, with the wire-format probe
- record the versions carrying the pairing fix
Other
- test(extension): pin the duplicated html escaper against its original
- test: share the vault mount harness and the chrome storage-area fake
- test(fixtures): a Bitwarden export with passkeys, for manual import testing
- Revert "chore(ios): temporary diagnostics for the passkey bundle handoff"
- chore: delete dead code found in a repo-wide sweep
- chore(ios): read the provider diagnostic on-device, no Mac needed
- chore(ios): temporary diagnostics for the passkey bundle handoff
Full Changelog: 1.11.0-chromium...1.12.0-chromium