TZ
← All projectsTrezor

Trezor firmware

Firmware monorepo for Trezor One, Model T, and Safe devices.

BitcoinHardware walletsNormal
Repository coverage

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

921security candidates311second-pass queue2660AI analyses
322commits · 30 days
549commits · 60 days
1358commits · 180 days
2638commits · 365 days
Backfill bands
Aug 5 → Feb 61298 seen115 candidatesComplete
Feb 6 → Jun 6775 seen58 candidatesComplete
Jun 6 → Jul 6217 seen13 candidatesComplete
Jul 6 → Aug 5360 seen54 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.

66/100 average clarity
478Strong · 80–100
1321Adequate · 60–79
863Thin · 40–59
5Opaque · 0–39
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
tychovrahe292104292461
Roman Zeyde577181575272
PrisionMike945994273
Andrew Kozlik712470265
obrusvit21376213164
Jakub Janků22919182
Martin Pastyřík23823173
cepetr19682196059
Ioan Bizău23076230059
M1nd3r20772207071
Lukas Bielesch846784067
Martin Milata17446174063
Analysis record

Published AI watches

Last scanned 30 minutes ago

Low 27 AI analysisMessage 93 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): digest EIP-1559/EIP-7702 magic without RLP encoding

This commit is a small internal cleanup in Trezor's Ethereum signing code. It changes how two special 'magic' bytes (the transaction type markers for newer Ethereum transaction formats) are fed into the cryptographic hash. Previously the c…

Refactor of cryptographic hashing path for Ethereum transaction signingRemoval of implicit assumption that RLP encodes small integers as single bytesChange affects EIP-1559 and EIP-7702 transaction type markers
2362bc6fby Roman Zeyde+6−32 files
No security note in commit
Informational 15 AI analysisMessage 98 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

test(core): test RLP self-encoding bytestrings

This commit only adds a new unit test to the Trezor firmware codebase. It verifies that very short Ethereum RLP-encoded byte strings and small positive integers encode to themselves, which is a known property of the RLP specification. No p…

41538733by Roman Zeyde+16−01 file
No security note in commit
Informational 18 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): remove sha1 from regular FW

This commit removes the SHA-1 hashing function from the regular Trezor firmware. SHA-1 is an old, weak hash algorithm that is no longer considered secure for sensitive uses. The change deletes the code that exposes SHA-1 to apps running on…

Removal of a deprecated cryptographic primitive (SHA-1) from the firmware API surfaceReduction of attack surface and prevention of future misuse of a collision-vulnerable hashNo direct vulnerability patch or memory-safety bug is present in the diff
16d15774by M1nd3r+0−2006 files
No security note in commit
Low 27 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(crypto): pass static public key to `noise_xxpsk3_*_init()`

This commit changes how a cryptographic library sets up secure connections. Previously, the code automatically calculated the public key from the private key. Now, the caller must provide the public key directly. This is a code-quality ref…

Cryptographic key handling changed: public key is now supplied rather than derivedPotential reduction of key-mismatch risk if caller provides correct public keyNew null-pointer check added for static_public_key
1b3128a4by Ondřej Vejpustek+20−92 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(crypto): change order of parameters

This commit simply reorders the arguments of an internal function called dh() and updates every place that calls it. The actual math and security behavior are unchanged; it is a code cleanup with no security effect.

33a119eeby Ondřej Vejpustek+15−151 file
No security note in commit
Informational 15 AI analysisMessage 47 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(crypto): prefix enums

This commit simply renames two groups of internal status labels (called enums) in the Trezor firmware's cryptographic code. The old names like WAITING_FOR_REQUEST1 were shared between two different parts of the code, so the developer gave …

f1c74046by Ondřej Vejpustek+26−222 files
No security note in commit
Low 37 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(crypto): prevent calling `memzero(NULL, ...)`

This commit fixes three places in the Trezor firmware's cryptographic code where a memory-clearing function could be called with a NULL pointer. In practice, passing NULL to memzero is harmless on Trezor's platform (it does nothing), but i…

