Commit graph

3251 commits

Author SHA1 Message Date
Mohan
db5d02ea3d
refactor: Move libp2p-community-tor into monorepo (#484)
* refactor: Move libp2p-community-tor into monorepo

* fmt
2025-07-29 20:10:15 +02:00
Mohan
69ddd2486d
feat(gui): DFX.swiss integration (#451)
* feat(gui): Monero wallet

* progress

* refactor

* progress, dont delete wallet, re-fetch approvals and background periodically

* show transaction history correctly

* Enable fetching tx hashes

* Try add the wallet listener event callbacks, not working

* fix: Redeem XMR to internal main wallet, not temp wallet

* feat(monero-sys): Support signing messages

* feat(gui): DFX.swiss integration

* refactor: format, slight refactorings

* progress

* type safety

* refactoring of callback system

* make free floating functions generic

* refactor: Format files

* refactor(gui): Split wallet components and redesign balanceOverview component

* refactor(gui): Add action buttons and transaction section

* wrapper event listener

* progress, compiles

* works!

* WORKS! Event received on balance change

* refactor: format and slight refactorings and comments

* refactor(gui): Start with implementation of send dialog

- new number input
- new button variant and size

* add @tauri-apps/plugin-dialog

* feat(gui): Add permissions for file dialog

* fix(monero-harness): Compile issue

* feat(gui): Extract seed from Monero wallet and use for derivation, allow opening existing wallet file

* feat(gui): Always refresh the approval list from frontend when resolving

* fix(monero-rpc-pool): Implement Into<String> for ServerInfo

* fix(monero-sys): Use oneshot channel for all wallets

* feat(gui, monero-sys): Display recently opened wallets

* small refactors

* fix(gui): Enable background_sync, display temp "Loading..." if values are null

* feat(gui): Remove headers from pages, show selected navigation item

* feat(gui): Explicitly tell user if no swaps have been made yet

* feat(gui): send sync and history updates

* feat(gui): Fetch monero wallet details when context becomes availiable

* feat(gui): Display Monero primary address without modal

* feat(gui): Make "swap" button on wallet page take you to "/swap"

* feat(gui): Rework send modal, adjust number input, added send to field

* feat(gui): set block restore height, not working

* refactor(gui): Optimize number input and add support for switching between currency

* feat(gui): Display real fiat currency prices in send modal

* feat(gui): Add error message for too high send amount

* feat(gui): Modern UI for SeedSelectionDialog

* feat(gui): Wrap MoneroWalletActions

* wip

* refactoring approval callback

* feat(gui): Send Direction of Transaction in History to Frontend

* feat(gui): Let user approve transaction before publishing

* feat: Display 8 digits for Monero amounts by default

* feat(monero-sys): Store pending (non published) transactions in Mutex map inside wallet thread

This allows seperating signing and publishing transactions cleanly

* dprint fmt

* fix(gui): Refresh Monero wallet history C++ struct before serializing

* feat(monero-rpc-pool): Fail after three JSON-RPC errors

* feat(monero-sys): Add wrapper around verify_wallet_password

* feat(gui): Allow opening password-protected Wallets

* refactor: fmt, remove receive button

* fix(gui): Convert to XMR before converting into Fiat

* feat(gui): Add dialog for setting restore height

* feat(gui): block height can be changed, blocks when too low

* refactor(monero-sys): Remove old WalletListener code

* feat(gui): Continually ask for user to select wallet and enter password, if user rejects, offer to select different wallet

* refactor(swap): Extract "select Monero wallet" into own function

* refactor(tauri): Dont kill monero-wallet-rpc

* refactor(tauri): Avoid multiple concurrent Contexts starting

* refactor: Change "Cancel" to "Change wallet" on PasswordEntryDialog

* feat(gui): show curent block height, fix blockage

* Cargo.lock update

* refactor(monero-sys): Use match instead of is_err() and expect(...)

* refactor: better context for WalletHandle constructor method errors handling

* refactor(monero-sys): Common open_with<F>(path: String, daemon: Daemon, wallet_op: F) function

* feat: check empty password before requeston password for wallet

* feat: Remove "Checking for available remote nodes" from frontend

* feat(gui): Allow sweeping entire Monero balance

* feat(monero-rpc-pool): Keep alive TCP connections, do not record JSON-RPC errors as failure if >=3 nodes failed

If >=3 nodes failed we assume it was an actual issue on our side, not an issue with the node

* refactor(swap): Remove dead code

* add comment to WalletHandleListener::on_refreshed{...}

* feat(gui): show current block height in the field

* refactor: remove unused UserCancelledError;

* refactor: No Arc<Mutex<_>> for Pending TXs map

* refactor: remove redundant } catch (error) {

* feat: add our new crates to `OUR_CRATES` in tracing util

* fix(gui): Add math.ceil to piconero conversion to ensure integer

* fix(gui): Close menu when option is clicked

* review and improve/reduce uses of unsafe, also remove unique_ptr wrapper around TransactionHistory to avoid double free

* fix(gui): Use monero amount from units.tsx

* fix(gui): Use PromiseInvokeButton for simplification for approving of send transaction

* update comment, rename function

* refactor(gui): Fix alignment of amounts

* refactor(gui): Remove sending and refreshing states from wallet

* fix(cli, gui): use old seed flow on no tauri, fix minor issues in gui

* fix: use the new named function

* refactor(gui): Add skeletons for monero wallet when still loading

* fix

* get working

* feat(gui): Add tooltip to buy monero button

* refactor: Format files

* refactor(gui): Do not store logs in redux-persist

---------

Co-authored-by: Maksim Kirillov <maksim.kirillov@staticlabs.de>
Co-authored-by: b-enedict <benedict.seuss@gmail.com>
Co-authored-by: einliterflasche <einliterflasche@pm.me>
2025-07-28 11:00:33 +02:00
Gecko Botty
591d0b8e20
Prepare release 3.0.0-beta.2 (#482)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2025-07-27 23:57:40 +02:00
Mohan
65a3ebdbe2
refactor(gui): Do not store logs in redux-persist (#476)
* refactor(gui): Do not store logs in redux-persist

* amend fmt
2025-07-23 22:13:56 +02:00
Mohan
18f1f45642
fix(monero-sys): Lock refresh before storing wallet file (#475)
* fix(monero-sys): Lock refresh before storing wallet file

* amend
2025-07-23 22:01:06 +02:00
Binarybaron
5ab89ec383 fix(flatpak): Link to .org instead of .net 2025-07-22 21:22:22 +02:00
Gecko Botty
c5daddcb56
Prepare release 3.0.0-beta (#473)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2025-07-18 15:41:26 +02:00
Mohan
1ad4bcadf5
feat(gui): Rework transaction history ui (#470)
Co-authored-by: b-enedict <benedict.seuss@gmail.com>
2025-07-18 15:33:59 +02:00
Binarybaron
c1c45571f0 dprint fmt 2025-07-18 15:24:03 +02:00
Binarybaron
7102962898 changelog: Monero wallet 2025-07-18 15:17:09 +02:00
Binarybaron
eb98b10c94 fix(swap): Dont cleanup because we have no Tokio reactor 2025-07-18 15:14:54 +02:00
Mohan
a7823d7489
feat(gui): Monero wallet (#442)
* feat(gui): Monero wallet

* progress

* refactor

* progress, dont delete wallet, re-fetch approvals and background periodically

* show transaction history correctly

* Enable fetching tx hashes

* Try add the wallet listener event callbacks, not working

* fix: Redeem XMR to internal main wallet, not temp wallet

* type safety

* refactoring of callback system

* make free floating functions generic

* refactor: Format files

* refactor(gui): Split wallet components and redesign balanceOverview component

* refactor(gui): Add action buttons and transaction section

* wrapper event listener

* progress, compiles

* works!

* WORKS! Event received on balance change

* refactor: format and slight refactorings and comments

* refactor(gui): Start with implementation of send dialog

- new number input
- new button variant and size

* add @tauri-apps/plugin-dialog

* feat(gui): Add permissions for file dialog

* fix(monero-harness): Compile issue

* feat(gui): Extract seed from Monero wallet and use for derivation, allow opening existing wallet file

* feat(gui): Always refresh the approval list from frontend when resolving

* fix(monero-rpc-pool): Implement Into<String> for ServerInfo

* fix(monero-sys): Use oneshot channel for all wallets

* feat(gui, monero-sys): Display recently opened wallets

* small refactors

* fix(gui): Enable background_sync, display temp "Loading..." if values are null

* feat(gui): Remove headers from pages, show selected navigation item

* feat(gui): Explicitly tell user if no swaps have been made yet

* feat(gui): send sync and history updates

* feat(gui): Fetch monero wallet details when context becomes availiable

* feat(gui): Display Monero primary address without modal

* feat(gui): Make "swap" button on wallet page take you to "/swap"

* feat(gui): Rework send modal, adjust number input, added send to field

* feat(gui): set block restore height, not working

* refactor(gui): Optimize number input and add support for switching between currency

* feat(gui): Display real fiat currency prices in send modal

* feat(gui): Add error message for too high send amount

* feat(gui): Modern UI for SeedSelectionDialog

* feat(gui): Wrap MoneroWalletActions

* wip

* refactoring approval callback

* feat(gui): Send Direction of Transaction in History to Frontend

* feat(gui): Let user approve transaction before publishing

* feat: Display 8 digits for Monero amounts by default

* feat(monero-sys): Store pending (non published) transactions in Mutex map inside wallet thread

This allows seperating signing and publishing transactions cleanly

* dprint fmt

* fix(gui): Refresh Monero wallet history C++ struct before serializing

* feat(monero-rpc-pool): Fail after three JSON-RPC errors

* feat(monero-sys): Add wrapper around verify_wallet_password

* feat(gui): Allow opening password-protected Wallets

* refactor: fmt, remove receive button

* fix(gui): Convert to XMR before converting into Fiat

* feat(gui): Add dialog for setting restore height

* feat(gui): block height can be changed, blocks when too low

* refactor(monero-sys): Remove old WalletListener code

* feat(gui): Continually ask for user to select wallet and enter password, if user rejects, offer to select different wallet

* refactor(swap): Extract "select Monero wallet" into own function

* refactor(tauri): Dont kill monero-wallet-rpc

* refactor(tauri): Avoid multiple concurrent Contexts starting

* refactor: Change "Cancel" to "Change wallet" on PasswordEntryDialog

* feat(gui): show curent block height, fix blockage

* Cargo.lock update

* refactor(monero-sys): Use match instead of is_err() and expect(...)

* refactor: better context for WalletHandle constructor method errors handling

* refactor(monero-sys): Common open_with<F>(path: String, daemon: Daemon, wallet_op: F) function

* feat: check empty password before requeston password for wallet

* feat: Remove "Checking for available remote nodes" from frontend

* feat(gui): Allow sweeping entire Monero balance

* feat(monero-rpc-pool): Keep alive TCP connections, do not record JSON-RPC errors as failure if >=3 nodes failed

If >=3 nodes failed we assume it was an actual issue on our side, not an issue with the node

* refactor(swap): Remove dead code

* add comment to WalletHandleListener::on_refreshed{...}

* feat(gui): show current block height in the field

* refactor: remove unused UserCancelledError;

* refactor: No Arc<Mutex<_>> for Pending TXs map

* refactor: remove redundant } catch (error) {

* feat: add our new crates to `OUR_CRATES` in tracing util

* fix(gui): Add math.ceil to piconero conversion to ensure integer

* fix(gui): Close menu when option is clicked

* review and improve/reduce uses of unsafe, also remove unique_ptr wrapper around TransactionHistory to avoid double free

* fix(gui): Use monero amount from units.tsx

* fix(gui): Use PromiseInvokeButton for simplification for approving of send transaction

* update comment, rename function

* refactor(gui): Fix alignment of amounts

* refactor(gui): Remove sending and refreshing states from wallet

* fix(cli, gui): use old seed flow on no tauri, fix minor issues in gui

* fix: use the new named function

* refactor(gui): Add skeletons for monero wallet when still loading

* refactor(gui): Remove isLoading from wallet slice

* feat(gui): Add success dialog after send transaction was approved

* fix(gui): Floor piconero amount in sendMoneroTransaction

* feat(gui): Allow view on explorer button on send success modal

* feat(backend): save the wallet state on events

* fix(structure): move throttle into its own crate

* fix(log): remove spammy logs

* fix(logs): log folder in confid

* remove "sync progress: " log

* small refactors

* save wallet at most every 60s

* remove useless logs

* underscore unused variables

* feat(gui): Add timestamp of the tx

* feat(gui): Add the legacy wallet init option

* legac ybutton

* Fix(gui, asb): reverse the log config
remove log in bridge.h
cleanup

* use none for .store(..)

* display dot for running swap

---------

Co-authored-by: Maksim Kirillov <maksim.kirillov@staticlabs.de>
Co-authored-by: b-enedict <benedict.seuss@gmail.com>
Co-authored-by: einliterflasche <einliterflasche@pm.me>
2025-07-18 15:08:36 +02:00
Gecko Botty
eb0dc10489
Prepare release 2.5.6 (#466)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2025-07-18 11:02:50 +02:00
Binarybaron
4d85e1e961 change flatpak to http://flatpak.eigenwallet.net/ 2025-07-18 10:42:33 +02:00
Mohan
e79a5f700b
changelog: Docker image moved and rename 2025-07-18 10:14:35 +02:00
Binarybaron
a8651c9d6d fix(ci): Push docker image to ghcr.io/eigenwallet/asb 2025-07-18 09:25:35 +02:00
Mohan
fead93fe8d
refactor: swap-feed crate (#464)
* refactor: Move price feed of asb into swap-feed crate

Also move the tracing-subscriber deps into the workspace

* fix conversion methods
2025-07-17 20:27:30 +02:00
Binarybaron
8f53eb4dc3 fix(CHANGELOG): Merge CHANGELOG entries from releases without missing Github releases into 2.4.5 2025-07-17 18:49:55 +02:00
unstoppableswap-botty
a8e8cc762b
Prepare release 2.4.5 (#463)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2025-07-17 18:39:10 +02:00
Binarybaron
2e069cd038 rebranding: Change Tauri productName 2025-07-17 18:19:46 +02:00
Mohan
e3e1ff5f17
rebranding: eigenwallet (#461)
* rebranding: Change github/UnstoppableSwap to github/eigenwallet

* rebranding: change Unstoppable -> eigenwallet in a bunch of places

* rebranding: change tauri icon
2025-07-17 16:31:29 +02:00
unstoppableswap-botty
7bcb804d27
Prepare release 2.4.3 (#462)
Co-authored-by: UnstoppableSwap Botty <help@unstoppableswap.net>
2025-07-17 16:24:03 +02:00
Binarybaron
fde686c555 fix(dprint): ignore monero-seed for dprint 2025-07-17 16:22:09 +02:00
Binarybaron
c970dcdd4e rebranding: Change github/UnstoppableSwap to github/eigenwallet 2025-07-16 15:58:27 +02:00
Mohan
bc35a804f7
feat: Change name in README.md 2025-07-16 15:25:02 +02:00
Binarybaron
e0f8350ab4 fix(monero-sys): Dynamically detect clang directory on mac os 2025-07-15 21:27:44 +02:00
Binarybaron
ccce33f8b0 fix(ci): Disable Linux armv7 and Windows builds, enable concurrency control 2025-07-15 14:44:01 +02:00
Binarybaron
b0dbacfdc7 refactor: Rename seed crate to monero-seed 2025-07-15 10:47:03 +02:00
Mohan
bc96586acf
refactor(workspace): swap-fs, swap-serde, swap-env crates (#459)
* refactor: Remove monero-wallet crate

* refactor: swap-fs, swap-env, swap-serde subcrates, move dependencies into workspace root

* remove unrelated diff

* remove uncommented code

* remove unncessary diff

* merge

* refactor: remove env.rs, fix clippy error
2025-07-14 22:05:43 +02:00
Mohan
e29dd4dcf2
feat(swap): Allow refunding manually Bitcoin even if we are in BobState::SwapSetupCompleted (#455) 2025-07-14 22:04:17 +02:00
Binarybaron
047fe73bc7 fix(swap): Compile error (context(...)) 2025-07-11 15:03:21 +02:00
Binarybaron
f98f195525 fix(asb): Only sync Bitcoin wallet if we use Bitcoin wallet for sending 2025-07-09 14:48:52 +02:00
Binarybaron
a8a7382cbf fix(moneror-rpc-pool): Reset database (nodes.db -> nodes_v2.db) 2025-07-09 10:13:58 +02:00
Binarybaron
bb396ad3b5 fix(monero-sys): sweep_multi argument type switch to non-option 2025-07-09 09:58:01 +02:00
Binarybaron
97d7996a64 feat: bump version to 2.4.3 2025-07-09 09:49:47 +02:00
Binarybaron
b8204d5352 feat(gui): Hide redeem to internal address for now 2025-07-09 09:48:00 +02:00
Mohan
56722a5780
feat(monero-sys): Sign message (#450) 2025-07-06 14:06:40 +02:00
Binarybaron
38332ab79f fix: Redeem XMR to internal main wallet, not temp wallet 2025-07-04 16:44:05 +02:00
Mohan
7b67dce140
feat(gui): Redeem to internal Monero wallet (#448)
* fmt

* remove old stuff

* refactor
2025-07-04 15:50:23 +02:00
Binarybaron
293ff2cdf3 fix(gui): "Approval not found or already handled" 2025-07-04 13:40:54 +02:00
Binarybaron
3ebaaad1fa bump: version 2.4.0 2025-07-02 20:49:45 +02:00
Mohan
210cc04ced
feat(gui, cli): Request quotes concurrently at all sellers (#429)
* feat(gui): Implement base structure for new swap ux

- refactored file structure to match common projecte structure
- implement step get bitcoin

* feat(gui): Implement basic multi step modal

* feat(gui): Add outline of add choose maker and offer step

* feat(gui): Add receive address selector

* refactor(gui): format code

* feat(gui): Make Swap Overveiw interactive

* feat(gui): Add action to swap amount selector to quickly go to deposit bitcoin step

* progress

* feat(gui, cli): Request quotes concurrently at all sellers

* refresh offers occasionally, display progress

* progress

* feat(gui, cli): Request quotes concurrently at all sellers

* refresh offers occasionally, display progress

* progress, works again

* allow closing dialog without warning if no funds have been locked

* progress

* feat(gui): Rewrite Swap Components to have flow directly on swap page

* feat: log monero_rpc_pool only at >= INFO level

* remove full_url, add migration to change scheme of node.monerodevs.org to http

* feat: send known_quotes with WaitingForBitcoinDeposit Tauri progress event (even if our balance is too low)

* lock swap lock later

* refactor(monero-rpc-pool): Pass around tuple of (scheme, host, port) as nodes

* refactor(gui): Remove modal for swap and adjust few pages for swap process

- Moved files from swap modal to page directory
- Use new layouts for init page
- Use new layout for depositBTC Step
- Use new layout for Offer Page

* allow cancel before lock

* remove unused code

* dynamic layout, chips for amounts

* feat(gui): Add breakpoints

* remove continue button, add select button on each maker box

* add GetCurrentSwapArgs tauri command to only suspend swap if one is actually running

* feat(gui): Show all known quotes and disable the ones that aren't available

* fix get_current_swap, kill tasks when buy_xmr is cancelled

* cleanup: remove CleanupGuard

* feat(gui): Add cancel button on every page

* refactor(gui): Fix merge issues

* refactor(gui): Unify Cancel Button insertion by using a swap base page

* refactor(gui): Unify Cancel Button insertion by using a swap base page

* refactor(gui): Remove deeply nested relative paths

* refactor(gui): Made BaseSwapPage obsolete by moving Cancel Button to SwapStatePage

* refactor(gui): Adjust condition for showing SwapSuspendAlert

* fix(gui): Fetch previous monero redeem addresses repeatedly

* refactor(gui): Remove QR Code from deposit and choose maker page

* refactor(gui): Don't display dialog on History page

* fix(gui): If no swap was running "suspend_current_swap" will still return success now, less logic in the CancelButton

* get offer select working

* refactor: dont display cancel button on set redeem address page

* feat: add pagination to offers

* refactor

* emit partial events for list_sellers

* refactor: remove torSlice

* refactor: use sync (non tokio) mutex for approvals

* throttle getSwapInfo calls

* feat: add debug page back, add info in suspend dialog about what will happen

* refactor: format files

* refactor(gui): Remove sortMakers method and replace with method that sorts approvals

* refactor(gui): Refactor swap page structure

* fix(gui): Add breakpoints to swapSetupInflightPage

* feat(gui): Add flag for outdated makers

* refactor(gui): Reduce fetch rate for maker quotes

* fix(gui): Debug Window size

* no unwrap

---------

Co-authored-by: b-enedict <benedict.seuss@gmail.com>
2025-07-02 16:21:36 +02:00
Mohan
7606982de3
feat: Recover from / write down seed (#439)
* vendor: seed crate from monero-serai

* refactor: make approval type generic over respone from frontend

* progress

* Raphaels Progress

* feat(gui): seed import flow skeleton

* fix(gui): Seed import in the development version

* fix(gui): specify the imported seed type

* remove initializeHandle, make tauri handle non optional in state, dont allow closing seed dialog

* feat(gui): check if seed is valid dynamically

* fix(gui): refine the dynamic seed validation

* push

* progress

* progress

* Fix pending trimeout

---------

Co-authored-by: Maksim Kirillov <artist@eduroam-141-23-183-184.wlan.tu-berlin.de>
Co-authored-by: Maksim Kirillov <artist@eduroam-141-23-189-144.wlan.tu-berlin.de>
Co-authored-by: Maksim Kirillov <maksim.kirillov@staticlabs.de>
2025-07-02 14:01:56 +02:00
Binarybaron
b8982b5ac2 dprint fmt 2025-06-30 16:47:20 +02:00
Mohan
9a04bd5682
feat(protocol, wallet): Reveal enc sig fast (#357)
* feat(asb, cli): Add safety margin to chosen Bitcoin fee for pre-signed transactions

* feat(gui): Add Context init overlay

* feat(protocol): Reveal enc sig fast (before full 10 confirmations)

* feat(wallet): Use mempool.space as a secondary fee estimation source

* log libp2p crates

* revert useless stuff

* remove unused elements in state machine

* remove redundant diff

* minimize diff

* dont make xmr_lock_tx_target_confirmations optional

* pass target conf in listener callback for monero txs

* refactor

* refactor

* nitpicks

* feat: add migration file for xmr field in state3, state4, state5 and state6

* revert .gitignore

* add monero_double_spend_safe_confirmations to env.rs

* change durations in  SwapStateStepper.tsx

* remove unused helper functions

* use env_config.monero_double_spend_safe_confirmations in state machine

* refactor

* Update src-gui/src/renderer/components/modal/swap/pages/in_progress/WaitingForXmrConfirmationsBeforeRedeemPage.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix label for retry op

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-06-30 16:42:53 +02:00
Mohan
cc4069ebad
refactor(monero-rpc-pool): Type safe SQL, simplify discovery (#443)
* refactor(monero-rpc-pool): Type safe SQL, default nodes, no monero.fail

* refactor

* refactor

* refactoring

* fmt

* add some randomness to node selection
2025-06-30 10:53:01 +02:00
Mohan
ef3c9139d1
fix(protocol): adjust Monero lock retry docs (#445) 2025-06-29 20:53:25 +02:00
Binarybaron
e2d7638ce1 feat(docs): flatpak 2025-06-27 22:10:33 +02:00
Binarybaron
1cdb1dba80 amend: flatpak release page 2025-06-27 21:43:46 +02:00
Binarybaron
d23082ffee feat(gui): Release flatpak file 2025-06-27 21:40:08 +02:00