KX
← All projectsKrux

Krux

Open-source signing firmware for Kendryte K210 devices.

BitcoinHardware walletsNormal
Repository coverage

223 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.

58security candidates41second-pass queue216AI analyses
5commits · 30 days
41commits · 60 days
97commits · 180 days
200commits · 365 days
Backfill bands
Aug 5 → Feb 6116 seen6 candidatesComplete
Feb 6 → Jun 639 seen3 candidatesComplete
Jun 6 → Jul 622 seen1 candidatesComplete
Jul 6 → Aug 538 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.

65/100 average clarity
60Strong · 80–100
66Adequate · 60–79
81Thin · 40–59
16Opaque · 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.
Odudex291429272
odudex902989159
Tads361036063
qlrd18216082
kdmukai424066
tadeubas414038
kkdao12012083
Jean Do1006072
Naman015505060
bitcoisas505066
Naman Gupta202079
SatsCzar202062
Analysis record

Published AI watches

Last scanned 1 hour, 2 minutes ago

Moderate 66 AI analysisMessage 45 · Thin
KX KruxKrux BitcoinHardware wallets

Merge branch 'release-26.08.0'

This is a routine release merge for Krux firmware (version 26.08.0). It includes several genuine security fixes: a heap buffer overflow in camera-based entropy generation for a discontinued device, stricter fee calculation when signing Bit…

Heap buffer overflow fix in camera entropy module (discontinued Maix Bit only)PSBT fee calculation stricter checks and unverified-input-amount warningStored mnemonic file corruption now preserved instead of overwritten
be5eda28by odudex+4335−3028123 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 40 · Thin
KX KruxKrux BitcoinHardware wallets

docs: update CHANGELOG

This commit only updates three date lines in the CHANGELOG.md file, changing '2025' to '2026' for three release entries. It does not modify any source code, build scripts, or documentation with security implications. The change is purely c…

ec058d86by odudex+3−31 file
No security note in commit
Moderate 66 AI analysisMessage 85 · Strong
KX KruxKrux BitcoinHardware wallets

fix: bind BBQr parts to the first part of the stream

This commit fixes Krux's QR code scanner so that when it reads a series of animated BBQr codes, every later frame must match the encoding and file type announced by the first frame, must agree on the total number of frames, and cannot over…

Input validation added for multi-part BBQr streamsMemory exhaustion mitigation via accumulated payload capAnti-splicing: parts must agree with first part's encoding and file type
0b3e01b7by odudex+86−13 files
No security note in commit
Informational 15 AI analysisMessage 40 · Thin
KX KruxKrux BitcoinHardware wallets

docs: update CHANGELOG

This commit only updates the project's CHANGELOG.md file. It adds text describing several bug fixes and improvements that were apparently made in prior code changes, but no actual code is changed in this commit. By itself, this documentati…

4c05cefbby odudex+9−11 file
No security note in commit
Informational 0 AI analysisMessage 40 · Thin
KX KruxKrux BitcoinHardware wallets

chore(Maixpy): bump cUR

This commit appears to be a routine version bump of a component called 'cUR' inside the MaixPy firmware build. No actual code changes are visible in the provided diff, and the commit message gives no indication of a security fix or vulnera…

74d6ed40by odudex+1−11 file
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
KX KruxKrux BitcoinHardware wallets

chore: bump version to 26.08.0

This commit is a routine version bump from 26.04.0 to 26.08.0. It only updates version strings in documentation, build files, and source metadata. No code behavior changes. The changelog text mentions a previously fixed heap buffer overflo…

Changelog references a prior heap buffer overflow in Shannon entropy module (camera frame copy into fixed 320x240 RGB565 buffer)No actual code or security fix present in this commit
dea991dfby odudex+5−55 files
Vendor flagged security relevance
Informational 2 AI analysisMessage 57 · Thin
KX KruxKrux BitcoinHardware wallets

chore: bump MaixPy with updated glyphs

