1585 Commits

Author SHA1 Message Date
jp1ac4
f14c3a7f75
spend: fix typo in enum variant 2024-03-27 17:59:16 +00:00
Antoine Poinsot
771bf16b58
Merge #1052: guix: use rust 1.63 for building lianad
2e191f3496285f0133a61ab7f0985489aa8406de guix: use rust 1.63 for building lianad (Antoine Poinsot)

Pull request description:

ACKs for top commit:
  darosior:
    self-ACK 2e191f3496285f0133a61ab7f0985489aa8406de

Tree-SHA512: 52f79ce71a1c61f966f4890149b169093f0ceeda35afb18980983557a05cb6892bafbdedd2f404d9f62c348b83524e9b20aa7beee66ee1ef2e53dcb2a3636925
2024-03-26 14:08:35 +01:00
Antoine Poinsot
2e191f3496
guix: use rust 1.63 for building lianad 2024-03-26 14:07:24 +01:00
Antoine Poinsot
8b6d1b1de6
Merge #1036: GUI: prepare v5 release
3d68582523103e73ff0bd4df44545248a35c431a gui: bump version to 5.0 (Antoine Poinsot)
fecaddb111366d55cb2a9f11662f550ba30397d4 gui: update to latest liana master (Antoine Poinsot)

Pull request description:

ACKs for top commit:
  darosior:
    ACK 3d68582523103e73ff0bd4df44545248a35c431a

Tree-SHA512: 2dbecc91c4f0494627a0510e8524fca526aa764dfd1197702befa90466b6cadebf42c3b5569dd04854ff99f676e55363e4cb47fa85710f574104d69234b4edf3
2024-03-25 16:56:41 +01:00
Antoine Poinsot
3d68582523
gui: bump version to 5.0 2024-03-25 16:55:41 +01:00
Antoine Poinsot
fecaddb111
gui: update to latest liana master 2024-03-25 16:34:36 +01:00
Antoine Poinsot
6d498db5e5
Merge #1034: Prepare v5 release
2dc8cb0d422d2f601c8662df71651c596d15ae36 README: add Coldcard as supported signing device (Antoine Poinsot)
abf15fea3c15ca5f0005417a1490e057d40e6c6b CHANGELOG: release notes for v5 (Antoine Poinsot)
b5c2375d0bb6bef6cd2f0d7534c303fe71118105 doc: update the signing devices compatibility documentation (Antoine Poinsot)
d9337121abe486389514c7b2336e39d2a1f0c8de Bump Liana version (Antoine Poinsot)
de05460ad01145df9bbf63ec58932a72dd1a14d3 doc/BUILD.md: correct MSRV (Antoine Poinsot)

Pull request description:

ACKs for top commit:
  darosior:
    self-ACK 2dc8cb0d422d2f601c8662df71651c596d15ae36 -- not code

Tree-SHA512: b84ea6dabf3ff41ac9b61c6ee8ef7cbbdb5942d13bff83b70e60c93e2f61a14db164b7987129cfde5fd59a667297e2832458f62f0e979d949667d0cc2c168f37
2024-03-25 16:33:51 +01:00
Antoine Poinsot
2dc8cb0d42
README: add Coldcard as supported signing device 2024-03-25 16:24:10 +01:00
Antoine Poinsot
abf15fea3c
CHANGELOG: release notes for v5 2024-03-25 16:24:09 +01:00
Antoine Poinsot
62efd33342
Merge #1001: commands: exclude immature coins from auto-selection
f9bae9cc0814d909a72a800d9f6d7ced2f99f06d database: add migration from db version 3 to 4 (jp1ac4)
2c96ef57bd606524223da037375ef351ea69e949 commands: exclude immature coins from coin selection (jp1ac4)
3a7c151674c487dd11f4f2d1db78d468f5f087a9 database: allow for coinbase transactions to change addresses (jp1ac4)

Pull request description:

  As a follow-up to #873, this ~~adds a comment to make clear that immature coins are not included as candidates for auto-selection~~ excludes immature coins from auto-selection.

  An unconfirmed coin could be both immature and marked as change, as the latter only depends on whether the address is derived from the wallet's change descriptor. I've also removed a corresponding assertion that may not always hold.

ACKs for top commit:
  darosior:
    ACK f9bae9cc0814d909a72a800d9f6d7ced2f99f06d -- this is very nice. Again, great catch. And thanks for adding a more extensive unit test.

