4.27.0
Minor Changes
-
#23982
5be64beThanks @LucasWerey! - Account Detail on LWD shows the account notices (currency migration, deprecation and custom banners, Robinhood disclaimer, Perps) and the family blocks (pending transfer proposals, sub header, balance summary footer, body header) in the custom place. The notices package now maps the remote currency config into notice signals (toCurrencyStatusSignal,toCustomBannerSignal). -
#23894
4be13d5Thanks @thesan! -@shared/authreplacesauthApiExtrawithcreateAuthMiddleware: the auth provider is held by a store middleware instead of the thunkextraArgument, andgetAuthProvider(dispatch)reads it. -
#24119
6a2b43cThanks @claudiiafg! - Move the desktop assets table into @features/platform-assets-table, shared by Portfolio, Crypto addresses and Account Detail -
#24166
7cb4286Thanks @LucasWerey! - Account Detail shows the address type of an account (Native segwit, Taproot...) as a tag in the account hero, the Asset Detail addresses and the Crypto Addresses table -
#24084
b279fa5Thanks @LucasWerey! - Account Detail shows the Solana stakes with the shared Lumen delegation component -
#24083
00e6b35Thanks @LucasWerey! - Account Detail shows the Tron votes with the shared Lumen delegation component -
#24082
a9aac86Thanks @LucasWerey! - Add the shared delegation section of Account Detail (Lumen table on LWD, list with a bottom sheet on LWM) and the family slot that lets a family use it -
#24106
6a57877Thanks @LucasWerey! - Account Detail offers a "+ Add" action in the Assets section for Algorand, Stellar and Hedera (Algorand and Stellar on mobile) -
#24108
6c4c4bfThanks @LucasWerey! - Account Detail shows the Solana and Tron balances as Lumen cards with the shared balance summary component -
#24122
7cd4567Thanks @LucasWerey! - Account Detail notice banners show their full description instead of cutting it after 5 lines. -
#24172
5d8a2c6Thanks @LucasWerey! - Account Detail assets are clickable and open the Asset Detail page of the asset -
#23993
27dff22Thanks @VicAlbr! - Add a test id to the coin control strategy select -
#23994
01b4e55Thanks @VicAlbr! - Add a test id to the onboarding tutorial Back button -
#24173
f0af054Thanks @ysitbon! - Plug the account data recorder in from the DevTools screen instead of at boot, so the store and the sources no longer import@devtools/bindings -
#24040
d185364Thanks @ysitbon! -AccountSettingsmoves to the web platform entry@features/flow-account-detail-settings/webandAccountSettingsSheetto the native platform entry@features/flow-account-detail-settings/native;AccountSettingsDialogbecomes internal. The universal entry is one unconditionedsrc/index.tsholding the menu, advanced logs and remove contents andbuildAdvancedLogs, and imports carry no platform suffix. -
#23953
cd14395Thanks @mateuszpalosz-ext! - add the balance type step to the new send flow on mobile and reuse the shared balance type copy for Aleo -
#24036
ebe7149Thanks @ysitbon! - List the desktop api services once withdefineApiServices, which builds their reducers, middlewares and thunkextraArgument -
#24024
9907890Thanks @qperrot! - Remove Blast and Blast Sepolia, whose chain shut down -
#23862
e6d5e3cThanks @amaslakov! - List every active Tezos baker instead of a hardcoded whitelist, preselect Ledger by Kiln only when it is listed, and only list bakers that accept staking in the stake flow -
#24147
a49773fThanks @OlivierFreyssinet! - Bump@ledgerhq/dmk-ledger-walletto 0.8.0 and@ledgerhq/device-signer-kit-solanato 1.15.0, and keep the backup and show the out-of-memory screen when the OS update restore ends with an out-of-memory status -
#23972
7aeab58Thanks @mcayuelas-ledger! - Always show desktop aggregated assets, drop the lwdWallet40 param, and align desktop e2e -
#24068
68196b4Thanks @mcayuelas-ledger! - Show desktop asset discoverability without a feature flag -
#24031
ce12e26Thanks @ysitbon! -ContactsAddContactContentof@features/flow-contacts-add-contacthas one props contract on both platforms:ContactsAddContactContentPropsgains the native-onlyautoFocus, andContactsAddContactContentNativePropsis gone. The mobile content rendersContactNameDisclaimer.ContactsAddContactDialogmoves to the./webentry, andContactsAddContactFooterwithContactsAddContactFooterPropsto the./nativeentry. The.entry has noreact-nativecondition. -
#24029
4bb6da0Thanks @ysitbon! -@features/flow-contacts-listexportsContactsListViewfrom./weband./native, each with its own props, andContactsAddContactHeaderButtonfrom./native. The.entry has noreact-nativecondition and exports the list logic plus the universalContactsCompactList, which now callsonSelectContactand takes an optionaltestID.ContactsCompactRowandContactsSearchNoResultsare no longer exported, and@features/flow-contactsstops re-exportingContactsAddContactHeaderButton. -
#24067
df941acThanks @dilaouid! - testnet accounts have no countervalue, so the amount step only offers the crypto input (no fiat toggle or fiat equivalent) and amounts are always validated -
#24100
f95b426Thanks @mcayuelas-ledger! - Always show the desktop asset section and drop the lwdWallet40 assetSection param -
#24169
a9d19d0Thanks @gre-ledger! - Mount the account balance histories slice, add a Balance history page to the DevTools Accounts section and serve the balanceHistory kind for mock accounts -
#24071
566902eThanks @gre-ledger! - Mount the account operations slice and add an Operations page to the DevTools Accounts section -
#23787
b79c360Thanks @gre-ledger! - Add amock-accountsdevtool:mock:2:…descriptors served by a lazy-loaded MockSource, with their balances and paginated operations -
#23587
afbe91fThanks @gre-ledger! - Open the DevTools panel in its own window from a top-bar button in developer mode -
#24113
198fa76Thanks @dilaouid! - Add the coin module account data source, reading the balance of an account from its coin module, ranked before the full sync source -
#24007
bda0e29Thanks @Justkant! - Log manifest domain check violations, rejectedgoToURLfallbacks and rejectedloadURLcalls to the exported logs, once per distinct violation. AddresolveInitialURL, which returns the initial URL along with thegoToURLit rejected -
#23351
80325b3Thanks @vpenskyi-ledger! - feat(perps): add the custom.perps.migrateAccount wallet API method, which hands a legacy Perps user the Hyperliquid account at their legacy address, adding it through the standard add account flow when the wallet has none -
#24013
8aad423Thanks @YazhuEth! - Add the ledgerlive://predictions deep link, which opens the Predictions live app with the link's query params. On mobile, https universal links (ledger.go.link) now go through the same deep link handling as ledgerlive:// links -
#24179
52755c2Thanks @mateuszpalosz-ext! - updated styles for Aleo new send flow -
#23772
5a6a32dThanks @mcayuelas-ledger! - feat(devtools): add the account-portfolio devtool to call the Portfolio service, with a balance history chart and paged history -
#23806
b947ef4Thanks @live-github-bot! - Update coin modules dependencies (coin-module-framework 11, coin-evm, coin-hypercore, coin-stellar, coin-tezos, coin-xrp) -
#22966
77a85a3Thanks @qperrot! - Remove deprecated Moonbeam and Moonriver blockchains and thecurrencyMoonriverfeature flag -
#23768
c5443a4Thanks @YazhuEth! - Move the Send flow's animated dialog height into @shared/ui-animated-height so other dialogs can reuse it -
#24258
16ef2faThanks @henri-ly! - fix(coin-solana): keep transactions within the 4 instructions the Nano S app parses, by leaving out the compute-unit limit when it and the price don't both fit (a stake creation with its delegation, a token transfer creating the recipient account with a memo), instead of requiring blind signing -
#23736
797b1abThanks @qperrot! - fix(coin-solana): read endpoints and tuning values from the coin configrpcUrlsis now a required field ofSolanaCoinConfigandendpointByCurrencyIdresolves the
endpoint of a currency fromrpcUrls[<currencyId>]alone: theAPI_SOLANA_PROXYenv and the
web3.jsclusterApiUrlfallbacks are removed, and a missing entry throws. live-common registers
config_currency_solana_devnetandconfig_currency_solana_testnetnext to
config_currency_solana, each carrying its own endpoint, and the legacy coin config resolves the
configuration of the requested currency instead of always reading the mainnet one.The legacy validators list is read from
validatorsUrlof the requested currency, the field the
AlpacagetValidatorsalready reads:config_currency_solanadefaults to the production Earn API
list (/v0/network/solana/validator-details) andconfig_currency_solana_testnetto the
validators-solanatestnet list.solana_devnetstill derives its validators from the RPC vote
accounts. A missingvalidatorsUrlon mainnet or testnet throws.The validator APY is read from
staking.validatorsSummaryUrl(default inconfig_currency_solana:
the production Figment summary on the Earn API) in both the legacy and the Alpaca paths, at call
time instead of once at module load. A currency without it lists its validators without APY, so
solana_testnetno longer fetches the mainnet APY through the Alpaca API.The tuning values are read from the coin config at call time, each falling back to one exported
module default inconstants:broadcast.timeoutMs(DEFAULT_BROADCAST_TIMEOUT_MS, 100000),
node.retries/node.retryDelayMs(DEFAULT_NODE_RETRIES3,DEFAULT_NODE_RETRY_DELAY_MS500),
node.maxTxQuery/node.batchSize(100 / 100),fees.computeUnitMargin(0.1),
fees.defaultTxFee(5000, also replacing the?? 5000copies incraftTransaction),
fees.blockhashRetries/fees.blockhashRetryDelayMs(5 / 5000),staking.ledgerValidators
(DEFAULT_LEDGER_VALIDATORS) andvalidators.cacheTtlMs(DEFAULT_VALIDATORS_CACHE_TTL_MS,
900000). The ky HTTP retry on status codes stays a constant.The module keeps no configuration state:
config.tsholds types only and every reader resolves
config_currency_<id>through aSolanaContextat call time. live-common builds it with
buildContextfor the message signer and the validators hook.Breaking: the
API_SOLANA_PROXY,SOLANA_VALIDATORS_APP_BASE_URL,
SOLANA_TESTNET_VALIDATORS_APP_BASE_URL,SOLANA_VALIDATORS_SUMMARY_BASE_URLand
SOLANA_TX_CONFIRMATION_TIMEOUTenv definitions are removed; overriderpcUrls.<id>,validatorsUrlandstaking.validatorsSummaryUrlin
config_currency_<id>instead. The legacygetValidatorsofnetwork/validator-appnow takes
(validatorsUrl, validatorsSummaryUrl?)instead of a cluster, and the AlpacagetValidatorstakes
the summary URL as its second argument.craftTransaction,estimateFees,estimateTxFee,
unstakeReserve,computeUnstakeReserve,getBalanceandlistOperationstake the
SolanaCoinConfigas their second argument,buildVersionedTransactionas its fourth, and the
network/chain/web3instruction builders take the resolvedcomputeUnitMargin.
getChainAPIacceptsconfirmationTimeoutMs,retriesandretryDelayMs; build its config with
chainConfigFrom(config, currencyId).LEDGER_VALIDATOR_DEFAULT,LEDGER_VALIDATOR_LISTand
LEDGER_VALIDATORS_VOTE_ACCOUNTSare removed: useledgerValidatorsOf(config)/
defaultLedgerValidatorOf(config);LEDGER_VALIDATOR_BY_FIGMENT/_BY_BITWISEmoved to
constants.ledgerFirstValidatorstakes the Ledger list as its second argument. ThecoinConfigdefault export ofconfig(setCoinConfig/getCoinConfig) is removed:
getSolanaValidators(context, currencyId)andfetchValidators(config, currencyId)take the
config explicitly, andsignMessage(signerContext, contextOf)resolves the account's currency
context when signing. -
#24022
8b9464aThanks @mcayuelas-ledger! - Add a ledgerlive://contacts deeplink that opens Contacts when lwdContacts is enabled -
#24080
08aafc3Thanks @gre-ledger! - Upgrade rspack to 2.3.0, rsbuild to 2.3.0 and rslib to 1.0.5
Patch Changes
- Updated dependencies [
5be64be,eebea9e,4be13d5,edb6f42,6a2b43c,c1c388f,304b8b2,a9aac86,08324bd,3775d3f,d185364,cd14395,0c62d35,9907890,e6d5e3c,8854aff,a49773f,7aeab58,68196b4,9c2d544,ce12e26,0c9ce30,55dc039,d7778b9,1dee328,4bb6da0,df941ac,f95b426,a9d19d0,566902e,97be95e,b79c360,fdb0bdc,198fa76,2b8aa58,bda0e29,c8c49b0,80325b3,8aad423,4397830,e275739,33fc619,5a6a32d,b947ef4,54c706e,e6382fe,604337a,77a85a3,c5443a4,496a4ef,797b1ab,dbe42b3,c50f3fa]:- @features/flow-account-detail-notices@0.3.0
- @domain/entity-account-operation@0.1.0
- @shared/auth@0.8.0
- @ledgerhq/live-common@38.6.0
- @features/platform-assets-table@0.2.0
- @features/flow-account-detail-hero@0.3.0
- @domain/entity-account-data@0.4.0
- @domain/api-account-data@0.4.0
- @domain/entity-account-balance-history@0.1.0
- @devtools/bindings@0.14.0
- @features/flow-account-detail-delegations@0.2.0
- @features/flow-account-detail@0.3.0
- @features/flow-account-detail-settings@0.3.0
- @shared/api-services@0.12.0
- @domain/entity-currency-crypto@0.18.0
- @features/platform-currencies@0.12.0
- @shared/feature-flags@0.29.0
- @ledgerhq/types-live@6.130.0
- @ledgerhq/ledger-wallet-framework@3.10.0
- @ledgerhq/live-dmk-shared@0.38.0
- @features/platform-feature-flags@0.11.0
- @features/flow-contacts-add-address@0.9.0
- @features/flow-contacts-add-contact@0.10.0
- @features/flow-pay-contact@0.8.0
- @features/flow-contacts-delete-address@0.4.0
- @features/flow-contacts-delete-contact@0.5.0
- @features/flow-contacts-edit-address@0.7.0
- @features/flow-contacts-edit-contact@0.9.0
- @features/flow-contacts-list@0.12.0
- @features/flow-contacts@0.17.0
- @features/flow-portfolio-services-entry-points@0.2.0
- @devtools/shell@0.13.0
- @domain/entity-account@0.2.0
- @features/platform-account-source-coin-module@0.1.0
- @features/flow-pay-card-assets@0.6.0
- @features/flow-pay-card-details@0.10.0
- @features/flow-pay-card@0.8.0
- @features/platform-predictions@0.3.0
- @features/platform-device-onboarding@0.4.0
- @features/platform-aggregated-assets@0.6.0
- @shared/ui-animated-height@0.2.0
- @shared/env@0.12.0
- @ledgerhq/asset-detail@0.12.3
- @ledgerhq/live-dmk-desktop@0.26.1
- @ledgerhq/live-send@0.1.6
- @domain/entity-account-balance@0.2.2
- @domain/api-aggregated-assets@0.6.3
- @domain/api-card-management@0.8.4
- @domain/api-currency-fiat@0.5.1
- @domain/api-currency-token@0.7.1
- @domain/api-market-countervalues@0.2.3
- @domain/api-market-index-altcoin-season@0.4.4
- @domain/api-market-index-fear-and-greed@0.4.4
- @domain/api-push-devices@0.2.11
- @features/platform-card@0.8.3
- @domain/entity-contact@0.12.3
- @domain/entity-currency@0.4.9
- @domain/entity-currency-token@0.5.8
- @domain/entity-market-countervalues@0.4.2
- @features/flow-contacts-detail@0.3.1
- @features/platform-account-analytics@0.2.0
- @features/platform-contacts@0.12.1
- @features/platform-market-countervalues@0.4.1
- @ledgerhq/asset-aggregation@0.18.3
- @ledgerhq/coin-bitcoin@1.1.1
- @ledgerhq/coin-cardano@2.1.1
- @ledgerhq/live-wallet@1.1.9
- @ledgerhq/wallet-analytics@0.5.4
- @ledgerhq/wallet-pnl@0.8.3
- @features/flow-large-screen-upsell@2.3.1
- @features/flow-pay-feature-tour@0.8.3
- @features/platform-feature-flags-firebase@0.1.3
- @ledgerhq/coin-canton@1.6.1
- @ledgerhq/coin-casper@3.7.1
- @ledgerhq/coin-concordium@1.7.1
- @ledgerhq/coin-filecoin@2.6.1
- @ledgerhq/coin-stacks@0.35.1
- @ledgerhq/coin-zcash@1.1.1
- @ledgerhq/live-signer-evm@0.24.4
- @ledgerhq/transaction-observability@0.6.1
- @ledgerhq/live-signer-tron@0.2.4
- @features/flow-analytics-consent@0.2.12
- @domain/entity-account-alias@0.1.3
- @domain/entity-account-name@0.3.1
- @domain/entity-starred-account@0.0.4
- @features/platform-env@0.4.4
- @features/flow-pay-card-auth@0.11.1
- @features/flow-pay-card-transactions@0.7.1
- @features/flow-pay-card-widget@0.6.2
- @features/flow-fear-and-greed@0.5.1
- @features/flow-app-availability@0.3.1
- @ledgerhq/wallet-btc@1.1.0
- @features/platform-content-ab-tests@0.2.3