Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.
Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.
This commit simplifies the seed-validation logic in Electrum's Qt wallet wizard by replacing a local copy of the rules with a call to an existing shared validation method. The change appears to be a code-cleanup refactor that removes dupli…
Refactor of seed-validation logic in wallet creation wizardRemoval of duplicated seed-type checks in favor of centralized validationAdded assertion constraining seed type to 'electrum'
This commit changes Electrum's wallet creation wizard so that if a user tries to restore a normal 'standard' wallet but pastes a seed phrase that actually belongs to a two-factor authentication (2FA) wallet, the wizard automatically redire…
UX-level safety fix preventing wallet-type/seed mismatchState mutation: wizard_data['wallet_type'] changed from 'standard' to '2fa' based on seed typeNo cryptographic, network, or privilege changes
This commit is a small code cleanup in Electrum's wallet setup wizard. It removes a duplicate copy of the rules used to check whether a recovery seed is valid and instead reuses an existing method. There is no indication this fixes a secur…
This commit only adds and reorganizes automated test code for Electrum's wallet creation wizard. It does not change any production wallet logic, cryptography, or network handling. The tests verify that when a user tries to restore a 'stand…
This commit updates Electrum's internal CI (continuous integration) script that runs an automated security review using Anthropic's Claude Code tool. It changes the AI model version used for reviews from 'claude-opus-5' to 'claude-opus-5-5…
CI hardening: detects and reports AI model downgrades during automated security reviewNo changes to application code, cryptography, network protocol, or build artifactsNo privilege escalation, injection, or data-exfiltration vectors introduced by the diff
This commit updates Electrum's own CI security-review script. It adds detection and warnings when the automated code reviewer (Claude Code) silently falls back to a different AI model, for example after a content-policy refusal. It does no…
CI-only changeNo modification of wallet, crypto, networking, or build artifactsAdds detection for AI model fallback/downgrade in automated security review
This commit fixes a bug where Electrum failed to recognize certain already-signed Bitcoin transactions as complete. Specifically, for native SegWit inputs, Bitcoin Core can produce a finalized PSBT with a valid witness but an empty scriptS…
Logic error in transaction completeness detectionNative SegWit witness handling edge casePSBT interoperability issue with Bitcoin Core
This commit fixes a bug where Electrum incorrectly treated finalized Bitcoin transactions as incomplete. Some wallet software (like Bitcoin Core and Sparrow) creates native SegWit transactions that omit an empty placeholder field Electrum …
Logic error in transaction completeness detectionPotential denial of service / user funds stuck due to refusal to broadcast valid finalized transactionInteroperability failure with Bitcoin Core and Sparrow PSBT output
This change prevents Electrum from re-signing Bitcoin transaction inputs that already contain a witness (the data proving the input was authorized). The patch fixes a bug where Electrum could incorrectly sign a non-SegWit input as if it we…
Incorrect signature algorithm selection for non-SegWit inputs when witness data is presentPSBT handling edge case where pre-existing witness data influences signing pathPotential invalid signature production during transaction signing
This commit only adds a long code comment explaining a design choice in Electrum's PSBT-over-Nostr plugin. It does not change any program behavior. The comment documents that the plugin derives each cosigner's Nostr secret key from their B…
Documentation-only changeExplicit design tradeoff disclosure: cosigners can derive each other's Nostr secret keys from shared xpubsNo functional code change
This is a one-line bugfix in Electrum's transaction handling. Previously, the code accidentally swallowed (hid) almost all exceptions when fetching extra transaction data from the network, only re-raising errors that were both network-rela…
This commit fixes several bugs in Electrum's handling of BOLT11 Lightning invoices. The most user-visible fixes are: stricter validation of invoice amounts (rejecting zero, negative, sub-millisatoshi, and leading-zero amounts), correct pad…
Stricter BOLT11 amount validation prevents acceptance of zero, negative, sub-millisatoshi, and leading-zero amountsFixed int_to_data5 padding bug that corrupted small timestamp values during invoice round-tripMalformed 'r' routing tags now raise exceptions instead of being silently skipped
Electrum's transaction builder had a bug where it would ignore certain consistency errors when fetching extra transaction data from the network. A malicious or misbehaving server could supply a wrong input amount, and Electrum would silent…
Swallowed exception leading to use of attacker-controlled input valuePSBT input consistency check bypassedPotential malicious Electrum server influence on transaction signing
This is a small code cleanup change. A function that reads routing hints from Lightning invoices no longer takes a tag argument because only one type of routing hint ('r') is now supported. All callers are updated accordingly. There is no …
This commit tightens how Electrum parses Bitcoin payment requests (BOLT11 lightning invoices and BIP21 URIs). It turns previously uncaught internal errors into proper validation failures, rejects malformed invoice fields that used to be si…
Stricter input validation for externally supplied BOLT11 invoices and BIP21 URIsPreviously uncaught exceptions (ValueError, UnicodeDecodeError, ecc errors) are now wrapped in domain-specific decode exceptionsMalformed fallback addresses are skipped rather than aborting or crashing
This commit tightens how Electrum parses BOLT11 Lightning invoices. It now rejects duplicate 'n' (node pubkey) tags instead of silently keeping only the first one, and it rejects invoice timestamps that are negative or too far in the futur…
Stricter validation of invoice timestamp boundsDuplicate 'n' tag now raises an exception instead of being silently droppedFollow-up to prior PR #10940, indicating a recent area of security-sensitive review
This commit fixes a shutdown bug in Electrum's hardware wallet support. Previously, if disconnecting from a hardware wallet failed, the cleanup thread could keep running, which could crash the application when closing. The fix stops the th…
Process abort/crash at shutdown due to leaked QThreadException during cleanup not handled, potentially causing abnormal terminationHardware wallet client close made best-effort with error logging
This commit is a routine dependency update for the Electrum Bitcoin wallet. It bumps versions of Python, OpenSSL, secp256k1, and various Python packages used in builds and runtime. The commit itself does not fix any known security bug in E…
Dependency version bumps for cryptographic libraries (OpenSSL, libsecp256k1, electrum-ecc)Routine maintenance commit with no explicit security claimHash-only changes in deterministic requirements files
This commit only adds new Bitcoin block header checkpoints to Electrum's built-in chain data files. Checkpoints are hardcoded reference points that help the wallet verify it is following the real blockchain and not a fake one. Updating the…
Hardcoded blockchain checkpoints extended for all supported networksNo executable code or cryptographic logic changedNo bug fix, privilege change, or input validation change present
This commit simply refreshes Electrum's built-in list of Bitcoin blockchain checkpoints. Checkpoints are known-good block hashes that help the wallet verify it is following the real chain. The update adds newer checkpoints for mainnet, sig…
Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.
Lower-priorityinterface: extend client to be able to support a range of protocolsby SomberNight · cd3173a2 · Nov 3, 2025 · 4 filesMessage 50 · ThinInformational 19Details
Commit message · SomberNight
interface: extend client to be able to support a range of protocols
50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 19/100
This commit refactors how the Electrum wallet negotiates the server protocol version. Previously the client requested a single fixed protocol version; now it advertises a supported range (currently still set to just 1.4 to 1.4, so behavior is unchanged in practice). It also updates the QML GUI to display a range string and changes a server-list filter to use the minimum protocol version. There is no direct security fix here, but it lays groundwork for future protocol-version flexibility and slightly hardens version-string parsing by falling back to version 0 on malformed input.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100
This commit fixes a single test mock so that a fake server returns a realistic Bitcoin transaction fee estimate. The change only affects the test suite and has no impact on the real Electrum wallet or its users.
instead of an infinite hang, the unit test should just fail
82/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Explains rationale or failure mode✓ Mentions testing or verification
AI analysis · Informational 15/100
This commit only changes a unit test file. It swaps a custom wait helper for a standard async timeout wrapper so that the test fails instead of hanging forever if something goes wrong. There is no change to the actual Electrum wallet or server code, and no security issue is introduced or fixed.
Lower-prioritysynchronizer: rm redundant get_history call if new block mined unconfby SomberNight · 6d016d70 · Nov 3, 2025 · 2 filesMessage 85 · StrongLow 26Details
Commit message · SomberNight
synchronizer: rm redundant get_history call if new block mined unconf
This is an optimisation and possible hardening against traffic analysis.
After a new block is mined, we sometimes receive "blockchain.scripthash.subscribe" notifications. If so, this is often due to the just mined block including mempool txs we already knew about.
Normally we would call the "blockchain.scripthash.get_history" RPC, to get full history of the affected scripthash. Instead now we first optimistically guess that all mempool txs touching this scripthash just got mined and see if by assuming that we can reproduce the announced sh status. - if yes, we saved a network RTT by not having to call "blockchain.scripthash.get_history" - if no, we request the history from the server using the RPC
85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
defensive validation
AI analysis · Low 26/100
This commit changes how the Electrum wallet reacts when a new Bitcoin block is mined. Instead of always asking the server for the full updated history of an address, it first tries to guess that the change is just because transactions it already knew about in the memory pool got included in the new block. If the guess matches the server's notification, it skips the extra network request. The commit message says this is an optimization and a possible hardening against traffic analysis.
Lower-priorityadd dust_override to SweepInfoby ThomasV · 879dcb32 · Nov 3, 2025 · 4 filesMessage 50 · ThinLow 26Details
Commit message · ThomasV
add dust_override to SweepInfo
We might want to set this value independently from is_anchor.
50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
AI analysis · Low 26/100
This commit changes how Electrum decides whether a tiny ("dust") Lightning Network sweep output is worth including in a transaction. Previously, the code only skipped the dust check for anchor outputs. Now it uses a new explicit flag, `dust_override`, so other sweep types can also skip the dust check when appropriate. The change itself is a small refactor and does not obviously introduce a security bug, but it adjusts a safety check that prevents creating uneconomical or non-standard transactions.
Lower-priorityregtest: add timeout to wait_ functionsby f321x · ce7774ef · Oct 31, 2025 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · f321x
regtest: add timeout to wait_ functions
Add 30s timeouts to the "wait_" functions in regtest.sh as it happens from time to time that they get stuck on the CI and waste compute.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100
This commit only changes the project's internal regression test script. It adds 30-second timeouts to helper functions that wait for certain conditions during automated testing, so that tests don't hang forever on the continuous integration (CI) system. There is no change to the actual Electrum wallet software that users run, and no security issue is introduced or fixed.
AI review queuedconfig/regtest: add config to disable automatic fee updatesby f321x · 76f69676 · Oct 31, 2025 · 4 filesMessage 83 · StrongInformational 15Details
Commit message · f321x
config/regtest: add config to disable automatic fee updates
Some regtest tests depend on manual fee injection to simulate certain mempool conditions (e.g. lnwatcher_waits_until_fees_go_down). This is done by manually injecting fee estimates into the `Network` object using the `test_inject_fee_etas` cli command. However it can still happen that the Network automatically updates its fee estimates from the connected electrum server in the time between injecting the fee and the actual tested logic making decisions based on the fee. This causes the test to fail sometimes. By setting the `test_disable_automatic_fee_eta_update` true the Network will stop automatically updating the fee estimates and the test will behave as expected.
83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 15/100
This commit adds a hidden test-only setting that prevents Electrum from automatically updating fee estimates during certain automated regtest tests. It is purely a testing helper and does not change any behavior unless the user explicitly sets the new config flag. There is no security issue visible in the change.
Lower-prioritylnwatcher/txbatcher: more loggingby f321x · 19e32d60 · Oct 31, 2025 · 2 filesMessage 58 · ThinInformational 15Details
Commit message · f321x
lnwatcher/txbatcher: more logging
log more clearly if an input is considered dust, this makes the logs more helpful when debugging sweeping of lightning utxos.
This commit only adds extra debug and info log messages. It does not change any program behavior, transaction logic, or security checks. The change makes it easier for developers to see when a small Lightning UTXO is considered 'dust' (too tiny to spend economically) or when fee estimates are unavailable. There is no security fix or vulnerability here.
Stops the running regtest if one test fails (using the --failfast option) and makes the wallet data directories of alice, bob and carol available for debugging. This seems helpful to fix issues only happening on the CI.
90/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100
This commit only changes how Electrum's automated CI (continuous integration) tests run. It makes tests stop at the first failure and saves wallet data directories as debugging artifacts. There is no change to the Electrum wallet software itself, no user-facing behavior change, and no security fix or vulnerability introduced.
AI review queuedsynchronizer: small refactor _on_address_statusby SomberNight · 5212d20f · Oct 29, 2025 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · SomberNight
synchronizer: small refactor _on_address_status
35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100
This commit is a minor internal cleanup in Electrum's synchronizer code. It renames a variable, adds type hints, extracts a small helper method, and fixes a log message to display transaction byte length correctly. There is no security-relevant change visible in the diff.
Lower-priorityqt: remove outdated help string in SendTabby f321x · fb4b7441 · Oct 29, 2025 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · f321x
qt: remove outdated help string in SendTab
The amount edit box is not turning red anymore if the amount is higher than the wallet balance, so this string can be removed. Alternatively it could be made red again but seems like nobody missed it.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100
This commit simply removes one outdated sentence from a help tooltip in Electrum's Qt wallet. The tooltip previously told users that an amount would turn red if they didn't have enough funds, but that visual feature no longer exists. There is no security issue here—it's a minor user-interface cleanup.
Lower-priorityqt: allow opening BalanceDialog if warningby f321x · 64849474 · Oct 29, 2025 · 2 filesMessage 68 · AdequateInformational 15Details
Commit message · f321x
qt: allow opening BalanceDialog if warning
Allow to open the BalanceDialog, by clicking on the Pie Diagram in the bottom left corner of the main window, if there is an active warning, even if the wallets balance is 0. Right now the user can see the warning icon for the lighting channel reserve, but cannot click on the icon to read the actual warning if there is no balance in the wallet.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100
This is a small user-interface fix, not a security change. It lets users click the balance pie chart in Electrum's main window to read an active warning message even when their wallet balance is zero. Previously, the click was ignored if the balance was zero, so a warning icon could be visible but not openable. The change adds a helper property to check whether a warning exists and opens the dialog when a warning is present.
Lower-prioritytest_commands: add unittest for add_peer cliby f321x · fca879d4 · Oct 28, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · f321x
test_commands: add unittest for add_peer cli
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100
This commit only adds a new automated test for an existing command-line feature called add_peer. It does not change any production code, so it cannot introduce a security vulnerability or fix one.
Lower-prioritycli: add_peer: make add_peer wait for connectionby f321x · 95ba7e75 · Oct 28, 2025 · 1 fileMessage 80 · StrongInformational 20Details
Commit message · f321x
cli: add_peer: make add_peer wait for connection
peer initialization was never awaited in the `add_peer` method. This awaits the initialization of the peer so that the caller actually knows if connection succeeded or timed out.
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 20/100
This commit fixes a command-line bug where the `add_peer` command would report success before actually confirming that a new Lightning peer connected. Previously, callers could be told the peer was added even if the connection later failed or timed out. The change makes the command wait for the peer handshake to complete and report a clear error if it does not.
Lower-prioritylnpeer: await init in main_loopby f321x · a5cf5f75 · Oct 28, 2025 · 1 fileMessage 80 · StrongLow 26Details
Commit message · f321x
lnpeer: await init in main_loop
Because `LNPeer.initialized` was awaited in `LNPeer._query_gossip()` instead of the main loop the other tasks got spawned concurrently and each task on its own has to wait for the initialization. In `LNPeer._send_own_gossip()` this was missing, instead there is a fixed 10 sec sleep. If the connection was not initialized but the 10 sec are exceeded `_send_own_gossip()` tries to send gossip and causes this exception as the `LNTransport` is not ready:
``` 2.13 | E | lnpeer.Peer.[LNWallet, 0288fa27c0-bc1900c8] | Exception in main_loop: AttributeError("'LNTransport' object has no attribute 'sk'") Traceback (most recent call last): File "/home/user/code/electrum-fork/electrum/util.py", line 1232, in wrapper return await func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/code/electrum-fork/electrum/lnpeer.py", line 511, in wrapper_func return await func(self, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/user/code/electrum-fork/electrum/lnpeer.py", line 525, in main_loop async with self.taskgroup as group: ^^^^^^^^^^^^^^ File "/home/user/code/electrum-fork/env/lib/python3.14/site-packages/aiorpcx/curio.py", line 304, in __aexit__ await self.join() File "/home/user/code/electrum-fork/electrum/util.py", line 1420, in join task.result() ~~~~~~~~~~~^^ File "/home/user/code/electrum-fork/electrum/lnpeer.py", line 573, in _send_own_gossip self.send_node_announcement(alias, color) ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ File "/home/user/code/electrum-fork/electrum/lnpeer.py", line 1830, in send_node_announcement self.transport.send_bytes(raw_msg) ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^ File "/home/user/code/electrum-fork/electrum/lntransport.py", line 225, in send_bytes lc = aead_encrypt(self.sk, self.sn(), b'', l) ^^^^^^^ AttributeError: 'LNTransport' object has no attribute 'sk'. Did you mean: 'sn'? ```
By awaiting the initialization directly in the `main_loop` it is more clear that the task getting spawned subsequently depend on the transport being available and separates the initialization more clearly these other functions.
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Low 26/100
This commit fixes a crash in Electrum's Lightning peer connection handling. Previously, several background tasks could start before the encrypted transport was fully ready, causing one task to try sending data on an uninitialized connection and trigger an AttributeError. The fix moves the 'wait for initialization' step into the main task loop and adds explicit checks so tasks only run after the connection is ready. It is a reliability/robustness bug, not an obvious security vulnerability.
I noticed many ResourceWarning when running regtests with PYTHONASYNCIODEBUG=1 and PYTHONDEVMODE=1, each time a daemon gets stopped the asyncio loop wouldn't get properly cleaned up:
This commits adds some cleanup to `util.create_and_start_event_loop()` to 1. cancel remaining tasks 2. shut down asyncgens 3. shutdown the default executor 4. call loop.close() to free the resources allocated to the loop See https://stackoverflow.com/questions/30765606/whats-the-correct-way-to-clean-up-after-an-interrupted-event-loop
This seems to reliably solve the mentioned `ResourceWarning`.
86/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
memory safety
AI analysis · Informational 19/100
This commit fixes a housekeeping issue in Electrum's background task manager. When the program stopped an internal 'event loop,' it previously left it partially open, causing Python resource warnings. The patch makes sure remaining tasks are cancelled, generators are shut down, the executor is stopped, and the loop is fully closed. There is no direct security vulnerability described; it is a cleanup that may improve stability and reduce resource leaks during testing.
Lower-priorityandroid: qr scanner: add emoji to clipboard stringby f321x · c8169871 · Oct 28, 2025 · 2 filesMessage 73 · AdequateInformational 15Details
Commit message · f321x
android: qr scanner: add emoji to clipboard string
The string is not translated and might not be accessible for non-english speakers, even though its relatively self-explanatory i think adding this emoji makes it more accessible.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100
This commit simply adds a clipboard emoji (📋) to an on-screen button label in the Android QR scanner and updates the project's Unicode whitelist to allow that emoji. There is no security relevance.
Lower-priorityinterface: PaddedRSTransport: keep in sync with e-x: flush on closeby SomberNight · 64233230 · Oct 27, 2025 · 1 fileMessage 81 · StrongLow 35Details
Commit message · SomberNight
interface: PaddedRSTransport: keep in sync with e-x: flush on close
note: ReplyAndDisconnect is specific to electrumx, however I think the name is descriptive enough to keep it here.
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Low 35/100
This commit fixes a bug in Electrum's network connection code where buffered data could be discarded when a connection closes. The fix ensures any pending reply is sent before disconnecting. It is a reliability/correctness fix that could affect protocol behavior, but the supplied materials do not describe it as a security vulnerability.
The ServerWidget was not working properly, when switching from "Manual Mode" to "Auto Connect" the change wouldn't get saved as it depended on having a correct server string entered (which isn't neccessary for Auto Connect). Also makes the widget behave more sane by cleaning the server input if Auto Connect is enabled and switching to Manual Mode if the user manually selects a server.
Update the ServerWidget every time it is shown (on initialization and also when the user opens it again or switches between network dialog tabs). This will clean it up if the user has entered some invalid server and closes it, otherwise this server would stay in the input field until the application is restarted.
The list of servers in the ServerWidget allows the user to right click and 'Use as server' on the servers in the list, however internally it was handled differently than what the user would expect when clicking on 'Use as server'. E.g. if the user selects a server in autoconnect mode it would still stay in autoconnect mode so the server could switch again to another server any time? Now it will also change the mode to manual (or stay in single server mode if that was selected before), making it clear that this server will stay selected.
If the user clicks on "Follow this branch" the connect mode will get changed to autoconnect as internally we connect to a random interface on this branch.
68/100 · AdequateMessage clarity
✓ Subject identifies a change✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Names security-relevant behavior explicitly
AI analysis · Informational 23/100
This commit fixes the Qt 'ServerWidget' in the Electrum Bitcoin wallet so that network connection settings actually match what the user selects. Previously, switching from 'Manual Mode' to 'Auto Connect' could fail to save, picking a server from the list could leave the wallet in auto-connect (so it might switch servers unexpectedly), and invalid server text could persist. The patch also makes the widget refresh every time it is shown and cleans up related server-following logic in the network layer. It is a UI/UX bug-fix commit; there is no direct evidence in the commit that it addresses a security vulnerability, though misconfiguration of server settings can have security-adjacent consequences for a wallet.
Lower-priorityinterface: add warmup budget to PaddedRSTransportby f321x · 679b7fe1 · Oct 27, 2025 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · f321x
interface: add warmup budget to PaddedRSTransport
Adds a 1024 (unpadded) byte budget to the PaddedRSTransport below which messages are instantly flushed down the socket before the transport will beginn waiting for the buffer to reach MIN_PACKET_SIZE (1024). This allows to get the first couple of messages sent quickly when starting the wallet to improve UX.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100
This commit is a performance tweak, not a security fix. It changes how Electrum sends small network messages at the start of a connection so the initial handshake feels faster. There is no indication it addresses a vulnerability.
Lower-priorityinterface: check genesis hash on connectionby f321x · ff2bbf15 · Oct 27, 2025 · 2 filesMessage 68 · AdequateLow 35Details
Commit message · f321x
interface: check genesis hash on connection
Prevents the client from accidentally connecting to a server on a different network. I noticed its possible to connect to mainnet servers on a signet instance causing the recent peers to get populated with mainnet peers rendering the wallet instance barely usable. Doing this check should prevent this and similar issues.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Low 35/100
This commit adds a safety check when Electrum connects to a Bitcoin server. It asks the server for its genesis block hash and disconnects if it doesn't match the network Electrum is configured for (mainnet, testnet, signet, etc.). This prevents accidental cross-network connections that could fill the peer list with incompatible servers and make the wallet misbehave. It is a hardening fix, not a clear-cut exploit patch.
Lower-prioritytrustedcoin: qt: set higher minimumHeight for QR componentby f321x · d954ddf0 · Oct 22, 2025 · 1 fileMessage 73 · AdequateInformational 20Details
Commit message · f321x
trustedcoin: qt: set higher minimumHeight for QR component
The default minimumHeight for wizard components is a bit small for the 2fa confirmation component as it only shows the QR code but not the input field. This seems to confuse users as its not intuitive to scroll down if there is no large text shown (as for example in the ToS component). This change increases the minimumHeight and restores it to the previous height once the user leaves the component again.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 20/100
This commit is a user-interface tweak for Electrum's two-factor authentication setup. It makes the wizard window taller when showing a QR code so users can also see the text box where they type their one-time code without having to scroll. There is no security flaw here.
Lower-priorityfastlane: revert full_description to plain textby SomberNight · 224c5fa6 · Oct 21, 2025 · 1 fileMessage 76 · AdequateInformational 15Details
Commit message · SomberNight
fastlane: revert full_description to plain text
Rich text does not work reliably. This reverts to the old formatting, but keeps some of the reordering/text changes. follow-up https://github.com/spesmilo/electrum/pull/9492
I compared looking at the description in: - google play store app - google play store website [1] - fdroid app - fdroid website [2]
notes: - Links work on playstore website and fdroid website, but not in the apps. In the apps, they are not even shown at all, they are just ignored. - ul/li/b tags do not work on playstore website
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
documentation-only discount
AI analysis · Informational 15/100
This commit only changes the marketing description text shown for the Electrum app on Google Play and F-Droid. It switches from HTML-style formatting (like bold and bullet lists) back to plain text because the formatting did not display correctly on all platforms. There is no change to the actual wallet software or its security.
Lower-prioritylnworker: fix todo, collect failed htlcs in paymentby f321x · f5aa82d4 · Oct 21, 2025 · 1 fileMessage 53 · ThinInformational 23Details
Commit message · f321x
lnworker: fix todo, collect failed htlcs in payment
This makes `LNWallet.pay_to_node()` wait `PaySession.TIMEOUT_WAIT_FOR_NEXT_RESOLVED_HTLC` (0.5 sec) for another htlc to get resolved after receiving a htlc failure during a payment attempt. This seems to make payments more reliable in scenarios where we receive multiple htlc failures closely after each other as `create_route_for_payment` then has access to the failed routes/failure information of all these htlcs when trying to re-split the outstanding amount.
53/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context! Contains work-in-progress language
AI analysis · Informational 23/100
This change tweaks how Electrum's Lightning payment code reacts when one payment chunk (HTLC) fails. Instead of immediately trying a new route based on a single failure, it waits up to 0.5 seconds to collect any other failures that arrive almost at the same time. That gives the re-splitting logic more complete information, making multi-part payments more reliable. It is a reliability/robustness improvement, not a fix for a security vulnerability.
Lower-prioritytimelock_recovery: recovery destination checks for address is_mine or script outputby Sander van Grieken · dc417a4f · Oct 20, 2025 · 1 fileMessage 65 · AdequateLow 46Details
Commit message · Sander van Grieken
timelock_recovery: recovery destination checks for address is_mine or script output
note: validation in frontend should be added to backend code as well
65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Low 46/100
This commit adds safety checks to a wallet recovery feature. It prevents users from accidentally setting a recovery transaction that sends funds back to the same wallet they are trying to recover, or to a non-address destination. The commit message notes that frontend validation should also exist in backend code, suggesting this is only a partial fix in the user interface layer.