EL
← All projectsElectrum

Electrum

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

BitcoinSoftware walletsNormal
Repository coverage

935 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.

67security candidates208second-pass queue929AI analyses
61commits · 30 days
115commits · 60 days
465commits · 180 days
931commits · 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.

65/100 average clarity
194Strong · 80–100
415Adequate · 60–79
287Thin · 40–59
39Opaque · 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.
ThomasV73272156
SomberNight35226350063
f321x37121371070
Sander van Grieken991098057
user323062
Roman Zeyde515053
Sasha Zykov414076
Aaron Fiore414068
ghost43312068
Róbert Nagy111098
Ferdinando Ametrano111096
Felix302074
Analysis record

Published AI watches

Last scanned 18 minutes ago

Informational 15 AI analysisMessage 63 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10816 from accumulator/qml_auth_log_improvement

This commit is a minor logging cleanup in the mobile/QML authentication helper. It changes the wording and placement of debug/error log messages so they reveal the function name only after safely retrieving it, and avoids logging a raw tup…

8dddae68by ghost43+4−41 file
No security note in commit
Moderate 51 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10798 from SomberNight/202608_base43

This commit fixes a performance weakness in Electrum's handling of large Bitcoin transactions encoded in 'base43'. The base43 encoding and decoding functions run in quadratic time, meaning the work grows much faster than the input size. An…

Quadratic-time base43 encode/decode can be triggered on attacker-controlled inputDenial-of-service via CPU exhaustion / UI freeze on large transaction stringsInput-length cap added as a defensive guard, not a full algorithmic fix
0e9f1a0dby Felix+25−92 files
No security note in commit
Low 41 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10799 from SomberNight/202608_android_secure_window

This update tightens a privacy feature on Electrum's Android app that prevents the screen from being captured while sensitive Bitcoin private keys or seed phrases are visible. Before, the protection could be accidentally turned off when mu…

Adds visibility-gated secureWindow bindings to protect WIF keys and seed phrasesPrevents secureWindow from being cleared when multiple sensitive dialogs are stackedTargets Android screenshot/recents-thumbnail protection surface
4622390cby accumulator+17−05 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 98 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

