Commit graph

608 commits

Author SHA1 Message Date
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
c48eead0e0 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
CRT
205f65828f ads-mediation-checks: AdMob, AppLovin MAX and LevelPlay; ads-levelplay-checks kept as a pointer 2026-10-11 01:47:09 +08:00
CRT
b21e4a0920 App screenshot style (shots.style app): calm gradient, device frame, headline + subline; demo app Tidy Lists 2026-10-11 01:47:09 +08:00
CRT
7f0bb7c2dd init --profile app|game|subscription-app (default app): per-profile config, declarations, App Privacy, Data safety, listing and screenshot copy 2026-10-11 01:47:09 +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
20c0221b1d 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
CRT
06e2f6b2b8 README and site: drop 'not a product / no dashboard' (a desktop app is on the way); keep no account, no sign-up, no telemetry 2026-10-11 01:08:38 +08:00
CRT
b142cf6d21 Teaser video source: scripted terminal timeline, procedural music, render script (media/teaser)
HTML/CSS/JS timeline rendered frame by frame in headless Chrome, original music synthesized with OfflineAudioContext, ffmpeg encode + loudnorm. Outputs go to media/teaser/out (gitignored); poster.jpg is the end card.
2026-10-11 01:02:17 +08:00
CRT
c94387f06c Site: external links open in a new tab (arrow + screen-reader note), After launch section for 0.4.0, columns and skill count in sync with the README 2026-10-10 23:55:43 +08:00
CRT
79fea16016 0.4.0: changelog, version, README (journey, commands, skills, MCP, safety, FAQ, roadmap), agent rules, adapters
Owner-only steps in docs/agents-core.md now include Beta App Review, tester invitations, review replies, price changes
and store experiments; personal data stays in .storebound/. README: live-game journey row, TestFlight and After launch
command tables, four new skills, MCP 2026-07-28, unverified list. SECURITY: new endpoints.
2026-10-10 23:30:48 +08:00
CRT
d3cc7e43d4 Product Page Optimization through the API (apple ppo) and an optional 6.3" iPhone size key
apple ppo status | create --variant b[,c] | upload --variant b | start | stop: v2 experiments (platform IOS, traffic
proportion), one treatment per shots variant (max 3), a treatment localization per App Store locale, and the variant
renders synced into the treatment screenshot sets (shared MD5-idempotent set sync with apple screenshots, which no
longer creates sets on --dry). start / stop ask first and are not MCP tools; MCP: apple_ppo_status, apple_ppo_create,
apple_ppo_upload. Play experiments stay console-only (documented).
apple.iphoneMedium (off by default): iphone-medium size key, 1206 x 2622 (1179 x 2556 accepted), uploaded as
APP_IPHONE_61; rendered, checked, required and uploaded only when enabled. Apple's scaling rule documented in the config
and the store-screenshots skill.
2026-10-10 23:28:10 +08:00
CRT
20db1345e4 MCP 2026-07-28: stateless revision with server/discover and per-request _meta, still 2025-11-25 compatible
Dual-era server: requests that carry io.modelcontextprotocol/protocolVersion are served statelessly (server/discover
with supportedVersions, capabilities, instructions, ttlMs / cacheScope; resultType complete and serverInfo in every
result's _meta; cacheable tools/list; -32022 UnsupportedProtocolVersion with data { supported, requested }; -32602 when
clientCapabilities is missing). initialize / ping / unannotated requests keep the 2025-11-25 (and older) behaviour.
Tests for both handshakes, including one stdio process serving a modern probe and a legacy client.
2026-10-10 23:28:10 +08:00
CRT
952a3a6e37 Analytics snapshots: storebound analytics setup | snapshot | compare, store-analytics skill
App Store Connect Analytics Reports API (ONGOING request, Discovery and Engagement + Downloads Standard reports,
daily instances, md5-checked gzip segments, newest processing per day) and the Play statistics exports in the
pubsite_prod_rev_ Cloud Storage bucket (UTF-16 CSV, store listing visitors / acquisitions, daily user installs;
play.reportsBucket). Snapshots in .storebound/analytics/<date>.json; compare lines them up with the git history of the
store files (7 days before vs after each change). MCP: analytics_snapshot, analytics_compare, analytics_setup.
2026-10-10 23:28:10 +08:00
CRT
104cd79117 Price sheet: storebound prices export | import (CSV of product x store x region)
export reads the current App Store manual (and with --with-automatic the equalized) prices and the Play purchase
option regional prices into one CSV. import parses and checks the sheet, prints a diff table (change %), and after a
confirmation writes one App Store price schedule per changed product (base territory + every manual price, future-dated
changes via start_date, price point ids looked up per territory) and the Play regional configs (CSV over current,
convertRegionPrices for regions without a price, --reconvert). MCP: prices_diff (read-only), prices_export; applying
stays a terminal command. store-iap-setup skill: price sheet section.
2026-10-10 23:28:10 +08:00
CRT
c99febc45b Review replies: storebound reviews list | draft | send, review-replies skill
App Store customerReviews / customerReviewResponses and Google Play reviews.list / reviews.reply. draft writes one
Markdown file per unanswered review to .storebound/replies (front matter approved: false, never overwritten); send
only sends approved, unsent drafts that pass the checks (Play 350 characters, no incentives or rating requests,
personal data / link / tone warnings) after a confirmation, and marks them sent. MCP: reviews_list, reviews_draft;
send is never exposed.
2026-10-10 23:28:10 +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
3f12452e3f TestFlight through the App Store Connect API: apple testflight status | groups | testers | what-to-test | info | distribute
Beta groups from apple.testflight.groups (created when missing, never changed), testers from a CSV in .storebound/
(masked in logs, confirmation before Apple emails invitations, --remove / --invite), What to Test per locale from the
App Store listing (whatToTest or whatsNew), Test Information and Beta App Review details, builds by exact number to
groups, Beta App Review submission behind --submit-review and a confirmation. Pure planners in cli/lib/testflight.ts,
shared CSV / table / JSON:API helpers. MCP: apple_testflight_status, _groups, _what_to_test, _info, _distribute
(internal groups only). Skill testflight.
2026-10-10 23:28:10 +08:00
CRT
417365eda3 storebound.dev landing page in site/ (static, no build, no external requests), README links the site 2026-10-10 23:01:36 +08:00
CRT
74dbf8f5a6 0.3.1: README around the zero-to-Submit journey, journey diagram, new positioning in package and plugin descriptions 2026-10-10 22:49:27 +08:00
CRT
c43c20f370 package.json: bin path normalised (npm pkg fix) 2026-10-10 22:39:28 +08:00
CRT
d3e569c3c8 README images via absolute URLs (render on npm too); npm package ships docs/agents-core.md only, plus homepage and bugs links 2026-10-10 22:36:52 +08:00
CRT
a4a3d0c568 0.3.0: changelog, version, adapters 2026-10-10 22:33:01 +08:00
CRT
a1910a00bb README rewrite: showcase, quick start, automatic vs manual, commands, safety model, FAQ, roadmap; CONTRIBUTING and SECURITY 2026-10-10 22:33:01 +08:00
CRT
045c45e3fc Showcase images rendered by storebound from the demo game 2026-10-10 22:33:01 +08:00
CRT
e61de241ba Demo game: Prism Puddle (fictional, procedural canvas art) with a storebound config for screenshots, variants and video 2026-10-10 22:33:01 +08:00
CRT
a2c2389275 Regenerate adapters 2026-10-10 22:24:59 +08:00
CRT
f769574c98 New skill: app-previews (record, cut, check, upload; Play promo video via YouTube) 2026-10-10 22:24:59 +08:00
CRT
b63c5dc1cf store-screenshots skill: MCP use; iPhone required class (medium Dynamic Island) and why 6.9" stays the default 2026-10-10 22:24:58 +08:00
CRT
ccd48465a6 MCP: shots_check (read-only), shots_capture / render / gallery / record / video (local, dry by default), apple_previews; variant on uploads 2026-10-10 22:24:58 +08:00
CRT
5b4902496d shots render --dry: plan per language and variant 2026-10-10 22:24:58 +08:00
CRT
e6f1a08bae Tests: clip planning, ffmpeg argv, time codes, probe checks, recording argv, preview sets, promo video 2026-10-10 22:22:52 +08:00
CRT
b97242b863 Register shots record, shots video and apple previews 2026-10-10 22:22:52 +08:00
CRT
6470c486f6 play listing sends the promo video URL (play.video) 2026-10-10 22:22:52 +08:00
CRT
2914f04129 apple previews: app preview sets per locale, MD5-idempotent, poster frame time code, local checks first, --dry 2026-10-10 22:22:52 +08:00
CRT
0cf5b8cdae shots video: dry run, clips under half a second skipped instead of the remainder 2026-10-10 22:22:52 +08:00
CRT
ea18406712 shots record: gameplay clips from a web build (Chromium screencast), iOS Simulator, Android emulator or a folder 2026-10-10 22:22:52 +08:00
CRT
d36825e44f store-screenshots skill: gallery, variants, Play listing experiments and Product Page Optimization 2026-10-10 22:16:39 +08:00
CRT
1f8ada248e Tests: gallery data and HTML, variant paths, contact sheet layout 2026-10-10 22:16:38 +08:00
CRT
d304cdab6d shots gallery: self-contained review page of every render with issues highlighted 2026-10-10 22:16:38 +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
595bdbcf78 Contact sheet packed into a grid, Android tablet body for Play tablet sizes, variant in the feature graphic 2026-10-10 22:16:38 +08:00
CRT
df1a757a8b Tests for store image rules and iPad wiring; skill and README: iPad, sources, checks 2026-10-10 21:54:47 +08:00
CRT
aecdcb1c50 Store image checks in shots check and validate
- Apple sizes accepted portrait or landscape; Play screenshots any accepted size (320-3840 px, at most 2:1);
  Play rejects 16-bit PNGs; feature graphic exactly 1024 x 500
