1658 Commits

Author SHA1 Message Date
edouardparis
99e4af84ff bum async-hwi 0.0.18
Include coldcard 0.12.2 that fixes the
nightly build on MacOS
2024-05-24 11:39:56 +02:00
edouardparis
b22e9e8f71
Merge #999: Add jade
570f0af35b84372d0e4684f9afd42ea7c900b43e installer: refresh hw list only if modal is open (edouardparis)
4e2015922d2a40ce934440a23f18fe8d1323ebcc doc: add Jade section to signing devices (edouardparis)
6b0c93c5c3fe2a5b6e7a3dfe49755c6edc704510 Add jade hardware wallet (edouardparis)

Pull request description:

ACKs for top commit:
  edouardparis:
    Self-ACK 570f0af35b84372d0e4684f9afd42ea7c900b43e

Tree-SHA512: 3f27c8bcc7afa74f751de245b44f53ce3e99b42175809566e2bf15832600d6466afd56684de08333a11079b7cb1daca3412e7224299d98f0c76cf2575b48494d
2024-05-06 18:11:44 +02:00
edouardparis
570f0af35b installer: refresh hw list only if modal is open 2024-05-06 14:50:45 +02:00
edouardparis
4e2015922d doc: add Jade section to signing devices 2024-05-06 14:50:45 +02:00
edouardparis
6b0c93c5c3 Add jade hardware wallet 2024-05-06 14:50:45 +02:00
edouardparis
b7a72e064d
Merge #1084: Remove legacy harware_wallets field from gui config
45c7b850a64318152e245b269ffef25d63033384 Remove legacy harware_wallets field from gui config (edouardparis)

Pull request description:

  Ledger hmacs, wallet name and fingerprint labels where moved one year ago in the settings.json file.
  Here the commit of the new settings module:
  bf1e9e4b80

  A second commit in v4 checked that settings.json is present otherwise it does the migration from the gui configuration file to the settings file:
  3eeba08248

  We remove the legacy field from the config field so the wallet module does not depend on the config module anymore to load hardware wallet information.

  Tested on gui.toml config with legacy field hardware_wallets and it does not fail to launch.

ACKs for top commit:
  jp1ac4:
    ACK 45c7b850a6.

Tree-SHA512: a13c042c3842c732117ee8099d5a90d28462c5916408edb9fcee5518427acca5b737cd6e1ebe77a94e7d8dabf7a6bdd124ddf927ed850c58b5f980c6efe4f391
2024-05-03 18:05:31 +02:00
edouardparis
513ea7b18d
Merge #1079: Gui: enable advanced text shaping 🎨
9cd36a76d09a1d563769f9c3dac81ec8ce1005eb gui: enable advanced text shaping (edouardparis)

Pull request description:

  Set text shaping and font fallback to text widget.
  It enable Emojis

  based on #597

ACKs for top commit:
  edouardparis:
    Self-ACK 9cd36a76d09a1d563769f9c3dac81ec8ce1005eb

Tree-SHA512: 1ed1621135c5bfbd624a9cf4bd96385db42d021e8432334429b2ec376d769715920d90d76cc000f43625367bdac85444b131be249197e4fab4d5629c7a0138e1
2024-05-03 15:26:53 +02:00
edouardparis
9cd36a76d0 gui: enable advanced text shaping
enable text shaping and font fallback,
It allows emojis
2024-05-03 14:48:24 +02:00
Antoine Poinsot
b602640d16
Merge #597: Iced 0.12
52e32b6a69c751f68e461f4e858170e4ade6619d Update iced patch branch in guix build (edouardparis)
acea67bc35738843144204539833b5767f6c936e Remove transaparency from PickList for tiny-skia (edouardparis)
7801d8cb1f11511cd8e11a556add9e8c62656780 Change descriptor view in installer behind scrollable (edouardparis)
c39d544566a76b126fdc4613197d5b937f72fad3 Use wgpu with tiny-skia fallback (edouardparis)
4920291d04302a5d73196b1d8eeb6ce05d7753a2 fix ui button and badge width (edouardparis)
de371116371c61c5cd2e3bd0d44cdc849f14c5cf Change text size (edouardparis)
a24d9416f62712fc5a5c6fe5d8fa619d06f4006a gui: bump msrv 1.70 (edouardparis)
fdcc30236721f2cf7bdffe788127a35ca376d453 gui: iced-0.12 (edouardparis)
64a626d7e871fd82db27b8ddf773231fe1361755 gui: bump iced 0.10 (edouard)

