-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Version v12.13.0 #30314
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Version v12.13.0 #30314
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> This hides the network picker's back button when there's no selected network. Currently this causes the dest network picker to navigate to the src asset picker [](https://codespaces.new/MetaMask/metamask-extension/pull/29711?quickstart=1) ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/MMS-1852 ## **Manual testing steps** 1. Load bridge page 2. Open dest asset picker 3. Verify that back button is not visible ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> https://github.com/user-attachments/assets/4bbde8e4-bdd5-4fa2-aeb5-248d433e25a2 ### **After** <!-- [screenshots/recordings] --> https://github.com/user-attachments/assets/731280a5-3faf-401c-9236-8e932a9f347e ## **Pre-merge author checklist** - [X] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
…nner is shown on dApp 1, but not on dApp 2 after adding transaction on dApp 1, and one on dApp 2 (old confirmation flow)` (#30028) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** The test `Queued Confirmations Queued Requests Banner Alert Banner is shown on dApp 1, but not on dApp 2 after adding transaction on dApp 1, and one on dApp 2 (old confirmation flow)` is flaky and fails with the following error.:  There is one fundamental problem which is that in the test we expect that `switchChain` will trigger a dialog, but that shouldn't be the case, as we already have permissions to that network (comes selected by default, see video below). Then the window management is messed up. Roughly: - Whenever we connect to the dapp2, we don't wait for the dialog window to close - We switch to dapp 1 - We trigger a switchChain request --> here we wait for the dialog to be there. The problem is that the switchChain request don't trigger a dialog (that's expected as that network already has permissions by default) - So now, depending on how fast the dialog from step 1 remains open, will make it to the next step, or not (if the dialog is close fast enough). That's why it doesn't fail all the time (but it should, given the incorrect expectation of waiting for a dialog after the request to switch chains, to an already approved chain) - Then the subsequent actions can work with an old instance of the dialog, but that is closed after some seconds (as it was the Connect dialog which we already accepted) making it fail [](https://codespaces.new/MetaMask/metamask-extension/pull/30028?quickstart=1) ## **Related issues** Fixes: #30012 ## **Manual testing steps** 1. Check [ci run](https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/121745/workflows/e5058e63-1255-4e57-9089-756879fe699f/jobs/4506977/tests) Note: you'll see there's a spec failing but that's a different one that will be tackled in a separate PR, issue [here](#30029) 2. Run test locally `yarn test:e2e:single test/e2e/tests/confirmations/alerts/queued-confirmations.spec.ts --browser=chrome --leave-running=true` ## **Screenshots/Recordings** See how the localhost 7777 is already selected by default. This willl make that any request to switch to that chain won't trigger any dialog (ExpecteD) https://github.com/user-attachments/assets/4bafff15-5282-4362-a626-4fd9360d1ed2 See same behaviour in a prod build https://github.com/user-attachments/assets/e35c5dbb-587c-47ff-be6c-ffa42b5015e9 ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** The goal of this PR is to remove as much dead code as possible related to the transaction confirmations that predate the redesign. - From `ConfirmTransaction` component: - `ConfirmDeployContract` - `ConfirmSendEther` - `ConfirmContractInteraction` - From `ConfirmTokenTransactionSwitch` and `ConfirmTransactionSwitch`: - `ConfirmApprove` - `ConfirmTokenTransactionBase` - `ConfirmSendToken` - `ConfirmTransactionBase`, `TokenAllowance` and `ConfirmApproveContent` that were used by the components above. - `GasDisplay`, `ConfirmGasDisplay` and `ConfirmLegacyGasDisplay` that were no longer used - Edit custom nonce settings toggle, selector, action and state property migration, and associated `custom-nonce` component for the legacy transactions. - Unit tests, storybook stories, styles and localization files associated with the removed files. <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> [](https://codespaces.new/MetaMask/metamask-extension/pull/29926?quickstart=1) ## **Related issues** Fixes: MetaMask/MetaMask-planning#4025 ## **Manual testing steps** Confirm the remaining confirmations (Transactions, Signatures, Encrypt / Decrypt, Add/Switch Ethereum Chain Snaps) still work. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
…let_addEthereumChain` (#29837) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Fixes bug with the automatically permittedChains permission grant when triggered via wallet_addEthereumChain in certain scenarios. See ticket for details. [](https://codespaces.new/MetaMask/metamask-extension/pull/29837?quickstart=1) ## **Related issues** Fixes: MetaMask/MetaMask-planning#3814 ## **Manual testing steps** 1. Add a new network to the dapp via [wallet_addEthereumChain](https://docs.metamask.io/wallet/reference/json-rpc-methods/wallet_addethereumchain/) 2. After approval, the dapp should also have `endowment:permitted-chains` permission for the recently added chain via `wallet_getPermissions` 3. switch the dapp to a different chain via the wallet UI 4. revoke dapp permissions via the wallet UI 6. Add a new network to the dapp via [wallet_addEthereumChain](https://docs.metamask.io/wallet/reference/json-rpc-methods/wallet_addethereumchain/) using a DIFFERENT rpc endpoint, but for the same chainId added in step 1 7. After approval, the dapp should also have `endowment:permitted-chains` permission for the recently added chain via `wallet_getPermissions` 8. switch the dapp to a different chain via the wallet UI 9. revoke dapp permissions via the wallet UI 10. Add a new network to the dapp via [wallet_addEthereumChain](https://docs.metamask.io/wallet/reference/json-rpc-methods/wallet_addethereumchain/) using the SAME rpc endpoint in step 1 (i.e. repeat step 1 exactly) 11. You should get an approval for chain switch, NOT network adding. Approve it. 12. After approval, the dapp should also have `endowment:permitted-chains` permission for the recently added chain via `wallet_getPermissions` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: Alex Donesky <[email protected]>
## **Description** Use the new Snap keyring version that no longer rely on a `SnapController` reference. Instead it uses the messaging system. [](https://codespaces.new/MetaMask/metamask-extension/pull/29912?quickstart=1) > [!NOTE] > This PR is blocking other features for the moment, so not every peer deps (related to the `AccountsController`) have been updated here. This will be done in a separate PR: > - #30011 ## **Related issues** - MetaMask/core#5190 ## **Manual testing steps** N/A ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: MetaMask Bot <[email protected]>
## **Description** - This is a non-fork mirror of @darkwing's PR: #30005 Wraps the NFT list within the Send flow such that it will not overflow [](https://codespaces.new/MetaMask/metamask-extension/pull/30005?quickstart=1) ## **Related issues** Fixes: #29974 ## **Manual testing steps** 1. Use an account with many NFTs 2. Start send flow 3. Click the AssetPicker, choose NFTs 4. See the wrapped NFTs ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <img width="521" alt="SCR-20250130-hbwm" src="https://github.com/user-attachments/assets/abeb3b78-be50-4aa4-841f-f8441ba4103f" /> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: David Walsh <[email protected]>
…29443) ## **Description** - The first commit (6fcb2af) fixes errors in the messenger types for `Bridge{,Status}Controller`. - The second commit (d7368f5) is optional, but strongly recommended. Under the `BaseController` API with which the `Bridge{,Status}Controller` are defined, `BridgeControllerState` and `BridgeStatusControllerState` should be considered as reserved keywords. - The current set of types violates guidelines: https://github.com/MetaMask/core/blob/main/docs/writing-controllers.md#define-and-export-a-type-for-the-controllers-state. - Deviating from this convention breeds confusion and silently-failing errors as per the examples fixed in the first commit. - This also affects downstream consumers and dependent modules of the bridge controllers, as the expected functionality for the reserved keywords is not fulfilled. - The type expressions `{ bridgeState: BridgeControllerState }`, `{ bridgeStatusState: BridgeStatusControllerState }` are being used redundantly and should be de-duplicated. However, defining these types using anything other than the reserved keywords will cause further unnecessary confusion. [](https://codespaces.new/MetaMask/metamask-extension/pull/29443?quickstart=1) ## **Related issues** - Supersedes #28971 ## **Manual testing steps** ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
…yup.ts` (#28393) I've ported Foundry's foundryup bash script to TypeScript. It downloads a pinned version of the `anvil` binary on `yarn install`. While you don't need to do anything, other than run `yarn` (or `yarn install`), you can customize the installation options by running `yarn foundryup <options>`. Try running `yarn foundryup --help` to see all that it can do. An explanation of how it works: The `yarn foundryup` command caches (to `.metamask/cache/*`) the downloaded binaries (defaults to only `anvil`, but it _can_ install all the others) and symlinks them from the cache into `node_modules/.bin/<binary name>`. This makes successive installs nearly instant. In CI the cache itself is cached (same process as for the `.yarn/cache` cache), so that CI doesn't have to redownload binaries on every workflow. The `foundryup` code is intended to be generic, and could eventually be a partial replacement for the `ganache` package for most users (for cli users only, not for programmatic use cases). For this reason, the script uses defaults that are not tailored to our needs; instead we use a new `package.json` property _`foundryup`_ to describe what defaults we do want, and the script uses those values. In addition to the original `foundryup` bash script features, this script supports checksumming the downloaded binaries; a feature requested by the MM security team. See the `foundryup` property in our `package.json` for more details. A feature that is _missing_ from this script, but is in the original `foundryup` bash script,is support for downloading the `man` pages. I don't really care about this feature and don't think anyone would use it. This script _should_ support the following platforms, but I've only tested Linux+AMD: Linux on ARM and AMD Mac on ARM and AMD Windows on AMD (likely works on arm-based Windows machines via OS's emulation) -- This also adds a new yarn command: `anvil`. You can use it just like you did with `yarn ganache`, i.e., `yarn anvil`; note: the defaults and CLI options are not going to be exactly the same as `ganache`. <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. ## **Description** [](https://codespaces.new/MetaMask/metamask-extension/pull/28393?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/develop/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --> --------- Co-authored-by: seaona <[email protected]> Co-authored-by: seaona <[email protected]> Co-authored-by: Howard Braham <[email protected]>
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** An unordered metric event makes the test fail, as we see the signature one (performed after in 8081) instead of the tx one (performed first in 8080)  After looking at the logs, we can see how the 8081 event refers to the signature event that happens after the transaction  Furthermore, the wait for chainID added here was pointing to the old chainId, so now it's corrected and fixes remaining flakiness - Firefox https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/121815/workflows/09665d6e-9173-434a-817f-f462ee489622/jobs/4508139 - Webapck https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/121815/workflows/09665d6e-9173-434a-817f-f462ee489622/jobs/4508106 [](https://codespaces.new/MetaMask/metamask-extension/pull/30031?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
…on multple accounts from inside MetaMask when a user has balances on more accounts than previously synced, it should be handled gracefully` (#30044) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Test times out from time to time, as it's very long. https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/121879/workflows/9dc68e75-c842-4b3d-83c5-eaacbca0c5aa/jobs/4509367/tests#failed-test-0 [](https://codespaces.new/MetaMask/metamask-extension/pull/30044?quickstart=1) ## **Related issues** Fixes: #30057 ## **Manual testing steps** 1. Run locañlly 2. Check ci ## **Screenshots/Recordings**  ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This PR addresses the issue where clicking on an inline alert 'Speed' warning in the Confirmation screen causes the extension to break. The fix ensures that all hooks are called before the early return statement in the `AlertModal` component, maintaining consistent hook rendering and preventing errors. This change ensures that the modal behaves correctly even when the alert disappears when a user is creating another transaction. <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> [](https://codespaces.new/MetaMask/metamask-extension/pull/29825?quickstart=1) ## **Related issues** Fixes: #29648 ## **Manual testing steps** - Trigger two STX - Wait until the first STX is confirmed and click 'Alert' on the Confirmation screen ## **Screenshots/Recordings** [Screencast from 2025-01-21 10-06-37.webm](https://github.com/user-attachments/assets/13c950b3-8ad6-49bd-9c5f-3d35b8f01d4e) <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Balances should be displayed on the swap from picker core PR: MetaMask/core#5257 <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> [](https://codespaces.new/MetaMask/metamask-extension/pull/30046?quickstart=1) ## **Related issues** Fixes: #30040 ## **Manual testing steps** 1. Choose popular network on the network tokens filter 2. Click on swap button 3. balances should be displayed on the from and to picker ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> This Change will introduce a new workflow that invokes a set of re-useable shared workflows used across both extension and mobile codebases [](https://codespaces.new/MetaMask/metamask-extension/pull/29646?quickstart=1) ## **Related issues** Fixes: MetaMask/MetaMask-planning#3641 ## **Manual testing steps** Testing manually using ci/cd runs - example outputs/runs can be viewed here Example Release Branch PR #29981 Example Changelog PR #29982 Sample CI Output Run https://github.com/MetaMask/metamask-extension/actions/runs/13038614194/job/36375005985 [1:15](https://consensys.slack.com/archives/C08APSA5135/p1738178122258199) here's the CI output/run - https://github.com/MetaMask/metamask-extension/actions/runs/13038614194/job/36375005985 ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> N/A CICD Only ### **After** <!-- [screenshots/recordings] --> N/A CICD Only ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: Norbert Elter <[email protected]>
## **Description** This PR introduces circular dependency detection, tracking, and CODEOWNERS. Here are the key changes: 1. Added a new circular dependency detection system: - New script `development/circular-deps.ts` that uses `madge` to detect circular dependencies - New config file `.madgerc` for TypeScript-specific settings - Generated baseline file `development/circular-deps.json` containing current circular dependencies 2. Added new yarn scripts in `package.json`: - `yarn circular-deps:check` - Verifies circular dependencies match baseline - `yarn circular-deps:update` - Updates baseline with current circular dependencies 3. Added CI integration: - Added `.github/workflows/test-circular-deps.yml` to run circular dependency check 4. Assigning appropriate CODEOWNERS to `circular-deps.jsonc` The PR essentially sets up a process to track new circular dependencies while acknowledging existing ones in the codebase. [](https://codespaces.new/MetaMask/metamask-extension/pull/29811?quickstart=1) ## **Related issues** * Fixes: MetaMask/MetaMask-planning#3088 ## **Manual testing steps** 1. Remove (or add) a circular dependency in the code. 2. Run `yarn circular-deps:check` => should report that codebase is out of sync with `circular-deps.jsonc` 3. Run `yarn circular-deps:update` => should update `circular-deps.jsonc` to match the codebase. Inspect the diff. 4. Run `yarn circular-deps:check` => should pass. ## **Screenshots/Recordings** ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: MetaMask Bot <[email protected]> Co-authored-by: Howard Braham <[email protected]>
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> Rename `RestrictedControllerMessenger` to `RestrictedMessenger` and `ControllerMessenger` to `Messenger`. No functional changes. [](https://codespaces.new/MetaMask/metamask-extension/pull/30041?quickstart=1) ## **Related issues** Fixes: Relates to [#4538](MetaMask/core#4538) ## **Manual testing steps** ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
## **Description** This PR removes the segmented tab on the confirm import token modal as described in this issue: #26788 [](https://codespaces.new/MetaMask/metamask-extension/pull/29720?quickstart=1) ## **Related issues** #26788 ## **Manual testing steps** 1. Start the procedure to import a token 2. Confirm the token to be imported 3. On the confirmation page, the tab should no longer be visible ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** ### **After** https://www.loom.com/share/b3a522ccf9974c06a73ea6236db89cc6?sid=b56a3ed9-6a06-4a23-8ed1-eecc1fa73d8a ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: David Walsh <[email protected]>
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> [](https://codespaces.new/MetaMask/metamask-extension/pull/30072?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
## **Description** Add/enable destructive (danger) button in Snaps UI custom footer. [](https://codespaces.new/MetaMask/metamask-extension/pull/29966?quickstart=1) ## **Related issues** Fixes: MetaMask/snaps#3015 ## **Manual testing steps** 1. Install a Snap with footer buttons that have `destructive` variant. 2. Confirm that the buttons look as expected. 3. Make a button that has both states, `destructive` and `disabled` and check if it's rendered correctly. 4. Try different variants with non-destructive buttons and confirm that there are no regressions. Example: ```typescript <Footer> <Button name="cancel" variant="destructive"> Cancel </Button> <Button name="confirm" variant="destructive" disabled={true}> Confirm </Button> </Footer> ``` ## **Screenshots/Recordings** ### **Before**     ### **After**     ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This PR adds the new transaction details modal for the non-evm networks, BTC and SOL.  https://github.com/user-attachments/assets/d19da5a3-46af-4d8c-a220-59bbd663624a ## **Related issues** Fixes: https://consensyssoftware.atlassian.net/browse/SOL-80 ## **Manual testing steps** Testing this is a bit extensive, but if you still want to give it a go these are the steps: 1. Checkout this branch and run `yarn` 2. Update the file `shared/lib/accounts/solana-wallet-snap.ts` with: `export const SOLANA_WALLET_SNAP_ID: SnapId = 'local:http://localhost:8080' as SnapId;` 3. Update the filtering code in MultichainTransactionsController under node modules to return transactions for devnet, currently only returns for mainnet. It's under `node_modules/@metamask/multichain-transactions-controller/dist/MultichainTransactionsController.mjs` and `node_modules/@metamask/multichain-transactions-controller/dist/MultichainTransactionsController.cjs` with: ``` MultichainNetwork.SolanaDevnet instead of MultichainNetwork.Solana ``` 4. Run the extension with `yarn start:flask` 5. Run the Snap: https://github.com/MetaMask/snap-solana-wallet - Clone it - Run `yarn` - Run `yarn start` 6. Go to http://localhost:3000/ 7. Install the Snap 8. In the extension, go to the Settings > Experimental > Enable Solana account 9. Create a Solana account from the account-list menu 10. Fund the new Solana account with some SOL, use a faucet like https://faucet.solana.com/ 11. the initial Tx with funds from the faucet will display in the activity tab 12. Click in it and you will see the Tx details modal 13. Thats it! 🎉 ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** Didn't exist. ### **After**  ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: MetaMask Bot <[email protected]> Co-authored-by: Charly Chevalier <[email protected]>
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Bump Snaps packages and handle any required changes. Summary of Snaps changes: - Add support for onProtocolRequest + the `endowment:protocol` permission - Add `URLSearchParams` as a default global - Add disabled states for all input components [](https://codespaces.new/MetaMask/metamask-extension/pull/30062?quickstart=1) ## **Related issues** Closes #29669 --------- Co-authored-by: David Drazic <[email protected]> Co-authored-by: Maarten Zuidhoorn <[email protected]>
## **Description** IPFS images in the grid view were not correctly identified and therefore were not fetched/displayed. This copies the logic in the details page to ensure that we correctly show IPFS NFTs. [](https://codespaces.new/MetaMask/metamask-extension/pull/30091?quickstart=1) ## **Related issues** Fixes: #30063 ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before**  ### **After**  ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> On #29884, a lot of code related to MetaMask Institutional was removed. The `<CancelSpeedupPopover />` component was removed, probably because it was conditionally rendered when a custodian was not present (for non-MMI code only), and someone mechanically removing code might have thought it wasn't needed anymore. What we wanted to do instead was to remove the condition and render the modal unconditionally. This PR reintroduces the component. <img width="837" alt="Screenshot 2025-02-04 at 11 35 57" src="https://github.com/user-attachments/assets/f74ebbbc-98b2-4115-b3a3-210fb58c0b7c" /> [](https://codespaces.new/MetaMask/metamask-extension/pull/30093?quickstart=1) ## **Related issues** Fixes: #30027 ## **Manual testing steps** 1. Submit a transaction with low gas parameters 2. Once it is pending, speed up or cancel it from the activity list ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
In the review permissions screen for snaps, the origin of the snap was missing. This PR fix that ## **Related issues** Fixes: #30088 ## **Manual testing steps** 1. Connect extension to Snap 2. Click on getAccounts 3. The review permissions screen should show Dapp Origin ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before**  ### **After**  ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
…/snaps-sdk` to `^6.17.1` (#30097) ## **Description** This bumps `@metamask/snaps-controllers` to `^9.19.1` and `@metamask/snaps-sdk` to `^6.17.1`, which fixes a couple minor issues. [](https://codespaces.new/MetaMask/metamask-extension/pull/30097?quickstart=1) ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> Add updated Celo svg logo ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to add network 2. Add celo networks 3. celo networks should have updated logo ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: Christian Montoya <[email protected]> Co-authored-by: Salim TOUBAL <[email protected]> Co-authored-by: Howard Braham <[email protected]> Co-authored-by: Mark Stacey <[email protected]>
## **Description** Upgrade `@metamask/transaction-controller` to prevent transactions being resubmit on multiple endpoints. [](https://codespaces.new/MetaMask/metamask-extension/pull/30079?quickstart=1) ## **Related issues** Fixes: #30061 ## **Manual testing steps** 1. Add additional endpoint for network. 2. Open `Network` tab of developer console. 3. Select first endpoint. 4. Send transaction. 5. Verify all RPC requests are to the correct endpoint. 6. Select second endpoint. 7. Send transaction. 8. Verify all RPC requests are to the correct endpoint. ## **Screenshots/Recordings** ### **Before** ### **After** ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
## **Description** If there are network-specific feature flags for smart transactions, they will take priority over shared smart transaction feature flags. [](https://codespaces.new/MetaMask/metamask-extension/pull/30094?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Turn off some feature flag which is network-specific for smart transactions (e.g. `bsc.smartTransactions.extensionActive = false`) 2. See that it's being used over a shared one (`smartTransactions.extensionActive`) ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
## **Description** Recently we removed all CI steps related to MMI, in preparation for removing MMI. However, the lack of policy validation for the MMI LavaMoat policy has led to churn/conflicts from local updates to the policy. The CI config has been updated to restore MMI LavaMoat policy validation/updates temporarily. We expect we'll be able to delete this again very soon, but it is easiest to keep this until we're ready to delete the MMI build type. [](https://codespaces.new/MetaMask/metamask-extension/pull/30106?quickstart=1) ## **Related issues** N/A ## **Manual testing steps** N/A ## **Screenshots/Recordings** N/A ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
…o 15min (#30102) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Update feature flags cache duration from 24 hours to 15 minutes in extension side by passing a customized `fetchInterval` value to controller and overwrite original value `DEFAULT_CACHE_DURATION` from controller: https://github.com/MetaMask/core/blob/main/packages/remote-feature-flag-controller/src/remote-feature-flag-controller.ts#L142 <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> [](https://codespaces.new/MetaMask/metamask-extension/pull/30102?quickstart=1) ## **Related issues** Fixes: MetaMask/MetaMask-planning#4098 ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
…provider (#30111) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** Previously the inpage provider would withhold events for chainChanged events (and property value updates, i.e. window.ethereum.chainId and .networkVersion) when the dapp's network was changed to an rpc endpoint that was unresponsive or did not support net_version. The dapp would instead receive a disconnect event. Now the inpage provider always emits chainChanged and networkChanged events (and exposes the correct values on window.ethereum.chainId and .networkVersion) when the selected network for the dapp has changed regardless of if the network being changed to is responsive or if it supports net_version requests. It does this by having the wallet send a loading for networkVersion when it cannot be resolved (same behavior as before) AND a new isConnected property in the metamask_getProviderState request and metamask_chainChanged events (these are different from the events emittted by window.ethereum). isConnected is derived from whether the NetworkController.state.networkMetadata[].status value is the Available constant. [](https://codespaces.new/MetaMask/metamask-extension/pull/30109?quickstart=1) ## **Related issues** See: #29936 Providers patch from commit (d919ab6b): MetaMask/providers#404 ## **Manual testing steps** ``` window.ethereum.on('accountsChanged', (data) => console.log('accountsChanged', data)) window.ethereum.on('chainChanged', (data) => console.log('chainChanged', data)) window.ethereum.on('networkChanged', (data) => console.log('networkChanged', data)) window.ethereum.on('connect', (data) => console.log('connect', data)) window.ethereum.on('disconnect', (data) => console.log('disconnect', data)) ``` 1. Go to a webpage. Enter the following in console 2. Change to Linea, see that the correct values are emitted for the `chainChanged` and `networkChanged` events 3. Change to Sepolia, see that the correct values are emitted for the `chainChanged` and `networkChanged` events 4. Change to a network that is non-responsive, see that `chainChanged` emits with the correct chainId, but `networkChanged` emits with a null value, AND there is a `disconnect` event emitted 5. Change back to a working network, see that the correct values are emitted for the `chainChanged` and `networkChanged` events, AND there is a `connect` event emitted with the new chainId 6. Do the same above with a responsive network that does not have `net_version` implemented. Se that the correct values are emitted for the `chainChanged`, that `networkChanged` emits null, and that there is no `disconnect` event emitted ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After**   ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
…middleware if cause is "rejectAllApprovals" (#30448) - fix: cp-12.13.0 Disable origin throttling middleware if cause is "rejectAllApprovals" (#30388) <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> This PR aims to fix `release-blocker` in `v12.13.0` which disables origin throttling middleware if `cause` is `rejectAllApprovals`. Patch note: Currently bumping `transaction-controller` is blocked because it's breaking e2e tests https://consensys.slack.com/archives/CTQAGKY5V/p1739968847746929?thread_ts=1739869734.799669&cid=CTQAGKY5V To avoid applying version newer version of `transaction-controller` needed change patched in this PR. Required change is already in the core repository MetaMask/core#5355. And will most likely be released in version `46.0.1`. Then we will most likely bump `transaction-controller` in `main`. [](https://codespaces.new/MetaMask/metamask-extension/pull/30388?quickstart=1) ## **Related issues** Fixes: #30333 ## **Manual testing steps** See the task details ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [X] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [X] I've completed the PR template to the best of my ability - [X] I’ve included tests if applicable - [X] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [X] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. --------- Co-authored-by: MetaMask Bot <[email protected]> [42bd11d](42bd11d) Co-authored-by: OGPoyraz <[email protected]> Co-authored-by: MetaMask Bot <[email protected]> Co-authored-by: Dan J Miller <[email protected]>
dbrans
previously approved these changes
Feb 26, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Builds ready [af01b27]
Page Load Metrics (1735 ± 70 ms)
|
7 tasks
Cherry pick [e957fed](e957fed) to v12.13.0 ## **Description** Removed the SRP video during wallet creation flow and replaced it with a SRP lock design [](https://codespaces.new/MetaMask/metamask-extension/pull/30586?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Freshly installed app 2. Create wallet 3. Create password 4. During the wallet phrase flow you should see no video and a new design ## **Screenshots/Recordings** NA ### **Before** <img width="1840" alt="Screenshot 2025-02-26 at 10 23 07 AM" src="https://github.com/user-attachments/assets/8ddcfd34-0fe4-4b53-afaf-04dab0639876" /> ### **After** <img width="1840" alt="Screenshot 2025-02-26 at 10 23 37 AM" src="https://github.com/user-attachments/assets/3db6ea6b-4bbd-4be4-9951-ce12a35e4284" /> ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> [](https://codespaces.new/MetaMask/metamask-extension/pull/30590?quickstart=1) ## **Related issues** Fixes: ## **Manual testing steps** 1. Go to this page... 2. 3. ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. Co-authored-by: Vince Howard <[email protected]>
This was referenced Feb 27, 2025
…th 2D version (#30597) - fix: cp-12.13.0 replace 3D flask mascot with 2D version (#30592) ## **Description** Issue: The new Flask 3D asset isn't fully supported Solution: Replace all instances of the 3D asset for Flask with the 2D counterpart temporarily until we fix the issue [](https://codespaces.new/MetaMask/metamask-extension/pull/30592?quickstart=1) ## **Related issues** Fixes: [#30338](#30338) ## **Manual testing steps** 1. Run `yarn start:flask` 2. Confirm that the 2D flask logo is visible in the following flows 3. Swap Quote flow 4. Create Wallet flow 5. Login ## **Screenshots/Recordings** `ui/pages/onboarding-flow/welcome/welcome.js` | Before | After | |:---:|:---:| ||| `ui/pages/swaps/awaiting-swap/awaiting-swap.js` | Before | After | |:---:|:---:| ||| `ui/pages/swaps/loading-swaps-quotes/loading-swaps-quotes.js` | Before | After | |:---:|:---:| ||| `ui/pages/swaps/mascot-background-animation/mascot-background-animation.js` | Before | After | |:---:|:---:| ||| `ui/pages/unlock-page/unlock-page.component.js` | Before | After | |:---:|:---:| ||| ### **Before** NA ### **After** NA ## **Pre-merge author checklist** - [x] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [x] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [x ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. [c186fb0](c186fb0) Co-authored-by: Vince Howard <[email protected]>
6 tasks
Builds ready [8de0364]
Page Load Metrics (1704 ± 90 ms)
|
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Labels
INVALID-PR-TEMPLATE
PR's body doesn't match template
release-12.13.0
Issue or pull request that will be included in release 12.13.0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🚀 v12.13.0 Testing & Release Quality Process
Hi Team,
Happy Friday! 🎉
We’re kicking off the testing and validation for v12.13.0 builds. As part of our new MetaMask Release Quality Process, here’s a quick overview of the key processes, testing strategies, and milestones to ensure a smooth and high-quality deployment.
📋 Key Processes
Testing Strategy
Review Changes: Refer to the Release Tracker for v12.13.0
Developer Teams:
Conduct regression and exploratory testing for your functional areas, including automated and manual tests for critical workflows.
QA Team:
Focus on exploratory testing across the wallet, prioritize high-impact areas, and triage any Sentry errors found during testing.
Customer Success Team:
Validate new functionalities and provide feedback to support release monitoring.
GitHub Signoff
Each team must sign off on the Release Candidate (RC) via GitHub by the end of the validation timeline (Tuesday EOD PT).
Ensure all tests outlined in the Testing Plan are executed, and any identified issues are addressed.
Issue Resolution
Resolve all Release Blockers by Tuesday EOD PT.
For unresolved blockers, PRs may be reverted, or feature flags disabled to maintain release quality and timelines.
Cherry-Picking Criteria
🗓️ Timeline and Milestones
✅ Signoff Checklist
Each team is responsible for signing off via GitHub. Use the checkbox below to track signoff completion:
This process is a major step forward in ensuring release stability and quality. Let’s stay aligned and make this release a success! 🚀
Feel free to reach out if you have questions or need clarification.
Many thanks in advance!