102 Commits

Author SHA1 Message Date
f321x 543b73be9b wizard: catch NotLegacySinglesigScriptType
Catch NetLegacySinglesigScriptType and convert it to a
UserFacingException if the user tries to import a private key for which
it is not possible to get a singlesig descriptor (e.g. p2wsh).

Fixes #10536
2026-03-23 10:04:04 +01:00
f321x 06f9d87523 wizard: raise more specific exc in create_storage()
Modifies `NewWalletWizard.create_storage()` to raise more specific
exception types instead of plain `Exception`. This should allow the
calling GUI to separate between non-bug exceptions (like invalid user
input), and bugs which should not happen and be
passed to the bug reporter.
2026-02-04 11:56:44 +01:00
f321x 1c5408cccb 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.
2026-01-26 15:28:54 +01:00
f321x 10aecf66fd 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.
2026-01-26 14:40:04 +01:00
SomberNight dc999aa948 wizard: enable_keystore: fix for multisig
regression from https://github.com/spesmilo/electrum/commit/66c0fec1eaa4ebf4b75ec70b5395320150a2801c
2025-08-15 20:52:49 +00:00
SomberNight 14494c13dc qt wizard: start: merge "start_viewstate" and "initial_data" 2025-08-15 20:46:24 +00:00
SomberNight 43987c5ca0 wizard: make start() kwarg-only
I want to see where initial_data arg is actually set from.
Looks like hardly anywhere(?)
It is really hard to see because the wizard is crazy-dynamic, there's polymorphism and mixins everywhere.
2025-08-15 20:35:29 +00:00
Sander van Grieken e1d5d803e9 wizard: fix missing 'wallet_password' and 'wallet_password_hardware' views on abstract KeystoreWizard
(these were implicitly defined by the Qt subclass) and test wallet keystore enable.
2025-08-13 16:25:01 +02:00
Sander van Grieken 4eccfdaa99 wizard: add script and derivation to keystorewizard flow. fixes #10063 2025-08-13 11:37:57 +02:00
SomberNight acc52e392c tests: wizard: imported addrs: validate each addr with "is_address()"
This was already done *in the GUIs*, but the backend should definitely
do at least sanity-check-level validation like this.
2025-08-12 18:42:35 +00:00
SomberNight 729003e557 wizard: move hw_unlock to base cls, and add test_wizard unlock_hw test 2025-07-21 03:33:43 +00:00
SomberNight b0464cc934 refactor 'init_wallet_wizard' hook a bit. add test_wizard trezor test 2025-07-21 02:40:17 +00:00
SomberNight e0d67524a1 tests: test_wizard: set wallet password and yes/no encrypt file 2025-07-21 00:07:23 +00:00
SomberNight a3dde40c69 test: test_wizard: add "old" electrum seed tests, and bip39+seed_ext 2025-07-20 23:26:09 +00:00
f321x 290da21187 qml: change wizard passphrase flow 2025-07-15 00:19:25 +02:00
f321x bb5b1b3932 wizard: move pasphrase flow from Qt into Abstract Wizard
moves the separate passphrase flow logic from Qt into the Abstract
Wizard base class so the same flow can be shared between Qt and QML
2025-07-11 16:39:31 +02:00
ThomasV 04da854291 follow-up 49d2f87dcf 2025-05-28 10:46:00 +02:00
ThomasV 49d2f87dcf wizard: make NewWalletWizard inherit from KeystoreWizard 2025-05-28 10:20:15 +02:00
ThomasV df4bbf1d72 KeystoreWizard: fix regression (follow-up e1ac476bcf) 2025-05-26 17:11:37 +02:00
ThomasV e1ac476bcf KeystoreWizard: support seed extension 2025-05-26 10:35:41 +02:00
ThomasV 51ced92f44 Qt: let user enable/disable keystores with seed or hw wallet 2025-05-24 11:18:07 +02:00
ThomasV 45c35c0b00 allow password encryption in hardware wallets 2025-05-23 18:42:54 +02:00
Sander van Grieken 82e3932aaf network: add oneserver/auto_connect both enabled checks, avoid connecting to random/multiple servers
if oneserver is enabled.
2025-05-19 18:07:29 +02:00
Sander van Grieken 1dfe2ccec0 qml: show option for single server in ServerConfig 2025-05-19 18:07:29 +02:00
SomberNight 151b64da84 wizard: "terms of use": add version number
follow-up https://github.com/spesmilo/electrum/pull/9794
2025-05-07 13:59:00 +00:00
f321x 802c316edb qt: show terms of use as first window on setup 2025-05-07 14:02:40 +02:00
ThomasV 8c028f7528 Add/remove plugins from GUI
- both internal and external plugins require GUI install
   (except internal HW plugins, which are 'auto-loaded' and hidden)
 - remove init_qt hook
 - in Qt, reload wallet windows if plugin enabled/disabled
 - add 'uninstall' button to PluginDialog
 - add 'add plugins' button to wizard hw screen
 - add icons to the plugin list
