@ledgerhq/live-desktop@4.9.0
4.9.0
Minor Changes
-
#18333
1bb2d22Thanks @qperrot! - Fix: add support link for SEI delegation warning -
#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. -
#18255
1da564fThanks @dilaouid! - feat(lwdm): hook in llc for signature view model -
#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'sfile://…/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 -
#18553
e9edcfaThanks @dilaouid! - fix(lwdm): switch mode amount step new send flow changes header -
#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 consumesselectTopStocksinstead of its own copy. -
#18509
2241e4fThanks @dilaouid! - feat(llc): new send flow custom fees common hooks -
#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 -
#18300
8f5c122Thanks @dilaouid! - feat(llc): changes signature request type for new send flow -
#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() -
#18419
8fcac22Thanks @dilaouid! - fix(lwd): add links for amount screen in new send flow -
#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. -
#18299
1187d63Thanks @LucasWerey! - LWD - W4.0 - Replace the Market page time-range dropdown (@ledgerhq/react-ui) with the LumenSelectpill (MediaButtontrigger), matching Figma. The range value still flows throughuseMarketand persists exactly as before — no behaviour change. -
#18487
b528cf5Thanks @mcayuelas-ledger! - Add the Portfolio Stocks section behind theassetDiscoverabilityflag.useCategorizedAssetsFromPortfolionow returns astocksbucket split out ofcryptosby 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=stocksfiltered view); otherwise it renders the discovery grid of the top default stocks ("Explore" → Market filtered to stocks). Renames the discoveryStockRowpill toStockPill. -
#18497
1aab949Thanks @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
eb5cd74Thanks @mcayuelas-ledger! - Add a ranking selector (Trending, Gainers, Losers, Favorites) to the MarketBanner header, gated behind theassetDiscoverabilityfeature flag. The selection is persisted across reloads via a newmarketBannerRedux slice. Favorites is disabled when no market coins are starred. -
#18518
a513132Thanks @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
ede0766Thanks @mcayuelas-ledger! - Add MarketTable component (view, view-model, sortable header and loading skeleton) for the new asset-discoverability Market view -
#18466
caf22a8Thanks @mcayuelas-ledger! - Add MarketRow component (view, view-model and row actions) for the new asset-discoverability Market table -
#18466
65f2d6fThanks @mcayuelas-ledger! - Display the new Market table on the Market page when asset discoverability is enabled, keeping the legacy list otherwise -
#18541
851d224Thanks @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 newtotal-volume-descandtotal-volumevalues of the/v3/marketssortparameter. -
#18533
dd7447fThanks @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
de88099Thanks @mcayuelas-ledger! - rename market banner title -
#18329
21c7211Thanks @francois-guerin-ledger! - Support Monad compound (restake rewards): add the per-chaincompoundRewardstaking operation to coin-evm (nativecompound(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 isREWARD, matching the existing claim flow. -
#18285
5b47803Thanks @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
6956332Thanks @Valentin-Ledger! - Move the Borrow entry point below the Assets section on the Portfolio view -
#18486
6699b3cThanks @mdomanski-ext-ledger! - refactor: aleo utils -
#18642
93a5bcdThanks @hedi-edelbloute! - feat: add new evm chain -
#18303
e6e8605Thanks @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
ee5c21eThanks @mcayuelas-ledger! - Add dynamic trending categories to the Market category bar. Trending categories from the/v3/categories/trendingbackend 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
f4abb5dThanks @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
2cc5f89Thanks @mcayuelas-ledger! - fix(market): use the Settings countervalue in the Market list when asset discoverability is enabledWhen 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
a4e4bf5Thanks @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
37ddb59Thanks @KVNLS! - Fix the global synchronization spinner spinning indefinitely when the portfolio contains only empty accounts (LIVE-32175). Empty accounts are never tracked for countervalues, sogetPortfolioreportedbalanceAvailable: falseforever, which keptisColdStart/isBalanceLoadingtrue and the sync lifecycle stuck on"syncing".getPortfolionow 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
8375beeThanks @philipptpunkt! - Add Desktop swap transaction status dialog for LIVE-29443. -
#17997
04e3349Thanks @Justkant! - Harden custom deeplink opening behind platform feature flags. -
#18304
d0ea14dThanks @RobinVncnt! - feat: lwd - backup hub -
#18519
712b4aaThanks @mcayuelas-ledger! - remove stablecoins section in global search -
#18405
8d77293Thanks @mdomanski-ext-ledger! - feat: prepare aleo utils for incoming tokens integration -
#18289
ca8f675Thanks @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
dc902cbThanks @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
1660756Thanks @dilaouid! - fix(lwdm): remove stellar specific mention on error message new send flow -
#18561
dd3547bThanks @mcayuelas-ledger! - Use the dedicated CVStokenized-stockcategory for the Market stocks filter instead of the hardcodedfilter=stock+ client-side id matching, and stop firing a spuriousto=usdmarket request while the supported counter-values list is still loading. -
#18370
5cc8f0cThanks @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
eb1dae8Thanks @gre-ledger! - Derive "supported currencies" from the coin-modules registry instead ofsetSupportedCurrencies.Each
CoinModuleLoadernow declares asupportedCoins: CryptoCurrencyId[]field, and a currency is supported when it appears in a registered loader'ssupportedCoins. The frameworksetSupportedCurrencies/listSupportedCurrencies/isCurrencySupportedand theEXPERIMENTAL_CURRENCIESenv are removed;listSupportedCurrencies/isCurrencySupportedare now exported from@ledgerhq/live-common/currenciesbacked by the registry. Apps no longer maintain a supported-currencies list — registering the coin modules is what makes their currencies supported. -
#18310
e95d1ceThanks @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
56ccfb9Thanks @mateuszpalosz-ext! - aleo fixtures and base constants extended -
#18560
9dacc01Thanks @dilaouid! - chore(lwdm): refactor memo feature for new send flow -
#18352
1f251d7Thanks @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
9d5dd70Thanks @mcayuelas-ledger! - Update footnote on all cards on market list cards -
#18319
e30bdafThanks @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 theassetDiscoverabilityfeature flag; section content and the live data pipeline land in follow-up tickets. -
#18516
bf9d9f3Thanks @dilaouid! - feat(lwm): custom fees new send flow screen -
#18270
7d06bb4Thanks @qperrot! - Fix: new message for sei delegation when address not linked -
#18306
decf1f0Thanks @mcayuelas-ledger! - Add MSW handlers for Ledger Sync/_infoendpoints and fix React 19 fake-timer hang in WalletSync tests -
#18506
bda68fdThanks @KVNLS! - Fix live app loader with wallet v4 -
#18235
c013b8aThanks @YazhuEth! - Add Monad withdraw flow to finalize matured undelegations from the stakes table -
#18532
11f7e93Thanks @RobinVncnt! - feat: lwd backup hub tracking
Patch Changes
- Updated dependencies [
3fa1fca,61fe10b,81ceb34,9ddf006,1da564f,9fe00b7,b9a2a9e,bfbd74d,597a15d,558e633,da1c0c8,8d79393,24d19cc,e9edcfa,e272e02,031097a,9ab3a61,67c3a67,05d8db8,16b9bbc,2241e4f,8f5c122,82a143f,f4f4185,1aab949,e962c2d,851d224,d3829e5,f59b441,21c7211,93a5bcd,e6c617b,37ddb59,bbb92a1,04e3349,5dcc7b5,8d77293,1660756,dd3547b,086bf9b,6e0f83d,eb1dae8,56ccfb9,9dacc01,3534656,252c330]:- @ledgerhq/live-common@36.2.0
- @ledgerhq/coin-cardano@0.27.0
- @ledgerhq/live-env@2.39.0
- @ledgerhq/types-live@6.112.0
- @ledgerhq/coin-evm@4.3.0
- @ledgerhq/cryptoassets@13.52.0
- @ledgerhq/coin-cosmos@0.36.0
- @shared/feature-flags@0.11.0
- @features/platform-feature-flags@0.4.0
- @ledgerhq/live-dmk-desktop@0.18.0
- @ledgerhq/types-cryptoassets@7.38.0
- @ledgerhq/ledger-wallet-framework@2.2.0
- @ledgerhq/wallet-pnl@0.6.0
- @ledgerhq/asset-detail@0.6.0
- @ledgerhq/live-currency-format@0.10.0
- @ledgerhq/live-countervalues@0.20.0
- @ledgerhq/client-ids@0.10.3
- @ledgerhq/coin-bitcoin@0.44.1
- @ledgerhq/coin-canton@0.26.2
- @ledgerhq/coin-concordium@0.13.1
- @ledgerhq/coin-filecoin@1.25.1
- @ledgerhq/hw-ledger-key-ring-protocol@0.10.6
- @ledgerhq/ledger-key-ring-protocol@0.15.1
- @ledgerhq/live-dmk-speculos@0.9.2
- @ledgerhq/live-network@2.6.5
- @ledgerhq/live-wallet@0.27.3
- @ledgerhq/asset-aggregation@0.8.1
- @ledgerhq/coin-casper@2.13.7
- @ledgerhq/domain-service@1.8.7
- @ledgerhq/live-countervalues-react@0.15.1