Commit Graph

1372 Commits

Author SHA1 Message Date
SomberNight
d0f0669e8f crash reporter: send traceback for full chain of exceptions
Previously if there was a chain of exceptions, we were only
sending the traceback for the final exception.

E.g.
try:
    raise ExcOne("asdasd")
except ExcOne() as e:
    raise ExcTwo("qweqwe") from e

^ we would lose all info about ExcOne, including potentially many lines of trace
2021-07-12 19:24:58 +02:00
SomberNight
8945dcda7a qt init: on exc, let crash reporter appear instead of silently dying
related: https://github.com/spesmilo/electrum/issues/7390

```
20210706T091826.513398Z |    ERROR | __main__ | daemon.run_gui errored
Traceback (most recent call last):
  File "run_electrum", line 407, in handle_cmd
  File "electrum\daemon.py", line 584, in run_gui
  File "electrum\gui\qt\__init__.py", line 414, in main
  File "electrum\gui\qt\__init__.py", line 291, in wrapper
  File "electrum\gui\qt\__init__.py", line 316, in start_new_window
  File "electrum\gui\qt\__init__.py", line 361, in _start_wizard_to_select_or_create_wallet
  File "electrum\wallet_db.py", line 73, in __init__
  File "electrum\wallet_db.py", line 106, in load_data
  File "electrum\util.py", line 412, in <lambda>
  File "electrum\util.py", line 408, in do_profile
  File "electrum\wallet_db.py", line 175, in upgrade
  File "electrum\wallet_db.py", line 540, in _convert_version_24
ValueError: too many values to unpack (expected 2)
```
2021-07-07 19:19:43 +02:00
SomberNight
7236dae94b kivy wizard: add explicit warnings at seed creation 2021-07-05 19:40:02 +02:00
SomberNight
82bfe1ba9c kivy crash reporter: warn users not to share sensitive info
Previously only Qt had the warning.
2021-07-05 18:59:02 +02:00
SomberNight
cfdadeda67 qt: some fixes for send/receive tabs when window is small 2021-07-05 17:26:29 +02:00
BamaHodl
ea19b665ff Friendlier minimum sizing for small screens for air-gapped signing functionalities, i.e. main window and transaction dialog 2021-07-02 12:04:41 -05:00
SomberNight
013cf869f1 qt: qrreader: keep both old and new toolchain; try to abstract it away 2021-06-25 16:52:02 +02:00
SomberNight
c1dbcab9bb qt: new qrreader using QtMultimedia; drop CalinsQRReader(mac)
This commit ports the work of EchterAgo and cculianu from Electron-Cash,
to implement a new toolchain to scan qr codes.

Previously, on Linux and Win, we have been using zbar to access the camera
and read qrcodes; and on macOS we used CalinsQRReader (an objective-C
project by cculianu).

The new toolchain added here can use QtMultimedia to access the camera,
and then feed that image into zbar. When used this way, zbar needs
fewer dependencies and is easier to compile, in particular it can be
compiled for macOS.

The new toolchain works on all three platforms, with some caveats
(see code comments in related commits) -- so we also keep the end-to-end
zbar toolchain; but at least we can drop CalinsQRReader.

The related changes in Electron-Cash are spread over 50+ commits (several PRs and direct
pushes to master), but see in particular:
https://github.com/Electron-Cash/Electron-Cash/pull/1376

