Skip to content

Version v12.13.0 #30314

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 132 commits into from
Feb 27, 2025
Merged
Show file tree
Hide file tree
Changes from 130 commits
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
014c9dc
fix: hide network picker back button when network is unselected (#29711)
micaelae Jan 31, 2025
1f6f110
fix: flaky test `Queued Confirmations Queued Requests Banner Alert Ba…
seaona Jan 31, 2025
94d7958
feat: Delete legacy transaction confirmation code (#29926)
pedronfigueiredo Jan 31, 2025
9dae762
fix: fix granted permissions when adding an existing network via `wal…
jiexi Jan 31, 2025
7fdff0a
chore: update accounts deps (#29912)
ccharly Jan 31, 2025
c3acb6f
fix: Makes NFT list properly wrap within the send modal (#30036)
dbrans Jan 31, 2025
fc20a80
fix: Misdefined types related to `Bridge{,Status}Controller` state (#…
MajorLift Jan 31, 2025
df3931e
test: automatically install `anvil` during `yarn install` via `foundr…
davidmurdoch Jan 31, 2025
c75493d
fix: new flakiness on queued in FF for unordered events (#30031)
seaona Jan 31, 2025
bf07901
fix: flaky test timeout `Account syncing - User already has balances …
seaona Feb 3, 2025
7eae754
fix: error when pending transaction alert is trigger (#29825)
vinistevam Feb 3, 2025
74fd73c
fix: corrupted tokens state (#30046)
salimtb Feb 3, 2025
b9d63a4
feat: rls workflow (#29646)
jake-perkins Feb 3, 2025
c89f440
build: track circular dependency in the codebase (#29811)
dbrans Feb 3, 2025
2af746e
chore: Rename ControllerMessenger to Messenger (#30041)
cryptodev-2s Feb 3, 2025
2a81420
fix: remove segmented tab on confirm import modal (#29720)
matteoscurati Feb 3, 2025
600e4b1
feat: update release hash for create rls pr (#30072)
jake-perkins Feb 3, 2025
9bd0243
feat(snaps): Enable destructive footer buttons in Snap UI (#29966)
david0xd Feb 4, 2025
86334eb
feat: SOL-80 transaction details (#29323)
zone-live Feb 4, 2025
7f746e9
chore: Bump Snaps packages (#30062)
FrederikBolding Feb 4, 2025
11addf5
fix: use same logic in details page to show IPFS images (#30091)
Prithpal-Sooriya Feb 4, 2025
775eddc
fix: Readd cancel and speed up transaction modal (#30093)
pedronfigueiredo Feb 4, 2025
5e2ebff
fix: Updated snap header in review permissions screen (#30092)
NidhiKJha Feb 4, 2025
29e6a5d
chore: Bump `@metamask/snaps-controllers` to `^9.19.1` and `@metamask…
Mrtenz Feb 4, 2025
889594e
feat: update celo chain logo svg (#29106)
sodofi Feb 4, 2025
a381650
fix: cp-12.10.4 transaction resubmit on multiple endpoints (#30079)
matthewwalsh0 Feb 4, 2025
e48abe6
chore: Use network-specific smart transaction feature flags (#30094)
dan437 Feb 4, 2025
6b05509
chore: Temporarily store MMI policy validation/update (#30106)
Gudahtt Feb 4, 2025
200be79
feat(4098): customize fetchInterval for remoteFeatureFlagController t…
DDDDDanica Feb 4, 2025
af80c7b
fix: cp-12.10.4 hotfix network version / unresponsive network inpage …
jiexi Feb 4, 2025
a259fb3
fix: use intl locale for compatibility with Intl.NumberFormat (#30113)
micaelae Feb 4, 2025
6efe3a5
fix: Fix MMI LavaMoat policy update (#30117)
Gudahtt Feb 4, 2025
0474f2c
fix: fix swaps modal render (#30118)
sahar-fehri Feb 4, 2025
8835cf5
test: pin Firefox version temporarily to 134 until artifacts `tar.bz2…
seaona Feb 5, 2025
d62b731
fix: fix snaps permission flow ui (#30116)
ffmcgee725 Feb 5, 2025
b4fc88e
feat: Delete legacy signature confirmation code (#30038)
pedronfigueiredo Feb 5, 2025
efb0303
test: [POM] Migrate connections e2e tests to TS and Page Object Model…
chloeYue Feb 5, 2025
8f78340
test: Collect coverage from Snaps components (#30129)
FrederikBolding Feb 5, 2025
7fc280d
chore: Remove Snaps insight dead code (#30130)
FrederikBolding Feb 5, 2025
c09f80b
feat: mmassets-543 (#30133)
jpsains Feb 5, 2025
e7e8488
fix: default network selection logic in connection flow (#30139)
adonesky1 Feb 5, 2025
ba5f5b1
fix: cp-12.12.0 30060 lattice account import issue (#30128)
dawnseeker8 Feb 6, 2025
c4aa6a9
fix: Ensure has_marketing_consent user trait are correctly set and se…
danjm Feb 6, 2025
870b3ff
test: implement user-storage encrypted data generation for mocks (#30…
cmd-ob Feb 6, 2025
a96bd2e
fix: runway bot cherry pick (#30160)
itsyoboieltr Feb 6, 2025
6d5b3dd
feat: Add transaction alert when sending data to EOA (#30141)
pedronfigueiredo Feb 6, 2025
1359304
refactor: Refactor initialisation of Snaps controllers (#30034)
Mrtenz Feb 6, 2025
a7b562d
feat(ramps): Adds a close button to the buy banner (#28980)
georgeweiler Feb 6, 2025
f16d6e1
fix: bump assets-controllers to v48.0.0 (#30161)
sahar-fehri Feb 6, 2025
63afa20
build(webpack): add `--sentry` status to webpack's `--dry-run` output…
davidmurdoch Feb 6, 2025
6332ad8
ci: skip type imports when checking circular dependencies (#30080)
davidmurdoch Feb 6, 2025
335b3bb
fix: fix noisy sentry logs (#30163)
salimtb Feb 6, 2025
ecc7bd0
chore: update selenium (#30124)
pnarayanaswamy Feb 7, 2025
07cc430
fix: fix migration (#30189)
salimtb Feb 7, 2025
80134a1
fix: add funkichain logo (#29949)
salimtb Feb 7, 2025
0c697c8
test: Cleanup extension e2e tests code (#30121)
chloeYue Feb 7, 2025
67edd4b
test: Add basic tests for SnapUIRenderer (#30099)
FrederikBolding Feb 7, 2025
c9c2bf8
fix: integrate multichainAssetsController (#30059)
sahar-fehri Feb 7, 2025
e63ca9a
fix: fix e2e decimal (#30203)
sahar-fehri Feb 7, 2025
271c125
chore: tab component refactor (#30143)
georgewrmarshall Feb 7, 2025
36b58cd
fix: Ignore empty data field on hex data alert (#30192)
pedronfigueiredo Feb 7, 2025
43efd3f
refactor: `asset-list` and `token-list` (#29886)
gambinish Feb 7, 2025
46b456f
fix: show Bridge and Swap page header based on url query param (#30169)
micaelae Feb 7, 2025
2bd6abe
test: rename `ganacheOptions` to generic `localNodeOptions` and remov…
seaona Feb 7, 2025
5b8c780
chore: removing unused css (#30214)
georgewrmarshall Feb 7, 2025
436d69c
chore: bump controller version (#30209)
zone-live Feb 11, 2025
c5a6560
chore: update accounts deps + some related peer deps (#30205)
ccharly Feb 11, 2025
245d96f
feat: Add advanced details tooltip (#30197)
pedronfigueiredo Feb 11, 2025
2101ad0
feat: auth & profile sync logic improvements (#30174)
mathieuartu Feb 11, 2025
ca34a55
fix: `test-e2e-chrome-vault-decryption` spec with correct balance (#3…
seaona Feb 11, 2025
727b489
fix: Clicking on report link does not add external_link_clicked to si…
pnarayanaswamy Feb 11, 2025
3a17851
chore: non-evm UI updates (#30166)
zone-live Feb 11, 2025
de29767
chore: validate page object usage in new spec files on every PR (#29915)
seaona Feb 11, 2025
74d8431
fix: cp-12.12.0 bring back exception if invalid address passed in eth…
ffmcgee725 Feb 11, 2025
103cfb5
chore: upgrading design tokens from `v4.2.0` to `5.0.0` and removing …
georgewrmarshall Feb 11, 2025
d1e00a8
chore: removing more unused css (#30217)
georgewrmarshall Feb 11, 2025
15f3b81
refactor: remove circular dependencies in `ui/components/app/snaps` f…
davidmurdoch Feb 11, 2025
0eb7d57
chore: show max network fee tooltip (#30208)
infiniteflower Feb 11, 2025
93ec593
fix: cp-12.12.0 CAIP-25 Permission Migration when eth_accounts has no…
jiexi Feb 11, 2025
8005275
feat: Add e2e tests of speeding up and cancelling transactions (#30212)
pedronfigueiredo Feb 12, 2025
f750ec5
fix: Hide network fee fiat conversion on test nets (#30196)
pedronfigueiredo Feb 12, 2025
f7690e3
chore: add integration test to check nonce editing is disabled when s…
pnarayanaswamy Feb 12, 2025
584c13d
chore: bump `@metamask/base-controller` to `^8.0.0` (#30251)
cryptodev-2s Feb 12, 2025
e5a8ff9
feat: Add origin throttling modal (#29656)
OGPoyraz Feb 12, 2025
042d7cb
feat: Remove tooltip and connection badge from Connection Menu (#30232)
NidhiKJha Feb 12, 2025
103d92c
refactor: remove metametrics circular dependency (#30037)
davidmurdoch Feb 12, 2025
0ab294f
chore: adding storybook story for snap install warning component (#30…
georgewrmarshall Feb 12, 2025
fd64795
chore: adding storybook story for snap ui checkbox component (#30236)
georgewrmarshall Feb 12, 2025
297e327
test: remove unnecessary delays and wait for condition with `waitFor…
seaona Feb 12, 2025
832eeaf
fix: cp-12.12.0 improve token list rendering (#30266)
Prithpal-Sooriya Feb 12, 2025
c1c3aec
refactor: remove circular dependencies in `app/scripts/controllers/br…
davidmurdoch Feb 12, 2025
fa87b9b
refactor: update network punycode warning, isValidASCIIURL, and toPun…
digiwand Feb 12, 2025
41b7fc9
chore: show multichain network icons (#30276)
micaelae Feb 12, 2025
d98ac20
chore: adding storybook story for unconnected account alert component…
georgewrmarshall Feb 12, 2025
f38a93f
refactor: remove circular dependencies in `ui/components/component-li…
davidmurdoch Feb 12, 2025
28f8d74
chore: adding storybook story for asset picker modal network componen…
georgewrmarshall Feb 13, 2025
baf9b08
test: snap-bip-32 test scenario migration to pom (#30175)
hjetpoluru Feb 13, 2025
9104b8e
fix: Avoid nonce flicker when transaction is submitted (#30193)
pedronfigueiredo Feb 13, 2025
9c720d3
chore: Refactor the way multichain balances and transactions controll…
zone-live Feb 13, 2025
901ce6a
feat: disable metametrics when disabling basic functionality (#30210)
mathieuartu Feb 13, 2025
9f07d45
test: E2E test for Notifications Settings Syncing (#30243)
cmd-ob Feb 13, 2025
66a6c55
test: Fix e2e test spec file name (#30292)
chloeYue Feb 13, 2025
188d7d6
fix: Update multichain controllers init (#30294)
GuillaumeRx Feb 13, 2025
e259b81
chore: Update `@metamask/logo` to v4 (#30298)
Gudahtt Feb 13, 2025
9ec8eaf
test: [POM] Migrate dapp interaction e2e tests to TS and Page Object …
chloeYue Feb 13, 2025
1eacada
chore: UI improvements (#30272)
vinnyhoward Feb 13, 2025
3e73363
fix: Lint `en_GB` locale (#29967)
Gudahtt Feb 13, 2025
f7f2769
fix: add Runway to CLA Allowlist (#30302)
itsyoboieltr Feb 13, 2025
d338a5e
chore: adding appear animations to modal dialog and overlay (#30258)
georgewrmarshall Feb 13, 2025
776ef89
build: add linting TS React files (#30280)
Prithpal-Sooriya Feb 13, 2025
5899e37
refactor: `token-cell` (#30238)
gambinish Feb 13, 2025
99f5b19
fix: update fox positioning (#30310)
vinnyhoward Feb 13, 2025
cad4074
Version v12.13.0
metamaskbot Feb 14, 2025
ba23cc3
Temporary changelog fix
danjm Feb 14, 2025
35c380a
chore: fix edge case for uploading git diff artifacts needed for POM …
seaona Feb 17, 2025
9f7d2be
fix: cp-12.13.0 dependency version (#30375) (#30379)
itsyoboieltr Feb 18, 2025
c5475bd
chore (cherry-pick): Add BNB Smart Chain to Smart Transactions descri…
itsyoboieltr Feb 18, 2025
3a8c7da
fix: cherry-pick: Revert "fix: Avoid nonce flicker when transaction i…
pedronfigueiredo Feb 19, 2025
55c28ee
feat(cherry-pick): re-enable account syncing (#30464) (#30469)
mathieuartu Feb 20, 2025
7b8e6ba
Update attributions
danjm Feb 21, 2025
16dfc37
fix: Cherry pick 3e51501 (attribution generation fix) to v12.13.0 (#3…
danjm Feb 24, 2025
0ffc724
fix (cherry-pick): Add transaction simulation supported networks glob…
danjm Feb 24, 2025
26b46df
fix (cherry-pick): Handle nullish value in alphanumeric sort (#30534)
gambinish Feb 24, 2025
14ab972
Merge remote-tracking branch 'origin/master' into merge-master-v12.13.0
danjm Feb 25, 2025
284ab57
Fix assets-controllers patch
danjm Feb 25, 2025
88e995e
lint fix
danjm Feb 25, 2025
60b54c2
Fix security-tab test snapsshot
danjm Feb 25, 2025
0831f7f
Merge pull request #30555 from MetaMask/merge-master-v12.13.0
danjm Feb 26, 2025
f2e31c0
Add changelog for v12.13.0
danjm Feb 26, 2025
af01b27
chore(runway): cherry-pick fix: cp-12.13.0 Disable origin throttling …
runway-github[bot] Feb 26, 2025
c85f971
chore (cherry-pick): cp-12.13.0 remove SRP video (#30586) (#30590)
danjm Feb 27, 2025
8de0364
chore(runway): cherry-pick fix: cp-12.13.0 replace 3D flask mascot wi…
runway-github[bot] Feb 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 10 additions & 2 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -321,12 +321,15 @@ jobs:
- run:
name: Save Yarn version
command: yarn --version > /tmp/YARN_VERSION
- run:
name: Save Foundry version
command: node -e "process.stdout.write(require('./package.json').foundryup.version)" > /tmp/FOUNDRY_VERSION
- restore_cache:
keys:
# First try to get the specific cache for the checksum of the yarn.lock file.
# This cache key lookup will fail if the lock file is modified and a cache
# has not yet been persisted for the new checksum.
- dependency-cache-{{ checksum "/tmp/YARN_VERSION" }}-{{ checksum "yarn.lock" }}
- dependency-cache-{{ checksum "/tmp/YARN_VERSION" }}-{{ checksum "yarn.lock" }}-{{ checksum "/tmp/FOUNDRY_VERSION" }}
# To prevent having to do a full install of every node_module when
# dependencies change, restore from the last known cache of any
# branch/checksum with the same Yarn version, the install step will remove
Expand All @@ -338,12 +341,14 @@ jobs:
name: Install dependencies
command: yarn --immutable
- save_cache:
key: dependency-cache-{{ checksum "/tmp/YARN_VERSION" }}-{{ checksum "yarn.lock" }}
key: dependency-cache-{{ checksum "/tmp/YARN_VERSION" }}-{{ checksum "yarn.lock" }}-{{ checksum "/tmp/FOUNDRY_VERSION" }}
paths:
- .yarn/cache
- .metamask/cache # should match yarn's relative location
- persist_to_workspace:
root: .
paths:
- .metamask/cache # ensures anvil is installed
- node_modules
- build-artifacts

Expand All @@ -364,6 +369,9 @@ jobs:
root: .
paths:
- changed-files
- store_artifacts:
path: changed-files
destination: changed-files

validate-locales-only:
executor: node-browsers-small
Expand Down
26 changes: 10 additions & 16 deletions .circleci/scripts/git-diff-default-branch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,24 +91,26 @@ async function fetchUntilMergeBaseFound() {
* Performs a git diff command to get the list of files changed between the current branch and the origin.
* It first ensures that the necessary commits are fetched until the merge base is found.
*
* @returns The output of the git diff command, listing the changed files.
* @returns The output of the git diff command, listing the file paths with status (A, M, D).
* @throws If unable to get the diff after fetching the merge base or if an unexpected error occurs.
*/
async function gitDiff(): Promise<string> {
await fetchUntilMergeBaseFound();
const { stdout: diffResult } = await exec(
`git diff --name-only "origin/HEAD...${SOURCE_BRANCH}"`,
`git diff --name-status "origin/HEAD...${SOURCE_BRANCH}"`,
);
if (!diffResult) {
throw new Error('Unable to get diff after full checkout.');
}
return diffResult;
}

function writePrBodyToFile(prBody: string) {
function writePrBodyAndInfoToFile(prInfo: PRInfo) {
const prBodyPath = path.resolve(CHANGED_FILES_DIR, 'pr-body.txt');
fs.writeFileSync(prBodyPath, prBody.trim());
console.log(`PR body saved to ${prBodyPath}`);
const labels = prInfo.labels.map(label => label.name).join(', ');
const updatedPrBody = `PR labels: {${labels}}\nPR base: {${prInfo.base.ref}}\n${prInfo.body.trim()}`;
fs.writeFileSync(prBodyPath, updatedPrBody);
console.log(`PR body and info saved to ${prBodyPath}`);
}

/**
Expand All @@ -135,17 +137,9 @@ async function storeGitDiffOutputAndPrBody() {
if (!baseRef) {
console.log('Not a PR, skipping git diff');
return;
} else if (baseRef !== GITHUB_DEFAULT_BRANCH) {
console.log(`This is for a PR targeting '${baseRef}', skipping git diff`);
writePrBodyToFile(prInfo.body);
return;
} else if (
prInfo.labels.some((label) => label.name === 'skip-e2e-quality-gate')
) {
console.log('PR has the skip-e2e-quality-gate label, skipping git diff');
return;
}

// We perform git diff even if the PR base is not main or skip-e2e-quality-gate label is applied
// because we rely on the git diff results for other jobs
console.log('Attempting to get git diff...');
const diffOutput = await gitDiff();
console.log(diffOutput);
Expand All @@ -155,7 +149,7 @@ async function storeGitDiffOutputAndPrBody() {
fs.writeFileSync(outputPath, diffOutput.trim());
console.log(`Git diff results saved to ${outputPath}`);

writePrBodyToFile(prInfo.body);
writePrBodyAndInfoToFile(prInfo);

process.exit(0);
} catch (error: any) {
Expand Down
6 changes: 4 additions & 2 deletions .circleci/scripts/test-run-e2e-timeout-minutes.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
import { fetchManifestFlagsFromPRAndGit } from '../../development/lib/get-manifest-flag';
import { filterE2eChangedFiles } from '../../test/e2e/changedFilesUtil';
import { filterE2eChangedFiles, readChangedAndNewFilesWithStatus, getChangedAndNewFiles } from '../../test/e2e/changedFilesUtil';

fetchManifestFlagsFromPRAndGit().then((manifestFlags) => {
let timeout;

if (manifestFlags.circleci?.timeoutMinutes) {
timeout = manifestFlags.circleci?.timeoutMinutes;
} else {
const changedOrNewTests = filterE2eChangedFiles();
const changedAndNewFilesWithStatus = readChangedAndNewFilesWithStatus();
const changedAndNewFiles = getChangedAndNewFiles(changedAndNewFilesWithStatus);
const changedOrNewTests = filterE2eChangedFiles(changedAndNewFiles);

// 20 minutes, plus 3 minutes for every changed file, up to a maximum of 30 minutes
timeout = Math.min(20 + changedOrNewTests.length * 3, 30);
Expand Down
5 changes: 3 additions & 2 deletions .circleci/scripts/validate-locales-only.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
const { readChangedFiles } = require('../../test/e2e/changedFilesUtil.js');
const { readChangedAndNewFilesWithStatus, getChangedAndNewFiles } = require('../../test/e2e/changedFilesUtil.js');

/**
* Verifies that all changed files are in the /_locales/ directory.
* Fails the build if any changed files are outside of the /_locales/ directory.
* Fails if no changed files are detected.
*/
function validateLocalesOnlyChangedFiles() {
const changedFiles = readChangedFiles();
const changedAndNewFilesWithStatus = readChangedAndNewFilesWithStatus();
const changedFiles = getChangedAndNewFiles(changedAndNewFilesWithStatus);
if (!changedFiles || changedFiles.length === 0) {
console.error('Failure: No changed files detected.');
process.exit(1);
Expand Down
4 changes: 3 additions & 1 deletion .depcheckrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ ignores:
- 'wait-on'
- 'tsx' # used in .devcontainer
- 'prettier-eslint' # used by the Prettier ESLint VSCode extension
- 'tar' # used by foundryup.ts
- 'minipass' # used by foundryup.ts
# storybook
- '@storybook/cli'
- '@storybook/core'
Expand All @@ -65,7 +67,7 @@ ignores:
- 'html-bundler-webpack-plugin' # build tool
- 'postcss-loader' # build tool
- '@swc/helpers' # build tool
- browserslist # build tool
- 'browserslist' # build tool
- 'buffer' # polyfill
- 'crypto-browserify' # polyfill
- 'process' # polyfill
Expand Down
38 changes: 9 additions & 29 deletions .devcontainer/download-builds.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import { execSync } from 'child_process';
import util from 'util';

import {
getJobsByWorkflowId,
getPipelineId,
getWorkflowId,
} from '../.github/scripts/shared/circle-artifacts';
const exec = util.promisify(require('node:child_process').exec);

function getGitBranch() {
Expand All @@ -10,34 +14,10 @@ function getGitBranch() {
return gitOutput.match(branchRegex)?.groups?.branch || 'main';
}

async function getCircleJobs(branch: string) {
let response = await fetch(
`https://circleci.com/api/v2/project/gh/MetaMask/metamask-extension/pipeline?branch=${branch}`,
);

const pipelineId = (await response.json()).items[0].id;

console.log('pipelineId:', pipelineId);

response = await fetch(
`https://circleci.com/api/v2/pipeline/${pipelineId}/workflow`,
);

const workflowId = (await response.json()).items[0].id;

console.log('workflowId:', workflowId);

response = await fetch(
`https://circleci.com/api/v2/workflow/${workflowId}/job`,
);

const jobs = (await response.json()).items;

return jobs;
}

async function getBuilds(branch: string, jobNames: string[]) {
const jobs = await getCircleJobs(branch);
const pipelineId = await getPipelineId(branch);
const workflowId = await getWorkflowId(pipelineId);
const jobs = await getJobsByWorkflowId(workflowId);
let builds = [] as any[];

for (const jobName of jobNames) {
Expand Down Expand Up @@ -137,7 +117,7 @@ function unzipBuilds(folder: 'builds' | 'builds-test', versionNumber: string) {
}

async function main(jobNames: string[]) {
const branch = getGitBranch();
const branch = process.env.CIRCLE_BRANCH || getGitBranch();

const builds = await getBuilds(branch, jobNames);

Expand Down
48 changes: 48 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,54 @@ module.exports = {
},
},
},

/**
* TypeScript React-specific code
*
* Similar to above, but marks a majority of errors to warnings.
* TODO - combine rulesets and resolve errors
*/
{
files: ['ui/**/*.ts', 'ui/**/*.tsx'],
extends: ['plugin:react/recommended', 'plugin:react-hooks/recommended'],
parserOptions: {
ecmaFeatures: {
jsx: true,
},
},
plugins: ['react'],
rules: {
'react/no-unused-prop-types': 'warn',
'react/no-unused-state': 'warn',
'react/jsx-boolean-value': 'warn',
'react/jsx-curly-brace-presence': [
'warn',
{
props: 'never',
children: 'never',
},
],
'react/no-deprecated': 'warn',
'react/default-props-match-prop-types': 'warn',
'react/jsx-no-duplicate-props': 'warn',
'react/display-name': 'off',
'react/no-unescaped-entities': 'warn',
'react/prop-types': 'off',
'react/no-children-prop': 'off',
'react/jsx-key': 'warn', // TODO - increase this into 'error' level
'react-hooks/rules-of-hooks': 'warn', // TODO - increase this into 'error' level
},
settings: {
react: {
// If this is set to 'detect', ESLint will import React in order to
// find its version. Because we run ESLint in the build system under
// LavaMoat, this means that detecting the React version requires a
// LavaMoat policy for all of React, in the build system. That's a
// no-go, so we grab it from React's package.json.
version: reactVersion,
},
},
},
/**
* Mocha tests
*
Expand Down
5 changes: 5 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@ offscreen/scripts/offscreen.ts @MetaMask/snaps-devs
# make all such communication opt IN versus opt OUT.
privacy-snapshot.json @MetaMask/extension-privacy-reviewers


# A machine-generated file that tracks circular dependencies in the codebase.
# It is updated using yarn circular-deps:update
development/circular-deps.jsonc @MetaMask/extension-security-team @HowardBraham @dbrans

# The CODEOWNERS file constitutes an agreement amongst organization
# admins and maintainers to restrict approval capabilities to a subset
# of contributors. Modifications to this file result in a modification of
Expand Down
Loading
Loading