Skip to content
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

feat!: add scopes field to KeyringAccount #5066

Merged
merged 7 commits into from
Jan 9, 2025
Merged

Conversation

ccharly
Copy link
Contributor

@ccharly ccharly commented Dec 13, 2024

Explanation

Testing the new scopes field for KeyringAccount

References

Changelog

@metamask/accounts-controller

  • CHANGED: Bump keyring-api to ^13.0.0
  • CHANGED: Bump keyring-internal-api to ^1.1.0
  • CHANGED: Add new scopes field to InternalAccount
    • This new field will automatically defaults to eip155 (CAIP-2 chain ID namespace for EVM) for newly created EOA accounts (both Snap and "normal" accounts).

@metamask/assets-controllers

  • CHANGED: Bump keyring-internal-api to ^1.1.0

@metamask/chain-controller

  • CHANGED: Bump keyring-internal-api to ^1.1.0

@metamask/keyring-controller

  • CHANGED: Bump keyring-api to ^13.0.0
  • CHANGED: Bump keyring-internal-api to ^1.1.0
  • CHANGED: Await for generateRandomMnemonic keyring calls
    • Not all keyrings uses an async implementation for this method, but awaiting should cover both (synchronous and asynchronous) cases.
    • This change is required since the bump of @metamask/utils@^11.0.1 that changed the generateRandomMnemonic function signature for the EthKeyring interface (coming from @metamask/keyring-internal-api.

@metamask/profile-sync-controller

  • CHANGED: Bump keyring-api to ^13.0.0
  • CHANGED: Bump keyring-internal-api to ^1.1.0

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've highlighted breaking changes using the "BREAKING" category above as appropriate
  • I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

@ccharly
Copy link
Contributor Author

ccharly commented Dec 13, 2024

@metamaskbot publish-preview

@ccharly ccharly changed the title chore: wip feat(keyring-api)!: add scopes field to KeyringAccount Dec 13, 2024
@ccharly ccharly force-pushed the feat/keyring-account-scopes branch from 0a46981 to 28a9753 Compare December 13, 2024 10:53
@ccharly
Copy link
Contributor Author

ccharly commented Dec 13, 2024

@metamaskbot publish-preview

Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/accounts-controller": "20.0.2-preview-28a9753",
  "@metamask-previews/address-book-controller": "6.0.2-preview-28a9753",
  "@metamask-previews/announcement-controller": "7.0.2-preview-28a9753",
  "@metamask-previews/approval-controller": "7.1.1-preview-28a9753",
  "@metamask-previews/assets-controllers": "45.1.2-preview-28a9753",
  "@metamask-previews/base-controller": "7.0.2-preview-28a9753",
  "@metamask-previews/build-utils": "3.0.2-preview-28a9753",
  "@metamask-previews/chain-controller": "0.2.2-preview-28a9753",
  "@metamask-previews/composable-controller": "10.0.0-preview-28a9753",
  "@metamask-previews/controller-utils": "11.4.4-preview-28a9753",
  "@metamask-previews/ens-controller": "15.0.1-preview-28a9753",
  "@metamask-previews/eth-json-rpc-provider": "4.1.6-preview-28a9753",
  "@metamask-previews/gas-fee-controller": "22.0.2-preview-28a9753",
  "@metamask-previews/json-rpc-engine": "10.0.1-preview-28a9753",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.5-preview-28a9753",
  "@metamask-previews/keyring-controller": "19.0.2-preview-28a9753",
  "@metamask-previews/logging-controller": "6.0.3-preview-28a9753",
  "@metamask-previews/message-manager": "11.0.3-preview-28a9753",
  "@metamask-previews/multichain": "1.1.2-preview-28a9753",
  "@metamask-previews/name-controller": "8.0.2-preview-28a9753",
  "@metamask-previews/network-controller": "22.1.1-preview-28a9753",
  "@metamask-previews/notification-services-controller": "0.15.0-preview-28a9753",
  "@metamask-previews/permission-controller": "11.0.4-preview-28a9753",
  "@metamask-previews/permission-log-controller": "3.0.2-preview-28a9753",
  "@metamask-previews/phishing-controller": "12.3.1-preview-28a9753",
  "@metamask-previews/polling-controller": "12.0.2-preview-28a9753",
  "@metamask-previews/preferences-controller": "15.0.1-preview-28a9753",
  "@metamask-previews/profile-sync-controller": "3.1.1-preview-28a9753",
  "@metamask-previews/queued-request-controller": "8.0.2-preview-28a9753",
  "@metamask-previews/rate-limit-controller": "6.0.2-preview-28a9753",
  "@metamask-previews/remote-feature-flag-controller": "1.2.0-preview-28a9753",
  "@metamask-previews/selected-network-controller": "20.0.2-preview-28a9753",
  "@metamask-previews/signature-controller": "23.1.0-preview-28a9753",
  "@metamask-previews/transaction-controller": "42.0.0-preview-28a9753",
  "@metamask-previews/user-operation-controller": "21.0.0-preview-28a9753"
}

@ccharly ccharly force-pushed the feat/keyring-account-scopes branch 2 times, most recently from 2a41698 to 808b388 Compare December 13, 2024 11:08
@ccharly ccharly force-pushed the feat/keyring-account-scopes branch 5 times, most recently from 3fcac04 to 21d7074 Compare January 6, 2025 15:18
@ccharly ccharly force-pushed the feat/keyring-account-scopes branch from 21d7074 to fd50073 Compare January 6, 2025 15:44
@ccharly ccharly force-pushed the feat/keyring-account-scopes branch from fd50073 to 865cff8 Compare January 6, 2025 15:59
@ccharly ccharly self-assigned this Jan 6, 2025
@ccharly ccharly marked this pull request as ready for review January 6, 2025 17:11
@ccharly ccharly requested review from a team as code owners January 6, 2025 17:11
@ccharly
Copy link
Contributor Author

ccharly commented Jan 6, 2025

@metamaskbot publish-preview

Copy link
Contributor

