TZ
← All projectsTrezor

Trezor firmware

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

BitcoinHardware walletsNormal
Repository coverage

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

1126security candidates372second-pass queue2926AI analyses
284commits · 30 days
706commits · 60 days
1648commits · 180 days
2690commits · 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.

67/100 average clarity
639Strong · 80–100
1553Adequate · 60–79
1038Thin · 40–59
7Opaque · 0–39
1security candidate 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.
tychovrahe343134322564
Roman Zeyde676214620372
obrusvit25796236364
PrisionMike10866106272
Andrew Kozlik833481268
Petr Susil202299
Jakub Janků591838180
Martin Pastyřík26823173
cepetr264106222059
M1nd3r24689227071
Ioan Bizău23076230059
Lukas Bielesch856784067
Analysis record

Published AI watches

Last scanned 35 minutes ago

Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): improvements to English copy

This commit is a routine text cleanup for the Trezor hardware wallet's on-screen English messages. It fixes punctuation, removes unnecessary line breaks, and makes small wording tweaks (for example, changing 'PIN will be required' to 'A PI…

1dbc2c3cby Michal Kazda+22−422 files
No security note in commit
Moderate 59 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): app root packet downgrade protection

This commit adds downgrade protection for a new 'app root packet' system in Trezor firmware. Previously, the code had a TODO note saying downgrade protection needed to be considered. The change makes the device remember the timestamps of p…

Replaces a TODO comment ('!@# TODO: Consider downgrade protection') with concrete timestamp-based anti-downgrade checksAdds per-ring timestamp state to prevent rollback of root-of-trust packetsAdds chain_timestamp field and 90-day drift bound to root packet format
4a9cf168by cepetr+335−3112 files
No security note in commit
Moderate 67 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core/rust): discard low-order keys in THP handshake

This commit fixes a cryptographic edge case in Trezor's THP (Trezor Host Protocol) handshake. It now rejects Curve25519 public keys that are all zeros or that produce an all-zero shared secret. A zero public key can cause the Diffie-Hellma…

Curve25519 zero/low-order public key rejection added to DHZero shared-secret output rejected after scalar multiplicationHandshake state machine now transitions to Failed on initiation-response error
429a283dby M1nd3r+45−74 files
No security note in commit
Informational 11 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): enable `ward` with `miniscript`

This commit changes one line in a build configuration file for the Trezor hardware wallet firmware. It adds the 'ward' feature to the existing 'miniscript' feature set. There is no direct evidence in the commit that this is a security fix;…

Single-line Cargo.toml feature flag changeNo code logic modificationNo changelog or security note in commit message
d434a636by Jakub Janků+1−11 file
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): add `ward` feature flag

This commit adds a new disabled-by-default feature flag called 'ward' to the Trezor firmware build system. It does not change any production firmware behavior; it only wires up a placeholder MicroPython module and build options so that fut…

New feature flag is disabled by default and gated behind optional Cargo featuresCommit message explicitly states intent to exclude WARD from production firmware buildsNew MicroPython module is a stub with no exported functions beyond __name__
7b58e75aby Jakub Janků+55−018 files
No security note in commit
Low 27 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

feat(core): enable -Wsign-compare

This commit turns on a compiler warning (-Wsign-compare) that catches places where signed and unsigned numbers are compared, and fixes the resulting warnings across the Trezor firmware. Most changes are clean-up casts and loop-index type c…

Compiler warning -Wsign-compare enabled, indicating prior signed/unsigned comparison issuesI/O return-value checks hardened against negative ssize_t values being treated as successPython binding offset/length validation tightened in Monero crypto module
1cc940a4by cepetr+162−15247 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): merge passphrase__access_hidden_wallet into passphrase__access_wallet

This commit is a simple user-interface cleanup. It removes one duplicate translation label ('Access hidden wallet') and makes the device use a single, consistent label ('Access wallet') when asking the user to confirm opening a passphrase-…

65402aecby Michal Kazda+2−103 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): merge passphrase__hidden_wallet into passphrase__wallet

This commit is a simple user-interface cleanup. It merges two translation labels that both meant 'Passphrase wallet' into a single label, and updates the screens that used the old duplicate label. There is no security-relevant behavior cha…

