EL
← All projectsElectrum

Electrum

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

BitcoinSoftware walletsNormal
Repository coverage

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

66security candidates208second-pass queue928AI analyses
59commits · 30 days
114commits · 60 days
463commits · 180 days
929commits · 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
413Adequate · 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
Róbert Nagy111098
Ferdinando Ametrano111096
Felix302074
Ilya Artemov202050
Analysis record

Published AI watches

Last scanned 48 minutes ago

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
Moderate 52 AI analysisMessage 93 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

lnwallet: don't blacklist htlc failures without channel update

This change fixes how Electrum's Lightning wallet reacts when a payment route fails but the failing node no longer provides a channel update message, as now allowed by the Lightning protocol spec. Previously, Electrum would permanently bla…

Denial-of-service via over-blacklisting: prior behavior could cause legitimate channels to be blacklisted, degrading payment success and potentially isolating the wallet from usable routes.Spec compliance fix: aligns Electrum with updated Lightning BOLT protocol behavior.No cryptographic bypass or funds theft signal: the change is about routing policy, not key leakage or transaction authorization.
a865e336by f321x+48−142 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-prioritylnchannel: chan.lnworker must now always be set, even in unit testsby SomberNight · c3e373a3 · Jan 5, 2026 · 1 fileMessage 60 · AdequateInformational 16Details
Commit message · SomberNight

lnchannel: chan.lnworker must now always be set, even in unit tests

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

This is a code-cleanup change inside Electrum's Lightning channel handling. It removes the special case where a channel object could exist without a linked Lightning wallet worker (lnworker). Previously, unit tests and some code paths allowed lnworker to be None, which forced many methods to check 'if self.lnworker:' before doing anything. The patch makes lnworker mandatory, simplifies those checks, and adds a developer note that one related cleanup call is currently broken. There is no direct security fix for end users here; it is mostly defensive maintenance that reduces the chance of future bugs in test or edge-case code.

Lower-prioritytests: lnchannel: rewrite create_test_channels to use LNWalletby SomberNight · dfeb9918 · Jan 5, 2026 · 4 filesMessage 60 · AdequateInformational 12Details
Commit message · SomberNight

tests: lnchannel: rewrite create_test_channels to use LNWallet

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

This commit is a test-code refactor that rewrites how fake Lightning channels are created for unit tests so they go through the real wallet code path. It also re-enables a safety assertion in production code that checks a channel's remote payout address belongs to the wallet. There is no direct security fix for end users; it is infrastructure work to make tests more realistic and catch configuration mistakes during development.

AI review queuedtests: lnpeer: fix cyclic lnworker.wallet.lnworker inconsistencyby SomberNight · 17f41044 · Jan 5, 2026 · 4 filesMessage 75 · AdequateInformational 15Details
Commit message · SomberNight

tests: lnpeer: fix cyclic lnworker.wallet.lnworker inconsistency

These better hold, lol:
wallet.lnworker.wallet == wallet
lnworker.wallet.lnworker == lnworker

75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a test-only refactor in the Electrum Bitcoin wallet. It fixes how mock Lightning Network wallets are created in unit tests so that the test objects match the real structure (wallet.lnworker.wallet == wallet and lnworker.wallet.lnworker == lnworker). It does not change production wallet behavior or fix a security vulnerability in shipped code.

Lower-prioritytests: simplify MockLNWallet, add fixme for cyclic inconsistencyby SomberNight · ea42b02c · Jan 5, 2026 · 2 filesMessage 60 · AdequateInformational 11Details
Commit message · SomberNight

tests: simplify MockLNWallet, add fixme for cyclic inconsistency

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

This commit is a test-code cleanup and a small defensive guard in non-production code. It removes an unused mock helper class, simplifies a test wallet constructor, and adds a null check before cancelling an onion-message task group. There is no user-facing security fix here.

Lower-prioritytests: lnpeer: follow-up prev: rm horrible ugly hackby SomberNight · 91b98240 · Jan 5, 2026 · 2 filesMessage 40 · ThinInformational 15Details
Commit message · SomberNight

tests: lnpeer: follow-up prev: rm horrible ugly hack

40/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body! Contains work-in-progress language
AI analysis · Informational 15/100

This commit is a test-only cleanup. It removes a temporary workaround in Electrum's Lightning test suite where test channel objects had their node IDs manually overwritten after creation. The change makes the test helper create channels with the correct wallet/node keys from the start, instead of patching them afterward. There is no change to the actual wallet or Lightning code that users run.

Lower-prioritytests: lnpeer: mostly unify prepare_peers and prepare_graphby SomberNight · ec65c53d · Jan 5, 2026 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · SomberNight