This commit appears to update a submodule or dependency called MaixPy to a newer version that includes updated visual glyphs (small icons/symbols). The title and message describe it as a routine maintenance chore, not a security fix. No ac…

a9329228by odudex+1−11 file
No security note in commit
Informational 15 AI analysisMessage 85 · Strong
KX KruxKrux BitcoinHardware wallets

fix: register embed_fire in the bdftokff device list

This commit fixes a build-time font-generation script so that a newly supported device ('embed_fire') is recognized. Before the fix, the script printed an error but still produced the same font files. There is no security issue.

f15308e4by odudex+1−01 file
No security note in commit
Moderate 63 AI analysisMessage 57 · Thin
KX KruxKrux BitcoinHardware wallets

docs: add PSBT input amount fixes to CHANGELOG

This commit only updates the project's CHANGELOG.md to document earlier fixes related to PSBT (Partially Signed Bitcoin Transaction) fee and amount handling. It does not contain any code changes itself. The changelog entries describe secur…

Changelog documents prior PSBT fee/amount validation fixesMentions insufficient coordinator data as a security concernNo actual code or test changes in this commit
48920c31by odudex+4−01 file
Vendor flagged security relevance
High 78 AI analysisMessage 95 · Strong
KX KruxKrux BitcoinHardware wallets

fix: verify PSBT input amounts before showing the fee

This commit fixes a security flaw in Krux, a Bitcoin signing device. Before the fix, an attacker could trick the device into showing a low transaction fee on screen while actually signing a much higher fee. The fix makes the device verify …

Fixes fee-display/sighash amount mismatchAdds prevout txid hash verification for non_witness_utxoMandates non_witness_utxo for legacy inputs
fc808059by odudex+353−122 files
Vendor flagged security relevance
Moderate 66 AI analysisMessage 85 · Strong
KX KruxKrux BitcoinHardware wallets

fix: reject a PSBT whose outputs exceed its inputs

This commit fixes a bug in Krux, a Bitcoin signing device, where a malformed transaction whose outputs spend more than its inputs could be loaded and shown to the user. Normally such a transaction is impossible on the Bitcoin network, but …

Input validation gap in PSBT parsingUI rendering bug masking invalid transaction economicsPotential social-engineering / user-confusion attack
d6813d88by odudex+52−02 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 50 · Thin
KX KruxKrux BitcoinHardware wallets

i18n: translate the unverified input amounts warning

This commit only adds translations for two existing warning messages in the Krux Bitcoin hardware wallet software. It does not change any code logic, security behavior, or fix any vulnerability. The messages warn users that displayed fees …

bdaed1a1by odudex+46−023 files
No security note in commit
Moderate 62 AI analysisMessage 90 · Strong
KX KruxKrux BitcoinHardware wallets

feat: warn when PSBT input amounts cannot be verified

This commit adds a warning screen to Krux, a hardware signing device, when it is asked to sign a multi-input Bitcoin transaction where the amounts of some inputs cannot be independently verified. The risk is that a malicious transaction co…

New user-facing warning for unverified multi-input SegWit amountsDetection logic tied to BIP143 signature semantics and inp.is_verifiedDoes not enforce previous-transaction inclusion; user can still proceed
518b3314by odudex+159−24 files
Vendor flagged security relevance
Low 27 AI analysisMessage 85 · Strong
KX KruxKrux BitcoinHardware wallets

fix: render negative amounts correctly in format_btc

This commit fixes a display bug in how Krux formats negative Bitcoin amounts. Previously, a value like -1000 satoshis was shown incorrectly as roughly -1.99 bitcoins instead of -0.00001 bitcoins, because the code split the number before ha…

UI/display bug in financial amount renderingNo cryptographic, authorization, or memory-safety changesNo input validation, parsing, or serialization of untrusted data changed
c7e48ae1by odudex+22−12 files
No security note in commit
Moderate 53 AI analysisMessage 62 · Adequate
KX KruxKrux BitcoinHardware wallets

