balena-cli
Version:
The official balena Command Line Interface
1,613 lines (1,302 loc) • 339 kB
Markdown
# Change Log
All notable changes to this project will be documented in this file
automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
This project adheres to [Semantic Versioning](http://semver.org/).
## 25.1.6 - 2026-05-15
* Fix link in help output about FAQ and troubleshooting [Matthew Yarmolinsky]
## 25.1.5 - 2026-05-13
* Update GitHub Actions [balena-renovate[bot]]
## 25.1.4 - 2026-05-13
* Bump @balena/compose-parser to 0.2.4, @balena/compose to 8.0.3 [Christina Ying Wang]
## 25.1.3 - 2026-05-04
* Bump @balena/compose-parser to 0.2.1, @balena/compose to 8.0.2 [Christina Ying Wang]
## 25.1.2 - 2026-05-04
* Fix handleError exit code fallback [Christina Ying Wang]
## 25.1.1 - 2026-05-04
* tests: Update builder dashboard link [Matthew Yarmolinsky]
## 25.1.0 - 2026-04-29
* Add organization management commands [Thodoris Greasidis]
## 25.0.0 - 2026-04-28
* Update @balena/compose to v8, add @balena/compose-parser dependency [Christina Ying Wang]
## 24.1.4 - 2026-04-28
* Retry ratelimited requests that have a Retry-After less than 60 seconds [Thodoris Greasidis]
## 24.1.3 - 2026-04-08
* test(device ssh): unset proxy env vars that break stderr assertions [Kyle Harding]
## 24.1.2 - 2026-04-07
* Unblock color tests on CI after deduplicating supports-color [Thodoris Greasidis]
* Update @balena/lint to prepare for TS6.0 [Thodoris Greasidis]
## 24.1.1 - 2026-04-07
* Explicitly align express in package.json with the one in the shrinkwrap [Thodoris Greasidis]
## 24.1.0 - 2026-04-07
* os download: download the default type if the type passed is the same [Matthew Yarmolinsky]
* os download: warn if no type is chosen and default is installation-media [Matthew Yarmolinsky]
* os download: Add `type` flag for specifying `disk-image` or `installation-media` [Matthew Yarmolinsky]
* Update balena-sdk to 23.1.13 [Matthew Yarmolinsky]
* Update author [Matthew Yarmolinsky]
## 24.0.4 - 2026-04-06
* Prune unused prebuilds, sign .bare binaries, fix klaw codesign handler [Kyle Harding]
## 24.0.3 - 2026-02-26
* Disable background auto-updates [Thodoris Greasidis]
## 24.0.2 - 2026-02-18
<details>
<summary> Update balena-sdk to 23.0.2 [Thodoris Greasidis] </summary>
> ### balena-sdk-23.0.2 - 2026-02-13
>
> * Add url as a devDependency to fix mochttp in browser tests [Thodoris Greasidis]
>
> <details>
> <summary> Update balena-request to 14.1.6 [Thodoris Greasidis] </summary>
>
>> #### balena-request-14.1.6 - 2026-02-12
>>
>> * Make url a devDependency since it should now only be necessary in the browser tests [Thodoris Greasidis]
>> * Replace internal uses of the deprecated url.parse & url.resolve with WHATWG URL API [Thodoris Greasidis]
>> * Update flowzone config [Thodoris Greasidis]
>>
>> #### balena-request-14.1.5 - 2025-05-29
>>
>> * Remove no longer needed timekeeper dev dependency [Thodoris Greasidis]
>>
>> #### balena-request-14.1.4 - 2025-05-29
>>
>> * Update dependency buffer to v6 [balena-renovate[bot]]
>>
>> #### balena-request-14.1.3 - 2025-05-28
>>
>> * Abstract the timeout implementation [Thodoris Greasidis]
>>
>> #### balena-request-14.1.2 - 2025-05-27
>>
>> * Simplify the event emitting logic in the stream() method [Thodoris Greasidis]
>>
>> #### balena-request-14.1.1 - 2025-05-27
>>
>> * Update dependency temp to ^0.9.0 [balena-renovate[bot]]
>>
>> #### balena-request-14.1.0 - 2025-05-27
>>
>> * Add test for stream() progress events [Thodoris Greasidis]
>> * tests/stream: Remove redundant response length checks [Thodoris Greasidis]
>> * Convert the stream tests to async await [Thodoris Greasidis]
>> * Add typing for the progress event on the result of the stream() method [Thodoris Greasidis]
>>
>
> </details>
>
>
> ### balena-sdk-23.0.1 - 2026-02-11
>
> * Replace the deprecated url.parse & url.resolve with WHATWG URL API [Thodoris Greasidis]
>
</details>
## 24.0.1 - 2026-02-18
* Nudge users to update using the OCLIF update command [Jonathan Berger]
## 24.0.0 - 2026-02-16
* Group all OS related helpers to utils/os.ts [Thodoris Greasidis]
* preload: Include the release version in the selection list of releases [Thodoris Greasidis]
* os download,device init: Drop support for the 'recommended' & 'default' os version aliases in favor of 'latest' [Thodoris Greasidis]
* Preserve support for using short uuds & commits [Thodoris Greasidis]
<details>
<summary> Update balena-sdk to v23.0.0 [Thodoris Greasidis] </summary>
> ### balena-sdk-23.0.0 - 2026-02-10
>
> * Rename device.setSupervisorRelease to device.pinToSupervisorRelease [Thodoris Greasidis]
> * os.getAvailableOsVersions: Change the includeDraft convenience options to be passed as a third parameter [Thodoris Greasidis]
> * Drop support for node < 22.18.0 [Thodoris Greasidis]
>
> <details>
> <summary> Block OS Upgrades from OS < 2.14.0 and target OS < 2.16.0 [Thodoris Greasidis] </summary>
>
>> #### balena-hup-action-utils-7.0.0 - 2026-01-19
>>
>> * Update minimum supported TypeScript to 5.9.3 [Thodoris Greasidis]
>> * Update dependency balena-semver to v4 [Thodoris Greasidis]
>> * tsconfig: Change the compilation target to es2017 with es2019 lib [Thodoris Greasidis]
>> * Drop support for nodejs <20.12.0 [Thodoris Greasidis]
>> * Explicitly mark the package.json as type commonjs [Thodoris Greasidis]
>> * Stop publishing the lib folder [Thodoris Greasidis]
>> * Drop support for OS Upgrades from OS < 2.14.0 and target OS < 2.16.0 [Thodoris Greasidis]
>> * Drop support for OS Upgrades between v1 & v2 balenaOS [Thodoris Greasidis]
>>
>> #### balena-hup-action-utils-6.2.10 - 2025-06-08
>>
>> * Update dependency lint-staged to v16 [balena-renovate[bot]]
>>
>> #### balena-hup-action-utils-6.2.9 - 2025-04-02
>>
>> * Update dependency husky to v9 [balena-renovate[bot]]
>>
>> #### balena-hup-action-utils-6.2.8 - Invalid date
>>
>> * Update dependency rimraf to v6 [balena-renovate[bot]]
>>
>> #### balena-hup-action-utils-6.2.7 - 2025-03-27
>>
>> * Update dependency @types/chai-as-promised to v8 [balena-renovate[bot]]
>>
>> #### balena-hup-action-utils-6.2.6 - 2025-03-26
>>
>> * Update dependency mocha to v11 [balena-renovate[bot]]
>>
>> #### balena-hup-action-utils-6.2.5 - 2025-03-26
>>
>> * Update dependency @balena/lint to v9 [Thodoris Greasidis]
>> * Update TypeScript to 5.8.2 [Thodoris Greasidis]
>>
>> #### balena-hup-action-utils-6.2.4 - 2025-03-26
>>
>> * Update dependency balena-semver to v3 [balena-renovate[bot]]
>>
>> #### balena-hup-action-utils-6.2.3 - 2025-03-19
>>
>> * Update dependency @balena/lint to v8 [balena-renovate[bot]]
>>
>> #### balena-hup-action-utils-6.2.2 - 2024-12-16
>>
>> * Eliminate prod/dev variants in version comparison for takeover [Ken Bannister]
>>
>> #### balena-hup-action-utils-6.2.1 - 2024-12-10
>>
>> * Update `getHUPActionType` description [Matthew Yarmolinsky]
>>
>
> </details>
>
> * os.getMaxSatisfyingVersion: Drop the 'default' versionRange value in favor of 'latest' [Thodoris Greasidis]
> * Drop support for using short release commits as parameters [Thodoris Greasidis]
> * Drop support for using short device uuids as parameters [Thodoris Greasidis]
> * Drop the device.lastOnline() method [Thodoris Greasidis]
> * device.getWithServiceDetails(), application.getWithDeviceServiceDetails(), remove the current_services property [Thodoris Greasidis]
> * os.getSupportedOsUpdateVersions: List both Default & ESR OS releases by default [Thodoris Greasidis]
>
> ### balena-sdk-22.4.9 - 2026-02-03
>
> * os.getSupportedOsUpdateVersions: Fix the jsdoc of osType to String|Null [Thodoris Greasidis]
>
> ### balena-sdk-22.4.8 - 2026-01-27
>
> * Stop setting NODE_OPTIONS=--no-experimental-strip-types since it's no longer needed [Thodoris Greasidis]
> * Update devDependencies [Thodoris Greasidis]
>
> ### balena-sdk-22.4.7 - 2026-01-20
>
> * patch: Publish NPM package(s) using OIDC auth. [Anton B.]
>
> ### balena-sdk-22.4.6 - 2026-01-13
>
> * Remove `as T` from mergePineOptions calls to have proper type checking [Thodoris Greasidis]
> * Explicitly type the return type of most methods [Thodoris Greasidis]
>
> ### balena-preload-19.0.0 - 2026-02-10
>
>
> <details>
> <summary> Update balena-sdk to 23.0.0 [Thodoris Greasidis] </summary>
>
>> #### balena-sdk-23.0.0 - 2026-02-10
>>
>> * Rename device.setSupervisorRelease to device.pinToSupervisorRelease [Thodoris Greasidis]
>> * os.getAvailableOsVersions: Change the includeDraft convenience options to be passed as a third parameter [Thodoris Greasidis]
>> * Drop support for node < 22.18.0 [Thodoris Greasidis]
>>
>> <details>
>> <summary> Block OS Upgrades from OS < 2.14.0 and target OS < 2.16.0 [Thodoris Greasidis] </summary>
>>
>>> ##### balena-hup-action-utils-7.0.0 - 2026-01-19
>>>
>>> * Update minimum supported TypeScript to 5.9.3 [Thodoris Greasidis]
>>> * Update dependency balena-semver to v4 [Thodoris Greasidis]
>>> * tsconfig: Change the compilation target to es2017 with es2019 lib [Thodoris Greasidis]
>>> * Drop support for nodejs <20.12.0 [Thodoris Greasidis]
>>> * Explicitly mark the package.json as type commonjs [Thodoris Greasidis]
>>> * Stop publishing the lib folder [Thodoris Greasidis]
>>> * Drop support for OS Upgrades from OS < 2.14.0 and target OS < 2.16.0 [Thodoris Greasidis]
>>> * Drop support for OS Upgrades between v1 & v2 balenaOS [Thodoris Greasidis]
>>>
>>> ##### balena-hup-action-utils-6.2.10 - 2025-06-08
>>>
>>> * Update dependency lint-staged to v16 [balena-renovate[bot]]
>>>
>>> ##### balena-hup-action-utils-6.2.9 - 2025-04-02
>>>
>>> * Update dependency husky to v9 [balena-renovate[bot]]
>>>
>>> ##### balena-hup-action-utils-6.2.8 - Invalid date
>>>
>>> * Update dependency rimraf to v6 [balena-renovate[bot]]
>>>
>>> ##### balena-hup-action-utils-6.2.7 - 2025-03-27
>>>
>>> * Update dependency @types/chai-as-promised to v8 [balena-renovate[bot]]
>>>
>>> ##### balena-hup-action-utils-6.2.6 - 2025-03-26
>>>
>>> * Update dependency mocha to v11 [balena-renovate[bot]]
>>>
>>> ##### balena-hup-action-utils-6.2.5 - 2025-03-26
>>>
>>> * Update dependency @balena/lint to v9 [Thodoris Greasidis]
>>> * Update TypeScript to 5.8.2 [Thodoris Greasidis]
>>>
>>> ##### balena-hup-action-utils-6.2.4 - 2025-03-26
>>>
>>> * Update dependency balena-semver to v3 [balena-renovate[bot]]
>>>
>>> ##### balena-hup-action-utils-6.2.3 - 2025-03-19
>>>
>>> * Update dependency @balena/lint to v8 [balena-renovate[bot]]
>>>
>>> ##### balena-hup-action-utils-6.2.2 - 2024-12-16
>>>
>>> * Eliminate prod/dev variants in version comparison for takeover [Ken Bannister]
>>>
>>> ##### balena-hup-action-utils-6.2.1 - 2024-12-10
>>>
>>> * Update `getHUPActionType` description [Matthew Yarmolinsky]
>>>
>>
>> </details>
>>
>> * os.getMaxSatisfyingVersion: Drop the 'default' versionRange value in favor of 'latest' [Thodoris Greasidis]
>> * Drop support for using short release commits as parameters [Thodoris Greasidis]
>> * Drop support for using short device uuids as parameters [Thodoris Greasidis]
>> * Drop the device.lastOnline() method [Thodoris Greasidis]
>> * device.getWithServiceDetails(), application.getWithDeviceServiceDetails(), remove the current_services property [Thodoris Greasidis]
>> * os.getSupportedOsUpdateVersions: List both Default & ESR OS releases by default [Thodoris Greasidis]
>>
>> #### balena-sdk-22.4.9 - 2026-02-03
>>
>> * os.getSupportedOsUpdateVersions: Fix the jsdoc of osType to String|Null [Thodoris Greasidis]
>>
>> #### balena-sdk-22.4.8 - 2026-01-27
>>
>> * Stop setting NODE_OPTIONS=--no-experimental-strip-types since it's no longer needed [Thodoris Greasidis]
>> * Update devDependencies [Thodoris Greasidis]
>>
>> #### balena-sdk-22.4.7 - 2026-01-20
>>
>> * patch: Publish NPM package(s) using OIDC auth. [Anton B.]
>>
>> #### balena-sdk-22.4.6 - 2026-01-13
>>
>> * Remove `as T` from mergePineOptions calls to have proper type checking [Thodoris Greasidis]
>> * Explicitly type the return type of most methods [Thodoris Greasidis]
>>
>> #### balena-sdk-22.4.5 - 2025-12-29
>>
>> * Use the device.is_connected_to_vpn instead of is_online where possible [Thodoris Greasidis]
>>
>> #### balena-sdk-22.4.4 - 2025-12-22
>>
>> * Drop gulp from the dev dependencies [Thodoris Greasidis]
>> * Update @balena/lint to 9.3.12 [Thodoris Greasidis]
>> * tests: Type fixes for newer pinejs-client-core version [Thodoris Greasidis]
>>
>> #### balena-sdk-22.4.3 - 2025-11-24
>>
>> * Update actions/setup-node action to v6 [balena-renovate[bot]]
>>
>> #### balena-sdk-22.4.2 - 2025-11-24
>>
>> * Update sinon to v20 [balena-renovate[bot]]
>>
>> #### balena-sdk-22.4.1 - 2025-11-13
>>
>> * Replace some lodash usage with native JS alternatives [Matthew Yarmolinsky]
>>
>> #### balena-sdk-22.4.0 - 2025-11-13
>>
>> * os.getSupportedOsUpdateVersions: List ESR versions when an ESR version is provided & no osType is specified [Thodoris Greasidis]
>>
>> #### balena-sdk-22.3.1 - 2025-11-13
>>
>> * Stop using Browserify in favor of Webpack [Thodoris Greasidis]
>>
>> #### balena-sdk-22.3.0 - 2025-11-11
>>
>> * os.getSupportedOsUpdateVersions: Add support for including ESR versions [Thodoris Greasidis]
>> * tsconfig: Remove trailing comma so that it is a be a valid JSON [Thodoris Greasidis]
>> * os.getSupportedOsUpdateVersions: Replace an Array.filter with Array.find [Thodoris Greasidis]
>>
>> #### balena-sdk-22.2.2 - 2025-11-11
>>
>> * Deprecate the device.lastOnline method [Thodoris Greasidis]
>> * Reduce the usage of date-fns [Thodoris Greasidis]
>>
>> #### balena-sdk-22.2.1 - 2025-11-07
>>
>>
>> <details>
>> <summary> Update pinejs-client-core to 8.4.0 [Pagan Gazzard] </summary>
>>
>>> ##### pinejs-client-js-8.4.0 - 2025-10-10
>>>
>>> * Add a `StatusError` class that downstream is expected to use for errors [Pagan Gazzard]
>>>
>>> ##### pinejs-client-js-8.3.3 - 2025-10-10
>>>
>>> * Types: make use of inference for some simplification [Pagan Gazzard]
>>>
>>> ##### pinejs-client-js-8.3.2 - 2025-09-03
>>>
>>> * Improve typing of the `$: 'prop_name'` case [Pagan Gazzard]
>>>
>>> ##### pinejs-client-js-8.3.1 - 2025-08-01
>>>
>>> * Update dependencies [Pagan Gazzard]
>>>
>>
>> </details>
>>
>>
>> #### balena-sdk-22.2.0 - 2025-10-29
>>
>> * temporarily disable logs subscription test and adapt builder test [Andrea Rosci]
>> * fix: prevent linter from suggesting incorrect optional chaining comparison [Andrea Rosci]
>> * deprecate `current_services` in favour of `current_services_by_app` [Andrea Rosci]
>> * add `current_services_by_app` to group services by application; deprecate `current_services` [Andrea Rosci]
>>
>> #### balena-sdk-22.1.4 - 2025-09-24
>>
>> * Remove no longer needed eslint-disable @typescript-eslint/await [Thodoris Greasidis]
>>
>> #### balena-sdk-22.1.3 - 2025-09-18
>>
>> * tests/logs: Increase the timeout for logs.subscribe() tests [Thodoris Greasidis]
>> * tests/logs: Improve logging of tests that timeout [Thodoris Greasidis]
>> * Clear all created `setTimeout`s explicitly [Thodoris Greasidis]
>>
>> #### balena-sdk-22.1.2 - 2025-09-16
>>
>> * Update @balena/lint from 9.3.3 to 9.3.6 [Thodoris Greasidis]
>> * Update TypeScript to 5.9.2 [Thodoris Greasidis]
>>
>> #### balena-sdk-22.1.1 - 2025-09-01
>>
>> * Add release assets docs [Otavio Jacobi]
>>
>> #### balena-sdk-22.1.0 - 2025-08-25
>>
>> * Add release_asset [Otavio Jacobi]
>>
>> #### balena-sdk-22.0.1 - 2025-08-20
>>
>> * Use NODE_OPTIONS=--no-experimental-strip-types for node 22.18 [Otavio Jacobi]
>>
>
> </details>
>
> * Drop support for node < 22.18.0 [Thodoris Greasidis]
>
</details>
## 23.2.32 - 2026-02-11
* tests/build: Increase the test timeout to 1.5 minute [Thodoris Greasidis]
* Remove unnecessary 'url' imports [Thodoris Greasidis]
* tests: Replace the deprecated url.parse with new URL() [Thodoris Greasidis]
## 23.2.31 - 2026-02-11
* tests: Add ignore rule for DEP0169 url.parse deprecation [Thodoris Greasidis]
## 23.2.30 - 2026-01-16
* Update dependency balena-settings-client to v6 [balena-renovate[bot]]
## 23.2.29 - 2026-01-16
* server.spec: Test for undefined bodies [Matthew Yarmolinsky]
* server: Add optional chain after `request.body` [Matthew Yarmolinsky]
* Drop unneeded dependency `@types/body-parser` [Matthew Yarmolinsky]
* Update dependency body-parser to v2 [balena-renovate[bot]]
## 23.2.28 - 2026-01-16
<details>
<summary> Update dependency balena-semver to v4 [balena-renovate[bot]] </summary>
> ### balena-semver-4.0.1 - 2026-01-02
>
> * Update tsconfig target to es2017 [Matthew Yarmolinsky]
>
> ### balena-semver-4.0.0 - 2026-01-02
>
> * Drop support for node < 20.12.0 [Matthew Yarmolinsky]
> * Replace lodash with memoizee [Matthew Yarmolinsky]
>
</details>
## 23.2.27 - 2026-01-15
* Update actions/setup-node digest to 6044e13 [balena-renovate[bot]]
## 23.2.26 - 2026-01-15
* Update apple-actions/import-codesign-certs action to v6 [balena-renovate[bot]]
## 23.2.25 - 2026-01-15
* Update actions/download-artifact action to v7 [balena-renovate[bot]]
## 23.2.24 - 2026-01-15
* Update actions/upload-artifact action to v6 [balena-renovate[bot]]
## 23.2.23 - 2026-01-15
* Change common-flags modules to factories instead of static object [Otavio Jacobi]
## 23.2.22 - 2026-01-14
* Reduce overall usage of `require` [Otavio Jacobi]
* Remove unused `setMaxListeners` function [Otavio Jacobi]
## 23.2.21 - 2026-01-13
* Remove no longer needed direct dependencies `file-disk` and `partitioninfo` [Matthew Yarmolinsky]
* Remove no longer needed code in favor of `balena-image-fs` [Matthew Yarmolinsky]
* Update `balena-image-fs` to 7.6.0 [Matthew Yarmolinsky]
## 23.2.20 - 2026-01-13
* Add `getPackageJson` lazy getter to centralize package.json access [Otavio Jacobi]
## 23.2.19 - 2026-01-13
* Run `npm audit fix` [Matthew Yarmolinsky]
* Add missing dependency `partitioninfo` [Matthew Yarmolinsky]
* Add missing dependency `file-disk` [Matthew Yarmolinsky]
* Add missing dev dependency `pinejs-client-core` [Matthew Yarmolinsky]
* Add missing dependency `indent-string` [Matthew Yarmolinsky]
* Remove unused dev dependencies [Matthew Yarmolinsky]
* README: remove `david-dm` link [Matthew Yarmolinsky]
## 23.2.18 - 2026-01-13
* Add tests for balena config generate [Thodoris Greasidis]
## 23.2.17 - 2026-01-12
* Drop `exit-hook` patch [Matthew Yarmolinsky]
* Update balena-device-init to 8.2.1 [Matthew Yarmolinsky]
* Update reconfix to 1.0.2 [Matthew Yarmolinsky]
* os download: Correct img names to match devices type in examples [Matthew Yarmolinsky]
## 23.2.16 - 2026-01-09
* Unpin balena-request from v14.0.6 [Otavio Jacobi]
* tests: Replace `nock`, `mock-require` and `rewire` with `mockttp` and `sinon` [Otavio Jacobi]
## 23.2.15 - 2026-01-09
* Fix intermitent test on image-manager [Otavio Jacobi]
## 23.2.14 - 2026-01-02
* Use the device.is_connected_to_vpn field for device actions, ssh & tunnel checks [Thodoris Greasidis]
<details>
<summary> Update balena-sdk to 22.4.5 [Thodoris Greasidis] </summary>
> ### balena-sdk-22.4.5 - 2025-12-29
>
> * Use the device.is_connected_to_vpn instead of is_online where possible [Thodoris Greasidis]
>
> ### balena-sdk-22.4.4 - 2025-12-22
>
> * Drop gulp from the dev dependencies [Thodoris Greasidis]
> * Update @balena/lint to 9.3.12 [Thodoris Greasidis]
> * tests: Type fixes for newer pinejs-client-core version [Thodoris Greasidis]
>
> ### balena-sdk-22.4.3 - 2025-11-24
>
> * Update actions/setup-node action to v6 [balena-renovate[bot]]
>
> ### balena-sdk-22.4.2 - 2025-11-24
>
> * Update sinon to v20 [balena-renovate[bot]]
>
</details>
## 23.2.13 - 2025-12-29
<details>
<summary> Update docker-progress to 5.4.0 [Thodoris Greasidis] </summary>
> ### docker-progress-5.4.0 - 2025-12-03
>
> * pull/push/build: Support detecting the result digest when pushing only the reference of a pre-built image [Thodoris Greasidis]
>
> ### docker-progress-5.3.4 - 2025-12-03
>
> * pull: fix digest hash parsing [Tuetuopay]
>
> ### docker-progress-5.3.3 - 2025-11-28
>
> * Update flowzone workflow to allow external contributions [Thodoris Greasidis]
>
> ### docker-progress-5.3.2 - 2025-11-28
>
> * Fix TS errors for the latest dockerode [Thodoris Greasidis]
>
> ### docker-progress-5.3.1 - 2025-05-15
>
> * Make abortSignal optional in pull/push options [Felipe Lalanne]
>
> ### docker-progress-5.3.0 - 2025-05-12
>
> * Support AbortSignal option for image push/pull [Christina Ying Wang]
>
> ### docker-progress-5.2.7 - 2025-04-10
>
> * Update @balena/lint to 9.x [Pagan Gazzard]
>
> ### docker-progress-5.2.6 - 2025-04-02
>
> * Update dependency rimraf to v6 [balena-renovate[bot]]
>
> ### docker-progress-5.2.5 - 2025-03-25
>
> * Update dependency @balena/lint to v8 [balena-renovate[bot]]
>
> ### docker-progress-5.2.4 - 2025-02-12
>
> * Propagate NodeJS Error from stream directly [Christina Ying Wang]
>
> ### docker-progress-5.2.3 - 2024-01-05
>
> * Make use of nullish coalescing [Pagan Gazzard]
>
> ### docker-progress-5.2.2 - 2024-01-05
>
> * Reduce lodash usage [Pagan Gazzard]
>
> ### docker-progress-5.2.1 - 2024-01-05
>
> * Update dependencies [Pagan Gazzard]
>
> ### docker-progress-5.2.0 - Invalid date
>
> * Add support for tracking delta generation progress [Akis Kesoglou]
>
> ### docker-progress-5.1.4 - Invalid date
>
> * Build with Flowzone [Akis Kesoglou]
>
</details>
## 23.2.12 - 2025-12-29
* Update oclif from 4.22.0 to 4.22.61 [Otavio Jacobi]
## 23.2.11 - 2025-12-15
* Update aws-actions/configure-aws-credentials action to v5 [balena-renovate[bot]]
## 23.2.10 - 2025-12-12
* Update apple-actions/import-codesign-certs action to v5 [balena-renovate[bot]]
## 23.2.9 - 2025-12-12
* Fix Node.js 22+ JSON import error by using require() [Kyle Harding]
* renovate: Only run npm dedupe for github-actions updates [Kyle Harding]
## 23.2.8 - 2025-12-08
* Add test for os configure --config using secureboot [Thodoris Greasidis]
* os configure, device init: Validate that the config.json's installer.secureboot is a boolean when set [Thodoris Greasidis]
## 23.2.7 - 2025-12-08
* Update @balena/lint to 9.3.7 to support async disposables [Thodoris Greasidis]
* Add tests for os configure --config [Thodoris Greasidis]
* os configure: Fix asking interactive questions when --config is used [Thodoris Greasidis]
## 23.2.6 - 2025-12-05
* Update apple-actions/import-codesign-certs action to v3 [balena-renovate[bot]]
## 23.2.5 - 2025-12-05
<details>
<summary> os configure: Fix detecting the OS version of flasher images [Thodoris Greasidis] </summary>
> ### balena-device-init-8.2.0 - 2025-12-03
>
> * Add test for the getImageOsVersion() function on GPT flasher images [Thodoris Greasidis]
> * Deprecate support for the edison [Thodoris Greasidis]
> * getImageOsVersion: Support detecting the version on flasher images [Thodoris Greasidis]
> * Add test for the getImageOsVersion() function on raw DT images [Thodoris Greasidis]
> * tests/images/raspberrypi-os2.img: Rename the RESIN-BOOT partition to resin-boot as it is supposed to be [Thodoris Greasidis]
>
</details>
## 23.2.4 - 2025-12-03
* Update GitHub Actions [balena-renovate[bot]]
## 23.2.3 - 2025-12-03
* Lock file maintenance [balena-renovate[bot]]
## 23.2.2 - 2025-12-02
* Update actions/download-artifact action to v6 [balena-renovate[bot]]
## 23.2.1 - 2025-12-02
* tests/os/configure.spec: Abstract the temp image creation and cleanup [Thodoris Greasidis]
## 23.2.0 - 2025-11-21
* Include sub-commands in --help [Thodoris Greasidis]
## 23.1.4 - 2025-11-20
* Remove the oclif/core patches in favor oclif overrides & customization [Thodoris Greasidis]
## 23.1.3 - 2025-11-19
* Fix `version` and `autocomplete` commands not working in offline mode [Matthew Yarmolinsky]
## 23.1.2 - 2025-11-19
* push,build: Use streaming while packing the build context files [Thodoris Greasidis]
## 23.1.1 - 2025-11-18
* Drop some usage of lodash in favor of native equivalents [Matthew Yarmolinsky]
## 23.1.0 - 2025-11-18
<details>
<summary> device os-update: Add support for HUPing ESR devices [Thodoris Greasidis] </summary>
> ### balena-sdk-22.4.1 - 2025-11-13
>
> * Replace some lodash usage with native JS alternatives [Matthew Yarmolinsky]
>
> ### balena-sdk-22.4.0 - 2025-11-13
>
> * os.getSupportedOsUpdateVersions: List ESR versions when an ESR version is provided & no osType is specified [Thodoris Greasidis]
>
> ### balena-sdk-22.3.1 - 2025-11-13
>
> * Stop using Browserify in favor of Webpack [Thodoris Greasidis]
>
> ### balena-sdk-22.3.0 - 2025-11-11
>
> * os.getSupportedOsUpdateVersions: Add support for including ESR versions [Thodoris Greasidis]
> * tsconfig: Remove trailing comma so that it is a be a valid JSON [Thodoris Greasidis]
> * os.getSupportedOsUpdateVersions: Replace an Array.filter with Array.find [Thodoris Greasidis]
>
> ### balena-sdk-22.2.2 - 2025-11-11
>
> * Deprecate the device.lastOnline method [Thodoris Greasidis]
> * Reduce the usage of date-fns [Thodoris Greasidis]
>
> ### balena-sdk-22.2.1 - 2025-11-07
>
>
> <details>
> <summary> Update pinejs-client-core to 8.4.0 [Pagan Gazzard] </summary>
>
>> #### pinejs-client-js-8.4.0 - 2025-10-10
>>
>> * Add a `StatusError` class that downstream is expected to use for errors [Pagan Gazzard]
>>
>> #### pinejs-client-js-8.3.3 - 2025-10-10
>>
>> * Types: make use of inference for some simplification [Pagan Gazzard]
>>
>> #### pinejs-client-js-8.3.2 - 2025-09-03
>>
>> * Improve typing of the `$: 'prop_name'` case [Pagan Gazzard]
>>
>> #### pinejs-client-js-8.3.1 - 2025-08-01
>>
>> * Update dependencies [Pagan Gazzard]
>>
>
> </details>
>
>
> ### balena-sdk-22.2.0 - 2025-10-29
>
> * temporarily disable logs subscription test and adapt builder test [Andrea Rosci]
> * fix: prevent linter from suggesting incorrect optional chaining comparison [Andrea Rosci]
> * deprecate `current_services` in favour of `current_services_by_app` [Andrea Rosci]
> * add `current_services_by_app` to group services by application; deprecate `current_services` [Andrea Rosci]
>
</details>
## 23.0.1 - 2025-11-18
* Use nullish coalescing [Christina Ying Wang]
## 23.0.0 - 2025-11-17
* Fix lzma-native build on node24 on Linux ARM runners [Thodoris Greasidis]
* device note: Drop the --dev flag in favor of the standardize --device [Thodoris Greasidis]
* device init: Fix node DEP0190 deprecation warning [Thodoris Greasidis]
* Drop support for node <24.11.0 [Thodoris Greasidis]
* config generate: Drop the deprecated no-op '--generate-device-api-key' flag [Thodoris Greasidis]
* os configure: Use oclif relations to enforce --device-type dependency on --fleet [Thodoris Greasidis]
* os configure: Add tests for how flags are allowed to be combined [Thodoris Greasidis]
* Drop all deprecated aliases [Matthew Yarmolinsky]
* Use oclif's native json support instead of manually adding it [Matthew Yarmolinsky]
* Replace manual completion generation with `@oclif/plugin-autocomplete` [Matthew Yarmolinsky]
* Replace custom `version` command with `@oclif/plugin-version` [Matthew Yarmolinsky]
* device init: Make --config incompatible with all other flags other than --drive --version & --yes [Thodoris Greasidis]
* device init: Validate that the provided config file paths exist [Thodoris Greasidis]
* os configure: Make --config incompatible with all other flags other than --system-connection [Thodoris Greasidis]
* os configure, os initialize: Fail when a device-type.json can't be detected in the provided image [Thodoris Greasidis]
* os configure: Drop the --version flag & fail when the image version can't be detected [Thodoris Greasidis]
* Drop the 'balena os build-config' command in favor of `balena config generate' [Thodoris Greasidis]
* release: Include the build_log in the --json results [Thodoris Greasidis]
* release: Replace the semver field with raw_vesrion [Thodoris Greasidis]
* release list: Replace the semver field with raw_vesrion [Thodoris Greasidis]
## 22.5.5 - 2025-11-14
* Update actions/setup-python action to v6 [balena-renovate[bot]]
## 22.5.4 - 2025-11-14
* renovate: Clean node_modules and npm cache before dedupe [Kyle Harding]
## 22.5.3 - 2025-11-13
* Update actions/setup-node action to v6 [balena-renovate[bot]]
## 22.5.2 - 2025-11-13
* Update GitHub Artifact Actions to v5 [balena-renovate[bot]]
## 22.5.1 - 2025-11-13
* Run npm install and npm dedupe after any package update [Kyle Harding]
## 22.5.0 - 2025-11-12
* feat: add update command [Otavio Jacobi]
## 22.4.17 - 2025-11-11
* Build with macos-15-intel as macos-13 is deprecated [Otavio Jacobi]
## 22.4.16 - 2025-10-30
* ssh,tunnel: Fix retrieving the online devices ordered by name [Thodoris Greasidis]
## 22.4.15 - 2025-10-21
* Remove a patch to @oclif/core [Matthew Yarmolinsky]
* Update @oclif/core [Matthew Yarmolinsky]
## 22.4.14 - 2025-10-17
* Remove unused api mock for version command [Otavio Jacobi]
## 22.4.13 - 2025-10-14
* Bump @sentry/node to v10 [Otavio Jacobi]
## 22.4.12 - 2025-10-13
* Remove all references to removed `pkg` bundle method [Otavio Jacobi]
## 22.4.11 - 2025-10-10
* Switch runtime uses of `mkdirp` to use the native equivalent [Pagan Gazzard]
## 22.4.10 - 2025-10-09
* Build with node 22.20.0 [Otavio Jacobi]
## 22.4.9 - 2025-09-25
<details>
<summary> Update balena-device-init to 8.1.14 [Thodoris Greasidis] </summary>
> ### balena-device-init-8.1.14 - 2025-09-24
>
>
> <details>
> <summary> Update resin-device-operations to 4.0.0 [Thodoris Greasidis] </summary>
>
>> #### resin-device-operations-4.0.0 - 2025-09-23
>>
>>
>> <details>
>> <summary> Update rindle to 3.0.0 [Thodoris Greasidis] </summary>
>>
>>> ##### rindle-3.0.0 - 2025-09-23
>>>
>>> * Update jsdoc-to-markdown to v9 and regenerate the README [Thodoris Greasidis]
>>> * Drop the getStreamFromString method [Thodoris Greasidis]
>>>
>>> ##### rindle-2.0.0 - 2025-09-22
>>>
>>> * Drop Bluebird in favor of native Promises [Thodoris Greasidis]
>>> * Drop support for callbacks in favor of Promises [Thodoris Greasidis]
>>> * Drop support for nodejs < 20 [Thodoris Greasidis]
>>> * Block the creation of package-lock.json [Thodoris Greasidis]
>>> * Replace balenaCI with flowzone [Thodoris Greasidis]
>>> * Drop no longer used hound, travis & appveyor ymls [Thodoris Greasidis]
>>>
>>> ##### rindle-1.3.6 - 2020-04-21
>>>
>>> * Remove lodash dependency [Pagan Gazzard]
>>>
>>> ##### rindle-1.3.5 - 2020-04-20
>>>
>>> * Update to gulp 4 [Pagan Gazzard]
>>> * Switch to balena-lint for linting [Pagan Gazzard]
>>>
>>> ##### rindle-1.3.4 - Invalid date
>>>
>>> * Should import lodash methods independently to reduce bundle size [Thodoris Greasidis]
>>>
>>> ##### rindle-1.3.3 - Invalid date
>>>
>>> * tests: Fix missing semicolon warning [Thodoris Greasidis]
>>>
>>> ##### rindle-1.3.2 - 2019-01-29
>>>
>>> * travis: Drop 0.x node workers in favor of v6, 8, 10 [Thodoris Greasidis]
>>> * Change license to Apache 2.0 [Thodoris Greasidis]
>>> * Update bluebird and lodash to their latest versions [Pagan Gazzard]
>>> * Fix tests with the latest version of string-to-stream [Pagan Gazzard]
>>>
>>
>> </details>
>>
>> * Fix execute().on() not allowing chaining when binding 'end' on an operation that has finished [Thodoris Greasidis]
>> * Switch to async await and drop Bluebird [Thodoris Greasidis]
>>
>> <details>
>> <summary> Update balena-image-fs from 7.0.6 to 7.5.3 [Thodoris Greasidis] </summary>
>>
>>> ##### balena-image-fs-7.5.3 - 2025-04-09
>>>
>>> * Update dependency mocha to v11 [balena-renovate[bot]]
>>>
>>> ##### balena-image-fs-7.5.2 - 2025-04-02
>>>
>>> * Update dependency jsdoc-to-markdown to v9 [balena-renovate[bot]]
>>>
>>> ##### balena-image-fs-7.5.1 - 2025-03-26
>>>
>>> * Update @balena/lint to v9 [Thodoris Greasidis]
>>> * Remove the no longer needed gpt detection helper [Thodoris Greasidis]
>>> * Update TypeScript to 5.8.2 [Thodoris Greasidis]
>>> * Drop the package-lock.json [Thodoris Greasidis]
>>>
>>> ##### balena-image-fs-7.5.0 - 2025-03-26
>>>
>>> * Add function to find a partition by name/label [Ken Bannister]
>>>
>>> ##### balena-image-fs-7.4.1 - 2025-02-21
>>>
>>> * bump ext2fs to 4.2.4 [Ryan Cooke]
>>>
>>> ##### balena-image-fs-7.4.0 - 2025-01-27
>>>
>>> * Add getLabel() to retrieve filesystem label [Ken Bannister]
>>>
>>> ##### balena-image-fs-7.3.0 - 2025-01-06
>>>
>>> * Drop Bluebird from devDependencies [Thodoris Greasidis]
>>> * flowzone: Remove empty with clause [Thodoris Greasidis]
>>> * Add the promises namespace as part of the exposed fs [Thodoris Greasidis]
>>>
>>> ##### balena-image-fs-7.2.2 - 2024-01-02
>>>
>>> * Update dependency @types/node to v20 [Self-hosted Renovate Bot]
>>>
>>> ##### balena-image-fs-7.2.1 - 2023-12-19
>>>
>>> * Remove repo config from flowzone.yml [Kyle Harding]
>>>
>>> ##### balena-image-fs-7.2.0 - 2023-01-20
>>>
>>> * Add support for Node 18 [Akis Kesoglou]
>>>
>>> ##### balena-image-fs-7.1.2 - 2023-01-05
>>>
>>> * Update dependencies [ab77]
>>>
>>> ##### balena-image-fs-7.1.1 - 2022-12-20
>>>
>>> * Update dependency jsdoc-to-markdown to 8.0.0 [Renovate Bot]
>>>
>>> ##### balena-image-fs-7.1.0 - 2022-12-13
>>>
>>> * update dependencies [Zane Hitchcox]
>>>
>>
>> </details>
>>
>> * Convert to TypeScript and es module exports [Thodoris Greasidis]
>> * Switch target to es2018 [Thodoris Greasidis]
>> * Drop hound, travis & appveyor ymls [Thodoris Greasidis]
>>
>> #### resin-device-operations-3.0.1 - 2025-09-22
>>
>> * Lint tests [Thodoris Greasidis]
>> * Convert tests to TypeScript [Thodoris Greasidis]
>>
>
> </details>
>
> * Update reconfix to 1.0.1 [Thodoris Greasidis]
> * Drop not used string-to-stream dependency [Thodoris Greasidis]
>
> ### balena-device-init-8.1.13 - 2025-09-22
>
>
> <details>
> <summary> Update balena-semver to 3.0.10 [Thodoris Greasidis] </summary>
>
>> #### balena-semver-3.0.10 - 2025-08-22
>>
>> * Simplify automation of tests/docs by using the mocha cli [Pagan Gazzard]
>> * Improve readability of README examples [Pagan Gazzard]
>> * Enable linting for automation scripts [Pagan Gazzard]
>>
>> #### balena-semver-3.0.9 - 2025-08-22
>>
>> * Switch tsconfig module to `Node16`, remaining as commonjs [Pagan Gazzard]
>>
>> #### balena-semver-3.0.8 - 2025-08-22
>>
>> * Update dependencies [Pagan Gazzard]
>>
>> #### balena-semver-3.0.7 - 2025-06-07
>>
>> * Update dependency lint-staged to v16 [balena-renovate[bot]]
>>
>> #### balena-semver-3.0.6 - 2025-04-09
>>
>> * Update dependency husky to v9 [balena-renovate[bot]]
>>
>> #### balena-semver-3.0.5 - 2025-04-08
>>
>> * Update balena-lint to v9 [joshbwlng]
>>
>> #### balena-semver-3.0.4 - 2025-04-08
>>
>> * Update dependency jsdoc-to-markdown to v9 [balena-renovate[bot]]
>>
>> #### balena-semver-3.0.3 - 2025-04-02
>>
>> * Update dependency mocha to v11 [balena-renovate[bot]]
>>
>> #### balena-semver-3.0.2 - 2025-03-25
>>
>> * Update dependency @balena/lint to v8 [balena-renovate[bot]]
>>
>> #### balena-semver-3.0.1 - 2025-02-14
>>
>> * Fix parsing & incrementing semver parts > 1000 [Thodoris Greasidis]
>>
>> #### balena-semver-3.0.0 - 2023-12-12
>>
>> * Update dependencies [Thodoris Greasidis]
>> * Drop support for nodejs < 16.0.0 [Thodoris Greasidis]
>>
>> #### balena-semver-2.3.5 - 2023-10-25
>>
>> * Test sorting pre-releases across revisions of the same semver [Thodoris Greasidis]
>> * Block the creation of package-lock.json [Thodoris Greasidis]
>>
>> #### balena-semver-2.3.4 - 2023-10-25
>>
>> * Fix the `.compare()` method test when used with sorting [Thodoris Greasidis]
>>
>> #### balena-semver-2.3.3 - 2023-07-14
>>
>> * Update TypeScript to 4.9.5 [Thodoris Greasidis]
>> * patch: Update flowzone.yml [Kyle Harding]
>>
>> #### balena-semver-2.3.2 - 2022-09-26
>>
>> * Delete redundant .resinci.yml [Thodoris Greasidis]
>>
>> #### balena-semver-2.3.1 - 2022-09-22
>>
>> * Drop the .travis.yml [Thodoris Greasidis]
>> * Specify node 10 as the minimum supported node engine in the package.json [Thodoris Greasidis]
>> * Replace balenaCI with flowzone [Thodoris Greasidis]
>>
>> #### balena-semver-2.3.0 - 2020-03-11
>>
>> * Support underscore version variants [Cameron Diver]
>>
>
> </details>
>
>
> ### balena-device-init-8.1.12 - 2025-09-19
>
> * Update flowzone custom actions to use node 20 as per the supported engines [Thodoris Greasidis]
> * Update jsdoc-to-markdown to 9.1.2 to fix tests in node 24 [Thodoris Greasidis]
> * Switch from ts-mocha to mocha & ts-node to fix node 22.18 tests failing [Thodoris Greasidis]
> * Drop not used rindle dependency [Thodoris Greasidis]
>
</details>
* Drop no longer needed @types/bluebird devDependency [Thodoris Greasidis]
<details>
<summary> Update livepush to 3.5.2 [Thodoris Greasidis] </summary>
> ### livepush-3.5.2 - 2025-09-22
>
> * Drop Bluebird [Thodoris Greasidis]
> * Replace circleci with flowzone [Thodoris Greasidis]
> * Update devDependencies [Thodoris Greasidis]
> * Enable TypeScript esModuleInterop compiler option [Thodoris Greasidis]
> * Update TypeScript to 5.9.2 [Thodoris Greasidis]
> * Block creating a package-lock.json [Thodoris Greasidis]
> * Stop using global typings [Thodoris Greasidis]
> * Make ts-node a devDependency [Thodoris Greasidis]
>
</details>
* Update reconfix to 1.0.1 [Thodoris Greasidis]
<details>
<summary> Update tar-utils to 3.0.3 [Thodoris Greasidis] </summary>
> ### node-tar-utils-3.0.3 - 2025-09-19
>
> * tests: Remove no longer used Bluebird import [Thodoris Greasidis]
>
> ### node-tar-utils-3.0.2 - 2023-07-05
>
> * Update to tar-stream 3.1.6 [Pagan Gazzard]
>
> ### node-tar-utils-3.0.1 - 2023-07-05
>
> * Fix `cloneTarStream` when passing `onEntry` option [Pagan Gazzard]
>
> ### node-tar-utils-3.0.0 - 2023-07-05
>
> * Update tar-stream to 3.x [Pagan Gazzard]
> * Switch from bluebird to native promises [Pagan Gazzard]
> * Update minimum nodejs version to 16.13.0 [Pagan Gazzard]
>
> ### node-tar-utils-2.1.3 - 2020-08-20
>
> * Add .version/CHANGELOG.yml for nested changelogs [Pagan Gazzard]
>
> ### node-tar-utils-2.1.2 - 2020-08-14
>
> * Explicitly disable backpressure in `cloneTarStream` to buffer in memory [Pagan Gazzard]
> * Remove lodash dependency [Pagan Gazzard]
> * Switch to @balena/lint [Pagan Gazzard]
>
</details>
<details>
<summary> Update resin-cli-form to 5.0.0 [Thodoris Greasidis] </summary>
> ### resin-cli-form-5.0.0 - 2025-09-21
>
>
> <details>
> <summary> Update resin-cli-visuals from 3.0.1 to 4.0.1 [Thodoris Greasidis] </summary>
>
>> #### resin-cli-visuals-4.0.0 - 2025-09-18
>>
>> * horizontal: Use nullish check to fallback from the alias to the prop name [Thodoris Greasidis]
>> * vertical: Explicitly convert values to string [Thodoris Greasidis]
>> * Replace the SpinnerPromise class with a createSpinnerPromise factory function [Thodoris Greasidis]
>> * Switch to async await and drop Bluebird [Thodoris Greasidis]
>> * Switch target to es2018 [Thodoris Greasidis]
>> * Convert files to use es modules imports & exports [Thodoris Greasidis]
>> * Convert to TypeScript & lint [Thodoris Greasidis]
>>
>
> </details>
>
> * Switch to async await and drop Bluebird [Thodoris Greasidis]
> * Switch target to es2018 [Thodoris Greasidis]
> * Convert to TypeScript es module exports [Thodoris Greasidis]
>
> ### resin-cli-form-4.0.2 - 2025-09-19
>
> * Convert tests to TypeScript and drop mochainon [Thodoris Greasidis]
>
</details>
<details>
<summary> Update resin-cli-visuals to 4.0.1 [Thodoris Greasidis] </summary>
> ### resin-cli-visuals-4.0.1 - 2025-09-18
>
> * progress: Allow null for the ProgressState.eta [Thodoris Greasidis]
> * table: Support using readonly string[] for the ordering [Thodoris Greasidis]
>
> ### resin-cli-visuals-4.0.0 - 2025-09-18
>
> * horizontal: Use nullish check to fallback from the alias to the prop name [Thodoris Greasidis]
> * vertical: Explicitly convert values to string [Thodoris Greasidis]
> * Replace the SpinnerPromise class with a createSpinnerPromise factory function [Thodoris Greasidis]
> * Switch to async await and drop Bluebird [Thodoris Greasidis]
> * Switch target to es2018 [Thodoris Greasidis]
> * Convert files to use es modules imports & exports [Thodoris Greasidis]
> * Convert to TypeScript & lint [Thodoris Greasidis]
>
</details>
## 22.4.8 - 2025-09-22
<details>
<summary> Update balena-semver to 3.0.10 [Thodoris Greasidis] </summary>
> ### balena-semver-3.0.10 - 2025-08-22
>
> * Simplify automation of tests/docs by using the mocha cli [Pagan Gazzard]
> * Improve readability of README examples [Pagan Gazzard]
> * Enable linting for automation scripts [Pagan Gazzard]
>
> ### balena-semver-3.0.9 - 2025-08-22
>
> * Switch tsconfig module to `Node16`, remaining as commonjs [Pagan Gazzard]
>
> ### balena-semver-3.0.8 - 2025-08-22
>
> * Update dependencies [Pagan Gazzard]
>
> ### balena-semver-3.0.7 - 2025-06-07
>
> * Update dependency lint-staged to v16 [balena-renovate[bot]]
>
> ### balena-semver-3.0.6 - 2025-04-09
>
> * Update dependency husky to v9 [balena-renovate[bot]]
>
> ### balena-semver-3.0.5 - 2025-04-08
>
> * Update balena-lint to v9 [joshbwlng]
>
> ### balena-semver-3.0.4 - 2025-04-08
>
> * Update dependency jsdoc-to-markdown to v9 [balena-renovate[bot]]
>
> ### balena-semver-3.0.3 - 2025-04-02
>
> * Update dependency mocha to v11 [balena-renovate[bot]]
>
> ### balena-semver-3.0.2 - 2025-03-25
>
> * Update dependency @balena/lint to v8 [balena-renovate[bot]]
>
> ### balena-semver-3.0.1 - 2025-02-14
>
> * Fix parsing & incrementing semver parts > 1000 [Thodoris Greasidis]
>
> ### balena-semver-3.0.0 - 2023-12-12
>
> * Update dependencies [Thodoris Greasidis]
> * Drop support for nodejs < 16.0.0 [Thodoris Greasidis]
>
</details>
## 22.4.7 - 2025-09-22
* Switch runtime uses of `rimraf` to use the native equivalent [Pagan Gazzard]
## 22.4.6 - 2025-09-18
* Convert various lodash methods to native versions [Pagan Gazzard]
## 22.4.5 - 2025-09-17
* Deduplicate dependencies [Matthew Yarmolinsky]
* Update `resin-cli-form` [Matthew Yarmolinsky]
* Update `resin-cli-visuals` [Matthew Yarmolinsky]
* Update `resin-doodles` [Matthew Yarmolinsky]
## 22.4.4 - 2025-09-15
* Update @balena/lint to 9.3.2 [Thodoris Greasidis]
* Update TypeScript to 5.9.2 [Thodoris Greasidis]
## 22.4.3 - 2025-09-10
* Replace `chalk` with `oclif` `ux.colorize` [Matthew Yarmolinsky]
* Drop dependency `chalk` [Matthew Yarmolinsky]
## 22.4.2 - 2025-09-10
* Deduplicate dependencies [Matthew Yarmolinsky]
* Fix minor typo in package.json [Matthew Yarmolinsky]
## 22.4.1 - 2025-09-02
* tests/ssh: Avoid an `as any` cast [Thodoris Greasidis]
## 22.4.0 - 2025-09-02
* config generate: Add support for the --initial-device-name flag [Thodoris Greasidis]
## 22.3.4 - 2025-09-02
* config generate: Deprecate the '--generate-device-api-key' flag [Thodoris Greasidis]
## 22.3.3 - 2025-09-02
* Deprecate 'balena os build-config' in favor of 'balena config generate' [Thodoris Greasidis]
## 22.3.2 - 2025-09-02
* os configure: Validate that the provided image & config file paths exist [Thodoris Greasidis]
## 22.3.1 - 2025-09-02
* os configure: Update the examples to use fleet slugs [Thodoris Greasidis]
* os configure: Deprecate the --version flag [Thodoris Greasidis]
## 22.3.0 - 2025-08-29
<details>
<summary> Add release_asset model [Otavio Jacobi] </summary>
> ### balena-sdk-22.1.0 - 2025-08-25
>
> * Add release_asset [Otavio Jacobi]
>
> ### balena-sdk-22.0.1 - 2025-08-20
>
> * Use NODE_OPTIONS=--no-experimental-strip-types for node 22.18 [Otavio Jacobi]
>
</details>
## 22.2.4 - 2025-08-09
* Fix uploading installer to github releases [Otavio Jacobi]
## 22.2.3 - 2025-08-08
* Update balena-sdk to v22 [Otavio Jacobi]
## 22.2.2 - 2025-08-06
* Remove no longer used repo from repo.yml [myarmolinsky]
## 22.2.1 - 2025-08-06
* Fix finalize step oclif promote command [Otavio Jacobi]
## 22.2.0 - 2025-08-05
* Upload built assets to s3 as standard oclif packages [Otavio Jacobi]
## 22.1.5 - 2025-08-01
* tests: Fix @balena/compose deep import in node 22.18.0 [Thodoris Greasidis]
## 22.1.4 - 2025-07-22
* Update oclif & @oclif/core deps and patches [Otavio Jacobi]
## 22.1.3 - 2025-07-21
* Stream json output on release list to avoid nodejs max string limit size [Otavio Jacobi]
## 22.1.2 - 2025-07-14
* Update build pipeline to use windows-2022 runner [Otavio Jacobi]
## 22.1.1 - 2025-06-19
* Deploy: Limit the submitted error_message of images that fail to build to 1000 characters [Thodoris Greasidis]
## 22.1.0 - 2025-06-09
* Add support for node 22 [Otavio Jacobi]
<details>
<summary> Bump etcher-sdk to v10.0.0 [Otavio Jacobi] </summary>
> ### etcher-sdk-10.0.0 - 2025-06-02
>
> * Drop support to node18 and add support to node 22 & 24 [Otavio Jacobi]
>
</details>
## 22.0.6 - 2025-06-02
* Remove `request` dependency [myarmolinsky]
* Replace `request` usage with `got` [myarmolinsky]
## 22.0.5 - 2025-05-29
<details>
<summary> Bump etcher-sdk to v9.1.4 [Otavio Jacobi] </summary>
> ### etcher-sdk-9.1.4 - 2025-05-29
>
> * Run `npm audit fix` which should only do non-breaking changes [Otavio Jacobi]
>
> ### etcher-sdk-9.1.3 - 2025-02-17
>
> * Embed config.json with a fixed timestamp to enable consistent checksums [Pagan Gazzard]
>
> ### etcher-sdk-9.1.2 - 2024-10-09
>
> * Update dependency unzip-stream to v0.3.2 [SECURITY] [Self-hosted Renovate Bot]
>
> ### etcher-sdk-9.1.1 - 2024-10-09
>
> * patch: add EXLOCK flag for windows [Talha Can Havadar]
>
</details>
## 22.0.4 - 2025-05-29
* tests: Replace request with got [Otavio Jacobi]
* deploy-legacy: Replace request with got [Otavio Jacobi]
## 22.0.3 - 2025-05-29
* Bump sentry to v9 [Otavio Jacobi]
## 22.0.2 - 2025-05-28
* Fix balena build to work with --nologs [Otavio Jacobi]
## 22.0.1 - 2025-05-28
* DeviceAPI: Move away from `request` in favor of BalenaSdk request [myarmolinsky]
* Update `nock` to 14.0.4 [myarmolinsky]
## 22.0.0 - 2025-05-26
* Add migration guide to v22 [Otavio Jacobi]
* Build standalone without pkg [Otavio Jacobi]
## 21.1.14 - 2025-05-21
<details>
<summary> Bump balena-preload to 18.0.4 [Otavio Jacobi] </summary>
> ### balena-preload-18.0.4 - 2025-05-21
>
> * Fix balena-preload pip deps [Otavio Jacobi]
>
</details>
## 21.1.13 - 2025-05-21
<details>
<summary> Bump balena-preload to 18.0.3 [Otavio Jacobi] </summary>
> ### balena-preload-18.0.3 - 2025-03-19
>
> * Update dependency sh to v1.14.3 [balena-renovate[bot]]
>
> ### balena-preload-18.0.2 - 2025-03-19
>
> * Update alpine Docker tag to v3.21 [balena-renovate[bot]]
>
</details>
## 21.1.12 - 2025-05-16
* Update @balena/compose dependency to fix error with build secrets. [Ken Bannister]
## 21.1.11 - 2025-05-06
* Fix typos in `os configure` and `config generate` help messages [myarmolinsky]
## 21.1.10 - 2025-05-05
* patch: fix windows signing [Edwin Joassart]
## 21.1.9 - 2025-04-07
<details>
<summary> Update balena-config-json to rely on the balena-image-fs helpers [Thodoris Greasidis] </summary>
> ### balena-config-json-4.2.7 - 2025-04-02
>
> * Fix getBootPartition always warning that the boot partitions were not found [Thodoris Greasidis]
>
> ### balena-config-json-4.2.6 - 2025-04-01
>
> * write: Allow undefined as a value for the deprecated type parameter [Thodoris Greasidis]
>
> <details>
> <summary> Use the balena-image-fs findPartition() helper to find the boot partition [Thodoris Greasidis] </summary>
>
>> #### balena-image-fs-7.5.0 - 2025-03-26
>>
>> * Add function to find a partition by name/label [Ken Bannister]
>>
>> #### balena-image-fs-7.4.1 - 2025-02-21
>>
>> * bump ext2fs to 4.2.4 [Ryan Cooke]
>>
>
> </details>
>
>
> ### balena-config-json-4.2.5 - 2025-03-26
>
> * Update @balena/lint to 9.1.4 [Thodoris Greasidis]
>
> ### balena-config-json-4.2.4 - 2025-03-26
>
> * Switch use ts-mocha instead of manually compiling the tests [Thodoris Greasidis]
> * Update TypeScript to 5.8.2 [Thodoris Greasidis]
>
> ### balena-config-json-4.2.3 - 2025-03-26
>
> * Update chai to v5 [balena-renovate[bot]]
>
> ### balena-image-fs-7.5.2 - 2025-04-02
>
> * Update dependency jsdoc-to-markdown to v9 [balena-renovate[bot]]
>
> ### balena-image-fs-7.5.1 - 2025-03-26
>
> * Update @balena/lint to v9 [Thodoris Greasidis]
> * Remove the no longer needed gpt detection helper [Thodoris Greasidis]
> * Update TypeScript to 5.8.2 [Thodoris Greasidis]
> * Drop the package-lock.json [Thodoris Greasidis]
>
</details>
## 21.1.8 - 2025-04-03
* Update actions/download-artifact action to v4.1.9 [balena-renovate[bot]]
## 21.1.7 - 2025-04-03
* Update actions/upload-artifact digest to ea165f8 [balena-renovate[bot]]
## 21.1.6 - 2025-04-03
* Update actions/setup-node digest to cdca736 [balena-renovate[bot]]
## 21.1.5 - 2025-04-03
* Update dockerode/docker-modem dependencies for fixes [Ken Bannister]
## 21.1.4 - 2025-04-02
* Add comment with secure boot signature file example for preload [Ken Bannister]
## 21.1.3 - 2025-03-28
* Fix device detail for open balena [Otavio Jacobi]
## 21.1.2 - 2025-03-27
* Deny preload for an image with secure boot enabled [Ken Bannister]
## 21.1.1 - 2025-03-26
<details>
<summary> Bump balena-sdk to 21.3.0 [Otavio Jacobi] </summary>
> ### balena-sdk-21.3.0 - 2025-03-26
>
> * device: add `changed_api_heartbeat_state_on__date` to typings [Otavio Jacobi]
>
> ### balena-sdk-21.2.2 - 2025-03-26
>
> * fix linting [Otavio Jacobi]
>
</details>
## 21.1.0 - 2025-03-12
* Add support for new requirement labels feature [Felipe Lalanne]
## 21.0.0 - 2025-03-11
* Drop support for OS versions <2.14.0 [myarmolinsky]
* api-key generate: Add required argument `expiryDate` [myarmolinsky]
* Update `balena-preload` to 18.0.1 [myarmolinsky]
* Add dependency `date-fns` [myarmolinsky]
* Update `balena-sdk` to 21.2.1 [myarmolinsky]
## 20.2.10 - 2025-03-10
* Update TypeScript to 5.8.2 [Thodoris Greasidis]
## 20.2.9 - 2025-02-26
* Fix CORS issue with X-Balena-Clie