2433 Commits

Author SHA1 Message Date
edouardparis
79fcbc41e2 fix: remove unused method with_pin_date 2025-05-16 17:15:09 +02:00
edouardparis
5baf281204 Remove wallet hot signer mnemonics on wallet delete.
Mnemonics are now stored with the following format:
mnemonic-fingerprint-checksum-timstamp.txt

checksum and timestamp are the new way to identify wallets.

When deleting wallet user expects any mnemonic related
to the wallet to be removed.

For legacy wallets, any mnemonic-fingerprint.txt file will be deleted.
2025-05-16 17:09:42 +02:00
edouardparis
b6f45a42ee Delete settings file if no wallet
And make launcher open default network directory
as the first directory with a settings file.

Fallback to the Create wallet view when no settings
file exist anymore or if the settings file has no wallet.
2025-05-16 17:09:42 +02:00
edouardparis
30228c6490 refac delete wallet modal and desc backup 2025-05-16 17:09:42 +02:00
edouardparis
9a6218b3f1 Change lianad directory location 2025-05-16 17:09:42 +02:00
edouardparis
58bccef4cd Append wallet settings to file during creation 2025-05-16 17:09:42 +02:00
edouardparis
e85f89dc7f Add wallet list to launcher 2025-05-16 17:09:42 +02:00
edouardparis
8ddcece820 Add wallet id for settings filtering 2025-05-16 17:09:42 +02:00
edouardparis
b4062b28a9
Merge #1699: gui: Improve visibility primary button text & fixes
d2c6f9bb96fa01b8f590fb67f5fdb34eedeca45a fix: "Generate address" become secondary after generation (Thomas Ballivet)
15f4dc1ed145e49f52576c0aaabd0608847c698f fix: set "Go to replacement" as primary (Thomas Ballivet)
881621f03b901198f47f31e44b1599f3dc75df06 Improve visibility of primary button text (Thomas Ballivet)

Pull request description:

  The first commit fixes #1697.
  The second set "Go to replacement" as primary.
  The third make "Generate address" become secondary after generation.
  Tell me if I should squash.

  ![image](https://github.com/user-attachments/assets/6cbf3573-0956-43e5-be70-f2e075f5c314)

  ![Capture d’écran du 2025-05-06 20-47-25](https://github.com/user-attachments/assets/8df30fb6-9ac8-4eb2-9756-9a1fecc921d9)

  I've tried to make the icon thicker but doesn't work the same way. Maybe using a different font or an image would help to fixes this.

ACKs for top commit:
  pythcoiner:
    tACK d2c6f9bb

Tree-SHA512: 5ca6201ac77106dbb866badaeda9a097823dda37630ee437fd816bb749802fcae8a225bad999bbde232f63976dc8a823a09a5a7e593fb889f226b05f4f28a41d
2025-05-16 09:47:57 +02:00
edouardparis
21e1ee14b4
Merge #1707: [GUI] some fixes for unused addresses list
efd0c32e5df323a555850e364ef7c18ce6474cbb fix: hide prev addresses option if there are none (Michael Mallan)
c629142c58408909877d60b4ab38f76cb3ad5518 fix: ignore address with index 0 (Michael Mallan)

Pull request description:

  This PR consists of two fixes following #1704:
  1) don't show the address with index 0 in the list of unused addresses. This is because a new Liana wallet starts generating new addresses from index 1.
  2) hide the option to view unused addresses if there aren't any (such as for a new wallet).

ACKs for top commit:
  pythcoiner:
    tACK efd0c32e

Tree-SHA512: d80ff4358387b8a06867845eea89aac6f9a6896292975b92901b17e324564b01ca6b2af00faadf932a37bf38d6459d18f2533659adb5c8e8582f71ea6e1d7869
2025-05-16 09:45:46 +02:00
Thomas Ballivet
d2c6f9bb96 fix: "Generate address" become secondary after generation 2025-05-15 17:42:18 +02:00
Thomas Ballivet
15f4dc1ed1 fix: set "Go to replacement" as primary 2025-05-15 17:37:57 +02:00
Thomas Ballivet
881621f03b Improve visibility of primary button text 2025-05-15 17:37:57 +02:00
Michael Mallan
efd0c32e5d
fix: hide prev addresses option if there are none 2025-05-15 12:28:07 +01:00
Michael Mallan
c629142c58
fix: ignore address with index 0
This is always "revealed" for a new wallet and not generated by
the user.
2025-05-15 12:27:01 +01:00
edouardparis
e910c06027
Merge #1704: feat: List unused addresses on Receive panel
f8e702b65ea894131b212fdfed89b16068699fe9 feat: list unused addresses already revealed (Michael Mallan)
d84c75c1ce548c2c7dfecf98960e9a19409cb9e7 refactor: extract address card logic to function (Michael Mallan)
daa3daa938567e6d76e7dce02bddd725b97a72d9 refactor: add message for next receive address (Michael Mallan)
8b8b48142f60ede2b8ce702c89a61f3fd32a1842 feat: add list addresses method to gui daemon interface (Michael Mallan)