7ce6887fby Michal Kazda+5−184 files
No security note in commit
Low 45 AI analysisMessage 85 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core/bootloader): keep the full block length for block-0 retries

This commit fixes a bug in the Trezor bootloader's firmware-update code. When updating firmware, the first block of data is fetched in two pieces: a small initial 'header prefetch,' then the rest. If a communication error happened and the …

Firmware update reliability bug in bootloaderBlock-0 retry path truncated data before hash verificationHash mismatch caused by buffer offset/size mismatch, not by attacker
dc937ba2by tychovrahe+81−711 file
No security note in commit
Informational 12 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core/bootloader): separate image upload and image checks

This commit is a code cleanup in the Trezor bootloader. It moves the generic, image-type-agnostic parts of firmware upload (chunk receiving, retry logic, flash erasing/writing, timeouts) into a new reusable module called wf_image_upload.c,…

Refactor only: logic moved, not changed in security-relevant waysSame signature/version/model/downgrade checks remain in firmware-specific handlerSame flash erase/write sequence preserved in generic engine
caab7d9eby tychovrahe+772−4834 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): remove unused trezor_lib/ui feature

This commit removes an unused Rust Cargo feature flag called 'ui' from the Trezor firmware build configuration. It is a cleanup change: the feature was always enabled in practice, so the code now compiles unconditionally. There is no secur…

1436fbc6by cepetr+2−158 files
No security note in commit
Low 27 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core/caesar): change confirm middle button

This commit changes how users confirm an Ethereum authorization screen on Trezor's 'Caesar' layout. Previously, the user had to hold down a button to approve; now a simple tap is enough. The change only affects the user-interface interacti…

UI confirmation gesture changed from hold-to-confirm to tap-to-confirmOnly affects EIP-7702 authorization flow on Caesar (T3B1) layoutTest fixture hashes updated for all supported languages
e231cc94by obrusvit+50−502 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): merge firmware and unix cargo packages

This commit is a routine internal cleanup that merges two separate build packages (one for real hardware firmware and one for the desktop emulator) into a single package. It moves source files into subdirectories and updates build scripts …

6be32440by cepetr+48−32025 files
No security note in commit
Informational 15 AI analysisMessage 67 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core): test aes gcm only if enabled

This commit is a minor build/test maintenance change. It adds a feature flag (USE_AES_GCM) so that AES-GCM tests are only run when the feature is actually enabled in a particular firmware build. There is no security fix or vulnerability be…

890aca93by cepetr+13−14 files
No security note in commit
Informational 15 AI analysisMessage 95 · Strong
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(python, tests): add and update GNU licence headers

This commit only adds or updates copyright and GNU license header comments in Python test and tooling files. It makes no changes to executable code, so it cannot introduce a security vulnerability or fix one.

6dc781c2by M1nd3r+1202−203250 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

refactor(core): move the multisig XPUB title into a translation template

This commit is a straightforward code cleanup: it moves the on-screen title for multisig XPUB screens from hard-coded English text into the device's translation system. The visible text remains essentially the same, and there is no securit…

6d69df16by Michal Kazda+20279−2023911 files
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
TZ TrezorTrezor firmware BitcoinHardware wallets

chore(core/bolt): remove unneeded `use` statements

This commit simply removes two unused Rust import statements (called `use` statements). It does not change any actual code behavior, logic, or security properties of the Trezor firmware.

a56f8c3dby Roman Zeyde+0−22 files
No security note in commit
Informational 18 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): add missing colon in Tron

This commit fixes a UI formatting bug in the Tron cryptocurrency flow on Trezor hardware wallets. A missing colon was added to account information labels shown on the device screen. The change is cosmetic and does not appear to affect cryp…

UI label formatting fix onlyNo changes to signature verification, key handling, or transaction authorizationNo buffer size, memory allocation, or input validation changes observed
739c2968by Michal Kazda+19332−193364 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
TZ TrezorTrezor firmware BitcoinHardware wallets

fix(core): combine path/account with labels

This commit is a straightforward user-interface refactoring. It bundles an account/path label together with its corresponding value into a single tuple, instead of passing them as four separate arguments. There is no security-relevant chan…

