LD
← All projectsLedger

Ledger Bitcoin app

Open-source Bitcoin application running on Ledger devices; the device OS is outside this repository.

BitcoinHardware walletsNormal
Repository coverage

374 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

101security candidates144second-pass queue345AI analyses
40commits · 30 days
95commits · 60 days
233commits · 180 days
370commits · 365 days
Backfill bands
Aug 5 → Feb 670 seen8 candidatesComplete
Feb 6 → Jun 6149 seen21 candidatesComplete
Jun 6 → Jul 623 seen0 candidatesComplete
Jul 6 → Aug 555 seen5 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

54/100 average clarity
22Strong · 80–100
117Adequate · 60–79
177Thin · 40–59
58Opaque · 0–39
6security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Salvatore Ingala23271205658
Ilya Artemov962696145
Aymeric Robert434063
github-actions[bot]17117046
Mathias BROUSSET16015038
José Luis Landabaso Díaz404067
iartemov-ledger201051
Cerberus Merlin101062
Michael Evans101073
Charles-Edouard de la Vergne101045
Analysis record

Published AI watches

Last scanned 52 minutes ago

Low 37 AI analysisMessage 58 · Thin
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Merge pull request #569 from LedgerHQ/client-fixes

This commit fixes how Ledger's Bitcoin client libraries convert older PSBTv0 transaction data into the newer PSBTv2 format that Ledger hardware wallets expect. The changes correct several field-handling bugs: the transaction locktime is no…

PSBTv0-to-v2 conversion bug fixesMissing input sequence defaulted to 0xffffffff (final sequence)Locktime assigned to transaction object instead of PSBT object
034b9d04by Salvatore Ingala+368−85911 files
No security note in commit
Informational 24 AI analysisMessage 65 · Adequate
LD LedgerLedger Bitcoin app BitcoinHardware wallets

python client: use default value for nSequence if not given

This commit fixes a small bug in the Python helper library that builds unsigned Bitcoin transactions from PSBT data. Previously, if a PSBT did not explicitly include a per-input sequence number, the code would crash with an assertion error…

Behavioral change in transaction serialization helperRemoves an assertion that could cause crashes on valid PSBTs missing optional sequence fieldsAligns implementation with BIP-370 and HWI upstream behavior
2bf0eed6by Salvatore Ingala+3−21 file
No security note in commit
Informational 15 AI analysisMessage 60 · Adequate
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Bump ledger_bitcoin_client version to 0.7.0

This commit only updates a version number from 0.6.2 to 0.7.0 in two Rust package files. It is a routine bookkeeping change because the public interface of the PSBT module changed, requiring a minor version bump under semantic versioning r…

cfb530b9by Salvatore Ingala+2−22 files
No security note in commit
Informational 15 AI analysisMessage 83 · Strong
LD LedgerLedger Bitcoin app BitcoinHardware wallets

js tests: drop a bogus required height locktime of 0 from test PSBTs

This commit only changes hardcoded test data used in JavaScript unit tests. It removes an invalid zero-value locktime field from two PSBT (Partially Signed Bitcoin Transaction) test fixtures so they conform to the BIP-370 standard. No prod…

ec992074by Salvatore Ingala+6−32 files
No security note in commit
Low 48 AI analysisMessage 95 · Strong
LD LedgerLedger Bitcoin app BitcoinHardware wallets

python client: fix three PSBTv2 defects in psbt.py

This commit fixes three bugs in a Python helper that converts modern PSBTv2 transaction data into the older PSBTv0 format used by Ledger hardware wallets. The bugs could silently corrupt the transaction's lock time and version fields durin…

Silent data corruption in transaction serialization (nLockTime, tx_version, fallback_locktime)PSBTv2 to PSBTv0 conversion path affectedPotential for producing an unsigned transaction that does not match the PSBT's declared fields
04ba9e7bby Salvatore Ingala+6−31 file
No security note in commit
Low 35 AI analysisMessage 73 · Adequate
LD LedgerLedger Bitcoin app BitcoinHardware wallets

rust client: build PSBTv2 maps from all pairs, not an enumerated list

This commit refactors how the Ledger Bitcoin app's Rust client converts a PSBT (Partially Signed Bitcoin Transaction) from version 0 to version 2. Previously, the code manually listed every PSBT field it knew how to serialize, which risked…