tests: lnpeer: mostly unify prepare_peers and prepare_graph

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

This commit only changes test code. It refactors how Lightning Network peer tests set up their simulated channels and peers, merging two similar helper functions into one. There is no change to the actual Electrum wallet or Lightning code that users run, so it cannot directly affect security of real funds or operations.

Lower-prioritytests: lnpeer: (move-only) towards unifying prepare_{peers,graph}by SomberNight · 024f9b98 · Jan 5, 2026 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · SomberNight

tests: lnpeer: (move-only) towards unifying prepare_{peers,graph}

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

This commit simply moves a helper method used only in tests from one test class to another. No real user-facing code was changed, and there is no security impact.

Lower-prioritytests: lnpeer: simplify tx_queueby SomberNight · 17b79748 · Jan 5, 2026 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · SomberNight

tests: lnpeer: simplify tx_queue

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only changes internal test code for the Electrum Bitcoin wallet. It simplifies how mock transaction queues are created and passed around in Lightning Network peer tests. There is no change to the actual wallet or network code that real users run, so it has no security impact on end users.

Lower-prioritylnpeer: move make_local_config to LNWalletby SomberNight · b292c027 · Jan 5, 2026 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · SomberNight

lnpeer: move make_local_config to LNWallet

no functional changes

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

This commit simply moves a helper method that builds settings for new Lightning channels from one internal file to another. The commit message says 'no functional changes' and the diff confirms that: the same code, same values, and same checks are preserved. There is no user-visible change and no security fix or vulnerability introduced.

AI review queuedlnworker: split LNWallet and LNWorker: LNWallet "has an" LNWorkerby SomberNight · 1006e809 · Jan 5, 2026 · 17 filesMessage 83 · StrongInformational 18Details
Commit message · SomberNight

lnworker: split LNWallet and LNWorker: LNWallet "has an" LNWorker

- LNWallet no longer "is-an" LNWorker, instead LNWallet "has-an" LNWorker
- the motivation is to make the unit tests nicer, and allow writing unit tests for more things
- I hope this makes it possible to e.g. test lnsweep in the unit tests
- some stuff we would previously have to write a regtest for, maybe we can write a unit test for, now
- in unit tests, MockLNWallet now
- inherits LNWallet
- the Wallet is no longer being mocked

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This commit is a large internal refactoring of Electrum's Lightning code. It changes the relationship between a wallet and its Lightning worker so that the wallet 'has' a separate peer manager instead of 'being' one. The main goal is to make unit tests easier and more realistic. There is no obvious security vulnerability introduced, but one safety assertion about wallet ownership of a channel's remote output address was commented out with a 'FIXME' note, which is a small red flag.

Lower-priorityTxEditor: register correct callbackby f321x · 31ac44dd · Jan 5, 2026 · 1 fileMessage 58 · ThinInformational 22Details
Commit message · f321x

TxEditor: register correct callback

on_event_channels_updated doesn't get fired if channels change their
state to OPEN. TxEditor needs to use on_event_channel to notice channels
coming online.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
AI analysis · Informational 22/100

This is a small bug fix in Electrum's Qt transaction editor. The dialog was listening for the wrong event when watching Lightning channels come online, so it could fail to refresh its submarine-swap tab promptly. The fix changes the callback to the correct event. There is no direct evidence this is a security vulnerability; it appears to be a UI responsiveness bug.

Security candidatepsbt_nostr: add EventListener comment to CosignerWalletby f321x · e033a5e6 · Jan 5, 2026 · 1 fileMessage 85 · StrongInformational 15Details
Commit message · f321x

psbt_nostr: add EventListener comment to CosignerWallet

I got confused how on_event_proxy_set can even work if CosignerWallet
doesn't inherit from EventListener until i figured out its children use
the EventListener too. To avoid this confusion i added two comments.

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 boundarysigning or wallet path
AI analysis · Informational 15/100

This commit only adds two explanatory comments to the code. It does not change any behavior, fix any bug, or alter any security mechanism. One comment clarifies that child classes of CosignerWallet must inherit from EventListener and register callbacks; the other notes that callbacks are registered in child classes. It is a documentation-only change.

Security candidatebug: psbt_nostr: set CosignerWallet.pending on aio loopby f321x · 0d380218 · Jan 5, 2026 · 1 fileMessage 73 · AdequateInformational 17Details
Commit message · f321x

bug: psbt_nostr: set CosignerWallet.pending on aio loop

