diff --git a/HISTORY.md b/HISTORY.md new file mode 100644 index 00000000..da89231d --- /dev/null +++ b/HISTORY.md @@ -0,0 +1,192 @@ +# 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.