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 queue60AI 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.
SomberNight3492521063
f321x3712121070
Sander van Grieken981010057
ThomasV7222056
user322062
Roman Zeyde511053
Sasha Zykov411076
Aaron Fiore411068
Ferdinando Ametrano111096
Ilya Artemov200050
Oren200043
Sebastian van Staa100045
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 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 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 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
Low 42 AI analysisMessage 85 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

wallet.check_sighash: don't assume tx.add_info_from_wallet alrdy ran

This commit fixes a defensive check in the Electrum Bitcoin wallet. Before signing a transaction, Electrum checks whether the transaction uses unusual 'sighash' flags that could allow someone else to move coins unexpectedly. The bug was th…

Sighash sanity check could be bypassed for beyond-gap-limit wallet inputsFix adds defensive deep-copy and wallet-info population inside check_sighashRegression test demonstrates dangerous sighash is now caught even with gap_limit=2
b57327fbby SomberNight+48−02 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 65 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

exchange rate: remove CoinDesk provider

This commit simply removes the CoinDesk exchange-rate provider from Electrum because CoinDesk's old API no longer works and its new API requires a paid authorization token. It is a routine cleanup, not a security fix.

6571e479by f321x+0−1972 files
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

hw_wallet/qt: reuse device message dialog across button requests

This commit is a user-interface performance and polish fix for Electrum's hardware wallet integration. It stops the app from destroying and recreating the same on-screen prompt every time a hardware wallet asks the user to confirm a transa…

898a4c27by Sasha Zykov+15−11 file
No security note in commit
Low 25 AI analysisMessage 88 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

lnmsg: add new primitive type `bip340sig`, add tlv merkle root calculation and schnorr-sign over tlvs, implicit en/decode utf8 fields, schnorr signature verification.

This commit adds new Lightning Network message handling code to Electrum. It introduces a new BIP-340 Schnorr signature field type, computes Merkle roots over TLV (type-length-value) records, signs and verifies those roots, and adds implic…

New cryptographic signing/verification path addedNew BIP-340 tagged-hash Merkle root constructionSignature TLVs excluded from the Merkle root they sign
759ef10dby Sander van Grieken+160−111 file
No security note in commit
Moderate 55 AI analysisMessage 68 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

lnpeer: on_ping: drain out-socket buffer

This change fixes a potential denial-of-service weakness in Electrum's Lightning network peer handling. Previously, when Electrum replied to a peer's 'ping' message, it would add the reply to the outgoing socket buffer without waiting to c…

memory exhaustion / DoS mitigationunbounded outbound buffer growth preventedbackpressure added to peer ping/pong handling
9b206576by SomberNight+6−12 files
Vendor flagged security relevance
Informational 20 AI analysisMessage 100 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

ci: security review: give more permissions to claude

This commit changes Electrum's automated CI security-review bot so that the Claude AI assistant is allowed to run shell commands and modify files on its own, rather than only answering questions. The change is intentional and runs inside a…

New command-line flag named `--dangerously-skip-permissions` introducedCI script now permits an AI agent to execute commands and modify files without interactive permission checksExecution context changed from root to unprivileged `node` user to satisfy Claude's refusal to run as root
39cdb23eby f321x+4−12 files
No security note in commit
Informational 15 AI analysisMessage 90 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

tests: regtest: make test_just_in_time less flaky

This commit only changes a test script. It adds a wait helper so a test that opens two Lightning channels in a row does not fail randomly on continuous integration. There is no change to Electrum's actual wallet or Lightning code, so users…

12547f94by f321x+23−01 file
No security note in commit
Informational 24 AI analysisMessage 78 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

Upgrade `trezorlib` to 0.20.1

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…

Dependency upgrade of hardware-wallet communication libraryRefactoring of device session and passphrase handlingChange from init_device() to ping() for liveness check
0f2fa36eby Roman Zeyde+69−464 files
No security note in commit
Informational 15 AI analysisMessage 35 · Opaque
EL ElectrumElectrum BitcoinSoftware wallets

