EL
← All projectsElectrum

Electrum

Long-running lightweight Bitcoin wallet for desktop and mobile platforms.

BitcoinSoftware walletsNormal
Repository coverage

1153 commits in the local evidence base

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.

92security candidates261second-pass queue1007AI analyses
131commits · 30 days
262commits · 60 days
545commits · 180 days
1002commits · 365 days
Backfill bands
Aug 5 → Feb 6470 seen11 candidatesComplete
Feb 6 → Jun 6346 seen10 candidatesComplete
Jun 6 → Jul 653 seen2 candidatesComplete
Jul 6 → Aug 554 seen3 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

66/100 average clarity
220Strong · 80–100
549Adequate · 60–79
340Thin · 40–59
44Opaque · 0–39
2security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
ThomasV137891162
SomberNight39330362063
f321x40325387070
Sander van Grieken10910101057
ghost4342517069
Felix25410072
user323062
ekzyis222053
accumulator613071
Roman Zeyde515053
Sasha Zykov515075
Aaron Fiore414068
Analysis record

Published AI watches

Last scanned 5 minutes ago

Low 29 AI analysisMessage 58 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10992 from f321x/dedup_is_seed_wizard

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'
554daca6by ghost43+2−81 file
No security note in commit
Low 29 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10982 from spesmilo/wizard_2fa_seed_redirect

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
310c9dd0by Felix+102−133 files
No security note in commit
Informational 12 AI analysisMessage 68 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

qt: wizard: dedup seed validation rules

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…

89d0de06by f321x+2−81 file
No security note in commit
Informational 15 AI analysisMessage 70 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

tests: wizard: cover standard -> 2fa redirection

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…

70b4d27cby f321x+68−91 file
No security note in commit
Informational 15 AI analysisMessage 78 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10988 from f321x/update_security_review_ci_model

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
638fbba8by Felix+75−111 file
No security note in commit
Informational 12 AI analysisMessage 90 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

ci: security review: warn if the model got downgraded

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
ace2ca7aby f321x+74−101 file
No security note in commit
Low 44 AI analysisMessage 68 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10987 from spesmilo/fix_10986

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
bef80421by ghost43+11−02 files
No security note in commit
Low 35 AI analysisMessage 81 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

transaction: treat native segwit input with non-empty witness as complete

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
e9bb42e6by ThomasV+11−02 files
No security note in commit
Moderate 68 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10981 from spesmilo/do_not_sign_txin_with_witness

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
9da4c342by ThomasV+10−21 file
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10974 from SomberNight/202609_nostr_psbt_xpub

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
46408a78by ThomasV+13−01 file
No security note in commit
Low 42 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10980 from spesmilo/add_input_from_network_do_not_ignore_exceptions

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…

Exception swallowing bug fixedNetwork/transaction input enrichment logic changedSilent failure mode removed
bb9d3280by ghost43+1−11 file
No security note in commit
Moderate 60 AI analysisMessage 58 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10970 from f321x/fix_bolt11_bugs_2

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
4b92c0f2by ghost43+82−939 files
No security note in commit
Moderate 61 AI analysisMessage 80 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

add_info_from_network: do not swallow exceptions

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
3f67b21bby ThomasV+1−11 file
Vendor flagged security relevance
Informational 15 AI analysisMessage 60 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

bolt11: remove tag arg from get_routing_info

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 …

e78fba28by f321x+12−127 files
No security note in commit
Moderate 62 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10940 from accumulator/fix_10937

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
a57ef6e7by Felix+707−9610 files
No security note in commit
Low 40 AI analysisMessage 36 · Opaque
EL ElectrumElectrum BitcoinSoftware wallets

bolt11: followup #10940

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
3026fbdbby f321x+14−232 files
No security note in commit
Low 32 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10737 from sashazykov/hw-close-wallet-thread-leak

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
5b77ca46by Felix+9−22 files
No security note in commit
Informational 23 AI analysisMessage 58 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10958 from SomberNight/202609_deps

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
8bd8c3fbby ghost43+57−5612 files
No security note in commit
Informational 21 AI analysisMessage 58 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10965 from SomberNight/202609_header_checkpoints

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
9e0b7e64by ghost43+276−04 files
No security note in commit
Informational 15 AI analysisMessage 58 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

