play images: tablet, TV and Wear sets are optional; play.tablets switch (default: tablet renders exist); a missing optional set never deletes Play's images without --prune

A phone-only project aborted with 'no sevenInchScreenshots'. Play requires the 512 icon, the 1024x500 feature graphic and at least 2 screenshots (Play Console Help answer 9866151). play images uploads what exists and prints an info line for missing optional sets; play.tablets true makes missing tablet sets an error in shots render/check/gallery, validate and play images. Pitfall 19.
This commit is contained in:
CRTkafa 2026-10-12 08:21:03 +08:00
parent 18fde37b9b
commit a9261a8052
18 changed files with 364 additions and 83 deletions

View file

@ -16,8 +16,8 @@ iOS Simulator capture needs macOS + Xcode (`xcrun`); Android capture needs `adb`
| ios65 | 1284 x 2778 | App Store 6.5" (`APP_IPHONE_65`) |
| ipad13 | 2064 x 2752 | App Store 13" iPad (`APP_IPAD_PRO_3GEN_129`), required when the app runs on iPad; only with `apple.ipad: true` |
| play | 1080 x 1920 | Play phone (2-8, ratio at most 2:1) |
| tab7 | 1080 x 1920 | Play 7" tablet (tablet frames, Android tablet body) |
| tab10 | 1440 x 2560 | Play 10" tablet |
| tab7 | 1080 x 1920 | Play 7" tablet (tablet frames, Android tablet body); optional, see `play.tablets` |
| tab10 | 1440 x 2560 | Play 10" tablet; optional, see `play.tablets` |
| feature | 1024 x 500 | Play feature graphic (required) |
Sources (re-check before a release; Apple renames display classes often):
@ -42,6 +42,13 @@ to the 13" iPad screen (1032 x 1352 CSS px @2x below a 24 px bar), so an `iPad P
simulator screenshot fits after the bar is cropped. Play tablet sizes (tab7 / tab10) reuse the same tablet frames, drawn
in a plain Android tablet body instead of the iPad one.
**Play tablets are optional.** Play requires the 512 x 512 icon, the 1024 x 500 feature graphic and at least 2
screenshots (answer 9866151 above); 7" / 10" tablet screenshots are optional, but without them the app is not eligible
for tablet featuring. `play.tablets` decides: unset = true when tablet renders (tab7/ or tab10/) already exist, else
false; `false` = `shots render`, `shots check`, `shots gallery`, `validate` and `play images` never ask for them;
`true` = they are rendered, and missing ones are errors. A phone-only project needs no setting: `play images` uploads
the icon, feature graphic and phone screenshots and prints `tablet screenshots: none (optional; ...)`.
## Steps
1. **Screenshot switches.** Give the app or game params for screenshots: language, demo data or a fixed seed, no ads /
analytics / purchase UI, skip onboarding or the tutorial, jump to a screen or level, freeze at a moment. Frames must
@ -119,6 +126,8 @@ in a plain Android tablet body instead of the iPad one.
only issues, search) and light / dark. Tiles with store check errors are outlined red, warnings amber, with the
message under the tile. Show the owner this page (or a screenshot of it) before uploading.
10. **Upload.** `storebound play images` and `storebound apple screenshots` (both idempotent, background + log).
`play images` uploads only the sets that exist (tablet / TV / Wear when rendered) and never deletes a set Play has
but the renders lack: the dry run shows `keeps <type> on Play`; `--prune` (only on the owner's word) deletes them.
## A/B variants and store experiments
`shots.variants.<id>`: `scenes` (order / subset), `copy` (a JSON merged over the base copy, only what changes),