Refactor of PSBT serialization path used before signing on hardware walletRemoval of hand-maintained field enumeration that could omit or mis-serialize PSBT fieldsAddition of explicit error handling for PSBTs containing pre-existing v2 keys that conflict with v0 transaction data
a16bb101by Salvatore Ingala+344−8484 files
No security note in commit
Informational 15 AI analysisMessage 38 · Opaque
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Version bump to v2.5.1

This commit is a routine version bump from 2.5.0 to 2.5.1 for the Ledger Bitcoin app. It only updates the changelog and Makefile version number. No code changes are present in the diff, and no security fixes or vulnerabilities are describe…

e7618c98by Ilya Artemov+5−42 files
No security note in commit
Low 27 AI analysisMessage 73 · Adequate
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Merge pull request #546 from LedgerHQ/simplify_ast

This commit is a large internal refactoring of the Ledger Bitcoin app's wallet-policy parser. It replaces compact 'relative pointers' with ordinary memory pointers in the abstract syntax tree (AST) used to represent Bitcoin wallet descript…

Large-scale memory-layout refactoring of security-critical parserRemoval of custom relative-pointer abstraction, eliminating a class of offset-calculation bugsIncrease in policy buffer size limits and key-info length limits
efee9c25by Salvatore Ingala+412−55812 files
No security note in commit
Low 37 AI analysisMessage 85 · Strong
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Increase MAX_POLICY_KEY_INFO_LEN to the actual maximum; nits from PR review

This commit fixes a size limit in the Ledger Bitcoin app that was too small. The app uses this limit when registering Bitcoin wallet policies (descriptions of how to spend coins). The old limit underestimated how long a key description can…

Buffer/limit size correction for key origin infoRemoval of unused ledger_assert.h includeComment-only updates to serialized wallet policy length bounds
afd42b6dby Salvatore Ingala+5−61 file
No security note in commit
Low 32 AI analysisMessage 68 · Adequate
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Merge pull request #556 from LedgerHQ/mem_opt

This commit removes an old memory workaround in Ledger's Bitcoin app. Previously, a large data structure used during transaction signing was stored in global memory instead of on the function's stack, because some Ledger devices were thoug…

Memory allocation model changed for high-risk signing pathStack-size build-time guard changed for Nano XGlobal cache removed; signing state now lives on stack
3aa53954by Salvatore Ingala+9−275 files
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Merge pull request #558 from LedgerHQ/embit_private

This commit simply renames an internal Python package from `embit` to `_embit` (a common convention indicating it is private/implementation detail) and updates all import statements accordingly. There is no functional code change and no se…

d438dd03by Salvatore Ingala+7−731 files
No security note in commit
Moderate 61 AI analysisMessage 73 · Adequate
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Merge pull request #559 from LedgerHQ/parse_unhardened