Fixes:
```
Traceback (most recent call last):
File "/home/user/code/electrum-fork/electrum/plugins/psbt_nostr/qt.py", line 149, in on_receive
self.mark_pending_event_rcvd(event_id)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^
File "/home/user/code/electrum-fork/electrum/plugins/psbt_nostr/psbt_nostr.py", line 254, in mark_pending_event_rcvd
self.pending.set()
~~~~~~~~~~~~~~~~^^
File "/usr/lib64/python3.14/asyncio/locks.py", line 192, in set
fut.set_result(True)
~~~~~~~~~~~~~~^^^^^^
File "/usr/lib64/python3.14/asyncio/base_events.py", line 829, in call_soon
self._check_thread()
~~~~~~~~~~~~~~~~~~^^
File "/usr/lib64/python3.14/asyncio/base_events.py", line 866, in _check_thread
raise RuntimeError(
"Non-thread-safe operation invoked on an event loop other "
"than the current one")
RuntimeError: Non-thread-safe operation invoked on an event loop other than the current one
```

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 17/100

This is a bug-fix patch for a crash in Electrum's optional PSBT-over-Nostr plugin. The plugin helps co-signers exchange partially-signed Bitcoin transactions. The crash happened because a background thread tried to update an asyncio synchronization object on the wrong event loop, triggering a RuntimeError. The fix routes that update to the correct asyncio loop. It is a reliability fix, not a security vulnerability, and there is no evidence it can be exploited by an attacker.

Lower-priorityandroid build: bump python version (3.10.18->3.11.14)by SomberNight · adb4f6f2 · Dec 27, 2025 · 3 filesMessage 91 · StrongInformational 15Details
Commit message · SomberNight

android build: bump python version (3.10.18->3.11.14)

Bump the python version used on Android from 3.10 to 3.11.
The substance is the backport of the corresponding commit [0] from upstream p4a.

Tested that apk is still reproducible by doing two full builds.
I also used the apk a bit and it seems to work at runtime. :)

[0]: https://github.com/kivy/python-for-android/pull/2850/commits/78db83223f4f481598343237a6b8788fb4731a00 (which got squashed into https://github.com/kivy/python-for-android/commit/83e74cac0fa230231f63b7d7e4f1e8581fd9e2ce)

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This commit simply updates the version of Python used to build the Electrum Android app from 3.10.18 to 3.11.14. It changes version numbers and cryptographic checksums in build files, and switches to a newer version of the python-for-android build tool. There is no indication of a security vulnerability being fixed or introduced.

Lower-prioritypi: allow emaillike pi with 'lightning:' prefixby f321x · dd1d98e3 · Dec 22, 2025 · 2 filesMessage 68 · AdequateInformational 21Details
Commit message · f321x

pi: allow emaillike pi with 'lightning:' prefix

Lightning addresses with 'lightning:' do occur in the wild and make
sense (how else would e.g. the smartphone know to open a lightning
wallet instead of the e-mail client). So we should allow this.

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

This commit lets Electrum recognize email-style payment identifiers (like user@domain.com) even when they have a 'lightning:' prefix in front. Previously, 'lightning:user@domain.com' would not be treated as a resolvable Lightning address. The change simply strips the prefix before checking if the rest looks like an email address. It is a small usability improvement, not a fix for a known security flaw.

Lower-prioritypi: fix incorrectly parsing emaillike with 'ln' prefixby f321x · 2cd1de4f · Dec 22, 2025 · 2 filesMessage 73 · AdequateLow 46Details
Commit message · f321x

pi: fix incorrectly parsing emaillike with 'ln' prefix

Fixes a bug where we incorrectly parsed emaillike payment identifiers as
bech32 lightning payment identifier if they start with a 'ln' prefix.

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

This commit fixes a bug in Electrum where certain email-like or domain-like payment identifiers that happened to start with the letters 'ln' (such as 'lnbcuser@some.domain') were wrongly treated as Lightning Network invoices. The fix makes the parser check whether the string is actually valid bech32 format before classifying it as a Lightning payment. This could have caused users to send payments to the wrong destination or prevented them from resolving legitimate email/domain payment identifiers.

Lower-priorityandroid: qr scanner: allow tap to focusby f321x · d1368db3 · Dec 22, 2025 · 1 fileMessage 68 · AdequateInformational 20Details
Commit message · f321x

android: qr scanner: allow tap to focus

Allow tap to focus in the android qr scanner as some devices don't
support autofocus. This should allow them to focus on some qr code.

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

This commit adds a 'tap to focus' feature to Electrum's Android QR code scanner. It is a usability improvement for users whose phones lack automatic focus, not a security fix or vulnerability. There are no security signals in the code or commit message.

Lower-priorityandroid: bump barcode scanner versionby f321x · e09794c2 · Dec 22, 2025 · 2 filesMessage 76 · AdequateInformational 18Details
Commit message · f321x

android: bump barcode scanner version

