Release · v3.7.24
Adopt pnpm as the package manager
chore: adopt pnpm as the package manager
Details
Replaces npm with pnpm so each git worktree gets its own node_modules hardlinked from pnpm's global content-addressable store — instant, correct per-branch installs instead of reinstalling or symlinking a shared tree. - package.json: pin `packageManager: pnpm@10.34.4`; the `build` script now calls `pnpm run build:frontend` (was `npm run`); add `pnpm.onlyBuiltDependencies` (puppeteer, @parcel/watcher, protobufjs) since pnpm 10 blocks dependency build scripts by default. - Lockfile: package-lock.json -> pnpm-lock.yaml (via `pnpm import`, exact resolved versions preserved). - CI (6 workflows) + netlify.toml: add `pnpm/action-setup@v4` before setup-node, `cache: 'npm'` -> `'pnpm'`, `npm ci` -> `pnpm install --frozen-lockfile`, `npm run X` -> `pnpm run X`. - Scripts (local.sh, verify_css_on_stop.sh, check_scss.sh) and docs (CLAUDE.md, READMEs, PREVIEW.md, DATABASE.md, agent prompts, cursor rules, tooling/test comments): npm -> pnpm. Left as npm on purpose: the `npm i -g vercel@latest` CLI bootstrap in deploy-vercel.yml (tool install; npm is always present on the runner) and the cdn.jsdelivr.net/npm/... asset URLs (not package-manager commands). Verified locally with pnpm 10.34.4: `pnpm install --frozen-lockfile` clean, `pnpm run build` (tsc) ok, 16/16 core tests, `version:check` / `version:next` ok. (`css:check` needs Node 22+ for sass's require() of the chokidar@5 ESM; this sandbox runs Node 18, CI runs Node 24 — unrelated to the pnpm switch.) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014c7dbCGbQxtWedKRSx4sJi
Files changed (31)
| .agent/README.md | +2 | −2 |
| .agent/prompts/task1-feature.md | +3 | −3 |
| .agent/prompts/task2-metrics.md | +3 | −3 |
| .agent/prompts/task3-robustness.md | +3 | −3 |
| .cursor/rules/site.mdc | +1 | −1 |
| .github/workflows/agent.yml | +7 | −4 |
| .github/workflows/ci.yml | +7 | −4 |
| .github/workflows/deploy-vercel.yml | +8 | −4 |
| .github/workflows/pr-validation.yml | +8 | −5 |
| .github/workflows/preview-v3.yml | +7 | −4 |
| .github/workflows/seed-sections.yml | +1 | −1 |
| .github/workflows/version-tag.yml | +7 | −4 |
| CLAUDE.md | +13 | −13 |
| PREVIEW.md | +3 | −3 |
| README.md | +3 | −3 |
| backend/README.md | +1 | −1 |
| backend/supabase_db/DATABASE.md | +10 | −10 |
| backend/supabase_db/scripts/push_db.py | +2 | −2 |
| frontend/README.md | +1 | −1 |
| frontend/client/tests/edcr-core.test.mjs | +1 | −1 |
| frontend/client/tests/tpp-core.test.mjs | +2 | −2 |
| frontend/scripts/check_scss.sh | +1 | −1 |
| frontend/scripts/local.sh | +2 | −2 |
| frontend/scripts/verify_css_on_stop.sh | +3 | −3 |
| netlify.toml | +5 | −5 |
| package-lock.json | +0 | −3,680 |
| package.json | +9 | −1 |
| pnpm-lock.yaml | +2,347 | −0 |
| tools/changelog/README.md | +4 | −4 |
| tools/changelog/generate.mjs | +1 | −1 |
| tools/changelog/test/version-lib.test.mjs | +1 | −1 |