From 50da2bdfd17ab58d1d7aa674c988eac67cc168d0 Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Tue, 3 Sep 2024 18:45:41 +0200 Subject: [PATCH 1/8] chore(common): set definition timestamp to the current signed definitions [no changelog] --- common/defs/ethereum/released-definitions-timestamp.txt | 2 +- core/src/apps/ethereum/definitions_constants.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/defs/ethereum/released-definitions-timestamp.txt b/common/defs/ethereum/released-definitions-timestamp.txt index aea5282a5..759fa124d 100644 --- a/common/defs/ethereum/released-definitions-timestamp.txt +++ b/common/defs/ethereum/released-definitions-timestamp.txt @@ -1 +1 @@ -2024-07-09T10:03:06+00:00 +2024-08-26T14:28:10+00:00 diff --git a/core/src/apps/ethereum/definitions_constants.py b/core/src/apps/ethereum/definitions_constants.py index 58e7e71cb..76cb5f62a 100644 --- a/core/src/apps/ethereum/definitions_constants.py +++ b/core/src/apps/ethereum/definitions_constants.py @@ -9,7 +9,7 @@ PUBLIC_KEYS = ( b"\xb8\xd2\xb2\x1d\xe2\x71\x24\xf0\x51\x1f\x90\x3a\xe7\xe6\x0e\x07\x96\x18\x10\xa0\xb8\xf2\x8e\xa7\x55\xfa\x50\x36\x7a\x8a\x2b\x8b", ) -MIN_DATA_VERSION = 1720519386 +MIN_DATA_VERSION = 1724682490 FORMAT_VERSION = b"trzd1" if __debug__: From b4d4f82c78b57ab5fa996391a2bb262a13206ebc Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Tue, 3 Sep 2024 18:54:14 +0200 Subject: [PATCH 2/8] docs(core): changelog for 2.8.2 --- core/.changelog.d/3797.fixed | 1 - core/.changelog.d/3858.fixed | 1 - core/.changelog.d/3859.fixed | 1 - core/.changelog.d/3990.fixed | 1 - core/.changelog.d/4054.added | 1 - core/.changelog.d/4093.changed | 1 - core/.changelog.d/4093.fixed | 1 - core/.changelog.d/4099.added | 1 - core/.changelog.d/4119.removed | 1 - core/.changelog.d/4142.fixed | 1 - core/.changelog.d/4151.changed | 1 - core/.changelog.d/noissue.fixed | 1 - core/CHANGELOG.T2B1.md | 27 +++++++++++++++++++++++++++ core/CHANGELOG.T2T1.md | 25 +++++++++++++++++++++++++ core/CHANGELOG.T3T1.md | 30 ++++++++++++++++++++++++++++++ core/CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ 16 files changed, 114 insertions(+), 12 deletions(-) delete mode 100644 core/.changelog.d/3797.fixed delete mode 100644 core/.changelog.d/3858.fixed delete mode 100644 core/.changelog.d/3859.fixed delete mode 100644 core/.changelog.d/3990.fixed delete mode 100644 core/.changelog.d/4054.added delete mode 100644 core/.changelog.d/4093.changed delete mode 100644 core/.changelog.d/4093.fixed delete mode 100644 core/.changelog.d/4099.added delete mode 100644 core/.changelog.d/4119.removed delete mode 100644 core/.changelog.d/4142.fixed delete mode 100644 core/.changelog.d/4151.changed delete mode 100644 core/.changelog.d/noissue.fixed diff --git a/core/.changelog.d/3797.fixed b/core/.changelog.d/3797.fixed deleted file mode 100644 index a298e7f16..000000000 --- a/core/.changelog.d/3797.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Redesigned FIDO2 UI. diff --git a/core/.changelog.d/3858.fixed b/core/.changelog.d/3858.fixed deleted file mode 100644 index 303df6505..000000000 --- a/core/.changelog.d/3858.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Improved ETH send flow. diff --git a/core/.changelog.d/3859.fixed b/core/.changelog.d/3859.fixed deleted file mode 100644 index 06b0f8239..000000000 --- a/core/.changelog.d/3859.fixed +++ /dev/null @@ -1 +0,0 @@ -Fix persistent word when going to previous word during recovery process. diff --git a/core/.changelog.d/3990.fixed b/core/.changelog.d/3990.fixed deleted file mode 100644 index 72e6165c3..000000000 --- a/core/.changelog.d/3990.fixed +++ /dev/null @@ -1 +0,0 @@ -[T2B1] Fix display orientation "south" diff --git a/core/.changelog.d/4054.added b/core/.changelog.d/4054.added deleted file mode 100644 index 9abac987d..000000000 --- a/core/.changelog.d/4054.added +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Added reassuring screen when entering empty passphrase diff --git a/core/.changelog.d/4093.changed b/core/.changelog.d/4093.changed deleted file mode 100644 index ab2575938..000000000 --- a/core/.changelog.d/4093.changed +++ /dev/null @@ -1 +0,0 @@ -Changed prefix of public key returned by `get_ecdh_session_key` for curve25519. diff --git a/core/.changelog.d/4093.fixed b/core/.changelog.d/4093.fixed deleted file mode 100644 index 0fa95d886..000000000 --- a/core/.changelog.d/4093.fixed +++ /dev/null @@ -1 +0,0 @@ -Fixed SLIP-10 fingerprints for ed25519 and curve25519. diff --git a/core/.changelog.d/4099.added b/core/.changelog.d/4099.added deleted file mode 100644 index eacb4c6c0..000000000 --- a/core/.changelog.d/4099.added +++ /dev/null @@ -1 +0,0 @@ -Reduce the choices to select wordcount when unlocking repeated backup to 20 or 33. diff --git a/core/.changelog.d/4119.removed b/core/.changelog.d/4119.removed deleted file mode 100644 index f8c8d2759..000000000 --- a/core/.changelog.d/4119.removed +++ /dev/null @@ -1 +0,0 @@ -Removed display_random feature. diff --git a/core/.changelog.d/4142.fixed b/core/.changelog.d/4142.fixed deleted file mode 100644 index 47a0ffd1f..000000000 --- a/core/.changelog.d/4142.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Added missing info about remaining shares in super-shamir recovery. diff --git a/core/.changelog.d/4151.changed b/core/.changelog.d/4151.changed deleted file mode 100644 index bad7fbfb3..000000000 --- a/core/.changelog.d/4151.changed +++ /dev/null @@ -1 +0,0 @@ -Renamed MATIC to POL, following a network upgrade. diff --git a/core/.changelog.d/noissue.fixed b/core/.changelog.d/noissue.fixed deleted file mode 100644 index 26a97edf5..000000000 --- a/core/.changelog.d/noissue.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3T1] Improved ETH staking flow. diff --git a/core/CHANGELOG.T2B1.md b/core/CHANGELOG.T2B1.md index 43fd79d76..15d23c9ea 100644 --- a/core/CHANGELOG.T2B1.md +++ b/core/CHANGELOG.T2B1.md @@ -4,6 +4,23 @@ 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/). +## [2.8.2] (18th September 2024) + +### Added +- Reduce the choices to select wordcount when unlocking repeated backup to 20 or 33. [#4099] + +### Changed +- Changed prefix of public key returned by `get_ecdh_session_key` for curve25519. [#4093] +- Renamed MATIC to POL, following a network upgrade. [#4151] + +### Removed +- Removed `display_random` feature. [#4119] + +### Fixed +- Fix persistent word when going to previous word during recovery process. [#3859] +- Fix display orientation _south_. [#3990] +- Fixed SLIP-10 fingerprints for ed25519 and curve25519. [#4093] + ## [2.8.1] (unreleased) ### Added @@ -917,7 +934,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 [#3728]: https://github.com/trezor/trezor-firmware/pull/3728 +[#3797]: https://github.com/trezor/trezor-firmware/pull/3797 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3858]: https://github.com/trezor/trezor-firmware/pull/3858 +[#3859]: https://github.com/trezor/trezor-firmware/pull/3859 [#3885]: https://github.com/trezor/trezor-firmware/pull/3885 [#3895]: https://github.com/trezor/trezor-firmware/pull/3895 [#3896]: https://github.com/trezor/trezor-firmware/pull/3896 @@ -934,10 +954,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3972]: https://github.com/trezor/trezor-firmware/pull/3972 [#3976]: https://github.com/trezor/trezor-firmware/pull/3976 [#3987]: https://github.com/trezor/trezor-firmware/pull/3987 +[#3990]: https://github.com/trezor/trezor-firmware/pull/3990 [#3992]: https://github.com/trezor/trezor-firmware/pull/3992 [#4000]: https://github.com/trezor/trezor-firmware/pull/4000 [#4006]: https://github.com/trezor/trezor-firmware/pull/4006 [#4023]: https://github.com/trezor/trezor-firmware/pull/4023 [#4030]: https://github.com/trezor/trezor-firmware/pull/4030 +[#4054]: https://github.com/trezor/trezor-firmware/pull/4054 [#4060]: https://github.com/trezor/trezor-firmware/pull/4060 [#4063]: https://github.com/trezor/trezor-firmware/pull/4063 +[#4093]: https://github.com/trezor/trezor-firmware/pull/4093 +[#4099]: https://github.com/trezor/trezor-firmware/pull/4099 +[#4119]: https://github.com/trezor/trezor-firmware/pull/4119 +[#4142]: https://github.com/trezor/trezor-firmware/pull/4142 +[#4151]: https://github.com/trezor/trezor-firmware/pull/4151 diff --git a/core/CHANGELOG.T2T1.md b/core/CHANGELOG.T2T1.md index 1fb8af53e..04875652f 100644 --- a/core/CHANGELOG.T2T1.md +++ b/core/CHANGELOG.T2T1.md @@ -4,6 +4,22 @@ 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/). +## [2.8.2] (18th September 2024) + +### Added +- Reduce the choices to select wordcount when unlocking repeated backup to 20 or 33. [#4099] + +### Changed +- Changed prefix of public key returned by `get_ecdh_session_key` for curve25519. [#4093] +- Renamed MATIC to POL, following a network upgrade. [#4151] + +### Removed +- Removed `display_random` feature. [#4119] + +### Fixed +- Fix persistent word when going to previous word during recovery process. [#3859] +- Fixed SLIP-10 fingerprints for ed25519 and curve25519. [#4093] + ## [2.8.1] (21st August 2024) ### Added @@ -911,7 +927,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 [#3728]: https://github.com/trezor/trezor-firmware/pull/3728 +[#3797]: https://github.com/trezor/trezor-firmware/pull/3797 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3858]: https://github.com/trezor/trezor-firmware/pull/3858 +[#3859]: https://github.com/trezor/trezor-firmware/pull/3859 [#3885]: https://github.com/trezor/trezor-firmware/pull/3885 [#3895]: https://github.com/trezor/trezor-firmware/pull/3895 [#3896]: https://github.com/trezor/trezor-firmware/pull/3896 @@ -934,5 +953,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#4006]: https://github.com/trezor/trezor-firmware/pull/4006 [#4023]: https://github.com/trezor/trezor-firmware/pull/4023 [#4030]: https://github.com/trezor/trezor-firmware/pull/4030 +[#4054]: https://github.com/trezor/trezor-firmware/pull/4054 [#4060]: https://github.com/trezor/trezor-firmware/pull/4060 [#4063]: https://github.com/trezor/trezor-firmware/pull/4063 +[#4093]: https://github.com/trezor/trezor-firmware/pull/4093 +[#4099]: https://github.com/trezor/trezor-firmware/pull/4099 +[#4119]: https://github.com/trezor/trezor-firmware/pull/4119 +[#4142]: https://github.com/trezor/trezor-firmware/pull/4142 +[#4151]: https://github.com/trezor/trezor-firmware/pull/4151 diff --git a/core/CHANGELOG.T3T1.md b/core/CHANGELOG.T3T1.md index 4148f5a66..f3a09c919 100644 --- a/core/CHANGELOG.T3T1.md +++ b/core/CHANGELOG.T3T1.md @@ -4,6 +4,27 @@ 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/). +## [2.8.2] (18th September 2024) + +### Added +- Added reassuring screen when entering empty passphrase. [#4054] +- Reduce the choices to select wordcount when unlocking repeated backup to 20 or 33. [#4099] + +### Changed +- Changed prefix of public key returned by `get_ecdh_session_key` for curve25519. [#4093] +- Renamed MATIC to POL, following a network upgrade. [#4151] + +### Removed +- Removed `display_random` feature. [#4119] + +### Fixed +- Improved ETH staking flow. +- Redesigned FIDO2 UI. [#3797] +- Improved ETH send flow. [#3858] +- Fix persistent word when going to previous word during recovery process. [#3859] +- Fixed SLIP-10 fingerprints for ed25519 and curve25519. [#4093] +- Added missing info about remaining shares in super-shamir recovery. [#4142] + ## [2.8.1] (21st August 2024) ### Added @@ -933,7 +954,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 [#3728]: https://github.com/trezor/trezor-firmware/pull/3728 +[#3797]: https://github.com/trezor/trezor-firmware/pull/3797 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3858]: https://github.com/trezor/trezor-firmware/pull/3858 +[#3859]: https://github.com/trezor/trezor-firmware/pull/3859 [#3885]: https://github.com/trezor/trezor-firmware/pull/3885 [#3895]: https://github.com/trezor/trezor-firmware/pull/3895 [#3896]: https://github.com/trezor/trezor-firmware/pull/3896 @@ -956,5 +980,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#4006]: https://github.com/trezor/trezor-firmware/pull/4006 [#4023]: https://github.com/trezor/trezor-firmware/pull/4023 [#4030]: https://github.com/trezor/trezor-firmware/pull/4030 +[#4054]: https://github.com/trezor/trezor-firmware/pull/4054 [#4060]: https://github.com/trezor/trezor-firmware/pull/4060 [#4063]: https://github.com/trezor/trezor-firmware/pull/4063 +[#4093]: https://github.com/trezor/trezor-firmware/pull/4093 +[#4099]: https://github.com/trezor/trezor-firmware/pull/4099 +[#4119]: https://github.com/trezor/trezor-firmware/pull/4119 +[#4142]: https://github.com/trezor/trezor-firmware/pull/4142 +[#4151]: https://github.com/trezor/trezor-firmware/pull/4151 diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index 95e194a70..62956ecac 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -4,6 +4,28 @@ 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/). +## [2.8.2] (18th September 2024) + +### Added +- [T3T1] Added reassuring screen when entering empty passphrase. [#4054] +- Reduce the choices to select wordcount when unlocking repeated backup to 20 or 33. [#4099] + +### Changed +- Changed prefix of public key returned by `get_ecdh_session_key` for curve25519. [#4093] +- Renamed MATIC to POL, following a network upgrade. [#4151] + +### Removed +- Removed `display_random` feature. [#4119] + +### Fixed +- [T3T1] Improved ETH staking flow. +- [T3T1] Redesigned FIDO2 UI. [#3797] +- [T3T1] Improved ETH send flow. [#3858] +- Fix persistent word when going to previous word during recovery process. [#3859] +- [T2B1] Fix display orientation _south_. [#3990] +- Fixed SLIP-10 fingerprints for ed25519 and curve25519. [#4093] +- [T3T1] Added missing info about remaining shares in super-shamir recovery. [#4142] + ## [2.8.1] (21st August 2024) ### Added @@ -950,7 +972,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3636]: https://github.com/trezor/trezor-firmware/pull/3636 [#3640]: https://github.com/trezor/trezor-firmware/pull/3640 [#3728]: https://github.com/trezor/trezor-firmware/pull/3728 +[#3797]: https://github.com/trezor/trezor-firmware/pull/3797 [#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3858]: https://github.com/trezor/trezor-firmware/pull/3858 +[#3859]: https://github.com/trezor/trezor-firmware/pull/3859 [#3885]: https://github.com/trezor/trezor-firmware/pull/3885 [#3895]: https://github.com/trezor/trezor-firmware/pull/3895 [#3896]: https://github.com/trezor/trezor-firmware/pull/3896 @@ -967,10 +992,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [#3972]: https://github.com/trezor/trezor-firmware/pull/3972 [#3976]: https://github.com/trezor/trezor-firmware/pull/3976 [#3987]: https://github.com/trezor/trezor-firmware/pull/3987 +[#3990]: https://github.com/trezor/trezor-firmware/pull/3990 [#3992]: https://github.com/trezor/trezor-firmware/pull/3992 [#4000]: https://github.com/trezor/trezor-firmware/pull/4000 [#4006]: https://github.com/trezor/trezor-firmware/pull/4006 [#4023]: https://github.com/trezor/trezor-firmware/pull/4023 [#4030]: https://github.com/trezor/trezor-firmware/pull/4030 +[#4054]: https://github.com/trezor/trezor-firmware/pull/4054 [#4060]: https://github.com/trezor/trezor-firmware/pull/4060 [#4063]: https://github.com/trezor/trezor-firmware/pull/4063 +[#4093]: https://github.com/trezor/trezor-firmware/pull/4093 +[#4099]: https://github.com/trezor/trezor-firmware/pull/4099 +[#4119]: https://github.com/trezor/trezor-firmware/pull/4119 +[#4142]: https://github.com/trezor/trezor-firmware/pull/4142 +[#4151]: https://github.com/trezor/trezor-firmware/pull/4151 From d7e1f0faf3ab8753dfd9dc292b503dff39fd81db Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Tue, 3 Sep 2024 19:21:52 +0200 Subject: [PATCH 3/8] docs(core): changelog for T3B1 --- core/CHANGELOG.T2B1.md | 2 +- core/CHANGELOG.T2T1.md | 2 +- core/CHANGELOG.T3B1.md | 970 ++++++++++++++++++++++++++++++++++++ tools/generate-changelog.py | 2 +- 4 files changed, 973 insertions(+), 3 deletions(-) create mode 100644 core/CHANGELOG.T3B1.md diff --git a/core/CHANGELOG.T2B1.md b/core/CHANGELOG.T2B1.md index 15d23c9ea..7ebe96c70 100644 --- a/core/CHANGELOG.T2B1.md +++ b/core/CHANGELOG.T2B1.md @@ -4,7 +4,7 @@ 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/). -## [2.8.2] (18th September 2024) +## [2.8.2] (unreleased) ### Added - Reduce the choices to select wordcount when unlocking repeated backup to 20 or 33. [#4099] diff --git a/core/CHANGELOG.T2T1.md b/core/CHANGELOG.T2T1.md index 04875652f..623ef1797 100644 --- a/core/CHANGELOG.T2T1.md +++ b/core/CHANGELOG.T2T1.md @@ -4,7 +4,7 @@ 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/). -## [2.8.2] (18th September 2024) +## [2.8.2] (unreleased) ### Added - Reduce the choices to select wordcount when unlocking repeated backup to 20 or 33. [#4099] diff --git a/core/CHANGELOG.T3B1.md b/core/CHANGELOG.T3B1.md new file mode 100644 index 000000000..15d23c9ea --- /dev/null +++ b/core/CHANGELOG.T3B1.md @@ -0,0 +1,970 @@ +# Changelog + +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/). + +## [2.8.2] (18th September 2024) + +### Added +- Reduce the choices to select wordcount when unlocking repeated backup to 20 or 33. [#4099] + +### Changed +- Changed prefix of public key returned by `get_ecdh_session_key` for curve25519. [#4093] +- Renamed MATIC to POL, following a network upgrade. [#4151] + +### Removed +- Removed `display_random` feature. [#4119] + +### Fixed +- Fix persistent word when going to previous word during recovery process. [#3859] +- Fix display orientation _south_. [#3990] +- Fixed SLIP-10 fingerprints for ed25519 and curve25519. [#4093] + +## [2.8.1] (unreleased) + +### Added +- Improve precision of PIN timeout countdown. [#4000] + +### Fixed +- Solana: added support for deprecated AToken Create `rent_sysvar` argument. [#3976] + + +## [2.8.0] (9th July 2024) + +### Added +- Expose value of the Optiga SEC counter in `Features` message. + +### Changed +- Reworked PIN processing. + +### Removed +- CoSi functionality. [#3442] + +### Fixed +- Increase Optiga read timeout to avoid spurious RSODs. + + +## [2.7.2] (14th June 2024) + +### Fixed +- Fixed device freeze after setup. [#3925] +- Translation fixes. [#3916] + + +## [2.7.1] (internal release) + +### Added +- Added basic support for STM32U5. [#3370] +- Cardano: Added support for tagged sets in CBOR (tag 258). [#3496] +- Cardano: Added support for Conway certificates. [#3496] +- Added ability to request Shamir backups with any number of groups/shares. [#3636] +- Added support for repeated backups. [#3640] +- Support extendable backup flag in SLIP-39. + +### Changed +- Cardano: Increased max URL length to 128 bytes. [#3496] + +### Fixed +- Translate also texts for PIN progress loaders. [#3520] + + +## [2.7.0] (20th March 2024) + +### Added +- Add translations capability. [#3206] +- Stellar: add support for `StellarClaimClaimableBalanceOp`. [#3434] +- Add loader to homescreen when locking the device. [#3440] +- Allow for going back to previous word in recovery process. [#3458] +- Clear sign ETH staking transactions on Everstake pool. [#3517] +- Send BIP-380 descriptor in GetPublicKey response. [#3539] + +### Changed +- Display descriptors for BTC Taproot public keys. [#3475] + +### Fixed +- Improved UI of multiple Solana instructions. [#3445] +- Solana multisig instruction warning will be displayed before instruction details are displayed. [#3445] +- Fixed Solana Memo instruction being unknown - it will now be recognized and displayed properly. [#3445] +- Add missing semicolon character to the passphrase entry. [#3477] + + +## [2.6.4] (20th December 2023) + +### Added +- Added Solana support. [#3359] + +### Changed +- Always display Ethereum fees in Gwei. [#3246] + +### Fixed +- Fix invalid encoding of signatures from Optiga. [#3411] +- Re-added missing address confirmation screens. [#3424] + + +## [2.6.3] (15th November 2023) + +### Added +- Support interaction-less upgrade. [#2919] +- Allowed non-zero address index in Cardano staking paths. [#3242] +- Turn the screen off when device is locked, to prolong OLED life. [#3377] + +### Changed + +### Fixed + + +## [2.6.2] (internal release) + +### Added +- Integrate Optiga into PIN verification. [#3296] + + +## [2.6.1] (internal release) + +### Added +- Implement UI. [#2610] +- QR code display when exporting XPUBs. [#3047] +- Added hw model field to all vendor headers. [#3048] +- Added firmware update without interaction. [#3205] +- Split builds of different parts to use simple util.s assembler, while FW+bootloader use interconnected ones. [#3205] +- Add support for address chunkification in Receive and Sign flow. [#3237] +- Implement device authentication. [#3255] +- Use Optiga as a source of randomness in seed generation. [#3256] + +### Changed +- Update to MicroPython 1.19.1. [#2341] +- Introduce multisig warning to BTC receive flow. [#2937] +- Introduce multiple account warning to BTC send flow. [#2937] + +### Removed +- MUE coin support. [#3216] + +### Fixed + + +## [2.6.0] (19th April 2023) + +### Added +- Signed Ethereum network and token definitions from host. [#15] +- CoSi collective signatures on Model T. [#450] +- Support Ledger Live legacy derivation path `m/44'/coin_type'/0'/account`. [#1749] +- Updated bootloader to 2.1.0. [#1901] +- Show source account path in BTC signing. [#2151] +- Show path for internal outputs in BTC signing. [#2152] +- Add model info to image and check when installing bootloader, prevent bootloader downgrade. [#2623] +- Allow proposed Casa m/45' multisig paths for Bitcoin and Ethereum. [#2682] +- Support for external reward addresses in Cardano CIP-36 registrations. [#2692] +- Add address confirmation screen to EIP712 signing flow. [#2818] +- Add the possibility of rebooting the device into bootloader mode. [#2841] + +### Changed +- Switched to redesigned, Rust-based user interface. [#1922] +- Ignore channel ID in U2F. [#2205] +- Micropython code optimizations to make the code take less flash space. [#2525] +- CPU Frequency increased to 180 MHz. [#2587] +- Fixed display blinking by increasing backlight PWM frequency. [#2595] +- Updated FAT FS library to R0.15. [#2611] +- Auto-lock timer is no longer restarted by USB messages, only touch screen activity. [#2651] +- Updated UI and terminology in Cardano CIP-36 registrations. [#2692] +- Ethereum's EIP-712 signing no longer restricts the maximum field size to 1024 bytes. [#2746] +- Force basic attestation in FIDO2 for google.com. [#2834] + +### Fixed +- Enable Trezor to work as a FIDO2 authenticator for Apple. [#2784] +- Fix RNG for bootloader and make insecure PRNG opt-in, not opt-out. [#2899] + +### Security +- Match and validate script type of change-outputs in Bitcoin signing. + + +## [2.5.3] (16th November 2022) + +### Added +- Optimize touch controller communication. [#262] +- Add SLIP-0025 CoinJoin accounts. [#2289] +- Show red error header when USB data pins are not connected. [#2366] +- Add support for Zcash unified addresses. [#2398] +- Using hardware acceleration (dma2d) for rendering. [#2414] +- Add stack overflow detection. [#2427] +- Show fee rate when replacing transaction. [#2442] +- Support SetBusy message. [#2445] +- Add serialize option to SignTx. [#2507] +- Support for Cardano CIP-36 governance registration format. [#2561] +- Implement CoinJoin requests. [#2577] + +### Changed +- Extend decimals of fee rate to 2 digits. [#2486] +- Display only sat instead of sat BTC. [#2487] +- Remove old BulletProof code from Monero. [#2570] + +### Fixed +- Fix sending XMR transaction to an integrated address. [#2213] +- Fix XMR primary address display. [#2453] + + +## [2.5.2] (17th August 2022) + +### Added +- Add model R emulator [#2230] +- Add support for Monero HF15 features. [#2232] +- Add basic Trezor Model R hardware support [#2243] +- Show the fee rate on the signing confirmation screen. [#2249] +- Jump and stay in bootloader from firmware through SVC call reverse trampoline. [#2284] +- Expose raw pixel access to Rust [#2297] +- Add RGB LED for Model R [#2300] +- Boardloader capabilities structure [#2324] +- Support for Cardano Babbage era transaction items [#2354] +- Add "Show All"/"Show Simple" choice to Cardano transaction signing [#2355] +- Documentation for embedded C+Rust debugging [#2380] +- Show thousands separator when displaying large amounts. [#2394] + +### Changed +- Refactor and cleanup of Monero code. [#642] +- Remove power-down power-up cycle from touch controller initialization in firmware [#2130] +- Updated secp256k1-zkp. [#2261] +- Cardano internal refactors [#2313] +- Allow Cardano's `required_signers` in ordinary and multisig transactions + Allow Cardano's `datum_hash` in non-script outputs [#2354] + +### Removed +- Removed support for obsolete Monero hardfork 12 and below [#642] +- Remove firmware dumping capability. [#2433] + +### Fixed +- _(Emulator)_ Emulator window will always react to shutdown events, even while waiting for USB packets. [#973] +- Ensure correct order when verifying external inputs in Bitcoin signing. [#2415] +- Fix Decred transaction weight calculation. [#2422] + + +## 2.5.1 [18th May 2022] + +### Added +- Support Bitcoin payment requests. [#1430] +- Show "signature is valid" dialog when VerifyMessage succeeds. [#1880] +- Support ownership proofs for Taproot addresses. [#1944] +- Add extra check for Taproot scripts validity. [#2077] +- Support Electrum signatures in VerifyMessage. [#2100] +- Support Cardano Alonzo-era transactions (Plutus). [#2114] +- Support unverified external inputs. [#2144] +- Support Zcash version 5 transaction format [#2166] +- Add firmware hashing functionality. [#2239] + +### Changed +- Ensure input's script type and path match the scriptPubKey. [#1018] +- Automatically choose best size and encoding for QR codes. [#1751] +- Bitcoin bech32 addresses are encoded in lower-case for QR codes. [#1751] +- Full type-checking for Python code (except Monero app). [#1939] +- \[debuglink] Do not wait for screen refresh when _disabling_ layout watching. [#2135] + +### Removed +- GAME, NIX and POLIS support. [#2181] + +### Fixed +- EIP-1559 transaction correctly show final Hold to Confirm screen. [#2020] +- Fix sighash computation in proofs of ownership. [#2034] +- Fix domain-only EIP-712 hashes (i.e. when `primaryType`=`EIP712Domain`). [#2036] +- Support EIP-712 messages where a struct type is only used as an array element. [#2167] + +### Security +- Fix a coin loss vulnerability related to replacement transactions with multisig inputs and unverified external inputs. + +### Incompatible changes +- Trezor will refuse to sign UTXOs that do not match the provided derivation path (e.g., transactions belonging to a different wallet, or synthetic transaction inputs). [#1018] + + +## 2.4.3 [8th December 2021] + +### Added +- Convert timestamps to human-readable dates and times. [#741] +- Support no_script_type option in SignMessage. [#1586] +- Show address confirmation in SignMessage. [#1586] +- Support pre-signed external Taproot inputs in Bitcoin. [#1656] +- Show warning dialog in SignMessage if a non-standard path is used. [#1656] +- Support spending from Taproot UTXOs. [#1656] +- Support GetAddress for Taproot addresses. [#1656] +- Support sending to Taproot addresses. [#1656] +- Support replacement transactions with Taproot inputs in Bitcoin. [#1656] +- Support of BIP-340 Schnorr signatures (using secp256k1-zkp). [#1678] +- Support for Taproot descriptors. [#1710] +- Ethereum: support 64-bit chain IDs. [#1771] +- Support for Cardano multi-sig transactions, token minting, script addresses, multi-sig keys, minting keys and native script verification. [#1772] +- For compatibility with other Cardano implementations, it is now possible to specify which Cardano derivation type is used. [#1783] +- Full type-checking for Ethereum app. [#1794] +- Ethereum - support for EIP712 - signing typed data. [#1835] +- Stellar: add support for StellarManageBuyOfferOp and StellarPathPaymentStrictSendOp. [#1838] +- Add script_pubkey field to TxInput message. [#1857] + +### Changed +- Cardano root is derived together with the normal master secret. [#1231] +- Update QR-code-generator library version. [#1639] +- Faster ECDSA signing and verification (using secp256k1-zkp). [#1678] +- Most Stellar fields are now required on protobuf level. [#1755] +- Type-checking enabled for apps.stellar. [#1755] +- Updated micropython to version 1.17. [#1789] +- Errors from protobuf decoding are now more expressive. [#1811] + +### Removed +- Disable previous transaction streaming in Bitcoin if all internal inputs are Taproot. [#1656] +- Remove BELL, ZNY support. [#1872] + +### Fixed +- Remove altcoin message definitions from bitcoin-only build. [#1633] +- Ethereum: make it optional to view the entire data field when signing transaction. [#1819] + +### Security +- Ensure that the user is always warned about non-standard paths. +- Avoid accidental build with broken stack protector. [#1642] + +### Incompatible changes +- Session must be configured with Initialize(derive_cardano=True), otherwise Cardano functions will fail. [#1231] +- Timebounds must be set for a Stellar transaction. [#1755] +- Cardano derivation type must be specified for all Cardano functions. [#1783] +- Ethereum non-EIP-155 cross-chain signing is no longer supported. [#1794] +- Stellar: rename StellarManageOfferOp to StellarManageSellOfferOp, StellarPathPaymentOp to StellarPathPaymentStrictReceiveOp and StellarCreatePassiveOfferOp to StellarCreatePassiveSellOfferOp. [#1838] + + +## 2.4.2 [16th September 2021] + +### Added +- [emulator] Added option to dump detailed Micropython memory layout [#1557] +- Support for Ethereum EIP1559 transactions [#1604] +- Re-enabled Firo support [#1767] + +### Changed +- Converted all remaining code to common layouts. [#1545] +- Memory optimization of BTC signing and CBOR decoding. [#1581] +- Cardano transaction parameters are now streamed into the device one by one instead of being sent as one large object [#1683] +- Thanks to transaction streaming, Cardano now supports larger transactions (tested with 62kB transactions, but supposedly even larger transactions are supported) [#1683] +- Refactor RLP codec for better clarity and some small memory savings. [#1704] +- Refer to `m/48'/...` multisig derivation paths as BIP-48 instead of Purpose48. [#1744] + +### Removed +- Removed support for Lisk [#1765] + +### Fixed +- Disable TT features (SD card, SBU, FAT) for T1 build. [#1163] +- It is no longer possible to sign Cardano transactions containing paths belonging to multiple accounts (except for Byron to Shelley migration) [#1683] +- Add new rpId to Binance's FIDO definition. [#1705] +- Don't use format strings in keyctl-proxy [#1707] +- Properly respond to USB events while on a paginated screen. [#1708] + +### Incompatible changes +- Due to transaction streaming in Cardano, it isn't possible to return the whole serialized transaction anymore. Instead the transaction hash, transaction witnesses and auxiliary data supplement are returned and the serialized transaction needs to be assembled by the client. [#1683] + + +## 2.4.1 [14th July 2021] + +### Added +- ButtonRequest for multi-page views contains number of pages. [#1671] + +### Changed +- Converted altcoin apps to common layout code. [#1538] +- Reimplement protobuf codec and library in Rust [#1541] +- Cardano: Reintroduce maximum transaction output size limitation [#1606] +- Cardano: Improve address validation and decouple it from address derivation [#1606] +- Cardano: Remove sorting of policies, assets and withdrawals. Rather add them to the transaction in the order they arrived in. [#1672] +- Cardano: Forbid withdrawals with the same path in a single transaction [#1672] + +### Removed +- Removed support for Firo [#1647] +- Removed support for Hatch [#1650] + +### Fixed +- Unify Features.revision reporting with legacy [#1620] +- Fix red screen on shutdown. [#1658] +- Empty passphrase is properly cached in Cardano functions [#1659] + +### Security +- Ensure that all testnet coins use SLIP-44 coin type 1. +- Disable all testnet coins from accessing Bitcoin paths. +- Restrict BIP-45 paths to Bitcoin and coins with strong replay protection. +- Fix operation source account encoding in Stellar. + + +## 2.4.0 [9th June 2021] + +### Added +- Decred staking. [#1249] +- Locking the device by holding finger on the homescreen for 2.5 seconds. [#1404] +- Public key to ECDHSessionKey. [#1518] +- Rust FFI for MicroPython. [#1540] + +### Changed +- Support PIN of unlimited length. [#1167] +- Allow decreasing the output value in RBF transactions. [#1491] +- Cardano: Allow stake pool registrations with zero margin. [#1502] +- Cardano: Assets are now shown as CIP-0014. [#1510] +- Random delays use ChaCha-based DRBG instead of HMAC-DRBG. [#1554] +- Reduce memory fragmentation by clearing memory after every workflow. [#1565] +- Update some FIDO icons. [#1456] + +### Fixed +- Import errors on T1 startup. [#24] +- Improve wording when showing multisig XPUBs. [#1431] + + +## 2.3.6 [15th February 2021] + +### Added +- Compatibility paths for Unchained Capital. [#1467] + +## 2.3.5 [10th February 2021] + +### Added +- CoinJoin preauthorization and signing flow. [#1053] +- Value of the `safety-checks` setting to the `Features` message. [#1193] +- ERC20 tokens show contract address for confirmation. Unknown ERC20 tokens show wei amount. [#800] +- Replacement transaction signing for replace-by-fee and PayJoin. [#1292] +- Support for Output Descriptors export. [#1363] +- Paginated display for signing/verifying long messages. [#1271] +- Show Ypub/Zpub correctly for multisig GetAddress. [#1415] +- Show amounts in mBTC, uBTC and sat denominations. [#1369] + +### Changed +- The `safety-checks` setting gained new possible value `PromptTemporarily` which overrides safety checks until device reboot. [#1133] +- Protobuf codec now enforces `required` fields and pre-fills default values. [#379] +- `TxAck` messages are now decoded into "polymorphic" subtypes instead of the common `TxAck` type. +- Bump nanopb dependency to 0.4.3. [#1105] +- BIP-32 paths must now match a pre-defined path schema to be considered valid. [#1184] +- Minimum auto-lock delay to 1 minute. The former value of 10 seconds still applies for debug builds. [#1351] +- It is again possible to sign for Ethereum clones that are not officially supported. [#1335] +- Bump nanopb dependency to 0.4.4. [#1402] +- Automatic breaking text on whitespace. [#1384] +- Introduced limit of 32 characters for device label. [#1399] + +### Deprecated + +### Removed +- PIVX support +- dropped debug-only `DebugLinkShowText` functionality + +### Fixed +- Path warning is not shown on `GetAddress(show_display=False)` call. [#1206] +- Settings are also erased from RAM when device is wiped. [#1322] + +### Security + +## 2.3.4 [7th October 2020] + +### Added +- Support for the upcoming Monero hard fork. [#1246] + +### Changed + +### Deprecated + +### Removed + +### Fixed + +### Security + + +## 2.3.3 [2nd September 2020] + +### Added +- Running the frozen version of the emulator doesn't need arguments. [#1115] +- XVG support. [#1165] +- Hard limit on transaction fees. Can be disabled using `safety-checks`. [#1087] + +### Changed +- Print inverted question mark for non-printable characters. +- Remove pre-fill bar from text rendering functions. [#1173] +- Display coin name when signing or verifying messages. [#1159] +- Allow spending coins from Bitcoin paths if the coin has implemented strong replay protection via `SIGHASH_FORKID`. [#1188] + +### Deprecated + +### Removed +- Remove ETP, GIN, PTC, ZEL support. +- Drop support for signing Zcash v3 transactions. [#982] + +### Fixed +- CRW addresses are properly generated. [#1139] +- Fix boot loop after uploading invalid homescreen. [#1118] +- Allow 49/x not 49/x' for Casa. [#1190] +- Make sure Homescreen is properly initialized. [#1095] + +### Security +- Show non-empty passphrase on device when it was entered on host. +- Show warning if nLockTime is set but ineffective due to all nSequence values being 0xffffffff. + +## 2.3.2 [5th August 2020] + +### Added +- Soft lock. [#958] +- Auto lock. [#1027] +- Dedicated `initialized` field in storage. +- Support EXTERNAL transaction inputs with a SLIP-0019 proof of ownership. [#1052] +- Support pre-signed EXTERNAL transaction inputs. +- Support multiple change-outputs. [#1098] +- New option `safety-checks` allows overriding "forbidden key path" errors. [#1126] +- Support for Cardano Shelley. [#948] + +### Changed +- `Features.pin_cached` renamed to `unlocked`. +- Forbid all settings if the device is not yet initialized. [#1056] +- Rewrite USB codec and Protobuf decoder to be more memory-efficient. [#1089] +- Allow compatibility namespaces for Casa and Green Address. + +### Deprecated +- Deprecate `overwintered` field in `SignTx` and `TxAck`. + +### Removed +- Generated protobuf classes now do not contain deprecated fields. + +### Fixed +- Fix cancel icon in PIN dialog. [#1042] +- Fix repaint bug in QR code rendering. [#1067] +- Fix QR code overlapping in Monero address. monero-gui#2960, [#1074] +- Re-introduce ability to spend pre-Overwinter UTXO on Zcash-like coins. [#1030] + +## 2.3.1 [June 2020] + +### Changed +- Refactor Bitcoin signing +- Refactor Keychain into a decorator + +### Security +- Stream previous tx also for Segwit inputs + +## 2.3.0 [April 2020] + +### Added +- Cache up to 10 sessions (passphrases) +- SD card protection +- Show xpubs with multisig get_address +- Introduce FatFS (version 0.14) +- Support Ed25519 in FIDO2 + +### Changed +- Passphrase redesign +- Upgrade MicroPython to 1.12 + +### Fixed +- Properly limit passphrase to 50 bytes and not 50 characters +- Monero: add confirmation dialog for unlock_time + +## 2.2.0 [January 2020] + +### Added +- Add feature to retrieve the next U2F counter. +- Wipe code. +- Add screen for time bounds in Stellar. + +### Fixed +- Fix continuous display blinking with Android in U2F. +- U2F UX improvements. + +### Changed +- Rework Recovery persistence internally. + +### Removed +- Remove unused ButtonRequest.data field. +- Disallow changing of settings via dry-run recovery. + +## 2.1.8 [November 2019] + +### Added +- Support Tezos 005-BABYLON hardfork. +- Show XPUBs in GetAddress for multisig. + +### Security +- Security improvements. + +## 2.1.7 [October 2019] + +### Fixed +- Fix low memory issue. + +## 2.1.6 [October 2019] + +### Added +- Super Shamir. +- FIDO2. +- FIDO2 credential management via trezorctl. +- BackupType in Features. + +### Changed +- Refactor Shamir related codebase. + +### Fixed +- Fix storage keys module visibility bug (6ad329) introduced in 2.1.3 (46e4c0) which was breaking upgrades. + +## 2.1.5 [September 2019] + +### Added +- Binance Coin support. +- Introduce Features.Capabilities. + +### Fixed +- Fix for sluggish U2F authentication when using Shamir. +- Fix UI for Shamir with 33 words. +- Fix Wanchain signing. + +## 2.1.4 [August 2019 hotfix] + +### Fixed +- Shamir Backup reset device hotfix. + +## 2.1.3 [August 2019] + +### Added +- Shamir Backup with Recovery persistence. + +### Fixed +- Touchscreen freeze fix. +- Fix display of non-divisible OMNI amounts. + +## 2.1.2 [unreleased] + +### Added +- Shamir Backup feature preview. + +## 2.1.1 [June 2019] + +### Added +- EOS support. +- Set screen rotation via user setting. +- Display non-zero locktime values. + +### Changed +- Don't rotate the screen via swipe gesture. +- More strict path validations. + +### Fixed +- Hotfix for touchscreen freeze. +- Monero UI fixes. +- Speed and memory optimizations. + +## 2.1.0 [March 2019] + +### Added +- New coins: ATS, AXE, FLO, GIN, KMD, NIX, PIVX, REOSC, XPM, XSN, ZCL. +- New ETH tokens. + +### Fixed +- Ripple, Stellar, Cardano and NEM fixes. + +### Changed +- Included bootloader 2.0.3. + +### Security +- Security improvements. +- Upgraded to new storage format. + +## 2.0.10 [December 2018] + +### Added +- Add support for OMNI layer: OMNI/MAID/USDT. +- Add support for new coins: BTX, CPC, GAME, RVN. +- Add support for new Ethereum tokens. + +### Changed +- Included bootloader 2.0.2. + +### Fixed +- Fix Monero payment ID computation. +- Fix issue with touch screen and flickering. + +## 2.0.9 [November 2018] + +### Fixed +- Small Monero and Segwit bugfixes. + +## 2.0.8 [October 2018] + +### Added +- Monero support. +- Cardano support. +- Stellar support. +- Ripple support. +- Tezos support. +- Decred support. +- Groestlcoin support. +- Zencash support. +- Zcash sapling hardfork support. +- Implemented seedless setup. + +## 2.0.7 [June 2018] + +### Added +- Bitcoin Cash cashaddr support. +- Zcash Overwinter hardfork support. +- NEM support. +- Lisk support. +- Show warning on home screen if PIN is not set. +- Support for new coins (BTCP, FUJI, VTC, VIA, XZC). +- Support for new Ethereum networks (EOSC, ETHS, ELLA, CTL, EGEM, WAN). +- Support for 500+ new Ethereum tokens. + +## 2.0.6 [March 2018] + +### Added +- Add special characters to passphrase keyboard. + +### Fixed +- Fix layout for Ethereum transactions. +- Fix public key generation for SSH and GPG. + +## 2.0.5 [March 2018] + +### Added +- First public release. + +[#15]: https://github.com/trezor/trezor-firmware/pull/15 +[#24]: https://github.com/trezor/trezor-firmware/pull/24 +[#262]: https://github.com/trezor/trezor-firmware/pull/262 +[#379]: https://github.com/trezor/trezor-firmware/pull/379 +[#450]: https://github.com/trezor/trezor-firmware/pull/450 +[#642]: https://github.com/trezor/trezor-firmware/pull/642 +[#741]: https://github.com/trezor/trezor-firmware/pull/741 +[#800]: https://github.com/trezor/trezor-firmware/pull/800 +[#948]: https://github.com/trezor/trezor-firmware/pull/948 +[#958]: https://github.com/trezor/trezor-firmware/pull/958 +[#973]: https://github.com/trezor/trezor-firmware/pull/973 +[#982]: https://github.com/trezor/trezor-firmware/pull/982 +[#1018]: https://github.com/trezor/trezor-firmware/pull/1018 +[#1027]: https://github.com/trezor/trezor-firmware/pull/1027 +[#1030]: https://github.com/trezor/trezor-firmware/pull/1030 +[#1042]: https://github.com/trezor/trezor-firmware/pull/1042 +[#1049]: https://github.com/trezor/trezor-firmware/pull/1049 +[#1052]: https://github.com/trezor/trezor-firmware/pull/1052 +[#1053]: https://github.com/trezor/trezor-firmware/pull/1053 +[#1056]: https://github.com/trezor/trezor-firmware/pull/1056 +[#1067]: https://github.com/trezor/trezor-firmware/pull/1067 +[#1074]: https://github.com/trezor/trezor-firmware/pull/1074 +[#1087]: https://github.com/trezor/trezor-firmware/pull/1087 +[#1089]: https://github.com/trezor/trezor-firmware/pull/1089 +[#1095]: https://github.com/trezor/trezor-firmware/pull/1095 +[#1098]: https://github.com/trezor/trezor-firmware/pull/1098 +[#1105]: https://github.com/trezor/trezor-firmware/pull/1105 +[#1115]: https://github.com/trezor/trezor-firmware/pull/1115 +[#1118]: https://github.com/trezor/trezor-firmware/pull/1118 +[#1126]: https://github.com/trezor/trezor-firmware/pull/1126 +[#1133]: https://github.com/trezor/trezor-firmware/pull/1133 +[#1139]: https://github.com/trezor/trezor-firmware/pull/1139 +[#1159]: https://github.com/trezor/trezor-firmware/pull/1159 +[#1163]: https://github.com/trezor/trezor-firmware/pull/1163 +[#1165]: https://github.com/trezor/trezor-firmware/pull/1165 +[#1167]: https://github.com/trezor/trezor-firmware/pull/1167 +[#1173]: https://github.com/trezor/trezor-firmware/pull/1173 +[#1184]: https://github.com/trezor/trezor-firmware/pull/1184 +[#1188]: https://github.com/trezor/trezor-firmware/pull/1188 +[#1190]: https://github.com/trezor/trezor-firmware/pull/1190 +[#1193]: https://github.com/trezor/trezor-firmware/pull/1193 +[#1206]: https://github.com/trezor/trezor-firmware/pull/1206 +[#1231]: https://github.com/trezor/trezor-firmware/pull/1231 +[#1246]: https://github.com/trezor/trezor-firmware/pull/1246 +[#1249]: https://github.com/trezor/trezor-firmware/pull/1249 +[#1271]: https://github.com/trezor/trezor-firmware/pull/1271 +[#1292]: https://github.com/trezor/trezor-firmware/pull/1292 +[#1322]: https://github.com/trezor/trezor-firmware/pull/1322 +[#1335]: https://github.com/trezor/trezor-firmware/pull/1335 +[#1351]: https://github.com/trezor/trezor-firmware/pull/1351 +[#1363]: https://github.com/trezor/trezor-firmware/pull/1363 +[#1369]: https://github.com/trezor/trezor-firmware/pull/1369 +[#1384]: https://github.com/trezor/trezor-firmware/pull/1384 +[#1399]: https://github.com/trezor/trezor-firmware/pull/1399 +[#1402]: https://github.com/trezor/trezor-firmware/pull/1402 +[#1404]: https://github.com/trezor/trezor-firmware/pull/1404 +[#1415]: https://github.com/trezor/trezor-firmware/pull/1415 +[#1430]: https://github.com/trezor/trezor-firmware/pull/1430 +[#1431]: https://github.com/trezor/trezor-firmware/pull/1431 +[#1456]: https://github.com/trezor/trezor-firmware/pull/1456 +[#1467]: https://github.com/trezor/trezor-firmware/pull/1467 +[#1491]: https://github.com/trezor/trezor-firmware/pull/1491 +[#1502]: https://github.com/trezor/trezor-firmware/pull/1502 +[#1510]: https://github.com/trezor/trezor-firmware/pull/1510 +[#1518]: https://github.com/trezor/trezor-firmware/pull/1518 +[#1538]: https://github.com/trezor/trezor-firmware/pull/1538 +[#1540]: https://github.com/trezor/trezor-firmware/pull/1540 +[#1541]: https://github.com/trezor/trezor-firmware/pull/1541 +[#1545]: https://github.com/trezor/trezor-firmware/pull/1545 +[#1554]: https://github.com/trezor/trezor-firmware/pull/1554 +[#1557]: https://github.com/trezor/trezor-firmware/pull/1557 +[#1565]: https://github.com/trezor/trezor-firmware/pull/1565 +[#1581]: https://github.com/trezor/trezor-firmware/pull/1581 +[#1586]: https://github.com/trezor/trezor-firmware/pull/1586 +[#1604]: https://github.com/trezor/trezor-firmware/pull/1604 +[#1606]: https://github.com/trezor/trezor-firmware/pull/1606 +[#1620]: https://github.com/trezor/trezor-firmware/pull/1620 +[#1633]: https://github.com/trezor/trezor-firmware/pull/1633 +[#1639]: https://github.com/trezor/trezor-firmware/pull/1639 +[#1642]: https://github.com/trezor/trezor-firmware/pull/1642 +[#1647]: https://github.com/trezor/trezor-firmware/pull/1647 +[#1650]: https://github.com/trezor/trezor-firmware/pull/1650 +[#1656]: https://github.com/trezor/trezor-firmware/pull/1656 +[#1658]: https://github.com/trezor/trezor-firmware/pull/1658 +[#1659]: https://github.com/trezor/trezor-firmware/pull/1659 +[#1671]: https://github.com/trezor/trezor-firmware/pull/1671 +[#1672]: https://github.com/trezor/trezor-firmware/pull/1672 +[#1678]: https://github.com/trezor/trezor-firmware/pull/1678 +[#1683]: https://github.com/trezor/trezor-firmware/pull/1683 +[#1704]: https://github.com/trezor/trezor-firmware/pull/1704 +[#1705]: https://github.com/trezor/trezor-firmware/pull/1705 +[#1707]: https://github.com/trezor/trezor-firmware/pull/1707 +[#1708]: https://github.com/trezor/trezor-firmware/pull/1708 +[#1710]: https://github.com/trezor/trezor-firmware/pull/1710 +[#1744]: https://github.com/trezor/trezor-firmware/pull/1744 +[#1749]: https://github.com/trezor/trezor-firmware/pull/1749 +[#1751]: https://github.com/trezor/trezor-firmware/pull/1751 +[#1755]: https://github.com/trezor/trezor-firmware/pull/1755 +[#1765]: https://github.com/trezor/trezor-firmware/pull/1765 +[#1767]: https://github.com/trezor/trezor-firmware/pull/1767 +[#1771]: https://github.com/trezor/trezor-firmware/pull/1771 +[#1772]: https://github.com/trezor/trezor-firmware/pull/1772 +[#1783]: https://github.com/trezor/trezor-firmware/pull/1783 +[#1789]: https://github.com/trezor/trezor-firmware/pull/1789 +[#1794]: https://github.com/trezor/trezor-firmware/pull/1794 +[#1811]: https://github.com/trezor/trezor-firmware/pull/1811 +[#1819]: https://github.com/trezor/trezor-firmware/pull/1819 +[#1835]: https://github.com/trezor/trezor-firmware/pull/1835 +[#1838]: https://github.com/trezor/trezor-firmware/pull/1838 +[#1857]: https://github.com/trezor/trezor-firmware/pull/1857 +[#1872]: https://github.com/trezor/trezor-firmware/pull/1872 +[#1880]: https://github.com/trezor/trezor-firmware/pull/1880 +[#1901]: https://github.com/trezor/trezor-firmware/pull/1901 +[#1922]: https://github.com/trezor/trezor-firmware/pull/1922 +[#1939]: https://github.com/trezor/trezor-firmware/pull/1939 +[#1944]: https://github.com/trezor/trezor-firmware/pull/1944 +[#2020]: https://github.com/trezor/trezor-firmware/pull/2020 +[#2034]: https://github.com/trezor/trezor-firmware/pull/2034 +[#2036]: https://github.com/trezor/trezor-firmware/pull/2036 +[#2077]: https://github.com/trezor/trezor-firmware/pull/2077 +[#2100]: https://github.com/trezor/trezor-firmware/pull/2100 +[#2114]: https://github.com/trezor/trezor-firmware/pull/2114 +[#2130]: https://github.com/trezor/trezor-firmware/pull/2130 +[#2135]: https://github.com/trezor/trezor-firmware/pull/2135 +[#2144]: https://github.com/trezor/trezor-firmware/pull/2144 +[#2151]: https://github.com/trezor/trezor-firmware/pull/2151 +[#2152]: https://github.com/trezor/trezor-firmware/pull/2152 +[#2161]: https://github.com/trezor/trezor-firmware/pull/2161 +[#2166]: https://github.com/trezor/trezor-firmware/pull/2166 +[#2167]: https://github.com/trezor/trezor-firmware/pull/2167 +[#2181]: https://github.com/trezor/trezor-firmware/pull/2181 +[#2205]: https://github.com/trezor/trezor-firmware/pull/2205 +[#2213]: https://github.com/trezor/trezor-firmware/pull/2213 +[#2230]: https://github.com/trezor/trezor-firmware/pull/2230 +[#2232]: https://github.com/trezor/trezor-firmware/pull/2232 +[#2239]: https://github.com/trezor/trezor-firmware/pull/2239 +[#2243]: https://github.com/trezor/trezor-firmware/pull/2243 +[#2249]: https://github.com/trezor/trezor-firmware/pull/2249 +[#2261]: https://github.com/trezor/trezor-firmware/pull/2261 +[#2284]: https://github.com/trezor/trezor-firmware/pull/2284 +[#2289]: https://github.com/trezor/trezor-firmware/pull/2289 +[#2297]: https://github.com/trezor/trezor-firmware/pull/2297 +[#2300]: https://github.com/trezor/trezor-firmware/pull/2300 +[#2313]: https://github.com/trezor/trezor-firmware/pull/2313 +[#2324]: https://github.com/trezor/trezor-firmware/pull/2324 +[#2341]: https://github.com/trezor/trezor-firmware/pull/2341 +[#2354]: https://github.com/trezor/trezor-firmware/pull/2354 +[#2355]: https://github.com/trezor/trezor-firmware/pull/2355 +[#2366]: https://github.com/trezor/trezor-firmware/pull/2366 +[#2380]: https://github.com/trezor/trezor-firmware/pull/2380 +[#2394]: https://github.com/trezor/trezor-firmware/pull/2394 +[#2398]: https://github.com/trezor/trezor-firmware/pull/2398 +[#2414]: https://github.com/trezor/trezor-firmware/pull/2414 +[#2415]: https://github.com/trezor/trezor-firmware/pull/2415 +[#2422]: https://github.com/trezor/trezor-firmware/pull/2422 +[#2427]: https://github.com/trezor/trezor-firmware/pull/2427 +[#2433]: https://github.com/trezor/trezor-firmware/pull/2433 +[#2442]: https://github.com/trezor/trezor-firmware/pull/2442 +[#2445]: https://github.com/trezor/trezor-firmware/pull/2445 +[#2453]: https://github.com/trezor/trezor-firmware/pull/2453 +[#2486]: https://github.com/trezor/trezor-firmware/pull/2486 +[#2487]: https://github.com/trezor/trezor-firmware/pull/2487 +[#2507]: https://github.com/trezor/trezor-firmware/pull/2507 +[#2525]: https://github.com/trezor/trezor-firmware/pull/2525 +[#2561]: https://github.com/trezor/trezor-firmware/pull/2561 +[#2570]: https://github.com/trezor/trezor-firmware/pull/2570 +[#2577]: https://github.com/trezor/trezor-firmware/pull/2577 +[#2587]: https://github.com/trezor/trezor-firmware/pull/2587 +[#2595]: https://github.com/trezor/trezor-firmware/pull/2595 +[#2610]: https://github.com/trezor/trezor-firmware/pull/2610 +[#2611]: https://github.com/trezor/trezor-firmware/pull/2611 +[#2623]: https://github.com/trezor/trezor-firmware/pull/2623 +[#2651]: https://github.com/trezor/trezor-firmware/pull/2651 +[#2682]: https://github.com/trezor/trezor-firmware/pull/2682 +[#2692]: https://github.com/trezor/trezor-firmware/pull/2692 +[#2746]: https://github.com/trezor/trezor-firmware/pull/2746 +[#2784]: https://github.com/trezor/trezor-firmware/pull/2784 +[#2818]: https://github.com/trezor/trezor-firmware/pull/2818 +[#2834]: https://github.com/trezor/trezor-firmware/pull/2834 +[#2841]: https://github.com/trezor/trezor-firmware/pull/2841 +[#2888]: https://github.com/trezor/trezor-firmware/pull/2888 +[#2899]: https://github.com/trezor/trezor-firmware/pull/2899 +[#2919]: https://github.com/trezor/trezor-firmware/pull/2919 +[#2937]: https://github.com/trezor/trezor-firmware/pull/2937 +[#2955]: https://github.com/trezor/trezor-firmware/pull/2955 +[#2989]: https://github.com/trezor/trezor-firmware/pull/2989 +[#3035]: https://github.com/trezor/trezor-firmware/pull/3035 +[#3047]: https://github.com/trezor/trezor-firmware/pull/3047 +[#3048]: https://github.com/trezor/trezor-firmware/pull/3048 +[#3205]: https://github.com/trezor/trezor-firmware/pull/3205 +[#3206]: https://github.com/trezor/trezor-firmware/pull/3206 +[#3208]: https://github.com/trezor/trezor-firmware/pull/3208 +[#3216]: https://github.com/trezor/trezor-firmware/pull/3216 +[#3218]: https://github.com/trezor/trezor-firmware/pull/3218 +[#3237]: https://github.com/trezor/trezor-firmware/pull/3237 +[#3242]: https://github.com/trezor/trezor-firmware/pull/3242 +[#3244]: https://github.com/trezor/trezor-firmware/pull/3244 +[#3246]: https://github.com/trezor/trezor-firmware/pull/3246 +[#3255]: https://github.com/trezor/trezor-firmware/pull/3255 +[#3256]: https://github.com/trezor/trezor-firmware/pull/3256 +[#3296]: https://github.com/trezor/trezor-firmware/pull/3296 +[#3311]: https://github.com/trezor/trezor-firmware/pull/3311 +[#3359]: https://github.com/trezor/trezor-firmware/pull/3359 +[#3370]: https://github.com/trezor/trezor-firmware/pull/3370 +[#3377]: https://github.com/trezor/trezor-firmware/pull/3377 +[#3411]: https://github.com/trezor/trezor-firmware/pull/3411 +[#3424]: https://github.com/trezor/trezor-firmware/pull/3424 +[#3434]: https://github.com/trezor/trezor-firmware/pull/3434 +[#3440]: https://github.com/trezor/trezor-firmware/pull/3440 +[#3442]: https://github.com/trezor/trezor-firmware/pull/3442 +[#3445]: https://github.com/trezor/trezor-firmware/pull/3445 +[#3458]: https://github.com/trezor/trezor-firmware/pull/3458 +[#3475]: https://github.com/trezor/trezor-firmware/pull/3475 +[#3477]: https://github.com/trezor/trezor-firmware/pull/3477 +[#3496]: https://github.com/trezor/trezor-firmware/pull/3496 +[#3517]: https://github.com/trezor/trezor-firmware/pull/3517 +[#3520]: https://github.com/trezor/trezor-firmware/pull/3520 +[#3539]: https://github.com/trezor/trezor-firmware/pull/3539 +[#3636]: https://github.com/trezor/trezor-firmware/pull/3636 +[#3640]: https://github.com/trezor/trezor-firmware/pull/3640 +[#3728]: https://github.com/trezor/trezor-firmware/pull/3728 +[#3797]: https://github.com/trezor/trezor-firmware/pull/3797 +[#3855]: https://github.com/trezor/trezor-firmware/pull/3855 +[#3858]: https://github.com/trezor/trezor-firmware/pull/3858 +[#3859]: https://github.com/trezor/trezor-firmware/pull/3859 +[#3885]: https://github.com/trezor/trezor-firmware/pull/3885 +[#3895]: https://github.com/trezor/trezor-firmware/pull/3895 +[#3896]: https://github.com/trezor/trezor-firmware/pull/3896 +[#3907]: https://github.com/trezor/trezor-firmware/pull/3907 +[#3911]: https://github.com/trezor/trezor-firmware/pull/3911 +[#3916]: https://github.com/trezor/trezor-firmware/pull/3916 +[#3917]: https://github.com/trezor/trezor-firmware/pull/3917 +[#3919]: https://github.com/trezor/trezor-firmware/pull/3919 +[#3922]: https://github.com/trezor/trezor-firmware/pull/3922 +[#3925]: https://github.com/trezor/trezor-firmware/pull/3925 +[#3940]: https://github.com/trezor/trezor-firmware/pull/3940 +[#3965]: https://github.com/trezor/trezor-firmware/pull/3965 +[#3969]: https://github.com/trezor/trezor-firmware/pull/3969 +[#3972]: https://github.com/trezor/trezor-firmware/pull/3972 +[#3976]: https://github.com/trezor/trezor-firmware/pull/3976 +[#3987]: https://github.com/trezor/trezor-firmware/pull/3987 +[#3990]: https://github.com/trezor/trezor-firmware/pull/3990 +[#3992]: https://github.com/trezor/trezor-firmware/pull/3992 +[#4000]: https://github.com/trezor/trezor-firmware/pull/4000 +[#4006]: https://github.com/trezor/trezor-firmware/pull/4006 +[#4023]: https://github.com/trezor/trezor-firmware/pull/4023 +[#4030]: https://github.com/trezor/trezor-firmware/pull/4030 +[#4054]: https://github.com/trezor/trezor-firmware/pull/4054 +[#4060]: https://github.com/trezor/trezor-firmware/pull/4060 +[#4063]: https://github.com/trezor/trezor-firmware/pull/4063 +[#4093]: https://github.com/trezor/trezor-firmware/pull/4093 +[#4099]: https://github.com/trezor/trezor-firmware/pull/4099 +[#4119]: https://github.com/trezor/trezor-firmware/pull/4119 +[#4142]: https://github.com/trezor/trezor-firmware/pull/4142 +[#4151]: https://github.com/trezor/trezor-firmware/pull/4151 diff --git a/tools/generate-changelog.py b/tools/generate-changelog.py index 4c4d506fb..e90e37f7e 100755 --- a/tools/generate-changelog.py +++ b/tools/generate-changelog.py @@ -14,7 +14,7 @@ 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", "T3T1", "D001") +INTERNAL_MODELS = ("T2T1", "T2B1", "T3B1", "T3T1", "D001") INTERNAL_MODELS_SKIP = ("D001",) From cb76e1351d483b0b830d5ea2ae1161231957eaf4 Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Thu, 5 Sep 2024 15:11:42 +0200 Subject: [PATCH 4/8] chore(core): changelog for bootloader and prodtest --- core/embed/bootloader/.changelog.d/3709.changed | 1 - core/embed/bootloader/.changelog.d/4081.changed | 1 - core/embed/bootloader/.changelog.d/4133.added | 1 - core/embed/bootloader/.changelog.d/4133.changed | 1 - core/embed/bootloader/.changelog.d/4140.fixed | 1 - core/embed/bootloader/CHANGELOG.md | 17 +++++++++++++++++ core/embed/prodtest/.changelog.d/3752.added | 1 - core/embed/prodtest/.changelog.d/4064.added | 1 - core/embed/prodtest/.changelog.d/4140.changed | 1 - core/embed/prodtest/CHANGELOG.md | 13 +++++++++++++ 10 files changed, 30 insertions(+), 8 deletions(-) delete mode 100644 core/embed/bootloader/.changelog.d/3709.changed delete mode 100644 core/embed/bootloader/.changelog.d/4081.changed delete mode 100644 core/embed/bootloader/.changelog.d/4133.added delete mode 100644 core/embed/bootloader/.changelog.d/4133.changed delete mode 100644 core/embed/bootloader/.changelog.d/4140.fixed delete mode 100644 core/embed/prodtest/.changelog.d/3752.added delete mode 100644 core/embed/prodtest/.changelog.d/4064.added delete mode 100644 core/embed/prodtest/.changelog.d/4140.changed diff --git a/core/embed/bootloader/.changelog.d/3709.changed b/core/embed/bootloader/.changelog.d/3709.changed deleted file mode 100644 index 1fdc1564d..000000000 --- a/core/embed/bootloader/.changelog.d/3709.changed +++ /dev/null @@ -1 +0,0 @@ -Require confirmation when installing non-full trust firmware image on empty device diff --git a/core/embed/bootloader/.changelog.d/4081.changed b/core/embed/bootloader/.changelog.d/4081.changed deleted file mode 100644 index d461de838..000000000 --- a/core/embed/bootloader/.changelog.d/4081.changed +++ /dev/null @@ -1 +0,0 @@ -Fix incorrect error message when installing firmware for different model. diff --git a/core/embed/bootloader/.changelog.d/4133.added b/core/embed/bootloader/.changelog.d/4133.added deleted file mode 100644 index b808dcad6..000000000 --- a/core/embed/bootloader/.changelog.d/4133.added +++ /dev/null @@ -1 +0,0 @@ -Added firmware downgrade protection diff --git a/core/embed/bootloader/.changelog.d/4133.changed b/core/embed/bootloader/.changelog.d/4133.changed deleted file mode 100644 index cc3f2171f..000000000 --- a/core/embed/bootloader/.changelog.d/4133.changed +++ /dev/null @@ -1 +0,0 @@ -[T3B1, T3T1] Added bootloader unlock mechanism to U5 models diff --git a/core/embed/bootloader/.changelog.d/4140.fixed b/core/embed/bootloader/.changelog.d/4140.fixed deleted file mode 100644 index 8f13291fe..000000000 --- a/core/embed/bootloader/.changelog.d/4140.fixed +++ /dev/null @@ -1 +0,0 @@ -[T3B1] UI adjustments: fix icon on warning screen, replace empty logo with full during boot diff --git a/core/embed/bootloader/CHANGELOG.md b/core/embed/bootloader/CHANGELOG.md index c61205912..da251e7d4 100644 --- a/core/embed/bootloader/CHANGELOG.md +++ b/core/embed/bootloader/CHANGELOG.md @@ -4,6 +4,19 @@ 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/). +## 2.1.8 [September 2024] + +### Added +- Added firmware downgrade protection. [#4133] + +### Changed +- Require confirmation when installing non-full trust firmware image on empty device. [#3709] +- Fix incorrect error message when installing firmware for different model. [#4081] +- [T3B1, T3T1] Added bootloader unlock mechanism to U5 models. [#4133] + +### Fixed +- [T3B1] UI adjustments: fix icon on warning screen, replace empty logo with full during boot. [#4140] + ## 2.1.7 [July 2024] ### Added @@ -144,5 +157,9 @@ Internal only release for Model R prototypes. [#3303]: https://github.com/trezor/trezor-firmware/pull/3303 [#3370]: https://github.com/trezor/trezor-firmware/pull/3370 [#3429]: https://github.com/trezor/trezor-firmware/pull/3429 +[#3709]: https://github.com/trezor/trezor-firmware/pull/3709 [#3711]: https://github.com/trezor/trezor-firmware/pull/3711 [#3770]: https://github.com/trezor/trezor-firmware/pull/3770 +[#4081]: https://github.com/trezor/trezor-firmware/pull/4081 +[#4133]: https://github.com/trezor/trezor-firmware/pull/4133 +[#4140]: https://github.com/trezor/trezor-firmware/pull/4140 diff --git a/core/embed/prodtest/.changelog.d/3752.added b/core/embed/prodtest/.changelog.d/3752.added deleted file mode 100644 index 76748afb3..000000000 --- a/core/embed/prodtest/.changelog.d/3752.added +++ /dev/null @@ -1 +0,0 @@ -Added commands to read bootloader and boardloader versions diff --git a/core/embed/prodtest/.changelog.d/4064.added b/core/embed/prodtest/.changelog.d/4064.added deleted file mode 100644 index 316a6e42e..000000000 --- a/core/embed/prodtest/.changelog.d/4064.added +++ /dev/null @@ -1 +0,0 @@ -Added TOUCH_CUSTOM and TOUCH_IDLE commands diff --git a/core/embed/prodtest/.changelog.d/4140.changed b/core/embed/prodtest/.changelog.d/4140.changed deleted file mode 100644 index 490a422bb..000000000 --- a/core/embed/prodtest/.changelog.d/4140.changed +++ /dev/null @@ -1 +0,0 @@ -[T3B1] Changed welcome screen to show full white display diff --git a/core/embed/prodtest/CHANGELOG.md b/core/embed/prodtest/CHANGELOG.md index 3b5815e1b..f26b9151d 100644 --- a/core/embed/prodtest/CHANGELOG.md +++ b/core/embed/prodtest/CHANGELOG.md @@ -1,4 +1,14 @@ +## 0.2.9 [18th September 2024] + +### Added +- Added commands to read bootloader and boardloader versions. [#3752] +- Added TOUCH_CUSTOM and TOUCH_IDLE commands. [#4064] + +### Changed +- [T3B1] Changed welcome screen to show full white display. [#4140] + + ## 0.2.8 [19th July 2024] ### Added @@ -61,7 +71,10 @@ [#3325]: https://github.com/trezor/trezor-firmware/pull/3325 [#3370]: https://github.com/trezor/trezor-firmware/pull/3370 +[#3752]: https://github.com/trezor/trezor-firmware/pull/3752 [#3769]: https://github.com/trezor/trezor-firmware/pull/3769 [#3770]: https://github.com/trezor/trezor-firmware/pull/3770 [#3900]: https://github.com/trezor/trezor-firmware/pull/3900 [#3932]: https://github.com/trezor/trezor-firmware/pull/3932 +[#4064]: https://github.com/trezor/trezor-firmware/pull/4064 +[#4140]: https://github.com/trezor/trezor-firmware/pull/4140 From 37006592dbc3f2d817def0c75ed6a62513895ec5 Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Mon, 9 Sep 2024 12:12:39 +0200 Subject: [PATCH 5/8] chore(core): add signed bootloader 2.1.8 for T3B1 and T3T1 --- core/CHANGELOG.T3B1.md | 1 + core/CHANGELOG.T3T1.md | 1 + core/CHANGELOG.md | 1 + .../T3B1/bootloaders/bootloader_T3B1.bin | Bin 95232 -> 96768 bytes .../T3T1/bootloaders/bootloader_T3T1.bin | Bin 109568 -> 115712 bytes 5 files changed, 3 insertions(+) diff --git a/core/CHANGELOG.T3B1.md b/core/CHANGELOG.T3B1.md index 15d23c9ea..15365fc5a 100644 --- a/core/CHANGELOG.T3B1.md +++ b/core/CHANGELOG.T3B1.md @@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed - Changed prefix of public key returned by `get_ecdh_session_key` for curve25519. [#4093] - Renamed MATIC to POL, following a network upgrade. [#4151] +- Included bootloader 2.1.8. ### Removed - Removed `display_random` feature. [#4119] diff --git a/core/CHANGELOG.T3T1.md b/core/CHANGELOG.T3T1.md index f3a09c919..9d54ed7c1 100644 --- a/core/CHANGELOG.T3T1.md +++ b/core/CHANGELOG.T3T1.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed - Changed prefix of public key returned by `get_ecdh_session_key` for curve25519. [#4093] - Renamed MATIC to POL, following a network upgrade. [#4151] +- Included bootloader 2.1.8. ### Removed - Removed `display_random` feature. [#4119] diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index 62956ecac..455b27a7e 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed - Changed prefix of public key returned by `get_ecdh_session_key` for curve25519. [#4093] - Renamed MATIC to POL, following a network upgrade. [#4151] +- [T3B1,T3T1] Included bootloader 2.1.8. ### Removed - Removed `display_random` feature. [#4119] diff --git a/core/embed/models/T3B1/bootloaders/bootloader_T3B1.bin b/core/embed/models/T3B1/bootloaders/bootloader_T3B1.bin index 034d5c954af9c1a306db636d22b4ebbac475606a..a7bb956a54fce08e4ff966a46f475d49ede7e03f 100644 GIT binary patch delta 21392 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 COUhwVlvOS%*G(Be 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 diff --git a/core/embed/models/T3T1/bootloaders/bootloader_T3T1.bin b/core/embed/models/T3T1/bootloaders/bootloader_T3T1.bin index 79eed959095eeed2d0d46721f86faf6bc1c07f34..b8c7a1b9c2633bb17aeb4ed47dc7355e365236d4 100644 GIT binary patch delta 55659 zcmcesw0y+Wjbp*XeK_`ey z*shUA1tJOtH3_05G0I{Ln_jP?&bV9=QBjs5M5ICzx@YZos%L`er{C}Uuv-_1uhym(I^`DR@lcK$4ak<-xoU%X7arEYRmKZ5_E_x7ueT14{NeDp`cG|8f2E3e)=1w zi8)4TnvPPMb_hoxdp~LytA;a-mD6{21zZIhXP(cQO|2H82TVB!^e_r?dQ=xRn z|5o|`hdjssxo00-{_~#v8Iu3`;Qw0I@qaD&|53TTKaBOC_2!Rh>@f4N*%5et@Ci%I z7kZ|ciNFhjjXXj-yH#jSD|s&s>XP%z%W$))<05`KJ((JN+O2JuLQZjTUr+NC+KJM2 zjJ87uDSr!+^jm}MOXhTG1RfG(KQs@6h%(4x^B_kA{xzU0y5=T8&bkpwYmc|aGbuI+ zTZWM&vPVwSdjxK^K)^;?wXS5Fq<*297@I#9kp^~`g6E5C;tWD+5ZFZq(1}99w`_?8Q32S5=KVg^#4((=zW>>H*_wC(LtTH ztlly{Is*6jU$^vrNp&k!0yl)MvJ`3)@clx1i-8%