update block header checkpoints

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…

e11c579bby SomberNight+276−04 files
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Lower-priorityplugins: timelock_recovery: move checksum func to base classby SomberNight · c2f37294 · Mar 16, 2026 · 3 filesMessage 75 · AdequateInformational 14Details
Commit message · SomberNight

plugins: timelock_recovery: move checksum func to base class

don't import qt from tests unless it is qt being tested

75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 14/100

This commit is a small internal code cleanup. It moves a checksum helper function from the Qt (graphical user interface) part of the timelock recovery plugin into the plugin's shared base class so it can be reused and tested without needing to load the Qt GUI code during tests. The checksum logic itself is unchanged, and there is no security fix or behavior change visible in the diff.

Lower-prioritytests: timelock_recovery plugin: add test vector for checksum from bipby SomberNight · 907ceb9f · Mar 16, 2026 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · SomberNight

tests: timelock_recovery plugin: add test vector for checksum from bip

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit only adds a new test case to the Electrum test suite. It verifies that a checksum function used by the timelock_recovery plugin produces a known, expected output for an example taken from a Bitcoin improvement proposal (BIP). No production code was changed, and there is no security fix or vulnerability introduced.

AI review queuedtest_checksum_non_asciiby Oren · 8c5af52c · Mar 15, 2026 · 1 fileMessage 18 · OpaqueInformational 12Details
Commit message · Oren

test_checksum_non_ascii

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 12/100

This commit adds a new automated test to verify that a checksum function correctly handles non-ASCII characters (like accented letters, Chinese, Japanese, Arabic, and Hebrew text). It does not change any production code. The test ensures that special characters are kept as-is rather than being converted to Unicode escape sequences before hashing. This is a quality-assurance change, not a security fix or vulnerability.

Lower-priorityFix checksum following BIP-128 standardby Oren · 2f3f397a · Mar 15, 2026 · 1 fileMessage 68 · AdequateLow 33Details
Commit message · Oren

Fix checksum following BIP-128 standard

Non-Ascii characters should not be converted for
checksum calculation.
This will give consistent hash to BIP-128 and its
Javascript code example.

Timelock-Recovery Plans that contained only ascii
characters are not affected.

Also, 8 hex-chars is enough for a checksum.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Low 33/100

This commit fixes how a recovery-plan checksum is calculated in Electrum's timelock recovery plugin. Previously, non-English characters were being converted to ASCII escape sequences before hashing, which could produce a different checksum than expected by the BIP-128 standard. The fix makes hashing consistent with the standard and shortens the displayed checksum to 8 hex characters. Plans that used only ordinary ASCII characters are unaffected.

Lower-prioritytests: lnpeer: uncomment testcase: test_modern_shutdown_no_overlapby SomberNight · 1c24c613 · Mar 12, 2026 · 1 fileMessage 75 · AdequateInformational 12Details
Commit message · SomberNight

tests: lnpeer: uncomment testcase: test_modern_shutdown_no_overlap

This test case has always been disabled, but looks like the justification is easy to fix.

75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 12/100

This commit only re-enables an existing automated test for a Lightning Network channel-closing scenario where two sides cannot agree on a fee. It does not change the actual Electrum wallet or Lightning code that users run, so it cannot directly affect real funds or security. It is a testing improvement.

Lower-prioritylnpeer: maybe_send_commitment: impl batching updatesby SomberNight · 7e3af72a · Mar 11, 2026 · 2 filesMessage 50 · ThinInformational 18Details
Commit message · SomberNight

lnpeer: maybe_send_commitment: impl batching updates

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 18/100

This commit adds a small 50-millisecond delay between Lightning Network commitment signature messages so multiple small updates can be batched into a single signature. It is a performance optimization, not a security fix. The change does not appear to address any known vulnerability.

Lower-prioritylnpeer: simplify where maybe_send_commitment() is calledby SomberNight · 93f04524 · Mar 11, 2026 · 1 fileMessage 85 · StrongLow 27Details
Commit message · SomberNight

lnpeer: simplify where maybe_send_commitment() is called

The typical flow of an update is:
---UPDATE--->
--- SIG --->
<--REVACK----
<-- SIG ----
---REVACK--->

It makes sense to try to send a sig ("commitment_signed") right after we send an update.
It also makes sense right after we send revack.

Besides those times, we could call "maybe_send_commitment" at *any* time, that is safe, and depending on other call locations, it might be an optimisation, however it is not needed.

In particular it is unclear why we had those calls when we *receive* updates (and only for certain types of updates - not consistently).

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Low 27/100

This commit tidies up when Electrum's Lightning code sends a 'commitment_signed' message during payment channel updates. It removes some calls that happened when receiving certain updates and adds them where the sender has just sent an update. The change is described by the author as a simplification, not a security fix, and the commit message explicitly says the removed calls were safe but unnecessary.

Lower-priorityUpdate my Electrum server details in servers.jsonby Jochen Hoenicke · e31ce7dc · Mar 10, 2026 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · Jochen Hoenicke

Update my Electrum server details in servers.json

I moved my node to standard port again because the non-standard one was apparently used by malware. I also updated the domain name (both work at the moment, but I prefer the shorter one).

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 15/100

This commit simply updates contact details for one public Electrum server in the app's built-in server list. The server operator changed their domain name from electrum.jochen-hoenicke.de to electrum.jhoenicke.de and switched back to the standard Electrum ports (50001/50002) because they said a non-standard port was being abused by malware. There is no code change and no direct security fix in Electrum itself.

AI review queuedqml: rbf/cancel: fix type errorby f321x · d85985cd · Mar 9, 2026 · 1 fileMessage 68 · AdequateInformational 17Details
Commit message · f321x

qml: rbf/cancel: fix type error

self.oldfeeRate is initialized as int in `QETxRbfFeeBumper` and
`QETxCanceller`. However QML expects it to be a string. Initializing
it as string fixes the exception. Previously this didn't happen as
`Abstract_Wallet.add_info_from_wallet_and_network()` would never
return False, so the `get_tx()` method would immediately overwrite
the self.oldfeeRate variable with a string.

```
20.95 | D | gui.qml.qetxfinalizer | TxMonMixin.__init__
20.95 | E | gui.qml.qeapp.Exception_Hook | exception caught by crash reporter
TypeError: unable to convert a Python 'int' object to a C++ 'QString' instance
```

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 17/100

This commit fixes a type mismatch bug in Electrum's mobile/QML user interface. A fee rate value was stored as a number (0) but the QML interface expected text ('0'), causing a crash when certain code paths ran. The fix changes the initial value from a number to a string so the interface no longer crashes. There is no indication this could be used to steal funds or attack users remotely.

Lower-priorityqml: rbf/cancel: abort update if adding tx info failsby f321x · 3d13d478 · Mar 9, 2026 · 1 fileMessage 93 · StrongLow 31Details
Commit message · f321x

qml: rbf/cancel: abort update if adding tx info fails

Early return the update() methods of QETxRbfFeeBumper and QETxCanceller
if it fails to fetch missing tx information from the Network to prevent
an exception in `Abstract_Wallet.bump_fee()` and
`Abstract_Wallet.dscancel()`. See
https://github.com/spesmilo/electrum/issues/5502#issuecomment-40213084270

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
AI analysis · Low 31/100

This commit fixes a crash in Electrum's mobile-style QML user interface when users try to speed up (RBF) or cancel a transaction while the app hasn't finished downloading all the transaction details from the network. Previously the app would throw an exception; now it shows a warning and stops gracefully. It is a robustness fix, not a security vulnerability that lets an attacker steal funds.

AI review queuedtransaction: re-raise NetworkException in add_info_from_networkby f321x · e8eee065 · Mar 9, 2026 · 1 fileMessage 81 · StrongInformational 21Details
Commit message · f321x

transaction: re-raise NetworkException in add_info_from_network

`Transaction.add_info_from_network` would swallow a `NetworkException`
even when `ignore_network_issues=False` is passed.
This causes `Transaction.add_info_from_wallet_and_network` to
incorrectly return True even if the operation failed.
If `QETxRbfFeeBumper` then incorrectly proceeds assuming the call was
successful `Abstract_Wallet.bump_fee()` would raise an `Exception("tx
missing info from network")`.
Should fix the traceback in
https://github.com/spesmilo/electrum/issues/5502#issuecomment-4021308427.

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 21/100

