diff --git a/IOS_E2EE_STATUS.md b/IOS_E2EE_STATUS.md index 546bab3f..b2ab2b72 100644 --- a/IOS_E2EE_STATUS.md +++ b/IOS_E2EE_STATUS.md @@ -1,5 +1,10 @@ # iOS↔Android E2EE Parity — Status Memo +> **Status (stamped 2026-07-11): snapshot as of 2026-06-28; iOS work is PAUSED — the ship scope is +> Android-only (owner decision, see `release_guide.md`).** Still accurate as the resume-point memo +> for whenever iOS work restarts; nothing here has been invalidated, but nothing has advanced either +> (canonical-vector CI run still `TODO_ANDROID_RUN` per the Engineering Manual). +> > **Phase: iOS E2EE code-complete, parity verified in isolation, deployment pending Mac/CI infrastructure.** > **Author:** Ripley (Ripley subagent), 2026-06-28 > **Audience:** Next session (you, Scarlett, Bishop, Neo, future Claude), and anyone resuming the iOS E2EE work diff --git a/UI_UPGRADE.md b/UI_UPGRADE.md index 8bb334d4..e090205e 100644 --- a/UI_UPGRADE.md +++ b/UI_UPGRADE.md @@ -1,5 +1,10 @@ # Closer UI Upgrade +> **Status (stamped 2026-07-11): historical planning doc (written 2026-07-01), not a live tracker.** +> Much of its direction shipped via the R30 polish round (see `ClaudeReport.md` R30) and the brand +> system in `docs/brand/`. For current visual/brand backlog use `ClaudeBrandingReview.md` +> (BRAND-ICON-CUSTOM) — do not work items from this file without checking they aren't already done. + This document is the focused visual upgrade plan for making Closer feel more beautiful, polished, and emotionally specific without turning it into a decorative wellness app. The direction: keep the app calm and private, but make important relationship moments feel more intentional. diff --git a/docs/CopyMigration.md b/docs/CopyMigration.md index 873fae46..715d89b9 100644 --- a/docs/CopyMigration.md +++ b/docs/CopyMigration.md @@ -1,5 +1,13 @@ -# Copy migration — brand-voice copy → `CloserCopy` +# Copy migration — brand-voice copy → `CloserCopy` [CLOSED] +> **⛔ CLOSED (2026-07-11) — stopped by owner decision after Slice 1.** The ROI review concluded +> pure copy-relocation wasn't worth the churn; effort went to higher-value work instead (server/ +> removal, benefit-list reconciliation). **Slices 2–4 are CANCELLED, not pending.** The catalog's +> scope is frozen at paywall + subscription + age-gate (`ui/brand/CloserCopy.kt`). Also note: the +> 2026-07-11 "Closer Couples" in-app prose rename REWROTE many strings quoted below (e.g. the +> age-gate disclaimer is now "Closer Couples is an 18+ app.") — treat quoted copy as historical. +> Rename record: `docs/NameChange.md`. +> > Incremental migration of **brand-voice** hardcoded copy into the typed `CloserCopy` catalog. > Builds on the paywall + subscription slice (commit `51efff3f`). Status tracked per slice below. @@ -80,4 +88,5 @@ Three **domain-scoped** catalogs, by design (not a smell to unify): - **Slice 1 (age-gate): ✅ done.** Min-age error de-triplicated → `CloserCopy.AgeGate.ageError(minAge)`; both disclaimer variants + the duplicated DOB prompt consolidated. 6 call sites across SignUp{Screen,ViewModel} + CreateProfile{Screen,ViewModel} now source from the catalog. Compile clean. -- Slices 2–4: pending. +- Slices 2–4: **cancelled** (2026-07-11 close-out — see header). Several of their target strings were + since edited in place by the "Closer Couples" prose rename instead. diff --git a/docs/NameChange.md b/docs/NameChange.md index c0ff17c5..bd7352e2 100644 --- a/docs/NameChange.md +++ b/docs/NameChange.md @@ -96,6 +96,6 @@ Removed the two unreferenced banner-like generated-art files so there is a singl - **Launcher untouched:** `app_name` in `strings.xml` and `CFBundleDisplayName` in `Info.plist` both still "Closer". - No build required (no source touched); optional `./gradlew :app:assembleDebug` still succeeds unchanged. -## Pre-existing issue noted (NOT fixed here) +## Pre-existing issue noted (RESOLVED 2026-07-11) -`store-assets.md:106` — support URL `couplesconnect.app` vs the `closer.app` domain used elsewhere; unrelated to this rename, leave for separate cleanup. +The support-URL inconsistency (`couplesconnect.app` vs `closer.app`) is resolved in code — `ExternalLinks.kt` uses `https://closer.app/support`; `store-assets.md` §3 updated accordingly. Only the Play-console listing fields remain (set when the listing is created). diff --git a/docs/date-planning-roadmap.md b/docs/date-planning-roadmap.md index 91c3a0b0..8efa2b60 100644 --- a/docs/date-planning-roadmap.md +++ b/docs/date-planning-roadmap.md @@ -1,5 +1,10 @@ # Date Planning Feature Roadmap +> **Status (stamped 2026-07-11): historical vision doc (2026-06-16); the core shipped.** Date Match, +> Date Builder/Plan, Date Memories/Reflection, and match notifications are all live and QA-covered +> (`ClaudeQACoverage.md` Pass N). Remaining ideas here are unscheduled product backlog — pull them +> through `Future.md` if/when prioritized; don't treat this file as a commitment list. + ## Vision Build a complete Date Operating System for Closer — not a simple list of date ideas. diff --git a/docs/qa/private-mvp-checklist.md b/docs/qa/private-mvp-checklist.md index bae3377b..d6165992 100644 --- a/docs/qa/private-mvp-checklist.md +++ b/docs/qa/private-mvp-checklist.md @@ -1,5 +1,11 @@ -# Closer — Private MVP QA Checklist +# Closer — Private MVP QA Checklist [SUPERSEDED] +> **Status (stamped 2026-07-11): SUPERSEDED — do not run this checklist.** The live QA system is +> `ClaudeQAPlan.md` (playbook, passes A–P) with state in `ClaudeQACoverage.md` + `ClaudeReport.md`; +> it covers everything here plus security/E2EE/notifications/billing depth this list predates. It +> also references files since removed by the 2026-07-09 dead-file sweep. Kept only as a historical +> record of the 2026-06 MVP pass. +> > Manual testing checklist for the internal MVP build. Covers every top-level flow in the app and notes known gaps discovered during the 2025-06 QA pass. > Last updated: 2026-06-21 — reflects pairing security hardening, notification preferences, appearance screen, email invite removal, real PartnerHomeScreen, real SubscriptionScreen, ProGuard log stripping, strings.xml, and support URL fix. All 17 release blocker items resolved or pending deploy. diff --git a/docs/qa/ui-review.md b/docs/qa/ui-review.md index d0e1cf70..94d65724 100644 --- a/docs/qa/ui-review.md +++ b/docs/qa/ui-review.md @@ -1,5 +1,9 @@ # Batch 8 — Responsive Visual QA Code Review +> **Status (stamped 2026-07-11): completed historical batch (2026-07-02).** Its findings were fixed +> and are regression-covered by the recurring QA rounds (`ClaudeQACoverage.md` Pass C/J). Reference +> only — new responsive issues go through the live QA playbook, not this file. + ## Scope Reviewed Compose UI files under `app/src/main/java/app/closer/ui/` for responsive layout issues: - Missing `maxLines` + `TextOverflow.Ellipsis` in constrained containers diff --git a/docs/release/internal-testing-checklist.md b/docs/release/internal-testing-checklist.md index 90890e63..73927ed7 100644 --- a/docs/release/internal-testing-checklist.md +++ b/docs/release/internal-testing-checklist.md @@ -1,6 +1,13 @@ -# Closer — Internal Testing Build Checklist +# Closer — Internal Testing Build Checklist [SUPERSEDED] -> Steps to prepare, sign, and distribute an internal testing build for the private MVP. Assumes Android Gradle Plugin 8.7.3, Kotlin 2.0.21, minSdk 26, targetSdk/compileSdk 35, and `app.closer` applicationId. +> **Status (stamped 2026-07-11): SUPERSEDED by `docs/release/store-assets.md` (§5 signing, §8 +> pre-launch) and the ship-readiness plan (`release_guide.md`, Phases 1–2b), which reflect the +> current release-guard build config, keystore plan, and Play internal-testing path.** Also note a +> factual error below: the applicationId is `closer.app` — `app.closer` is the code namespace (the +> same swap that produced the Manage-subscription deep-link bug fixed in `4e807cb0`). Kept as +> historical context only. +> +> Steps to prepare, sign, and distribute an internal testing build for the private MVP. Assumes Android Gradle Plugin 8.7.3, Kotlin 2.0.21, minSdk 26, targetSdk/compileSdk 35, and ~~`app.closer`~~ **`closer.app`** applicationId. Internal testing should verify the product goal: **private, mutual-reveal relationship questions with real encryption and calmer UX**. diff --git a/docs/release/store-assets.md b/docs/release/store-assets.md index 1853d449..a0dce433 100644 --- a/docs/release/store-assets.md +++ b/docs/release/store-assets.md @@ -104,7 +104,7 @@ private rhythm for checking in, listening better, and making time for each other - [ ] Privacy policy URL defined and reachable: currently `https://closer.app/privacy`. - [ ] Terms of service URL defined and reachable: currently `https://closer.app/terms`. - [ ] Subscription terms URL defined and reachable: currently `https://closer.app/subscription-terms`. -- [ ] **Action needed**: Support URL currently points to `https://couplesconnect.app/support` in `ExternalLinks.kt`; migrate to `closer.app` domain and update store listing support/contact email. +- [x] ~~Support URL migration in code~~ **done in code** (verified 2026-07-11): `ExternalLinks.kt` now uses `https://closer.app/support` (the old `couplesconnect.app` claim was stale). **Remaining action is console-only**: set the store-listing support URL / contact email to the `closer.app` values when the listing is created. - [ ] All legal pages load over HTTPS. - [ ] Privacy policy accurately describes data collected (answers, FCM tokens, purchase data, couple pairing info). diff --git a/docs/standardization-review.md b/docs/standardization-review.md index 9f92eb94..b63ee171 100644 --- a/docs/standardization-review.md +++ b/docs/standardization-review.md @@ -1,5 +1,10 @@ # Code standardization & modernization review (2026-07-06) +> **Status (stamped 2026-07-11): point-in-time review; the "Applied" section shipped, the rest is +> backlog.** Unapplied items overlap the refactor backlog tracked in `Future.md` (session-game +> engine dedupe, DispatcherProvider injection, error-surfacing standardization) — `Future.md` is +> the live list; this file is the evidence/rationale record behind it. + A grounded pass over the Android app (313 Kotlin files), Cloud Functions (TypeScript), and build. Each item is a *real, measured* inconsistency (with counts), not generic advice. diff --git a/iphone/ARCHITECTURE_AUDIT.md b/iphone/ARCHITECTURE_AUDIT.md index 0d31dce2..ca0fd736 100644 --- a/iphone/ARCHITECTURE_AUDIT.md +++ b/iphone/ARCHITECTURE_AUDIT.md @@ -1,5 +1,12 @@ # Closer iOS App — Architecture Audit +> **Status (stamped 2026-07-11): STALE in places — verify against current Android source before +> porting.** Known drift since this was generated: the `server/` Express backend it references was +> DELETED (Cloud Functions is the only backend); the RevenueCat webhook auth is now HMAC-SHA256 +> (`X-RevenueCat-Webhook-Signature`), not Ed25519; a 2026-07-09 dead-file sweep removed several +> Android classes it may cite; in-app prose now reads "Closer Couples". iOS work is paused +> (Android-only ship). Canonical architecture reference: `docs/Engineering_Reference_Manual.md`. +> > Generated from the Android (Kotlin) codebase at `app/src/main/java/app/closer/`, > Cloud Functions at `functions/src/`. >