github-actions bot commented Jan 6, 2025

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/accounts-controller": "20.0.2-preview-04aeed55",
  "@metamask-previews/address-book-controller": "6.0.2-preview-04aeed55",
  "@metamask-previews/announcement-controller": "7.0.2-preview-04aeed55",
  "@metamask-previews/approval-controller": "7.1.1-preview-04aeed55",
  "@metamask-previews/assets-controllers": "45.1.2-preview-04aeed55",
  "@metamask-previews/base-controller": "7.1.0-preview-04aeed55",
  "@metamask-previews/build-utils": "3.0.2-preview-04aeed55",
  "@metamask-previews/chain-controller": "0.2.2-preview-04aeed55",
  "@metamask-previews/composable-controller": "10.0.0-preview-04aeed55",
  "@metamask-previews/controller-utils": "11.4.4-preview-04aeed55",
  "@metamask-previews/ens-controller": "15.0.1-preview-04aeed55",
  "@metamask-previews/eth-json-rpc-provider": "4.1.7-preview-04aeed55",
  "@metamask-previews/gas-fee-controller": "22.0.2-preview-04aeed55",
  "@metamask-previews/json-rpc-engine": "10.0.2-preview-04aeed55",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.6-preview-04aeed55",
  "@metamask-previews/keyring-controller": "19.0.2-preview-04aeed55",
  "@metamask-previews/logging-controller": "6.0.3-preview-04aeed55",
  "@metamask-previews/message-manager": "11.0.3-preview-04aeed55",
  "@metamask-previews/multichain": "2.0.0-preview-04aeed55",
  "@metamask-previews/name-controller": "8.0.2-preview-04aeed55",
  "@metamask-previews/network-controller": "22.1.1-preview-04aeed55",
  "@metamask-previews/notification-services-controller": "0.15.0-preview-04aeed55",
  "@metamask-previews/permission-controller": "11.0.4-preview-04aeed55",
  "@metamask-previews/permission-log-controller": "3.0.2-preview-04aeed55",
  "@metamask-previews/phishing-controller": "12.3.1-preview-04aeed55",
  "@metamask-previews/polling-controller": "12.0.2-preview-04aeed55",
  "@metamask-previews/preferences-controller": "15.0.1-preview-04aeed55",
  "@metamask-previews/profile-sync-controller": "3.1.1-preview-04aeed55",
  "@metamask-previews/queued-request-controller": "8.0.2-preview-04aeed55",
  "@metamask-previews/rate-limit-controller": "6.0.2-preview-04aeed55",
  "@metamask-previews/remote-feature-flag-controller": "1.2.0-preview-04aeed55",
  "@metamask-previews/selected-network-controller": "20.0.2-preview-04aeed55",
  "@metamask-previews/signature-controller": "23.1.0-preview-04aeed55",
  "@metamask-previews/transaction-controller": "42.1.0-preview-04aeed55",
  "@metamask-previews/user-operation-controller": "21.0.0-preview-04aeed55"
}

@ccharly ccharly changed the title feat(keyring-api)!: add scopes field to KeyringAccount feat!: add scopes field to KeyringAccount Jan 6, 2025
@ccharly ccharly force-pushed the feat/keyring-account-scopes branch 2 times, most recently from 4c331dd to 6c3ef88 Compare January 7, 2025 16:13
@ccharly
Copy link
Contributor Author

ccharly commented Jan 9, 2025

@metamaskbot publish-preview

Copy link
Contributor

github-actions bot commented Jan 9, 2025

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/accounts-controller": "20.0.2-preview-2ebcbae7",
  "@metamask-previews/address-book-controller": "6.0.2-preview-2ebcbae7",
  "@metamask-previews/announcement-controller": "7.0.2-preview-2ebcbae7",
  "@metamask-previews/approval-controller": "7.1.1-preview-2ebcbae7",
  "@metamask-previews/assets-controllers": "45.1.2-preview-2ebcbae7",
  "@metamask-previews/base-controller": "7.1.0-preview-2ebcbae7",
  "@metamask-previews/build-utils": "3.0.2-preview-2ebcbae7",
  "@metamask-previews/chain-controller": "0.2.2-preview-2ebcbae7",
  "@metamask-previews/composable-controller": "10.0.0-preview-2ebcbae7",
  "@metamask-previews/controller-utils": "11.4.4-preview-2ebcbae7",
  "@metamask-previews/ens-controller": "15.0.1-preview-2ebcbae7",
  "@metamask-previews/eth-json-rpc-provider": "4.1.7-preview-2ebcbae7",
  "@metamask-previews/gas-fee-controller": "22.0.2-preview-2ebcbae7",
  "@metamask-previews/json-rpc-engine": "10.0.2-preview-2ebcbae7",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.6-preview-2ebcbae7",
  "@metamask-previews/keyring-controller": "19.0.2-preview-2ebcbae7",
  "@metamask-previews/logging-controller": "6.0.3-preview-2ebcbae7",
  "@metamask-previews/message-manager": "11.0.3-preview-2ebcbae7",
  "@metamask-previews/multichain": "2.0.0-preview-2ebcbae7",
  "@metamask-previews/name-controller": "8.0.2-preview-2ebcbae7",
  "@metamask-previews/network-controller": "22.1.1-preview-2ebcbae7",
  "@metamask-previews/notification-services-controller": "0.15.0-preview-2ebcbae7",
  "@metamask-previews/permission-controller": "11.0.4-preview-2ebcbae7",
  "@metamask-previews/permission-log-controller": "3.0.2-preview-2ebcbae7",
  "@metamask-previews/phishing-controller": "12.3.1-preview-2ebcbae7",
  "@metamask-previews/polling-controller": "12.0.2-preview-2ebcbae7",
  "@metamask-previews/preferences-controller": "15.0.1-preview-2ebcbae7",
  "@metamask-previews/profile-sync-controller": "3.1.1-preview-2ebcbae7",
  "@metamask-previews/queued-request-controller": "8.0.2-preview-2ebcbae7",
  "@metamask-previews/rate-limit-controller": "6.0.2-preview-2ebcbae7",
  "@metamask-previews/remote-feature-flag-controller": "1.2.0-preview-2ebcbae7",
  "@metamask-previews/selected-network-controller": "20.0.2-preview-2ebcbae7",
  "@metamask-previews/signature-controller": "23.2.0-preview-2ebcbae7",
  "@metamask-previews/transaction-controller": "42.1.0-preview-2ebcbae7",
  "@metamask-previews/user-operation-controller": "21.0.0-preview-2ebcbae7"
}

@ccharly ccharly enabled auto-merge (squash) January 9, 2025 14:29
@ccharly ccharly merged commit 70ecb88 into main Jan 9, 2025
232 checks passed
@ccharly ccharly deleted the feat/keyring-account-scopes branch January 9, 2025 14:34
@Prithpal-Sooriya Prithpal-Sooriya mentioned this pull request Jan 10, 2025
4 tasks
PatrykLucka pushed a commit that referenced this pull request Jan 13, 2025
## Explanation

Testing the new `scopes` field for `KeyringAccount`

## References

- MetaMask/accounts#101
- MetaMask/metamask-extension#29195

## Changelog

### `@metamask/accounts-controller`

- **CHANGED**: Bump `keyring-api` to `^13.0.0`
- **CHANGED**: Bump `keyring-internal-api` to `^1.1.0`
- **CHANGED**: **BREAKING:** Add new `scopes` field to `InternalAccount`
- This new field wil automatically defaults to `eip155` (CAIP-2 chain ID
namespace for EVM) for newly created EOA accounts (both Snap and
"normal" accounts).

### `@metamask/assets-controllers`

- **CHANGED**: Bump `keyring-internal-api` to `^1.1.0`

### `@metamask/chain-controller`

- **CHANGED**: Bump `keyring-internal-api` to `^1.1.0`

### `@metamask/keyring-controller`

