Commit graph

15 commits

Author SHA1 Message Date
CRT
36a8bf9625 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
CRT
deb218943c 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
CRT
54c3bbac2c 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
CRT
56591f4118 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
CRT
187911320b desktop workflow: start the AppImage and the deb under Xvfb; the UI must reach the sidecar (host.log), no error lines 2026-10-13 02:09:58 +08:00
CRT
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
CRT
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
CRT
bddebcc8fa docs: Windows runner on the VDS (Server 2022 eval in a KVM VM, CRT user level, windows:host); desktop.yml comments 2026-10-11 06:59:02 +08:00
CRT
b4e219a5e2 ci workflow: skip pull requests from forks on the self-hosted runner 2026-10-11 06:18:42 +08:00
CRT
0b52c4ab40 docs: runner setup done (Forgejo Actions, VDS runner, ci.yml); desktop.yml without verbose bundling 2026-10-11 06:15:00 +08:00
CRT
e86bcec37c desktop.yml: preset the bun sidecar's rpath so linuxdeploy's patchelf does not corrupt it in the AppImage 2026-10-11 05:52:50 +08:00
CRT
1e564613c2 desktop.yml: NO_STRIP for linuxdeploy (strip removes the bun sidecar's payload) 2026-10-11 05:48:33 +08:00
CRT
69477c67bb desktop.yml: verbose Linux bundling (linuxdeploy output in the log) 2026-10-11 05:43:56 +08:00
CRT
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
CRT
c0bae1ee31 Desktop release pipeline: privacy scan of every artifact, path-free builds, macOS universal app + DMG (Developer ID + notarization or an ad-hoc -unsigned preview) with self-tests of the exact artifacts, signed latest.json, Forgejo workflow for Linux and Windows, root-owned publish step for storebound.dev 2026-10-11 05:16:59 +08:00