Pull request description:

  This PR does the migration from iced 0.9 to iced 0.12.

  This new iced version has impact on the fonts size. I reverted the size according to the original UX figma file.

  The new backend renderer is the `wgpu` with `tiny-skia` as a fallback. `wgpu` is the first class citizen of the iced renderers, it supports everything. The `tiny-skia` has some layout problems and does not support some features that is the reason why this PR introduces tiny change in the theme or long string display (ad69711c4a, 88fd0f18e2).

  In order to keep the MSRV as low as possible, a custom patch of the crates `iced_winit`,`iced_style`, `iced_futures` is added to the Cargo.toml

ACKs for top commit:
  darosior:
    ACK 52e32b6a69c751f68e461f4e858170e4ade6619d -- it's been tested a bunch, in particular by Kevin.

Tree-SHA512: 6afda45c227f0dd864c59aee100895af3f0d511c5a425f4d032c5891f900f2e438de778adaa82c5213dba768e608bf7610b6c78d4cb10a2d7ae59f5b132938f4
2024-05-03 13:32:58 +02:00
edouardparis
52e32b6a69 Update iced patch branch in guix build 2024-05-03 12:27:12 +02:00
edouardparis
acea67bc35 Remove transaparency from PickList for tiny-skia 2024-05-03 12:27:12 +02:00
edouardparis
7801d8cb1f Change descriptor view in installer behind scrollable
View is broken because of the long line of text of the
descriptor, current fix is to put it behind a scrollable
until we find a better way to display it to the user.
2024-05-03 12:27:12 +02:00
edouardparis
c39d544566 Use wgpu with tiny-skia fallback
to enable the fallback:
ICED_BACKEND=tiny-skia cargo run
2024-05-03 12:27:12 +02:00
edouardparis
4920291d04 fix ui button and badge width 2024-05-03 12:27:12 +02:00
edouardparis
de37111637 Change text size 2024-05-03 12:27:12 +02:00
edouardparis
a24d9416f6 gui: bump msrv 1.70 2024-05-03 12:27:12 +02:00
edouardparis
fdcc302367 gui: iced-0.12 2024-05-03 12:27:12 +02:00
edouardparis
45c7b850a6 Remove legacy harware_wallets field from gui config
Ledger hmacs, wallet name and fingerprint labels where
moved one year ago in the settings.json file.
Here the commit of the new settings module:
bf1e9e4b80

A second commit in v4 checked that settings.json is present
otherwise it does the migration from the gui configuration file
to the settings file:
3eeba08248

We remove the legacy field from the config field so the wallet module
does not depend on the config module anymore to load hardware wallet
information.
2024-05-02 15:31:51 +02:00
edouard
64a626d7e8 gui: bump iced 0.10 2024-05-02 14:46:31 +02:00
Antoine Poinsot
6b225777b2
Merge #1085: fix ci: bump ahash dep and add bitcoind macos arm64 binary hash
89912105734175e0f2a5e53eb6165b12055cc2c1 Add macos arm64 binary to bitcoind download (edouardparis)
c21004badb10d00990da088d4df659b25263a23f bump ahash dependency to fix macos build (edouardparis)

