EL
← All projectsElectrum

Electrum

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

BitcoinSoftware walletsNormal
Repository coverage

928 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 candidates205second-pass queue302AI analyses
58commits · 30 days
112commits · 60 days
458commits · 180 days
927commits · 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
193Strong · 80–100
410Adequate · 60–79
286Thin · 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.
ThomasV72219156
SomberNight35126124063
f321x37121114070
Sander van Grieken981030057
user322062
Roman Zeyde512053
Aaron Fiore411068
Sasha Zykov413076
Ferdinando Ametrano111096
Róbert Nagy110098
Oren201043
Felix201075
Analysis record

Published AI watches

Last scanned 33 minutes ago

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
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 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

lnwallet: rename flag in handle_error_code_from_failed_htlc

This commit only renames a local variable from 'update' to 'handled' in a Lightning Network payment-failure handler. It does not change any program logic, behavior, or security properties. The change is purely cosmetic/clarifying.

8e3aed1fby f321x+8−81 file
No security note in commit
Low 45 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

lnwallet: don't blacklist chan on unchanged channel update

This commit fixes a bug in Electrum's Lightning payment routing. Previously, if a payment failed because a channel didn't have enough money (a temporary liquidity issue), Electrum would incorrectly 'blacklist' that channel for an hour, eve…

Denial-of-service-like self-harm: unnecessary channel blacklisting degrades user's own payment routing capabilityLightning Network routing logic changeBehavioral fix for TEMPORARY_CHANNEL_FAILURE handling
6a97e74cby f321x+6−11 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-prioritylnmsg: pass filename as parameter instead of booleanby ThomasV · e1103266 · Jan 28, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · ThomasV

lnmsg: pass filename as parameter instead of boolean

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritylnworker: don't connect to onion peers if no proxyby f321x · 79ef429b · Jan 27, 2026 · 4 filesMessage 73 · AdequateTriage 0Details
Commit message · f321x

lnworker: don't connect to onion peers if no proxy

When gossip is enabled we waste a lot of time trying to connect
to onion peers if we don't have a proxy enabled. We should just skip
them and try to connect to clearnet peers instead.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-prioritylnpeermgr: add_peer: fix check if proxy enabledby f321x · db6b6a16 · Jan 27, 2026 · 3 filesMessage 68 · AdequateTriage 0Details
Commit message · f321x

lnpeermgr: add_peer: fix check if proxy enabled

LNPeerManager.add_peer would only check if self.network.proxy is set,
which it is always as Network is initialized with self.proxy =
ProxySettings(). Instead it should check if proxy is set and enabled.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityServerConnectWizard: don't set autoconnect on user cancelby f321x · 1c5408cc · Jan 26, 2026 · 2 filesMessage 78 · AdequateTriage 0Details
Commit message · f321x

ServerConnectWizard: don't set autoconnect on user cancel

Don't set the NETWORK_AUTO_CONNECT config if the user checked the custom
server config checkbox and then cancels the wizard, so the next time the
user starts the wizard they again will have the choice instead of
silently being forced into a random server.
Currently if the user cancels the wizard during the network config the
welcome component will already have set the NETWORK_AUTO_CONNECT config
to False (as the user selected the custom server checkbox), preventing
the wizard from starting again on the next startup.

78/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Lower-priorityServerConnectWizard: use default server instead of ''by f321x · 10aecf66 · Jan 26, 2026 · 1 fileMessage 93 · StrongTriage 0Details
Commit message · f321x

ServerConnectWizard: use default server instead of ''

Passes the default server (Network.default_server) to
Network.set_parameters instead of an empty string in
ServerConnectWizard.do_configure_server to avoid a traceback like in
I am not entirely sure how the user in #10437 managed to trigger
the exception as Network.set_parameters should already exit early at
`not self._was_started` in the Wizard as the network shouldn't have been
started yet during the wizard. However passing the default ServerAddr
instead of an empty string to set_parameters should avoid this
exception.

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
Lower-priorityqml: validate server address in ServerConfigby f321x · 5952d8c6 · Jan 26, 2026 · 4 filesMessage 68 · AdequateLow 30Details
Commit message · f321x

qml: validate server address in ServerConfig

Same as Qt, validate the server address the user enters and prevent the
user from continuing in the wizard or clicking 'Ok' in the ServerConfig
if the entered address is clearly invalid.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
defensive validation
AI analysis · Low 30/100

This commit adds a user-interface check in Electrum's newer QML (mobile-style) interface to make sure a server address typed by the user looks valid before allowing them to continue. It mirrors a similar check that already existed in the older Qt desktop interface. The change prevents users from accidentally saving or connecting to a clearly malformed server address, which could otherwise lead to connection failures or, in worst-case scenarios, being tricked into connecting to an attacker-controlled server.

