null
2d77786254
brand: refresh dark-variant illustrations (couple_history, couple_onboarding, tonight_partner_prompt) + dark contact sheet
2026-06-28 16:48:37 -05:00
null
cdf84352d6
docs(screenshots): recapture 02-login.png on new emulator-5558
2026-06-28 16:35:20 -05:00
null
b9828b60c5
brand: refresh dark-variant illustrations (couple_paywall, partner_activation, together_empty) and dark contact sheet
2026-06-28 16:34:51 -05:00
null
736885c103
docs: update README and Engineering Manual — auth uses Credential Manager, iOS pairing blocked, add scripts/ layout, new screenshot placeholder
2026-06-28 12:55:24 -05:00
null
faa0d9007f
docs: consolidate Future backlog, update ClaudeQAPlan/ClaudeReport, note FUTURE.md removal in Engineering Manual
2026-06-28 12:45:54 -05:00
null
f927097d67
brand: update dark-theme illustration and pack-art night assets
2026-06-28 12:45:15 -05:00
null
954aab4cd2
brand: add generated glyph assets + illustration exports, allow generated-art in git
2026-06-28 11:30:12 -05:00
null
186b40546b
docs(manual): Batch 9 — fix TOC nesting, broken anchor, and stale iOS claim in repository layout
2026-06-28 11:14:37 -05:00
null
df2837dc06
docs(manual): Batch 8 — update theme landmine entry (C-ART-EDGE-002 closed, theme scanner mandatory)
2026-06-28 11:13:21 -05:00
null
eb78b920a4
docs(manual): Batch 7 — correct iOS E2EE gap details and ProGuard description
2026-06-28 11:12:15 -05:00
null
8ce99e197f
art
2026-06-28 11:10:46 -05:00
null
e4175ebb52
docs(manual): Batch 6 — correct Billing webhook flow, add CouplePremiumChecker, fix quiet-hours and notification_queue claims
2026-06-28 11:10:08 -05:00
null
74e46761f2
docs(manual): Batch 5 — correct Firestore rules per-collection notes (users premium, couples create/update shape, remove migration helpers)
2026-06-28 11:08:42 -05:00
null
d19f0f8eb8
docs(manual): Batch 4 — update Cloud Functions list, module responsibilities, webhook ack order, and schedule timezones
2026-06-28 11:07:24 -05:00
null
08368b3e01
docs(manual): Batch 3 — correct E2EE and Firestore data model (user fields, couple fields, date plans, preferences, bucket list, secure subdoc)
2026-06-28 11:06:20 -05:00
null
a6aa23eee2
docs(manual): Batch 2 — correct auth providers and couples model (no anonymous, no migration field, Google SDK not Credential Manager)
2026-06-28 11:04:15 -05:00
null
be710a0c9d
docs(manual): Batch 1 — correct repository layout paths (core/feature, QuestionDao, QuestionJsonParser)
2026-06-28 11:02:45 -05:00
null
4deed13845
feat: theme-scan.sh + improved Pass C scanner methodology (tier 1A-1G, tier 2, tier 3 roadmap)
2026-06-28 10:28:17 -05:00
null
fe3ea7715c
feat: add automated theme-mismatch scanner to Pass C methodology (Tier 1-3)
2026-06-28 10:20:41 -05:00
null
37ed7cebec
feat: quiet hours notifications, settings UI, game session updates, docs
2026-06-28 10:00:25 -05:00
null
c31eea2549
feat(premium): one-time PremiumUnlockOverlay + theme/art fixes (R13)
...
- New PremiumUnlockOverlay.kt — one-time 'Premium unlocked' celebration for both partners on couple-shared Premium activation. Driven off CouplePremiumChecker (not the push) so it surfaces for both wherever they are. Gated by persisted premiumUnlockCelebrated flag, auto-reset on lapse.
- New illustration_premium_unlock.png asset for the overlay.
- AppNavigation hosts the overlay at root alongside MessageBubbleOverlay.
- SettingsDataStore: new premiumUnlockCelebrated flag + setter.
- ThisOrThatScreen: theme-token fixes for A/B options, mood chips, versus badge, progress, ChoicePromptBackdrop — all read from MaterialTheme.colorScheme. Bumps dark-mode legibility.
- ConversationScreen: bump PendingMediaChip retry/dismiss IconButtons to 48dp touch targets.
- PlayHubScreen / ActivityScreen / HomeScreen / SubscriptionScreen / OnboardingScreen / PairPromptScreen / PaywallScreen / LocalQuestionContent / OutcomeCheckInDialog / ChatComponents: assorted R13 polish.
- firestore.rules (n/a this batch), SettingsRepository, manual: doc + flag wiring.
- Manual: new C-DARK-UI-001 + C-ART-EDGE-002 landmines, Premium-unlock-modal pattern note.
2026-06-27 21:01:16 -05:00
null
361eff18e3
docs(manual): review pass 3 — routing route names, notification_queue reality, /questions server-only, conversations/messages data model, premium sharing, entitlement fields, daily reminder skip conditions, iOS tree fix
2026-06-27 15:27:14 -05:00
null
c167211323
docs(manual): review pass 2 — iOS pairing actually broken, notification routes corrected, repo tree fixes, schedules updated, reveal-flow read-path gotcha
2026-06-27 15:14:09 -05:00
null
439ae7ce51
docs(manual): review fixes — secure subdoc reveal flow, encryption version accuracy, anchor slug corrections, ToC/how-to updates, helper function list, gitignore case-sensitivity note
2026-06-27 15:00:47 -05:00
null
3924d63c7b
docs(manual): R10 architecture updates — game push semantics, foreground banner, deep-link routes, premium gate pattern, landmines section
2026-06-27 14:50:23 -05:00
null
95cad84cb5
brand: loading state, themes, manifest, art preview, pairing screen updates
2026-06-25 15:24:46 -05:00
null
fed91dbe46
brand: finalize app icon, brand docs, onboarding visuals, feature graphic
2026-06-25 14:52:21 -05:00
null
520eea2236
brand: update launcher foreground, feature graphic, auth visuals, brand docs
2026-06-25 14:48:57 -05:00
null
93b5599605
brand: add closer-mark SVGs (on-dark + on-light variants)
2026-06-25 14:44:31 -05:00
null
334cb079fa
brand: update app icon, iOS assets, Android drawables, brand docs (Pass H)
2026-06-25 14:34:27 -05:00
null
fa6d80602a
docs(brand): add asset-system.md, cross-link from visual-identity.md
2026-06-25 12:35:49 -05:00
null
54fdaf831f
docs(manual): fix placeholder notification function descriptions, add new collections, biometric flow, iOS gitignore note
2026-06-21 18:47:18 -05:00
null
578851964c
docs: write Engineering Reference Manual with verified facts, fix Bishop pass issues
2026-06-21 18:44:31 -05:00
null
dd91327548
docs: brand identity, copy guide, release checklists, store assets, README
2026-06-21 17:56:46 -05:00
null
af70280daa
feat: E2EE recovery flow, iOS parity updates, onboarding + pairing polish
2026-06-21 11:20:48 -05:00
null
62d99505c9
feat: subscription screen with clear pricing, restore, cancel instructions
2026-06-21 09:54:59 -05:00
null
dff86eb089
feat: settings polish, privacy strings, home partner state, proguard rules
2026-06-21 09:49:02 -05:00
null
c621c9fec5
chore: update store assets doc with 9 screenshots (batch v1.0.22)
2026-06-20 02:02:05 -05:00
null
38aedab962
chore: update README, screenshots, answer data source cleanup (batch v1.0.21)
2026-06-20 02:01:42 -05:00
null
a3993d08df
feat: implement partner-proof sealed answers (batches 1-8)
...
- UserKeyManager: per-user keypair stored in Android Keystore
- SealedAnswerEncryptor: one-time answer key, sealed:v1 ciphertext
- PendingAnswerKeyStore: local EncryptedSharedPreferences storage
- ReleaseKeyEncryptor: keybox:v1 encrypted to recipient public key
- SealedRevealManager: full reveal flow with mutual key release
- AnswerCommitment: SHA-256 commitment hash over canonical payload
- FirestoreDeviceKeyDataSource: public key CRUD
- FirestoreReleaseKeyDataSource: release key CRUD
- FirestoreAnswerDataSource: sealed answer writes with schemaVersion=3
- FirestoreCollections: sealed answer and release key paths
- firestore.rules: ownership, immutability, timing, prefix enforcement
- HomeViewModel: sealed answer state integration
- AnswerRevealScreen/ViewModel: sealed reveal flow with UX states
- CloserApp: initialize UserKeyManager on startup
- LocalAnswer model: schemaVersion field
- Unit tests: SealedAnswerEncryptor, ReleaseKeyEncryptor, AnswerCommitment
- Crypto test vectors: docs/crypto/sealed-answer-test-vectors.json
- .gitignore: add partner-proof build plan
2026-06-20 00:23:58 -05:00
null
c31177d52b
chore: remove dead invite code after Cloud Function migration (batch v0.2.19)
...
- Remove unused markAccepted from InviteRepository/Impl
- Remove unused loadedInvite field from InviteConfirmViewModel
- Fix deprecated getHttpsCallable result access
- Remove unused SetOptions import
2026-06-19 21:50:29 -05:00
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