From b19e14d0749bc0a7e39166db622e1ded85166261 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 10 Feb 2026 07:00:05 +0000 Subject: [PATCH] Migrate toolchain management from volta to mise Replace volta with mise for managing Node.js and pnpm versions. Mise reads tool versions from a single `.mise.toml` file at the repo root, eliminating the need for `volta` sections in every package.json and the `use-node-version` directive in `.npmrc`. - Add `.mise.toml` pinning Node 22.20.0 and pnpm 10.17.0 - Remove `volta` config from root and all 23 sub-package package.json files - Remove `use-node-version` from `.npmrc` - Update CI init action to use `jdx/mise-action@v2` instead of `actions/setup-node` + `cardstack/gh-actions/setup-pnpm-volta` - Update QUICKSTART.md, README.md, AGENTS.md, and other docs https://claude.ai/code/session_01UsbdtKt9ebEJ3JkeviRzMV --- .github/actions/init/action.yml | 6 ++---- .mise.toml | 3 +++ .npmrc | 2 +- AGENTS.md | 2 +- QUICKSTART.md | 5 ++--- README.md | 2 +- docs/card-field-rename.md | 2 +- package.json | 4 ---- packages/ai-bot/package.json | 3 --- packages/base/package.json | 3 --- packages/billing/package.json | 3 --- packages/bot-runner/package.json | 3 --- packages/boxel-homepage-realm/package.json | 3 --- packages/boxel-icons/package.json | 3 --- packages/boxel-motion/addon/package.json | 3 --- packages/boxel-motion/test-app/package.json | 3 --- packages/boxel-ui/addon/package.json | 3 --- packages/boxel-ui/test-app/package.json | 3 --- packages/catalog-realm/package.json | 3 --- packages/catalog/package.json | 3 --- packages/eslint-plugin-boxel/package.json | 3 --- packages/experiments-realm/package.json | 3 --- packages/host/package.json | 3 --- packages/matrix/package.json | 3 --- packages/postgres/package.json | 3 --- packages/realm-server/package.json | 3 --- packages/runtime-common/package.json | 3 --- packages/skills-realm/package.json | 3 --- packages/template-lint/package.json | 5 +---- packages/vscode-boxel-tools/README.md | 2 +- packages/vscode-boxel-tools/package.json | 3 --- packages/workspace-sync-cli/package.json | 3 --- 32 files changed, 13 insertions(+), 86 deletions(-) create mode 100644 .mise.toml diff --git a/.github/actions/init/action.yml b/.github/actions/init/action.yml index e567ffd2241..fdd1ede4c47 100644 --- a/.github/actions/init/action.yml +++ b/.github/actions/init/action.yml @@ -4,11 +4,9 @@ description: Setup common dependencies runs: using: composite steps: - - uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # 4.3.0 + - uses: jdx/mise-action@v2 with: - node-version-file: "package.json" - - - uses: cardstack/gh-actions/setup-pnpm-volta@main + install: true - name: Get pnpm store directory id: pnpm-cache diff --git a/.mise.toml b/.mise.toml new file mode 100644 index 00000000000..579d8299b7f --- /dev/null +++ b/.mise.toml @@ -0,0 +1,3 @@ +[tools] +node = "22.20.0" +pnpm = "10.17.0" diff --git a/.npmrc b/.npmrc index 566c5516c03..8b137891791 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1 @@ -use-node-version=22.20.0 + diff --git a/AGENTS.md b/AGENTS.md index e0e8a93cb2d..4ff7846e0de 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,7 +2,7 @@ ## Tooling prerequisites -- We pin the toolchain with Volta (`.volta`), using the versions of Node.js and pnpm specified in package.json. Install Volta and set `VOLTA_FEATURE_PNPM=1` so pnpm is managed automatically—avoid global installs outside Volta. +- We pin the toolchain with mise, using the versions of Node.js and pnpm specified in `.mise.toml`. Install mise and run `mise install` to set up the correct tool versions automatically. - pnpm is required for all scripts; use the pinned version as specified above. - Docker is required (Postgres, Synapse, SMTP, Stripe CLI container). Ensure the daemon is running and you can run `docker` without sudo. diff --git a/QUICKSTART.md b/QUICKSTART.md index 48b7bad8c16..d856406fb04 100644 --- a/QUICKSTART.md +++ b/QUICKSTART.md @@ -4,9 +4,8 @@ To build the entire repository and run the application, follow these steps: 1. The 2 main system dependencies to install are: - - [volta](https://docs.volta.sh/guide/getting-started) + - [mise](https://mise.jdx.dev/getting-started.html) — manages Node.js and pnpm versions automatically from `.mise.toml` - [docker](https://docs.docker.com/get-docker/) - - [pnpm](https://docs.volta.sh/advanced/pnpm) Note: If you don't have pnpm already on your system, **DON'T** install pnpm manually (volta will install it for you when you call `pnpm install`). 2. Clone the repo: @@ -17,7 +16,7 @@ To build the entire repository and run the application, follow these steps: 3. Install the package dependencies: ```zsh - echo 'export VOLTA_FEATURE_PNPM=1' >> ~/.profile && source ~/.profile + mise install pnpm install ``` diff --git a/README.md b/README.md index 78df2864ab6..eacbf60ba74 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ For a quickstart, see [here](./QUICKSTART.md) - you will want the [Glint](https://marketplace.visualstudio.com/items?itemName=typed-ember.glint-vscode) vscode extension - you will want the [vscode-glimmer](https://marketplace.visualstudio.com/items?itemName=chiragpat.vscode-glimmer) vscode extension - you will want the [Playwright](https://marketplace.visualstudio.com/items?itemName=ms-playwright.playwright) vscode extension -- this project uses [volta](https://volta.sh/) for Javascript toolchain version management. Make sure you have the latest verison of volta on your system and have define [the ENV var described here](https://docs.volta.sh/advanced/pnpm). +- this project uses [mise](https://mise.jdx.dev/) for Javascript toolchain version management. Run `mise install` to install the correct versions of Node.js and pnpm from `.mise.toml`. - this project uses [pnpm](https://pnpm.io/) for package management. run `pnpm install` to install the project dependencies first. - this project uses [docker](https://docker.com). Make sure to install docker on your system. - Ensure that node_modules/.bin is in your path. e.g. include `export PATH="./node_modules/.bin:$PATH"` in your .zshrc diff --git a/docs/card-field-rename.md b/docs/card-field-rename.md index 6d0b6f11229..43230a86396 100644 --- a/docs/card-field-rename.md +++ b/docs/card-field-rename.md @@ -77,7 +77,7 @@ pnpm install Notes: -- This project uses Volta for Node + pnpm versions (see `package.json`). +- This project uses mise for Node + pnpm versions (see `.mise.toml`). ## AI conversations diff --git a/package.json b/package.json index 5c5dcd5394b..fd8ddcc2e46 100644 --- a/package.json +++ b/package.json @@ -90,10 +90,6 @@ "engines": { "pnpm": "^10" }, - "volta": { - "node": "22.20.0", - "pnpm": "10.17.0" - }, "dependencies": { "matrix-js-sdk": "38.3.0" } diff --git a/packages/ai-bot/package.json b/packages/ai-bot/package.json index 6408d58f93a..674e8e58048 100644 --- a/packages/ai-bot/package.json +++ b/packages/ai-bot/package.json @@ -42,8 +42,5 @@ "start:development": "NODE_NO_WARNINGS=1 PGDATABASE=boxel PGPORT=5435 ts-node --transpileOnly main", "test": "NODE_NO_WARNINGS=1 qunit --require ts-node/register/transpile-only tests/index.ts", "get-chat": "NODE_NO_WARNINGS=1 ts-node --transpileOnly scripts/get_chat.ts" - }, - "volta": { - "extends": "../../package.json" } } diff --git a/packages/base/package.json b/packages/base/package.json index 87e4e242939..5fcad843a84 100644 --- a/packages/base/package.json +++ b/packages/base/package.json @@ -33,8 +33,5 @@ "lint": "concurrently \"pnpm:lint:*(!fix)\" --names \"lint:\"", "lint:hbs": "ember-template-lint .", "lint:hbs:fix": "ember-template-lint . --fix" - }, - "volta": { - "extends": "../../package.json" } } diff --git a/packages/billing/package.json b/packages/billing/package.json index 714b41f0a8b..5f2a7fb86ec 100644 --- a/packages/billing/package.json +++ b/packages/billing/package.json @@ -18,8 +18,5 @@ "lint:js": "eslint . --report-unused-disable-directives --cache", "lint:js:fix": "eslint . --report-unused-disable-directives --fix", "lint:glint": "glint" - }, - "volta": { - "extends": "../../package.json" } } diff --git a/packages/bot-runner/package.json b/packages/bot-runner/package.json index cc14b22209b..d3bc87c19d8 100644 --- a/packages/bot-runner/package.json +++ b/packages/bot-runner/package.json @@ -19,8 +19,5 @@ "start:development": "NODE_NO_WARNINGS=1 PGDATABASE=boxel PGPORT=5435 ts-node --transpileOnly main", "test": "NODE_NO_WARNINGS=1 qunit --require ts-node/register/transpile-only tests/index.ts", "lint": "glint" - }, - "volta": { - "extends": "../../package.json" } } diff --git a/packages/boxel-homepage-realm/package.json b/packages/boxel-homepage-realm/package.json index 0782e791003..962b78d1f9b 100644 --- a/packages/boxel-homepage-realm/package.json +++ b/packages/boxel-homepage-realm/package.json @@ -6,8 +6,5 @@ "boxel-homepage:setup": "sh ./scripts/boxel-homepage-setup.sh", "boxel-homepage:update": "pnpm boxel-homepage:setup && cd contents && git pull", "boxel-homepage:reset": "rm -rf contents && pnpm boxel-homepage:setup" - }, - "volta": { - "extends": "../../package.json" } } diff --git a/packages/boxel-icons/package.json b/packages/boxel-icons/package.json index c52f60be291..a3be63440d8 100644 --- a/packages/boxel-icons/package.json +++ b/packages/boxel-icons/package.json @@ -82,9 +82,6 @@ "engines": { "node": "22.20.0" }, - "volta": { - "extends": "../../package.json" - }, "ember": { "edition": "octane" }, diff --git a/packages/boxel-motion/addon/package.json b/packages/boxel-motion/addon/package.json index b3dbcbf42eb..32b1ea036f4 100644 --- a/packages/boxel-motion/addon/package.json +++ b/packages/boxel-motion/addon/package.json @@ -104,9 +104,6 @@ "type": "addon", "version": 2 }, - "volta": { - "extends": "../../../package.json" - }, "exports": { ".": { "types": "./declarations/index.d.ts", diff --git a/packages/boxel-motion/test-app/package.json b/packages/boxel-motion/test-app/package.json index 610d4c7e10c..22894999d21 100644 --- a/packages/boxel-motion/test-app/package.json +++ b/packages/boxel-motion/test-app/package.json @@ -101,9 +101,6 @@ "engines": { "node": ">= 20" }, - "volta": { - "extends": "../../../package.json" - }, "ember": { "edition": "octane" }, diff --git a/packages/boxel-ui/addon/package.json b/packages/boxel-ui/addon/package.json index 55d1985f4f3..f291cbd0324 100644 --- a/packages/boxel-ui/addon/package.json +++ b/packages/boxel-ui/addon/package.json @@ -111,9 +111,6 @@ "engines": { "node": "22.20.0" }, - "volta": { - "extends": "../../../package.json" - }, "ember": { "edition": "octane" }, diff --git a/packages/boxel-ui/test-app/package.json b/packages/boxel-ui/test-app/package.json index 283f85fd02e..ea87b85efd2 100644 --- a/packages/boxel-ui/test-app/package.json +++ b/packages/boxel-ui/test-app/package.json @@ -110,9 +110,6 @@ "engines": { "node": ">= 20" }, - "volta": { - "extends": "../../../package.json" - }, "ember": { "edition": "octane" }, diff --git a/packages/catalog-realm/package.json b/packages/catalog-realm/package.json index f2c8de0fd1c..670cf126375 100644 --- a/packages/catalog-realm/package.json +++ b/packages/catalog-realm/package.json @@ -24,8 +24,5 @@ "lint": "concurrently \"pnpm:lint:*(!fix)\" --names \"lint:\"", "lint:hbs": "ember-template-lint . --no-error-on-unmatched-pattern", "lint:hbs:fix": "ember-template-lint . --fix" - }, - "volta": { - "extends": "../../package.json" } } diff --git a/packages/catalog/package.json b/packages/catalog/package.json index 900e64ee3db..255cea2fe60 100644 --- a/packages/catalog/package.json +++ b/packages/catalog/package.json @@ -6,8 +6,5 @@ "catalog:setup": "[ -d contents ] || (git clone git@github.com:cardstack/boxel-catalog.git contents || git clone https://github.com/cardstack/boxel-catalog.git contents)", "catalog:update": "pnpm catalog:setup && cd contents && git pull", "catalog:reset": "rm -rf contents && pnpm catalog:setup" - }, - "volta": { - "extends": "../../package.json" } } diff --git a/packages/eslint-plugin-boxel/package.json b/packages/eslint-plugin-boxel/package.json index cdb2d143fd5..15dfcabf906 100644 --- a/packages/eslint-plugin-boxel/package.json +++ b/packages/eslint-plugin-boxel/package.json @@ -64,8 +64,5 @@ }, "engines": { "node": ">= 20" - }, - "volta": { - "extends": "../../package.json" } } diff --git a/packages/experiments-realm/package.json b/packages/experiments-realm/package.json index a3045ba4613..4be0b2488a7 100644 --- a/packages/experiments-realm/package.json +++ b/packages/experiments-realm/package.json @@ -25,8 +25,5 @@ "lint": "concurrently \"pnpm:lint:*(!fix)\" --names \"lint:\"", "lint:hbs": "ember-template-lint .", "lint:hbs:fix": "ember-template-lint . --fix" - }, - "volta": { - "extends": "../../package.json" } } diff --git a/packages/host/package.json b/packages/host/package.json index c280d2bcc2f..b08ac81f430 100644 --- a/packages/host/package.json +++ b/packages/host/package.json @@ -198,9 +198,6 @@ "engines": { "node": ">= 20" }, - "volta": { - "extends": "../../package.json" - }, "ember": { "edition": "octane" }, diff --git a/packages/matrix/package.json b/packages/matrix/package.json index ad73c1ed020..82eb6530bb8 100644 --- a/packages/matrix/package.json +++ b/packages/matrix/package.json @@ -46,8 +46,5 @@ "wait": "sleep 10000000", "lint": "glint", "clean": "rm -rf ./synapse-data" - }, - "volta": { - "extends": "../../package.json" } } diff --git a/packages/postgres/package.json b/packages/postgres/package.json index 2244782309b..3ad09afd941 100644 --- a/packages/postgres/package.json +++ b/packages/postgres/package.json @@ -29,8 +29,5 @@ "lint:js:fix": "eslint . --report-unused-disable-directives --fix", "lint:migrations": "node ./scripts/lint-migrations.js", "lint:glint": "glint" - }, - "volta": { - "extends": "../../package.json" } } diff --git a/packages/realm-server/package.json b/packages/realm-server/package.json index 7fe71b0a5fa..a7cdd54d79e 100644 --- a/packages/realm-server/package.json +++ b/packages/realm-server/package.json @@ -132,9 +132,6 @@ "sync-stripe-products": "NODE_NO_WARNINGS=1 PGDATABASE=boxel PGPORT=5435 ts-node --transpileOnly scripts/sync-stripe-products.ts", "stripe": "docker run --rm --add-host=host.docker.internal:host-gateway -it stripe/stripe-cli:latest" }, - "volta": { - "extends": "../../package.json" - }, "dependencies": { "puppeteer": "^24.8.2" } diff --git a/packages/runtime-common/package.json b/packages/runtime-common/package.json index d9bf786c943..1b1fd5456be 100644 --- a/packages/runtime-common/package.json +++ b/packages/runtime-common/package.json @@ -95,8 +95,5 @@ "lint:js": "eslint . ", "lint:js:fix": "eslint . --report-unused-disable-directives --fix", "lint:types": "glint" - }, - "volta": { - "extends": "../../package.json" } } diff --git a/packages/skills-realm/package.json b/packages/skills-realm/package.json index e4fd3789102..e8c755bd91c 100644 --- a/packages/skills-realm/package.json +++ b/packages/skills-realm/package.json @@ -6,8 +6,5 @@ "skills:setup": "[ -d contents ] || (git clone git@github.com:cardstack/boxel-skills.git contents || git clone https://github.com/cardstack/boxel-skills.git contents)", "skills:update": "pnpm skills:setup && cd contents && git pull", "skills:reset": "rm -rf contents && pnpm skills:setup" - }, - "volta": { - "extends": "../../package.json" } } diff --git a/packages/template-lint/package.json b/packages/template-lint/package.json index adff159b738..fad3f88cf2e 100644 --- a/packages/template-lint/package.json +++ b/packages/template-lint/package.json @@ -12,8 +12,5 @@ "ember-template-recast": "^6.1.5" }, "author": "", - "license": "MIT", - "volta": { - "extends": "../../package.json" - } + "license": "MIT" } diff --git a/packages/vscode-boxel-tools/README.md b/packages/vscode-boxel-tools/README.md index 7775e2c46e5..9ab125dd832 100644 --- a/packages/vscode-boxel-tools/README.md +++ b/packages/vscode-boxel-tools/README.md @@ -73,7 +73,7 @@ For further assistance, check the [extension repository](https://github.com/card ## Development -This project uses Volta for toolchain management and pnpm for package management. +This project uses mise for toolchain management and pnpm for package management. Install dependencies with pnpm: diff --git a/packages/vscode-boxel-tools/package.json b/packages/vscode-boxel-tools/package.json index 4c7d3c6ea41..599e61fedf4 100644 --- a/packages/vscode-boxel-tools/package.json +++ b/packages/vscode-boxel-tools/package.json @@ -241,9 +241,6 @@ } ] }, - "volta": { - "extends": "../../package.json" - }, "scripts": { "vscode:prepublish": "pnpm run compile", "vscode:package": "pnpm vsce package --no-dependencies", diff --git a/packages/workspace-sync-cli/package.json b/packages/workspace-sync-cli/package.json index a64d48bd02c..ea0582938e6 100644 --- a/packages/workspace-sync-cli/package.json +++ b/packages/workspace-sync-cli/package.json @@ -60,8 +60,5 @@ }, "publishConfig": { "access": "public" - }, - "volta": { - "extends": "../../package.json" } }