- **CHANGED**: Bump `keyring-api` to `^13.0.0`
- **CHANGED**: Bump `keyring-internal-api` to `^1.1.0`
- **CHANGED**: Await for `generateRandomMnemonic` keyring calls
- Not all keyrings uses an `async` implementation for this method, but
`await`ing should cover both (synchronous and asynchronous) cases.
- This change is required since the bump of `@metamask/utils@^11.0.1`
that changed the `generateRandomMnemonic` function signature for the
`EthKeyring` interface (coming from `@metamask/keyring-internal-api`.

### `@metamask/profile-sync-controller`

- **CHANGED**: Bump `keyring-api` to `^13.0.0`
- **CHANGED**: Bump `keyring-internal-api` to `^1.1.0`

## Checklist

- [ ] I've updated the test suite for new or updated code as appropriate
- [ ] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've highlighted breaking changes using the "BREAKING" category
above as appropriate
- [ ] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes
ccharly added a commit that referenced this pull request Jan 13, 2025
…eature (#5136)

## Explanation

Some accounts packages were not properly versioned when introducing the
new `scopes` feature. This has now been fixed and this PR bumps each
accounts packages accordingly.

## References

- #5066
- MetaMask/accounts#137
- MetaMask/accounts#133

## Changelog

### `@metamask/accounts-controller`

- **CHANGED**: **BREAKING:** Bump `keyring-internal-api` to `^2.0.0`
- **CHANGED**: **BREAKING:** Bump `eth-snap-keyring` to `^8.0.0`

### `@metamask/chain-controller`

- **CHANGED**: **BREAKING:** Bump `keyring-internal-api` to `^2.0.0`

### `@metamask/keyring-controller`

- **CHANGED**: **BREAKING:** Bump `keyring-internal-api` to `^2.0.0`

## Checklist

- [ ] I've updated the test suite for new or updated code as appropriate
- [ ] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've highlighted breaking changes using the "BREAKING" category
above as appropriate
- [ ] I've prepared draft pull requests for clients and consumer
packages to resolve any breaking changes
github-merge-queue bot pushed a commit to MetaMask/metamask-mobile that referenced this pull request Jan 16, 2025
# **Description**

The primary purpose of this PR is to update the accounts controller and
the assets-controller to the latest version. In doing that, there were
several other package updates that were needed. Here is a summary of the
updates...


# 🔴  Major updates 🔴 

### "@metamask/accounts-controller": "^20.0.1" -> ^21.0.0
-
[changelog](https://github.com/MetaMask/core/blob/main/packages/accounts-controller/CHANGELOG.md#2100)
- Breaking changes
- BREAKING: Add scopes field to KeyringAccount
(MetaMask/core#5066),
(MetaMask/core#5136)
This field is now required and will be used to identify the supported
chains (using CAIP-2 chain IDs) for every accounts.
- Changes
- Bump @metamask/base-controller from ^7.0.0 to ^7.1.1
(MetaMask/core#5079),
(MetaMask/core#5135)
- Bump @metamask/utils to ^11.0.1
(MetaMask/core#5080)
- Bump @metamask/rpc-errors to ^7.0.2
(MetaMask/core#5080)
- Use new @metamask/keyring-internal-api@^1.0.0
(MetaMask/core#4695)
This package has been split out from the Keyring API.
- Bump @metamask/keyring-api from ^10.1.0 to ^12.0.0
(MetaMask/core#4695)
- Bump @metamask/eth-snap-keyring from ^5.0.1 to ^7.0.0
(MetaMask/core#4695)
ESM/CommonJS support.

### "@metamask/assets-controllers": "^45.1.1", ->  ^46.0.0",
-
[changelog](https://github.com/MetaMask/core/blob/main/packages/assets-controllers/CHANGELOG.md#4600)
- Breaking changes
- BREAKING: Bump @metamask/accounts-controller peer dependency from
^20.0.0 to ^21.0.0 (MetaMask/core#5140)
- Changes
- Remove use of @metamask/keyring-api
(MetaMask/core#4695)
@metamask/providers and webextension-polyfill peer dependencies are no
longer required.
- Use new @metamask/keyring-internal-api@^1.0.0
(MetaMask/core#4695)
This package has been split out from the Keyring API. Its types are
compatible with the @metamask/keyring-api package used previously.
- Bump @metamask/base-controller from ^7.0.0 to ^7.1.1
(MetaMask/core#5079),
(MetaMask/core#5135)
- Bump @metamask/keyring-api from ^12.0.0 to ^13.0.0
(MetaMask/core#5066)
- Bump @metamask/utils to ^11.0.1
(MetaMask/core#5080)
- Bump @metamask/rpc-errors to ^7.0.2
(MetaMask/core#5080)
- Added
- Add new MultichainBalancesController
(MetaMask/core#4965)
This controller has been migrated from the MetaMask extension codebase.

### "@metamask/utils": "^10.0.1" -> ^11.0.1"
-
[changelog](https://github.com/MetaMask/utils/blob/main/CHANGELOG.md#1101)
- breaking changes
- BREAKING: generateRandomMnemonic now returns Promise<void> instead of
void (MetaMask/utils#222)

### Added "@metamask/keyring-internal-api": "^2.0.0",
-
[changelog](https://github.com/MetaMask/accounts/blob/main/packages/keyring-internal-api/CHANGELOG.md#200)
- This package was a peer dep on the latest accounts controller and
assets controller. Given this I figured we should add it now anyway.
- Changes needed
- update imports from `@metamask/keyring-api` to
`@metamask/keyring-internal-api`
   - add support for scopes in the InternalAccount object
- added migration (066.ts) to backfill the scopes to existing accounts.
- This change is based off a [similar change made in the
extension](MetaMask/metamask-extension#29195)
made by @ccharly

### Added @metamask/keyring-snap-client: "^2.0.0"
-
[changelog](https://github.com/MetaMask/accounts/blob/main/packages/keyring-snap-client/CHANGELOG.md#200)
- Added because KeyringClient is now exported from
`@metamask/keyring-snap-client` instead of `@metamask/keyring-api'`. See
`app/components/Views/AddAccountActions/AddAccountActions.tsx` for
changes.

### "@metamask/keyring-api": "^10.1.0", -> ^13.0.0"
-
[changelog](https://github.com/MetaMask/accounts/blob/main/packages/keyring-api/CHANGELOG.md#1300)
- Breaking changes
- BREAKING: Add scopes field to KeyringAccount
(MetaMask/accounts#101)
- BREAKING: Split into several smaller packages
(MetaMask/accounts#24)
        - This should improve dependencies management.
- Internal related types (internal to both clients) have been moved to
keyring-internal-* packages.
- Keyring API clients (mainly used by dapps) have been moved to
keyring-snap-client package.
        - Common utils have been moevd to keyring-utils package.

### "@metamask/eth-snap-keyring": "^5.0.1" -> ^7.0.0"
-
[changelog](https://github.com/MetaMask/accounts/blob/main/packages/keyring-eth-simple/CHANGELOG.md#700)
- breaking changes
- BREAKING: Increase minimum Node.js version to 16
(MetaMask/eth-simple-keyring#152)
- BREAKING: Bump @metamask/eth-sig-util from ^6.0.1 to ^7.0.0
(MetaMask/eth-simple-keyring#156)
- Bump @metamask/utils from ^5.0.0 to ^8.1.0
(MetaMask/eth-simple-keyring#153)
- Bump ethereum-cryptography from ^1.2.0 to ^2.1.2
(MetaMask/eth-simple-keyring#153)
- BREAKING: Bump @metamask/eth-sig-util dependency from ^7.0.3 to ^8.0.0
(MetaMask/accounts#79)
- signTypedData no longer support number for addresses, see
[here](https://github.com/MetaMask/eth-sig-util/blob/main/CHANGELOG.md#800).

## 🟡 Minor updates 🟡 

### "@metamask/base-controller": "^7.0.1", -> ^7.1.1
-
[changelog](https://github.com/MetaMask/core/blob/main/packages/base-controller/CHANGELOG.md#711)
- Changes
    -  Bump @metamask/utils from ^10.0.0 to ^11.0.1
- Rename ControllerMessenger to Messenger
(MetaMask/core#5050)
        - ControllerMessenger has been renamed to Messenger
- RestrictedControllerMessengerConstraint has been renamed to
RestrictedMessengerConstraint
- RestrictedControllerMessenger has been renamed to RestrictedMessenger
- The RestrictedMessenger constructor parameter controllerMessenger has
been renamed to messenger, though the old name is still accepted
- The old names remain exported as deprecated aliases of the new names,
so this is not a breaking change.

### "@metamask/providers": "^18.1.0" -> ^18.3.1"
-
[changelog](https://github.com/MetaMask/providers/blob/main/CHANGELOG.md#1831)
- Changes
- Bump @metamask/json-rpc-engine from ^10.0.1 to ^10.0.2
(MetaMask/providers#397)
- Bump @metamask/json-rpc-middleware-stream from ^8.0.5 to ^8.0.6
(MetaMask/providers#397)
- Bump @metamask/rpc-errors from ^7.0.1 to ^7.0.2
(MetaMask/providers#397)
- Bump @metamask/utils from ^10.0.0 to ^11.0.1
(MetaMask/providers#397)


## 🟢  Patch updates 🟢 

### "@metamask/json-rpc-engine": "^10.0.0" -> ^10.0.2",
-
[changelog](https://github.com/MetaMask/core/blob/main/packages/json-rpc-engine/CHANGELOG.md#1002)

### "@metamask/json-rpc-middleware-stream": "^8.0.2" -> 8.0.6"
-
[changelog](https://github.com/MetaMask/core/blob/main/packages/json-rpc-middleware-stream/CHANGELOG.md#806)
- changed
- Bump @metamask/json-rpc-engine from ^10.0.1 to ^10.0.2
(MetaMask/core#5082)
- Bump @metamask/utils from ^10.0.0 to ^11.0.1
(MetaMask/core#5080)

### "@metamask/rpc-errors": "^7.0.1" -> ^7.0.2"
-
[changelog](https://github.com/MetaMask/rpc-errors/blob/main/CHANGELOG.md#702)
- changes
- Bump @metamask/utils from ^10.0.0 to ^11.0.1
(MetaMask/rpc-errors#166)


## **Related issues**

Fixes: #12967
Fixes: #12966

Fixes: MetaMask/accounts-planning#758

Unblocks: #12599

## **Manual testing steps**

#### Basic import account flow with tokens


https://github.com/user-attachments/assets/1a8d3e59-34e4-413e-a3e8-7dbdc5f7424a



## **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 Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/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-mobile/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.
github-merge-queue bot pushed a commit to MetaMask/metamask-extension that referenced this pull request Jan 21, 2025
## **Description**

Testing the new `scopes` added on the `KeyringAccount`.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29195?quickstart=1)

## **Related issues**

Requires this PR to be merged first:
- [x] #28861

Related to:
- MetaMask/accounts#101
- MetaMask/core#5066
- MetaMask/snap-bitcoin-wallet#364

## **Manual testing steps**

- Use a previous stable version
```console
git checkout Version-v12.10.0 # Or use a release build
```

- Run it:
```console
yarn
yarn start:flask
```

- Create a bunch of accounts (EVM, non-EVM (Solana/Bitcoin),
hardware-wallet, Snap EVM accounts like the SSK)

![Screenshot 2025-01-16 at 17 11
55](https://github.com/user-attachments/assets/815303e6-2682-4c6b-9969-8f4a8c11e0d7)

- Save your extension logs (Settings > Advanced)
- Now disable your extension (chrome://extensions)
- Stops your `yarn start:flask`
- Now, update your extension by going back to this PR (or by using the
latest RC if you're validating an RC version)

```console
git checkout feat/keyring-account-scopes
```
- Re-run it:
```console
yarn
yarn start:flask
```
- Re-enable your extension (chrome://extensions)
- Open up your console logs (looking at the `service worker`)
- You should now see some migrations running like:

![Screenshot 2025-01-16 at 17 14
03](https://github.com/user-attachments/assets/35c08ba9-83f4-4827-aac5-97b9ee055732)

- You should also see some other migrations from the Snap keyring this
like so:

![Screenshot 2025-01-16 at 18 52
48](https://github.com/user-attachments/assets/5c74700c-18a4-4452-8a47-77d1434c96ad)

- Save your extension logs again (Settings > Advanced, and use a
different filename)
- Now, compare your 2 `.json` files

## **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.

---------

Co-authored-by: Howard Braham <[email protected]>
Co-authored-by: MetaMask Bot <[email protected]>
jiexi added a commit to MetaMask/metamask-extension that referenced this pull request Jan 22, 2025
commit 01c9fbd76ca73d1012f30376cc6cfff8b4769b03
Author: Bryan Fullam <[email protected]>
Date:   Wed Jan 22 19:37:11 2025 +0100

    feat: solana swap and bridge navigation (#29705)

    <!--
    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**

    Enables swap and bridge buttons for non-evm networks and makes both of
    those buttons navigate to the bridge interface. Also fences the feature
    behind a code fence at the build level.

    <!--
    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?
    -->

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29705?quickstart=1)

    ## **Related issues**

    Fixes:

    ## **Manual testing steps**

    1. Run repo with "yarn start:flask" command
    2. Enable "Add a new Solana account (Beta)" toggle in experimental
    settings
    3. Add a Solana account through the account dropdown
    4. Go to home page while having Solana account selected
    5. Click swap or bridge
    6. See bridge interface

    ## **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.

commit ed2fb49150e97c2db2582fe12fc1bc6f5cc1e3cc
Author: Hassan Malik <[email protected]>
Date:   Wed Jan 22 12:04:22 2025 -0500

    fix: centering on Snap radio buttons (#29850)

    ## **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? Radio buttons were not aligned
    with their labels in the snap component.
    2. What is the improvement/solution? Strip radio button of margin.

    ## **Related issues**

    Fixes: #29725

    ## **Manual testing steps**

    1. Build this branch
    2. Go to https://metamask.github.io/snaps/test-snaps/2.18.0/
    3. Trigger the custom ui interactive snap dialog
    4. Observe the changes below.

    ## **Screenshots/Recordings**

    ### **Before**

    [See issue](https://github.com/MetaMask/metamask-extension/issues/29725)

    ### **After**

    <img width="380" alt="Screenshot 2025-01-22 at 9 47 19 AM"
    src="https://github.com/user-attachments/assets/411479ea-b027-4581-9df1-64edf4e75a9c"
    />

    ## **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.

commit 82db3eea1108ae0417ab2b6cfd5c6405d491a8b1
Author: Pedro Figueiredo <[email protected]>
Date:   Wed Jan 22 16:59:21 2025 +0000

    feat: Remove 'Improved signature requests' setting toggle (#29819)

    <!--
    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**

    Removes the settings toggle for redesigned signatures. Removes e2e tests
    used for old flows no longer supported. For
    `test/e2e/tests/metrics/signature-approved.spec.js`, the tests were
    migrated to the redesigned confirmation screen.

    <!--
    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?
    -->

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29819?quickstart=1)

    ## **Related issues**

    Fixes: https://github.com/MetaMask/MetaMask-planning/issues/3029

    ## **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.

commit 50246152bd4fc9d4a2dada96e9a89ee65a1d30e2
Author: Norbert Elter <[email protected]>
Date:   Wed Jan 22 17:01:26 2025 +0100

    feat: build beta (#29712)

    <!--
    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?
    -->

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29712?quickstart=1)

    This PR migrates the beta build from CircleCI to GitHub Actions.

    ## **Related issues**

    Fixes: https://github.com/MetaMask/metamask-extension/issues/28572,
    https://github.com/MetaMask/metamask-extension/issues/29446

    ## **Manual testing steps**

    For commit messages matching the pattern: `Version v0.0.0-beta.0` on any
    branch other than `master,` the following should happen:

    1. Build should run on GH Actions
    2. Build should be uploaded on S3
    3. Build should appear in the metamaskbot comment

    ## **Screenshots/Recordings**

    Not applicable

    ## **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.

commit 615c469c2e562faa15f3a98849432a8095ce2153
Author: Micaela Estabillo <[email protected]>
Date:   Wed Jan 22 07:37:47 2025 -0800

    fix: handle undefined token address in useBridging hook (#29832)

    <!--
    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?
    -->
    Changes
    - gracefully handle tokens for which there is no `address` field in
    useBridging
    - fallback to src token in swaps fetchParams when reopening extension
    and linking to the Bridge page

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29832?quickstart=1)

    ## **Related issues**

    Fixes:
    https://metamask.sentry.io/issues/6223741673/?environment=production&project=273505&query=is%3Aunresolved%20issue.priority%3A%5Bhigh%2C%20medium%5D%20firstRelease%3Alatest&referrer=issue-stream&sort=date&statsPeriod=7d&stream_index=12

    ## **Manual testing steps**

    1. Request a swap quote
    2. Close extension
    3. Reopen extensionm, which should redirect to Swaps page
    5. Click "Swap across networks with Bridge" link
    6. Bridge page should load with native asset as src token

    ## **Screenshots/Recordings**

    <!-- If applicable, add screenshots and/or recordings to visualize the
    before and after of your change. -->

    ### **Before**

    https://github.com/user-attachments/assets/0251bf1b-4621-49fa-ab6a-e547f977df22

    <!-- [screenshots/recordings] -->

    ### **After**

    https://github.com/user-attachments/assets/549de95c-d325-469a-944d-049455b9e25b

    <!-- [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.

commit 2da82c9e2570d944fd8bdc8b4af357f61f979f8a
Author: Gustavo Antunes <[email protected]>
Date:   Wed Jan 22 09:29:41 2025 -0300

    chore: upgrade `@metamask/user-operation-controller` (#29839)

    <!--
    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?
    -->

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29839?quickstart=1)

    ## **Related issues**

    Fixes: https://github.com/MetaMask/metamask-extension/issues/29681

    ## **Manual testing steps**

    E2E is enough to test the changes.

    ## **Screenshots/Recordings**

    <!-- If applicable, add screenshots and/or recordings to visualize the
    before and after of your change. -->

    No UI/UX changes

    ## **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]>

commit feb89fad247b1cb45a05c498ed7f0691590ed8d3
Author: Hassan Malik <[email protected]>
Date:   Wed Jan 22 04:35:45 2025 -0500

    fix: overflow of title/description in Snap `Card` component (#29838)

    ## **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? Text overflow was not properly
    working for the title & description section of the `Card` snap
    component.
    2. What is the improvement/solution? Add a constraint to the parent
    container.

    ## **Related issues**

    Fixes: https://github.com/MetaMask/snaps/issues/2815

    ## **Manual testing steps**

    1. Build the extension
    2. Trigger a snap dialog with the example code in the issue
    3. Observe the below changes.

    ## **Screenshots/Recordings**

    ### **Before**

    [See issue link](https://github.com/MetaMask/snaps/issues/2815)

    ### **After**

    <img width="380" alt="Screenshot 2025-01-21 at 6 49 00 PM"
    src="https://github.com/user-attachments/assets/e3486c52-803d-4936-87b1-9117a788c854"
    />

    <img width="380" alt="Screenshot 2025-01-21 at 6 48 00 PM"
    src="https://github.com/user-attachments/assets/2371cd8c-be2d-49e2-9214-66302eff1c13"
    />

    ## **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.

commit 27c1231e11604603b3747388958dd7152953d3b3
Author: Priya <[email protected]>
Date:   Wed Jan 22 10:35:25 2025 +0100

    chore: update test dapp version to 9.0.0 (#29827)

    <!--
    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?
    -->

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29827?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.

commit d097924275d44d4d10fa1689e193fd9ef02479a6
Author: infiniteflower <[email protected]>
Date:   Wed Jan 22 06:53:47 2025 +0900

    fix: not routing to home page after bridge tx submitted (#29809)

    <!--
    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?
    -->

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29809?quickstart=1)

    This PR fixes an issue where you would not be routed back to the Home
    Activity tab after submitting a bridge transaction.

    ## **Related issues**

    Fixes: https://github.com/MetaMask/metamask-extension/issues/29793

    ## **Manual testing steps**

    1. Go to Bridge
    2. Submit a bridge tx
    3. Observe that you are sent to the Activity screen right after

    ## **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
    - [ ] I’ve included tests if applicable
    - [ ] 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.

commit f856a3b423a4316f14d2e5d7cd0297f76566f70a
Author: Charly Chevalier <[email protected]>
Date:   Tue Jan 21 18:18:52 2025 +0100

    feat: add `scopes` field to `KeyringAccount` (#29195)

    ## **Description**

    Testing the new `scopes` added on the `KeyringAccount`.

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29195?quickstart=1)

    ## **Related issues**

    Requires this PR to be merged first:
    - [x] https://github.com/MetaMask/metamask-extension/pull/28861

    Related to:
    - https://github.com/MetaMask/accounts/pull/101
    - https://github.com/MetaMask/core/pull/5066
    - https://github.com/MetaMask/snap-bitcoin-wallet/pull/364

    ## **Manual testing steps**

    - Use a previous stable version
    ```console
    git checkout Version-v12.10.0 # Or use a release build
    ```

    - Run it:
    ```console
    yarn
    yarn start:flask
    ```

    - Create a bunch of accounts (EVM, non-EVM (Solana/Bitcoin),
    hardware-wallet, Snap EVM accounts like the SSK)

    ![Screenshot 2025-01-16 at 17 11
    55](https://github.com/user-attachments/assets/815303e6-2682-4c6b-9969-8f4a8c11e0d7)

    - Save your extension logs (Settings > Advanced)
    - Now disable your extension (chrome://extensions)
    - Stops your `yarn start:flask`
    - Now, update your extension by going back to this PR (or by using the
    latest RC if you're validating an RC version)

    ```console
    git checkout feat/keyring-account-scopes
    ```
    - Re-run it:
    ```console
    yarn
    yarn start:flask
    ```
    - Re-enable your extension (chrome://extensions)
    - Open up your console logs (looking at the `service worker`)
    - You should now see some migrations running like:

    ![Screenshot 2025-01-16 at 17 14
    03](https://github.com/user-attachments/assets/35c08ba9-83f4-4827-aac5-97b9ee055732)

    - You should also see some other migrations from the Snap keyring this
    like so:

    ![Screenshot 2025-01-16 at 18 52
    48](https://github.com/user-attachments/assets/5c74700c-18a4-4452-8a47-77d1434c96ad)

    - Save your extension logs again (Settings > Advanced, and use a
    different filename)
    - Now, compare your 2 `.json` files

    ## **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.

    ---------

    Co-authored-by: Howard Braham <[email protected]>
    Co-authored-by: MetaMask Bot <[email protected]>

commit fcb30d7034f9fed385d874897a445330b5b47473
Author: Elliot Winkler <[email protected]>
Date:   Tue Jan 21 08:50:04 2025 -0700

    fix: Remove old properties from state (#29792)

    <!--
    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?
    -->

    There are several kinds of errors in Sentry which indicate that there
    are properties in controller state we are attempting to persist that do
    not have corresponding metadata. This indicates that these properties
    were removed at some point from the controller's state but no migration
    was added that removed them from the persisted wallet state. In many
    cases, at the time of removal, such a migration was not needed because
    the controller in question inherited from BaseController v1. We have
    made a targeted effort over the past few years to migrate all
    controllers to BaseController v2, however, and so it matters now that
    every property have corresponding metadata or else are removed from
    state. We don't want these errors to show up in Sentry because they
    create noise, so this commit removes these properties from state.

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29792?quickstart=1)

    ## **Related issues**

    Fixes #28289.
    Fixes #28290.
    Fixes #28300.
    Fixes #28302.
    Fixes #28344.
    Fixes #28608.
    Fixes #29746.

    ## **Manual testing steps**

    These changes should not affect users in any way since the errors we are
    trying to avoid occur out of band and should not crash anything.

    ## **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.

commit 212b5c946a4a27d8a21c856f2b3e958a88f7ac7b
Author: João Tavares <[email protected]>
Date:   Tue Jan 21 15:35:01 2025 +0000

    test: address integration tests warnings (#29007)

    <!--
    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**
    General improvements/fixes for integration tests.

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29007?quickstart=1)

    ## **Related issues**

    Fixes: https://github.com/MetaMask/metamask-extension/issues/29002

    ## **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.

commit 64e2c3fb041ae9457da1a0ab333613f95bd22eaf
Author: Priya <[email protected]>
Date:   Tue Jan 21 12:02:10 2025 +0100

    fix: Remove scroll to bottom requirement for signatures (#29817)

    Reverts MetaMask/metamask-extension#29808

    Removes scroll to bottom requirement on signatures
    Improves the clickElementSafe function

commit bb9250d5b5f3a366e279b53cc45ddb100696ddeb
Author: weizman <[email protected]>
Date:   Tue Jan 21 09:18:24 2025 +0200

    feat(lavamoat/lavadome): update integration to improve security (#25653)

    Address concerns under [Safe
    Usage](https://github.com/LavaMoat/LavaDome/blob/main/README.md#safe-usage):
    * [#csp](https://github.com/LavaMoat/LavaDome/blob/main/README.md#csp) -
    do not allow font to be fetched from just about anywhere
    *
    [#execution-order](https://github.com/LavaMoat/LavaDome/blob/main/README.md#execution-order)
    - make sure LavaDome is imported right away

    This should go with #27756

commit ecc29079d7e32882b06b805d35849447afc181d7
Author: Prithpal Sooriya <[email protected]>
Date:   Mon Jan 20 20:24:07 2025 +0000

    build: update the patches applied in the package.json (#29807)

    <!--
    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**

    I think there was a small syntax error when adding multiple patches

    <!--
    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?
    -->

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29807?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.

commit c99eae23cf40507e5a6e1996b4af190efc205aef
Author: Pedro Figueiredo <[email protected]>
Date:   Mon Jan 20 21:27:31 2025 +0100

    fix: Revert "fix: Remove scroll to bottom requirement for signatures" (#29808)

    Reverts MetaMask/metamask-extension#29784 to address CI failures on
    `main` caused by that PR

commit 210c794a372e29bc953a5c28f824422fe4db6743
Author: Maarten Zuidhoorn <[email protected]>
Date:   Mon Jan 20 18:08:24 2025 +0100

    chore: Bump `@metamask/snaps-rpc-methods` from `^11.9.0` to `^11.9.1` (#29805)

    ## **Description**

    This bumps `@metamask/snaps-rpc-methods` from `^11.9.0` to `^11.9.1`,
    which fixes some bugs and improves error messages related to state
    management.

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29805?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.

commit 5e95217ded0c7ab19b0aa6a676b6acb2f924f942
Author: Jony Bursztyn <[email protected]>
Date:   Mon Jan 20 15:00:56 2025 +0000

    feat: add Portfolio button to BTC accounts (#28184)

    <!--
    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**

    Readds the "Portfolio" button for non-EVM accounts

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/28184?quickstart=1)

    ## **Related issues**

    Fixes: https://github.com/MetaMask/metamask-extension/pull/26148
    https://github.com/MetaMask/metamask-extension/issues/28185

    ## **Manual testing steps**

    1. Go to the Wallet page
    2. Switch to a BTC account
    3. The Portfolio button should be there

    ## **Screenshots/Recordings**

    <!-- If applicable, add screenshots and/or recordings to visualize the
    before and after of your change. -->

    ### **Before**

    <img width="142" alt="before"
    src="https://github.com/user-attachments/assets/2ff13df2-7db1-44e3-a36c-b9a85248b3c1"
    />

    ### **After**

    <img width="142" alt="Screenshot 2025-01-17 at 14 50 46"
    src="https://github.com/user-attachments/assets/6c65ad87-1822-4fb1-a07b-31dde9066f52"
    />

    ## **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.

commit d5cd7fd3ad3421952a1222d5115756fac134b95b
Author: jiexi <[email protected]>
Date:   Mon Jan 20 06:26:10 2025 -0800

    feat: Migrate eth_accounts and permittedChains to CAIP-25 endowment (#27847)

    <!--
    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 replaces the replaces the internal `eth_accounts` and
    `endowment:permittedChains` permission structure with a
    [CAIP-25](https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-25.md)
    endowment. It adds adapter logic to translate to and from the new
    internal CAIP-25 permissions. This change should be transparent to
    wallet users and to dapps except for ~one~ two cases, see below. This
    change is required in order to support CAIP-25 and CAIP-27 requests in a
    follow-up PR that enables the Multichain API.

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/27847?quickstart=1)

    ## **Related issues**

    Related: https://github.com/MetaMask/core/pull/4784

    ## **Manual testing steps**

    There should be no user or dapp facing difference in behavior except:

    * When calling `wallet_revokePermissions` and specifying either
    `eth_accounts` or `endowment:permitted-chains`, the entire CAIP-25
    permission will be revoked. It will appear to the dapp as if both
    `eth_accounts` and `endowment:permitted-chains` were revoked.
    * When calling `wallet_getPermissions` for a permitted dapp when the
    wallet is **locked**, `eth_accounts` should be returned in addition to
    `endowment:permitted-chains`. Currently there is a regression on `main`
    where only `endowment:permitted-chains` gets returned when the wallet is
    locked.

    ```
    await window.ethereum.request({
     "method": "wallet_revokePermissions",
     "params": [
      {
        eth_accounts: {}
      }
    ],
    });

    await window.ethereum.request({
     "method": "wallet_revokePermissions",
     "params": [
      {
        'endowment:permitted-chains': {}
      }
    ],
    });

    await window.ethereum.request({
     "method": "wallet_getPermissions",
     "params": [],
    });
    ```

    ### Locked Wallet Behavior with dapp connected
    Other than the two noted items below, this behavior matches that in
    `main`

    - `eth_accounts` returns []
    - `wallet_getPermissions` returns permissions incl eth_accounts
    - `wallet_revokePermissions` works as usual and revokes eth_accounts and
    revoke permitted-chains together
    - * Note this fixes a regression in `main` where eth_accounts and
    permitted-chains aren't revoked as a pair if either is revoked
    - `eth_requestAccounts` prompts for unlock, after unlock returns
    accounts if any are permitted, otherwise shows connection prompt
    - `wallet_requestPermissions` prompts for unlock
    - signature methods fails with method or accounts not authorized
    - non-signature methods work as usual
    - `accountsChanged` empty array on lock. no event after
    revokePermissions which makes sense since the dapp was told empty array
    on lock and now it's actually empty array so no changes have occurred as
    far as the dapp should be concerned.
    - **CHANGED**: for dapps that were granted chain permissions via the
    `wallet_addEthereum` or `wallet_switchEthereumChain` flows without
    account permissions, these permissions will be removed with this
    migration. We think this ok because:
    - This is a very uncommon scenario for dapps to request chain switches
    without account permissions.
    - These permissions can be regained very trivially with subsequent chain
    switch requests.

    ### Testing the migration
    * Create a dev build from `main`
    * Install the dev build from the `dist/chrome` directory and proceed
    through onboarding
    * Run this command in the background console:
      ```
      chrome.storage.local.get(
        null,
        (state) => {
    state.data.PermissionController = {}; // Replace this line based on
    instructions below
          chrome.storage.local.set(state, () => chrome.runtime.reload());
        }
      );
      ```
    * Disable the extension
    * Switch to `main` and create a dev build
    * Enable and reload the extension
      * You should see in the console that migration 139 has failed

    Repeat the above steps but with the line above replaced with the
    following for example:
    * `state.data.NetworkController = {}; `
    * `state.data.NetworkController = 'foobar'; `
    * `state.data.NetworkController.selectedNetworkClientId = null;`
    * `state.data.NetworkController.networkConfigurationsByChainId =
    'foobar';`

    ## **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/develop/.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/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: MetaMask Bot <[email protected]>
    Co-authored-by: Alex <[email protected]>
    Co-authored-by: Elliot Winkler <[email protected]>
    Co-authored-by: Mark Stacey <[email protected]>
    Co-authored-by: Erik Marks <[email protected]>
    Co-authored-by: Frederik Bolding <[email protected]>

commit 5ae45abf4d88d5643cf21d11b7d89c4e4607ffd9
Author: chloeYue <[email protected]>
Date:   Mon Jan 20 14:53:03 2025 +0100

    test: [POM] Migrate bitcoin send e2e tests to POM (#29515)

    ## **Description**

    - Migrate send transaction e2e tests with bitcoin account to POM
    - Create related Bitcoin transaction page class and methods.

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/27155?quickstart=1)

    ## **Related issues**

    ## **Manual testing steps**
    Check code readability, make sure tests pass.

    ## **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/develop/.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/develop/.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.

commit 2d335c6509e27ac32731dcef0a3c338cf3584ca2
Author: Priya <[email protected]>
Date:   Mon Jan 20 13:13:07 2025 +0100

    fix: Remove scroll to bottom requirement for signatures (#29784)

    <!--
    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**

    Removes scroll to bottom requirement on signatures
    Improves the clickElementSafe function

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29784?quickstart=1)

    ## **Related issues**

    Fixes:
    [#29779](https://github.com/MetaMask/metamask-extension/issues/29779)

    ## **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.

commit 27d2706008652602d7d950e701460569a1390ed9
Author: sahar-fehri <[email protected]>
Date:   Mon Jan 20 12:06:50 2025 +0100

    fix: patch mantle price fix (#29790)

    ## **Description**

    PR to patch Mantle price core
    [fix](https://github.com/MetaMask/core/pull/5099)

    current Mantle price:
    https://www.cryptocompare.com/coins/mantle/overview/USDC

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29790?quickstart=1)

    ## **Related issues**

    Fixes:

    ## **Manual testing steps**

    1. Add Mantle network from chainList (chainId 5000)
    2. Go to MM and you should see correct fiat balance

    ## **Screenshots/Recordings**

    <!-- If applicable, add screenshots and/or recordings to visualize the
    before and after of your change. -->

    ### **Before**

    <!-- [screenshots/recordings] -->
    <img width="1800" alt="Screenshot 2025-01-17 at 21 18 51"
    src="https://github.com/user-attachments/assets/1100b7a1-d143-46fd-98b4-4a064f700aa2"
    />

    ### **After**

    <!-- [screenshots/recordings] -->

    <img width="1797" alt="Screenshot 2025-01-17 at 21 17 08"
    src="https://github.com/user-attachments/assets/e166c121-b484-4da4-935e-cb43ad1b7fa5"
    />

    ## **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.

commit 5887e05bdd1db65710d58dcac4512858b042ba06
Author: OGPoyraz <[email protected]>
Date:   Mon Jan 20 12:01:12 2025 +0100

    feat: Use `gasLimitNoBuffer` on network fee estimation (#29502)

    <!--
    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?
    -->

    While estimating gas for the transaction we add `50%` gas limit buffer.
    With this PR we want to show network fee without gas limit buffer using
    `gasLimitNoBuffer` property on `transactionMeta`.

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29502?quickstart=1)

    ## **Related issues**

    Fixes: https://github.com/MetaMask/MetaMask-planning/issues/3773

    ## **Manual testing steps**

    N/A

    ## **Screenshots/Recordings**

    <!-- If applicable, add screenshots and/or recordings to visualize the
    before and after of your change. -->

    In the recording you will see that `gasLimitNoBuffer` used over
    `txParams.gas`. Please see that `txParams.gas` is greater than
    `gasLimitNoBuffer`. This calculation leads lower value in the UI.

    https://github.com/user-attachments/assets/b5726828-7c13-4eb4-83fa-eea21562e6a9

    ### **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.

commit 2751a0d0b6f723718296b1b3ea5f6aef2dc38955
Author: Micaela Estabillo <[email protected]>
Date:   Fri Jan 17 11:28:25 2025 -0800

    chore: retain src input amount after switching tokens (#29709)

    <!--
    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?
    -->

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29709?quickstart=1)

    ## **Related issues**

    Fixes:   https://consensyssoftware.atlassian.net/browse/MMS-1798

    ## **Manual testing steps**

    1. Load bridge page
    2. Select amount, src token and dest token
    3. Click token switch button to swap src and dest selections
    4. Verify that src amount is preserved

    ## **Screenshots/Recordings**

    <!-- If applicable, add screenshots and/or recordings to visualize the
    before and after of your change. -->

    ### **Before**

    Amount is cleared

    ### **After**
    Amount is preserved

    <!-- [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.

commit 582ec932f3c4b4a7002f439095c98a7e76b8ab20
Author: Mark Stacey <[email protected]>
Date:   Fri Jan 17 13:02:15 2025 -0330

    test: Fix invalid fixture builder (#29783)

    ## **Description**

    Two of the permission fixture builders were adding permissions for
    accounts that do not exist. They have been updated to only grant
    permissions for the selected account, which is the only account
    guaranteed to exist in the default fixture.

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29783?quickstart=1)

    ## **Related issues**

    This was extracted from
    https://github.com/MetaMask/metamask-extension/pull/27847

    ## **Manual testing steps**

    See that E2E tests still pass

    ## **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.

commit 3b856331b6e26b8d879206850be2e327220de38e
Author: Brian Bergeron <[email protected]>
Date:   Fri Jan 17 07:56:53 2025 -0800

    fix: stop polling on environment close (#29707)

    ## **Description**

    When the asset controllers start polling, they add their polling tokens
    to app state, keyed by the particular environment (popup vs fullscreen).
    But these polling tokens in app state were not being used during
    cleanup. This PR updates `onEnvironmentTypeClosed` to stop polling by
    those tokens.

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29707?quickstart=1)

    ## **Related issues**

    ## **Manual testing steps**

    1. Open MM in fullscreen
    2. Open MM popup
    3. Close the popup
    4. `onEnvironmentTypeClosed` should fire for the popup environment
    5. Each polling token should be found and removed by one of the
    controllers

    ## **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.

commit 8038f4de18ada13fbd3f29f78a315a981839dad7
Author: Daniel <[email protected]>
Date:   Fri Jan 17 16:43:20 2025 +0100

    feat: Enable BSC for smart transactions (#29747)

    ## **Description**
    Enables BSC for smart transactions and reduces status check time to 1s.

    We can turn off BSC support for smart transactions remotely if needed.

    [![Open in GitHub
    Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29747?quickstart=1)

    ## **Related issues**

    Fixes:

    ## **Manual testing steps**

    1. Make sure smart transactions are enabled in Advanced Settings
    2. Be on the BNB Chain
    3. Submit a tx. It will be submitted as a smart transaction

    Happy paths tested for Swaps, Send and dapp transactions, but this will
    require extensive testing before it goes to production.

    ## **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.

commit 8f82ac4f13cb1a67463bec35ca3c977cce4e8a3d
Author: Michele Esposito <[email protected]>
Date:   Fri Jan 17 13:34:02 2025 +0100

    refactor: use `withKeyring` method (#25435) (#27025)

    <!--
    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 cherry-picks def6b15 into `develop`, after being reverted at
    821c3bd. The reason the original commit was re…
Akaryatrh pushed a commit to MetaMask/metamask-extension that referenced this pull request Jan 23, 2025
## **Description**

Testing the new `scopes` added on the `KeyringAccount`.

[![Open in GitHub
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/29195?quickstart=1)

## **Related issues**

Requires this PR to be merged first:
- [x] #28861

Related to:
- MetaMask/accounts#101
- MetaMask/core#5066
- MetaMask/snap-bitcoin-wallet#364

## **Manual testing steps**

- Use a previous stable version
```console
git checkout Version-v12.10.0 # Or use a release build
```

- Run it:
```console
yarn
yarn start:flask
```

- Create a bunch of accounts (EVM, non-EVM (Solana/Bitcoin),
hardware-wallet, Snap EVM accounts like the SSK)

![Screenshot 2025-01-16 at 17 11
55](https://github.com/user-attachments/assets/815303e6-2682-4c6b-9969-8f4a8c11e0d7)

- Save your extension logs (Settings > Advanced)
- Now disable your extension (chrome://extensions)
- Stops your `yarn start:flask`
- Now, update your extension by going back to this PR (or by using the
latest RC if you're validating an RC version)

```console
git checkout feat/keyring-account-scopes
```
- Re-run it:
```console
yarn
yarn start:flask
```
- Re-enable your extension (chrome://extensions)
- Open up your console logs (looking at the `service worker`)
- You should now see some migrations running like:

![Screenshot 2025-01-16 at 17 14
03](https://github.com/user-attachments/assets/35c08ba9-83f4-4827-aac5-97b9ee055732)

- You should also see some other migrations from the Snap keyring this
like so:

![Screenshot 2025-01-16 at 18 52
48](https://github.com/user-attachments/assets/5c74700c-18a4-4452-8a47-77d1434c96ad)

- Save your extension logs again (Settings > Advanced, and use a
different filename)
- Now, compare your 2 `.json` files

## **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.

---------

Co-authored-by: Howard Braham <[email protected]>
Co-authored-by: MetaMask Bot <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants