This website requires JavaScript.
5868d06421
brand(art): wire Delete account calm-goodbye illustration (A12)
null
2026-06-26 09:59:53 -0500
9b1e946ed8
brand(art): pairing-success hero -> A1 celebration; Security header -> A11 privacy-lock
null
2026-06-26 09:57:26 -0500
86679752b0
brand(art): wire Connection Challenges header (A3 banner) + Quiet hours (A9)
null
2026-06-26 09:53:28 -0500
fb4620559b
brand(art): wire Date Match A5 (empty + it's-a-match) + Memory Lane A4; add all new art to debug gallery
null
2026-06-26 09:48:13 -0500
5d74858679
brand(art): wire Answer History (A2) + Past Games (A10) empty illustrations
null
2026-06-26 09:40:08 -0500
4aec224f0d
brand(art): wire Messages-empty (A8) + Bucket List-empty (A6); add BrandIllustration helper
null
2026-06-26 09:36:53 -0500
077a408785
brand(art): add 12 generated illustrations to drawable-nodpi; gitignore brand source art
null
2026-06-26 09:29:42 -0500
5ba5b4a8ec
qa(R9): clean confirmation round — deferred Pass C + Pass F network swept, 0 new findings
null
2026-06-26 08:42:03 -0500
9505defd29
qa(R9): confirm + prune I-001/I-002 (0 outcomes denials/CCE on fixed build)
null
2026-06-26 08:33:46 -0500
dbf8a6f18e
qa(R8): wrap — Pass E new-type status (not implemented), couple-premium-unlock idea to Future.md
null
2026-06-26 00:00:31 -0500
ab29f6b12f
fix(outcomes): restore Your Progress read — scope query to allowed dayKeys + coerce Long scores (I-001, I-002)
null
2026-06-25 23:58:37 -0500
35d36e6851
qa(R8): Pass J accessibility — font scale 2.0 usable, semantics clean, reduce-motion honored
null
2026-06-25 23:47:27 -0500
f740b1d9a1
qa(R8): Pass I performance — route smoke checklist + I-001 (P1) outcomes read denied
null
2026-06-25 23:41:08 -0500
11208c6fb5
qa(R8): re-confirm F-RACE-001 live (race -> 1 session, loser joins same set) + prune
null
2026-06-25 23:32:31 -0500
96987bf29a
docs(qa): merge notification-suite playbook, add report hygiene + finding-routing, clean report/coverage
null
2026-06-25 23:23:30 -0500
23dd6a75e8
fix(games): atomic session start to prevent duplicate sessions on concurrent start (F-RACE-001)
null
2026-06-25 21:43:06 -0500
164acf415d
docs(seed): update content guide to v3 — product standard, readability test, final approval
null
2026-06-25 18:56:48 -0500
4686a2c200
docs(seed): replace question guides with v2 — content guide, rewrite plan, new quality checklist
null
2026-06-25 18:48:37 -0500
f47c8e2b64
feat(qa): clear Future.md backlog — inclusive gender, turn-aware copy, push budgets, paywall polish, auth rotator
null
2026-06-25 16:00:58 -0500
95cad84cb5
brand: loading state, themes, manifest, art preview, pairing screen updates
null
2026-06-25 15:24:46 -0500
fed91dbe46
brand: finalize app icon, brand docs, onboarding visuals, feature graphic
null
2026-06-25 14:52:21 -0500
520eea2236
brand: update launcher foreground, feature graphic, auth visuals, brand docs
null
2026-06-25 14:48:57 -0500
93b5599605
brand: add closer-mark SVGs (on-dark + on-light variants)
null
2026-06-25 14:44:31 -0500
334cb079fa
brand: update app icon, iOS assets, Android drawables, brand docs (Pass H)
null
2026-06-25 14:34:27 -0500
450ddccd16
qa(plan): add Pass H Branding & artwork + ClaudeBrandingReview.md (house style + ChatGPT prompts)
null
2026-06-25 13:46:06 -0500
2545da5c8b
qa(plan): play every depth x question-count + consumer mindset; add Future.md (QA backlog)
null
2026-06-25 13:39:16 -0500
83d3d59903
qa(r5): functions deployed (E-OBS + E-003 results-ready) + expanded re-QA — 0 open P0-P3
null
2026-06-25 13:12:40 -0500
765916a8ef
build(functions): recompile dist for E-OBS + E-003 results-ready changes
null
2026-06-25 12:40:38 -0500
21b078a180
fix(notif): set FCM channel on remaining reminder senders (E-OBS)
null
2026-06-25 12:39:59 -0500
aaab768cb0
fix(notif): deep-link results-ready pushes to per-session results/replay screen (E-003)
null
2026-06-25 12:34:43 -0500
3de4178fd3
qa(plan): add varied gameplay styles, exhaustive nav fuzzing, Pass G account-creation/fake-account
null
2026-06-25 12:28:58 -0500
ee19ef3f59
qa(r4): fix phase + re-QA complete — E-003/B-004/A-OBS fixed; 0 open P0-P2
null
2026-06-25 12:15:19 -0500
d99fa6c6ea
fix(paywall): show friendly plan-load error, not raw SDK message (A-OBS)
null
2026-06-25 12:10:45 -0500
f1549c642c
fix(games): add 'Join the game' escape to WaitingForPartner screen (B-004)
null
2026-06-25 12:07:48 -0500
1b9d8cf8dc
fix(notif): game pushes deep-link into the waiting game, not the Play hub (E-003)
null
2026-06-25 12:02:28 -0500
a2b38485b1
docs(seed): align type names with repo schema — single_choice, this_or_that, answer config
null
2026-06-25 11:40:56 -0500
d1026c7312
docs(seed): split question guide into three documents — content guide, schema, rewrite plan
null
2026-06-25 11:37:10 -0500
0c8586fa9e
qa(r3): Round 3 full re-QA (A-F) COMPLETE — 12 fixes hold; 5 new issues logged
null
2026-06-25 11:37:06 -0500
682a9d8ea7
qa(r3): Pass E live notif tests — chat_message full chain OK; log E-003 + E-OBS
null
2026-06-25 11:32:32 -0500
fa6d80602a
docs(brand): add asset-system.md, cross-link from visual-identity.md
null
2026-06-25 11:26:21 -0500
afd81e8120
qa(r3): Pass C visual sweep + Pass D security re-audit clean
null
2026-06-25 11:25:19 -0500
c7140b1e10
qa(r3): Pass A + Pass B fully re-verified live
null
2026-06-25 11:18:07 -0500
ddecfabcd9
qa(r3): How Well verified (5/5, B-001 holds); log B-004 intermittent guesser-stuck on WaitingForPartner
null
2026-06-25 11:06:02 -0500
185d27b921
qa(r3): re-QA round 3 — nav + premium + Desire Sync/This-or-That fixes re-verified live
null
2026-06-25 10:46:16 -0500
6eeb86320b
qa(fix-phase): all P0-P3 FIXED (P3x4: A-003/B-003/E-002/F-OBS); severity board all clear
null
2026-06-25 10:14:18 -0500
8e08823e83
fix(memorylane): propagate snapshot-listener errors so the screen doesn't hang (F-OBS P3)
null
2026-06-25 10:14:17 -0500
46010508a9
fix(notifications): route partner_left/partner_deleted_account to Home (E-002 P3)
null
2026-06-25 10:14:16 -0500
f63188d97a
fix(desiresync): clearer privacy counts on reveal (B-003 P3)
null
2026-06-25 10:14:15 -0500
f8ae15a41b
fix(play): hide Premium badge on Desire Sync/Memory Lane cards when couple has premium (A-003 P3)
null
2026-06-25 10:14:14 -0500
0c67c505be
qa(fix-phase): mark B-002/C-CC-001/C-DS-001 (P2) FIXED+verified; P0-P2 all clear, P3x4 remain
null
2026-06-25 09:58:27 -0500
a94f44d3ec
fix(home): 'Play now' resumes the waiting game, not the generic hub (B-002 P2)
null
2026-06-25 09:58:26 -0500
1fe4dea9c1
fix(desiresync): theme-aware reveal text for dark mode (C-DS-001 P2)
null
2026-06-25 09:58:25 -0500
edc00d2a5f
fix(nav): drop Connection Challenges from shellBackRoutes (C-CC-001 P2)
null
2026-06-25 09:58:24 -0500
1108a57c4a
qa(fix-phase): mark B-001 + C-NAV-001 (both P1) FIXED+verified; severity P1 0 open/4 fixed
null
2026-06-25 09:37:38 -0500
a82c43ad90
fix(rules): allow completedByUsers on session update so finished games close (B-001 P1)
null
2026-06-25 09:37:37 -0500
ebd3b2ed1f
fix(nav): clear onboarding/auth back stack on entry->Home (C-NAV-001 P1)
null
2026-06-25 09:37:36 -0500
4e49b92be2
qa(round2-B2): Date Match PASS (3 mutual matches + live It's-a-match push + Matches view); PASS B COMPLETE all 7 games; Sam reverted to free
null
2026-06-24 23:31:18 -0500
01feee8321
qa(round2-B2): Spin the Wheel PASS (free partner enters; spin->Date Night->both answer 10->reveal matches both, no crash)
null
2026-06-24 23:22:25 -0500
f79b38c07c
qa(round2-B2): Memory Lane PASS (capsule create+seal, encrypted at rest enc:v1:, cross-device sealed view, no crash); D1 capsule ciphertext verified live
null
2026-06-24 23:15:23 -0500
e76a84f5da
qa(round2-B2): C-NAV-001 P1 CONFIRMED — back from Home resurfaces onboarding/auth (back stack not popped after login); clean cold-start repro
null
2026-06-24 23:07:28 -0500
1303597d4a
qa(round2-B2): Connection Challenges PASS (day-cycle synced both, streak ok, no crash); C-CC-001 P2 (duplicate header + double back)
null
2026-06-24 23:03:15 -0500
c71d858283
qa(round2-B2): Desire Sync PASS (free partner enters via A-001; 3 mutual desires revealed correctly, mismatches hidden, results match); B-003 P3 (confusing counts), C-DS-001 P2 (dark contrast)
null
2026-06-24 22:57:50 -0500
3c9037d8e4
qa(round2-B2): How Well PASS (user-nav, predicted 4/5 w/ deliberate miss + scale, results match both, no crash); B-001 re-corroborated (Back to Play leaves session active)
null
2026-06-24 22:50:59 -0500
f8dc8119cb
qa(round2-B2): This or That PASS (user-nav, 5/5, results match); B-001 escalated P3->P1 (Back to Play doesn't close finished session -> blocks next game); B-002 P2 (Play now lands on hub)
null
2026-06-24 22:42:18 -0500
8fa922fb70
qa(round2): RESTART Pass B from game #1 (play-as-user) — coverage reset, build reinstalled both devices
null
2026-06-24 22:30:09 -0500
21504098c2
qa(plan): Pass B — play-as-the-user mindset; report-first-then-workaround on any broken flow
null
2026-06-24 22:27:40 -0500
f9c6e42d92
qa(round2): Pass B — How Well full two-device playthrough PASS (5/5 predict, results match both)
null
2026-06-24 22:22:48 -0500
60a6ce1dbf
docs(qa): continue across auto-compaction without the user (file-state is authoritative)
null
2026-06-24 22:13:48 -0500
693ecd28ef
qa(round2): Pass B — This or That full two-device playthrough PASS (5/5, results match both, no crash)
null
2026-06-24 22:10:15 -0500
e7073fc5f8
qa(round2): R2-1 done — A-001 re-verified all features + free-gate; D-001 fixed. Pass B next
null
2026-06-24 22:04:54 -0500
b05a72605e
fix(rules): add capsules + challenges member rules (D-001 P1) — Memory Lane/Challenges were broken
null
2026-06-24 22:02:40 -0500
efe0ddbf29
qa: record standing authorization (deploy firestore rules + admin access)
null
2026-06-24 21:51:45 -0500
bbd7ef0806
docs(qa): define per-pass chunk granularity (sub-batch to one context window)
null
2026-06-24 21:47:04 -0500
84dd5f1152
docs(qa): senior-QA review additions — Pass F, env/matrix, migration, iOS-native dims
null
2026-06-24 21:44:02 -0500
e907453f3f
docs(plan): add Part 2 (build iOS to parity) + Part 3 (iOS QA) — ClaudeiOSPlan.md
null
2026-06-24 21:37:26 -0500
16ba464752
docs(qa): autonomous run-to-completion mode — never stop; unblock by fixing; finish to flawless
null
2026-06-24 21:28:45 -0500
99f0ae0c49
docs(qa): Pass C also checks navigation from every entry point + back-stack/double-back
null
2026-06-24 21:26:23 -0500
f121eab67f
docs(qa): require a full one-time playthrough of each game (not just launch)
null
2026-06-24 21:24:08 -0500
6ca65ce7e9
qa(round1): close out — all P0-P2 fixed; P3 + deferred coverage tracked for round 2
null
2026-06-24 21:08:22 -0500
ce12abb1a6
fix(notifications): route daily_question + challenge_day_ready taps (E-001 P2)
null
2026-06-24 21:07:32 -0500
58208fd443
qa(round1): A-001 fixed+verified (couple-shared premium); A-003 P3 logged (static badge)
null
2026-06-24 20:53:39 -0500
e8892a9669
fix(premium): couple-shared premium everywhere (A-001)
null
2026-06-24 20:52:22 -0500
c54ceb16c3
qa(round1): Pass B games launch sweep — no crashes; stale session recovery verified (B-001 P3)
null
2026-06-24 20:04:54 -0500
452aaf787a
qa(round1): Pass A complete — couple-shared premium gap (A-001, P1)
null
2026-06-24 19:59:04 -0500
64f0a7e6c8
docs(qa): save full-app QA playbook (5 passes: premium, games, visual, security, notifications)
null
2026-06-24 19:43:19 -0500
6580299f05
feat(packs): route pack Discuss to the unified conversation
null
2026-06-24 18:55:40 -0500
7a9ff31ae6
feat(chat): couple-shared premium gating for sending media + reactions
null
2026-06-24 18:52:50 -0500
f29d4699ca
feat(chat): typing indicator
null
2026-06-24 18:47:39 -0500
5b9596e042
feat(chat): message reactions + delete (unsend) via long-press menu
null
2026-06-24 18:44:13 -0500
7f1b938aa5
feat(chat): read receipts (Seen) via the conversation reads map
null
2026-06-24 18:38:42 -0500
3aa182a466
feat(chat): voice playback progress bar + 2-min recording cap
null
2026-06-24 18:35:32 -0500
cfea8f0d41
feat(chat): send/upload feedback + message pagination
null
2026-06-24 18:32:01 -0500
3544b7a84a
feat(chat): message timestamps + day separators
null
2026-06-24 18:14:05 -0500
8a68ae3107
feat(chat): compress gallery/camera photos before encryption (EXIF-safe, skip GIFs)
null
2026-06-24 18:10:24 -0500
11a4c7deda
feat(chat): RichContentTextField for keyboard GIF/sticker/Bitmoji insertion, tap-to-enlarge images
null
2026-06-24 17:37:13 -0500
dbf7ae662b
chore(config): coil-gif dependency, RECORD_AUDIO permission, firestore rules allow voice type
null
2026-06-24 16:34:53 -0500
3ad725ca8a
feat(voice+media): voice recording/playback UI, GIF/sticker support, keyboard content receiver
null
2026-06-24 16:34:48 -0500
c20745e82a
feat(voice): data layer — voice message model, sendVoiceMessage, durationMs field
null
2026-06-24 16:34:38 -0500
29beff1702
build(functions): rebuild dist from source — revenueCatWebhook ack-after-process, acceptInvite strict E2EE, onMessageWritten conversations path, onGameSessionUpdate both-partner notify
null
2026-06-24 16:15:30 -0500
060ef69ca5
feat(rules+trigger): conversations Firestore rules, onMessageWritten listens on conversations path, gitignore
null
2026-06-24 16:14:18 -0500