Commit Graph

323 Commits

Author SHA1 Message Date
null 2e2c79be3d fix: remove android.util.Base64 from RecoveryKeyManager for portability (batch v0.2.16)
- Replace android.util.Base64 with java.util.Base64 in RecoveryKeyManager
- Crypto layer now has zero Android SDK dependencies — portable to iOS/shared testing
2026-06-19 21:26:35 -05:00
null c1f7e6f7f9 feat: daily question date key uses local timezone instead of UTC (batch v0.2.15)
- Replace SimpleDateFormat/Calendar UTC date key with java.time LocalDate in device timezone
- FirestoreAnswerDataSource: todayLocalDateString() with injectable Clock, localDateString() helper
- DailyQuestionViewModel: pass date through submit flow so sync uses same date key
- AnswerRevealViewModel: use todayLocalDateString() for partner answer lookup
- Add FirestoreAnswerDataSourceTest: verifies timezone-aware date boundaries (Chicago vs Tokyo, LA vs London)
2026-06-19 21:24:53 -05:00
null 70bb0a346c fix: normalize crypto files to plain ASCII (batch v0.2.14)
- Replace smart quotes, em dash, prime, right arrow in comments with ASCII equivalents
- Affected: CoupleEncryptionManager.kt, FieldEncryptor.kt, RecoveryKeyManager.kt
2026-06-19 21:22:27 -05:00
null 85b4eb589b feat: add 3 stronger privacy slogans to BrandMessageRotator (batch v0.2.13)
- Add to CloserBrandCopy: 'Not even Closer can read your answers.', 'End to end encrypted private responses.', 'Built for trust, not tracking.'
- Update visual-identity.md: add new slogans to approved rotation, remove migration gating note (all legacy couples migrated)
2026-06-19 21:17:59 -05:00
null 55ca3dce27 fix: Firestore rules hardening, recovery phrase strength, test cleanup (batch v0.2.12)
- Firestore rules: add isCouplesMember(coupleId) to question thread answer writes (prevents outsider writes)
- Firestore rules: allow currentIndex increment on same-status session updates (fixes thread progression)
- RecoveryKeyManager: PHRASE_WORD_COUNT 6→10 (~80 bits entropy)
- build.gradle.kts: exclude META-INF/versions/9/OSGI-INF/MANIFEST.MF (packaging conflict)
- .gitignore: add firebase-debug.log, firestore-debug.log
- firestore-tests: configurable emulator port via FIRESTORE_EMULATOR_PORT env var
- firestore-tests: fix invite outsider test (seed with different coupleId), fix non-starter session test (active→completed allowed), remove redundant beforeEach(seedThread), add outsider-write-denied test for thread answers
- visual-identity.md: update encryption claim gating note
2026-06-19 21:08:55 -05:00
null 3233c54ab2 feat: strict E2EE — encryption migration, Firestore rules enforcement, version 2 protocol (batch v0.2.11)
- Add CoupleAnswerMigrationDataSource: one-time per-user rewrite of all historical answer-bearing fields (daily answers, thread answers/messages, ThisOrThat, DesireSync, HowWell, Wheel) to ciphertext
- Add EncryptionUpgradeScreen + ViewModel: handles version-0→1→2 migration, recovery phrase display, partner coordination
- Add FieldEncryptorTest: round-trip, cross-couple binding, null-key, plaintext-not-leaked
- CoupleEncryptionManager: STRICT_ENCRYPTION_VERSION=2, requireAead() throws on missing key, setupLegacyCouple, pendingRecoveryPhrase/acknowledge
- CoupleKeyStore: pending recovery phrase storage/clear
- FieldEncryptor: switch from android.util.Base64 to java.util.Base64
- All data sources: use requireAead() (throws instead of silent plaintext fallback), encrypt all answer-bearing writes
- FirestoreCoupleDataSource: beginEncryptionMigration (atomic version-0→1 claim), markEncryptionMigrationComplete (per-user + version-2 promotion)
- CoupleRepositoryImpl: require wrappedKey on invite acceptance (no more optional)
- HomeScreen/ViewModel: route to EncryptionUpgradeScreen for version-0 or unmigrated version-1 couples
- Firestore rules: isCiphertext validator, isEncryptedAnswerPayload, isStartingEncryptionMigration, isCompletingOwnEncryptionMigration, isUpdatingRecoveryWrap, isUpdatingCoupleRhythm; enforce ciphertext on all answer/message writes; game collection rules (this_or_that, desire_sync, how_well, wheel) with per-user answer ownership; couple doc update split into 4 mutually exclusive paths; invite doc requires createdAt + wrappedKey fields; isImmutable uses diff().hasAny() instead of field equality
- Firestore rules tests: encryption migration scenarios, plaintext rejection, per-user answer ownership, game collection ciphertext enforcement
- firebase.json: emulator port 8180
- .gitignore: firestore-tests/node_modules
2026-06-19 20:53:52 -05:00
null e7b45cc84f fix: profile photo temp dir, Firestore rules field-level lockdown (batch v0.2.10)
- Move temp profile photos to filesDir/photos/ subdirectory with mkdirs
- Update file_paths.xml to scope FileProvider to photos/ subdirectory
- Firestore rules: restrict couple doc updates to only mutable fields (streakCount, lastAnsweredAt, wrappedCoupleKey, kdfSalt, kdfParams, encryptionVersion) — prevents client from overwriting currentQuestionId, activePackId, id
2026-06-19 20:33:08 -05:00
null 9a0b2b6a3d feat: BrandMessageRotator — rotating privacy copy across screens (batch v0.2.9)
- Add CloserBrandCopy with 6 approved privacy messages
- Add BrandMessageRotator composable: animated fade rotation every 4.5s, reduced-motion support
- Integrate rotator into: OnboardingScreen (CTA + auth check), LoginScreen, LoadingState, AnswerRevealScreen (waiting card), WaitingForPartnerScreen, DesireSync/HowWell/ThisOrThat waiting screens
- Add CloserBrandCopyTest for uniqueness and length validation
- Update visual-identity.md with approved rotation and security-claim publishing rules
2026-06-19 20:24:50 -05:00
null 6828be72fc feat: Cloud Functions — leaveCoupleCallable, onUserDelete cascade (batch v0.2.8)
- Add leaveCoupleCallable: HTTPS callable that atomically unlinks couple via Admin SDK (clears both user coupleIds, recursiveDelete couple doc)
- Add onUserDelete: Auth deletion trigger that cascades cleanup — unpairs partner, sends FCM notification, deletes Storage objects, recursiveDelete user doc
- Replace client-side batch leaveCouple with callable invocation (Firestore rules prevent cross-user writes)
- Remove CoupleRepository/UserRepository from DeleteAccountViewModel — cleanup now handled by onUserDelete trigger
- Wire new functions into index.ts exports
2026-06-19 20:04:18 -05:00
null cbaa68ef2e feat: account deletion with re-authentication flow (batch v0.2.7)
- Add reauthenticateWithEmail to AuthRepository + FirebaseAuthDataSource
- DeleteAccountScreen: re-auth dialog for email users (password prompt), Google user guidance
- DeleteAccountViewModel: handle FirebaseAuthRecentLoginRequiredException, re-auth submission
- Reorder delete flow: auth account deleted first, then couple leave + user data cleanup
2026-06-19 19:57:07 -05:00
null 30fddcc2df feat: E2EE — Tink AEAD, Argon2id KDF, recovery phrase, encrypted Firestore fields (batch v0.2.6)
- Add crypto module: CoupleKeyStore (EncryptedSharedPreferences), RecoveryKeyManager (Argon2id + AES-256-GCM key wrap), FieldEncryptor (AEAD per-field), CoupleEncryptionManager (orchestration)
- Add Tink + Bouncy Castle dependencies to build.gradle.kts, register AeadConfig in CloserApp
- Encrypt answer fields (writtenText, selectedOptionIds, scaleValue) on write, decrypt on read
- Encrypt DesireSync, HowWell, WheelAnswer, QuestionThread fields via CoupleEncryptionManager
- Generate recovery phrase during invite creation, display in CreateInviteScreen
- Add recovery phrase input to InviteConfirmScreen for encrypted invites
- Add RecoveryScreen + RecoveryViewModel for post-pairing key recovery
- Update Couple model with encryptionVersion, wrappedCoupleKey, kdfSalt, kdfParams
- Update Firestore rules: allow couple doc creation by members, fcmTokens path, encryptionVersion monotonic check, invite doc extended fields
2026-06-19 19:52:35 -05:00
null 5caae523e7 feat: app icon redesign, store assets, brand identity docs (batch v0.2.5)
- Redraw adaptive icon layers (background + foreground) with Closer palette colors
- Add monochrome icon layer for Android 13+ themed icons
- Add mipmap-anydpi-v33 adaptive icon configs (round + standard)
- Add store assets: 512px app icon, 1024x500 feature graphic, source SVGs
- Add docs/brand/visual-identity.md with brand mark, color palette, store voice, asset rules
- Update store-assets.md checklist to reflect completed items
2026-06-19 19:10:03 -05:00
null 7256a71bdf feat: dark mode support — ThemeMode setting, dynamic colors, status bar sync (batch v0.2.4)
- Add ThemeMode enum (DEVICE/LIGHT/DARK) with DataStore persistence
- SettingsScreen: appearance section with radio buttons for Device/Light/Dark
- SettingsViewModel: observe and persist theme mode
- MainActivity: read theme setting, apply dark theme, sync status bar icons
- Replace hardcoded Color.White references with MaterialTheme.colorScheme.surface across auth, onboarding, settings, and theme
- Convert AuthVisuals, SettingsVisuals, CloserPalette brushes to @Composable getters using dynamic scheme colors
- Add values-night/themes.xml for dark theme manifest entry
- Add ThemeModeTest unit test for fromStorageValue parsing
2026-06-19 19:00:37 -05:00
null 7552c451db feat: notification copy, error messages, animations, reduced-motion support (batch v0.2.2)
- Rewrite all notification titles/bodies + channel descriptions to warmer, partner-centric tone
- Update error messages across all screens for clarity and consistency
- Add AnimatedVisibility + reduced-motion detection (Settings.Global.ANIMATOR_DURATION_SCALE) to AnswerRevealScreen and LocalQuestionContent
- Polish settings copy (quiet hours, partner activity labels, info footer)
- Update all game error states with actionable language ('Go back and try again')
- Refresh docs screenshots
2026-06-19 04:20:08 -05:00
null 79a63629f1 refactor: CloserPrimitives design system, PairPromptScreen, state component overhauls (batch v0.2.1)
- Add CloserPrimitives (CloserCard, CloserActionButton, CloserSpacing, CloserButtonStyle, SkeletonLine)
- Refactor EmptyState, ErrorState, LoadingState to use primitives with closer design tokens
- Add PairPromptScreen + nav route for post-signup partner invitation
- Update SignUpScreen onboarding copy to mention partner invite flow
- HomeScreen and PlayHubScreen layout/structure refinements
2026-06-19 04:04:52 -05:00
null 164e0e47ca feat: update AnswerHistory, BucketList, DateMatches, Onboarding, LocalQuestionContent, WheelHistory screens 2026-06-19 03:53:43 -05:00
null 803b681d06 feat: update PrivacyScreen, add Firestore test scripts, gitleaks audit artifacts 2026-06-19 03:45:53 -05:00
null 9e587a23dd feat: update question thread data source, repository, ViewModel, and Firestore security rules 2026-06-19 03:19:58 -05:00
null 927e930b79 feat: add SessionLength model, update game screens with session length awareness 2026-06-19 02:50:58 -05:00
null 0e0a33a6dd feat: add FCM game retention notification functions, messaging service updates, ThisOrThat screen fixes 2026-06-19 02:23:52 -05:00
null 70e7c66cd6 feat: add game history screen, shared session state, updated navigation + PlayHub 2026-06-19 01:43:06 -05:00
null 3ba6c659dd feat: add partner-waiting flow across all game screens with QuestionSession model updates 2026-06-19 01:14:04 -05:00
null 733c0967c2 fix: Q2 grammar quality pass on emotional_intimacy, parenting, stress questions + app.db rebuild 2026-06-19 00:50:23 -05:00
null a13167dc3e feat: Q1 question variety improvement across all categories, app.db rebuild 2026-06-19 00:35:00 -05:00
null 93813255fd chore: Q3 asset DB cleanup (remove 300 dead rows), Q5 grammar fix for depth-5 questions in emotional_intimacy + stress 2026-06-18 22:03:52 -05:00
null 5ad1456adb feat: update desire sync question bank, degender scripts, app.db rebuild 2026-06-18 21:41:14 -05:00
null 473feb78a9 feat: add DesireSync + HowWell Firestore data sources, update screens with cloud-backed answering 2026-06-18 20:47:18 -05:00
null 97cc334136 feat: add Firestore wheel answer data source, update wheel screens with logging + answer history 2026-06-18 20:10:08 -05:00
null 408a2f24ba feat: add ThisOrThat Firestore data source, updated screen with question answering flow 2026-06-18 19:53:17 -05:00
null af06cb2123 feat: add Time Capsule feature with Firestore data source, model, and MemoryLane UI screens 2026-06-18 04:14:12 -05:00
null 4e871f8e4f feat: add Connection Challenge system with game routing, Firestore data source, ChallengeGameScreen in PlayHub 2026-06-18 04:03:57 -05:00
null 574fed27f7 refactor: replace raw string game types with GameType constants, remove unused feature flag module 2026-06-18 03:51:12 -05:00
null debc6aed02 fix: handle partner_active_session error in SpinWheelViewModel, navigate to waiting screen 2026-06-18 03:46:34 -05:00
null 1b344e7220 fix: filter out empty-text/unknown-category questions from all DAO queries, regenerate app.db, handle deleted cloud question by falling back to random 2026-06-18 03:43:24 -05:00
null 606d724f12 feat: add answer history filter pills with reveal/private badges, DesireSync progress meter and reveal UI, HowWell ring progress and privacy tiles, Paywall feature scavenger hunt, category screen grid polish 2026-06-18 03:26:12 -05:00
null 15c1fbdda0 feat: replace PlaceholderScreen with FinishedEmptyStateScreen across PartnerHome, EmailInvite, QuestionComposer, Subscription 2026-06-18 03:20:13 -05:00
null 8b394ab40f fix: use UTC dates for daily question keys across all date consumers 2026-06-18 03:11:22 -05:00
null fb0e8fbaab refactor: extract startGameWithCouple, remove duplicate partner notification from leaveCouple 2026-06-18 03:08:48 -05:00
null 2521e91db4 fix: simplify hasPremium with first(), leave couple before deleting account 2026-06-18 02:56:34 -05:00
null dfd9974683 fix: use real-time session observation in WaitingForPartnerScreen, add credential type check in Google sign-in 2026-06-18 02:50:21 -05:00
null c894dd8c67 fix: simplify finishGame to not require userId — first caller wins 2026-06-18 02:47:57 -05:00
null 21df900bc7 fix: add contentDescription to icon buttons for accessibility 2026-06-18 02:46:10 -05:00
null df961e8d94 fix: enforce multi-choice maxSelections limit across all answer UIs, pass questionIds to startGame 2026-06-18 02:41:33 -05:00
null 4134c4570d fix: integrate game session lifecycle into DesireSync, HowWell, and ThisOrThat 2026-06-18 02:29:14 -05:00
null 2b8e05b29b fix: address Neo review — fix cloud function partnerName scope, WheelCompleteScreen session ID, polling isActive, navigateTo reset 2026-06-18 01:28:43 -05:00
null 7926289153 fix: clamp scale midpoint and handle edge case in wheel session answer UI 2026-06-18 01:17:47 -05:00
null c6df885e1e fix: add answer options to wheel session screen so partners can answer questions 2026-06-18 01:09:08 -05:00
null 7fb913db99 fix: add camera hardware feature flag, fix WaitingForPartnerScreen layout 2026-06-18 01:05:04 -05:00
null c58b1c6326 feat: enforce one active game per couple with partner notifications 2026-06-18 00:56:21 -05:00
null 2677e38514 fix: use sex column for Desire Sync question filtering instead of fragile ID pattern 2026-06-18 00:32:39 -05:00
null c0696cfb80 feat: partner leave notification, real-time couple state sync, in-app unpair alerts 2026-06-18 00:25:52 -05:00
null eaac8ffcc9 feat: couple-scoped daily question, answer sync, partner notifications, and answer review 2026-06-18 00:18:05 -05:00
null 92a257b3eb feat: add sex field to user profile, Google profile extraction, multi-step onboarding, profile editing 2026-06-17 23:59:46 -05:00
null f7b95fc9ba feat: add Google sign-in icon, update login screen and auth visuals 2026-06-17 23:07:19 -05:00
null 8217a3385d fix: extract Firebase auth calls into AuthRepository — LoginViewModel no longer depends on Firebase directly 2026-06-17 23:02:25 -05:00
null 370a56069f refactor: comprehensive UI polish across 26 files — components, screens, theme consistency 2026-06-17 22:44:14 -05:00
null d135b306aa feat: add CategoryGlyph component, DesireSync polish, UI refinements across screens 2026-06-17 22:31:34 -05:00
null 85bb8d9f69 feat: add DesireSync module with sexual_preferences questions and Room integration 2026-06-17 22:23:04 -05:00
null d21763ac41 feat: add sexual_preferences seed data (question_v2 schema) 2026-06-17 22:10:50 -05:00
null a530064ddb fix: refine shell back routes — remove full-screen screens from shellBackRoutes set 2026-06-17 22:03:36 -05:00
null 45058fdd5f feat: couple intimacy seed data, "How Well" screen, ThisOrThat + wheel polish 2026-06-17 21:57:40 -05:00
null 254652cb86 feat: add "This or That" screen with navigation, DB query, and Play Hub card 2026-06-17 21:34:07 -05:00
null 84390a48fc fix: test infrastructure and entitlement logic updates 2026-06-17 21:08:13 -05:00
null 827cfd2e2d fix: UI polish across auth, play hub, settings, wheel screens 2026-06-17 20:59:21 -05:00
null d6f5eb6b0f fix: inject FirebaseFirestore via constructor instead of getInstance() 2026-06-17 20:53:42 -05:00
null e5c734d3b2 fix: ViewModel and repository error handling improvements 2026-06-17 20:51:18 -05:00
null c89e4f6bba fix: answer reveal and question category UI/state fixes 2026-06-17 20:41:37 -05:00
null a0fd1d56f6 feat: category picker redesign, bucket list wiring, settings + nav updates 2026-06-17 20:38:06 -05:00
null c816033e74 feat: cloud function for date match cleanup, ViewModel and repo improvements 2026-06-17 20:26:24 -05:00
null fb87fe149a docs: rewrite README with product clarity, add screenshots, register Room DAOs in DI 2026-06-17 19:59:07 -05:00
null 662a49df9d refactor: centralize all Firestore collection paths in FirestoreCollections constants 2026-06-17 19:47:58 -05:00
null 19c6b4a6cb fix: real uid in bucket list, Firestore rules hardening for date plans & bucket list 2026-06-17 19:41:27 -05:00
null ec315c63e0 feat: add App Integrity + device attestation modules 2026-06-17 19:37:19 -05:00
null 0095151bd9 fix: add input sanitization across date plan forms and repository 2026-06-17 19:23:53 -05:00
null ede7c70ea7 fix(release): date/time pickers, debug logging guards, RC_API_KEY comment, ExternalLinks TODOs (gap fixes) 2026-06-17 02:00:39 -05:00
null 4ede77f067 feat(legal): ExternalLinks utility, Privacy/Terms links in Settings + Paywall screens (batch 12) 2026-06-17 01:32:05 -05:00
null f3bad90ec6 feat(notifications): FCM token registration, quiet hours, notification permission helper, reminder Cloud Functions (batch 11) 2026-06-17 01:30:04 -05:00
null b9ad713ddb feat(billing): server-side entitlement sync — RevenueCat webhook handler, entitlement logic, Firestore EntitlementChecker, Hilt DI, callable sync function (batch 10) 2026-06-17 01:25:51 -05:00
null 681cf7fb32 feat(billing): RevenueCat SDK integration, BillingRepository, PaywallScreen + ViewModel, Hilt DI, navigation route (batch 9) 2026-06-17 01:22:24 -05:00
null c9ff160bf3 fix(ui): responsive visual QA pass — text ellipsis, navigationBarsPadding, touch targets, spacing fixes (batch 8) 2026-06-17 01:17:47 -05:00
null d109f7fcd0 fix(ui): partner invite flow polish — compact layout, share button, back affordances, secondary route styling (batch 7) 2026-06-17 00:16:42 -05:00
null cc974661d3 fix(ui): settings & partner state polish — no fake data, tappable partner row, gated destructive actions, subpage back affordances (batch 6) 2026-06-17 00:13:20 -05:00
null 557af3e546 feat(dates): add Date Builder + Bucket List — backend models, Room DAOs, Firestore sources, repositories, UI screens, ViewModels, navigation routes, Firestore rules 2026-06-17 00:05:46 -05:00
null 512a6c9f42 feat(dates): add Date Match MVP Phase 1 — swipe UI, Firestore models, 30+ seed ideas, match reveal 2026-06-16 23:30:58 -05:00
null 1fc25d6c1f security: add client-side auth rate limiting with exponential backoff (SecurityReport #11) 2026-06-16 23:01:02 -05:00
null e4a2588c50 security: enable Room schema export for CI migration validation (SecurityReport #7) 2026-06-16 22:59:38 -05:00
null e28a08e5f1 security: hash question IDs and coarsen categories in Firebase Analytics (SecurityReport #9) 2026-06-16 22:58:27 -05:00
null a412247bf3 security: kimi-k2.7 review fixes — Ed25519 crypto API, Firestore rules try/catch removal, atomic idempotency, RevenueCat 8.20.0, rate limiter fix, remove plaintext fallback, tighten push wording 2026-06-16 22:42:53 -05:00
null 50c44d2afd security: swap RevenueCat hybrid-common SDK for native Android SDK purchases:10.10.0, add Maven repo 2026-06-16 22:09:22 -05:00
null e82207c9d0 security: swap alpha crypto 1.1.0-alpha06 for stable 1.0.0, update MasterKey→MasterKeys API 2026-06-16 22:05:37 -05:00
null 95ea9ffed5 security: disable auto backup, rewrite backup rules as allowlist, harden data extraction rules for Android 12+ 2026-06-16 21:58:17 -05:00
null afeb1a1a03 docs: add README, add proguard rules, Firestore entitlement checker, network security config, update build config and onboarding 2026-06-16 20:16:47 -05:00
null 84995641f3 refactor: package rename from com.couplesconnect.app to app.closer, update build config and firebase setup 2026-06-16 20:03:58 -05:00
null e42de938e7 fix: update Invite model, backup rules, and Firestore security rules 2026-06-16 19:44:28 -05:00
null a870b17801 refactor: update AcceptInviteScreen with theme-consistent visuals and layout 2026-06-16 19:14:06 -05:00
null 99ff77a357 refactor: consolidate theme usage across components, screens, and wheel flow 2026-06-16 18:44:23 -05:00
null 71441bec14 refactor: extract shared auth/settings visuals, apply consistent theme across screens 2026-06-16 04:16:16 -05:00
null 0f73c656d8 fix(answers): update answer flow screens, navigation, and question input component 2026-06-16 03:39:40 -05:00
null 56f2d8c045 fix(home): update HomeScreen and HomeViewModel 2026-06-16 03:25:03 -05:00
null 0e9606366b fix(questions): update category and pack library screens 2026-06-16 03:07:32 -05:00
null 888ffa3c1a fix(ui): polish screens, update ViewModels, add docs 2026-06-16 02:55:16 -05:00
null 5302526d32 fix(theme): apply consistent color system, polish UI across all screens 2026-06-16 02:49:36 -05:00
null c1548f28fb fix(navigation, pairing): update route handling and invite screen layout 2026-06-16 02:30:18 -05:00
null 342c3276a0 fix(home,onboarding): correct navigation and state handling 2026-06-16 02:18:28 -05:00
null db177bc792 fix(firebase): replace placeholder Firebase config, update initializer and home screen wiring 2026-06-16 01:57:48 -05:00
null 7a9d4c3b49 feat(ui): wheel history screen, session repo, external links, shared loading/error/empty components 2026-06-16 01:24:04 -05:00
null 1a33d4f2b9 feat(analytics): Firebase Analytics, Crashlytics, ObservabilityModule, Firestore rules 2026-06-16 01:13:20 -05:00
null 11a81cb826 feat(settings): DataStore-based settings repo, notification preferences, special dates component 2026-06-16 01:07:13 -05:00
null 88004cf219 feat(notifications): FCM messaging service, notification helper, FCM+delete account+relationship screens 2026-06-16 01:03:07 -05:00
null 011745e7d4 feat(wheel): ViewModel-backed wheel screens with local session store 2026-06-16 00:56:08 -05:00
null 577d39ea11 feat(paywall): question pack library, entitlement checker, home screen wiring 2026-06-16 00:50:13 -05:00
null 29d512c679 fix(couple): correct Firestore query and repository method signatures 2026-06-16 00:40:00 -05:00
null 6fe5e5048e fix(daily): correct question flow state handling and UI edge cases 2026-06-16 00:33:55 -05:00
null 78e145352b feat(settings): SettingsViewModel, auth logout wiring, FirebaseAuth cleanup
- Added SettingsViewModel with logout/profile navigation
- Updated FirebaseAuthDataSource with signOut()
- Refined AuthRepository interface and FirebaseAuthRepositoryImpl
- Wired SettingsScreen to SettingsViewModel
2026-06-16 00:27:29 -05:00
null 112de3398f feat(pairing): Firebase Firestore invite/couple data sources with ViewModels
- Added FirestoreCoupleDataSource, FirestoreInviteDataSource
- CoupleRepository + InviteRepository interfaces and Firestore impls
- AcceptInviteViewModel, CreateInviteViewModel, InviteConfirmViewModel
- Updated AcceptInviteScreen, CreateInviteScreen, InviteConfirmScreen with ViewModel-backed state
- Updated RepositoryModule and OnboardingViewModel for new dependencies
2026-06-16 00:22:20 -05:00
null 8bcb3308c1 feat(auth): Firebase auth wiring, login/signup/forgot-password with ViewModels
- Added FirebaseAuthDataSource, FirestoreUserDataSource
- AuthRepository + UserRepository interfaces and Firebase impls
- LoginViewModel, SignUpViewModel, ForgotPasswordViewModel
- OnboardingViewModel, CreateProfileViewModel
- Updated LoginScreen, SignUpScreen, ForgotPasswordScreen, OnboardingScreen, CreateProfileScreen with ViewModel-backed state
- Wired RepositoryModule with Firebase auth dependencies
2026-06-16 00:01:34 -05:00
null af7603d61c feat(ui): navigation refactor, screen wiring, local answer persistence
- Refactored AppNavigation with route-based screen graph
- Wired all screens (auth, onboarding, pairing, home, wheel, questions, settings)
- Added local answer repository (SharedPreferences-based)
- Added HomeViewModel, AnswerHistoryViewModel, AnswerRevealViewModel
- Added question category browsing, pack library, composer screens
- Cleaned up DailyQuestionScreen/QuestionThreadScreen to use shared components
- Projected route docs, account/settings screens, new drawable resources
2026-06-15 23:48:55 -05:00
null 5991acb283 chore(gitignore): exclude app/build/ from version control
app/build/ wasn't caught by /build pattern which only matches root dir. Removes ~200 build artifact files from tracking.
2026-06-15 21:38:39 -05:00
null 92a0e8f2eb feat(db): add 2 new v2 question categories (difficult_conversations, home_life) — 20 total, 5,500 questions
- Rebuilt seeded DB with difficult_conversations.json + home_life.json
- Hilt DI wiring (@HiltAndroidApp, @AndroidEntryPoint)
- Updated User/Couple models to current schema
- Replaced placeholder with AppNavigation
- DB: 20 categories, 5,500 questions
2026-06-15 21:38:22 -05:00
null 1c976935c9 feat: Firebase + RevenueCat stack, PLAN.md integration, 11 implementation batches (v0.1.0) 2026-06-15 18:43:43 -05:00
null 92c82e5fd4 chore: wipe RN/Expo stack, prepare for Kotlin/Compose project (batch 0.1.1) 2026-06-15 18:32:27 -05:00
null 01751c6f66 feat: navigation foundation with Expo Router tabs (v1.0.2) 2026-05-13 16:17:09 -05:00
null 1a1357d5c9 feat: Expo project bootstrap (v1.0.1) + untrack private docs 2026-05-13 04:21:43 -05:00