- 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]
- 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]
- 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]