npm / @ledgerhq/device-management-kit
@ledgerhq/device-management-kit
What changed in @ledgerhq/device-management-kit 0.9 to 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-20.
10 breaking1 security33 new APIs and options14 behavior and defaults18 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@ledgerhq/device-management-kit 165 changes
Breaking changes 9
The default mock server base URL is now the hosted server instead of a local server.
Exposes the isDashboardName utility.
Removes KeyValueStorage from the public API.
Request signal support was removed from DmkNetworkClient.
Detects onboarding from GetOsVersionCommand and returns Left(DeviceNotOnboardedError) for unseeded devices; OpenAppDeviceAction inherits the check from its child machine.
Constructing CommandResultFactory with InvalidGetFirmwareMetadataResponseError now fails at the type level; non-command flows should use DmkResultFactory.
Battery response parsing failures now use InvalidResponseFormatError instead of battery-specific command result errors.
Changes the device action return type to use CallTaskInAppDA types instead of SendCommandInAppDA types.
Renames GetCustomImageSizeCommand to GetBackgroundImageSizeCommand.
New APIs and options 28
Adds a method to get the firmware distribution salt at runtime.
Adds a method to set the firmware distribution salt at runtime.
Adds a runtime API to override the secure channel WebSocket base URL.
Exposes parsed endorsement, seed word, and onboarding information from secure element flags returned by the command.
Exposes seed word counts as named numeric values while retaining the public union type; reserved encodings remain undefined.
Adds a variant that strips prerelease and build tags before comparing versions, so an app reporting a release candidate of the minimum still passes the check.
Exports the task so consumers can drive a secure channel operation from their own device actions.
Exports a common lookup mapping the numeric langId to the Language type.
Adds support for OS update flows, including MCU firmware provider mapping, an AllowInstallFirmware user interaction, and secure-channel error mappers for firmware update and MCU flash.
Exports the event type for consumers driving secure channel operations from their own device actions.
Adds a user interaction signal for cases where the user must grant consent on the device when restoring data after an OS update.
Adds an action that waits for an app and version.
Adds an ApplicationChecker builder method for app-name aware constraints.
Adds an ApplicationChecker builder method for app-name aware constraints.
Adds an ApplicationChecker builder method for device-model constraints.
Adds the Delete command.
Adds the InvalidArgumentError error.
Adds an action to install a language package on a device.
A backup app storage task is available for developers to use.
An HTTP client abstraction is available; the manager API data source now uses it.
A generic base result abstraction is introduced for results beyond CommandResult.
A KeyValueStorage contract is available for developers to implement or use.
Adds allowMissingApplication parameters to OpenAppDA for test purposes.
Adds the AllowCustomLockScreen type for Custom Lock Screen operations.
Adds the ConfirmCustomLockScreen type for Custom Lock Screen operations.
Adds device actions for Custom Lock Screen operations.
A second set of Bluetooth identifiers is added for Nano Gen5.
The logger factory is exported from DMK, making it available to developers.
Behavior and default changes 12
When the salt changes, open device sessions forget their cached firmware update context, so the next device action fetches the latest firmware again with the new salt.
Changes the default mock server base URL port from 8080 to 9752 to avoid conflicts with other local development servers.
Adds request, response, and session id data to the device session APDU log, enabling consumers to reconstruct exchanges without parsing log strings.
Non-onboarded devices pass the device status check by default; stricter consumers can opt out.
Base64 validation is portable across runtimes and tolerates MIME-style whitespace, including line breaks.
Timeout handling is now portable and implemented with AbortController.
Persists firmwareVersion with metadata and isSecureConnectionAllowed on success in a ready state, allowing consumers to read onboarding without an extra command.
Tracks the current running app from the device session state to support app-name aware constraints.
Repeated state logs are deduplicated, terminal states are logged, and debug output includes intermediateValue.
Adds intermediate steps for OS device actions.
APDUs, Commands and Device Actions are processed using the new Intent Queue.
APDU exchange logging moves to the transport layer for more accurate timing.
Fixes and other changes 16
The secure-element flags state byte 0x00 now maps to OnboardingState.WelcomeScreen1 instead of OnboardingState.Unknown.
Adds the missing onboarding state at byte value 0x06.
Uses the validated polling interval as-is instead of doubling it; the NANO_S minimum interval remains handled in getValidPollingInterval.
Uses WaitForAppAndVersionDeviceAction.
Handles the case where no update is available when fetching the latest firmware from the Manager API.
Base64 decoding is portable across runtimes and tolerates MIME-style whitespace, including line breaks.
Determines the current app before fetching the OS version; it sends GetOsVersionCommand only on the dashboard and treats a device running an application as onboarded.
Makes isDashboardName null-safe.
Replaces hardcoded "BOLOS" strings with the exported constant.
Fixes out of memory prediction.
Builds and sends request URLs as plain strings, preventing affected React Native versions from appending a stray slash to the last query parameter and causing HTTP 400 responses.
Improves React Native compatibility by serializing query parameters manually and guarding optional Web globals that may be missing.
Base64 encoding is portable across runtimes, using browser APIs, global APIs, or Buffer as available.
Returns null on error to avoid an unhandled promise rejection in an RxJS subscription.
The refresher no longer pings while an intent is being processed.
DevicePinger is unsubscribed from EventDispatcher when a device session closes.
@ledgerhq/device-management-kit 0.131 changes
Breaking changes 1
Replaces TransportDeviceModel.blockSize with a dynamic method whose result depends on firmware version, allowing available memory prediction to be handled correctly for Ledger Nano S.
@ledgerhq/device-management-kit 0.121 changes
New APIs and options 1
Adds the UnsupportedApplicationDAError error type for developers to use when handling errors.
@ledgerhq/device-management-kit 0.114 changes
Security 1
Device ID is now included in secure channel intermediate values.
New APIs and options 1
All command objects now have a name attribute, allowing developers to identify commands.
Behavior and default changes 1
The connected device name now uses the BLE advertised name.
Fixes and other changes 1
All sessions for the same device are cleaned up when the device disconnects.
@ledgerhq/device-management-kit 0.102 changes
New APIs and options 2
Adds InvalidGetFirmwareMetadataResponseError for invalid firmware metadata responses.
Adds a reconnect use case.
@ledgerhq/device-management-kit 0.93 changes
New APIs and options 1
Adds a user interaction for verifying a safe address.
Behavior and default changes 1
Adds logs to the device session sendApdu command.
Fixes and other changes 1
Data is no longer logged when it is undefined.