Tree-SHA512: 12abe3dd18723db58ff701f664c6085e7fd29d39fefa7206e3e00fa5fb3e3b4320720c183a9719a3a0f3124896347ac74571b45a54bd504d674f779913466c16
2024-03-25 16:16:05 +01:00
Antoine Poinsot
53f9c72185
Merge #1035: fix receive panel: reset addresses on reload
65f4a7581359edd7d9a1a593273238485955a3e6 fix receive panel: reset addresses on reload (edouardparis)

Pull request description:

  We reintroduce previous behavior:
  Reset the list when user leave and come back to the receive panel.

  close #1026

ACKs for top commit:
  jp1ac4:
    ACK 65f4a75813.

Tree-SHA512: 23aa6f58d2759f8d39d5068ebaa45a1529fd5f2692f0147a2b42e70423eb7ac3d0be26c5a00af1394e0cea22bca5c4e6a49f85b033ff2abcd392bf9fbd43c58d
2024-03-25 15:57:25 +01:00
edouardparis
65f4a75813 fix receive panel: reset addresses on reload
We reintroduce previous behaviour:
Reset the list when user leave and come back to the receive panel.
2024-03-25 14:56:07 +01:00
Antoine Poinsot
b5c2375d0b
doc: update the signing devices compatibility documentation 2024-03-25 13:30:33 +01:00
jp1ac4
f9bae9cc08
database: add migration from db version 3 to 4 2024-03-25 11:49:48 +00:00
edouardparis
05e4e38e68
Merge #1031: gui: fix condition to create draft spend
68f8dbc43ba00de04b1ee33e0e8f2bd77242b127 gui: fix condition to create draft spend (jp1ac4)

Pull request description:

  This issue was encountered by @pythcoiner in https://github.com/wizardsardine/liana_manual_testing/blob/master/tests/v5/v5-pre-rc1/pyth.md#comments.

  The `balance_available` value was not being refreshed when new coins were received and so it was sometimes not possible to click Next.

  It's enough, however, to check the amount left to select is 0, and so both the `balance_available` and `total_amount` fields can be removed.

ACKs for top commit:
  edouardparis:
    ACK 68f8dbc43ba00de04b1ee33e0e8f2bd77242b127

Tree-SHA512: b50519beb094e2344273a44bcc21c077a568c31d9cd0d96a29117b42aef146919b18abf8cfea15c5b15962cdf553a547435d464feea4e87fdb33cfcab7394392
2024-03-25 11:48:03 +01:00
jp1ac4
68f8dbc43b
gui: fix condition to create draft spend
The `balance_available` value was not being refreshed when new
coins were received and so it was sometimes not possible to
click Next.

It's enough, however, to check the amount left to select is 0,
and so both the `balance_available` and `total_amount` fields
can be removed.
2024-03-25 08:46:44 +00:00
edouardparis
b10198d54c
Merge #1028: fix transaction update after label change
dff854a1adc25d5ac83d86267cfeee471d586641 fix transaction update after label change (edouardparis)

Pull request description:

  close #1027

ACKs for top commit:
  edouardparis:
    Self-ACK dff854a1adc25d5ac83d86267cfeee471d586641

Tree-SHA512: 9823ea97fc62a152f450645cf08fb24176356ed0f766eb17b5c6615dbabb6c3ca232b6c38aaaf60f80b4a1da8fb99862001d3f5d4d5c3d2c43600f3a411811a4
2024-03-25 09:03:17 +01:00
edouardparis
dff854a1ad fix transaction update after label change 2024-03-23 15:54:02 +01:00
Antoine Poinsot
d9337121ab
Bump Liana version 2024-03-22 16:42:33 +01:00
Antoine Poinsot
de05460ad0
doc/BUILD.md: correct MSRV
Point to contributing.md, so we only have a single place to modify.
2024-03-22 16:38:04 +01:00
Antoine Poinsot
3b31871514
Merge #1018: Gui handle poller error
a7f2bccb9a443c78a9788eedce06e2d753f7d11e gui: handle daemon stop error (edouardparis)
924df8e1d5440159306504c0ddbbee6f962cd7c5 bump liana:master (edouardparis)

Pull request description:

  based on #986

ACKs for top commit:
  darosior:
    ACK a7f2bccb9a443c78a9788eedce06e2d753f7d11e

