Commit Graph

3961 Commits

Author SHA1 Message Date
ghost43 ca410beae1 Merge pull request #10385 from f321x/bump_zxingcpp
android: bump barcodescannerview, allow tap to focus, rm 16kb patch
2025-12-22 18:27:44 +00:00
ghost43 a50f963a61 Merge pull request #10373 from accumulator/qml_helpdialog_styling
qml: improve HelpDialog styling
2025-12-22 17:29:57 +00:00
f321x d1368db313 android: qr scanner: allow tap to focus
Allow tap to focus in the android qr scanner as some devices don't
support autofocus. This should allow them to focus on some qr code.
2025-12-22 15:02:01 +01:00
f321x 82c006e0e4 qt: Submarine Payments: update tab on_channels_updated
Updates the submarine payments tab if the channels get updated so the
user isn't stuck with a liquidity warning if they open the tab before
the channels are initialized (e.g. on wallet startup).
2025-12-22 14:08:08 +01:00
f321x d233e4ffa8 qt: Add help button to submarine payments tab
Adds a help button with explanation to the submarine payments tab.
2025-12-22 14:08:01 +01:00
f321x 4c44620d4d qt: ConfirmTxDialog: also show Tools text
Also show the `Tools` text besides the preferences icon so it looks
equal to the main window.
Originally this was a followup part of #10300 which got closed
due to other reasons.
2025-12-22 11:02:17 +01:00
f321x db45606288 qt: disable ln configs in ConfirmTxDialog if no ln
Disables the lightning related config options in the ConfirmTxDialog
tools and shows an according tooltip if lightning is not available in
the wallet. This should prevent confusion of users.
2025-12-22 11:02:15 +01:00
f321x 93d85a0b0e qt: disable Submarine Payment tab if not swap_manager
Disable the `Submarine Payments` tab if the swap_manager is None (the
wallet has no lightning support).
2025-12-22 11:02:13 +01:00
f321x 71bc9af511 qt: channels_list: add tooltip to New Channel btn
Adds tooltips to the "New Channel" button so users understand why it is
disabled and what it does when it is enabled.
2025-12-22 11:02:12 +01:00
ghost43 844a3143d4 Merge pull request #10378 from SomberNight/202512_network_gui_disconnected_servers
network gui: always show bookmarked servers in list
2025-12-19 12:26:09 +00:00
ThomasV baf877252d Merge pull request #10345 from f321x/enforce_unified_password_qml_button
qml: limit creation of new wallets to existing password
2025-12-18 19:25:04 +01:00
f321x 6bb8afebe5 qml: fix incorrect index when deleting wallet
QEWalletListModel.remove_wallet was calling beginRemoveRows with i
instead of remove as index, causing it to not delete the wallet from the
list and the wallet list becoming broken after deleting a wallet.
2025-12-18 17:54:54 +01:00
f321x aee0f8fb54 qml: OpenWalletDialog: load any wallet if password matches
If the user has wallets with different passwords (non-unified pw) and
enters a password on startup that fails to unlock the recently used
wallet this change will automatically open any other wallet if there
is another wallet that can be unlocked with this password.
2025-12-18 17:54:52 +01:00
f321x ba379b7da4 qml: LoadingWalletDialog: fix ressource leak
When closing the OpenWalletDialog without unlocking a wallet the
LoadingWalletDialog wouldn't get properly cleaned up as the
LoadingWalletDialog.visible was never set true. This causes the
connections to accumulate and the callbacks won't get unregistered after
closing the LoadingWalletDialog again.
2025-12-18 17:54:51 +01:00
f321x 70084750ef qml: show wallet list as root if no wallet is loaded
Shows Wallets.qml as root if no wallet is loaded and removes the logic
for no loaded wallet from the WalletMainView as WalletMainView won't be
shown anymore without a Daemon.currentWallet.
2025-12-18 17:54:28 +01:00
accumulator 519944c06e Merge pull request #10377 from accumulator/qml_process_request_status_update_via_eventloop
qml: QERequestDetails process request update via event loop.
2025-12-18 16:48:40 +01:00
SomberNight cb3c286fe2 network: disconnected servers: do not filter out bookmarked raw ":t"
In the GUI, when displaying the list of disconnected servers, we were
filtering to only ":s" servers. Instead now we also show ":t" servers
if they are bookmarked.

Also, if bookmarked, we also show disconnected .onion servers, even
when not using a Tor proxy.

