* feat(gui): Partially availiable global state
* move tauri command into own module
* move commands list into src-tauri/src/commands.rs
* cleanup swap/src/cli/api.rs
* add contextRequirement attribute to PromiseInvokeButton
* amend
* allow wallet operation on partially availiable context
* improvements
* fix some linter errors
* limit amount of logs to 5k
* keep behaviour from before
* make sure if swapId is null useActiveSwapLogs, return no logs
* remove unused variable
* create ContextStatusType enum
* feat: use contrib/depends to build dependencies
* fix: bump min iOS sdk to 13
* fix: macos targets
* fix: show make output during build
fix: mingw linking issues
* chore: address AI review
* check target only once, stream make output to stdout, init ios project
* check whether patch is already applied before trying again
* copy contrib/depends to target dir and build dependencies there
* fix: use proper triplet for ios-sim
* fix(dprint): ignore monero_c, monero and monero-seed folders
* fix(swap): Missing import
* fix(ci): Add gperf as a required dependency for Linux
* add notes for unsafe usage to CLAUDE.md
* add clean command to justfile
* fix: minimumSystemVersion to 11.0 because tauri doesn't default behavior is wild
* update crunchy dependency to fix linux->windows cross compilation issue
* fix last commit
* link c++ std lib and libgcc statically on windows
* embed WebView2 Bootstrapper
* disable ccache on ios, update tauri deps, set minimumSystemVersion to 13.0
* fix
* fix: build env leaking into contrib/depends
* fix: version '-sim' in target triple 'arm64-apple-ios13.0-simulator-sim' is invalid
* get it working on ios
* Upgrade to nightly Rust toolchain for unstable features
- Change from Rust 1.85 to nightly to support yamux unstable features
- This resolves the unsigned_is_multiple_of compilation error
* fix
* WINDOWS WORKS
* Cargo.lock update
* android progress
* progress on gcc build script
* remove windows binary dependencies from git, running just prepare-windows-build will re-create them
* check for .dll's in src-tauri/build.rs and give hint how to build them
* document new build requirement
* add verification to gcc build script and error message when building windows from os other than linux
* fix windows build
* add just command for building windows ss
* fix script: remove sudo, copy dlls when finished
* move path setup to its own function
* fix
* try and fix ci
* extract setup to single action
* clean up ci
* add actions/checkout everywhere
* fix missing input prefix
* fix missing autoconf
* fix add build deps to env
* fix add build deps to env
* add deps for cross building windows
* fix action call
* only bundle dll's on windows
* use ubuntu-latest, install yarn, don't use swap
* add build dependencies, remove no longer existing docker test
* add aclocal to macos setup
* include macos build depends
* change platform -> host for setup-build-environment, use matrix for building binaries for all platforms
* fix: prepare build env for docker for ubuntu, don't get host value from matrix
* manually install rust target
* include openssl on ubuntu for sqlx
* build cargo cache once before building individual tests
* only manually install target if provided
* fix: don't need special syntax for variables in if condition
* fix libssl problem by upgrading sqlx cli
* fix: specify host for prepare_docker_tests
* a lot of fixes
---------
Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net>
Co-authored-by: einliterflasche <einliterflasche@pm.me>
Co-authored-by: binarybaron <you@example.com>
Co-authored-by: Raphael <81313171+Einliterflasche@users.noreply.github.com>
* fix: formatting in stress_test.rs
* refactor: move asb binary into swap-asb
* refactor(swap-asb): remove unused disable_timestamp argument
* fix(monero-sys): Include search path for aarch64-linux-gnu
* fix(swap): notpick formatting in swap.rs
* feat(swap-env): Split up config wizard, add default rendezvous points
* feat(swap-controller, swap-controller-api): Minimal maker shell with just a check-connection command
* fix(monero-rpc-pool): Use new axum route path syntax to prevent runtime panic
* feat(ci): Specify crate when building binaries; build asb-controller
* fix: Add swap-controller, swap-controller-api crates and their dependencies to Cargo.toml
* feat(Dockerfile): Build asb-controller; default to 1.87 rust toolchain
* feat(swap-orchestrator): Compose spec generator
* formatting: nitpicks
* fix: add swap-orchestrator auto generated files to gitginore
* refactoring(swap-orchestrator: Use Into<_> to derive asb::Network and electrs::Network from Bitcoin/Monero network, use defaults
* feat(swap-env): Change default bitcoin_confirmation_target to 1
* feat: Dockerfile for asb-controller, bitcoin-balance and monero-balance controller commands
* formatting: nitpicks
* changelog: default bitcoin finality confirmations change
* feat(ci): Build swap-orchestrator binary
* disable rpc server by default, split rpc-bind into rpc-bind-port and rpc-bind-host
* feat(swap-controller): Add monero-address command to print primary address of internal wallet
* chore: upgrade rustyline to 17.0.0
* changelog: Document CONTROLLER, ORCHESTRATOR and JSON-RPC server
* refactor: Change swap-orchestrator binary to just "orchestrator"
* refactor: let RpcServer::start(...) take port and host seperately
* default electrum servers in config wizard
* formatting
* feat(swap-orchestrator): README
* feat(swap-controller): Add Multiaddresses and ActiveConnections command
Signed-off-by: Binarybaron <binarybaron@protonmail.com>
* refactor(asb/event_loop.rs): Move quote logic and tower service into their own modules
* fix(swap): some unit tests
* feat(swap-controller): redumentary repl command auto complete
* formatting
* feat(swap-orchestrator): Burn Git commit hash into orchestrator binary
* feat(swap-orchestrator): burn git commit hash into binary when building from source
* feat(Dockerfiles): Build with --locked
* feat: derive ports for images from network combination
add some doc into the docker compose file
* small refactorings
* feat(swap-controller): Add get-swaps command
* feat: add more default electrum mainnet nodes
* feat: build asb-controller docker image in ci, move asb Dockerfile into swap-asb
* fix: do not allow pre-built docker images for now
* amend changelog
* remove default monero_daemon_url, default to None (Monero RPC pool)
* unify asb and orchestrator wizard for monero daemon url setup
---------
Signed-off-by: Binarybaron <binarybaron@protonmail.com>
* change monero-rpc-pool logs to trace
* feat(monero-rpc-pool): Cache TCP connections
* just fmt
* check if tx_lock was previously published
* move network into config struct, add stress-test bin
* small fixes
* amend
* use monero network type
* use monero netowkring type everywhere
* amend
* amend changelog
* use existing swap-serde types
* fix(swap): Split approve-and-sign and publish-lock-tx into two states
* fix: cannot get blockchain height
* add RetrievingMoneroBlockheight, RetrievingMoneroBlockheight tauri events
* propagate daemon blcok height fetch error, treat height 0 as error
* check if tx_lock was previously published
* refactor(monero-rpc-pool): ureq -> raw hyper
* whitelist "getblocks.bin", refactor config constructors, use arti-client, record lowerst seen block height, small style changes
* display effective bandwidth
* compact wallet overview page a bit
* record latencies correctly
* add setting for monero tor routing, add ssl support for hyper, lengthen window duration for bandwidth tracker
* remove unwrap
* refactor ui
* dont fail silently tor bootstrap
* some workarounds for buggy wallet2 stuff
* 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>
* 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>
* 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>
* 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>
* poc: monero receive pool with multiple redeem addresses for bob with given ratios
* fix: use new monero_receive_pool arg for buy_xmr
* update sweep/sweep_multi to return TxReceipt instead of String containing txid
* fix test (generate 1 block before checking balance after transfer)
* add move distribute function to rust, add property tests
* use rust distribute
* update sqlx cache/tempdb
* sqlx fix
* feat: update ui to display the monero address pool
* fix: remove unused functions, set dispatcher for tracing in wallet threads, use new subtract_fee wallet2 functionality
* Add patch system
* add wallet2_api_allow_subtract_from_fee patch
* apply git patches
* split monero-sys patches into chunks
* refactor
* .sqlx needs to be commited, revert unbound issue
* display pool on XmrRedeemInMempoolPage.tsx page, commit .sqlx folder
* fmt
* refactor
* assert MoneroAddressPool is on correct network, differntiate between stagenet and mainnet donaiton address
* looks ok
* re-add retry logic, database errors, ...
* add test
* add tests
* fmt comments, changelog
---------
Co-authored-by: Binarybaron <binarybaron@protonmail.com>