Tree-SHA512: 24c48948f10eed7f04dcab0779b75d89c5fd40441c04dffb6f4e5b3e682ca2ca36de51cdc69e7679ed262c4e92691d789c29822972f5c99290c54d13c7dc3472
2024-03-22 15:21:12 +01:00
edouardparis
a5887f25dd
Merge #1025: fix wrong index in receive qrcode
615be66655f1a75e14122272ac9ec2dbc3a6a902 fix wrong index in receive qrcode (edouardparis)

Pull request description:

ACKs for top commit:
  pythcoiner:
    utACK 615be66655f1a75e14122272ac9ec2dbc3a6a902
  jp1ac4:
    ACK 615be66655. I checked that the index shown by the QR matched the index shown when verifying on hardware device.

Tree-SHA512: 89b8c40975bedd07170db30383f619d7f33752a9c27537f9bb9176038a4fc3473a6fb0ca47e48b932011de96ee315d9fc22ff7cad1f416b0be6ef0fd11e67295
2024-03-22 14:44:17 +01:00
edouardparis
615be66655 fix wrong index in receive qrcode 2024-03-22 13:57:08 +01:00
edouardparis
a7f2bccb9a gui: handle daemon stop error 2024-03-22 11:52:58 +01:00
edouardparis
924df8e1d5 bump liana:master 2024-03-22 11:52:58 +01:00
Antoine Poinsot
2aa8874456
Merge #1010: Update our state upon broadcasting a transaction
58c71c794a050a2df460aec241c90efe89cf9ae0 lib: gate the RPC server availability on the 'daemon' feature (Antoine Poinsot)
b7fde6a9e433afed1f23cabbab59093d953b2d54 commands: update our state immediately after broadcasting a tx (Antoine Poinsot)
1cf42d9aeec34b184d93484ea25d9a843a45bc3f poller: introduce a communication channel with the poller thread (Antoine Poinsot)
f6ce85cfd32f669f6eb061ed8b367f4182512b95 lib: remove the panic hook. (Antoine Poinsot)
b4fe963a5b2817ef07f3d96ddcc3c71f9a6606d3 lib: encapsulate the handling of both threads (poller and RPC server) (Antoine Poinsot)
fd5387f954948303cf8403925062f577ae7bc49e poller: use the same database connection across one update round (Antoine Poinsot)
ea6923e2c075416882304c263b29be99ac24f824 poller: make the updating process into its own function. (Antoine Poinsot)

