EL
← All projectsElectrum

Electrum

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

BitcoinSoftware walletsNormal
Repository coverage

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

64security candidates205second-pass queue164AI analyses
55commits · 30 days
108commits · 60 days
454commits · 180 days
924commits · 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
191Strong · 80–100
409Adequate · 60–79
285Thin · 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.
ThomasV72213156
SomberNight3492559063
f321x3712166070
Sander van Grieken981018057
user322062
Roman Zeyde511053
Sasha Zykov413076
Aaron Fiore411068
Ferdinando Ametrano111096
Oren200043
Ilya Artemov200050
Felipe Micaroni Lalli100050
Analysis record

Published AI watches

Last scanned 57 minutes ago

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
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 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
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
Informational 15 AI analysisMessage 35 · Opaque
EL ElectrumElectrum BitcoinSoftware wallets

hww/qt: followup 898a4c270

This commit simply renames an internal variable from `dialog_label` to `_dialog_label` to mark it as private. It is a minor code cleanup with no visible behavior change and no security relevance.

f3af41deby f321x+4−41 file
No security note in commit
Low 25 AI analysisMessage 68 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

trezor: drop session after closing it

This commit fixes a bug in Electrum's support for Trezor hardware wallets. After a Trezor session times out or is closed, Electrum now forgets the old session ID. Previously it kept the stale session ID, so the next attempt to sign a trans…

Fixes a stale-session reference that caused InvalidSessionError on re-authenticationEnsures PIN re-prompt after session timeout/closureFailure mode was denial-of-service (transaction signing crash), not unauthorized signing
071b1e24by f321x+8−51 file
No security note in commit
Informational 12 AI analysisMessage 83 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

test_lnwallet: add unittest for unchanged channel update from failed htlc

This commit only adds a new unit test to Electrum's Lightning wallet test suite. It checks that when a payment fails due to a temporary lack of liquidity (TEMPORARY_CHANNEL_FAILURE) and the accompanying channel policy update is identical t…

Lightning payment routing failure handling behavior is being testedTEMPORARY_CHANNEL_FAILURE no longer (or is confirmed not to) blacklist channels when the channel update is unchangedLiquidity hints are used as an alternative to blacklisting for retry amounts
1f5b9adbby f321x+61−21 file
No security note in commit
Informational 15 AI analysisMessage 83 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

test_lnwallet: add unittest for single channel mpp split config

This commit adds a new automated test to the Electrum project. It does not change any production wallet or Lightning code. The test verifies that when Electrum splits a multi-part payment across a single channel, all payment parts actually…

14f7fa0bby f321x+22−01 file
No security note in commit
Low 47 AI analysisMessage 80 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

json_db: set_modified after incomplete data

This commit fixes a bug in Electrum's wallet storage recovery. If a wallet file was partially corrupted (a 'patch' was cut off mid-write), the app could recover the old data but then fail to mark the wallet as changed. As a result, later u…

Data-loss / integrity failure in wallet storage recovery pathMissing dirty flag after fallback data recoveryAppend-only storage file not rewritten after corruption cleanup
f75f1958by f321x+22−12 files
No security note in commit
Low 44 AI analysisMessage 58 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

wallet_db: register onion_keys converter

This commit fixes a bug in Electrum's Lightning wallet database handling. After a wallet restart, a specific type of encryption key used in Lightning payments was being loaded as a text string instead of raw bytes. This mismatch could caus…

Type confusion between str and bytes in cryptographic key handlingLightning payment error path affected after wallet restartMissing data converter in wallet database layer
5b2eb060by f321x+2−02 files
No security note in commit
Informational 18 AI analysisMessage 58 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

qml: update ConfirmTxDialog onValidChanged

This is a small user-interface fix for the Electrum mobile/QML app. When sweeping private keys, the confirmation dialog that shows how much money will be moved initially displayed an amount of 0 because it did not refresh after the transac…

bd776e24by f321x+3−01 file
No security note in commit
Informational 18 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

qml: emit a single dataChanged when updating blockchain height

This change is a performance cleanup in Electrum's mobile/QML user interface. When the wallet learns that the Bitcoin blockchain has grown taller, it now refreshes the transaction list with a single 'everything changed' signal instead of s…

No security-relevant logic changePerformance/efficiency optimization onlyNo input validation, parsing, cryptography, or network changes
fbe9e2d8by f321x+8−41 file
No security note in commit
Informational 20 AI analysisMessage 85 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

qml: don't compute notification balance delta for large tx batches

This commit is a performance fix, not a security patch. It stops the Electrum mobile/QML wallet from calculating the total balance change when more than 20 new transactions arrive at once, because that calculation could freeze the user int…

