Closer/HISTORY.md

8.7 KiB

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.
  • 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.