Pull request description:

  Fixes https://github.com/wizardsardine/liana/issues/887.

  This takes a couple commits from #909 but takes the approach from there in another direction: we don't externalize the poller, since only a single instance must be ran. Instead we properly keep track of the (up to) two threads we manage in the `DaemonHandle` and provide a way for a user of the library to check for errors in any of the threads.

  This approach allows us to 1) communicate with the poller thread from inside the Liana library/daemon (here we leverage this to tell it to poll) 2) eventually (#909) expose all internal errors from the library to the user instead of panic'ing internally.

  See the commit messages for details.

ACKs for top commit:
  darosior:
    ACK 58c71c794a050a2df460aec241c90efe89cf9ae0 -- did another pass and Edouard tested this in the GUI.

Tree-SHA512: 0ab436b2a187f9d124ed8861a47f03bb1e9252cdc4f3b5c4308db07be738c78b2ea3f07dc0a9586e3d5bd34f071a1e2a2569cad30676c9cc004e39260ebb94ca
2024-03-22 11:49:15 +01:00
edouardparis
5527e635a6
Merge #1016: gui: clear RBF modal if selected transaction changes
afd55299ed2fda5d2ee19232cb6c67397acd9b49 gui: clear rbf modal for different tx (jp1ac4)

Pull request description:

  As a follow-up to #959, this clears the RBF modal if the selected transaction changes. e.g. after going to the replacement transaction from the RBF modal and then returning to the Transactions panel and selecting a different transaction.

ACKs for top commit:
  edouardparis:
    ACK afd55299ed2fda5d2ee19232cb6c67397acd9b49

Tree-SHA512: f04c88941c162b08239efc4f9428bac7ebd0f9488229a6a454285cde8da61f1bd1b9aa58662c84a4f152d4c80fd06812201defd092fd294292289249fba0ef94
2024-03-22 10:33:34 +01:00
Antoine Poinsot
58c71c794a
lib: gate the RPC server availability on the 'daemon' feature
This is a temporary hack. We should improve this API.
2024-03-21 12:50:04 +01:00
Antoine Poinsot
b7fde6a9e4
commands: update our state immediately after broadcasting a tx 2024-03-21 12:49:12 +01:00
Antoine Poinsot
1cf42d9aee
poller: introduce a communication channel with the poller thread
We'll need to ask the poller thread another thing besides to shut down,
so it's cleaner to start using proper messages.

The mpsc channel in the std lib was buggy for awhile but since they
merged crossbeam and are using this behind the hood now it should be
fine starting with Rust 1.67. That's (slightly) higher than our MSRV but
it's what we use for releases so that's reasonable. See
https://github.com/rust-lang/rust/issues/39364 for details.
2024-03-21 12:47:11 +01:00
edouardparis
bfc55fb084
Merge #1019: [GUI] tab on TextInputs
158bdc8a70bcd1a5dae34a842e7ac0bb39c20127 tab on TextInputs (pythcoiner)

Pull request description:

  this PR  introduce handling of new events in all views:
  - `Tab` will move cursor to the next TextInput
  - `Tab` + `Shift` will move the cursor to previous TextInput

ACKs for top commit:
  edouardparis:
    ACK 158bdc8a70bcd1a5dae34a842e7ac0bb39c20127

Tree-SHA512: 018fa55bfc4cae597ff82e7663ce43b906086b524eb3f95193a69e296c60a93d1a20d453221a7747037a84313fdcbf1d84cd970794b512841b9387385147bda1
2024-03-20 20:26:43 +01:00
Antoine Poinsot
f6ce85cfd3
lib: remove the panic hook.
We now provide a way for a user of the daemon to poll for errors in the
threads, so aborting the process on a thread panic shouldn't be
necessary anymore.
2024-03-20 20:22:42 +01:00
Antoine Poinsot
b4fe963a5b
lib: encapsulate the handling of both threads (poller and RPC server)
This is inspired from the work in
https://github.com/wizardsardine/liana/pull/909 (specifically
d8c59e30ed)
to externalize the management of the poller thread. However, there may
be only one poller thread. Starting more than one can lead to a crash or
potentially to data corruption. Therefore it feels safer to manage it
internally.

Instead of exposing the management of the poller to the user of the
library, we manage both threads inside the `DaemonHandle` data structure
and expose a way for a user to check for errors which may have occured
in any of the threads.

