KS
← All projectsKeystone

Keystone 3 firmware

Open-source device firmware for Keystone 3 hardware wallets.

BitcoinHardware walletsNormal
Repository coverage

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

119security candidates294second-pass queue551AI analyses
7commits · 30 days
37commits · 60 days
279commits · 180 days
504commits · 365 days
Backfill bands
Aug 5 → Feb 6260 seen14 candidatesComplete
Feb 6 → Jun 6117 seen7 candidatesComplete
Jun 6 → Jul 639 seen4 candidatesComplete
Jul 6 → Aug 5115 seen4 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.

42/100 average clarity
35Strong · 80–100
72Adequate · 60–79
211Thin · 40–59
235Opaque · 0–39
39security 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.
soralit11634116248
Adam Tucker931193263
aaron30430248
Soralit959154
ww351268717652176026
willwang15215025
John Boyd626088
github-actions[bot]323076
Aaron Chen222068
Qkin-Keystone26126036
qkin12112050
Greg Pfeil414071
Analysis record

Published AI watches

Last scanned 59 minutes ago

Low 42 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2293 from KeystoneHQ/merge/v3.1.0

This is a large firmware release merge (v3.1.0) for the Keystone 3 hardware wallet. The visible changes are mostly a major FreeRTOS kernel upgrade (from v10.x to v11.3.0), build-system improvements, and user-facing feature tweaks such as b…

