|
|
29a9683ab7
|
dev channel: Apache serves /desktop/dev/latest.json; the VDS publisher lists releases without the draft filter (it hid the dev drafts)
|
2026-10-23 23:46:03 +08:00 |
|
|
|
9947ea1639
|
dev channel VDS publisher: send a User-Agent (Cloudflare refuses urllib's default with 403)
|
2026-10-23 23:17:05 +08:00 |
|
|
|
39b2f73ad7
|
desktop dev update channel: every push to main builds dev bundles (<next patch>-dev.<UTC>), the VDS signs and publishes dev/latest.json (newest 5); app channel setting stable|dev, background updater at start / 15 min / resume / channel switch, deferred while in use, no downgrade, autostart rewritten on every start, card shows version and channel
|
2026-10-23 23:14:08 +08:00 |
|
|
|
4933279987
|
gen-api: module names with forward slashes on Windows too (the tables were stale on Linux CI)
|
2026-10-23 13:13:03 +08:00 |
|
|
|
7345de2f7c
|
Desktop boot check: quota row match as plain text
|
2026-10-23 10:47:39 +08:00 |
|
|
|
2638b90046
|
Desktop boot check: the reader's quota row uses the short wording
|
2026-10-23 10:46:49 +08:00 |
|
|
|
f052831fea
|
Desktop boot check: the dry-run preview is accepted whenever it shows, also during waits
|
2026-10-23 10:44:54 +08:00 |
|
|
|
83bb9a621e
|
Desktop boot check: say why a tab could not be opened
|
2026-10-23 10:36:38 +08:00 |
|
|
|
8106d7c9a2
|
Desktop boot check: tabs opened like a person (the More menu when a tab is not in the row); the fake host answers window dry runs like the Rust host (dryRun forced), art.pull preview dry run
|
2026-10-23 10:31:40 +08:00 |
|
|
|
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 |
|