This is a bug-fix patch for the Electrum Bitcoin wallet. It corrects a logic error where a network failure was being silently swallowed instead of being reported, which could cause the wallet's fee-bumping feature to crash later with a confusing error. There is no indication this allows theft, remote code execution, or unauthorized access; it is a reliability and user-experience fix.

Lower-priorityplugin: nwc: lookup_invoice: fix exc, include b11by f321x · f64923b4 · Mar 6, 2026 · 1 fileMessage 76 · AdequateInformational 22Details
Commit message · f321x

plugin: nwc: lookup_invoice: fix exc, include b11

Fixes exception in lookup_invoice:
```
62.69 | E | plugins.nwc.nwcserver.NWCServer | Error handling nwc request
Traceback (most recent call last):
File "/home/user/code/vibecoding_vm/electrum/electrum/plugins/nwc/nwcserver.py", line 381, in run_request_task
await task
File "/home/user/code/vibecoding_vm/electrum/electrum/util.py", line 1211, in wrapper
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/user/code/vibecoding_vm/electrum/electrum/plugins/nwc/nwcserver.py", line 526, in handle_lookup_invoice
info = self.wallet.lnworker.get_payment_info(invoice.payment_hash, direction=RECEIVED)
^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Invoice' object has no attribute 'payment_hash'
```

Always includes bolt11 invoice in response, even if the client already
sent it to us in the request. It doesn't seem useful and is marked
optional in the spec but https://sandbox.albylabs.com considers the
response invalid if the invoice is not included.

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 22/100

This commit fixes a crash in Electrum's Nostr Wallet Connect (NWC) plugin when a user looks up an existing incoming invoice. The code was trying to read a non-existent 'payment_hash' field and instead should use the invoice's existing 'rhash' value. It also changes the response so the BOLT11 invoice string is always included, rather than only when the client originally searched by payment hash. This improves compatibility with a third-party service (sandbox.albylabs.com) that rejects responses missing the invoice string. There is no indication this bug could be exploited by an attacker; it is a functional bug causing request failures.

Lower-priorityplugin: nwc: consider inflight htlcs in get_payment_infoby f321x · f53203d1 · Mar 6, 2026 · 1 fileMessage 85 · StrongLow 35Details
Commit message · f321x

plugin: nwc: consider inflight htlcs in get_payment_info

Also consider htlcs that are still inflight when calculating
the amount/fee of a payment to prevent calculating an incorrect
payment value/fee when calling get_payment_info directly after
a payment succeeds (one htlc settled, but others could still be
inflight).
This assumes that once a payments htlc got settled all other inflight
htlcs will also get settled.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Low 35/100

This commit fixes a bug in Electrum's Nostr Wallet Connect (NWC) plugin where the reported amount and fee for a Lightning payment could be temporarily wrong right after the payment succeeds. Previously, the code only looked at fully settled payment parts. If one part had settled but others were still in flight, the plugin could report an incomplete or zero amount/fee. The fix now includes still-in-flight payment parts when calculating the total, assuming they will also settle. This is mainly a correctness/reliability fix, not a direct theft-of-funds vulnerability, but incorrect payment info could mislead connected apps or users.

Lower-priorityplugin: nwc: add update timer to connection listby f321x · 9b4d4d61 · Mar 6, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · f321x

plugin: nwc: add update timer to connection list

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit adds a simple UI refresh timer to the NWC (Nostr Wallet Connect) plugin's connection list window. Every 5 seconds, the list of wallet connections is refreshed so that users can see updated budget information without manually closing and reopening the window. There is no security-relevant change visible in the diff.

Lower-priorityplugin: nwc: consider routing fees for payment budgetby f321x · 8ccdc3f7 · Mar 6, 2026 · 1 fileMessage 85 · StrongModerate 67Details
Commit message · f321x

plugin: nwc: consider routing fees for payment budget

Include the lightning routing fees into the payment budget accounting
to prevent untrusted nwc clients from exceeding the budget by crafting
a high fee route.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Moderate 67/100