NULL pointer passed to memory-zeroing helper in cryptographic codeUndefined behavior in C standard library contractDefensive hardening in Noise protocol implementation
0394e934by Ondřej Vejpustek+11−51 file
No security note in commit
Informational 18 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(crypto): return remote static key from `noise_xxpsk3_*_handle_*()`

This commit is a code cleanup (refactor) for the cryptographic handshake code used in Trezor devices. It changes how the other party's long-term public key is returned to the caller: instead of storing it inside an internal state structure…

Removal of long-term public key storage from internal handshake stateCaller-supplied output buffer for remote static public key reduces internal secret retentionError-path memzero of returned key material on failure
3ead1aa6by Ondřej Vejpustek+79−423 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): rename ProjectProfile to ProjectConfig

This commit is a simple rename from 'ProjectProfile' to 'ProjectConfig' in two Rust source files. It only changes variable names, struct names, and error messages. There is no change to program logic, security behavior, or how data is hand…

581b37bcby cepetr+18−182 files
No security note in commit
Informational 15 AI analysisMessage 47 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): introduce ResolvedBuildArgs

This commit is a straightforward internal code refactor in Trezor's build tooling. It introduces a new ResolvedBuildArgs structure that centralizes default values for command-line build options before they are used. There is no change to u…

c24d1be8by cepetr+99−295 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): make build args tristate

This commit is a straightforward internal refactor of the Trezor firmware build tool's command-line argument handling. It changes many on/off flags from plain booleans to optional booleans so they can explicitly be set to true, false, or l…

271e249aby cepetr+57−561 file
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): introduce build options

This commit is a straightforward internal code reorganization in Trezor's build tooling. It moves build-option definitions from one Rust source file to a new module and adds the ability to load those options from a configuration file. Ther…

75085e2aby cepetr+275−2007 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(xtask): introduce build presets

This commit is a developer tooling change for the Trezor firmware build system. It introduces 'build presets'—named configuration bundles stored in TOML files—so developers can select common build settings with a single command-line flag i…

eefe8f7fby cepetr+397−419 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(xtask): upgrade manifest.yaml for tf-tools 0.3.0

This commit is a routine update to a build-system manifest file used by Trezor's internal tooling. It reorganizes and re-labels feature flags (for example, moving options between 'Features', 'Debugging', and 'Signing' groups and simplifyin…

57b28b89by cepetr+86−1351 file
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): add tf-tools 0.3.1+ configuration file

This commit adds a single configuration file for a Trezor developer tool (a VS Code extension). It only points the tool to existing folders in the repository and contains no executable code, no secrets, and no changes to firmware behavior.…

e554f618by cepetr+8−01 file
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): rename ResolvedBuild to ResolvedBuildFeatures

This commit is a simple internal code cleanup: it renames a Rust data structure called ResolvedBuild to ResolvedBuildFeatures and updates the places that use it. There are no functional changes, no security fixes, and no changes to how the…

aaa2780bby cepetr+5−52 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): fix up clippy warnings in storage.rs

This is a tiny code cleanup commit that replaces two calls to `ptr::null()` with Rust's `unwrap_or_default()` to silence automated Clippy lint warnings. It does not change what value is produced (still a null pointer when no salt is provid…

62354461by cepetr+2−21 file
No security note in commit
Informational 15 AI analysisMessage 47 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(xtask): simplify dependencies

This commit is a straightforward internal code cleanup in Trezor's build tooling. It moves a data structure and two helper methods from one Rust source file to another and updates callers accordingly. There is no change to user-facing beha…

6268349fby cepetr+9−193 files
No security note in commit
Informational 15 AI analysisMessage 47 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

docs: add xtask documentation

This commit only adds documentation. It updates the table of contents and adds a new markdown page plus a diagram explaining the project's 'xtask' build helper. No code, build scripts, or firmware logic was changed, so it cannot introduce …

4879dababy cepetr+296−03 files
No security note in commit
Informational 17 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(xtask): introduce project-toml build-options

