Commit Graph

426 Commits

Author SHA1 Message Date
null 1a6cdaa078 feat(auth): enumeration-safe forgot-password confirmation copy 2026-07-01 01:50:40 -05:00
null 79bfea7cfb feat(auth): use typed PasswordResetException in ForgotPasswordViewModel 2026-07-01 01:50:36 -05:00
null 885af0b9e4 feat(auth): wire typed PasswordResetException into FirebaseAuthDataSource 2026-07-01 01:50:32 -05:00
null a1d2ea2db8 feat(auth): typed PasswordResetException sealed class 2026-07-01 01:50:27 -05:00
null f117da16c8 test(home): 10 unit tests for computeDailyQuestionState 2026-07-01 00:21:42 -05:00
null 0feb72eaf0 feat(home): reveal-waiting art swap, copy polish, extracted computeDailyQuestionState 2026-07-01 00:21:33 -05:00
null aa09566636 feat(backup): lock-less phrase reveal, copy-to-clipboard, partner-restore empty-state, manual helper entry (R24-d) 2026-06-30 21:24:52 -05:00
null b78dc24870 feat(backup): add back button to restore screens (R24-d) 2026-06-30 21:24:36 -05:00
null 71227561e7 feat(backup): pass recovery phrase through RestoreManager fulfill/complete (R24-c) 2026-06-30 21:24:30 -05:00
null 209ad74532 feat(backup): add ckx:v1 keybox envelope for recovery phrase transfer (R24-c) 2026-06-30 21:24:26 -05:00
null db948511fb chore: add org.json:json:20240303 test dependency for BackupCodec round-trips 2026-06-30 20:43:30 -05:00
null 139a78c222 feat(backup): add RESTORE_REQUESTED and RESTORE_SELF_ALERT notification types 2026-06-30 20:43:18 -05:00
null 72c251ae95 feat(backup): wire opportunistic backup trigger into HomeViewModel.loadHome 2026-06-30 20:43:14 -05:00
null fd854b635c feat(backup): add RESTORE_REQUEST and RESTORE_CONSENT routes + navigation 2026-06-30 20:43:10 -05:00
null df9edc1daf feat(backup): add 'Ask your partner to restore' entry to RecoveryScreen 2026-06-30 20:43:06 -05:00
null f161fa49a5 feat(backup): add RestoreViewModel + RestoreRequestScreen + RestoreConsentScreen (partner-assisted restore UI) 2026-06-30 20:43:02 -05:00
null ed3c3e4d22 feat(backup): add RestoreManager (request/fulfill/complete partner-assisted restore with OOB code gate) 2026-06-30 20:42:58 -05:00
null c8b0130f1c feat(backup): add CoupleKeyTransfer (ECIES couple-key wrap + OOB verification code) and CoupleEncryptionManager export/store methods 2026-06-30 20:42:54 -05:00
null 4ac2c8f841 feat(backup): add BackupManager (incremental append + compaction) and BackupRestoreManager (download + decrypt + upsert) 2026-06-30 20:42:50 -05:00
null f94fccfc61 feat(backup): wire ConversationCacheDatabase and DAO into DatabaseModule 2026-06-30 20:42:46 -05:00
null ab59e7e5c9 feat(backup): add ConversationCache Room DB (entity, DAO, database) 2026-06-30 20:42:42 -05:00
null 230e7f6201 feat(backup): add uploadBackupSnapshot and deleteBackupSnapshot to FirebaseStorageDataSource 2026-06-30 20:42:38 -05:00
null 909d261b6c feat(backup): add backup record reads to FirestoreConversationDataSource (getConversationsForBackup, getBackupRecords) 2026-06-30 20:42:34 -05:00
null 522823f739 feat(backup): add FirestoreBackupDataSource (manifest CAS, chunk append, snapshot compaction, restore requests) 2026-06-30 20:42:30 -05:00
null 14ba8f2b53 feat(backup): add BACKUP and RESTORE_REQUESTS collection constants to FirestoreCollections 2026-06-30 20:42:26 -05:00
null 7f8dac0b14 feat(backup): add BackupCodec (JSON codec for backup chunks, checksum, reactions) 2026-06-30 20:42:12 -05:00
null 6b469357c1 feat(backup): add ConversationBackup domain models (BackupMessageRecord, BackupCursor, BackupManifest, RestoreRequest) 2026-06-30 20:42:07 -05:00
null 02e7e6d5c3 test(daily-question): add ReconcileLocalAnswerTest for Room/Firestore desync guard 2026-06-30 19:06:14 -05:00
null 96274d68f9 fix(daily-question): wire reconcileLocalAnswerFromFirestore into HomeViewModel 2026-06-30 19:06:12 -05:00
null 6dd1451095 fix(daily-question): wire reconcileLocalAnswerFromFirestore into DailyQuestionViewModel 2026-06-30 19:06:01 -05:00
null a6d3062585 fix(daily-question): add reconcileLocalAnswerFromFirestore to heal Room/Firestore desync 2026-06-30 19:05:59 -05:00
null 02c3180ee7 feat(date-memories): add illustration_date_memories_empty (light and dark) 2026-06-30 18:15:03 -05:00
null 097140bc9d feat(date-memories): add glyph_date_replay vector drawable 2026-06-30 18:15:00 -05:00
null aa5ebcbcac feat(date-memories): add date_logged and date_reflection_* notification channels to PartnerNotificationManager 2026-06-30 18:14:39 -05:00
null a96be6ea07 feat(date-memories): handle date_logged and date_reflection_* notification types in AppMessagingService 2026-06-30 18:14:27 -05:00
null 47f311abda test(date-memories): add DATE_REFLECTION_PENDING priority engine tests 2026-06-30 18:14:25 -05:00
null 5375ba90a8 feat(date-memories): add date reflection nudge card to HomeScreen 2026-06-30 18:14:23 -05:00
null c056f6a7a1 feat(date-memories): add date reflection pending computation to HomeViewModel 2026-06-30 18:14:21 -05:00
null 9b5f6b4eb3 feat(date-memories): add DATE_REFLECTION_PENDING priority to HomePriorityEngine 2026-06-30 18:14:18 -05:00
null 038c1bd6e6 feat(date-memories): wire DateMemoriesScreen and DateReflectionScreen into AppNavigation 2026-06-30 18:14:16 -05:00
null 9cd9cffe23 feat(date-memories): add dateReflection route to AppRoute 2026-06-30 18:14:14 -05:00
null cf061f24f6 feat(date-memories): add date memory marking logic to DateMatchesViewModel 2026-06-30 18:14:12 -05:00
null e4f10551a0 feat(date-memories): add 'We did this' and 'Date memories' entry to DateMatchesScreen 2026-06-30 18:14:10 -05:00
null 90995cdaef feat(date-memories): add DateReflectionScreen and ViewModel 2026-06-30 18:14:08 -05:00
null 151e019a88 feat(date-memories): add DateMemoriesScreen and ViewModel 2026-06-30 18:14:03 -05:00
null f81987fa94 feat(date-memories): add DATE_HISTORY and DATE_REFLECTIONS to FirestoreCollections 2026-06-30 18:14:00 -05:00
null 540ef29041 feat(date-memories): add FirestoreDateReflectionDataSource 2026-06-30 18:13:57 -05:00
null 631064fcfe feat(date-memories): add FirestoreDateMemoryDataSource 2026-06-30 18:13:56 -05:00
null de597f6238 feat(date-memories): add DateReflection domain model 2026-06-30 18:13:48 -05:00
null 9a92b2b020 feat(date-memories): add DateMemory domain model 2026-06-30 18:13:46 -05:00
null 28eb10f6c9 Revert "feat(date-memories): add DateMemory/DateReflection domain models and Firestore data sources (batch 1/8)"
This reverts commit 18ffdcdbaf.
2026-06-30 18:13:00 -05:00
null 6a0849deb7 Revert "feat(date-memories): add DateMemories timeline + DateReflection screen, wire into nav (batch 2/8)"
This reverts commit 15087df13b.
2026-06-30 18:13:00 -05:00
null 5905c2b2d0 Revert "feat(date-memories): add Home nudge for pending date reflection + priority engine (batch 3/8)"
This reverts commit 4ecb1560cb.
2026-06-30 18:13:00 -05:00
null c19e7ea711 Revert "feat(date-memories): wire date_logged/date_reflection_* notification types into messaging service (batch 4/8)"
This reverts commit 8cfa367484.
2026-06-30 18:13:00 -05:00
null 2119792cca Revert "feat(date-memories): add glyph_date_replay + illustration_date_memories_empty assets (batch 7/8)"
This reverts commit 067155c108.
2026-06-30 18:13:00 -05:00
null 067155c108 feat(date-memories): add glyph_date_replay + illustration_date_memories_empty assets (batch 7/8) 2026-06-30 16:52:04 -05:00
null 8cfa367484 feat(date-memories): wire date_logged/date_reflection_* notification types into messaging service (batch 4/8) 2026-06-30 16:51:57 -05:00
null 4ecb1560cb feat(date-memories): add Home nudge for pending date reflection + priority engine (batch 3/8) 2026-06-30 16:51:55 -05:00
null 15087df13b feat(date-memories): add DateMemories timeline + DateReflection screen, wire into nav (batch 2/8) 2026-06-30 16:51:52 -05:00
null 18ffdcdbaf feat(date-memories): add DateMemory/DateReflection domain models and Firestore data sources (batch 1/8) 2026-06-30 16:51:50 -05:00
null d87603211a feat(activity): ActivityScreen timeline, HomeScreen activity feed, HomeViewModel wiring, PartnerNotificationManager, sendThinkingOfYouCallable Cloud Function 2026-06-30 03:54:01 -05:00
null e74b6f59af feat(cloud-functions): onEntitlementChanged, acceptInviteCallable, onGameSessionUpdate, onAnswerRevealed, onMessageWritten — FirestoreUserDataSource E2EE, AppMessagingService, EditProfileScreen, iOS plan 2026-06-30 02:38:31 -05:00
null fb810a12aa feat(profile): FirestoreUserDataSource E2EE read/write, EditProfileViewModel wiring, CoupleRepository/UserRepository updates, HomeViewModel polish 2026-06-30 02:18:10 -05:00
null 941f22cdbd feat(home): HomePriorityEngine priority logic, HomeViewModel wiring, unit test coverage 2026-06-30 01:26:09 -05:00
null 2a5c40508e feat(notifications): QuietHoursManager + NotificationSettingsScreen rewrite, Cloud Functions (streakReminder, quietHours, reengagement, gameRetention), UserRepository E2EE wiring, SettingsDataStore, firestore rules, wiring-scan 2026-06-30 00:38:06 -05:00
null 7b1443e578 feat(pairing): CreateInviteScreen invite-code UX, MainActivity nav wiring, LocalQuestionContent question pool expansion, Future.md planning 2026-06-29 21:44:26 -05:00
null f6291e1f2e feat(home): HomeScreen rewrite, HomePriorityEngine polish, CoupleRepository E2EE wiring, OutcomeCheckInDialog, YourProgress, MemoryLane, settings/pairing/paywall/play/wheel/question screens cleanup, brand illustrations, QA docs 2026-06-29 16:51:46 -05:00
null 912b8c8093 feat(onboarding): RecoveryKeyManager fix, OnboardingScreen polish, build.gradle bump, Future.md planning update 2026-06-29 13:01:08 -05:00
null b5b8ad8df9 feat(games): GameSessionManager cleanup, QuestionSessionRepositoryImpl fixes, HomeViewModel game-state wiring, QA docs 2026-06-29 12:20:07 -05:00
null b2dc96ca04 feat(games): GamePromptBanner UI + MessageBubbleOverlay polish, wheel bounce fix, GameCopy strings, QA coverage updates 2026-06-29 11:02:31 -05:00
null f51a55743c feat(games): partner game-session push orchestration — in-app notification banner, Firestore rules, Cloud Function, QA docs 2026-06-28 22:24:46 -05:00
null 0aaec3c10f feat(android): portrait lock for MainActivity + ThisOrThat answer-select glow + QA report 2026-06-28 20:59:44 -05:00
null 403be3939c feat(wheel): finish gate UX polish — bounced-back banner on unanswered prompts, screen-reader live region, ViewModel unit test 2026-06-28 19:54:31 -05:00
null 763ca0c7cb feat(tools+docs): add androidTest deps for paired-CI vector harness; add SCHEMA_VERSION_DECISION + SPEC §19 pre-deploy checklist (iOS E2EE Batch 8) 2026-06-28 17:56:44 -05:00
null 3ae3f36ad4 feat(android): brand glyph migration sweep 2 — migrate remaining Material icons to CloserGlyphs catalog 2026-06-28 17:52:49 -05:00
null c3092ad8f6 feat(tools): Android canonical-vector instrument harness + hardened LEARNINGS verification helper; update capture script KNOWN_GAPS 2026-06-28 17:50:00 -05:00
null 6cc78209af feat(android): migrate all UI surfaces from Material icons to brand glyphs (CloserGlyphs catalog) 2026-06-28 17:46:11 -05:00
null c31ae4b1f7 feat(android): introduce CloserGlyphs catalog + migrate CategoryGlyph to brand vector resources 2026-06-28 17:46:05 -05:00
null e3c3dab466 fix(android): remove obsolete quiet-hours illustration block from NotificationSettings 2026-06-28 17:26:32 -05:00
null afa64bfb36 fix(android): update HomeScreen + AppNavigation routing 2026-06-28 17:09:07 -05:00
null 4215563873 brand: update glyph_connection_challenge + add glyph_closer_heart_keyhole 2026-06-28 17:09:02 -05:00
null 5a86b462c4 fix(android): swap <bitmap> launcher foreground for raster in Onboarding + AuthLogoMark (fixes O-ONBOARD-001); polish BucketList add-FAB 2026-06-28 16:48:43 -05:00
null 2d77786254 brand: refresh dark-variant illustrations (couple_history, couple_onboarding, tonight_partner_prompt) + dark contact sheet 2026-06-28 16:48:37 -05:00
null 15039b6d40 chore(seed): rebuild bundled question-pack SQLite DB (Q-grammar pass) 2026-06-28 16:35:16 -05:00
null c3a3c38e0e fix(ui): sync Activity uiMode to in-app theme at startup (C-DARKART-002 architectural fix) 2026-06-28 16:35:01 -05:00
null 4ee600125d feat(domain): update MemoryCapsuleGenerator + test 2026-06-28 16:34:57 -05:00
null b9828b60c5 brand: refresh dark-variant illustrations (couple_paywall, partner_activation, together_empty) and dark contact sheet 2026-06-28 16:34:51 -05:00
null 33ea862934 Revert "fix(ui): route QuestionPackLibrary card art through BrandIllustration for in-app-dark theme (C-DARKART-002)"
The BrandIllustration approach is insufficient for -nodpi pack art: createConfigurationContext does not reliably resolve -night variants in the decoupled in-app-Dark + system-light state. R17 diagnosis updated to recommend syncing Activity uiMode to the in-app ThemeMode instead.
2026-06-28 15:45:20 -05:00
null b48163540c fix(ui): route QuestionPackLibrary card art through BrandIllustration for in-app-dark theme (C-DARKART-002) 2026-06-28 12:55:29 -05:00
null 7a9b9eaa9d tools+test: extend theme-scan.sh and update notification + brand copy tests 2026-06-28 12:45:37 -05:00
null f927097d67 brand: update dark-theme illustration and pack-art night assets 2026-06-28 12:45:15 -05:00
null b10395812b fix(ui): remove hardcoded colors in BucketList, DateMatch, QuestionThread, WheelHistory; delete unused PlaceholderScreen 2026-06-28 12:45:02 -05:00
null 8b7bbc2996 fix(dates): remove dead setDateIdeaId from DateBuilderViewModel (N-002 follow-up) 2026-06-28 11:30:45 -05:00
null 954aab4cd2 brand: add generated glyph assets + illustration exports, allow generated-art in git 2026-06-28 11:30:12 -05:00
null 9949200f47 feat: wire theme-scan.sh into QA docs, fix script Tier 2, file 9 C-THEME P2 defects 2026-06-28 10:34:55 -05:00
null 4deed13845 feat: theme-scan.sh + improved Pass C scanner methodology (tier 1A-1G, tier 2, tier 3 roadmap) 2026-06-28 10:28:17 -05:00
null fe3ea7715c feat: add automated theme-mismatch scanner to Pass C methodology (Tier 1-3) 2026-06-28 10:20:41 -05:00
null 37ed7cebec feat: quiet hours notifications, settings UI, game session updates, docs 2026-06-28 10:00:25 -05:00
null c31eea2549 feat(premium): one-time PremiumUnlockOverlay + theme/art fixes (R13)
- New PremiumUnlockOverlay.kt — one-time 'Premium unlocked' celebration for both partners on couple-shared Premium activation. Driven off CouplePremiumChecker (not the push) so it surfaces for both wherever they are. Gated by persisted premiumUnlockCelebrated flag, auto-reset on lapse.
- New illustration_premium_unlock.png asset for the overlay.
- AppNavigation hosts the overlay at root alongside MessageBubbleOverlay.
- SettingsDataStore: new premiumUnlockCelebrated flag + setter.
- ThisOrThatScreen: theme-token fixes for A/B options, mood chips, versus badge, progress, ChoicePromptBackdrop — all read from MaterialTheme.colorScheme. Bumps dark-mode legibility.
- ConversationScreen: bump PendingMediaChip retry/dismiss IconButtons to 48dp touch targets.
- PlayHubScreen / ActivityScreen / HomeScreen / SubscriptionScreen / OnboardingScreen / PairPromptScreen / PaywallScreen / LocalQuestionContent / OutcomeCheckInDialog / ChatComponents: assorted R13 polish.
- firestore.rules (n/a this batch), SettingsRepository, manual: doc + flag wiring.
- Manual: new C-DARK-UI-001 + C-ART-EDGE-002 landmines, Premium-unlock-modal pattern note.
2026-06-27 21:01:16 -05:00
null 4eed0a8115 feat(premium): couple-shared unlock notification + reveal retry + users update allowlist + brand glyphs
- New Cloud Function: onEntitlementChanged (Firestore onWrite on entitlements/premium) — edge-triggered inactive→active, notifies the OTHER partner so couple-shared unlock isn't silent
- New notification type SUBSCRIPTION_CHANGED → routes to SUBSCRIPTION
- AnswerRevealViewModel: re-issue markRevealed if best-effort failed (offline/transient) so partner_opened_answer push eventually fires
- firestore.rules: harden users/{uid} update allowlist (defense-in-depth; no live hole)
- 18 new brand glyph vector drawables (drawable-nodpi/)
- SettingsScreen / PlayHubScreen / WaitingForPartnerScreen: swap Material icons for new brand glyphs
- ClaudeQA docs + Future.md updated
2026-06-27 16:35:41 -05:00