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

AI review queuedconfig/regtest: add config to disable automatic fee updatesby f321x · 76f69676 · Oct 31, 2025 · 4 filesMessage 83 · StrongTriage 0Details
Commit message · f321x

config/regtest: add config to disable automatic fee updates

Some regtest tests depend on manual fee injection to simulate certain
mempool conditions (e.g. lnwatcher_waits_until_fees_go_down). This is
done by manually injecting fee estimates into the `Network` object using
the `test_inject_fee_etas` cli command. However it can still happen that
the Network automatically updates its fee estimates from the connected
electrum server in the time between injecting the fee and the actual
tested logic making decisions based on the fee. This causes the test to
fail sometimes.
By setting the `test_disable_automatic_fee_eta_update` true the Network
will stop automatically updating the fee estimates and the test will
behave as expected.

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
second-pass: broader security terminology
AI review queuedsynchronizer: small refactor _on_address_statusby SomberNight · 5212d20f · Oct 29, 2025 · 1 fileMessage 35 · OpaqueTriage 0Details
Commit message · SomberNight

synchronizer: small refactor _on_address_status

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI review queuedfollow-up prev: add type-hints, etcby SomberNight · 3379e462 · Oct 9, 2025 · 2 filesMessage 45 · ThinTriage 12Details
Commit message · SomberNight

follow-up prev: add type-hints, etc

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI review queuedtransaction: (move-only) move some methods from Tx to PartialTx clsby SomberNight · f1ad5bc2 · Oct 9, 2025 · 1 fileMessage 65 · AdequateTriage 12Details
Commit message · SomberNight

transaction: (move-only) move some methods from Tx to PartialTx cls

these were already assuming `isinstance(self, PartialTransaction)`

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 review queuedwallet: (trivial) mark calc_unused_change_addresses as privateby SomberNight · 58676219 · Oct 7, 2025 · 1 fileMessage 50 · ThinTriage 12Details
Commit message · SomberNight

wallet: (trivial) mark calc_unused_change_addresses as private

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI review queuedcli: add command to export preimageby f321x · b57f867c · Sep 30, 2025 · 3 filesMessage 76 · AdequateTriage 12Details
Commit message · f321x

cli: add command to export preimage

..also export preimage in check_hold_invoice return value if available.

I intentionally did not return the preimage in the returned dict of
wallet.export_requests as this seems risky to do considering some users
of the cli might forward the response to a payer and the payserver
exposes it too.

Closes https://github.com/spesmilo/electrum/issues/10176

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI review queuedlnworker: enforce creation of PaymentInfo for b11by f321x · 286fc4b8 · Sep 30, 2025 · 9 filesMessage 68 · AdequateTriage 12Details
Commit message · f321x

lnworker: enforce creation of PaymentInfo for b11

Enforce that the information used to create a bolt11 invoice using
`get_bolt11_invoice()` is similar to the related instance of PaymentInfo
by requiring a PaymentInfo as argument for `get_bolt11_invoice()`.
This way the invoice cannot differ from the created PaymentInfo.
This allows to use the information in PaymentInfo for validation of
incoming htlcs more reliably.

To cover all required information for the creation of a b11 invoice the
PaymentInfo class has to be extended with a expiry and
min_final_cltv_expiry. This requires a db upgrade.

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 review queuedlnpeer: cleanup importsby f321x · acd52da7 · Sep 29, 2025 · 1 fileMessage 28 · OpaqueTriage 0Details
Commit message · f321x

lnpeer: cleanup imports

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI review queuedtransaction: SPV-verify TxInput.block_height and .spent_heightby SomberNight · a4293c48 · Sep 24, 2025 · 2 filesMessage 60 · AdequateTriage 12Details
Commit message · SomberNight

transaction: SPV-verify TxInput.block_height and .spent_height

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI review queuedadb: change API of util.TxMinedInfo: height() is now always SPV-edby SomberNight · b944371f · Sep 24, 2025 · 21 filesMessage 50 · ThinTriage 12Details
Commit message · SomberNight

adb: change API of util.TxMinedInfo: height() is now always SPV-ed

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: unusually broad changesecond-pass: security-sensitive path
AI review queuedwallet: anchor reserve: handle wallet.use_change being offby SomberNight · 6a9c94ff · Sep 24, 2025 · 2 filesMessage 73 · AdequateTriage 12Details
Commit message · SomberNight

wallet: anchor reserve: handle wallet.use_change being off

fixes https://github.com/spesmilo/electrum/issues/10231

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI review queuedwallet: fix AttributeError when getting help textby f321x · b6a4ebec · Sep 16, 2025 · 1 fileMessage 76 · AdequateTriage 12Details
Commit message · f321x

wallet: fix AttributeError when getting help text

Fixes AttributeError when trying to get `num_sats_can_receive()` in
wallets without lnworker. Fixes https://github.com/spesmilo/electrum/issues/8100#issuecomment-3294556043.

```
Traceback (most recent call last):
File "/usr/lib/python3.13/site-packages/electrum/gui/qt/request_list.py", line 103, in selection_changed
self.receive_tab.update_current_request()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3.13/site-packages/electrum/gui/qt/receive_tab.py", line 237, in update_current_request
help_texts = self.wallet.get_help_texts_for_receive_request(req)
File "/usr/lib/python3.13/site-packages/electrum/wallet.py", line 3446, in get_help_texts_for_receive_request
can_receive = self.lnworker.num_sats_can_receive()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'num_sats_can_receive'
```

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI review queuedwallet.get_full_history: rm "include_fiat" arg, infer it from fxby SomberNight · 47f1a2d7 · Sep 9, 2025 · 3 filesMessage 73 · AdequateTriage 12Details
Commit message · SomberNight