This commit is a build-system refactoring for Trezor firmware. It moves the mapping of command-line build options to Rust/cargo features out of hard-coded Rust logic and into per-project TOML files. It also adds a small change so debug bui…

Build-option mapping now lives in project.toml files, increasing the attack surface for supply-chain/build-configuration tamperingMakefile change automatically enables debug-link for PYOPT=0 debug buildsValidation added to reject storage_insecure_testing_mode in production builds
d44de007by cepetr+681−40817 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 candidaterefactor: drop `ConfirmOutputWithAmount`by Ioan Bizău · d14eeca9 · Jan 12, 2026 · 14 filesMessage 47 · ThinInformational 19Details
Commit message · Ioan Bizău

refactor: drop `ConfirmOutputWithAmount`

[no changelog]

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet pathboot or update path
AI analysis · Informational 19/100

This commit removes a dedicated two-page 'confirm output with amount' screen and replaces it with two separate confirmation prompts for the address and the amount. It is a user-interface refactor, not a fix for a security vulnerability. The change does not introduce obvious security flaws, but it slightly alters how users review transaction details on newer Trezor layouts.

Security candidatefeat: title and subtitle on property pagesby Ioan Bizău · 31026a0d · Jan 12, 2026 · 10 filesMessage 57 · ThinInformational 15Details
Commit message · Ioan Bizău

feat: title and subtitle on property pages

[no changelog]

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
cryptography-sensitive pathboot or update path
AI analysis · Informational 15/100

This commit is a routine user-interface feature addition. It lets certain 'property' display screens show an optional subtitle and gives callers a way to override the page title. There is no security-relevant change in the diff.

Lower-priorityrefactor: extract `confirm_linear_flow`by Ioan Bizău · 62345f2d · Jan 12, 2026 · 3 filesMessage 47 · ThinInformational 15Details
Commit message · Ioan Bizău

refactor: extract `confirm_linear_flow`

[no changelog]

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is a routine code cleanup: it pulls a repeated user-interface loop into a shared helper function called confirm_linear_flow. There is no change to security behavior, no bug fix, and no indication of a vulnerability.

Security candidatefeat: confirm cancel outputby Ioan Bizău · c1e9277b · Jan 12, 2026 · 12 filesMessage 47 · ThinInformational 15Details
Commit message · Ioan Bizău

feat: confirm cancel output

[no changelog]

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathboot or update path
AI analysis · Informational 15/100

This commit adds a new on-screen prompt that asks users to confirm they really want to cancel a transaction-signing flow. It is a user-experience and safety feature, not a security fix. There is no evidence of a vulnerability being patched.

Lower-prioritychore: update fixturesby Ioan Bizău · bfe516ba · Jan 12, 2026 · 1 fileMessage 40 · ThinInformational 15Details
Commit message · Ioan Bizău

chore: update fixtures

[no changelog]

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only updates expected test result hashes (called 'fixtures') in a single JSON file used by the Trezor firmware UI test suite. There are no code changes, no firmware changes, and no user-facing behavior changes. It is a routine maintenance update to keep automated tests passing after unrelated visual or internal changes elsewhere in the project.

Security candidaterefactor: introduce `StrPropertyType`by Ioan Bizău · 8129ce47 · Jan 12, 2026 · 14 filesMessage 70 · AdequateInformational 15Details
Commit message · Ioan Bizău

refactor: introduce `StrPropertyType`

* for properties that cannot have `bytes` values, which `PropertyType`
allows
* also replace `str(x)` calls with `x or ""` for dealing with the `None`
case

[no changelog]

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive pathsigning or wallet pathboot or update path
AI analysis · Informational 15/100

This commit is a straightforward internal code cleanup. It introduces a new type alias called StrPropertyType for UI properties that are always text strings (never raw bytes), and replaces some str(x) conversions with x or "" to handle possible None values more cleanly. There is no indication this fixes a security bug or changes user-visible behavior.

Security candidatefeat(eckhart): back button on confirm_valueby Ioan Bizău · aa857fa3 · Jan 12, 2026 · 7 filesMessage 57 · ThinInformational 15Details
Commit message · Ioan Bizău

