github LedgerHQ/ledger-live live-mobile@4.17.0

3 hours ago

4.17.0

Minor Changes

  • #20611 5a87153 Thanks @mcayuelas-ledger! - Mount the first-time Pay tab FeatureTour on the PayTab screen in both apps. Visibility is self-gated by the payCard slice (shown on first visit, hidden after dismissal), copy is injected from app-owned i18n keys (payTab.featureTour.*), and analytics are wired through the view-model. Adds unit and integration coverage for the conditional rendering.

  • #20713 a3164d8 Thanks @mcayuelas-ledger! - Add the mobile Pay hero for the aggregated stablecoin balance. The @features/flow-pay-card-balance package gains props-only native empty and funded states, and both apps now share the portfolio aggregation through aggregatePayCardBalance (LIVE-34898). The hero is mounted at the top of the mobile Pay tab, which tracks Page Pay with the active balance_filter on view.

  • #20807 aac2ee0 Thanks @LucasWerey! - Force a dark background on the Android 12+ system splash screen shown between the launcher tap and the splash screen. It followed the device theme, showing a white background in light mode, because the windowSplashScreenBackground it was configured with belongs to core-splashscreen and never reached the platform.

  • #20840 72c8fbf Thanks @deepyjr! - Add a Contacts feature introduction toggle to Mobile Debug settings.

  • #20735 c3b8717 Thanks @mcayuelas-ledger! - Add a stablecoin balance filter picker to the Pay card hero.

  • #20704 d83149c Thanks @tonykhaov! - Fix Segment analytics flush on AppState background, show delivery status in analytics console, log Segment flushes to the analytics overlay, and warn once in Datadog when events are skipped with no Segment client

  • #20581 8ae48ee Thanks @liviuciulinaru! - Fix the Pay tab navigator route name collision

  • #20702 e07e0ba Thanks @mcayuelas-ledger! - Scaffold the Card API on a single endpoint-less cardApi service (DDD, CMC/DADA pattern): add the services/card transport in @shared/api-services with Bearer + x-client-key (CARD_BAANX_CLIENT_KEY) + one 401-refresh, the @domain/api-card-management endpoint injector, the @features/platform-card in-memory session and getCardSessionToken/refreshCardSession accessors, the CARD_API_URL / CARD_BAANX_CLIENT_KEY envs, and register cardApi in both apps. The legacy payCardApi Card Auth holdout is left untouched pending its migration onto cardApi (LIVE-33829).

  • #20674 81a708d Thanks @sarneijim! - Expose lazyOnboardingBanner flag enabled state and mode on Segment identify

  • #20571 7c8d5df Thanks @live-github-bot! - Thread the coin-module Context (ADR-019) explicitly through the coin-evm, coin-vechain and coin-near api and logic layers instead of resolving configuration from the module-level getCoinConfig singleton. Exported logic functions now take the context as their first argument, resolve config from it (await context.config(currencyId)), and pass an explicit, required config down to the network layer — no config? optionals and no singleton reads on the data path. getCoinConfig/setCoinConfig remain only as the compatibility surface for the classic account bridge. Ledger Live consumers (live-common, desktop, mobile and coin-celo) are updated to resolve and pass config/context explicitly. Also fixes a coin-polkadot type-inference issue where getTransactionMaterialWithMetadata's cache-key extractor narrowed the cached signature and dropped the config argument.

  • #20077 89171ea Thanks @jiyuzhuang! - Drop legacy ticker lookup from Large Mover landing page (LIVE-34635)

  • #20856 d0ac51c Thanks @mcayuelas-ledger! - Wire the Pay tab "Add stablecoin" tile to the shared Deposit options overlay on both platforms: pressing it opens the dialog (desktop) or bottom sheet (mobile), and each option routes to its platform flow (bank transfer, swap, buy) or the receive flow filtered to stablecoins.

    Extract a shared useDepositOptionsAdapter hook in @features/flow-pay-card-deposit so desktop and mobile no longer duplicate the deposit options open/close state and props shape.

  • #20907 da0a5ce Thanks @fAnselmi-Ledger! - Add Solana TXC flag

  • #20784 19e578a Thanks @mcayuelas-ledger! - Move the Pay Card UI Redux state out of the removed @domain/entity-pay-card package into the owning feature flows: the balance filter goes to @features/flow-pay-card-balance and the feature-tour seen flag to @features/flow-pay-card-feature-tour. The apps keep persisting it under the existing payCard key (no data migration). Both flows expose a UI-free ./state entry so store, persistence and test setup can use the slice without pulling in the flow UI.

  • #20778 eecf99a Thanks @francois-guerin-ledger! - chore(coin-evm): replace CryptoCurrency with currencyId

  • #20724 8eb38c0 Thanks @deepyjr! - Fixed reopening an address after cancelling its edit drawer in Contacts.

  • #20745 ec6fa1b Thanks @claudiiafg! - Fixed reopening the delete contact confirmation sheet after cancelling it by opening delete only after the actions menu sheet has fully dismissed.

  • #20744 c65ca3e Thanks @RobinVncnt! - Fix "Close all" link color in the top-wallet hardware carousel small cards to match the muted gray used elsewhere on the screen

  • #20589 bad0305 Thanks @sarneijim! - Add the Lazy Onboarding Tour drawer to the lazy onboarding banner, with updated banner/tour copy and imagery

  • #20751 7ed4ee1 Thanks @sarneijim! - Refresh lazy onboarding tour slide assets, follow app theme in the tour drawer, and track banner press/dismiss.

  • #20679 a635bb4 Thanks @dilaouid! - feat(lwm): show empty contacts state on recipient screen

  • #20794 29347c9 Thanks @LL782! - Replace the useTrack hook with the module-level track function

    Internal refactor ahead of the analytics package migration. Every event keeps the properties it emits today: desktop reads the drawer name from the drawer context (or passes the custom-lock-screen constant directly) at each call site, and mobile's swap entry point rebuilds its router-derived page with usePageNameFromRoute.

  • #20743 ac097e6 Thanks @VicAlbr! - Fix scroll targeting and silent failures in the Ledger Wallet Mobile E2E suite: target leaf rows
    instead of viewport-tall wrappers so assertions reach the default 75% visibility honestly, delete the
    visibilityPercentage parameter so no site can lower the gate, name the scroll container at every
    call site that used to let the engine guess one, replace the unexplained pixel steps with the default,
    count rows by existence rather than by what fits the screen, log the scroll errors scrollOnce
    used to swallow and correct its "bottom" fallback direction, make the isIdVisible/isIdPresent
    probes index-safe so a shared id stops being reported as invisible, and assert visibility where the
    suite previously only proved an element existed in the tree. On the app side, the accounts list
    scrollable now carries a stable accounts-list testID instead of one keyed on the account count.

  • #19581 6a437fd Thanks @Moustafa-Koterba! - feat(lwdm): improve error context on datadog

  • #20750 352c6a3 Thanks @francois-guerin-ledger! - chore(coin-evm): move getDefaultFeeUnit and getMessageProperties to llc

  • #20806 eb4d29e Thanks @mcayuelas-ledger! - Drop the redundant PayCard prefix from the public API of @features/flow-pay-card-balance. The package path already scopes the feature, matching sibling flows (FeatureTour, CardLogin). The hero is now exported as Balance, with useBalanceData, aggregateBalance, buildBalanceData and Balance* types.

  • #20642 a61f702 Thanks @mcayuelas-ledger! - Persist the pay card hero balance filter across app restarts

  • #20755 e291645 Thanks @mcayuelas-ledger! - Add the mobile stable balance filter (native select under the hero + queued bottom-sheet picker) and share the filter option and stablecoin logic between desktop and mobile

  • #20096 e54d98b Thanks @liviuciulinaru! - Integrate the Card API and give its endpoints a domain owner

    @domain/api-card-management gains the Card Auth contract: authorize initiation, authorization-code
    exchange, session refresh, logout and the user read, with their zod wire schemas and inferred types.
    They inject into the shared cardApi service, so one reducer, one middleware and one cache serve the
    Card backend, and the base query supplies the base URL, x-client-key and the Authorization: Bearer
    header from the @features/platform-card session.

    @features/flow-pay-card-auth owns no network contract any more. It keeps the auth-only payCardAuth
    slice and the CardLogin component; useCardLoginViewModel imports its hook from
    @domain/api-card-management, and that import is what triggers the injection. @domain/api-pay-card
    and its in-process mock transport are removed, along with the Pay Card mocks.

    Pay Card UI Redux state is owned by the feature flows that use it: the balance filter by
    @features/flow-pay-card-balance and the feature-tour flag by @features/flow-pay-card-feature-tour.

    Only the login step ships here. The callback code exchange and the card status read stay behind until
    the session has an owner that can store and refresh it.

  • #20867 b7476f4 Thanks @mcayuelas-ledger! - Skip the Noah receive funds options drawer when depositing from Pay so users are not asked to choose crypto vs bank transfer twice

  • #20433 481bc40 Thanks @ooke-ledger! - Hand a perps deposit requested by the live app over to the wallet, and let the asset and account pickers word themselves after the role the selection plays: the account funds land in, the account they are taken from, or the perps pick that predates both

  • #20753 560b8d6 Thanks @LL782! - Replace the useAnalytics hook with the module-level track function

    Internal refactor ahead of the analytics package migration. Event property values are unchanged; duplicate send_modal "step review device" emissions caused by the hook's route-keyed callback identity no longer fire, so counts for that event may fall slightly.

  • #20645 dd3baf3 Thanks @claudiiafg! - Add shared edit contact signer validation state with mocked signer mismatch handling and wire Desktop and Mobile contact edit flows.

  • #19909 311e79f Thanks @henri-ly! - add new send flow tokens test, and type the amount in crypto (the step opens in fiat) by tagging
    the amount fiat/crypto toggle with a amount-mode-toggle testID

  • #20800 c8adec3 Thanks @mcayuelas-ledger! - Add Deposit and Request action tiles to the mobile Pay screen hero

  • #20699 e9e2a48 Thanks @deepyjr! - Fix the Contacts network search drawer crash

  • #20440 541de50 Thanks @vpenskyi-ledger! - Change swap pending operation CTA from "Go to history" to "See details"

  • #20700 999305d Thanks @vtaranushenko-ext-ledger! - Keep memo, tag and comment edits made from the send summary when navigating back to the recipient or amount step, instead of reverting them.

Patch Changes

  • Updated dependencies [ec8baad, a3164d8, 9accbb8, 841f7a0, 5ff320a, e4e8d08, 14cf5b8, 0dc2509, 8605089, c3b8717, 1a2df41, 55768ad, 696f871, e07e0ba, 45dc82e, a7b0bae, 7c8d5df, f2f3ec9, 526ca7b, d0ac51c, 840de0d, 3c36af2, 46eb674, da0a5ce, 19e578a, eecf99a, d43f03d, 21323c6, f040998, 030fc67, a781abe, bad0305, 5b39a67, 0807eca, e72d6ff, 352c6a3, 68448cd, 75d0c9b, eb4d29e, 42fca4a, a61f702, e291645, 4faf5cd, 2edf614, 9e45705, e54d98b, b6da6b1, ca74f9d, 3dd9308, fae92bf, 8153370, dd3baf3, 7c20f72, 0fc43c1, c8adec3, b2896a9, 79882e2, 5a96e09, a20805c, 030b427]:
    • @features/flow-pay-card-balance@0.2.0
    • @features/flow-pay-card-deposit@0.2.0
    • @shared/feature-flags@0.19.0
    • @domain/api-aggregated-assets@0.4.0
    • @features/platform-contacts@0.3.0
    • @domain/entity-contact@0.7.0
    • @features/flow-contacts@0.7.0
    • @ledgerhq/live-dmk-shared@0.31.0
    • @ledgerhq/ledger-auth@0.4.0
    • @ledgerhq/ledger-key-ring-protocol@0.20.0
    • @shared/auth@0.5.0
    • @shared/api-services@0.4.0
    • @features/platform-card@0.2.0
    • @shared/env@0.3.0
    • @features/flow-contacts-add-contact@0.3.0
    • @ledgerhq/types-devices@7.0.0
    • @ledgerhq/coin-concordium@1.0.0
    • @ledgerhq/coin-multiversx@1.0.0
    • @ledgerhq/coin-filecoin@2.0.0
    • @ledgerhq/coin-canton@1.0.0
    • @ledgerhq/coin-casper@3.0.0
    • @ledgerhq/coin-cosmos@1.0.0
    • @ledgerhq/coin-evm@5.0.0
    • @features/flow-contacts-introduction@0.2.0
    • @ledgerhq/types-live@6.120.0
    • @features/flow-pay-card-feature-tour@0.3.0
    • @features/flow-pay-card-auth@0.3.0
    • @devtools/bindings@0.4.0
    • @ledgerhq/ledger-wallet-framework@3.0.0
    • @features/flow-lazy-onboarding-banner@0.3.0
    • @features/platform-aggregated-assets@0.4.0
    • @devtools/transport-panel@0.5.0
    • @devtools/wire@0.4.0
    • @domain/entity-currency-token@0.5.0
    • @domain/api-currency-token@0.5.0
    • @ledgerhq/coin-bitcoin@0.51.1
    • @features/platform-currencies@0.6.1
    • @features/platform-feature-flags@0.6.6
    • @ledgerhq/live-dmk-mobile@0.29.4
    • @domain/api-altcoins-sentiment@0.3.2
    • @domain/api-currency-fiat@0.4.1
    • @domain/api-market-sentiment@0.3.2
    • @domain/api-push-devices@0.2.2
    • @features/platform-env@0.2.1
    • @ledgerhq/live-dmk-speculos@0.10.5
    • @ledgerhq/wallet-analytics@0.3.4
    • @ledgerhq/wallet-pnl@0.7.7
    • @ledgerhq/device-intent@6.0.0
    • @ledgerhq/coin-stacks@0.28.1
    • @ledgerhq/device-core@0.11.12
    • @ledgerhq/domain-service@1.8.15
    • @ledgerhq/live-countervalues@0.24.3
    • @ledgerhq/live-countervalues-react@0.16.7
    • @ledgerhq/live-wallet@1.0.1
    • @devtools/shell@0.8.1
    • @domain/entity-currency@0.4.1
    • @features/flow-analytics-consent@0.2.2

Don't miss a new ledger-live release

NewReleases is sending notifications on new releases.