- Custom copper AccentColor and warm VaultBackground color assets (light/dark),
applied to both the main app and the AutoFill extension (which needed its own
copy of the asset catalog plus ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME
and an explicit .tint() modifier, since extensions don't pick up the app-wide
accent color the same way a full SwiftUI App/Scene does).
- GroupFilterView no longer uses DisclosureGroup for subgroups -- the whole tree
renders always-expanded (indented per depth) so active filters are visible at
a glance instead of requiring tap-to-expand.
- Added a placeholder app icon (padlock glyph, light/dark/tinted variants plus
macOS sizes) -- previously the icon slot existed but had no actual images,
which blocks App Store/TestFlight archive validation.
- Added ITSAppUsesNonExemptEncryption = NO (standard encryption only, via
KeePassKit) to skip the export-compliance prompt on each upload.
- Renamed the app from MyPass to KeeVault throughout: Xcode project/targets/
schemes, the MyPassCore package (now KeeVaultCore) and every import site,
folder and file names, bundle identifiers (org.antiloop222.keevault) and
their App Group/Keychain-group entitlements, and remaining UI/string
references -- MyPass was already taken as an App Store app name.
- 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