Pull request description:

  This implements #809 by listing unused addresses on the Receive panel.

ACKs for top commit:
  edouardparis:
    ACK f8e702b65ea894131b212fdfed89b16068699fe9

Tree-SHA512: 05538d099433bad33c947694e91bc082147159bebd4607ac2d37f9127013656c928a2a332f1212fc5f9d6a2d68e3047e7c3da5523233b92d47b2802811a706d8
2025-05-15 12:18:15 +02:00
Michael Mallan
f8e702b65e
feat: list unused addresses already revealed 2025-05-15 10:42:33 +01:00
Michael Mallan
d84c75c1ce
refactor: extract address card logic to function 2025-05-14 15:14:55 +01:00
Michael Mallan
daa3daa938
refactor: add message for next receive address
The Next message will be used for getting the next page
of unused addresses.
2025-05-14 15:06:51 +01:00
Michael Mallan
8b8b48142f
feat: add list addresses method to gui daemon interface 2025-05-14 15:06:49 +01:00
edouardparis
619ea6923f
Merge #1692: feat: add listrevealedaddresses command
3d6a22ea05df70d6f0c11f2f00c85dc16975ad28 feat: add rpc command to list revealed addresses (Michael Mallan)
4945dba7c066d1434fa38a09a955339b7182e693 feat: add command to list revealed addresses (Michael Mallan)
75f37708b3b1f6a89e0f5488c95618a07356f166 test: implement methods for getting/setting labels (Michael Mallan)
16b96b5456b46cd3703d4829b24746c8a489b3ed style: apply black formatting (Michael Mallan)

Pull request description:

  This implements #1678.

  The command parameters differ slightly from those described in the issue:
  - instead of a `keychain` enum parameter, I used  `is_change` to control whether receive or change addresses are returned.
  - I used an optional `continue_from` parameter to control pagination. The value to pass in the next request is provided by the previous response. If no value is provided in the response, there are no more addresses to list. If no value is set in the request, the addresses will be returned starting from the last revealed address.

  Setting the positional argument for `continue_after` as `null` will be treated the same as omitting it (for other RPC commands, a `null` value results in a parsing error).

ACKs for top commit:
  pythcoiner:
    utACK 3d6a22e

Tree-SHA512: 0efa93bc40d0751cbe64570f9789b3a701e0bc5aab982da9ed9f21117a2eea073a81388370d56a9021c0ff87b6cbaec7338339427e6c879e8e97eababb107f57
2025-05-12 09:36:21 +02:00
edouardparis
e512603602
Merge #1698: Advisory lock settings
7c9fa61a13587e3ac014e942c1f068e0d9c8cfc7 Encapsulate update of settings file (edouardparis)

Pull request description:

  close #1651

ACKs for top commit:
  edouardparis:
    Self-ACK 7c9fa61a13587e3ac014e942c1f068e0d9c8cfc7

Tree-SHA512: f4c7ba99b5cd36f121e04d1b8b20d606c7c714870513c1eb09b21f02ee03f581a90bc565d029ba2cdfee83922039282129ec277ce145ca116a727366e690d57f
2025-05-07 17:27:51 +02:00
edouardparis
7c9fa61a13 Encapsulate update of settings file 2025-05-07 17:08:56 +02:00
edouardparis
b9a200af0b
Merge #1696: feat: asynchronous management of internal bitcoind
8c0c23e688b02a73393a7172b3f41bfaa2a9c143 Use gui panic hook (edouardparis)
40dc9ae8c01da0b250bf0e8ea40e275ef77bd23c Delete process internal bitcoind locks in case of panic (edouardparis)
0488ed37a3651add672212664d59f637be17c716 feat: asynchronous management of internal bitcoind (edouardparis)

