# Closer — History ## v0.2.1 — README: Store positioning & pricing philosophy — 2026-06-21 - **Store tagline** added: *"Private daily questions for couples who want honest answers before shared conversations."* - **Pricing philosophy** added with a proactive contrast to Paired's known trial and cancellation friction: - No shady trials, no hidden caps. - One subscription per couple, not per person. - Clear trial wording, easy restore, straightforward cancellation. - **Free tier** expanded and honestly described: no time limits, no artificial daily caps, and 6,000+ prompts included for free. - **Premium tier** reworded with per-couple positioning and expanded feature clarity. ## v0.2.0 — Release Gap Fixes — 2026-06-17 - `DateBuilderScreen`: Material 3 `DatePicker` and `TimeInput` dialogs replaced the TODO placeholders. - `QuestionJsonParser`: `Log.e` calls are wrapped in `BuildConfig.DEBUG` guards. - `build.gradle.kts`: TODO comment added for the `RC_API_KEY` placeholder. - `ExternalLinks`: TODO comments added for placeholder URLs. ## v0.1.9 — QA & Release Readiness — 2026-06-17 - `docs/qa/private-mvp-checklist.md`: comprehensive manual QA checklist for onboarding, home, questions, dates, settings, paywall, notifications, and edge cases. - `docs/release/internal-testing-checklist.md`: signing config, Firebase setup, test accounts, and App Distribution steps. - `docs/release/store-assets.md`: Play Store asset checklist, content rating, pricing, and known gaps. - Code QA scan findings: - TODOs in `DateBuilderScreen.kt` for date/time picker placeholders. - Debug logging in `QuestionJsonParser.kt` with `android.util.Log`. - No `com.couplesconnect` package references remain; all are `app.closer`. - Privacy and Terms URLs are placeholders until `closer.app` is live. ## v0.1.8 — Privacy & Terms Links — 2026-06-17 - `ExternalLinks` utility added with URL constants and `openUrl` helper using `Intent.ACTION_VIEW` plus fallback handling. - `SettingsScreen`: Legal section with tappable Privacy Policy and Terms of Service rows. - `PaywallScreen`: Privacy/Terms text links and subscription terms disclaimer added at the bottom. ## v0.1.7 — Reminder Notifications — 2026-06-17 - `AppMessagingService`: FCM token storage in Firestore and data message handling with quiet-hours suppression. - `TokenRegistrar`: fetches FCM token and device metadata, then writes it to Firestore. - `NotificationPermissionHelper`: Android 13+ `POST_NOTIFICATIONS` flow with rationale check. - `QuietHours` data class added with DataStore persistence via `SettingsDataStore`. - `SettingsRepository` updated with quiet-hours preferences. - Cloud Functions added for `sendDailyQuestionReminder` and `sendPartnerAnsweredNotification`, both callable and auth-gated. - `NotificationModule` Hilt DI added for Firebase Messaging. - `FirestoreUserDataSource` and `UserRepository`: `storeTokenMetadata()` added. ## v0.1.6 — Server-Side Entitlement Sync — 2026-06-17 - Cloud Functions bootstrap added: `package.json`, `tsconfig.json`, `firebase-admin`, and `firebase-functions`. - `revenueCatWebhook` HTTPS handler added for `TRANSFER`, `RENEWAL`, `CANCELLATION`, `EXPIRATION`, and `BILLING_ISSUE`. - `syncEntitlement` callable function added for forced re-sync. - `entitlementLogic.ts` added with idempotent Firestore writes. - `EntitlementChecker` interface added with `isPremium(): Flow`. - `FirestoreEntitlementChecker` added with real-time Firestore observation and RevenueCat fallback. - `RevenueCatBillingRepository` updated to push `CustomerInfo` to `EntitlementChecker`. - Three ViewModels updated to consume the `isPremium()` Flow. - `functions/node_modules` added to `.gitignore`. ## v0.1.5 — RevenueCat + Paywall — 2026-06-17 - RevenueCat SDK `v8.20.0` wired in `build.gradle.kts`. - `BillingRepository` interface added with `BillingState` sealed class. - `RevenueCatBillingRepository` added with `getOfferings`, `purchasePackage`, `restorePurchases`, and `getCustomerInfo`. - `ActivityProvider` added for safe foreground `Activity` reference. - RevenueCat initialization added in `CloserApp`. - `PaywallScreen` added with `CloserTheme` styling, benefits list, product options, and purchase/restore flow. - `PaywallViewModel` added with StateFlow pattern. - Hilt DI binding added in `RepositoryModule`. - `BuildConfig.RC_API_KEY` added from `local.properties` with placeholder fallback. ## v0.1.4 — Partner Invite Flow Polish + Responsive QA — 2026-06-17 - `CreateInviteScreen`: reduced vertical emptiness, Copy/Share button row, and "Accept instead" as a full-width `TextButton`. - `AcceptInviteScreen`: back affordance, `navigateBackOrHome` wiring, and tightened spacing. - `InviteConfirmScreen`: back affordance, reduced vertical emptiness, and `heightIn` on buttons. - Responsive QA pass across all screens: text ellipsis, `navigationBarsPadding`, 48dp touch targets, and spacing standardization. - QA doc created at `docs/qa/ui-review.md`. ## v0.1.3 — Settings & Partner State Polish — 2026-06-16 - Settings profile card shows "Local profile" state instead of fake user data. - Partner row is fully tappable with chevron and icon feedback. - Destructive "Leave couple" removed from main Settings and moved to `RelationshipSettings`. - Privacy & Terms separated from Delete account. - `AccountScreen` shows proper local profile state with disabled sign-in/export. - `DeleteAccountScreen` requires explicit checkbox acknowledgement. - `CreateInviteScreen` polished with rounded card and fallback states. ## v0.1.2 — Date Builder + Bucket List + UI — 2026-06-16 - `DatePlanPreference`, `DatePlan`, and `DatePlanSuggestion` domain models added. - `BucketListItem` and `BucketListCategory` domain models added. - Room entities and DAOs added for `date_plan_preferences` and `date_plans`. - `FirestoreDatePlanDataSource` and `FirestoreBucketListDataSource` added. - `DatePlanRepository` and `BucketListRepository` interfaces and implementations added. - `DateBuilderScreen`, `DateBuilderViewModel`, `BucketListScreen`, and `BucketListViewModel` added. - Navigation routes added for `date_builder` and `bucket_list`. - Firestore rules added for `date_plans`, `date_plan_preferences`, and `bucket_list`. - `AppDatabase` updated with new entities and DAOs. - Hilt DI bindings added. ## v0.1.1 — Date Match MVP Phase 1 — 2026-06-16 - `DateIdea`, `DateSwipe`, `DateMatch`, and `DateMatchSuggestion` domain models added. - `FirestoreDateSwipeDataSource` and `FirestoreDateMatchDataSource` added. - `DateMatchRepository` interface and implementation added. - `DateIdeaSeed` added with 30+ date ideas across seven categories. - `DateMatchScreen`, card-stack swipe UI, and `DateMatchViewModel` added. - `DateMatchesScreen`, suggestions list, and `DateMatchesViewModel` added. - Firestore rules added for `date_swipes`, `date_matches`, and `date_ideas`. - Hilt DI bindings added. - Navigation routes added for `date_match` and `date_matches`. - Date planning roadmap document added. ## v0.1.0 — Stack Migration: Supabase → Firebase / New Plan — 2026-06-15 - **Full architecture revision** based on `PLAN.md`. - **Backend:** Supabase → Firebase with Auth, Firestore, Cloud Functions, FCM, Remote Config, Analytics, and Crashlytics. - **Payments:** None → RevenueCat for subscriptions and entitlements. - **DI:** Manual → Hilt. - **Local storage:** None → Room and DataStore. - **New features:** spin-wheel question mode and email partner invites. - **Batch structure:** 12 old batches → 11 new implementation batches with acceptance checks. - **Version reset:** Phase 1 now uses `0.1.x`. - **Supabase dependencies replaced** in Gradle build with Firebase BOM, Hilt, Room, and RevenueCat. - Project docs updated: - `PROJECT.md` rewritten for the Firebase + RevenueCat stack. - `STRUCTURE.md` rewritten with new architecture and agent roles. - `FUTURE.md` rewritten with full `PLAN.md` content and all 11 implementation batches. - Gradle build file updated for Firebase BOM, Hilt, Room, and RevenueCat. ## v0.0.1 — Android Project Bootstrap — 2026-06-15 - Kotlin + Jetpack Compose + Material 3 project scaffolded. - Gradle Kotlin DSL with compile SDK 35, min SDK 26, and target SDK 35. - Compose BOM `2025.01.01`, Navigation Compose, Lifecycle, and Supabase SDK stubs added. - Theme added with warm palette, light color scheme, and dark color scheme. - Domain models added: `User.kt` and `Couple.kt` placeholder. - `./gradlew assembleDebug` completed successfully with 35 tasks. ## v1.0.2 — 2026-05-13 (Old RN/Expo stack) - Expo Router tab layout with four tabs. ## v1.0.1 — 2026-05-13 (Old RN/Expo stack) - Expo project bootstrap. ## 2026-05-12 — Project Initiated - Project initiated.