github LedgerHQ/ledger-live live-mobile@4.14.0

11 hours ago

4.14.0

Minor Changes

  • #20129 ba20e39 Thanks @gre-ledger! - Migrate checkLibs and its two callers off @ledgerhq/errors as part of the errors sunset (LIVE-32915).

    checkLibs detects duplicated npm packages by comparing class identity, so sanityChecks.ts and both app entrypoints must import NotEnoughBalance from the same module. All three now use @ledgerhq/ledger-wallet-framework/errors. The duplicate-package warning also names @ledgerhq/ledger-wallet-framework so the pnpm why hint points at the package actually being checked.

  • #20172 6dd18aa Thanks @LucasWerey! - Remove the legacy Gorhom QueuedDrawer implementation (migrating the last consumer, the Cardano DRep delegation drawer, to the Lumen bottom sheet) and rename QueuedDrawerBottomSheet to QueuedBottomSheet.

  • #20349 f715aa5 Thanks @cted-ledger! - Fix Zcash sends failing before the device prompt when the coin being spent came from a V4-format transaction (PROD-12599).

    Signing a transparent Zcash transaction whose input came from a V4 (Sapling-format) transaction failed immediately: no review screen appeared on the device, and Ledger Live showed "Something went wrong" with no detail. V4 is still valid on mainnet and still emitted by exchanges and older wallets, while Ledger Live itself emits V5 — so an account funded from within Ledger Live never hit this, which is why the failure looked intermittent. It is in fact deterministic, decided by which software created the funding transaction.

    serializedPreviousTransactionOverride carries the source transaction's raw on-chain bytes so the device can compute the correct ZIP-244 txid for a V5 transaction, whose Orchard bundle the signer kit's serialization would otherwise strip. It was being set for every version. The kit chunks a V4 transaction expecting Ledger's internal serialization, whose header carries a consensus branch id absent from the on-chain bytes; given those bytes it read the input count four bytes late and threw while chunking that input. The override is now restricted to the versions that need it, and a V4 source transaction goes back through the serialization path that has always handled it, its Sapling fields travelling in extraData as before.

    The decision is made per input, which is what a send spending several coins looks like from the outside: the V5 inputs are chunked and their trusted inputs obtained from the device first, then the transaction dies when the V4 input's turn comes. The device has already answered several times by then, yet no review screen is ever reached — so the failure looks like a device problem rather than a serialization one.

    Untagged device action errors are also no longer flattened into a message-less Error, so a failure inside a device action task names itself in the logs instead of surfacing only as "Something went wrong".

  • #19982 f5e4e87 Thanks @francois-guerin-ledger! - Display estimated pending rewards for 0G delegations; gate claim-rewards UI to chains that support it.

  • #19967 56f5153 Thanks @jiyuzhuang! - Fix welcome page first story looping to last on left tap

  • #20099 37dac39 Thanks @deepyjr! - Add contact address asset and network selection through the Modular Dialog, with shared asset
    filtering across Desktop and Mobile.

  • #19958 9773bd3 Thanks @OlivierFreyssinet! - Propagate contextual analytics properties through Device Intent Executor events.

  • #20032 dbffe41 Thanks @deepyjr! - Render Me-specific contact detail actions and copy on mobile.

  • #19964 86bbd1d Thanks @claudiiafg! - Add the one-time Contacts feature introduction drawer on Mobile with shared native content and dismissal preference.

  • #20107 54b3d2b Thanks @deepyjr! - Add shared Coin Integration address validation to Contacts

  • #20050 4c34536 Thanks @RobinVncnt! - Remove Custom Lock Screen step from the post-onboarding widget.

  • #19994 0f61d63 Thanks @sarneijim! - Update large-screen upsell modal UTM attribution on mobile and desktop

  • #19807 2cf4a29 Thanks @sarneijim! - Reset mobile navigation state for sequential token deeplinks and redirect invalid asset deeplinks to Market

  • #20033 d390840 Thanks @RobinVncnt! - Loop Product Tour post-onboarding card animations and restart them when revisiting a slide

  • #19374 079775c Thanks @LucasWerey! - de-gate lwmWallet40.enabled in WXP-owned drawers, hooks, and screens

  • #20009 341ea10 Thanks @hedi-edelbloute! - Revert Cardano firmware app v8.0.4 support (hw-app-cardano bump to 8.0.0)

  • #19985 808c4cd Thanks @deepyjr! - Reorganize the contacts flow package around a /steps folder (List, AddContact, Introduction, Detail), promote shared helpers to src/utils, curate root barrels, and rename public views to ContactsListView and ContactDetailView. No runtime behavior change.

  • #20070 52253f7 Thanks @ysitbon! - Remove the now-dead @ledgerhq/cryptoassets currency/fiat store injection from the app bootstraps. Nothing reads the legacy currency/fiat accessors anymore (the runtime source of truth is the domain-backed wallet-framework currency resolver), so setCryptoCurrenciesStore / setFiatCurrenciesStore injected a store no consumer queried. Drop the calls, drop the @ledgerhq/cryptoassets dependency from the apps, and remove the remaining stale references to the package in comments.

  • #20175 b953d34 Thanks @deepyjr! - Add a reusable queued drawer flow and an embeddable Modular Drawer presentation

  • #19992 452adf8 Thanks @sarneijim! - Gate each existing mobile Nano S upsell banner placement through the shared large-screen upsell flag.

  • #19935 7ead592 Thanks @sarneijim! - Update the Mobile large-screen upsell opt-out copy and CTA.

  • #20042 467578e Thanks @dilaouid! - fix(lwm): fix multiple UI tweaks in the new send flow

  • #19715 cf63f27 Thanks @YazhuEth! - Hide Send and Receive for HyperCore accounts on mobile: HyperCore has no on-chain send on Ledger Wallet and a plain receive is misleading (deposits go through bridging). Both actions are now hidden across the account actions (FAB), the asset actions, the quick-action drawers and the no-funds empty state, reusing the shared isSendDisabledForFamily / isReceiveDisabledForFamily predicates from @ledgerhq/live-common. The account "Quick actions" section is also hidden entirely when it has no actions left (e.g. HyperCore), instead of showing an empty titled section.

  • #20027 6131b15 Thanks @deepyjr! - Add shared Add Address session state and start it from Mobile contact details

  • #20035 67df284 Thanks @deepyjr! - Select a native asset or token and its eligible network with the Mobile modular drawer before
    entering a contact address.

  • #19880 26ee89d Thanks @deepyjr! - Add the shared native empty contact detail page and wire it into Mobile.

  • #20091 ef5945a Thanks @LucasWerey! - Bump Lumen design-system packages to latest (design-core 0.1.23, ui-react 0.1.49, ui-rnative 0.1.52, ui-react-visualization 0.1.28, ui-rnative-visualization 0.1.29).

    • Migrate the desktop tables to the new TableCellContent compound API (TableCellItem / TableCellContent / TableCellContentTitle / TableCellContentDescription / TableCellContentRow).
    • Migrate the interactive My Wallet avatar to the new AvatarButton component on both apps, and fix the vertical centering of the desktop top-bar trigger.
    • Use the currency image fallback (MediaImage, circular) in the market list so it matches the crypto-icon shape.
    • Simplify getDotIndicatorProps avatar sizing now that the helper is typed for the full avatar size range.
  • #19805 b1d3f26 Thanks @ishaba! - feat(send): add default-fee strategy to the new send flow

  • #20159 534d2c5 Thanks @jiyuzhuang! - Migrate engagement-scope screens to SafeAreaViewFixed for experimental header compatibility

  • #20122 8677d5c Thanks @LucasWerey! - Migrate the mobile Modular Drawer to Lumen components (BottomSheet, ListItem, SearchInput, Banner, CardButton, Trend, Tag, Box/Text) and drop the legacy native-ui primitives and the pre-ldls composites it used. Removes the now-unused pre-ldls staging components (AssetItem, NetworkItem, AccountItem, Address, Tag, Input, Search, AssetTypeList, NetworkList, MarketPriceIndicator, MarketPercentIndicator) and the orphaned useDebouncedCallback hook from @ledgerhq/native-ui (CryptoIcon and AddAccountButton are kept). Adds the empty-account state (header description + "Add account" CardButton) on the account step.

  • #19955 0629f02 Thanks @dilaouid! - feat(lwm): auto focus address input new send flow

  • #20166 74ee8f9 Thanks @LucasWerey! - Remove two dead navigator screens that were registered but unreachable.

    • RegionSettings: orphaned since its only entry point (RegionRow) was removed in PR #1000 (2022). Removed the screen registration, Region screen, regions.json (~36 KB dropped from the bundle), the ScreenName.RegionSettings enum member, and the now-unused setLocale Redux chain (action, action type, payload type, reducer handler). No behavioral change — locale still resolves from the language default and imported settings.
    • AnalyticsAllocation: legacy allocation screen superseded by the MVVM Analytics DetailedAllocation. Removed the registration and the legacy Allocation/RingChart/DistributionCard component cluster.
  • #20073 a534db5 Thanks @jiyuzhuang! - Remove newsfeedPage feature flag (LIVE-31511)

  • #20054 c622459 Thanks @RobinVncnt! - Remove the disabled npsRatingsPrompt feature flag and NPS ratings dead code on mobile

  • #20180 dd7758b Thanks @YazhuEth! - Show 8 characters on each side of the ellipsis when truncating the recipient address in the new send flow, consistently across mobile and desktop

  • #19996 c9dddf2 Thanks @dilaouid! - feat(lwm): changes bottomsheet to sheet info and minor fixes on lwm

  • #19945 0156224 Thanks @dilaouid! - feat(lwm): new send flow add qr code scan

  • #20127 e7b8ddc Thanks @mdomanski-ext-ledger! - feat: aleo tokens swap incompatibility warning

  • #20094 481abc3 Thanks @sarneijim! - Match the large-screen upsell modal artwork to light and dark themes, use the default modal background, and adapt it to smaller screens

  • #19828 f08cad1 Thanks @henri-ly! - new send flow e2e mobile native send

  • #19925 72969ec Thanks @YazhuEth! - Track input mode (fiat or crypto) when clicking review on the new send flow amount screen

  • #20164 946ab9e Thanks @LucasWerey! - Fix countervalue resetting to USD after killing and restarting the app when the selected fiat (e.g. AMD) is not part of the offline fallback list. The boot-time "reset unsupported countervalue" guard ran against the fallback fiats before the CVS supported-fiats query resolved; the reset now lives in the reactive path gated on fiatsReady, so it only acts on the authoritative CVS list.

  • #19497 18eaa24 Thanks @lpaquet-ledger! - Update Swap Tab with New nav

  • #19215 dfab01f Thanks @CremaFR! - Add a Device Intent Executor based signing path for Wallet API transaction.sign and message.sign on Ledger Wallet Mobile, gated behind the new llmWalletApiDeviceIntentSign feature flag (per-manifest allow-list, off by default). Introduces the signMessageIntent module in live-common.

  • #19215 1a11c71 Thanks @CremaFR! - Enrich the wallet-api Device Intent Executor deviceUxV2 analytics funnel events (deviceflow_started, app_ready, deviceflow_completed, deviceflow_aborted/failed and the drawer close button_clicked) with the calling live-app's manifestId and manifestName. This keeps sourceFlow="wallet_api" while letting dashboards distinguish the originating app (swap, earn, dApp, ...) via a generic analytics-properties bag threaded through the executor.

  • #19951 123c13f Thanks @dilaouid! - fix(lwm): keep Learn more visible on recipient with keyboard open

  • #20190 a8d6e25 Thanks @dilaouid! - fix(lwdm): new send flow wait for valid address to display memo

  • #20097 7efe94e Thanks @mateuszpalosz-ext! - changes to self transfer label for Aleo

