What's Changed
- chore: bump version to 1.0.107 by @johnnyluo in #4756
- feat(swap): enable missing Swap aggregators on Optimism, Polygon & Arbitrum by @rkokhatskyi in #4748
- refactor(swap): extract swap() transaction build into SwapTransactionBuilder by @aminsato in #4738
- feat(swap): banded provider preference (1% band) on top of best-output selection by @aminsato in #4759
- feat(swap): gate cross-chain SwapKit Success on /track settlement by @aminsato in #4757
- Cosmos staking (LUNA/LUNC): rename 'Next Award' → 'Claimable rewards' (#4762) by @Vaulty-bot in #4771
- chore: bump commondata for 1inch swap_fee coin context by @aminsato in #4772
- SwapKit Phase 2 hardening: sub-provider persistence, client deviation check, approvalTx fallback (#4654) by @Vaulty-bot in #4758
- fix(cosmos): floor Akash fee to 0.025 AKT so txs clear network minimum by @aminsato in #4779
- fix(cosmos): sign Terra dApp staking sent via amino, not just signDirect by @aminsato in #4781
- fix(verify): match FastSignPairedButtons order to Figma by @aminsato in #4785
- fix: change transaction-history icon from calendar-clock to history (#4741) by @aminsato in #4776
- Keysign error screens: remove static 'Keep devices on same WiFi…' subtitle (misleading for non-network errors) (#4767) by @Vaulty-bot in #4770
- fix(keysign): normalize coin logo to square canvas in signing animation by @aminsato in #4774
- fix(keygen): full-screen backup summary, drop old "Well done" interstitial by @aminsato in #4782
- fix(keysign): drop misleading "+" in device count, cut resend cooldown to 30s by @aminsato in #4783
- Closes #4775: Refactor SwapFormViewModel: extract quote-fetch pipeline and shrink the god-method by @Vaulty-bot in #4778
- fix(verify): consolidate staking & custom-sign onto FastSignPairedButtons (#4754) by @aminsato in #4790
- fix(staking): align LUNA/LUNC validator picker to Figma (#4753) by @aminsato in #4789
- fix(defi): left-align icon, center label in DeFi action buttons by @johnnyluo in #4760
- fix(qbtc): use the shared co-sign screen for claim pairing by @rkokhatskyi in #4793
- fix(qbtc): block claims for UTXOs with 144 or fewer confirmations by @rkokhatskyi in #4799
- fix(swap): send KyberSwap slippage tolerance as 100 bps by @rkokhatskyi in #4802
- fix(solana): improve Solana SPL transfer error handling by @rkokhatskyi in #4805
- fix(swap): reject zero network fee or expected output by @rkokhatskyi in #4804
- fix: cache Cosmos staking positions so the screen no longer flashes empty (#4764) by @aminsato in #4773
- feat(verify): human-readable param decode for non-swap contract calls by @aminsato in #4747
- Swap overview: joined device shows $0.00 swap fee and different provider vs initiator (#4780) by @Vaulty-bot in #4784
- fix(defi): reflect Terra/TerraClassic staked allocation in portfolio (#4763) by @aminsato in #4788
- feat: QBTC Staking by @rkokhatskyi in #4806
- fix(home): keep cached portfolio total/row while a slow chain refetches (#4768) by @aminsato in #4791
- fix(swap): granular "trading temporarily halted" error (#4749) by @aminsato in #4792
- refactor(swap): extract SwapQuotePipeline and shrink the god-method by @aminsato in #4808
- SendFormScreen: wrong title for DEPOSIT_USDC_CIRCLE and reapingError hidden in DeFi flows (#4812) by @Vaulty-bot in #4813
- fix(swap): clear stale UTXO fee on plan-fee miss / cleared network fee (#4810) by @aminsato in #4817
- KeygenViewModel: onCleared() missing super call + state encapsulation / logging issues (#4818) by @Vaulty-bot in #4819
- Remove duplicate manage-positions button on DeFi positions screens by @rkokhatskyi in #4825
- Raise QBTC staking gas limit to fix redelegate out-of-gas by @rkokhatskyi in #4828
- Privacy Policy link fails to open / reopens app on Chrome-less (Firefox) devices (#4809) by @Vaulty-bot in #4811
- feat(custom-rpc): app-wide custom RPC endpoints per chain, EVM + Cosmos (#4787) by @aminsato in #4796
- fix(home/chain-detail/staking): pull-to-refresh from anywhere + whole-screen scroll (#4752, #4761) by @aminsato in #4814
- fix(swap): surface "no route" guidance on token selection instead of at quote time (#4710) by @aminsato in #4830
- Refactor KeysignViewModel: reduce size and remove duplicate logic (#4832) by @Vaulty-bot in #4833
- Closes #4836: refactor(swap): split SwapScreen into focused files, dedupe preview mocks & fee/discount UI by @Vaulty-bot in #4837
- fix(qbtc): accurate error when co-sign vault lacks Bitcoin/QBTC account by @johnnyluo in #4829
- fix(cosmos-staking): stale amounts on entry & no auto-refresh after a tx (#4815) by @aminsato in #4823
- feat(swap): carry swap-fee coin context for correct co-signer fiat by @aminsato in #4838
- test(staking): add @Preview for QBTC/Cosmos staking positions screen by @aminsato in #4835
- fix(evm): widen non-swap EIP-1559 maxFee headroom to base×1.5 + tip by @aminsato in #4860
- fix(evm): align ERC-20 signed gas limit with displayed fee bond by @aminsato in #4864
- fix(tokens): dedup chain tokens by Coin.id to stop duplicate LazyColumn key crash by @aminsato in #4871
- fix(solana): confirmed blockhash commitment + client-side rebroadcast loop by @aminsato in #4875
- fix(cosmos): validate IBC memo and timeout instead of signing a bad packet by @aminsato in #4872
- Closes #4861: refactor(keysign): split KeysignViewModel into focused files / use cases by @Vaulty-bot in #4868
- fix(swap): decode bytes32 token name/symbol instead of showing raw hex by @aminsato in #4877
- Restyle $VULT Discount Tiers page to match new Figma design by @aminsato in #4880
- fix(zcash): fetch live ZIP-243 branch id at send time (#4851) by @johnnyluo in #4879
- fix(keysign): bound join-keysign wait so a joiner can't spin forever by @aminsato in #4870
- Closes #4862: refactor(deposit): finish splitting DepositFormViewModel into per-option strategy files by @Vaulty-bot in #4876
Full Changelog: v1.0.107...v1.0.108