docs: add Maix Bit removal and Shannon calc fix to CHANGELOG

This commit is a documentation update to the project's changelog. It describes two security-related changes that were apparently made in earlier code: a heap buffer overflow in the camera-based entropy (randomness) module that could only b…

Heap buffer overflow in camera entropy / Shannon entropy moduleOut-of-bounds write of 49,152 bytes on discontinued Maix Bit deviceRemoval of deterministic os.urandom() PRNG from firmware
b0a7357eby odudex+7−01 file
Vendor flagged security relevance
Moderate 55 AI analysisMessage 82 · Strong
KX KruxKrux BitcoinHardware wallets

chore: bump MaixPy with Shannon changes and RNG removal

This commit updates a bundled firmware component called MaixPy. The commit message says it fixes a 'Shannon heap overflow,' removes an unused random-number binding, and drops support for one hardware variant (Maix Bit). A heap overflow is …

Commit message explicitly mentions fixing a heap overflowRemoval of an unused cryptographic/randomness binding (os.urandom)Submodule bump only; no source-level patch visible in this commit
5c4ece9aby odudex+1−11 file
Vendor flagged security relevance
Moderate 52 AI analysisMessage 85 · Strong
KX KruxKrux BitcoinHardware wallets

fix: remove Maix Bit and CIF camera support

This commit removes support for an old, discontinued hardware device called the Maix Bit from the Krux Bitcoin wallet firmware. The commit message says the Maix Bit's camera resolution (CIF) was the only one that fed frames larger than QVG…

Buffer overflow / scratch buffer overflow claimed in commit message (49,152 bytes)Removal of vulnerable hardware code path rather than hardening the entropy moduleDiscontinuation of affected device reduces real-world exposure
8090ac73by odudex+11−1279 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 90 · Strong
KX KruxKrux BitcoinHardware wallets

refactor: use native uUR on tests and simulator

This commit is a routine engineering cleanup: it removes a Python-only compatibility layer (a 'shim') used for testing and simulation, and makes the test environment use the same C-language UR encoder/decoder module that the real hardware …

2fe2f5f5by odudex+108−24919 files
No security note in commit
Low 34 AI analysisMessage 62 · Adequate
KX KruxKrux BitcoinHardware wallets

refactor: catch Exception, not bare except, in parse_wallet fallbacks

This commit tightens error handling in Krux's wallet parsing. Previously, the code used bare 'except:' clauses that would catch everything, including KeyboardInterrupt and SystemExit. Those special exceptions should normally be allowed to …

Bare except clauses replaced with except Exception to avoid swallowing KeyboardInterrupt/SystemExitNew regression test ensures KeyboardInterrupt propagates through all parse_wallet fallback branchesComments explicitly call out untrusted input and interrupt propagation behavior
6f617710by kkdao+42−72 files
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 queuedi18n: translate the unverified input amounts warningby odudex · bdaed1a1 · Jul 31, 2026 · 23 filesMessage 50 · ThinInformational 15Details
Commit message · odudex

i18n: translate the unverified input amounts warning

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
translation-only discountsecond-pass: unusually broad change
AI analysis · Informational 15/100

This commit only adds translations for two existing warning messages in the Krux Bitcoin hardware wallet software. It does not change any code logic, security behavior, or fix any vulnerability. The messages warn users that displayed fees may be understated and that input amounts are unverified, but those warnings already existed in English; this change just makes them available in more languages.

AI review queuedrefactor: catch Exception, not bare except, in parse_wallet fallbacksby kkdao · 6f617710 · Jul 29, 2026 · 2 filesMessage 62 · AdequateLow 34Details
Commit message · kkdao

refactor: catch Exception, not bare except, in parse_wallet fallbacks

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 34/100

