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.
Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.
This commit only updates test data. It corrects the capitalization (checksum) of Ethereum addresses used in automated tests and refreshes the expected screen-shot hashes those tests compare against. There are no changes to the actual Trezo…
This commit changes the Trezor Python library so that, when setting up a Trezor Model One (the original Trezor 1 device), it now performs an entropy check by default if the device runs firmware 1.13.1 or newer. Previously, the library only…
Enables a previously disabled security/validation feature (entropy check) for a specific device modelAdds version-gated behavior to avoid errors on older firmwareDefensive hardening of wallet setup randomness verification
This commit is a routine cleanup that removes the old SCons build system files from the Trezor Core firmware repository. It deletes Makefiles, SConscripts, and related Python helper scripts, but does not change any firmware source code, cr…
This commit updates Trezor's embedded MicroPython interpreter from an older version to 1.28.0. It pulls in several upstream MicroPython bug fixes, including stricter buffer-size checks for converting integers to bytes, a new stack-safety A…
Synchronizes upstream MicroPython fixes that include buffer-size and stack-safety hardeningPrevents Ctrl+C interruption of frozen boot code, reducing denial-of-service/control-flow risk during bootFixes sys.stdout.buffer.write() return value, which could affect code relying on correct I/O semantics
This is a large but straightforward internal cleanup: the project switched from using the MicroPython `ubinascii` module's `hexlify`/`unhexlify` functions to the standard Python `bytes.hex()` and `bytes.fromhex()` methods. The change remov…
This is a code cleanup change in Trezor's firmware that swaps one MicroPython internal helper for another. It replaces calls that create byte or string objects from a vstr buffer with newer, purpose-built helpers. The commit message says t…
Refactor only: helper function renames with equivalent semanticsNew str helper adds UTF-8 validation; bytes helper does not validateNo input validation, length, or error-handling changes observed
This commit is a large but purely mechanical code cleanup: it replaces the custom STATIC macro with the standard C keyword static across many MicroPython module files. There is no change to program logic, security boundaries, or behavior. …
This commit is a routine code cleanup that updates Trezor firmware to match a newer MicroPython version where built-in module names dropped the 'u' prefix (for example, 'uos' became 'os' and 'ustruct' became 'struct'). It renames imports, …
This commit only updates the firmware version number from 2.12.4 to 2.12.5 in the source code and translation files. It does not change any security-related logic, fix any bug, or alter any cryptographic behavior. It is a routine release b…
This commit adds Bluetooth Low Energy (BLE) support for the Trezor T3T2 hardware model. It introduces new board configuration files, pin mappings, build scripts, and firmware binaries for the Nordic nRF54LS05A BLE radio used in T3T2. There…
This commit is a large but straightforward internal refactoring: the cryptographic code is moved from one Rust crate (`rtl`) into a new dedicated crate (`crypto`), and all project dependencies are updated to point to the new crate. The act…
No security-relevant code changes detectedRefactoring only: moving existing crypto wrappers and build logic into a new crateFeature flags and C source lists preserved from the original `rtl` crate
This commit is a code cleanup that moves how Trezor firmware handles fatal errors and shutdowns between its internal software layers. It does not add new user-facing features or change security protections. The main risk is that reorganizi…
Refactor of fatal-error and shutdown code pathsNew noreturn annotations on systask_exit, systask_exit_error, systask_exit_fatal, systask_killRemoval of duplicated test-only system_exit_error/system_exit_fatal implementations
This commit changes a single on-screen label in the Trezor bootloader from lowercase 'Change fw vendor' to uppercase 'Change FW vendor'. It is purely a cosmetic wording fix with no security relevance.
This commit adds support in Trezor's Ethereum clear-signing feature for transactions that contain multiple embedded subcalls (like a multicall). Previously, only a single embedded call could be clearly displayed. The change lets the device…
New input validation added: callee array length must match subcall array lengthType validation enforced: each subcall blob must be bytes, each callee must be a 20-byte addressGraceful degradation preserved: unparseable subcalls fall back to raw hex display rather than failing the whole transaction
This commit only adds new automated tests for Trezor's Ethereum 'clear signing' feature. It includes a test case for an Aave multi-call transaction, a matching test data blob, and expected screen snapshots for different device models and l…
This commit fixes a user-interface bug in Trezor's Ethereum 'clear signing' flow where the transaction's native ETH amount could be shown twice on the device screen. The old code tried to avoid duplication by checking whether an 'AmountFor…
No cryptographic, authorization, memory-safety, or input-validation changesChange is limited to on-screen display deduplication logicNo changelog entry requested by the vendor ('[no changelog]')
This commit adds a new display formatter for Ethereum clear signing. It lets a transaction descriptor map numeric enum values (like 1 or 2) to human-readable labels (like 'stable' or 'variable') on the Trezor screen. The change is purely a…
New formatter raises InvalidFormatDefinition on unexpected/missing enum values, causing fallback to blind signing rather than displaying an untrusted labelDuplicate enum keys are rejected at descriptor decode timeNon-integer enum values are rejected at format time
This commit only adds a new automated test case for an existing Ethereum transaction display feature. It does not change any production firmware code, so it cannot introduce a security vulnerability or fix one. It is purely a test-data add…
This commit adds a new Trezor firmware feature called 'clear signing' for nested Ethereum calls. It lets the device understand when a transaction wraps another contract call (like a router or multicall) and tries to show the user readable …
New nested calldata parsing path with explicit depth cap of 1@.to override to callee to prevent token resolution from pointing at the wrapper contract@.from and @.value rejected in nested parse to avoid displaying confidently wrong sender/value
This commit is a test-only addition for Trezor's Ethereum 'clear signing' feature. It adds new test cases and makes a small production-code tweak so that enum display-formatters can accept byte values (converted to integers). The change is…
Production code change is a type-handling relaxation in display formatting onlyNo changelog entry; commit is explicitly test-focusedNo vendor security disclosure or advisory referenced
Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.
Lower-prioritychore(vendor): bump micropython to 1.28.0by Martin Milata · 834f4c30 · Aug 3, 2026 · 1 fileMessage 57 · ThinTriage 0Details
Commit message · Martin Milata
chore(vendor): bump micropython to 1.28.0
57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Security candidaterefactor(core): replace hexlify with bytes.hex()by Martin Milata · 44aa469e · Aug 3, 2026 · 120 filesMessage 80 · StrongInformational 15Details
Commit message · Martin Milata
refactor(core): replace hexlify with bytes.hex()
Relevant micropython commits: 28aaab95909aab092cc8c16188fec157142f18a9 py/objstr: Add hex/fromhex to bytes/memoryview/bytearray.
[no changelog]
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive pathseed or entropy pathsigning or wallet pathboot or update pathauthentication path
AI analysis · Informational 15/100
This is a large but straightforward internal cleanup: the project switched from using the MicroPython `ubinascii` module's `hexlify`/`unhexlify` functions to the standard Python `bytes.hex()` and `bytes.fromhex()` methods. The change removes the `ubinascii` module from the firmware build and updates many source and test files to use the new built-in methods. There is no security fix or vulnerability being patched here.
Security candidaterefactor(core): replace m_new_obj_with_finaliserby Martin Milata · 142794ea · Aug 3, 2026 · 19 filesMessage 70 · AdequateTriage 15Details
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
boot or update path
Security candidaterefactor(core): use mp_obj_new_str_from_cstrby Martin Milata · 6a889e6a · Aug 3, 2026 · 3 filesMessage 70 · AdequateTriage 15Details
Commit message · Martin Milata
refactor(core): use mp_obj_new_str_from_cstr
Relevant micropython commits: 289b2dd87960a4cdf019013cecd489f0d0cabc26 py/objstr: Add new mp_obj_new_str_from_cstr() helper function.
[no changelog]
70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
Security candidaterefactor(core): use mp_obj_new_str_from_vstrby Martin Milata · 7ea11191 · Aug 3, 2026 · 33 filesMessage 70 · AdequateInformational 17Details
Commit message · Martin Milata
refactor(core): use mp_obj_new_str_from_vstr
The str variant now also does UTF-8 validation which can be removed to improve performance where justified.
Relevant micropython commits: 0b9ee86133a2a0524691c6cdac209dbfcb3bf116 py: Add mp_obj_new_str_from_vstr, and use it where relevant. 88864587f5af292d7f86aceb6bf40e8331e9a8d6 py/objstr: Always ensure mp_obj_str_from_vstr is unicode-safe.
[no changelog]
70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive pathseed or entropy path
AI analysis · Informational 17/100
This is a code cleanup change in Trezor's firmware that swaps one MicroPython internal helper for another. It replaces calls that create byte or string objects from a vstr buffer with newer, purpose-built helpers. The commit message says the new string helper also does UTF-8 validation, which can be skipped where performance matters. The change itself does not introduce a known vulnerability; it is a refactor to match upstream MicroPython conventions.
Security candidaterefactor(core): switch to slots-based mp_obj_type_tby Martin Milata · ab51798f · Aug 3, 2026 · 24 filesMessage 85 · StrongTriage 15Details
Commit message · Martin Milata
refactor(core): switch to slots-based mp_obj_type_t
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
Security candidaterefactor(core/rust): bindgen wrapper for calling static micropython functionsby Martin Milata · d5121d92 · Aug 3, 2026 · 6 filesMessage 62 · AdequateTriage 12Details
Commit message · Martin Milata
refactor(core/rust): bindgen wrapper for calling static micropython functions
[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
Lower-priorityrefactor(core): update users of micropython uzlibby Martin Milata · 709075c1 · Aug 3, 2026 · 3 filesMessage 80 · StrongTriage 0Details
Commit message · Martin Milata
refactor(core): update users of micropython uzlib
Relevant micropython changes: c2b8e6e5d685ce0ef7cd7186f326cac8a39eb2a3 lib/uzlib: Clean up tinf -> uzlib rename. e6c290c3d145de81e23f406c84359860c4d6e632 lib/uzlib: Add a source_read_data var to pass to source_read_cb.
Needs trezor-specific patch.
[no changelog]
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Security candidatebuild(core): adjust mpy-cross pathsby Martin Milata · 2ef70e16 · Aug 3, 2026 · 4 filesMessage 80 · StrongTriage 12Details
Commit message · Martin Milata
build(core): adjust mpy-cross paths
Relevant micropython commits: b2e82402688b53829f37475583231b067b9faea7 py/mkrules.mk: Keep all build artefacts inside $(BUILD) directory. 47c84286e8c8d9873e99f12711a683ecd6b9ca62 all: Fix paths to mpy-cross and micropython binaries.
[no changelog]
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Relevant micropython commits: 2c828a88153dfdbd767fc0d8f2124cfbefdcbc81 unix: Update port to use the new event functions. 2757acf6ed1fe165e4d8aa72ba8090fb9bc60c31 py/nlr: Implement jump callbacks. 3446d440f661cf3c052c08e5c6879b1e59a478bb shared/runtime/gchelper: Drop cpu directive from ARM asm helpers.
[no changelog]
85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
boot or update path
Lower-priorityrefactor(core): port modtrezorutils-meminfo to micropython-1.28.0by Martin Milata · a6f7f8a6 · Aug 3, 2026 · 1 fileMessage 62 · AdequateTriage 0Details
Commit message · Martin Milata
refactor(core): port modtrezorutils-meminfo to micropython-1.28.0
[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
Security candidaterefactor(core): disable sys.argv for firmwareby Martin Milata · 3a43e8b7 · Aug 3, 2026 · 3 filesMessage 57 · ThinTriage 12Details
Commit message · Martin Milata
refactor(core): disable sys.argv for firmware
[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
boot or update path
Lower-prioritychore(core): update fixturesby Martin Milata · 4c8a38f2 · Aug 3, 2026 · 1 fileMessage 47 · ThinTriage 0Details
Commit message · Martin Milata
chore(core): update fixtures
[no changelog]
47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Security candidaterefactor(core): get rid of the STATIC macroby Martin Milata · 053def4c · Aug 3, 2026 · 57 filesMessage 80 · StrongInformational 15Details
Commit message · Martin Milata
refactor(core): get rid of the STATIC macro
Relevant micropython changes: decf8e6a8bb940d5829ca3296790631fcece7b21 all: Remove the "STATIC" macro and just use "static" instead.
[no changelog]
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive pathseed or entropy path
AI analysis · Informational 15/100
This commit is a large but purely mechanical code cleanup: it replaces the custom STATIC macro with the standard C keyword static across many MicroPython module files. There is no change to program logic, security boundaries, or behavior. It also removes build-system workarounds that were only needed because the old macro was being abused to expose internal functions.
Security candidaterefactor(core): micropython time moduleby Martin Milata · a812f2a9 · Aug 3, 2026 · 6 filesMessage 80 · StrongTriage 12Details
Commit message · Martin Milata
refactor(core): micropython time module
Relevant micropython commits: 995555300181b3385855f5a4ffb629441553d3ea extmod/modutime: Provide a generic time module. df05caea6c6437a8b4756ec502a5e6210f4b6256 shared/timeutils: Standardize supported date range on all platforms.
[no changelog]
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
boot or update path
AI review queuedrefactor(core/rust): update obj_type! for slots-based mp_obj_type_tby Martin Milata · aba19a5a · Aug 3, 2026 · 15 filesMessage 85 · StrongTriage 7Details
Commit message · Martin Milata
refactor(core/rust): update obj_type! for slots-based mp_obj_type_t
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
Security candidaterefactor(core): sync projects/unix/main.c with micropythonby Martin Milata · d2938a67 · Aug 3, 2026 · 9 filesMessage 97 · StrongTriage 12Details
Commit message · Martin Milata
refactor(core): sync projects/unix/main.c with micropython
The file is now be quite similar to the upstream one to make future updates easier. Notable differences include:
- entry point is `coreapp_emu()` instead of `main()` - different command line handling that loads `main` if no module or command is provided - no filesystem access for frozen emulator to prevent it from loading live modules - no default sys.path
[no changelog]
97/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Relevant micropython commits: 45ac651d1a2801bccbdc32fddaa9b029ed4ce879 all: Rename *umodule*.c to remove the "u" prefix. f5f9edf6457624bf32e71b0c2fdcfbfa5d5753a6 all: Rename UMODULE to MODULE in preprocessor/Makefile vars.
[no changelog]
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive pathsigning or wallet pathboot or update pathauthentication path
AI analysis · Informational 15/100
This commit is a routine code cleanup that updates Trezor firmware to match a newer MicroPython version where built-in module names dropped the 'u' prefix (for example, 'uos' became 'os' and 'ustruct' became 'struct'). It renames imports, configuration flags, and source file references, and removes old mock files. There is no security fix or vulnerability here.
Lower-prioritychore(core): update common changelog as wellby Roman Zeyde · 8c04a8fb · Aug 3, 2026 · 1 fileMessage 80 · StrongTriage 0Details
Commit message · Roman Zeyde
chore(core): update common changelog as well
Following https://github.com/trezor/trezor-firmware/pull/7458.
[no changelog]
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
Lower-priorityfix(core): fix deadlock in systask_kill()by cepetr · 505a9d65 · Aug 3, 2026 · 4 filesMessage 57 · ThinTriage 0Details
Commit message · cepetr
fix(core): fix deadlock in systask_kill()
[no changelog]
57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Security candidatechore(core): bump version to 2.12.5by Martin Milata · 82c04645 · Aug 3, 2026 · 8 filesMessage 57 · ThinInformational 15Details
Commit message · Martin Milata
chore(core): bump version to 2.12.5
[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 15/100
This commit only updates the firmware version number from 2.12.4 to 2.12.5 in the source code and translation files. It does not change any security-related logic, fix any bug, or alter any cryptographic behavior. It is a routine release bookkeeping change with no security relevance.