|
|
73d308164d
|
Windows builds and moved credentials: play build runs gradlew.bat through cmd /c and takes C:/ keystore paths as absolute (pitfall 98); check names credential paths missing on this machine and a keystore the stored password / alias do not open (keytool) (pitfall 99); play / apple build write <out>/latest.json for CI; CI install from a git clone documented
|
2026-10-22 02:10:52 +08:00 |
|
|
|
4fcee60ba6
|
Direct store API calls in a project's scripts: androidpublisher.googleapis.com, the googleapis androidpublisher client, api.appstoreconnect.apple.com, altool / Transporter in CI files and scripts; scan rule direct-store-api, check and release status warnings with file:line and the storebound command; storebound's own checkout skipped; test, pitfall 97
|
2026-10-22 02:04:28 +08:00 |
|
|
|
4f993a906a
|
fastlane traces: check and release status warn, scan reports fastlane-upload when a Fastfile / Appfile or a CI file or script still runs fastlane supply, deliver or pilot (file:line, storebound import fastlane); test, pitfall 96
|
2026-10-22 01:39:14 +08:00 |
|
|
|
46f3e56c09
|
Windows checkouts: .gitattributes keeps text files LF (CRLF skills broke gen-adapters); findInstalled builds macOS/Linux paths with posix join; CONTRIBUTING Windows setup and desktop build
|
2026-10-21 22:26:30 +08:00 |
|
|
|
0ac3cd02b0
|
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 |
|
|
|
88d1b58f1f
|
shots: render refuses missing frames and fails on load errors; shots check errors on renders with failed loads (pitfall 93)
|
2026-10-21 18:09:06 +07:00 |
|
|
|
00756e6908
|
Screenshot guardrails: name every screenshot not COMPLETE on 409 ASSET_IN_POST_PROCESSING (submit, validate; stuck after 5 min in UPLOAD_COMPLETE), apple screenshots --repair-stuck replaces only those in place, part uploads without Expect: 100-continue (failed part deletes the reservation, one retry, never committed), storebound api --confirm <operationId> for agents' plain writes (never owner-only)
|
2026-10-21 18:08:57 +07:00 |
|
|
|
4d70be3404
|
apple submit --yes submits a draft prepared with --no-submit that already holds the version and items (was 'nothing to submit'); iap-submit the same for a draft holding the asked-for items; test, pitfall 90, CHANGELOG
|
2026-10-21 11:19:50 +07:00 |
|
|
|
327a85e042
|
console verify: an older page's long labelled radio still counts from page text when the sheet answers Yes / No; tests and the teaser follow the new sign-in details question and the added App Privacy step
|
2026-10-21 05:39:45 +07:00 |
|
|
|
b6ea9159d8
|
review-details: a reviewContact that is present but has empty fields (or no usable email) is named as such with its file, instead of 'no review contact'
|
2026-10-21 05:37:45 +07:00 |
|
|
|
9c1f146c05
|
flags regenerated
|
2026-10-21 05:36:12 +07:00 |
|
|
|
aceb994cae
|
testflight distribute: groups of apple.testflight.groups missing on App Store Connect are created first (only the asked-for ones, never removed; dry run shows it); tests, skill, CHANGELOG
|
2026-10-21 05:35:19 +07:00 |
|
|
|
163e666834
|
Game Center switch before submit: apple submit / resubmit and signing ensure create gameCenterDetails and gameCenterAppVersions when Game Center is in use (config, entitlements or the built IPA), shown in the dry run; validate blocks on either missing; fake 409 BUILD_INDICATES_GAME_CENTER_ENABLED until both exist; pitfall 89
|
2026-10-21 05:33:53 +07:00 |
|
|
|
dd9e059036
|
desktop coverage: apple game-center, play games and games status mapped to the Game services card
|
2026-10-21 05:29:55 +07:00 |
|
|
|
567d6ca181
|
gen-flags: Args.required reads are flags too (edit --ops, privacy-manifest --ios, apple listing --version were refused as unknown options); play games client listAll (no false flags)
|
2026-10-21 05:29:08 +07:00 |
|
|
|
d427b5c4a4
|
apple game-center: literal API paths (query guard reads them); api coverage regenerated
|
2026-10-21 05:29:08 +07:00 |
|
|
|
26f0723641
|
games status: both stores' game services in one read-only report (CLI, MCP games_status, desktop read method); --json status output stays pure JSON
|
2026-10-21 05:28:47 +07:00 |
|
|
|
9f48dd57a4
|
MCP: apple_game_center, apple_game_center_status, play_games, play_games_status (writes dry by default)
|
2026-10-21 05:28:47 +07:00 |
|
|
|
3116c230ae
|
scan: Play Games Services dependency without the APP_ID meta-data or resource (sign-in fails at runtime)
|
2026-10-21 05:28:47 +07:00 |
|
|
|
23f7c5a5eb
|
validate / check: Game Center entitlement vs App ID capability vs config, the PGS APP_ID resource vs Gradle and config, store state vs the games list, player id as User ID reminders (App Privacy USER_ID, Data safety PSL_USER_ACCOUNT)
|
2026-10-21 05:28:47 +07:00 |
|
|
|
5a5d7fd4e7
|
console plan play-games-services: agent-first PGS setup (games project, Android credential with the app-signing SHA-1, web OAuth client, owner's Publish) with absolute Play Console and Google Cloud links, and console verify from the page text
|
2026-10-21 05:28:47 +07:00 |
|
|
|
ca7289b173
|
games: one config section for Game Center and Play Games Services (shared leaderboards and achievements); apple game-center (gameCenterDetails, gameCenterAppVersions, leaderboards, achievements and localizations, upsert by vendor id, read back); play games (Games Configuration API upsert, no POST retry); signing ensure adds GAME_CENTER when games.gameCenter
|
2026-10-21 05:28:47 +07:00 |
|
|
|
dc6bb088a1
|
desktop coverage: every CLI command mapped to its window place (cli/lib/desktop-coverage.ts), docs/desktop-coverage.md generated from it, guard test fails on a gap or an unjustified not-for-desktop
|
2026-10-21 05:14:16 +07:00 |
|
|
|
ce1b1edcb8
|
serve: desktop methods for play build / upload / share / app-id, apple build / upload / signing ensure / adhoc register + export, shots fonts / jpeg, install (dry run first; the host token answers their question)
|
2026-10-21 05:14:16 +07:00 |
|
|
|
335a4124ab
|
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 |
|
|
|
dda21d2570
|
shots record (web): frames at device pixels through Page.captureScreenshot (clip scale = dpr, long side capped at 1920, 3 requests in flight, midpoint timestamps into the ffmpeg concat); Chromium's screencast stayed at CSS size. Warnings for frames smaller than asked and under 20 frames/s; record-web browser test, pitfall 85
|
2026-10-21 03:59:39 +07:00 |
|
|
|
3a11682a37
|
shots: app titles get the weights the templates use (variable axis, used range or static weights; font-weight warning), palette.bg as one colour or a CSS gradient string (validated; contrast guard in shots check), photo backgrounds (palette.image, shots.feature.background) with overlay and cover crop
|
2026-10-21 03:07:26 +07:00 |
|
|
|
353e13d5be
|
shots: Playwright's chromium is taken from the namespace or default of a project's CommonJS playwright; a module without chromium.launch names the resolved file and its exports (a project's playwright 1.57 under a global Bun install gave 'reading launch of undefined'); tests: the review-account fixture typechecks
|
2026-10-20 13:44:22 +07:00 |
|
|
|
8c1a01d856
|
config loads without Node's MODULE_TYPELESS_PACKAGE_JSON warning in a CommonJS project; capture sign-in docs use captureAuth and check notes a local capture that signs in with reviewDemoAccount (the App Review account)
|
2026-10-20 13:11:10 +07:00 |
|
|
|
e1e4e05237
|
shots capture: signed-in web apps (shots.capture.auth request with ${cred:}/${env:} references or storageState), shots login saves a demo sign-in to .storebound/auth.json (0600), expired-session warning, secrets and cookies masked
|
2026-10-20 12:41:43 +07:00 |
|
|
|
9ab64bcbdf
|
apps folders add adds the folder (template note, refusals with reasons); MCP: .mcp.json never spawns a missing plugin path (sh fallback to PATH, npx), mcp/serve skip the self-update, spawned handshake test; store build minimums in one dated table: Play target API 36 and App Store Xcode 26 / SDK 26 blocked in scan, validate, play upload/release, apple upload; pitfalls 81-83
|
2026-10-20 12:15:00 +07:00 |
|
|
|
e59539fec8
|
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 |
|
|
|
30488c512d
|
release: the desktop typecheck runs before the tag (0.8.14's Mac build stopped on an unused variable after the tag); a staged npm publish (409 previously staged) waits for the maintainer's approval instead of 5 minutes of polling; cross-store: drop the unused variable
|
2026-10-20 03:16:23 +07:00 |
|
|
|
74101edeca
|
api tables regenerated (the new creative-assets and platform commands wrap more operations)
|
2026-10-20 03:08:37 +07:00 |
|
|
|
9db7180eb9
|
merge origin/main (cross-store text checker); macOS platform pitfall renumbered to 79
|
2026-10-20 03:06:16 +07:00 |
|
|
|
c2f34c62f3
|
apple creative-assets: place Header and Search Results assets once Apple approved them (the version page offers only approved assets); waiting files are reported per locale and placement with their upload date and the re-run command, in the run, --verify, validate and the report; iPhone Duo: the published API spec still has no Duo type, the note says the console takes Duo and the API does not yet
|
2026-10-20 03:04:14 +07:00 |
|
|
|
47dfd372fe
|
apple: macOS (tvOS, visionOS) versions are no longer invisible: every version and review submission lookup is per platform; status, listing, listing pull, resubmit, submit, release and screenshots take --platform and otherwise pick the platform that has the version they need (refuse naming both when several do); status, validate, release status, the report and the desktop label versions with their platform; MCP and owner actions get platform; pitfall 77
|
2026-10-20 03:00:05 +07:00 |
|
|
|
edabbec874
|
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 |
|
|
|
1736300784
|
apple creative-assets: a placement App Store Connect refuses on the live version is reported with the live version page's deep link, the live page stays unchanged (new placement first, old one removed after) and the other live slots are not retried; pitfall 76
|
2026-10-20 02:50:09 +07:00 |
|
|
|
98d3bf4410
|
creative-assets: the dry run plans one upload per file, not per slot (a shared file used by 13 locales read as 26 uploads)
|
2026-10-19 06:01:56 +07:00 |
|
|
|
7e69883dfc
|
creative-assets: the no-files message names the shared creative folder too
|
2026-10-19 05:47:54 +07:00 |
|
|
|
3542b897c8
|
creative assets: <renders>/creative/header.* / search.* fill every language without its own file (art without words needs no copy per locale; one upload, placed per locale)
|
2026-10-19 05:47:27 +07:00 |
|
|
|
c03291e7f7
|
apple creative-assets: a live app without an editable version uses the live version (only approved assets are selected there; new ones upload and wait for a review of their own via --add-for-review); pitfall 76: placements read back ACTIVE live, a state the 4.5.1 spec does not list
|
2026-10-19 05:45:47 +07:00 |
|
|
|
183579449c
|
apple creative-assets: select Header and Search Results assets once processed (Prepare for Submission), not once approved: Apple reviews an asset only in a review submission, so 0.8.13 waited forever; upload and select in one run with a bounded processing wait; --add-for-review puts unreviewed assets into the draft review submission (never submits); --verify reads every slot back read-only (MCP apple_creative_assets_verify); a rejected file or one that failed processing twice is not re-uploaded, an archived copy is unarchived; fake commits library assets to PREPARE_FOR_SUBMISSION; pitfall 76 rewritten; apple-name check test only looks at name hints
|
2026-10-19 05:42:53 +07:00 |
|
|
|
e5369090fa
|
apple creative-assets: App Store Header and Search Results (PRODUCT_PAGE_HEADER_ASSET, APP_STORE_SEARCH_RESULTS_ASSET) through the App Asset Library: local size / alpha / video checks, upload once by MD5, select only approved assets, replace on a changed file; check / validate note, MCP tool, gallery and desktop Art row, docs, pitfall 75
|
2026-10-18 13:10:20 +07:00 |
|
|
|
14ffe3545a
|
npx / bunx storebound always run the newest version: a copy started from the npx or bunx cache re-runs the command as storebound@<newest> when npm has a newer one (registry asked at most every 10 minutes, 1.5 s timeout; off with STOREBOUND_NO_UPDATE=1, in CI and offline); a project install gets a one-line note instead
|
2026-10-18 13:09:06 +07:00 |
|
|
|
3381673ae6
|
iPhone Duo screenshots (render, check, upload skip with console link while the API has no display type) and the medium display class as the required iPhone set, labels as in the console
|
2026-10-18 13:07:15 +07:00 |
|
|
|
af349b3db1
|
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 |
|
|
|
5a266b952f
|
templates: the 2.3.1 example line says where the same goes on Google Play (no review-notes field: App access 'Any other information' with a sign-in, and the full description for what needs a subscription)
|
2026-10-18 01:29:36 +08:00 |
|
|
|
61cb3338e8
|
scan: remote config, feature flags and remote paywalls not told to review (App Review 2.3.1, Play Deceptive behavior): remote-features finding for both stores, medium, with deep links, unless the review notes mention them; check prints it as a warning, validate carries it; warn only, the templates get a commented example line; code obfuscators a low note, minify alone nothing; store-pitfalls 74
|
2026-10-18 01:26:32 +08:00 |
|