ui: add Play listing assets

closes #32
This commit is contained in:
null 2026-08-20 02:14:08 -05:00
parent 53e6173497
commit 893d061400
15 changed files with 167 additions and 12 deletions

View File

@ -81,7 +81,7 @@ Where the two disagree, `PRODUCT_PLAN.md` is the specification and
| `docs/planning/` | `PRODUCT_PLAN` — the V1 specification. `PROJECT_PLAN` — the vision. Neither is the schedule; that is the tracker. |
| `docs/qa/` | `ClaudeQAPlan` (playbook, passes AH), `ClaudeQACoverage` (what each pass reached), `ClaudeReport` (the verdict) |
| `docs/architecture/` | modules, boundaries, data shapes, the migration table; `GUARDS.md`; `githooks/README.md` |
| `docs/design/` | `README.md` — tone, the four rules that settle arguments, and which specification sections own each surface. `BRAND_GUIDE.md` — the owner-supplied visual identity, which outranks `PRODUCT_PLAN.md` §39 on colour. `brand/` — the owner's source art, including the emblem the launcher icon is cut from. `dist/` — the onboarding illustration sources, and `splash.webp`, the lockup `docs/data/img/logo.webp` and `banner.webp` are generated from. `screenshots/` — captured app screenshots, for the product page on privacyllc.dev and the Play listing |
| `docs/design/` | `README.md` — tone, the four rules that settle arguments, and which specification sections own each surface. `BRAND_GUIDE.md` — the owner-supplied visual identity, which outranks `PRODUCT_PLAN.md` §39 on colour. `brand/` — the owner's source art, including the emblem the launcher icon is cut from and the Play listing exports. `dist/` — the onboarding illustration sources, and `splash.webp`, the lockup `docs/data/img/logo.webp` and `banner.webp` are generated from. `screenshots/` — captured app screenshots, for the product page on privacyllc.dev and the Play listing |
| `docs/security/` | `SECURITY` — threat model, the advertising boundary, logging rules. `SECURITY_CHECKLIST` — the pre-release list |
| `docs/history/` | `DEVELOPMENT_LOG` (dated, append-only), `HISTORY` (decisions and their reasons), `BATCH_LEDGER` (archived) |
| `docs/data/` | `README.md` — the rule, and why this folder cannot be exempted. `img/README.md` — the three required names, their dimensions and the 512 KB ceiling. `img/icon.webp`, `img/logo.webp`, `img/banner.webp` — the marks privacyllc.dev renders |

View File

