play: a new language is created with everything Play needs to commit it (icon, feature graphic, phone and tablet screenshots); play images creates a missing listing

This commit is contained in:
CRTkafa 2026-10-24 19:46:57 +08:00
parent 2ec1f0ab13
commit ed8d138a8e
7 changed files with 172 additions and 32 deletions

View file

@ -1239,15 +1239,21 @@ that fails without the fix (see CONTRIBUTING.md).
`cli/lib/credentials.ts` resolves relative credential paths from the project and `ascKeyFile` hands xcodebuild an
absolute path (`tests/build-sign.test.ts`).
## 102. A new Play language: `play listing` 403 "no high resolution icon set for language", `play images` skips it
- **Symptom:** adding a language (tr-TR) to an existing app, `play listing --yes` failed at the edit commit with 403
"This app has no high resolution icon set for language tr-TR", while `play images` said "skipped tr-TR: no Play
## 102. A new Play language: commit 403 "no high resolution icon" / "too few screenshots for language", `play images` skips it
- **Symptom:** adding a language (tr-TR) to an existing app, `play listing --write --yes` created the listing and
uploaded the icon and feature graphic, then the commit failed: 403 PERMISSION_DENIED "This app has too few screenshots
for language tr-TR" (earlier: "no high resolution icon set"). `play images` then said "skipped tr-TR: no Play
listing yet": each waited for the other.
- **Cause:** Play commits a new language only when its hi-res icon is in the same edit.
- **Do:** update storebound; `play listing` now uploads the icon (and the feature graphic when rendered) for a new
language in the same edit. Then run `play images` for the screenshots.
- **Guard:** `firstGraphics` in `cli/play/images.ts`, used by `cli/play/listing.ts` for languages Play does not have yet;
it stops with the fix when the 512x512 icon is missing.
- **Cause:** Play commits a new language only with its hi-res icon, feature graphic, 2+ phone screenshots (and the
tablet sets when the app's other languages have them) in the SAME edit.
- **Do:** update storebound; `play listing` uploads all of these for a new language in its edit, from
`store/renders/<lang>/` (a set that folder lacks falls back to the default language's, with a note), and the dry run
lists the uploads or refuses with the exact missing file. `play images` now creates a listing Play does not have yet
(text from the listing file) together with its images, so either command works. Render first if it refuses:
`storebound shots render`.
- **Guard:** `newLanguageImages` in `cli/play/images.ts`, planned in `cli/play/listing.ts` before any write;
`FakePlay.requireNewLangAssets` simulates the 403 (`tests/idempotency.test.ts`). The first listing of an app with no
listing at all only warns.
## 103. "App.entitlements is not referenced by CODE_SIGN_ENTITLEMENTS" on Windows although it is
- **Symptom:** on Windows, `apple status` / `apple signing` warned that `ios\App\App\App.entitlements` is not