4.15.0
Minor Changes
-
#20280
9fcbe39Thanks @gre-ledger! - Stop depending on@ledgerhq/errors(LIVE-32915).No workspace package declares it anymore, and none may again:
enforce-boundariesnow fails CI on any manifest that does. The classes it held live in the package that owns them, with@ledgerhq/ledger-wallet-framework/errorsas the shared home below the coin layer.The package itself stays in the repo so it keeps being published for external consumers, and is bridged to the external coin packages that still peer-depend on it via
pnpm.packageExtensionsusingworkspace:*(which reuses the single in-repo copy, so the dependency graph keeps exactly the physical copies it had before). LedgerHQ/coin-modules#752 removes that peerDependency upstream; once it is released the bridge can be dropped, but the package still needs publishing. -
#20221
1689e58Thanks @cted-ledger! - Serve Zcash accounts with a standalone@ledgerhq/coin-zcashcoin-module (LIVE-34556).The module owns all four transfer flows — t→t, t→z, z→t, z→z — and crafts, signs and broadcasts each one as a PCZT through the native
@ledgerhq/zcash-utilsengine, with no legacy PSBT path: it owns the transparent UTXO path itself via@ledgerhq/wallet-btcinstead of delegating to the Bitcoin bridge. Shielded balances, notes and operations come from the sync engine, so a shielded account reports the balance and history the chain-adapter could only report for its transparent side.Which module serves a Zcash account is decided by the existing
zcashShieldedfeature flag, mirrored intolive-common(src/bridge/zcashRouting.ts) because a coin-module cannot read React feature flags. OFF (the default) keeps@ledgerhq/coin-bitcoin's Zcash chain-adapter and its legacy transparent path, so nothing changes for users until the flag is turned on; the two implementations are kept accounting-equivalent by differential tests that run both bridges over the same fixtures.Desktop hosts the engine in a dedicated utility process, reached over a
zcash:-prefixed IPC contract owned by the module.Two flows do not complete on a NU6.3 chain, where newly shielded value goes to the Ironwood pool: z→z has no builder, since it would need Orchard spends alongside an Ironwood output; and a flow that does build a V6 PCZT cannot be finalized until
@ledgerhq/zcash-utilsexposes a V6 finalizer. -
#20061
40ba85bThanks @Sebastien-Dav1d! - Scrub wallet addresses and account IDs from Datadog RUM events -
#20341
c016a95Thanks @ysitbon! - Split backend access from use case in the RTK Query layer@shared/api-servicesnow holds one endpoint-lesscreateApiper backend (CAL, CoinMarketCap,
Countervalues, Push Devices), owning its base query,extraArgumentcontract and reducer path.
domain/api/*packages add their endpoints withinjectEndpointsand their own cache tags with
enhanceEndpoints, so one reducer, middleware and cache now serve every use case on a backend — the two
CoinMarketCap packages previously had one each. Apps register the service apis.extraArgumentbuilder names are unchanged, so only import paths move. Reducer paths are renamed after
their backend (calApi,coinMarketCapApi,countervaluesApi); no persisted data and no endpoint
behaviour is affected. -
#20318
e0d421bThanks @deepyjr! - Block sanctioned addresses in the Contacts add-address flow -
#20263
6976ff3Thanks @tonykhaov! - Wire desktop analytics consent renewal to shared policyVersion major/minor decision flow -
#19989
78d84d4Thanks @deepyjr! - Prevent Asset Detail history from stacking after Buy and Sell live app navigation -
#20388
c0154aaThanks @RobinVncnt! - Fix mismatched Sync Onboarding header background against the page canvas -
#20240
15e4608Thanks @deepyjr! - Forward Modular Asset Drawer network filters to DADA asset requests. -
#20197
507e450Thanks @ysitbon! - Drop boot fiat fetch andInitialQueriesContext:supportedCounterValuesis now a derived selector backed by thesupportedFiatsslice. Mobile gains a read-time OFAC guard oncounterValueCurrencyLocalSelector; desktop removes its boot-timegetSupportedFiats.initiatedispatch. Both apps now lazy-load the CVS query from the two picker screens. -
#20078
baea85eThanks @jiyuzhuang! - Fix Generic Awareness Modal cascade on mobile and add Braze content card logging on mobile and desktop -
#20288
5d139b9Thanks @Sebastien-Dav1d! - Fix typecheck errors in desktop test files -
#20222
c6f620cThanks @deepyjr! - Model contact address labels with asset defaults and per-contact uniqueness -
#20243
63aa4b6Thanks @LucasWerey! - Remove legacy translation keys orphaned by the Wallet 4.0 Q1 cleanup (sidebar/topbar rewrite, legacy dashboard & empty states, Help modal, receive step-options and the sync activity indicator). -
#20317
70c33a8Thanks @deepyjr! - Render the Desktop Contacts address label step and move shared add-address flow content into the Contacts Flow feature. -
#19634
4015adeThanks @thesan! - Connect @ledgerhq/ledger-auth to the Ledger Wallet apps Redux store -
#20181
34a8455Thanks @YazhuEth! - Add a QR code scanner to the new send flow recipient field: the QR icon shows while the field is empty and is replaced by the clear button once the user types -
#20496
aa367b0Thanks @desirendr! - LWD 4.15.0 release notes -
#20252
e709463Thanks @claudiiafg! - Render Desktop Me contact detail by default with Me display-name formatting and external address CTA. -
#20189
4bbd5a4Thanks @YazhuEth! - Show the network fee in the currency users care about in the new send flow. When the fee is editable the row follows the amount input's fiat/crypto toggle; when it is not, the row shows the fiat value alongside the native amount, since it is the only place that fee is visible. Fee presets now sub-label both amounts, except coins priced by fee rate (Bitcoin, Kaspa) which keep their sat/vB legend. -
#20232
d467088Thanks @dilaouid! - feat(lwdm): a/b testing show recent banner -
#20267
956d4a1Thanks @Sebastien-Dav1d! - Add debug WebSocket transport to DevTools relay -
#20339
6a531c5Thanks @qperrot! - Remove Scroll Sepolia testnet support as it is no longer maintained -
#20224
f7e013aThanks @YazhuEth! - Add an info disclaimer next to the recipient address in the new send flow, reminding users to verify the full address on their Ledger device -
#20264
725b0ddThanks @mdomanski-ext-ledger! - chore(aleo): view key warning copy update -
#20261
ba6e9c1Thanks @ysitbon! - Import currency accessors from the domain layer instead of the@ledgerhq/live-common/currenciesbarrel.Crypto accessors (
getCryptoCurrencyById,findCryptoCurrencyById,findCryptoCurrencyByKeyword,findCryptoCurrencyByTicker,listCryptoCurrencies,findCryptoCurrency,findCryptoCurrencyByScheme,hasCryptoCurrencyId) now come from@domain/entity-currency-crypto, and fiat accessors (getFiatCurrencyByTicker,findFiatCurrencyByTicker,listFiatCurrencies,hasFiatCurrencyTicker) from@domain/entity-currency-fiat. The re-exports that forwarded them through@ledgerhq/live-common/currenciesare removed; the barrel keeps its formatting, colour, helper, marketcap, support and URI-scheme exports. Behaviour is unchanged — the barrel already delegated to these same domain functions. -
#20265
5f81208Thanks @tonykhaov! - Remove analytics consentValidityDays and the unused live-common consent expiry helpers -
#20230
36c0e51Thanks @deepyjr! - Add the Desktop Contacts address entry flow with embedded currency selection. -
#20321
9783675Thanks @deepyjr! - Block duplicate Contacts names before creation -
#20217
9ebc505Thanks @deepyjr! - Add a reusable dialog flow and an embeddable Modular Dialog presentation. -
#20350
51bc3daThanks @mcayuelas-ledger! - Fix hidden assets not appearing in Settings > Accounts. Native coins hidden from the asset detail page are now resolved from the crypto registry and listed alongside hidden tokens, and a single failing token lookup no longer empties the whole list.
Patch Changes
- Updated dependencies [
9fcbe39,1689e58,facb60a,674ae62,c016a95,4d3ae1b,2fa6e1f,12794fa,f7997c9,56cfe0b,e0d421b,248d24e,532d6c4,9051d74,36a08f1,15e4608,a464f7d,d35298f,4e4bf02,825f50f,f60f9cb,72930e9,c6f620c,70c33a8,871f021,4015ade,f0e8ea9,140575c,e709463,b90214c,4bbd5a4,a93a5ed,d467088,42524ad,e50980f,9b07695,6a531c5,2958ef7,e7a22a6,ba6e9c1,5f81208,94f7c85,e44d972,53c3431,9d56877,635fa12,36c0e51,9783675,b5df122,51bc3da]:- @ledgerhq/coin-bitcoin@0.50.0
- @ledgerhq/coin-canton@0.32.0
- @ledgerhq/coin-cardano@0.33.0
- @ledgerhq/coin-casper@2.18.0
- @ledgerhq/coin-concordium@0.19.0
- @ledgerhq/coin-cosmos@0.42.0
- @ledgerhq/coin-evm@4.9.0
- @ledgerhq/coin-filecoin@1.31.0
- @ledgerhq/live-common@37.1.0
- @ledgerhq/coin-zcash@0.2.0
- @features/flow-contacts@0.5.0
- @shared/api-services@0.2.0
- @domain/api-altcoins-sentiment@0.3.0
- @domain/api-market-sentiment@0.3.0
- @domain/api-currency-token@0.3.0
- @domain/api-currency-fiat@0.3.0
- @domain/api-push-devices@0.2.0
- @features/platform-currencies@0.5.0
- @domain/entity-contact@0.5.0
- @shared/feature-flags@0.17.0
- @domain/entity-analytics-consent@0.2.0
- @ledgerhq/types-live@6.118.0
- @shared/auth@0.3.0
- @features/flow-analytics-consent@0.2.0
- @devtools/transport-panel@0.3.0
- @devtools/shell@0.7.0
- @devtools/wire@0.3.0
- @shared/env@0.2.0
- @ledgerhq/ledger-key-ring-protocol@0.18.0
- @domain/entity-currency-crypto@0.9.0
- @ledgerhq/asset-detail@0.10.0
- @ledgerhq/ledger-wallet-framework@2.7.0
- @ledgerhq/live-dmk-desktop@0.20.5
- @devtools/bindings@0.2.3
- @features/flow-large-screen-upsell@0.4.1
- @features/platform-feature-flags@0.6.4
- @ledgerhq/asset-aggregation@0.12.2
- @ledgerhq/domain-service@1.8.13
- @ledgerhq/live-countervalues@0.24.1
- @ledgerhq/live-countervalues-react@0.16.5
- @ledgerhq/live-wallet@0.30.2
- @ledgerhq/wallet-analytics@0.3.2
- @ledgerhq/wallet-pnl@0.7.5
- @features/platform-env@0.1.2
- @ledgerhq/live-dmk-speculos@0.10.4
- @domain/entity-currency@0.3.1
- @ledgerhq/live-currency-format@0.14.1
- @ledgerhq/wallet-btc@0.3.0