v0.13.1
Patch release: two post-release fixes since v0.13.0, no new features.
Fixed
Demos gallery restored on GitHub Pages (#56, OPEN-89) — The pages.yml rewrite in OPEN-78 had dropped the copy step that brought demos into the deployment artifact, so every published page went live without the demos gallery. docs/demos, the legacy /demo/ path and logo.svg are copied into the artifact again. New: before upload, the workflow now hard-verifies the artifact contents (dist/demos/index.html, an example domain, dist/demo/index.html, logo.svg) and fails the build job naming the missing file instead of silently publishing an incomplete site.
Crash-safe fixture restore in the domain exchange (#50, OPEN-81) — A smoke-test run killed with a hard signal (SIGKILL) left the fixture mutated inside src/domain.js, and the next run then read the mutation as the "original". Three layers instead of one: the pristine file is anchored outside the repo (tmpdir, hashed per checkout) and restored by the next run before it reads anything; SIGINT/SIGTERM/SIGHUP and process.exit() restore the original while dying, then re-raise; the lock directory is gitignored so a killed run leaves no untracked residue. Covered by a new suite, test/domain-swap-crash.mjs, which drives both death modes in child processes and measures against the pre-victim baseline.
Decisions
- SemVer patch, both fixes together: one touches test infrastructure only, the other CI/artifact handling — no product behavior, no schema or single-file format change. Neither justified its own release; both were already merged to
main. - Hard artifact verification added rather than trusting the copy step: this regression shipped green because nothing checked what was actually uploaded. The check fails loudly with the missing filename so the same class of regression cannot publish silently again.
For existing users
Nothing changes in product behavior, data format, or the save-as-single-HTML flow. If you run the test suite locally: it now counts eight suites (the new domain-swap-crash suite), and interrupted runs clean up after themselves even when killed hard.
Consciously not included
- The same signal-safe pattern is not yet applied to
scripts/build-demo.mjs(same hand-work window, documented as accepted residual risk in the module header). - The process track around gate sharpening (OPEN-69) remains open pending a decision outside this release.
Full changelog: v0.13.0...v0.13.1