l&VUtr&}L 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 delta 49026 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 PyOvY^%lJE#EYbf5TKrum From 5d8461969a427f0d61cb3ca98d20fe059d409316 Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Mon, 9 Sep 2024 14:21:38 +0200 Subject: [PATCH 6/8] chore(core): add hashes for 2.1.8 bootloader --- core/embed/models/T3B1/bootloaders/bootloader_hashes.h | 6 +++--- core/embed/models/T3T1/bootloaders/bootloader_hashes.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/embed/models/T3B1/bootloaders/bootloader_hashes.h b/core/embed/models/T3B1/bootloaders/bootloader_hashes.h index e01f324ce..2cf13e074 100644 --- a/core/embed/models/T3B1/bootloaders/bootloader_hashes.h +++ b/core/embed/models/T3B1/bootloaders/bootloader_hashes.h @@ -4,9 +4,9 @@ // Auto-generated file, do not edit. // clang-format off -// bootloader_T3B1.bin version 2.1.7.0 -#define BOOTLOADER_T3B1_00 {0x6a, 0x29, 0x58, 0x1f, 0x4f, 0x0c, 0x64, 0xd0, 0x57, 0xb3, 0x36, 0xb7, 0xca, 0xc5, 0x00, 0xc6, 0xbe, 0x87, 0x46, 0x10, 0x48, 0xb0, 0x20, 0xc5, 0xc3, 0x55, 0xaa, 0xf8, 0xec, 0x48, 0xd6, 0xa3} -#define BOOTLOADER_T3B1_FF {0x57, 0x1e, 0xa2, 0xb8, 0x09, 0xf0, 0xab, 0xb4, 0x35, 0xb9, 0x92, 0xcd, 0xde, 0x28, 0x8a, 0xe2, 0x73, 0x04, 0x92, 0x16, 0x01, 0xac, 0x70, 0x48, 0xad, 0x1d, 0x72, 0x9e, 0x31, 0x42, 0xbf, 0x37} +// bootloader_T3B1.bin version 2.1.8.0 +#define BOOTLOADER_T3B1_00 {0x23, 0x64, 0x01, 0x0c, 0x96, 0xc1, 0x04, 0x2f, 0x54, 0x12, 0x53, 0xb5, 0xd7, 0x23, 0xcf, 0xf9, 0x18, 0x59, 0xf1, 0xdd, 0x6a, 0x5e, 0x3a, 0x3f, 0xf2, 0xf1, 0x71, 0x55, 0xaf, 0x2e, 0x48, 0x92} +#define BOOTLOADER_T3B1_FF {0x8f, 0x63, 0x1a, 0x98, 0x56, 0x9c, 0xcc, 0xf1, 0xfc, 0x0b, 0x98, 0x62, 0x5d, 0xc6, 0xc7, 0x33, 0x73, 0x90, 0x2f, 0x69, 0x02, 0x57, 0xbd, 0x5e, 0x31, 0x4c, 0x0b, 0x5a, 0xdb, 0x01, 0x17, 0x24} // bootloader_T3B1_qa.bin version 2.1.7.0 #define BOOTLOADER_T3B1_QA_00 {0x2e, 0x90, 0x8a, 0x99, 0x25, 0x93, 0xcd, 0x9c, 0xf1, 0x23, 0x1e, 0x4e, 0x41, 0xfc, 0xc9, 0xf1, 0x4b, 0x06, 0x69, 0x57, 0x6e, 0x64, 0x84, 0x1c, 0xb1, 0xd9, 0x89, 0x0c, 0xa5, 0xb4, 0x38, 0xeb} diff --git a/core/embed/models/T3T1/bootloaders/bootloader_hashes.h b/core/embed/models/T3T1/bootloaders/bootloader_hashes.h index d4dcbffc2..0090263b3 100644 --- a/core/embed/models/T3T1/bootloaders/bootloader_hashes.h +++ b/core/embed/models/T3T1/bootloaders/bootloader_hashes.h @@ -4,9 +4,9 @@ // Auto-generated file, do not edit. // clang-format off -// bootloader_T3T1.bin version 2.1.6.0 -#define BOOTLOADER_T3T1_00 {0x4a, 0x07, 0x5c, 0x74, 0x0f, 0x9a, 0x84, 0x61, 0xaf, 0x10, 0x34, 0x9c, 0x24, 0x3d, 0x79, 0x5b, 0xc6, 0x12, 0x5e, 0xec, 0x51, 0xb3, 0x91, 0x4b, 0x65, 0xf9, 0x79, 0x17, 0x98, 0xc2, 0x4f, 0xcb} -#define BOOTLOADER_T3T1_FF {0xd8, 0xee, 0x0d, 0xd8, 0x87, 0x0b, 0xf4, 0x38, 0x73, 0x52, 0x83, 0x5e, 0xa9, 0xef, 0x3e, 0x5a, 0x3e, 0x59, 0xc2, 0x12, 0x5b, 0x24, 0xc9, 0x2d, 0xd4, 0xc5, 0xf5, 0x57, 0x15, 0x8a, 0x34, 0x78} +// bootloader_T3T1.bin version 2.1.8.0 +#define BOOTLOADER_T3T1_00 {0x69, 0x65, 0xd9, 0x33, 0xba, 0xc1, 0xe5, 0x67, 0xe3, 0x92, 0xb5, 0x46, 0x98, 0xb7, 0x2c, 0x07, 0x55, 0xa5, 0xb5, 0x5a, 0x38, 0xf5, 0x7f, 0x71, 0xdf, 0xeb, 0xbf, 0xd2, 0x8b, 0xc5, 0x51, 0xa6} +#define BOOTLOADER_T3T1_FF {0xd4, 0x35, 0x6e, 0x53, 0x8b, 0x26, 0x5f, 0x11, 0x36, 0xab, 0x4e, 0x2f, 0x80, 0xf3, 0x3b, 0x5c, 0x4a, 0x2d, 0x57, 0x3f, 0x3c, 0xbd, 0x63, 0xb7, 0x73, 0x01, 0x59, 0x64, 0x07, 0xcf, 0x67, 0xd7} // bootloader_T3T1_qa.bin version 2.1.6.0 #define BOOTLOADER_T3T1_QA_00 {0x53, 0x5f, 0xf9, 0xa8, 0x21, 0x7d, 0xb5, 0x39, 0xe4, 0xfa, 0xf8, 0x3d, 0x0d, 0xe6, 0xf3, 0x65, 0x21, 0x30, 0x46, 0x9e, 0x40, 0x85, 0xd4, 0xd8, 0x49, 0x00, 0xb0, 0xb5, 0x58, 0x39, 0xe3, 0xd4} From b30d60d9463b5fd09b2a9713e0004581a489c6fb Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Mon, 9 Sep 2024 14:51:04 +0200 Subject: [PATCH 7/8] chore(core): bump version to 2.8.3 --- core/CHANGELOG.T2B1.md | 2 +- core/CHANGELOG.T2T1.md | 2 +- core/CHANGELOG.T3B1.md | 2 +- core/CHANGELOG.T3T1.md | 2 +- core/CHANGELOG.md | 2 +- core/embed/firmware/version.h | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/CHANGELOG.T2B1.md b/core/CHANGELOG.T2B1.md index 7ebe96c70..0977c1357 100644 --- a/core/CHANGELOG.T2B1.md +++ b/core/CHANGELOG.T2B1.md @@ -4,7 +4,7 @@ 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/). -## [2.8.2] (unreleased) +## [2.8.3] (unreleased) ### Added - Reduce the choices to select wordcount when unlocking repeated backup to 20 or 33. [#4099] diff --git a/core/CHANGELOG.T2T1.md b/core/CHANGELOG.T2T1.md index 623ef1797..743783c43 100644 --- a/core/CHANGELOG.T2T1.md +++ b/core/CHANGELOG.T2T1.md @@ -4,7 +4,7 @@ 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/). -## [2.8.2] (unreleased) +## [2.8.3] (unreleased) ### Added - Reduce the choices to select wordcount when unlocking repeated backup to 20 or 33. [#4099] diff --git a/core/CHANGELOG.T3B1.md b/core/CHANGELOG.T3B1.md index 15365fc5a..292117849 100644 --- a/core/CHANGELOG.T3B1.md +++ b/core/CHANGELOG.T3B1.md @@ -4,7 +4,7 @@ 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/). -## [2.8.2] (18th September 2024) +## [2.8.3] (18th September 2024) ### Added - Reduce the choices to select wordcount when unlocking repeated backup to 20 or 33. [#4099] diff --git a/core/CHANGELOG.T3T1.md b/core/CHANGELOG.T3T1.md index 9d54ed7c1..287ae6809 100644 --- a/core/CHANGELOG.T3T1.md +++ b/core/CHANGELOG.T3T1.md @@ -4,7 +4,7 @@ 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/). -## [2.8.2] (18th September 2024) +## [2.8.3] (18th September 2024) ### Added - Added reassuring screen when entering empty passphrase. [#4054] diff --git a/core/CHANGELOG.md b/core/CHANGELOG.md index 455b27a7e..768658c11 100644 --- a/core/CHANGELOG.md +++ b/core/CHANGELOG.md @@ -4,7 +4,7 @@ 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/). -## [2.8.2] (18th September 2024) +## [2.8.3] (18th September 2024) ### Added - [T3T1] Added reassuring screen when entering empty passphrase. [#4054] diff --git a/core/embed/firmware/version.h b/core/embed/firmware/version.h index 566ba077a..f891dab3b 100644 --- a/core/embed/firmware/version.h +++ b/core/embed/firmware/version.h @@ -4,7 +4,7 @@ #define VERSION_MAJOR 2 #define VERSION_MINOR 8 -#define VERSION_PATCH 2 +#define VERSION_PATCH 3 #define VERSION_BUILD 0 #define FIX_VERSION_MAJOR 2 From 7f373ae71eca855dd41b4a0fdcc7cadaa13a8281 Mon Sep 17 00:00:00 2001 From: Martin Milata Date: Mon, 9 Sep 2024 16:14:27 +0200 Subject: [PATCH 8/8] chore(core): bump translations to 2.8.3 --- core/translations/cs.json | 2 +- core/translations/de.json | 2 +- core/translations/en.json | 2 +- core/translations/es.json | 2 +- core/translations/fr.json | 2 +- core/translations/signatures.json | 6 +++--- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core/translations/cs.json b/core/translations/cs.json index 279180ecd..6b1746cb4 100644 --- a/core/translations/cs.json +++ b/core/translations/cs.json @@ -33,7 +33,7 @@ }, "header": { "language": "cs-CZ", - "version": "2.8.2" + "version": "2.8.3" }, "translations": { "addr_mismatch__contact_support_at": "Kontaktujte naši podporu na", diff --git a/core/translations/de.json b/core/translations/de.json index bb1b01fbd..0f61f15d3 100644 --- a/core/translations/de.json +++ b/core/translations/de.json @@ -33,7 +33,7 @@ }, "header": { "language": "de-DE", - "version": "2.8.2" + "version": "2.8.3" }, "translations": { "addr_mismatch__contact_support_at": "Kontaktiere den Trezor Support unter", diff --git a/core/translations/en.json b/core/translations/en.json index 55e1e1061..e175aa896 100644 --- a/core/translations/en.json +++ b/core/translations/en.json @@ -1,7 +1,7 @@ { "header": { "language": "en-US", - "version": "2.8.2" + "version": "2.8.3" }, "translations": { "addr_mismatch__contact_support_at": "Please contact Trezor support at", diff --git a/core/translations/es.json b/core/translations/es.json index fc153845d..6f87e1c04 100644 --- a/core/translations/es.json +++ b/core/translations/es.json @@ -33,7 +33,7 @@ }, "header": { "language": "es-ES", - "version": "2.8.2" + "version": "2.8.3" }, "translations": { "addr_mismatch__contact_support_at": "Contacta con atención al cliente de Trezor en", diff --git a/core/translations/fr.json b/core/translations/fr.json index 66bf1dcf5..a663a711b 100644 --- a/core/translations/fr.json +++ b/core/translations/fr.json @@ -33,7 +33,7 @@ }, "header": { "language": "fr-FR", - "version": "2.8.2" + "version": "2.8.3" }, "translations": { "addr_mismatch__contact_support_at": "Contactez l'assistance Trezor à l'adr.", diff --git a/core/translations/signatures.json b/core/translations/signatures.json index bb7706ac4..ad9936ccf 100644 --- a/core/translations/signatures.json +++ b/core/translations/signatures.json @@ -1,8 +1,8 @@ { "current": { - "merkle_root": "23cd34c69ea6414849d484a7a9cf990f245d4522371fbdad909807d2bd8efe17", - "datetime": "2024-09-03T08:33:15.680225", - "commit": "4002c934c0dff69ded4247bee4c92bc6642dc0ac" + "merkle_root": "2dfae3303210646dbaa65c4d7f2f4039126784134d2a37641ec2c83a8531be5e", + "datetime": "2024-09-09T14:10:04.878156", + "commit": "b30d60d9463b5fd09b2a9713e0004581a489c6fb" }, "history": [ {