Skip to content

Choose a tag to compare

@threeal threeal released this 26 Oct 15:21
· 4 commits to main since this release
v2.1.0
8b8a743

What's Changed

New Features

  • Version ranges — the version input now accepts a version range following npm's syntax, such as ^11, 11.x, >=10.0.0 <12.0.0, 10.0.0 - 11, or ^10 || ^11, and installs the highest published version satisfying it.
  • devEngines.packageManager support — the action now reads devEngines.packageManager from package.json, taking precedence over packageManager the same way pnpm reads them. Its version can be an exact version or a version range, and the latest version is installed if it's omitted.
  • Lockfile version — when the version comes from package.json, a pnpm-lock.yaml next to it that locks a pnpm version satisfying it is used instead, so the action installs the same version pnpm itself runs, without querying the npm registry.

Improvements

  • Faster cached setup — a pnpm version that is already cached on the runner is used without verifying it against the npm registry first.
  • Clear error for missing builds — the action checks that pnpm provides a build of the version for the runner's platform and architecture before downloading it, instead of failing in the middle of the download.
  • Clearer logs — the logs now describe each step of choosing and installing the pnpm version, and the download and extraction commands no longer print their verbose output.

Bug Fixes

  • Stale tags — tags such as latest-10, latest-11, or next are now resolved from the pnpm package instead of @pnpm/exe, whose tags fell behind. For example, next resolved to pnpm 6.31.0 and latest-11 to 11.26.0. Exact versions are verified against the same package, so a version listed only under @pnpm/exe is no longer accepted.
  • Interrupted installs reused as cached — an install that didn't complete, such as one whose download failed, is no longer treated as cached by later runs on the same runner.
  • pnpm 11 and above on x64 macOS — the action no longer rejects pnpm 11 and above on x64 macOS runners, since newer releases provide builds for it.
  • Error annotation for package.json without a version — a package.json without a pnpm version no longer raises an error annotation when the action falls back to the latest version.

Development Tooling Changes

  • Replaced tsup with Rolldown as the bundler.
  • Restructured the source code around a single setup flow in main.ts, with async file reads in place of existsSync checks.
  • Required doc comments with eslint-plugin-jsdoc, and made lint fail on warnings.
  • Reordered the pre-commit hook to run type checking first and the formatter after the linter.
  • Configured Dependabot with a cooldown for npm packages, and grouped Vitest updates.
  • Switched the project's own package.json to devEngines.packageManager, removed its root package name and engines field, and disabled auto-installing peer dependencies.
  • Expanded CI coverage to verify pnpm 10 on Windows arm64 runners and to test a version range input.
  • Trimmed CLAUDE.md to the non-obvious facts a fresh session needs.
  • Bumped pnpm to 12.15.0, Node.js to 24.22.1, and many other development dependencies.

Full Changelog: v2.0.0...v2.1.0