|
|
5b7b16ac08
|
Desktop boot check: accept the in-app dry-run preview before the native confirm
|
2026-10-23 10:25:26 +08:00 |
|
|
|
2f25f76377
|
Desktop boot check: scroll live art tiles one by one and wait for each lazy thumbnail
|
2026-10-22 23:58:45 +08:00 |
|
|
|
8cd4ecd63b
|
Desktop boot check: v2 markup (scan finding guideline pill, catalog screen root, lazy live thumbnails scrolled into view)
|
2026-10-22 23:47:29 +08:00 |
|
|
|
5bfbcefffa
|
release: a staged npm publish is reported with what happened on 0.8.25 / 0.8.26 (published on its own ~10 min later, nothing to approve): check dist-tags first
|
2026-10-22 02:50:12 +08:00 |
|
|
|
2598c4953a
|
doctor: build dependencies (JDK with the version the project needs, Android SDK command-line tools, CocoaPods, Node, Bun, bundletool), too-old status, doctor --install <tool> --yes runs the package-manager command (never sudo); desktop Dependencies shows too old; gen-flags works on Windows paths
|
2026-10-22 02:21:26 +08:00 |
|
|
|
a8a889fb35
|
release: a staged npm publish found on the retry is reported as waiting for the maintainer's approval instead of failing after 5 minutes
|
2026-10-22 02:17:28 +08: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 |
|
|
|
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 |
|
|
|
f5e7b907a9
|
acceptance: storebound api --yes without a terminal is refused (exit 1, nothing sent) since the TTY rule; the cell still expected a silent dry run and turned every acceptance job red
|
2026-10-21 04:01:41 +07:00 |
|
|
|
ef3c66e8f0
|
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
|
2026-10-21 03:14:53 +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 |
|
|
|
7c04a0653b
|
desktop boot check: match the submit dry run by its fields, not the exact JSON (the call carries platform since the macOS support; 0.8.14's Mac build stopped on it)
|
2026-10-20 03:29:59 +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 |
|
|
|
3e4015b686
|
ci: the background acceptance jobs start after the Linux and Windows installer builds (0.8.13's Windows installer waited behind six acceptance jobs on the one Windows runner); release: an npm deprecation already set by an earlier npm-publish run (422) is not an error
|
2026-10-18 13:38:26 +07:00 |
|
|
|
0b32df57f0
|
desktop-release: tauri only signs; the app is notarized with notarytool directly (up to 3 tries, later ones without S3 acceleration) and stapled, because the upload inside tauri bundle was cut off twice for 0.8.12 with no retry
|
2026-10-18 02:43:59 +08:00 |
|
|
|
d2ae0fa765
|
release: one release at a time (a lock with the pid in ~/.storebound-releases/release.lock): two runs once built into the same target folder and both failed
|
2026-10-18 02:32:44 +08:00 |
|
|
|
ddb813576e
|
desktop-release: notarization retries go by notarytool's status, not its exit code (0.8.12's aborted upload exited without an error), up to 3 tries, the later ones with --no-s3-acceleration
|
2026-10-18 02:24:34 +08:00 |
|
|
|
88078f1d7e
|
desktop-release: a DMG notarization upload cut off before Apple had it (abortedUpload) is submitted once more
|
2026-10-18 02:11:54 +08:00 |
|
|
|
9bfc107415
|
release-candidate: the background test jobs (ci, acceptance) never gate a candidate; only the installer builds and the record count (0.8.12 stopped on a red ci job)
|
2026-10-18 01:45:37 +08:00 |
|
|
|
6d95ea00f5
|
agent rules: every check, rule, template line, message and desktop view covers both stores and every surface
|
2026-10-18 01:31:17 +08:00 |
|
|
|
9ba97b7e29
|
release: candidate downloads go through Cloudflare first (the direct route to the origin was throttled per connection: one AppImage took 20+ min there, 3 MB/s through Cloudflare), the origin only as a fallback; a heartbeat logs the bytes every 30 s
|
2026-10-17 15:59:44 +08:00 |
|
|
|
d6070cc185
|
release: when the published version is still missing from the registry after 2 minutes, publish once more (0.8.10's publish answered 0 and left nothing)
|
2026-10-16 07:48:55 +08:00 |
|
|
|
9059b2b32a
|
background tests: ci.yml runs the CI and the acceptance matrix on every push again but nothing waits for them (the gate no longer waits for the parent's run, which a release's own bump push cancels; the record job needs only the installers); tools/ci-status.ts reports main's newest test run and release.ts prints a red one as a warning
|
2026-10-16 07:17:19 +08:00 |
|
|
|
b6c4beaada
|
release: the CHANGELOG cut is checked before any version copy changes, and in the dry run (an empty Unreleased left every copy bumped and the next run refused 'not newer')
|
2026-10-16 06:34:51 +08:00 |
|
|
|
cba4660777
|
release-candidate: a candidate whose jobs were only cancelled (a newer push to main cancels the older run) says so and gives the tag move + --resume line instead of 'red: fix it'
|
2026-10-16 05:54:14 +08:00 |
|
|
|
ead5da4ab3
|
release: npm publish + deprecate run by themselves with a granular access token from ~/.storebound-keys/npm-token (0600; npm reads it through a temporary userconfig, never argv, logs or the checkout); bun tools/release.ts npm-token saves it once from the clipboard, npm-publish publishes this checkout's version
|
2026-10-15 20:13:42 +08:00 |
|
|
|
9d41fcdc50
|
no CI, no acceptance runs (the owner's decision): Forgejo's ci and acceptance jobs are off (if: false), the record job needs only the Linux / Windows installers; release.ts skips ci:quick, the macOS acceptance matrix and its report (TESTS = false); build, signing, notarization, privacy scans and verify stay
|
2026-10-15 19:58:47 +08:00 |
|
|
|
e7e26db4aa
|
acceptance: a cell's timeout grows with the machine's load (like tools/ci.ts) and a cell that only timed out runs once more, marked; a release failed on two cells that take 3 s alone, at load 95 on 10 cores
|
2026-10-15 19:57:17 +08:00 |
|
|
|
1c35a625e1
|
build-node: TypeScript's own script runs under Bun (node_modules/.bin/tsc is a .exe / .cmd shim on Windows: the Windows acceptance cell packed nothing on dc387f6)
|
2026-10-15 06:36:24 +08:00 |
|
|
|
d72b199645
|
ci: the acceptance jobs run bun install before packing (prepack builds the package's declarations with the pinned TypeScript; without node_modules npm pack failed and every acceptance cell went red on 5ed787a); build-node names the missing install instead of a bare ENOENT
|
2026-10-15 06:33:01 +08:00 |
|
|
|
04647c079e
|
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 |
|
|
|
d717ceb4cd
|
package: ship declarations (dist/types, the "types" condition) and a Node JS entry for 'storebound'; Bun keeps the .ts source. 0.8.5 exported only cli/lib/config.ts, so tsc (next build, vue-tsc, tsc --noEmit) failed on a scaffolded storebound.config.ts and broke a Next app's build; a test type-checks the template against the packed entry under bundler / node16 / nodenext without @types/node. check fails on the template's own placeholders (Example Studio, bare example.com URLs and addresses)
|
2026-10-15 05:49:05 +08:00 |
|
|
|
77f141e223
|
release: a cancelled parent run is not a failure (a version-only child runs everything instead of stopping at the gate); a queued run gets 20 min before 'no ci run'; release.ts --resume continues a release that stopped after its push (the history rewrite re-pushed every old tag, their release.yml runs took the runners and cancelled 0.8.5's parent)
|
2026-10-15 02:31:15 +08:00 |
|
|
|
8de60aaef4
|
publish: the server-side parallel fetch runs in bash on stdin (the VDS login shell is zsh, which did not split the pid list: the rehearsal's publish stopped there)
|
2026-10-15 02:13:59 +08:00 |
|
|
|
ef81dd1b3e
|
a pre-release version (0.0.0-rehearsal.1) passes the one-version test; release.ts puts the checkout back when the fast gate fails before anything is committed
|
2026-10-15 01:46:02 +08:00 |
|
|
|
cd1e13c1e2
|
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 |
|
|
|
6873f2cc68
|
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 |
|
|
|
c3b1e8c370
|
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 |
|
|
|
b350781ab5
|
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
|
2026-10-14 23:56:57 +08:00 |
|
|
|
34c2fa22e5
|
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 |
|
|
|
17883e1529
|
acceptance: create the --out folder (both CI runs passed every quick cell, then failed writing acceptance/<run>.json), log the warm-up cell
|
2026-10-14 08:33:12 +08:00 |
|
|
|
f58e192001
|
release acceptance matrix: tools/acceptance.ts runs every user-facing command from the packed npm tarball (npx --package=<tgz> on Node 20 / 22, bun x --bun after bun add <tgz>) in fresh temp folders with a fresh HOME, real piped stdin (n, EOF) and per-cell fake stores over HTTP (STOREBOUND_STORE_MOCK, loopback only); a cell passes only with the expected exit code and no crash text; report -> markdown matrix. Prompts go through stdinIsTTY (STOREBOUND_ASSUME_TTY drives them with piped stdin), STOREBOUND_DESKTOP_APP=none for the install prompt on a machine with the app. release.yml: required acceptance job matrix (Linux + Windows x node20/node22/bun) and report, the matrix attached to the release; ci.yml: the quick subset on Linux and Windows. Scan fixtures for React Native and Expo
|
2026-10-14 08:29:31 +08:00 |
|
|
|
ae681e3ecd
|
release: privacy scan of signed macOS artifacts leaves out Apple code signatures only (copies with codesign --remove-signature on every Mach-O, the DMG's koly signature blob zeroed); any other hit still fails; tests and docs
|
2026-10-14 08:21:35 +08:00 |
|
|
|
3a27c78f49
|
storebound 0.8.3: prompts read stdin with rt.readLine (node:readline) instead of Bun-only for await (const line of console), which crashed npx storebound desktop on Node/Windows; node-compat test bans Bun-only stdin iteration; Node prompt smoke, also on the Windows release runner
|
2026-10-14 08:07:40 +08:00 |
|
|
|
1f27bfbeed
|
tests copy the demo app as git has it: the example's gitignored .storebound/, renders, frames and video of a local checkout stay out of the temp copy (edit.test.ts failed on a local .storebound/, the boot check's store art case opened a local ios69 render instead of its pulled Play shot)
|
2026-10-14 06:10:39 +08:00 |
|
|
|
511716bfd5
|
desktop boot check: the Store art tab's live thumbnails are read on demand (art live), so its 'Live store art not read yet' is not a missed background read
|
2026-10-14 05:35:59 +08:00 |
|
|
|
00be838b76
|
store art from the live stores: storebound art pull (App Store screenshot sets and previews per locale and display type from imageAsset.templateUrl at the original size, the App Store icon from the newest build or the public artwork; per Play language icon, feature graphic, phone / 7" / 10" / TV / Wear screenshots as the =s0 originals checked against Play's sha256) into store/renders with pulled.json (sha256, store, URL host, store checksum); upsert (a re-run changes nothing, differing local files kept unless --force, the upload's file of a slot compared: Play .jpg, App Store .png, the App Store icon as a picture); onboard runs it; apple screenshots / previews and play images see unchanged pulled files as the store's own; check: render sources are notes with pulled art; local renders check: pulled files pass, store-empty sets not demanded; art live / thumb / replace; desktop Store art tab: live thumbnails per store, language and set (same / differs / not pulled), Pull from stores, store-only apps read-only, Replace with a file (image_pick, art.replace) in the lightbox and the art editor; boot check store art case; tests/art-pull.test.ts; console parity 76 rows (57 complete, 19 with the reason); store-screenshots skill (pull first for live apps), pitfall 59
|
2026-10-14 05:25:37 +08:00 |
|
|
|
49a73c90e4
|
bun run ci defers the browser suites and the desktop boot check to Forgejo CI when the 1-minute load is above 2x the cores (deferBrowser in tools/ci-plan.ts, said at the start and in the summary); CI=full forces them, Forgejo runs CI=full
|
2026-10-14 05:24:38 +08:00 |
|
|
|
918146d4a6
|
CI green on a loaded shared machine: browser suites (now also glyph-ligatures and feature-fit, through the shared launch helper) in one dedicated shard started first at concurrency 2; timeouts scaled by load ÷ cores (tests/helpers/load.ts, max(1-, 5-min average), capped at 5x, logged) for browser tests, waits, launch/close, the other shards' default and the desktop boot check; one retry for a browser test that timed out while the factor was above 2, listed as 'retried under load' in the CI summary, never for an assertion failure; the six-type App Privacy walk no longer dumps every step (the --debug-dump check walks two types), wait timeouts print per-line times; play-edit-lock checks reads in flight instead of wall time; tests/load-retry.test.ts
|
2026-10-14 05:21:15 +08:00 |
|