The first visible Aegis. Library-level work from Sprints 1-5
now wears a SwiftUI face: onboarding, identity setup,
encrypt/decrypt demo, Settings → Security with live
capability table.
What shipped:
- AegisStorage library — Keychain wrapper for
IdentityKeyPair persistence. Default
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly;
iCloud Keychain sync deliberately never enabled for
private keys.
- AegisApp library — SwiftUI views built on AegisTheme.
Components: AppState (routing source-of-truth),
OnboardingFlow (3 mandatory honesty screens, including
"Use Signal instead" framing on Screen 3),
IdentitySetupScreen (display name + post-quantum key
generation), DemoViewModel + DemoScreen
(passphrase-keyed AES-256-GCM round-trip),
SettingsScreen + Capability + MainTabView (live
capability table mirrored from THREAT-MODEL.md, About
card with version + maintainer + GitHub + PGP
fingerprint).
- aegis-demo executable target — `swift run aegis-demo`
opens a real SwiftUI window today on macOS.
Codable conformance added to SignatureKeyPair, DHKeyPair,
IdentityKeyPair so AegisStorage can JSON-encode an identity
into one Keychain blob without a custom binary format.
Test status: 224 tests, 3 skipped (issue #1), 0 failures.
Conscious deferrals (now Sprint 7+ scope):
- iOS Xcode project / IPA / TestFlight distribution →
Sprint 7.
- Secure Enclave-backed PQ key storage paths land when a
real persistent peer session needs them.
- Markdown ↔ Capability code-gen is post-Sprint-6 polish.
pre-council-approval (Maintainer @DemigodDSK, 2026-04-28)