| .. |
|
ads
|
CLI runs on Node 20+: npx storebound (bunx keeps working)
|
2026-10-13 04:03:28 +08:00 |
|
api
|
validate: macOS versions need Mac screenshots, Play reads survive an ended edit; macOS build numbers across platforms; Mac build prebuild + apple.macAppCheck; signing wording off the Mac; dry flows plan uploads
|
2026-11-02 18:16:25 +07:00 |
|
apple
|
validate: macOS versions need Mac screenshots, Play reads survive an ended edit; macOS build numbers across platforms; Mac build prebuild + apple.macAppCheck; signing wording off the Mac; dry flows plan uploads
|
2026-11-02 18:16:25 +07:00 |
|
console
|
apple signing: App Group association fails early under automatic signing too (API capability + newest profile, steps and deep link, exit before the archive); console plan/verify apple-app-group
|
2026-10-25 22:35:36 +07:00 |
|
data
|
mcp --http --public: key-less public server (skills, pitfalls, limits, listing lint, App Store search), rate limit, 64 KB bodies
|
2026-10-29 19:06:14 +07:00 |
|
lib
|
validate: macOS versions need Mac screenshots, Play reads survive an ended edit; macOS build numbers across platforms; Mac build prebuild + apple.macAppCheck; signing wording off the Mac; dry flows plan uploads
|
2026-11-02 18:16:25 +07:00 |
|
play
|
play release --dry: no bundle upload into a discarded edit (a long upload outlived it: edit expired); shows the planned tracks
|
2026-10-29 20:19:20 +07:00 |
|
shots
|
shots fonts usage line
|
2026-10-24 13:01:32 +08:00 |
|
aab.ts
|
storebound aab <file> --json (offline packageName / versionCode / versionName / SDKs / sha256, no config) and play release --json result for CI scripts that replace their own Play API calls
|
2026-10-22 03:28:46 +08:00 |
|
accounts.ts
|
credential broker: Play tokens from POST /api/google/token (cached, single flight, local key fallback), grants and APIs per package in validate, Play write preflight, apps check and the desktop Accounts view; Google 403 names the API or grant, no retry
|
2026-10-25 22:51:32 +07:00 |
|
ads.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 |
|
analytics.ts
|
analytics and reports for a collector: store-only configs, --json snapshot, App Usage and Play install stock numbers, per-day sales ranges for both stores
|
2026-10-26 10:20:27 +07:00 |
|
api.ts
|
apple signing: every signable target (extensions, App Group check), build keychain unlock over SSH, api confirm docs
|
2026-10-24 13:07:58 +08:00 |
|
apps.ts
|
credential broker: Play tokens from POST /api/google/token (cached, single flight, local key fallback), grants and APIs per package in validate, Play write preflight, apps check and the desktop Accounts view; Google 403 names the API or grant, no retry
|
2026-10-25 22:51:32 +07:00 |
|
art.ts
|
shots: Mac App Store screenshots (mac size, APP_DESKTOP to the macOS version), a landscape layout (Mac window or bare; Mac, Play Chromebook, Play tablets), safe margins in every template checked by shots check from the render's layout boxes, a contact sheet timeout that scales with images, sizes and load; pitfall 80
|
2026-10-20 03:29:19 +07:00 |
|
aso.ts
|
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)
|
2026-10-13 07:25:01 +08:00 |
|
catalog.ts
|
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)
|
2026-10-13 07:25:01 +08:00 |
|
check.ts
|
apple: release type (apple.releaseType, apple release --after-approval|--manual), device-family preflight, TestFlight invite needs an installable build
|
2026-10-27 17:07:37 +07:00 |
|
commands.ts
|
mcp --http: one Streamable HTTP server for every session (token or OAuth introspection auth, project argument per call, roots, origin check)
|
2026-10-29 16:19:53 +07:00 |
|
desktop.ts
|
desktop open: a hidden tray copy that is already running counts once its window is visible (Windows), graceful stop wait 3 s on Windows
|
2026-10-23 22:53:30 +08:00 |
|
doctor.ts
|
doctor: warn when storebound runs from a folder macOS guards (a launchd job hangs opening it)
|
2026-10-30 00:26:07 +07:00 |
|
edit.ts
|
console plans: guardrails from a real run (2026-10-21): health none label and Sign in details Yes/No + Add details (old labels as altLabels, verify accepts both), finance boxes on step 1, App Privacy Additional Setup Required OK, verify from DOM input states (verify.capture, --from), Save + confirm before every Next on Play pages, IARC Digital purchases boxes and an exact-label in-page helper that refuses patterns and blanket answers; review contact found in parent folders, the profile and more key shapes with the files checked listed; one-line errors for missing required values (Args.required); pitfalls 86-87, tests
|
2026-10-21 05:03:02 +07:00 |
|
events.ts
|
storebound watch: store events for every app on the machine (rejected, approved, live, halted, crash threshold, reviews) to ntfy / Telegram / webhook / OS notification, loop or --once, baseline first, events.jsonl; storebound events and MCP events_recent; docs/watch.md; tests
|
2026-10-22 22:38:15 +08:00 |
|
flow.ts
|
validate: macOS versions need Mac screenshots, Play reads survive an ended edit; macOS build numbers across platforms; Mac build prebuild + apple.macAppCheck; signing wording off the Mac; dry flows plan uploads
|
2026-11-02 18:16:25 +07:00 |
|
games-status.ts
|
desktop: five sections by job (Release, Store page, Revenue, Players, Health), Game services view, sidebar by attention
|
2026-10-24 13:06:42 +08:00 |
|
health.ts
|
desktop reads everything by itself: one background read scheduler (4 per store, starts spaced per account, App Store Connect X-Rate-Limit slows it below 20 % and pauses at 100 left, backoff with jitter on 429 / RESOURCE_EXHAUSTED, visible app first, one read per key), per-method TTLs over the saved reads, Settings auto-read (on) and interval (15 min, paused while hidden), Refresh all, a refresh icon and 'read 3 min ago' / 'couldn't refresh' per card, writes invalidate, status line with progress and quota; quota reaches the window through ToolResult.quota (cli/lib/quota.ts); Health top issues open with versions, sample stack (health --issue / --signature, read health_issue), Open in Play Console, Copy for AI and likely-cause hints (cli/lib/crash-hints.ts); tests/scheduler.test.ts, tests/quota-crash-hints.test.ts, boot check auto-read case
|
2026-10-13 23:37:39 +08:00 |
|
icons.ts
|
Rename to storebound (plugin, CLI, config file, credentials folder, repo)
|
2026-10-10 20:35:26 +08:00 |
|
import.ts
|
price changes of existing products need --allow-price-changes (play products, play/apple subscriptions, prices import): --yes and flow run --apply --yes confirm creates, first prices and other updates only; without the flag the run writes the rest, names each held change and exits 3 (declined), dry runs mark them owner, flows refuse the flag; lib/price-gate.ts, tests/price-gate.test.ts. CLI wording: console fill leaves what it cannot open or fill to the calling agent's browser tool (console plan / verify) instead of 'yourself'; other 'by hand' output points at the config; do-it-dont-ask test scans cli/ output
|
2026-10-12 09:38:57 +08:00 |
|
index.ts
|
credential broker: Play tokens from POST /api/google/token (cached, single flight, local key fallback), grants and APIs per package in validate, Play write preflight, apps check and the desktop Accounts view; Google 403 names the API or grant, no retry
|
2026-10-25 22:51:32 +07:00 |
|
init.ts
|
Bypass mode (owner opt-in, default off): storebound settings bypass on|off|status and a one-time question in init; MCP owner_step (owner-only commands, dry run first), owner-only api operations with --yes --confirm, console plans may press buttons.final; every action logged to .storebound/owner-actions.log; docs/bypass.md, agent rules, tests
|
2026-10-22 02:27:34 +08:00 |
|
inspect.ts
|
analytics and reports for a collector: store-only configs, --json snapshot, App Usage and Play install stock numbers, per-day sales ranges for both stores
|
2026-10-26 10:20:27 +07:00 |
|
install.ts
|
Windows: MCP entries start through cmd /c npx or bun cli/index.ts (npx.cmd and the sh launcher cannot be spawned, pitfall 94); desktop download streams with progress and fails after 60 s without data (pitfall 95); getting-started Windows note
|
2026-10-21 22:21:49 +08:00 |
|
listing-store.ts
|
cross-store text: other platforms named in App Store text (2.3.10: Android, Google Play, ...) or Play text (Metadata: iOS, App Store, Game Center, ...) are refused by every text write (apple / play listing, play release / upload notes, listing set, whats-new, storebound edit, desktop editor), blockers in check / validate, scan other-platforms / play-other-platforms; listing.allowPlatformMentions for the owner's functional mentions; whats-new splits [apple] / [play] lines per store; storebound api --yes without a TTY is refused (exit 1, stderr) instead of a silent dry run; pitfalls 77, 78
|
2026-10-20 02:57:25 +07:00 |
|
listing.ts
|
store-only apps edit their listing on the store (storebound listing live / set: old -> new per field with the checks, a PATCH of only the edited fields; serve listing.set is the one store-only write, its token bound to the store ids; policy.rs STORE_ONLY_WRITES, write_with_confirm for store targets); screenshot captions per language and scene edited as a text edit of the shots copy JSON (JSON files keep their layout); Play content rating, target audience and App content answers in App info; docs/console-parity.md after the editors (73 rows: 55 complete, 18 with the reason) and tests/console-parity.test.ts keeping it honest
|
2026-10-14 00:54:56 +08:00 |
|
mcp-cmd.ts
|
mcp --http --public: key-less public server (skills, pitfalls, limits, listing lint, App Store search), rate limit, 64 KB bodies
|
2026-10-29 19:06:14 +07:00 |
|
mcp-http.ts
|
mcp --http: SSE keepalive for long tool calls; public App Store search shares one 20-a-minute budget
|
2026-10-29 19:06:14 +07:00 |
|
mcp-public.ts
|
mcp --http: SSE keepalive for long tool calls; public App Store search shares one 20-a-minute budget
|
2026-10-29 19:06:14 +07:00 |
|
mcp-tools.ts
|
Updates are agent steps: --yes ships an update of a live app (Play production, App Store submit / release) without an owner gate; the first release stays the owner's (exit 3 OWNER_STEP, --first-release); apple release is a ship step
|
2026-10-26 18:09:50 +07:00 |
|
mcp.ts
|
mcp --http --public: key-less public server (skills, pitfalls, limits, listing lint, App Store search), rate limit, 64 KB bodies
|
2026-10-29 19:06:14 +07:00 |
|
onboard.ts
|
template compliance answers never reach a store: init writes unanswered (dataSafety, appPrivacy, reviewNotes, ageRating, accounts, reviewAccess), older configs are recognised by the template values; check / validate / scan block, play data-safety (also --dry), console plan / fill, apple review-details and appinfo refuse. onboard --declarations replaces them on a live app: name and copyright from the stores (a copyright with a private term is left out), the rows the code proves (scan proposal, sign-up methods from auth code and login SDKs), the rest as one owner question list. play data-safety --dry prints the answers that change (old -> new, account and deletion first) against the last uploaded CSV; pitfall 60; tests
|
2026-10-14 11:36:30 +08:00 |
|
originality.ts
|
flows, listing translate, scan 2.2 + --originality, prices export with subscriptions, site sections
|
2026-10-12 01:24:21 +08:00 |
|
prices-ppp.ts
|
--json prints only JSON on stdout (withJsonOutput around every command: logs, tables and prompts to stderr; printJson everywhere; test runs every --json command against the fake stores and parses stdout); prices ppp compares like with like: par = the store's own US-equivalent price (Play convertRegionPrices, Apple equalizations; offline base x fx x (1 + VAT) rounded up) scaled by the PPP price level; defaults only lower, only price levels <= 0.5, World Bank high-income at par, CN at par on Apple and skipped on Play, never above par (--only-decreases, --max-ratio, --min-ratio, --max-level, --include-high-income; --floor / --ceiling kept), top-10 revenue market drops > 20 % warned (sales reports, else a static list), unchanged regions out of the sheet; price changes of existing products only with --allow-price-changes, TTY or not (a terminal yes covered them), then their own question listing each old -> new, held section in dry runs (play products, prices import, play / apple subscriptions); pitfalls 61-63; tests
|
2026-10-14 17:36:00 +08:00 |
|
prices.ts
|
apple iap: the dry run shows a live price that differs from the config (USA base and overrides) and --allow-price-changes replaces the price schedule; prices diff (the catalog diff report)
|
2026-10-22 20:28:16 +08:00 |
|
privacy-manifest.ts
|
console plans: guardrails from a real run (2026-10-21): health none label and Sign in details Yes/No + Add details (old labels as altLabels, verify accepts both), finance boxes on step 1, App Privacy Additional Setup Required OK, verify from DOM input states (verify.capture, --from), Save + confirm before every Next on Play pages, IARC Digital purchases boxes and an exact-label in-page helper that refuses patterns and blanket answers; review contact found in parent folders, the profile and more key shapes with the files checked listed; one-line errors for missing required values (Args.required); pitfalls 86-87, tests
|
2026-10-21 05:03:02 +07:00 |
|
release.ts
|
storebound status: per platform live and next version, build, track, review state and rollout % without uploading (read-only, one JSON line); release status --app also takes an app folder or a store id
|
2026-10-23 13:13:15 +08:00 |
|
report.ts
|
report: storebound report writes one shareable, self-contained readiness page (.storebound/reports/readiness-<date>.html; --md, --json, --no-open, --offline, --out) from scan, check and validate: a verdict per store (Ready to submit / N blockers / Not checked with the reason), findings per store by severity with guideline, evidence, fix and console button, the owner's compliance questions as a checklist, secrets masked; storebound.dev look, light / dark, print; desktop Checks > Report (same code path, opens through project_reveal) and its Markdown export on the same renderer; read-only MCP tool report
|
2026-10-18 01:42:03 +08:00 |
|
reports.ts
|
analytics and reports for a collector: store-only configs, --json snapshot, App Usage and Play install stock numbers, per-day sales ranges for both stores
|
2026-10-26 10:20:27 +07:00 |
|
revenuecat.ts
|
CLI runs on Node 20+: npx storebound (bunx keeps working)
|
2026-10-13 04:03:28 +08:00 |
|
reviews.ts
|
Reviews: a store read that failed everywhere is an error, not an empty fresh list; Reviews tab says Apple's API can lag and Play returns 7 days; pitfall 106
|
2026-10-23 00:33:27 +08:00 |
|
scan.ts
|
desktop: a Fix button on scan and validate findings storebound can fix itself. Findings carry action { method, args } (cli/lib/fix-actions.ts); privacy-labels runs scan.write (scan --write-only, the dialog shows the config diff), Play listing gaps play.listing, a missing App Store localization or copyright apple.listing (editable version only), the App Review contact apple.review_details; each a dry run, the native dialog, then the confirmed run. --write-only is forbidden for MCP tools; tests pin the mapping, the round trip on a fixture and that no fix reaches a submit, release or publish
|
2026-10-15 06:14:49 +08:00 |
|
serve.ts
|
Updates are agent steps: --yes ships an update of a live app (Play production, App Store submit / release) without an owner gate; the first release stays the owner's (exit 3 OWNER_STEP, --first-release); apple release is a ship step
|
2026-10-26 18:09:50 +07:00 |
|
settings.ts
|
Bypass mode (owner opt-in, default off): storebound settings bypass on|off|status and a one-time question in init; MCP owner_step (owner-only commands, dry run first), owner-only api operations with --yes --confirm, console plans may press buttons.final; every action logged to .storebound/owner-actions.log; docs/bypass.md, agent rules, tests
|
2026-10-22 02:27:34 +08:00 |
|
status.ts
|
storebound status: per platform live and next version, build, track, review state and rollout % without uploading (read-only, one JSON line); release status --app also takes an app folder or a store id
|
2026-10-23 13:13:15 +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 |
|
validate.ts
|
validate: macOS versions need Mac screenshots, Play reads survive an ended edit; macOS build numbers across platforms; Mac build prebuild + apple.macAppCheck; signing wording off the Mac; dry flows plan uploads
|
2026-11-02 18:16:25 +07:00 |
|
watch.ts
|
watch: ingest sink (--notify ingest) posting events to a push ingest endpoint
|
2026-10-23 15:30:18 +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
|
merge origin/main (cross-store text checker); macOS platform pitfall renumbered to 79
|
2026-10-20 03:06:16 +07:00 |
|
workspace.ts
|
Ignore dormant apps: per-app and per-store 'ignored' in the app list; apps ignore/unignore, watch, ws and apps list skip them; MCP tools
|
2026-10-23 00:57:42 +08:00 |