2290 Commits

Author SHA1 Message Date
edouardparis
87bf091754
Merge #1597: Prepare v10.0
88cebffb0373a0fd3435702d95bebb62732ee083 Prepare v10.0 (edouardparis)

Pull request description:

  changelog was added in #1587

ACKs for top commit:
  jp1ac4:
    ACK 88cebffb0373a0fd3435702d95bebb62732ee083.

Tree-SHA512: 31577766673c09c2965ec73e78c2b541fbcfb9719472db8ff872f87e1aa3b6b4542d480fc8049f26476ddfb3e8e42dbf27d9f83bb0307f1928d03aae42152fec
2025-03-21 16:38:22 +01:00
edouardparis
88cebffb03 Prepare v10.0 2025-03-21 16:12:32 +01:00
edouardparis
aba7d3c41a
Merge #1587: Changelog for v10
e58370c3bcfa606b51e856def8271194a043e930 Changelog for v10 (edouardparis)

Pull request description:

ACKs for top commit:
  jp1ac4:
    ACK e58370c3bcfa606b51e856def8271194a043e930.

Tree-SHA512: 48319ff246bf1efefe2e76401c6debcd70fafa9636212a86491c07eb16669a4fa4df2084d8871af8c962be47d249087e6d1b636c46ea286cc23b8e3f82695bdc
2025-03-21 16:06:41 +01:00
edouardparis
502242543c
Merge #1596: gui(installer): disable cosigner keys
9573d809502f11426296aff7af9ffe7805a31d30 gui(installer): disable cosigner keys (Michael Mallan)

Pull request description:

  This resolves #1584 by disabling cosigner keys in the installer.

ACKs for top commit:
  edouardparis:
    ACK 9573d809502f11426296aff7af9ffe7805a31d30

Tree-SHA512: dc3d2995d28df7baaac938a35840e9fe5bda4b228a8dcd7ecb6a37627f8e382510a489abdf7d65373b21dd1129db40a5d3b96f055fc7d7a7288462ab44d09fca
2025-03-21 16:05:01 +01:00
Michael Mallan
9573d80950
gui(installer): disable cosigner keys 2025-03-21 14:34:21 +00:00
edouardparis
d7a183cb8e
Merge #1595: gui(settings): use consistent case
f024b2d59c27802e5092e119aee1eb570dbba74f gui(settings): use consistent case (Michael Mallan)