some other interesting links:
b2b737001c
163224cf1f
3b31e0fcb1
eda015908e
https://github.com/Electron-Cash/Electron-Cash/pull/1545
052aa06c23
2021-06-25 16:51:58 +02:00
SomberNight
129d5ba417 qt: (fix) make ScanQRTextEdit inherit Logger
the error handling in `qr_input()`, around line 81,
references `self.logger`, which would raise
2021-06-25 16:50:52 +02:00
SomberNight
bc5ec96387 kivy: scan_qr_non_android: handle user closing window
handle user closing window without scanning a qr code
(i.e. cancelling scan)
2021-06-25 16:44:39 +02:00
ghost43
b828627dc6 Merge pull request #6917 from andrewkozlik/slip39
SLIP-0039 wallet recovery
2021-06-22 19:44:02 +02:00
SomberNight
60e0cd65cf slip39: follow-ups
- fix kivy wizard restore-from-seed
- qt seed dialog: disable "next share" if current share is invalid
- fix tests: file paths should not depend on $PWD (working dir)
2021-06-22 19:24:16 +02:00
SomberNight
57e52da77f lnaddr: clean-up SEGWIT_HRP vs BOLT11_HRP confusion
With signet, SEGWIT_HRP != BOLT11_HRP, so the previous "currency" string
became a flawed concept. Instead we pass around net objects now.
2021-06-22 16:16:21 +02:00
ghost43
5dff461aaa Merge pull request #7282 from wakiyamap/add_signet
add signet support
2021-06-22 16:15:38 +02:00
SomberNight
ba8af9310f kivy addresses list: add "funded or unused" filter option
note: "Funded or Unused" shortened to "Funded|Unused" to save horizontal space
2021-06-19 16:19:24 +02:00
Chris
3ff537465b qt addresses list: add "funded or unused" filter option 2021-06-19 15:50:08 +02:00
SomberNight
90579ccfea kivy: fix paying bip70 invoices
this is a regression from #7234
2021-06-19 14:57:15 +02:00
SomberNight
c49d6995d2 kivy: fixes regression where non-LN wallet cannot open settings...
fixes https://github.com/spesmilo/electrum/issues/6262#issuecomment-863087368
2021-06-17 11:48:58 +02:00
SomberNight
3adb309d49 kivy settings: more intuitive "recoverable channels" toggle
Previously if the wallet did not have a deterministic node id,
the wallet info dialog could say "lightning enabled, non-recoverable channels", but
the "recoverable channels" setting could be toggled and might even say "yes".
2021-06-11 15:00:06 +02:00
SomberNight
325cd950a4 kivy: settings dialog: call update() from __init__
this is a clearer/easier-to-understand API
2021-06-11 14:51:09 +02:00
ghost43
c43896fe6a Merge pull request #7263 from SomberNight/202104_android
reproducible build for Android apk
2021-06-10 13:19:41 +00:00
SomberNight
3c9346cce2 android build: attempt at reproducible builds 2021-06-09 18:34:09 +02:00
Thorsten Hempel
fbf76af2c5 Update wallet backup access (#7300) 2021-06-07 16:46:25 +00:00
SomberNight
a425ab0301 invoices/lnaddr: LNInvoice.from_bech32 now raises InvoiceError
rm LnAddressError

fixes https://github.com/spesmilo/electrum/issues/7321
related https://github.com/spesmilo/electrum/pull/7234
2021-06-07 14:46:30 +02:00
SomberNight
cd50472b18 kivy: (fix) forbid creating LN payreq if LN is disabled for wallet
fix #6346

see https://github.com/spesmilo/electrum/issues/6346#issuecomment-854655931
2021-06-04 14:11:19 +02:00
SomberNight
9c1a51547a kivy: (trivial) clean-up imports in screens.py 2021-05-06 18:19:55 +02:00
SomberNight
3b0209a3a5 follow-up prev 2021-05-06 18:18:52 +02:00
bitromortac
853e912885 invoice: fail gracefully with large amount 2021-05-06 15:37:17 +02:00
wakiyamap
639cd94dcb add signet support 2021-05-06 19:47:22 +09:00
Andrew Kozlik
0dce13a1dd Implement SLIP-0039 wallet recovery. 2021-04-30 19:55:47 +02:00
SomberNight
ef3293ab6a kivy: relocate atlas so it can be made a submodule later 2021-04-30 16:44:32 +02:00
bitromortac
97b31880d7 kivy: improve openchannel dialog for trampoline 2021-04-30 13:32:07 +02:00
ThomasV
04b1e8718a tx dialog (Qt): if possible, save psbt and fully signed transaction under the same basename. 2021-04-26 12:31:04 +02:00
SomberNight
86ba37dc1c qt send tab: when clicking "Max", show tooltip explaining max amt
Beginner users often ask why they cannot send their full balance.
Hence, this intends to reduce support load.
In terms of UI, maybe there is a better way to do this but this was
easy to do and still a good first step IMHO.
2021-04-23 17:52:19 +02:00
SomberNight
37bde9baf9 qt: cpfp: fix handling "no dynamic fee estimates"
fixes #7237
2021-04-23 17:27:00 +02:00
SomberNight
1436760d3d qt coins tab: Ctrl+F now searches the whole prevout string
(not just the truncated string that is displayed in the list)
2021-04-22 20:56:00 +02:00
SomberNight
3b77340671 Qt MyTreeView: rm usages of Qt.UserRole, use explicit roles instead
This is a bit more verbose but it explicitly shows what data is being
used where.

Also rm implicitly setting editable_columns based on stretch_column.
2021-04-22 20:37:14 +02:00
ThomasV
8ce94248d4 kivy: update wizard message: pin->password 2021-04-21 10:33:11 +02:00
SomberNight
11bb39ee82 kivy: implement freezing channels 2021-04-19 18:57:47 +02:00
SomberNight
4e0a20ae46 gui messages: mv one more message to messages.py 2021-04-19 18:57:43 +02:00
SomberNight
0ab9687734 kivy: make ActionDropdown disappear when an action is selected 2021-04-19 18:57:39 +02:00
SomberNight
e15a11a437 kivy: use ActionDropdown in ChannelDetailsPopup 2021-04-19 18:04:15 +02:00
SomberNight
b8ec85d615 kivy tx dialog: abstract away ActionDropdown, mv into its own file 2021-04-19 18:01:22 +02:00
SomberNight
b27925c6c5 kivy tx dialog: dscancel btn text was too long
see first part of #6868
2021-04-19 16:40:57 +02:00
SomberNight
4f6c0c2c61 kivy bump fee dialog: handle no dynamic fee estimates
fix #7220
2021-04-19 16:06:43 +02:00
ThomasV
8f95dc2640 Merge pull request #7211 from SomberNight/202104_keep_early_logs
logging: don't lose log messages during early startup
2021-04-18 20:56:24 +02:00
Benoit Verret
2cc16f8ed4 Avoid hiding QR codes with help_text
In some situations, if a QR code's data and help_text were too long,
the QR code was unscannable.
2021-04-17 22:54:37 -04:00
SomberNight
f53f177203 kivy swaps: handle no dynamic fee estimates
fixes #7215
2021-04-15 18:50:54 +02:00
SomberNight
9a38c4d2a1 logging: don't lose log messages during early startup
Previously, during early-startup (until configure_logging(config) is
called in run_electrum),
- the stderr log handler lost all log messages below warning level, and
- the file log handler lost all log messages regardless of log level

We now instead start buffering log messages in memory as soon as
electrum.logging is imported. The buffer is dumped into the
stderr and file log handlers when they are fully set up, and then
the buffer is discarded (and the temporary log handler is removed).

Note that messages are not logged until configure_logging() is called.
Previously WARNING/ERROR messages would get logged immediately to stderr,
but not anymore. This was changed so that the order of the log messages
can be kept intact. (if we log WARNINGs immediately, but need to delay
INFOs until the config is available, messages would either be out of order
or alternatively there would be duplicates)

Relatedly, we now follow the recommendation of the python docs re
logging for libraries [0]: we try to only configure logging if running via
run_electrum (the main script) and not when e.g. a 3rd party script
imports electrum.

[0]: https://docs.python.org/3/howto/logging.html#configuring-logging-for-a-library
2021-04-14 19:14:26 +02:00
SomberNight
12fac3a167 fix running with --offline 2021-04-13 19:05:07 +02:00