Closer/docs/NameChange.md

85 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# App rename: "Closer" → "Closer Couples" (store / marketing tier only)
> Audit + decision record for renaming the product's public name to **"Closer Couples"**.
> Status: **executed in repo.** Store-console changes remain external owner steps.
## Context
After auditing every occurrence of the name across Android, iOS, images, and docs, the chosen approach is a deliberate **two-tier branding** outcome:
- **Store & marketing name** = "Closer Couples"
- **Installed-app name** (home-screen launcher label + every in-app string) **stays "Closer"** — it fits under the icon ("Closer Couples" at 14 chars truncates to "Closer Coupl…") and avoids a full in-app rewrite.
**Most important consequence:** no code changes, no rebuild, no app re-release. And critically — **the only thing users actually see change (the store listing title + the feature graphic) is set in the Google Play / App Store console, which is an EXTERNAL step performed by the owner.** Editing this repo does not rename anything that is live; the repo work is (a) the source-of-truth feature-graphic asset, (b) doc/record housekeeping. The wordless C-heart-keyhole icon/logo is unaffected (icon SVG sources contain zero `<text>`).
## Technical identifiers that must NOT change
Renaming any of these breaks builds / Firebase / the Play listing:
`namespace app.closer` · `applicationId closer.app` · package `app.closer.*` + `class CloserApp` · deep-link host `closer.app` + `closer://` scheme · Firebase `closer-app-22014` (`google-services.json`, `GoogleService-Info.plist`) · iOS `PRODUCT_BUNDLE_IDENTIFIER app.closer.iphone` + `bundleIdPrefix app.closer` + product/target/scheme `Closer` · SPM package `Closer` · Gradle `rootProject.name "Closer"` · resource filenames (`closer_launcher_*`, `ic_notification_closer`, `ic_launcher*`) · XML styles `Theme.Closer[.Splash]` · entitlement id `closer_premium` · crypto AAD constants.
## What does NOT change (per the chosen tier)
- **Android launcher label** — `app/src/main/res/values/strings.xml``app_name` stays **"Closer"**.
- **iOS home-screen label** — `iphone/Closer/Info.plist``CFBundleDisplayName` stays **"Closer"** (`CFBundleName`/`PRODUCT_NAME` untouched).
- **All ~25 in-app copy strings** stay "Closer" (paywall, onboarding/age-gate, settings, widget, invite share text, privacy `strings.xml:95-96`, share card, iOS onboarding, etc.).
- **Wordmark logos** (onboarding, auth alt-text, widget, share card) stay "Closer" → their asserting tests stay green, untouched.
- **Internal engineering/brand-system docs** using "Closer" as codename/design-system name (`DEVELOPMENT_LOG.md`, `SECURITY.md`, `Future.md`, `Engineering_Reference_Manual`, the `Claude*.md` reports, `docs/brand/asset-system.md` "Closer Artwork Asset System", `docs/brand/generated-art/glyphs/README.md` "Closer G-set").
## Changes to make (in-repo)
### 1. Store feature graphic (the one required image) — `docs/store/`
The exhaustive wordmark-SVG list is exactly three files; only this one is store-facing (the other two are unreferenced internal art — see §5).
- Completed: `docs/store/sources/feature-graphic.svg` now uses `Closer Couples` at `font-size="58"`, with the three small card icons/headlines/sublabels centered inside their cards.
- Completed: `docs/store/feature-graphic-1024x500.png` was re-exported from the SVG (1024×500, **no alpha**) — see re-export procedure.
### 2. Store-listing doc — `docs/release/store-assets.md`
- Completed: title, app-name checklist, full-description prose, and §9 inventory now use **"Closer Couples"** while documenting that the launcher label remains **"Closer"**.
### 3. `README.md` — product-name references only
Completed: `<h1>`, feature-graphic alt text, and product-facing prose use "Closer Couples". Codename/dir/scheme mentions (`iphone/Closer`, `Closer.xcodeproj`, `-scheme Closer`) remain unchanged.
### 4. `docs/brand/visual-identity.md` — product-name prose (consistency, optional)
Completed: product-name prose uses "Closer Couples"; asset paths stay unchanged.
### 5. Two internal `generated-art` feature graphics — OPTIONAL (not store-facing)
`docs/brand/generated-art/closer_app_explainer_feature.svg` + `closer_e2ee_privacy_feature.svg` render "Closer" but are referenced by no store/README doc — internal exploration art. Update their `<text>` + re-export **only if** internal consistency is wanted; not required for the rename.
## Feature-graphic re-export procedure (the installed tooling can't do it naively)
`rsvg-convert` / `inkscape` / `resvg` are **not installed**, and ImageMagick's SVG delegate is wired to the missing `rsvg-convert`, so a bare `convert file.svg file.png` falls back to ImageMagick's native renderer and **will mangle** this SVG's `feDropShadow` filters, gradients, and embedded `<image>`. Use the rasterizer that IS present:
- **Headless Chrome** (`google-chrome` is installed) — pixel-accurate; **DejaVu Sans Bold is installed**, so text renders correctly.
- The SVG's `<image href="../../brand/sources/…png">` is **relative to `docs/store/sources/`**, so serving the repo root and loading the SVG over `http://` resolves the embedded icon correctly:
```sh
python3 -m http.server 8099 & # or: npx http-server -p 8099 (node is available)
google-chrome --headless --disable-gpu --hide-scrollbars \
--window-size=1024,500 --screenshot=/tmp/fg.png \
"http://localhost:8099/docs/store/sources/feature-graphic.svg"
```
- **Flatten alpha** (Play requires no alpha; Chrome screenshots carry an alpha channel — the opaque `#24122F` rect covers it visually but the channel persists):
```sh
convert /tmp/fg.png -background '#24122F' -flatten -alpha off docs/store/feature-graphic-1024x500.png
```
- **Fallback** if headless Chrome misbehaves (sandbox/sizing): the corrected `.svg` is the source of truth — commit it and re-export the PNG with proper design tooling before uploading to Play Console. Per `store-assets.md:200`, never hand-edit the raster; always regenerate from the SVG.
## External steps (owner performs — outside the repo; this is what actually renames the app)
- **Google Play Console** → store listing → **App name = "Closer Couples"**, paste the updated description, upload the re-exported feature graphic.
- **App Store Connect** (when iOS ships) → app name "Closer Couples".
- Heads-up: (a) Play title policy allows a descriptor addition — "Closer" → "Closer Couples" is a clear same-brand superset, low risk, but a launcher label that differs from the store title is worth a sanity check at review; (b) `store-assets.md:14`'s trademark check should be re-run against the **new** name.
## Verification
- Re-exported `feature-graphic-1024x500.png`: visibly reads "Closer Couples", legible, no clipping/overlap with the icon or the three cards; confirm **1024×500 and no alpha** (`identify -verbose … | grep -iE 'Geometry|Alpha|Type'`).
- Grep the touched docs for leftover standalone "Closer" that should be "Closer Couples" (excluding codename/dir/scheme + technical URLs).
- **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)
`store-assets.md:106` — support URL `couplesconnect.app` vs the `closer.app` domain used elsewhere; unrelated to this rename, leave for separate cleanup.