storebound/cli/lib
CRT 59150c1186 console fill apple-app-privacy: fit the Data Collection dialog to the real console
A real run (sanitized debug dump) showed why the walk stopped after Next:
the data types step is the same "Data Collection" dialog (URL unchanged),
and each checkbox's accessible name is its label run together with its
help text ("NameIncluding first or last name"). Some labels also differ
from Apple's help page ("Purchases", "Other Data").

- labelNames: the exact name, then the label as a prefix that ends where
  the help text starts (no lowercase letter follows), so "Name" never
  matches "Phone Number...", "Head" never "Health...", "Contact" never
  "Contacts...". Used for the data types and the purposes.
  TYPE_ALIASES maps Purchase History / Other Data Types to the console's
  labels.
- Dialog per step: a section's dialog is also found as the one visible
  dialog with a heading of that name.
- Every click and check is bounded (ACTION_MS, 10 s; the scan test now
  also rejects clicks without a timeout).
- The flow fixture mirrors the real dialog's structure (dialog/h2 title,
  group h3s, input name = Apple's enum, <label> with label + help <p>s,
  Save disabled until a type is ticked); no data from the dump. A test
  checks every Apple type matches exactly one real-style checkbox.
- Pitfall 15.

Publish is still never clicked; unknown steps still get the watchdog dump.
2026-10-12 07:17:15 +08:00
..
scan Merge remote-tracking branch 'origin/main' into play-app-record 2026-10-12 05:24:52 +08:00
adattribution.ts Merge store-ops: TestFlight wait / expire, IAP review submissions, pulls, offers, CPP, events, reports, triage, ASO rank, ads scan 2026-10-12 00:07:26 +08:00
adhoc.ts growth extras: prices ppp, ads apple, web, apple adhoc, play share, revenuecat, console fill (+ desktop button) 2026-10-12 00:14:00 +08:00
agents.ts MCP server and install --agent for any AI coding tool 2026-10-10 21:03:10 +08:00
analytics.ts Real-account read check of the desktop tabs: analytics snapshot stops when every store failed, compare names why a store has no days (Growth shows it), listing screenshot count skips contact sheets; Growth chart as an index on one axis; recorded price answers round-trip the price sheet 2026-10-11 08:06:26 +08:00
app-privacy.ts app privacy: one Apple purpose per Play purpose (advertising is Third-Party Advertising only; Developer's Advertising only from the owner), appPrivacy.types (owner answers per Apple type id: certain in console fill, proposed by scan without linked / tracking, compared by check with Info.plist and PrivacyInfo.xcprivacy) 2026-10-12 04:07:15 +08:00
app-status.ts CLI workspace for many apps and studios, credential profiles, release trains (release status / plan) 2026-10-11 23:35:45 +08:00
apple-ads.ts growth extras: prices ppp, ads apple, web, apple adhoc, play share, revenuecat, console fill (+ desktop button) 2026-10-12 00:14:00 +08:00
args.ts Merge origin/main into idempotency 2026-10-12 04:01:25 +08:00
aso-audit.ts aso: competitors, suggest and audit from official data; ASO card on the Growth tab 2026-10-12 04:09:34 +08:00
aso-intel.ts aso: competitors, suggest and audit from official data; ASO card on the Growth tab 2026-10-12 04:09:34 +08:00
aso-rank.ts aso: competitors, suggest and audit from official data; ASO card on the Growth tab 2026-10-12 04:09:34 +08:00
aso.ts aso: competitors, suggest and audit from official data; ASO card on the Growth tab 2026-10-12 04:09:34 +08:00
build-ops.ts Store operations: TestFlight wait / expire, IAP review submissions, listing pulls, release notes per language, offers, custom product pages, in-app events, reports, triage, keyword ranks, AdAttributionKit scan 2026-10-11 23:58:17 +08:00
catalog.ts Full IAP catalog: non-renewing products, per-platform availability, catalog diff (cross-store parity report) 2026-10-11 01:47:08 +08:00
config.ts Merge remote-tracking branch 'origin/main' into play-app-record 2026-10-12 05:24:52 +08:00
confirm-token.ts serve --stdio: desktop JSON-RPC profile on the MCP core, confirm tokens, --json results, sidecar builds 2026-10-11 01:57:33 +08:00
console-answers.ts console fill: walk the whole form; the owner only reviews and presses the final button 2026-10-12 06:51:01 +08:00
console-forms.ts console fill apple-app-privacy: fit the Data Collection dialog to the real console 2026-10-12 07:17:15 +08:00
copy.ts apple.name: the App Store name when the plain name is taken; console fill, apple listing, pull, check (30-char error, same-name hint), scan use it 2026-10-12 03:23:43 +08:00
cpp-events.ts Store operations: TestFlight wait / expire, IAP review submissions, listing pulls, release notes per language, offers, custom product pages, in-app events, reports, triage, keyword ranks, AdAttributionKit scan 2026-10-11 23:58:17 +08:00
credentials.ts Merge remote-tracking branch 'origin/main' into growth-extras 2026-10-12 00:14:36 +08:00
csr.ts Signing, builds, uploads and an originality check 2026-10-11 23:42:48 +08:00
csv.ts TestFlight through the App Store Connect API: apple testflight status | groups | testers | what-to-test | info | distribute 2026-10-10 23:28:10 +08:00
ctx.ts D3 writes: owner actions (Play rollout share / halt / resume / complete, iOS phased release, send one approved reply) answer the command's confirmation only with a verified host token; reviews reply edits a draft; native dialog names owner actions; token binding tests for every write the window offers 2026-10-11 04:19:47 +08:00
data-safety.ts Review access and account deletion: demo account from .storebound (masked) to App Review, accounts config, profile checks in check and validate, Data safety extra rows 2026-10-11 01:47:08 +08:00
declarations.ts app privacy: one Apple purpose per Play purpose (advertising is Third-Party Advertising only; Developer's Advertising only from the owner), appPrivacy.types (owner answers per Apple type id: certain in console fill, proposed by scan without linked / tracking, compared by check with Info.plist and PrivacyInfo.xcprivacy) 2026-10-12 04:07:15 +08:00
desktop-dist.ts storebound desktop: open the desktop app (with the current app folder) or show the download for this system; --download saves it to ~/Downloads after checking SHA-256 and the minisign signature, never installs 2026-10-11 05:16:59 +08:00
desktop-protocol.ts Merge remote-tracking branch 'origin/main' into play-app-record 2026-10-12 05:24:52 +08:00
diff.ts Store operations: TestFlight wait / expire, IAP review submissions, listing pulls, release notes per language, offers, custom product pages, in-app events, reports, triage, keyword ranks, AdAttributionKit scan 2026-10-11 23:58:17 +08:00
dry.ts pitfalls: store-pitfalls skill and docs/pitfalls.md, store list lag warnings (apple iap-review exits 1), dryPlan table and a scan for count-only dry runs 2026-10-12 03:29:53 +08:00
fastlane.ts apple.name: the App Store name when the plain name is taken; console fill, apple listing, pull, check (30-char error, same-name hint), scan use it 2026-10-12 03:23:43 +08:00
flow.ts flows, listing translate, scan 2.2 + --originality, prices export with subscriptions, site sections 2026-10-12 01:24:21 +08:00
frontmatter.ts Review replies: storebound reviews list | draft | send, review-replies skill 2026-10-10 23:28:10 +08:00
google-auth.ts Crash and vitals health: storebound health [--weekly], validate findings, store-health skill 2026-10-10 23:28:10 +08:00
gradle.ts Signing, builds, uploads and an originality check 2026-10-11 23:42:48 +08:00
health.ts Guarded read-only run of the Play POST read paths: errorIssues:search in UTC, issues failure keeps the vitals, read-only listing / images dry runs 2026-10-11 08:41:55 +08:00
http.ts apps / health / catalog / validate: fixes from a read-only run against live store accounts 2026-10-11 04:50:26 +08:00
identity.ts CLI workspace for many apps and studios, credential profiles, release trains (release status / plan) 2026-10-11 23:35:45 +08:00
imagehash.ts Signing, builds, uploads and an originality check 2026-10-11 23:42:48 +08:00
listing-plan.ts apple listing, play listing, apple appinfo: the dry run prints a real plan (version decision, old -> new per field, draft locales skipped); the real run asks and applies exactly it 2026-10-12 03:29:38 +08:00
listing-pull.ts apple.name: the App Store name when the plain name is taken; console fill, apple listing, pull, check (30-char error, same-name hint), scan use it 2026-10-12 03:23:43 +08:00
listing-translate.ts listing check: App Store keywords shown and limited in UTF-8 bytes (96/100 B), other fields in characters 2026-10-12 04:10:28 +08:00
lock.ts idempotency: docs table, pitfall 9, changelog; lock scan fix 2026-10-12 04:03:23 +08:00
log.ts serve --stdio: desktop JSON-RPC profile on the MCP core, confirm tokens, --json results, sidecar builds 2026-10-11 01:57:33 +08:00
minisign.ts storebound desktop: open the desktop app (with the current app folder) or show the download for this system; --download saves it to ~/Downloads after checking SHA-256 and the minisign signature, never installs 2026-10-11 05:16:59 +08:00
money.ts apps / health / catalog / validate: fixes from a read-only run against live store accounts 2026-10-11 04:50:26 +08:00
node-packages.ts scan: accounts mean User ID, never email without evidence; accounts.signUp (username -> PSL_ACM_USER_ID_OTHER_AUTH); built bundles are low-trust evidence; privacy-manifest and scan find plugins in monorepo node_modules, workspaces and local SwiftPM packages 2026-10-12 02:03:07 +08:00
offers.ts Store operations: TestFlight wait / expire, IAP review submissions, listing pulls, release notes per language, offers, custom product pages, in-app events, reports, triage, keyword ranks, AdAttributionKit scan 2026-10-11 23:58:17 +08:00
originality.ts Signing, builds, uploads and an originality check 2026-10-11 23:42:48 +08:00
play-share.ts growth extras: prices ppp, ads apple, web, apple adhoc, play share, revenuecat, console fill (+ desktop button) 2026-10-12 00:14:00 +08:00
plist.ts Merge store-ops: TestFlight wait / expire, IAP review submissions, pulls, offers, CPP, events, reports, triage, ASO rank, ads scan 2026-10-12 00:07:26 +08:00
portfolio.ts live read run fixes: Xcode-managed profiles in signing, TestFlight-only release trains, scan skips agent worktrees and takes an absolute --config, --all-pages paging meta, iap-submit json, report hints 2026-10-12 01:24:56 +08:00
ppo.ts Product Page Optimization through the API (apple ppo) and an optional 6.3" iPhone size key 2026-10-10 23:28:10 +08:00
ppp.ts growth extras: prices ppp, ads apple, web, apple adhoc, play share, revenuecat, console fill (+ desktop button) 2026-10-12 00:14:00 +08:00
prices.ts Price sheet: storebound prices export | import (CSV of product x store x region) 2026-10-10 23:28:10 +08:00
privacy-manifest.ts 0.5.0: mobile apps and games positioning (README, site, og image, skills, CLI, MCP, adapters), MCP tools for subscriptions and catalog diff, tests, changelog 2026-10-11 01:47:09 +08:00
profile.ts scan: accounts mean User ID, never email without evidence; accounts.signUp (username -> PSL_ACM_USER_ID_OTHER_AUTH); built bundles are low-trust evidence; privacy-manifest and scan find plugins in monorepo node_modules, workspaces and local SwiftPM packages 2026-10-12 02:03:07 +08:00
project-files.ts apple.name: the App Store name when the plain name is taken; console fill, apple listing, pull, check (30-char error, same-name hint), scan use it 2026-10-12 03:23:43 +08:00
release.ts CLI: store readiness, release management, export compliance, ASO audit, release notes, privacy manifest scan 2026-10-10 21:02:55 +08:00
reports.ts Store operations: TestFlight wait / expire, IAP review submissions, listing pulls, release notes per language, offers, custom product pages, in-app events, reports, triage, keyword ranks, AdAttributionKit scan 2026-10-11 23:58:17 +08:00
revenuecat.ts growth extras: prices ppp, ads apple, web, apple adhoc, play share, revenuecat, console fill (+ desktop button) 2026-10-12 00:14:00 +08:00
review-details.ts Review access and account deletion: demo account from .storebound (masked) to App Review, accounts config, profile checks in check and validate, Data safety extra rows 2026-10-11 01:47:08 +08:00
review-submit.ts Store operations: TestFlight wait / expire, IAP review submissions, listing pulls, release notes per language, offers, custom product pages, in-app events, reports, triage, keyword ranks, AdAttributionKit scan 2026-10-11 23:58:17 +08:00
reviews.ts 0.5.0: mobile apps and games positioning (README, site, og image, skills, CLI, MCP, adapters), MCP tools for subscriptions and catalog diff, tests, changelog 2026-10-11 01:47:09 +08:00
runner.ts Signing, builds, uploads and an originality check 2026-10-11 23:42:48 +08:00
signing.ts live read run fixes: Xcode-managed profiles in signing, TestFlight-only release trains, scan skips agent worktrees and takes an absolute --config, --all-pages paging meta, iap-submit json, report hints 2026-10-12 01:24:56 +08:00
store-apps.ts apps / health / catalog / validate: fixes from a read-only run against live store accounts 2026-10-11 04:50:26 +08:00
store-lag.ts pitfalls: store-pitfalls skill and docs/pitfalls.md, store list lag warnings (apple iap-review exits 1), dryPlan table and a scan for count-only dry runs 2026-10-12 03:29:53 +08:00
store-locales.ts store-locales: verify App Store and Play codes against the official lists (2026-10-11), drop zu, aliases for the 2025 languages, tests 2026-10-11 07:37:18 +08:00
subscriptions.ts flows, listing translate, scan 2.2 + --originality, prices export with subscriptions, site sections 2026-10-12 01:24:21 +08:00
table.ts TestFlight through the App Store Connect API: apple testflight status | groups | testers | what-to-test | info | distribute 2026-10-10 23:28:10 +08:00
template-files.ts flows, listing translate, scan 2.2 + --originality, prices export with subscriptions, site sections 2026-10-12 01:24:21 +08:00
testflight.ts TestFlight through the App Store Connect API: apple testflight status | groups | testers | what-to-test | info | distribute 2026-10-10 23:28:10 +08:00
tools.ts tools: also look in the Android SDK folder Android Studio installs and in Homebrew, for apps started without a shell PATH 2026-10-11 09:51:22 +08:00
train.ts live read run fixes: Xcode-managed profiles in signing, TestFlight-only release trains, scan skips agent worktrees and takes an absolute --config, --all-pages paging meta, iap-submit json, report hints 2026-10-12 01:24:56 +08:00
triage.ts Store operations: TestFlight wait / expire, IAP review submissions, listing pulls, release notes per language, offers, custom product pages, in-app events, reports, triage, keyword ranks, AdAttributionKit scan 2026-10-11 23:58:17 +08:00
upsert.ts idempotency: WIP 2026-10-12 04:00:58 +08:00
validate-rules.ts apps / health / catalog / validate: fixes from a read-only run against live store accounts 2026-10-11 04:50:26 +08:00
web.ts growth extras: prices ppp, ads apple, web, apple adhoc, play share, revenuecat, console fill (+ desktop button) 2026-10-12 00:14:00 +08:00
whats-new.ts Store operations: TestFlight wait / expire, IAP review submissions, listing pulls, release notes per language, offers, custom product pages, in-app events, reports, triage, keyword ranks, AdAttributionKit scan 2026-10-11 23:58:17 +08:00
workspace.ts console fill: sign-in detected by URL, frame and text; keeps watching after the fallback; session kept across relaunches; one login across Play developer accounts and App Store Connect teams 2026-10-12 02:54:48 +08:00
xcode.ts Merge store-ops: TestFlight wait / expire, IAP review submissions, pulls, offers, CPP, events, reports, triage, ASO rank, ads scan 2026-10-12 00:07:26 +08:00
yaml.ts flows, listing translate, scan 2.2 + --originality, prices export with subscriptions, site sections 2026-10-12 01:24:21 +08:00
zip.ts Merge store-ops: TestFlight wait / expire, IAP review submissions, pulls, offers, CPP, events, reports, triage, ASO rank, ads scan 2026-10-12 00:07:26 +08:00