|
|
@ -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/planning/` | `PRODUCT_PLAN` — the V1 specification. `PROJECT_PLAN` — the vision. Neither is the schedule; that is the tracker. |
|
||||||
| `docs/qa/` | `ClaudeQAPlan` (playbook, passes A–H), `ClaudeQACoverage` (what each pass reached), `ClaudeReport` (the verdict) |
|
| `docs/qa/` | `ClaudeQAPlan` (playbook, passes A–H), `ClaudeQACoverage` (what each pass reached), `ClaudeReport` (the verdict) |
|
||||||
| `docs/architecture/` | modules, boundaries, data shapes, the migration table; `GUARDS.md`; `githooks/README.md` |
|
| `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/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/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 |
|
| `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 |
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
```
|
```
|
||||||
Status: Current
|
Status: Current
|
||||||
Owner: _null
|
Owner: _null
|
||||||
Last reviewed: 2026-08-18
|
Last reviewed: 2026-08-20
|
||||||
Governs: the visual identity — palette, logo, iconography, typography, tone of artwork
|
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
|
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
|
logo, and in particular any change to the colours the calendar
|
||||||
|
|
@ -783,3 +783,17 @@ Visually:
|
||||||
+ **soft lavender/pink gradients**
|
+ **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.
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
```
|
```
|
||||||
Status: Current
|
Status: Current
|
||||||
Owner: _null
|
Owner: _null
|
||||||
Last reviewed: 2026-08-18
|
Last reviewed: 2026-08-20
|
||||||
Governs: docs/design/**, core/designsystem/**, app/src/main/kotlin/**,
|
Governs: docs/design/**, core/designsystem/**, app/src/main/kotlin/**,
|
||||||
app/src/main/res/values/** — the design tokens, every user-facing
|
app/src/main/res/values/** — the design tokens, every user-facing
|
||||||
screen, and the product's tone and interface copy
|
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
|
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.
|
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/)** —
|
**Screenshots of the running app live in [`screenshots/`](screenshots/)** —
|
||||||
eleven frames from a seeded demo history, for the product page on privacyllc.dev
|
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
|
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.
|
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
|
The visual language is deliberately narrow — **overlapping circular forms** and
|
||||||
nothing else. §42's forbidden list (blood drops, tampons, pads, uterus imagery,
|
nothing else. §42's forbidden list (blood drops, tampons, pads, uterus imagery,
|
||||||
gender symbols, anatomy) is a product decision rather than squeamishness: this
|
gender symbols, anatomy) is a product decision rather than squeamishness: this
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
After Width: | Height: | Size: 142 KiB |
|
After Width: | Height: | Size: 184 KiB |
|
After Width: | Height: | Size: 586 KiB |
|
After Width: | Height: | Size: 708 KiB |
|
After Width: | Height: | Size: 567 KiB |
|
After Width: | Height: | Size: 300 KiB |
|
After Width: | Height: | Size: 353 KiB |
|
After Width: | Height: | Size: 326 KiB |
|
After Width: | Height: | Size: 214 KiB |
|
|
@ -3,7 +3,7 @@
|
||||||
```
|
```
|
||||||
Status: Current
|
Status: Current
|
||||||
Owner: _null
|
Owner: _null
|
||||||
Last reviewed: 2026-08-19
|
Last reviewed: 2026-08-20
|
||||||
Governs: docs/design/screenshots/** — the captured app screenshots and the state
|
Governs: docs/design/screenshots/** — the captured app screenshots and the state
|
||||||
they were taken from
|
they were taken from
|
||||||
Review trigger: Any screen in the set changing enough that its shot is no longer
|
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
|
## Reproducing them
|
||||||
|
|
||||||
Light mode throughout: it matches the site's light aesthetic, and it avoids #44,
|
Light mode throughout: it matches the site's light aesthetic and keeps the set
|
||||||
where dark mode's Welcome illustration is still a forecast scene.
|
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
|
The status bar is SysUI demo mode, so all eleven are identical — 9:30, wifi, full
|
||||||
battery, nothing else:
|
battery, nothing else:
|
||||||
|
|
@ -88,10 +89,13 @@ Each is a rule #32 states, and each was checked on this set rather than assumed:
|
||||||
|
|
||||||
## Format
|
## Format
|
||||||
|
|
||||||
WebP quality 86 at native 1080 × 2400, 520 KB for the set. Play's own required
|
WebP quality 86 at native 1080 × 2400, 520 KB for the set. The Play-ready phone
|
||||||
sizes and counts are **confirmed in the Play Console at submission time**, not
|
exports are top-cropped PNGs in
|
||||||
from this file — the same rule the security checklist applies to the target-API
|
[`../brand/play-store/phone-screenshots/`](../brand/play-store/phone-screenshots/)
|
||||||
deadline.
|
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
|
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
|
live in [`../../data/img/`](../../data/img/) under fixed names, and that folder
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,38 @@ written and stay true. It is exempt from review for the same reason a receipt is
|
||||||
|
|
||||||
## Entries
|
## 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
|
### 2026-08-20 — Dark welcome artwork corrected
|
||||||
|
|
||||||
Issue #44 is fixed in the artwork set and in the shipping drawables. The dark
|
Issue #44 is fixed in the artwork set and in the shipping drawables. The dark
|
||||||
|
|
|
||||||