feat: migrate from Volta to Mise for Node.js version management#468
feat: migrate from Volta to Mise for Node.js version management#468dejanvasic85 merged 3 commits intomainfrom
Conversation
Volta is unmaintained; mise is the recommended replacement. - Add .mise.toml pinning node 24.12.0 - Remove volta section from package.json - Replace volta-cli/action@v5 with jdx/mise-action@v4 in all workflows - Update renovate.json matchManagers from volta to mise https://claude.ai/code/session_018PhmQ2eJwnh1qp8tpJgc4w
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📝 WalkthroughWalkthroughMigrated toolchain management from Volta to mise across GitHub Actions workflows and configuration files. Replaced Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Migrates the repo’s Node.js version management from Volta to Mise, aligning local development and CI/CD to a single .mise.toml-pinned Node version.
Changes:
- Replaced Volta with
jdx/mise-action@v4across all GitHub Actions workflows. - Removed Volta configuration from
package.jsonand introduced.mise.tomlpinning Node24.12.0. - Updated Renovate config to track Node updates via Mise and adjusted README Node prerequisite wording.
Reviewed changes
Copilot reviewed 7 out of 8 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
renovate.json |
Switches Node-related Renovate manager matching from volta to mise. |
package.json |
Removes the volta Node pin configuration. |
package-lock.json |
Lockfile metadata adjustments (adds dev: true on platform-specific optional deps). |
README.md |
Updates documented Node prerequisite to Node 24. |
.mise.toml |
Adds Mise tool pin for Node 24.12.0. |
.github/workflows/deploy-sanity.yml |
Uses Mise action instead of Volta for Sanity deploy workflow. |
.github/workflows/crawl.yml |
Uses Mise action instead of Volta for crawl automation workflow. |
.github/workflows/ci.yml |
Uses Mise action instead of Volta for CI and E2E workflows. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ### Prerequisites | ||
|
|
||
| - Node.js 18+ installed | ||
| - Node.js 24 installed |
There was a problem hiding this comment.
README prereq says "Node.js 24 installed", but the repo now pins Node to 24.12.0 in .mise.toml. To avoid contributors installing a different 24.x (or using a different version in CI), align the README with the pinned version and/or document using Mise (e.g. install Mise + run mise install) as the source of truth.
| - Node.js 24 installed | |
| - Mise installed, then run `mise install` to use the pinned project tool versions | |
| - If you are not using Mise, install Node.js 24.12.0 |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
README.md (1)
50-50: Mention Mise so contributors use the checked-in Node pin.This now says only “Node.js 24”, but the repo pins
24.12.0in.mise.toml. Pointing contributors tomise installavoids local drift within the 24.x line.📝 Proposed README tweak
-- Node.js 24 installed +- Node.js 24 installed, preferably via Mise: run `mise install` to use the version pinned in `.mise.toml`🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@README.md` at line 50, Update the README's Node requirement line (currently "Node.js 24") to direct contributors to use the repository's pinned Node version in .mise.toml by running the provided tool; specifically, reference the checked-in pin (24.12.0) and instruct users to run "mise install" (or the repo's mise workflow) to install the correct Node runtime rather than relying on a loose "Node.js 24" description.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@renovate.json`:
- Around line 42-46: The rule currently applies to Mise files and accepts Node
26 even though 26 isn't LTS yet; update the renovate rule by either removing
"mise" from the matchManagers array (leave ["npm"]) or narrow the
allowedVersions regex in the allowedVersions property to exclude 26 (e.g. remove
26 from the alternation) so only true LTS majors (20,22,24,28,30,32,34,36,38,40)
are matched until Node 26 reaches LTS; adjust the "matchManagers" and/or
"allowedVersions" keys accordingly.
---
Nitpick comments:
In `@README.md`:
- Line 50: Update the README's Node requirement line (currently "Node.js 24") to
direct contributors to use the repository's pinned Node version in .mise.toml by
running the provided tool; specifically, reference the checked-in pin (24.12.0)
and instruct users to run "mise install" (or the repo's mise workflow) to
install the correct Node runtime rather than relying on a loose "Node.js 24"
description.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 84f57396-a2f5-4fe2-87c4-c7559ec69e07
⛔ Files ignored due to path filters (1)
package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (7)
.github/workflows/ci.yml.github/workflows/crawl.yml.github/workflows/deploy-sanity.yml.mise.tomlREADME.mdpackage.jsonrenovate.json
💤 Files with no reviewable changes (1)
- package.json
| "description": "Node and types - LTS versions only", | ||
| "matchPackageNames": ["node", "@types/node"], | ||
| "groupName": "node and types", | ||
| "matchManagers": ["volta", "npm"], | ||
| "matchManagers": ["mise", "npm"], | ||
| "allowedVersions": "/^(20|22|24|26|28|30|32|34|36|38|40)\\./" |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
git ls-files renovate.jsonRepository: dejanvasic85/williamstownsc
Length of output: 84
🌐 Web query:
Node.js 26 release schedule LTS timeline 2026
💡 Result:
Node.js 26 (v26.x) release schedule and LTS timeline: - Initial release (26.0.0, enters "Current" phase): April 22, 2026 (scheduled; as of 2026-04-19, the release PR is open and not yet shipped). - Enters Active LTS: October 28, 2026. - Enters Maintenance LTS: October 20, 2027. - End of Life: April 30, 2029. Node.js 26 is the last version following the traditional even-numbered LTS model (April release, 6 months Current, then LTS). Starting with Node.js 27, the schedule evolves to one major release per year in April, all becoming LTS after 6 months, with an alpha phase beginning the prior October.
Citations:
- 1: https://nodejs.org/en/blog/announcements/evolving-the-nodejs-release-schedule
- 2: https://nodejs.org/blog/announcements/evolving-the-nodejs-release-schedule
- 3: https://nodejs.org/ta/blog/announcements/evolving-the-nodejs-release-schedule
- 4: https://github.com/nodejs/Release
- 5: 2026-04-28, Version 26.0.0 (Current) nodejs/node#62526
- 6: Upcoming Node.js Major Release (v26) nodejs/node#61832
- 7: https://raw.githubusercontent.com/nodejs/Release/main/schedule.json
- 8: https://raw.githubusercontent.com/nodejs/Release/master/schedule.json
🌐 Web query:
Renovate Mise manager node package support documentation
💡 Result:
Renovate supports the Mise (mise-en-place) manager for automated dependency updates in Mise configuration files. This includes updating tool versions like Node.js in mise.toml files. Key details from official documentation: Supported file patterns (default): /{,.}mise{,.}.toml /{,.}mise/config{,.}.toml /.config/mise{,.}.toml /.config/mise/{mise,config}{,.}.toml /.config/mise/conf.d/.toml /.rtx{,.}.toml (legacy) Renovate updates only the primary (first) version listed for each tool. Secondary versions require manual updates. It supports Mise's default registry tool short names (e.g., node), using Mise registry for versioning. Recent fixes include renaming packageName from 'nodejs' to 'node' for consistency (v43+), expanded file patterns (2026), and added assorted tools (2025). Limitations: No support for certain backends like asdf/vfox plugins, aqua http packages, or lockfile support yet. For Node specifically: Renovate extracts and updates 'node' versions in Mise files, aligning with other managers like asdf.
Citations:
- 1: https://docs.renovatebot.com/modules/manager/mise/
- 2: feat(manager/mise): support assorted mise tools renovatebot/renovate#35650
- 3: fix(manager/mise): expand file patterns to match mise's config search renovatebot/renovate#40094
- 4: https://docs.renovatebot.com/modules/manager/
- 5: Mise support in renovate jdx/mise#1940
- 6: https://docs.renovatebot.com/node/
- 7: fix(mise)!: rename packageName from
nodejstonoderenovatebot/renovate#40466
🏁 Script executed:
cat -n renovate.json | sed -n '40,48p'Repository: dejanvasic85/williamstownsc
Length of output: 390
Tighten the "LTS only" rule before Renovate manages .mise.toml.
matchManagers: ["mise", "npm"] applies this rule to Mise configuration files, but the current regex permits 26.x immediately while Node.js 26 does not enter LTS until October 2026. This contradicts the rule description and can auto-upgrade CI/local tooling to a Current release. References: Renovate Mise manager docs and official Node.js schedule.
🛡️ Conservative fix until Node 26 reaches LTS
{
"description": "Node and types - LTS versions only",
"matchPackageNames": ["node", "@types/node"],
"groupName": "node and types",
"matchManagers": ["mise", "npm"],
- "allowedVersions": "/^(20|22|24|26|28|30|32|34|36|38|40)\\./"
+ "allowedVersions": "/^(20|22|24)\\./"
}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@renovate.json` around lines 42 - 46, The rule currently applies to Mise files
and accepts Node 26 even though 26 isn't LTS yet; update the renovate rule by
either removing "mise" from the matchManagers array (leave ["npm"]) or narrow
the allowedVersions regex in the allowedVersions property to exclude 26 (e.g.
remove 26 from the alternation) so only true LTS majors
(20,22,24,28,30,32,34,36,38,40) are matched until Node 26 reaches LTS; adjust
the "matchManagers" and/or "allowedVersions" keys accordingly.
Summary
This PR migrates the project's Node.js version management from Volta to Mise, updating all CI/CD workflows and configuration files accordingly.
Key Changes
ci.yml,crawl.yml,deploy-sanity.yml) to usejdx/mise-action@v4instead ofvolta-cli/action@v5voltaconfiguration frompackage.json.mise.tomlfile with Node.js version pinned to24.12.0renovate.jsonto usemisepackage manager instead ofvoltafor Node version updatesImplementation Details
24.12.0across all environments.mise.tomlfollowing standard Mise conventionshttps://claude.ai/code/session_018PhmQ2eJwnh1qp8tpJgc4w
Summary by CodeRabbit