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
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.


ACKs for top commit:
edouardparis:
ACK f024b2d59c27802e5092e119aee1eb570dbba74f
Tree-SHA512: f1969ffb20a473dc77ce51cfc5ef04ba5091cdcd0d748754ae89465fabe8d2fcb30f6121124037b55d27db63092865821fdda448e9966ebe6ede8b1b5a859c4b
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
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
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.
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