BB
← All projectsBitBox

BitBox02 firmware

Firmware and bootloader for BitBox02 signing devices.

BitcoinHardware walletsNormal
Repository coverage

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

239security candidates161second-pass queue727AI analyses
72commits · 30 days
144commits · 60 days
316commits · 180 days
697commits · 365 days
Backfill bands
Aug 5 → Feb 6335 seen28 candidatesComplete
Feb 6 → Jun 6265 seen19 candidatesComplete
Jun 6 → Jul 619 seen5 candidatesComplete
Jul 6 → Aug 526 seen3 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.

58/100 average clarity
69Strong · 80–100
325Adequate · 60–79
305Thin · 40–59
88Opaque · 0–39
26security 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.
Marko Bencun452133424357
benma's agent11240106164
Niklas Dusenlund15543134057
cedwies12512063
Tomas Vrba10410071
Cedric Wiese12312049
Yasser Aziza333070
Jad14210060
Sebastian Sutter222050
thisconnect212072
benma212074
Niklas111035
Analysis record

Published AI watches

Last scanned 22 minutes ago

Informational 15 AI analysisMessage 58 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge commit 'refs/pull/2123/head' of https://github.com/BitBoxSwiss/bitbox02-firmware

This commit only adds two digital signature files for an already-released firmware version (v9.25.0). These are third-party reproducible-build assertions by a user named 'yaziza', not changes to the firmware source code. There is no code c…

b8bbbb64by Marko Bencun+0−02 files
No security note in commit
Informational 0 AI analysisMessage 58 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge commit 'refs/pull/2124/head' of https://github.com/BitBoxSwiss/bitbox02-firmware

This commit only adds two digital signature files for an already-released firmware version (v9.27.1). These are release attestation signatures from a contributor named 'yaziza'. There is no code change, no firmware change, and nothing in t…

392ac2ffby Marko Bencun+0−02 files
No security note in commit
Informational 12 AI analysisMessage 45 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge branch 'nickez/bb02-finalize-elf'

This commit is a build-system refactor that unifies how firmware image headers are generated for the BitBox02 and BitBox03. It replaces a device-specific Python script and a C header placeholder with a shared Python tool and JSON manifests…

New input validation in image_header.py for magic, flags, product_id, monotonic_version, marketing_version, image length, and zeroed signature slotsRust parsing now validates slot length, header length alignment, and image length bounds before deriving code lengthRemoval of prepare-stage1-unsigned path reduces attack surface in build tooling
810d3e87by Niklas Dusenlund+573−14413 files
No security note in commit
Informational 12 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bootloader: use shared stage1 header tool

This commit is a build-system refactoring for the BitBox02 bootloader. It replaces a C-language placeholder for the bootloader's stage1 header with a Python tool that generates the same header from JSON manifests during the build. The old …

5b14742fby Niklas Dusenlund+52−1105 files
No security note in commit
Low 27 AI analysisMessage 83 · Strong
BB BitBoxBitBox02 firmware BitcoinHardware wallets

scripts: unify the BitBox image format

This commit refactors the firmware image header format used by BitBox hardware wallets so that BitBox02 and BitBox03 share a single 1024-byte layout. It adds new metadata fields (product ID, version numbers, signature slots) and switches t…

Changed binary image header format and parserAdded checked integer conversions for 64-bit image lengthAdded bounds checks on slot length, header length, and image length in Rust loader
9403e6feby Niklas Dusenlund+524−376 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

scripts: rename image header tool

This commit simply renames a build script from bitbox03_image_header.py to image_header.py and updates all references in the Makefile and Rust build files. The script's contents and behavior are unchanged. There is no security issue here.

29d6720aby Niklas Dusenlund+7−75 files
No security note in commit
Informational 15 AI analysisMessage 70 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Firmware v9.27.1 verification (yaziza)

This commit adds two digital signature files for BitBox02 firmware version 9.27.1. These signatures are a third-party reproducible-build verification (called an 'assertion') created by an independent contributor named yaziza. The commit do…

