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

Version v11.12.0 #23135

Merged
merged 121 commits into from
Mar 13, 2024
Merged
Show file tree
Hide file tree
Changes from 155 commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
1d4a666
Update version of ppom-validator (#22868)
jpuri Feb 8, 2024
3ac6784
UX: Show names for the accounts in Send Flow (#22824)
NidhiKJha Feb 8, 2024
0b52d3d
UX Multichain: Updated app header account picker and address button (…
NidhiKJha Feb 8, 2024
3fa4cd6
chore: Update LavaMoat (#22881)
Gudahtt Feb 8, 2024
423268c
chore: Update `@metamask/signature-controller` and related packages (…
Gudahtt Feb 8, 2024
ba3a20f
refactor: make `inpage.js` inject itself into the MAIN world (manifes…
davidmurdoch Feb 8, 2024
39a8283
Remove clashing published files from lavadome (#22854)
weizman Feb 8, 2024
6db80f1
UX: Add event tracking for empty banner displays (#22654)
darkwing Feb 8, 2024
201a48f
Stop doing ppom validation on metamask swaps (#22847)
danjm Feb 9, 2024
1beedcf
[Snaps E2E] Remove / Replace superflous arbitrary delays in snaps E2E…
bowensanders Feb 9, 2024
926594f
[MMI] Fixes PW e2e tests (snapshots) (#22883)
zone-live Feb 9, 2024
480a671
e2e: Reduce CircleCI credit usage (#22843)
HowardBraham Feb 9, 2024
b8e7bb9
fix: gas fee editing should not be hidden if user has disabled curren…
jpuri Feb 12, 2024
727ccfe
Add deprecated comment on `displayWarning` (#22853)
OGPoyraz Feb 13, 2024
d47ae27
[FLASK] Add signature insights (#22485)
hmalik88 Feb 13, 2024
89d0287
fix: fix deps (#22910)
sahar-fehri Feb 13, 2024
b0bd096
Fix detected tokens added to wrong network (#22814)
bergeron Feb 13, 2024
3844eac
fix: asset list showing fiat symbol instead of native (#22760)
bergeron Feb 13, 2024
8a47a96
Fixes an issue cancelling a permission request (#22915)
FrederikBolding Feb 13, 2024
b5f6632
Update discover snaps CTA link (#22909)
FrederikBolding Feb 13, 2024
dc312cd
test: wait for PPOM loading spinner to disappear (#22907)
seaona Feb 13, 2024
34df597
Remove unused notifications, their messages, and images (#22678)
HowardBraham Feb 13, 2024
167036f
fix: fix selectedAddress and nftController instantiation (#22856)
sahar-fehri Feb 13, 2024
14d1974
Fix issue with manually added networks (#22832)
adonesky1 Feb 13, 2024
391e9e7
Minor language fixes in messages.json-en (#22550)
bumblefudge Feb 13, 2024
38fcd39
MMI-2119-env-name-as-key (#22546)
bergarces Feb 14, 2024
c22fc9a
22542 add e2e test for update network (#22762)
hjetpoluru Feb 14, 2024
558f32f
UX: Show Total Account Balances (#22186)
darkwing Feb 14, 2024
f8b59c7
Fix memoisation base transaction confirmation container (#22944)
OGPoyraz Feb 14, 2024
12a0770
Revert "22542 add e2e test for update network" (#22946)
hjetpoluru Feb 14, 2024
85cd1c8
Add networkClientId to DetectTokensController.detectNewTokens() (#22898)
jiexi Feb 14, 2024
3d38143
fix(e2e): PR blocker "Send ETH from inside MetaMask..." on test-e2e-c…
HowardBraham Feb 14, 2024
9c59da5
fix: Remove unnecessary resolution for socks (#22960)
sahar-fehri Feb 15, 2024
2aff0e5
fix: switch e2e test to mainnet instead of ganache (#22880)
sahar-fehri Feb 15, 2024
c555d49
[MMI] Moving mmi keyrings outside if else logic in order to have them…
albertolive Feb 15, 2024
80d0822
Updated GasFeeController to latest package version (#22954)
shanejonas Feb 15, 2024
8e00507
chore: update typescript to ~v5.3.3 (#22530)
davidmurdoch Feb 15, 2024
50baed6
Revert remove staking link (#22816)
martahj Feb 15, 2024
06667e6
Fix/password not present after tapping back (#22867)
dawnseeker8 Feb 15, 2024
4d381e9
chore: support code fencing of .tsx files (#22977)
bergeron Feb 15, 2024
c6cb88e
test: optimize memory usage when building storybook by using swc (#22…
davidmurdoch Feb 15, 2024
79cca74
fix: Update ppom_release to fix fail ppom security validation checks …
seaona Feb 15, 2024
1cca466
Bump eth-snap-keyring to v2.1.2 (#22955)
tmashuang Feb 15, 2024
d37a2e6
chore: upgrading design tokens to v2 (#22897)
georgewrmarshall Feb 16, 2024
9bcc441
Fix storybook path of confirmation components (#22888)
jpuri Feb 16, 2024
befc516
Personal sign origin (#22763)
jpuri Feb 16, 2024
00f3fec
Merge origin/develop into master-sync
chloeYue Feb 16, 2024
4a9d41d
Merge origin/develop into master-sync
chloeYue Feb 16, 2024
e94c930
Merge branch 'master-sync' of https://github.com/MetaMask/metamask-ex…
chloeYue Feb 16, 2024
7aff8ca
delete script
chloeYue Feb 16, 2024
f9a5462
resolve merge conflict
chloeYue Feb 16, 2024
756cd31
Adds 'yarn master-sync' command to automatically generate a PR-ready …
danjm Feb 16, 2024
c50613a
fix: for realease blocker bugs (#22874)
segun Feb 16, 2024
67eb0bc
Update the hardfork in the transaction common used to estimate L1 opt…
danjm Feb 16, 2024
2d5a981
Merge pull request #22993 from MetaMask/master-sync
danjm Feb 16, 2024
538601f
Fix + Clean: "Security & Privacy" Settings Search routes (#22984)
digiwand Feb 16, 2024
be6691f
fix: push the menu up if there isn't enough space at the bottom (#22889)
montelaidev Feb 16, 2024
1d093f7
Fix #22940 - Remove inline gas components from new send flow (#22951)
darkwing Feb 16, 2024
8ab0637
test/e2e: allow overriding some browser settings via env vars (#22877)
legobeat Feb 16, 2024
ca0f122
fix: handle low numbers when saving default advanced gas fees (#22790)
vinistevam Feb 19, 2024
0cc816e
[MMI] 4564 - fix the way get custody type was being done (#22950)
zone-live Feb 19, 2024
4df42ca
Multichain: Amon Hen Test Fixture Creation (#23008)
vthomas13 Feb 19, 2024
04db938
[MMI] Removed unused methods (#23000)
albertolive Feb 19, 2024
17c3170
Fix Snap UI link misalignment (#23045)
GuillaumeRx Feb 19, 2024
ea4972c
Add additional snap installation metrics (#23044)
FrederikBolding Feb 19, 2024
50625a8
Adding Permissions Tour & Empty State (#22905)
vthomas13 Feb 19, 2024
8042a68
nit: Localize LavaDome copy warning (#23031)
darkwing Feb 19, 2024
001bc0c
nit: useAccountTotalBalance code improvement (#23030)
darkwing Feb 19, 2024
2cbedb4
Fix #22987 - UX - Multichain - Send flow - Select NFTs tab in Asset P…
darkwing Feb 19, 2024
7107841
test: fix several ppom testcases due to description change (#23052)
seaona Feb 19, 2024
c7e232e
test: Added manual test for hex data toggle and corrected the change …
hjetpoluru Feb 19, 2024
ef9e63a
Hackathon project: Codespaces (#22358)
HowardBraham Feb 19, 2024
7a76c27
MMI skipping until we move to sepolia (#23064)
zone-live Feb 20, 2024
269cadf
Merge origin/develop into master-sync
chloeYue Feb 20, 2024
54b3eec
resolve merge conflit
chloeYue Feb 20, 2024
e4a0f40
resolve merge conflit
chloeYue Feb 20, 2024
61b5a19
Fix: settings search for Security Alerts; Feat: Add Blockaid and Open…
digiwand Feb 20, 2024
030786a
fix: Blockaid disable disclosure scrollToBottom (#22932)
digiwand Feb 20, 2024
7d59c95
style:fix: Remove background behind setting icons (#22982)
digiwand Feb 20, 2024
3e3acf5
test: add scenario sign typed v4 with hardware wallet (#23043)
seaona Feb 20, 2024
c9a8cbe
[MMI] Rely in custodian environment name (envName) for method findCus…
albertolive Feb 20, 2024
c4f8e76
[MMI] Adding capture exceptions to MMI controllers (#22994)
albertolive Feb 20, 2024
d3f0a32
Confirm button should be red when request is flagged as malicious on …
segun Feb 20, 2024
2ed467e
fix: Capture more details of ppom errors (#22728)
segun Feb 21, 2024
be604fc
test: add scenario sign typed v3 with hardware wallet (#23063)
seaona Feb 21, 2024
9a4b132
Merge pull request #23075 from MetaMask/master-sync
danjm Feb 21, 2024
cb14ec5
UX: Show same balance on eth overview and account list item (#23059)
NidhiKJha Feb 21, 2024
a13de55
Fix test failure caused by previous revert - 22946 (#23076)
hjetpoluru Feb 21, 2024
dbec9ec
UX MULTICHAIN: added connect account in account list menu item (#22941)
NidhiKJha Feb 21, 2024
3388f0c
patch: nft detection running too many times (#23082)
bergeron Feb 21, 2024
adf47d2
Fixes #23026 - UX - Multichain - Send flow - Fix tabs in popup (#23028)
darkwing Feb 21, 2024
4c5391d
test: disable ppom e2e tests temporarily (#23103)
seaona Feb 21, 2024
4d2c1ff
chore: disabling static color hex stylelint rule for specific files (…
georgewrmarshall Feb 21, 2024
b0660c0
chore: upgrading design tokens package that includes dynamic theming …
georgewrmarshall Feb 22, 2024
b46ff03
fix: removing opacity from deprecated popover overlay (#23102)
georgewrmarshall Feb 22, 2024
3687b18
deps: update ethjs packages to remove babel-runtime dependency (#22859)
legobeat Feb 22, 2024
ae291c1
Bump snaps packages and support dynamic interfaces (#22828)
FrederikBolding Feb 22, 2024
afb1b66
UX Multichain: added badge status component (#22972)
NidhiKJha Feb 22, 2024
2ae8857
feat: PPOM version update to fetch files only when transaction is rec…
jpuri Feb 22, 2024
d87b631
Feat: add optimism arbitrum goerli deprecation warning (#23071)
sahar-fehri Feb 22, 2024
1cc451c
Fix #23095 - Fix long account name ellipsizing (#23096)
darkwing Feb 22, 2024
7fcddff
Fix NaN issue in Product Tour Popover (#23100)
vthomas13 Feb 22, 2024
9be9526
UX: fixed badge color when no account is connected (#23126)
NidhiKJha Feb 22, 2024
efc2de0
Fix incorrect gas estimate mock and specs (#23081)
jiexi Feb 22, 2024
69c62b7
chore(test/e2e/tests): some proofreading (#22683)
Ursulafe Feb 22, 2024
19ca54c
ci(action): GH action to validate PR title against conventional commi…
sethkfman Feb 22, 2024
81c1593
Restore frame-ancestors: none (#22914)
brad-decker Feb 22, 2024
275523a
Bump `@metamask/transaction-controller` to `^23.0.0` (#22979)
jiexi Feb 22, 2024
9a782e1
feat: show error if user attempts to deploy a contract with a user op…
dbrans Feb 22, 2024
b8ef21d
v11.12.0
chloeYue Feb 22, 2024
d914bbd
fix: duplicate React keys in dynamic UI causing artifacts (#23139)
FrederikBolding Feb 23, 2024
6abfd32
fix: Properly remove `setInputState` from confirmation template (#23147)
FrederikBolding Feb 23, 2024
cd5a204
fix: SnapUIRenderer rendering an empty delineator when loading (#23267)
FrederikBolding Mar 4, 2024
683f4c8
Merge pull request #23308 from MetaMask/fb/dynamic-ui-cherry-pick
danjm Mar 5, 2024
c640199
fix: smart swaps missing chain ID (#23425)
matthewwalsh0 Mar 12, 2024
c61edf0
ci: Update validate-conventional-commits.yml (#23455)
danjm Mar 13, 2024
d4658e1
v11.12.0 changelog (#23268)
benjisclowder Mar 13, 2024
9faeede
fix(deps): [email protected]>2.8.1 (#23143)
legobeat Feb 23, 2024
7fc7f77
Merge branch 'master' into v11.12.0-fix
danjm Mar 13, 2024
41430d4
Changelog lint for v11.12.0
danjm Mar 13, 2024
41b58b9
Fix merge conflict error after merging master v11.11.x to v11.12.0
danjm Mar 13, 2024
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
  •  
  •  
  •  
138 changes: 72 additions & 66 deletions .circleci/config.yml

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion .depcheckrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ ignores:
- '@metamask/phishing-warning' # statically hosted as part of some e2e tests
- '@metamask/test-dapp'
- '@metamask/design-tokens' # Only imported in index.css
- '@tsconfig/node16' # required dynamically by TS, used in tsconfig.json
- '@tsconfig/node20' # required dynamically by TS, used in tsconfig.json
- '@sentry/cli' # invoked as `sentry-cli`
- 'chromedriver'
- 'depcheck' # ooo meta
Expand All @@ -37,6 +37,7 @@ ignores:
- 'source-map-explorer'
- 'playwright'
- 'wait-on'
- 'tsx' #used in .devcontainer
# development tool
- 'nyc'
# storybook
Expand Down
58 changes: 58 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{
"customizations": {
"vscode": {
"extensions": [
"eamodio.gitlens",
"github.codespaces",
"github.copilot",
"github.copilot-chat",
"ms-azuretools.vscode-docker",
"rvest.vs-code-prettier-eslint"
],
"settings": {
"editor.formatOnSave": true,
"git.autofetch": true,
"git.ignoreRebaseWarning": true,
"git.rebaseWhenSync": true,
"gitlens.showWelcomeOnInstall": false
},
"tasks": [
{
"label": "Open noVNC new tab",
"type": "shell",
"command": "xdg-open https://$CODESPACE_NAME-6080.$GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN",
"problemMatcher": []
}
]
}
},

"forwardPorts": [5901, 6080],

"image": "mcr.microsoft.com/devcontainers/universal:2-linux",

"name": "MM Extension Codespace",

"otherPortsAttributes": { "onAutoForward": "ignore" },

"portsAttributes": {
"5901": {
"label": "local VNC",
"onAutoForward": "ignore"
},
"6080": {
"label": "noVNC web",
"onAutoForward": "openPreview"
}
},

"postAttachCommand": "/usr/local/share/desktop-init.sh && git pull --rebase; yarn download-builds",

// This is a working Infura key, but it's on the Free Plan and has very limited requests per second
// If you want to use your own INFURA_PROJECT_ID, follow the instructions in README.md
"postCreateCommand": "if [ -z \"$INFURA_PROJECT_ID\" ]; then echo 'INFURA_PROJECT_ID=3d110a0fce9e49b08d2ee584e19a05ba' > .metamaskrc; fi",

"runArgs": ["--shm-size=1g"],

"updateContentCommand": "sudo .devcontainer/install.sh && yarn --immutable && yarn tsx .devcontainer/setup-browsers.ts && echo 'export DISPLAY=:1' >> ~/.bashrc"
}
153 changes: 153 additions & 0 deletions .devcontainer/download-builds.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
import { execSync } from 'child_process';
import util from 'util';

const exec = util.promisify(require('node:child_process').exec);

function getGitBranch() {
const gitOutput = execSync('git status').toString();

const branchRegex = /On branch (?<branch>.*)\n/;
return gitOutput.match(branchRegex)?.groups?.branch || 'develop';
}

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);
let builds = [] as any[];

for (const jobName of jobNames) {
const jobId = jobs.find((job: any) => job.name === jobName).job_number;

console.log(`jobName: ${jobName}, jobId: ${jobId}`);

const response = await fetch(
`https://circleci.com/api/v2/project/gh/MetaMask/metamask-extension/${jobId}/artifacts`,
);

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

if (!artifacts || artifacts.length === 0) {
return [];
}

builds = builds.concat(
artifacts.filter((artifact: any) => artifact.path.endsWith('.zip')),
);
}

return builds;
}

function getVersionNumber(builds: any[]) {
for (const build of builds) {
const versionRegex = /metamask-chrome-(?<version>\d+\.\d+\.\d+).zip/;

const versionNumber = build.path.match(versionRegex)?.groups?.version;

if (versionNumber) {
return versionNumber;
}
}
}

async function downloadBuilds(builds: any[]) {
if (!builds || builds.length === 0) {
console.log(
'No builds found on CircleCI for the current branch, you will have to build the Extension yourself',
);
return;
}

const buildPromises = [] as Promise<any>[];

for (const build of builds) {
if (
build.path.startsWith('builds/') ||
build.path.startsWith('builds-test/')
) {
const { url } = build;

console.log('downloading', build.path);

buildPromises.push(exec(`curl -L --create-dirs -o ${build.path} ${url}`));
}
}

await Promise.all(buildPromises);

console.log('downloads complete');
}

function unzipBuilds(folder: 'builds' | 'builds-test', versionNumber: string) {
if (!versionNumber) {
return;
}

if (process.platform === 'win32') {
execSync(`rmdir /s /q dist & mkdir dist\\chrome & mkdir dist\\firefox`);
} else {
execSync('sudo rm -rf dist && mkdir -p dist');
}

for (const browser of ['chrome', 'firefox']) {
if (process.platform === 'win32') {
execSync(
`tar -xf ${folder}/metamask-${browser}-${versionNumber}.zip -C dist/${browser}`,
);
} else {
execSync(
`unzip ${folder}/metamask-${browser}-${versionNumber}.zip -d dist/${browser}`,
);
}
}

console.log(`unzipped ${folder} into ./dist`);
}

async function main(jobNames: string[]) {
const branch = getGitBranch();

const builds = await getBuilds(branch, jobNames);

console.log('builds', builds);

await downloadBuilds(builds);

const versionNumber = getVersionNumber(builds);
const folder = builds[0].path.split('/')[0];

unzipBuilds(folder, versionNumber);
}

let args = process.argv.slice(2);

if (!args || args.length === 0) {
args = ['prep-build'];
}

main(args);
22 changes: 22 additions & 0 deletions .devcontainer/first-run-notice.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Welcome to MetaMask Codespaces!

## Quickstart Instructions

1. A "Simple Browser" will open inside the browser with noVNC -- click Connect
- Optional steps:
- Click the button at the upper-right of the Simple Browser tab to open the noVNC window in its own tab
- Open the noVNC sidebar on the left, click the gear icon, change the Scaling Mode to Remote Resizing
2. Wait about 20 extra seconds on the first launch, for the scripts to finish
3. Right-click on the noVNC desktop to launch Chrome or Firefox with MetaMask pre-installed
4. Change some code, then run `yarn start` to build in dev mode
5. After a minute or two, it will finish building, and you can see your changes in the noVNC desktop

## Tips to keep your Codespaces usage lower

- You are billed for both time spent running, and for storage used
- Codespaces pause after 30 minutes of inactivity, and auto-delete after 30 days of inactivity
- You can manage your Codespaces here: https://github.com/codespaces
- You may want to manually pause them before the 30 minute timeout
- If you have several idle Codespaces hanging around for several days, you can quickly run out of storage quota.
You should delete the ones you do not plan to use anymore, and probably keep only 1 or 2 in the long-term.
It's also possible to re-use old Codespaces and switch the branch, instead of creating new ones and deleting the old ones.
Loading
Loading