No security-relevant signal present in the diff or commit messagePerformance/DoS mitigation against accidental UI freezing from large transaction batches
7b4759c5by f321x+5−21 file
No security note in commit
Informational 15 AI analysisMessage 60 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

qml: change event callback logs to debug

This commit simply changes two logging messages from 'info' level to 'debug' level in the mobile/QML wallet interface. It reduces routine log output when many transactions occur. There is no security-relevant change.

a6cc4e08by f321x+2−21 file
No security note in commit
Informational 18 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

qml: don't force-build address model from tx event handlers

This is a performance and responsiveness fix for the Electrum mobile/QML wallet. It stops the app from doing heavy work (building the address coin list) every time a new transaction arrives, which was causing the user interface to freeze. …

35fc4a13by f321x+4−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-prioritylnutil: add blinded path feature flagby Sander van Grieken · 7ed84375 · May 12, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Sander van Grieken

lnutil: add blinded path feature flag

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritylnutil: rename LNFC.INVOICE -> BOLT11_INVOICE, add b12 LNFCby f321x · a7e595ef · May 12, 2026 · 5 filesMessage 73 · AdequateTriage 0Details
Commit message · f321x

lnutil: rename LNFC.INVOICE -> BOLT11_INVOICE, add b12 LNFC

Renames the "INVOICE" lightning feature context to "BOLT11_INVOICE"
as there is now a bolt 12 invoice feature context as well that differs.

Also adds 4 new bolt 12 context to the Enum.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-prioritybuild: fix trezor: new trezorlib 0.20 now requires *.dist-info metadataby SomberNight · d6136716 · May 11, 2026 · 3 filesMessage 93 · StrongTriage 0Details
Commit message · SomberNight

build: fix trezor: new trezorlib 0.20 now requires *.dist-info metadata

```
8.16 | W | gui.qt.wizard.wallet.WCChooseHWDevice | error getting device infos for trezor: Library version for 'trezor' is incompatible. // Installed: unknown, Needed: 0.20.0 <= x < 0.21 // Make sure you install it with python3
```

```
>>> trezorlib.__version__
Traceback (most recent call last):
File "<string>", line 1, in <module>
NameError: name 'trezorlib' is not defined
>>> import trezorlib
>>> trezorlib.__version__
Traceback (most recent call last):
File "/tmp/.mount_electrcmMljC/usr/lib/python3.12/importlib/metadata/__init__.py", line 397, in from_name
return next(cls.discover(name=name))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
StopIteration

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/.mount_electrcmMljC/usr/lib/python3.12/site-packages/trezorlib/__init__.py", line 27, in __getattr__
return importlib.metadata.version("trezor")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/.mount_electrcmMljC/usr/lib/python3.12/importlib/metadata/__init__.py", line 889, in version
return distribution(distribution_name).version
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/.mount_electrcmMljC/usr/lib/python3.12/importlib/metadata/__init__.py", line 862, in distribution
return Distribution.from_name(distribution_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/.mount_electrcmMljC/usr/lib/python3.12/importlib/metadata/__init__.py", line 399, in from_name
raise PackageNotFoundError(name)
importlib.metadata.PackageNotFoundError: No package metadata was found for trezor

```

We generally don't bundle the *.dist-info importlib metadata stuff as for many packages, these files are not reproducible.

ref
https://github.com/spesmilo/electrum/commit/aecc22dc081339fb570a7a3b09f3e47bf9ea5021
https://github.com/spesmilo/electrum/commit/c52a29fc221f8fdbe55872084f215478c957010d

(cherry picked from commit f8226f9384369ca30a2c4811cd631eb77719f97e)

93/100 · StrongMessage clarity
✓ Specific, 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
AI review queuedbuild: support blacklisting dependencies for deterministic buildsby matejcik · 74615623 · May 11, 2026 · 4 filesMessage 85 · StrongTriage 0Details
Commit message · matejcik

build: support blacklisting dependencies for deterministic builds

The method works as follows:
1. for every blacklisted dependency, as listed in ghost.txt,
create and install an empty ghost package which will satisfy
the dependency resolver
2. before hash resolution step, remove those ghosts to make hashin happy

This required converting find_restricted_dependencies to use locally
installed package metadata instead of looking it up online on pypi. But
that seems to be a good idea anyway.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
second-pass: broader security terminology
Security candidateUpgrade `trezorlib` to 0.20.1by Roman Zeyde · 0f2fa36e · May 11, 2026 · 4 filesMessage 78 · AdequateInformational 24Details
Commit message · Roman Zeyde