fixes https://github.com/spesmilo/electrum/issues/10374
2025-12-18 14:27:54 +00:00
SomberNight 21fa6114eb network: dedupe qt/qml get_disconnected_server_addrs code 2025-12-18 14:07:43 +00:00
f321x 02abc0e6cd qml: enforce single password on password change
If a qml user with non-uniform wallet passwords tries to change their wallet
password this will force them to change it to a password that is used by
at least one other wallet. This will guide them towards a single wallet
password and prevents the number of different passwords from increasing.
2025-12-18 13:10:36 +01:00
Sander van Grieken 0d812500e1 qml: QERequestDetails process request update via event loop.
This allows backend to process all callbacks before we start querying the payment database

should fix #10116
2025-12-18 12:40:53 +01:00
f321x 378a9e6112 qml: disable 'Create Wallet' before first unlock
If the user has not unlocked any wallet yet and tries to create a new
wallet in the overview a dialog will prompt them to first unlock an
existing wallet in order to be able to create a new wallet.

This ensures they remember at least one password so they can complete
the wizard. The wizard will ask them for an existing password later and
it would be annoying for the user to go through all steps (writing down
the seed etc.) only to find out they need a password they don't
remember. This way they can reinstall the app right before going through
the wizard.
2025-12-18 11:07:37 +01:00
Sander van Grieken f2e6243e19 qt: don't store python tuple in a qt QVariant.
This is an educated guess in fixing #10335, Qt can be very picky w.r.t. wrapping types,
and we have additional complexity in the PyQt/SIP layer.

as the address index is only used to facilitate sorting, convert address index tuple
to a sortable string instead.

This assumes uniformity in the length of address indexes.
2025-12-18 10:59:56 +01:00
Sander van Grieken 4cab0ceddd qml: don't catch-all when making tx for sweep finalizer 2025-12-18 08:31:09 +01:00
Sander van Grieken 72daff3ae4 qml: improve HelpDialog styling
remove misalignment between pane and dialog, add bottom padding
2025-12-17 16:50:59 +01:00
Sander van Grieken 5a49161ae6 qml: fix FeePolicy regression
ref 840243e029
2025-12-17 15:50:04 +01:00
f321x 3b028b06a0 qml: enforce use of existing password for wallet creation
When creating a new wallet in a Electrum instance with existing wallets
this change forces the user to reuse a password of any existing wallet
if `SimpleConfig.WALLET_USE_SINGLE_PASSWORD` is True.
This prevents the amount of different passwords from increasing and
guides the user towards a single wallet password (the intended default).
2025-12-17 14:01:41 +01:00
f321x a105c50029 qt: trustedcoin: only allow signing with broadcast
Only allow signing a transaction if it also gets broadcast by disabling
the signing and broadcast button of the preview dialog when creating a
new tx. Makes it slightly less trivial to cheat with the fees.
2025-12-16 13:54:08 +01:00
f321x 7ccf118755 qt: make ElectrumWindow.lightning_button wider
Qt was showing the lightning_button percentage string while syncing gossip
as `...` instead of the percentage as the minimum width of the button
seemed too small. Increasing this a bit fixes the issue.
2025-12-12 09:50:26 +01:00
SomberNight 37db6ea7e8 transaction: tx_from_any: rm all whitespaces from str, none from bytes
- whitespaces are safe to remove from strings, and is convenient if we do this for users
- bytes-like inputs should be left alone: individual bytes that look like whitespaces can appear in them anywhere
  - even stripping the leading/trailing whitespaces is not safe to do: the first byte of the nVersion or the last byte of the nLocktime might look like whitespace too!
- instead, leading/trailing whitespaces can be stripped closer to where they are input, e.g. in the GUI
  - e.g. ".txn" files that we ourselves create contain a complete tx as a hex string, with a trailing final newline in the file
    - instead of reading that as bytes, we can read it as text
  - ".psbt" files OTOH are binary
