KS
← All projectsKeystone

Keystone 3 firmware

Open-source device firmware for Keystone 3 hardware wallets.

BitcoinHardware walletsNormal
Repository coverage

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

111security candidates287second-pass queue418AI analyses
119commits · 30 days
159commits · 60 days
276commits · 180 days
535commits · 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.

41/100 average clarity
35Strong · 80–100
64Adequate · 60–79
204Thin · 40–59
233Opaque · 0–39
38security 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.
Adam Tucker931156163
aaron30413148
ww351268717652165026
soralit1153477048
willwang15214025
John Boyd624088
Soralit321058
Qkin-Keystone26123036
qkin12111050
Greg Pfeil412071
Daira-Emma Hopwood211085
bianminyan45042032
Analysis record

Published AI watches

Last scanned 4 minutes ago

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
Moderate 59 AI analysisMessage 28 · Opaque
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

replace lvgl rand

This commit swaps out the LVGL graphics library's pseudo-random number generator for the device's hardware true random number generator (TRNG) in two places: shuffling the on-screen numeric keypad and shuffling recovery-word lists. The old…

Replacement of non-cryptographic PRNG with hardware TRNG in security-sensitive shuffle routinesFisher-Yates shuffle of on-screen PIN keypad now uses TrngGetFisher-Yates shuffle of mnemonic word array now uses TrngGet
f7d64fb8by ww3512687+8−32 files
No security note in commit
Informational 19 AI analysisMessage 85 · Strong
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix(simulator): return password error on PIN mismatch in SimulatorLoadAccountSecret

This commit fixes a bug in the firmware's simulator (a software stand-in used for testing, not the real hardware wallet). When checking a stored account password/PIN, the simulator was accidentally returning 'success' even when the passwor…

Incorrect success return on authentication failure in simulator-only codeMismatch between simulator and real-device authentication error semanticsFunctional regression in multi-account PIN creation in simulator builds
6bec6930by soralit+4−11 file
No security note in commit
Moderate 62 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: improve Solana message handling

This commit hardens how Keystone 3 handles Solana signing requests. Previously, the device partly trusted an external 'sign type' flag from the wallet app to decide whether a QR code contained a transaction or a plain message. The patch no…

Replaces trust in external sign-type metadata with byte-level payload classificationRejects malformed transactions that contain a valid transaction prefix followed by hidden trailing dataPrevents a transaction from being displayed and signed as a plain message
756df0e7by soralit+151−387 files
No security note in commit
Low 49 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: address Solana review findings

This commit improves how Keystone 3's Solana app recognizes and displays certain transaction types. It adds support for the Solana Compute Budget program so those instructions are no longer labeled as 'Unknown,' and it adds parsing for Sol…

Previously unknown Compute Budget instructions are now parsed and labeled, reducing the chance a user approves a transaction they cannot understand.Off-chain signing messages are parsed with format and length validation, so wallet-connect-style sign-in messages are shown as text rather than misinterpreted as transactions.Unknown program accounts are surfaced explicitly in the UI instead of being hidden inside a generic 'Unknown' instruction list.
e1752174by soralit+343−5711 files
No security note in commit
Informational 12 AI analysisMessage 47 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: remove implementation plan

This commit only deletes a planning document from the repository's docs folder. No firmware code, build scripts, or cryptographic logic were changed. The deleted file described a previously completed security-hardening task about removing …