feat(eckhart): back button on confirm_value

[no changelog]

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
cryptography-sensitive pathboot or update path
AI analysis · Informational 15/100

This commit adds a new optional 'back button' to a Trezor screen type called confirm_value. It is a user-interface feature for the upcoming Eckhart hardware model and does not fix or introduce any security vulnerability. The change simply lets callers request a back arrow instead of a cancel cross, and wires that through the Rust UI layer for all supported device layouts.

Security candidatefeat(delizia): swipe to go back on confirm_valueby Ioan Bizău · 90e30e57 · Jan 12, 2026 · 7 filesMessage 57 · ThinInformational 19Details
Commit message · Ioan Bizău

feat(delizia): swipe to go back on confirm_value

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathboot or update path
AI analysis · Informational 19/100

This commit adds a 'swipe down to go back' feature to the Delizia user interface on Trezor hardware wallets. When reviewing a cryptocurrency transaction, a user can now swipe down on the amount screen to return to the address screen and double-check it. It is a usability improvement, not a fix for a vulnerability.

Security candidaterefactor: use `ConfirmActionOptions` in `ConfirmValue`by Ioan Bizău · eb5ede77 · Jan 12, 2026 · 3 filesMessage 62 · AdequateInformational 15Details
Commit message · Ioan Bizău

refactor: use `ConfirmActionOptions` in `ConfirmValue`

[no changelog]

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit is a straightforward internal code cleanup in the Trezor firmware's user-interface layer. It replaces several individual settings inside a 'ConfirmValue' screen builder with a shared 'ConfirmActionOptions' object. There is no change to user-visible behavior or to security logic; it is purely a refactor to reduce duplicated code.

Security candidaterefactor: extract `ConfirmActionOptions`by Ioan Bizău · 3f0cbc03 · Jan 12, 2026 · 4 filesMessage 47 · ThinInformational 15Details
Commit message · Ioan Bizău

refactor: extract `ConfirmActionOptions`

[no changelog]

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit is a straightforward code cleanup: it bundles several settings for confirmation screens into a single ConfirmActionOptions struct instead of passing them as separate function arguments. There is no change to user-facing behavior, no bug fix, and no security-related change.

Security candidatefeat(core): Add error handling in driver init functions + update syscall stubs.by kopecdav · 2caaca62 · Jan 12, 2026 · 9 filesMessage 62 · AdequateLow 26Details
Commit message · kopecdav

feat(core): Add error handling in driver init functions + update syscall stubs.

[no changelog]

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Low 26/100

This commit changes how the Trezor firmware's vibration motor (haptic) driver reports and handles errors. Previously, some haptic functions returned simple true/false success values, and some callers ignored the result of initialization. Now those functions return a structured status code, callers capture the status (though mostly still ignore it), and one resume path actually halts on failure. A test-only haptic syscall was removed. The changes are defensive cleanups rather than a fix for a known exploitable bug, but they reduce the chance that a failing haptic device could leave the system in an inconsistent state.

Lower-priorityfix(core/prodtest): fix haptic test.by kopecdav · b8ee9641 · Jan 12, 2026 · 1 fileMessage 67 · AdequateInformational 12Details
Commit message · kopecdav

fix(core/prodtest): fix haptic test.

[no changelog]

67/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 12/100

This is a small fix to the Trezor hardware wallet's production-line testing tool for the vibration motor (haptic feedback). It renames a variable, updates the driver initialization and playback calls to use newer error-handling types, and switches from a fixed vibration pattern to a custom 100 Hz vibration lasting the user-specified duration. There is no indication this change fixes a security vulnerability or affects end-user device security.

Lower-priorityfeat(core): rework haptic driver.by kopecdav · ca5b4083 · Jan 12, 2026 · 19 filesMessage 80 · StrongInformational 17Details
Commit message · kopecdav

feat(core): rework haptic driver.

