Closer/HISTORY.md

193 lines
8.7 KiB
Markdown
Raw Normal View History

# 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<Boolean>`.
- `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.