EL
← All projectsElectrum

Electrum

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

BitcoinSoftware walletsNormal
Repository coverage

1151 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 candidates259second-pass queue1005AI analyses
132commits · 30 days
260commits · 60 days
543commits · 180 days
1003commits · 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
548Adequate · 60–79
339Thin · 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
f321x40225386070
Sander van Grieken10910101057
ghost4341516070
Felix25410072
user323062
ekzyis222053
accumulator613071
Roman Zeyde515053
Sasha Zykov515075
Aaron Fiore414068
Analysis record

Published AI watches

Last scanned 44 minutes ago

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 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
Low 46 AI analysisMessage 58 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10945 from accumulator/stale_utxo_data_fixes

This commit fixes cases where Electrum's wallet cache could hold onto outdated information about coins and transactions after blockchain reorganizations or mempool changes. For example, if a transaction was previously thought to be mined b…

stale cached state after reorg/mempool evictionincorrect confirmation metadata displayed to userscache invalidation added at multiple state transitions
e20b24c0by Felix+132−239 files
No security note in commit
Informational 15 AI analysisMessage 60 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

transaction: add set_mined_info setter to TxInput

This commit is a simple code cleanup: it replaces two repeated lines that set a transaction input's block height and position with a single helper method called set_mined_info. There is no change in behavior, no bug fix, and no security re…

61f71acbby f321x+7−73 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.

AI review queuedsimplify prevby SomberNight · 6a89dd30 · Jun 3, 2026 · 1 fileMessage 18 · OpaqueInformational 11Details
Commit message · SomberNight

simplify prev

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 11/100

This is a small code cleanup in Electrum's transaction handling. It simplifies how raw transaction bytes are converted to hex strings. There is no obvious security bug being fixed here; it appears to be a follow-up simplification to a previous change.

AI review queuedtx_from_any: make sanitization optionalby ThomasV · 271f079d · Jun 3, 2026 · 3 filesMessage 58 · ThinInformational 17Details
Commit message · ThomasV

tx_from_any: make sanitization optional

re.sub is expensive (calls re.sub), it is not necessary
to call it when instantiating transactions from the wallet file.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · Informational 17/100

This change is a performance optimization, not a security fix. It makes whitespace removal from transaction data optional, skipping it when loading transactions from the wallet's own stored files. The default behavior for user-provided input still removes whitespace. There is no direct security issue in the patch itself, though any future code that calls tx_from_any with untrusted input must remember to leave sanitization enabled.

Lower-prioritymake sure load_ast_data returns a dict with str keysby ThomasV · 3638934e · Jun 3, 2026 · 1 fileMessage 50 · ThinLow 31Details
Commit message · ThomasV

make sure load_ast_data returns a dict with str keys

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

This commit fixes a data-type consistency bug in Electrum's wallet database loader. When loading very old wallet files, the code could return numeric (integer) dictionary keys instead of string keys. Because the rest of the program expects string keys, this mismatch could later cause crashes or unexpected behavior when the wallet tries to read or update stored data. The fix forces all keys to become strings by converting the data through JSON.

Lower-priorityconfig: add option to disable memory hardeningby ThomasV · 3ae85eef · Jun 2, 2026 · 3 filesMessage 60 · AdequateInformational 23Details
Commit message · ThomasV

config: add option to disable memory hardening

This is needed for running with a memory profiler

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
defensive validation
AI analysis · Informational 23/100

This commit adds a command-line option to turn off a Linux memory-protection feature in Electrum. The option is mainly intended for developers using memory profilers, but it is also automatically enabled on Android builds. It does not by itself create a vulnerability, but it gives users a way to weaken a security hardening mechanism.

Lower-prioritytestnet3/testnet4: update default serversby SomberNight · d47628f6 · May 31, 2026 · 2 filesMessage 60 · AdequateInformational 19Details
Commit message · SomberNight

testnet3/testnet4: update default servers

