Top-level changes that are not tied to a single published package — build system, monorepo orchestration, lint/format, dev workflow. Per-package runtime and API changes live in each package's own CHANGELOG.md.
The format is loosely based on Keep a Changelog.
- GitHub Actions: upgraded
actions/checkoutv4 → v6,actions/setup-nodev4 → v6, andpnpm/action-setupv4 → v6 in both.github/workflows/ci.ymland.github/workflows/deploy.yml. Node version pinned at24(latest).
- Monorepo orchestrator: replaced
nx19 withturborepo2.9. Removednx.jsonand all per-packageproject.jsonfiles. Pipeline now inturbo.json. - Lint + format: replaced
eslint8 +prettier3 (and 9 plugins) withbiome2.4. Single config atbiome.json. Removed.eslintrc.json,.eslintignore,.prettierrc,.prettierignore. - Dependency-version SSOT: introduced pnpm
catalog:(inpnpm-workspace.yaml). All workspacepackage.jsonfiles reference shared deps via"<dep>": "catalog:". ThemakePackageJson.mjspublish helper resolvescatalog:refs alongsideworkspace:*. - TypeScript: bumped to 6.0. Dropped deprecated
baseUrlanddownlevelIterationfrom the roottsconfig.json. - Build: unified
packages/shadow-objectsbuild into a singlebuild.mjs(esbuild transpile + tsc emit-only declarations + esbuild inline-worker bundle + makePackageJson). Removedtsconfig.bundle.json,tsconfig.tests.json,bundle.mjs, therun-s/rimrafscript chain, and the intermediatebuild/directory. - Test runners: consolidated on
vitest4.- Core lib (
shadow-objects): vitest reads*.spec.tsdirectly (no precompile step). Removed the generatedtests/tree. - Integration (
shadow-objects-testing): switched from@web/test-runnertovitestbrowser mode with the Playwright provider (real Chromium for accurate Custom Elements semantics). Chai assertion style preserved via@esm-bundle/chai. - Canvas (
shae-offscreen-canvas): switched from@web/test-runnertovitest+ happy-dom. - Shared
vitest.setup.tspatches Node 24+'s inertlocalStorage/sessionStorageglobals (which shadow happy-dom's working Storage) and shims mocha'safter/beforeto vitest'safterAll/beforeAllfor migrated specs.
- Core lib (
- Tooling bumps:
esbuild0.27 → 0.28,@playwright/test1.58 → 1.59,happy-dom14 → 20, addedjsdom29 as backup env. - Dropped devDeps:
nx,@nx/*,eslint*,@typescript-eslint/*,prettier*,npm-run-all,@rollup/plugin-node-resolve,react,@types/react,@web/test-runner(workspace-wide).
dist/of@spearwolf/shadow-objectsis byte-compatible with the previous version (file list identical except for the removal of an accidentally-publishedtsconfig.lib.tsbuildinfo;dist/package.jsonbyte-identical). Snapshots:docs/superpowers/specs/dist-snapshot.txt,docs/superpowers/specs/dist-package.json.snapshot.- Cold full cycle (
pnpm cbt): ~7.6 s for clean + build + test + e2e (7 turbo tasks, 191 unit/integration + 32 e2e). Warm cache: ~70 ms (FULL TURBO). - Design doc:
docs/superpowers/specs/2026-05-09-build-system-renewal-design.md.