Releases: heroku/cli
v11.6.0
- ad0466e feat: adds credential manager functionality to the CLI (#3758)
|\
| * 628e669 Merge branch 'main' into feat/credential-mgr-integration
| |\
| |/
|/| - | f6671ec deps(dev): bump form-data from 4.0.5 to 4.0.6 (#3772)
- | 6b17d23 deps: bump protobufjs from 7.5.8 to 7.6.4 (#3771)
- | fc24468 deps: bump ws from 6.2.3 to 6.2.4 (#3768)
- | e700fb5 deps: bump tmp from 0.2.6 to 0.2.7 (#3767)
- | 62be38b fix: use HEROKU_CLI_CHANNEL in Direwolf test trigger (#3765)
- | f8b19ee Update Direwolf workflow and runner script to use HEROKU_CLI_CHANNEL (defaulting to stable) instead of HEROKU_CLI_VERSION, keeping release-channel propagation consistent across the CI trigger payload
/ - e7147a5 deps: update to heroku-cli-command v12.4.2 and heroku-cli-util v10.8.3 (#3774)
|\
| * 2875ec9 update package.json for node 22
| * 288ac84 deps: update to heroku-cli-command v12.4.2 and heroku-cli-util v10.8.3
|/ - 76d24b8 fix: improves consistency between keychain and netrc accounts actions (#3762)
|\
| * 1a6fdb1 refactor: always write to netrc and remove non-aliased account support from accounts:set
| * b2619ac refactor: clean up accounts commands and lib function
| * aba7fa5 refactor: remove cross-mode validation from accounts management
| * 5be6ed5 refactor: simplify accounts add to always write username and password
| * 9509171 fix: remove support for non-aliased accounts from heroku accounts and accounts:current commands
|/ - 07a78a3 chore: merge main (#3757)
|\
| * 9679ca2 Merge branch 'main' into k80/merge-main-6-8-26
|/ - 35350e8 fix: update error text for accounts commands (#3756)
|\
| * a15d8bd fix: update error text for accounts commands
|/ - c5d1a45 feat: adds alias support for keychain-based accounts (#3752)
|\
| * 969afab fix: update accounts:remove to check for email or alias to validate current account
| * 0f5b958 fix: make getAliasEmail test cross-platform compatible
| * a8368d6 fix: fix linting errors in accounts lib file
| * a34d687 feat: update accounts:add description for clarity
| * efa00a3 fix: prevent cross-mode account removal with helpful error messages
| * 386bd16 fix: allow switching to netrc mode with keychain-created aliases
| * c094aa6 feat: prevent duplicate aliases for same email in accounts:add
| * 4b0e92d fix: prevent password from being written to keychain alias files
| * c540bec refactor: simplify account lookup in set command
| * b15db3a refactor: simplify add() method with writeAccountFile helper
| * dae3901 refactor: extract Ruby symbol conversion to helper method
| * efff0f5 refactor: add accountsDir() helper to reduce code duplication
| * 92e2fe1 feat: update remove() to resolve alias before keychain removal
| * 114d3a7 feat: update set() to handle aliased keychain accounts
| * 940bb6f feat: update list() to merge keychain accounts with alias files
| * 01da5e4 feat: add listAliasFiles helper method
| * bb53b87 feat: add getAliasEmail helper method
| * 0d3b417 feat: remove alias files for keychain and netrc accounts
| * e1c572c feat: add alias files for keychain accounts
|/ - 8c100fd chore: merge in main to feature branch (#3747)
|\
| * e18a4c9 Merge remote-tracking branch 'origin' into feat/credential-mgr-integration
|/ - cb751e6 chore: merge main (#3737)
|\
| * 7df4bf0 chore: fix linting errors
| * 391b6a6 test: fix accounts, apps, auth, buildpacks, container, git, and ps-exec tests
| * 5eebe2a Merge branch 'main' into k80/merge-main-5-29
|/ - 40df61c deps: update versions of heroku-cli/command and heroku/heroku-cli-util (#3733)
- 7db768f fix: fix whoami and update heroku-cli-command and heroku-cli-util (#3719)
- b07137b feat: remove cached netrc account on logout (#3710)
- 1f896aa feat: update accounts:set to work with keychain managers (#3696)
- 89d7b14 feat: update accounts:remove to work with credential manager (#3701)
- 49e3938 feat: update accounts:add to use the credential manager (#3699)
- 5479fa5 fix: restore git configuration on logout (#3697)
- e753d06 feat: update accounts and accounts:current commands to use the credential manager (#3689)
- 4fde394 test: update analytics tests to use the credential manager (#3688)
- 5f86e4c chore: update CLI analytics to use heroku credential manager (#3685)
- 781e99e feat: implement heroku git:credentials as a git credential helper (#3683)
- ed3c524 deps: update heroku-cli/command to v13.0.0-beta.1 (#3660)
v11.5.0
- 96310c3 chore: pass PR title via env in pr-title-check workflow (#3763)
- 4f878de deps: resolve npm audit vulnerabilities (#3760)
- 24aaa69 deps: bump hono from 4.12.18 to 4.12.25 (#3755)
- 2c7c93b deps: bump qs from 6.14.2 to 6.15.2 (#3725)
- 2f8e6de deps: bump tmp from 0.2.5 to 0.2.6 (#3729)
- 5414e36 fix: call _heroku.pg_stat_statements_reset() on Essential and Advanced plans (#3751)
- 5618ee2 chore: inline npm publish workflow (#3750)
|\
| * 54fceca Inline npm publish behavior into create-cli-release.yml and remove the separate publish-npm.yml reusable workflow to simplify release pipeline orchestration and input wiring.
|/ - 0e81dd8 chore: consolidate release for trusted publishing (#3744)
- 665b189 feat: add hidden --method flag to data:pg:migrate (#3743)
- e171ad5 chore: upload arm64 win installer to Stampy unsigned bucket (W-22733412) (#3734)
- 355113e fix: 'run:inside' args ordering (W-22693654) (#3727)
- ebdf082 fix: pass empty string to rl.write in repl finally block (W-22295448) (#3721)
- 8abed2f chore: add CLAUDE.md and Copilot instructions pointing to AGENTS.md (#3724)
- 400fc6e fix: add missing warning to 'data:pg:migrate' (W-22544849) (#3716)
- 8860aa4 chore: remove unused workflow file (#3712)
- 5dd58af fix: inherit secrets in reusable workflow (#3711)
v11.4.0
- dcbaa1b fix: migrate release scripts from qqjs to script-exec helpers (#3707)
- 127e682 feat: 'data:pg:migrate' command implementation (W-21303011) (#3546)
- 4f3dad5 deps: bump the dev-patch-minor-dependencies group across 1 directory with 8 updates (#3700)
- 04df827 fix: validate HEROKU_HOST for container registry commands (#3704)
- 927397c deps: bump protobufjs from 7.5.5 to 7.5.8 (#3706)
- 0b36a1f fix: align ps:type with customer-facing private/shield dyno names (#3705)
- 7a587e6 deps: bump fast-uri from 3.1.0 to 3.1.2 (#3698)
- 6bb47ec deps: resolve ip-address GHSA-v2v4-37r5-5v8g via scoped overrides (#3695)
- 70f6e7c deps: bump @oclif/plugin-plugins to resolve picomatch and brace-expansion advisories (#3694)
- ab16a68 deps: bump hono from 4.12.14 to 4.12.18 (#3692)
- b99e262 deps: bump fast-xml-parser and @aws-sdk/xml-builder (#3687)
- 3726959 deps: bump basic-ftp from 5.3.0 to 5.3.1 (#3691)
- eda4459 fix: updates @heroku-cli/command to address 2FA token prompting bug (#3690)
- f80c9e9 deps: bump @xmldom/xmldom from 0.8.12 to 0.8.13 (#3680)
- 3e4c838 fix: prevent unhandled promise rejection in apps:destroy (#3679)
- ad81615 refactor: migrate from qqjs to execa with custom wrapper (#3678)
- d547ed5 docs: add AGENTS.md with CLI design patterns for AI agents (#3676)
- 87785e8 feat: multi-factor attachment support for Advanced dbs (W-21632630) (#3655)
- 699cbdd deps: bump @hono/node-server from 1.19.11 to 1.19.13 (#3651)
- b2754a2 deps: bump hono from 4.12.7 to 4.12.14 (#3672)
- 259e009 deps: bump follow-redirects from 1.15.11 to 1.16.0 (#3662)
- 0fa9796 deps: bump basic-ftp from 5.2.0 to 5.3.0 (#3673)
- 611abaa deps: bump protobufjs from 7.5.4 to 7.5.5 (#3674)
- d5ad9ac refactor: migrate to shared eslint config and testing functions (#3661)
- 6b96cb9 refactor: apply linting fixes to test helpers, fixtures, and integration tests (#3671)
- 8a56a67 refactor: apply lint formatting to scripts and hooks folders (#3669)
- eb9b040 refactor: apply lint fixes to lib files (#3668)
- b3f11bd refactor: apply lint formatting to remaining commands (#3667)
- fd4c8c0 refactor: apply lint formatting to git through pg commands (#3666)
- 7e84cbf refactor: apply lint formatting to auth through features commands (#3665)
v11.3.0
- 5568483 refactor: apply lint formatting to access, accounts, addons, and apps commands (#3664)
- c6a101f refactor: rename lib and script files to kebab-case (#3663)
- 2523d48 chore: remove @oclif/plugin-legacy dependency (#3659)
- 6da79cd fix: restore beforeExit handler for version commands and add comprehensive telemetry debug logging (#3657)
- 3297c5e feat: adds 'data:pg:upgrade:run/wait' commands (W-21304392) (#3551)
v11.2.0
- 73e4990 test: use Sinon stubs; parallel slug checksums (#3650)
- 8c4f8c3 fix: flaky apps:diff tests (#3649)
- 1d27c09 feat: include a --no-wrap flag for table displays (#3613)
- 0df7705 deps: bump the dev-patch-minor-dependencies group with 4 updates (#3644)
- 150e74a fix: improve telemetry worker stderr cleanup (#3648)
- ede6655 feat: update color usage, telemetry activation logic, and command/util dependencies (#3646)
- b9b8fed feat: adding --start-cmd flag to heroku local when no Procfile is present (#3638)
- f1f19ca deps: bump lodash from 4.17.23 to 4.18.1 (#3643)
- c13074d refactor: unify telemetry architecture and use background workers for all telemetry (#3642)
- 32920f9 test: this fixes the mocking difference causing flappy tests and adds chore to PR release title (#3640)
- aae3751 fix: procfile comment parsing (#3641)
v11.1.1
v11.1.0
- 74bbdfb feat: add isTTY context to telemetry and filter SIGINT from Sentry (#3632)
- 47b97e8 deps: bump the dev-patch-minor-dependencies group across 1 directory with 9 updates (#3629)
- b22638b deps: bump path-to-regexp from 8.3.0 to 8.4.0 (#3628)
- 65575a0 perf: optimize telemetry initialization and reduce startup overhead (#3620)
- bde5a5c deps: replace psl with tldts to fix punycode deprecation warning (#3627)
v11.0.2
v11.0.1
- 3eff3dc fix: separate TERM=dumb run status lines (#3617)
- 2d55453 deps: bump @heroku-cli/command to 12.2.2 (#3616)
- 6fcb3a4 fix: show correct error message for Essential-tier (W-21653472) (#3614)
- 85c2224 perf: improve Windows CLI performance (#3610)
- 84eb648 fix: resolve addons across data maintenances commands (#3609)
- 7e96152 fix: address UI issues with confirmation prompts on multiple commands (W-21649376) (#3602)
v11.0.0
Summary
This is a major release with extensive changes. The primary changes are:
- Upgrade to oclif v4 from v2
- Conversion to ECMAScript Modules (ESM) throughout the entire codebase
- Removal of the monorepo structure - consolidated to single package
- Migration from yarn to npm for package management and workflows
- Introduction of a new semantic color system with the ansis library replacing chalk
- Ships with Node.js 22 (maintains Node 20 compatibility)
- New Commands -
data:pg:*(NGPG),data:maintenance:*,heroku search - Repl and Prompt changes interface changes to how repl and prompt mode work
Breaking Changes / Code Refactoring
-
BREAKING: Conversion to ECMAScript Modules (ESM), adding
"type": "module"to package.json -
BREAKING: All commands, libraries, and tests converted from CommonJS to ESM syntax
-
BREAKING: The
uxmodule was significantly slimmed down in @oclif/core v4, removing built-in prompts, progress bars, and table utilities. We've implemented custom output helpers using ink-based tables and our own formatting utilities which will change the output, particularly with tables. -
BREAKING: Removal of heroku-cli-plugin-ai as a direct dependency. This plugin will now require separate installation
-
BREAKING data:maintenance commands changes
- data:maintenances commands have been migrated to the core CLI from the data-maintenance plugin
- pg:maintenance, pg:maintenance:info, pg:maintenance:window, and redis:maintenance commands have been deprecated and removed.
-
BREAKING Invoking repl has been changed from
heroku --repltoheroku repl
Features
- New color scheme: Migrated from chalk-based @heroku-cli/color to ansis-based @heroku/heroku-cli-util for semantic color functions
- If you prefer a simple ANSI8-based theme to the new default color theme, set HEROKU_THEME=simple. To turn off colors entirely, set NO_COLOR=true
- Removed strip-ansi dependency in favor of ansis built-in capabilities
- Updated all CLI output with semantic colors
- Node.js support: Ships with Node 22, continued support for Node 20
- --prompt now a GLOBAL flag --prompt will now be included in documentation and help text for commands that utilize it
- New search command: Can’t remember the command you’re thinking of? Use
heroku searchto find it - Next-Gen PostgreSQL (NGPG) commands:
- New
data:pg:*command namespace for NGPG support data:pg:attachments:create,data:pg:attachments:destroy,data:pg:attachments:indexdata:pg:quotas:index,data:pg:quotas:updatedata:pg:create,data:pg:destroy,data:pg:docs,data:pg:fork,data:pg:psql,data:pg:settings,data:pg:update- NGPG types and command utilities (W-20610475)
- New
- New diff command: Adds
apps:diffinto the CLI
oclif v2 → v4 Upgrade
The Heroku CLI now uses @oclif/core v4, a major upgrade from v2. This brings significant improvements and modernizations:
oclif v3 improvements:
- Performance: Enhanced manifest caching for faster command loading
- ESM/CJS interoperability: Better support for mixing CommonJS and ESM plugins
- Flag enhancements: Added
charAliasesfor single-character flag aliases andFlags.optionfor improved type inference - Module system: Updated bin scripts for better ESM/CJS compatibility
oclif v4 improvements:
- Full ESM support: Complete ECMAScript Module support with seamless interoperability between CommonJS and ESM plugins
- Modular architecture: Changed to granular imports (e.g.,
import run from '@oclif/core/run') - Runtime auto-transpilation: Linked ESM plugins auto-transpile with
tsx - New hooks: Added
preparsehook for pre-processing commands - Enhanced TypeScript: Enabled
exactOptionalPropertyTypesfor stricter type checking
Build System
- Move from yarn to npm (W-19730551, #3365)
- Removed
.yarnrc.yml,.yarn/directory - Added
package-lock.json - Updated all CI/CD workflows to use npm
- Updated scripts to use npm commands
- Removed
- Remove monorepo structure (#3508)
- Removed lerna configuration
- Consolidated from
packages/cli/to root-level structure - Moved all source from
packages/cli/srctosrc/ - Moved all tests from
packages/cli/testtotest/ - Flattened repository structure
- Switch to commit-and-tag-version from standard-version (#3496)
- Added
.versionrc.jsonconfiguration - Updated release scripts
- Added
- Removed Snapcraft configuration (removed
snap/directory) - Removed Dockerfile.devcenter
Tests
- Upgrade @oclif/test v2 to @oclif/test v4 (#3447)
- Converted all tests to ESM
- Added
.mocharc.jsonfor test configuration - Migrated from eslint 7 to eslint 8
- Fixed an issue with git remote being created during test execution
Continuous Integration
- Updated CI workflows to usefor npm instead of yarn
- Updated release workflows for new monorepo-less structure
- Added npm scripts for use with deployment workflows
Code Refactoring
- Comprehensive ESM migration across all commands
- The following commands have been moved into the CLI repository from the
ps-execplugin:ps:copyps:execps:forwardps:socks
Miscellaneous Chores
- Updated bundled oclif plugins to v4+ compatible versions for compatibility with @oclif/core v4
@oclif/plugin-commands, @oclif/plugin-help, @oclif/plugin-help, @oclif/plugin-not-found, @oclif/plugin-plugins, @oclif/plugin-update, @oclif/plugin-version, @oclif/plugin-warn-if-update-available, @oclif/plugin-which - Additional varkious package dependency updates
- Removal of @heroku-cli/color (replaced with @heroku/heroku-cli-util)
- Removal of @heroku/eventsource (replaced with eventsource)
- Removal of sparkline as a dependencydepndency (added directly to codebase with TypeScriptTS support)
- Updated Node.js update scripts to work with Nnode 22
- Updated
.tool-versionsfor Node 22 - Updated Husky pre-commit hook to happen during prepare
- Many linting errors and warnings fixed throughout codebase
Documentation
- Updated README.md for new repository structure
- Updated command documentation in docs/