4.18.0
Minor Changes
-
#20911
4014093Thanks @claudiiafg! - Expose useOpenPrefillAddAddressFlow and mount PrefillAddAddressFlowRoot on Desktop and Mobile so consumers such as Send can open the prefilled Add Address flow without depending on Contacts internals. -
#21025
de982e6Thanks @claudiiafg! - Fix Contacts edit flow so the device connection prompt appears after saving a contact name or address, not before opening the edit form. -
#20874
1d6c394Thanks @jiyuzhuang! - Warn Backup Hub Recovery Key for Nano S, SP and X and open the upgrade landing page -
#20727
53938d6Thanks @dilaouid! - feat(lwdm): add the contact avatar component in the new send flow -
#20847
197acadThanks @LucasWerey! - Add the two app lock packages the User App Authentication tickets build on:@shared/password-verifier(the verifier record and its constant-time comparison) and@features/platform-app-lock(protection state schemas, biometrics status unions and errors).No functional change to Ledger Wallet Mobile:
react-native-keychainnow resolves through the pnpm catalog instead of a direct pin, so the app and@features/platform-app-lockcannot drift apart. It still resolves to 10.0.0. -
#20988
5bd3557Thanks @LucasWerey! - Add the two-step form for setting an app lock password, behindlwmPasswordRevamp. The legacy screens stay on the flag-off path untouched.@features/flow-app-lockgains one shared password field that every password surface will use, the two entry steps as ViewModel and View, and a draft that carries the chosen password from the first step to the second in memory — not through navigation state, which is serialisable and gets persisted.@features/platform-app-lockgains the minimum-length rule, which the migration off short passwords will need as well.Nothing is stored yet: confirming closes the flow and leaves the Settings switch off until the verifier lands.
-
#21165
e903cf0Thanks @sarneijim! - Add missing Touchscreen Upgrade Program tracking for Backup Hub Recovery Key upsell and Lazy Onboarding Banner (LIVE-36494) -
#20993
2a4b4b1Thanks @YazhuEth! - Move Aptos and crypto_org account migrations out of DataModel into app-level accountModel -
#20810
bb045d8Thanks @liviuciulinaru! - Complete the Pay Card login from the Baanx redirect (LIVE-34742)An XState 5 machine now owns the journey: it mints and stores the PKCE attempt, starts the
authorization, opens the OS browser, compares thestateon the redirect, exchanges the code, stores
the session, and readsGET /v1/userinto the RTK Query cache. On mobile the redirect arrives either
from the browser session or from theledgerlive://paytab?code=…&state=…deep link, and the first one
wins.CardLoginshows the login action only when there is something to log in to, and renders nothing
once the user is signed in. -
#20899
5a30d71Thanks @deepyjr! - Allow Contacts address groups to be resolved from a contact ID. -
#20917
f427599Thanks @deepyjr! - Allow numbers in contact names and hide add-contact actions when a Contacts search has no results. -
#21023
dcd5af5Thanks @deepyjr! - Animate transitions between Contacts add-address flow steps. -
#20991
3bea41dThanks @jeportie! - Assert the mobile Buy/Sell handoff instead of the partner's checkout page, matching what
e2e/desktopalready does. The app records theWebPTXPlayerhandoff URL in a
Config.DETOX-guarded store and exposes it over the e2e bridge asgetPtxHandoff, so the
specs verify the provider and query parameters without ever loading Transak's or MoonPay's
site — removing a dependency on a third party's uptime, and the ~70s per test spent waiting
on it. Parsing lives inlibs/live-e2e-shared/src/buySellHandoff.tsand handles the
double-encoded URL that madenew URL()throw, plus provider aliases such as Mercuryo's
mrcr. Also fixes the sell flow asserting a minimum amount the flow never types, since it
taps the 75% button, and makes the "Buy and sell query parameters" test actually assert
query parameters. -
#20934
d8c04ddThanks @deepyjr! - Fix Contacts entry point styling and return navigation to Ledger Wallet addresses. -
#20659
d6623e5Thanks @koda-apps! - Fix post-onboarding hub drawer height to follow its content -
#20966
9470502Thanks @OlivierFreyssinet! - Scaffold Contacts Device Intent Executor contracts and colocate platform definitions -
#20809
e732d3eThanks @liviuciulinaru! - Keep the Pay Card session in OS secure storage (LIVE-34742)cardSessionnow stores the whole session — both tokens and both lifetimes — through
react-native-keychainon native, and through renderer memory on web and desktop. The app already
uses that library for the app password, so the session needs no second secure-storage package.Each key is a keychain
serviceof its own, and the access token sits alone in one of them, so the
base query reads one small value per request.AFTER_FIRST_UNLOCKon iOS andAES_GCM_NO_AUTHon
Android state the same rule: no prompt, and a value a background launch can read, but nothing before
the first unlock after boot.cardSession.getreads all three keys, so it waits its turn behind a write. A login over a live
session replaces the two cold keys before the access token, and a read between the two would report
the previous access token with the new refresh token. -
#20872
d4bb463Thanks @deepyjr! - Fix Contact sharing and align empty address copy -
#20891
97f35b3Thanks @claudiiafg! - Enable editing a saved contact address value on mobile with validation and analytics. -
#21018
903e0daThanks @ishaba! - fix(canton): fix kiln validator name typo in setup copy -
#20992
4fc5ef0Thanks @jeportie! - Recordfetchtraffic in the e2e network log alongside axios, so RTK Query — and therefore
every CAL token lookup — is no longer invisible in CI artifacts, and attach a per-host
summary with peak concurrency so a fan-out is legible without reading several hundred
entries. Query strings, fragments and anyuser:pass@userinfo are stripped before a URL is
recorded, and no bodies or headers are captured. -
#20887
aa39333Thanks @fAnselmi-Ledger! - Add Solana TXC flag -
#20776
14b6b12Thanks @cunhabruno! - Fix the receive verify-address drawer becoming unusable a few seconds after opening on AndroidThe drawer opened correctly, then snapped back off-screen after 3-4 seconds and left an opaque backdrop with nothing tappable. It prevents backdrop dismissal, so the only way out was to force-quit the app mid receive flow.
useAnimatedStyleonly writes its initial value into the Fabric shadow tree, which still held the closed position while the drawer was open. Any commit outside Reanimated's commit hook re-applied it, and nothing wrote the transform again because the open animation had long finished. The resting position is now mirrored in React state and declared after the animated style, so such a commit settles on open. The same applies to the backdrop opacity and to the security modal's scroll view height, which collapsed to zero for the same reason. -
#21036
c98a1b9Thanks @vpenskyi-ledger! - Fix: sell quotes now correctly shown when returning from a provider via "Back to quote". Previously, BuySellUI defaulted to buy mode because the stored flow name was not passed back during navigation. Desktop also removed a hardcoded|| "buy"fallback when saving the flow name to localStorage. -
#21063
c566744Thanks @deepyjr! - Persist Contacts locally and synchronize them through Ledger Sync. -
#21014
e1c2a4bThanks @mcayuelas-ledger! - Fix Pay tab bottom sheets so the filter opens expanded and deposit options stay fully visible -
#21001
c0bdd70Thanks @KVNLS! - Prevent keypair generation at each startup and remove zod valdiation which is coslty at startup -
#21044
b2a2e9eThanks @dilaouid! - feat(send): search by contact name as recipient in the send -
#20782
6c425e0Thanks @shazzzam! - Surface ICP neuron staking entry points on mobile: Stake and Manage Neurons account-header actions,
gated behind the newllmIcpStakingfeature flag. The StakingFlow and NeuronManageFlow navigators
are registered as stubs and their screens land separately. -
#20730
eccbacfThanks @claudiiafg! - Wire Mobile Contacts scenario entry points to the shared analytics contract. -
#20513
e80c178Thanks @vpenskyi-ledger! - Fix infinite loader on Exchange when closing account selection drawer with no accounts -
#20799
585d8d7Thanks @ishaba! - Migrate Tron to the generic coin framework (LIVE-34994).Adds a per-family pending-operation
extrato the generic framework:OptimisticOperationDescriptorgains an optionalextrabag anddescribeOptimisticOperationreceives the transaction it describes, with framework-reserved keys stripped so a family cannot shadow them. -
#21116
6bf8331Thanks @RobinVncnt! - Stack the LNS upsell banner above the hardware carousel instead of squeezing it into a tile slot, share a carousel with action cards only on mobile, and stop the Content Cards QA console from collapsing every Top wallet preset into the "alwayson" category -
#20996
d6c7592Thanks @CremaFR! - Forward thellmWalletApiDeviceIntentSignassignment to the swap live app on mobile asllmWalletApiDeviceIntentSignVariant(thevariantId) andllmWalletApiDeviceIntentSignEnabled(the flag state). Resolve that per manifest throughuseDeviceIntentSignAssignment, which also backs the Wallet API UI hook. Report both attributes on Mixpanel viagetRemoteABTestingAttributes. -
#20669
f7e5005Thanks @YazhuEth! - feat(lwd): display the contact name and avatar in the send headerThe Amount step now shows the matched contact instead of the truncated address, using the shared
ContactAvatar. The Recipient card moves to the same component, so both steps render the same colour and initials. -
#21041
f056cfcThanks @Moustafa-Koterba! - fix(solana): make default validator option for delegation summary -
#20593
d5ea888Thanks @liviuciulinaru! - Start the Baanx login with a PKCE challenge and a CSRF state (LIVE-34738)Pressing Login now mints a login attempt client-side — a 16-byte
stateand a 32-byte PKCE verifier,
withcode_challenge = BASE64URL(SHA256(verifier))— and sends it to
GET /v1/auth/oauth/authorize/initiate, whoseurlanswer is opened in the platform
secure browser as before. The randomness comes from the platform CSPRNG on each side:expo-crypto
on mobile, WebCrypto on desktop.The redirect URI now reaches the secure browser too, since that is what ends the session:
ASWebAuthenticationSessionmatches the callback against it, and so does the Android polyfill. The
opener only opens the URL; the redirect goes back to the app, so the browser result is not read and
closing the browser shows no error — a cancelled login is not a failed one.The initiation carries
mode=api. Without it the endpoint answers302and redirects to the hosted
UI, which afetchfollows into an HTML page;apireturns the same URL as JSON instead. That answer
also carries the JWT of Baanx's programmatic flow, which the hosted UI does not need, so the schema
drops it instead of parking a short-lived credential in the cache.The request goes through
useInitiateAuthorizeMutationfrom@domain/api-card-management, which owns
the Card Auth contract and injects it into the sharedcardApiservice. Every endpoint there is
declarative —query,rawResponseSchema,transformResponse,responseSchema— so the wire shape
is validated at the boundary and mapped in one place.cardApiExtrakeeps only what the base query
needs: the base URL, the Baanx client key for thex-client-keyheader, and the session accessors.The OAuth client id and redirect URI are the app's, so they reach
CardLoginas anoauthConfig
prop: one value goes to the initiation and to the secure browser, and the token exchange will send it
again. Baanx uses the same value for the client key and the OAuthclient_id, and the provider matches
ledgerlive://paytabverbatim on the token exchange. Each platform container opens the returned URL
itself, and no host-provided opener is needed. The Baanx secret key stays server-side and is never
sent from the apps.The challenge is spent on the initiation, and nothing keeps the attempt afterwards. Completing the
callback — holding thestateand the verifier, verifying thestate, exchanging the code for
tokens and storing them inexpo-secure-store— is the remainder of LIVE-34738 and is not part of
this change. -
#21012
5e1aa3eThanks @mcayuelas-ledger! - Fix the Pay tab "Add stablecoin" receive flow on mobile to list the full stablecoin catalog by filtering the Modular Asset Drawer on the stablecoin category, instead of pre-selecting only the two default stablecoins (USDC/USDT) -
#20983
eba4d17Thanks @liviuciulinaru! - Open the Baanx authorize page directly, and drop the CSRF state (LIVE-36301)The login no longer asks the backend where to send the user. It builds the authorize URL itself and
opens the secure browser on it, and the provider hosts the page and owns the redirect. That removes a
network call, a machine state and one way a login could fail.GET {CARD_API_URL}/v1/auth/oauth2/authorize ?client_id=…&response_type=code &scope=openid profile email offline_access &redirect_uri=…&code_challenge=…&code_challenge_method=S256&prompt=consentThe attempt is now a PKCE pair alone. The redirect carries
code, and thestatethat used to travel
with it is gone, because PKCE already ties the code to the verifier on disk: the provider issues the
code against this attempt's challenge, so no other attempt can exchange it. Both token grants move to
/v1/auth/oauth2/token, and neither repeatsredirect_urithere: Baanx's contract for that endpoint
takes onlygrant_type,code, andcode_verifier.oauthConfiggainsapiUrl, which is the host the authorize page lives on.prepareAttemptbuilds the authorize URL, rather than the transition that follows it. The URL builder
throws on a misconfiguredapiUrl, and a throw inside an action stops the machine instead of reaching
a transition. From the actor it lands ononError, which wipes the stored attempt and reports a
failure the user can retry.A live exchange against Baanx's UAT environment answered with no
refresh_token_expires_in, which
PayCardSessionResponseSchemarequired. That field is gone from the schema, the session, and the
stored lifetimes: Baanx's contract carries no lifetime for the refresh token, only for the access
token, so nothing here can track one. -
#20920
0fda04bThanks @tonykhaov! - Rename notifications prompt context hook to useNotificationsPrompt -
#20977
fb4a5bcThanks @deepyjr! - Open the amount step when sending to a saved contact. -
#21056
9e997b2Thanks @sarneijim! - Add missing tracking events for touchscreen upsell placements -
#20901
6e1e0aaThanks @jiyuzhuang! - Stop using generateAnonymousId for Braze identity -
#20816
cad4f63Thanks @liviuciulinaru! - Show the signed-in card holder, and let them log outCardLogoutis a new component, and it is the only one that knows about logging out. It shows the
account id and the verification state, which is everything the user schema holds, beside a logout
action. Logout tells the provider first, while the session can still authorize that call, then clears
the session, the login attempt and the Card cache. A logout on a dead network still logs the user out
on this device.The two directions stay apart.
CardLoginruns the login and shows nothing once somebody is signed
in;CardLogoutshows nothing until somebody is. Each one decides that for itself, so the Pay tab
places both and passesCardLogoutnothing.They agree through one Redux flag,
payCardAuth.isSignedIn, because two login machines would each
hydrate the session and neither would agree with the other. The machine writes the flag on entering
ready,idleanderror.CardLogoutwrites it once a logout is through, and the machine takes a
SESSION_ENDEDevent to put the login back on offer.CARD_OAUTH_REDIRECT_URInow defaults tohttps://go.ledger.com/ledger/card-baanx. The provider
whitelists an HTTPS address, and it must match on the token exchange too.oauthConfiggainsdeepLink, which is what closes the secure browser.
ASWebAuthenticationSessiontakes the scheme of this value as itscallbackURLScheme, and the
Android polyfill matches the incoming link against the whole of it.One value cannot serve both jobs. The provider accepts an
httpsredirect URI alone, and only a
custom scheme ends a browser session. With no value that matches, the login still completes through
the app's own deep link, but nothing closes the browser and it stays on top of the Pay tab.Mobile takes the value from
PAY_TAB_DEEP_LINK, a new constant that sits beside the linking config
and shares the path that config maps onto the Pay tab, so the two cannot drift. It is not an
environment variable: the scheme is declared inAndroidManifest.xmlandInfo.plist, so it cannot
change without a release. Desktop passes nodeepLink, because the user's own browser opens the page
and reports nothing back (LIVE-34740). -
#20893
33d89c0Thanks @deepyjr! - Hide balances and preserve market-cap order in the Contacts currency selector. -
#20865
5b45a76Thanks @OlivierFreyssinet! - Update Device Intent Executor copy to match Figma (LIVE-34689, LIVE-34690) -
#20921
cb2ccaeThanks @tonykhaov! - Remove leftover notifications opt-in backward-compat and unused prompt hooks -
#20862
c65db86Thanks @deepyjr! - Show unavailable Contacts asset and network options as disabled in the asset drawer. -
#20880
79bd143Thanks @YazhuEth! - Hide accounts that cannot send from the send pickers, and accounts that cannot receive from the receive pickers (HyperCore) -
#20892
5b7c2c7Thanks @jiyuzhuang! - Add a Profile upsell banner on My Wallet for Nano S, SP and X -
#20913
cbeeb18Thanks @lpaquet-ledger! - select the network then the account on asset page -
#21007
8f6e66fThanks @dilaouid! - feat(send): explain why the address book is unavailable for some families -
#20555
9e0c703Thanks @gre-ledger! - Isolate wallet sync module failures instead of failing the whole sync: the aggregator validates each module slice on its own and quarantines a broken one, preserving its raw distant value, while every other module keeps syncing. A quarantine is reported as the module key plus the failure kind only, never the offending data.A distant document is now typed as what it is — a
DistantDocument(Record<string, unknown>) whose slices are trusted per module — instead of the aggregate of the module schemas that nothing validates.parseDistantStateis removed: it cast an unvalidated document to a validated type, and the aggregator already narrows the document at runtime.CloudSyncSDKdrops itsschemaconstructor option, which was never applied to anything and only served to infer that same misleading type; the class is now parameterised by its document type directly.recentAddressesdrops its corrupted-address repair path.CorruptedNestedAddressDistantSchemaand the lenientz.array(z.unknown())wrapper that swallowed every bad entry are removed together: a corrupted distant entry now quarantines the module, so the slice is preserved verbatim and reported, instead of being silently rewritten — or, had only the transform been removed, silently dropped. The local-cache repair inschema.ts/store.tsis untouched; it migrates data on disk, which quarantine does not cover. -
#21046
e11eebeThanks @dilaouid! - feat(send): add network-filtered contact selection to the Send recipient step on desktop and mobile -
#20505
f4ed19fThanks @deepyjr! - Connect Contacts mutations to Ledger Sync availability and activation on Desktop and Mobile. -
#20854
f32bf30Thanks @ishaba! - fix(coin-sui): map device 0x8 on address-balance send to clear error -
#20650
fbc8036Thanks @lysyi3m! - Add a gRPC-web transport to the Sui coin modulecoin-suigains a third transport onsui.rpc.v2over gRPC-web, covering every capability from
checkpoints to device signing.- New tri-state
suiTransportfeature flag (json|grpc|graphql), defaulting tojson,
replaces the booleansuiGraphqlTransport, which is removed. An unrecognised value resolves to
json. - New env vars
API_SUI_GRPC_PROXYandAPI_SUI_TESTNET_GRPC_PROXY.@mysten/sui2.9.0 → 2.23.1. - Operation
blockHashcarries the real checkpoint digest on gRPC. - Fix: account sync read a single page of history on GraphQL and gRPC, capping an account at its
newest 50 operations for good — sync resumes from the newest stored operation and never re-reads
what it skipped. Both arms now walk up toTRANSACTIONS_LIMIT(300), the depth JSON-RPC reached. - Fix: a resumed sync on GraphQL and gRPC read backwards from the tip, so when more than
TRANSACTIONS_LIMITtransactions arrived between two syncs, the ones in the middle were skipped
and the next sync resumed above them — a permanent hole. Both arms now walk forward from the
cursor, as the JSON-RPC arm already did, leaving anything unread newer than the next resume point. - Fix: an account holding no operations resumed from its stored
syncHash, so a cleared cache came
back with only the transactions that arrived after it. Such an account now re-reads its history,
which is also how one truncated by the bug above recovers. Token operations count as history: they
live in the subaccounts, so a token-only account is no longer treated as empty. - Fix: on gRPC, any failure to resolve a cursor's digest — including a transient network error — was
read as "unknown digest", which falls back to an unbounded page from the tip and made paging report
the end of history. Only aNOT_FOUNDdoes that now; everything else propagates and is retried. - Fix: reading history skipped transactions that shared a checkpoint with the resume point, in
account sync (getOperations) as well as paging (getListOperations). - Fix: paging inferred "more to come" from how many operations survived client-side filtering, which
ended the walk early. GraphQL now readspageInfo, gRPC the stream'sQueryEndreason. A page
whose transactions were all filtered out now resumes from the page's own boundary instead of
reporting the end of history. - Fix: a gRPC history record with no timestamp became an operation dated 1970 that could not serve as
a pagination cursor. Those records are now dropped, as the GraphQL arm already did. - Fix: ascending paging on GraphQL returned the newest slice of the range instead of walking forward
from the oldest. - Fix: the Sui fetcher dropped
X-Ledger-Client-Versionand all gRPC-web headers when passed a
Headersinstance. - Fix: GraphQL resolved the latest checkpoint in two queries, so the second could answer null. It is
now one query. - A checkpoint missing its
digestortimestampnow raises on both GraphQL and gRPC, instead of
reporting a block with an empty hash and a 1970 timestamp. - Known limitation:
getListOperationsresumes from a synthesisedtimestamp:digestcursor, so
within one checkpoint a sibling whose digest sorts earlier can be skipped, and a checkpoint holding
more than one page is stepped over rather than resumed inside. Account sync is unaffected: it
resumes from the server's own watermark cursor.
-
#20924
83a2392Thanks @lysyi3m! - Reject a SUI unstake above the staking position's principal, and make the remainder error actionableA partial unstake calls
staking_pool::split, which asserts the withdrawn amount is at most the
principal. Nothing validated that locally, so an amount far above the staked balance passed
validation and only aborted on chain. It now fails with a dedicated error. The remainder error also
names the way out — withdraw in full — because a position under 2 SUI cannot be split at all. -
#20110
bdcf051Thanks @philipptpunkt! - Fix Swap: pressing "<" from the History screen after a multi-step swap now returns to the initial input form. Opening a Swap sub-screen no longer replaces the Main navigator when the Swap tab is the focused route (which unmounted the tab navigator and left the back button unable to navigate), and the webview reset is re-applied when the Swap tab regains focus if the live app is still on the page it was asked to leave. -
#20955
39a676dThanks @mdomanski-ext-ledger! - fix: move hedera envs to config/constants -
#20860
60f343cThanks @YazhuEth! - chore: bump the Lumen packages to the latest pinned setAddressInputnow accepts aReactNodeprefix, andBaseInputis no longer exported by Lumen. Both apps only consume Lumen internally, so their own public API is unchanged. The Lumen packages pin each other on exact versions, so they move together. -
#21038
2247cebThanks @mcayuelas-ledger! - Connect the Modular Asset Drawer to the Pay tab Request action, filtered to stablecoins with account selection
Patch Changes
- Updated dependencies [
26d8617,a86fe14,de982e6,e6ad2f6,6218989,1d6c394,5bd3557,98f4802,bb045d8,5a30d71,6560883,f427599,e998478,5a630b2,d8c04dd,9470502,e732d3e,d4bb463,ce4ae4a,6084fcd,b6bb5b5,f64ceec,fec3bc8,9fa2ab5,f0f10ca,55b7e6d,aa39333,5125ac7,46a0d30,c566744,e1c2a4b,8003387,c0bdd70,6c425e0,73f303f,1ba0ceb,01c088d,91dbf02,585d8d7,d6c7592,d5ea888,dd64855,ff7e5e0,33007b1,8c438f9,fabb26b,eba4d17,cad4f63,306a681,9fa2ab5,582f422,9e0c703,8161bac,f4ed19f,a826856,b3095f5,fbc8036,d6f0c7d,39a676d,3908965,41311d6,79ee882,4c333ad]:- @ledgerhq/coin-evm@5.1.0
- @features/flow-contacts-add-address@0.2.0
- @features/flow-contacts@0.8.0
- @features/flow-pay-card-request@0.2.0
- @features/flow-large-screen-upsell@2.0.0
- @features/flow-app-lock@0.2.0
- @ledgerhq/coin-casper@3.1.0
- @features/flow-pay-card-auth@0.4.0
- @domain/entity-contact@0.8.0
- @features/flow-contacts-list@0.4.0
- @features/platform-contacts@0.4.0
- @features/platform-card@0.3.0
- @devtools/bindings@0.5.0
- @devtools/shell@0.9.0
- @devtools/transport-panel@0.6.0
- @devtools/wire@0.5.0
- @shared/api-services@0.5.0
- @features/flow-contacts-add-contact@0.4.0
- @features/platform-device-intent@5.1.0
- @features/flow-contacts-edit-contact@0.2.0
- @shared/feature-flags@0.20.0
- @ledgerhq/types-live@6.121.0
- @ledgerhq/live-wallet@1.1.0
- @features/flow-pay-card-balance@0.3.0
- @features/flow-pay-card-deposit@0.3.0
- @ledgerhq/ledger-key-ring-protocol@0.21.0
- @ledgerhq/ledger-wallet-framework@3.1.0
- @shared/env@0.4.0
- @features/platform-aggregated-assets@0.5.0
- @shared/cloud-sync@0.2.0
- @domain/entity-recent-addresses@0.2.0
- @ledgerhq/coin-stacks@0.29.0
- @features/flow-contacts-introduction@0.3.0
- @domain/api-aggregated-assets@0.4.1
- @domain/api-altcoins-sentiment@0.3.3
- @domain/api-currency-fiat@0.4.2
- @domain/api-currency-token@0.5.1
- @domain/api-market-sentiment@0.3.3
- @domain/api-push-devices@0.2.3
- @features/platform-currencies@0.6.2
- @features/platform-feature-flags@0.6.7
- @ledgerhq/coin-bitcoin@0.51.2
- @ledgerhq/coin-canton@1.0.1
- @ledgerhq/coin-concordium@1.0.1
- @ledgerhq/coin-cosmos@1.0.1
- @ledgerhq/coin-filecoin@2.0.1
- @ledgerhq/coin-multiversx@1.0.1
- @ledgerhq/device-core@0.11.13
- @ledgerhq/domain-service@1.8.16
- @ledgerhq/live-countervalues@0.24.4
- @ledgerhq/live-countervalues-react@0.16.8
- @ledgerhq/wallet-analytics@0.3.5
- @ledgerhq/wallet-pnl@0.7.8
- @features/platform-env@0.2.2
- @ledgerhq/live-dmk-mobile@0.29.5
- @ledgerhq/live-dmk-speculos@0.10.6
- @domain/entity-account-name@0.2.1
- @features/platform-wallet-sync@0.1.2
- @ledgerhq/live-currency-format@0.14.2
- @features/flow-analytics-consent@0.2.3