This commit tightens error handling in Krux's wallet parsing. Previously, the code used bare 'except:' clauses that would catch everything, including KeyboardInterrupt and SystemExit. Those special exceptions should normally be allowed to propagate so a user can cancel an operation or the program can shut down cleanly. The change replaces the bare catches with 'except Exception:', which still handles ordinary parsing errors but lets KeyboardInterrupt and SystemExit through. A new test confirms KeyboardInterrupt now propagates from all three parsing fallback paths.

AI review queuedrefactor: narrow parse_address fallbacks to EmbitError in wallet.pyby kkdao · a5fb4737 · Jul 29, 2026 · 2 filesMessage 62 · AdequateLow 34Details
Commit message · kkdao

refactor: narrow parse_address fallbacks to EmbitError in wallet.py

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 34/100

This change fixes a bug where pressing a device's cancel/back button during address parsing could be ignored or misreported as an 'invalid address' instead of letting the user exit. The code previously caught every possible error (including user interrupts) and treated them all as address validation failures. Now it only catches actual address-format errors from the embit library, allowing legitimate user interrupts to propagate normally.

AI review queuedrefactor: drop change-log notes from parse_wallet except commentsby kkdao · 88adc60a · Jul 29, 2026 · 1 fileMessage 93 · StrongInformational 15Details
Commit message · kkdao

refactor: drop change-log notes from parse_wallet except comments

The comments explained what changed relative to the old bare excepts
(interrupts no longer swallowed), which belongs in the commit message,
not the code. Keep only the forward-looking rationale. Per review on #898.

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only removes historical changelog-style comments from the code and rewrites the remaining comments to describe the current behavior. No code logic was changed, so there is no security impact.

AI review queuedfix: reject base58 address with unknown version byte in parse_addressby kkdao · 63e8b8e5 · Jul 29, 2026 · 2 filesMessage 93 · StrongModerate 62Details
Commit message · kkdao

fix: reject base58 address with unknown version byte in parse_address

address_to_scriptpubkey returns None (no exception) for a base58 address
with a valid checksum but a version byte matching no network. The final
parse_address block only caught exceptions, so such an address was
returned as valid. Capture the return and require a Script. Per review
on #898.

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 62/100

This fix closes a hole where a Bitcoin address that looks valid (correct checksum) but belongs to no known network could be accepted by Krux's address parser. Before the patch, the parser only caught thrown errors; because the underlying library quietly returns nothing for an unknown address version, such an address slipped through as valid. The patch now checks that a real script output was produced and rejects the address otherwise. This could matter if a user scanned a malformed or wrong-network address and the device treated it as valid.

AI review queueddocs: add generated mnemonic flow screenshotsby Naman015 · 61807e7e · Jul 27, 2026 · 8 filesMessage 57 · ThinInformational 15Details
Commit message · Naman015

docs: add generated mnemonic flow screenshots

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

This commit only updates user documentation. It adds new screenshots showing how to create a new wallet mnemonic and updates the script that automatically generates those screenshots. There are no code changes that affect security.

AI review queuedchore(i18n): update generated mnemonic action translationsby Naman015 · 022b70d5 · Jul 27, 2026 · 23 filesMessage 62 · AdequateInformational 15Details
Commit message · Naman015

chore(i18n): update generated mnemonic action translations

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
translation-only discountsecond-pass: unusually broad change
AI analysis · Informational 15/100

This commit is a routine translation update. It adds or updates translated text strings for user interface labels such as "Continue", "Wallet Options", "Standard", and "Vertical" across multiple languages. There are no code logic changes, no security fixes, and no behavior changes.

AI review queuedrefactor: drop non-dict JSON coercion in encryption storageby kkdao · 2d195ad3 · Jul 2, 2026 · 2 filesMessage 85 · StrongLow 35Details
Commit message · kkdao

refactor: drop non-dict JSON coercion in encryption storage

Loading seeds.json no longer coerces valid-but-non-dict JSON to an
empty dict, so a wrong-shape file is preserved instead of being
silently overwritten on the next store. decrypt() keeps the
isinstance(source, dict) guard that prevents a crash on such files.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
second-pass: broader security terminology
AI analysis · Low 35/100