6d2e6955by Yasser Aziza+0−02 files
No security note in commit
Informational 15 AI analysisMessage 70 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Firmware v9.25.0 verification

This commit adds two digital signature files to the repository. They are third-party reproducible-build attestations (assertions) for the already-released BitBox02 firmware version 9.25.0. The commit does not change any firmware source cod…

b454a627by Yasser Aziza+0−02 files
No security note in commit
Low 34 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/hww-start-session'

This commit adds a new 'session reset' command to the BitBox02 hardware wallet's USB protocol. It lets the host computer cleanly reset the device connection if a previous operation was interrupted, instead of leaving the device stuck mid-t…

New USB control command added to host-wallet protocolReset path cancels async task, resets Noise state, unlocks USB processing, and clears output queueU2F UI ownership check prevents reset from interrupting an active U2F workflow
04302490by Marko Bencun+485−1713 files
No security note in commit
Informational 15 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

py: make session reset an API setup helper

This is a routine Python code refactor. It moves an existing 'reset session' command from one internal class to another and adds a version check so older firmware simply skips it. There is no security bug being fixed here; it is purely org…

50a9e76aby benma's agent+28−163 files
No security note in commit
Moderate 62 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

hww: reset sessions on host reconnect

This commit fixes a bug in the BitBox02 hardware wallet where unplugging the USB cable at the wrong moment could leave a half-finished operation running. If the device stayed powered and a new host reconnected, the new host's first message…

Fixes cross-session state confusion on USB reconnectAdds explicit session reset command to cancel stale async workflowsResets Noise cryptographic session to prevent old-key encrypted responses
6679936fby benma's agent+473−1712 files
Vendor flagged security relevance
Informational 17 AI analysisMessage 58 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge commit 'refs/pull/2073/head' of https://github.com/BitBoxSwiss/bitbox02-firmware

This commit adds a new recovery-word entry screen for the upcoming BitBox03 hardware wallet. It is a large feature patch: it introduces a dedicated BIP39 wordlist keyboard, a new recovery-words review screen, and changes how the device han…

New UI workflow distinguishes 'back' from 'cancel' during seed restoration, reducing accidental aborts.Cancel actions still require an explicit confirmation prompt before the restore is abandoned.Wordlist keyboard disables keys that cannot lead to a valid BIP39 word, preventing invalid-word compositions at the widget level.
6b04e006by Marko Bencun+7010−24621 files
No security note in commit
Low 47 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/show-erc20-contract'

