null
ed897e381f
remove
2026-06-21 20:12:36 -05:00
null
69bcd39645
remove
2026-06-21 19:57:23 -05:00
null
b302fe4aad
remove
2026-06-21 19:47:57 -05:00
null
51702e910b
remove
2026-06-21 19:45:55 -05:00
null
54fdaf831f
docs(manual): fix placeholder notification function descriptions, add new collections, biometric flow, iOS gitignore note
2026-06-21 18:47:18 -05:00
null
578851964c
docs: write Engineering Reference Manual with verified facts, fix Bishop pass issues
2026-06-21 18:44:31 -05:00
null
dd91327548
docs: brand identity, copy guide, release checklists, store assets, README
2026-06-21 17:56:46 -05:00
null
8f47593cf5
fix: user repository cleanup, settings VM, iOS app init + settings parity
2026-06-21 17:44:56 -05:00
null
6b50e84f60
fix: onboarding flow, settings screen polish, iOS settings parity
2026-06-21 17:37:14 -05:00
null
e2fd65f070
feat: security screen, theme polish, settings navigation, build config
2026-06-21 17:25:39 -05:00
null
b720f0cf14
feat: pending invite store, iOS subscription illustration, settings theme polish
2026-06-21 17:04:40 -05:00
null
b19fc0934c
feat: paywall illustrations, subscription polish, recovery store, settings cleanup
2026-06-21 16:27:55 -05:00
null
720b52a33b
chore: firebase config, gitignore updates, build tweaks
2026-06-21 16:07:19 -05:00
null
af70280daa
feat: E2EE recovery flow, iOS parity updates, onboarding + pairing polish
2026-06-21 11:20:48 -05:00
null
62d99505c9
feat: subscription screen with clear pricing, restore, cancel instructions
2026-06-21 09:54:59 -05:00
null
dff86eb089
feat: settings polish, privacy strings, home partner state, proguard rules
2026-06-21 09:49:02 -05:00
null
0a377ecdda
fix(accept-invite): dynamic encryptionVersion, Firestore TTL on attempt docs, wipe recoveryPhrase on accept
2026-06-21 09:13:29 -05:00
null
26419ce08d
feat: remove email invite screen, add accept-invite rate limiting, clean up iOS pairing (v0.2.2)
2026-06-21 08:55:43 -05:00
null
5c856d3de6
chore: gitignore .kotlin/ and review2.md
2026-06-21 08:15:34 -05:00
null
ab9d746c46
docs: update README with store positioning, pricing philosophy (v0.2.1)
2026-06-21 08:15:20 -05:00
null
a5aad4f0bf
fix(outcomes): use AutoMirrored.TrendingUp to resolve icon import/type mismatch
2026-06-21 00:07:52 -05:00
null
b70463274f
fix(home): resolve OutcomeDay import for outcome dialogs
2026-06-21 00:03:02 -05:00
null
57a3e35359
feat(outcomes): add 30/60/90 day check-in flow with baseline + reminders
2026-06-20 23:59:24 -05:00
null
535c0ce668
feat(home): surface couple streak count on Home dashboard
2026-06-20 23:47:55 -05:00
null
bc3317c65a
feat(home): add "5-minute check-in" time budget framing to daily question card
2026-06-20 23:46:28 -05:00
null
2a1e5fad10
feat(functions): add createInviteCallable and tighten invite rules
2026-06-20 23:28:20 -05:00
null
6260b0500e
fix(couples): align onCoupleLeave cloud function name with Android caller
2026-06-20 23:27:54 -05:00
null
7898a4887f
fix(functions): add server-side throttle to gentle_reminders callable
2026-06-20 23:27:54 -05:00
null
71b230719b
fix(firestore): harden isImmutable helper to reject non-list args
2026-06-20 23:14:47 -05:00
null
fb371b10c8
fix(ios): register Closer source path in Package.swift and fix compile errors
2026-06-20 23:05:43 -05:00
null
59c239694a
fix(ios): address Pass B warnings from code audit
2026-06-20 22:58:11 -05:00
null
cb54ed3079
feat(ios): fix Pass A compile blockers from code audit
2026-06-20 22:54:21 -05:00
null
8967fd23cd
fix(crypto): define single source of truth for encryptionVersion and document v0/v2 drift risk
...
- Add EncryptionVersion.kt with constants PLAINTEXT(0), MIGRATING(1), STRICT(2)
- Route CoupleEncryptionManager through the new constants and add explicit v2 branch
- Comment acceptInviteCallable.ts:91 explaining the version and sync contract
- Add TODO in iOS FirestoreService.swift warning that iOS MVP creates v0 couples
Fixes Risk #2 from review.md.
2026-06-20 22:29:43 -05:00
null
d5a17cc90d
docs(readme): update with MVP scope, both platforms, iOS port status
...
- Add Closer tagline + private-space positioning at top
- Add explicit anti-scope (not social, not therapy, not productivity)
- Add Platform Status table (Android active, iOS in progress, backend shared)
- Add MVP scope split: Free / Premium / Out-of-Scope
- Add iOS folder layout with each layer's purpose
- Add iOS build commands (xcodegen + xcodebuild)
- Expand privacy section (App Check, server-verified subscriptions, E2EE note)
- Clear MVP status breakdown: complete / in-progress / release-prep
- Link HISTORY.md and PROJECT.md for deeper context
2026-06-20 22:20:31 -05:00
null
bdd2bf27c0
feat(settings): add appearance screen with theme picker, refactor settings nav
2026-06-20 18:45:44 -05:00
null
1f777e827d
feat: add onMessageWritten cloud function, notification settings screen, user repo cleanup
2026-06-20 18:25:05 -05:00
null
4dad0e774e
refactor: update crypto, invite flow, and account screen patterns
2026-06-20 18:09:46 -05:00
null
09a2480359
refactor(android): update question thread and answer mapping patterns
2026-06-20 18:02:21 -05:00
null
2a5cd28397
refactor(android): update question flow and navigation patterns (batch 6)
2026-06-20 17:17:51 -05:00
null
67251537eb
feat(ios): add native SwiftUI iOS app scaffold under /iphone/ (batch 1-6)
...
- ARCHITECTURE_AUDIT.md: full audit covering 49 screens, Firestore schema,
35 domain models, 17 Cloud Functions, RevenueCat integration, auth flow,
E2EE skip-for-MVP decision
- Project config: project.yml (XcodeGen), Info.plist, Closer.entitlements, Package.swift (SPM)
- Core: AuthService (rate limiter), FirestoreService (callable wrappers),
BillingService (RevenueCat), NotificationService (FCM)
- Models: AuthState (ObservableObject), FirestoreModels (20+ codable types),
DomainModels (35 structs)
- Theme: CloserTheme (50+ colors, typography, spacing), CommonViews
- Screens: Onboarding, pairing, home, daily questions, play hub + games
(ThisOrThat, HowWell, DesireSync, ConnectionChallenges), spin wheel
(animated 8-slice), dates (swipe cards, bucket list), settings + paywall
(RevenueCatUI)
2026-06-20 17:15:25 -05:00
null
c621c9fec5
chore: update store assets doc with 9 screenshots (batch v1.0.22)
2026-06-20 02:02:05 -05:00
null
38aedab962
chore: update README, screenshots, answer data source cleanup (batch v1.0.21)
2026-06-20 02:01:42 -05:00
null
9c1fbf60a0
fix: reveal screen UX and rules hardening (batch v1.0.20)
2026-06-20 01:51:02 -05:00
null
737514d18f
fix: sealed reveal flow fixes (batch v1.0.19)
2026-06-20 01:40:24 -05:00
null
b64ae1f29a
fix: block answer delete in rules, enforce userId match on create (batch v1.0.18)
2026-06-20 01:19:02 -05:00
null
8de5990230
fix: add Tink dependency, release key cleanup, rules hardening (batch v1.0.17)
2026-06-20 01:10:20 -05:00
null
84eab1825b
feat: add thread sealed answers, release key cleanup, rules hardening (batch v1.0.16)
2026-06-20 00:41:48 -05:00
null
4900d8ab6b
fix: add answerDate to Firestore rules allowed fields (batch v1.0.15)
2026-06-20 00:26:52 -05:00
null
a3993d08df
feat: implement partner-proof sealed answers (batches 1-8)
...
- UserKeyManager: per-user keypair stored in Android Keystore
- SealedAnswerEncryptor: one-time answer key, sealed:v1 ciphertext
- PendingAnswerKeyStore: local EncryptedSharedPreferences storage
- ReleaseKeyEncryptor: keybox:v1 encrypted to recipient public key
- SealedRevealManager: full reveal flow with mutual key release
- AnswerCommitment: SHA-256 commitment hash over canonical payload
- FirestoreDeviceKeyDataSource: public key CRUD
- FirestoreReleaseKeyDataSource: release key CRUD
- FirestoreAnswerDataSource: sealed answer writes with schemaVersion=3
- FirestoreCollections: sealed answer and release key paths
- firestore.rules: ownership, immutability, timing, prefix enforcement
- HomeViewModel: sealed answer state integration
- AnswerRevealScreen/ViewModel: sealed reveal flow with UX states
- CloserApp: initialize UserKeyManager on startup
- LocalAnswer model: schemaVersion field
- Unit tests: SealedAnswerEncryptor, ReleaseKeyEncryptor, AnswerCommitment
- Crypto test vectors: docs/crypto/sealed-answer-test-vectors.json
- .gitignore: add partner-proof build plan
2026-06-20 00:23:58 -05:00
null
521989ec44
fix: remove duplicate comparison in StreakCalculator (batch v1.0.14)
2026-06-19 23:53:50 -05:00