4.9.0
Minor Changes
- #18423
3fa1fcaThanks @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 viauseMarketData(availability filtering bypassed so starred coins always show) and disabling whichever query is inactive.
- #18362
9fe00b7Thanks @jiyuzhuang! - Add theme-specific awareness modal hero images, feature intro border, carousel navigation label, and related UI improvements
- #18315
bfbd74dThanks @shazzzam! - Display the correct fee currency for Celo CIP-64 transactions (fees paid in tokens such as USDT/USDC instead of native CELO). Adds afeeCurrencyAddressfield toCeloOperationExtra, aneth_getTransactionByHash-based sync enrichment, and askipoption touseTokenByAddressInCurrencyfor conditional CAL lookups.
- #18291
c0b15dbThanks @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 sharedArcGaugeIndicatorcomponent, and a sharedMarketTopCardErrorcomponent now renders a graceful error state for each top card instead of silently hiding it.
- #17844
7a120cbThanks @gre-ledger! - Adopt@datadog/electron-sdkto cover the Electron main process. Uncaught exceptions, unhandled rejections, and renderer crashes (render-process-gone) are now reported to Datadog, anddd-traceadds main-process resource/trace and renderer telemetry forwarding. Gated by the existingsentryLogsuser 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
fdd5d35Thanks @RobinVncnt! - fix: add tracking on select device button clicked
- #18397
4fc3636Thanks @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
1b39e2bThanks @mcayuelas-ledger! - change order of categories in market
- #18237
8d79393Thanks @ysitbon! - Migrate@ledgerhq/live-common's internal feature-flag consumers off its ReactfeatureFlagsContext module and@ledgerhq/types-livefeature types, onto the Redux-backed@shared/feature-flags/@features/platform-feature-flagspackages, and remove thefeatureFlagsmodule along with the apps' now-inertFeatureFlagsContextBridge. Remaining external React consumers (both apps) are repointed to@features/platform-feature-flags;@ledgerhq/live-dmk-desktopreceives itsldmkTransportflag via a prop instead of depending on the feature-flags package; non-React imperative reads use an injected getter or the relocatedlive-common/firebase/featureFlagsreader. Adds the platform-specificformatToFirebaseFeatureId/formatDefaultFeaturesto@features/platform-feature-flagsand the genericisValidFeatureIdto@shared/feature-flags. No behavioral change - resolved flag values are identical.
- #18386
24d19ccThanks @ysitbon! - Repoint the remaining@ledgerhq/types-livefeature-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/indexunimportedentry inlive-dmk-desktop, and the deletedFeatureFlagsContextBridgeeslint-guardrail exemptions in both apps (the block rules against re-introducing the deleted module are kept).
- #18555
8c2d80cThanks @mcayuelas-ledger! - Use base color instead of red for the unread operation dot indicator
- #18546
9c17db3Thanks @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 itsledgerIds) 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
67c3a67Thanks @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.
- #18543
a342b65Thanks @mcayuelas-ledger! - align footer note in market cards
- #18480
7626bfbThanks @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
- #18450
89b52f5Thanks @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 viauseAssetSearchResultsViewModeland renders them as a flat list, with dedicated empty ("No asset found") and error ("Connection failed") states. The asset row gains adefaultdensity for the expanded results layout, and the clear button no longer toggles the overlay.
- #18557
74c559fThanks @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
db3bb7eThanks @mcayuelas-ledger! - Migrate the search-overlay asset suggestions to the DADA assets endpoint (useAssetsData+useUsdToFiatRate) instead ofuseMarketData, exposing anisErrorstate for cryptos/stablecoins and stocks. The Stocks section also moves from a CSS grid to an explicit two-row layout (sharedsplitIntoTwoRowshelper) to keep the column-major scroll order.
- #18002
5d583bfThanks @gre-ledger! - perf(lld): defer-load renderer coin families and modals via dynamic import()
- #18312
621a175Thanks @lysyi3m! - Surface insufficient fee-token balance on Celo Send Desktop as an explicit error banner.
- #18488
b5b7fc5Thanks @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
7ad54daThanks @claudiiafg! - Fix transaction history staying filtered by asset when opening Transactions from the top bar while already on a scoped history view
- #18294
f4f4185Thanks @LucasWerey! - LWD - W4.0 - Add the Market category switcher (All / Stocks / Favorites) on the V4 Market page, gated by thelwdWallet40.assetDiscoverabilityfeature 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/categoryand are reused by both desktop and mobile.
- #18307
59aa611Thanks @LucasWerey! - LWD - W4.0 - Support acategoryparam 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 toall.