c66f6f4dby Michal Kazda+51−7413 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 candidatefeat(core,python): support definitions version 2by obrusvit · 3a9af975 · Aug 28, 2026 · 6 filesMessage 77 · AdequateLow 29Details
Commit message · obrusvit

feat(core,python): support definitions version 2

- version 2 will require only one signature

[no changelog]

77/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Names security-relevant behavior explicitly
Why it was queued
signing boundary
AI analysis · Low 29/100

This commit adds support for a new 'version 2' format for external definitions in Trezor firmware. The key change is that version 2 requires only one cryptographic signature to validate a definition, whereas version 1 required two. This is a deliberate design change, not a bug, but it reduces the number of independent parties that must sign off before a definition is trusted by the device. The commit does not by itself introduce an exploit, but it lowers the bar for an attacker who could compromise a single signing key or signer.

AI review queuedchore(l10n): only add period to send__cancel_sign in Eckhartby Michal Kazda · d07557cd · Aug 27, 2026 · 9 filesMessage 77 · AdequateInformational 15Details
Commit message · Michal Kazda

chore(l10n): only add period to send__cancel_sign in Eckhart
- remove from Bolt and Caesar, which do not use send__cancel_sign
[no changelog]

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a minor localization cleanup. It removes a trailing period from the 'Cancel sign' translation string in older product layouts (Bolt, Caesar, Delizia) and keeps the period only in the newest layout (Eckhart). It also updates the translation signature file. There is no security relevance.

Security candidatefix(core): render a full-turn sector as a full circleby tychovrahe · 05feac72 · Aug 27, 2026 · 1 fileMessage 85 · StrongInformational 19Details
Commit message · tychovrahe

fix(core): render a full-turn sector as a full circle

`fill_sector` normalizes both endpoints into <0..360), which maps a span
of exactly one turn onto a single value. The octant loop reads that as a
zero-width sector and skips all eight octants, and the centre pixel is
skipped as well, so the call draws nothing at all where a full circle is
meant.

Detect the span before normalizing and pin it to the full range. Only a
forward span counts, so the `start > end` wrap-around convention and every
partial sector keep their existing behaviour. Normalization still runs on
both endpoints first, so its bound assert is never bypassed -- an infinite
endpoint traps rather than silently becoming a circle.

Verified that (0,360), (0,720) and (-360,0) now fill all eight octants
plus the centre, while (0,90), (90,180), (0,359.64), (300,60), (36,108)
and the empty (0,0) are unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

