Repository navigation
What's Changed
Breaking Changes
- Default version behavior changed. Previously, omitting the
versioninput would install the latest pnpm. Now, the action first looks for apackageManagerfield in thepackage.jsonin the current directory and uses that version if found, falling back to the latest only when the field is absent.
New Features
version-fileinput — new input that accepts a path to a file specifying the pnpm version to install. Supportspackage.jsonfiles with apackageManagerfield.versionandversion-fileare mutually exclusive.versionoutput — the action now sets aversionoutput exposing the exact version of pnpm that was installed.- pnpm v11 support — the action now handles the archive-based release format introduced in pnpm v11 (
.tar.gzon Linux/macOS,.zipon Windows), in addition to the standalone binary format used by earlier versions. - Setup caching — the action skips the download and extraction step when the pnpm home directory for the resolved version is already populated, speeding up repeated runs.
- Expanded runner support — CI now validates the action on Linux arm64 (
ubuntu-24.04-arm), Windows arm64 (windows-11-arm), and the latest macOS and Windows runners, in addition to existing x64 coverage.
Bug Fixes
- Windows executable permissions — the action no longer attempts to
chmodthe pnpm executable on Windows, which previously caused an error. - Early platform validation — unsupported platforms and architectures are now rejected with a clear error message before any network request is made.
Development Tooling Changes
- Upgraded action runtime from Node.js 20 to Node.js 24.
- Replaced
gha-utilswithghakitas the GitHub Actions toolkit dependency. - Replaced Rollup with tsup as the bundler; all runtime dependencies remain in
devDependencieswith no separate bundle step needed. - Switched to pnpm 11 as the development package manager.
- Upgraded Vitest to version 4 and refactored tests to achieve full branch coverage.
- Merged separate build and test CI workflows into a single
ci.yaml. - Lefthook is now used as a standalone binary rather than a pnpm package, removing it from
devDependencies. - Added
CLAUDE.mdfor Claude Code project configuration. - Bumped Node.js through 23.x → 24.16.0, TypeScript to 6.0, ESLint to 10.x, and many other dependencies.
Full Changelog: v1.0.0...v2.0.0