This commit fixes a bug in Electrum's NWC (Nostr Wallet Connect) plugin where a connected client could spend more than its allowed daily budget by deliberately routing a Lightning payment through an expensive path. Previously, only the invoice amount was counted toward the budget, not the routing fees. The fix reserves the maximum expected fee up front and later adjusts the budget to reflect the actual fee paid.

Lower-priorityplugin: nwc: unify budget_allows_spend and add_to_budgetby f321x · 8dddb5d5 · Mar 6, 2026 · 1 fileMessage 73 · AdequateLow 27Details
Commit message · f321x

plugin: nwc: unify budget_allows_spend and add_to_budget

There is now only add_to_budget which will return None if the budget
doesn't allow for this spend. It will always add the spend to the
budget, even if the user has no budget so it can be used for display
purposes (and simpler code, only one path).

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Low 27/100

This commit is a code cleanup in Electrum's NWC (Nostr Wallet Connect) plugin. It merges two separate budget-checking functions into one. Previously, the code first checked if a payment was within budget, then recorded it. Now it does both in one step. The commit message and diff do not describe any security bug being fixed; it appears to be a simplification/refactoring change. There is no evidence this fixes a known vulnerability.

Lower-prioritytest_lnpeer: factorize test_reestablish_replay_messagesby ThomasV · e309f89a · Mar 6, 2026 · 1 fileMessage 40 · ThinInformational 15Details
Commit message · ThomasV

test_lnpeer: factorize test_reestablish_replay_messages

40/100 · ThinMessage clarity
✓ Specific, descriptive subject! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is a simple code cleanup in Electrum's test suite. It merges two nearly identical Lightning network reconnection tests into one shared helper method, removing duplicated code. No production code was changed, and nothing about the actual wallet or payment behavior is affected.

AI review queuedtests: lnpeer: make mpp_cleanup_after_expiry more robustby SomberNight · db003257 · Mar 4, 2026 · 1 fileMessage 95 · StrongInformational 15Details
Commit message · SomberNight

tests: lnpeer: make mpp_cleanup_after_expiry more robust

As there are two htlcs, the `alice_htlc_resolved` Event might get set either once or twice by the time `alice_htlc_resolved.wait()` returns. The previous code was assuming that both htlcs are resolved by then, but it could happen that only one htlc was resolved, due to timing.

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 15/100

This commit only changes a test file. It makes an existing automated test more reliable by waiting for both payment parts to finish before checking the result, instead of assuming both finished at once. There is no change to the actual Electrum wallet or Lightning code that users run.

Security candidateqt: perform 'fully spend' action with coin selection, keep separate from coin control when doing action.by Sander van Grieken · 48916f56 · Mar 3, 2026 · 4 filesMessage 85 · StrongInformational 22Details
Commit message · Sander van Grieken

qt: perform 'fully spend' action with coin selection, keep separate from coin control when doing action.

Also stop timer when dialog is finished, to avoid re-generating txs with the same input coin set, which
results in an exception as these coins have signatures when the swap has started.

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
signing boundary
AI analysis · Informational 22/100

This commit fixes a user-interface bug in the Electrum Bitcoin wallet's Qt desktop client. Previously, when a user chose to 'fully spend' selected coins to open a Lightning channel or perform a submarine swap, the wallet used the global 'coin control' setting to remember the coin selection. That caused the selected coins to remain locked in coin control after the dialog closed, and a background timer could keep re-creating transactions with the same already-signed coins, leading to an exception. The change passes the selected coins directly to the relevant dialogs instead of relying on coin control, and stops the timer when the dialog finishes. It is a reliability/usability fix rather than a remote-exploitable security vulnerability.

Lower-priorityqt: utxo_list: add asserts to helper methods that coins are selectedby SomberNight · 4c27b8de · Mar 3, 2026 · 1 fileMessage 85 · StrongLow 25Details
Commit message · SomberNight

qt: utxo_list: add asserts to helper methods that coins are selected

- otherwise they default to selecting all coins, which is unlikely to be what the user intends
- prev commit makes sure this should never happen

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Low 25/100

This commit adds safety checks (assert statements) to three helper methods in Electrum's Qt wallet interface. These helpers perform actions like swapping coins, opening a Lightning channel, or paying to a clipboard address. The new checks ensure that at least one coin is selected before proceeding, because otherwise the code would silently default to using all available coins. The commit message says a previous change should prevent this from happening, so these asserts are a defensive backup rather than a fix for an active bug.

