apple: macOS (tvOS, visionOS) versions are no longer invisible: every version and review submission lookup is per platform; status, listing, listing pull, resubmit, submit, release and screenshots take --platform and otherwise pick the platform that has the version they need (refuse naming both when several do); status, validate, release status, the report and the desktop label versions with their platform; MCP and owner actions get platform; pitfall 77

This commit is contained in:
CRTkafa 2026-10-20 03:00:05 +07:00
parent 1736300784
commit 47dfd372fe
30 changed files with 423 additions and 127 deletions

View file

@ -30,6 +30,7 @@ presses release; you prepare, dry-run and report. `storebound mcp` deliberately
`storebound apple listing --version 1.3.0 --build <that number>`. Never pick "the latest build": a CI or a
teammate may have uploaded another one meanwhile.
2. `storebound apple release --phased on --dry`, then without `--dry` (works while the version is being prepared).
With versions on more than one App Store platform add `--platform ios|macos|tvos|visionos` (pitfall 77).
3. Submit (owner, UI). Wait: `storebound apple status --wait-review` (polls with backoff, exit 0 approved, 1 rejected,
7 timeout; `--timeout 72h`). Rejected: `review-rejections` skill.
4. Approved = PENDING_DEVELOPER_RELEASE. Owner releases: `storebound apple release --manual-release` (asks to confirm)

View file

@ -54,6 +54,8 @@ in-app purchases). Resubmit that same submission; never create a second one next
2. `storebound apple status`: the submission with UNRESOLVED_ISSUES, its items and their states.
3. `storebound apple resubmit --build <n>` (dry run without `--yes`): the plan table shows the build to attach, the
submission reused, every item in it already or added, which REJECTED items are marked resolved, and the submit.
An app with a macOS (tvOS, visionOS) version too: it picks the platform whose version was rejected, and asks for
`--platform ios|macos|...` when both were (pitfall 77).
4. The owner's yes, then `storebound apple resubmit --build <n> --yes`: build n is attached by its number, missing
items go in, the REJECTED version item is marked resolved (`PATCH reviewSubmissionItems/{id}` `resolved: true`),
then it submits. Apple answers every submit with "Version is not ready to be submitted yet" (and the console's

View file

@ -938,3 +938,18 @@ that fails without the fix (see CONTRIBUTING.md).
- **Guard:** `cli/apple/creative-assets.ts` (`classify`, `pickAsset`, `processingTiming`), `tests/creative-assets.test.ts`
(fake App Store Connect: upload and select in one run, still processing, rejected / archived files, add-for-review
without submitting, verify read-only, a refused live placement); the fake commits library assets to PREPARE_FOR_SUBMISSION, as Apple does.
## 77. A macOS (tvOS, visionOS) version was invisible next to the iOS one
- **Symptom:** `apple resubmit` said "nothing to resubmit" while a macOS version was REJECTED with an
UNRESOLVED_ISSUES submission; `apple listing --version 0.8.7` refused because the iOS 0.8.7 was live, although the
macOS 0.8.7 was the rejected one to fix; `apple status` listed versions without saying which platform.
- **Cause:** one app record can have a version per platform, each with its own state and its own review submission
(`reviewSubmissions` carry a `platform`). Lookups filtered on `IOS` only, or did not filter at all and mixed them.
- **Do:** every version and review submission lookup filters by platform (`filter[platform]`). Commands that need one
version (status --wait-review, listing, listing pull, resubmit, submit, release, screenshots) take
`--platform ios|macos|tvos|visionos`; without it they use the platform that has the version they need, and refuse
naming both when several do. Status, validate, release status, the report and the desktop show the platform next to
every version; validate and release status warn about another platform's editable or rejected version.
- **Guard:** `cli/apple/platform.ts` (`pickPlatform`, `parsePlatform`), `tests/apple-platforms.test.ts` (fake App Store
Connect: iOS 0.8.7 live, macOS 0.8.7 rejected in UNRESOLVED_ISSUES).