Major rework of the haptic driver to improve the haptic feedback of the T3W1 click
- Rename driver from `drv2625` to `drv262x`, since we use it to control compatible models drv2624 and drv2625
- Fix driver configuration to properly configure close loop and open loop operation. T3W1 driver was configured to work in close_loop mode.
- Add waveform playbacks on drv2624 + new button click haptic effect
- Update actuator configuration files with more control parameters.
- Add error handling and tidy up the driver API comments.
- Removed `haptic_test` function since it could be directly replaced with `haptic_play_custom`

[no changelog]

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
AI analysis · Informational 17/100

This commit is a routine hardware-driver refactor for the vibration motor (haptic feedback) in Trezor devices. It renames the driver, adds support for a second chip model, fixes how closed-loop vs open-loop motor control is configured, and improves error handling. There is no direct evidence in the commit that this fixes an exploitable security vulnerability; it appears to be a product-quality and maintainability improvement.

Lower-prioritychore: update fixturesby Ioan Bizău · a5ec9b36 · Jan 9, 2026 · 1 fileMessage 40 · ThinInformational 15Details
Commit message · Ioan Bizău

chore: update fixtures

[no changelog]

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only adds new expected screen-image fingerprints (called 'fixtures') for automated user-interface tests. It does not change any wallet code, transaction logic, or security behavior. There is no security issue here.

AI review queuedfeat(tests): cancel output flow on amount screenby Ioan Bizău · cee23581 · Jan 9, 2026 · 2 filesMessage 67 · AdequateInformational 15Details
Commit message · Ioan Bizău

feat(tests): cancel output flow on amount screen

[no changelog]

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

This commit only adds a new automated test for the Trezor hardware wallet. The test checks that a user can cancel a Bitcoin transaction signing flow from the amount confirmation screen on newer device models. It does not change any firmware, wallet logic, or security behavior. There is no security issue here.

Lower-prioritychore(core): correct translation check annotation and docstringby Roman Zeyde · 554fa2c4 · Jan 9, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · Roman Zeyde

chore(core): correct translation check annotation and docstring

[no changelog]

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This is a tiny documentation-only change. A helper function's type hint was updated from 'bool or None' to just 'bool', and the docstring line saying it could return None when no translation blob exists was removed. No actual code behavior changed, and there is no security relevance.

Lower-priorityfix(python): avoid dropping WebUSB chunks in case of a timeoutby Roman Zeyde · 1ec290d5 · Jan 9, 2026 · 2 filesMessage 93 · StrongLow 45Details
Commit message · Roman Zeyde

fix(python): avoid dropping WebUSB chunks in case of a timeout

`libusb1` may return the received data even in case of a timeout
https://github.com/vpelletier/python-libusb1/blob/292143c8f4465fdcb2c35ed40cdd7e4dd8d031e1/usb1/__init__.py#L1567

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Low 45/100

This commit fixes a bug in the Python Trezor library's WebUSB communication code. Previously, if a USB read operation timed out but had already received some data, that partial data was silently thrown away. Now the code checks whether any data was received before the timeout and uses it if it is a valid full chunk. This could prevent communication failures or dropped messages when talking to a Trezor device over USB, especially under timing pressure.

Security candidaterefactor(core/bootloader): unify bootloader event loop in rustby tychovrahe · fc2b18da · Jan 8, 2026 · 27 filesMessage 62 · AdequateLow 28Details
Commit message · tychovrahe

refactor(core/bootloader): unify bootloader event loop in rust

[no changelog]

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
update trustcryptography-sensitive pathboot or update path
AI analysis · Low 28/100

This commit is a large internal refactor of the Trezor bootloader's event loop, moving it from C into Rust and changing how screens handle USB/Bluetooth communication. The title and message explicitly call it a refactor with '[no changelog]', and there is no vendor statement that this fixes a security bug. The diff shows substantial code movement but no obvious new vulnerability. Because it is a wide-reaching rewrite of security-critical boot-time code, it carries ordinary implementation risk, but the available materials do not demonstrate a concrete security issue.