Pull request description:

  This PR introduces a feature allowing multiple liana processes to the same internally managed bitcoind binary,
  by having the first process running a wallet relying a managed bitcoind to start it and the last process standing stopping it when closing.

  A new directory `./liana/bitcoind/locks` is introduces where a Liana process creates a file  `pid-timestamp` when it starts or uses the internally managed bitcoind binary and removes it when it does not use it anymore.
  Another Liana process can infer that it can stop the bitcoind binary by looking if any other lock file is present in this directory.

  In order to make the bitcoind child process survive once the Liana process that started it is closed, the  `libc::setsid();` method for unix  and the  `DETACHED_PROCESS` flag for windows are added to the process command.

  The current panic hook of the gui was override by the one present in lianad daemon start method. The latter was moved to the daemon main.rs file.

ACKs for top commit:
  edouardparis:
    Self-ACK 8c0c23e688b02a73393a7172b3f41bfaa2a9c143

Tree-SHA512: b8ea415750c656786b64bc7ea97194f27db37267820f1a413ce6639e48dae542e644958856ffaddd53ab1ad047072a9bcc11ad304c060417b9542d4ee61089a3
2025-05-07 10:27:42 +02:00
Michael Mallan
3d6a22ea05
feat: add rpc command to list revealed addresses 2025-05-07 08:48:34 +01:00
Michael Mallan
4945dba7c0
feat: add command to list revealed addresses 2025-05-07 08:48:31 +01:00
edouardparis
41747538ed
Merge #1686: gui & ci: upgrade managed bitcoind version to 29.0
9411017da5dd775fe358e16c4ad9545343422c44 gui & ci: upgrade managed bitcoind version to 29.0 (thomas)