Bumps the BarcodeScannerView and zxing++ version which allows us to
remove the 16kb page alignment patch as this is now done upstream.
Ref https://github.com/spesmilo/electrum/commit/87d82f38c559ef27c7f749dac565a92d984148da

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 18/100

This commit updates the versions of two open-source barcode scanning libraries used in Electrum's Android app and removes a local workaround patch. The removed patch forced the compiled barcode scanner library to use a specific memory page size (16 KB) so it would work on newer Android devices. The upstream library now handles this automatically, so the patch is no longer needed. There is no direct evidence in the commit that this fixes a security vulnerability; it appears to be a routine dependency maintenance change.

Lower-priorityqt: Submarine Payments: update tab on_channels_updatedby f321x · 82c006e0 · Dec 22, 2025 · 1 fileMessage 73 · AdequateInformational 18Details
Commit message · f321x

qt: Submarine Payments: update tab on_channels_updated

Updates the submarine payments tab if the channels get updated so the
user isn't stuck with a liquidity warning if they open the tab before
the channels are initialized (e.g. on wallet startup).

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

This is a small user-interface fix for the Electrum Bitcoin wallet's Qt desktop app. It makes the 'Submarine Payments' tab refresh itself once the user's Lightning channels finish loading, so an outdated liquidity warning doesn't stay on screen. There is no security vulnerability here.

Lower-priorityqt: Add help button to submarine payments tabby f321x · d233e4ff · Dec 22, 2025 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · f321x

qt: Add help button to submarine payments tab

Adds a help button with explanation to the submarine payments tab.

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

This commit only adds a help button with explanatory text to a user interface screen about 'submarine payments' in the Electrum wallet. It is a documentation/user-experience change, not a security fix or vulnerability.

Lower-priorityqt: ConfirmTxDialog: also show Tools textby f321x · 4c44620d · Dec 22, 2025 · 1 fileMessage 88 · StrongInformational 15Details
Commit message · f321x

qt: ConfirmTxDialog: also show Tools text

Also show the `Tools` text besides the preferences icon so it looks
equal to the main window.
Originally this was a followup part of #10300 which got closed
due to other reasons.

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

This commit is a purely cosmetic user-interface change. It adds the word 'Tools' next to the preferences icon in a transaction confirmation dialog so the button matches the main window's appearance. There is no security relevance.

Lower-priorityqt: disable ln configs in ConfirmTxDialog if no lnby f321x · db456062 · Dec 22, 2025 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · f321x

qt: disable ln configs in ConfirmTxDialog if no ln

Disables the lightning related config options in the ConfirmTxDialog
tools and shows an according tooltip if lightning is not available in
the wallet. This should prevent confusion of users.

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 user-interface improvement, not a security fix. It simply grays out two Lightning-related options in the transaction confirmation dialog when the wallet does not support Lightning, and shows a tooltip explaining why. There is no vulnerability being patched.

Lower-priorityqt: disable Submarine Payment tab if not swap_managerby f321x · 93d85a0b · Dec 22, 2025 · 1 fileMessage 65 · AdequateInformational 16Details
Commit message · f321x

qt: disable Submarine Payment tab if not swap_manager

Disable the `Submarine Payments` tab if the swap_manager is None (the
wallet has no lightning support).

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

This commit is a small hardening change in Electrum's Qt wallet interface. It hides the 'Submarine Payment' tab when the wallet does not have Lightning support (swap_manager is missing). Without this guard, the tab could be shown in a state where the underlying swap service is unavailable, which might lead to a confusing or broken user experience rather than a direct theft-of-funds bug.

Lower-priorityqt: channels_list: add tooltip to New Channel btnby f321x · 71bc9af5 · Dec 22, 2025 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · f321x

qt: channels_list: add tooltip to New Channel btn

Adds tooltips to the "New Channel" button so users understand why it is
disabled and what it does when it is enabled.

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Explains rationale or failure mode
AI analysis · Informational 15/100

This commit only adds helpful hover text (tooltips) to the 'New Channel' button in Electrum's user interface. It explains why the button is disabled when Lightning isn't available and what the button does when it is enabled. There is no security change.

Lower-prioritylnpeer: fix callback type hintby f321x · 14977e4c · Dec 19, 2025 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · f321x

lnpeer: fix callback type hint

asyncio.create_task expects a Coroutine, not all Awaitables are
Coroutines.

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

This commit changes only a Python type hint in the Lightning Network peer code. It replaces 'Awaitable' with 'Coroutine' in a function signature annotation to better match what asyncio.create_task expects. Type hints do not affect runtime behavior, so this cannot by itself introduce or fix a security vulnerability. It is a code-quality/correctness improvement for static analysis tools and developers.