Patch Changes

  • Updated dependencies [1070564, 2e1aecc, ba69273, 24d60d7, 1af9ec9, f79de59, f5e4e87, dbffe41, 86bbd1d, 54b3d2b, 8a6b086, 281a7f3, cee41c4, 2e410a6, 808c4cd, 8ab9e50, 4148019, 1e4e519, 52253f7, 4ce5257, 91da072, e58258b, 452adf8, 112b63f, 44798f3, d7600fb, 6131b15, f334b43, 67df284, 18bc180, 26ee89d, 5de8391, 66edf4d, 8677d5c, a534db5, c622459, 524d763, e4e009f, dbf8acf, dfab01f, aa27732, aa27732, f8b5b51]:
    • @ledgerhq/errors@7.0.0
    • @ledgerhq/ledger-wallet-framework@2.6.0
    • @ledgerhq/coin-bitcoin@0.49.0
    • @ledgerhq/coin-canton@0.31.0
    • @ledgerhq/coin-casper@2.17.0
    • @ledgerhq/coin-concordium@0.18.0
    • @ledgerhq/coin-cosmos@0.41.0
    • @ledgerhq/coin-evm@4.8.0
    • @ledgerhq/coin-filecoin@1.30.0
    • @ledgerhq/coin-multiversx@0.22.0
    • @ledgerhq/coin-stacks@0.26.0
    • @ledgerhq/live-network@3.0.0
    • @features/flow-contacts@0.4.0
    • @domain/entity-currency-crypto@0.8.0
    • @domain/entity-currency-token@0.3.0
    • @domain/entity-currency@0.3.0
    • @ledgerhq/live-countervalues@0.24.0
    • @domain/entity-contact@0.4.0
    • @shared/feature-flags@0.16.0
    • @devtools/shell@0.6.0
    • @ledgerhq/native-ui@0.65.0
    • @ledgerhq/types-live@6.117.0
    • @ledgerhq/domain-service@1.8.12
    • @ledgerhq/hw-transport@6.35.7
    • @ledgerhq/hw-transport-http@6.36.7
    • @ledgerhq/live-dmk-mobile@0.29.1
    • @ledgerhq/live-countervalues-react@0.16.4
    • @ledgerhq/live-wallet@0.30.1
    • @ledgerhq/wallet-analytics@0.3.1
    • @ledgerhq/wallet-pnl@0.7.4
    • @ledgerhq/ledger-key-ring-protocol@0.17.2
    • @domain/api-currency-token@0.2.3
    • @features/platform-currencies@0.4.1
    • @ledgerhq/live-currency-format@0.14.1
    • @devtools/bindings@0.2.2
    • @features/platform-feature-flags@0.6.3
    • @ledgerhq/hw-ledger-key-ring-protocol@0.11.2
    • @shared/env@0.1.1
    • @ledgerhq/live-dmk-shared@0.29.1
    • @ledgerhq/live-dmk-speculos@0.10.3
    • @features/platform-env@0.1.1

Don't miss a new ledger-live release

NewReleases is sending notifications on new releases.