2025-04-15 08:35:10 +02:00
Sander van Grieken fea598cfbe network: create ProxySettings class replacing dict and encapsulating proxy related funcs,
allow enable/disable proxy without nuking proxy mode, host and port (explicit enable_proxy config setting),
move tor probe from frontend to backend code, add probe buttons for Qt and QML
2025-03-04 14:23:33 +01:00
Sander van Grieken fd12668da4 qt: additional validation for master keys in WCHaveMasterKey in wallet wizard 2024-10-28 14:30:56 +01:00
Sander van Grieken 4a37668b01 wizard: don't require seed extension to be set early.
this also fixes deferring multisig constraint validation when seed is same as another cosigner,
but still can have different seed extension
2024-10-24 16:07:00 +02:00
ThomasV d0693c311f new wizard: set keystore password. fixes #9147 2024-07-22 10:53:39 +02:00
SomberNight a2d5e31838 mnemonic: rename seed_type() fn
Some functions have an argument named "seed_type" in which it was annoying to call the seed_type() fn.
(especially for functions inside the same module)
2024-06-10 20:00:52 +00:00
SomberNight b95fbbb86f wizard: fix regression: allow passphrase for some '2fa' seeds
fixes https://github.com/spesmilo/electrum/issues/9088
2024-06-10 19:35:56 +00:00
Sander van Grieken b11d0062e8 wizard: log state when view not defined. ref #8815 2024-03-01 10:56:32 +01:00
Sander van Grieken d6ea2f1e30 wizard: log state when view not defined. ref #8916 2024-03-01 09:07:04 +01:00
SomberNight b4712397cc logging: (trivial) use repr() of seed_type
for more obvious empty string

related: https://github.com/spesmilo/electrum/issues/4326#issuecomment-1903747632
2024-02-22 11:45:18 +00:00
ghost43 7da3613b12 Merge pull request #8906 from accumulator/old_2fa_passphrase
wizard: skip/hide passphrase option for 'old' and '2fa' seeds (see #4326)
2024-02-21 17:03:43 +00:00
Sander van Grieken 8ce1e6453b wizard: skip/hide passphrase option for 'old' and '2fa' seeds (see #4326) 2024-02-21 17:15:10 +01:00
SomberNight 8ab3dcce5d keystore: API changes for from_seed/from_bip43_rootseed/bip39_to_seed
- force kwargs
- add type hints
2024-02-21 15:08:19 +00:00
SomberNight 46ce5d0f3d wizard: (trivial) follow-up prev 2024-02-13 14:52:52 +00:00
SomberNight 638fdf114e wizard: don't log sensitive values: replace blacklist with whitelist
- blacklist was missing yet another item "multisig_master_pubkey"
- let's just do a whitelist. a blacklist is too risky for my liking here.
2024-02-13 13:51:53 +00:00
SomberNight acae6751d2 wizard: do not log sensitive data (add more keys, again)
frankly this blacklist approach seems too fragile...
2024-01-31 11:23:45 +00:00
Sander van Grieken 82c21bc30d wizard: take hardware_device from correct location for cosigners. fixes #8808 2024-01-16 11:45:20 +01:00
SomberNight 683c6083c9 wizard: do not log sensitive data (add more keys) 2024-01-05 15:14:33 +00:00
Sander van Grieken ebcecdccce qt,qml: add checkboxes for advanced network config on welcome page, remove separate proxy-ask and autoconnect pages 2023-12-21 11:17:48 +01:00
Sander van Grieken 5e39ff49bc add missing accept handler for welcome page 2023-12-19 18:49:16 +01:00
Sander van Grieken a03b2d7bae qt,qml: add a welcome page as initial page for server connect wizard
This is much less intimidating than asking if the user wants to use a proxy
out of the gate.
2023-12-19 18:49:16 +01:00
ghost43 e814fa0b25 Merge pull request #8719 from SomberNight/202312_db_seedtype
wallet db: deduplicate "seed_type" field
2023-12-12 01:01:30 +00:00
Sander van Grieken b87d091a6d qt, qml: allow BIP39 seeds which fail checksum or wordlist (fixes #8720)
removes verifySeed from qebitcoin as this code was 99% duplicate of wizard.validate_seed
2023-12-06 16:12:57 +01:00
SomberNight f7cb523b9d wallet db: deduplicate "seed_type" field
In the db, the 'seed_type' field could be present both at the top-level and inside keystores.

Note:
- both fields had usages
- the top-level field was added in 2.8 re "initial segwit support" (3a64ec0f2e)
  - there was no db upgrade for it, so older files are missing it
  - if present, valid values can be electrum types but also
    other types supported by the wizard, e.g. "bip39"
- the keystore-level field was added in 4.1 (7b7bba2299)
  - there was a db upgrade when it was introduced, so old files also have it
  - if present, valid values can only be electrum types
- there is not much value in the top-level one having a non-electrum value,
  and those values were never used by other parts of the code
  - note that when creating a standard wallet from a bip39 seed, the seed is discarded.
    Only the derived xprv and the derivation path are kept. If we changed this and also kept the seed,
    e.g. to display it to the user, then it would make sense to save the seed type (e.g. "bip39").
    However storing that seed_type would make more sense at the keystore level (not top-level).

We delete the top-level 'seed_type' field.

```
{
    "keystore": {
        "seed_type": "segwit",
        ...
    },
    "seed_type": "segwit",
    ...
}
```
2023-12-01 18:43:37 +00:00