What changed, and why it matters
This is a routine tooling and documentation update. It adjusts the changelog helper script to support a new Trezor hardware model (T3W1) and to trim older changelog entries for that model. There is no change to wallet, cryptographic, or device security code.
No security action required. Treat as normal maintenance.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit modifies tools/changelog.py, a release-helper script that generates per-model changelog files from core/CHANGELOG.md. It adds the new internal model T3W1 with a minimum changelog version of 2.9.3, and adds logic to stop copying changelog entries once that minimum version is reached, then re-runs linkify_changelog on the truncated output. core/CHANGELOG.md is updated only to fix model-tag formatting in two existing entries. No firmware runtime code is touched.
Changed components
tools/changelog.pycore/CHANGELOG.mdInspect captured patch +16 / −3
diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md
index 30b685246..89fa44e9a 100644
--- a/core/CHANGELOG.md
+++ b/core/CHANGELOG.md
@@ -85,7 +85,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- [T3T1] Upgrade bundled bootloader to 2.1.10. [#4665]
### Changed
-- Changed "swipe to continue" to "tap to continue". Screens still respond to swipe-up, but the preferred interaction method is now tapping the lower part of the screen. [#4571]
+- [T3T1] Changed "swipe to continue" to "tap to continue". Screens still respond to swipe-up, but the preferred interaction method is now tapping the lower part of the screen. [#4571]
### Fixed
- Cancelling device recovery after aborting from Suite. [#3503]
@@ -93,7 +93,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [2.8.8] (19th February 2025)
### Fixed
-- [T2B1, T3B1] Fix "PIN attempts exceeded" screen. [#3324]
+- [T2B1,T3B1] Fix "PIN attempts exceeded" screen. [#3324]
- [T3B1] Fix behavior of a button press during "hold to confirm". [#3772]
- [T2T1] Fix wrong RSOD color on some older Model T devices. [#4491]
- [T3T1] Fixed flashing old content when fading. [#4492]
diff --git a/tools/changelog.py b/tools/changelog.py
index bc957d20c..82b324ab1 100755
--- a/tools/changelog.py
+++ b/tools/changelog.py
@@ -15,8 +15,11 @@ VERSION_HEADER_RE = re.compile(r"## \[([.0-9]+)\]")
DIFF_LINK = "[{new}]: https://github.com/trezor/trezor-firmware/compare/{tag_prefix}{old}...{tag_prefix}{new}\n"
MODELS_RE = re.compile(r"\[([A-Z0-9]{4})(,[A-Z0-9]{4})*\][ ]?")
-INTERNAL_MODELS = ("T2T1", "T2B1", "T3B1", "T3T1", "D001")
+INTERNAL_MODELS = ("T2T1", "T2B1", "T3B1", "T3T1", "T3W1", "D001")
INTERNAL_MODELS_SKIP = ("D001",)
+MODELS_MIN_VERSION = {
+ "T3W1": "2.9.3",
+}
ROOT = Path(__file__).parent.parent.resolve()
@@ -131,14 +134,24 @@ def filter_changelog(changelog_file: Path, internal_name: str):
return None
destination_file = changelog_file.with_suffix(f".{internal_name}.md")
+ min_version = MODELS_MIN_VERSION.get(internal_name)
with (
open(changelog_file, "r") as changelog,
open(destination_file, "w") as destination,
):
+ reached_min = False
for line in changelog:
+ version = VERSION_HEADER_RE.match(line)
+ if version:
+ if reached_min:
+ break
+ if min_version and version.group(1) == min_version:
+ reached_min = True
res = filter_line(line)
if res is not None:
destination.write(res)
+ # Ensure issue links are present even if we truncated before the link block
+ linkify_changelog(destination_file)
def _iter_fragments(project: Path) -> Iterator[Path]:
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.