docs: reconcile design spec with implementation decisions
Identifiers, the AutoFillExtension -> AutoFill rename, and the KDBX library choice had all drifted from the approved spec since it was written in May. Updates the spec to match what was actually built and closes the now-resolved "which KDBX library" open question. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WYqycDFsynHH9VnnK7LNSf
This commit is contained in:
@@ -46,18 +46,21 @@ MyPass (Main App Target) ──links──► MyPassCore
|
||||
├── BiometricAuthService — LAContext wrapper
|
||||
└── ClipboardService — copy with 30 s expiry
|
||||
|
||||
AutoFillExtension (App Extension Target) ──links──► MyPassCore
|
||||
AutoFill (App Extension Target) ──links──► MyPassCore
|
||||
├── ASCredentialProviderViewController subclass
|
||||
├── CredentialListView — filtered by serviceIdentifier URL/domain
|
||||
└── UnlockView (mini) — Face ID → password fallback
|
||||
|
||||
Shared App Group (group.com.christophevila.mypass)
|
||||
Shared App Group (group.org.antiloop222.mypass)
|
||||
├── UserDefaults — security-scoped bookmark, last-opened vault, settings
|
||||
└── Keychain Access Group — master password, biometric token
|
||||
└── Keychain Access Group — master password, biometric token (org.antiloop222.mypass)
|
||||
```
|
||||
|
||||
**External dependencies (SPM)**
|
||||
- A KDBX parsing library (to be confirmed during implementation — evaluate available Swift/ObjC options supporting KDBX 3.1 and 4.0 with Argon2 KDF)
|
||||
- KDBX parsing: KeePassKit (Objective-C, MIT). No upstream SPM support, so vendored locally as a git submodule (`Vendor/KeePassKit`) with a hand-written `Package.swift`. This pulled in the same problem three more times — none of the following had clean drop-in SPM support either, so all are vendored the same way:
|
||||
- KissXML (`Vendor/KissXML`) — XML parsing KeePassKit depends on
|
||||
- Argon2 (nested git submodule inside `Vendor/KeePassKit`) — KDBX4 key derivation
|
||||
- ChaCha20 / TwoFish — cipher implementations already bundled in KeePassKit's own source tree, wired into the SPM target
|
||||
- Apple CryptoKit (built-in)
|
||||
- LocalAuthentication (built-in)
|
||||
- AuthenticationServices (built-in)
|
||||
@@ -231,8 +234,8 @@ Entry URL field is matched against the `serviceIdentifier` using host comparison
|
||||
|
||||
---
|
||||
|
||||
## Open Questions (resolved at implementation time)
|
||||
## Open Questions
|
||||
|
||||
1. **KDBX library:** Evaluate Swift Package Manager options that support KDBX 3.1 + 4.0 with Argon2. Fallback: KeePassKit (Objective-C via bridging header).
|
||||
1. ~~**KDBX library:** Evaluate Swift Package Manager options that support KDBX 3.1 + 4.0 with Argon2. Fallback: KeePassKit (Objective-C via bridging header).~~ **Resolved:** no SPM-native option was found; KeePassKit is used, vendored locally (see External dependencies above).
|
||||
2. **macOS AutoFill:** `ASCredentialProviderExtension` on macOS 13+ has reduced scope vs iOS — verify which apps support third-party fill on macOS and document limitations.
|
||||
3. **Associated Domains:** For bundle-ID-based AutoFill matching, an associated domains file may be needed for first-party apps. Evaluate at implementation time.
|
||||
|
||||
Reference in New Issue
Block a user