desktop: Releases > Send for review (App Store submission state, builds by number, Submit / Resubmit / in-app purchases; Play versionCodes by number, Send to production, managed publishing, console plans for countries and Send changes for review), plan panel before every owner dialog with streamed progress; App info console steps for every console plan form with verify; Catalog price-change owner actions and the declined state; Data safety deletion answer; TestFlight create missing groups; Android SDK in Dependencies; upload progress in job toasts; boot check send-for-review cases on D1 and D3 state
This commit is contained in:
parent
33eb24a3dc
commit
2b101f0fd8
22 changed files with 1527 additions and 57 deletions
45
CHANGELOG.md
45
CHANGELOG.md
|
|
@ -20,6 +20,51 @@
|
|||
- Console plan `play-production-release`: the "Do you want to restart your review?" dialog that "Submit N changes
|
||||
for review" opens while a review is running is a known step; "Restart review" is the owner's button and in
|
||||
neverPress (pitfall 33).
|
||||
- Desktop: send for review from the window (owner decision, 2026-10-12). New owner actions (desktop only, never MCP
|
||||
tools): `owner.apple_submit` (new `storebound apple submit --build <n> [--version x.y.z]`: the steps of `apple
|
||||
resubmit` for a first submission: build n attached by number, the open review submission reused, the ready IAPs /
|
||||
subscriptions with it, submitted with the "not ready yet" retry; plan table without `--yes`), `owner.apple_resubmit`
|
||||
(`apple resubmit --build <n> [--resolve-iaps]`), `owner.apple_iap_submit` (`apple iap-submit [--with-version]`) and
|
||||
`owner.play_production` (`play release --version-code <n> --production completed | inProgress | draft`). Each is a
|
||||
dry run from the window; the real run needs the host's token minted after the native dialog, and only then serve
|
||||
adds `--yes` (apple submit / resubmit) and answers the command's question. `OWNER_ALLOWED_ARGS` ties every
|
||||
otherwise forbidden flag (`--yes`, `submit`, `--production`, `--csv`, `--allow-price-changes`) to its one owner
|
||||
action, a dry run never carries an owner flag, and the MCP server still has no submit, resubmit or production
|
||||
release (`tests/serve.test.ts`, `tests/desktop-d3.test.ts`, `src-tauri/tests/d3_writes.rs`). The submit dialog says
|
||||
the app goes to review and may go live by itself once approved.
|
||||
- Releases tab, "Send for review": the App Store submission state from `apple status` (waiting / in review,
|
||||
UNRESOLVED_ISSUES with its items and which ones get marked resolved, empty drafts labelled harmless), the uploaded
|
||||
builds to pick by number (processing ones disabled, nothing preselected), Submit for review, Resubmit (with
|
||||
"also mark rejected IAP items resolved") and Submit in-app purchases (with the editable version); Google Play
|
||||
versionCodes by number (one already live cannot be picked), Send to production as everyone, a staged share or a
|
||||
draft (a never-published app), the managed-publishing warning from `play.managedPublishing`, and the console plans
|
||||
of production countries and "Send changes for review" (no API) with a deep link. Every button shows the plan (dry
|
||||
run, `--json` with the plan table under serve) in the window first, then the native dialog; the real run's
|
||||
progress lines stream into the panel and Stop cancels it. The old "submit stays in the console" note is gone.
|
||||
- App info, "Console steps without an API": every `console plan` form (the new Play store settings category, App
|
||||
content and its cards, production countries and production release included) with a plan panel (start page and
|
||||
deep link, steps, answer sheet, never-press buttons, the owner's final button, Copy plan for an AI agent) and the
|
||||
read-only `console verify` (page text pasted, or the API for the App Store record and age rating). The Play forms
|
||||
card is folded into it.
|
||||
- Price gate: `owner.prices_import` passes `--allow-price-changes` itself after the dialog; new
|
||||
`owner.prices_play_products`, `owner.prices_play_subscriptions`, `owner.prices_apple_subscriptions` (Catalog:
|
||||
"Price changes") run that sync with the flag. A write that ends with exit 3 (declined: a held price change) shows "Waiting for your
|
||||
decision", not a failure.
|
||||
- Data safety card: the deletion question as the CSV answers it (`dataDeletion`, from `accounts.deletionUrl`,
|
||||
`dataSafety.dataDeletion`, ...; `project.declarations` sends `dataDeletion`, `dataDeletionSource`,
|
||||
`dataDeletionUrl`), older sidecars still shown from `partialDeletion`.
|
||||
- TestFlight: "Create missing groups" (`apple testflight groups sync`, dry run first). Dependencies: the Android SDK
|
||||
as `play build` finds it (`system.tools` `androidSdk`). `project.inspect` adds `playRelease` (managed publishing,
|
||||
countries, category). Job toasts: upload lines ("312/890 MB (35%), part 4/12") drive the progress bar, and the
|
||||
last 40 lines are in the toast's log.
|
||||
- Covered by the existing views: `validate` findings ("production has 0 countries", the category reminder), `check`
|
||||
warnings (stale web assets without `build.prebuild`, Play category, App content answers owed, privacy manifest
|
||||
tracking mismatch ITMS-91064, the defaultConfig versionCode / versionName source warning) and `scan` findings
|
||||
show in Checks; `play images` skipped languages and optional tablet sets show in the dry run of the native dialog.
|
||||
- Boot check: four send-for-review cases (ready and UNRESOLVED_ISSUES, on the old D1 and the new D3 saved state)
|
||||
with store answers from `src/dev/submit-fixtures.ts`: the Releases texts, the build and versionCode pickers, the
|
||||
plan panels, a console plan from the real sidecar, every app tab and Dependencies, by DOM text; the dialog is
|
||||
answered Cancel, nothing is sent.
|
||||
|
||||
- Safety (`apple testflight groups`): run bare, it created the configured beta groups right away, with no plan. Now it only lists the groups and prints `would create "Team", "Friends"`. Creating is
|
||||
`groups sync` (or `groups --yes`). Flows treat bare `groups` as a read and `groups sync` as a write, and the MCP tool
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue