Skip to content

live-mobile@4.10.0

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Jun 14:00
782f01b

4.10.0

Minor Changes

  • #18943 d60474c Thanks @francois-guerin-ledger! - fix(llc): use Arc native USDC's ERC20 token CAL descriptor for the exchange config, so the device shows the correct (6-decimal) swap amount

  • #18641 104d174 Thanks @claudiiafg! - Fix Asset Detail favourites for tokens opened from Market or Assets by resolving market data via the /v3/markets ledgerIds filter while keeping backward compatibility with the legacy ids filter.

  • #18363 26be121 Thanks @sarneijim! - Add Ledger Recover Backup Hub feature intro bottom-sheet with backup-hub deeplink

  • #18492 8a8b22f Thanks @RobinVncnt! - fix: large mover currency

  • #18614 e636885 Thanks @Valentin-Ledger! - Add a custom.bottomSheet.error wallet-api method for the mobile Borrow Live App. The embedded webview can now open an error-toned bottom sheet that resolves with { confirmed: true } when the CTA is pressed and { confirmed: false } when the sheet is closed or dragged down, mirroring the custom.dialog.confirmation contract.

    Shared param validation lives in @ledgerhq/live-common/wallet-api/Borrow/errorBottomSheetParams. On mobile the sheet is driven by a Redux Toolkit slice (borrow.errorBottomSheet) and a module-level resolver store, and its UI is rendered via the shared InfoState component with preset="error", which both tints the parent QueuedDrawerBottomSheet with the error gradient (via useBottomSheetBackgroundTone) and renders the icon, title, description and CTA.

    The legacy vanilla-redux borrow reducer (actions/borrow.ts, BorrowActionTypes) has been migrated to createSlice; the slice now exports setInfoBottomSheet and setErrorBottomSheet actions directly.

  • #18977 f832e06 Thanks @Valentin-Ledger! - Add borrowFeature analytics property derived from the ptxBorrowLiveApp feature flag, included in identify traits and track events on both desktop and mobile.

  • #18757 36200f9 Thanks @deepyjr! - Fix zero-balance asset trend display

  • #18832 52a9ddb Thanks @LucasWerey! - Add the bottom fade gradient (same as the transactions history) at the bottom of the Assets, Stablecoins and Stocks lists so content fades out at the bottom of the screen

  • #18586 6304f4f Thanks @tonykhaov! - Fix missing displayedPosition on Wallet Braze carousel content card analytics (impression, click, dismiss)

  • #18774 ca99ba2 Thanks @deepyjr! - Fix mobile market countervalue fallback and formatting for unsupported fiats and crypto units.

  • #18603 669d2c3 Thanks @YazhuEth! - feat(broadcast): add isTestnet and isSendMax to telemetry

    Adds two fields to the broadcast_success and broadcast_failure Datadog events, on both success and failure paths:

    • isTestnet: derived from the currency model (isTestnetFor)
    • isSendMax: derived from transaction.useAllAmount

    Existing fields are left unchanged.

  • #18627 7fcf623 Thanks @OlivierFreyssinet! - Bump Device Management Kit to 1.7.1

  • #18627 7fcf623 Thanks @OlivierFreyssinet! - Bump React Native HID transport to 1.0.4

  • #18612 0ffa53e Thanks @claudiiafg! - Fix asset detail chart transaction marker clustering with per-timeframe spacing (wider gaps on 5y/all) via shared @ledgerhq/asset-detail utils.

  • #18741 913f4a8 Thanks @qperrot! - Fix: handle the "RBF requires an additional sats fee" error and show it in the frontend

  • #18771 9a5d4d5 Thanks @OlivierFreyssinet! - Track Device Intent Executor drawer close clicks only from explicit header close and backdrop press interactions

  • #18767 01cf3a8 Thanks @LucasWerey! - Disable the Mood index (Fear & Greed) for users in the UK on both mobile and desktop, based on the device region (same mechanism as the Earn APY). Adds a shared isMoodIndexAvailable helper and hides the Mood index card/tile from the Market screen and the Market banner when the region is "GB".

  • #18273 862198f Thanks @dilaouid! - feat(lwm): signature screen new send flow

  • #18478 636a4cb Thanks @henri-ly! - Add withdraw flow for Monad EVM staking

  • #18744 1bc567c Thanks @beths-ledger! - Ensure navigation header is set correctly when navigating between earn simulator and earn deposit flows via deeplinks.

  • #18552 0fe1b2d Thanks @claudiiafg! - Fix desktop asset detail all-time price variation to derive from chart endpoints instead of the 1y market change, and correct the 6m range mapping. Extract shared market chart and variation helpers to live-common for desktop and mobile.

  • #18848 88c89b0 Thanks @dilaouid! - fix(lwdm): new send flow fix no more unit hardcoding for btc fees

  • #18807 5363ac7 Thanks @ishaba! - fix(lwm): polyfill structuredClone for Hermes to fix SUI send crash

  • #18681 ad68778 Thanks @mitchellv-ledger! - Remove llmAnalyticsOptInPrompt feature flag and unused variant B code

  • #18599 20d2876 Thanks @qperrot! - Fix: respect safe areas in Swap history operation rows

  • #18678 aa7896e Thanks @amaslakov! - Update Tezos unstake-required modal copy

  • #18776 b7a676d Thanks @RobinVncnt! - fix: lwm top wallet cards spacing, lwd bottom cards radius

  • #18743 e963396 Thanks @claudiiafg! - Rename the global search crypto category label from "Cryptos" to "Crypto" on mobile and desktop.

  • #18758 44a3254 Thanks @deepyjr! - Fix global search stocks placeholder wording

  • #18411 229b30a Thanks @RobinVncnt! - feat: lwm backup hub

  • #18660 1f41eee Thanks @mitchellv-ledger! - Remove "llmHomescreen" feature flag and legacy code in lwm

  • #18811 cbfdde5 Thanks @koda-apps! - Fix lazy onboarding analytics back navigation

  • #18683 5ec842b Thanks @LucasWerey! - Fix the Market screen "Total market cap" highlight card overflowing in locales with longer compact-number suffixes (e.g. French "billions"). The value now shrinks to fit the card width while the trend indicator keeps its size.

  • #18665 1dff6fa Thanks @LucasWerey! - Share the Asset Detail trade-availability gating between mobile and desktop. Extracted useTradeAvailability and the ramp ledger-id resolution helpers (resolveRampLedgerIds, ledgerIdsFromLedgerCurrency, isAvailableOnBuy, isAvailableOnSwap) into @ledgerhq/asset-detail, and refactored desktop to consume them. Mobile now gates the Asset Detail CTAs (Buy/Swap/Receive) on the same logic: a currency that is not supported by the build or deactivated by a feature flag exposes no transfer actions (footer and in-page), while supported assets without buy/swap show the existing "Swap and Buy are not supported for this asset." banner.

  • #18645 6dc80fa Thanks @LucasWerey! - Update asset discovery analytics on mobile: add source (previous page) to the Global Search asset_clicked event, enrich the Page Market event with sortVolume/sortMarketCap/sortChange/timeframe/category, add the selected category to the market asset button_clicked event, and reshape sort_market_list to report each sort column independently.

  • #18635 57bc639 Thanks @LucasWerey! - Bump Lumen (design-core 0.1.17 / ui-react 0.1.41 / ui-react-visualization 0.1.20 / ui-rnative 0.1.42 / ui-rnative-visualization 0.1.19) and adapt the asset-detail price chart to its new four-state rendering. The chart now drives its loading and empty states through the Lumen LineChart loading/emptyLabel props instead of bespoke skeleton/error components, derives loading from the chart query's fetching state so changing the timeframe shows a loading state (not "No data"), and keeps the previous timeframe's line while the next one loads — scoped to the current asset so switching to an asset with no data shows the empty state rather than the previous asset's graph.

  • #18587 8ae43d1 Thanks @deepyjr! - Fix missing footer spinner in the mobile Market list while loading the next page on scroll

  • #18575 c7dea47 Thanks @LucasWerey! - Animate the global search placeholder: it now cycles through suggested phrases ("Search crypto", "Search stablecoins", "Search stock", "Search addresses") with a parallel vertical slide + fade transition (400ms, ease-out, 4s interval). The first phrase is shown at rest on screen entry, and the placeholder hides instantly while the field has a value.

  • #18742 f7f8e76 Thanks @LucasWerey! - Fix the Market filters drawer content spacing. The inner container added its own paddingHorizontal: 16 on top of the drawer's built-in 16px padding, double-padding the content. The redundant padding is removed so the sorting and timeframe sections sit at the expected 16px left & right.

  • #18637 1b4fc82 Thanks @deepyjr! - Improve readability of the Market filters drawer by clarifying the sorting and timeframe labels and adding a divider to visually separate the two sections

  • #18805 663e374 Thanks @mcayuelas-ledger! - Fix the Market list "% change" sort (top gainers/losers) being stuck on the first page: the global, unfiltered gainers/losers request no longer sends top=100, so the list now paginates through all coins like the market-cap and stocks lists. The Market Banner top performers are unaffected (they use the separate getMarketPerformers endpoint with its own top cap).

  • #18716 5a8fc01 Thanks @LucasWerey! - Fix the analytics event fired when opening the average entry price definition drawer. It now emits a button_clicked event with button: market_stat_definition, matching the market stat tooltip convention, instead of an event named market_stat_definition.

  • #18705 9946d76 Thanks @RobinVncnt! - feat: lwm q2 tour on portfolio

  • #18572 93a84fb Thanks @hedi-edelbloute! - feat: add new evm chain

  • #18890 bcca8ab Thanks @ishaba! - fix(coin-sui): swap/sell from Sui failing on-device with UNKNOWN_ERROR (0x6e05)

  • #18676 5bdf3f9 Thanks @RobinVncnt! - Add the Q2 Wallet V4 Tour image carousel drawer on mobile, gated by lwmWallet40.params.q2Tour.

  • #18604 1f11587 Thanks @RobinVncnt! - Add foundation for the image-based Q2 Wallet V4 Tour: new q2Tour parameter on the lwmWallet40 feature flag and a persisted hasSeenQ2WalletV4Tour mobile settings flag

  • #18653 3466d5b Thanks @YazhuEth! - feat(lwm): add the confirmation step to the new send flow

    • Add the confirmation screen shown after the device signature: a single screen that renders success or error based on the send flow status.
    • Success: full-screen "Transaction signed" with "View transaction" / "Close".
    • Error: a guard on top of the device flow (e.g. broadcast failure) showing the failure reason, "Save logs" and "Try again" / "Close".
  • #18520 4ace552 Thanks @gre-ledger! - Move the dummy fee-estimation recipient out of @ledgerhq/cryptoassets (abandonseed.ts, now deleted) into each coin family. Every account bridge now exposes a required getEstimationRecipient(account) returning a valid recipient (or throwing for an unmapped currency, like the former getAbandonSeedAddress), and the swap layer dispatches through it instead of the central address map.

  • #18853 e369e66 Thanks @henri-ly! - Allow passing an explicit device model to the Speculos DMK transport. The underlying transport cannot infer the emulated device and defaults to Stax, so the e2e setups now forward the real model (e.g. nanoX) when opening the transport.

  • #18659 d8df1a0 Thanks @OlivierFreyssinet! - Fix known devices reducer test transport mocking

  • #18724 f0cbd72 Thanks @LucasWerey! - Fix the assets list screen title showing "Crypto" instead of "Stocks" when navigating to the stocks list from the portfolio. The Crypto screen header now resolves its title from the route variant, including the stocks case.

  • #18821 7ba0613 Thanks @RobinVncnt! - fix: backup hub tracking, feature intro scrollview and copy

  • #18694 1888882 Thanks @dilaouid! - feat(lwdm): remove isEvmTransaction from the new send flow

  • #18678 d499ee2 Thanks @amaslakov! - Fix Tezos staking amount banner breaking the layout when the keyboard opens

  • #18639 27840c4 Thanks @tonykhaov! - Speed up NotificationsPromptStakeFlow integration tests by registering only the stake flow under test in each parametrized case instead of all ~37 family flow screens.

  • #18816 d5f19ea Thanks @LucasWerey! - Add a bottom fade gradient behind the "Add account" CTA on the Wallet 4.0 accounts screen so the button stands out from the list, via a new reusable BottomGradientFooter component (also adopted by the asset detail footer)

  • #18654 25101e2 Thanks @deepyjr! - Display a 1D variation for held assets instead of "-": when an asset's 24h portfolio value change is unavailable (e.g. freshly-acquired positions whose 24h-ago balance was zero), fall back to the asset's 1D price change computed locally from countervalues, expressed in the user's counter-value currency. This applies uniformly to crypto, stablecoins and stocks, and is handled in the shared trend hooks so generic display components stay decoupled from any asset category. A flat price now renders a real 0% (instead of "-"), and the fallback stays neutral when a rate is missing.

  • #18847 37eba10 Thanks @semeano! - Rename the native TON cryptocurrency to Gram

  • #18818 9519838 Thanks @LucasWerey! - Open the "See all" accounts drawer on the asset detail screen at full height and lock its size so it can no longer be resized

  • #18788 e620b15 Thanks @LucasWerey! - feat(market-banner): back the "Trending" ranking with the countervalues /v3/currencies/trending endpoint

    The market banner "Trending" filter (desktop and mobile) now fetches the dedicated trending
    currencies list (hydrated via /v3/markets, preserving trending order and keeping only supported
    entries) instead of reusing the gainers performers query. Adds a getTrendingPerformers endpoint
    and useTrendingPerformers hook in live-common.

  • #18750 4a6056c Thanks @RobinVncnt! - feat: lwm backup hub tracking, red dot and copy update

  • #18011 ca20506 Thanks @hhumphrey-ledger! - Forward on the currencyId to the earn deposit screen to support the swap to earn feature

  • #18549 cbc874e Thanks @dilaouid! - feat(llc): effects contracts architecture for new send flow

  • #18825 e441ffe Thanks @ishaba! - fix: re-adding a previously onboarded canton account

