Commit graph

150 commits

Author SHA1 Message Date
CRT
1ebafbd91a 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
CRT
38aee7dafb Desktop: tray icon, start at logon hidden (autostart --hidden, window state never restores visible), closing hides to the tray, background signed auto-update at start and every 30 min with restart
Some checks failed
ci / gate (push) Successful in 3s
ci / windows (push) Has been cancelled
ci / linux (push) Has been cancelled
ci / ci (push) Has been cancelled
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Has been cancelled
ci / acceptance (bun, 22, windows, Windows, bun) (push) Has been cancelled
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node20, 20, windows, Windows, node) (push) Has been cancelled
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node22, 22, windows, Windows, node) (push) Has been cancelled
ci / record (push) Has been cancelled
2026-10-22 05:59:41 +08:00
CRT
d5877504ee 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
Some checks failed
ci / gate (push) Successful in 2s
ci / ci (push) Failing after 1m30s
ci / linux (push) Failing after 1m12s
ci / windows (push) Failing after 17m12s
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Has been cancelled
ci / acceptance (bun, 22, windows, Windows, bun) (push) Has been cancelled
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node20, 20, windows, Windows, node) (push) Has been cancelled
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node22, 22, windows, Windows, node) (push) Has been cancelled
ci / record (push) Has been cancelled
2026-10-22 03:28:46 +08:00
CRT
7e5bb5ed53 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
CRT
a434ddbf2e 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
CRT
f1b8bcecdd 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
CRT
32a0045ef7 docs/HANDOFF.md: what is released, the open work (desktop report view in a stash, two worktrees of other sessions, things not verified live), and the rules that matter
All checks were successful
ci / gate (push) Successful in 2s
ci / ci (push) Successful in 1m30s
ci / linux (push) Successful in 3m37s
ci / windows (push) Successful in 3m45s
ci / acceptance (bun, 22, windows, Windows, bun) (push) Successful in 28s
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Successful in 35s
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Successful in 1m22s
ci / record (push) Successful in 10s
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Successful in 1m28s
ci / acceptance (node20, 20, windows, Windows, node) (push) Successful in 5m49s
ci / acceptance (node22, 22, windows, Windows, node) (push) Successful in 5m29s
2026-10-21 18:10:58 +07:00
CRT
9e1ce42fe5 shots: render refuses missing frames and fails on load errors; shots check errors on renders with failed loads (pitfall 93)
Some checks failed
ci / gate (push) Successful in 2s
ci / linux (push) Has been cancelled
ci / ci (push) Has been cancelled
ci / windows (push) Has been cancelled
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Has been cancelled
ci / acceptance (bun, 22, windows, Windows, bun) (push) Has been cancelled
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node20, 20, windows, Windows, node) (push) Has been cancelled
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node22, 22, windows, Windows, node) (push) Has been cancelled
ci / record (push) Has been cancelled
2026-10-21 18:09:06 +07:00
CRT
55f8b7ca16 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
CRT
4fecf2e0b1 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
Some checks failed
ci / gate (push) Successful in 2s
ci / windows (push) Has been cancelled
ci / linux (push) Has been cancelled
ci / ci (push) Has been cancelled
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Has been cancelled
ci / acceptance (bun, 22, windows, Windows, bun) (push) Has been cancelled
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node20, 20, windows, Windows, node) (push) Has been cancelled
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node22, 22, windows, Windows, node) (push) Has been cancelled
ci / record (push) Has been cancelled
2026-10-21 11:19:50 +07:00
CRT
6eff4b3ea3 desktop coverage: apple game-center, play games and games status mapped to the Game services card 2026-10-21 05:29:55 +07:00
CRT
b627a18990 apple game-center: literal API paths (query guard reads them); api coverage regenerated 2026-10-21 05:29:08 +07:00
CRT
803d48dab8 docs: game-services skill (Game Center + Play Games Services step by step), pitfall 86, commands, CHANGELOG Unreleased; adapters regenerated 2026-10-21 05:29:08 +07:00
CRT
73d3d2b30d docs: desktop.md (coverage map, More tools tab), CHANGELOG Unreleased
Some checks failed
ci / gate (push) Successful in 2s
ci / ci (push) Failing after 1m54s
ci / linux (push) Successful in 4m1s
ci / windows (push) Successful in 3m28s
ci / acceptance (bun, 22, windows, Windows, bun) (push) Failing after 26s
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Failing after 31s
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Failing after 1m17s
ci / record (push) Successful in 10s
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Failing after 1m20s
ci / acceptance (node20, 20, windows, Windows, node) (push) Failing after 5m13s
ci / acceptance (node22, 22, windows, Windows, node) (push) Failing after 5m36s
2026-10-21 05:14:24 +07:00
CRT
c56c45d7d4 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
CRT
32ad9147e0 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
CRT
2c6bbb6453 release: the Linux / Windows updater signatures are made on the VDS (desktop-release add-remote, vds-key; tools/vds-sign.ts); the Mac no longer downloads those installers, verifies each returned .sig over its BLAKE2b-512 digest before publishing; release.ts --sign-local keeps the old path
Some checks failed
ci / gate (push) Successful in 2s
ci / linux (push) Has been cancelled
ci / ci (push) Has been cancelled
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Has been cancelled
ci / acceptance (bun, 22, windows, Windows, bun) (push) Has been cancelled
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node20, 20, windows, Windows, node) (push) Has been cancelled
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node22, 22, windows, Windows, node) (push) Has been cancelled
ci / windows (push) Has been cancelled
ci / record (push) Has been cancelled
2026-10-21 03:14:53 +07:00
CRT
c77854f258 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
CRT
d82be973f4 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
Some checks failed
ci / gate (push) Successful in 2s
ci / ci (push) Failing after 1m26s
ci / linux (push) Successful in 3m40s
ci / windows (push) Successful in 3m44s
ci / acceptance (bun, 22, windows, Windows, bun) (push) Failing after 23s
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Failing after 32s
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Failing after 2m13s
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Failing after 1m18s
ci / record (push) Successful in 10s
ci / acceptance (node20, 20, windows, Windows, node) (push) Failing after 5m19s
ci / acceptance (node22, 22, windows, Windows, node) (push) Failing after 5m15s
2026-10-20 12:41:43 +07:00
CRT
bfe7c4b417 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
Some checks failed
ci / gate (push) Successful in 2s
ci / ci (push) Successful in 1m14s
ci / linux (push) Has been cancelled
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Has been cancelled
ci / acceptance (bun, 22, windows, Windows, bun) (push) Has been cancelled
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node20, 20, windows, Windows, node) (push) Has been cancelled
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node22, 22, windows, Windows, node) (push) Has been cancelled
ci / windows (push) Has been cancelled
ci / record (push) Has been cancelled
2026-10-20 03:29:19 +07:00
CRT
e4297e5731 api tables regenerated (the new creative-assets and platform commands wrap more operations)
Some checks failed
ci / gate (push) Successful in 2s
ci / windows (push) Has been cancelled
ci / linux (push) Has been cancelled
ci / ci (push) Has been cancelled
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Has been cancelled
ci / acceptance (bun, 22, windows, Windows, bun) (push) Has been cancelled
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node20, 20, windows, Windows, node) (push) Has been cancelled
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node22, 22, windows, Windows, node) (push) Has been cancelled
ci / record (push) Has been cancelled
2026-10-20 03:08:37 +07:00
CRT
787704a653 merge origin/main (cross-store text checker); macOS platform pitfall renumbered to 79
Some checks failed
ci / gate (push) Successful in 1s
ci / windows (push) Failing after 30s
ci / ci (push) Failing after 51s
ci / linux (push) Failing after 53s
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Has been skipped
ci / acceptance (bun, 22, windows, Windows, bun) (push) Has been skipped
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Has been skipped
ci / acceptance (node20, 20, windows, Windows, node) (push) Has been skipped
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Has been skipped
ci / acceptance (node22, 22, windows, Windows, node) (push) Has been skipped
ci / record (push) Has been skipped
2026-10-20 03:06:16 +07:00
CRT
872585c658 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
CRT
83f870f9a1 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
Some checks failed
ci / gate (push) Successful in 2s
ci / windows (push) Failing after 28s
ci / ci (push) Failing after 59s
ci / linux (push) Failing after 59s
ci / acceptance (bun, 22, windows, Windows, bun) (push) Has been skipped
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Has been skipped
ci / acceptance (node20, 20, windows, Windows, node) (push) Has been skipped
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Has been skipped
ci / acceptance (node22, 22, windows, Windows, node) (push) Has been skipped
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Has been skipped
ci / record (push) Has been skipped
2026-10-20 02:57:25 +07:00
CRT
a599e5cb90 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
CRT
10768bc078 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
CRT
338def4fe3 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
CRT
066b099e96 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
Some checks failed
ci / gate (push) Successful in 2s
ci / ci (push) Failing after 1m13s
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Successful in 33s
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Successful in 1m16s
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Successful in 1m20s
ci / linux (push) Successful in 4m9s
ci / acceptance (bun, 22, windows, Windows, bun) (push) Successful in 24s
ci / acceptance (node20, 20, windows, Windows, node) (push) Has been cancelled
ci / acceptance (node22, 22, windows, Windows, node) (push) Has been cancelled
ci / windows (push) Has been cancelled
ci / record (push) Has been cancelled
2026-10-18 13:10:20 +07:00
CRT
f9e7af11b4 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
Some checks failed
ci / gate (push) Successful in 2s
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Successful in 29s
ci / acceptance (bun, 22, windows, Windows, bun) (push) Successful in 38s
ci / ci (push) Failing after 1m7s
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Successful in 1m21s
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Successful in 1m21s
ci / acceptance (node20, 20, windows, Windows, node) (push) Successful in 6m14s
ci / linux (push) Successful in 5m14s
ci / acceptance (node22, 22, windows, Windows, node) (push) Successful in 5m20s
ci / windows (push) Successful in 3m56s
ci / record (push) Successful in 10s
2026-10-18 13:07:15 +07:00
CRT
615122d22c 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
Some checks failed
ci / gate (push) Successful in 2s
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Successful in 30s
ci / acceptance (bun, 22, windows, Windows, bun) (push) Successful in 30s
ci / ci (push) Has been cancelled
ci / acceptance (node20, 20, windows, Windows, node) (push) Has been cancelled
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node22, 22, windows, Windows, node) (push) Has been cancelled
ci / linux (push) Has been cancelled
ci / windows (push) Has been cancelled
ci / record (push) Has been cancelled
2026-10-18 01:42:03 +08:00
CRT
4032657695 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
Some checks failed
ci / gate (push) Successful in 2s
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Successful in 28s
ci / acceptance (bun, 22, windows, Windows, bun) (push) Successful in 33s
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Successful in 1m20s
ci / ci (push) Successful in 2m3s
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Successful in 1m23s
ci / acceptance (node20, 20, windows, Windows, node) (push) Has been cancelled
ci / linux (push) Has been cancelled
ci / acceptance (node22, 22, windows, Windows, node) (push) Has been cancelled
ci / windows (push) Has been cancelled
ci / record (push) Has been cancelled
2026-10-18 01:26:32 +08:00
CRT
241bf6a735 review access: guest-play apps rejected by Play as a login wall (empty name field, disabled Continue, a code link on the first screen): check warns for a Play app with a first-run gate or IAP and no reviewAccess.instructions; with guest steps the play-sign-in-details plan declares one entry without credentials, the dialog's required full-access box as the owner's step; store-pitfalls 73
All checks were successful
ci / gate (push) Successful in 2s
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Successful in 30s
ci / acceptance (bun, 22, windows, Windows, bun) (push) Successful in 33s
ci / ci (push) Successful in 1m32s
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Successful in 1m24s
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Successful in 1m21s
ci / acceptance (node20, 20, windows, Windows, node) (push) Successful in 5m32s
ci / linux (push) Successful in 4m10s
ci / acceptance (node22, 22, windows, Windows, node) (push) Successful in 4m33s
ci / windows (push) Successful in 3m21s
ci / record (push) Successful in 9s
2026-10-17 12:50:06 +08:00
CRT
42835c94f1 neutral names in docs, tests and comments (no real app or project names)
Some checks failed
ci / gate (push) Successful in 4s
ci / acceptance (bun, 22, windows, Windows, bun) (push) Has been skipped
ci / ci (push) Has been cancelled
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Has been cancelled
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node20, 20, windows, Windows, node) (push) Has been cancelled
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Has been cancelled
ci / acceptance (node22, 22, windows, Windows, node) (push) Has been cancelled
ci / linux (push) Has been cancelled
ci / windows (push) Has been cancelled
ci / record (push) Has been cancelled
2026-10-16 06:14:02 +08:00
CRT
748da4fb49 play: changesNotSentForReview goes only on edits.commit (validate answers 400 "Unknown name changesNotSentForReview: Cannot bind query parameter", found by a game on 0649abe's real run): a refused commit is committed again with the parameter, a dry run's refused validate only says how the real run commits; the fake Play refuses the parameter on validate and a test asserts validate never gets it 2026-10-16 05:53:18 +08:00
CRT
0649abe5c4 play: an edit Play will not send for review (400 'set changesNotSentForReview to true', a game 1.0.1 (5) after a rejection) is validated and committed again on the same edit with changesNotSentForReview=true; dry runs validate that way and say so; prints the Publishing overview link (owner's button), records it in .storebound/ for play status; --not-sent-for-review on release / upload / rollout / listing / images and MCP / desktop; pitfall 72 2026-10-16 05:50:37 +08:00
CRT
d029dadda1 Console pages as absolute deep links: cli/lib/console-links.ts builds the URL of every App Store Connect / Play Console page from apple.appId, play.developerId and play.appId (app list / developer chooser when unknown); every plain 'App Store Connect > ...' / 'Play Console > ...' direction in cli/ and templates/ now carries it, validate / scan / declarations / release plan JSON carry url, the desktop shows an Open button; tests/console-links.test.ts guards it; AGENTS rule 11, pitfall 71 2026-10-15 19:55:37 +08:00
CRT
f6aac93762 First in-app purchases left out of a review are caught (pitfall 70): firstProductGaps in validate / release plan (blocker) and the apple submit plan (refuses to leave a never-approved first product out); apple status (WARN + firstProductGaps in --json), release status and the desktop checks warn while a version waits for or is in review without it; iap-review says 'ready, not submitted yet' instead of 'complete' 2026-10-15 19:31:26 +08:00
CRT
df8793b02c desktop: Fix with AI on scan findings that need a code change (aiFix: true, AI_FIX_RULES). The host (src-tauri/src/ai_fix.rs) runs the owner's local Claude Code headless in the app folder with Read / Edit / Write / Grep / Glob only (Bash, web tools, sub-agents disallowed) and a prompt it builds from the finding's fields; it refuses while the folder has uncommitted files, streams progress, times out after 10 min with a heartbeat, kills the process group on Cancel or exit, and records the run's changed files so Undo restores exactly those; the window shows the diff with Keep / Undo and rescans. Without claude the button copies the prompt (Copy for AI). Only the claude binary, git and kill / taskkill are started there (tests/security.rs); tests/ai_fix.rs covers the prompt, dirty-tree refusal, undo scope, timeout and cancel 2026-10-15 06:26:29 +08:00
CRT
3e4208e656 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
CRT
f917f7e40d package: CommonJS projects get their own declarations (dist/types-cjs; node16 / nodenext refused an ESM-only .d.ts from a CJS file, TS1541); the package-types test covers ES module and CommonJS projects under bundler / node16 / nodenext / node10 and loads the package with import() and require() under Node; pitfall 69 2026-10-15 06:01:33 +08:00
CRT
b74160a73d browser tests run only by hand: the suites that launch Chrome / Chromium move to tests/browser/*.browser.ts (bun test, ci, ci:quick and the Forgejo workflows never pick them up; bun run test:browser runs them); the desktop boot check leaves bun run ci (it stays in desktop-release.ts mac at release time); CI=full is gone: Forgejo's ci runs the Rust steps when the push changed a Rust input (STOREBOUND_CI_BASE=HEAD~1), no Playwright install; CONTRIBUTING 2026-10-15 01:25:17 +08:00
CRT
68f0ec1a9b docs/pitfalls.md: rows 64-67 (the skill had them) 2026-10-15 01:21:13 +08:00
CRT
f6d995d3b3 release candidates: draft assets are read by their attachment uuid (the tag URL is 404 for drafts: the record job could not merge SHA256SUMS); the installers are scanned with the private terms in their build jobs, so the record job needs no apt tools (it spent 5 minutes installing them) 2026-10-15 01:18:55 +08:00
CRT
fa0fda46f9 release candidates: every push to main runs the full CI, the acceptance matrix and the Linux / Windows installer builds in parallel (ci.yml) and records the green result per commit as the draft rc-<sha> (green.json last); a version-only bump commit (proven file by file with the version writers) reuses its parent's CI and matrix and rebuilds only the installers; a v* tag only promotes the candidate (release.yml), fails fast on a red or missing commit; acceptance runs carry a CLI key; tools/release.ts does the whole release on the Mac (bump, CHANGELOG cut, fast gate, push, tag, Mac build + notarize in parallel with Forgejo, cached macOS acceptance, add, verify, publish with one upload of the Mac files, /Applications update, npm commands) and --rehearsal; DMG notarization runs while the app and updater bundle are checked; rehearsal channel on the VDS; docs 2026-10-15 00:42:50 +08:00
CRT
38a621970f console Chrome never outlives its run: exit kills it, SIGINT / SIGTERM / SIGHUP close it gracefully, a detached watchdog ends it when the parent dies (SIGKILL included; a reused pid is never killed); every start ends headless orphans on storebound profiles and names orphaned windows; headless runs on macOS prefer Chromium / Chrome for Testing over Google Chrome.app (an orphan kept the owner's Chrome from opening from the Dock); console fill closes the window on errors; pitfall 68; tests 2026-10-15 00:28:32 +08:00
CRT
023aaddc05 acceptance: the app fixture carries the owner's answers (unanswered: [], its own name and copyright; template answers are refused before store writes); macOS results of 0.8.4 (123/123 on Node 20, Node 22, Bun), docs/acceptance.md regenerated
Some checks are pending
release / prepare (push) Waiting to run
release / ci (push) Blocked by required conditions
release / linux (push) Blocked by required conditions
release / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Blocked by required conditions
release / acceptance (bun, 22, windows, Windows, bun) (push) Blocked by required conditions
release / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Blocked by required conditions
release / acceptance (node20, 20, windows, Windows, node) (push) Blocked by required conditions
release / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Blocked by required conditions
release / acceptance (node22, 22, windows, Windows, node) (push) Blocked by required conditions
release / acceptance-report (push) Blocked by required conditions
release / windows (push) Blocked by required conditions
release / release (push) Blocked by required conditions
2026-10-14 23:56:57 +08:00
CRT
93cad15023 --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
CRT
b6c9523037 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
CRT
608f9cea2f site: first-party, cookieless visit stats (self-hosted Umami at storebound.dev/s/, Do Not Track respected) with events for copy buttons, desktop downloads per OS, the teaser (play, 50 %, complete) and outbound docs / git / npm links; a privacy note in the footer; docs/site-analytics.md and tools/vds/ configs to rebuild the server side; scrub allows a page's public stats website id 2026-10-14 11:11:24 +08:00
CRT
d8c3cc88c2 acceptance: macOS results of 0.8.3 from 94f61e4 (123/123 on Node 20, Node 22, Bun), docs/acceptance.md regenerated
Some checks are pending
release / prepare (push) Waiting to run
release / ci (push) Blocked by required conditions
release / linux (push) Blocked by required conditions
release / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Blocked by required conditions
release / acceptance (bun, 22, windows, Windows, bun) (push) Blocked by required conditions
release / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Blocked by required conditions
release / acceptance (node20, 20, windows, Windows, node) (push) Blocked by required conditions
release / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Blocked by required conditions
release / acceptance (node22, 22, windows, Windows, node) (push) Blocked by required conditions
release / acceptance-report (push) Blocked by required conditions
release / windows (push) Blocked by required conditions
release / release (push) Blocked by required conditions
2026-10-14 08:51:14 +08:00