2025-12-11 16:48:50 +00:00
ghost43 0eefcbae9c Merge pull request #10357 from f321x/fix_ledger_exception
wizard: hw: handle UserFacingException during encryption step
2025-12-10 17:04:59 +00:00
ghost43 20db0d2311 Merge pull request #10358 from SomberNight/202512_lnworker_get_chan_by_id
lnworker/lnpeer: don't use lnworker.channels.get(chan_id)
2025-12-10 16:47:04 +00:00
f321x 4712417969 wizard: handle UserFacingException in WCWalletPasswordHardware
Handles `UserFacingException` in the `WCWalletPasswordHardware` step of
the hardware wallet wizard flow. This fixes the previous FIXME and
prevents the crash reporter from getting triggered if the the user e.g.
disconnects his hardware wallet during the wallet encryption step.
2025-12-10 17:45:15 +01:00
SomberNight c465f7c3e0 lnworker/lnpeer: don't use lnworker.channels.get(chan_id)
- lnworker.channels takes a copy of the whole dict, to make it thread-safe
- in LNWallet class, can just use self._channels.get(chan_id)
- otherwise there is lnworker.get_channel_by_id
- same for lnpeer.channels.get and lnpeer.get_channel_by_id
2025-12-10 16:14:31 +00:00
f321x e1f1e6f788 qt: lnurlw: catch UserCancelled on lnurlw withdrawal
Catch the UserCancelled exception if the user cancels the lnurlw
coroutine dialog during the withdrawal.
2025-12-10 10:55:16 +01:00
ghost43 f8fc2b63e3 Merge pull request #10271 from f321x/fix_save_payment_info
lightning: fix self payments (e.g. rebalance)
2025-12-05 17:19:39 +00:00
SomberNight cdcac8cb09 openalias: always enforce DNSSEC validation succeeds 2025-12-05 17:06:41 +00:00
SomberNight 49430e9722 qml: fix: paying to openalias
regression from in https://github.com/spesmilo/electrum/pull/9993
    7d0ac64d06
2025-12-05 16:12:04 +00:00
ThomasV 32c677bed0 Qt wizard: bugfix: standardize_path in WCWalletName
without this, any wallet that is not in the config
wallet_path cannot be open.
2025-12-03 11:45:51 +01:00
f321x 923d48f9db lnworker: differentiate PaymentInfo by direction
Allows storing two different payment info of the same payment hash by
including the direction into the db key.
We create and store PaymentInfo for sending attempts and for requests (receiving),
if we try to pay ourself (e.g. through a channel rebalance) the checks
in `save_payment_info` would prevent this and throw an exception.
By storing the PaymentInfos of outgoing and incoming payments separately in
the db this collision is avoided and it makes it easier to reason about
which PaymentInfo belongs where.
2025-12-01 18:39:56 +01:00
ghost43 125b7ee0d7 Merge pull request #10319 from f321x/fix_lightning_num_sats_can_send
lnworker: use config lightning fee for estimate
2025-11-28 15:35:05 +00:00
f321x c575abc8e2 qt: update tabs on exit of SettingsDialog
Update the tabs after the SettingsDialog gets closed, some values might
have to be updated according to the new configuration.
2025-11-28 16:25:39 +01:00
ThomasV bcbc1b4e6e Merge pull request #10328 from f321x/improve_lnfee_slider
qt: SettingsDialog: update ln fee config on slider moved
2025-11-28 14:06:13 +01:00
ThomasV 128026a442 SwapProvidersButton class
factorize code that is used in both SwapDialog and Submarine payments
2025-11-28 13:31:14 +01:00
ThomasV 8bec3eafd2 swaps dialog: in callbacks, update either send or receive field, depending on which one follows
before this, the content of the non-following field could be modified by callbacks
2025-11-28 10:49:23 +01:00
f321x 088f273d9b qt: SettingsDialog: update ln fee config on slider moved
When moving the lightning fee slider in the SettingsDialog by clicking
on the range instead of pulling the slider the new fee value wouldn't
get stored in the config as the sliderRelased signal is only emitted
when the slider is pulled.
This change updates it on valueChanged.
2025-11-28 09:55:32 +01:00
SomberNight bc2bd48516 qml: (trivial) QEConfig.formatMilliSats: conv unused fallback to assert 2025-11-27 16:14:52 +00:00
Sander van Grieken c519083b9b qml: show lightning invoice amounts with msat precision, allow msat precision entry for no-amount lightning invoices 2025-11-27 12:38:57 +01:00
Sander van Grieken e137c888a1 qeconfig: fix btc amount regex, add msat regex property, add regex tests 2025-11-27 12:38:49 +01:00
Sander van Grieken 93c9dd9d12 qml: refactor invoice amount checks, msat precision for lightning.
add qeconfig unit tests for conversion methods.
2025-11-27 12:38:49 +01:00
Sander van Grieken 0f2a41e078 simple_config: factor out self.decimal_point and self.get_decimal_point() in favor of self.BTC_AMOUNTS_DECIMAL_POINT 2025-11-27 12:38:49 +01:00