Please enter the commit message for your changes. Lines starting

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 19/100

This commit updates the built-in lists of default servers that Electrum wallet users connect to for Bitcoin test networks (testnet3 and testnet4). It adds, removes, and changes server addresses and protocol versions. There is no code change and no claim in the commit that this fixes a security issue. However, changing default servers can affect user privacy and trust, because wallets rely on these servers to learn about transactions. If a malicious server were added, it could spy on users or feed them bad information. The commit itself does not show that any added server is malicious, so this is best viewed as a routine infrastructure update with a low but non-zero security-relevant aspect.

Security candidatescripts: simplify testnet usageby SomberNight · a395da4e · May 31, 2026 · 4 filesMessage 35 · OpaqueInformational 15Details
Commit message · SomberNight

scripts: simplify testnet usage

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit is a small cleanup of internal developer scripts. It replaces direct calls to set the Bitcoin test network with a single call that asks the configuration object which chain to use. There is no user-facing change and no security issue.

Lower-prioritynetwork: fix get_servers should not modify ports of DEFAULT_SERVERSby SomberNight · 88c7c6d5 · May 31, 2026 · 1 fileMessage 50 · ThinLow 35Details
Commit message · SomberNight

network: fix get_servers should not modify ports of DEFAULT_SERVERS

DEFAULT_SERVERS should be immutable

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

This commit fixes a bug where Electrum's built-in list of default servers could be accidentally modified by normal code. The fix makes a deep copy of the server list before returning it, so callers cannot change the original. This is a defensive coding fix that prevents potential network misdirection or connection problems, but the commit itself does not describe a specific security vulnerability or active attack.

Lower-priorityci: builds: android: fix cache keyby f321x · 39e9e23e · May 29, 2026 · 1 fileMessage 92 · StrongInformational 15Details
Commit message · f321x

ci: builds: android: fix cache key

Fix the cache key of the scheduled Android CI build which failed
at the `Cache buildozer (p4a)` step with the following error:
```
Error: The template is not valid. .github/workflows/builds.yml (Line: 113, Col: 16): hashFiles('contrib/android/**') failed. Fail to hash files under directory '/home/runner/work/electrum/electrum'
```

Probably it failed because the `contrib/android/.cache` directory
got included in the cache key, which worked on Cirrus.
This specifies the cache key hash inputs explicitly.

92/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This is a routine fix for an Android CI build workflow. The GitHub Actions cache key was failing because it tried to hash files in a directory that could not be read. The patch explicitly excludes the problematic directory from the hash. There is no security issue here.

Lower-priorityplugin: nwc: change default relay used for new NWC connectionsby f321x · 460a7e1d · May 29, 2026 · 1 fileMessage 85 · StrongInformational 19Details
Commit message · f321x

plugin: nwc: change default relay used for new NWC connections

The default relay is the one that is positioned first in a NWC
connection string. This matters because most clients only use the
first relay and ignore the following ones.

We set the Alby relay as default because they operate it specifically
for NWC.
However it doesn't seem to work anymore, client requests time out.
I suspect they drop NIP-04 encrypted events to push wallets
to implement the newer NIP-44 encryption.
We should eventually implement this.
The primal relay happily accepts NIP-04 encrypted NWC events so
lets use this as default.

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

This commit simply changes the default internet relay address used by Electrum's NWC (Nostr Wallet Connect) plugin from Alby's server to Primal's server. It is a configuration change, not a code vulnerability fix. The commit message explains that Alby's relay appears to be timing out for older encrypted messages, so the developers are switching to a relay that still accepts them. There is no security bug being patched here.

Lower-priorityci: security review: bump claude model 4.7 -> 4.8by f321x · ed83982f · May 29, 2026 · 1 fileMessage 93 · StrongInformational 15Details
Commit message · f321x

ci: security review: bump claude model 4.7 -> 4.8