Lower-priorityqt: ServerWidget/wizard: validate server_eby f321x · c3d1b204 · Jan 26, 2026 · 2 filesMessage 68 · AdequateLow 42Details
Commit message · f321x

qt: ServerWidget/wizard: validate server_e

The `ServerWidget` didn't validate the input of server_e, which allowed
the user to enter an invalid server connection string and exit the
dialog without knowing they entered an invalid string.
In the wizard this behavior is very misleading as the user explicitly
wanted to use a custom server, can click next after entering an invalid
server, and we will just silently fall back to automatic server selection.

This change will disable the "Next" button in the wizard if an invalid
address has been entered and show a red background in the server_e while
the input is not valid, so the user clearly sees that this input is not
going to be used.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
defensive validation
AI analysis · Low 42/100

This commit fixes a user-interface bug in the Electrum Bitcoin wallet's setup wizard. Previously, a user could type a malformed custom server address, click 'Next', and the wallet would silently ignore it and automatically pick a server instead. Now the wizard blocks the 'Next' button and highlights the bad address in red so the user notices.

Lower-priorityadd plugin hook to utxo list menuby ThomasV · cfe2a57f · Jan 24, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · ThomasV

add plugin hook to utxo list menu

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedcontrib: minor clean-up shell usageby SomberNight · ceadcac9 · Jan 23, 2026 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · SomberNight

contrib: minor clean-up shell usage

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

This commit is a minor shell-script cleanup. It removes an unnecessary 'ls' call in a loop and adds missing double quotes around variables. These are best-practice hygiene changes that prevent filename-word-splitting bugs, but they do not introduce or fix any active security vulnerability in the shipped Electrum wallet software itself.

AI review queuedcontrib/add_cosigner: fix for python 3.13by SomberNight · b495ee77 · Jan 23, 2026 · 1 fileMessage 80 · StrongInformational 16Details
Commit message · SomberNight

contrib/add_cosigner: fix for python 3.13

This script used to work, I assume my breakage is due to the python version.

```
Traceback (most recent call last):
File "/home/user/wspace/electrum/./contrib/add_cosigner", line 35, in <module>
version_spec = importlib.util.spec_from_file_location('version', 'electrum/version.py')
^^^^^^^^^^^^^^
AttributeError: module 'importlib' has no attribute 'util'
```

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

This is a trivial compatibility fix for a helper script. In Python 3.13, using importlib.util requires explicitly importing importlib.util. The change adds that missing import so the script can load a version file again. There is no security issue here.

AI review queuedqt: fix: addresses tab broken for imported watchonly walletsby SomberNight · 0e07128c · Jan 23, 2026 · 2 filesMessage 91 · StrongInformational 18Details
Commit message · SomberNight

qt: fix: addresses tab broken for imported watchonly wallets

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

regression from https://github.com/spesmilo/electrum/pull/10376

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
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This commit fixes a bug where the 'Addresses' tab in Electrum's Qt GUI would crash or fail to display for a specific type of wallet: imported watch-only wallets. These wallets contain addresses you are monitoring but do not own the private keys for. The crash happened because the code assumed every address had an associated public key/index, but watch-only imported addresses do not. The fix makes the sorting function safely handle a missing index by treating it as an empty string. There is no security vulnerability here—just a user-interface regression.

Lower-priorityqt: add changelog action to help menu in toolbarby f321x · f0fc8a96 · Jan 23, 2026 · 2 filesMessage 68 · AdequateTriage 0Details
Commit message · f321x

qt: add changelog action to help menu in toolbar

Adds a "Changelog" action to the "Help" menu of the toolbar. This allows
users to open the RELEASE-NOTES file in the browser (from github).

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-prioritybuild: appimage: fix fresh_clone builds for type2-runtimeby SomberNight · 69093cc1 · Jan 22, 2026 · 2 filesMessage 100 · StrongTriage 0Details
Commit message · SomberNight

build: appimage: fix fresh_clone builds for type2-runtime

Building the appimage with ELECBUILD_COMMIT unset would work,
however building with it set would not.

regression from https://github.com/spesmilo/electrum/commit/daaf7b7c6bd6eaa2975777f1092dc01248c680fd

100/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✓ Links an issue, advisory, or supporting reference
Lower-prioritybump version number to 4.7.0by ThomasV · d2882371 · Jan 22, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · ThomasV

bump version number to 4.7.0

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityupdate RELEASE-NOTES: minor formatting for 4.7.0by SomberNight · 083f652c · Jan 22, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · SomberNight

update RELEASE-NOTES: minor formatting for 4.7.0

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedupdate block header checkpointsby SomberNight · 08fa871f · Jan 22, 2026 · 4 filesMessage 35 · OpaqueInformational 15Details
Commit message · SomberNight