This commit changes how Krux loads its encrypted seed storage file. Previously, if the file contained valid JSON but in the wrong shape (for example, a list instead of a dictionary), the app would silently treat it as empty and overwrite it on the next save. Now the app keeps the file's original contents and relies on a separate safety check to avoid crashing. The change is described as a code cleanup, but it also removes a behavior that could hide or destroy user data if a storage file were tampered with or corrupted.

AI review queuedfix: preserve corrupt seeds.json instead of overwriting on storeby odudex · e44d4324 · Jul 2, 2026 · 4 filesMessage 85 · StrongModerate 54Details
Commit message · odudex

fix: preserve corrupt seeds.json instead of overwriting on store

store_encrypted_kef raises StorageCorruptedError and leaves the file
untouched when an existing seeds.json is malformed or a non-dict, rather
than silently overwriting recoverable data. list_mnemonics returns [] for
non-dict storage so corrupt files no longer crash the menu; the UI reports
the corruption (English-only) and skips the store.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
second-pass: broader security terminology
AI analysis · Moderate 54/100

This commit fixes a bug in Krux, a Bitcoin hardware-wallet tool, where saving a new encrypted seed could silently overwrite a damaged seeds.json file. The patch makes the app detect corrupt or misshapen seed storage and stop the save, preserving the existing file so the user can recover it. It also prevents the seed list menu from crashing when the stored file is malformed. There is no evidence this was a malicious backdoor; it appears to be a defensive bug fix.

AI review queueddocs: drop all third-party assets, add CSPby odudex · 6a7a357f · Jun 8, 2026 · 7 filesMessage 85 · StrongLow 42Details
Commit message · odudex

docs: drop all third-party assets, add CSP

Make the docs site fully self-contained so no remote code or assets load
in visitors' browsers:

- System font stack (theme.font: false) instead of Google Fonts
- Video tutorials as a title + link list, dropping YouTube thumbnails
- Shortcode emoji replaced with inline Material icons
- Remove the gitmind.com mind-map iframes (navigation page)
- Add a Content-Security-Policy meta tag (overrides/main.html) that
blocks external scripts/styles/fonts/frames, preventing a polyfill.io
style CDN injection at the browser level

85/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
second-pass: broader security terminology
AI analysis · Low 42/100

This commit hardens the Krux documentation website by removing all embedded third-party content (YouTube thumbnails, Google Fonts, gitmind.com iframes) and adding a browser-level Content-Security-Policy. The goal is to prevent attackers who compromise a third-party service (like a CDN) from injecting malicious code into visitors' browsers when they read the docs. It is a preventive security improvement, not a fix for an active vulnerability in Krux's hardware wallet firmware itself.

