What changed, and why it matters
This is a small bug fix in Electrum's Qt transaction editor. The dialog was listening for the wrong event when watching Lightning channels come online, so it could fail to refresh its submarine-swap tab promptly. The fix changes the callback to the correct event. There is no direct evidence this is a security vulnerability; it appears to be a UI responsiveness bug.
Treat as a normal bug fix. Review whether stale UI state could mislead users about swap readiness or channel availability, but no immediate security patch workflow is indicated by the diff alone.
Security signals we found
Event/callback mismatch in UI dialog
Potential stale UI state in Lightning submarine-swap flow
No input validation, privilege boundary, or cryptographic change visible
Evidence from the diff
In electrum/gui/qt/confirm_tx_dialog.py, the TxEditor class was decorated as a qt_event_listener for on_event_channels_updated, but that event is not emitted when a channel transitions to OPEN. The patch registers on_event_channel instead, which receives per-channel events and allows update_submarine_tab() to run when a channel comes online. This corrects stale UI state in the submarine swap tab but does not, on its own, indicate an exploitable security flaw.
Changed components
electrum/gui/qt/confirm_tx_dialog.pyTxEditor Qt dialogLightning submarine swap tab UIInspect captured patch +1 / −1
diff --git a/electrum/gui/qt/confirm_tx_dialog.py b/electrum/gui/qt/confirm_tx_dialog.py
index 9bfcc17..3e7fc48 100644
--- a/electrum/gui/qt/confirm_tx_dialog.py
+++ b/electrum/gui/qt/confirm_tx_dialog.py
@@ -874,7 +874,7 @@ class TxEditor(WindowModalDialog, QtEventListener, Logger):
self.update_submarine_tab()
@qt_event_listener
- def on_event_channels_updated(self, wallet):
+ def on_event_channel(self, wallet, _channel):
# useful e.g. if the user quickly opens the tab after startup before the channels are initialized
if wallet == self.wallet and self.swap_manager and self.swap_manager.is_initialized.is_set():
self.update_submarine_tab()
Why this scored 22/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.