apple submit --build <n> (first submission, the resubmit steps; plan table with --json under serve); desktop owner actions to send for review: owner.apple_submit, owner.apple_resubmit, owner.apple_iap_submit, owner.play_production, and the price gate owner actions (owner.prices_play_products / _play_subscriptions / _apple_subscriptions; owner.prices_import passes --allow-price-changes after the dialog); OWNER_ALLOWED_ARGS ties each forbidden flag to its one action, dry runs never carry owner flags, MCP still has no submit or production release; submit dialog text in the host; system.tools androidSdk, project.inspect playRelease, declarations dataDeletion

This commit is contained in:
CRTkafa 2026-10-12 12:07:55 +08:00
parent 2e7dd44ae6
commit 33eb24a3dc
17 changed files with 335 additions and 49 deletions

12
cli/apple/submit.ts Normal file
View file

@ -0,0 +1,12 @@
// Send an App Store version to App Review with a build picked by its number (the owner's step).
// storebound apple submit --build <n> [--version 1.0.0] [--resolve-iaps] [--dry] [--yes] [--json]
// The version is --version, else the one an open review submission holds, else the editable one (Prepare for
// Submission, or rejected). Build n (VALID) is attached, the open review submission is reused (a draft or one back
// from App Review; a new draft only when none is open), the in-app purchases and subscriptions of the config that are
// ready go in with the version, then it is submitted (retried while Apple says "not ready yet"). The same steps as
// `apple resubmit` (cli/apple/resubmit.ts). Without --yes: a dry run with the plan table. Never in MCP or flows; the
// desktop offers it as an owner action (native dialog, host-minted token).
import type { Ctx } from '../lib/ctx';
import { submitVersion } from './resubmit';
export async function run(ctx: Ctx): Promise<void> { await submitVersion(ctx, 'submit'); }