docs: reconcile stale docs with project reality (Batch 1 doc hygiene)
Every point-in-time doc now carries an explicit status header so no one works
from a dead plan or stale claim:
- CopyMigration.md: CLOSED — migration stopped by owner decision after Slice 1;
Slices 2-4 cancelled (several target strings since rewritten by the Closer
Couples prose rename anyway).
- store-assets.md + NameChange.md: the support-URL 'couplesconnect.app' claim
was stale — ExternalLinks.kt already uses closer.app/support; remaining action
is Play-console listing fields only.
- internal-testing-checklist.md: SUPERSEDED by store-assets.md + release_guide;
also corrected its applicationId error (app.closer -> closer.app, the same
namespace swap behind the 4e807cb0 deep-link bug).
- private-mvp-checklist.md: SUPERSEDED by the ClaudeQAPlan system.
- UI_UPGRADE / standardization-review / ui-review / date-planning-roadmap /
IOS_E2EE_STATUS / iphone ARCHITECTURE_AUDIT: stamped historical/paused with
pointers to the live sources (Future.md, ClaudeBrandingReview, ERM).
NOT touched: DEVELOPMENT_LOG.md (verified alive — newest entry 2026-07-08,
prepend-ordered; earlier 'log is dead' read was wrong) and the Engineering
Reference Manual (another agent's Phase-4 review owns its drift).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
654be1feff
commit
08e9be626e
|
|
@ -1,5 +1,10 @@
|
||||||
# iOS↔Android E2EE Parity — Status Memo
|
# 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.**
|
> **Phase: iOS E2EE code-complete, parity verified in isolation, deployment pending Mac/CI infrastructure.**
|
||||||
> **Author:** Ripley (Ripley subagent), 2026-06-28
|
> **Author:** Ripley (Ripley subagent), 2026-06-28
|
||||||
> **Audience:** Next session (you, Scarlett, Bishop, Neo, future Claude), and anyone resuming the iOS E2EE work
|
> **Audience:** Next session (you, Scarlett, Bishop, Neo, future Claude), and anyone resuming the iOS E2EE work
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,10 @@
|
||||||
# Closer UI Upgrade
|
# 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.
|
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.
|
The direction: keep the app calm and private, but make important relationship moments feel more intentional.
|
||||||
|
|
|
||||||
|
|
@ -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.
|
> 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.
|
> 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)`;
|
- **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
|
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.
|
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.
|
||||||
|
|
|
||||||
|
|
@ -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".
|
- **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.
|
- 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).
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,10 @@
|
||||||
# Date Planning Feature Roadmap
|
# 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
|
## Vision
|
||||||
|
|
||||||
Build a complete Date Operating System for Closer — not a simple list of date ideas.
|
Build a complete Date Operating System for Closer — not a simple list of date ideas.
|
||||||
|
|
|
||||||
|
|
@ -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.
|
> 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.
|
> 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.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
# Batch 8 — Responsive Visual QA Code Review
|
# 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
|
## Scope
|
||||||
Reviewed Compose UI files under `app/src/main/java/app/closer/ui/` for responsive layout issues:
|
Reviewed Compose UI files under `app/src/main/java/app/closer/ui/` for responsive layout issues:
|
||||||
- Missing `maxLines` + `TextOverflow.Ellipsis` in constrained containers
|
- Missing `maxLines` + `TextOverflow.Ellipsis` in constrained containers
|
||||||
|
|
|
||||||
|
|
@ -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**.
|
Internal testing should verify the product goal: **private, mutual-reveal relationship questions with real encryption and calmer UX**.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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`.
|
- [ ] Privacy policy URL defined and reachable: currently `https://closer.app/privacy`.
|
||||||
- [ ] Terms of service URL defined and reachable: currently `https://closer.app/terms`.
|
- [ ] Terms of service URL defined and reachable: currently `https://closer.app/terms`.
|
||||||
- [ ] Subscription terms URL defined and reachable: currently `https://closer.app/subscription-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.
|
- [ ] All legal pages load over HTTPS.
|
||||||
- [ ] Privacy policy accurately describes data collected (answers, FCM tokens, purchase data, couple pairing info).
|
- [ ] Privacy policy accurately describes data collected (answers, FCM tokens, purchase data, couple pairing info).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,10 @@
|
||||||
# Code standardization & modernization review (2026-07-06)
|
# 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
|
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.
|
item is a *real, measured* inconsistency (with counts), not generic advice.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
# Closer iOS App — Architecture Audit
|
# 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/`,
|
> Generated from the Android (Kotlin) codebase at `app/src/main/java/app/closer/`,
|
||||||
> Cloud Functions at `functions/src/`.
|
> Cloud Functions at `functions/src/`.
|
||||||
>
|
>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue