null
39255c8733
fix: prevent invite code enumeration via Cloud Function (batch v0.2.18)
...
- Remove client-side read access to invites (only inviter can read own invite)
- Deny direct client update to invites (server-side only via Admin SDK)
- Add acceptInviteCallable Cloud Function: validates code, creates couple,
updates user docs, marks invite accepted, returns wrapped key for local decryption
- Update Android client: FirestoreInviteDataSource calls callable function,
InviteConfirmViewModel uses acceptInvite + unwrapAndStore flow
- Deprecate CoupleRepositoryImpl.createCouple (client-side path removed)
- Update Firestore rules tests: unpaired read now denied, direct update now denied
- 118/118 tests passing
2026-06-19 21:46:12 -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
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
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
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
fb87fe149a
docs: rewrite README with product clarity, add screenshots, register Room DAOs in DI
2026-06-17 19:59:07 -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
160fb38c4f
docs(qa): private MVP checklist, internal testing checklist, store assets checklist, code QA scan (batch 13)
2026-06-17 01:34:32 -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
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
888ffa3c1a
fix(ui): polish screens, update ViewModels, add docs
2026-06-16 02:55:16 -05:00