Lower-priorityfix(tests): UI diff scriptingby Ioan Bizău · 2d8a74a0 · Jan 7, 2026 · 6 filesMessage 90 · StrongInformational 15Details
Commit message · Ioan Bizău

fix(tests): UI diff scripting

* move inline script to an external file
* include `pixelmatch` in that external file
* replace inline `onload` and `onclick` scripts with events attached in
`onLoad`
* wait for images to load before doing the diff

[no changelog]

90/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit is a test-infrastructure cleanup. It moves JavaScript code out of HTML files into a shared external file, bundles the pixelmatch image-comparison library locally instead of loading it from a CDN, and makes the UI test reports wait for images to finish loading before comparing them. There is no security-relevant change to the Trezor firmware or wallet behavior.

Security candidatefix(core/bootloader): fix bootloader size alignmentby cepetr · dcd23b9a · Jan 7, 2026 · 2 filesMessage 62 · AdequateLow 43Details
Commit message · cepetr

fix(core/bootloader): fix bootloader size alignment

[no changelog]

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
update trustboot or update path
AI analysis · Low 43/100

This commit adjusts how the Trezor bootloader's length is calculated and pads the bootloader image to a 512-byte boundary. The old calculation added the sizes of two memory sections, which could produce a value that does not match the actual padded image size. The new calculation uses a dedicated end marker, and the linker script now explicitly fills unused space with zeros and aligns the image. This is a defensive fix in low-level firmware packaging; it does not by itself show an exploitable bug, but misaligned or incorrectly reported bootloader sizes could theoretically cause verification or update failures.

Lower-priorityfix(core): fix wrong type of returned valueby cepetr · 06a8c201 · Jan 7, 2026 · 1 fileMessage 57 · ThinModerate 59Details
Commit message · cepetr

fix(core): fix wrong type of returned value

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Moderate 59/100

A function that reads firmware image headers was returning the wrong kind of error value. In C, returning a special 'false' value where a pointer is expected can confuse the rest of the program, potentially causing crashes or allowing a malformed firmware image to be treated as valid. The patch makes all error paths consistently return NULL, which is the normal 'no valid header' indicator for this function.

Security candidatefix(core/bootloader): fix unsafe fw warning screen alignmentby tychovrahe · 7083b949 · Jan 7, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · tychovrahe

fix(core/bootloader): fix unsafe fw warning screen alignment

[no changelog]

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

This commit fixes the horizontal centering of a small vendor logo shown on the bootloader's 'unsafe firmware' warning screen. The old code subtracted 22 pixels from the screen width before dividing by two, which would slightly offset the 24x24 image. The new code simply centers the image using the screen's midpoint. There is no security-relevant change in the diff itself.

Lower-priorityfix(core): Error handling in prodtest_tropic.cby Andrew Kozlik · 10e19549 · Jan 7, 2026 · 1 fileMessage 57 · ThinInformational 18Details
Commit message · Andrew Kozlik

fix(core): Error handling in prodtest_tropic.c

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 18/100

This commit improves error messages and logging in a Trezor production-test command file for the Tropic chip. It does not change program logic, access controls, or cryptographic checks; it only makes failures easier to diagnose by printing the actual numeric error code and correcting a misleading function name in one message. The change is in a prodtest (factory testing) tool, not in the wallet firmware that end users rely on for securing funds.

Lower-priorityfeat(core): put error handling module to trezor_types.by kopecdav · b0c1a56d · Jan 7, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · kopecdav

feat(core): put error handling module to trezor_types.

[no changelog]

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit simply moves an internal header file inclusion from one place to another. It is a routine code organization change with no visible security effect.

Lower-priorityfeat(core): add TS_ENOINIT error code.by kopecdav · db6a17c2 · Jan 7, 2026 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · kopecdav

feat(core): add TS_ENOINIT error code.

[no changelog]

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only adds a new error code constant named TS_ENOINIT ('Not initialized') to a header file. It does not change any runtime behavior, fix a bug, or alter how the device handles errors. There is no security relevance visible in the change itself.