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

V12.1.0 updated #26519

Merged
merged 58 commits into from
Aug 22, 2024
Merged

V12.1.0 updated #26519

merged 58 commits into from
Aug 22, 2024

Conversation

danjm
Copy link
Contributor

@danjm danjm commented Aug 19, 2024

This PR merged v12.0.1-v12.0.5 into Version-v12.1.0

It also corrects merge conflict errors that were made in the following files:

  • ui/pages/onboarding-flow/metametrics/metametrics.js
  • ui/pages/confirmations/hooks/alerts/useBlockaidAlerts.ts
  • ui/components/multichain/pages/send/index.scss
  • ui/components/multichain/network-list-menu/network-list-menu.js
  • ui/components/multichain/asset-picker-amount/asset-picker/asset-picker.tsx

Adds a missing patch for keyring controller v16.1.0 (which should have been included when master was first merged into Version-v12.1.0)

As part of merging v12.0.1-v12.0.5, this PR cherry-picks e6d7a57. Two versions of that commit were made. One was cherry-picked to v12.0.0, and one was merged to develop. This was to accomodate different versions of the snaps utils package. The commit merged to develop patched the snap-utils version on v12.1.0, so we need to cherry-pick that.

Gudahtt and others added 30 commits July 31, 2024 11:47
## **Description**

The `create_release_pull_request` job has been failing since we switched
to using a shallow checkout by default. It's failing because the first
step of this job uses the `yarn version` command, which expects a full
repository history for some reason. The script works again with a full
checkout.

Example failure:
https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/94314/workflows/e2b01944-7607-4714-9cac-01489cce3d2e/jobs/3510394

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

## **Related issues**

N/A

## **Manual testing steps**

I was able to reproduce the failure by running the shallow checkout
steps locally, then running the `release-bump-manifest-version.sh`
script. I tested that this worked by doing the same thing with a full
checkout. Note that you need to set the `CI, `CIRCLECI`, and
`CIRCLECI_BRANCH` environment variables for the script to work.

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

The `create_release_pull_request` job is failing due to a lack of memory
during the `yarn version` step. The `yarn version` command appears to
install Yarn dependencies over again. The job where we install Yarn
dependencies uses a "medium" size execution environment because we
encountered similar memory issues there, but the
`create_release_pull_request` job is still using small.

It has been updated to use a medium execution environment, which should
be enough memory given that it's what `prep-deps` uses.

Example failure:
https://app.circleci.com/pipelines/github/MetaMask/metamask-extension/94391/workflows/4fce2a9e-2762-4c07-8617-317b0781dd27/jobs/3513290

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

## **Related issues**

N/A

## **Manual testing steps**

We should be able to reproduce this by running the job in a Docker
image. But I have not tried this. Probably easier to merge it and see if
it works in this case.

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

These two entries were for release automation script changes, not user-
facing. They can be omitted.

The changelog for the current RC is now empty, but we can update it
later after we add more changes.


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

## **Related issues**

N/A

## **Manual testing steps**

N/A

## **Screenshots/Recordings**

N/A

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/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.
## **Description**

Cherry-picks
fcf474c
to the RC.

Description from the original PR:

Fixes a bug where `ComposableObservableStore` would allow non-persistent
state properties in its `initialState`. This in turn would cause state
properties flagged as non-persistent to be persisted until a controller
state change.

This PR addresses this by taking the `persist` flag into account when
deriving the initial state for each controller. If the controller does
not support `metadata` or persistence is disabled, everything should
continue to work as-is.

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

We are seeing a pair of sentry errors for a failing deconstruction
error, `Cannot destructure property 'id' of '(intermediate value)' as it
is null`:

-
https://metamask.sentry.io/issues/5093909594/?project=273505&query=is%3Aunresolved+Cannot+destructure+property+%27id%27+of&referrer=issue-stream&statsPeriod=14d&stream_index=0
-
https://metamask.sentry.io/issues/5093909594/?project=273505&query=is%3Aunresolved+Cannot+destructure+property+%27id%27+of&referrer=issue-stream&statsPeriod=14d&stream_index=0

This is because instead of returning an error when a transaction fails,
we return `null` for the metadata.

This PR addresses the underlying issue by rethrowing the error for a
failed transaction request, then adding UI treatments for the failed
transaction.

<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->

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

Fixes:

1. Add an `Error` right before the `sendTransaction` background method
in `addTransactionAndRouteToConfirmationPage`
2. Go to the send flow
3. Attempt a basic send
4. Ensure that `

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

https://github.com/user-attachments/assets/0342e322-4348-47bd-8bfc-3f92db8f1001

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

https://github.com/user-attachments/assets/32ba3e75-f266-48c0-abfa-3816c4d3abd5

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

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

- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

We have discovered a sentry error for the swaps flow in extension:


https://metamask.sentry.io/issues/5659965775/?environment=production&project=273505&query=firstRelease%3A12.0.0&referrer=issue-stream&sort=freq&statsPeriod=90d&stream_index=17

This error is due to the `draftTransaction` not being defined during
validation; this is resolved with an undefined guard. This error appears
in other actions; it is resolved in these cases as well.

<!--
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/26295?quickstart=1)

## **Related issues**

Fixes:

## **Manual testing steps**

1. Set `state.draftTransactions[state.currentTransactionUUID]` to
`undefined` in `ducks/send/send.js` for all selectors
2. Go to send flow
3. Ensure it loads without error

## **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/fc79f296-5a13-4b84-bb1c-d1ed8613dcad

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

### **After**


https://github.com/user-attachments/assets/8e45be4a-eaef-4ed5-b206-a56daf4b2927


<!-- [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/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.
fix (cherry-pick for v12.0.1): improve error handling for swap and send
This is a cherry-pick of #26247 for v12.0.1. Original description:

## **Description**

For years our release scripts have been creating GitHub releases with
empty descriptions. GitHub uses the commit message as the description as
a default, which is always a merge commit in our case, whcih isn't very
decsriptive. The release scripts are supposed to be setting the
changelog entries for the current release as the description.

This broke when we last changed our CHANGELOG.md format. Specifically it
was the release header change that broke this. We started surrounding
the version number in square brackets, which the awk script did not
expect.

The script that creates the GitHub release has been updated to pass in a
version surrounded by square brackets to the awk script, so it is again
able to find the relevant changelog entries.


[![Open in GitHub

Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/26247?quickstart=1)

## **Related issues**

Fixes: #18468

## **Manual testing steps**

Start by checking out `master. Then look at the
`release-create-gh-release.sh` script, and run the exact same awk
command that is shown there. Replace `${tag##v}` with the release
version minus the v (e.g. `12.0.0`).

Before this PR it was `awk -v version="12.0.0" -f
.circleci/scripts/show-changelog.awk CHANGELOG.md`. This produces no
output.

After this PR, its `awk -v version="[12.0.0]" -f
.circleci/scripts/show-changelog.awk CHANGELOG.md`. This produces the
correct output.

## **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/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.
…ed without checking whether the origin was eligible for setting its own network (#26323)" (#26328)

CherryPicks
80f538e
onto v12.0.1:

> This PR fixes a issue where `setNetworkClientIdForDomain` was
frequently called with origins that had no account permissions yet
(which is the threshhold we currently set for giving site's their own
network) resulting in [a large number of silent errors in the background
that are clogging up
>
sentry](https://metamask.sentry.io/issues/5659582204/?environment=production&project=273505&qu%5B%E2%80%A6%5Derrer=issue-stream&sort=freq&statsPeriod=90d&stream_index=1).
> 
> [![Open in GitHub
>
Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/26323?quickstart=1)
> 
> Fixes:
>
https://metamask.sentry.io/issues/5659582204/?environment=production&project=273505&qu%5B%E2%80%A6%5Derrer=issue-stream&sort=freq&statsPeriod=90d&stream_index=1
Cherry pick #26264
from develop to v12.0.1

This did not cherry pick cleanly, since swaps code was refactored in
#25681 between v12
and develop. But it's just 1 line moved to a different place.

Also some simple conflicts in the imports for confirm-transaction.js
## **Description**

Cherry-pick all commits related to migration 120.2, which removes
obsolete/invalid state.

Included PRs:
* #26265
* #26282
* #26298
* #26302
* #26308
* #26310

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

## **Related issues**

N/A

## **Manual testing steps**

N/A

## **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: Alex Donesky <[email protected]>
Co-authored-by: Frederik Bolding <[email protected]>
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**
Manual Cherry-pick from
#26325.

There were no merge conflicts when picking these commits

<!--
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/26338?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/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.
…sing (#26327) (#26331)

This is a cherry-pick of #26327 for v12.0.1. Original description below:

## **Description**

The `providerConfig` state is not guaranteed to match a built-in or
custom network. It should in the vast majority of cases, but there are
some edge cases where that would not hold true. For example:
* If the wallet crashed partway through removing the current network
* If the user has had the same network selected since before we
introduced the `networkConfigurations` state

The `currentNetwork` selector has been updated to handle this case by
returning a configuration object constructed from the `providerConfig`
state directly.

[![Open in GitHub

Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/26327?quickstart=1)

## **Related issues**

Fixes #26320

## **Manual testing steps**

* Create a dev build and proceed through onboarding
* Run this command in the background console to set `providerConfig` to
a custom network that isn't present in the user's tracked network
configurations:
  ```
  chrome.storage.local.get(
    null,
    (state) => {
      state.data.NetworkController.providerConfig = {
        rpcUrl: 'https://mainnet.optimism.io',
        chainId: '0xa',
        ticker: 'ETH',
        type: 'rpc',
      };
      chrome.storage.local.set(state, () => chrome.runtime.reload());
    }
  );
  ```
* See that the UI can be opened and does not crash.

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

Compress transaction history down to 100 entries and truncate any
existing transaction historys to just 100 entries. This should fix
reports we've seen from production of extremely poor performance and
crashes caused by long transaction histories, and will also prevent this
problem from happening again.

Transaction history has been truncated because in the extreme cases, it
would be prohibitively expensive to compress. The downside is that some
state of how the transaction has changed may be lost. But this is
unlikely to impact users because we only show a limited number of events
from the transaction history in our UI, and these events are more likely
to be at the beginning of long transaction histories. Even if a
displayed event is lost, the impact on the UI is minimal (it's only
shown on the transaction details page under "Activity log", and only for
informational purposes).

For details on how the transaction compression works, and how it
prevents history size from growing unbouned, see
MetaMask/core#4555

The transaction controller change has been applied using a patch. The
patch was generated from the core repository branch
`patch/transaction-controller-v32-compress-history`. It will be made on
`develop` at a later date because it is blocked by other controller
updates at the moment.

The truncation is performed by a migration that was added in #26291 and
cherry-picked into this branch

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

## **Related issues**

Relates to #9372

## **Manual testing steps**

To test the migration:
* Checkout v11.15.6 and create a dev build (unfortunately the repro
steps don't work on MV3 due to snow being enabled even in dev builds, so
we're using a pre-MV3 build)
* Install the dev build from the `dist/chrome` directory and proceed
through onboarding
* Make a single transaction
* Any chain, any transaction, as long as it's approved. We don't even
need to wait for it to settle.
* Run this command in the background console to add a huge history to
the transaction controller and restart the extension:
  ```
  chrome.storage.local.get(
    null,
    (state) => {
      state.data.TransactionController.transactions[0].history.push(
        ...[...Array(100000).keys()].map(() => [
          {
value: '[ethjs-rpc] rpc error with payload
{"id":[number],"jsonrpc":"2.0","params":["0x"],"method":"eth_getTransactionReceipt"}
{ "code": -32603, "message": "Internal JSON-RPC error.", "data": {
"code": -32602, "message": "invalid argument 0: hex string has length 0,
want 64 for common.Hash", "cause": null }, "stack": ...',
            path: '/warning/error',
            op: 'replace'
          },
          {
            note: 'transactions/pending-tx-tracker#event: tx:warning',
            value: 'There was a problem loading this transaction.',
            path: '/warning/message',
            op: 'replace'
          },
        ]),
      );
      chrome.storage.local.set(state, () => chrome.runtime.reload());
    }
  );
  ```
  * The extension should become extremely slow
* Disable the extension
* Switch to this branch and create a dev build
* Enable and reload the extension
  * The extension should no longer be slow

To test that the compression is working, we would want to get a
transaction in a "stuck pending" state where an error is captured each
iteration. I am not yet sure how to do that unfortunately.

## **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/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.
Update changelog for v12.0.1

---------

Co-authored-by: Mark Stacey <[email protected]>
Cherry pick #26381 to
v12.0.2

Co-authored-by: Prithpal Sooriya <[email protected]>
…#26383)

We are seeing the following sorts of errors in production, as reported
by sentry, in v12.0.2:
`No metadata found for 'conversionDate'`
`No metadata found for 'usdConversionRate'`
`No metadata found for 'nativeCurrency'`
`No metadata found for 'conversionRate'`

Example issue:
https://metamask.sentry.io/issues/5682684113/events/b8006eebb65749f883e907242e52215b/?project=273505&query=is%3Aunresolved+issue.priority%3A%5Bhigh%2C+medium%5D+No+metadata+release%3A12.0.1&referrer=previous-event&statsPeriod=14d&stream_index=1

The `CurrencyRateController` stopped using six such properties with
MetaMask/core#1805, which was brought into the
extension with #21549, however, there was not a state migration to
delete those properties at the time

This PR adds migrations to delete those obsolete properties

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

Fixes: #26356

To observe the error using steps that mimic users in production
1. Install v11.6.0 and onboard
2. Create a local dev build from the `master` branch
3. Update the v11.6.0 install to the local dev build
4. See the errors in the service worker console

If you repeat those steps, but in step two build from this branch
instead of the `master` branch, the errors will not occur

For a faster manual test of this PR, create a local development build of
this branch and then run this script in the service worker console:
```
window.chrome.storage.local.get(({ data, meta }) => chrome.storage.local.set({ data: { ...data, CurrencyController: { ...data.CurrencyController, conversionDate: 'Jan 1', conversionRate: '2', nativeCurrency: 'test' } }, meta: {...meta, version: 120 } }, () => { chrome.runtime.reload() }))
```
There should be no errors like `No metadata found for 'conversionRate'`
(but if you do the same on develop or master, those errors should be
present)

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

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

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

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

- [ ] 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: Mark Stacey <[email protected]>
…ntrol… (#26396)

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

Expands on #26383 to
delete more obsolete state from the Network and Phishing controllers, to
eliminate other sentry errors.

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

- [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
- [ ] 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: Mark Stacey <[email protected]>
This is a cherry-pick of #26397. Original description:

## **Description**

We have found evidence that migration 88 is failing for some users due
to a `null` key in the `TokensController.allTokens` state. The migration
has been updated to delete any invalid `null`-keys prior to migrating
it, preventing the error.

[![Open in GitHub

Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/MetaMask/metamask-extension/pull/26397?quickstart=1)

## **Related issues**

Fixes #25938

## **Manual testing steps**

The unit tests demonstrate the affected scenario fairly well. We
addressed the "null key" case for a variety of different parts of state,
but specifically the one we are seeing in prod is the `allTokens` state
having a `null` key.

## **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/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.
fix(cherry-pick): Add migration 120.4 to delete obsolete currency, phishing and network controller state
Updates the changelog for v12.0.2

---------

Co-authored-by: Mark Stacey <[email protected]>
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

This PR modifies the names of some tracked events to monitor the use of
notifications, ensuring they adhere to the conventions used.

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

Fixes:

1. Go to this page...
2.
3.

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

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

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

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

- [x] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [x] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.

---------

Co-authored-by: Prithpal Sooriya <[email protected]>
Co-authored-by: Prithpal Sooriya <[email protected]>
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->

## **Description**

This PR updates and introduces some events necessary for the
notifications team to track user interaction with notifications.

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

## **Related issues**

Fixes:

## **Manual testing steps**

## **Screenshots/Recordings**

### **Before**

### **After**

## **Pre-merge author checklist**

- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/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.
…ions-events

fix: V12.0.3/cherry pick notifications events
@metamaskbot
Copy link
Collaborator

Builds ready [ee890f9]
Page Load Metrics (83 ± 25 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint623821156732
domContentLoaded9105312110
load41293835325
domInteractive9105312110

@hjetpoluru hjetpoluru changed the base branch from Version-v12.1.0 to master August 20, 2024 17:34
@hjetpoluru hjetpoluru changed the base branch from master to Version-v12.1.0 August 20, 2024 17:34
@hjetpoluru hjetpoluru self-requested a review August 20, 2024 17:35
@digiwand
Copy link
Contributor

Q: In the description, it's mentioned this PR corrects merge conflicts on ui/pages/onboarding-flow/metametrics/metametrics.js. Double-checking is no change to the file expected?

@georgewrmarshall
Copy link
Contributor

georgewrmarshall commented Aug 21, 2024

Confirming fix for #26452

Screenshot 2024-08-21 at 2 23 29 PM

@Gudahtt
Copy link
Member

Gudahtt commented Aug 21, 2024

Q: In the description, it's mentioned this PR corrects merge conflicts on ui/pages/onboarding-flow/metametrics/metametrics.js. Double-checking is no change to the file expected?

@digiwand Thanks for checking, yes this is expected. The conflict was resolved by accepting the version of this file that is on the Version-v12.1.0 branch, so it's not showing in the diff.

@Gudahtt
Copy link
Member

Gudahtt commented Aug 21, 2024

@SocketSecurity ignore npm/[email protected]
@SocketSecurity ignore npm/[email protected]

New author OK, but more importantly, these warnings are false positives (they are not updated by this PR)

@Gudahtt
Copy link
Member

Gudahtt commented Aug 22, 2024

@metamaskbot update-policies

@metamaskbot
Copy link
Collaborator

Policies updated

Copy link
Member

@Gudahtt Gudahtt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! I'll wait for someone to review the one commit I made here as well.

@metamaskbot
Copy link
Collaborator

Builds ready [bfe7d3f]
Page Load Metrics (79 ± 19 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint693681126632
domContentLoaded9115342612
load41198794019
domInteractive9115342612

@Gudahtt Gudahtt merged commit 23651ad into Version-v12.1.0 Aug 22, 2024
65 of 66 checks passed
@Gudahtt Gudahtt deleted the v12.1.0-updated branch August 22, 2024 11:36
@github-actions github-actions bot locked and limited conversation to collaborators Aug 22, 2024
@metamaskbot
Copy link
Collaborator

Builds ready [b8959dd]
Page Load Metrics (234 ± 240 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint582181003416
domContentLoaded85524136
load381868234499240
domInteractive85524136

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
INVALID-PR-TEMPLATE PR's body doesn't match template team-extension-platform Extension Platform team
Projects
None yet
Development

Successfully merging this pull request may close these issues.