Lower-priorityplugin: nwc: bump version to 0.0.2by f321x · 835ab39d · Mar 3, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · f321x

plugin: nwc: bump version to 0.0.2

these changes deserve a new version

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only changes a version number in a plugin manifest file from 0.0.1 to 0.0.2. There is no code change, no bug fix, and no security-related content in the diff itself.

Lower-priorityplugin: nwc: add 'state' field to responsesby f321x · ea1e2c82 · Mar 3, 2026 · 1 fileMessage 68 · AdequateInformational 17Details
Commit message · f321x

plugin: nwc: add 'state' field to responses

NIP-47 got extended to include an optional 'state' field in responses.
Implementing this acutally fixes an issue of Alby Go showing succeeded
payments as failed that appeared recently.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 17/100

This commit updates Electrum's Nostr Wallet Connect (NWC) plugin to add a 'state' field to payment responses, following a recent extension to the NIP-47 protocol standard. The change is described by the developer as fixing a display bug where the Alby Go wallet app was incorrectly showing successful payments as failed. There is no indication this is a security vulnerability or that it introduces one.

Lower-priorityplugin: nwc: improved budget accountingby f321x · 52223740 · Mar 3, 2026 · 1 fileMessage 68 · AdequateModerate 55Details
Commit message · f321x

plugin: nwc: improved budget accounting

Increase the payment budget before attempting the payment
and decrease again if the payment fails. This prevents a race
where multiple concurrent payments could pass the budget check
before the budget is incremented through any of the other payments.

A lock around the budget is not suitable either as then one long
stuck payment (hold invoice) would render the budget inaccessible for
all other payment attempts.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Moderate 55/100

This commit fixes a race condition in Electrum's NWC (Nostr Wallet Connect) plugin that could let a user spend more than their daily budget. Previously, the plugin checked the budget before each payment but only recorded the spend after a payment succeeded. If several payments were started at the same time, they could all pass the budget check and collectively exceed the limit. The fix records the spend before attempting the payment and refunds it only if the payment fails. The commit message explicitly describes this as preventing a race condition.

AI review queuedplugin: nwc: do budget accounting in msatby f321x · 3956bff0 · Mar 3, 2026 · 3 filesMessage 80 · StrongLow 48Details
Commit message · f321x

plugin: nwc: do budget accounting in msat

Keep track of the spent amount in msat instead of sat to prevent
issues due to rounding.
The budget is still specified in sat.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 48/100

This commit fixes a rounding bug in Electrum's NWC (Nostr Wallet Connect) plugin. The plugin lets users set a daily spending limit in satoshis, but it was internally tracking spent amounts in whole satoshis. Because Lightning invoices are priced in millisatoshis (one-thousandth of a satoshi), rounding down to satoshis could let a user or service spend slightly more than the intended daily limit over many small payments. The patch now tracks the budget in millisatoshis and converts the limit to millisatoshis for comparison, closing the rounding gap. It also migrates existing saved budget data from satoshis to millisatoshis.

Lower-priorityqt: MyTreeView: close menu if its context changesby f321x · 423cc678 · Mar 3, 2026 · 8 filesMessage 88 · StrongLow 28Details
Commit message · f321x

qt: MyTreeView: close menu if its context changes

Stores the currently open (right-click) menu in MyTreeView
and adds a `close_menu()` method so inheritants can cleanly
close the menu again if the context it was opened upon has changed.

This is utilized by `AddressList` and `UTXOList` to close the menu
if a call to `update()` has chenged the address list in some way or
removed a utxo from the list to prevent the user from trying to use
a utxo that doesn't exist anymore.

Fixes #10464

88/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
AI analysis · Low 28/100

This commit fixes a user-interface glitch in the Electrum desktop wallet's Qt GUI. If a user right-clicked an address or a coin (UTXO) to open a menu, and the wallet's background update refreshed the list while the menu was still open, the menu could remain visible even though the item it referred to no longer existed or had changed. The fix automatically closes such stale context menus. It is a usability/reliability fix rather than a cryptographic or network security flaw, but acting on a stale menu could in principle lead to user confusion or unintended transactions.