9dccf357a9
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
664c694a09
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
ci / gate (push) Successful in 2s
ci / ci (push) Failing after 1m14s
ci / linux (push) Successful in 3m30s
ci / windows (push) Successful in 3m37s
ci / acceptance (bun, 22, windows, Windows, bun) (push) Successful in 26s
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Successful in 34s
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Successful in 1m17s
ci / record (push) Successful in 10s
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Successful in 1m20s
ci / acceptance (node20, 20, windows, Windows, node) (push) Successful in 4m54s
ci / acceptance (node22, 22, windows, Windows, node) (push) Successful in 4m33s
2026-10-18 13:38:26 +07:00
2b5244a3ff
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
ci / gate (push) Successful in 2s
ci / acceptance (bun, 22, windows, Windows, bun) (push) Successful in 29s
ci / ci (push) Successful in 1m45s
ci / acceptance (bun, 22, ubuntu-22.04, Linux, bun) (push) Successful in 32s
ci / acceptance (node20, 20, ubuntu-22.04, Linux, node) (push) Successful in 1m17s
ci / acceptance (node22, 22, ubuntu-22.04, Linux, node) (push) Successful in 1m16s
ci / acceptance (node20, 20, windows, Windows, node) (push) Successful in 5m17s
ci / linux (push) Successful in 4m15s
ci / acceptance (node22, 22, windows, Windows, node) (push) Successful in 4m51s
ci / windows (push) Successful in 3m19s
ci / record (push) Successful in 8s
release / promote (push) Successful in 14m17s
2026-10-16 07:17:19 +08:00
4f675b0612
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
release / promote (push) Waiting to run
2026-10-15 19:58:47 +08:00
e3b7decf7a
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 0c35750); build-node names the missing install instead of a bare ENOENT
2026-10-15 06:33:01 +08:00
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
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
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
ccc2cb1f70
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
337c32fd73
Releases on git.crt.fyi from a workflow: a v* tag push runs .forgejo/workflows/release.yml (tag = package.json version and every version copy, the full CI, Linux AppImage + deb and Windows NSIS on the VDS runners, privacy scan with the private terms, one Forgejo release with short CHANGELOG-summary notes, the installers and SHA256SUMS, older release entries deleted, tags kept); workflow_dispatch dry run makes a draft test-<sha> and deletes it; desktop.yml folded in, ci.yml and release.yml share .forgejo/actions/linux-setup and ci-run; tools/forgejo-release.ts (notes, upsert, prune, delete; uploads over 100 MB go to the origin because Cloudflare refuses them); desktop-release.ts upload-forgejo adds the notarized DMG and updater bundle from the Mac; docs/desktop-release.md release order
2026-10-13 07:44:18 +08:00
03865d24f3
CLI runs on Node 20+: npx storebound (bunx keeps working)
...
- cli/lib/rt.ts: the runtime layer on node: modules (spawn / spawnSync with Bun's defaults, exit codes and
"Executable not found", which with PATHEXT, sleep, serve, Glob, hasher, gunzip, stdin, SQLite, packageRoot,
config imports with a type-stripping fallback for Node 20); every Bun.* use in cli/ goes through it
- tools/gen-embedded.ts -> cli/lib/embedded.ts: templates/, cli/shots/*.html and Play's Data safety form embedded
(replaces Bun text imports; the bundle and the compiled sidecar carry them), checked fresh by bun run ci
- package.json: bin dist/storebound.mjs (Node ESM bundle, tools/build-node.ts, prepack), engines node >=20
- bun run ci: node bundle + node smoke (real node: --version, help, check same as Bun, scan, release plan --help,
init, MCP handshake + tool call); Forgejo CI sets up Node 20; tests/node-compat.test.ts guards cli/
- install writes npx MCP commands when run with Node; bin/storebound falls back to Node
- docs: npx storebound init (Node 20+) or bunx storebound init
2026-10-13 04:03:28 +08:00
a642104ca8
ci workflow: CI=full on the command itself (the runner's CI=true overrode the workflow env, so the desktop Rust tests and clippy were skipped on pushes that did not touch src-tauri)
2026-10-13 03:02:17 +08:00
6d7ebed604
ci workflow: Playwright browser cache keyed by playwright-core's browsers.json (the repo has no bun.lock, the key was empty)
2026-10-13 02:57:18 +08:00
cb4d82b037
ci on Linux: --no-sandbox for the Chromium storebound starts itself as root on Linux or in a container (sandboxArgs; Chromium refuses root without it), never on macOS / Windows / a normal user; workflow caches Playwright's browsers; capture-web prints the capture's stderr when a run fails
2026-10-13 02:51:48 +08:00
5e1357116d
fast ci: task graph runner, sharded tests balanced by recorded durations, ci:quick (typecheck + related tests + scrub), Rust only when src-tauri / sidecar build changed, event waits instead of sleeps
2026-10-12 05:05:26 +08:00
bd3ab20e1d
Desktop: never a blank window (frozen-prototype fix, error screens, logs, state migration, boot check)
...
The signed release showed only its background colour and never started the sidecar. Tauri's freezePrototype
freezes Object.prototype before the bundle runs; d3-color and d3-format (under the visx charts) assign
`constructor` / `toString` on plain objects while loading, which throws on a frozen prototype, so the bundle
stopped before React drew anything. The saved state was not the cause.
- build/freeze-safe.ts: Vite plugin that rewrites those assignments in dependencies into a helper that defines
the property when the frozen prototype would refuse it
- error boundaries for the window, each screen and each app tab (Copy details, Reload, Reset saved state with a
backup); public/boot.js shows the same panel when the bundle fails or the window stays empty
- logs/host.log (start, saved state, sidecar start/stop, panics) and logs/webview.log (log_webview), rotated,
home as ~, keys, tokens and e-mail addresses replaced
- state.json `version` 2 with an explicit 1 -> 2 migration (original kept as state.json.v1.bak), per-entry
tolerant parsing, partial settings keep their fields, unreadable files kept aside
- folders that are gone: "Folder not found" with Locate... (project_locate) / Remove; portfolio reads skip them
- tools/desktop-boot-check.ts: the built window with the release CSP and the frozen prototype, a mocked host from
the state fixtures (empty, D1 with folders gone, D3) and the real sidecar, through every screen; in bun run ci,
the Forgejo CI workflow and the macOS release
2026-10-11 09:36:34 +08:00
b4e219a5e2
ci workflow: skip pull requests from forks on the self-hosted runner
2026-10-11 06:18:42 +08:00
d030cca19e
Forgejo Actions: ci.yml (bun run ci incl. desktop Rust tests and clippy on push/PR to main) and desktop.yml on the VDS runner (cache, FORGEJO_PATH, Windows job only on a manual run with windows ticked)
2026-10-11 05:33:15 +08:00