Anthropic released a new model again. The pricing/token consumption
is the same as 4.7. This improves the quality of the code review CI.
https://platform.claude.com/docs/en/about-claude/models/whats-new-claude-4-8

93/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
AI analysis · Informational 15/100

This commit only changes the version number of an AI model used in an optional continuous-integration (CI) security-review script, from Claude 4.7 to Claude 4.8. It does not touch Electrum's wallet code, networking, cryptography, or any code that end users run. There is no security issue here.

Lower-prioritympp_split: stop returning splits without amountsby f321x · c47c5d50 · May 28, 2026 · 2 filesMessage 68 · AdequateLow 48Details
Commit message · f321x

mpp_split: stop returning splits without amounts

`mpp_split.suggest_splits()` would return payment split
configurations with no split amounts like:
`{(channel_id, node_id): []}`.

This is unintuitive and introduced two bugs:

1. `LNWallet.create_routes_for_payment()` evaluates
`is_multichan_mpp = len(sc.config.items()) > 1`.
So even if the actual payment amount gets split onto
a single channel this would falsely evaluate `True`
if there is a empty split.

2. `is_direct_path = all(node_id == paysession.invoice_pubkey for (chan_id, node_id) in sc.config.keys())`
similarly might incorrectly evaluates `False` if the split
contains an empty split for another `node_id`.

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

This commit fixes a bug in Electrum's Lightning payment splitting logic. Previously, the software could create payment plans that included empty 'splits' for channels that weren't actually being used. This caused two downstream checks to misclassify payments: a single-channel payment could be treated as a multi-channel payment, and a direct payment to the intended recipient could be treated as a routed payment. These misclassifications could lead to less efficient routing, higher fees, or routing failures rather than direct payment success.

Lower-priorityci: document where to get API keys fromby SomberNight · 4b65ef77 · May 26, 2026 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · SomberNight

ci: document where to get API keys from

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only adds comments to two GitHub workflow files explaining where API keys come from and what permissions they need. It does not change any code behavior, secrets handling, or access controls. There is no security issue here.

Security candidatelnpeer: on_ping: drain out-socket bufferby SomberNight · 9b206576 · May 26, 2026 · 2 filesMessage 68 · AdequateModerate 55Details
Commit message · SomberNight

lnpeer: on_ping: drain out-socket buffer

might help against some memory exhaustion attacks

f321x said:
> maybe a peer could just fill up our sockets outgoing buffer by ~234mb/h
> if they stop reading from their socket and keep sending pings every second.

Co-authored-by: f321x <f@f321x.com>

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
explicit security language
AI analysis · Moderate 55/100

This change fixes a potential denial-of-service weakness in Electrum's Lightning network peer handling. Previously, when Electrum replied to a peer's 'ping' message, it would add the reply to the outgoing socket buffer without waiting to confirm it could actually be sent. A malicious peer that accepts data very slowly (or not at all) could trick Electrum into piling up hundreds of megabytes of unsent replies in memory each hour. The patch makes the reply wait until the socket can drain the data, limiting memory growth.

Lower-prioritylnpeer: add some rate-limiting against ping floodby SomberNight · 262c1eb0 · May 26, 2026 · 1 fileMessage 68 · AdequateModerate 51Details
Commit message · SomberNight

lnpeer: add some rate-limiting against ping flood

A remote peer could send us lots of small ping messages, requesting large pong responses. This is cheap for them but potentially expensive for us.
Does not seem too serious, but I think we could add some rate-limiting.

note: There are many ways for a remote peer to inflate our incoming traffic usage,
but the cost of that is usually shared between them and us (they need to send the data, we receive it).

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

This change adds a simple speed bump to stop a connected Lightning peer from bombarding an Electrum node with tiny 'ping' messages that force the node to send back large 'pong' replies. Before the patch, a peer could send pings as fast as the network allowed, making Electrum waste bandwidth and CPU generating replies. After the patch, Electrum waits at least one second between handling pings from the same peer, slowing any abuse to a trickle. The commit author notes this is not considered a serious issue.

