|
1 | | -# Release 4.6.0 (not released yet) |
2 | | - |
| 1 | +# Release 4.6.0 (in beta/rc, June 2025) |
3 | 2 | * A 'Terms of Use' screen was added to the install wizard. While the |
4 | 3 | licence remains unchanged, we ask users to agree with the fact that |
5 | 4 | we are not a custodial service or a money transmitter. The Terms of |
6 | 5 | Use screen also makes it clear that all issues are to be resolved |
7 | 6 | in public, and that there is no user support via private channels. |
8 | | - |
9 | | - * Nostr support: Electrum includes a built-in Nostr library named |
10 | | - electrum-aionostr. This library is used in the context of submarine |
11 | | - swaps, and by several plugins. Electrum will not connect to Nostr |
| 7 | + * Nostr support: (using new dependency: electrum-aionostr) |
| 8 | + Electrum now uses Nostr in the context of submarine swaps, |
| 9 | + and in several plugins. Electrum will not connect to Nostr |
12 | 10 | by default, only if required. |
13 | | - |
14 | 11 | * Submarine swaps over Nostr: The Electrum client will connect to |
15 | 12 | Nostr in order to discover submarine swap providers, and to perform |
16 | 13 | related RPCs. This means that: |
|
29 | 26 | when the user uses the swap service, and the nostr public key used |
30 | 27 | by the client is ephemeral. In contrast, swap providers use a |
31 | 28 | persisted identity. |
32 | | - |
33 | 29 | * Third-party plugins: |
34 | | - - Electrum support the installation of plugins distributed by |
| 30 | + - Electrum supports the installation of plugins distributed by |
35 | 31 | third-parties as ZIP files. While it has long been possible to |
36 | 32 | install third-party plugins when running Electrum from python |
37 | 33 | sources, the same is now possible when using desktop binaries |
38 | 34 | (Windows, MacOS, Linux). Third-party plugins are installed as ZIP |
39 | | - files in the user's electrum directory. |
| 35 | + files in the user's electrum data directory. |
40 | 36 | - In order to prevent plugin installation by malware, third-party |
41 | 37 | plugins can only be enabled if the user enters a plugin |
42 | 38 | authorization password (distinct from the wallet password). |
43 | 39 | Setting up that plugin authorization password requires |
44 | 40 | administrator permissions on the local machine; a |
45 | 41 | password-derived public key must be written in the system. |
46 | | - |
47 | | - * Lightning anchor channels (#9264): Newly created channels use |
48 | | - anchor commitments by default. Since sweeping outputs from anchor |
49 | | - channels may require external UTXOs, lightning can no longer be |
50 | | - enabled in wallets that do not have a software keystore (hardware |
51 | | - wallets, watching-only wallets). Existing wallets that are in that |
52 | | - situation cannot create new channels. |
53 | | - |
54 | | - * Wallet unlocking (Qt): |
55 | | - - Wallets can be unlocked in the Qt GUI. When a password-protected |
56 | | - wallet is unlocked, its password is kept in memory, and signing |
57 | | - transactions will not require to enter the password. The unlocked |
58 | | - state is rendered by the 'open lock' icon in the status bar. |
59 | | - - If a wallet needs to sweep anchor channel outputs using extra |
60 | | - UTXOs, the operations will be performed without requiring the |
61 | | - user password if the wallet is unlocked. If the wallet is locked, |
62 | | - the status bar will show a 'password required' button. |
63 | | - |
64 | | - * Transaction batching (Qt): When creating a new payment, if the |
65 | | - output can be added to an existing mempool transaction, the 'New |
66 | | - transaction' window will show a drop-down menu, proposing a list of |
67 | | - transactions that can be batched with the current payment. This |
68 | | - replaces the previous 'batch' option checkbox, and gives more |
69 | | - control to the user. |
70 | | - |
71 | | - * Keystore enabling/disabling (Qt): It is now possible to add a seed |
72 | | - to an existing watching-only wallet, or to a keystore within a |
73 | | - multisig wallet. Similarly, it is possible to pair a watching-only |
74 | | - keystore with a hardware device. These operations are performed |
75 | | - from the 'Wallet Information' dialog. |
76 | | - |
77 | | - * Wallet file encryption: |
78 | | - - Non-multisig hardware wallet files can be encrypted with a |
79 | | - password, instead of the hardware device. |
80 | | - - The option to have a password-protected wallet without file |
81 | | - encryption has been removed from the Qt GUI. It is still possible |
82 | | - to create such a wallet using the command line. |
83 | | - |
84 | | - * Lightning address contacts: |
85 | | - - It is now possible to create contacts with (lnurl type) lightning |
86 | | - addresses as payment identifier. |
87 | | - |
| 42 | + * Lightning: |
| 43 | + - Anchor channels (#9264): Newly created channels use |
| 44 | + anchor commitments by default. Since sweeping outputs from anchor |
| 45 | + channels may require external UTXOs, lightning can no longer be |
| 46 | + enabled in wallets that do not have a software keystore (hardware |
| 47 | + wallets, watching-only wallets). Existing wallets that are in that |
| 48 | + situation cannot create new channels. |
| 49 | + - wallets with anchor channels must always have utxos available (#9536) |
| 50 | + - support added for onion messages (only CLI for now) (#9039) |
| 51 | + - lots of fixes and improvements (#8857, #8547, #9700, #9083, ...) |
| 52 | + * Qt Desktop GUI: |
| 53 | + - migrate from Qt5 to Qt6 (#9189) |
| 54 | + - new: screenshot "protection" on Windows (#9898). Inspired by Windows |
| 55 | + Recall, by default screenshots will contain black rectangles in |
| 56 | + place of the Electrum windows, to try to avoid leaking secret keys. |
| 57 | + This is opt-out using a config variable. |
| 58 | + - exposed option to connect to only a single server (--oneserver) |
| 59 | + - Wallet file encryption: |
| 60 | + - Non-multisig hardware wallet files can now be encrypted with |
| 61 | + either using the hardware device or (new) a password. (#5561) |
| 62 | + - The option to have a password-protected wallet without file |
| 63 | + encryption has been removed from the Qt GUI. It is still possible |
| 64 | + to create such a wallet using the command line. |
| 65 | + - Wallet unlocking: |
| 66 | + - Wallets can be unlocked in the Qt GUI. When a password-protected |
| 67 | + wallet is unlocked, its password is kept in memory, and signing |
| 68 | + transactions will not require to enter the password. The unlocked |
| 69 | + state is rendered by the 'open lock' icon in the status bar. |
| 70 | + - If a wallet needs to sweep anchor channel outputs using extra |
| 71 | + UTXOs, the operations will be performed without requiring the |
| 72 | + user password if the wallet is unlocked. If the wallet is locked, |
| 73 | + the status bar will show a 'password required' button. |
| 74 | + - Transaction batching: When creating a new payment, if the |
| 75 | + output can be added to an existing mempool transaction, the 'New |
| 76 | + transaction' window will show a drop-down menu, proposing a list of |
| 77 | + transactions that can be batched with the current payment. This |
| 78 | + replaces the previous 'batch' option checkbox, and gives more |
| 79 | + control to the user. |
| 80 | + - Keystore enabling/disabling (Qt): |
| 81 | + - It is now possible to add a seed |
| 82 | + to an existing watching-only wallet, or to a keystore within a |
| 83 | + multisig wallet. Similarly, it is possible to pair a watching-only |
| 84 | + keystore with a hardware device. These operations are performed |
| 85 | + from the 'Wallet Information' dialog. |
| 86 | + - Lightning address contacts: |
| 87 | + - It is now possible to create contacts with (lnurl type) lightning |
| 88 | + addresses as payment identifier. |
| 89 | + - show warnings on wallet close if there are sensitive pending operations, |
| 90 | + e.g. when in the middle of doing a swap (#9715) |
88 | 91 | * Accounting rules: In order to properly handle on-chain transactions |
89 | 92 | created by lightning channel force closures, we consider that funds |
90 | 93 | successfully redeemed from a script with several possible |
91 | 94 | recipients have never left the final recipient's wallet. This |
92 | 95 | avoids having to write balance changes that are cancelled |
93 | 96 | later. The corresponding addresses are rendered in the GUI as |
94 | 97 | 'accounting addresses' (in orange). |
95 | | - |
96 | 98 | * New plugins: |
97 | 99 | - Nostr Wallet Connect: This plugin allows remote control of |
98 | | - Electrum lightning wallets via Nostr NIP-47. |
| 100 | + Electrum lightning wallets via Nostr NIP-47. (#9675) |
99 | 101 | - Nostr Cosigner: This plugin facilitates the exchange of |
100 | 102 | PSBTs between cosigners of a multisig wallet. It replaces the |
101 | 103 | former 'Cosigner pool' plugin. Instead of relying on a central |
102 | | - server, it uses Nostr to send/receive PSBTs. |
| 104 | + server, it uses Nostr to send/receive PSBTs. (#9261) |
103 | 105 | - Timelock Recovery: A timelock based inheritance scheme. |
104 | | - See timelockrecovery.com |
105 | | - |
| 106 | + See timelockrecovery.com (#9589) |
106 | 107 | * CLI: |
107 | 108 | - The command line help has been improved; parameters are |
108 | 109 | documented in the same docstring as the command they belong to. |
|
112 | 113 | - Plugins may add extra commands to the CLI. Plugin commands must |
113 | 114 | be prefixed with the plugin's internal name. |
114 | 115 | - Support for hold invoices. |
115 | | - |
| 116 | + - new commands: |
| 117 | + - listconfig, helpconfig, unsetconfig |
| 118 | + - onchain_capital_gains (was previously a field of onchain_history) |
| 119 | + - {add,settle,cancel,check}_hold_invoice |
| 120 | + - send_onion_message, get_blinded_path_via |
| 121 | + - wait_for_sync |
116 | 122 | * Security: |
117 | 123 | - Mitigate against dust attacks; Add option to avoid spending from |
118 | | - used addresses. |
119 | | - - Restrict process memory access on Linux. |
120 | | - |
121 | | - * Networking: |
122 | | - - The option to connect to a single server has been added to the GUI. |
123 | | - |
124 | | - * Android: |
125 | | - - Sweep key feature ported to mobile |
| 124 | + used addresses. (#9636) |
| 125 | + - Restrict process memory access on Linux. (#9749) |
| 126 | + * QML GUI (Android): |
| 127 | + - "Sweep key" feature ported to mobile |
126 | 128 | - Estimate amount when Max is checked |
127 | | - - Properly ask for (notification) permission access. |
128 | | - |
| 129 | + - exposed option to connect to only a single server (--oneserver) |
| 130 | + * Android: |
| 131 | + - properly ask for (notification) OS permission access. (#9682) |
| 132 | + - add option to prevent the app touching the screen brightness (#9321) |
| 133 | + * Electrum protocol: add padding and some noise to messages (#9875) |
129 | 134 | * Hardware wallets: |
130 | 135 | - Coldcard: add feature to upload multisig wallet configuration to Coldcard via USB. |
| 136 | + - KeepKey: we now vendor our fork of keepkeylib, |
| 137 | + instead of using the unmaintained upstream as an external dependency (#9650) |
| 138 | + - Ledger: |
| 139 | + - rm support for "HW.1" and "Nano" (non-S) devices (#9652) |
| 140 | + - rm dependency: btchip-python (#9370) |
| 141 | + * Builds/binaries: |
| 142 | + - new minimum OS requirements: |
| 143 | + - Windows: x86_64, Windows 10 (1809) |
| 144 | + note: 32-bit Windows is no longer supported. |
| 145 | + - macOS: 11 "Big Sur" |
| 146 | + - Linux AppImage: x86_64, glibc 2.31 ("debian 11"-equivalent) |
| 147 | + - known issue: the Windows binaries are not codesigned atm (but there are GPG sigs!) |
| 148 | + * Dependencies: |
| 149 | + - the minimum required python version was increased: 3.8->3.10 (#9418) |
| 150 | + - new first-party dep: electrum-aionostr |
| 151 | + - forked the seemingly unmaintained davestgermain/aionostr library |
| 152 | + - new first-party dep: electrum-ecc |
| 153 | + - split out our existing libsecp256k1 python bindings into |
| 154 | + this separate package |
131 | 155 |
|
132 | 156 |
|
133 | 157 | # Release 4.5.8 (Oct 23, 2024) |
|
0 commit comments