Onboarding live apps without owner questions for what the stores and the code prove: storebound onboard imports the live products and subscriptions with USD / base prices (catalog diff clean), contact values, the App Review contact and demo account (credentials.json, masked), sign-in for review from Apple's review detail and auth code, and the account deletion page from the app's site; App Store keywords count characters (live fields up to 265 bytes accepted); validate accepts the 6.5-inch iPhone set and Play's default-language graphics fallback; Play Reporting API off gives the project's enable link and apps list falls back to local apps; accounts default <profile>; store-only apps (apps add --store --app-id) shown read-only in the desktop (pitfalls 43-52)
This commit is contained in:
parent
d2ce185441
commit
e5f148e534
55 changed files with 1648 additions and 158 deletions
34
CHANGELOG.md
34
CHANGELOG.md
|
|
@ -38,6 +38,40 @@ machine in `~/.storebound`, shared by the CLI and the app.
|
|||
`storebound://open` link, so a folder added in the terminal is selected without a question.
|
||||
- **Desktop:** a folder whose `package.json` pins another storebound version shows "This project uses storebound X,
|
||||
the app runs Y". `storebound-desktop --version`. `ws desktop import / export` carry the accounts' profile names.
|
||||
|
||||
Onboarding apps that are already live, without owner questions for what the stores and the code prove (lessons
|
||||
43-52, from setting storebound up on 6 live apps):
|
||||
|
||||
- **`storebound onboard [--write]`** (MCP `onboard`, dry run by default). Read-only on both stores, never changes a
|
||||
store price. Imports the live one-time products and subscriptions of both stores into `products` / `subscriptions`:
|
||||
ids, type, listings per language, usd = the US price (else Play's own USD price for new regions), Apple's price
|
||||
schedule base territory as an override when it is not the USA, an item on one store only kept with `platforms`;
|
||||
`catalog diff` comes out clean. An item with no USD price anywhere is named with its base price, not left out
|
||||
silently. Fills app.contactEmail / website / supportUrl / privacyPolicyUrl / marketingUrl from Play's app details and
|
||||
App Store Connect where the config holds a template value (real values that differ are reported and kept); the App
|
||||
Review contact goes into `.storebound/credentials.json` `reviewContact` (masked in output, the phone never printed).
|
||||
Sign-in for review is decided from Apple's review detail (`demoAccountRequired`; a demo account set there is imported
|
||||
into `reviewDemoAccount`, never printed) and the code's auth signals, never a default yes. With accounts and no
|
||||
`accounts.deletionUrl` it looks for the deletion page on the app's own site (/delete-account, /account/delete,
|
||||
/delete, /account-deletion, links in the privacy policy that mention deletion); not found stays a finding. Then the
|
||||
owner questions that are left, in one batch.
|
||||
- **App Store keywords count characters, not bytes.** Live READY_FOR_SALE fields hold Thai 95 characters / 265
|
||||
bytes, Turkish 100 / 105, Polish 99 / 105: `check`, `check --aso`, `listing check`, `listing translate` and
|
||||
`aso suggest` count characters again (lesson 4 was wrong; lesson 43).
|
||||
- **`validate`:** a live app with only the 6.5" iPhone set (APP_IPHONE_65) passes, App Store Connect accepts it for
|
||||
the 6.9" requirement; a 6.9" set is a recommendation (also the two 13" iPad types). Play: a non-default language
|
||||
without its own icon / feature graphic uses the default language's (a note), only the default language's missing
|
||||
graphics block.
|
||||
- **Play Reporting API off:** the finding names the Cloud project and the exact link to enable
|
||||
`playdeveloperreporting.googleapis.com` for it (`apps check`, `apps list`, `health`, `validate`); `apps list` no
|
||||
longer fails but lists the Play apps of this machine's app folders and store-only entries.
|
||||
- **`storebound accounts default <profile>`** (`--clear`): the machine's default credential profile, a pointer file in
|
||||
the credentials folder, shown in `accounts list`. Order: env > the profile a project names > the project's own keys
|
||||
> this default > the only profile (or the one named `default`).
|
||||
- **Store-only apps:** `storebound apps add --store apple|play --app-id <id> --account <profile>` adds an app that is
|
||||
live but has no project on this machine to `~/.storebound/projects.json` (`storeApps`); `apps folders` shows it as
|
||||
"no local project", `apps remove apple:<id>` takes it out. The desktop shows it read-only ("Store only": status,
|
||||
reviews, analytics) under the account with that profile, and keeps the entries when it writes the folder list.
|
||||
- `ws` children get the app's own account choice when the workspace names no account (before: no profile at all).
|
||||
|
||||
Fixes from a real first release of a second game (Capacitor 8 monorepo, lessons 35 to 37):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue