docs(history): fix markdown lint issues
This commit is contained in:
parent
b2a04b7187
commit
784ba3b81d
|
|
@ -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<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.
|
||||
Loading…
Reference in New Issue