qml: additional styling updates

This commit is purely a user-interface styling refresh for Electrum's QML (mobile/desktop) GUI. It swaps some visual components (highlight panes, button containers, padding, colors) and introduces a new shared 'DialogHighlightPane' control…

28f744f7by Sander van Grieken+136−8525 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

qml: styling updates qt6.10

This commit is a routine user-interface refresh for Electrum's mobile/desktop QML app, adjusting colors, spacing, button containers, and placeholder text to match newer Qt 6.10 styling. There is no security-relevant change and no indicatio…

cdb5c0b8by Sander van Grieken+209−17540 files
No security note in commit
Informational 18 AI analysisMessage 65 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

android: pin hostpython3 PyProjectRecipe versions, pin android and pyjnius recipes Cython version

This commit tightens the Android build process for the Electrum Bitcoin wallet by pinning exact versions of build tools (like Cython, pip, setuptools) and their cryptographic hashes. It also updates the version of python-for-android used. …

Pins build-time dependency versions and cryptographic hashesUpdates python-for-android pinned checkout commitAdds new pinned recipe overrides for android and pyjnius Cython prerequisites
74f3c042by Sander van Grieken+54−34 files
No security note in commit
Low 28 AI analysisMessage 50 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

android: build pyqt_builder and sip ourselves, hash pin all hostpython_prerequisites

This commit updates the Android build setup for the Electrum Bitcoin wallet. It switches to a newer version of the python-for-android build tool, starts building two PyQt-related packages (pyqt_builder and sip) from source instead of relyi…

Hash-pinning of build-time Python dependencies (setuptools, pip)Source-build of pyqt_builder and sip instead of wheel installationpython-for-android checkout bump to newer commit
c8f5798dby Sander van Grieken+21−56 files
No security note in commit
Informational 14 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

android: use plain 'build' dependency (using 'venv') instead of 'build[virtualenv]', remove setuptools as its use is now pinned via hostpython_prerequisites where applicable, update depends asserts in pyqt6sip, sip, pyqt_builder

This commit updates how Electrum's Android build system installs Python packaging tools. It switches from a feature-rich 'build[virtualenv]' dependency to a simpler 'build' dependency, removes a custom pinned recipe for setuptools, and mov…

Dependency pinning and recipe maintenance for Android build chainRemoval of custom setuptools recipe in favor of upstream hostpython_prerequisites mechanismUpdate of python-for-android pinned commit in Dockerfile
9d5b4a7cby Sander van Grieken+14−418 files
No security note in commit
Low 25 AI analysisMessage 73 · Adequate
EL ElectrumElectrum BitcoinSoftware wallets

qml: add workarounds for issue assigning custom types to QObject properties

This commit changes how the Electrum mobile/desktop QML GUI passes custom data objects between Python and the user interface. It switches many typed properties to the generic QVariant/'var' type and adds runtime type checks (asserts) in Py…

Type system relaxation: custom typed QML/Python properties changed to generic QVariant/varRuntime type enforcement added via assert statements in Python settersNo explicit security framing in commit message or diff
9772a6d5by Sander van Grieken+86−5924 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
EL ElectrumElectrum BitcoinSoftware wallets

qml: wizard styling, password dialog styling

This commit is purely a user-interface styling update for Electrum's QML (mobile-style) screens. It changes how password prompts and wallet setup wizards look—moving labels into placeholder text, adjusting margins, and making buttons a con…

e99b3023by Sander van Grieken+22−223 files
No security note in commit
Moderate 62 AI analysisMessage 93 · Strong
EL ElectrumElectrum BitcoinSoftware wallets

verifier.py: fix CVE-2012-2459: reject left-sibling duplicates

This commit fixes a known Bitcoin weakness (CVE-2012-2459) in Electrum's light-client verification. Because Bitcoin's Merkle tree duplicates the last hash when a level has an odd number of items, an attacker can craft a block proof that ma…