Upgrade `trezorlib` to 0.20.1

Trezor plugin is updated for `trezorlib` 0.20.1 release.

Tested the following scenarios with Trezor 1 (with FW 1.14.0), T, Safe 3 and Safe 5 (with FW 2.10.0):
- create a new wallet:
- generate new seed
- recover from backup
- verify an address
- send & RBF flows
- set a PIN & a passphrase
- open an existing wallet file
- locking the device on exit
- flow cancellation

Safe 7 support will be added in a subsequent PR.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
access control
AI analysis · Informational 24/100

This commit updates Electrum's Trezor hardware wallet plugin to work with a newer version of the trezorlib library (0.20.1). It rewrites how Electrum opens sessions with Trezor devices, especially when passphrases are used. The change is a routine dependency upgrade, but it touches sensitive code that handles private keys and device unlocking. There is no direct evidence in the commit that this fixes a known security vulnerability, but any bug in session or passphrase handling could in principle affect wallet security.

AI review queuedMove StoredDict class into new 'stored_dict' moduleby ThomasV · d0860ed7 · May 11, 2026 · 7 filesMessage 65 · AdequateInformational 15Details
Commit message · ThomasV

Move StoredDict class into new 'stored_dict' module

This commit is only moving code, no functional change

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

This commit simply moves the StoredDict, StoredObject, StoredList, and related helper code from one file (json_db.py) into a brand-new file (stored_dict.py). It then updates other files to import from the new location. The commit message and the diff itself show no changes to how the code works—only where it lives. There is no security fix or vulnerability introduced here.

Lower-priorityci: code review: extend prompt to verify commit message intentby f321x · 6eba49b6 · May 11, 2026 · 1 fileMessage 95 · StrongTriage 0Details
Commit message · f321x

ci: code review: extend prompt to verify commit message intent

Extends the code review CI prompt to verify commit messages are
actually doing what they claim to do. E.g. that a commit specifying
it is only moving code actually does not modify any logic.

95/100 · StrongMessage clarity
✓ Specific, 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
Lower-priorityci: code review: pass commit messages into prompt contextby f321x · 0c52a01a · May 11, 2026 · 1 fileMessage 85 · StrongTriage 0Details
Commit message · f321x

ci: code review: pass commit messages into prompt context

Pass the git commit messages of the reviewed PR into the prompt.
This way claude doesn't have to fetch them manually but has them
in its context right from the beginning.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Lower-priorityqml: InvoiceDialog: rename "Remote Pubkey" -> "Recipient Pubkey"by f321x · bed768e5 · May 11, 2026 · 1 fileMessage 73 · AdequateTriage 0Details
Commit message · f321x

qml: InvoiceDialog: rename "Remote Pubkey" -> "Recipient Pubkey"

"Remote Pubkey" is somewhat misleading in the context of paying a
lightning invoice.
The german translation ("Entfernter öffentlicher Schlüssel") feels
even more out of context.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityregtests: make wait_until_spent more robustby SomberNight · 9a569f3e · May 8, 2026 · 1 fileMessage 90 · StrongTriage 0Details
Commit message · SomberNight

regtests: make wait_until_spent more robust