FreeRTOS kernel major version upgrade (10.x -> 11.3.0) with MPU hardeningSwitch from ARM_CM4F non-MPU port to ARM_CM4_MPU portNew MPU configuration flags: configTOTAL_MPU_REGIONS=8, configENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY=1, configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS=0
0c0ae467by stone+59616−26981300 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 48 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: update ci (#2292)

This commit only updates a Git submodule pointer in a release-tracking file. The actual code change is a one-line pointer update from one commit hash to another in a file named 'keystone3-firmware-release'. There is no visible security-rel…

90d1c789by Soralit+1−11 file
No security note in commit
Informational 15 AI analysisMessage 40 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: update ci

This commit only updates a Git submodule pointer (keystone3-firmware-release) from one commit hash to another. No source code, build scripts, CI configuration, or security-related files are changed in the visible diff. There is no evidence…

a7f6db29by Soralit+1−11 file
No security note in commit
Moderate 58 AI analysisMessage 28 · Opaque
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

release 3.1.0

This is a large firmware release commit (version 3.1.0) for the Keystone 3 hardware wallet. The most significant change visible in the diff is a major upgrade of the FreeRTOS real-time operating system kernel from version 10.x to 11.3.0, c…

FreeRTOS major version upgrade (10.x → 11.3.0) with MPU port enabledNew MPU sandbox task/runtime/validator files addedconfigENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY=1 and configALLOW_UNPRIVILEGED_CRITICAL_SECTIONS=0 set
2b007a29by Soralit+59615−26980300 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 76 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge release v3.0.8 (#2291)

This commit is a routine version-bump merge for release v3.0.8. It only updates changelogs, a Git submodule pointer, and a build version number. There is no code change visible in the diff and nothing that suggests a security fix or vulner…

b5e8f9fcby github-actions[bot]+18−24 files
No security note in commit
Low 47 AI analysisMessage 76 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge release v3.0.6 (#2290)

This firmware update adds support for Solana's new V1 transaction format and changes how oversized or malformed transaction details are displayed. The code introduces a dedicated parser for V1 messages with strict size and structure checks…

New parser enforces hard limits on V1 message fields and rejects malformed 0x81-prefix payloads instead of falling back to message signingCompute-budget instructions in V1 are explicitly ignored to prevent fee-display spoofingUI pagination change for large transaction details reduces truncation risk
87b78ae1by github-actions[bot]+564−2812 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

pin to new release config (#2285)

This commit only updates a Git submodule pointer (keystone3-firmware-release) from one commit hash to another. There is no code change visible in the diff, no description of what the new release config contains, and no security-related inf…

bc01c889by Aaron Chen+1−11 file
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

update the release repo (#2282)

This commit simply updates a Git submodule pointer for the project's release repository. There is no visible code change, no description of any security issue, and no indication this is anything other than a routine release-tracking update.

3ac7e802by Aaron Chen+1−11 file
No security note in commit
Moderate 59 AI analysisMessage 76 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge release v3.0.4 (#2279)

This is a routine firmware release merge (v3.0.4) for the Keystone 3 hardware wallet. The bulk of the changes are UI tweaks, new feature support (Solana CLI, Lace Wallet), and hardening fixes found during an internal 'regular AI review'. T…

NUL-byte rejection in EIP-712 typed data parsingC-string conversion hardening against NUL bytesNull-pointer and UTF-8 validation added to UR parsing entry points
6ab436a2by github-actions[bot]+4960−548845 files
No security note in commit
Informational 13 AI analysisMessage 59 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Build fix (#2273)

This commit is a routine build-system and code-formatting fix. It resets cached CMake build options so each build starts from known defaults, makes cbindgen header-generation failures visible instead of silently ignored, runs Rust formatti…

8568a657by stone wang+8−145 files
No security note in commit
Low 44 AI analysisMessage 36 · Opaque
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

limit file count (#2272)

This commit adds a hard cap on how many files the device will list from its SD card when loading multi-signature Bitcoin wallet data. It also tightens up null-pointer and length checks while scanning directories. The likely goal is to prev…

Unbounded directory listing now bounded by FATFS_MAX_FILE_NUMBERNull-pointer guards added for fileName, number, and path parametersLength checks added before copying filenames into caller buffers
de6879c3by stone wang+31−146 files
No security note in commit
Low 46 AI analysisMessage 73 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2268 from KeystoneHQ/regular-review-fix

This commit tightens which old-style Bitcoin-like transactions the Keystone hardware wallet will accept. It now rejects raw protobuf Bitcoin (BTC) and Dogecoin (DOGE) legacy UTXO transactions, allowing only Bitcoin Cash (BCH), Dash (DASH),…

Deprecation of raw-protobuf Bitcoin transaction handlingRejection of unsupported legacy UTXO variants at multiple entry pointsShift from coin_code string matching to protobuf variant matching for legacy path eligibility
1c70d3d4by Soralit+134−166 files
No security note in commit
Moderate 61 AI analysisMessage 62 · Adequate
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: mark legacy utxo transaction as deprecated and disable btc legacy transactions

This commit disables the older, raw-protobuf signing path for Bitcoin and Dogecoin transactions in the Keystone 3 hardware wallet firmware. It keeps the legacy path active only for Bitcoin Cash (BCH), Dash (DASH), and Litecoin (LTC). The c…

Disables a legacy transaction parsing/signing code path for Bitcoin and DogecoinAdds explicit rejection checks before raw transaction parsing, checking, signing, and view routingSwitches discriminator from coin_code string to protobuf transaction variant to prevent spoofing
1fcd2346by Soralit+134−166 files
No security note in commit
Moderate 63 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2264 from KeystoneHQ/regular-review-fix

This firmware update is a routine 'regular review fix' that hardens how the Keystone 3 hardware wallet checks and displays several cryptocurrency transactions before signing. The most important security changes are: (1) the sign button is …

Sign slider disabled until parse success prevents premature approvalArweave DataItem tag-count mismatch now rejected in pre-checkAvalanche transaction re-validated by type in pre-check, tampered asset ID rejected
87c7e7e2by Soralit+623−20423 files
No security note in commit
Moderate 67 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2263 from KeystoneHQ/driver-optimize

This commit updates the hardware random number generator (TRNG) driver in a cryptocurrency hardware wallet firmware. It adds detection for a physical fault/attack signal from the TRNG and, if triggered, wipes the random data and aborts via…

Added TRNG fault/attack status detection (TRNG_IT_RNG0_ATTACK)Zeroization of sensitive local buffer and output buffer on TRNG failureAssertion abort on detected TRNG attack condition
a409efe0by Soralit+29−51 file
No security note in commit
Moderate 59 AI analysisMessage 18 · Opaque
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

driver optimzie

This commit updates the hardware random number generator (TRNG) driver in a cryptocurrency hardware wallet firmware. It adds detection for a physical tamper/attack signal from the TRNG chip and, if an attack is detected, wipes the random d…

New check of TRNG_IT_RNG0_ATTACK tamper/attack interrupt statusFailure path now zeroes output and local buffer before abortingAddition of ASSERT guards and secure memset_s usage
25f3d951by ww3512687+29−51 file
No security note in commit
Moderate 61 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: regular ai review fix

This firmware update for the Keystone 3 hardware wallet fixes several security and safety issues found during an internal AI-assisted review. The most important changes are: (1) the signing slider is now disabled until a transaction is ful…

Signing slider disabled until parse success prevents approval of malformed transactionsArweave DataItem tag-count mismatch rejected in pre-check before confirmation pageAvalanche transaction re-validated by type during fingerprint check
edbeae79by soralit+623−20423 files
No security note in commit
High 76 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2262 from KeystoneHQ/regular-review-fix

This firmware update fixes several security and safety issues found during a regular AI-assisted code review. The most important changes are: (1) Zcash wallet data is now encrypted with a key derived from the wallet seed and a fresh random…

Zcash UFVK encryption key changed from sha256(password) to seed-derived BIP32 keyZcash UFVK IV changed from deterministic seed-derived value to fresh TRNG-generated IV per blobZcash UFVK storage format now uses magic-prefixed blob with embedded IV and rejects legacy blobs
04d942ffby Soralit+1852−52633 files
No security note in commit
High 80 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: regular AI review and fix

This firmware update fixes several security and safety issues found during an internal AI-assisted review. The most important changes are: (1) Zcash wallet data was being encrypted with a key derived from the user's login password and a fi…

Zcash UFVK encryption key changed from sha256(login password) to seed-derived BIP32 keyZcash UFVK IV changed from deterministic seed-derived value to fresh TRNG-generated IV per encryptionNew 'z2' UFVK blob format stores IV with ciphertext; legacy blobs rejected/migrated
776d8832by soralit+1852−52633 files
Vendor flagged security relevance
Moderate 59 AI analysisMessage 58 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Merge pull request #2260 from KeystoneHQ/replace-lvgl-rand

This commit replaces the on-screen keyboard shuffle and a word-list randomizer so they use the device's true random-number generator (TRNG) instead of LVGL's weaker pseudo-random function. The change is defensive: it removes a source of pr…

Replaced pseudo-random generator with hardware TRNG in security-sensitive shuffle operationsRemoved fixed-range modulo reduction bias source (`lv_rand(0, 2048) % n`)Changed include from LVGL UI library to device TRNG driver in utility code
230abd77by Soralit+8−32 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.

Lower-priorityadd the comments for clear understandingby aaron · 8a08e232 · Nov 17, 2025 · 3 filesMessage 45 · ThinInformational 15Details
Commit message · aaron

add the comments for clear understanding

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only adds explanatory comments and reformats code for readability. It does not change any program logic, cryptographic operations, or security checks.

AI review queueddelete unused codeby ww3512687 · b7f0afbc · Nov 17, 2025 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · ww3512687

delete unused code

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

This commit removes two unused test data strings from a Rust unit test in the Avalanche transaction handling code. The strings were declared with underscores (let _input_bytes), meaning they were intentionally unused. No executable code, logic, or security behavior changed. It is a routine cleanup with no security relevance.

AI review queuedreview iotaby ww3512687 · 0e4023a3 · Nov 17, 2025 · 8 filesMessage 0 · OpaqueLow 47Details
Commit message · ww3512687

review iota

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Low 47/100

This commit reviews and hardens the IOTA cryptocurrency support in the Keystone 3 hardware wallet firmware. It removes unused dependencies, fixes several places where the code would crash if given empty or malformed input, and improves handling of the secret seed so it is wiped from memory even when an error occurs. There is no explicit statement from the vendor that this fixes a security vulnerability, but the changes reduce the chance of a crash or information leak when signing IOTA transactions.

AI review queuedcargo fmtby ww3512687 · d4f5868e · Nov 17, 2025 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · ww3512687

cargo fmt

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a purely cosmetic code-formatting change. It removes an extra space in an 'if' statement in the Sui blockchain app so that the code follows Rust style rules. There is no functional change and no security impact.

AI review queuedremove docsby ww3512687 · a85edcfd · Nov 17, 2025 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · ww3512687

remove docs

0/100 · OpaqueMessage clarity
! Very short subject! 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 simply deletes a Chinese-language technical documentation file describing how the Sui blockchain is supported in the Keystone 3 firmware. No code, configuration, or cryptographic implementation was changed. It is a documentation cleanup with no direct security impact on the device or its users.

AI review queuedfix testby ww3512687 · 6f558cb2 · Nov 17, 2025 · 1 fileMessage 0 · OpaqueInformational 12Details
Commit message · ww3512687

fix test

0/100 · OpaqueMessage clarity
✓ Mentions testing or verification! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 12/100

This commit only updates a Rust test file for TON (The Open Network) mnemonic handling. It adjusts an existing test to expect a different error message and adds a second test case for an 11-word mnemonic. There is no change to production code behavior, no security fix, and no vulnerability introduced.

AI review queuedrun clippyby ww3512687 · d40ecd61 · Nov 17, 2025 · 2 filesMessage 0 · OpaqueInformational 15Details
Commit message · ww3512687

run clippy

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! 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 runs the Clippy linter. It only changes how error messages are formatted in two Rust files—switching from older format!() argument styles to newer inline variable syntax. There is no functional change, no bug fix, and no security relevance.

AI review queuedadd testby ww3512687 · ecae313d · Nov 17, 2025 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · ww3512687

add test

0/100 · OpaqueMessage clarity
✓ Mentions testing or verification! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit only adds new automated tests for the Sui blockchain app in the Keystone hardware wallet firmware. It checks that address generation rejects invalid or wrong-length public keys and that transaction-intent parsing rejects empty input and invalid scope bytes. No production code behavior was changed.

AI review queuedadd 2.2.20 changelogby bianminyan · 27dccae5 · Nov 6, 2025 · 2 filesMessage 38 · OpaqueInformational 15Details
Commit message · bianminyan

add 2.2.20 changelog

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

This commit only adds a new section to two changelog files describing version 2.2.20. It contains no code changes, no bug fixes, and no security-related content. It is purely documentation.

AI review queuedupdate copywritingby ww3512687 · cdbe07cd · Nov 6, 2025 · 2 filesMessage 18 · OpaqueInformational 15Details
Commit message · ww3512687

update copywriting

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

This commit changes only the Chinese translation of the word 'Restart' from '重新开始' (start over) to '重启' (reboot/restart) in a translation data file and its generated C source. It is a wording update with no functional or security effect.

AI review queuedUpdate versionby bianminyan · 97df2231 · Nov 5, 2025 · 1 fileMessage 18 · OpaqueInformational 15Details
Commit message · bianminyan

Update version

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

This commit only changes a single number in a version header file, bumping the firmware build version from 18 to 20. There is no code change that affects security, functionality, or behavior. It is a routine version update with no security relevance visible in the diff.

AI review queuedupdate chain idby ww3512687 · 37a3a095 · Nov 5, 2025 · 1 fileMessage 28 · OpaqueInformational 16Details
Commit message · ww3512687

update chain id

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

This commit simply adds two new Ethereum-compatible networks to a list of known chain IDs inside the Keystone hardware wallet firmware. It is a routine configuration update with no visible security bug or vulnerability.

AI review queuedfix sol crashby ww3512687 · 622d71a1 · Nov 4, 2025 · 1 fileMessage 28 · OpaqueLow 42Details
Commit message · ww3512687

fix sol crash

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

This commit fixes a crash in the Solana transaction review screen on the Keystone 3 hardware wallet. The old code kept a large array of copied account addresses and tried to free them later, which could cause memory corruption or a crash. The patch removes that bookkeeping and instead passes the original address pointer directly to the click handler. It also simplifies how instruction accounts are displayed, likely avoiding a null-pointer or layout crash when an instruction has no accounts.

AI review queuedupdate contractby ww3512687 · 14166606 · Nov 3, 2025 · 1 fileMessage 18 · OpaqueInformational 15Details
Commit message · ww3512687

update contract

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

This commit simply adds five new Ethereum token contract addresses to a built-in list used by the Keystone hardware wallet's user interface. It is a routine data update with no code logic changes and no apparent security relevance.

AI review queuedFix the translationby ww3512687 · ded314aa · Nov 3, 2025 · 4 filesMessage 28 · OpaqueInformational 15Details
Commit message · ww3512687

Fix the translation

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 fixes a Korean translation error and removes two stray trailing whitespace characters. The Korean text for a Permit signing setting previously said the device would 'enable or enable' the feature; it now correctly says 'enable or disable.' There are no code behavior changes.

AI review queuedfix: ton amount too large crashby soralit · f71d8b1e · Oct 30, 2025 · 1 fileMessage 57 · ThinLow 42Details
Commit message · soralit

fix: ton amount too large crash

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
second-pass: broader security terminology
AI analysis · Low 42/100

This commit fixes a crash in the TON (The Open Network) jetton token display code on Keystone 3 hardware wallets. Previously, when a token amount was too large to fit in a 64-bit integer, the firmware would panic and crash. The fix switches to a larger 128-bit integer and formats the amount more carefully. A crafted transaction with an oversized amount could have caused the device to crash, potentially disrupting transaction signing or user experience.

AI review queuedfix: buildby soralit · e6bb3c0a · Oct 30, 2025 · 1 fileMessage 2 · OpaqueInformational 15Details
Commit message · soralit

fix: build

2/100 · OpaqueMessage clarity
✓ Uses a recognizable type or scope! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This is a one-line build fix in a simulator-only header file. It adds a missing function declaration (random_buffer) so the simulator code compiles. There is no indication of a security bug, vulnerability, or runtime behavior change in the actual hardware firmware.

AI review queuedupdate verify docby ww3512687 · a5aec37d · Oct 29, 2025 · 1 fileMessage 38 · OpaqueInformational 15Details
Commit message · ww3512687

update verify doc

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit only updates a documentation file (docs/verify.md) that explains how users can build and verify the firmware. It adds instructions for a new 'Cypherpunk' firmware variant and corrects the filename used in verification steps from 'mh1903.bin' to 'mh1903_full.bin'. There are no code changes and no security fix or vulnerability introduced.

AI review queuedFix duplicate trait importby Greg Pfeil · f87ff609 · Oct 27, 2025 · 1 fileMessage 58 · ThinInformational 15Details
Commit message · Greg Pfeil

Fix duplicate trait import

```
error[E0252]: the name `Cb58Encodable` is defined multiple times
--> apps/avalanche/src/transactions/P_chain/validator.rs:41:9
|
38 | use crate::encode::cb58::Cb58Encodable;
| ---------------------------------- previous import of the trait `Cb58Encodable` here
...
41 | use crate::encode::cb58::Cb58Encodable;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Cb58Encodable` reimported here
|
= note: `Cb58Encodable` must be defined only once in the type namespace of this module
```

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit removes a single duplicate Rust import statement that caused a compiler error. It is a routine build fix with no security relevance.

Security candidateUse string literals for format stringsby Greg Pfeil · b79e31e3 · Oct 27, 2025 · 6 filesMessage 85 · StrongLow 32Details
Commit message · Greg Pfeil

Use string literals for format strings

I couldn’t get the simulator to compile without making these changes.

This is on macOS Tahoe with Clang 19.1.7.

```
/…/src/ui/gui_widgets/gui_firmware_update_widgets.c:119:51: error: format string is not a string literal (potentially insecure) [-Werror,-Wformat-security]
119 | lv_label_set_text_fmt(g_calCheckSumLabel, _("firmware_update_sd_checksum_desc"));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/…/src/ui/gui_widgets/gui_firmware_update_widgets.c:119:51: note: treat the string as an argument to avoid this
119 | lv_label_set_text_fmt(g_calCheckSumLabel, _("firmware_update_sd_checksum_desc"));
| ^
| "%s",
```

Alternatively, the warning could be disabled, but I don’t like doing
that and this change seemed trivial.

85/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Names security-relevant behavior explicitly
Why it was queued
boot or update path
AI analysis · Low 32/100

This commit fixes compile errors triggered by a stricter compiler setting that treats non-literal format strings as potentially insecure. The changes wrap translated UI text strings with a safe "%s" placeholder so they are treated as plain text rather than format strings. In theory, the old code could have allowed a malicious or malformed translation string to be interpreted as a format specifier, possibly causing crashes or information leaks, but there is no evidence that any such attack was possible or exploited in practice. The commit message frames the change as a build fix, not a security fix.

Lower-priorityDon’t use `random_buffer` in the simulatorby Greg Pfeil · 34d8a98e · Oct 27, 2025 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Greg Pfeil

Don’t use `random_buffer` in the simulator

The implementation isn’t compiled for the simulator, so trying to call
it breaks compilation.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This is a minor build-fix change for the software simulator. It wraps a call to a hardware-specific random-number function so the simulator can compile. It does not change real-device behavior or introduce a security vulnerability.

Lower-prioritySpecify `build.target-dir` in Cargo configby Greg Pfeil · 28176e4b · Oct 27, 2025 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · Greg Pfeil

Specify `build.target-dir` in Cargo config

The relative path `target` is hardcoded in some Makefiles. This
correspondingly sets the `build.target-dir` to the same value (which is
the default) to ensure that it isn’t overridden by a contributor’s
config.

```
cp: cannot stat '/…/rust/target/release/librust_c.a': No such file or directory
```

Here is where they’re hardcoded – rust/CMakeLists.text:54–56
``` cmake
set(COPY_BUILD_TARGET cp ${RUST_DIR}/target/${CARGO_ARM_TARGET}/release/${LIB_NAME} ${TARGET_PATH})
else()
set(COPY_BUILD_TARGET cp ${RUST_DIR}/target/release/${LIB_NAME} ${TARGET_PATH})
```

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 15/100

This commit is a build-system hardening change, not a security fix. It pins the Rust build output directory to the default 'target' folder so that individual developer settings cannot accidentally break the firmware build. There is no indication it addresses a vulnerability or malicious behavior.

AI review queuedmodify 2.2.18 changelogby bianminyan · 2ad9001a · Oct 27, 2025 · 2 filesMessage 38 · OpaqueInformational 15Details
Commit message · bianminyan

modify 2.2.18 changelog

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

This commit only edits the release changelog text. It updates the release date and adds bug-fix descriptions for version 2.2.18. No source code, build scripts, or firmware logic were changed, so it cannot introduce or fix a security vulnerability by itself.

Lower-prioritytest: fix unit testby soralit · 1b7b79e3 · Oct 23, 2025 · 8 filesMessage 50 · ThinInformational 12Details
Commit message · soralit

test: fix unit test

50/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 12/100

This commit is a test-only refactor that makes random number generation injectable so unit tests can use a fixed seed and produce deterministic results. It does not change the production code path: the firmware still uses the hardware random number generator (OsRng) when signing real Monero transactions. The expected test output was updated because the deterministic test RNG now produces different, predictable values.

AI review queuedchore: run rust fmtby soralit · 9a093e5e · Oct 23, 2025 · 32 filesMessage 40 · ThinInformational 15Details
Commit message · soralit

chore: run rust fmt

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is purely a code-style cleanup: it runs the Rust formatter (rustfmt) across 32 files. The changes only reformat whitespace, line breaks, import ordering, and similar stylistic details. No program logic, security checks, or behavior were changed.