[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
access control
AI analysis · Informational 19/100

This is a UI graphics bug fix in the Trezor hardware wallet firmware. When drawing a circular progress indicator or pie-chart-like shape spanning a full 360 degrees, the code mistakenly treated it as an empty slice and drew nothing. The patch detects a full-circle span before normalizing the angles and forces it to draw all eight segments plus the center pixel. There is no direct security vulnerability here; it is a rendering correctness fix.

Security candidatefeat(common): report maximal supported passphrase lengthby Roman Zeyde · e393e179 · Aug 27, 2026 · 4 filesMessage 77 · AdequateInformational 19Details
Commit message · Roman Zeyde

feat(common): report maximal supported passphrase length

Legacy & older core models support up to 50 bytes.

[no changelog]

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
access control
AI analysis · Informational 19/100

This commit adds a new informational field to the Trezor device's 'Features' message that tells connected software the maximum passphrase length the device supports. It does not change how passphrases are validated or stored, and it does not fix any known security bug. It is a feature addition to improve compatibility between different Trezor models and wallet software.

Security candidatefeat(core): increase maximum passphrase length to 128 bytesby Roman Zeyde · 835efbb6 · Aug 27, 2026 · 8 filesMessage 87 · StrongInformational 15Details
Commit message · Roman Zeyde

feat(core): increase maximum passphrase length to 128 bytes

Legacy & older core models support up to 50 bytes.

Also, use the same test vectors for all core models.

87/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
access controlfuzzing or regression evidencecryptography-sensitive pathauthentication path
AI analysis · Informational 15/100

This commit simply raises the maximum allowed passphrase length on newer Trezor Core devices from 50 bytes to 128 bytes. It is a feature change, not a security fix or vulnerability. Older and legacy models keep the 50-byte limit. The change is accompanied by updated tests and a new device capability field so software can read the current limit.

AI review queuedfix(l10n): update generated filesby Michal Kazda · 40add235 · Aug 27, 2026 · 5 filesMessage 57 · ThinInformational 15Details
Commit message · Michal Kazda

fix(l10n): update generated files

[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 pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a routine localization update. It adds one new translated button label ('Cancel sign'), fixes a punctuation mark in another label, and refreshes the generated translation files and their cryptographic signatures. There is no indication of any security issue.

AI review queuedfix(l10n): update generated filesby Michal Kazda · fb9dccd4 · Aug 27, 2026 · 5 filesMessage 57 · ThinInformational 15Details
Commit message · Michal Kazda

fix(l10n): update generated files
[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 pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a routine localization update. It adds one new user-facing button label, 'Review', to the Trezor hardware wallet's translation system and regenerates the files that store translated strings and their cryptographic signature. There is no change to security logic, no bug fix, and no vulnerability.

Security candidatechore(l10n): add buttons__review for TS7 menu item subtextby Michal Kazda · 60fe7e13 · Aug 27, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · Michal Kazda

chore(l10n): add buttons__review for TS7 menu item subtext
[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 is a harmless user-interface wording change. It swaps the label shown beneath two backup-related menu items from a generic 'Review' translation key to a dedicated 'Review' button translation key, and adds that button text to the English translation file. There is no security relevance.

Security candidatefix(core): remove unused confirm_amountby Michal Kazda · 2d36ca0b · Aug 27, 2026 · 4 filesMessage 57 · ThinInformational 15Details
Commit message · Michal Kazda

fix(core): remove unused confirm_amount
[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 path
AI analysis · Informational 15/100

This commit simply deletes an unused helper function called confirm_amount from four different user-interface layout files. Because the function was not being called anywhere, removing it cannot change device behavior or introduce a security issue. It is a routine code cleanup.

Security candidatefix(crypto): adjust random_permuteby M1nd3r · b11a85f7 · Aug 27, 2026 · 1 fileMessage 47 · ThinLow 38Details
Commit message · M1nd3r

fix(crypto): adjust random_permute

[no changelog]

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

This commit fixes a function that shuffles arrays (like recovery-seed word order or on-screen PIN layouts) in Trezor's cryptographic code. The original code could misbehave or even crash when given very short or very long inputs, and it used a signed integer type that could turn negative in unexpected ways. The patch adds a safety check, skips shuffling when there is nothing to shuffle, and uses the correct unsigned type. The practical security impact is moderate: it removes a source of non-random or buggy shuffling that could leak information or cause crashes, but the commit itself does not claim to fix an active exploit.

Security candidateperf(core): drop nanopb error strings from bootloaderby tychovrahe · 367cdddc · Aug 27, 2026 · 2 filesMessage 85 · StrongInformational 13Details
Commit message · tychovrahe

perf(core): drop nanopb error strings from bootloader

nanopb's error message strings are linked into the bootloader image, but
nothing reads `pb_(i|o)stream_t::errmsg`. Defining PB_NO_ERRMSG removes
them along with the PB_SET_ERROR code paths.

The three `.errmsg = NULL` initializers in codec_v1.c go away with the
struct field. Dropping them rather than #ifdef-guarding them keeps the
code correct either way, since designated initializers zero the rest.

bootloader_ci is untouched: it has its own messages.c and build.rs.

Recovers 976 B of flash. T3T1 bootloader free space (--production):
28 B -> 1004 B.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

[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
update trustboot or update path
AI analysis · Informational 13/100

This change removes unused error-message text from the bootloader's copy of the nanopb library to free up about 1 kB of flash storage. The bootloader never looked at these error strings anyway, so the change is a size optimization with no security effect.

Security candidatetest(core): test mock RNGs for Optiga and Tropicby Andrew Kozlik · 972aa929 · Aug 27, 2026 · 5 filesMessage 95 · StrongInformational 12Details
Commit message · Andrew Kozlik

test(core): test mock RNGs for Optiga and Tropic

Adds tests that verify, end to end through the upymod binding and
rng_fill_buffer_strong(), that every entropy source of the model
contributed at every byte position. A dropped source, a lost strong=True,
a truncated buffer fail the tests.

[no changelog]

Co-Authored-By: cepetr <petr@cerninovi.cz>

95/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✓ Names security-relevant behavior explicitly
Why it was queued
entropy or randomnesscryptography-sensitive pathseed or entropy path
AI analysis · Informational 12/100

This commit only adds new automated tests and a helper script for generating test data. It does not change the firmware's random number generator, wallet operations, or any user-facing behavior. The goal is to catch future bugs where a hardware model's entropy source might accidentally be left out of the strong randomness mix.

Security candidatefeat(core): add mock RNGs for MCU, Optiga and Tropicby Andrew Kozlik · 14bba1ba · Aug 27, 2026 · 16 filesMessage 77 · AdequateInformational 21Details
Commit message · Andrew Kozlik

feat(core): add mock RNGs for MCU, Optiga and Tropic

[no changelog]

Co-Authored-By: cepetr <petr@cerninovi.cz>

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
entropy or randomnesscryptography-sensitive pathseed or entropy path
AI analysis · Informational 21/100

This commit adds deterministic (predictable) fake random-number generators for Trezor's software emulator only, so automated tests can reproduce exact outputs. It removes the old insecure-prng feature flag from production build paths and gates the new mocks behind emulator-only compile checks. The change is designed to keep fake randomness out of real hardware wallets, but it still increases the amount of insecure-prng code in the repository.

Security candidatefeat(core): increase `ShortString` size to 128 bytesby Roman Zeyde · 9695e1c2 · Aug 27, 2026 · 2 filesMessage 77 · AdequateInformational 17Details
Commit message · Roman Zeyde

feat(core): increase `ShortString` size to 128 bytes

It will allow supporting longer passphrases on Core models.

PIN length is still limited to 50 bytes.

[no changelog]

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
access control
AI analysis · Informational 17/100

This commit simply increases the maximum size of a commonly used short text buffer in the Trezor firmware from 50 bytes to 128 bytes. The stated purpose is to support longer passphrases on Trezor Core devices, while keeping the PIN length limit at 50 bytes. There is no indication in the commit that this fixes a security vulnerability or introduces a security-relevant bug.

AI review queuedchore(core): remove last uses of `Optional`by M1nd3r · 169e1711 · Aug 26, 2026 · 4 filesMessage 57 · ThinInformational 15Details
Commit message · M1nd3r

chore(core): remove last uses of `Optional`

[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 pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This is a routine code cleanup that replaces the older Optional[Type] style with the newer Type | None style in a few Python files. It also updates the project's automated style checker to enforce the newer style. There is no functional change to the code and no security impact.

Security candidatechore(common, tests, tools): enforce PEP 585 styleby M1nd3r · db40ceb2 · Aug 26, 2026 · 37 filesMessage 72 · AdequateInformational 15Details
Commit message · M1nd3r

chore(common, tests, tools): enforce PEP 585 style

[no changelog]

72/100 · AdequateMessage clarity
✓ Specific, 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
cryptography-sensitive pathsigning or wallet pathboot or update pathauthentication path
AI analysis · Informational 15/100

This commit is a routine code cleanup that updates Python type annotations to follow a newer Python style guide (PEP 585). It replaces older-style imports like `List`, `Tuple`, and `Dict` from the `typing` module with built-in equivalents like `list`, `tuple`, and `dict`. It also adjusts the project's linting configuration to enforce this style. There is no change to runtime behavior, no security fix, and no vulnerability introduced.

Security candidatechore(python): enforce PEP 585 styleby M1nd3r · 5184275b · Aug 26, 2026 · 45 filesMessage 57 · ThinInformational 15Details
Commit message · M1nd3r

chore(python): enforce PEP 585 style

[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 pathauthentication path
AI analysis · Informational 15/100

This commit is a routine code cleanup that updates Python type annotations to a newer, recommended style (PEP 585). It does not change any program logic, security behavior, or runtime functionality. There is no security issue here.

Security candidatechore(core): enforce PEP 585 style [UP035]by M1nd3r · 21e6e3f2 · Aug 26, 2026 · 109 filesMessage 72 · AdequateInformational 15Details
Commit message · M1nd3r

chore(core): enforce PEP 585 style [UP035]

- Replaces deprecated imports, e.g. `typing.Sequence` -> `collections.abc.Sequence`.

[no changelog]

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
cryptography-sensitive pathseed or entropy pathsigning or wallet pathauthentication pathparser or protocol path
AI analysis · Informational 15/100

This is a large but purely cosmetic code cleanup in the Trezor firmware repository. It replaces old-style Python type-hint imports (such as typing.Sequence) with their modern equivalents (collections.abc.Sequence) to follow the PEP 585 style guide. No program logic, security checks, cryptography, or user-facing behavior was changed. The commit explicitly says '[no changelog]' and labels itself as a 'chore'.

AI review queuedchore(core): enforce PEP 585 style [UP006]by M1nd3r · 33b2c0e0 · Aug 26, 2026 · 11 filesMessage 72 · AdequateInformational 15Details
Commit message · M1nd3r

chore(core): enforce PEP 585 style [UP006]

- Removes non-pep585 annotations, e.g. `typing.Tuple` -> `tuple`.

[no changelog]

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an 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 that updates Python type annotations to a newer, recommended style. It does not change what the code actually does, only how type hints are written. There is no security issue here.

Security candidatefix(core): use with_colon instead of += ":" in for descriptionsby Michal Kazda · 77cde7c6 · Aug 26, 2026 · 2 filesMessage 77 · AdequateInformational 16Details
Commit message · Michal Kazda

fix(core): use with_colon instead of += ":" in for descriptions
- affects only Bolt and Caesar
[no changelog]

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 16/100

This commit is a small UI cleanup in Trezor's firmware. It replaces several places where a colon was manually added to on-screen text descriptions with a helper function called with_colon(). The change only affects two visual themes (Bolt and Caesar). It is not a security fix and does not change how funds, keys, or transactions are protected.

Security candidatechore(translations): updated translation signaturesby Michal Kazda · 15d3f914 · Aug 26, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · Michal Kazda

chore(translations): updated translation signatures
[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
signing boundarysigning or wallet pathtranslation-only discount
AI analysis · Informational 15/100

This commit simply refreshes the digital signature metadata for translation files in a JSON configuration. There is no code change, no new feature, and no apparent security fix. It appears to be routine maintenance.

AI review queuedtest(solana): unit test tx header parserby Jakub Janků · fe3e91b5 · Aug 26, 2026 · 1 fileMessage 90 · StrongInformational 15Details
Commit message · Jakub Janků

test(solana): unit test tx header parser

For now, only the header parsing is tested, but the added serialization
code can be used in the future to unit test other parts of the Solana TX
parser as well.

[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
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only adds a new unit test file for the Solana transaction parser in the Trezor firmware. It does not change any production code, fix bugs, or alter behavior. It is purely a test/quality improvement with no security relevance.

Security candidatechore(translations): added missing PTBR glyph Éby Michal Kazda · e514f155 · Aug 26, 2026 · 24 filesMessage 57 · ThinInformational 15Details
Commit message · Michal Kazda

chore(translations): added missing PTBR glyph É
[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 path
AI analysis · Informational 15/100

This commit adds a single missing Portuguese-Brazilian character (É) to font files used by the Trezor hardware wallet. It is a routine translation/localization fix with no security relevance.

Security candidatechore(translations): removed unused PTBR glyphby Michal Kazda · 1383d456 · Aug 26, 2026 · 24 filesMessage 57 · ThinInformational 15Details
Commit message · Michal Kazda

chore(translations): removed unused PTBR glyph
[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 path
AI analysis · Informational 15/100

This commit is a routine cleanup: it removes the 'ª' (feminine ordinal indicator) character from font files and a code generator list because it is no longer used in the Portuguese-Brazil translation. There is no security relevance.

Security candidatechore(translations): removed unused ES glyphby Michal Kazda · 8d2264c8 · Aug 26, 2026 · 24 filesMessage 57 · ThinInformational 15Details
Commit message · Michal Kazda

chore(translations): removed unused ES glyph
[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 path
AI analysis · Informational 15/100

This commit removes the unused Spanish masculine ordinal indicator glyph (º) from font files and a code generator list. It is a routine cleanup with no security relevance.