Releases
2.0.6
For you
- Nothing changes for you. The site's own test suite got faster, and every page is checked exactly as before.
Under the hood
- The site unit suite builds each board fixture once per run instead of once per test file that reads it. `npm run test:unit` now runs through site/scripts/with-run-build-cache.mjs, which gives the run its own cache directory in site/test/.build-cache/ (git ignored) and removes it when the run ends. site/test/helpers/run-build-cache.ts keys each build on the fixture, its declared environment, the node version and a digest of the site's sources and the fixture, builds it once even when two files ask at the same moment, and hands every test file its own copy, digest checked, so a file that wrote into its tree still fails only itself. A file run on its own builds exactly as before. Measured on dev on a busy M1 Max: 114 Astro builds to 91, 668 s to 588 s; no test or assertion changed.
- The run build cache no longer lets one test file's failed build fail a second file. A file whose build loses the race to another file now uses that file's finished build instead of failing. A build claim whose owner stopped, with no heartbeat for 60 s or a process that no longer exists, is picked up by the next file that needs it. A missing cache directory fails at once instead of waiting 15 minutes, and a repeated signal reaches the test run once.
- Gate 2's board parity builds its 38 fixtures two at a time. On a 2 CPU container that took the two measured runs from 272 s and 264 s to 209 s and 214 s, a mean 21.1% faster; on a laptop it went from about 4:20 to 3:18. Nothing parity checks was loosened.
- The site unit tests no longer fetch anything from the network. happy-dom was requesting every built page's stylesheets from sporacle.app in the background, about 1,150 requests a run with no timeout, and one stalled request kept a test file running forever after its tests had passed (issue #390). Test windows now load no stylesheet, script or frame and are closed when a file's tests end, and a test that tries to connect anywhere but the machine running it fails at once with a message naming the host. A stalled request can no longer hang the suite.
- With the hang fixed, the unit tests run two files at a time. On GitHub's 2 CPU runner the step went from 1,048 s to 791 s, 24.5% faster. Playwright stays at one worker because two were only 13.9% faster.
- The deploy workflow pins the Cloudflare tool it installs to one exact version, 4.152.0, the version the last deploys already used. It runs with a read only GitHub token and installs the cadence Worker from its own package record, and every job has a time limit. The live, pulse, phase 0 and MCP Workers deploy as steps of one job: one failing no longer stops the others, and the job still fails and names each Worker that did not deploy. After each cadence deploy, a report compares the run the site serves with the run the data service points to and warns when they differ. It never stops a deploy. All of this takes effect once it reaches main.