Pull request description:

  Integration tests has been passed using bitcoin core 29.0 (with tests requirements updated as in #1684).

  Closes #1656.

ACKs for top commit:
  pythcoiner:
    utACK 9411017, tryed on linux, seems it download well 29.0 but my connection to bitcoincore.org is bad, the download always fail, but likely not related to this PR but rather to my poor connection
  jp1ac4:
    ACK 9411017da5dd775fe358e16c4ad9545343422c44.

Tree-SHA512: 2cb183b0da77eaf84c3957ad6cfcac0dc9b0a05d21aebeaf0f9f84d3bf81708a19c1ac6ef0e67a8ca48c71d7196dcf3b3e230ba8eae17da8b9c1bdc74f8af119
2025-05-06 14:26:18 +02:00
edouardparis
9fc7c093ff
Merge #1607: Hint user if the key of signing device is not part of the wallet descriptor
c8e455c8ceb2a7b5408380dbe3cd30ce3959ff57 lianad: add a test for LianaDescriptor::contains_fingerprint() (pythcoiner)
aead34cc8eaa3e74d2c76c7e1e8341d756d779a2 installer: hint the user if the plugged signing device is not part of the descriptor (pythcoiner)
5ae13dd025c2e038e17746f5bfc8cf72ec5120c7 liana-ui: make it more clear when a device key is not part of the wallet descriptor (pythcoiner)
fa8fd4782f97b8969f6a655e0511bf8f96924232 liana: implement LianaDescriptor::contains_fingerprint() (pythcoiner)

Pull request description:

  This PR:
  - [x] Add `LianaDescriptor::contains_fingerprint()` method

  - [x] make more explicit when a signing device is not part of the wallet descriptor

  before (user had to hover the button to see the tooltip):
  ![image](https://github.com/user-attachments/assets/c61a95a0-a9b2-4f85-8245-e5490c7e37af)

  after:
  ![image](https://github.com/user-attachments/assets/1d17775e-6c26-4eeb-83a7-c8621d44c54c)

  - [x] Hint the user in the installer if the plugged device is not part of the created/imported descriptor:

  ![image](https://github.com/user-attachments/assets/e22f0180-513e-48d5-b293-00677e328285)

ACKs for top commit:
  jp1ac4:
    tACK c8e455c8ceb2a7b5408380dbe3cd30ce3959ff57.

Tree-SHA512: 092b8cb6efe6b6a6dc4f8505649783cb7c83c231242ab14f479b573e12cd61bab4e6e27a173bee19097d3ad90a8f1e578ecf4b699a4a481b40588f5f60cb9c71
2025-05-06 14:22:24 +02:00
edouardparis
8c0c23e688 Use gui panic hook 2025-05-06 11:16:57 +02:00
edouardparis
40dc9ae8c0 Delete process internal bitcoind locks in case of panic 2025-05-06 11:16:57 +02:00
edouardparis
0488ed37a3 feat: asynchronous management of internal bitcoind 2025-05-06 10:19:58 +02:00
edouardparis
13709aa302
Merge #1693: gui: review primary buttons in the application
8e98f828a0b61f6a2b2a988118e8557dd33f9d59 gui: review primary buttons in the application (Thomas Ballivet)

Pull request description:

  You can see below the updated GUI. If needed I can make the panel's "Broadcast" button secondary when the broadcast modal is displayed.

  ![Capture d’écran du 2025-05-04 18-04-02](https://github.com/user-attachments/assets/4737af03-c5c9-4bac-a215-3a008bc6a3f8)

  ![Capture d’écran du 2025-05-04 18-03-49](https://github.com/user-attachments/assets/d4bfc3ec-5aff-4957-8748-1171888daab7)

  ![Capture d’écran du 2025-05-04 17-51-13](https://github.com/user-attachments/assets/b7c1b069-0aa0-4c70-8c3e-3cee4636ec9f)

  ![Capture d’écran du 2025-05-04 17-46-38](https://github.com/user-attachments/assets/8c065795-9cf5-4e97-a2f2-8f2a654eba58)

  ![Capture d’écran du 2025-05-04 17-42-08](https://github.com/user-attachments/assets/750f7463-7aba-4287-8474-9f303926a6bf)

  ![Capture d’écran du 2025-05-04 17-41-33](https://github.com/user-attachments/assets/613ee1cc-beb6-4139-9f51-f4323d9224e6)

  ![Capture d’écran du 2025-05-04 17-38-52](https://github.com/user-attachments/assets/db04bfe1-77b6-418b-819a-04b208a9526c)

  ![Capture d’écran du 2025-05-04 17-38-38](https://github.com/user-attachments/assets/b3405548-363e-42cf-9471-26e5094d0fa1)

  ![Capture d’écran du 2025-05-04 17-37-02](https://github.com/user-attachments/assets/0451d4e8-fdbf-49ff-9a78-f9a245611aad)

ACKs for top commit:
  edouardparis:
    utACK 8e98f828a0b61f6a2b2a988118e8557dd33f9d59

Tree-SHA512: 80bed065f3eca6c92273aaa9fd62fd61f31121e14e66325efbcac3b95d2898f52982872debf4d8cf8238f2dd4f37d8858c644f240784888ea63b73a61d0cf487
2025-05-05 10:41:28 +02:00
edouardparis
19043a2db9
Merge #1684: Upgrade pytest
c20318af64fddb2959ba90f2d510af42f4e2e20e Upgrade pytest (thomas)

Pull request description:

  Had issues because of a too old version of pytest-timeout. I had to update it so I took advantage of it to update pytest and other requirements

ACKs for top commit:
  pythcoiner:
    tACK c20318af on arch + python 3.10/3.13

Tree-SHA512: 22e7abf810c49d29f908e493db4055a9fd94d8a623e8a9ae8cfc33e2b9ab1865ad64acb8a2837b0b9b0ed1846b1ba9ea21242ccd7f0a4f4f221041d8465c55bd
2025-05-05 09:29:29 +02:00
Thomas Ballivet
8e98f828a0 gui: review primary buttons in the application 2025-05-04 18:08:15 +02:00
Michael Mallan
75f37708b3
test: implement methods for getting/setting labels 2025-05-02 17:47:11 +01:00
Michael Mallan
16b96b5456
style: apply black formatting 2025-05-02 17:46:49 +01:00
edouardparis
473dd425cc
Merge #1691: refac liana-gui: network flag redirects to launcher
c4715acb047b48e882102e38b67ed9bb37816306 refac liana-gui: network flag redirects to launcher (edouardparis)

Pull request description:

  Adding the network flag to liana-gui command opens now the launcher with the network set instead of trying to run the wallet in the network directory.

  This is preparatory work for the multiple wallet feature.

ACKs for top commit:
  edouardparis:
    Self-ACK c4715acb047b48e882102e38b67ed9bb37816306

Tree-SHA512: dad9b349c55d6e3884e79d9d314f926121c590f8b59a2322b2aee9461cfb2ddcc2d6b3d105d0bde4684fd2e097077cecf0a2f0f365e0ce52b6cadb1dc935d96a
2025-05-02 11:41:23 +02:00
edouardparis
c4715acb04 refac liana-gui: network flag redirects to launcher
Adding the network flag to liana-gui command opens now
the launcher with the network set instead of trying to
run the wallet in the network directory.

This is preparatory work for the multiple wallet feature.
2025-05-02 10:01:25 +02:00
edouardparis
6fe88ad4df
Merge #1683: Add connect cache file
fe14c7807e60a080052ebc94c1e0d160c8db8ed6 pin email in liana connect login (edouardparis)
1746314e7d8ef4e06cc05951dc620d88d280d26e Add liana-connect cache file (edouardparis)

Pull request description:

  This PR introduces a new file in the network directory: `connect.json` where the access tokens per email accounts are stored. Race conditions and potential conflicts to update the file are handle by the crate `async-fd-lock`.

  If the cache is missing (like for a previous liana generated setup), then the user is asked to authenticate again.
  The change does not remove totally the legacy `refresh_token` field in the settings file in order to be backward compatible with previous liana-gui versions.

ACKs for top commit:
  edouardparis:
    Self-ACK fe14c7807e60a080052ebc94c1e0d160c8db8ed6

Tree-SHA512: a4ce6c78e8edd8378f227ae464a5ff0ebd88ee16b519a26f78eb95c9ab5752d14a50ea559902ce5edb9a00452e77b2552c2743a75182a9de825846b5c6f4d06c
2025-05-02 09:36:16 +02:00
edouardparis
fe14c7807e pin email in liana connect login 2025-05-02 09:15:10 +02:00
edouardparis
1746314e7d Add liana-connect cache file 2025-05-02 09:15:10 +02:00
thomas
9411017da5 gui & ci: upgrade managed bitcoind version to 29.0 2025-05-01 17:34:38 +02:00
edouardparis
102a8d841d
Merge #1209: gui: disable replacement fee input if tx is already replaced
ad2c096715da49223f7c2cf3389e575b7e62a064 gui: disable replacement fee input if tx is already replaced (pythcoiner)

Pull request description:

  this PR disable input on feerate TextInput if the tx already have been replaced, it's fine to do so because we still can RBF the new replacing tx.

  ![image](https://github.com/user-attachments/assets/c5ad2ed3-50f0-41e0-924b-261896174900)

  close #1138

ACKs for top commit:
  jp1ac4:
    tACK ad2c096715.

Tree-SHA512: 528dc513ee83a839c86a6dd8d49fa5af61814e7c440d5337d294205269ebcef3d50001a5b41815c95276d4f3e6660d5f5e081456feb77843b527d8f9eed897b8
2025-05-01 14:09:40 +02:00
pythcoiner
ad2c096715
gui: disable replacement fee input if tx is already replaced 2025-05-01 10:52:36 +02:00
edouardparis
699b130d51
Merge #1682: ci: use self-hosted runner for integration tests
eac6cdd197d75e957387db77126d2f258fd1bb27 ci: use self-hosted runner for integration tests (pythcoiner)

Pull request description:

  this PR:
   - move integrations tests from cirrus to a self hosted github worker (this solve many of the "timeout" errors)
   - remove usage of docker: the worker run directly on the host machine (this solve almost remaining issues and cut integration test running time by half)

ACKs for top commit:
  edouardparis:
    ACK eac6cdd197d75e957387db77126d2f258fd1bb27

Tree-SHA512: 94035ed7b80c71b57c8507a64088898da7e7a8d6c83269a60abd330f592ad83ef032b7943bd3d2276494b568249194f816f6c4a109b27a5d1788075fecb3aba9
2025-04-30 13:50:00 +02:00
edouardparis
ecd843c689
Merge #1420: gui(installer): change collapse icon from left arrow to righ arrow
53e773a0ff28d0428b32fd57b13df1fec93f851e gui(installer): change collapse icon from left arrow to righ arrow (pythcoiner)

Pull request description:

  Fixes #1416

  ![image](https://github.com/user-attachments/assets/8bcc3cbe-0db5-41aa-bd54-7e1a069aaaa9)

ACKs for top commit:
  edouardparis:
    utACK 53e773a0ff28d0428b32fd57b13df1fec93f851e

Tree-SHA512: 391e4260080be40d70f48b20f9648f09249c3a9d7262fafde45cd0f40857c701c268234a2e5ccca6f13365db440135ca238532a309d1bafdbfc0958efbfb8bf7
2025-04-30 11:15:04 +02:00
pythcoiner
53e773a0ff
gui(installer): change collapse icon from left arrow to righ arrow 2025-04-30 11:10:17 +02:00
pythcoiner
eac6cdd197
ci: use self-hosted runner for integration tests 2025-04-30 10:34:54 +02:00
pythcoiner
c8e455c8ce
lianad: add a test for LianaDescriptor::contains_fingerprint() 2025-04-30 08:02:24 +02:00
pythcoiner
aead34cc8e
installer: hint the user if the plugged signing device is not part of the descriptor 2025-04-30 08:02:24 +02:00