Skip to content

1231.0.0

Choose a tag to compare

@github-actions github-actions released this 03 Sep 12:13
c6cc769

@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.