Original release notes
4.6.0
Minor Changes
- #17499
d7c5ad3Thanks @LucasWerey! - Add @ledgerhq/lumen-ui-rnative-visualization dependency and expose a standalone Settings Debug "Lumen Visualization" preview screen rendering a sample LineChart.
- #17676
7f11be9Thanks @deepyjr! - Display the addresses count next to the section title on Asset Detail and add a "See all" action when an asset has more than 5 accounts.
- #17532
72347d3Thanks @LucasWerey! - Display PnL metric cards (Unrealised return, Cost basis) on the Analytics screen for the Wallet 4.0 release. Pressing the Unrealised card opens the PnL detail drawer (Unrealised / Realised / Total return); pressing the Cost basis card opens an info drawer. Portfolio data is sourced from@ledgerhq/wallet-pnl, visibility is gated by thepnlfeature param and values respect discreet mode.
- #17678
2b37eadThanks @deepyjr! - Open the "See all" addresses entry from the Asset Detail screen in a bottom-sheet drawer instead of navigating to the CryptoAddresses screen. The portfolio-wide entry to the CryptoAddresses screen is unchanged.
- #17433
bdcd8f0Thanks @deepyjr! - Add asset detail coin options (NavBar trailing button + bottom sheet) to favourite/unfavourite a coin and hide/show it from the portfolio, with state persisted across sessions
- #17644
193ff3eThanks @LucasWerey! - Use interactive Card type for Asset Detail Earn banner and deposit card
- #17586
2fda0b0Thanks @deepyjr! - Update Asset Detail v4 loading state to render animatedSkeletonplaceholders (from@ledgerhq/lumen-ui-rnative) for the BalanceGraph header (Market price), BalanceDetails, Addresses, Transactions, MarketStats and PricePerformance sections. Section titles are also skeletoned during loading for visual consistency.
- #17402
5c6c279Thanks @gre-ledger! - Make formatAccount and formatOperation async to forward-compatibly await getAccountBridge
- #17284
446020dThanks @gre-ledger! - chore: async prep - toOperationRaw, toSignedOperationRaw and remaining bridge callers (LIVE-29186)
Make toOperationRaw, toSignedOperationRaw and toSignOperationEventRaw async in @ledgerhq/live-common, widen WalletSyncDataManagerResolutionContext.getAccountBridge in @ledgerhq/live-wallet to accept a Promise, and update remaining callers (apps/cli, apps/wallet-cli, apps/web-tools, mobile concordium, coin-tester-evm/solana, coin-modules-monitoring) to await the bridge.
- #17338
19b82d1Thanks @gre-ledger! - Remove the 6 deprecated top-level helpers from @ledgerhq/live-common:isAccountEmpty,clearAccount,getVotesCount,isEditableOperation,isStuckOperation,getStuckAccountAndOperation. Consumers must now resolve anAccountBridgefirst (viauseAccountBridge/useAccountBridgeManyin React, orgetAccountBridge/getAccountBridgeByFamilyelsewhere) and call the corresponding method on the bridge. Desktop and mobile apps have been migrated.
- #17436
74e82f8Thanks @OlivierFreyssinet! - Add final device initializer UI states on mobile
- #17498
20920deThanks @LucasWerey! - Bump d3-array, d3-scale and d3-shape to their latest majors (and matching @types) in preparation for adopting @ledgerhq/lumen-ui-rnative-visualization.
- #17537
6a0a6beThanks @deepyjr! - Cap the Asset Detail addresses section to 5 items and add a "See all" button that opens the CryptoAddresses screen filtered by the current asset (with the "Add account" footer hidden). The portfolio-wide entry to CryptoAddresses is unchanged.
- #17621
af015b3Thanks @benruseau! - Add Lumen UI for DIE discovery and connection errors
- #17704
e278291Thanks @gre-ledger! - Gate the device-ids push middleware behind theanalyticsOptInfeature flag in addition to the user analytics consent. Device IDs are now only sent to/v2/pushdeviceswhen the FF is enabled AND the user has opted in.
- #17504
76ac9d9Thanks @benruseau! - Fix duplicated known devices Redux slice
- #17592
efbc7eeThanks @OlivierFreyssinet! - Tighten the Device Intent Executor error model:
- Replace the catch-all
connectionErrorexecutor state with a focuseddeviceDisconnectedstate entered only via theDEVICE_DISCONNECTEDevent. TheDeviceConnectionComponentno longer receivesonError, andExecutorPlatformConfigurationrequires aDeviceDisconnectedComponentin place of the previousConnectionErrorComponent. - Funnel any unexpected error escaping the inner connect-device state machine into a new terminal
UnknownErrorConnectDeviceUIStatevia acatchErrorwrapper inconnectDeviceUseCase, so the observable's error channel is never reached in normal operation. - Add a
UnknownErrorStatecomponent in the LWM connection view that renders the sharedintentErrorwording for this terminal state.
- #17295
0c205fbThanks @cfloume! - Default analytics sharing to off until you explicitly opt in via the consent prompt. Existing preferences are preserved for returning users.
- #17489
00b7cb9Thanks @LucasWerey! - Fix asset detail addresses showing parent account balance instead of token balance
- #17480
f6e40beThanks @LucasWerey! - Fix discreet mode not hiding balances on Asset Detail screen
- #17572
bf16e7eThanks @deepyjr! - Fix the APY percentage shown in the Asset Detail Earn banner. The interest rate value is a decimal fraction (e.g.0.04for 4%) and was rendered as-is, which made every banner display "0.0% APY". The value is now converted to a percentage before formatting, and the parameterized banner is only shown when the rounded display percentage is greater than zero (the generic banner is used otherwise).
- #17571
cd6a9efThanks @deepyjr! - Fix Earn redirection from the Asset Detail page. The Earn banner and the Earn deposit card now open the stake drawer filtered on the current asset, leading the user to the coin-specific Earn page instead of the generic Earn entry point.
- #17548
f2bd7c9Thanks @LucasWerey! - Fix transfer bottom sheet opening on Portfolio instead of Asset Detail screen
- #17637
809a266Thanks @LucasWerey! - Fix Android crash on clear cache flow. DispatchingwipeCountervaluesinsideuseCleanCachecaused every mountedCounterValueconsumer to re-render against the wiped state in a separate React commit from the subsequentreboot(); under Fabric this produced anIllegalStateException: The specified child already has a parent. Wipe is now dispatched from the reboot middleware in the same synchronous tick as the reboot action so React batches both updates and theRebootProviderkey change unmounts the subtree before any countervalue consumer re-renders.
- #17478
3fc6c42Thanks @LucasWerey! - Add safe area bottom padding to AssetDetail tooltip content
- #17591
4e9a077Thanks @cfloume! - Make sure push notifications data is initialized even if the user is not onboarded
- #17406
256801cThanks @tonykhaov! - Fix mobile swiper gesture resistance and single-card swipe handling
- #17693
00445f8Thanks @mcayuelas-ledger! - fix default values for wallet v4 params related to Q2
- #17656
847ed47Thanks @LucasWerey! - Add hidden asset banner on the Asset Detail screen with a quick action to unhide the asset
- #17554
295c8afThanks @YazhuEth! - Fix memo tag drawer briefly flashing on the device selection step when ignoring the memo prompt
- #17662
bb25536Thanks @mcayuelas-ledger! - Centralize price formatting with consistent digit rules (2/6 fractional digits) and threshold marker for tiny variations
- #17663
b294262Thanks @aussedatlo! - Show a stuck-loader hint after 10s on mobile device-action loading screens to invite users to check their device
- #17617
6cbcbddThanks @OlivierFreyssinet! - Improve console log readability when debugging via Chrome / React Native DevTools: mobile'sConsoleLoggernow usesconsole.groupCollapsedwith raw objects instead of stringifying everything to JSON, and the DMK logger emits a clearerDMK[tag]log type (with backward-compatible filtering in the logs viewer) instead of the genericlive-dmk-logger.