Lower-priorityregtest.test_breach_with_spent_htlc: wait until settledby ThomasV · df00f838 · May 26, 2026 · 1 fileMessage 87 · StrongInformational 15Details
Commit message · ThomasV

regtest.test_breach_with_spent_htlc: wait until settled

In some cases the test failed because alice didnt have
enough time to settle. Also remove useless sleep

87/100 · StrongMessage clarity
✓ Specific, 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 regression test script. It replaces a quick check that sometimes failed with a proper wait routine, and removes an unnecessary one-second sleep. There is no change to the actual Electrum wallet or Lightning code that users run.

Lower-prioritylnonion/trampoline: stop double counting HMAC sizeby f321x · eb7bf232 · May 26, 2026 · 2 filesMessage 73 · AdequateLow 35Details
Commit message · f321x

lnonion/trampoline: stop double counting HMAC size

`OnionHopsDataSingle.to_bytes()` already accounts for the
onions hmac internally, it seems incorrect that we were
additionally adding `PER_HOP_HMAC_SIZE` to the payload size
of the payload returned by `.to_bytes()`.

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

This commit fixes a bug in Electrum's Lightning payment routing where the size of a per-hop authentication value (HMAC) was being counted twice when building onion packets. The fix removes the extra count, which could previously have caused Electrum to think a trampoline payment payload was larger than it actually is. The practical effect is likely limited to routing failures or incorrect payload budgeting for trampoline payments, rather than direct theft of funds.

Lower-priorityci: remove Cirrus CI configurationby f321x · a41c76f3 · May 26, 2026 · 2 filesMessage 72 · AdequateInformational 15Details
Commit message · f321x

ci: remove Cirrus CI configuration

Migration to GitHub Actions is complete. All CI tasks are now defined
under .github/workflows/.

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit simply removes the old Cirrus CI configuration file and a small related check in a build script because the project has finished moving its automated testing and build tasks to GitHub Actions. There is no change to Electrum's wallet, networking, or cryptographic code, and no security vulnerability is introduced or fixed.

Lower-priorityci: add GitHub Actions binary builds workflowby f321x · 699603b0 · May 26, 2026 · 3 filesMessage 80 · StrongInformational 15Details
Commit message · f321x

ci: add GitHub Actions binary builds workflow

Migrates the four Cirrus CI binary build tasks (Windows, Android,
AppImage, and source/source-only tarball) to GitHub Actions. The new
workflow runs only on the nightly cron (02:30 UTC) and workflow_dispatch.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit simply moves Electrum's automated binary build process from one CI service (Cirrus CI) to another (GitHub Actions). It does not change the wallet application code, cryptography, or how users interact with Electrum. The nightly build schedule and produced artifacts (Windows installer, Android APK, AppImage, source tarball) remain the same in substance. There is no indication this introduces a security vulnerability.

Lower-priorityci: add GitHub Actions security review workflowby f321x · ddde0f09 · May 26, 2026 · 2 filesMessage 62 · AdequateInformational 12Details
Commit message · f321x

ci: add GitHub Actions security review workflow

62/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Names security-relevant behavior explicitly! No meaningful explanatory body
AI analysis · Informational 12/100

This commit adds a new GitHub Actions workflow that runs an automated security review on pull requests using Anthropic's Claude Code tool. It is a defensive security measure, not a vulnerability fix. The workflow is intentionally restricted so it only auto-runs for trusted maintainers; external contributors must trigger it manually after review. The change also updates the existing Python review script to read GitHub Actions environment variables instead of Cirrus CI variables.

Lower-priorityci: add GitHub Actions locale workflowby f321x · 9e809f2b · May 26, 2026 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · f321x

ci: add GitHub Actions locale workflow

Migrate the "locale: upload to crowdin" task from .cirrus.yml to a
GitHub Actions workflow. Triggers on pushes to master (mirroring the
Cirrus only_if condition) plus workflow_dispatch for manual runs.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
documentation-only discounttranslation-only discount
AI analysis · Informational 15/100

