60 Commits

Author SHA1 Message Date
unstoppableswap-botty
56363da214
Prepare release 1.0.0-rc.4 (#187) 2024-11-17 17:07:38 +01:00
binarybaron
82c4b600c8
fix(ci): Use ubuntu-22.04 to build GUI, enable preview builds, revert 1.0.0-rc.3 (#185)
* fix(ci): Use ubuntu-22.04 to build GUI

* Revert "Prepare release 1.0.0-rc.3 (#184)"

This reverts commit 6bf90eb28e00bedec042827b0354363e401bba02.
2024-11-17 12:42:57 +01:00
unstoppableswap-botty
6bf90eb28e
Prepare release 1.0.0-rc.3 (#184)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2024-11-17 12:21:38 +01:00
unstoppableswap-botty
56102fa379
Prepare release 1.0.0-rc.2 (#179) 2024-11-16 13:01:44 +01:00
unstoppableswap-botty
38e07c9937
Prepare release 1.0.0-rc.1 (#175)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2024-11-15 14:51:07 +01:00
unstoppableswap-botty
afdf310890
Prepare release 1.0.0-alpha.3 (#174)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2024-11-15 00:26:07 +01:00
binarybaron
c5aa6bf505
feat(gui): Kill monero-wallet-rpc if running in background, include version in window title (#172) 2024-11-14 22:27:17 +01:00
unstoppableswap-botty
2b47904120
Prepare release 1.0.0-alpha.2 (#171)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2024-11-14 19:33:15 +01:00
binarybaron
79bc8c08f1
fix(ci, tauri): Build darwin app target
This is needed for the auto updater to work
2024-11-14 18:55:24 +01:00
Binarybaron
7faf9aec4f fix(ci, tauri): Only build appimage, dmg, nsis and msi 2024-11-14 16:48:35 +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
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
e76ff3ac9c
feat(gui): Change product name to "UnstoppableSwap (new)" (#146) 2024-11-09 17:22:10 +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
4867d2713f
feat(gui): Release 0.7.2
The purpose of this release is to test the auto updater
2024-11-08 17:54:40 +01:00
binarybaron
765655bfb6 fix(tauri): Remove dialog::default capability 2024-11-07 21:57:56 +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
efaf51f499
feat(gui): Release 0.7.1
This release is to verify the workings of the auto updater
2024-11-06 13:12:37 +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
37d1f07c2d
release(gui): 1.0.0 alpha.1 (#125) 2024-10-22 13:22:46 +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
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
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
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
97510a8619
refactor(gui): Swap state stepper to use Tauri events (#77)
Previously we used the data we fetched via the rpc (`GetSwapInfo` call, saved in redux in `rpc.swapInfos`) to decide what to display in the state stepper to the user. The state stepper is displayed at the bottom of the `SwapDialog`.

However, we are moving away from our depedence on periodic rpc calls and towards relying more and more on the events we receive from the Host (from Tauri). Our goal is to rely solely on the Tauri events for everything displayed about the currently running swap.

This PR includes the following changes:
- refactor the `SwapStateStepper` such that it relies only on the Tauri events
- emit two new Tauri events (`EncryptedSignatureSent`, `CancelTimelockExpired`) in the state machine
- correctly emit `BtcRefunded` Tauri event after Bitcoin refund transaction is published
- differentiate between `"Waiting for them to redeem the Bitcoin"` and `"Revealing encrypted signature to the other party"` on the `SwapStatePage` (content displayed in the center of the `SwapDialog`)
2024-09-23 03:31:24 +06:00
binarybaron
167e031172
feat(gui): Allow discovery of sellers via connecting to rendezvous point (#83)
We,
- add a new list_sellers Tauri IPC command
- we rename the Seller struct to AliceAddress to name clash
2024-09-19 00:40:51 +02:00
binarybaron
c486ca5de9
feat(gui): Display logs of specific swap on press of button on history page 2024-09-09 21:31:54 +02:00
binarybaron
2a339231b1
ci: create gui preview release on push to master (#65)
- Adds a Github action file that build the binaries
- Run yarn build command before tauri build is started
- Disable tauri config csp rules
2024-09-06 23:29:16 +02:00
binarybaron
177e3e9949
feat(gui): Add button to display monero redeem recovery keys (#64) 2024-09-06 14:23:36 +02:00
binarybaron
e4bddd2287
feat(tauri): Automatically start frontend dev server when running cargo tauri dev (#63) 2024-09-06 13:25:26 +02:00
Einliterflasche
ff2e3ae8dd
feat(gui): open links in default browser (#50) 2024-09-04 17:11:06 +02:00
binarybaron
e4141c763b
feat(tauri): Initialize Context in background (#59)
This PR does the following:
- The Context (including Bitcoin wallet, Monero wallet, ...) is initialized in the background. This allows the window to be displayed instantly upon startup.
- Host sends events to Guest about progress of Context initialization. Those events are used to display an alert in the navigation bar.
- If a Tauri command is invoked which requires the Context to be available, an error will be returned
- As soon as the Context becomes available the `Guest` requests the history and Bitcoin balance
- Re-enables Material UI animations
2024-09-03 12:28:30 +02:00
binarybaron
792fbbf746
feat(asb + cli): Redact logs + unify tracing infrastructure (#1733) (#55)
* feat(asb + cli): Redact logs + unify tracing infrastructure (#1733)

Applies the changes from https://github.com/comit-network/xmr-btc-swap/pull/1733 to this fork

---------

Co-authored-by: Einliterflasche <81313171+Einliterflasche@users.noreply.github.com>
2024-09-01 18:13:43 +02:00
Einliterflasche
ff1ded55ba
feat(gui): Clickable addresses to copy to clipboard (#38) 2024-08-29 14:28:23 +02:00
binarybaron
c7c7cf1886
Merge pull request #37 from UnstoppableSwap/tauri-feature-flag
Introducing a feature flag in the swap crate that conditionally enables the tauri depencendy. This allows compiling the swap crate without the heavy tauri dependency. This also enables us to build arm binaries in the CI again.

This closes #32 and #34
2024-08-28 22:54:28 +02:00
binarybaron
ca25e0454f fix(tauri, gui): Allow Tauri command to be called with empty arguments
- Allow Tauri command to be called with empty arguments
- Add struct for GetSwapInfosAllArgs
2024-08-27 22:34:21 +02:00
Einliterflasche
c562e352f2 refactor(cli): Builder pattern for constructing Context 2024-08-27 17:55:03 +02:00
Einliterflasche
a57e3aff75
clean: use dprint 2024-08-26 16:19:11 +02:00
binarybaron
349035d321
refactor(tauri, swap): move rpc api to cli/api 2024-08-26 15:41:00 +02:00
binarybaron
d54f5c6c77
refactor(tauri): Use macro and new Request trait for command generation 2024-08-26 15:26:21 +02:00
binarybaron
718132b8b4
feat: Kill monero-wallet-rpc on GUI exit 2024-08-10 12:56:19 +02:00
binarybaron
06f2a16715
feat: Add custom Icon 2024-08-09 20:14:06 +02:00
binarybaron
47821cbe79
wip: WithdrawDialog migrated to Tauri IPC 2024-08-09 19:03:28 +02:00