Deleted document references a prior security-hardening task (issue #2255 / PRNG fallback removal)No source-code or build-system changes in the diff
4620fe94by ww3512687+0−1041 file
No security note in commit
Moderate 64 AI analysisMessage 80 · Strong
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: remove insecure PRNG fallback

This commit removes a weak, predictable random-number generator that was bundled as a backup inside the firmware's SLIP-39 code. Previously, if the device's proper hardware random source was accidentally left out of a build, the firmware c…

Removal of deterministic LCG PRNG (random32)Removal of weak-symbol random_buffer fallbackRemoval of unused random helper APIs
17c78e30by ww3512687+108−693 files
Vendor flagged security relevance
Informational 19 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

feat: rename matic to pol

This commit simply renames the cryptocurrency token symbol from MATIC to POL in two places in the user-interface code for the Keystone 3 hardware wallet. Polygon officially rebranded its native token from MATIC to POL, so this is a routine…

88132d72by soralit+2−21 file
No security note in commit
Informational 10 AI analysisMessage 40 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: update ci

This commit is described as a routine CI (continuous integration) update with only one line changed in a release-related file. No code changes affecting wallet security, cryptography, or user funds are visible, and no security relevance is…

39cfff13by soralit+1−11 file
No security note in commit
Moderate 63 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: regular AI code review and fix

This is a large, routine code-quality and hardening patch for the Keystone 3 hardware wallet firmware. It tightens how transactions are parsed and displayed for several cryptocurrencies (Arweave, Avalanche, Bitcoin, Cosmos, Ethereum, Solan…

Arweave: duplicate required tags now rejected, malformed/trailing Avro data now rejectedArweave: DataItem tag count mismatch now rejectedAvalanche: trailing transaction bytes now rejected via parsed_size checks
e2c0ef31by soralit+3998−142676 files
No security note in commit
Informational 19 AI analysisMessage 85 · Strong
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

fix: guard Solana USB pubkey service for non-web3 builds

This commit fixes a firmware build problem, not a runtime security bug. The Solana USB public-key service was calling a function that only exists in the multi-coin 'web3' firmware variant, so the more limited 'cypherpunk' and 'bitcoin-only…

Build/link-time failure fix for conditional feature compilationExplicit error response added for unsupported coin type on non-web3 buildsNo input validation, memory safety, or cryptographic changes observed
9d04150dby John Boyd+10−01 file
No security note in commit
Informational 20 AI analysisMessage 85 · Strong
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

feat(zcash): tag outputs to the wallet's own address as Mine

This commit fixes a UI labeling bug in the Keystone hardware wallet's Zcash transaction review screen. Previously, when a user sent Zcash to one of their own shielded addresses (an 'external' address, not a change address), the device disp…

UI mislabeling of self-owned Zcash shielded outputsNew `is_mine` ownership flag propagated across Rust/C FFI boundaryNo change to signing logic, key handling, or transaction validation
9eb7f4c3by John Boyd+57−45 files
No security note in commit
Low 33 AI analysisMessage 45 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

optimize sol derivation path allocation

This commit refactors how a Solana cryptocurrency derivation path is stored while parsing a USB request. Previously, the code dynamically allocated a small heap buffer inside a helper function and returned it to the caller, which then had …

Eliminates heap allocation for a fixed-size derivation-path bufferRemoves manual free responsibility from caller, reducing memory leak / use-after-free riskSwitches helper return type from pointer to bool to enforce explicit success/failure handling
9c3efd94by ww3512687+12−201 file
No security note in commit
Moderate 57 AI analysisMessage 57 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

refactor: remove unused QR code protocols

This commit removes old, custom QR-code transaction formats for Bitcoin-family coins, Ethereum, and XRP, and replaces them with standardized formats. It also adds explicit rejections when the device receives a transaction through the gener…

Removal of custom protobuf-based QR transaction paths reduces attack surfaceExplicit rejection of ur:bytes for Bitcoin-family and Ethereum transactionsLegacy handlers used unwrap() and raw protobuf deserialization on untrusted QR input
28dd305dby soralit+58−5067 files
No security note in commit
Informational 15 AI analysisMessage 47 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: upgrade rust version

This commit upgrades the Rust compiler toolchain from one nightly version to a newer one and adjusts code to keep the project building and tests passing. It does not fix a known security bug or change how user funds are protected. Most of …

82a48133by soralit+511−1321 files
No security note in commit
Low 36 AI analysisMessage 28 · Opaque
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

support sol cli

This commit adds Solana CLI support to the Keystone 3 hardware wallet firmware. It introduces a new USB command that lets a connected computer request public keys for specific Solana derivation paths, and it reworks how USB responses are s…

New USB command exposes public-key export for a specific coin type and derivation pathAdded NULL/empty checks before returning generated UR data and before using cached passwordMoved several UR result sends from synchronous to asynchronous (task-queue based) dispatch
77833f49by ww3512687+282−2016 files
No security note in commit
Informational 15 AI analysisMessage 40 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: update change log

This commit only edits the project's changelog text. It rewrites the release notes for version 3.0.2, removing detailed bug-fix descriptions and replacing them with a shorter note about Zcash Ironwood support. No source code, build scripts…

c224a7f5by soralit+12−232 files
No security note in commit
Informational 15 AI analysisMessage 40 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

chore: bump version

This commit only changes two version numbers in a header file: the build number is increased from 1 to 2, and the beta flag is turned off (set to 0). There is no code change, no bug fix, and no security-related content in the diff or commi…

62a5d952by soralit+2−21 file
No security note in commit
Low 37 AI analysisMessage 45 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Fix Zcash wallet preparation on unlock

This commit fixes a bug in a helper function that checks whether a text string is a valid hexadecimal value of the expected length. The changelog frames the user-visible fix as 'preventing Zcash public information from being regenerated on…

Input validation hardening in a shared utility functionChangelog describes a Zcash wallet preparation/unlock behavior fixPotential off-by-one length check corrected
dd034199by Adam Tucker+8−44 files
No security note in commit
Informational 3 AI analysisMessage 45 · Thin
KS KeystoneKeystone 3 firmware BitcoinHardware wallets

Use released UR crates 1.0.8

This commit simply switches two software building blocks (called 'crates') from a development Git snapshot to a published release version (1.0.8) on the official Rust package registry. The change itself does not add, remove, or modify any …

fa0add39by Adam Tucker+8−102 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.

Security candidateUpdate zeroize crate to version 1.8.2 in Cargo.toml and Cargo.lock for improved security featuresby ww3512687 · b6c73949 · Nov 17, 2025 · 3 filesMessage 55 · ThinInformational 21Details
Commit message · ww3512687

Update zeroize crate to version 1.8.2 in Cargo.toml and Cargo.lock for improved security features

55/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
memory safety
AI analysis · Informational 21/100

This commit updates the Rust zeroize library from version 1.8.1 to 1.8.2 in a cryptocurrency hardware wallet firmware project. The zeroize library is used to securely erase sensitive data like private keys from memory after use. The commit also adds a large Chinese-language technical specification document for Sui blockchain support. The actual code change is a routine dependency patch with no direct exploit visible in the diff, but the commit message claims it is for 'improved security features.'

AI review queuedapply more testsby aaron · a3a2e2c6 · Nov 17, 2025 · 2 filesMessage 38 · OpaqueLow 37Details
Commit message · aaron

apply more tests

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

This commit hardens how the Keystone 3 firmware derives Ed25519 private keys from a recovery seed. It now requires seeds to be at least 16 bytes, scrubs sensitive intermediate values from memory after use, and switches the Monero app to use the project's shared zeroize dependency. These are defensive improvements that reduce the risk of leaking secret key material, but the commit does not claim to fix an active exploit.

Lower-priorityadd test cases for error pathby aaron · d83b0885 · Nov 17, 2025 · 1 fileMessage 55 · ThinTriage 0Details
Commit message · aaron

add test cases for error path

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI review queuedfix testby ww3512687 · 38247eba · Nov 17, 2025 · 2 filesMessage 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
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit only changes test code for the Avalanche app. It adds two new unit tests for address encoding and HD path validation, and corrects one existing test assertion about which blockchain ID an export transaction should return. There are no changes to production code, so this does not fix or introduce a runtime security issue.

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 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 queuedmore testby aaron · 917af99d · Nov 17, 2025 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · aaron

more 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 Ed25519 key derivation and signing functions. It does not change any production code, so it cannot introduce or fix a security vulnerability on its own.

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.

Security candidateAdd zeroize crate and implement zeroing of sensitive databy ww3512687 · 141243ee · Nov 17, 2025 · 24 filesMessage 90 · StrongModerate 61Details
Commit message · ww3512687

Add zeroize crate and implement zeroing of sensitive data

- Added `zeroize` as a dependency in Cargo.toml for secure memory management.
- Updated mnemonic handling in `ton_mnemonic_validate` to zeroize the seed after use.
- Implemented zeroing of RSA seed in `get_rsa_secret_from_seed` to enhance security.
- Refactored various functions to ensure sensitive data is cleared from memory after use.
- Adjusted related files to accommodate the new zeroing practices, improving overall security posture.

90/100 · StrongMessage clarity
✓ Specific, 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
memory safetydefensive validationcryptography-sensitive pathsigning or wallet path
AI analysis · Moderate 61/100

This commit is a defensive security hardening patch for the Keystone 3 hardware wallet firmware. It adds the `zeroize` Rust crate and explicitly clears sensitive memory buffers (mnemonics, seeds, passwords, RSA seeds, entropy, SLIP39 shares) after use. It also replaces many unsafe `strcpy`/`strcat`/`memcpy` calls with safer bounded versions, removes several `unwrap()` panic points in Rust FFI code, and tightens error handling in wallet creation and recovery flows. The changes reduce the risk that secret material remains in RAM after operations, and reduce the chance that malformed input crashes the device or leaks secrets through panic paths.

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 queuedfmt and fix build errorby aaron · 2a28f2d7 · Nov 17, 2025 · 3 filesMessage 38 · OpaqueInformational 15Details
Commit message · aaron

fmt and fix build error

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! 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 is purely a code cleanup: it removes an unused duplicate import in an Avalanche test file and applies formatting (whitespace and line wrapping) to XRP test files. There are no functional code changes, no bug fixes affecting runtime behavior, and no security-relevant modifications.

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 · 51dcb224 · Nov 17, 2025 · 2 filesMessage 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 purely a code formatting cleanup. It removes extra blank lines and rewraps function-call formatting in two Rust files. No program logic, security checks, or behavior changed.

Security candidateUpdate dependencies to include `zeroize` crate and refactor RSA-related code for improved error handling and memory management. Add tests for RSA key generation and validation, ensuring proper seed length checks and memory clearing after use.by ww3512687 · c54a4bfa · Nov 17, 2025 · 11 filesMessage 60 · AdequateModerate 59Details
Commit message · ww3512687

Update dependencies to include `zeroize` crate and refactor RSA-related code for improved error handling and memory management. Add tests for RSA key generation and validation, ensuring proper seed length checks and memory clearing after use.

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
memory safetycryptography-sensitive pathsigning or wallet path
AI analysis · Moderate 59/100

This commit hardens how a hardware wallet (Keystone 3) handles sensitive RSA prime numbers used for Arweave transactions. It adds explicit length checks on seeds and prime inputs, switches to a safer memory-clearing helper (`zeroize` in Rust, `memset_s`/`CLEAR_ARRAY` in C), and removes an unused RSA helper that could have accepted arbitrary-length secrets. The changes reduce the risk of crashes, memory leaks of secret material, and misuse of malformed keys, but the commit itself is a defensive refactor rather than a fix for a confirmed active exploit.

Security candidatedelete error codeby ww3512687 · 642e1b9c · Nov 17, 2025 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · ww3512687

delete error code

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit removes an unused C language label named 'out:' from a function in the RSA cryptography file. The label appears to have been leftover code with no actual security effect, because nothing in the function jumps to it and the cleanup logic runs unconditionally anyway. There is no indication this change fixes or introduces a security problem.

Lower-priorityadd the comments for clear understandingby aaron · 8a08e232 · Nov 17, 2025 · 3 filesMessage 45 · ThinTriage 0Details
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
Security candidateRefactor Sui module for improved error handling and memory management. Introduce `extract_array_mut` macro for mutable array extraction, enhance error messages in address generation and intent parsing, and ensure proper handling of empty paths in signing functions. Update GUI functions to streamlineby ww3512687 · 55633ccb · Nov 17, 2025 · 4 filesMessage 50 · ThinLow 44Details
Commit message · ww3512687

Refactor Sui module for improved error handling and memory management. Introduce `extract_array_mut` macro for mutable array extraction, enhance error messages in address generation and intent parsing, and ensure proper handling of empty paths in signing functions. Update GUI functions to streamline signing process and memory management.

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundary
AI analysis · Low 44/100

This commit refactors the Sui blockchain support in the Keystone 3 hardware wallet firmware. The main security-relevant changes are: replacing several panic-prone `.unwrap()` calls with proper error handling, adding checks for empty derivation paths that previously could have caused crashes or undefined behavior, validating public key length during address generation, and ensuring the wallet's seed is wiped from memory (zeroized) more reliably after signing. The commit also fixes a memory-freeing bug in the user interface where the wrong type of result could be freed depending on whether a normal transaction or a 'sign message hash' request was being handled.

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.