AI review queuedfeat: add flash_success method to Page class (#853)by Naman Gupta · 2191ddde · May 7, 2026 · 14 filesMessage 93 · StrongInformational 15Details
Commit message · Naman Gupta

feat: add flash_success method to Page class (#853)

added flash_success that uses theme.go_color, giving success confirmations a distinct green color vs default foreground.
Fix #852

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a user-interface polish change: it adds a new green-colored success message method and switches existing success messages from the default text color to green. There is no security-relevant behavior change.

AI review queuedFix: Reject multisig policies with m=0 or m>n and guard against ZeroDivisionError in fee calculation and (#845)by Odudex · 33982945 · Apr 6, 2026 · 8 filesMessage 93 · StrongModerate 60Details
Commit message · Odudex

Fix: Reject multisig policies with m=0 or m>n and guard against ZeroDivisionError in fee calculation and (#845)

* fix: guard against ZeroDivisionError in fee calculation for zero-value outputs

* fix: validate multisig quorum m>0 and m<=n in key-value wallet files

* chore: bump version to 26.03.01

* fix: Be more specific about invalid multisig quorum errors

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · Moderate 60/100

This update fixes two security issues in Krux, a Bitcoin signing device. First, it prevents the device from crashing when calculating fees for transactions that send no regular bitcoin (only data outputs like OP_RETURN). Second, it now rejects invalid multisig wallet setups where zero signatures are required or where more signatures are required than keys exist, which could otherwise allow unauthorized or impossible spending rules.

AI review queuedchore: add Embed Fire and WonderK to sign_release scriptby odudex · 0befce26 · Mar 20, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · odudex

chore: add Embed Fire and WonderK to sign_release script

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit simply adds two new hardware device names ('Embed Fire' and 'WonderK') to an internal release-signing script list. It does not change any security-sensitive logic, cryptography, or user-facing behavior. There is no indication of a vulnerability or security fix.

AI review queuedrefactor: optimization on usage of foundation-ur and urtypes libs (#825)by Tads · 1b3f30a4 · Mar 19, 2026 · 6 filesMessage 70 · AdequateInformational 12Details
Commit message · Tads

refactor: optimization on usage of foundation-ur and urtypes libs (#825)

70/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit is a code cleanup that changes how the Krux firmware imports and uses two libraries for handling Uniform Resource (UR) QR codes. It replaces broad 'import urtypes' statements with specific imports of individual modules, normalizes UR type string comparisons to uppercase, and simplifies one QR parser result return. There is no direct evidence in the commit that this fixes a security vulnerability.

AI review queuedrefactor: black following up #820by odudex · 7644f965 · Jan 22, 2026 · 2 filesMessage 65 · AdequateInformational 15Details
Commit message · odudex

refactor: black following up #820

65/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is purely a code-style cleanup. It removes an extra blank line and adjusts spacing around a comment so the code matches the project's formatting rules (the 'black' formatter). No behavior of the wallet software changes, and there is no security fix or vulnerability introduced.

AI review queuedSimplify internal key validation for taproot (#820)by Pac · 5dcab5f0 · Jan 22, 2026 · 2 filesMessage 96 · StrongLow 34Details
Commit message · Pac

Simplify internal key validation for taproot (#820)

* Simplify internal key validation for taproot

There is no standard for how to generate the taproot keypath chaincode to be used with the NUMS pubkey.
Liana does it by hashing the taptree keys;
Coldcard uses a random chaincode;
Nunchuck hashes the taptree keys, but remove duplicates and sort the keys before hashing.
This fix changes the verification logic to check only the NUMS pubkey and ignore the chaincode.

* Allow loading of non-deterministic chain code in wallet

The wallet now loads the non-deterministic chain code without raising an error, indicating it is considered valid.

96/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · Low 34/100

This change relaxes how Krux checks the 'internal key' used in Taproot multisig wallets. Previously it required the wallet to use a specific deterministic chain code derived from the other public keys; now it only checks that the internal key is the well-known NUMS (provably unspendable) public key and ignores the chain code. This makes Krux compatible with wallets like Coldcard and Nunchuck that use different chain-code conventions, but it removes a validation step that ensured the internal key was constructed in a specific reproducible way.

AI review queuedchore: update black follow-upby odudex · 6695d325 · Jan 22, 2026 · 8 filesMessage 57 · ThinInformational 15Details
Commit message · odudex

chore: update black follow-up

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

This commit only removes blank lines between import blocks in eight Python files. It is a code-formatting cleanup with no functional changes and no security relevance.

AI review queuedfeat: Loading a Descriptor Sets Wallet Attributes (#802)by Odudex · 86340f31 · Dec 17, 2025 · 31 filesMessage 93 · StrongLow 35Details
Commit message · Odudex

feat: Loading a Descriptor Sets Wallet Attributes (#802)

*feat: loading a descriptor sets wallet attributes

*feat: remove the feature to load xpubs as they were descriptors, with or without assumptions.

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Low 35/100

This commit changes how Krux handles wallet descriptors. Instead of requiring users to manually set wallet type (single-sig, multisig, miniscript), network (mainnet/testnet), and address format, Krux now reads these directly from the descriptor. It also removes the old feature that tried to guess these settings from raw xpubs, which could make unsafe assumptions. When a loaded descriptor doesn't match the currently configured wallet, Krux now shows a clear warning and asks the user whether to switch settings automatically. Overall this is a security-hardening and usability improvement, not an introduced vulnerability.

AI review queueddocs: update installer info (#782)by qlrd · d2770c3f · Nov 30, 2025 · 13 filesMessage 98 · StrongInformational 15Details
Commit message · qlrd

docs: update installer info (#782)

The latest installer changed authenticity/integrity checks. This commit
removes `snippets/verify-the-*.en.txt` as well change some
`getting-started/installing/from-gui` files to comply with the necessary
steps.

98/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only updates user documentation for the Krux installer. It removes per-platform verification instructions and replaces them with a single new page explaining how to verify the installer's authenticity and integrity. No source code, build scripts, or cryptographic checks in the project itself were changed.

AI review queueddocs: update installer info (#782)by qlrd · 8767792e · Nov 30, 2025 · 13 filesMessage 98 · StrongInformational 17Details
Commit message · qlrd

docs: update installer info (#782)

The latest installer changed authenticity/integrity checks. This commit
removes `snippets/verify-the-*.en.txt` as well change some
`getting-started/installing/from-gui` files to comply with the necessary
steps.

98/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 17/100

This commit only updates user documentation for installing the Krux desktop installer. It removes per-platform instructions for verifying downloaded files and replaces them with a single shared verification page. There is no code change, no firmware change, and no change to how Krux devices validate firmware. The only security-relevant aspect is that the docs still tell users to check file signatures and hashes before installing the desktop app.

AI review queuedupdate CHANGELOGby odudex · 15e4f26f · Nov 13, 2025 · 1 fileMessage 18 · OpaqueInformational 15Details
Commit message · odudex

update CHANGELOG

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 updates the project's CHANGELOG.md file, adding two bullet points describing past bug fixes and improvements. No actual code changes are included, so this commit by itself does not introduce, fix, or alter any software behavior or security property.

AI review queueddocs: adjust deviced images adjust BULL coordinator labels and linksby odudex · 05bbb0c0 · Oct 28, 2025 · 3 filesMessage 77 · AdequateInformational 15Details
Commit message · odudex

docs: adjust deviced images
adjust BULL coordinator labels and links

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
signing or wallet pathdocumentation-only discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only updates documentation. It renames a wallet coordinator from 'Bull Bitcoin' to 'BULL Wallet' with a new link, and adds CSS margin styling to device images on the project homepage. There are no code or firmware changes, and no security implications.

AI review queueddocs: adjust deviced images adjust BULL coordinator labels and linksby odudex · 10a12c35 · Oct 28, 2025 · 3 filesMessage 77 · AdequateInformational 15Details
Commit message · odudex

docs: adjust deviced images
adjust BULL coordinator labels and links

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
signing or wallet pathdocumentation-only discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only updates documentation. It renames a wallet coordinator from 'Bull Bitcoin' to 'BULL Wallet' with a new link, and adds small margin styling to device images on the project homepage. There are no code or security changes.

AI review queuedadd TZT to and remove bit from action build and release scriptby odudex · fadf12c9 · Oct 27, 2025 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · odudex

add TZT to and remove bit from action build and release script

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 15/100

This commit simply updates the list of supported hardware devices in the project's automated build system and release-signing script. It removes one device ('bit') and adds another ('tzt'). There is no code change that affects security, cryptography, or user-facing behavior.

AI review queuedadd TZT to and remove bit from action build and release scriptby odudex · 7d792495 · Oct 27, 2025 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · odudex

add TZT to and remove bit from action build and release script

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 15/100

This commit simply updates the list of supported hardware devices in the project's automated build script and release-signing script. It removes one device ('bit') and adds another ('tzt'). There is no security-relevant change in the code itself.