You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
@metamask/account-tree-controller 8.1.0
Added
Add AccountTreeController:isInitialized action so consumers can query whether init() has completed (#10059)
Changed
Bump @metamask/accounts-controller from ^39.1.0 to ^39.1.1 (#9969)
Bump @metamask/utils from ^11.11.0 to ^11.12.0 (#10076)
@metamask/assets-controller 15.0.0
Added
Add bypassServerCache option to getAssets (#10068)
When true (only meaningful together with forceUpdate), the Accounts API request also bypasses the API's server-side 60s cache via a random bypassServerCache query param, instead of only the client-side query cache.
Changed
Bump @metamask/phishing-controller from ^17.4.0 to ^17.4.1 (#10080)
BREAKING:AssetsControllerMessenger now requires AccountTreeController:isInitialized, ClientController:getState, and KeyringController:isUnlocked so lifecycle checks read controller state on demand instead of mirroring it from events (#10059)
Hosts that restrict which actions flow through the AssetsController messenger must delegate these three actions
AccountTreeController:stateChange is no longer subscribed to; remove it from allowed events if your messenger wiring lists events explicitly
Revert to selectedAccountGroupChange for account-group switches; snap accounts added mid-session are picked up on restart (#10059)
Bump @metamask/transaction-controller from ^69.6.1 to ^69.8.0 (#10046, #10080)
Bump @metamask/utils from ^11.11.0 to ^11.12.0 (#10076)
Bump @metamask/account-tree-controller from ^8.0.0 to ^8.1.0 (#10088)
Fixed
Exclude assets that have no assetsInfo metadata from the aggregated balance selectors (#10084)
getAggregatedBalanceForAccount, getAggregatedBalanceForAccountIds, calculateBalanceForAllWallets, and calculateBalanceChangeForAccountGroup previously included such assets in entries (without symbol/name/decimals) and in fiat totals; a balance now only counts once its metadata is known
Run RpcFallbackMiddleware on Accounts API poll updates (handleAssetsUpdate), not only in the forced getAssets fast pipeline, so a stale amount for tokens omitted from poll responses no longer survives between forced refreshes while the wallet sits open (#10078)
WebSocket, RPC, and Snap updates are excluded: WebSocket pushes are incremental single-asset updates where absence is not staleness, and RPC/Snap updates must not re-trigger RPC
Fix stale balances shown right after a transaction confirms: the post-confirmation refresh now calls getAssets with bypassServerCache: true, since WebSocket events do not invalidate the Accounts API's server-side cache and a plain refetch within its 60s window returns the pre-transaction snapshot (#10068)
Fix stale balances surviving in state when the Accounts API returns no entry for an asset it does not index (or reports an untrusted 0), which the merge update kept as the previous amount (#10061)
RpcFallbackMiddleware now re-reads EVM assets tracked in state (assetsBalance or customAssets) whose balance is empty in the current response, passing them to RpcDataSource as customAssets, in addition to its existing retry of chains in response.errors. Staking vault assets and assets on chains outside the request or the account's supported set are excluded.
Balances from chains the RPC read itself failed on are discarded instead of merged, so a transient RPC failure can no longer overwrite a correct upstream balance with the failure stub's native 0 (or, previously, falsely clear the chain's error as "recovered"). The chain's error is kept only when it was already errored upstream.
RpcDataSource.assetsMiddleware now propagates per-chain fetch errors onto the pipeline response (previously it only used them internally), which is what lets RpcFallbackMiddleware identify the failed chains.