Skip to content

@ledgerhq/live-desktop@4.9.0

Choose a tag to compare

@github-actions github-actions released this 22 Jun 09:36
· 450 commits to develop since this release
990871e

4.9.0

Minor Changes

  • #18333 1bb2d22 Thanks @qperrot! - Fix: add support link for SEI delegation warning

  • #18423 3fa1fca Thanks @mcayuelas-ledger! - Add a favorites ranking to the desktop Market Banner. The banner now switches between the trending performers list and the user's starred market coins, fetching favorites via useMarketData (availability filtering bypassed so starred coins always show) and disabling whichever query is inactive.

  • #18222 9ddf006 Thanks @henri-ly! - add undelegate for monad

  • #18255 1da564f Thanks @dilaouid! - feat(lwdm): hook in llc for signature view model

  • #18362 9fe00b7 Thanks @jiyuzhuang! - Add theme-specific awareness modal hero images, feature intro border, carousel navigation label, and related UI improvements

  • #18315 bfbd74d Thanks @shazzzam! - Display the correct fee currency for Celo CIP-64 transactions (fees paid in tokens such as USDT/USDC instead of native CELO). Adds a feeCurrencyAddress field to CeloOperationExtra, an eth_getTransactionByHash-based sync enrichment, and a skip option to useTokenByAddressInCurrency for conditional CAL lookups.

  • #18291 c0b15db Thanks @mcayuelas-ledger! - Add the Altcoin Season index card to the Market top cards section. The arc gauge used by the Fear & Greed indicator is extracted into a shared ArcGaugeIndicator component, and a shared MarketTopCardError component now renders a graceful error state for each top card instead of silently hiding it.

  • #17844 7a120cb Thanks @gre-ledger! - Adopt @datadog/electron-sdk to cover the Electron main process. Uncaught exceptions, unhandled rejections, and renderer crashes (render-process-gone) are now reported to Datadog, and dd-trace adds main-process resource/trace and renderer telemetry forwarding. Gated by the existing sentryLogs user opt-in; no new feature flag.

    Bundle stack frames from the packaged asar are rewritten to https://app.asar/… before sending, so Datadog can match the uploaded source maps and unminify stack traces — both the renderer's file://…/app.asar/.webpack/… URLs and the main process's raw /…/app.asar/.webpack/… filesystem paths.

  • #18337 fdd5d35 Thanks @RobinVncnt! - fix: add tracking on select device button clicked

  • #18397 4fc3636 Thanks @mcayuelas-ledger! - Add Cryptos and Stablecoins suggestion sections to the global Search overlay. Both sections are sourced from DADA market data (shared single fetch, split in-memory by DADA stablecoin tickers), ranked by market cap and capped to a per-section limit, with loading skeletons and click-through to the asset detail / market list.

  • #18522 1b39e2b Thanks @mcayuelas-ledger! - change order of categories in market

  • #18237 8d79393 Thanks @ysitbon! - Migrate @ledgerhq/live-common's internal feature-flag consumers off its React featureFlags Context module and @ledgerhq/types-live feature types, onto the Redux-backed @shared/feature-flags / @features/platform-feature-flags packages, and remove the featureFlags module along with the apps' now-inert FeatureFlagsContextBridge. Remaining external React consumers (both apps) are repointed to @features/platform-feature-flags; @ledgerhq/live-dmk-desktop receives its ldmkTransport flag via a prop instead of depending on the feature-flags package; non-React imperative reads use an injected getter or the relocated live-common/firebase/featureFlags reader. Adds the platform-specific formatToFirebaseFeatureId / formatDefaultFeatures to @features/platform-feature-flags and the generic isValidFeatureId to @shared/feature-flags. No behavioral change — resolved flag values are identical.

  • #18386 24d19cc Thanks @ysitbon! - Repoint the remaining @ledgerhq/types-live feature-type consumers (desktop app + desktop/mobile e2e) onto @shared/feature-flags, taking in-repo usage of the legacy types-live feature types to zero. Also drop now-dead feature-flag tooling config: the @ledgerhq/live-common/featureFlags/index unimported entry in live-dmk-desktop, and the deleted FeatureFlagsContextBridge eslint-guardrail exemptions in both apps (the block rules against re-introducing the deleted module are kept).

  • #18555 8c2d80c Thanks @mcayuelas-ledger! - Use base color instead of red for the unread operation dot indicator

  • #18553 e9edcfa Thanks @dilaouid! - fix(lwdm): switch mode amount step new send flow changes header

  • #18546 9c17db3 Thanks @mcayuelas-ledger! - Fix Global Search navigating to "asset not found" for assets without a market-provider entry (e.g. Canton). The search now forwards the full market currency (with its ledgerIds) as navigation state, so the Asset Detail screen can resolve such assets via the DADA fallback — matching the behaviour of the Market table rows and mobile.

  • #18428 67c3a67 Thanks @LucasWerey! - Add the Global Search default-sections data on mobile, fed by DADA. Cryptos (top 3) and stablecoins (top 2) render as market rows; stocks (top 10) as pills.

    Share the DADA asset-discovery selection in @ledgerhq/live-common (selectTopStocks, selectTopAssetsByCategory, StockSuggestion) so desktop and mobile use one implementation; desktop's stocks section now consumes selectTopStocks instead of its own copy.

  • #18509 2241e4f Thanks @dilaouid! - feat(llc): new send flow custom fees common hooks

  • #18543 a342b65 Thanks @mcayuelas-ledger! - align footer note in market cards

  • #18480 7626bfb Thanks @mcayuelas-ledger! - Gate the desktop market banner ranking behind the asset discoverability feature flag and default the ranking to gainers when the flag is off

  • #18300 8f5c122 Thanks @dilaouid! - feat(llc): changes signature request type for new send flow

  • #18450 89b52f5 Thanks @mcayuelas-ledger! - Add live asset search results to the top-bar search overlay. Typing a query (debounced, min 2 chars) fetches matching assets from DADA via useAssetSearchResultsViewModel and renders them as a flat list, with dedicated empty ("No asset found") and error ("Connection failed") states. The asset row gains a default density for the expanded results layout, and the clear button no longer toggles the overlay.

  • #18557 74c559f Thanks @deepyjr! - Fix: re-clicking the global search bar no longer closes the search overlay. Clicks inside the open search field are now prevented from toggling the Popover trigger, so the overlay stays open and the typed query is preserved.

  • #18449 db3bb7e Thanks @mcayuelas-ledger! - Migrate the search-overlay asset suggestions to the DADA assets endpoint (useAssetsData + useUsdToFiatRate) instead of useMarketData, exposing an isError state for cryptos/stablecoins and stocks. The Stocks section also moves from a CSS grid to an explicit two-row layout (shared splitIntoTwoRows helper) to keep the column-major scroll order.

  • #18002 5d583bf Thanks @gre-ledger! - perf(lld): defer-load renderer coin families and modals via dynamic import()

  • #18419 8fcac22 Thanks @dilaouid! - fix(lwd): add links for amount screen in new send flow

  • #18312 621a175 Thanks @lysyi3m! - Surface insufficient fee-token balance on Celo Send Desktop as an explicit error banner.

  • #18488 b5b7fc5 Thanks @mcayuelas-ledger! - Add a "Stocks preset" generator to the developer mock-accounts tooling (dev-only tooling, no user-facing change). It fetches the top tokenized stocks from DADA (category=stocks) and injects them as sub-accounts grouped under their network.

  • #18548 7ad54da Thanks @claudiiafg! - Fix transaction history staying filtered by asset when opening Transactions from the top bar while already on a scoped history view

  • #18294 f4f4185 Thanks @LucasWerey! - LWD - W4.0 - Add the Market category switcher (All / Stocks / Favorites) on the V4 Market page, gated by the lwdWallet40.assetDiscoverability feature flag. The selected category is persisted across reloads and supersedes the legacy starred filter drawer when the flag is on. The shared category helpers (parseMarketListCategory, getMarketFilter, isStockMarketCurrency) now live in @ledgerhq/live-common/market/utils/category and are reused by both desktop and mobile.

  • #18307 59aa611 Thanks @LucasWerey! - LWD - W4.0 - Support a category param in the Market deeplink (e.g. ledgerwallet://market?category=stocks). When present, the category is pre-selected (setMarketCategory) before navigating to /market; unknown values fall back to all.

  • #18299 1187d63 Thanks @LucasWerey! - LWD - W4.0 - Replace the Market page time-range dropdown (@ledgerhq/react-ui) with the Lumen Select pill (MediaButton trigger), matching Figma. The range value still flows through useMarket and persists exactly as before — no behaviour change.

  • #18487 b528cf5 Thanks @mcayuelas-ledger! - Add the Portfolio Stocks section behind the assetDiscoverability flag. useCategorizedAssetsFromPortfolio now returns a stocks bucket split out of cryptos by DADA currency id (collision-free vs ticker, so a crypto like TON isn't misclassified). When the user holds stocks the section renders a table like Cryptos/Stablecoins (max 5, "Explore all" → the /assets?category=stocks filtered view); otherwise it renders the discovery grid of the top default stocks ("Explore" → Market filtered to stocks). Renames the discovery StockRow pill to StockPill.

  • #18497 1aab949 Thanks @mcayuelas-ledger! - Harmonize asset prices across Global Search, the Assets table and Asset detail so the same asset shows the same price to the cent. The Assets table Price column now sources from DADA (with the USD→fiat conversion applied, fixing non-USD fiats like MAD/EUR) and Asset detail reads from the shared bulk DADA cache, removing the transient drift between screens. The Value column stays on countervalues for portfolio consistency.

  • #18338 eb5cd74 Thanks @mcayuelas-ledger! - Add a ranking selector (Trending, Gainers, Losers, Favorites) to the MarketBanner header, gated behind the assetDiscoverability feature flag. The selection is persisted across reloads via a new marketBanner Redux slice. Favorites is disabled when no market coins are starred.

  • #18518 a513132 Thanks @mcayuelas-ledger! - Fix Market list pagination and scroll position when switching lists (category, sort, range, search, filter): re-arm the pagination guard and reset scroll to the top on list identity change, and detect the end of every list type by tracking whether new rows arrived

  • #18466 ede0766 Thanks @mcayuelas-ledger! - Add MarketTable component (view, view-model, sortable header and loading skeleton) for the new asset-discoverability Market view

  • #18466 caf22a8 Thanks @mcayuelas-ledger! - Add MarketRow component (view, view-model and row actions) for the new asset-discoverability Market table

  • #18466 65f2d6f Thanks @mcayuelas-ledger! - Display the new Market table on the Market page when asset discoverability is enabled, keeping the legacy list otherwise

  • #18541 851d224 Thanks @mcayuelas-ledger! - Add a "Total volume" sort option to the desktop Market table. The Volume column header is now sortable and toggles between highest and lowest 24h volume, mapping to the new total-volume-desc and total-volume values of the /v3/markets sort parameter.

  • #18533 dd7447f Thanks @mcayuelas-ledger! - Fix Market V2 table polish: truncate long asset names, render "0.00%" without a trend icon for negligible price changes, add the "Assets" subheader, and adjust table grid spacing

  • #18514 de88099 Thanks @mcayuelas-ledger! - rename market banner title

  • #18329 21c7211 Thanks @francois-guerin-ledger! - Support Monad compound (restake rewards): add the per-chain compoundReward staking operation to coin-evm (native compound(uint64) precompile call, nonpayable) and a Claim/Compound toggle in the EVM claim-rewards flow on desktop and mobile. The toggle is only shown for compound-capable chains (Monad) and defaults to Claim; the history operation type is REWARD, matching the existing claim flow.

  • #18285 5b47803 Thanks @mcayuelas-ledger! - Add the Mood index card to the Market top cards section, reusing the Fear & Greed data, gauge indicator and definition dialog. The card is shown in the middle slot when asset discoverability is enabled.

  • #18230 6956332 Thanks @Valentin-Ledger! - Move the Borrow entry point below the Assets section on the Portfolio view

  • #18486 6699b3c Thanks @mdomanski-ext-ledger! - refactor: aleo utils

  • #18642 93a5bcd Thanks @hedi-edelbloute! - feat: add new evm chain

  • #18303 e6e8605 Thanks @mcayuelas-ledger! - Add a global search input to the TopBar, gated behind the Wallet 4.0 asset discoverability flag. When enabled, the TopBar renders the global search (in place of the breadcrumb) and the Market page hides its local search input.

  • #18446 ee5c21e Thanks @mcayuelas-ledger! - Add dynamic trending categories to the Market category bar. Trending categories from the /v3/categories/trending backend endpoint are appended after the built-in categories (All / Stocks / Favorites), deduplicated against built-ins, and filter the market list when selected. The category bar now sizes each chip to its label and scrolls horizontally (scrollbar hidden) when the chips overflow.

  • #18364 f4abb5d Thanks @amaslakov! - Fix missing Tezos staking texts: family-scoped UNSTAKE/FINALIZE_UNSTAKE operation labels, neutral unsigned amount for pending unstakes, stake-success CTA opening the account dashboard, and updated unstake-required modal copy

  • #18424 2cc5f89 Thanks @mcayuelas-ledger! - fix(market): use the Settings countervalue in the Market list when asset discoverability is enabled

    When the asset discoverability feature flag is enabled, the per-market countervalue selector is hidden, so the Market list now follows the app-wide Settings countervalue (validated against the supported list, defaulting to USD) for both fetching and displaying prices. When the flag is off, the market store remains the source of truth and the dropdown still drives the list.

  • #18381 a4e4bf5 Thanks @dgreen-ledger! - Stabilize Concordium OnboardModal happy-path test by moving the transient QR-code assertion to a dedicated PREPARE-only test that can't race the SUCCESS debounce

  • #18496 37ddb59 Thanks @KVNLS! - Fix the global synchronization spinner spinning indefinitely when the portfolio contains only empty accounts (LIVE-32175). Empty accounts are never tracked for countervalues, so getPortfolio reported balanceAvailable: false forever, which kept isColdStart/isBalanceLoading true and the sync lifecycle stuck on "syncing". getPortfolio now reports the balance as available when every still-unpriced account is empty (the total is a known 0), so the spinner settles and the balance shows instead of a permanent placeholder.

  • #17457 8375bee Thanks @philipptpunkt! - Add Desktop swap transaction status dialog for LIVE-29443.

  • #17997 04e3349 Thanks @Justkant! - Harden custom deeplink opening behind platform feature flags.

  • #18304 d0ea14d Thanks @RobinVncnt! - feat: lwd - backup hub

  • #18519 712b4aa Thanks @mcayuelas-ledger! - remove stablecoins section in global search

  • #18405 8d77293 Thanks @mdomanski-ext-ledger! - feat: prepare aleo utils for incoming tokens integration

  • #18289 ca8f675 Thanks @mcayuelas-ledger! - Add the global market cap card to the Market top cards section, displaying the total crypto market capitalization with its 24h trend and a definition dialog.

  • #18280 dc902cb Thanks @mcayuelas-ledger! - Add the Market top cards section shell, a feature-flagged layout that renders three placeholder cards above the market list when asset discoverability is enabled.

  • #18554 1660756 Thanks @dilaouid! - fix(lwdm): remove stellar specific mention on error message new send flow

  • #18561 dd3547b Thanks @mcayuelas-ledger! - Use the dedicated CVS tokenized-stock category for the Market stocks filter instead of the hardcoded filter=stock + client-side id matching, and stop firing a spurious to=usd market request while the supported counter-values list is still loading.

  • #18370 5cc8f0c Thanks @mcayuelas-ledger! - Add a Stocks section to the Portfolio screen, under the Stablecoins section. It reuses the search-overlay Stocks feature (DADA-sourced, ranked by market cap, horizontally scrollable two-row grid) with an "Explore" link header variant instead of the "show more" affordance, and is gated behind the Asset Discoverability flag.

  • #18256 eb1dae8 Thanks @gre-ledger! - Derive "supported currencies" from the coin-modules registry instead of setSupportedCurrencies.

    Each CoinModuleLoader now declares a supportedCoins: CryptoCurrencyId[] field, and a currency is supported when it appears in a registered loader's supportedCoins. The framework setSupportedCurrencies / listSupportedCurrencies / isCurrencySupported and the EXPERIMENTAL_CURRENCIES env are removed; listSupportedCurrencies / isCurrencySupported are now exported from @ledgerhq/live-common/currencies backed by the registry. Apps no longer maintain a supported-currencies list — registering the coin modules is what makes their currencies supported.

  • #18310 e95d1ce Thanks @liviuciulinaru! - Track Nano S swap incompatibility views: add page-view and CTA click analytics for the "Explore compatible devices" and "Swap with another provider" actions

  • #18385 56ccfb9 Thanks @mateuszpalosz-ext! - aleo fixtures and base constants extended

  • #18560 9dacc01 Thanks @dilaouid! - chore(lwdm): refactor memo feature for new send flow

  • #18352 1f251d7 Thanks @mcayuelas-ledger! - Add a Stocks section to the global search overlay default view. Stocks are sourced from DADA, ranked by market cap, rendered in a horizontally scrollable two-row grid with skeleton loading, and link to the asset/market detail page (with a "see all" entry to the stocks market category).

  • #18529 9d5dd70 Thanks @mcayuelas-ledger! - Update footnote on all cards on market list cards

  • #18319 e30bdaf Thanks @mcayuelas-ledger! - Add the SearchOverlay shell for the global TopBar asset search: a Popover container with a shared Context and a mode-based content switch (suggestions / results / no results). Behind the assetDiscoverability feature flag; section content and the live data pipeline land in follow-up tickets.

  • #18516 bf9d9f3 Thanks @dilaouid! - feat(lwm): custom fees new send flow screen

  • #18270 7d06bb4 Thanks @qperrot! - Fix: new message for sei delegation when address not linked

  • #18306 decf1f0 Thanks @mcayuelas-ledger! - Add MSW handlers for Ledger Sync /_info endpoints and fix React 19 fake-timer hang in WalletSync tests

  • #18506 bda68fd Thanks @KVNLS! - Fix live app loader with wallet v4

  • #18235 c013b8a Thanks @YazhuEth! - Add Monad withdraw flow to finalize matured undelegations from the stakes table

  • #18532 11f7e93 Thanks @RobinVncnt! - feat: lwd backup hub tracking

Patch Changes