All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Improve transaction state management (#582)
- TransactionController Improvement to reconcile the data between local and remote sources (Etherscan) and avoid misleading display of gas or status information.
- Bump immer from 8.0.1 to 9.0.6 (#581)
- Change AbortController to default import (#579)
- Fix error thrown when polyfilled AbortController is instantiated as a named import.
- Add AbortController polyfill (#575)
- 15.0.0 introduced the use of the global AbortController to this package. The global AbortController was first introduced in Node 15, so this unintentionally broke support for the minimum Node version this package should support, which is Node 12. By polyfilling the AbortController, we restore Node 12 support.
- BREAKING: Update TokensController allTokens state structure to make network/chainID parent of account (#572)
- The shape of allTokens state field on TokensController has been reorganized. Consumers of the TokensController will have to migrate existing token state to new shape.
- BREAKING: ignoredTokens changed to allIgnoredTokens (#570)
- a new state field on the TokensController - allIgnoredTokens - now manages ignoredTokens by network and accountAddress, ignoredTokens is now the array of token address strings (previously an array of full token objects) that have been hidden by the user for the currently active network and accountAddress pair. Consumers of the TokensController will have to migrate existing ignoredTokens array to allIgnoredTokens object.
- BREAKING: Improve BaseControllerV2 messenger type (#556)
- This is a breaking change, because anyone extending BaseControllerV2 will now be required to supply an additional generic parameter.
- BREAKING: Remove redundant default export from util.ts (#574)
- This is breaking for consumers who use the default import of the utils module, and will require using named imports instead.
- BREAKING: Removing aggregator from TokenListToken (#564)
- This is breaking because the the DynamicToken and TokenListToken types no longer contain an aggregators field. Consumers will have to remove aggregators for objects using this type.
- BREAKING: Migrate ApprovalController to BaseControllerV2 (#555)
- This is a breaking change because the BaseControllerV2 migration is breaking, and the 'resolve' method has been renamed to 'accept'.
- Speed up token detection for most popular 1000 tokens (#568)
- Cancel inflight request during chainId change and useStaticTokenList flag change (#571)
- Update the token list API host (#563)
- Bump @metamask/contract-metadata from 1.28.0 to 1.29.0 (#569)
- Reduce frequency of token list updates (#561)
- Previously it would update the token list upon any preference or network configuration change. Now it only restarts polling when the network switches or when the
useStaticTokenList
flag changes.
- Previously it would update the token list upon any preference or network configuration change. Now it only restarts polling when the network switches or when the
- Added the ability to limit the number of transactions stored (default is 40) (#550)
- Added the ability to speedUp and stop based on provided gasValues from consumer (#535)
- Consolidate token list controller data. (#527)
- Adds 3 fields:
address
,aggregators
, andoccurrences
to static tokens
- Adds 3 fields:
- Controller messenger selector subscriptions (#551)
14.0.2 - 2021-07-28
- Fix
resetPolling
functionality (#546)- This fix addresses a bug that was discovered in
resetPolling
inGasFeeController
functionality being called too frequently.
- This fix addresses a bug that was discovered in
- Improve token list API error handling (#541)
14.0.1 - 2021-07-28 [DEPRECATED]
- Ensure gas estimate fetching in gasFeeController correctly handles responses with invalid number of decimals (#544)
- Bump @metamask/contract-metadata from 1.27.0 to 1.28.0 (#540)
14.0.0 - 2021-07-27 [DEPRECATED]
- BREAKING Add EIP1559 support including
speedUpTransaction
andstopTransaction
(#521)- The breaking change here is that consumers of this repo now have to check if the transaction object includes a gas price and fetch and add it themselves (if need be).
- Make equality comparisons for token and collectible addresses in TokensController and CollectiblesController case insensitive (#537)
- Reset gas fee estimate polling onNetworkStateChange in the gasFeeController (#534)
- Update AssetDetectionController to handle new fetch limits for the OpenSea collectibles api (#536)
- Add options to GasFeeController fetchGasFeeEstimates (#526)
13.0.0 - 2021-07-12
- BREAKING: Remove AssetsController and add CollectiblesController and TokensController in its place (#518)
12.1.0 - 2021-07-09
- Support for custom network and gas estimation (#505)
- A fallback for the token list API service based on user preference (#517)
12.0.0 - 2021-07-07
- Add GasFeeController to provide gas fee estimates #494
- BREAKING: Add chainId support to TokenRatesControllers #476
- The breaking change here is that TokenRatesController constructor now requires a onNetworkStateChange listener
- Add iconUrl to Token type in TokenListController #512
11.0.0 - 2021-07-02
- We accidentally shipped a breaking change in v10.2.0. The changelog has been updated to explain the breaking change, and it has been republished as v11.0.0.
10.2.0 - 2021-06-30 [DEPRECATED]
- BREAKING: Add TokenListController to fetch the token list from token services API (#478)
- The breaking change here is that
AssetsDetectionController
now requiresgetTokenListState
as a constructor parameter.
- The breaking change here is that
- Update
@ethereumjs-tx
to@ethereumjs/tx
and add@ethereumjs/common
to support EIP1559 compliant transactions (#489)
10.1.0 - 2021-06-07
- Export BaseControllerV2 Json type (#482)
- Skip token detection for tokens that are already tracked (#480)
- BREAKING: Fix stale conversionRate after switching network (#465)
- The breaking change is the change in type of the
conversionRate
state of theCurrencyRateController
- it's now nullable.
- The breaking change is the change in type of the
9.1.0 - 2021-05-20
- Add support for unicode domains to PhishingController (#471)
- AssetsController collectibles metadata improvements (#454)
- Add
getState
action to BaseControllerV2 (#457)
- BREAKING: Migrate CurrencyRateController to BaseControllerV2 (#372)
- Add BaseControllerV2 support to ComposableController (#447)
- Update eth-keyring-controller (#460)
- Export BaseControllerV2 and ControllerMessenger (#462)
- Improve restricted messenger types for controllers (#461)
- Document all ControllerMessenger generic parameters (#456)
- Bump @metamask/contract-metadata from 1.24.0 to 1.25.0 (#444)
8.0.0 - 2021-04-15
- Add restricted controller messenger (#378)
- BREAKING: Update minimum Node.js version to v12 (#441)
- BREAKING: Replace controller context (#387)
- Bump @metamask/contract-metadata from 1.23.0 to 1.24.0 (#440)
- Update lint rules (#442, #426)
- Don't remove collectibles during auto detection (#439)
7.0.0 - 2021-04-06
- Ability to indicate if a transaction was added from the users local device and account creation time (#436)
- BREAKING: Organize assets by chainid (#435)
- Support longer token symbols via wallet_watchAsset (#433)
6.2.1 - 2021-03-23
- Restore BN export (#428)
6.2.0 - 2021-03-23 [WITHDRAWN]
- Add the Notification Controller (to support "what's new" type announcements in-app) (#329)
- Add support for specifying a custom nonce (#381)
- Explicitly add ethereumjs-tx as a package.json dependency (#392)
- Add
types
manifest field to package.json (#391) - Use "options bag" for parameters for BaseControllerV2 constructor (#388)
- Ensure
uuid
dependency is type-checked (#403) - Update TypeScript to v4.2 (#369)
- Asset metadata type conditionally requires error field, disallows for non-errors (#395)
- Improve TransactionMeta type:
status
now an enum, error conditional on status, default error added for failed etherscan transaction (#406) NetworkController
no longer a required controller ofTypedMessageManager
(#416)- Update
selectedAddress
when identities are updated inPreferencesController.updateIdentities
(#415) - Add contract address validation to
AssetsContractController.getCollectibleTokenURI
(#414) - Add descriptive error messages to empty
toThrow
call (#422)
- Fix
signTransaction
transaction parameter type (#400) - [BREAKING] Consistently use BN type for token balances (#398)
6.1.1 - 2021-03-12
- Add controller messaging system (#377)
6.1.0 - 2021-03-10
- Add Base Controller v2 (#358)
- Add
babel-runtime
dependency required byethjs-query
(#341) - Add Dependabot config (#343)
- Add chainId to every transaction (#349)
- Add normalizeTokenTx for incoming transactions (#380)
- Bump elliptic from 6.5.3 to 6.5.4 (#383)
- Update prettier from v2.1.1 to v2.2.1 (#376)
- Remove AlethioTransactionMeta (#374)
- Improve JSON types (#373)
- Add BaseControllerV2 state metadata (#371)
- Update to TypeScript 4.1 (#370)
- Constrain BaseController state to be valid JSON (#366)
- Update ESLint config to v5 (#368)
- Use
unknown
rather thanany
for BaseController state (#365) - BaseController send patches to state subscribers (#363)
- TransactionController gas and approve transaction improvements (#350)
- Extract CryptoCompare API to a separate module (#353)
- Move tests alongside code under test (#354)
- Bump @metamask/contract-metadata from 1.22.0 to 1.23.0 (#357)
- Remove Alethio to get incoming token transactions, using etherscan instead (#351)
- Prevent
ApprovalController
counting mismatch (#356) - Update
sinon
and@types/sinon
to latest versions (#352) - Fix
tsconfig.json
indentation (#355) - Replace
fetch-mock
withnock
(#340) - Update
ethereumjs-wallet
from v0.6.5 to v1.0.1 (#347) - Update
@metamask/eslint-config
from v3 to v4.1.0 (#344) - Update
uuid
fromv3.3.3
tov8.3.2
(#346) - Update approval controller test import (#339)
- Update
typedoc
(#342) - Remove unused test module (#338)
- Replace
await-semaphore
withasync-mutex
(#334) - Update
eth-json-rpc-filters
in lockfile (#336)
- Fix AbstractMessageManager error (#367)
- Enforce the usage of
chainId
instead ofnetworkId
inNetworkController
(#324)
6.0.1 - 2021-02-05
- Update
typedoc
from v0.15 to v20.20 (#333) - Update
@metamask/contract-metadata
from v1.19 to v1.22 (#332) - Bump node-notifier from 8.0.0 to 8.0.1 (#323)
- Add
safelyExecuteWithTimeout
foraccountTracker.refresh
(#331) - Add try/catch for
assetsContract.getBalanceOf
(#328)
6.0.0 - 2021-01-19
- Remove default approval controller type (#321)
- Enforce the usage of
chainId
instead ofnetworkId
inNetworkController
(#324)
5.1.0 - 2020-12-02
- Updated automatically detected assets (#318)
- Robustified
wallet_watchAssets
params validation, and improved errors (#317)
5.0.0 - 2020-11-19
ApprovalController
(#309)- Add user-defined default type
- Add
Date.now()
timestamps to request (approval.time
) - Enable
has
lookups bytype
only
- Breaking:
ApprovalController
: Require types for all requests (#309) ApprovalController
: RenameApprovalInfo
interface toApproval
(#309)PhishingController
: Makeno-cache
fetch option explicit (#297)- Make package compatible with Node 12 (#287)
ApprovalController
: Fix faultyorigin
parameter type check (#309)- The type check was too loose, and would've permitted some invalid origins.
4.2.0 - 2020-11-13
- Expose
ApprovalController
count state (#306) KeyringController
onLock
/onUnlock
event handlers (#307)
- Properly initialize
ApprovalController
(#306)
4.1.0 - 2020-11-10
ApprovalController
approval count methods (#304)
4.0.2 - 2020-11-09
- Unpin
eth-sig-util
dependency (#302)
4.0.1 - 2020-11-09
- Fix
ApprovalController
export (#300)
4.0.0 - 2020-11-09
- Add
ApprovalController
(#289)
- Allow configuring
CurrencyController
to always fetch USD rate (#292)
- BREAKING: Remove
NetworkStatusController
(#298)
3.2.0 - 2020-10-21
- Add
addNewAccountWithoutUpdate
method (#288)
3.1.0 - 2020-09-23
- Update various dependencies
3.0.1 - 2020-09-15
- Remove
If-None-Match
header from phishing config requests (#277)
3.0.0 - 2020-09-11
- Use Infura v3 API (#267)
2.0.5 - 2020-08-18
- Add prepublishOnly build script (#260)
2.0.4 - 2020-08-18
- Use jsDelivr instead of the GitHub API for content (#256)
- Lower phishing config poll rate to 1 req/hr (#257)
- Use renamed
eth-rpc-error
package (#252)
2.0.3 - 2020-07-27
- TransactionsController: Bugfix cancel / speedup transactions (#248)
2.0.2 - 2020-07-14
- TransactionsController: Fetch incoming token transactions (#247)
2.0.1 - 2020-06-18
- Update
PhishingController
endpoint to use GitHub API (#244)
2.0.0 - 2020-05-07
- Rebrand as
@metamask/controllers
(#226) - Use yarn & drop
npm-shrinkwrap.json
(#193)
- Remove shapeshift controller (#209)