This commit improves the BitBox02 hardware wallet's Ethereum token-approval screen. When a user signs an ERC20 token transfer, the device now also shows the token's smart-contract address if the token symbol is ambiguous (the same ticker, …

UI hardening: adds contract-address confirmation for ERC20 tokens with ambiguous or unknown symbolsRegistry validation: rejects payment requests for tokens not present in the firmware's ERC20 registryBuild-time ambiguity detection: generates a sorted list of units shared by multiple contracts
410df562by Marko Bencun+203−123 files
No security note in commit
Low 26 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/bootloader-descriptor-compat'

This commit relaxes a version check in the BitBox02 bootloader upgrade code. Previously, the firmware installer required that a stage0 bootloader descriptor's version exactly matched the currently expected image version. Now it accepts des…

Strict version equality check removed from bootloader descriptor parsingChange located in bootloader upgrade / firmware installer verification pathNo bounds, length, or pointer validation changes observed
6dccfd24by Marko Bencun+19−72 files
No security note in commit
Moderate 53 AI analysisMessage 45 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge branch 'nickez/bb02-utf8-safe'

This commit hardens the BitBox02 firmware so it stops trusting that incoming text strings are valid UTF-8 or plain ASCII. It replaces risky C string copies with length-checked, UTF-8-aware helpers, rejects non-ASCII characters at UI bounda…

Replaced snprintf-based string copies with length-bounded UTF-8-aware copiesAdded explicit length parameter to memory_set_device_name and reject embedded/invalid nullsAdded printable-ASCII enforcement at Rust UI boundary before C rendering
0bbdf6f0by Niklas Dusenlund+338−9625 files
No security note in commit
Low 41 AI analysisMessage 28 · Opaque
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge branch 'benma/ub'

This commit fixes a coding guideline violation in the BitBox02 factory setup code. A 32-byte buffer that receives output from a Rust function was not initialized to zeroes before use. The accompanying documentation now explicitly requires …

Uninitialized stack buffer used as output buffer for Rust/C FFI callDefensive zero-initialization added to prevent use of stale stack data on error or partial write pathsProject coding guidelines updated to mandate zero-initialization for rust_util_bytes_mut buffers
8a6fd97bby Marko Bencun+3−12 files
No security note in commit
Low 35 AI analysisMessage 68 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

oled: hold display in reset during startup

This commit fixes a display behavior issue during startup of the BitBox02 hardware wallet. Previously, when the device turned on, the screen's reset pin was left in a state that could allow leftover images or text from an earlier session t…

Information disclosure via residual display content during bootOLED reset pin sequencing hardeningDefense against stale/misleading UI state before verified firmware initializes display
cdb27835by Niklas Dusenlund+2−11 file
Vendor flagged security relevance
Informational 18 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/factorysetup-trim-unused'

This commit trims the BitBox02 factory-setup firmware image by switching stored root attestation public keys from 65-byte uncompressed to 33-byte compressed secp256k1 keys, and by using a smaller static secp256k1 verification context inste…

Change in trusted public-key table format and derivation logicSwitch to static/no-precomp secp256k1 verification contextAddition of secp256k1 self-test at boot
554a0558by Marko Bencun+457−5647 files
No security note in commit
Low 37 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/validate-py-antiklepto-signatures'

This commit adds extra safety checks in the BitBox02 Python library for ECDSA signatures used in Bitcoin and Ethereum signing. It now validates that signatures have the correct length, use valid numbers, and use the safer low-S form. It al…

Defensive validation added for ECDSA signature format and low-S encodingRecovery ID range validation added for recoverable signaturesAnti-Klepto verification now rejects malformed/malleable signatures before nonce verification
0d1a7997by Marko Bencun+152−65 files
Vendor flagged security relevance
Informational 19 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Merge remote-tracking branch 'agent/benma-agent/scroll-payment-request-memo-name'

This commit tweaks how the BitBox02 hardware wallet displays a payment-request memo on screen. It changes the label from 'Memo from\n\nMerchant' to 'Memo from: Merchant' and makes the screen scrollable so long merchant names don't get cut …

No security-relevant signal in commit message or diffUI/UX change only: text formatting and scrollabilityNo memory-safety, cryptographic, or authorization changes observed
be375664by Marko Bencun+115−66 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-priorityreset: add system calls to System Halby Marko Bencun · 912cf924 · Feb 24, 2026 · 7 filesMessage 60 · AdequateInformational 19Details
Commit message · Marko Bencun

reset: add system calls to System Hal

- reboot
- smarteeprom_disable
- reset_ble

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

This commit is a routine internal refactoring: it moves three existing device-control functions (reboot, reset Bluetooth chip, and disable SmartEEPROM) behind a common Rust 'system' interface so different parts of the firmware call them through a hardware-abstraction layer instead of directly. The actual device behavior does not change; it is not a security fix and does not introduce a known vulnerability.

Lower-priorityhal: add startup()by Marko Bencun · 1270e9e0 · Feb 24, 2026 · 8 filesMessage 51 · ThinInformational 15Details
Commit message · Marko Bencun

hal: add startup()

The first task spawned, implements orientation screen in BitBox02 and
removes some more bitbox02 crate references in bitbox02-rust.

The startup trait function does not have a `&mut self` param as the
executor in main_loop requires tasks to be static.

51/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit is a routine internal code reorganization. It moves the device's startup orientation screen logic from a general workflow module into a hardware-abstraction trait so different device variants can define their own startup behavior. There is no user-facing security change, no bug fix, and no indication this addresses a vulnerability.

AI review queuedhal/ui: add progress to Ui Halby Marko Bencun · a0a8f0ee · Feb 20, 2026 · 5 filesMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun

hal/ui: add progress to Ui Hal

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

This commit is a routine code cleanup: it moves the progress-bar UI code behind a Rust trait (interface) so different parts of the firmware can use it through a common abstraction. It does not change security behavior, fix a bug, or add a new user-facing feature beyond the existing progress bars.

Security candidatemove DEVICE_MAX_LEN/MULTISIG_NAME_MAX_LEN defs from C to Rustby Marko Bencun · 632db34f · Feb 20, 2026 · 15 filesMessage 85 · StrongInformational 15Details
Commit message · Marko Bencun

move DEVICE_MAX_LEN/MULTISIG_NAME_MAX_LEN defs from C to Rust

Removes `bitbox02::memory` references from bitbox02-rust and makes the
consts available to all targets (bb02, bb03).

It's defined in the bitbox-hal crate because it is part of the trait
set_device_name/smultisig_set_by_hash constraints that must be obeyed
by all targets.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit is a routine code reorganization. It moves two constant definitions—how long device names and multisig account names can be—from the C code into Rust, so both the BitBox02 and future BitBox03 products can share the same values. The actual length limits (63 characters plus a null terminator for device names, 30 plus null for multisig names) are unchanged, and the commit adds compile-time checks to prove they stay the same. There is no security bug being fixed here.

Security candidatebitbox02-rust: remove redundant mock_memory callsby Marko Bencun · c7089da8 · Feb 19, 2026 · 11 filesMessage 60 · AdequateInformational 15Details
Commit message · Marko Bencun

bitbox02-rust: remove redundant mock_memory calls

With introduction of HAL, many of them are not needed anymore.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing or wallet pathauthentication path
AI analysis · Informational 15/100

This commit only cleans up test code by removing unnecessary calls to a mock memory setup function. It does not change the actual firmware that runs on the BitBox02 device, so it has no security impact on users.

Lower-priorityhal: rename subsytems() to as_mut()by Marko Bencun · 619f907c · Feb 19, 2026 · 7 filesMessage 60 · AdequateInformational 15Details
Commit message · Marko Bencun

hal: rename subsytems() to as_mut()

For clarity that one accesses the parts as mut.

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

This commit is a simple rename of a Rust function from `subsystems()` to `as_mut()` across several files. It does not change what the code does, only makes the name clearer to programmers. There is no security issue here.

Lower-priorityhal/ui: add unlock_animationby Marko Bencun · 95f4c27c · Feb 19, 2026 · 6 filesMessage 68 · AdequateInformational 15Details
Commit message · Marko Bencun

hal/ui: add unlock_animation

Add unlock_animation to the Ui trait and both production and testing implementations.

Use ui.unlock_animation() in workflow::unlock and remove the dedicated unlock_animation workflow module.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit is a small internal code cleanup. It moves the unlock animation from a separate workflow module into the general user-interface (UI) trait, and updates the unlock process to use the new location. There is no change to security behavior or user-visible functionality.

Security candidatekeystore: add KeystoreHal abstractionby Marko Bencun · 4fc335ee · Feb 19, 2026 · 2 filesMessage 58 · ThinInformational 15Details
Commit message · Marko Bencun

keystore: add KeystoreHal abstraction

Introduce the KeystoreHal trait and KeystoreHalImpl adapter over HAL
subsystems.

Route unlock_bip39 and transitive keystore internals through
KeystoreHal and update workflow unlock to pass KeystoreHalImpl.

Reason: to not keep a mutable borrow of Hal Ui (part of Hal), which
will be used in parallel during unlock_bip39(), which performs an UI
animation in parallel.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
secret or key material
AI analysis · Informational 15/100

This commit is a straightforward internal code refactor. It introduces a new 'KeystoreHal' adapter so that the keystore code can borrow only the hardware subsystems it needs (memory, random number generator, secure chip) instead of borrowing the entire HAL, which also contains the user interface. The stated reason is to allow a UI animation to run in parallel while the device unlocks. There is no change to security logic, cryptography, or user-facing behavior.

Security candidatesalt: hash_data takes Memoryby Marko Bencun · b608856e · Feb 19, 2026 · 3 filesMessage 58 · ThinInformational 12Details
Commit message · Marko Bencun

salt: hash_data takes Memory

Change salt::hash_data to take &mut impl Memory instead of &mut impl Hal.

Update keystore callsites to pass hal.memory().

Reason: to not keep a mutable borrow of Hal Ui (part of Hal), which
will be used in parallel during unlock_bip39().

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
secret or key materialboot or update path
AI analysis · Informational 12/100

This is a small internal code cleanup in the BitBox02 firmware's Rust code. It changes a helper function so it borrows only the memory/storage part of the hardware abstraction layer, rather than the whole hardware abstraction layer. The commit message says this is preparation for a future change where the user interface part of the hardware layer will be used at the same time during wallet unlocking. There is no direct security fix here and no vulnerability is described.

Security candidatemove rust_keystore_get_u2f_seedby Marko Bencun · 51a87765 · Feb 19, 2026 · 2 filesMessage 25 · OpaqueInformational 15Details
Commit message · Marko Bencun

move rust_keystore_get_u2f_seed

25/100 · OpaqueMessage clarity
✓ Descriptive subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit simply moves a function from one Rust source file to another. The code itself is unchanged; only its location in the project changed. There is no indication of a security fix or vulnerability.

Lower-prioritymake rust_async_usb_on_request_hww use HalImplby Marko Bencun · b50d2164 · Feb 19, 2026 · 5 filesMessage 50 · ThinInformational 12Details
Commit message · Marko Bencun

make rust_async_usb_on_request_hww use HalImpl

Removes a reference of BitBox02Hal in bitbox02-rust.

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
AI analysis · Informational 12/100

This commit is a straightforward internal code cleanup: it moves where a hardware-abstraction object is created so that a Rust library no longer directly depends on a specific device implementation. There is no user-facing change, no bug fix, and no security vulnerability visible in the diff.

Security candidatemove rust_salt_hash_databy Marko Bencun · 51d18d53 · Feb 19, 2026 · 2 filesMessage 18 · OpaqueInformational 11Details
Commit message · Marko Bencun

move rust_salt_hash_data

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
boot or update path
AI analysis · Informational 11/100

This commit simply moves a function called rust_salt_hash_data from one Rust source file to another. The function itself is unchanged; only its location and the associated test code are reorganized. There is no indication this fixes or introduces a security problem.

Security candidatemove rust_communication_mode_*by Marko Bencun · 08dd169d · Feb 19, 2026 · 5 filesMessage 25 · OpaqueInformational 15Details
Commit message · Marko Bencun

move rust_communication_mode_*

25/100 · OpaqueMessage clarity
✓ Descriptive subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit is a routine code reorganization. It moves two C-callable Rust functions related to Bluetooth Low Energy (BLE) communication mode from one Rust source file to another, and adjusts which Rust crate features enable the relevant code. There is no visible change to what the code does, only where it lives in the project. No security issue is evident from the diff.

Lower-prioritymove u2f c api to bitbox02-rust-cby Marko Bencun · a23e2b6e · Feb 19, 2026 · 9 filesMessage 45 · ThinInformational 12Details
Commit message · Marko Bencun

move u2f c api to bitbox02-rust-c

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

This commit is a straightforward code reorganization: it moves the U2F C API module from one Rust crate (bitbox02-rust) to another (bitbox02-rust-c). The actual logic of the U2F workflow functions is copied almost unchanged, with only import paths adjusted. There is no indication in the commit message or diff that this fixes a security bug, changes behavior, or addresses a reported vulnerability. It appears to be a routine refactoring to improve code structure.

Security candidatemove bitbox02-rust C API that needs HAL to bitbox-rust-c - main_loopby Marko Bencun · 43f64c11 · Feb 19, 2026 · 3 filesMessage 65 · AdequateInformational 15Details
Commit message · Marko Bencun

move bitbox02-rust C API that needs HAL to bitbox-rust-c - main_loop

Decouple bitbox02-rust from bitbox02 dep, starting with main_loop.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit is a straightforward internal code reorganization. It moves the C-compatible entry point for the device's main loop from one Rust module to another, so that the core Rust logic no longer directly depends on the hardware abstraction layer. There is no change to user-facing behavior, no bug fix, and no security-related content.

Security candidatehal: move bitbox02 HAL impl to bitbox02 crateby Marko Bencun · 706e4f96 · Feb 18, 2026 · 16 filesMessage 45 · ThinInformational 15Details
Commit message · Marko Bencun

hal: move bitbox02 HAL impl to bitbox02 crate

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy path
AI analysis · Informational 15/100

This commit is a pure internal code reorganization: it moves the BitBox02 hardware-abstraction-layer implementation from one Rust crate (bitbox02-rust) into another (bitbox02). The actual logic, behavior, and security-sensitive operations such as memory access, random number generation, secure-chip handling, SD card access, and user-interface prompts remain identical; only the file paths and import paths change. There is no indication of a security fix or vulnerability being addressed.

Security candidatehal: move hal traits/types from bitbox02-rust to new bitbox-halby Marko Bencun · 2bd2c0e7 · Feb 18, 2026 · 14 filesMessage 73 · AdequateInformational 15Details
Commit message · Marko Bencun

hal: move hal traits/types from bitbox02-rust to new bitbox-hal

This will enable us to move the bitbox02 HAL implementation from
bitbox02-rust to the bitbox02 crate, avoiding circular deps.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
seed or entropy path
AI analysis · Informational 15/100

This commit is a routine code reorganization: it moves hardware-abstraction trait definitions (interfaces describing how the firmware talks to the screen, secure chip, memory, SD card, random number generator and system reboot) from one internal Rust crate to a newly created crate called bitbox-hal. No behavior of the actual device code is changed; it is purely a dependency and file move to avoid circular imports in the future.

AI review queuedhal/ui: remove get_mnemonicby Marko Bencun · 7f69f575 · Feb 18, 2026 · 4 filesMessage 35 · OpaqueInformational 15Details
Commit message · Marko Bencun

hal/ui: remove get_mnemonic

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

This commit is a routine code cleanup in the BitBox02 firmware's user-interface layer. It removes a convenience method called get_mnemonic from the UI hardware-abstraction trait and makes callers use the underlying workflow function directly. The change also expands unit-test helpers so the existing restore-from-mnemonic test can simulate a 24-word recovery phrase. There is no indication this fixes a security bug or changes user-visible behavior.

AI review queuedhal/ui: remove show_and_confirm_mnemonicby Marko Bencun · 923eb529 · Feb 18, 2026 · 5 filesMessage 35 · OpaqueInformational 12Details
Commit message · Marko Bencun

hal/ui: remove show_and_confirm_mnemonic

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

This commit is a code cleanup and test improvement. It removes a redundant user-interface method called show_and_confirm_mnemonic from the hardware abstraction layer and makes callers use the underlying workflow directly. It also adds more detailed test helpers so the device screens shown during backup verification can be checked more precisely. There is no indication this fixes a security bug or changes real device behavior in a risky way.

Lower-prioritybitbox02_rust/hal: move workflow::trinary_input_string::CanCancel to hal::uiby benma's agent · bd84810f · Feb 18, 2026 · 13 filesMessage 65 · AdequateInformational 15Details
Commit message · benma's agent

bitbox02_rust/hal: move workflow::trinary_input_string::CanCancel to hal::ui

HAL should be self-contained so it can be moved to a new crate bitbox-hal.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit is a straightforward internal code reorganization. It moves a small setting called CanCancel (which controls whether a user can cancel a text-entry screen) from one Rust module to another so the hardware abstraction layer can stand on its own. No behavior changes, no security fixes, and no bug fixes are visible in the diff.

AI review queuedbitbox02_rust/hal: add ui trinary choiceby Marko Bencun · 2337a52a · Feb 18, 2026 · 5 filesMessage 78 · AdequateInformational 15Details
Commit message · Marko Bencun

bitbox02_rust/hal: add ui trinary choice

Introduce hal::ui::TrinaryChoice and remove direct dependency on bitbox02::ui::TrinaryChoice in HAL consumers.

Add exhaustive conversion tests in hal::bitbox02::ui for to_hal_trinary_choice.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 15/100

This commit is a routine internal code cleanup. It introduces a new Rust enum called TrinaryChoice inside a hardware abstraction layer (HAL) so that higher-level code no longer directly depends on a lower-level bitbox02 UI type. The actual on-device behavior is unchanged; only the names used in the source code are different. There is no security bug being fixed here.

Lower-prioritybitbox02_rust/hal: add ui enter stringby Marko Bencun · b577d4f8 · Feb 18, 2026 · 8 filesMessage 78 · AdequateInformational 15Details
Commit message · Marko Bencun

bitbox02_rust/hal: add ui enter string

Introduce hal::ui::EnterStringParams and adapt HAL implementations and callsites to use it instead of workflow-level trinary input params.

Add exhaustive conversion tests in hal::bitbox02::ui for to_bitbox02_trinary_input_string_params.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit is a routine internal code cleanup in the BitBox02 firmware's Rust code. It introduces a new hardware-abstraction-layer (HAL) structure for string-entry screens and updates existing code to use it. There is no indication of a security bug, vulnerability fix, or behavior change affecting users.

Security candidatebitbox02_rust/hal: add ui confirm/fontby Marko Bencun · 5bacbf78 · Feb 18, 2026 · 38 filesMessage 78 · AdequateInformational 15Details
Commit message · Marko Bencun

bitbox02_rust/hal: add ui confirm/font

Introduce hal::ui::ConfirmParams and hal::ui::Font so HAL interfaces no longer depend on workflow or bitbox02 ui confirmation types.

Adapt all callsites and add exhaustive conversion tests in hal::bitbox02::ui for font and confirm params mapping.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathauthentication path
AI analysis · Informational 15/100

This commit is a routine internal code cleanup. It moves the definitions of confirmation-screen parameters and fonts out of the workflow layer and into the hardware-abstraction (HAL) layer, then updates all call sites to use the new names. There is no change to user-facing behavior, no bug fix, and no security vulnerability being addressed.

Lower-prioritybitbox02_rust: drop sdcard::UserAbort for hal::ui::UserAbortby benma's agent · de9229fe · Feb 18, 2026 · 6 filesMessage 50 · ThinInformational 15Details
Commit message · benma's agent

bitbox02_rust: drop sdcard::UserAbort for hal::ui::UserAbort

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is a small internal cleanup in the BitBox02 firmware's Rust code. It removes a duplicate definition of a 'user cancelled' error type used when the user aborts an SD card insertion prompt, and makes all code use a single shared 'UserAbort' type instead. There is no change to user-facing behavior or security.

Lower-prioritybitbox02_rust: drop workflow::cancel::Error for hal::ui::UserAbortby benma's agent · dc07c3b8 · Feb 18, 2026 · 10 filesMessage 65 · AdequateInformational 15Details
Commit message · benma's agent

bitbox02_rust: drop workflow::cancel::Error for hal::ui::UserAbort

We want to make the HAL self-contained so it can be moved to a new
crate bitbox-hal.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit is a routine internal code cleanup. It removes a small, dedicated 'cancel' error type and replaces it with an existing, equivalent 'UserAbort' type in the hardware abstraction layer (HAL). The goal stated by the developer is to make the HAL self-contained so it can later be moved to its own crate. There is no change to user-visible behavior, no bug fix, and no security-related change.