* Shuffle change output on hardware wallet sends
Hardware wallet BTC/LTC sends passed outputs to the PSBT/device in the
given order (change last), a position fingerprint. The outputOrdering
param was plumbed but ignored. Add orderOutputs() and apply it in both
buildHardwareWalletTransaction paths; set the send call site to shuffle.
Refs #3376 (the software send + RBF paths were covered by #3420).
* Shuffle change output on Bitcoin Cash sends
The BCH send path built via ForkedTransactionBuilder with
outputOrdering: none, leaving change deterministically last. The builder
shuffles natively and change is found by isChange, not position, so flip
it to shuffle (matches the BTC software path from #3420).
Refs #3376.
* Update cw_bitcoin/lib/electrum_wallet.dart
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* v6.3.0 Release Candidate
- the new transaction history
- Radar in Apps screen
- Zcash update
- Flutter update
- Parts of the Refactor
should improve how amounts are handled in the app and fix any issue with amounts
improve handling sending to aliases
- Improvements for Cake Pay mobile
- Bug fixes
* don't use memo for note/message values
* save message in QR locally in the notes field
* Make stealth addresses generated from silent payment, not reliant on output index (#3420)
* - fix swaps showing only on primary account
- switch tron default node
- privacy fixes
* - enlarge destination tag and make it copiable
- migrate users on hashvault
- minor fix
* feat: add ExchangeRate class for currency conversion with tests
* docs: add detailed comments to ExchangeRate class
* refactor: rename `baseCurrency` to `base` in `ExchangeRate`
* auto-reformat
---------
Co-authored-by: Robert Malikowski <malikowskirobert@gmail.com>
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* test add lint as separate action
* nicer logging
* only detect changes in dart files
* fix printV warnings being displayed when editing printV
---------
Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net>
* if input transactions are not all fetched correctly or had a failure, still parse the transaction correctly instead of skipping it
* handle nullable tx fee
* show warning for BTC txs with missing inputs
---------
Co-authored-by: Serhii <17529954+serhii-bor@users.noreply.github.com>
* 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.
* feat(zcash): initial commit
- initial work on cw_zcash
- use single .db for everything zcash to speed up sync and scanning
- implement silent autoshielding of non-orchard funds
- use FFI for everything to fetch the data
- add support for passphrase by adding extra word to seed phrase
- enforce lints on CI for cw_zcash directory
- use correct zcash name, and call transparent zcash tZEC
- minor cleanups outsite of cw_zcash
- gitmodules, gitignore
- db debug
- fix broken addressPageType in WalletInfo
- enable debug options in kDebugMode and kProfileMode
* feat: T address rotation (and cache) wip: minor fixes
* wip: shield tx list
* fix fiat amounts fix derrivation of rotation account addresses screen
for zcash block height fix T address shields improvements Amount in
disposable T shields UI improvements
show pending outgoing tx in tx history
* fix null check on passphrase page fix tx showing as pending rename auto
shield txs fixed send all to include fee use rotating address in
addressForExchange wrap all calls of WarpApi.getLatestHeight in try
catch to prevent leaking errors
other minor fixes from notion
* wallet group debug cache sent tx address wallet T address rotation fixes
automatically pick the fee for auto-shield
* fix T address cache deserialization fix autoshield icon fix autoshield
text getCachedDestinationAddress fix send address cache
* address comments from review
* wip: iOS fix
* fix swap
* Allow cakepay payment from zcash wallet
* fix: ios (I'm stupid) fix: reorder addresses to make orchard default
fix: send all balance
* 5.6.6 bump fix: ios apple review add transport error to ignored
exceptions
* fix: leaving dust behind when sweeping all
* Change wallets order
* fix: reflect balance of pending out txs fix: restore height support
* linux support (disabled)
* fix: date picker for zcash on restore screen fix: build script for linux
match WarpApi.warpSync args with upstream
* fix: linter script
* ensure all exchange providers support ZEC (#2802)
* ensure all exchange providers support ZEC
* remove zaddr and tzec currencies and refactor providers
* Update lib/exchange/provider/near_Intents_exchange_provider.dart
* add back old zcash currencies for backward compatibility, thanks Czarek
* minor fix [skip ci]
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* Update android/app/src/main/AndroidManifestBase.xml [skip ci]
* Update ios/Runner/InfoBase.plist [skip ci]
* fix: remove unused code fix: macos fix: disable on linux and macos
* update build numbers [skip ci]
* Add zcash to birdpay
---------
Co-authored-by: Czarek Nakamoto <cyjan@mrcyjanek.net>
Co-authored-by: Serhii <borodenko.sv@gmail.com>