Patch Changes

  • Updated dependencies [36200f9, 7fcf623, 7fcf623, dd0be79, 913f4a8, 30cfdb1, 636a4cb, 48dbd53, 98eb6d6, ad68778, 13aeeb6, 1f41eee, 7817aff, 64b8071, 9bf46c3, b8a0765, 93a84fb, e32e372, 798081d, 1f11587, 9dc9a1f, 84837e9, e93a936, b383bd5, ebda9d8, 4ace552, e369e66, 25101e2, 37eba10, 94923e3, ca20506, e441ffe, ab76877]:
    • @ledgerhq/live-countervalues@0.21.0
    • @ledgerhq/device-intent@4.0.0
    • @ledgerhq/live-dmk-mobile@0.27.0
    • @ledgerhq/live-dmk-shared@0.27.0
    • @ledgerhq/live-dmk-speculos@0.10.0
    • @shared/feature-flags@0.12.0
    • @features/platform-feature-flags@0.5.0
    • @ledgerhq/coin-bitcoin@0.45.0
    • @ledgerhq/types-live@6.113.0
    • @ledgerhq/coin-evm@4.4.0
    • @ledgerhq/errors@6.37.0
    • @ledgerhq/live-env@2.40.0
    • @ledgerhq/client-ids@0.11.0
    • @ledgerhq/coin-cosmos@0.37.0
    • @ledgerhq/live-currency-format@0.11.0
    • @ledgerhq/cryptoassets@13.53.0
    • @ledgerhq/wallet-pnl@0.7.0
    • @ledgerhq/live-countervalues-react@0.16.0
    • @ledgerhq/devices@8.16.0
    • @ledgerhq/coin-canton@0.27.0
    • @ledgerhq/coin-casper@2.14.0
    • @ledgerhq/coin-concordium@0.14.0
    • @ledgerhq/coin-filecoin@1.26.0
    • @ledgerhq/coin-multiversx@0.18.0
    • @ledgerhq/coin-stacks@0.22.0
    • @ledgerhq/ledger-wallet-framework@2.2.1
    • @ledgerhq/domain-service@1.8.8
    • @ledgerhq/live-wallet@0.27.4
    • @ledgerhq/ledger-key-ring-protocol@0.15.2
    • @ledgerhq/hw-transport@6.35.5
    • @ledgerhq/hw-transport-http@6.36.5
    • @ledgerhq/live-network@2.6.6
    • @ledgerhq/hw-ledger-key-ring-protocol@0.10.7