85 Commits

Author SHA1 Message Date
Einliterflasche
799eb15411
GUI: warn against replace-by-fee for deposit transactions (#243)
* add alert in deposit page to warn against replace-by-fee
2025-01-07 12:15:43 +01:00
binarybaron
cf20891638
fix(gui): Fetch balance after swap is released, re-fetch database after progress event, change wording in progress page (#237) 2024-12-23 11:59:40 +01:00
Binarybaron
fd953b201b fix(gui): Incorrect entry in yarn.loc 2024-12-04 18:18:43 +01:00
Binarybaron
2a14add01a fix(gui): Incorrect entry in yarn.loc 2024-12-04 18:14:25 +01:00
binarybaron
0f32ad195f
feat(gui): Release .deb binaries, allow auto updater to function with deb installations (#219) 2024-12-02 15:02:04 +01:00
binarybaron
e336051c1b
feat(gui): Display markup on "waiting for bitcoin deposit page" (#209)
* feat(gui): Display markup on "waiting for bitcoin deposit page"
* feat: Enable fetching of fiat rates by default
2024-11-26 14:18:20 +01:00
Binarybaron
bdb406a299 bump: sysinfo to 0.32.1, tauri deps to latest 2024-11-26 14:04:22 +01:00
binarybaron
b2e74df37e
feat: Maker avatar (#205)
- GUI: Changed terminology from "swap providers" to "makers"
- GUI: For each maker, we now display a unique deterministically generated avatar derived from the maker's public key
2024-11-25 20:15:09 +01:00
binarybaron
689dd89e72
feat(swap): Start wallets and tor client in parallel (#198)
CLI + GUI: At startup the wallets and tor client are started in parallel. This will speed up the startup time of the application.
2024-11-21 01:51:19 +01:00
binarybaron
6cd228fada
feat(swap): Use art_client to dial over Tor (#196)
- Upgrade `sqlx` to `0.8`
- Use `arti_client@0.24` in combination with [`libp2p-community-tor`](https://crates.io/crates/libp2p-community-tor/0.4.1). https://github.com/umgefahren/libp2p-tor/pull/18 was required for this.
- Display spinner in GUI while Tor circuits are being established
- Remove unused dependencies (`once_cell`, `tauri-plugin-devtools`, `digest`, `hyper`, `itertools`, `erased_serde`)
- Bundle roboto font from npm registry
2024-11-21 01:00:36 +01:00
binarybaron
5192114d6d
feat(gui): Build vite frontend using mode=production (#192) 2024-11-19 16:25:58 +01:00
Binarybaron
c5958c4dc1 fix(gui): If two asbs have the same relevancy score, sort by price 2024-11-19 16:25:01 +01:00
binarybaron
d953114c49
refactor(gui): Seperate background refresh logic (#193) 2024-11-19 15:03:55 +01:00
binarybaron
b409db35d0
fix(gui): Update Discord invite link (#190) 2024-11-19 14:58:03 +01:00
binarybaron
aa81f3c588
feat(gui): Switch to up-to-date asb, if current one is outdated (#189) 2024-11-17 23:14:36 +01:00
binarybaron
58800a5b53
feat(gui): Allow providers discovered via rendezvous to take priority (#177) 2024-11-16 12:29:02 +01:00
binarybaron
aca0d6aa74
feat(gui): Show up to 16 characters of peer id of asb (#176) 2024-11-16 12:28:09 +01:00
Binarybaron
826217c323 fix(gui): Start context as soon as we have a valid node for each blockchain 2024-11-15 00:14:54 +01:00
binarybaron
6f0d060263
feat(gui): Display progress of monero-wallet-rpc download (#170) 2024-11-14 19:20:45 +01:00
binarybaron
3540a029bd
feat(gui): Refer to external Github release page when download is ready (#169) 2024-11-14 19:02:10 +01:00
binarybaron
163f6fa94d
feat(gui): Connect to preset rendezvous nodes at startup (#162) 2024-11-14 17:04:27 +01:00
binarybaron
7ebe59bc8d
feat(gui): Deprioritize asbs running below 1.0.0-alpha.1 (#163) 2024-11-14 17:03:09 +01:00
binarybaron
e46be4a9ff
feat(gui): Refund swap in the background (#154)
Swaps will now be refunded as soon as the cancel timelock expires if the GUI is running but the swap dialog is not open.
2024-11-14 14:20:22 +01:00
binarybaron
4cf5cf719a
feat(gui): Display timelock status using a timeline (#153) 2024-11-14 13:33:20 +01:00
Einliterflasche
3e79bb3712
feat(GUI): Add settings for theme, fiat currency and remote nodes (#128) 2024-11-13 22:51:47 +01:00
binarybaron
eac435aba6
feat(gui): Display state page for inflight swap setup (#158)
We now display a "Starting swap with provider to lock ... BTC" page when the Bitcoin have been deposited and the swap setup is inflight.
2024-11-13 20:18:13 +01:00
binarybaron
c027e51087
refactor(swap): Upgrade libp2p to 0.53.2, reliable retry mechanisms (#109)
Our libp2p version is out of date, and we need to tackle the upgrade even though it's a significant undertaking. This'll also fix some other [issues](https://github.com/UnstoppableSwap/core/issues/95).

## This PR includes the following changes:
- Breaking network protocol change: The libp2p version has been upgraded to 0.53 which includes breaking network protocol changes. ASBs and CLIs will not be able to swap if one of them is on the old version.
- ASB: Transfer proofs will be repeatedly sent until they are acknowledged by the other party. This fixes a bug where it'd seem to Bob as if the Alice never locked the Monero. Forcing the swap to be refunded.
- CLI: Encrypted signatures will be repeatedly sent until they are acknowledged by the other party
- CLI+ASB: Libp2p network errors in request-response protocols are now propagated throught the event loop channels. This allows the caller to retry if an error occurs (e.g timeout)

Closes https://github.com/UnstoppableSwap/core/issues/101, https://github.com/UnstoppableSwap/core/issues/95
2024-11-11 00:14:42 +01:00
binarybaron
a116c27785
feat(gui): Use inbuild LazyStore feature of @tauri-apps/plugin-store (#150) 2024-11-10 20:46:24 +01:00
binarybaron
1867b009b9
fix(gui): Hide manual cancel and refund button (#142)
We no longer show the manual cancel and refund button. This functionality is currently not implemented in the GUI. The state machine should resume the swap as well. The functionality can be added back later.
2024-11-09 12:27:57 +01:00
binarybaron
3614b9f9d2
fix(gui): Link to github docs should be /dev-docs instead of /docs (#140) 2024-11-09 12:16:57 +01:00
binarybaron
bd3fca7e41
feat(gui): Allow to select from recently used monero addresses (#139)
* feat(gui): Allow user to select from recently used monero addresses in textfield
2024-11-09 12:11:00 +01:00
binarybaron
8283d09b5b
fix(gui): Relaunch application after updater installation has finished (#137) 2024-11-07 21:11:46 +01:00
binarybaron
12528a9d4e
feat(gui): Enforce single instance of GUI to be running (#135)
* feat(gui): Only allow a single instance of the application

* feat(tauri): Remove unused tauri-plugin-dialog crate/yarn package
2024-11-06 19:39:32 +01:00
binarybaron
c1afc7aa2a
feat(gui): Display dialog when update is available (#132)
* feat(tauri): Use new tauri signing key

* feat(gui): Display MUI dialog when update is available
2024-11-05 21:01:23 +01:00
binarybaron
a9b1d05af0 feat: release GUI version 0.7.0. This should be a preview release but isn't for testing purposes 2024-11-04 15:17:49 +01:00
binarybaron
8437473a1b feat(gui): Bump version to 1.0.0-alpha.1 2024-10-23 17:18:39 +02:00
binarybaron
584cc41411
feat(gui): Display provider spread to user (#124) 2024-10-22 12:04:37 +02:00
binarybaron
6c433041b7
feat(gui, tauri, ci): Auto updater (#105) 2024-10-17 14:56:04 +02:00
Einliterflasche
c91adb3ac8
feat(tauri): Allow export of wallet descriptors (#118) 2024-10-15 14:22:35 +02:00
binarybaron
898c7a2450 fix(gui): Empty tx lock id text box on history page 2024-10-14 00:10:23 +02:00
binarybaron
15b43bf4a4
feat(gui): Button to open modal with QR code of Bitcoin address (#116) 2024-10-14 00:01:11 +02:00
binarybaron
2bffe40a37
Merge changes from legacy GUI, allow daemon logs to be attached to feedback (#115)
This PR applies all remaining changes from https://github.com/UnstoppableSwap/unstoppableswap-gui/pull/210


- Added checkbox option to attach daemon logs when submitting feedback
- Added "Outdated" chip with warning icon for providers running outdated asb versions
- Updated `BitcoinPunishedPage` to display different messages for BtcPunished and CooperativeRedeemRejected states (including reason for failed cooperative redeem)
- Added "Attempt recovery" button for swaps in BtcPunished state
- Modified `getBitcoinTxExplorerUrl` to use mempool.space instead of blockchair.com
- Added `useResumeableSwapsCountExcludingPunished` hook to count resumable swaps excluding punished ones, use it for the badge and alert
- Updated `sortProviderList` function to filter out incompatible providers before sorting
- Added `TauriSwapProgressEventExt` type to extract specific event types from TauriSwapProgressEvent
2024-10-13 18:04:47 +02:00
Einliterflasche
639f540876
feat(tauri): send tauri event on btc balance change (#113)
Closes #43. This PR creates a new event, which is emitted by the watcher daemon when the BTC balance changes. Then, on the guest side, we simply update the balance when this event is received.
2024-10-13 18:01:29 +02:00
binarybaron
ec86fa13cd
fix(tauri): Emit 'Initiated' progress event once swap lock is aquired (#112)
* fix(tauri): Emit 'Initiated' progress event once swap lock is aquired
2024-10-11 20:17:46 +06:00
binarybaron
83f831ccac
feat(gui, tauri): Accept --testnet flag, default to mainnet (#106)
This PR tackles #92 

- Add the `tauri-plugin-cli` (only on desktop)
- Check in the frontend if the `--testnet` flag is set. If it's set we pass `testnet=true` to the `initialize_context` command on invokation
- We add the `vite-plugin-top-level-await` to allow top level await in all browsers
- Remove the `bitcoin_confirmation_target` from settings for simplicity
2024-10-10 14:51:56 +02:00
binarybaron
8f33fe5b41
feat(tauri, gui): Send event on changes to details, timelocks and tx_lock confirmations (#100)
- Send event when new swap state is inserated into database. The event only has the `swap_id` attached. The frontend then sends a request to the `get_swap_info` command to retrieve the updated version
- Send event when the Bitcoin lock transaction gets a new confirmation 
- A new `watcher` daemon runs contineously and sends an event when the timelock updated. The event has the the `swap_id` and the timelock attached
- Display logs on `ProcessExitedPage` (if swap was stopped prematurely)
- Rename `CliLogEmittedEvent` to `TauriLogEvent`
- Apply env_filter to tracing terminal writer to silence logging from other crates
- Add `.env.*` files in `src-gui` to `.gitingore`

Closes #93 and #12
2024-10-09 15:06:57 +02:00
binarybaron
e6dc7ddcef fix(gui): Lazy load tauri store 2024-10-08 20:55:55 +02:00
binarybaron
253e0b0cf6
feat(gui, tauri): Save settings in Tauri storage (#102)
- Implemented dual persistence strategy:
  - **User Settings**: Persisted across app restarts using `tauri-plugin-store`.
  - **Transient State**: Persisted across page reloads using `sessionStorage`.
- Added `settingsSlice` reducer for managing persistent user settings.
- Updated Redux store configuration to handle multiple persistence layers.
- Added a new Settings page in the GUI where users can specify custom Electrum RPC URLs for Bitcoin and Monero node URLs.
  - Users can input their preferred Electrum server (`ssl://host:port`) and Monero daemon (`http://host:port`).
  - Input fields include validation to ensure correct URL formats.
  - Settings persist across application restarts using Tauri's storage plugin.
  - A reset option is available to revert to default settings.
- Improved the Daemon Controller in the Help page:
  - Renamed `RpcControlBox` to `DaemonControlBox` for clarity.
  - Users can now start the daemon manually if it isn't running or has failed.
  - Added a "Restart GUI" button to apply new settings immediately.
  - Displayed the daemon's status within the controller.
- Upgraded Tauri and related plugins to stable version `2.0.0`:
  - Updated `tauri`, `tauri-build`, and `tauri-utils` to `2.0.0`.
  - Ensured compatibility with the latest stable release.
- Updated Tauri plugins to version `2.0.0`:
  - `tauri-plugin-clipboard-manager`
  - `tauri-plugin-shell`
  - Added new plugins:
    - `tauri-plugin-store` for settings persistence.
    - `tauri-plugin-process` to enable application relaunch.
- Deferred Context initialization until explicitly triggered from the frontend.
  - Moved Context setup from the `setup` function to a new `initialize_context` Tauri command.
  - Allows the application to start without immediately initializing the backend context.
  - Context initialization now considers user-provided settings for Electrum and Monero nodes.
- Introduced a `ValidatedTextField` component for form inputs with validation logic.
  - Provides immediate feedback on input validity.
  - Used in the Settings page for Electrum and Monero node URLs.
- If the user provides an override Monero remote daemon, we check if it reachable and on the correct network before starting the `monero-wallet-rpc`
- Changed `bitcoin_confirmation_target` type from `usize` to `u16`.
2024-10-08 12:57:01 +02:00
Einliterflasche
7b79ad6abe
feat(cli+tauri): Send logs from host to guest (#90)
* feat(tauri): send logs from cli to tauri

---------

Co-authored-by: binarybaron <binarybaron@unstoppableswap.net>
Co-authored-by: binarybaron <86064887+binarybaron@users.noreply.github.com>
2024-09-26 17:09:46 +06:00
binarybaron
21608ce4f7
feat(gui): Specify stub testnet provider via VITE_TESTNET_STUB_PROVIDER_ADDRESS environment variable (#99) 2024-09-25 20:16:38 +02:00