Commit graph

61 commits

Author SHA1 Message Date
CRT
513c33330d serve: every CLI area for the desktop app (prices.current, project.declarations / listing_text / renders / render, import.fastlane for a new folder; owner.prices_import, owner.ppo_start / stop)
prices export --json reads the current prices without writing; inspect --declarations gives Data safety, the App
Privacy answers it suggests, app info, export compliance and App Review details with every question only the owner
can answer; play data-safety keeps the uploaded CSV in .storebound/ so changes since the upload show (Play cannot read
the form back); shots gallery --json carries the renders folder; inspect --render returns one render as a data: URL
from inside the renders folder only.
2026-10-11 07:40:59 +08:00
CRT
44e64cf9c6 apps / health / catalog / validate: fixes from a read-only run against live store accounts
- API error bodies on one line (errorBody): Google and App Store Connect pretty-print errors, which hid
  SERVICE_DISABLED from the Play account check (reported permission instead of api-disabled), broke tables
  and turned serve's apps.list error into a JSON fragment
- apps list: failure says the reason and the fix (same words as apps check)
- newest App Store version by createdDate, iOS first (the API groups versions by platform); all versions
  read so no platform is missed; per-app reads four at a time
- apps check (apple): team app count from meta.paging.total with a one-app read
- Play Money without units (prices under 1.00) read as 0.xx, not NaN (catalog diff, subscription diffs)
- health: App Store Connect 404 for perfPowerMetrics / diagnosticSignatures means no field data yet;
  Play vitals behind a disabled Reporting API say so with the fix
- validate: gracRatingClassificationNumber optional, socialMediaAgeRestricted only when socialMedia is yes,
  socialMedia unanswered is a warning
- tests with sanitized recorded responses (tests/store-real-shapes.test.ts)
2026-10-11 04:50:26 +08:00
CRT
d74d99bcc9 serve --stdio: desktop JSON-RPC profile on the MCP core, confirm tokens, --json results, sidecar builds
- cli/serve.ts: session.hello with a per-session secret, typed methods per tool, project.inspect,
  portfolio.status over many project folders, progress notifications, cancellation
- cli/lib/confirm-token.ts: single-use HMAC tokens bound to method + canonical params + expiry;
  writes are dry runs without one; no submit / release / publish method exists
- cli/lib/runner.ts: shared child runner for mcp and serve, works from a compiled binary
- --json on check, testflight / ppo status, next-build, next-version-code, analytics compare,
  prices import; inspect command; confirm() always answers no under serve
- tools/build-sidecars.ts: bun build --compile for five targets, ad-hoc re-sign on macOS, path leak check
- tests/serve.test.ts: methods, token binding / expiry / replay, shared vector, stdio and compiled smoke
2026-10-11 01:57:33 +08:00
CRT
44699eac8c Full IAP catalog: non-renewing products, per-platform availability, catalog diff (cross-store parity report) 2026-10-11 01:47:08 +08:00
CRT
162834444a Subscriptions on both stores: Apple groups, levels, equalized prices, intro and promotional offers, offer codes; Play base plans, regional prices, offers 2026-10-11 01:47:08 +08:00
CRT
56e107dbbe Crash and vitals health: storebound health [--weekly], validate findings, store-health skill
Play Developer Reporting API v1beta1 (crashRateMetricSet / anrRateMetricSet DAILY queries in America/Los_Angeles,
user-perceived 28-day rates, worst device models, errorIssues:search) and App Store Connect perfPowerMetrics,
diagnostic signatures and TestFlight crash submissions. Thresholds 1.09 % crash / 0.47 % ANR / 8 % per device
(developer.android.com/topic/performance/vitals): over = blocker, from 80 % = warn, in validate too (--no-health).
Weekly Markdown report with week-over-week change in .storebound/health/. MCP: health (read-only), health_report.
2026-10-10 23:28:10 +08:00
CRT
6470c486f6 play listing sends the promo video URL (play.video) 2026-10-10 22:22:52 +08:00
CRT
bd12bd0690 --variant on play images, apple screenshots and shots jpeg; shared set up-to-date check 2026-10-10 22:16:38 +08:00
CRT
1fc94da443 CLI: store readiness, release management, export compliance, ASO audit, release notes, privacy manifest scan
- validate: read-only App Store Connect + Play report with ordered blockers (exit 1)
- apple release --phased on|pause|resume|complete and --manual-release (asks first)
- apple status --wait-review (exit 0 approved, 1 rejected, 7 timeout), apple next-build, apple encryption
- play rollout --fraction|--halt|--resume|--complete, play next-version-code
- check --aso, whats-new --since <tag>, privacy-manifest --ios <path>, version
- Apple IAP description limit is 45 characters (App Store Connect Help), not 55
- config: apple.usesNonExemptEncryption, apple.screenshotTypes, ads.appAdsTxt
2026-10-10 21:02:55 +08:00
CRT
11c45efab8 Rename to storebound (plugin, CLI, config file, credentials folder, repo) 2026-10-10 20:35:26 +08:00
CRT
3cd31b7601 crt-ship 0.1.0: CLI, Claude Code skills and templates for shipping mobile games to Google Play and the App Store 2026-10-10 20:29:20 +08:00