diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0c28c4413..83223849d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -254,6 +254,12 @@ jobs: # to be proven on both. - name: webjs dev source locations on Bun run: bun test/bun/dev-source-locations.mjs + # Bun's on-disk transpiler cache keys a large module by content and keeps + # the absolute paths the dev alias resolver returned, so the dev child + # runs with it off; otherwise another checkout of the file imports from + # the first one. + - name: webjs dev transpiler cache on Bun + run: bun test/bun/dev-transpiler-cache.mjs # The app-source deploy signal (#899) is derived from an fs source walk + # a node:crypto digest, so it must be byte-identical on the Bun.serve path. - name: App-source deploy signal on Bun diff --git a/framework-dev.md b/framework-dev.md index 472d7b079..ab98ff06b 100644 --- a/framework-dev.md +++ b/framework-dev.md @@ -359,6 +359,16 @@ The first three attempts were a STATIC scan over test sources, and each went bli --- +### Release gate: run it before every publish (`node scripts/release-gate.mjs`) + +**No `@webjsdev/*` release merges until the release gate passes.** 0.8.85 and 0.8.86 shipped with green unit suites and still broke real Bun apps (a dynamic `#` import of a server module 500'd every project page in Crisp; a bound form action failed after any edit), because nothing ran the PACKED packages inside a real app. The gate does: + +1. the suites: `npm test` (Node) and `node scripts/run-bun-tests.js` (Bun); run `npm run test:browser` too; +2. a fresh `webjs create --db postgres` app on Bun AND Node with the candidate packed by `npm pack` (core's `dist` is rebuilt first): every static page renders, sign up and log in, a bound `