@ -3,7 +3,7 @@
```
Status: Current
Owner: _null
Last reviewed: 2026-08-18
Last reviewed: 2026-08-20
Governs: the visual identity — palette, logo, iconography, typography, tone of artwork
Review trigger: A rebrand; any new artwork; any change to the palette or to the
logo, and in particular any change to the colours the calendar
@ -782,4 +782,18 @@ Visually:
+ **rose/plum botanical accent**
+ **soft lavender/pink gradients**
That combination is the core visual identity of **Privacy: Period Tracker**.
That combination is the core visual identity of **Privacy: Period Tracker**.
---
# 25. Google Play Listing Assets
The Play listing exports live in [`brand/play-store/`](brand/play-store/). They
derive from this guide rather than adding a new campaign direction: the feature
graphic uses the existing lockup composition, the Play icon uses the existing
app-card mark, and the screenshots come from seeded demo data.
The same claim discipline applies here as inside the app. Listing artwork may
say the app predicts a period window and protects privacy; it must not imply a
medical diagnosis, contraception, certainty about fertility, or real user
history.

View File

@ -3,7 +3,7 @@
```
Status: Current
Owner: _null
Last reviewed: 2026-08-18
Last reviewed: 2026-08-20
Governs: docs/design/**, core/designsystem/**, app/src/main/kotlin/**,
app/src/main/res/values/** — the design tokens, every user-facing
screen, and the product's tone and interface copy
@ -262,7 +262,7 @@ shipping in the app. [`dist/`](dist/) holds the sources and the reasoning — no
text painted into the pixels, no step numbers, and a forecast illustration that
names no fields so it cannot contradict the live one beside it.
The art still outstanding is tracked as issues #31, #32 and #44, not listed here.
Remaining artwork is tracked in the issue tracker, not listed here.
**Screenshots of the running app live in [`screenshots/`](screenshots/)** —
eleven frames from a seeded demo history, for the product page on privacyllc.dev
@ -270,6 +270,11 @@ and for the Play listing. Its README carries the seeded dates, the capture
recipe, and the rules every frame has to satisfy; the first of those is that a
screenshot of a period tracker is a screenshot of health data.
**The Play listing exports live in [`brand/play-store/`](brand/play-store/)** —
the required feature graphic, Play icon and phone screenshots. They are PNG
exports from the existing brand lockup and seeded screenshots, with Google's
current dimensions checked on 2026-08-20 and recorded beside the files.
The visual language is deliberately narrow — **overlapping circular forms** and
nothing else. §42's forbidden list (blood drops, tampons, pads, uterus imagery,
gender symbols, anatomy) is a product decision rather than squeamishness: this

View File

@ -0,0 +1,100 @@
# Google Play listing assets
```
Status: Current
Owner: _null
Last reviewed: 2026-08-20
Governs: docs/design/brand/play-store/**
Review trigger: Any Google Play preview asset requirement changing; any change
to the source screenshots, brand lockup or declared form factors
```
These are the upload-ready Google Play preview assets for issue #32. The source
of truth for requirements is
[Google's Play Console Help](https://support.google.com/googleplay/android-developer/answer/9866151?hl=en),
checked on 2026-08-20:
- Feature graphic: `1024 x 500`, JPEG or 24-bit PNG, no alpha.
- App icon: `512 x 512`, 32-bit PNG with alpha, max 1024 KB.
- Screenshots: at least two, up to eight per device type, JPEG or 24-bit PNG,
no alpha, each side `320..3840` px, and the long side no more than twice the
short side.
- Apps are more eligible for recommendation surfaces with at least four phone
screenshots at `1080 x 1920` or larger in `9:16`.
This app declares no Wear OS, TV, Automotive or XR surface in its manifest, so
the committed upload set is the phone listing set plus the required feature
graphic and icon. Tablet and Chromebook screenshots can be added here if the
Play Console asks for them at submission.
## Files
| File | Purpose | Dimensions | Format |
| --- | --- | --- | --- |
| `feature-graphic.png` | Required feature graphic | `1024 x 500` | 24-bit PNG |
| `icon-512.png` | Play listing icon | `512 x 512` | 32-bit PNG |
| `phone-screenshots/*.png` | Phone screenshots | `1080 x 1920` | 24-bit PNG |
## Upload alt text
| Asset | Alt text |
| --- | --- |
| Feature graphic | Privacy: Period Tracker lockup with calendar, shield and cycle ring |
| `05-privacy-promise.png` | Privacy promise explaining that cycle data is not sold |
| `06-reminder-privacy.png` | Reminder privacy choices with discreet, maximum privacy and direct modes |
| `08-today-forecast.png` | Today screen showing a period window and confidence label |
| `09-calendar.png` | Calendar showing logged, predicted, fertile and ovulation markers |
| `10-insights.png` | Insights screen showing learned cycle averages from seeded history |
| `11-settings-privacy.png` | Settings screen with notification, privacy and data controls |
| `01-onboarding-welcome.png` | Welcome screen with cycle rings and the app's opening promise |
The screenshots are top crops from the seeded demo captures in
[`../../screenshots/`](../../screenshots/). The source captures remain there
because their README records the demo history, the status-bar setup and the
privacy checks. Cropping from the top keeps the real app UI, removes only the
extra tall-device tail, and brings the assets under Play's aspect-ratio rule.
## Regenerate
From the repository root:
```bash
convert docs/data/img/banner.webp -resize 1024x500^ -gravity center \
-extent 1024x500 -strip PNG24:docs/design/brand/play-store/feature-graphic.png
convert docs/data/img/icon.webp -resize 512x512 -alpha set -strip \
-define png:color-type=6 docs/design/brand/play-store/icon-512.png
for f in \
docs/design/screenshots/05-privacy-promise.webp \
docs/design/screenshots/06-reminder-privacy.webp \
docs/design/screenshots/08-today-forecast.webp \
docs/design/screenshots/09-calendar.webp \
docs/design/screenshots/10-insights.webp \
docs/design/screenshots/11-settings-privacy.webp \
docs/design/screenshots/01-onboarding-welcome.webp
do
b=$(basename "$f" .webp)
convert "$f" -crop 1080x1920+0+0 +repage -strip \
PNG24:"docs/design/brand/play-store/phone-screenshots/$b.png"
done
```
Run this check before upload or commit:
```bash
identify -format '%f %wx%h %[channels] %b\n' \
docs/design/brand/play-store/feature-graphic.png \
docs/design/brand/play-store/icon-512.png \
docs/design/brand/play-store/phone-screenshots/*.png
```
## Review rules
- The screenshots must stay seeded demo data, never real period history.
- The status bar must show only demo furniture: time, wifi and battery, with no
notification visible.
- No asset may state or imply a medical, diagnostic or contraceptive claim.
- PRODUCT_PLAN.md §42's forbidden imagery list applies here too: no blood drops,
tampons, pads, uterus imagery, gender symbols or anatomical reproductive
graphics.

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 567 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

View File

@ -3,7 +3,7 @@
```
Status: Current
Owner: _null
Last reviewed: 2026-08-19
Last reviewed: 2026-08-20
Governs: docs/design/screenshots/** — the captured app screenshots and the state
they were taken from
Review trigger: Any screen in the set changing enough that its shot is no longer
@ -53,8 +53,9 @@ countdown instead, which is the screen the app is built around.
## Reproducing them
Light mode throughout: it matches the site's light aesthetic, and it avoids #44,
where dark mode's Welcome illustration is still a forecast scene.
Light mode throughout: it matches the site's light aesthetic and keeps the set
visually consistent. #44 is fixed now, so dark mode is no longer avoided because
of a known wrong Welcome illustration.
The status bar is SysUI demo mode, so all eleven are identical — 9:30, wifi, full
battery, nothing else:
@ -88,10 +89,13 @@ Each is a rule #32 states, and each was checked on this set rather than assumed:
## Format
WebP quality 86 at native 1080 × 2400, 520 KB for the set. Play's own required
sizes and counts are **confirmed in the Play Console at submission time**, not
from this file — the same rule the security checklist applies to the target-API
deadline.
WebP quality 86 at native 1080 × 2400, 520 KB for the set. The Play-ready phone
exports are top-cropped PNGs in
[`../brand/play-store/phone-screenshots/`](../brand/play-store/phone-screenshots/)
so they keep the real app UI while meeting Play's aspect-ratio rule. Play's own
required sizes and counts are **confirmed in the Play Console at submission
time**, not from this file — the same rule the security checklist applies to the
target-API deadline.
These are not the three marks privacyllc.dev renders for the project card. Those
live in [`../../data/img/`](../../data/img/) under fixed names, and that folder

View File

@ -32,6 +32,38 @@ written and stay true. It is exempt from review for the same reason a receipt is
## Entries
### 2026-08-20 (later) — Play listing assets created
Issue #32 is ready: the Play listing artwork now exists under
`docs/design/brand/play-store/`. The set includes the required feature graphic,
the 512 px Play icon and seven phone screenshots exported from the seeded demo
captures. The screenshots are top crops rather than resized screenshots, so they
keep the real app UI and land at Play's recommended `1080 x 1920` portrait
shape.
Google's Play Console Help was checked on 2026-08-20 before choosing the export
formats: feature graphic `1024 x 500`, screenshots as JPEG or 24-bit PNG with no
alpha and a long side no more than twice the short side, and at least four app
screenshots at `1080px+` for recommendation eligibility. The app manifest
declares no Wear OS, TV, Automotive or XR surface, so no extra form-factor asset
set was created.
The folder README records the upload alt text, regeneration commands and the
rules that matter for a period tracker: seeded demo data only, no notification
in the status bar, no medical or contraceptive claim, and none of §42's forbidden
imagery.
**What this proved:** `identify` reported `1024x500 srgb` for the feature
graphic, `512x512 srgba` for the Play icon, and seven `1080x1920 srgb` phone
screenshots. A failing validation script checked exact dimensions, channel
rules, Play screenshot aspect ratio and file size ceilings. `doc-triggers.py`
and `doc-claims.sh` were run after the docs updates; doc-claims passed with only
the repository's expected menu notices.
**Next action:** finish #31, the neutral incognito launcher label and icon.
**Blockers:** none.
### 2026-08-20 — Dark welcome artwork corrected
Issue #44 is fixed in the artwork set and in the shipping drawables. The dark