docs: add Coldcard Mk3 seed-entropy security notice to plugin README (#10805)

This commit only adds a documentation warning to Electrum's Coldcard plugin README. It does not change any executable code, cryptographic logic, or wallet behavior. The warning tells users that Coldcard/Coinkite disclosed a firmware bug in…

Documentation-only changeReferences an external hardware-wallet firmware advisoryNo code, cryptography, or plugin behavior modified
2c2a40b6by Róbert Nagy+4−01 file
Vendor flagged security relevance
Low 48 AI analysisMessage 81 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

qml/android: protect WIF keys from screenshots in more places

This commit tightens screen-shot protection for private Bitcoin wallet keys (WIF keys and seed phrases) in Electrum's Android/QML user interface. It also fixes a bug where one screen (AddressDetails) was leaving the 'secure window' flag pe…

Adds FLAG_SECURE-style screenshot protection to additional private-key dialogsFixes a bug where secureWindow was never unset in AddressDetailsUses QML Binding 'when' with restoreMode semantics to handle stacked secure dialogs safely
739cba5dby SomberNight+17−05 files
Vendor flagged security relevance
Moderate 60 AI analysisMessage 92 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

lnpeer: chan_reest: ctn overflow: force-close instead of disconnect

This commit fixes a bug in Electrum's Lightning Network code. Previously, if a malicious or malfunctioning peer sent a channel re-establishment message with extremely large commitment numbers (over 2^48), the local program would hit an int…

Addition of explicit overflow check on untrusted peer-supplied commitment countersReplacement of assertion-failure/disconnect behavior with force-close on misbehaviorNew test cases for ctn overflow in both next_local_ctn and oldest_unrevoked_remote_ctn
b3e441f8by SomberNight+22−32 files
No security note in commit
Informational 18 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Merge pull request #10791 from SomberNight/202608_wallet_sign_message2

This change moves the trimming of leading/trailing spaces in message-signing fields from the user-interface code into the shared wallet code. For the graphical interfaces (Qt and QML), spaces are still stripped automatically for convenienc…

Behavior change in message signing/verification input handlingCLI now preserves whitespace, which could affect signature validity for messages that intentionally contain leading or trailing whitespaceNo memory-safety, cryptographic, or authentication flaw visible in the diff
b1aa52d7by ghost43+27−185 files
No security note in commit
Informational 19 AI analysisMessage 96 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

wallet: sign_message: strip whitespaces in GUIs, do not strip in CLI

This commit tidies up how Electrum handles extra spaces around Bitcoin addresses, messages, and signatures when signing or verifying messages. Previously, different parts of the program (desktop GUI, mobile-style GUI, command line) behaved…

Behavior normalization across GUI and CLI interfacesNo cryptographic primitive changedNo privilege boundary crossed
4c3064f5by SomberNight+27−185 files
No security note in commit
Informational 22 AI analysisMessage 50 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

wallet: decrypt_message: nicer error msg if pubkey is unrelated

This commit improves the error handling in Electrum's message decryption feature. Previously, if a user tried to decrypt a message using a public key that did not belong to their wallet, the code could proceed and likely fail with a confus…

Input validation added for public key before cryptographic operationUser-facing exception replaces potential internal failureDefensive check prevents use of unrelated key material
92e938f4by SomberNight+5−01 file
No security note in commit
Informational 16 AI analysisMessage 83 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

qt: main_window: use TaskThread for each of sign/verify/encrypt/decrypt

This commit moves four message-crypto operations (sign, verify, encrypt, decrypt) in Electrum's Qt wallet window onto a background worker thread so they all behave the same way. It also lets the background thread surface user-facing errors…

Moved blocking wallet crypto calls off the GUI thread, reducing UI freeze / DoS surfaceRemoved local exception swallowing for encrypt_message; errors now propagate through the window's on_error handlerAdded defensive RuntimeError guard for deleted Qt widget in async callback
4a9a199fby SomberNight+28−151 file
No security note in commit
Low 29 AI analysisMessage 35 · Opaque
EL ElectrumElectrum BitcoinSoftware wallets

wallet: sign_message: force kwargs

This commit changes how Electrum's message-signing function is called so that callers must explicitly name each argument (address, message, password) rather than passing them by position. The main practical effect is to prevent accidental …

API hardening: keyword-only arguments prevent positional argument swapNo explicit security bug fix or vulnerability disclosure in commit message or diffNo changes to cryptographic logic, password handling, or message parsing
e1eb2a34by SomberNight+9−44 files
No security note in commit
Low 39 AI analysisMessage 45 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

wallet: sign_message: consolidate checks from UIs

This commit moves input-validation checks for signing, verifying, encrypting, and decrypting messages out of the user-interface code and into the shared wallet logic. It also adds type checks so that non-text inputs are rejected earlier. T…

Input validation moved from UI controllers into core wallet logicType checks added at the CLI command entry points for message-crypto operationsUserFacingException used consistently for address, wallet, script-type, and key-format errors
48893760by SomberNight+89−396 files
No security note in commit
Low 27 AI analysisMessage 50 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

wallet: decrypt_message: consolidate checks from UIs

This commit moves input-validation and wallet-type checks for message decryption out of the user-interface and command-line layers and into the core wallet code. It also removes a faster, separate decryption path for imported wallets so al…

Input validation consolidated into a single core methodWatching-only wallet check moved from UI to wallet layerMultisig wallet unsupported-operation check moved from UI to wallet layer
9a0cc0d6by SomberNight+25−173 files
No security note in commit
Informational 15 AI analysisMessage 50 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

wallet: refactor: add encrypt_message method, consolidated from UIs

This commit is a simple code cleanup: it moves the message-encryption logic from two separate places (the command-line tool and the Qt graphical interface) into a single shared method on the wallet class. The actual encryption behavior is …

No change to cryptographic primitives or parametersNo change to trust boundaries or input sourcesPure refactor consolidating duplicate code
5e9c8df0by SomberNight+26−183 files
No security note in commit
Informational 13 AI analysisMessage 50 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

wallet: refactor: add verify_message method, consolidated from UIs

This commit is a routine code cleanup: it moves message-signature verification out of three user-interface files into a single shared helper method in the wallet module. There is no security-relevant behavior change visible in the diff. Th…

No security-relevant functional changeRefactoring only: code deduplicationException handling broadened safely (ValueError covers binascii.Error and unicode errors)
ff5bbb04by SomberNight+26−304 files
No security note in commit
Informational 15 AI analysisMessage 60 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

qt: main_window: add type hints to sign/verify, encrypt/decrypt

This commit only adds Python type hints and renames some function parameters for clarity in the Electrum desktop wallet's sign/verify and encrypt/decrypt message dialogs. It does not change what the code actually does, how it processes use…

0906fc20by SomberNight+45−181 file
No security note in commit
Informational 18 AI analysisMessage 50 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

coldcard: fix get_soft_device_id() discarding its return value

This is a tiny one-line bug fix in Electrum's Coldcard hardware wallet plugin. A helper method that is supposed to fetch a software-based device identifier was calling the parent implementation but accidentally throwing away the result ins…

Missing return value causes method to always return NoneAffects hardware wallet device identification onlyNo change to signing, encryption, or authentication code
d7500508by Felipe Micaroni Lalli+1−11 file
No security note in commit
Informational 19 AI analysisMessage 96 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

qml: strip whitespace from message before signing, as in qt gui

This commit fixes a minor consistency bug in Electrum's newer QML (mobile-style) user interface. When signing a message, the app now removes accidental spaces at the start or end of the message and address, just like the older desktop Qt i…

Behavioral inconsistency between GUI implementations could cause user confusion or failed verificationNo cryptographic weakness introduced; change is input normalizationNo memory-unsafe code, no privilege changes, no network changes
72507328by Ferdinando Ametrano+3−01 file
No security note in commit
Low 48 AI analysisMessage 85 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

config: don't save "hidden wallet" paths in CURRENT_WALLET cv

This commit fixes a privacy leak in the Electrum wallet app. Previously, if a user opened a 'hidden wallet' (one whose filename starts with a dot, like a secret file), Electrum would remember it as the last-used wallet and could reopen it …

Privacy leak: hidden wallet filename persisted in config and could be auto-reopenedInformation disclosure: hidden wallet path exposed in recently-opened listBehavioral fix: setter silently drops sensitive value rather than persisting it
c43cf8e4by SomberNight+14−23 files
No security note in commit
Low 28 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

lnrouter: liquidity hints: add extra penalty if amt near cannot_send

This commit tweaks how Electrum's Lightning Network payment routing avoids channels where a previous payment attempt already failed. Previously, the router would treat a channel almost at its known failure limit almost the same as a channe…

Routing/liquidity-hint logic changed to penalize amounts close to a known cannot_send thresholdAdds defensive assertions on num_inflight_htlcs type and rangeSelf-described by author as a 'completely naive bandaid' / heuristic improvement
ee75ea31by SomberNight+12−21 file
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-prioritytests: lnpeer: test_mpp_cleanup_after_expiryby f321x · f35b3538 · Nov 27, 2025 · 1 fileMessage 68 · AdequateInformational 12Details
Commit message · f321x

tests: lnpeer: test_mpp_cleanup_after_expiry

1. Alice sends two HTLCs to Bob, not reaching total_msat,
and eventually they MPP_TIMEOUT
2. Bob fails both HTLCs
3. Alice then retries and sends HTLCs again to Bob, for the same RHASH,
this time reaching total_msat, and the payment succeeds

Test that the sets are properly cleaned up after MPP_TIMEOUT
and the sender gets a second chance to pay the same invoice.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 12/100

This commit only adds a new automated test for the Electrum Lightning wallet. It checks that when a multi-part payment times out because not enough money arrived, the leftover payment records are cleaned up so the sender can try paying the same invoice again. There is no change to production code, so users are not directly affected by this commit.

Lower-prioritytests: lnpeer: test_dont_settle_partial_mpp_trigger_with_invalid_cltv_htlcby f321x · a91f7c51 · Nov 27, 2025 · 1 fileMessage 65 · AdequateInformational 12Details
Commit message · f321x

tests: lnpeer: test_dont_settle_partial_mpp_trigger_with_invalid_cltv_htlc

Adds unittest to verify that lnpeer doesn't settle any htlcs of
incomplete mpp.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 12/100

This commit only adds a new automated test to Electrum's Lightning code. It does not change any production code, so it cannot by itself introduce or fix a security vulnerability in running software. The test checks a corner case in multi-part Lightning payments to make sure a bug (settling part of an incomplete payment) does not occur.

Lower-prioritytests: lnpeer: test_reject_multiple_payments_of_same_invoiceby f321x · a7de8de5 · Nov 27, 2025 · 1 fileMessage 65 · AdequateInformational 12Details
Commit message · f321x

tests: lnpeer: test_reject_multiple_payments_of_same_invoice

Test that lnpeer rejects incoming htlcs for payments that have already
been paid so invoices cannot be paid twice.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 12/100

This commit only adds a new automated test to Electrum's Lightning code. It checks that the software rejects attempts to pay the same invoice twice. There is no change to the actual wallet or Lightning logic, so by itself this commit does not fix or introduce a security issue. It may be related to a prior bug fix, but the commit message and diff do not describe one.

Lower-prioritytests: lnpeer: test_reject_payment_for_expired_invoiceby f321x · 7840df2e · Nov 27, 2025 · 1 fileMessage 65 · AdequateInformational 12Details
Commit message · f321x

tests: lnpeer: test_reject_payment_for_expired_invoice

Test that lnpeer is rejecting incoming htlcs for invoices that are
already expired.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 12/100

This commit only adds a new automated test to Electrum's Lightning networking code. The test checks that the software correctly refuses payments for expired invoices. It does not change any production code, so it cannot by itself introduce or fix a security issue in running software.

Lower-prioritytests: lnpeer: test_reject_invalid_min_final_cltv_deltaby f321x · da5f5990 · Nov 27, 2025 · 1 fileMessage 73 · AdequateInformational 12Details
Commit message · f321x

tests: lnpeer: test_reject_invalid_min_final_cltv_delta

Add `test_reject_invalid_min_final_cltv_delta` which is supposed to test
that the peer rejects incoming htlcs with final cltv delta differing
from what has been requested in the lightning invoice.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 12/100

This commit only adds a new automated test to Electrum's Lightning code. The test checks that a payment is rejected when the sender uses a shorter safety window (called 'final cltv delta') than the receiver's invoice requested. There is no change to production code, so by itself this commit does not fix or introduce a security issue. It may be related to a prior or future fix, but this commit alone is just a test.

AI review queuedlnpeer/lnworker: refactor htlc_switchby f321x · 0f314d1d · Nov 27, 2025 · 11 filesMessage 58 · ThinModerate 59Details
Commit message · f321x

lnpeer/lnworker: refactor htlc_switch

refactor `htlc_switch` to new architecture to make it more robust
against partial settlement of htlc sets and increase maintainability.
Htlcs are now processed in two steps, first the htlcs are collected into
sets from the channels, and potentially failed on their own already.
Then a second loop iterates over the htlc sets and finalizes only on
whole sets.

# Conflicts:
# electrum/lnpeer.py

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 59/100

This is a large internal refactor of Electrum's Lightning code that handles incoming multi-part payments (MPP). The change restructures how individual HTLCs are collected into sets and how those sets are validated, forwarded, or settled. The commit message frames it as improving robustness and maintainability, not as a security fix. The diff shows new consistency checks for trampoline onions, stricter state transitions for payment sets, and a wallet database upgrade to migrate old state. There is no vendor statement that this fixes a known vulnerability, and no CVE or researcher attribution is present in the supplied materials.

Lower-priorityswaps: followup 10303by f321x · 3d0ba336 · Nov 27, 2025 · 1 fileMessage 51 · ThinLow 35Details
Commit message · f321x

swaps: followup 10303

small followup replacing tx height integers with const variables and
considering claim tx broadcast too if there is an unconfirmed parent
(height -1).

51/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides detailed explanatory context
AI analysis · Low 35/100

This is a small cleanup change in Electrum's submarine swap (atomic swap) code. It replaces hardcoded transaction height numbers with named constants and slightly adjusts when a claim transaction can be broadcast. The change allows a claim transaction to be considered 'already broadcast' even if its parent transaction is still unconfirmed. This is a follow-up to a previous change and appears aimed at preventing duplicate broadcasts or premature broadcasting, not at introducing a vulnerability.

Lower-priorityFix: For inner trampoline onions amt_to_forward can be larger than the htlc amountby f321x · 41d391a6 · Nov 27, 2025 · 2 filesMessage 100 · StrongModerate 61Details
Commit message · f321x

Fix: For inner trampoline onions amt_to_forward can be larger than the htlc amount

Add unittest to TestPeerForwarding which sends a multi trampoline
payment.

Wait another htlc_switch iteration in tests because trampolines might have different delays

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
AI analysis · Moderate 61/100

This commit fixes a bug in Electrum's Lightning Network code where multi-trampoline payments could incorrectly fail. In normal payments, the amount specified inside the onion must match the HTLC amount. But for trampoline routing, an inner trampoline onion can legitimately request a larger amount than the current HTLC because the payment is split across multiple trampoline forwarders. The old code enforced the strict match check even for these inner trampoline onions, causing valid payments to be rejected with a 'final incorrect HTLC amount' error. The fix moves the check into a method that only applies to final (non-trampoline-forwarding) HTLCs and skips it for inner trampoline onions.

Lower-priorityqml: (trivial) QEConfig.formatMilliSats: conv unused fallback to assertby SomberNight · bc2bd485 · Nov 27, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · SomberNight

qml: (trivial) QEConfig.formatMilliSats: conv unused fallback to assert

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

This is a tiny code cleanup in Electrum's QML (mobile-style) user interface. A function that formats tiny Bitcoin amounts used to silently return '---' if it received an unexpected input type. The change removes that fallback and instead adds an assertion that will crash the program if the wrong type is ever passed. This is a defensive coding change, not a security fix, and it does not introduce a vulnerability.

Lower-priorityln: fix race when doing concurrent ln paymentsby f321x · 196cc33c · Nov 27, 2025 · 2 filesMessage 68 · AdequateLow 37Details
Commit message · f321x

ln: fix race when doing concurrent ln payments

There is a race when initiating multiple lightning payments concurrently
(e.g. when doing a reverse swap with prepayment + swap payment).
suggest_splits might overallocate
split amounts for a channel as the splitting of both invoice amounts runs
concurrently and before acutal htlcs that reduce the channels balance
have been added to the channel yet. This results in a "not
enough balance" PaymentFailure once we try to send the htlcs and the
other payment attempt already reduced the available balance of the
channel.

This fix takes a lock from splitting the amount until the htlcs are
put on the channel, so suggest_splits always acts on the correct channel
balance.

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

This commit fixes a timing bug in Electrum's Lightning payments. If a user started multiple Lightning payments at the same time, the wallet could plan routes using outdated channel balances, promising more money than was actually available. When the payments were then sent, one would fail with a 'not enough balance' error. The fix adds a lock so that balance checks and route creation happen one payment at a time, preventing the stale-balance problem.

Lower-priorityrun_electrum: proxy command line option implies proxy enabled (fixes #10324)by Sander van Grieken · 3a9e3848 · Nov 27, 2025 · 1 fileMessage 58 · ThinLow 49Details
Commit message · Sander van Grieken

run_electrum: proxy command line option implies proxy enabled (fixes #10324)

58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
AI analysis · Low 49/100

This commit fixes a bug where users who typed a proxy setting on the command line could believe their traffic was being routed through that proxy, but Electrum was not actually enabling proxy mode. The fix makes specifying a proxy automatically turn proxy mode on. If left unfixed, a user might leak network traffic outside their intended proxy, which matters for privacy but is not a direct remote exploit.

Lower-priorityqml: show lightning invoice amounts with msat precision, allow msat precision entry for no-amount lightning invoicesby Sander van Grieken · c519083b · Nov 27, 2025 · 4 filesMessage 50 · ThinInformational 18Details
Commit message · Sander van Grieken

qml: show lightning invoice amounts with msat precision, allow msat precision entry for no-amount lightning invoices

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

This commit changes the mobile/QML user interface of the Electrum Bitcoin wallet so that Lightning invoice amounts are shown and entered with millisecond precision (one-thousandth of a satoshi) instead of whole satoshis. It is a precision/usability improvement for the QML GUI, not a fix for a vulnerability. There is no indication in the commit that this resolves a security issue.

Lower-priorityqml: refactor invoice amount checks, msat precision for lightning. add qeconfig unit tests for conversion methods.by Sander van Grieken · 93c9dd9d · Nov 27, 2025 · 3 filesMessage 75 · AdequateLow 32Details
Commit message · Sander van Grieken

qml: refactor invoice amount checks, msat precision for lightning.
add qeconfig unit tests for conversion methods.

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

This commit fixes a precision bug in Electrum's mobile/QML interface when handling very small Lightning payments. Previously, amounts were rounded to whole satoshis too early, which could cause the app to reject valid Lightning invoices that require millisecond-precision amounts, or to miscalculate whether the user has enough balance. The change also cleans up duplicate balance-check code and adds unit tests.

Lower-prioritysimple_config: factor out self.decimal_point and self.get_decimal_point() in favor of self.BTC_AMOUNTS_DECIMAL_POINTby Sander van Grieken · 0f2a41e0 · Nov 27, 2025 · 8 filesMessage 50 · ThinInformational 15Details
Commit message · Sander van Grieken

simple_config: factor out self.decimal_point and self.get_decimal_point() in favor of self.BTC_AMOUNTS_DECIMAL_POINT

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

This is a routine internal code cleanup in Electrum's settings module. It replaces an old shortcut property (`self.decimal_point`) and its getter method with direct use of a configuration variable (`self.BTC_AMOUNTS_DECIMAL_POINT`). The behavior is unchanged; there is no security issue visible in the commit.

Lower-priorityqeconfig: fix btc amount regex, add msat regex property, add regex testsby Sander van Grieken · e137c888 · Nov 27, 2025 · 2 filesMessage 60 · AdequateLow 25Details
Commit message · Sander van Grieken

qeconfig: fix btc amount regex, add msat regex property, add regex tests

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Low 25/100

This commit tightens a Bitcoin amount input validation regex used in Electrum's QML (mobile/desktop) GUI. The old regex lacked start (^) and end ($) anchors, meaning it could match invalid strings that merely contained a valid-looking number somewhere inside. The fix anchors the pattern and makes the decimal fraction optional. A new variant for milli-satoshi precision is also added, along with unit tests. The practical security impact is limited because the regex is only one layer of validation and likely used for UI feedback rather than final payment authorization.

Lower-priorityqt: move pubkey_to_q_icon in qt.utilby f321x · 3b80795e · Nov 27, 2025 · 3 filesMessage 60 · AdequateInformational 15Details
Commit message · f321x

qt: move pubkey_to_q_icon in qt.util

Move the pubkey_to_q_icon utility function from qt.swap_dialog in
qt.util.

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

This commit is a simple code cleanup: it moves a small helper function that creates a colored icon from a public key from one file to a shared utility file. There is no change in behavior, no bug fix, and no security relevance.

Lower-priorityqt: expose swaps to address as Submarine Paymentsby f321x · 8a70fdcb · Nov 27, 2025 · 7 filesMessage 68 · AdequateLow 27Details
Commit message · f321x

qt: expose swaps to address as Submarine Payments

Exposes reverse submarine swaps to an external/specific address in the
TxEditor gui as "Submarine Payments". The user can enter a onchain
address in the Send Tab and then pay it from the lightning balance in
the send tab by enabling the Submarine Payments option in the TxEditor
dialog menu and switching to the Submarine Payment tab in the Tab bar.

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

This commit adds a new optional feature in Electrum's desktop (Qt) GUI called 'Submarine Payments'. It lets users pay a regular on-chain Bitcoin address directly from their Lightning balance by doing a reverse submarine swap through a third-party swap provider. The change is a feature addition, not a fix for a known vulnerability. It exposes existing swap logic in the transaction editor and adds UI controls, configuration, and cleanup handling. There is no direct evidence in the commit or supplied references that this resolves a security bug or introduces a new attack.

AI review queuedswaps: allow reverse swaps to external addressby f321x · a0455f83 · Nov 27, 2025 · 3 filesMessage 68 · AdequateLow 29Details
Commit message · f321x

swaps: allow reverse swaps to external address

Implement logic to claim a reverse swap funding output to any given
address. This allows to do onchain payments to external recipients
through a submarine swap.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 29/100

This commit adds a feature to Electrum that lets users route reverse submarine swaps to an external Bitcoin address, effectively turning a Lightning payment into an on-chain payment to someone else. The change renames a database field, adds wallet-upgrade logic, and introduces a new code path that builds and broadcasts a claim transaction. There is no direct evidence in the commit of a security vulnerability, but the new code handles private keys, transaction signing, and broadcasting, so it is a sensitive area worth reviewing carefully.

Lower-prioritylnonion: add OnionFailureCode.from_int() helperby SomberNight · d7bc6170 · Nov 26, 2025 · 1 fileMessage 45 · ThinInformational 14Details
Commit message · SomberNight

lnonion: add OnionFailureCode.from_int() helper

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

This commit is a small internal code cleanup in Electrum's Lightning network code. It moves an existing conversion of raw integer failure codes into a named helper method, without changing behavior. There is no user-facing or security-relevant change.

Lower-prioritylnonion: work around immutability of OnionHopsDataSingleby Sander van Grieken · 30f2bc9e · Nov 25, 2025 · 1 fileMessage 50 · ThinLow 32Details
Commit message · Sander van Grieken

lnonion: work around immutability of OnionHopsDataSingle

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

This commit fixes a bug where the code tried to modify a data object that had been made read-only (immutable). The fix creates a new copy of the object with the needed changes instead of changing the original. This is a defensive repair to prevent runtime errors, not a clear-cut security patch, though immutability violations can sometimes hide or cause subtle bugs in payment routing.

Lower-priorityonion_message: move encrypt_onionmsg_tlv_hops_data() to lnonion as encrypt_hops_recipient_data() and add support payloads other than onionmsg_tlvby Sander van Grieken · 23d5ed87 · Nov 25, 2025 · 3 filesMessage 73 · AdequateInformational 15Details
Commit message · Sander van Grieken

onion_message: move encrypt_onionmsg_tlv_hops_data() to lnonion as encrypt_hops_recipient_data()
and add support payloads other than onionmsg_tlv

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

This commit is a straightforward internal code refactor. It moves a helper function that encrypts routing data from one file to another, renames it, and generalizes it so it can handle two slightly different data formats. There is no indication it fixes a security bug or introduces a vulnerability.

Lower-prioritylnonion: add helper properties minor refactoringby f321x · a6e103b6 · Nov 25, 2025 · 3 filesMessage 65 · AdequateInformational 12Details
Commit message · f321x

lnonion:
add helper properties
minor refactoring

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

This commit is a straightforward internal cleanup in Electrum's Lightning Network code. It adds helper properties to make reading onion packet fields more consistent and slightly reorders how payment data is assembled. There is no indication it fixes a security bug or introduces a vulnerability.

AI review queuedadd helper method: run_htlc_switch_iterationby f321x · c65ec6b2 · Nov 25, 2025 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · f321x

add helper method: run_htlc_switch_iteration

no code modification, indent-only

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 pure code restructure: it extracts the inner body of Electrum's Lightning HTLC switching loop into a new private helper method named `_run_htlc_switch_iteration`. The commit message explicitly says 'no code modification, indent-only', and the diff matches that claim. There are no functional changes, no security fixes, and no new behavior introduced.

Lower-priorityremove plugin payserver (moved to spesmilo/electrum-payserver)by ThomasV · d36b753c · Nov 25, 2025 · 6 filesMessage 50 · ThinInformational 15Details
Commit message · ThomasV

remove plugin payserver (moved to spesmilo/electrum-payserver)

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

This commit simply deletes the 'payserver' plugin from the Electrum repository and moves it to a separate project. There is no security fix or vulnerability patch here—just code relocation.

Lower-priorityfix tests: follow-up prevby SomberNight · 4fedab8b · Nov 21, 2025 · 1 fileMessage 55 · ThinInformational 15Details
Commit message · SomberNight

fix tests: follow-up prev

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

This is a tiny follow-up patch to a test file only. It changes one expected value in a unit test from the integer 1 to the raw byte string b"\x01" so the test correctly matches what the actual code returns. It does not change any production code, network behavior, or wallet logic, and has no security relevance.