- Add a System theme option that follows the OS light or dark setting, and make it the default for new installs (View menu > Theme > System)
- Allow BitBox02 xpub export and multisig signing at the
m/45hkeypath on firmware v9.19.0 and later - Refuse BitBox02 keystore import and discovery for legacy P2SH and P2PKH wallets it cannot sign for, and hide those script types from the device import menus
- Recover the Trezor Safe 7 session when the device retransmits an unacknowledged message, and skip packets that are not v1 framed when probing for the Trezor protocol version
- Keep the Trezor pairing credential and v1 message payloads out of the debug logs
- Send the remaining Ledger merkle proof hashes when a proof does not fit a single response (@hashbender)
- Include the non-witness UTXO in PSBTs for Krux keystores, including in the QR display when the PSBT has more than one input
- Add file import of the xpub descriptor Jade writes to USB storage
- Require the policy line and check the declared cosigner count when importing Coldcard format multisig wallets
- Name the
sortedmultireinterpretation in the message for a BSMS record whose first address does not match - Reject taproot output descriptors containing a script tree
- Do not offer copy and QR export actions for an extended private key pasted into the keystore xpub field
- Cap BBQr display and PDF encodings at the 1295 parts the header can number, using larger parts for data that needs more
- Verify the signatures of a finalized PSBT before copying its fields into an open transaction
- Determine the signed keystores using the sighash type each signature carries, and show the signatures for a signed transaction opened offline or when the server cannot return every input
- Verify silent payment output scripts before device signing, combining and export, and explicitly reject a PSBT signed over silent payment outputs that have not been computed
- Prefer the silent payment address of a BIP321 URI or DNS payment instruction where the sending wallet can pay to it, treating the address in the body as a fallback
- Take the silent payments tweak of an input from the wallet node when adding key path information, and write the output descriptor of a silent payments address as
rawtr() - Do not advance the stored block height of a silent payments wallet until a scan has covered it, and fetch all nodes on a refresh when a reorg has invalidated any of them
- Hold silent payment notifications arriving before the subscribe response is recorded, discarding those of a replaced subscription
- Hide account discovery on silent payments wallets, and hide the gap limit and request a birth date for them in the terminal
- Derive the fee of a wallet transaction from the transactions funding its inputs rather than the value its history entry reports
- Include unconfirmed wallet descendant fees when increasing a transaction fee, advise the replaced fees plus relay cost on rejection, and allow a CPFP child to be replaced
- Clear a replacement transaction when a UTXO it spends is frozen rather than silently removing the input
- Revert the sighash selection when the
SIGHASH_NONEwarning is dismissed rather than answered no - Map transaction hex witness segments by the segwit flag, treating an input with no witness as empty
- Ignore amount digits typed beyond the selected unit precision in the Send tab amount and fee fields and the Send to Many grid, and cut pasted amounts to it
- Read sats amounts with a fraction or exponent in a Send to Many CSV import, cutting them to whole sats rather than skipping those rows
- Switch wallet tables and charts to BTC when an open wallet on the auto unit receives 1 BTC or more
- Name the bitcoin unit in the value, balance and fee column headings of the transactions, UTXOs and search results CSV exports
- Refuse an announced chain tip below the last pinned header, or one the header sync cannot link in, reverting to the stored tip with a warning
- Verify a transaction tab height taken from the server, warning where the server will not prove it
- Treat a Bitcoin Core chain that falls below the last polled tip as a reorg rather than failing every poll until reconnect
- Refresh a node when its script hash status returns to an earlier value, retiring the mitigation for electrs versions before v0.9.0
- Ensure Cormorant responses and notifications are serialized per client connection, lock the store against client connection reads, and close the client socket however its handler exits
- Purge a Bitcoin Core wallet transaction with only mempool conflicts from Cormorant once it leaves the mempool
- Refresh the cached Bitcoin Core descriptor ranges when a wallet wants a range beyond them, so a range already extended is not imported again or refused
- Cancel a retrying connection attempt when testing a server, and do not import wallet descriptors on a Cormorant started for the test
- Report Bitcoin Core RPC errors that carry no result instead of failing on a null response, and retain an entered https scheme when configuring a Bitcoin Core server
- Floor the Electrum batch page size at one when halving it after a timeout
- Skip the exchange currencies request in offline mode in the desktop and terminal general settings
- Refuse to display a wallet seed in the terminal when the wallet was locked while its key was being derived
- Skip addresses already given out under a label, and widen the gap limit on an explicit advance in the terminal receive dialog
- Reject unknown command line options and values given to flags with an error and exit code instead of starting on the default network, and accept the
--option=valueform - Bug fix: Fix the transaction tab confirmation indicator when the tab opens at six confirmations or a reorg takes it back below, clamping confirmations at zero for a transaction above the current tip
- Bug fix: Fix the transaction tab confirmation count not following new blocks when its input transactions cannot be fetched
- Bug fix: Fix handling an input transaction the server cannot return in the fee, spend, outpoint and diagram views
- Bug fix: Fix transactions not held in a wallet's transactions model being registered for confirmation updates, and entries not being unregistered on removal, history clear and tab close
- Bug fix: Fix the node refresh subscription not being released when a wallet is closed
- Bug fix: Fix a silent payments history waiter left parked for the session when a failed widening restores a completed scan
- Bug fix: Fix wallet keystore changes affecting addresses not considering silent payment scan addresses
- Bug fix: Fix the stored table layout of a wallet not being copied, and not being cleared along with silent payment addresses on a new account
- Bug fix: Fix a PayNym contact whose payment code does not parse being kept with a null code or failing the whole PayNym response, omitting it instead
- Bug fix: Fix a unit format decimal formatter shared between the export task and table cells
- Bug fix: Fix handling a short
server.versionresponse when testing a server connection in the desktop and terminal - Bug fix: Fix showing terminal alert buttons carrying their own text, and disable the terminal add account button when no accounts remain
- Bug fix: Fix an error when importing a Sparrow wallet file by deriving its public keys from the seed
- Bug fix: Fix a previously scanned wallet being kept when a file, text payload or unrecognised QR is then imported in the same pane
- Bug fix: Fix the sizing of an unresolved silent payment output when deriving the fee
- Bug fix: Fix the silent payment input hash being derived only from inputs contributing a public key, and the BIP375 k ordering of silent payment codes sharing a scan key
- Bug fix: Fix recognising a silent payments descriptor when matching BIP329 label origins and reading a descriptor PDF
- Bug fix: Fix a new server toggle pulse animation starting while a previous one is still running