b1e06ee10638895e2bcf7ac41bd5933048e2ca34 global_settings: do not create file if not existing & empty (pythcoiner)
a0b74709f33d7eb84c2c9692d2d079096891c283 settings: add a tests for GlobalSettings (pythcoiner)
c53ace8b0bb2e006221ae2faf013fe7ab0b1e16d gui: store the window size in global settings only on shutdown (pythcoiner)
13652e3c33f1844440831761d01faa7bfc499d0e settings: add a lock to read/write global settings (pythcoiner)
b696f50f8c9b4938e9a43e0bcb6b77db82c5b002 gui: apply previous screen size before launch (pythcoiner)
2dc838f85c0de563ee19d28332f7c60f4a9c094c gui: be smart with window size at launch (pythcoiner)
089992b9475d4d9b2868399afeb1ceadf7ee37f5 settings: add window_config to GlobalSettings (pythcoiner)
cb8a421571bebb2fe0ac206175682167b7b1b64c settings: rename global::Settings => global::GlobalSettings (pythcoiner)
bf666539bfed7a75a0dfc2d34ac377b1b094278b gui: implement State::datadir_path() (pythcoiner)
Pull request description:
closes#1546 following last requirements:
> Currently the consensus has been on the following solution: resize the window according to a logic similar to https://github.com/wizardsardine/liana/pull/1695 at the first launch and then remember the last size for following launches of the application.
Summary of the feature introduced in this PR:
- The first time Liana launch, the window is maximized in order to "guess" the maximum usable size on the monitor, and then we apply [this logic](https://github.com/wizardsardine/liana/issues/1546#issuecomment-2750974470) for deciding the default size.
- The default size is recorded in `global_settings.json` (so this aplly to ALL wallets)
- On nexts Liana launch, the window is resized to the value contained in `global_settings.json`
I added something not clearly defined: if the user resize its screen, we reapply the last screen size at startup.
ACKs for top commit:
edouardparis:
ACK b1e06ee10638895e2bcf7ac41bd5933048e2ca34
Tree-SHA512: 1ffb0ef852846d5599a747d619a19a2ee2b47ecbb26172de95ffbf6ad2d0c65851b3236070081e81b2503914e6916abc3ed59899131a8a475f6d07662a951d0e
ceec4f9e79cd464f5ea39c0d85f92e199b70a491 feat(gui): add links with info about backend/node settings (Michael Mallan)
0d48f8efee45eee05156b3acea8d8a9f2adbdd1e refactor(installer): fix typo in clipboard enum variant (Michael Mallan)
Pull request description:
This implements #1755.
TODO:
- [x] Update URL to relevant support page
ACKs for top commit:
edouardparis:
tACK ceec4f9e79cd464f5ea39c0d85f92e199b70a491
Tree-SHA512: 0bb7a2ea9627953d94d5ae05059ad74646facb5521be3e874b763e52c7eeff2c61784aef81cf84707a9dede35380fa37b1f1f52e30c078dfba55ed2f45efddfa
This uses a modified version of bdk_electrum 0.15 (corresponding
to BDK tag v1.0.0-alpha.13) that enables the use of the ring
provider in rustls.
The default aws-lc-rs provider breaks the reproducible build.
Weights are now stored as `u64` instead of `u32`.
The tests have been updated to reflect that coin selection now
calculates feerates using a transaction's size in rounded-up
vbytes.
This upgrades bitcoin to 0.32 and related dependencies accordingly.
Note that the bdk_electrum crate has not been upgraded to the most
recent version available as the Electrum syncing there takes much
longer due to the fetching and validation of Merkle proofs. There
are ongoing BDK changes in relation to that and so we can further
upgrade this dependency once those changes have been completed.
Non-BDK changes to the liana and lianad crates are taken from
darosior's commit 20ee8b1e7b77cbf65942bc4f083afea95f2d1506 in
draft PR https://github.com/wizardsardine/liana/pull/1228.
308355322cd62b4e98a91de40c92070c3a8ae011 ci: add openssl to 'windows_latest' (pythcoiner)
09bb450b1fbd39aabec61719b9e67e12180641ba gui: allow user to not validate the ssl domain for an electrum server (pythcoiner)
efb23300dae06702459e07334ab458bfcc54b3e6 lianad(electrum): add an option to not validate SSL domain in order to work w/ self signed certificates (pythcoiner)
Pull request description:
closes#1300
The issue about connecting to an electrum certificate using `rustls` have been fixed [upstream](https://github.com/bitcoindevkit/bdk/issues/1598) but in order to beneficiate from it we have to update `bdk_electrum` and `rust-bitvoin` dependencies.
Meanwhile, this PR introduce a workaround: the initial issue is related to `electrum-client` `use-rustls` feature and `use-openssl` feature is not reexported by `bdk_electrum` but we can use `electrum-client` crate directly and use `use-openssl` feature by this way:
- [x] use `electrum-client` directly w/ `use-openssl`
- [x] add and option to opt-out of ssl domain validation
- [x] let user change the `validate_domain` values in `Settings` menu.

Note: ssl://testnet.aranguren.org:51002 electrum server can be used to test this PR
ACKs for top commit:
jp1ac4:
ACK 308355322c.
Tree-SHA512: 28139ef6c6073045b413303c725c0d6c83b193d89c7b39edfb1d10108a1551c1ac9fdf20c941bc770d62f0075fb47ffa305b4975ea38e1840ae3d631ca9e39e6
We expect user to use systemd service to manage a daemon or
to handle their process by themself.
The json-rpc server is exposed only for unix systems through
unix sockets, it is moved to its own module while the implementation
for windows is marked as TODO.
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.
The most notable change is rust-bitcoin's change in the serialization of
transaction with no input. It now accounts for the segwit marker even
for those. The base tx weight in coin selection had to be adapted to
handle this.
See https://gnusha.org/bitcoin-rust/2024-01-04.log for details.
When creating a new spend, if coin outpoints are not provided,
then coins will be selected automatically.
This automatic selection is such that the transaction fee is
minimized, taking into account the cost of creating any
change output now and the cost of spending it in the future.
If change is added, it must reduce the transaction waste and
be above the dust threshold. This same policy is applied also
in the case of manual coin selection, replacing the previous
logic for determining the change amount. This ensures that
creating a spend with auto-selection and another with manual
selection using the same auto-selected coins will give the
same change amount.