This update fixes a boundary bug in how the Ledger Bitcoin app parses wallet policies that use multi-path key expressions like /<M;N>/*. The app was supposed to reject hardened (high-security) derivation indexes, but it incorrectly allowed…

Boundary condition error: hardened derivation index 0x80000000 accepted as unhardenedWallet policy parser validation bypass in multi-path key expressionsRegression unit test added for hardened boundary rejection
96e999feby Salvatore Ingala+49−298 files
No security note in commit
Informational 15 AI analysisMessage 60 · Adequate
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Label unsigned constants in constants.h

This commit only adds 'U' suffixes to numeric constants in a header file and makes a few matching type adjustments in C source files so the code still compiles cleanly with strict compiler warnings. It is a code-quality cleanup, not a secu…

e1fcefb4by Salvatore Ingala+27−276 files
No security note in commit
Low 25 AI analysisMessage 45 · Thin
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Pin @bitcoinerlab/descriptors to v3.1.7

This commit changes a JavaScript package dependency from allowing any compatible 3.x version of @bitcoinerlab/descriptors to a fixed, exact version (3.1.7). Pinning a dependency is often done to prevent unexpected future changes, but the c…

Dependency version pinningNo explicit security claim in commit messageNo code-level security fix visible in diff
6262d104by Salvatore Ingala+101−122 files
No security note in commit
Moderate 60 AI analysisMessage 73 · Adequate
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Reject 0x80000000 as an unhardened step in wallet policy parsing

This commit fixes a boundary-check bug in how the Ledger Bitcoin app parses wallet policies (BIP-388). The app was supposed to reject any hardened derivation step in a specific range expression, but it allowed the value 2147483648 (0x80000…

Off-by-one boundary check in BIP-388 wallet policy parsingForbidden hardened derivation index accepted as unhardenedPotential failure or incorrect behavior in address derivation and signing
44f98a0eby Salvatore Ingala+2−21 file
Vendor flagged security relevance
Low 47 AI analysisMessage 60 · Adequate
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Add regression test for unhardened derivation step parsing

This commit only adds a new regression test to the Bitcoin app's test suite. The test checks that wallet policy key expressions reject a specific boundary value (2147483648, the first 'hardened' child index) where only 'unhardened' values …

Regression test for hardened/unhardened derivation index boundary parsingCommit message states older version accepted 0x80000000 as unhardenedNo production code change in this commit
ce2c25c6by Salvatore Ingala+20−01 file
No security note in commit
Informational 15 AI analysisMessage 65 · Adequate
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Mark vendored embit clone 'private' in python client

This commit simply renames a vendored (internally bundled) copy of the 'embit' library inside the Python client from `embit` to `_embit`. The leading underscore is a Python convention meaning 'private/internal use only.' No code behavior c…

141e88f2by Salvatore Ingala+7−731 files
No security note in commit
Low 33 AI analysisMessage 73 · Adequate
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Delete the hash context before return in compute_rand_i_j

This commit adds a memory wipe of a cryptographic hash context after it is used to derive a secret random value in the Ledger Bitcoin app's MuSig multi-signature code. The change is described by the developer as a 'defense-in-depth' measur…

explicit_bzero added to clear sensitive cryptographic contextMuSig signing randomness treated as sensitive after partial signatures are knownDefense-in-depth memory hygiene patch
121a18ceby Salvatore Ingala+3−01 file
Vendor flagged security relevance
Moderate 67 AI analysisMessage 65 · Adequate
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Harden count_distinct_keys_info to correctly count the used keys

This commit fixes a bug in Ledger's Bitcoin app that could let a wallet policy slip through registration even when it contained unused or out-of-range public keys. The old code simply looked at the highest key index referenced in the walle…

Logic flaw in wallet policy validationPotential bypass of internal-key ownership check via unused key slotsBounds checking added for key indices
d94c51a2by Salvatore Ingala+52−124 files
Vendor flagged security relevance
Low 44 AI analysisMessage 73 · Adequate
LD LedgerLedger Bitcoin app BitcoinHardware wallets

Reject registering wallet policies with pubkeys not on the curve

This commit adds an early safety check in the Ledger Bitcoin app. Before registering a new wallet policy, the app now verifies that each public key is a valid point on the Bitcoin elliptic curve. Previously, an invalid public key would onl…

Input validation added for cryptographic public key pointsInvalid curve points now rejected at wallet registration time rather than deferred to address derivationUse of standard status word SW_INCORRECT_DATA for malformed input
d0c47c7aby Salvatore Ingala+9−01 file
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

AI review queuedA type conversion fixby Ilya Artemov · 286c48c7 · Mar 5, 2026 · 1 fileMessage 28 · OpaqueLow 41Details
Commit message · Ilya Artemov

A type conversion fix

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Low 41/100

This commit fixes a type mismatch in the Ledger Bitcoin app's swap verification code. The lengths of Bitcoin addresses were being stored in small signed/char variables instead of the proper unsigned size type. For extremely long strings this could in theory cause the comparison to misbehave, but in practice Bitcoin addresses are short enough that the bug is unlikely to be exploitable. It is a hardening fix rather than a clear vulnerability.

AI review queuedA small fix with stack variables assignmentby Ilya Artemov · 618965c1 · Mar 5, 2026 · 1 fileMessage 45 · ThinLow 36Details
Commit message · Ilya Artemov

A small fix with stack variables assignment

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 36/100

This commit fixes a small coding issue in the Ledger Bitcoin app's transaction-signing code. Two local variables that previously had no starting value are now initialized to zero. In some code paths, these variables could have been used before being set, which might lead to incorrect checks when validating special 'OP_RETURN' outputs used in cryptocurrency swaps. The change is defensive and reduces the risk of unpredictable behavior, but the commit message does not claim it fixes an active security bug.

AI review queuedRenaming all API in io_ext to ioe_.*() + small io refactoringby Ilya Artemov · 298d31b4 · Mar 5, 2026 · 6 filesMessage 50 · ThinInformational 23Details
Commit message · Ilya Artemov

Renaming all API in io_ext to ioe_.*() + small io refactoring

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 23/100

This commit is mostly a renaming exercise: functions that started with 'io_' in the Ledger Bitcoin app now start with 'ioe_' to avoid clashing with the operating system's own 'io_' functions. Alongside the rename, one small logic fix was made in the response-buffering code. Previously, when adding response data that was too large, the code could pass a negative length to a recursive call, which is unsafe. The new code computes how much space remains, copies only that amount, and then marks the response as too long. This is a defensive improvement, not an active vulnerability fix for a known exploit.

AI review queuedAvoid relative imports in test_utils scriptsby Salvatore Ingala · 4acda080 · Mar 5, 2026 · 6 filesMessage 80 · StrongInformational 15Details
Commit message · Salvatore Ingala

Avoid relative imports in test_utils scripts

We add the root of the repo to the sys.path, so that both
bitcoin_client and test_utils are available to the scripts in the
test_utils folder.

This makes sure that the scripts work regardless of the path of
the script importing them.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only changes how test helper scripts locate and import other test code. It makes the test utilities work regardless of which folder a script is run from. There is no change to the actual Ledger Bitcoin app, wallet logic, or anything end users interact with.

AI review queuedNits from PR review (comment improvements)by Salvatore Ingala · 9db40d00 · Mar 3, 2026 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · Salvatore Ingala

Nits from PR review (comment improvements)

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only changes code comments to make them clearer and more concise. No actual program logic, checks, or behavior were modified. It is not a security fix.

AI review queuedRemove duplicated configby Salvatore Ingala · f2bbaba4 · Mar 2, 2026 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · Salvatore Ingala

Remove duplicated config

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit removes one duplicated line from a code formatting configuration file (.clang-format). It does not change any program code, security logic, or behavior of the Ledger Bitcoin app. There is no security relevance.

AI review queuedAdd sanity checks on older(n)by Salvatore Ingala · 4d97a4a8 · Mar 2, 2026 · 2 filesMessage 45 · ThinModerate 62Details
Commit message · Salvatore Ingala

Add sanity checks on older(n)

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 62/100

This commit adds safety checks to the Ledger Bitcoin app so that the 'older(n)' time-lock feature can only use values that actually have meaning under Bitcoin's consensus rules. Before this fix, a user could be shown a wallet policy with a value like older(65536), which looks like a real time-lock but behaves like no time-lock at all. That could trick a user into believing funds are locked when they are not. The patch rejects such misleading values.

AI review queuedAdd generic function to traverse a descriptor templateby Salvatore Ingala · 6d00827d · Mar 2, 2026 · 3 filesMessage 50 · ThinInformational 12Details
Commit message · Salvatore Ingala

Add generic function to traverse a descriptor template

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit adds a new internal utility function that walks through Bitcoin descriptor/miniscript trees node by node, plus unit tests. It does not change any existing behavior or fix a known bug; it simply provides a generic traversal helper that other code can use later. There is no indication this is a security patch.

AI review queuedAdd failing test for hardened timelocksby Salvatore Ingala · 0d4927e3 · Mar 2, 2026 · 1 fileMessage 55 · ThinInformational 12Details
Commit message · Salvatore Ingala

Add failing test for hardened timelocks

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit only adds a new automated test file. It does not change the actual Ledger Bitcoin app code. The test checks that the app correctly rejects wallet policies containing relative timelock values that are outside the allowed range. Because no application code is modified, this commit by itself does not introduce or fix a security vulnerability. It is a test-only change that documents expected behavior for an existing validation rule.

AI review queuedAdd test to make sure that extreme valid values of n are accepted in older(n)by Salvatore Ingala · b001a0cd · Mar 2, 2026 · 2 filesMessage 60 · AdequateInformational 12Details
Commit message · Salvatore Ingala

Add test to make sure that extreme valid values of n are accepted in older(n)

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit only adds a new automated test and slightly modifies existing test helper functions. It does not change the actual Ledger Bitcoin app code that users run. The new test checks that the app accepts certain extreme but valid relative timelock values when registering a wallet policy. There is no fix or behavior change to the secure firmware itself.

AI review queuedFixing count_m variable use: a non-regression unit testby Ilya Artemov · e20c3a5f · Mar 2, 2026 · 1 fileMessage 60 · AdequateInformational 12Details
Commit message · Ilya Artemov

Fixing count_m variable use: a non-regression unit test

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit only adds a new unit test to the Ledger Bitcoin app. It does not change any production code. The test checks that a specific type of Bitcoin Miniscript expression is correctly classified as not 'non-malleable' (NONMAL). Because no actual wallet or signing logic is modified, this change by itself does not introduce or fix a live security vulnerability.

AI review queuedFixing count_m variable useby Ilya Artemov · 3556044d · Mar 2, 2026 · 1 fileMessage 35 · OpaqueModerate 59Details
Commit message · Ilya Artemov

Fixing count_m variable use

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Moderate 59/100

This commit fixes a logic bug in the Ledger Bitcoin app's Miniscript policy analyzer. The code that decides whether a Bitcoin spending policy is 'm' (a technical property used during transaction signing) was checking the wrong counter. It now also requires that all sub-policies satisfy the 'm' property, not just the 'e' property. This could have caused the device to incorrectly approve or classify a Bitcoin transaction policy, potentially leading to wrong security assumptions during wallet operations.

AI review queuedRemoving unused key_expression_index variableby Ilya Artemov · 6c3c40b9 · Mar 2, 2026 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Ilya Artemov

Removing unused key_expression_index variable

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit simply removes an unused local variable named key_expression_index from a single function. It does not change program behavior, fix a bug, or alter any security logic. There is no security relevance.

AI review queuedFix partial_data_len=0 caseby Ilya Artemov · 8ff2b620 · Feb 27, 2026 · 1 fileMessage 35 · OpaqueLow 46Details
Commit message · Ilya Artemov

Fix partial_data_len=0 case

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Low 46/100

This commit fixes a missing check in the Ledger Bitcoin app. A function that streams a transaction 'preimage' (a piece of data used to authorize Bitcoin transactions) did not reject the case where the caller asks to stream zero bytes. The fix now returns an error if the requested chunk size is zero, preventing possible downstream confusion or unsafe behavior. The change is small and defensive; the commit message does not describe any active exploit or security incident.

AI review queuedZeroing out nonce-related stack buffers in musig partby Ilya Artemov · 78bac779 · Feb 27, 2026 · 2 filesMessage 50 · ThinModerate 58Details
Commit message · Ilya Artemov

Zeroing out nonce-related stack buffers in musig part

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: broader security terminologysecond-pass: security-sensitive path
AI analysis · Moderate 58/100

This commit is a defensive cleanup for the MuSig2 multi-signature code in Ledger's Bitcoin app. It makes sure that temporary memory holding secret nonce values and randomness is wiped clean even when things go wrong, not just on the happy path. The change reduces the chance that sensitive signing material could be left behind in device memory after an error, but it does not appear to fix an active remote exploit by itself.

AI review queuedFixing call_get_merkleized_map_value() return value checkingby Ilya Artemov · 70dcdf0c · Feb 27, 2026 · 3 filesMessage 50 · ThinModerate 61Details
Commit message · Ilya Artemov

Fixing call_get_merkleized_map_value() return value checking

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 61/100

This commit fixes a bug in the Ledger Bitcoin app where several functions checked for only one specific error value (-1) instead of treating any negative number as a failure. If the underlying helper can return other negative error codes, the old code would have ignored them, potentially causing the app to keep processing with invalid or missing data. The patch makes the error handling more robust by rejecting any negative return value.

AI review queuedCodespell doc fixesby Ilya Artemov · 92048064 · Feb 27, 2026 · 5 filesMessage 28 · OpaqueInformational 15Details
Commit message · Ilya Artemov

Codespell doc fixes

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
signing or wallet pathdocumentation-only discountsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only fixes spelling mistakes and minor formatting in documentation files. There are no code changes, no security fixes, and no behavior changes. It is purely a cleanup of typos like 'comand' to 'command' and 'ore' to 'or'.

AI review queuedFactorizing io functionsby Ilya Artemov · 7504866f · Feb 26, 2026 · 3 filesMessage 28 · OpaqueInformational 15Details
Commit message · Ilya Artemov

Factorizing io functions

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a routine code cleanup that renames and consolidates helper functions used to send response messages from the Ledger Bitcoin app. It removes a few redundant wrapper functions and updates the documentation comments. There is no indication of a security fix or behavior change.

AI review queuedmain, io, swap standardizationby Ilya Artemov · 29eb1e4d · Feb 26, 2026 · 18 filesMessage 35 · OpaqueLow 32Details
Commit message · Ilya Artemov

main, io, swap standardization

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Low 32/100

This commit refactors the Ledger Bitcoin app to use the newer Ledger SDK 'standard app' framework for main I/O loops and swap (exchange) integration. It removes a lot of custom boilerplate code and replaces it with SDK-provided equivalents. The change also enables the SWAP feature by default in the Makefile. There is no direct evidence in the diff of a security vulnerability being fixed; it appears to be a modernization and code-cleanup change. However, because it touches core app lifecycle, I/O, and swap handling code, any mistake in the transition could affect app stability or swap security.

AI review queuedreusable_codeql_checksby Ilya Artemov · 5519ed10 · Feb 17, 2026 · 1 fileMessage 18 · OpaqueInformational 15Details
Commit message · Ilya Artemov

reusable_codeql_checks

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit only changes the project's GitHub Actions workflow file. It replaces an inline CodeQL security-scanning job with a call to a shared, reusable workflow maintained by Ledger. No application source code, cryptographic logic, or user-facing behavior is modified. There is no direct security vulnerability in this change.

AI review queuedUsing standard UT workflowby Ilya Artemov · 226f50f9 · Feb 17, 2026 · 2 filesMessage 35 · OpaqueInformational 15Details
Commit message · Ilya Artemov

Using standard UT workflow

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit only reorganizes how automated unit tests are run in the project's GitHub CI pipeline. It removes the inline unit-test job from one workflow file and replaces it with a call to a shared Ledger reusable workflow. No application code, cryptographic logic, or user-facing behavior was changed. There is no security-relevant change visible in the diff.

AI review queuedadd deployment instructionsby Mathias BROUSSET · a4503abc · Jan 14, 2026 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Mathias BROUSSET

add deployment instructions

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit only adds documentation to the README explaining how maintainers should create release tags to trigger automatic publishing of the Python, JavaScript, and Rust client packages. No code, configuration, or security behavior was changed.

AI review queuedTaking remarks into accountby Mathias BROUSSET · a35b50f2 · Jan 13, 2026 · 4 filesMessage 35 · OpaqueInformational 15Details
Commit message · Mathias BROUSSET

Taking remarks into account

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a routine packaging and publishing cleanup for the JavaScript client. It renames the npm package from 'ledger-bitcoin' to '@ledgerhq/ledger-bitcoin', updates the README and package-lock.json accordingly, and moves the JS client deployment from a separate workflow triggered on pushes to the 'develop' branch into the main CI workflow triggered only by tags starting with 'jsclient-'. There is no change to the Bitcoin app firmware, cryptographic code, or any user-facing security behavior.

AI review queued2.4.5 version bumpby Ilya Artemov · 7bb127f3 · Jan 8, 2026 · 2 filesMessage 38 · OpaqueInformational 15Details
Commit message · Ilya Artemov

2.4.5 version bump

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a routine version bump from 2.4.4 to 2.4.5. It only updates the version number in the Makefile and adds a changelog entry describing unrelated feature and bug-fix changes. There is no code change in this commit itself, and nothing in the diff indicates a security vulnerability or security fix.

AI review queued[auto-update] Update Ragger snapshotsby github-actions[bot] · 44e2bf8c · Jan 8, 2026 · 24 filesMessage 45 · ThinInformational 15Details
Commit message · github-actions[bot]

[auto-update] Update Ragger snapshots

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: unusually broad change
AI analysis · Informational 15/100

This commit only updates test snapshot images used by an automated testing framework called Ragger. These are reference screenshots of Ledger device screens during tests. No application code, firmware, or user-facing behavior was changed, so this has no security relevance on its own.