update block header checkpoints

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit simply adds new Bitcoin block header checkpoints to Electrum's data files for mainnet, signet, testnet, and testnet4. Checkpoints are hardcoded reference points that help the wallet verify it is following the correct blockchain. There is no code change, no bug fix, and no security vulnerability visible in this commit.

AI review queuedupdate localeby ThomasV · d9091784 · Jan 22, 2026 · 1 fileMessage 18 · OpaqueInformational 10Details
Commit message · ThomasV

update locale

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
translation-only discountsecond-pass: opaque commit message
AI analysis · Informational 10/100

This commit is a routine update to Electrum's locale (translation/language) files. There is no indication of any security-related change, and the actual code diff is unavailable. It appears to be a normal maintenance update for translations.

Lower-priorityVersion 4.7.0 release notesby f321x · eedf42ab · Jan 22, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · f321x

Version 4.7.0 release notes

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityqt: TxEditor: restructure submarine payment messagesby f321x · 2d97717e · Jan 22, 2026 · 1 fileMessage 65 · AdequateTriage 0Details
Commit message · f321x

qt: TxEditor: restructure submarine payment messages

Show:
error
amount details
\n
proposed action

instead of:
error
proposed action
amount details

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Lower-priorityTxEditor: move swap request to TxEditorby f321x · 1b28e6bf · Jan 22, 2026 · 3 filesMessage 68 · AdequateTriage 0Details
Commit message · f321x

TxEditor: move swap request to TxEditor

Moves the logic requesting the forward swap into the TxEditor so it can
use the open transport and doesn't have to reconnect to the relays
again.

Also disables the "Preview" button in the TxEditor when the transaction will
send change to lightning.
This should prevent the user from saving the transaction to history and
broadcasting it later or exporting it and broadcasting it through some
external way.
Broadcasting needs to happen directly after the TxEditor so we can send
the second rpc call to the swapserver and await the incoming htlcs
before broadcasting the (funding-) transaction.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityTxEditor: update dynamically based on swap transportby f321x · a1841600 · Jan 22, 2026 · 2 filesMessage 73 · AdequateTriage 0Details
Commit message · f321x

TxEditor: update dynamically based on swap transport

Update the TxEditor (onchain tab) if Send change to lightning is enabled
and the swap transport changes. Connect to swap transport if send change
to lightning gets enabled or if it is enabled and the TxEditor gets
opened.
This allows to nicely show the swap fees without blocking the UI to wait
until the swap manager gets initialized.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI review queuedwallet: check swap provider liquidity for send change to lnby f321x · 7b828a83 · Jan 22, 2026 · 1 fileMessage 85 · StrongLow 46Details
Commit message · f321x

wallet: check swap provider liquidity for send change to ln

Check the swap providers liquidity as well if we try to send change to
lightning in `make_unsigned_transaction`. It is now expected that the
swap_manager is already initialized when calling
`make_unsigned_transaction`, otherwise no dummy output will get added.

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 or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 46/100

This commit tightens the conditions under which Electrum automatically sends Bitcoin transaction change into a Lightning Network swap. Previously, the wallet only checked whether the Lightning node could receive the amount. Now it also verifies the swap provider actually has enough liquidity and that the amount meets minimum and maximum swap limits. Without this check, a user could create a transaction whose change is routed into a swap that cannot currently be fulfilled, potentially leaving funds stuck, failing the payment path, or producing a poor user experience. The change is defensive rather than a fix for an active exploit.

Lower-priorityqt: TxEditor: separate swap transport from tabby f321x · 40811abe · Jan 22, 2026 · 1 fileMessage 68 · AdequateTriage 0Details
Commit message · f321x

qt: TxEditor: separate swap transport from tab

Separates the swap transport initialization logic from the submarine
payment tab logic so it can be used for the send change to lightning
functionality too.

Also makes the gui updates on transport establishment more thread safe
by using pyqtSignals instead of calling gui methods from the asyncio
thread.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityTxEditor: move submarine payment help text to messagesby f321x · 844312f5 · Jan 22, 2026 · 2 filesMessage 65 · AdequateTriage 0Details
Commit message · f321x

TxEditor: move submarine payment help text to messages

Moves the help text for submarine payments to messages.py

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Lower-priorityqt: TxEditor: extend messages for send change to lnby f321x · 4f3274e4 · Jan 22, 2026 · 1 fileMessage 85 · StrongTriage 0Details
Commit message · f321x

qt: TxEditor: extend messages for send change to ln

Extend TxEditor.get_messages() with errors for the send change to
lightning function so users see why it wasn't used even though it is
enabled.

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