This makes it possible to:
1. Eventually propagate errors from the threads to the user of the
   daemon (https://github.com/wizardsardine/liana/pull/909);
2. Communicate internally with the poller thread, for instance to
   trigger a poll immediately (following commits).
2024-03-20 20:22:41 +01:00
Antoine Poinsot
fd5387f954
poller: use the same database connection across one update round 2024-03-20 20:22:32 +01:00
Antoine Poinsot
ea6923e2c0
poller: make the updating process into its own function. 2024-03-20 20:22:31 +01:00
pythcoiner
158bdc8a70 tab on TextInputs 2024-03-20 20:16:01 +01:00
jp1ac4
afd55299ed
gui: clear rbf modal for different tx 2024-03-20 18:50:04 +00:00
jp1ac4
2c96ef57bd
commands: exclude immature coins from coin selection
An immature coin could in principle be marked as change
as this depends only on whether the address is derived from
the wallet's change descriptor.
2024-03-20 18:29:38 +00:00
jp1ac4
3a7c151674
database: allow for coinbase transactions to change addresses
`is_change` is `true` for a coin if its address is derived
from our change descriptor and could in principle be used for a
coinbase transaction.

The functional test was provided by darosior in a PR comment:
https://github.com/wizardsardine/liana/pull/1001#pullrequestreview-1948564150
2024-03-20 18:29:37 +00:00
Antoine Poinsot
4f78d3b3d0
Merge #986: Gui taproot
b7f35c03300710c71f5e8a4af471260f0a35ddc0 Add installer dropdown for advanced settings (edouardparis)
59a4b181c1e1be64ed8122edd95a7378ebef39af fix: merge tap_script_sigs from signed psbt (edouardparis)
02a52b98bcdbcf62d42c748b154beaee76d0f26a add ledger version support for tapminiscript (edouardparis)
2debb32181f2365fb4e30d9d7e28a4cb7c86cd65 Add taproot support to installer descriptor editor step (edouardparis)
8bc0cac00a4894c316285223924e91a85f1c6088 gui: async-hwi:0.0.16 (edouardparis)
4a4c78d5f7ed43aae1199481fb060e77d1d88c80 bump liana:master (edouardparis)

Pull request description:

  based on #985

ACKs for top commit:
  darosior:
    tACK b7f35c03300710c71f5e8a4af471260f0a35ddc0 -- i've lightly tested this a couple times. It's good enough to get in and get tested along with the other changes.

Tree-SHA512: 4481be4797cf6fa901de9fec989837381c7817d18dd2c9a45ff1802a15982d1251696e577fb23da2d4ca9f0ed27044dade28f0e7b56703594dae4b3a5065306b
2024-03-20 19:19:58 +01:00
edouardparis
d7b8f53c1f
Merge #992: [GUI] Limit amount to 8 decimal digits
9415dc939080caa5bf41e93c8717dd0b75bb6a0e new_amount_btc (pythcoiner)

Pull request description:

  This PR replace #977 and fixes #798
  I've followed jp1ac4 advice and create a `Form::new_amount_btc()` method that act like `Form::new_trimmed()` ~w/ few more (filtering) features:~
  ~- allow only input of "0123456789,." characters~
  ~- "," is replaced by "."~
  ~- only one "." separator~
  ~- maximum 8 digit after separator~

  ~these features works for keyboard input or paste~

  ~i've tryied to add a "0" in case the String start with a "." but this make the cursor have a bad location and i do not find a way to control the cursor location w/ iced, so i revert this feature~

ACKs for top commit:
  jp1ac4:
    ACK 9415dc9390.
  edouardparis:
    ACK 9415dc939080caa5bf41e93c8717dd0b75bb6a0e

Tree-SHA512: c8387e5fd9c3c030a71d0ba4a7aa3cd7f834215000f04e4e4d6b689c6bc9bf9dcecbf8b0799882f00f92d5bb8a656714f5149479e7f25e608a0ce96326a6e630
2024-03-20 18:37:43 +01:00
edouardparis
6f6c35d0c6
Merge #1023: gui: record updates to aliases
67ebde1432c5cea5afe34f4fa79e2e9a119875a6 gui: add wallet to reload (jp1ac4)

Pull request description:

  This is to fix https://github.com/wizardsardine/liana/issues/1017.

  It adds the `wallet` to the `reload` trait method so that changes are recorded.

  As part of this change, the `TransactionsPanel` now has a `wallet` field to be used when calling its own `reload` method.

ACKs for top commit:
  edouardparis:
    ACK 67ebde1432c5cea5afe34f4fa79e2e9a119875a6

Tree-SHA512: 273684dd7bfbf19b40d9e19e33561cd0428e2d7d93a2faa4409f7dab836bd52e907d7e95a1f95a05476363b8766d630c73be7a64775a2c52ca9f0d5c2509f812
2024-03-20 17:54:30 +01:00
edouardparis
b7f35c0330 Add installer dropdown for advanced settings 2024-03-20 17:33:39 +01:00
edouardparis
59a4b181c1 fix: merge tap_script_sigs from signed psbt 2024-03-20 17:33:39 +01:00
edouardparis
02a52b98bc add ledger version support for tapminiscript 2024-03-20 17:33:39 +01:00
edouardparis
2debb32181 Add taproot support to installer descriptor editor step 2024-03-20 17:33:39 +01:00
edouardparis
8bc0cac00a gui: async-hwi:0.0.16
for the new implem of PartialOrd for
async_hwi::DeviceKind
2024-03-20 17:33:39 +01:00
edouardparis
4a4c78d5f7 bump liana:master 2024-03-20 17:33:39 +01:00
jp1ac4
67ebde1432
gui: add wallet to reload 2024-03-20 12:41:54 +00:00
edouardparis
19d9a4b26a
Merge #1022: gui: sort events and txs after push in the list
ff7e30794b7c79c3aa237dde33f52e716703c434 gui: sort events and txs after push in the list (edouardparis)

Pull request description:

  when a pending tx is confirmed, it is pushed in the HistoryTransaction list at the end. It should be first in the list. We sort now the list in order to make sure it will be always the case.

ACKs for top commit:
  edouardparis:
    Self-ACK ff7e30794b7c79c3aa237dde33f52e716703c434

Tree-SHA512: 06c1c48728b7623605a493442eeaca3319afbb29c90e676f42ecd7d6d90843e69947759b538f0acb1324d3bb8c68029b38a66ddb8536db3291f706a57d16c28c
2024-03-20 13:18:49 +01:00