Pull request description:

  - bump ahash dependency to fix macos build
  - ci requires now macos aarch64 for the liana-gui tests on macos, sha256sum is added for bitcoind-26.1-arm64-apple-darwin.tar.gz (https://bitcoincore.org/bin/bitcoin-core-26.1/)

ACKs for top commit:
  darosior:
    ACK 89912105734175e0f2a5e53eb6165b12055cc2c1

Tree-SHA512: 082b2896abcb600e5e6ab4ec24cd56b4994c843e9a478a7e5e1515dbaa357cfa1714270a1a4b135d17caa9a0ed3bebad714df0f28e3c6a341503238ce6156a7c
2024-05-02 14:43:42 +02:00
edouardparis
8991210573 Add macos arm64 binary to bitcoind download 2024-05-02 12:21:41 +02:00
edouardparis
c21004badb bump ahash dependency to fix macos build 2024-05-02 12:07:08 +02:00
Antoine Poinsot
bd262b6874
Merge #1080: guix: use Rust 1.70 for release builds
860a1ea07467788473f0a83edc4d7a02d8ad3c1a guix: use Rust 1.70 for release builds (Antoine Poinsot)

Pull request description:

  This is prep work for #597, which bumps the MSRV of the GUI to 1.70.

  We are being pulled over in two different directions when it comes to our reproducible builds. On the one hand we need to target reasonably old glibc versions in order to be compatible with older systems. On the other hand the immaturity of the Rust ecosystem makes us require bleeding edge versions of the compiler. With Guix to get the newer versions of the compiler we need to also bump the glibc version.

  This was not a sustainable situation. I was planning for a long time to cleanup our reproducible builds. To create a proper Guix package for both the daemon and the GUI using the build system they provide. I had envisioned this way i could rewrite the inputs of the Guix package to use an older glibc, while being able to bump the Guix time-machine. It would even have allowed us to perform Windows builds inside Guix! And who knows i could even have attempted to perform Apple ones too.

  Unfortunately it turned out to be more complicated than that. I couldn't manage to get my package to compile using an older glibc. Some details about some of my failed attempts can be found there: https://lists.gnu.org/archive/html/help-guix/2024-04/msg00056.html.

  Instead of wasting more time on this, backport the newer Rust declarations from up-to-date Guix to Guix-of-our-time-machine.

ACKs for top commit:
  edouardparis:
    utACK 860a1ea07467788473f0a83edc4d7a02d8ad3c1a

Tree-SHA512: ee0a753376b380c5b39d9cefd6ac49c95d818b3233183f6832df256b93fe5627bf5d9193de1340ae12c0e8e8ec8e5c869674e975d5066723d9d38e66a509cbef
2024-04-29 14:48:35 +02:00
edouardparis
577dce2f1e
Merge #1083: Add nixGL to gui/shell.nix
9aa0b990a36716954ff30149982d1b5928cc3e57 Add nixGL to gui/shell.nix (edouardparis)

Pull request description:

  Nixos 23.11 comes with libc 2.38, this version of libc may not be compatible with some drivers. For now the hack found is to use a community wrapper that detects the requirements and do the link (https://github.com/guibou/nixGL). usage:
  nixGL cargo run

ACKs for top commit:
  edouardparis:
    Self-ACK 9aa0b990a36716954ff30149982d1b5928cc3e57

Tree-SHA512: 08e6c00412038129d482d61eaddaed6e1c237feba373baa16c7e408c6f95cff0ec510b890bd08c37d275fa1b37dc580388fbdd8a01fbbab25afb0a9be8eb2912
2024-04-23 16:21:58 +02:00
edouardparis
9aa0b990a3 Add nixGL to gui/shell.nix
Nixos 23.11 comes with libc 2.38, this version of libc may not be compatible
with some drivers. For now the hack found is to user a community wrapper that
detects the requirements and do the link (https://github.com/guibou/nixGL).
usage:
nixGL cargo run
2024-04-23 14:28:43 +02:00
edouardparis
687e6d1860
Merge #1021: bump clippy rust toolchain to 1.76.0 for gui + fix new clippy warnings
70058e6af056721abff7a5bbdc6e97427b32dc18 bump rust toolchain to 1.76.0 for gui + fix new clippy warnings introduced by 1.76.0 (pythcoiner)

Pull request description:

  bump rust toolchain to 1.76.0 for gui + fix new clippy warnings introduced by 1.76.0

ACKs for top commit:
  edouardparis:
    ACK 70058e6af056721abff7a5bbdc6e97427b32dc18

Tree-SHA512: f640606496e5b5de51618dad115de06023502e2b6980413a4e67f1041147a9347188a3042f1f382a3cc72c3a1e2edecd563012ab4dc10c5a4b616b40631dd26f
2024-04-22 15:18:38 +02:00
edouardparis
d0996d3f5b
Merge #1081: GUI: change daemon trait to handle async methods
07b47e46db2a8c00d4e7a1ae6004113f87ed758a gui: use tokio::sync::Mutex for embedded daemon (edouardparis)
7b70c8434a978a9235099be2640e292a5debe329 Use async-trait for daemon (edouardparis)

Pull request description:

  This a preparatory work in order to have a lianalite backend connection to satisfy the Daemon trait.
  This PR also allows us to use tokio::sync::Mutex for the embedded daemon which goes great with the iced tokio runtime.

ACKs for top commit:
  edouardparis:
    Self-ACK 07b47e46db2a8c00d4e7a1ae6004113f87ed758a

Tree-SHA512: 2d48b07735dc03f127bdddecdd0a4d4f436b2b95d9fccdfcb113ef00c5b8998361606370fdadce7fdee94240b81697704925538cd69904b5a7cbaf3fd03b05cc
2024-04-22 15:10:44 +02:00
edouardparis
07b47e46db gui: use tokio::sync::Mutex for embedded daemon 2024-04-22 14:35:41 +02:00
edouardparis
7b70c8434a Use async-trait for daemon 2024-04-22 14:35:41 +02:00
edouardparis
f9ea8ec0b6
Merge #967: gui: add listcoins filters
1c99376860458f350c3289cd995716aca96c4d87 gui(app): cache unconfirmed & confirmed coins only (jp1ac4)
daf9f85cfd3ef77698773f9c86763f4bb5122b6a gui(spend): filter for unconfirmed & confirmed coins (jp1ac4)
982220da030d7f4f001374b54345c4703891a3ba gui(home): filter for unconfirmed & confirmed coins (jp1ac4)
85b053ff90d7eb679cd2c1e72a59249b3796400f gui(recovery): filter for unconfirmed & confirmed coins (jp1ac4)
c9fcfae9d46b81a56b731d95a51fa1e3ea812287 gui(recovery): filter coins by psbt outpoints (jp1ac4)
4509bd6baf380c59363a2042fad28796bd0b09ab gui(coins): filter for confirmed & unconfirmed (jp1ac4)
685f83bd0eef46d1448cdc2caf4eef2a7fa09b71 gui(transactions): remove unused list_coins (jp1ac4)
21f87047ac013c22bd405de584d655ad9cdb76f8 gui(transactions): filter coins by tx outpoints (jp1ac4)
ddd1e84700642abbe43d2086de66bcf6d43741fa gui(psbt): get conflicting txs from filtered coins (jp1ac4)
4641d9eb7bd5fd2f8b8ed053601ff296965ea552 gui(daemon): filter coins using spend txs prev outpoints (jp1ac4)
aa578ba1fd846e28ed4566be9069e35a5c22dc43 gui(daemon): filter coins for pending txs (jp1ac4)
46121590c36947d8eac2be4e9989e0b4e8615235 gui(daemon): filter outpoints from txs inputs & outputs (jp1ac4)
f3fdb968275db3987d7afaee3b1ba84e0020f8a9 gui(daemon): extract common function for historytxs (jp1ac4)
6c7ca2ccaebd8acd6629c7faf8e418cb50128677 gui(daemon): add optional filter to `list_coins` (jp1ac4)

Pull request description:

  This is to resolve https://github.com/wizardsardine/liana/issues/677.

  As well as adding the filters to the daemon interface, I've applied filters in separate commits to different sections of the GUI.

  This PR builds on changes from https://github.com/wizardsardine/liana/pull/958 and https://github.com/wizardsardine/liana/pull/965. The latter is required when filtering for pending transactions so that a coin whose spending txid changes (e.g. due to RBF) remains as spending.

ACKs for top commit:
  edouardparis:
    ACK 1c99376860458f350c3289cd995716aca96c4d87

Tree-SHA512: c8b9c68a8344df1dbb04b22e315234dec7ae0c18bfc697f88296d3a4b5e7276a48005db6caf1a0b89a23e174f72118ad10945118be8cd96fbee20ba79c12d721
2024-04-19 10:57:47 +02:00
Antoine Poinsot
bf2e8b5699
Merge #953: [Daemon] Add -v/--version/-h/--help args
cd0e69ab237b7fb33aebebb4ca9bad12f06239fe add -v/--version and -h/--help args (pythcoiner)

Pull request description:

  ![image](https://github.com/wizardsardine/liana/assets/124568858/5822e3de-f7f8-4943-8c13-3aff05dca3b5)

ACKs for top commit:
  darosior:
    ACK cd0e69ab237b7fb33aebebb4ca9bad12f06239fe

Tree-SHA512: 408e3f4397c43bbe6347f817e9145c8d6f1ff56aec26310b9f3605f181add581ffb34dce6b353507e6d1877a4a6d169fb0887b1ba5797d7f930eb69d4a706f30
2024-04-19 08:28:47 +02:00
jp1ac4
1c99376860
gui(app): cache unconfirmed & confirmed coins only 2024-04-18 20:14:50 +01:00
jp1ac4
daf9f85cfd
gui(spend): filter for unconfirmed & confirmed coins 2024-04-18 20:14:49 +01:00
jp1ac4
982220da03
gui(home): filter for unconfirmed & confirmed coins 2024-04-18 20:14:49 +01:00
jp1ac4
85b053ff90
gui(recovery): filter for unconfirmed & confirmed coins 2024-04-18 20:14:49 +01:00
jp1ac4
c9fcfae9d4
gui(recovery): filter coins by psbt outpoints 2024-04-18 20:14:48 +01:00
jp1ac4
4509bd6baf
gui(coins): filter for confirmed & unconfirmed 2024-04-18 20:14:48 +01:00
jp1ac4
685f83bd0e
gui(transactions): remove unused list_coins 2024-04-18 20:14:48 +01:00
jp1ac4
21f87047ac
gui(transactions): filter coins by tx outpoints 2024-04-18 20:14:47 +01:00
jp1ac4
ddd1e84700
gui(psbt): get conflicting txs from filtered coins 2024-04-18 20:14:46 +01:00
Antoine Poinsot
860a1ea074
guix: use Rust 1.70 for release builds
We are being pulled over in two different directions when it comes to
our reproducible builds. On the one hand we need to target reasonably
old glibc versions in order to be compatible with older systems. On the
other hand the immaturity of the Rust ecosystem makes us require
bleeding edge versions of the compiler. With Guix to get the newer
versions of the compiler we need to also bump the glibc version.

This was not a sustainable situation. I was planning for a long time to
cleanup our reproducible builds. To create a proper Guix package for
both the daemon and the GUI using the build system they provide. I had
envisioned this way i could rewrite the inputs of the Guix package to
use an older glibc, while being able to bump the Guix time-machine. It
would even have allowed us to perform Windows builds inside Guix! And
who knows i could even have attempted to perform Apple ones too.

Unfortunately it turned out to be more complicated than that. I couldn't
manage to get my package to compile using an older glibc. Some details
about some of my failed attempts can be found there:
https://lists.gnu.org/archive/html/help-guix/2024-04/msg00056.html.

Instead of wasting more time on this, backport the newer Rust
declarations from up-to-date Guix to Guix-of-our-time-machine.
2024-04-18 17:05:20 +02:00
edouardparis
f8012daffc
Merge #1054: gui: remove descriptor backup in installer when participating in new wallet
52cbc3ee386973c12d002da3a688266994261312 gui: require valid network to proceed (jp1ac4)
2099866a60b5b9144bcb108ae17bfbb39d47fd90 gui: remove step to back up descriptor (jp1ac4)

Pull request description:

  This fixes #791 which is regarding the "Participate in new wallet" steps.

  The previous step requires the descriptor and so no need to back it up.

  I also fixed an issue where it was possible to click Next with an invalid network selected.

ACKs for top commit:
  edouardparis:
    ACK 52cbc3ee386973c12d002da3a688266994261312

Tree-SHA512: 762122b36260bca9e06b6971a941a91df23051affe1039ca74dc7c31ae96283f09f579fb4a8adbb71efe16bd4c64e96fbd5ae9f6dd3304addcaf142cdab3941b
2024-04-15 14:42:52 +02:00
Antoine Poinsot
8c55eeca1d
Merge #1076: Bump bdk_coin_select to 0.3.0
43ecd94a46a8abf82a6882e741aa1db2fd0abd7c spend: change parameter type for rbf (jp1ac4)
6376909ea1f9cb172558f8ae470a709b18757e20 commands: remove rbf rule 4 logic (jp1ac4)
936d7e958567608a46e91c21699d611ca5eced1d spend: bump bdk_coin_select to 0.3.0 (jp1ac4)

Pull request description:

  This is to resolve #923.

  The `score` method of the `LowestFee` metric has been fixed upstream and so our temporary partial fix from #867 is no longer required.

  The `min_fee` parameter of `select_coins_for_spend`, if positive, now ensures that RBF rule 4 is satisfied. Accordingly, it has been renamed to `replaced_fee` and made an `Option`. We could potentially have used the `SpendTxFees` enum as a parameter directly instead of `feerate_vb` and `replaced_fee`, but `feerate_vb` is currently `f32` rather than `u64` and so I kept them as separate parameters.

  Thanks to how the `replaced_fee` parameter works, the fee iteration approach used in `rbf_psbt` to ensure the replacement satisfies [RBF rule 4](https://github.com/bitcoin/bitcoin/blob/master/doc/policy/mempool-replacements.md#current-replace-by-fee-policy) is no longer required.

  `base_weight` is no longer stored in `CoinSelector` and instead the output weights are stored in `Target`. This means that the `output_weight` of `DrainWeights` no longer needs to take into account a potential change in output count varint as this is now handled by bdk_coin_select.

  The min value for change no longer includes the threshold itself and so we have to subtract 1 from our change policy's min value (see https://github.com/bitcoindevkit/coin-select/pull/14#discussion_r1439665103). We already have a [test](https://github.com/wizardsardine/liana/blob/master/src/commands/mod.rs#L1653-#L1654) that fails without this subtraction as it expects a change output of 5000 sats.

ACKs for top commit:
  darosior:
    ACK 43ecd94a46a8abf82a6882e741aa1db2fd0abd7c

Tree-SHA512: a064bafef13abefcb8c4b640cfc4017eb288c62891a8b486add33c1499e7061bf262d6aadabbdd4c191ed9b81e3931b382c8c8445e6bb9c1b052380caf14b3f9
2024-04-15 13:13:19 +02:00
jp1ac4
43ecd94a46
spend: change parameter type for rbf
The parameter has been renamed and changed to `Option` as it is
only required when creating a replacement transaction using RBF.
2024-04-05 21:56:17 +01:00
jp1ac4
6376909ea1
commands: remove rbf rule 4 logic
RBF rule 4 is now enforced by coin selection.
2024-04-05 21:54:08 +01:00
jp1ac4
936d7e9585
spend: bump bdk_coin_select to 0.3.0
The `score` method of the `LowestFee` metric has been fixed
and so our temporary fix is no longer required.

The `min_fee` parameter of `select_coins_for_spend`,
if positive, now ensures that RBF rule 4 is satisfied.

`base_weight` is no longer stored in `CoinSelector` and
instead the output weights are stored in `Target`. This
means that the `output_weight` of `DrainWeights` no longer needs
to take into account a potential change in output count varint.
2024-04-05 21:46:06 +01:00
edouardparis
1418e18842
Merge #1071: Use text size constant
d722ca1e4d9008df5bcf5cea3af531ed8de75209 Use text size constant (edouardparis)

Pull request description:

  this is preparatory work for #597

ACKs for top commit:
  edouardparis:
    Self-ACK d722ca1e4d9008df5bcf5cea3af531ed8de75209

Tree-SHA512: 882fefe1685e34b252e6ca0dba9e2519b4889448cb410c3df542b2ca111baccbd2697b6ca191caa069ffec55dbdc0182c76de75a36f321f4927b6e81229db07b
2024-04-02 17:20:49 +02:00
edouardparis
d722ca1e4d Use text size constant 2024-04-02 17:04:03 +02:00
Antoine Poinsot
21f2d593c7
Merge #1070: doc/USAGE: point to our website for download
744d8f856cdf0f3e3aa94f26e85e49202516244e doc/USAGE: point to our website for download (Antoine Poinsot)

Pull request description:

  No need to update this document for every single version anymore. Also, Github doesn't let us access how many people download the binaries.

ACKs for top commit:
  darosior:
    self-ACK 744d8f856cdf0f3e3aa94f26e85e49202516244e -- only doc

Tree-SHA512: 0204bf830026acbea84b1b7f456e1735fd1e951260b904f8b06fff47dc0f1a218efc155e014faaa6df34e2eaffd4b7742aa37e09aca3c4c97eeb27cf17f30f57
2024-04-01 17:02:40 +02:00
Antoine Poinsot
744d8f856c
doc/USAGE: point to our website for download
No need to update this document for every single version anymore.
2024-04-01 16:57:12 +02:00