This website requires JavaScript.
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