- Required sets per language (Apple only with an App Store locale, Play only with a Play code)
- shots check scans A/B variant folders only with --variants
- validate adds the local renders checks: store errors are blockers, overflow flags warnings (--no-local skips)
2026-10-10 21:54:47 +08:00
CRT
3d257402cc 13" iPad end to end: frame defaults with apple.ipad, per-device crop, iPad display set, simulator warm-up
- Tablet frames default to the 13" iPad screen (1032 x 1352 @2x below a 24 px bar) when apple.ipad is set
- shots.capture.cropTop takes a number or { phone, tablet }; default is the frame's bar share per device class
- capture warns when a cropped frame does not match the frame aspect
- apple screenshots uploads ipad13 as APP_IPAD_PRO_3GEN_129 only with apple.ipad; validate requires it then
- ios-sim: one warm-up launch after a cold boot (ios.warmupMs, default 8000) so the first frame is not blank
2026-10-10 21:54:47 +08:00
CRT
4755ab4e30 store-screenshots skill: capture sources, dry run, shots check 2026-10-10 21:30:40 +08:00
CRT
4356395087 Tests: capture config, simctl / adb argv builders, frame checks 2026-10-10 21:30:40 +08:00
CRT
c154f38c29 Register shots check; describe the capture sources in help and README 2026-10-10 21:30:40 +08:00
CRT
1b8847e759 Shots capture: iOS Simulator, Android emulator / device and folder sources
simctl / adb / ffmpeg argv builders in devices.ts; capture.ts runs them with
per-shot progress, --dry, clear errors when xcrun / adb / ffmpeg are missing,
status bar restore, and shuts down only a simulator it booted (--keep-booted).
2026-10-10 21:30:40 +08:00