docs(python): generate changelog for v0.20.2
What changed, and why it matters
This commit is purely a documentation update that generates the changelog for version 0.20.2 of the Trezor Python library. It deletes individual changelog fragment files and adds their contents to the main CHANGELOG.md file. No source code, firmware logic, or security behavior is changed.
No security action needed. This is a documentation-only changelog generation commit.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff shows only deletion of .changelog.d/* fragment files and insertion of their contents into python/CHANGELOG.md, plus addition of pull-request reference links. There are no code modifications, bug fixes, feature implementations, or cryptographic changes in this commit. The changelog entries themselves describe prior changes made in other commits, but this commit only records them.
Changed components
python/CHANGELOG.mdpython/.changelog.d/*Inspect captured patch +38 / −16
diff --git a/python/.changelog.d/+master-fingerprint.added b/python/.changelog.d/+master-fingerprint.added
deleted file mode 100644
index 4f6f2fdb..00000000
--- a/python/.changelog.d/+master-fingerprint.added
+++ /dev/null
@@ -1 +0,0 @@
-Added master-fingerprint.py tool, which computes a master fingerprint over a set of labeled firmware fingerprints.
diff --git a/python/.changelog.d/+master-fingerprint.changed b/python/.changelog.d/+master-fingerprint.changed
deleted file mode 100644
index e9053e3a..00000000
--- a/python/.changelog.d/+master-fingerprint.changed
+++ /dev/null
@@ -1 +0,0 @@
-firmware-fingerprint.py now labels the fingerprint with the image's SLIP-26 model and purpose ("<model>_<purpose>: HEX") and supports vendor headers and new-style PQ bootloader images.
diff --git a/python/.changelog.d/3446.fixed b/python/.changelog.d/3446.fixed
deleted file mode 100644
index 3939b499..00000000
--- a/python/.changelog.d/3446.fixed
+++ /dev/null
@@ -1 +0,0 @@
-Solana: allow chunkified addresses.
diff --git a/python/.changelog.d/3471.incompatible b/python/.changelog.d/3471.incompatible
deleted file mode 100644
index 90782820..00000000
--- a/python/.changelog.d/3471.incompatible
+++ /dev/null
@@ -1 +0,0 @@
-Stellar: Enable signing Soroban smart contract transactions; `sign_tx` / `from_envelope` now accepts / returns a transaction extension.
diff --git a/python/.changelog.d/6730.fixed b/python/.changelog.d/6730.fixed
deleted file mode 100644
index 41350c17..00000000
--- a/python/.changelog.d/6730.fixed
+++ /dev/null
@@ -1 +0,0 @@
-Tron: allow chunkified addresses.
diff --git a/python/.changelog.d/6759.added b/python/.changelog.d/6759.added
deleted file mode 100644
index 579df99d..00000000
--- a/python/.changelog.d/6759.added
+++ /dev/null
@@ -1 +0,0 @@
-Support for [Solana off-chain message signing v0](https://docs.anza.xyz/proposals/off-chain-message-signing).
diff --git a/python/.changelog.d/6826.added b/python/.changelog.d/6826.added
deleted file mode 100644
index ad415d24..00000000
--- a/python/.changelog.d/6826.added
+++ /dev/null
@@ -1 +0,0 @@
-Add ML-DSA-44 device authenticity check.
diff --git a/python/.changelog.d/6859.fixed b/python/.changelog.d/6859.fixed
deleted file mode 100644
index 28e48139..00000000
--- a/python/.changelog.d/6859.fixed
+++ /dev/null
@@ -1 +0,0 @@
-Skip stale protocol v1 responses on probing.
diff --git a/python/.changelog.d/6994.added b/python/.changelog.d/6994.added
deleted file mode 100644
index da4adf45..00000000
--- a/python/.changelog.d/6994.added
+++ /dev/null
@@ -1 +0,0 @@
-Add testing module to trezorlib.
diff --git a/python/.changelog.d/7053.incompatible b/python/.changelog.d/7053.incompatible
deleted file mode 100644
index 5d80d2ee..00000000
--- a/python/.changelog.d/7053.incompatible
+++ /dev/null
@@ -1 +0,0 @@
-Solana: add support for off-chain message signing (OCMS) v1 and remove v0.
diff --git a/python/.changelog.d/7101.added b/python/.changelog.d/7101.added
deleted file mode 100644
index 2a11fcc9..00000000
--- a/python/.changelog.d/7101.added
+++ /dev/null
@@ -1 +0,0 @@
-Tron: Claim voting rewards (WithdrawBalanceContract).
diff --git a/python/.changelog.d/7168.changed b/python/.changelog.d/7168.changed
deleted file mode 100644
index dc3f78c8..00000000
--- a/python/.changelog.d/7168.changed
+++ /dev/null
@@ -1 +0,0 @@
-`TrezorClient.ensure_unlocked()` will not allocate a session and will not cause seed derivation. `Session.ensure_unlocked()` now just forwards to `TrezorClient`.
diff --git a/python/.changelog.d/7168.fixed b/python/.changelog.d/7168.fixed
deleted file mode 100644
index 05524896..00000000
--- a/python/.changelog.d/7168.fixed
+++ /dev/null
@@ -1 +0,0 @@
-Fix non-functional `trezorctl get-session` with THP.
diff --git a/python/.changelog.d/7312.added b/python/.changelog.d/7312.added
deleted file mode 100644
index 7f5e44fa..00000000
--- a/python/.changelog.d/7312.added
+++ /dev/null
@@ -1 +0,0 @@
-Stellar: Support signing Soroban authorization entries (`stellar.sign_soroban_authorization`, `stellar.from_authorization_entry` and `trezorctl stellar sign-soroban-authorization`).
diff --git a/python/.changelog.d/7359.changed b/python/.changelog.d/7359.changed
deleted file mode 100644
index 261fc8e9..00000000
--- a/python/.changelog.d/7359.changed
+++ /dev/null
@@ -1 +0,0 @@
-Generated Merkle trees are now balanced.
diff --git a/python/.changelog.d/tbd_hid_transport_chunk_size_fix.fixed b/python/.changelog.d/tbd_hid_transport_chunk_size_fix.fixed
deleted file mode 100644
index d42ea672..00000000
--- a/python/.changelog.d/tbd_hid_transport_chunk_size_fix.fixed
+++ /dev/null
@@ -1 +0,0 @@
-Fix broken HID transport.
diff --git a/python/CHANGELOG.md b/python/CHANGELOG.md
index 2dc05db7..07d8ff08 100644
--- a/python/CHANGELOG.md
+++ b/python/CHANGELOG.md
@@ -5,6 +5,31 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.20.2] (29th July 2026)
+[0.20.2]: https://github.com/trezor/trezor-firmware/compare/python/v0.20.1...python/v0.20.2
+
+### Added
+- Support for [Solana off-chain message signing v0](https://docs.anza.xyz/proposals/off-chain-message-signing). [#6759]
+- Add ML-DSA-44 device authenticity check. [#6826]
+- Add testing module to trezorlib. [#6994]
+- Tron: Claim voting rewards (WithdrawBalanceContract). [#7101]
+- Stellar: Support signing Soroban authorization entries (`stellar.sign_soroban_authorization`, `stellar.from_authorization_entry` and `trezorctl stellar sign-soroban-authorization`). [#7365]
+
+### Changed
+- `TrezorClient.ensure_unlocked()` will not allocate a session and will not cause seed derivation. `Session.ensure_unlocked()` now just forwards to `TrezorClient`. [#7168]
+- Generated Merkle trees are now balanced. [#7359]
+
+### Fixed
+- Solana: allow chunkified addresses. [#6545]
+- Tron: allow chunkified addresses. [#6730]
+- Skip stale protocol v1 responses on probing. [#6859]
+- Fix non-functional `trezorctl get-session` with THP. [#7168]
+- Fix broken HID transport. [#7428]
+
+### Incompatible changes
+- Solana: add support for off-chain message signing (OCMS) v1 and remove v0. [#7053]
+- Stellar: Enable signing Soroban smart contract transactions; `sign_tx` / `from_envelope` now accepts / returns a transaction extension. [#7259]
+
## [0.20.1] (11th May 2026)
[0.20.1]: https://github.com/trezor/trezor-firmware/compare/python/v0.20.0...python/v0.20.1
@@ -992,9 +1017,22 @@ This version is a pre-release. The new API is unstable and may change until 0.20
[#6349]: https://github.com/trezor/trezor-firmware/pull/6349
[#6449]: https://github.com/trezor/trezor-firmware/pull/6449
[#6525]: https://github.com/trezor/trezor-firmware/pull/6525
+[#6545]: https://github.com/trezor/trezor-firmware/pull/6545
[#6555]: https://github.com/trezor/trezor-firmware/pull/6555
[#6564]: https://github.com/trezor/trezor-firmware/pull/6564
[#6575]: https://github.com/trezor/trezor-firmware/pull/6575
[#6580]: https://github.com/trezor/trezor-firmware/pull/6580
[#6588]: https://github.com/trezor/trezor-firmware/pull/6588
[#6633]: https://github.com/trezor/trezor-firmware/pull/6633
+[#6730]: https://github.com/trezor/trezor-firmware/pull/6730
+[#6759]: https://github.com/trezor/trezor-firmware/pull/6759
+[#6826]: https://github.com/trezor/trezor-firmware/pull/6826
+[#6859]: https://github.com/trezor/trezor-firmware/pull/6859
+[#6994]: https://github.com/trezor/trezor-firmware/pull/6994
+[#7053]: https://github.com/trezor/trezor-firmware/pull/7053
+[#7101]: https://github.com/trezor/trezor-firmware/pull/7101
+[#7168]: https://github.com/trezor/trezor-firmware/pull/7168
+[#7259]: https://github.com/trezor/trezor-firmware/pull/7259
+[#7359]: https://github.com/trezor/trezor-firmware/pull/7359
+[#7365]: https://github.com/trezor/trezor-firmware/pull/7365
+[#7428]: https://github.com/trezor/trezor-firmware/pull/7428
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.