Fixes CVE-2012-2459 (Merkle tree duplicate-node weakness)Adds explicit LeftSiblingDuplicate exceptionStrengthens SPV Merkle proof verification
3d390742by SomberNight+106−262 files
Vendor flagged security relevance
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Lower-prioritymake sure load_ast_data returns a dict with str keysby ThomasV · 3638934e · Jun 3, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · ThomasV

make sure load_ast_data returns a dict with str keys

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityconfig: add option to disable memory hardeningby ThomasV · 3ae85eef · Jun 2, 2026 · 3 filesMessage 60 · AdequateTriage 8Details
Commit message · ThomasV

config: add option to disable memory hardening

This is needed for running with a memory profiler

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
defensive validation
Lower-prioritytestnet3/testnet4: update default serversby SomberNight · d47628f6 · May 31, 2026 · 2 filesMessage 60 · AdequateTriage 0Details
Commit message · SomberNight

testnet3/testnet4: update default servers

Please enter the commit message for your changes. Lines starting

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Security candidatescripts: simplify testnet usageby SomberNight · a395da4e · May 31, 2026 · 4 filesMessage 35 · OpaqueTriage 12Details
Commit message · SomberNight

scripts: simplify testnet usage

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
boot or update path
Lower-prioritynetwork: fix get_servers should not modify ports of DEFAULT_SERVERSby SomberNight · 88c7c6d5 · May 31, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · SomberNight

network: fix get_servers should not modify ports of DEFAULT_SERVERS

DEFAULT_SERVERS should be immutable

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityci: builds: android: fix cache keyby f321x · 39e9e23e · May 29, 2026 · 1 fileMessage 92 · StrongTriage 0Details
Commit message · f321x

ci: builds: android: fix cache key

Fix the cache key of the scheduled Android CI build which failed
at the `Cache buildozer (p4a)` step with the following error:
```
Error: The template is not valid. .github/workflows/builds.yml (Line: 113, Col: 16): hashFiles('contrib/android/**') failed. Fail to hash files under directory '/home/runner/work/electrum/electrum'
```

Probably it failed because the `contrib/android/.cache` directory
got included in the cache key, which worked on Cirrus.
This specifies the cache key hash inputs explicitly.

92/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
documentation-only discount
Lower-priorityplugin: nwc: change default relay used for new NWC connectionsby f321x · 460a7e1d · May 29, 2026 · 1 fileMessage 85 · StrongTriage 0Details
Commit message · f321x

plugin: nwc: change default relay used for new NWC connections

The default relay is the one that is positioned first in a NWC
connection string. This matters because most clients only use the
first relay and ignore the following ones.

We set the Alby relay as default because they operate it specifically
for NWC.
However it doesn't seem to work anymore, client requests time out.
I suspect they drop NIP-04 encrypted events to push wallets
to implement the newer NIP-44 encryption.
We should eventually implement this.
The primal relay happily accepts NIP-04 encrypted NWC events so
lets use this as default.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Lower-priorityci: security review: bump claude model 4.7 -> 4.8by f321x · ed83982f · May 29, 2026 · 1 fileMessage 93 · StrongTriage 0Details
Commit message · f321x

ci: security review: bump claude model 4.7 -> 4.8

Anthropic released a new model again. The pricing/token consumption
is the same as 4.7. This improves the quality of the code review CI.
https://platform.claude.com/docs/en/about-claude/models/whats-new-claude-4-8

93/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✓ Names security-relevant behavior explicitly
Lower-prioritympp_split: stop returning splits without amountsby f321x · c47c5d50 · May 28, 2026 · 2 filesMessage 68 · AdequateTriage 0Details
Commit message · f321x

mpp_split: stop returning splits without amounts

`mpp_split.suggest_splits()` would return payment split
configurations with no split amounts like:
`{(channel_id, node_id): []}`.

This is unintuitive and introduced two bugs:

