Commit Graph

  • e4cdbac7b1 refactor(notifications): questionId → conversationId across bubble, deep link routing, FCM handling null 2026-06-24 16:14:07 -0500
  • c85e55a790 feat(nav): Messages replaces Question Packs in bottom bar, conversation route with deep link, Play Hub hosts Packs null 2026-06-24 16:13:58 -0500
  • 33baf220e4 feat(conversations): UI — Messages inbox, conversation screen, view models, chat components null 2026-06-24 16:13:52 -0500
  • db5b8a5f8a feat(conversations): data layer — domain model, Firestore data source, repository, DI bindings null 2026-06-24 16:13:45 -0500
  • 4e2c3fdf0d fix: rate limiter bump (20/day, 100/week), firestore rules for image messages, storage rules for chat_media, gitignore ClaudeReport null 2026-06-24 15:20:44 -0500
  • 608ddcfc5b feat(bubble): drag-to-dismiss zone, no auto-timeout, dismiss on conversation enter null 2026-06-24 15:20:38 -0500
  • adb61715fe feat(home): partner photoUrl loaded and displayed in identity card null 2026-06-24 15:20:32 -0500
  • a8fbbaa286 feat(notifications): deep link routing from FCM data extras, onMessageWritten includes author name + photo null 2026-06-24 15:20:24 -0500
  • 06e4d609f2 feat(chat): image picker (gallery + camera), encrypted image rendering, messenger-style avatars on consecutive bubbles null 2026-06-24 15:20:18 -0500
  • c9aa5f1e12 feat(chat): encrypted image messages — Storage upload/download, Firestore send/load, domain model with type+mediaUrl null 2026-06-24 15:20:11 -0500
  • 609ced4095 feat(notifications): FCM token registration on auth, Android 13 permission request, in-app chat bubble overlay, game results notification copy null 2026-06-24 11:47:49 -0500
  • 0cb3d44f0d fix(reveal): partner option labels, release-key read rules, thread status uppercase, session id propagation, notification deep links, and re-open guard null 2026-06-24 10:02:54 -0500
  • 77208ff1e6 fix(daily-question): deterministic per-day offset replaces RANDOM(); shared DailyQuestionResolver; auth profile fallback null 2026-06-23 22:55:55 -0500
  • 6d74c6acec feat(brand): primaryMessage constant + rotator holds flagship slogan 3x longer null 2026-06-23 22:39:31 -0500
  • 7923835861 docs(brand): update privacy slogan in CloserBrandCopy null 2026-06-23 22:21:25 -0500
  • 3f22a38e18 docs(readme): update privacy slogan null 2026-06-23 22:19:39 -0500
  • 9269a769be docs(readme): update privacy slogan null 2026-06-23 22:17:42 -0500
  • 6e9cdfe8f6 docs(readme): fix slogan grammar — security → securely null 2026-06-23 22:15:57 -0500
  • 06e09da596 docs(readme): add privacy slogan to header null 2026-06-23 22:14:36 -0500
  • e5c05abe90 fix(settings): partner card visual states — paired vs unpaired colors, border, avatar fallback null 2026-06-23 19:35:35 -0500
  • 272c8997d0 refactor(ui): celebration overlay polish, activity screen layout, home screen streak dialog, pairing success cleanup null 2026-06-23 19:26:41 -0500
  • 17d7489dd8 feat(engagement): streak milestones, celebration overlays, Together screen, avatar in notifications null 2026-06-23 18:23:49 -0500
  • d4b20a9845 feat(e2ee): encrypt date plan content; live answer observation; own-thread-answer decrypt; strict rules null 2026-06-23 17:47:07 -0500
  • 039752d691 refactor(e2ee): remove v0/v1 migration paths, fail-closed decrypt, strict-only rules null 2026-06-23 17:06:23 -0500
  • 17c7ed60b9 fix(nav): tab-switch routing prevents stacking tabs; fix(crash): runCatching around getUser/getCoupleForUser across 6 screens null 2026-06-23 14:35:01 -0500
  • fe1808b36c refactor(theme): full dark mode pass — CloserPalette, Theme, Color, and all surface screens null 2026-06-23 13:56:27 -0500
  • 7d3b47b3ba fix(firestore): handle Timestamp type for lastAnsweredAt/createdAt in Android + Cloud Function null 2026-06-23 12:40:00 -0500
  • 424ef0e4ab refactor(theme): replace hardcoded colors with Material3 theme-aware composables + adaptive iOS surface color null 2026-06-23 12:31:59 -0500
  • e5c13b6b6d feat(app-check): stable debug token via BuildConfig; feat(firestore): indexes for questions + bucket_list null 2026-06-23 12:17:17 -0500
  • 6977db7600 fix(wheel-reveal): error state with retry, null-safe uid/couple, close on snapshot error null 2026-06-23 11:34:46 -0500
  • acaa8e635c fix(challenges): null-safe activeChallenge guard; feat(this-or-that): skip question button null 2026-06-23 11:31:17 -0500
  • b854c0b391 feat(history): tappable challenge/capsule cards, deep-link to capsule detail, emoji per game type, dedicated error card; feat(nav): MEMORY_LANE_CAPSULE route null 2026-06-23 11:19:14 -0500
  • 658ead38cd security: App Check enforcement on all callables, fail-closed device integrity, no raw code in logs; release signing config; iOS RevenueCat log level null 2026-06-23 10:56:42 -0500
  • 015ac8eefe feat(challenges): abandon challenge flow; fix(play): premium lock on history; fix(memory-lane): null-safe detail state null 2026-06-23 10:51:14 -0500
  • 58be8ed021 fix(game-history): disable replay on unsupported game types, clean up session title/route null 2026-06-23 10:32:49 -0500
  • 755077c7ba feat(memory-lane): edit/delete capsules, custom unlock date picker, error snackbar null 2026-06-23 10:11:25 -0500
  • 9710bbc438 fix(challenges): error state snackbar, CTA routing for BOTH_COMPLETED/CHALLENGE_COMPLETE, README prem tiers null 2026-06-23 10:04:53 -0500
  • c97371a12e feat: challenge state machine, game screen updates, state machine tests null 2026-06-22 22:02:39 -0500
  • c56dd53edd feat: capsule/challenge data sources, game screens, wheel history + viewmodel null 2026-06-22 21:38:18 -0500
  • 17403b1a75 feat: challenges, desire sync, how well, memory lane, this or that screens null 2026-06-22 21:24:02 -0500
  • 3f5d7a5cc1 feat: nav, capsule data source, challenges, desire sync, question category, wheel history + viewmodel null 2026-06-22 21:19:19 -0500
  • 2108d48914 feat: challenges, desire sync, how well, memory lane, play hub + viewmodel, this or that, wheel history null 2026-06-22 20:46:40 -0500
  • 7db075d195 feat: navigation, answer history screen + viewmodel, answer reveal, iOS navigation & question views null 2026-06-22 19:44:44 -0500
  • 125a24eb85 feat: answer reveal, auth screens, challenges, onboarding, pairing, paywall, wheel, settings, components null 2026-06-22 19:18:49 -0500
  • b42544bafb feat: iOS app icon assets + Info.plist null 2026-06-22 18:19:07 -0500
  • 42706b4dc6 feat: settings screen + iOS settings views null 2026-06-22 18:14:55 -0500
  • b90b9bca77 feat(seed): daily fun multiple choice v3 null 2026-06-22 17:46:06 -0500
  • 5d3ab8385d feat: daily questions, answer reveal, home screens, auth, analytics, DB, repositories null 2026-06-22 17:45:51 -0500
  • 174e56c5a0 feat: local question content, question header, daily question illustration, iOS question/wheel views null 2026-06-22 13:57:09 -0500
  • f350c91b55 feat: question pack library screen, pack art assets, iOS question views null 2026-06-22 13:45:48 -0500
  • d96221c5c8 feat: home screen + iOS pairing views null 2026-06-22 12:52:33 -0500
  • bb119b054b feat: home screen update, pairing views, activation illustrations null 2026-06-22 11:25:21 -0500
  • d307904ff8 feat: home screen + viewmodel, iOS home & pairing views null 2026-06-22 11:14:19 -0500
  • 7d5fc11366 feat: nav routes, play hub, spin wheel screen + viewmodel, firestore rules null 2026-06-22 10:53:05 -0500
  • ecc41a77d2 feat: wheel screen, play hub, storage data source, iOS wheel/play views null 2026-06-22 10:25:58 -0500
  • a2068f2dca feat(seed): fun + quality_time questions null 2026-06-22 09:18:18 -0500
  • b29280ba87 feat: invite flow improvements, pairing success screen, iOS pairing updates null 2026-06-22 09:06:40 -0500
  • 5e16177eb2 feat: code push -- notifications, cloud functions, iOS updates null 2026-06-22 08:53:23 -0500
  • 7e3c61c6e4 feat(seed): marriage, parenting, stress, values, home_life questions null 2026-06-22 08:47:52 -0500
  • cf1c89ce75 feat(seed): home_life questions json null 2026-06-22 08:47:09 -0500
  • 9166721282 feat: notification improvements + daily question reminder cloud function null 2026-06-22 08:34:15 -0500
  • 7c04416013 feat(seed): future + gratitude question jsons null 2026-06-22 08:27:40 -0500
  • 520c9b874c feat(seed): staged question seed json files null 2026-06-22 08:20:22 -0500
  • 1308b1b10c feat(seed) regenerate questions pack null 2026-06-21 21:24:31 -0500
  • cf37fe665b feat(seed): regenerate question pack data null 2026-06-21 21:18:37 -0500
  • 893c88d774 feat(auth): remove anonymous sign-in, add email verification flow (batch 0.3.0) null 2026-06-21 21:18:30 -0500
  • 423081bdb2 chore(gitignore): add GoogleService-Info.plist null 2026-06-21 21:18:22 -0500
  • ed897e381f remove null 2026-06-21 20:12:36 -0500
  • 69bcd39645 remove null 2026-06-21 19:57:23 -0500
  • b302fe4aad remove null 2026-06-21 19:47:57 -0500
  • 51702e910b remove null 2026-06-21 19:45:55 -0500
  • 54fdaf831f docs(manual): fix placeholder notification function descriptions, add new collections, biometric flow, iOS gitignore note null 2026-06-21 18:47:18 -0500
  • 578851964c docs: write Engineering Reference Manual with verified facts, fix Bishop pass issues null 2026-06-21 18:44:31 -0500
  • dd91327548 docs: brand identity, copy guide, release checklists, store assets, README null 2026-06-21 17:56:46 -0500
  • 8f47593cf5 fix: user repository cleanup, settings VM, iOS app init + settings parity null 2026-06-21 17:44:56 -0500
  • 6b50e84f60 fix: onboarding flow, settings screen polish, iOS settings parity null 2026-06-21 17:37:14 -0500
  • e2fd65f070 feat: security screen, theme polish, settings navigation, build config null 2026-06-21 17:25:39 -0500
  • b720f0cf14 feat: pending invite store, iOS subscription illustration, settings theme polish null 2026-06-21 17:04:40 -0500
  • b19fc0934c feat: paywall illustrations, subscription polish, recovery store, settings cleanup null 2026-06-21 16:27:55 -0500
  • 720b52a33b chore: firebase config, gitignore updates, build tweaks null 2026-06-21 16:07:19 -0500
  • af70280daa feat: E2EE recovery flow, iOS parity updates, onboarding + pairing polish null 2026-06-21 11:20:48 -0500
  • 62d99505c9 feat: subscription screen with clear pricing, restore, cancel instructions null 2026-06-21 09:54:59 -0500
  • dff86eb089 feat: settings polish, privacy strings, home partner state, proguard rules null 2026-06-21 09:49:02 -0500
  • 0a377ecdda fix(accept-invite): dynamic encryptionVersion, Firestore TTL on attempt docs, wipe recoveryPhrase on accept null 2026-06-21 09:13:29 -0500
  • 26419ce08d feat: remove email invite screen, add accept-invite rate limiting, clean up iOS pairing (v0.2.2) null 2026-06-21 08:55:43 -0500
  • 5c856d3de6 chore: gitignore .kotlin/ and review2.md null 2026-06-21 08:15:34 -0500
  • ab9d746c46 docs: update README with store positioning, pricing philosophy (v0.2.1) null 2026-06-21 08:15:20 -0500
  • a5aad4f0bf fix(outcomes): use AutoMirrored.TrendingUp to resolve icon import/type mismatch null 2026-06-21 00:07:52 -0500
  • b70463274f fix(home): resolve OutcomeDay import for outcome dialogs null 2026-06-21 00:02:02 -0500
  • 57a3e35359 feat(outcomes): add 30/60/90 day check-in flow with baseline + reminders null 2026-06-20 23:59:24 -0500
  • 535c0ce668 feat(home): surface couple streak count on Home dashboard null 2026-06-20 23:47:55 -0500
  • bc3317c65a feat(home): add "5-minute check-in" time budget framing to daily question card null 2026-06-20 23:46:28 -0500
  • 2a1e5fad10 feat(functions): add createInviteCallable and tighten invite rules null 2026-06-20 23:28:20 -0500
  • 6260b0500e fix(couples): align onCoupleLeave cloud function name with Android caller null 2026-06-20 23:27:54 -0500
  • 7898a4887f fix(functions): add server-side throttle to gentle_reminders callable null 2026-06-20 23:27:54 -0500
  • 71b230719b fix(firestore): harden isImmutable helper to reject non-list args null 2026-06-20 23:14:47 -0500
  • fb371b10c8 fix(ios): register Closer source path in Package.swift and fix compile errors null 2026-06-20 23:05:43 -0500
  • 59c239694a fix(ios): address Pass B warnings from code audit null 2026-06-20 22:58:11 -0500
  • cb54ed3079 feat(ios): fix Pass A compile blockers from code audit null 2026-06-20 22:54:21 -0500
  • 8967fd23cd fix(crypto): define single source of truth for encryptionVersion and document v0/v2 drift risk null 2026-06-20 22:29:43 -0500