Commit Graph

  • eb4bab0b90 perf(functions): B6b bound the unbounded couple scanners (#10) null 2026-07-08 00:05:32 -0500
  • d601498e96 build(functions): B6a bump firebase-functions to v7 (latest) null 2026-07-08 00:03:17 -0500
  • a5af32d3d2 refactor(functions): B4+B5 migrate webhook to v2 + pin onUserDelete on v1 null 2026-07-08 00:00:29 -0500
  • e0c2d67373 refactor(functions): B3 migrate 12 callables to v2 + harden null 2026-07-07 23:58:32 -0500
  • 6681bf1518 refactor(functions): B2 migrate 8 scheduled functions to v2 + harden null 2026-07-07 23:50:59 -0500
  • 4040abbf28 refactor(functions): B1 migrate 13 Firestore triggers to v2 + harden null 2026-07-07 23:46:17 -0500
  • fbf4e7957c build(functions): B0 v2 foundation — global options, shared push helper, structured logging null 2026-07-07 23:36:16 -0500
  • 6af9c15833 chore(repo): keep QA fixture docs local-only null 2026-07-07 23:28:45 -0500
  • 694294c2e5 fix(ui): remove duplicate answer back button null 2026-07-07 23:09:14 -0500
  • 5d03fd98be chore(qa): keep fixture credentials in a gitignored local file, not the repo null 2026-07-07 22:32:37 -0500
  • 3acba138a3 chore(functions): rebuild dist for deployed daily-question + game-copy changes null 2026-07-07 22:31:02 -0500
  • 15e4579410 docs(qa): R30 polish/UX/seed round — reports, coverage, review §5.1 null 2026-07-07 22:06:36 -0500
  • ca67187754 fix(ui): strip internal 'mc' token from the reveal-screen category chip too null 2026-07-07 22:04:54 -0500
  • f2321d3536 fix(functions): server-authoritative, mode-aware, deterministic daily question null 2026-07-07 21:57:22 -0500
  • fda53175a9 feat(games): nudge + per-game copy + score a11y batch C4 from UX review null 2026-07-07 21:50:39 -0500
  • 8e8223ca97 + null 2026-07-07 21:47:20 -0500
  • cf8f82357e feat(games): game-loop retention batch C3 from UX review null 2026-07-07 21:42:39 -0500
  • 9d0a0c7fdf fix(onboarding,challenges): funnel + gating batch C2 from P3/UX review null 2026-07-07 21:24:27 -0500
  • 4ab79d34c4 fix(ui,games): defect-polish batch C1 from P3/UX review null 2026-07-07 21:03:22 -0500
  • d554483ef2 docs(qa): R29 games/mechanics/retention/UI review round null 2026-07-07 19:54:05 -0500
  • c36a101d38 refactor(cleanup): dead code + hygiene batch from games review null 2026-07-07 19:48:56 -0500
  • e5868bd6b1 fix(games,daily): correctness batch from games review null 2026-07-07 19:41:41 -0500
  • 5013c2cd09 docs: update standardization review to completed state null 2026-07-06 22:19:33 -0500
  • 0c59000065 refactor(ui): remove raw Firestore listeners from Daily/Partner VMs null 2026-07-06 22:18:30 -0500
  • cce2687312 refactor(ui): inject AuthRepository instead of FirebaseAuth.getInstance() null 2026-07-06 22:12:47 -0500
  • 89cbd7cb55 refactor(functions): type callable payloads instead of `any` null 2026-07-06 22:06:45 -0500
  • c71817241c build: adopt Gradle version catalog (libs.versions.toml) null 2026-07-06 22:05:10 -0500
  • fcc0d699fb refactor(data): finish Firebase Tasks→.await() across the data layer null 2026-07-06 22:00:55 -0500
  • f160f141d6 chore(gitignore): ignore .code-workspace; cleanup Firebase data source dead code null 2026-07-06 21:41:54 -0500
  • 39fbd943ff docs: standardization & modernization review null 2026-07-06 21:36:59 -0500
  • 7507ca63e4 refactor(data): modernize Firebase Tasks to .await() (safe subset) null 2026-07-06 21:36:09 -0500
  • 61a8609298 refactor(ui): standardize on collectAsStateWithLifecycle null 2026-07-06 21:30:48 -0500
  • eeac3c9383 build(functions): compile dist for outcome aggregation null 2026-07-06 21:10:02 -0500
  • a79db9474b docs(crypto): key-storage migration design (design-only, gated) null 2026-07-06 21:08:52 -0500
  • 943507b72a feat(functions): privacy-safe outcome-stat aggregation null 2026-07-06 21:06:57 -0500
  • 95c3bc21fa feat(dates): Firestore-backed date catalog + sponsored ideas null 2026-07-06 21:02:22 -0500
  • 6ecc98eec2 feat(paywall): free-trial/intro pricing, gift framing, one-time SKUs null 2026-07-06 20:53:15 -0500
  • 8464cb9219 feat(analytics): record specific notification type on push-opened null 2026-07-06 20:48:49 -0500
  • 368d8c455f fix(streak): gentle day-based streak with a grace day + earlier milestones null 2026-07-06 20:46:14 -0500
  • f0a05f779b feat(widget): Glance "Today" home-screen widget null 2026-07-06 20:40:28 -0500
  • 55699e17ed feat: security hardening, CI, analytics, invite deep links, solo mode, weekly recap null 2026-07-06 20:33:38 -0500
  • f68cab5cf2 feat: signup flow, age gate, user model updates, how well screen, game prompt banner null 2026-07-02 02:42:55 -0500
  • 24823a39f0 feat: question discussion components, conversation VM, wheel session, settings, text input limits null 2026-07-01 21:39:00 -0500
  • 09fea873e2 fix: DateReflectionScreen and FirestoreDateReflectionDataSource updates null 2026-07-01 20:01:01 -0500
  • 896bf26b28 feat: date reflection reveal, UI upgrade plan, seed updates, ime-scan script null 2026-07-01 04:12:58 -0500
  • 222bbd1c57 chore(db): update seed database null 2026-07-01 02:55:38 -0500
  • b115cd2f66 chore(seed): update daily question content null 2026-07-01 02:55:34 -0500
  • e1a8528489 docs: restructure README screenshot table to daily-question stages + core screens null 2026-07-01 02:55:30 -0500
  • d49d67ecbd docs: add reveal-ready brand art + screenshot null 2026-07-01 02:55:24 -0500
  • 31a2652e48 feat(art): add illustration_daily_reveal_ready (light + dark) null 2026-07-01 02:55:20 -0500
  • d03e071098 feat(home): escalate daily-question art by state (partner prompt → reveal ready) null 2026-07-01 02:55:15 -0500
  • 6d0a52641c feat(daily): rename modes to weekday theme names (Mood Check Monday, Tiny Win Tuesday, etc.) null 2026-07-01 02:55:11 -0500
  • b19394b900 chore(seed): update daily question content to v61 weekly format null 2026-07-01 02:20:09 -0500
  • a1b77f6786 docs: update README home screenshot alt text null 2026-07-01 02:20:04 -0500
  • 18490f990e docs: update home screenshots (ready + your-turn states) null 2026-07-01 02:19:57 -0500
  • 611481786f fix(home): update PairedHomePreview to BOTH_ANSWERED state null 2026-07-01 02:19:35 -0500
  • cbffaeca9f test(settings): ChangePasswordViewModelTest — validation + typed exception mapping null 2026-07-01 02:19:31 -0500
  • e585856228 feat(nav): wire ChangePasswordScreen composable into AppNavigation null 2026-07-01 02:19:26 -0500
  • 06c94f55f4 feat(nav): add CHANGE_PASSWORD route constant null 2026-07-01 02:19:22 -0500
  • a096ca15d1 feat(settings): add Change password row to SecurityScreen (email/password accounts only) null 2026-07-01 02:19:18 -0500
  • 30000e7150 feat(settings): ChangePasswordScreen + ViewModel with validation and typed error mapping null 2026-07-01 02:19:14 -0500
  • 7fe095ef3b feat(auth): delegate changePassword in FirebaseAuthRepositoryImpl null 2026-07-01 02:19:11 -0500
  • 54608796e1 feat(auth): add changePassword to AuthRepository interface null 2026-07-01 02:19:04 -0500
  • d1e23f24ee feat(auth): wire changePassword with reauth + typed exceptions in FirebaseAuthDataSource null 2026-07-01 02:19:01 -0500
  • 07eaf3c989 feat(auth): ChangePasswordException sealed class with typed failure reasons null 2026-07-01 02:18:50 -0500
  • 2ecff95c12 docs: update home-dark screenshot null 2026-07-01 01:50:54 -0500
  • 7ff405cad6 feat(notifications): remove partner avatar from notifications (privacy) null 2026-07-01 01:50:50 -0500
  • f47fa3cdbd test(auth): ForgotPasswordViewModelTest — typed exception + blank-email coverage null 2026-07-01 01:50:46 -0500
  • 1a6cdaa078 feat(auth): enumeration-safe forgot-password confirmation copy null 2026-07-01 01:50:40 -0500
  • 79bfea7cfb feat(auth): use typed PasswordResetException in ForgotPasswordViewModel null 2026-07-01 01:50:36 -0500
  • 885af0b9e4 feat(auth): wire typed PasswordResetException into FirebaseAuthDataSource null 2026-07-01 01:50:32 -0500
  • a1d2ea2db8 feat(auth): typed PasswordResetException sealed class null 2026-07-01 01:50:27 -0500
  • 7aa72532b7 docs: update home-dark screenshot null 2026-07-01 00:21:54 -0500
  • f117da16c8 test(home): 10 unit tests for computeDailyQuestionState null 2026-07-01 00:21:42 -0500
  • 0feb72eaf0 feat(home): reveal-waiting art swap, copy polish, extracted computeDailyQuestionState null 2026-07-01 00:21:33 -0500
  • b15e696388 docs(questions): v6 — patch_policy and mass_rewrite_policy metadata fields null 2026-06-30 23:48:23 -0500
  • 8897e103b6 docs(questions): v6 — Patch Mode Required, Mass Rewrite Exception null 2026-06-30 23:48:18 -0500
  • 3b49b76b33 docs(questions): v7 — Patch Discipline Checks, Fun But Grounded Checks null 2026-06-30 23:48:14 -0500
  • 1bdbed4fbc docs(questions): v8 — Daily Patch Discipline, Fun But Grounded null 2026-06-30 23:48:10 -0500
  • 7f20fa8ee7 docs(questions): v6 — Patch Discipline, Fun But Grounded gate null 2026-06-30 23:48:05 -0500
  • 94a7feeb43 docs(questions): add Daily Patch Review Loop Policy v1 and Research Notes v2 null 2026-06-30 23:48:01 -0500
  • fd5fae7444 docs: update README with E2EE chat, backup, and partner-assisted restore null 2026-06-30 23:46:02 -0500
  • 39be5dd238 docs: R25-d entry for pruneDeadTokens implementation null 2026-06-30 23:45:52 -0500
  • 1daf0c2bf5 docs(questions): v5.1 — Research-Informed Fun Rules, Daily Game Mechanics, Daily Content Metadata null 2026-06-30 23:45:47 -0500
  • d8408a2c44 chore(functions): rebuild dist with pruneDeadTokens wired into all 19 push sites null 2026-06-30 23:45:42 -0500
  • afd1eab299 feat(users): wire pruneDeadTokens into onUserDelete null 2026-06-30 23:45:36 -0500
  • 2488e18790 feat(notifications): wire pruneDeadTokens into streakReminder null 2026-06-30 23:45:31 -0500
  • 40e4f48131 feat(notifications): wire pruneDeadTokens into dailyQuestionReminder null 2026-06-30 23:45:26 -0500
  • 355edd0887 feat(couples): wire pruneDeadTokens into acceptInviteCallable null 2026-06-30 23:45:21 -0500
  • f55c49010d feat(notifications): wire pruneDeadTokens into sendThinkingOfYouCallable null 2026-06-30 23:36:09 -0500
  • 5306d40c72 feat(notifications): wire pruneDeadTokens into sendGentleReminderCallable null 2026-06-30 23:35:59 -0500
  • e35b8151c6 feat(notifications): wire pruneDeadTokens into reengagement null 2026-06-30 23:35:49 -0500
  • 35eca7d08d feat(notifications): wire pruneDeadTokens into gameRetention null 2026-06-30 23:35:42 -0500
  • 7b5790da43 feat(billing): wire pruneDeadTokens into onEntitlementChanged null 2026-06-30 23:35:38 -0500
  • c7181e276f feat(questions): wire pruneDeadTokens into onMessageWritten null 2026-06-30 23:35:29 -0500
  • 8b3356e60d feat(questions): wire pruneDeadTokens into onAnswerWritten null 2026-06-30 23:35:24 -0500
  • 9ca9f19c51 feat(questions): wire pruneDeadTokens into onAnswerRevealed null 2026-06-30 23:35:20 -0500
  • 13c0769efb feat(games): wire pruneDeadTokens into onGameSessionUpdate null 2026-06-30 23:35:15 -0500
  • ffa038ca56 feat(dates): wire pruneDeadTokens into onDateReflectionWritten null 2026-06-30 23:35:07 -0500
  • 2aa08efd39 feat(dates): wire pruneDeadTokens into onDateHistoryCreated null 2026-06-30 23:35:00 -0500