- Remove dead provideCredentialWithoutUserInteraction override and
unlockSilently() helper (nothing registers credential identities,
so it could never run, and it was a footgun for future inline
QuickType work).
- Surface non-cancellation biometric unlock failures into
errorMessage instead of swallowing them, matching
UnlockViewModel.unlockWithBiometrics().
- Forward VaultSession.objectWillChange into ExtensionViewModel via
Combine so the lock/unlock UI transition no longer depends on an
accidental isUnlocking side effect, matching VaultViewModel's
pattern.
- Show the "Open MyPass" deep-link escape hatch whenever unlock
fails (errorMessage set), not only when there's no bookmark yet,
per the extension constraints spec.
- Add INFOPLIST_KEY_NSFaceIDUsageDescription to the MyPass and
AutoFill targets' Debug/Release build configs.
Also folds in pre-existing alphabetical reordering of two
PBXBuildFile/PBXFileReference entries in project.pbxproj from an
earlier task, since this same file is already being touched here.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WYqycDFsynHH9VnnK7LNSf