This commit adds a new GitHub Actions automation file that uploads translation files to Crowdin whenever code is pushed to the master branch. It does not change any wallet, payment, or network code, and it does not introduce any obvious security issue. It is a routine infrastructure migration from one CI service (Cirrus) to another (GitHub Actions).

Lower-priorityci: add GitHub Actions submodule check workflowby f321x · 93acf901 · May 26, 2026 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · f321x

ci: add GitHub Actions submodule check workflow

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit adds a new automated CI workflow that runs a submodule-checking script whenever a Git tag is pushed. It does not change application code, fix a bug, or alter security behavior of the Electrum wallet itself. It is purely an internal testing/verification automation addition.

Lower-priorityci: add GitHub Actions regtest workflowby f321x · ffdd1f42 · May 26, 2026 · 1 fileMessage 90 · StrongInformational 15Details
Commit message · f321x

ci: add GitHub Actions regtest workflow

Migrates the 'Regtest functional tests' Cirrus CI task to GitHub Actions,
running on ubuntu-24.04. Caches the bitcoind binary and libsecp256k1
build, starts bitcoind and electrumx in the background, and uploads
wallet artifacts plus dumps service logs on failure.

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
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit adds a new GitHub Actions workflow file that runs Electrum's automated regtest (regression testing) functional tests on every push, pull request, and tag. It does not change any application code, wallet logic, or network behavior. It is purely a CI/CD infrastructure addition.

Lower-priorityci: add GitHub Actions tests workflowby f321x · b3986341 · May 26, 2026 · 1 fileMessage 90 · StrongInformational 15Details
Commit message · f321x

ci: add GitHub Actions tests workflow

Replaces the Cirrus CI tasks (flake8 mandatory, flake8 non-mandatory,
ban-unicode, unittests across Python 3.10-3.14 + 3.14 debug, and
unittests with frozen deps) with a single .github/workflows/tests.yml.

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
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit adds a new GitHub Actions configuration file that automatically runs code-quality checks and unit tests when code is pushed or a pull request is opened. It does not change any application code, user-facing behavior, or security-sensitive logic. It is purely an infrastructure change to the project's continuous integration (CI) system.

Lower-prioritysetup.py: "qml_gui" extra: restrict pyqt to "6.10.x"by SomberNight · 33e67fda · May 25, 2026 · 1 fileMessage 81 · StrongInformational 20Details
Commit message · SomberNight

setup.py: "qml_gui" extra: restrict pyqt to "6.10.x"

I had misunderstood how "~=" works.
Previous meant >=6.10, but any 6.x.
While I actually wanted 6.10.0<=v<6.11.

follow-up 96a3345ab5a3c41c89b4b5bac2d8bde12d753392

ref https://peps.python.org/pep-0440/#compatible-release

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 · Informational 20/100

This commit tightens a Python package version pin. The developer had accidentally allowed any PyQt 6.x release (e.g., 6.11, 6.12) to be installed for the optional QML GUI, when they only wanted the 6.10.x line. The change itself is a preventive dependency fix, not a patch for an active vulnerability in Electrum's code. It reduces the risk that a future, incompatible, or buggy PyQt release could break or destabilize the QML GUI.

Lower-priorityci: security review: increase timeout: 20 -> 60 minby f321x · 87ca59e5 · May 25, 2026 · 1 fileMessage 90 · StrongInformational 15Details
Commit message · f321x

ci: security review: increase timeout: 20 -> 60 min

Large diffs or complex contexts can take a long time to review.
If the timeout kicks in too early the ressources Claude used are wasted.

90/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
AI analysis · Informational 15/100

This commit simply increases the timeout for an automated security review script from 20 minutes to 60 minutes. It does not change any wallet, networking, or cryptographic code that could affect users. There is no security vulnerability here.