if `$1` was some garbage value (e.g. the 4-character "null" string coming from jq), the exit code of bitcoin_cli was not tested (it was masked by being part of the while's test condition). Instead now wait_until_spent correctly propagates bitcoin_cli's exit code. (due to `set -e` being set at the top level)

90/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Lower-priorityregtests: swaps: add test for forward-swap success caseby SomberNight · aed6ec14 · May 8, 2026 · 3 filesMessage 83 · StrongTriage 0Details
Commit message · SomberNight

regtests: swaps: add test for forward-swap success case

Previously only the reverse-swaps were tested.
Note that what is reverse for the client, is forward for the server, hence testing different scenarios for reverse-swaps (success case, different failrue cases) already exercises some of the logic of forward-swaps.

However the swap-protocol request construction and validation is specific to swap direction, and that was not exercised for forward-swaps at all prior to this.

(but duplicating the other testcases probably is not worth)

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Lower-priorityutil: ESocksProxy: add fixme for is_proxy_tor raceby SomberNight · eca128a8 · May 8, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · SomberNight

util: ESocksProxy: add fixme for is_proxy_tor race

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritylnpeer: send channel_update on channel_reestablishby f321x · a1d8483d · May 8, 2026 · 1 fileMessage 81 · StrongTriage 0Details
Commit message · f321x

lnpeer: send channel_update on channel_reestablish

If we have forwarding enabled, send a channel_update message to the
peer after a channel_reestablish.
The peer needs to know our channel constraints to receive a payment
(for r_tags or blinded path) and sending it just once on mark_open
might not be enough as the peer could miss it, lose it or it might
get out of date if we'd change our forwarding fees.
See https://github.com/spesmilo/electrum/pull/10630#issuecomment-4390045965.

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 review queuedwallet: encrypt the keystore before adding it to dbby ThomasV · b15be1fa · May 7, 2026 · 2 filesMessage 73 · AdequateHigh 71Details
Commit message · ThomasV

wallet: encrypt the keystore before adding it to db

adding keystore to db may result in a disk write, and we should
never write unencrypted keys to disk (except lightning_xprv)

73/100 · AdequateMessage clarity
✓ Specific, 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 · High 71/100

This commit fixes a bug where Electrum could write unencrypted private keys to disk while creating or restoring a wallet, even when the user asked for password protection. The change rearranges the wallet setup so that the keystore is encrypted before it is placed into the wallet database, and the database storage is encrypted before any writes happen. It also moves the address-import step to happen after the keystore is saved, reducing the chance of plaintext key material touching disk.

Lower-prioritylnworker: fix _get_next_peers_to_try regressionby f321x · cbe97a8c · May 7, 2026 · 3 filesMessage 80 · StrongTriage 0Details
Commit message · f321x

lnworker: fix _get_next_peers_to_try regression

`LNPeerManager._get_next_peers_to_try` would skip all recent peers
if no proxy is enabled due to incorrect operator precedence.
Fixes regression introduced by 79ef429b3.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Lower-prioritycontrib/android/Readme.md: mention build cacheby SomberNight · 9aef60e3 · May 7, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · SomberNight

contrib/android/Readme.md: mention build cache

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
Lower-prioritylnonion: factor out next_blinding_from_shared_secretby Sander van Grieken · 37b6fe3d · May 6, 2026 · 2 filesMessage 55 · ThinTriage 0Details
Commit message · Sander van Grieken

lnonion: factor out next_blinding_from_shared_secret

Factor out the derivation of the next path key/blinding in a
shared function.

Co-Authored-By: f321x <f@f321x.com>

55/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Provides an explanatory body
AI review queuedqewallet: replace some threads with coroutinesby f321x · 0505ef59 · May 6, 2026 · 1 fileMessage 60 · AdequateInformational 12Details
Commit message · f321x

qewallet: replace some threads with coroutines

Allows to simplify a bit and has less overhead.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit is a routine code cleanup in Electrum's mobile/QML user interface. It replaces two background threads with lightweight coroutines (async functions) for broadcasting Bitcoin transactions and paying Lightning invoices. There is no indication this change fixes or introduces a security vulnerability.

Lower-priorityqml: fix userinfo race in Invoice viewby f321x · da53b4eb · May 6, 2026 · 1 fileMessage 68 · AdequateTriage 0Details
Commit message · f321x

qml: fix userinfo race in Invoice view

When paying a lightning invoice there was a race between the
`on_event_payment_succeeded` and `on_event_invoice_status` callbacks.
Depending on which was called last the string at the top
of the invoice view would either say "Paid!" (correct) or
"This invoice was already paid" (technically correct but confusing).
By keeping state if the invoice payment attempt was initiated in this
session the subsequent calls to `update_userinfo` can correctly
determine which string to show.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-prioritylnpeer: send channel update also for private channels, if we are forwardingby ThomasV · ef2f9e33 · May 6, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · ThomasV

lnpeer: send channel update also for private channels, if we are forwarding

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritycreate_channel_backup: handle case where peer_addresses list is emptyby ThomasV · c3e900ef · May 6, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · ThomasV

create_channel_backup: handle case where peer_addresses list is empty

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritybuild: fix regression: support local dev builds also using UID!=1000by SomberNight · b3be2a01 · May 6, 2026 · 4 filesMessage 95 · StrongTriage 0Details
Commit message · SomberNight

build: fix regression: support local dev builds also using UID!=1000

- both "ELECBUILD_COMMIT fresh_clone builds" and "local dev builds"
should work even when the unix user has a different UID than 1000
on the host machine
- though I guess running as root does not work but that's prob ok

issue was:
```
$ echo $UID
1111
$ ./contrib/build-linux/appimage/build.sh
🗯 ERROR: Building outside a git clone is not supported.
```

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Lower-prioritycontrib: build-{linux,wine}: continue fixing build user envby Aaron Fiore · 4800573f · May 6, 2026 · 3 filesMessage 81 · StrongTriage 0Details
Commit message · Aaron Fiore

contrib: build-{linux,wine}: continue fixing build user env

A continuation of 99b0df0f9fdf1d1feb50338091e233d53f9fabc3, as requested
in https://github.com/spesmilo/electrum/pull/10486.

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Lower-prioritycontrib: android: make_apk.sh: add/update testnet commentsby Aaron Fiore · 12dfa15e · May 6, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · Aaron Fiore

contrib: android: make_apk.sh: add/update testnet comments

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritybuild: appimage: fix build: bump alpine apk depsby SomberNight · ddc4d2fd · May 6, 2026 · 1 fileMessage 88 · StrongTriage 0Details
Commit message · SomberNight

build: appimage: fix build: bump alpine apk deps

note: magic incantation to clear relevant docker build cache:
```
$ docker builder prune --all
```

build log:
```
$ ./contrib/build-linux/appimage/build.sh
[...]
=> ERROR [2/6] RUN apk add --no-cache bash=5.2.37-r0 alpine-sdk=1.1-r0 util-linux=2.40.4-r1 strace=6.12-r0 file=5.46-r2 autoconf=2.72-r0 automake=1.17-r0 libtool=2.4.7-r3 xz=5.6.3-r1 eudev-dev=3.2.14-r5 gettext- 0.6s
------
> [2/6] RUN apk add --no-cache bash=5.2.37-r0 alpine-sdk=1.1-r0 util-linux=2.40.4-r1 strace=6.12-r0 file=5.46-r2 autoconf=2.72-r0 automake=1.17-r0 libtool=2.4.7-r3 xz=5.6.3-r1 eudev-dev=3.2.14-r5 gettext-dev=0.22.5-r0 linux-headers=6.6-r1 meson=1.6.1-r0 zstd-dev=1.5.6-r2 zstd-static=1.5.6-r2 zlib-dev=1.3.2-r0 zlib-static=1.3.2-r0 clang19=19.1.4-r0 musl-dev=1.2.5-r11 mimalloc2-dev=2.1.7-r0:
0.224 fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/main/x86_64/APKINDEX.tar.gz
0.309 fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/community/x86_64/APKINDEX.tar.gz
0.475 ERROR: unable to select packages:
0.476 xz-5.8.3-r0:
0.476 breaks: world[xz=5.6.3-r1]
0.476 satisfies: gettext-dev-0.22.5-r0[xz]
------
Dockerfile:4
--------------------
3 | # includes dependencies from https://git.alpinelinux.org/aports/tree/main/fuse3/APKBUILD
4 | >>> RUN apk add --no-cache \
5 | >>> bash=5.2.37-r0 \
6 | >>> alpine-sdk=1.1-r0 \
7 | >>> util-linux=2.40.4-r1 \
8 | >>> strace=6.12-r0 \
9 | >>> file=5.46-r2 \
10 | >>> autoconf=2.72-r0 \
11 | >>> automake=1.17-r0 \
12 | >>> libtool=2.4.7-r3 \
13 | >>> xz=5.6.3-r1 \
14 | >>> eudev-dev=3.2.14-r5 \
15 | >>> gettext-dev=0.22.5-r0 \
16 | >>> linux-headers=6.6-r1 \
17 | >>> meson=1.6.1-r0 \
18 | >>> zstd-dev=1.5.6-r2 \
19 | >>> zstd-static=1.5.6-r2 \
20 | >>> zlib-dev=1.3.2-r0 \
21 | >>> zlib-static=1.3.2-r0 \
22 | >>> clang19=19.1.4-r0 \
23 | >>> musl-dev=1.2.5-r11 \
24 | >>> mimalloc2-dev=2.1.7-r0
25 |
--------------------
ERROR: failed to solve: process "/bin/sh -c apk add --no-cache bash=5.2.37-r0 alpine-sdk=1.1-r0 util-linux=2.40.4-r1 strace=6.12-r0 file=5.46-r2 autoconf=2.72-r0 automake=1.17-r0 libtool=2.4.7-r3 xz=5.6.3-r1 eudev-dev=3.2.14-r5 gettext-dev=0.22.5-r0 linux-headers=6.6-r1 meson=1.6.1-r0 zstd-dev=1.5.6-r2 zstd-static=1.5.6-r2 zlib-dev=1.3.2-r0 zlib-static=1.3.2-r0 clang19=19.1.4-r0 musl-dev=1.2.5-r11 mimalloc2-dev=2.1.7-r0" did not complete successfully: exit code: 2
🗯 ERROR: Error building type2-runtime.
```

88/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