Skip to content

chore(deps): update dependency commander to v15 - #28

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/commander-15.x
Open

chore(deps): update dependency commander to v15#28
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/commander-15.x

Conversation

@renovate

@renovate renovate Bot commented Aug 16, 2026

Copy link
Copy Markdown

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
commander ^13.1.0^15.0.0 age adoption passing confidence

Warning

Some dependencies could not be looked up. Check the warning logs for more information.


Release Notes

tj/commander.js (commander)

v15.0.0

Compare Source

Commander 15 is ESM only. This is expected to be seamless for ESM consumers, but some CommonJS consumers may hit issues with tooling requiring configuration for ESM-only dependencies. See Migration Tips below.

The release of Commander 15 moves Commander 14 into maintenance. Commander 14 will get security updates for
12 months (to May 2027). For more info see Release Policy.

Added
  • show excess command-arguments in error message ([#​2384])
Fixed
  • Breaking: only lone --no-* option sets default option value to true, default not implicitly set when define both positive and negative option in either order ([#​2405])
  • update example to use compatible character for MINGW64 ([#​2475])
Changed
  • Breaking: migrated Commander implementation from CommonJS to ESM ([#​2464])
  • Breaking: Commander 15 requires Node.js v22.12.0 or higher (for require(esm)).
  • dev: switch tests from Jest to node:test test runner ([#​2463])
Deleted
  • Breaking: removed deprecated export of commander/esm.mjs ([#​2464])
Migration Tips

Commander 15 is ESM only, but this does not mean you need to migrate to ESM to use it. Importing ESM from CommonJS is
supported by Node.js, and Bun, and Deno. Hopefully it Just Works for you! However, you may be using a different runtime or
some other part of your setup that may not yet natively support importing ESM from CommonJS, such as your testing framework
or bundler.

If you have problems using Commander 15 in your environment, one option is stay on Commander 14 for now. Commander 14 will
get security updates until May 2027 and things will hopefully improve for your setup in the meantime.

v14.0.3

Compare Source

Added
Changes
  • old major versions now supported for 12 months instead of just previous major version, to give predictable end-of-life date ([#​2462])
  • clarify typing for deprecated callback parameter to .outputHelp() ([#​2427])
  • simple readability improvements to README ([#​2465])

v14.0.2

Compare Source

Changed
  • improve negative number auto-detection test ([#​2428])
  • update (dev) dependencies

v14.0.1

Compare Source

Fixed
  • broken markdown link in README ([#​2369])
Changed
  • improve code readability by using optional chaining ([#​2394])
  • use more idiomatic code with object spread instead of Object.assign() ([#​2395])
  • improve code readability using string.endsWith() instead of string.slice() ([#​2396])
  • refactor .parseOptions() to process args array in-place ([#​2409])
  • change private variadic support routines from ._concatValue() to ._collectValue() (change code from array.concat() to array.push()) ([#​2410])
  • update (dev) dependencies

v14.0.0

Compare Source

Added
  • support for groups of options and commands in the help using low-level .helpGroup() on Option and Command, and higher-level .optionsGroup() and .commandsGroup() which can be used in chaining way to specify group title for following options/commands ([#​2328])
  • support for unescaped negative numbers as option-arguments and command-arguments ([#​2339])
  • TypeScript: add parseArg property to Argument class ([#​2359])
Fixed
  • remove bogus leading space in help when option has default value but not a description ([#​2348])
  • .configureOutput() now makes copy of settings instead of modifying in-place, fixing side-effects ([#​2350])
Changed
  • Breaking: Commander 14 requires Node.js v20 or higher
  • internal refactor of Help class adding .formatItemList() and .groupItems() methods ([#​2328])

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Open in Devin Review

Summary by cubic

Upgrade commander from ^13.1.0 to ^15.0.0. This matters because v15 is ESM-only and changes --no-* option defaults; Node.js 22.12+ is now required.

  • Affects all CLI commands that parse options with commander; no billing or metering impact.
  • Node/runtime: ensure CI, local dev, and release runners use Node.js ≥22.12.
  • Module system: if the CLI entrypoint is CommonJS, replace require('commander') with await import('commander') or migrate the entrypoint to ESM; do not import commander/esm.mjs.
  • Flags: when both --foo and --no-foo are defined, v15 no longer sets an implicit default. Set explicit defaults where needed and re-check any --no-* flags.
  • Verification: run tests and CLI smoke checks on Node 22.12+ (e.g., cli --help, core commands, and --no-* options).

Written for commit 1fcab3a. Summary will update on new commits.

Review in cubic

@greptile-apps

greptile-apps Bot commented Aug 16, 2026

Copy link
Copy Markdown

PR author is in the excluded authors list.

@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​commander@​15.0.010010010085100

View full report

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 3 potential issues.

Open in Devin Review

Comment thread package.json
"chalk": "^5.4.1",
"cli-table3": "^0.6.5",
"commander": "^13.1.0",
"commander": "^15.0.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 CLI declares support for Node 18 but the upgraded argument parser no longer runs there

The dependency on the command-line parser is raised to a major version that dropped Node 18 support ("commander": "^15.0.0" at package.json:61) while the package still advertises Node 18 compatibility, so users on Node 18 get install-time engine errors or a broken CLI.
Impact: Anyone installing the CLI on Node 18 sees engine warnings/failures and may end up with an unusable command-line tool.

Engine range vs. commander major bump

package.json:49-51 still declares "node": ">=18.0.0". Commander dropped Node 18 in its v14 major (engines ^20.19.0 || >=22.12.0), and v15 continues to require a modern Node. npm will emit EBADENGINE for the transitive requirement, and if it installs anyway, the CLI entry (src/index.ts:1-6, which calls commander's parseAsync) may fail at runtime on Node 18. The engines.node field should be raised to match commander's supported range.

Prompt for agents
package.json bumps commander to ^15.0.0, but commander >=14 requires Node ^20.19.0 || >=22.12.0 while package.json engines still says node >=18.0.0. Update the engines field (and any CI/workflow Node version matrices or docs mentioning Node 18 support) so the declared supported Node range matches what the dependency actually supports, or pin commander to a version that still supports Node 18.
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment thread package.json
"chalk": "^5.4.1",
"cli-table3": "^0.6.5",
"commander": "^13.1.0",
"commander": "^15.0.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changelog not updated for a user-visible dependency upgrade

The major upgrade of the command-line parser ("commander": "^15.0.0" at package.json:61) is shipped without an entry in the changelog's Unreleased section, which the repository contract requires for user-facing changes.
Impact: Users and maintainers get no record of a change that alters help/error output and supported Node versions.

Repo rule reference

AGENTS.md states: "Conventional Commit titles; update CHANGELOG.md (Unreleased) for user-facing changes." The ## [Unreleased] section of CHANGELOG.md is empty in this PR, even though a commander major bump changes CLI help formatting/error behavior and the minimum Node version.

Prompt for agents
AGENTS.md requires updating CHANGELOG.md's Unreleased section for user-facing changes. Add an entry under ## [Unreleased] noting the commander v13 -> v15 upgrade and any resulting minimum Node version / help output changes.
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment thread package.json
"chalk": "^5.4.1",
"cli-table3": "^0.6.5",
"commander": "^13.1.0",
"commander": "^15.0.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Help output override relies on helpInformation() still being supported

src/cli.ts:163-170 monkey-patches program.helpInformation to prepend the ASCII banner. Commander's help internals were substantially reworked in the v14/v15 majors (help formatting moved further into the Help class, and several help APIs were deprecated/changed). Since only the top-level program is patched, subcommand help never shows the banner anyway; worth verifying against the installed v15 that helpInformation() is still the code path used for --help so the banner keeps working.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

@cursor
cursor Bot requested a review from yakimoto August 16, 2026 12:00

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Risk: medium. Left a non-blocking comment and did not approve because Cursor Security Agent skipped and Cursor Bugbot did not run. Assigned yakimoto for human review of the commander 13→15 major bump.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Router and Approver

@macroscopeapp

macroscopeapp Bot commented Aug 16, 2026

Copy link
Copy Markdown

Approvability

Verdict: Needs human review

Major commander dependency bump (v15) introduces Node version incompatibility - package.json still declares Node >=18.0.0 but commander v15 requires Node 20+. The author does not own package.json, and there's an unresolved critical finding about this breaking change.

You can customize Macroscope's approvability policy. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants