4.12.0
Minor Changes
-
#19309
27da624Thanks @mateuszpalosz-ext! - Private sync flow for Aleo (mobile) -
#19411
ca37cfeThanks @dilaouid! - fix(algorand): not opt in asa error message -
#19393
4a9eadeThanks @mdomanski-ext-ledger! - test: e2e test aleo add account flow on mobile -
#19373
1f34a90Thanks @jiyuzhuang! - Fix GAM CTA visibility and empty-link click behavior on desktop and mobile -
#19396
25fd71bThanks @amaslakov! - Hide the "Compound" claim-rewards option for Cosmos-family chains that use epoching (wrapped) staking messages, such as Babylon. Compound restaking is not supported on those chains yet — its embedded delegate is not epoching-wrapped — so only "Cash in" (claim rewards) is offered, preventing the "claimRewardCompound is not supported" error. -
#19319
484b715Thanks @LucasWerey! - Fix market category resetting to entry value when navigating back from asset detail -
#19674
12614f3Thanks @LucasWerey! - Fix extra spacing between experimental header and wallet 4.0 top bar -
#19628
8df21c9Thanks @qperrot! - Fix coin control not showing selected coins after entering an amount, and refine the coin control screen layout (subheader sizing, header spacing, and scrollbar gutter) -
#19469
a8a1e70Thanks @deepyjr! - Fix Contacts entry config test expectations -
#19252
c75213bThanks @dilaouid! - feat(lwm): switch to deviceaction instead of die with FF on new send flow -
#19525
859b960Thanks @sarneijim! - Add large screen upsell modal analytics tracking -
#19548
3934168Thanks @deepyjr! - Fix asset favourites to preserve canonical Market identifiers and migrate DAI V2 favourites. -
#19279
2c28696Thanks @deepyjr! - Fix the dust filter option copy and wrapping on mobile transaction history, and share the dust threshold formatter across apps. -
#19568
45584e4Thanks @liviuciulinaru! - Show an estimated label for configured providers on completed mobile swaps. -
#19672
d7ce552Thanks @claudiiafg! - Fix mobile Jest resolution for @features/flow-contacts via a logic-onlyjest.native.tsstub, Lumen RN source mappings, and updated integration testing docs. -
#19217
e26e68eThanks @qperrot! - families/bitcoin/bridgeExtensions.ts now implements the full edit-transaction contract: getEditTransactionPatch, getEditTransactionStatus, getFormattedFeeFields, hasMinimumFundsToCancel, hasMinimumFundsToSpeedUp, isStrategyDisabled, isTransactionConfirmed.
The Bitcoin edit-transaction helpers (RBF replace/cancel, fee formatting, strategy validation) live under ledger-live-common/src/families/bitcoin/editTransaction/, with unit tests.
Desktop & mobile Bitcoin edit flows (Body.tsx, StepFees, StepMethod, MethodSelection, EditTransactionSummary) reach these helpers through getAccountBridge(account) instead of importing them directly.hasMinimumFundsToCancel / hasMinimumFundsToSpeedUp now return Promise. Bitcoin's minimum-funds checks are inherently async (RBF fee lookup) and all call sites already await them; EVM's implementations were updated accordingly.
Bitcoin's isStrategyDisabled uses a slightly different shape than the generic contract, adapted via a thin wrapper (same pattern as EVM): it maps the contract's feeData to Bitcoin's feesStrategy, and its transaction param was widened to accept the real (nullable) feePerByte with a guard. isTransactionConfirmed follows the { account, hash } contract signature directly.
-
#19614
8998c72Thanks @jeportie! - Expose the swap transaction-details provider link URL via test/accessibility attributes so E2E can conditionally verify the provider link only when a provider URL exists (QAA-721) -
#19549
195c4e2Thanks @RobinVncnt! - feat(LLM): add large-screen upsell debug tool -
#19621
bc0573eThanks @francois-guerin-ledger! - Fix EVM staking operation history showing the user's own address instead of the staking contract as recipient -
#19264
821c926Thanks @LucasWerey! - test(mobile): remove mocked Detox e2e suite -
#19572
1513e87Thanks @YazhuEth! - Refine coin control screen UI: set the header title to "Coin control" and force its balance to crypto, move strategy/amount labels into their components, add info icon on "Coin to send", disable coin selection when no amount is entered, and fix the custom fees selection failing silently from the coin control screen -
#19362
5b3187aThanks @RobinVncnt! - feat(lwm): upsell eligibility gate (audience + cooldown) -
#19532
12cdc19Thanks @mdomanski-ext-ledger! - feat: aleo tokens support in mobile send flows -
#19519
63792baThanks @cfloume! - fix: prevent Q2 tour from showing to users who haven't onboarded -
#19220
996c76bThanks @ysitbon! - Make the@ledgerhq/cryptoassetsfiat registry injectable (setFiatCurrenciesStore) and inject the@domain/entity-currency-fiatregistry at each app's bootstrap, so the domain registry is the single runtime source of truth for fiat currency data. The bundled fiat list stays as the fallback and is kept in sync by the existing parity test. -
#19331
71884d7Thanks @ysitbon! - Activate the RTK Query supported-fiats flow and retire the legacy CVS polling path: boot-time query populates the Redux slice; settings and countervalue selectors read from the slice synchronously. -
#19553
68dffc1Thanks @mateuszpalosz-ext! - Aleo UI changes for mobile -
#19486
b3557c0Thanks @deepyjr! - Filter incoming and outgoing dust transactions in history. -
#18924
b2f4ae6Thanks @philipptpunkt! - Fix the endless loading state when navigating back from the Swap success screen. React Navigation v7 pushed a new SwapPendingOperation on top of SwapLoading instead of reusing the existing one, leaving SwapLoading beneath the success screen. Any back gesture — Android system back, iOS swipe-back, or the close (X) button — would pop to SwapLoading and get stuck. The fix replaces the SwapSubScreensNavigator via BaseNavigator so the success screen always starts with a clean [SwapPendingOperation] stack, making all back paths (back button, close button, and via Swap history) return correctly to the Swap input. -
#19414
05a5f76Thanks @tonykhaov! - Stabilize large screen upsell eligibility integration test. -
#19419
0040b67Thanks @deepyjr! - Filter incoming native dust transactions in operation histories. -
#19536
f854c29Thanks @amaslakov! - Warn and explain when Tezos staking is blocked by an unfinalizable unstake to another validator: translate the raw fee-estimation error into a clear message, and show an inline warning on the change-validator summary while a pending unstake is still unfinalizable -
#18901
78efe69Thanks @amaslakov! - Add test ids to the Tezos staking-section rows (staked and unstaking) so e2e can target them distinctly from the delegation card -
#19589
9479c28Thanks @sarneijim! - Keep large-screen upsell eligibility read-only and align the fallback CTA link -
#19452
5fb2345Thanks @LucasWerey! - fix multi-network asset countervalues and Asset Detail CTA placement -
#19199
446e2b8Thanks @tonykhaov! - Persist the large-screen upsell modal's frequency state (retries,lastSeenAt) across app restarts on mobile, via a new shared@ledgerhq/live-engagementRedux slice -
#19718
b5540fbThanks @vtaranushenko-ext-ledger! - Fix Aleo mobile send summary to reuse shared UI components and show the Records used / Signing time rows for private transactions -
#19228
3fc5836Thanks @lysyi3m! - Fix Tezosaccount.getPublicKey(Wallet API): resolve the account public key fromxpubinstead ofseedIdentifier, which is derived from a different path (44'/1729'/0') and returned the same wrong address for every Tezos account. Whenxpubdoes not contain a valid base58 Tezos public key (edpk/sppk/p2pk), the request is rejected with a dedicatedAccountPublicKeyUnavailableerror and Ledger Live surfaces it natively (error modal on desktop, bottom modal on mobile), prompting the user to re-add the account instead of failing silently. The per-family resolver map is retained for chains that need bespoke retrieval. Also stop seedingxpubwith the address on Tezos QR import. -
#19370
cd43e66Thanks @pawell24! - Rename "Ledger by Chorus One" to "Ledger by Bitwise" following Bitwise's acquisition of Chorus One -
#19397
b95ee6fThanks @mcayuelas-ledger! - Addledgerlive://paytabdeeplink to open the Pay Tab when thelwmPayTabfeature flag is enabled. Falls back to the Card page when the flag is off. -
#19606
65999f4Thanks @cfloume! - chore: update copy for large screen upsell -
#19593
821dcb1Thanks @claudiiafg! - Fix Analytics chart header to show Total balance label, scaled cents, scrub-driven balance and date updates, and remove the chart scrubber tooltip. -
#19478
96bcef8Thanks @claudiiafg! - Add Contacts feature flag debug controls in Settings > Debug. -
#19672
2b676ffThanks @claudiiafg! - Add My Wallet Contacts entry and gated empty Contacts page shell backed by domain contacts state. -
#19390
7a59137Thanks @claudiiafg! - Add Mobile Contacts MVVM feature flag gate forlwmContactsentry configuration. -
#19349
b3651ffThanks @claudiiafg! - Display percentage evolution alongside absolute values in the LWM PnL detail drawer on Asset Detail and Analytics pages. -
#19429
4668086Thanks @LucasWerey! - Add sell button to asset detail footer — expose availableOnSell in useTradeAvailability and wire sell CTA through useFooterViewModel and MoreOptionsBottomSheet -
#19611
85f1dc1Thanks @mateuszpalosz-ext! - updated useAleoPrivateSync wrapper for mobile Aleo -
#19074
dcacbc9Thanks @Moustafa-Koterba! - feat(solana): add a cause to network error -
#19569
fcc75efThanks @deepyjr! - Add the routed Mobile empty Contacts list. -
#19665
c023e46Thanks @qperrot! - Block the send Summary CTA on any transaction-status error.The Summary screen previously gated its Continue button on a named allowlist of error keys (
transaction,NotEnoughGas,NotEnoughBalance, sender/recipient) that omitted others such asgasLimit. As a result aFeeNotLoadederror — raised bygetTransactionStatuswhen gas estimation fails (e.g. an EVMeth_estimateGasrevert leavinggasLimit = 0) — was not enforced, letting the user proceed to sign an unexecutable transaction. Desktop already disables on any error; the Summary CTA now does the same, so every current and future status error blocks the flow by default. -
#19277
77c8a26Thanks @ishaba! - Celo Custom-fees "Pay fees in" options now show a currency icon and held balance for native CELO and each allowlisted fee token, on desktop and mobile. The genericFeeAssetOptioncontract gains two optional fields (currency,balance); the UI formats the raw balance with the user's locale. Coins that don't set them render exactly as before. -
#19285
5266e9eThanks @qperrot! - Fix: double error when edit transaction is failing, and show the correct "Invalid transaction" error (instead of "Transaction already validated") when editing an EVM or Bitcoin transaction fails at broadcast, to match the desktop behavior -
#19504
4318712Thanks @RobinVncnt! - fix(mobile): product tour sheet cut off on small screens -
#19653
5bd897eThanks @mateuszpalosz-ext! - added balance summary header for Aleo tokens -
#19685
c9f7d49Thanks @koda-apps! - BUmp to lumen latest versions -
#19552
279b755Thanks @gre-ledger! - Migrate @ledgerhq/client-ids to DDD domain packages: @domain/entity-client-identity and @domain/api-push-devices -
#19406
eefadedThanks @mcayuelas-ledger! - migrate cmc-client from @ledgerhq/live-common to DDD architecture, introducing dedicated domain packages for market-sentiment and altcoins-sentiment entities, APIs, and fear-and-greed flow utilities -
#19682
eb2a360Thanks @cfloume! - Include LWD and LWM product tour feature flags in analytics attributes. -
#19499
54c5680Thanks @jiyuzhuang! - Fix duplicatecontentcard_clickedevents by deduping in-flight click tracking and isolating top-wallet banner dismiss from CTA presses -
#19586
82732bdThanks @sarneijim! - Fix a typecheck failure in large-screen upsell modal content tests by replacing optional-call resolver invocation with a safely narrowed function reference. -
#19650
ee5241cThanks @vtaranushenko-ext-ledger! - Add the Aleo private-send quick amount selector (Fast/Balanced/Full record tiers and spendable balance summary) to the mobile Amount screen, matching desktop. -
#19554
c07faa6Thanks @sarneijim! - Align large-screen upsell app-start modal tracking names with the corrected plan while keeping retries and throttling analytics properties. -
#19566
4bd171fThanks @sarneijim! - Fix large-screen upsell CTA to reset retries only after successful URL navigation -
#19442
6893f21Thanks @qperrot! - Fix: solana amount when withdraw from a desactivated delegation -
#19307
36ffa3aThanks @RobinVncnt! - fix: post onboarding hub auto dismiss -
#19641
a2b1a97Thanks @LucasWerey! - Add card domain entity with dedicated Redux slice plugged into the store -
#19522
9972485Thanks @LucasWerey! - Add testIDs to CryptoAddressesListItem, AddressAccountItem, CryptoAddressesButton, OperationsListItem, and CryptoAddressesEmptyState for e2e test targeting -
#19391
8e9d34cThanks @vtaranushenko-ext-ledger! - Fix the Aleo add-account Cancel confirmation not navigating away once confirmed, and add the same confirm-before-quit modal to the ViewKeyApprove screen's Cancel button -
#19475
d2c3ffaThanks @VicAlbr! - Add SUI delegate and undelegate e2e tests for LWD and LWM, with supporting testIds -
#19306
fe81e9aThanks @vtaranushenko-ext-ledger! - Add a "No Accounts Added" screen to the Aleo mobile add-account flow, shown when view-key approval resolves zero accounts to add -
#19518
1452ab7Thanks @dilaouid! - feat(lwm): open MAD on send on asset detail page -
#18831
17a58a8Thanks @deepyjr! - Add Wallet 4.0 asset aggregation and detail mobile E2E coverage. -
#19535
aad4488Thanks @mdomanski-ext-ledger! - refactor: navigation and route from hooks in aleo mobile screens -
#19496
0b48c73Thanks @deepyjr! - Move Contacts feature flag parameter normalization and updates into the shared flow package for both debug tools. -
#19526
03c1e65Thanks @sarneijim! - Fix Recover intro bottomsheet button tracking to use stable analytics identifiers. -
#19495
c9aec57Thanks @YazhuEth! - Fix Stellar "Issuer is invalid" (and wrong lowercase asset code) when adding an asset. The add-asset screens parsed the case-sensitive Stellar code and issuer out of the CAL token id, which CAL lowercases; read them from the case-preserved token fields (name and contractAddress) instead. Also disable the desktop "Continue" button until an asset is selected. -
#19221
090ed18Thanks @Sebastien-Dav1d! - Add a new page in the debug menu to open DevTools -
#19345
6777c99Thanks @mdomanski-ext-ledger! - feat: aleo public send flow -
#19449
65e8b15Thanks @philipptpunkt! - Fix minor UI issues on the Swap transaction status dialog on Desktop (canvas-sheet background and spacing below the main button). Forward aswapIdfrom theswapRedirectToHistoryhandler to the Swap History screen on both Desktop and Mobile so the transaction status dialog/drawer opens automatically for the matching operation. -
#19232
91771eeThanks @beths-ledger! - Pass theswapToEarnfeature flag to the Earn app as a{ enabled, params? }object, consistent with how other flags are forwarded -
#19458
a9f802dThanks @ysitbon! - Repoint mobile currency reads to @features/platform-currencies, @domain/entity-currency-crypto and @domain/entity-currency-fiat -
#19479
b2fb16fThanks @vtaranushenko-ext-ledger! - Wire real private sync into the Aleo mandatory private sync screen, replacing the fixed 2s mock delay with an actual refresh of unspentPrivateRecords before a private send -
#19571
436ca20Thanks @sarneijim! - Backfill missing onboarding date to enforce large-screen upsell cooldown -
#19513
6e7c51aThanks @mcayuelas-ledger! - Add@features/flow-cardpackage withCardScreencomponent integrated into the PayTab on desktop and mobile. -
#19275
2c79418Thanks @sarneijim! - Support token asset detail deeplinks safely: parse and sanitize market/asset deeplink URLs (preserving token id case and avoiding ReDoS) -
#19350
39fd558Thanks @mdomanski-ext-ledger! - fix: aleo fmt -
#19363
e2beeccThanks @mateuszpalosz-ext! - Fix iOS errors by polyfilling AbortSignal.throwIfAborted -
#19381
d3ae2f5Thanks @mcayuelas-ledger! - feat(mobile): add Pay tab to main navigation bar (Wallet 4.0) behindlwmPayTabfeature flag -
#19298
43d4872Thanks @mdomanski-ext-ledger! - feat: aleo mobile send flow customization -
#19265
3de7f74Thanks @tonykhaov! - Improve mobile content card QA diagnostics and debug card handling -
#19354
0ed0273Thanks @mateuszpalosz-ext! - add a private/public transaction type badge to Aleo operation status icons on mobile
Patch Changes
- Updated dependencies [
4b73f23,8f30c75,25fd71b,9824fc8,0f85077,e478b6e,c75213b,e379f4d,a15b864,681cd06,5bada3c,45584e4,d7ce552,e26e68e,195c4e2,bc0573e,fad98a1,293720f,e89bc86,5890c95,ea792bc,75a33a8,2d58d35,47b8889,bde85a7,2b4a016,bae43dd,d3862bb,07c4724,47b8889,996c76b,68dffc1,b48b348,9479c28,682c34b,446e2b8,083452c,3fc5836,2ee5ac1,2f7619d,07bfc2c,16edbea,2b676ff,fcc75ef,3e127f7,35f0138,452be85,eefaded,d9dc6e6,50660af,94b454b,a952f84,edc897d,ff9d1d2,fc44f1e,d631f0d,ddc6499,fd9da5e,0b48c73,deaa7ba,6e7c51a,c12485a,6ef44af,6ef44af,8238860]:- @ledgerhq/coin-bitcoin@0.47.0
- @ledgerhq/coin-canton@0.29.0
- @ledgerhq/coin-casper@2.16.0
- @ledgerhq/coin-concordium@0.16.0
- @ledgerhq/coin-cosmos@0.39.0
- @ledgerhq/coin-evm@4.6.0
- @ledgerhq/coin-filecoin@1.28.0
- @ledgerhq/coin-multiversx@0.20.0
- @ledgerhq/coin-stacks@0.24.0
- @ledgerhq/ledger-wallet-framework@2.4.0
- @ledgerhq/cryptoassets@13.55.0
- @shared/feature-flags@0.14.0
- @features/flow-contacts@0.2.0
- @ledgerhq/live-env@2.42.0
- @domain/api-pay-card@0.2.0
- @domain/entity-pay-card@0.2.0
- @features/flow-card@0.2.0
- @domain/entity-contact@0.2.0
- @ledgerhq/types-live@6.115.0
- @ledgerhq/live-engagement@0.1.0
- @domain/entity-currency-crypto@0.6.0
- @domain/entity-currency-fiat@0.3.0
- @ledgerhq/live-wallet@0.29.0
- @ledgerhq/ledger-key-ring-protocol@0.17.0
- @devtools/bindings@0.2.0
- @ledgerhq/live-currency-format@0.13.0
- @domain/entity-altcoins-sentiment@0.2.0
- @domain/entity-market-sentiment@0.2.0
- @domain/api-altcoins-sentiment@0.2.0
- @features/flow-fear-and-greed@0.2.0
- @domain/api-market-sentiment@0.2.0
- @features/platform-currencies@0.3.0
- @ledgerhq/live-countervalues@0.22.1
- @ledgerhq/live-countervalues-react@0.16.2
- @ledgerhq/wallet-analytics@0.2.1
- @ledgerhq/wallet-pnl@0.7.2
- @features/platform-feature-flags@0.6.1
- @ledgerhq/hw-ledger-key-ring-protocol@0.11.1
- @ledgerhq/live-dmk-mobile@0.28.1
- @ledgerhq/live-dmk-speculos@0.10.2
- @ledgerhq/live-network@2.6.8
- @ledgerhq/domain-service@1.8.10
- @domain/api-currency-token@0.2.1
- @domain/api-currency-fiat@0.2.1
- @devtools/shell@0.5.1