Pull request description:

  Use consistent case in the settings:

  - "Import/Export" for the section card to match the header on the corresponding page. The choice is to capitalise both words as the slash indicates either word could be treated as a title by itself.
  - Use "Back up wallet" to match the case of the other options on that page.

  ![image](https://github.com/user-attachments/assets/ad3134d3-1700-4de8-be25-63335f3a91b2)
  ![image](https://github.com/user-attachments/assets/5f5590f2-ceaa-4e1c-b353-34dff826f65a)

ACKs for top commit:
  edouardparis:
    ACK f024b2d59c27802e5092e119aee1eb570dbba74f

Tree-SHA512: f1969ffb20a473dc77ce51cfc5ef04ba5091cdcd0d748754ae89465fabe8d2fcb30f6121124037b55d27db63092865821fdda448e9966ebe6ede8b1b5a859c4b
2025-03-21 15:01:23 +01:00
Michael Mallan
f024b2d59c
gui(settings): use consistent case 2025-03-21 13:44:39 +00:00
edouardparis
e99b1f85e3
Merge #1594: Add backup icon to transactions export
954d0a0be5215b16811c4658a745897606783c9b Add backup icon to transactions export (edouardparis)

Pull request description:

  close #1529

ACKs for top commit:
  edouardparis:
    Self-ACK 954d0a0be5215b16811c4658a745897606783c9b

Tree-SHA512: 5f16788961a13108f094595bc783cbebeb51b099665e8e2ab05b66f41d7fec5607d95e5e74b6e6205e247e917e336a46665f97a3222a574c1cf7eea1a0981704
2025-03-21 11:53:45 +01:00
edouardparis
954d0a0be5 Add backup icon to transactions export
close #1529
2025-03-21 11:31:05 +01:00
edouardparis
756adc32db
Merge #1593: gui: move the backup processing in export thread
abf360f567379f61963d3b258b124ed347529c43 gui: move the backup processing in export thread (pythcoiner)

Pull request description:

  this PR move the processing of the backup in the export thread

ACKs for top commit:
  edouardparis:
    ACK abf360f567379f61963d3b258b124ed347529c43

Tree-SHA512: 80349d18c1c4b6b86d6640fd1b5f7090eee72114255abe5acff4a49e70169ce48d712a3d954c6a6e126f2b470ff49654b4a9882a0b6e549c75aaed882191c813
2025-03-21 10:54:57 +01:00
pythcoiner
abf360f567
gui: move the backup processing in export thread 2025-03-21 10:34:11 +01:00
edouardparis
a739c977eb
Merge #1592: [wip] gui: remove default implem of update_wallet_metadata
20bf7f24f005408d671d0bce185cd2c4e9cdaa99 gui: remove default implem of update_wallet_metadata (pythcoiner)

Pull request description:

  this PR remove a duplicate logic introduced in #1576

ACKs for top commit:
  jp1ac4:
    tACK 20bf7f24f0.

Tree-SHA512: fea994fae14b782c23a7281d2893ddf484d5cf45cbba2d9b25c4ff483a24a97e409fcb441297c665f7e650aa9f0f73e8a1f417c8e573e7fda7775f3c7bec2e10
2025-03-20 15:22:56 +01:00
pythcoiner
20bf7f24f0
gui: remove default implem of update_wallet_metadata 2025-03-20 14:47:24 +01:00
edouardparis
b7f84c7895
Merge #1590: fix export: use error handling
f3959d51cd33fc958122b07766f0eb015f2ee34c mpsc bounded channel requires buffer > 0 (edouardparis)
dabd53b9292beefa9b5b6b92ffb1c42c3b843605 Use tokio mpsc channel sender and receiver (edouardparis)
f983b418eae4a9ed7c81b1af8574cef5dd649091 fix export: use error handling (edouardparis)

Pull request description:

ACKs for top commit:
  edouardparis:
    Self-ACK f3959d51cd33fc958122b07766f0eb015f2ee34c

Tree-SHA512: 8e4ba191ef4aa63178a4aad7ca79b88ad4f5a9fbb394923a6b4b11d0213c53cfce3ea9e1eb68c56f101d40512cf480d543a7ccc42ec5c826474bc68cb43718d3
2025-03-19 15:37:13 +01:00
edouardparis
f3959d51cd mpsc bounded channel requires buffer > 0 2025-03-19 15:15:24 +01:00
edouardparis
dabd53b929 Use tokio mpsc channel sender and receiver
in Tokio, when you call .recv().await on a Receiver, it will
asynchronously wait for a message to be sent to the channel. This means
that the task will yield control back to the Tokio runtime until a
message is available, allowing other tasks to run concurrently.

If the Sender side of the channel is dropped or closed, recv().await
will return None, indicating that no more messages will be sent.
2025-03-19 14:33:24 +01:00
edouardparis
f983b418ea fix export: use error handling 2025-03-19 13:24:54 +01:00
edouardparis
bd54fb29bf
Merge #1576: Wallet backup
f8ca6f123fd56ac71a2a3bffe9568c0ecb5a9b4d backup: add ser/de test & minors changes (pythcoiner)
477e914801f3d9c0b06be56617a5dc2f3273d136 export: remove NotImplemented from RestoreBackupError (pythcoiner)
df8d98b275bbf0aa96729f46afc53a24728ed60e gui: use Display instead Debug to print ExportModal errors (pythcoiner)
1abe503431892c45b9459849f4ac94b814c67e71 backup: update local state when alias updated from a backup restore (pythcoiner)
2e6cceea96783b85c6e7654cfc7600d63c86133c backup: rename Key::metadata in Key::proprietary (pythcoiner)
4e17483340971b1f3ff4674385843aa1bc068000 lianad: reverse the byte order of txid before parsing bip329 label transactions (pythcoiner)
cac7bce60aedc5097bbdf9ffb1184688f4bcb48a installer: minor UI fixes (pythcoiner)
2291138fb64d5be7d66e24e72cbfb11af6a55915 lianad: docs & tests for getlabelsbip329 command (pythcoiner)
9417549ddb5e6ffb51e668228e6faf8d18937db5 lianad: docs & tests for updatederivationindexes command (pythcoiner)
e1b90b056fe6a339acd4f9726cc10813d96bc741 lianad: in DaemonControl::update_deriv_indexes() limit the gap the index can be incremented and return db indexes (pythcoiner)
107e81071c7e60157fb3d00f90e3e3258c213aff lianad; update docs & tests for getinfo command (pythcoiner)
091557a8dfd03788cfaa202ad87c2dd15e1e347f installer: add existing wallet from backup (pythcoiner)
aa53c3e44e375656b0b9d3076167c82f2204273e import: implement wallet_from_backup() (pythcoiner)
03476de35abd779de95595f538b081d2c945285f gui: call import_backup_at_launch (pythcoiner)
33e39316c7c265ff64c55133fbf6e7ac908e660a import: implement import_backup_at_launch() (pythcoiner)
e19644ae8cf0acf7bd21eec2a609f76cb6810293 gui: display export error (pythcoiner)
29b1673460fd2160e2e768c30f5e7f151f065b92 fix user ACK + call import in settings/wallet (pythcoiner)
2fe297879b022d5da9e562816774d70075e40536 gui: integrate restore backup to settings (pythcoiner)
d0d7007e8398035e43d6d32eff149f167301ae32 import: implement import_backup() (pythcoiner)
b6f900355c6803490a79c0c058252ca5a45afb0c lianad: implement LabelItem.from_bip329() (pythcoiner)
02e28bbd3e72ae5aacde38552ac5dc892639a20e gui: implement Daemon.update_wallet_metadata() for lianad (pythcoiner)
6988fa40c92d2b2c518456284d685810c1ffb575 gui: implement Daemon.update_deriv_indexes() (pythcoiner)
39f71d3de8570e776096f2ce904cc1d783d96703 lianad: add update_deriv_indexes() command (pythcoiner)
4c2adec67c09befc604e7dd70d5a19e5fae6adf4 backup: serialize PSBT w/ Psbt::to_string() instead Psbt::serialize_hex() (pythcoiner)
31f834f41dd355116dd039b05541f24d798b1fe3 backup: default deserialization (pythcoiner)
4ba6486645766b65d12be063b8e1ab644b7c45bb gui: add import/export features in settings (pythcoiner)
325e2dc9b91c4553384c4751cdcfe9bee57f5a33 backup: add chain tip (pythcoiner)
c4585e8efe8f0ff27b92b8e930582650b6460e9f backup: add backup & Liana versions (pythcoiner)
61793b35ce4b329690970fc26a6a6f629513f66e backup: backup coins (pythcoiner)
68bb742755b3a277aa91b15f540ab6d8012e1384 installer: add wallet export feature at descriptor backup step (pythcoiner)
b0e560c0b523fba9994697c1f410ce0245c8ce09 export: make ExportModal::view() generic (pythcoiner)
5dcecc5542f3feeb989d40de2c8cc3063f1409d5 gui: make ExportModal.daemon optionnal (pythcoiner)
530b8c12bcd79075e39c7ff7fa289c4234d9fa15 gui: clippyfy (pythcoiner)
ab3c8007bac711c3e964fb21f192c03c5753b276 gui: implement ExportModal.modal_title() (pythcoiner)
f41de56e38164d9a9bad78a0abffaebdd92e6768 gui: add import/export features in settings (pythcoiner)
f1b62074d309059c4a8b5cc1d954c25bb7cff0d7 gui: implement backup (pythcoiner)
f7ed341d284d0563a93314be439a8facff971767 gui: Daemon trait => add receive and change indexes to GetInfoResult (pythcoiner)
86313f528221ddb7d766b3f59d4f255b4f49eedf export: implement export labels using BIP-0329 (pythcoiner)
38eed1b8810976ef903063d7f74b39dd06affcfc lianad: add feature to dump labels in BIP-0329 format (pythcoiner)
158651ebe7fbbf07fa8f8fbd74aa927ea53034ce import: implement import from file for psbt & descriptor (pythcoiner)
2b9324993a92ecb082d59c6aa013e6136b025aba export: implement export for psbt (pythcoiner)
baf4e75efe3b1150a4a8277f3ed8b1f265f75cdd export: implement export for descriptor (pythcoiner)
a3bf250696c7305e2af2667792ba6c1d02e8a111 gui: make 'ExportModal' generic (pythcoiner)
f13cd1fe73f2fc1afda0a4f35cac7f4840e5c7c8 export: rename 'State' into 'Export' and separate export logic (pythcoiner)

Pull request description:

  This PR:
   - [x] Implement export of PSBTs
   - [x] Implement export of Descriptor
   - [x] Implement export of Labels in BIP-0329 format
   - [x] Implement export of PSBTs
   - [x] Implement export of Descriptor
   - [x] Implement import of Labels in BIP-0329 format (restore for liana-connect not addressed here)
   - [x] add `receive_index` and `change_index` to `Daemon.get_info()` result+
   - [x] add test & update docs for `get_info()`
   - [x] add `get_labels_bip329()` to `Daemon` trait & RPC commands
   - [x] add tests & docs for `get_labels_bip329()`
   - [x] add `update_deriv_indexes()` to `Daemon` trait & RPC commands
   - [x] add tests & docs for `update_deriv_indexes()`
   - [x] implement wallet backup/export feature
   - [x] implement wallet backup/import feature (restore for liana-connect not addressed here)
   - [x] Integrate the exports & backup feature to the settings panel (GUI)
   - [x] Integrate the imports & restore feature to the settings panel (GUI) (restore for liana-connect not addressed here)
   - [x] Integrate the backup feature at wallet descriptor backup step (Installer)
   - [x] Integrate the "Add existing wallet" from a previous backup (Installer) (restore for liana-connect not addressed here)
   - [x] Handle and display gracefully errors in the GUI/Installer
   - [x] Update `Wallet` after restoring a backup from Settings
   - [x] write serializing/deserializing tests for backup
   - [x] backing up coins
   - [x] backing up chain tip (~`block_hash`~ + `block_height`)
   - [x] rename label export name to `.jsonl`
   - [x] add backup version + liana version

  This PR depends on [this PR](https://github.com/wizardsardine/liana-backend/pull/288) on our backend

  comments:
   - [x] The title should be "Backup your wallet" without "descriptor";
   - [x] The "Backup" button should be the primary action
   - [x] We could also consider calling it "Backup Wallet";
   - [x] The checkbox should become "I have backed up my wallet" or alternatively "I have backed up my wallet/descriptor".
   - [x] Aliases and transaction labels seem to not be imported correctly in the GUI when doing a Backup and Restore of the wallet.
   - [x] Another thing I wanted to mention, which I think is required, is that we have the same icon for all the new actions (backup wallet, restore wallet and all the options in the new "Import/export" section of the settings). We should differentiate by function.
   - [x] I get "Labels conflict" in the text also when I change the aliases and not the labels: we should keep it generic with something like "One or more elements conflict. (...)"
   - [x] I would reduce the space between the title and the text in the modal.
   - [x] For the always visible explanation: "A backup of your wallet configuration is necessary to recover your funds. Please make sure to store your Wallet backup file (or alternatively to copy and paste the descriptor string) in one or more secure and accessible locations. You still need to back up your seed phrases too, since they are not included in the file.”
   - [x] In the "Learn more" part, where it says "(...) this is your descriptor", I would just add "(...) this is your descriptor, included in your wallet backup file.".
   - [x] As we were discussing, we should change "backup" to "back up" when it is a verb (sorry for the confusion).
     - [x] The title in "Back up your wallet" (and "Back up your mnemonic" too);
     - [x] The button "Back Up Wallet" in the back up step and in the settings (both in "Wallet" and "Import/Export").
   - [x] increase modal height of 30 pixels in order to display well 2 liner messages

  Should be done as follow-up:
    - add a `retailler` field in proprietary
    - add `block_hash` to get_info()
    - replace `sync_channel()` by `tokio::mpsc::channel()`
    - handle if index increment gap > 1000
    - in `SqliteConn::set_derivation_indexes()` addresses should be inserted in batch
    - restore wallet backup for liana-connect
    - finalyze labels import
    - finalyze PSBT export
    - finalyze PSBT import
    - finalyze descriptor(only) import?

ACKs for top commit:
  jp1ac4:
    ACK f8ca6f123f.

Tree-SHA512: b9a2f21e95f77d9902abe1fcdd364dabd1ba562789023a81a7dd6d6d0a7ca86975cca02dfad8de1bfc09d711ccb1af0c8347376a543ce170c4f10e03b249cda9
2025-03-19 11:31:29 +01:00
pythcoiner
f8ca6f123f
backup: add ser/de test & minors changes 2025-03-19 10:44:58 +01:00
pythcoiner
477e914801
export: remove NotImplemented from RestoreBackupError 2025-03-19 10:44:58 +01:00
pythcoiner
df8d98b275
gui: use Display instead Debug to print ExportModal errors 2025-03-19 10:44:58 +01:00
pythcoiner
1abe503431
backup: update local state when alias updated from a backup restore 2025-03-19 10:44:57 +01:00
pythcoiner
2e6cceea96
backup: rename Key::metadata in Key::proprietary 2025-03-19 10:44:57 +01:00
pythcoiner
4e17483340
lianad: reverse the byte order of txid before parsing bip329 label transactions 2025-03-19 10:44:57 +01:00
pythcoiner
cac7bce60a
installer: minor UI fixes 2025-03-19 10:44:56 +01:00
pythcoiner
2291138fb6
lianad: docs & tests for getlabelsbip329 command 2025-03-19 07:43:41 +01:00
pythcoiner
9417549ddb
lianad: docs & tests for updatederivationindexes command 2025-03-19 07:43:41 +01:00
pythcoiner
e1b90b056f
lianad: in DaemonControl::update_deriv_indexes() limit the gap the index can be incremented and return db indexes 2025-03-19 07:43:41 +01:00
pythcoiner
107e81071c
lianad; update docs & tests for getinfo command 2025-03-19 07:26:04 +01:00
pythcoiner
091557a8df
installer: add existing wallet from backup 2025-03-19 07:26:04 +01:00
pythcoiner
aa53c3e44e
import: implement wallet_from_backup() 2025-03-19 07:26:03 +01:00
pythcoiner
03476de35a
gui: call import_backup_at_launch 2025-03-19 07:26:03 +01:00
pythcoiner
33e39316c7
import: implement import_backup_at_launch() 2025-03-19 07:26:03 +01:00
pythcoiner
e19644ae8c
gui: display export error 2025-03-19 07:26:03 +01:00
pythcoiner
29b1673460
fix user ACK + call import in settings/wallet 2025-03-19 07:26:02 +01:00
pythcoiner
2fe297879b
gui: integrate restore backup to settings 2025-03-19 07:26:02 +01:00
pythcoiner
d0d7007e83
import: implement import_backup() 2025-03-19 07:26:02 +01:00
pythcoiner
b6f900355c
lianad: implement LabelItem.from_bip329() 2025-03-19 07:26:01 +01:00
pythcoiner
02e28bbd3e
gui: implement Daemon.update_wallet_metadata() for lianad 2025-03-19 07:26:01 +01:00
pythcoiner
6988fa40c9
gui: implement Daemon.update_deriv_indexes() 2025-03-19 07:26:01 +01:00
pythcoiner
39f71d3de8
lianad: add update_deriv_indexes() command 2025-03-19 07:26:01 +01:00
pythcoiner
4c2adec67c
backup: serialize PSBT w/ Psbt::to_string() instead Psbt::serialize_hex() 2025-03-19 07:26:00 +01:00
pythcoiner
31f834f41d
backup: default deserialization 2025-03-19 07:26:00 +01:00
pythcoiner
4ba6486645
gui: add import/export features in settings 2025-03-19 07:26:00 +01:00
pythcoiner
325e2dc9b9
backup: add chain tip 2025-03-19 07:26:00 +01:00
pythcoiner
c4585e8efe
backup: add backup & Liana versions 2025-03-19 07:25:59 +01:00
pythcoiner
61793b35ce
backup: backup coins 2025-03-19 07:25:59 +01:00
pythcoiner
68bb742755
installer: add wallet export feature at descriptor backup step 2025-03-19 07:25:59 +01:00
pythcoiner
b0e560c0b5
export: make ExportModal::view() generic 2025-03-19 07:25:58 +01:00
pythcoiner
5dcecc5542
gui: make ExportModal.daemon optionnal 2025-03-19 07:25:58 +01:00