wallet.get_full_history: rm "include_fiat" arg, infer it from fx

ref https://github.com/spesmilo/electrum/pull/10209#discussion_r2334228490

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI review queuedtests: restore from old "hex" seedby SomberNight · e97d8754 · Sep 8, 2025 · 3 filesMessage 55 · ThinTriage 12Details
Commit message · SomberNight

tests: restore from old "hex" seed

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI review queuedwallet history: also add fiat value to child txby f321x · c438f1df · Sep 8, 2025 · 1 fileMessage 60 · AdequateTriage 12Details
Commit message · f321x

wallet history: also add fiat value to child tx

Makes `get_full_history` also add the fiat values to the children of a
tx, not only to the group itself.

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 review queuedcommands: add clear error that plugin commands cannot be run with -oby SomberNight · 7455cf9d · Sep 5, 2025 · 1 fileMessage 73 · AdequateTriage 0Details
Commit message · SomberNight

commands: add clear error that plugin commands cannot be run with -o

note that atm none of the plugin commands are explicitly marked with 'n' but all require it.
Also note that 'w' for plugin commands kind of implies 'n' anyway, as the 'load_wallet' hook relies on having a daemon.

```
$ ./run_electrum -o --testnet labels_pull
Password:
1.96 | E | __main__ | error running command (without daemon)
Traceback (most recent call last):
File "/home/user/wspace/electrum/./run_electrum", line 587, in handle_cmd
result = fut.result()
File "/usr/lib/python3.13/concurrent/futures/_base.py", line 456, in result
return self.__get_result()
~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3.13/concurrent/futures/_base.py", line 401, in __get_result
raise self._exception
File "/home/user/wspace/electrum/./run_electrum", line 267, in run_offline_command
result = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/user/wspace/electrum/electrum/commands.py", line 202, in func_wrapper
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/user/wspace/electrum/electrum/commands.py", line 2214, in func_wrapper
kwargs['plugin'] = daemon._plugins.get_plugin(plugin_name)
^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '_plugins'
```

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
second-pass: broader security terminology
AI review queuedkeystore: get_private_keys should not return Noneby SomberNight · 75195b66 · Sep 5, 2025 · 3 filesMessage 68 · AdequateTriage 12Details
Commit message · SomberNight

keystore: get_private_keys should not return None

closes https://github.com/spesmilo/electrum/issues/10200

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI review queuedqml: add some type hints to qetxfinalizerby SomberNight · c8a14cc2 · Sep 1, 2025 · 3 filesMessage 45 · ThinTriage 12Details
Commit message · SomberNight

qml: add some type hints to qetxfinalizer

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI review queuedqt: receive tab: also suggest swap for 0 amnt reqby f321x · a62dbb56 · Sep 1, 2025 · 2 filesMessage 80 · StrongTriage 12Details
Commit message · f321x

qt: receive tab: also suggest swap for 0 amnt req

Also suggest a submarine swap if the user creates a 0 amount invoice and
has 0 sat incoming liquidity as it won't be possible to receive
anything.
Users potentially just open a channel, then want to create a lightning invoice
without amount like they are used to from onchain addresses, and then
wonder why receiving doesn't work. So we should at least propose a swap
if there is no inbound liquidity at all.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI review queuedqml: use declarative form for invoiceResolved and requestResolved in WalletMainViewby Sander van Grieken · 313c8a13 · Aug 27, 2025 · 2 filesMessage 65 · AdequateTriage 12Details
Commit message · Sander van Grieken

qml: use declarative form for invoiceResolved and requestResolved in WalletMainView

(cherry picked from commit 78b2e3df6c47ad5d5d119cbc2372e62807f372fd)

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 review queuedqml: separate PI resolving from QEInvoiceParserby f321x · b90090e2 · Aug 27, 2025 · 8 filesMessage 68 · AdequateTriage 12Details
Commit message · f321x

qml: separate PI resolving from QEInvoiceParser

separates the resolving step from the QEInvoiceParser so the 'recipient'
can be resolved first and then either an QEInvoiceParser can be used if
it is a sending request that has been resolved (invoice, address,
lnurlp, ...), or RequestDetails can be used if the resolved 'recipient'
turns out to be a voucher/LNURLW string.

# Conflicts:
# electrum/gui/qml/qeinvoice.py

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 review queuedlnurl: implement LNURL-withdrawby f321x · fdeada3f · Aug 27, 2025 · 9 filesMessage 58 · ThinTriage 12Details
Commit message · f321x

lnurl: implement LNURL-withdraw

adds handling of lnurl-withdraw payment identifiers which allow users to
withdraw bitcoin from a service by scanning a qr code or pasting the
lnurl-w code as "sending" address.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI review queuedqml: LoadingWalletDialog: add some paddingby f321x · f1dfe5e2 · Aug 27, 2025 · 1 fileMessage 68 · AdequateTriage 12Details
Commit message · f321x

qml: LoadingWalletDialog: add some padding

add some padding at the bottom of the LoadingWalletDialog so the
spinning circle is not directly at the bottom of the dialog, looks a bit
nicer this way.

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 review queuedcontrib: add "set -e" to bash scripts where missingby SomberNight · d9480fe3 · Aug 25, 2025 · 4 filesMessage 50 · ThinTriage 12Details
Commit message · SomberNight

contrib: add "set -e" to bash scripts where missing

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI review queuedprepare release 4.6.2by SomberNight · c9511264 · Aug 24, 2025 · 2 filesMessage 38 · OpaqueTriage 0Details
Commit message · SomberNight

prepare release 4.6.2

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message