1. `LNWallet.create_routes_for_payment()` evaluates
`is_multichan_mpp = len(sc.config.items()) > 1`.
So even if the actual payment amount gets split onto
a single channel this would falsely evaluate `True`
if there is a empty split.

2. `is_direct_path = all(node_id == paysession.invoice_pubkey for (chan_id, node_id) in sc.config.keys())`
similarly might incorrectly evaluates `False` if the split
contains an empty split for another `node_id`.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityci: document where to get API keys fromby SomberNight · 4b65ef77 · May 26, 2026 · 2 filesMessage 57 · ThinTriage 0Details
Commit message · SomberNight

ci: document where to get API keys from

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
Security candidatelnpeer: on_ping: drain out-socket bufferby SomberNight · 9b206576 · May 26, 2026 · 2 filesMessage 68 · AdequateModerate 55Details
Commit message · SomberNight

lnpeer: on_ping: drain out-socket buffer

might help against some memory exhaustion attacks

f321x said:
> maybe a peer could just fill up our sockets outgoing buffer by ~234mb/h
> if they stop reading from their socket and keep sending pings every second.

Co-authored-by: f321x <f@f321x.com>

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
explicit security language
AI analysis · Moderate 55/100

This change fixes a potential denial-of-service weakness in Electrum's Lightning network peer handling. Previously, when Electrum replied to a peer's 'ping' message, it would add the reply to the outgoing socket buffer without waiting to confirm it could actually be sent. A malicious peer that accepts data very slowly (or not at all) could trick Electrum into piling up hundreds of megabytes of unsent replies in memory each hour. The patch makes the reply wait until the socket can drain the data, limiting memory growth.

Lower-prioritylnpeer: add some rate-limiting against ping floodby SomberNight · 262c1eb0 · May 26, 2026 · 1 fileMessage 68 · AdequateTriage 0Details
Commit message · SomberNight

lnpeer: add some rate-limiting against ping flood

A remote peer could send us lots of small ping messages, requesting large pong responses. This is cheap for them but potentially expensive for us.
Does not seem too serious, but I think we could add some rate-limiting.

note: There are many ways for a remote peer to inflate our incoming traffic usage,
but the cost of that is usually shared between them and us (they need to send the data, we receive it).

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityregtest.test_breach_with_spent_htlc: wait until settledby ThomasV · df00f838 · May 26, 2026 · 1 fileMessage 87 · StrongTriage 0Details
Commit message · ThomasV

regtest.test_breach_with_spent_htlc: wait until settled

In some cases the test failed because alice didnt have
enough time to settle. Also remove useless sleep

87/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Explains rationale or failure mode✓ Mentions testing or verification
Lower-prioritylnonion/trampoline: stop double counting HMAC sizeby f321x · eb7bf232 · May 26, 2026 · 2 filesMessage 73 · AdequateTriage 0Details
Commit message · f321x

lnonion/trampoline: stop double counting HMAC size

`OnionHopsDataSingle.to_bytes()` already accounts for the
onions hmac internally, it seems incorrect that we were
additionally adding `PER_HOP_HMAC_SIZE` to the payload size
of the payload returned by `.to_bytes()`.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityci: remove Cirrus CI configurationby f321x · a41c76f3 · May 26, 2026 · 2 filesMessage 72 · AdequateTriage 0Details
Commit message · f321x

ci: remove Cirrus CI configuration

Migration to GitHub Actions is complete. All CI tasks are now defined
under .github/workflows/.

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Lower-priorityci: add GitHub Actions binary builds workflowby f321x · 699603b0 · May 26, 2026 · 3 filesMessage 80 · StrongTriage 0Details
Commit message · f321x

ci: add GitHub Actions binary builds workflow

Migrates the four Cirrus CI binary build tasks (Windows, Android,
AppImage, and source/source-only tarball) to GitHub Actions. The new
workflow runs only on the nightly cron (02:30 UTC) and workflow_dispatch.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
documentation-only discount
Lower-priorityci: add GitHub Actions security review workflowby f321x · ddde0f09 · May 26, 2026 · 2 filesMessage 62 · AdequateTriage 0Details
Commit message · f321x

ci: add GitHub Actions security review workflow

62/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Lower-priorityci: add GitHub Actions locale workflowby f321x · 9e809f2b · May 26, 2026 · 1 fileMessage 80 · StrongTriage 0Details
Commit message · f321x

ci: add GitHub Actions locale workflow

Migrate the "locale: upload to crowdin" task from .cirrus.yml to a
GitHub Actions workflow. Triggers on pushes to master (mirroring the
Cirrus only_if condition) plus workflow_dispatch for manual runs.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
documentation-only discounttranslation-only discount
Lower-priorityci: add GitHub Actions submodule check workflowby f321x · 93acf901 · May 26, 2026 · 1 fileMessage 57 · ThinTriage 0Details
Commit message · f321x

ci: add GitHub Actions submodule check workflow

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
Lower-priorityci: add GitHub Actions regtest workflowby f321x · ffdd1f42 · May 26, 2026 · 1 fileMessage 90 · StrongTriage 0Details
Commit message · f321x

ci: add GitHub Actions regtest workflow

Migrates the 'Regtest functional tests' Cirrus CI task to GitHub Actions,
running on ubuntu-24.04. Caches the bitcoind binary and libsecp256k1
build, starts bitcoind and electrumx in the background, and uploads
wallet artifacts plus dumps service logs on failure.

90/100 · StrongMessage clarity
✓ 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: add GitHub Actions tests workflowby f321x · b3986341 · May 26, 2026 · 1 fileMessage 90 · StrongTriage 0Details
Commit message · f321x

ci: add GitHub Actions tests workflow

Replaces the Cirrus CI tasks (flake8 mandatory, flake8 non-mandatory,
ban-unicode, unittests across Python 3.10-3.14 + 3.14 debug, and
unittests with frozen deps) with a single .github/workflows/tests.yml.

90/100 · StrongMessage clarity
✓ 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-prioritysetup.py: "qml_gui" extra: restrict pyqt to "6.10.x"by SomberNight · 33e67fda · May 25, 2026 · 1 fileMessage 81 · StrongTriage 0Details
Commit message · SomberNight

setup.py: "qml_gui" extra: restrict pyqt to "6.10.x"

I had misunderstood how "~=" works.
Previous meant >=6.10, but any 6.x.
While I actually wanted 6.10.0<=v<6.11.

follow-up 96a3345ab5a3c41c89b4b5bac2d8bde12d753392

ref https://peps.python.org/pep-0440/#compatible-release

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-priorityci: security review: increase timeout: 20 -> 60 minby f321x · 87ca59e5 · May 25, 2026 · 1 fileMessage 90 · StrongTriage 0Details
Commit message · f321x

ci: security review: increase timeout: 20 -> 60 min

Large diffs or complex contexts can take a long time to review.
If the timeout kicks in too early the ressources Claude used are wasted.

90/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
AI review queuedunit tests: do not mock save_dbby ThomasV · f2ece0f4 · May 21, 2026 · 2 filesMessage 78 · AdequateTriage 12Details
Commit message · ThomasV

unit tests: do not mock save_db

Create in-memory wallets instead.

The logic of calling save_db() at specific places is specific to
the current JsonDB backend, and it does not generalize well.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
Lower-prioritylnworker: LNGossip to signal OPTION_ANCHORS_OPTby SomberNight · 2e640c83 · May 20, 2026 · 1 fileMessage 68 · AdequateTriage 0Details
Commit message · SomberNight

lnworker: LNGossip to signal OPTION_ANCHORS_OPT

Our LNWallet now sets OPTION_ANCHORS_REQ -- maybe other impls will do this too?
LNGossip does not care about anchors but should still be able to utilise peers that require it.

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