* feat: add `Money` class for precise currency handling and amount parsing
- Introduced `Money` class for handling money values with fixed-point precision.
- Added parsing and comparison methods to `CryptoCurrency` and `FiatCurrency` interfaces.
- Implemented `smartAmountSanitizer` for format normalization.
Includes extensive unit tests for validation.
* refactor: optimize Money class with new factories and string formatting improvements
* refactor: unify balance handling with `Money` refactor
* refactor: update `ElectrumBalance` and transaction logic to use `Money` for currency precision
* refactor: standardize balance handling with `Money` across `Monero`, `Wownero`, and `Zano` wallets
* refactor: migrate EVM balance and transaction handling to `Money` for consistent currency precision
* refactor: migrate Decred balance and transaction handling to `Money` for consistent currency precision
* refactor: migrate nano balance and transaction handling to `Money` for consistent currency precision
* refactor: migrate Solana balance and transaction logic to `Money` for precise currency handling
* refactor: migrate Tron balance and transaction handling to `Money` for consistent currency precision
* refactor: migrate Zcash balance and transaction handling to `Money` for consistent currency precision
* refactor: adjust lib to handle money
* refactor: remove legacy Decred amount formatting and migrate to `Money`
* refactor: migrate pending transaction amount and fee to `Money`
* refactor: migrate dEuro savings and transaction logic to `Money` for improved precision and consistency
* refactor: migrate Bitcoin and lightning transaction logic to `Money` for consistent currency precision
* refactor: migrate Wownero, EVM, Zano, and Zcash transaction logic to `Money` for consistent and precise currency handling
* refactor: standardize balance handling across wallets, migrate to `Money.zero` and refine `Balance` class for consistency
* refactor: migrate Solana transaction and wallet logic to `Money` for consistent and precise currency handling
* refactor: improve fiat balance and formatting for consistency on dashboard
* fix: fiat input mode switching and standardize crypto amount display logic
* fix: cw_evm generator
* refactor: migrate exchange amount handling to `Money` for improved precision and consistency
* test: remove redundant and commented-out tests, tidy test cases, and apply minor formatting adjustments
* fix using Money wrapper in BridgeViewModel and USDT0Service
* refactor: streamline `AmountConverter` and `LightningWallet`, add `cw_core` tests to GitHub workflow, and remove unused/deprecated logic
* refactor: enhance `changeReceiveAmount` with `isCanonical` support, improve null handling, and refine amount parsing logic
* minor fix
* try/catch the lightning log file error
* feat: add copy-to-clipboard functionality for transaction amounts, fix typo in trailing widget method name (#3219)
* Cw 1234 disallow sp and mweb addresses as refund for swaps (#3187)
* disallow SP and MWEB for swaps
* Simplify address selection in addressForExchange
Refactor addressForExchange method to simplify address selection logic.
* validate refund and receive address types
* localize address validation messages
* minor ui fix [skip ci]
* minor fix [skip ci]
* Revert "localize address validation messages"
* fix translations
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* refactor: replace manual amount sanitization with `sanitized()` extension across the codebase, add unit tests for `AmountSanitizer`
* fix: correct `sanitized()` test expectations for decimal handling in `amount_sanitizer_test.dart`
* refactor: fee display logic and append currency symbol in `send_confirm_sheet.dart`
* refactor: simplify `ZcashBalance` class by replacing custom fields with inherited properties, update references accordingly
* refactor: replace hardcoded USDT contract address with `DefaultTronTokens` lookup, improve maintainability
* refactor: replace `currency` with `inputAmount.currency` in Solana transaction signing methods to avoid inconsistency
* fix: handle null `fee` in `electrum_transaction_info.dart` to prevent potential runtime errors
* refactor: replace raw fee and amount handling with `Money` object for improved consistency and maintainability
* fix: limit fiat balance display to 2 decimal places in `balance_view_model.dart`
* refactor: replace raw `amount` and `fee` types with `Money` in Solana transaction methods for consistency and precision
* refactor: replace raw `amount` and `fee` handling with `Money` and improve balance calculation consistency across view models
* refactor: replace raw balance strings with `Money` and simplify `UnconfirmedBalanceModal` widget logic
* refactor: replace `print` with `printV` for better logging, add equality and hashCode overrides to `ERC20Currency` for object comparison
* feat: prepare deuro savings migration
* feat: add V1 savings migration support and improve formatting consistency in DEuro view model
* feat: add V1 savings withdrawal support and update associated UI components and logic
* refactor: replace `Image.asset` with `CakeImageWidget`, update balance string handling, and streamline address validation logic
* refactor: use `Money.tryParse` with fallback to `Money.zero` in `NanoBalance.fromRawString` for safer balance parsing
* refactor: replace `ERC20Currency` with `Erc20Token` for consistency and remove unused `evm_erc20_currency.dart` file
* refactor: add computed `hasDepositAmount` for deposit null-checks, optimize balance handling in `zano_wallet`, update Breez SDK to v0.14.0, and implement equality/hashCode for `Currency`
* refactor: rename `amountSats` to `amount` in `PrepareLnurlPayRequest` for consistency
* revert: downgrade Breez SDK to v0.11.0 in `pubspec.yaml` and update relevant references in `pubspec.lock`
* fix: use `cryptoAmount.copyWith` for currency consistency and replace `Image.asset` with `CakeImageWidget` in swap address modal
* fix: ensure currency consistency by using `cryptoAmount.copyWith` in Solana and EVM wallet transactions
* refactor: simplify CSV row generation logic by removing `_splitAmountCurrency` and streamlining amount/fee handling
* fix: LateInitializationError Field 'sdk' has not been initialized
* fix: use `Money.tryParse` for safer parsing of deposit and receive amounts
* chore: remove debug print statement
* refactor: update transaction processing to consistently use `Money` for amounts and fees
* refactor: improve currency and amount handling, simplify logic, and enhance code readability in Send and Swap pages
* refactor: integrate `DecimalInputFormatter` for consistent decimal input across Send and Swap pages, simplify input handling logic
* fix: "fiatMode" per output on sendPage
* refactor: make transaction_details_height applicable more readable
* fix: use correct base unit for deposit
* refactor: use Money in estimateFakeSendAllTxAmount method
* fix decred frozen balance
minor fixes
* fix decred frozen balance
minor fixes
* fix: automatically switch to lightning if lnurl or invoice detected
* fix: getBolt11Amount test cases
* fix: standardise crypto amount formatting and display
* fix: use base unit for Tron transaction fee parsing
* refactor: hardcode fractional digits to 8 in `AmountParsingProxy` display methods
* refactor: ensure consistent 8-decimal precision for fee formatting in `PendingTransaction`
* fix: use `AmountParsingProxy` for available balance display in exchange view model
* fix: improve amount formatting and layout in swap and send confirmation sheets
* chore: remove redundant decimal truncation in balance view model and send confirmation sheet
* fix: allow for editing text field if it is filled with "ALL"
* fix: allow for editing text field if it is filled with "ALL"
* fix: update currency detection logic for lightning mode
* avoid potential infinite loop [skip ci]
* fix: getDisplayCryptoAmount
* fix: update estimated fee calculation
* chore: simplify fee calculation logic [skip-ci]
* fix value display in hidden mode
* fix stale state in send confirm sheet
* fix decimals for mweb
* fix available balance display for sol/trx on swap
* restore proper hint text
* fix swap receive amount calculation for xno
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
Co-authored-by: Serhii <17529954+serhii-bor@users.noreply.github.com>
Co-authored-by: Robert Malikowski <malikowskirobert@gmail.com>
* fix(trezor): use PAYTOADDRESS script_type for external outputs
* Apply suggestion from @konstantinullrich
---------
Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com>
Co-authored-by: Konstantin Ullrich <konstantin@cakewallet.com>
* refactor: improve locale parsing and normalization in localization generation script
* Remove chinese tranditional because it's breaking flutter
* delete retry in case of parallel save [skip ci]
* Improve translation
* linux fixes
fix: use ints instead of bools in SQLite to prevent crashes on linux
fix: disable lightning if it's unsupported
ui: start linux app in portrait mode instead of landscape so it looks
nicer
* minor cleanup
---------
Co-authored-by: Omar <omarh.ismail1@gmail.com>
Squashed migration of node Hive→SQLite, default-node handling,
isPow/proxy support, arbitrum node updates, and related fixes.
Replays node-sqlite-migration on top of current dev without the
amount-refactor merge that the original branch carried.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* v6.1.0 Release Candidate
* add copy indicator on tx details screen (#3152)
* initial remove wownero (#3180)
* fix: minor fix to the backupSeeds (#3181)
* add isSensitive to copy indicator (#3183)
* add copy indicator on tx details screen
* add isSensitive field
* fix: add "support for coin removed" to exception handler ignored list (#3182)
* CW-1273: Implement USDT0 Bridge (#2855)
* feat: Implement USDT0 Bridging using OFT Standard by Layer Zero. POC available in apps menu.
* feat: Implement USDT0 Bridging using OFT Standard by Layer Zero. POC available in apps menu.
* feat: Implement USDT0 Bridging using OFT Standard by Layer Zero. POC available in apps menu.
* Add transaction history and status polling for USDT0 bridging
* Add Transaction history and status polling for USDT0 Bridging
* USDT0 Bridging Implementation
* Update Arbitrum USDT token symbol
* fix: Merge conflicts
* fix: Merge conflicts
* chore: Rever formatting
* feat: Implement new flow
* feat: Implement new ui flow
* Add currency to configure
* feat: new ui flow
* Update USDT0 implementation
- Switch to sqlite for storage instead of hive
- Switch bridge history and details to modals
- Switch bridge transfer details page to new tx details ui
* refactor: rearrange modal action buttons
* enhance usdt0 bridge flows
* Update lib/entities/wallet_manager.dart [skip ci]
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* v6.1.0 Release Candidate
* fix lag on saving frozen coin status (#3164)
* fix lag on saving frozen coin status
* wrap saveUnspentCoinInfo in @action
* revert fix + safeguard coin control page
* v6.1.0 Release Candidate
* v6.1.0 Release Candidate [skip ci]
* v6.1.0 Release Candidate [skip ci]
---------
Co-authored-by: malik1004x <malikowskirobert@gmail.com>
Co-authored-by: cyan <cyjan@mrcyjanek.net>
Co-authored-by: David Adegoke <64401859+Blazebrain@users.noreply.github.com>
* feat: use bitcoin standard derivation paths per address type
* add support for Electrum derivation type in wallet
* fix merge conflict
* Use segwit HD for key export and simplify _hdFor
* skip derivation chooser for standard scan paths
* add legacy and P2SH derivation paths
* fix: send all for lightning
* fix: adjust crypto amount parsing logic for send page outputs
* feat: add event handling for deposit transactions in Bitcoin and Lightning wallets
- Introduced `onCreateDepositTransactionEvent` and `onUpdateDepositTransactionEvent` callbacks to manage deposit transaction updates.
- Updated event listener logic to handle unclaimed and claimed deposit events.
- Added support for processing deposit transaction info with `ElectrumTransactionInfo`.
* fix: handle network errors on username validation and improve Lightning address setup
- Added network error handling for username validation with a fallback error.
- Enhanced Lightning address setup logic with error handling and a fail-safe mechanism to disable Lightning usage if the setup fails.
* fix: enhance error handling for Lightning and update validation patterns
* fix: remove redundant raw string mark from amount validation pattern
* fix: normalize crypto amount input by replacing commas with dots
* v6.0.2 Release candidate
* v6.0.2 Release candidate
* move btc ln up in the currency picker
* disable bsc for swapsxyz
* minor [skip ci]
* hide dex/rate selection on swap screen
* temp fix for evm tokens swaps icons until hive migration is done
* minor [skip ci]
* disable force dex providers for existing users and let them pick it from settings preference
* Show bitcoin address types in swap picker (#3096)
* Show bitcoin address types in swap picker
* remove wrong conversion to bolt11 [skip ci]
* feat: add Lightning invoice resolution and address normalization
* automatically select contact wallet address based on the selected swap currency (whether it's bitcoin or lightning)
* minor [skip ci]
* default to bolt11 invoice for lightning swaps
---------
Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com>
---------
Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com>
Technically `0x1` will signal opt-in RBF (since 0x1 ≤ 0xFFFFFFFD); however it also sets a relative timelock of 1 block. This seems like an unintended bug. It also fingerprints cake wallet since `0x1` is an abnormal value. This is especially harmful in collaborative settings e.g payjoin. Most wallets set `nsequence = 0xFFFFFFFD` to opt into RBF or just use full rbf which seems to be gaining more adoption.
* fix: date on silent payments transactions
* fix: clear outdated Silent Payment Addresses during initialization
* fix: streamline Silent Payments address handling by using the first record only
* feat: implement silent payment derivation paths and master HD wallet integration
- Added default derivation paths for silent payments (mainnet and testnet).
- Introduced `_masterHD` for handling seed-based key derivations.
- Updated silent payment address record to include spend derivation path.
- Refactored UTXO handling and scanning logic to support multiple receivers with unique derivation paths.
- Improved logging for better debugging of silent payment workflows.
* refactor: remove debug prints
* fix: Sync bar ETA
* fix: Smooth ETA - WIP
* fix: Show disconnected status when sync disconnects
* feat: Display blocks remaining for the first five seconds and then switch to percentage
* Update
* fix: Extend duration for showing blocks remaining during sync from 5 to 15 seconds; update connectivity check to handle multiple connectivity results, and handle disconnected state while syncing
* feat: Initially display block if the a reconnection is triggered while syncing
* fix: More improvements to syncing
* feat: initial hive -> SQLite
Includes migration script and initial work done to
remove dependency on hive generators.
Also contains some refactoring to make sync code
async.
Features new dev screen that lists all SQLite tables
Aspects that need testing:
- backups (from this version, and from previous versions as well)
- wallet loading / wallet list
- almost everything else
- renaming
- deletion
- sorting in wallet list
- wallet groups
- wallet seed/keys
- wallet switching
- wallet creation / restore - all methods
- wallet address page
- hardware wallet connection (and prompts from mall screens)
- contacts
- advanced settings in wallet creation
- derivation paths
- some minor wownero fixes
- base, hardware wallets
* fix: build errors
* fix: Bad state: No element in backup restore
* address comments from review
* fix: HardwareWalletType
* chore: Create Base package template
* chore: Update configuration scripts and dependencies to include 'base' coin support
* chore: Update pubspec.yaml, adjust SDK constraints, and add new dependencies
* feat: Add support for base wallet type and cryptocurrency in related configurations
* feat: Implement BaseWallet and DefaultBaseTokens classes for managing base cryptocurrency transactions
* feat: Add BaseTransactionHistory and BaseTransactionInfo classes for handling base cryptocurrency transaction data
* feat: Implement BaseClient, BaseWalletService, and BaseMnemonicIsIncorrectException
* feat: Setup base proxy for main package and adjust token class name
* feat: Setup initial base node configuration
* feat: Integrate support for base wallet type across various functions and services
* feat: Add base support to exchange and outputs
* feat: Add base wallet type integration to wallet creation and node management
* feat: Add base support to transaction details and transaction list item
* feat: Implement BaseURI class and add base support across wallet creation and keys view models
* feat: Add support for BaseScan preference in settings store
* feat: Integrate Base support into various workflows and documentation
* feat: Addingbase config to windows and secret key support
* feat: Add base support to settings and address handling
* chore: Move walletTypeToCurrency to another file and adjust across codebase
* feat: Add 'basescan_history' string localization
* feat: Remove Cryptocurrency.base, it doesn't have a base currency
* feat: Set eth as native currency
* feat: Enhance Base support across various sending, exchange, transaction details, fees, dashboard and balance
* feat: Integrate Base wallet support in advanced privacy settings and home settings view models
* feat: Add Base wallet support with icon and integration across providers, default settings migration, preferences, wallet connect, settings and token utilities
* feat: Update currency handling to use baseEth for Base wallet integration across various components
* fix: Update default token symbol to ETH in Base wallet transaction model
* refactor: Change default currency references from BASE to ETH across client, transaction info, and wallet components
* feat: Introduce normalizedIconPath for CryptoCurrency to standardize icon retrieval across wallet components
* fix: Include baseEth as a native token in EVMChainClient for currency handling
* chore: Update base_icon.png
* feat: Add more nodes to base_node_list.yml
* refactor: Update wallet icon retrieval to use normalizedIconPath
* chore: Remove unused cases and cleanup impl.
* feat: Add base proxy generation to configure
* refactor: Update base proxy and generation code in configure.dart
* feat: Add missing wallet and mono images
* fix: Wrong image path for pr and add missing base qr image
* feat: Enhance EVMTransactionErrorFeesHandler to parse new insufficient funds error format and calculate transaction fees in ETH and USD
* feat: Add gas price safety buffer for Base chain transactions to improve fee estimation accuracy, also fixes send all not calculating correctly
* Update model_generator.sh [skip ci]
* Update assets/base_node_list.yml [skip ci]
* Update cw_base/lib/default_base_erc20_tokens.dart [skip ci]
* Review fixes
* fixes
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
* feat: add support for Trezor hardware wallet integration Restore Wallets
* feat: add Trezor hardware wallet support, implement RLP decoding utility, and update transaction signing logic
* feat: add bitcoin trezor signing
* chore: update Trezor Connect dependency to specific commit hash in pubspec_base.yaml
* feat: add trezor support for litecoin
* feat: add colorFilter for device manufacturer icons to align with theme styles
* refactor: optimize Trezor callback handling
* feat: add BitBox and Trezor support for Bitcoin and Litecoin, update transaction signing logic, and improve modularity in hardware wallet services
* refactor: simplify constructor assertions in `BaseBottomSheetWidget` and cleanup Trezor chainId handling logic
* feat: conditionally render device manufacturers based on platform and hide SeedSigner for now