Skip to content

Commit fa6b3b7

Browse files
Merge branch 'main' into chore/bump-analytics-controller-1.1.1
2 parents 3c7c937 + bfe479c commit fa6b3b7

251 files changed

Lines changed: 30488 additions & 3557 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.eslintrc.js

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -779,5 +779,160 @@ module.exports = {
779779
],
780780
},
781781
},
782+
/**
783+
* E2E page objects
784+
*
785+
* Page objects should declare selectors (fields) alphabetically at the
786+
* top, followed by the constructor, then methods in alphabetical order.
787+
*
788+
* The files listed in `excludedFiles` don't yet comply. They are
789+
* temporarily exempt and should be removed from this list as each one is
790+
* reordered. Do NOT add new files here — new page objects must comply.
791+
*
792+
* TODO: Reorder the excluded files and delete them from this list.
793+
*/
794+
{
795+
files: ['test/e2e/page-objects/**/*.ts'],
796+
excludedFiles: [
797+
'test/e2e/page-objects/pages/account-list-page.ts',
798+
'test/e2e/page-objects/pages/asset-picker.ts',
799+
'test/e2e/page-objects/pages/basic-functionality-off-page.ts',
800+
'test/e2e/page-objects/pages/bridge/quote-page.ts',
801+
'test/e2e/page-objects/pages/confirmations/accountDetailsModal.ts',
802+
'test/e2e/page-objects/pages/confirmations/add-network-confirmations.ts',
803+
'test/e2e/page-objects/pages/confirmations/add-token-confirmations.ts',
804+
'test/e2e/page-objects/pages/confirmations/advanced-permissions-introduction.ts',
805+
'test/e2e/page-objects/pages/confirmations/alert-modal.ts',
806+
'test/e2e/page-objects/pages/confirmations/batch-confirmation.ts',
807+
'test/e2e/page-objects/pages/confirmations/confirmation.ts',
808+
'test/e2e/page-objects/pages/confirmations/connect-account-confirmation.ts',
809+
'test/e2e/page-objects/pages/confirmations/decrypt-message-confirmation.ts',
810+
'test/e2e/page-objects/pages/confirmations/deploy-confirmation.ts',
811+
'test/e2e/page-objects/pages/confirmations/gas-fee-modal.ts',
812+
'test/e2e/page-objects/pages/confirmations/gas-fee-token-modal.ts',
813+
'test/e2e/page-objects/pages/confirmations/get-encryption-key-confirmation.ts',
814+
'test/e2e/page-objects/pages/confirmations/permit-confirmation.ts',
815+
'test/e2e/page-objects/pages/confirmations/perps-withdraw-confirmation.ts',
816+
'test/e2e/page-objects/pages/confirmations/personal-sign-confirmation.ts',
817+
'test/e2e/page-objects/pages/confirmations/review-permissions-confirmation.ts',
818+
'test/e2e/page-objects/pages/confirmations/set-approval-for-all-transaction-confirmation.ts',
819+
'test/e2e/page-objects/pages/confirmations/sign-typed-data-confirmation.ts',
820+
'test/e2e/page-objects/pages/confirmations/snap-sign-in-confirmation.ts',
821+
'test/e2e/page-objects/pages/confirmations/snap-sign-message-confirmation.ts',
822+
'test/e2e/page-objects/pages/confirmations/snap-sign-transaction-confirmation.ts',
823+
'test/e2e/page-objects/pages/confirmations/snap-transaction-confirmation.ts',
824+
'test/e2e/page-objects/pages/confirmations/speed-up-and-cancel-modal.ts',
825+
'test/e2e/page-objects/pages/confirmations/switch-network-confirmation.ts',
826+
'test/e2e/page-objects/pages/confirmations/token-transfer-confirmation.ts',
827+
'test/e2e/page-objects/pages/confirmations/transaction-confirmation.ts',
828+
'test/e2e/page-objects/pages/confirmations/update-network-confirmation.ts',
829+
'test/e2e/page-objects/pages/critical-error-page.ts',
830+
'test/e2e/page-objects/pages/debug-page.ts',
831+
'test/e2e/page-objects/pages/deep-link-page.ts',
832+
'test/e2e/page-objects/pages/defi-details-page.ts',
833+
'test/e2e/page-objects/pages/defi-tab.ts',
834+
'test/e2e/page-objects/pages/dialog/account-details-modal.ts',
835+
'test/e2e/page-objects/pages/dialog/add-edit-network.ts',
836+
'test/e2e/page-objects/pages/dialog/add-network-rpc-url.ts',
837+
'test/e2e/page-objects/pages/dialog/add-rpc-provider.ts',
838+
'test/e2e/page-objects/pages/dialog/add-tokens.ts',
839+
'test/e2e/page-objects/pages/dialog/confirm-alert.ts',
840+
'test/e2e/page-objects/pages/dialog/create-contract.ts',
841+
'test/e2e/page-objects/pages/dialog/dapp-bar-network-selector-popover.ts',
842+
'test/e2e/page-objects/pages/dialog/dapp-connections-network-modal.ts',
843+
'test/e2e/page-objects/pages/dialog/edit-connected-accounts-modal.ts',
844+
'test/e2e/page-objects/pages/dialog/network-permission-select-modal.ts',
845+
'test/e2e/page-objects/pages/dialog/network-switch-modal-confirmation.ts',
846+
'test/e2e/page-objects/pages/dialog/select-network.ts',
847+
'test/e2e/page-objects/pages/dialog/snap-install-warning.ts',
848+
'test/e2e/page-objects/pages/dialog/snap-install.ts',
849+
'test/e2e/page-objects/pages/dialog/snap-interactive-dialog.ts',
850+
'test/e2e/page-objects/pages/dialog/snap-txinsight.ts',
851+
'test/e2e/page-objects/pages/dialog/terms-of-use-update-modal.ts',
852+
'test/e2e/page-objects/pages/dialog/update-modal.ts',
853+
'test/e2e/page-objects/pages/error-page.ts',
854+
'test/e2e/page-objects/pages/hardware-wallet/connect-hardware-wallet-page.ts',
855+
'test/e2e/page-objects/pages/hardware-wallet/select-hardware-wallet-account-page.ts',
856+
'test/e2e/page-objects/pages/header-navbar.ts',
857+
'test/e2e/page-objects/pages/home/activity-list.ts',
858+
'test/e2e/page-objects/pages/home/asset-list.ts',
859+
'test/e2e/page-objects/pages/home/homepage.ts',
860+
'test/e2e/page-objects/pages/home/nft-list.ts',
861+
'test/e2e/page-objects/pages/home/transaction-details.ts',
862+
'test/e2e/page-objects/pages/login-page.ts',
863+
'test/e2e/page-objects/pages/multichain/account-address-modal.ts',
864+
'test/e2e/page-objects/pages/multichain/address-list-modal.ts',
865+
'test/e2e/page-objects/pages/multichain/multichain-account-details-page.ts',
866+
'test/e2e/page-objects/pages/multichain/private-key-modal.ts',
867+
'test/e2e/page-objects/pages/network-manager.ts',
868+
'test/e2e/page-objects/pages/nft-details-page.ts',
869+
'test/e2e/page-objects/pages/notification-details-page.ts',
870+
'test/e2e/page-objects/pages/notifications-list-page.ts',
871+
'test/e2e/page-objects/pages/onboarding/onboarding-complete-page.ts',
872+
'test/e2e/page-objects/pages/onboarding/onboarding-metrics-page.ts',
873+
'test/e2e/page-objects/pages/onboarding/onboarding-password-page.ts',
874+
'test/e2e/page-objects/pages/onboarding/onboarding-privacy-settings-page.ts',
875+
'test/e2e/page-objects/pages/onboarding/onboarding-srp-page.ts',
876+
'test/e2e/page-objects/pages/onboarding/secure-wallet-page.ts',
877+
'test/e2e/page-objects/pages/onboarding/setup-passkey-page.ts',
878+
'test/e2e/page-objects/pages/onboarding/start-onboarding-page.ts',
879+
'test/e2e/page-objects/pages/permission/gator-permissions-page.ts',
880+
'test/e2e/page-objects/pages/permission/permission-list-page.ts',
881+
'test/e2e/page-objects/pages/permission/site-permission-page.ts',
882+
'test/e2e/page-objects/pages/perps/perps-activity-page.ts',
883+
'test/e2e/page-objects/pages/perps/perps-home-page.ts',
884+
'test/e2e/page-objects/pages/perps/perps-market-detail-page.ts',
885+
'test/e2e/page-objects/pages/perps/perps-market-list-page.ts',
886+
'test/e2e/page-objects/pages/perps/perps-order-entry-page.ts',
887+
'test/e2e/page-objects/pages/perps/perps-withdraw-page.ts',
888+
'test/e2e/page-objects/pages/phishing-warning-page.ts',
889+
'test/e2e/page-objects/pages/reset-password-page.ts',
890+
'test/e2e/page-objects/pages/send/bitcoin-review-tx-page.ts',
891+
'test/e2e/page-objects/pages/send/send-page.ts',
892+
'test/e2e/page-objects/pages/send/solana-confirm-tx-page.ts',
893+
'test/e2e/page-objects/pages/send/solana-send-page.ts',
894+
'test/e2e/page-objects/pages/send/solana-tx-result-page.ts',
895+
'test/e2e/page-objects/pages/settings/about-page.ts',
896+
'test/e2e/page-objects/pages/settings/advanced-settings.ts',
897+
'test/e2e/page-objects/pages/settings/backup-and-sync-settings.ts',
898+
'test/e2e/page-objects/pages/settings/contacts-settings.ts',
899+
'test/e2e/page-objects/pages/settings/experimental-settings.ts',
900+
'test/e2e/page-objects/pages/settings/notifications-settings-page.ts',
901+
'test/e2e/page-objects/pages/settings/preferences-and-display-settings.ts',
902+
'test/e2e/page-objects/pages/settings/preinstalled-example-settings.ts',
903+
'test/e2e/page-objects/pages/settings/privacy-settings.ts',
904+
'test/e2e/page-objects/pages/settings/settings-page.ts',
905+
'test/e2e/page-objects/pages/settings/shield/shield-claim-page.ts',
906+
'test/e2e/page-objects/pages/settings/shield/shield-claims-list-page.ts',
907+
'test/e2e/page-objects/pages/settings/shield/shield-detail-page.ts',
908+
'test/e2e/page-objects/pages/settings/shield/shield-plan-page.ts',
909+
'test/e2e/page-objects/pages/settings/shield/shield-subscription-approve-page.ts',
910+
'test/e2e/page-objects/pages/settings/transactions-settings.ts',
911+
'test/e2e/page-objects/pages/snap-list-page.ts',
912+
'test/e2e/page-objects/pages/snap-simple-keyring-page.ts',
913+
'test/e2e/page-objects/pages/swap/swap-page.ts',
914+
'test/e2e/page-objects/pages/test-dapp-mm-connect.ts',
915+
'test/e2e/page-objects/pages/test-dapp-multichain.ts',
916+
'test/e2e/page-objects/pages/test-dapp-send-eth-with-private-key.ts',
917+
'test/e2e/page-objects/pages/test-dapp-solana.ts',
918+
'test/e2e/page-objects/pages/test-dapp-tron.ts',
919+
'test/e2e/page-objects/pages/test-dapp.ts',
920+
'test/e2e/page-objects/pages/test-snaps.ts',
921+
'test/e2e/page-objects/pages/token-overview-page.ts',
922+
'test/e2e/page-objects/pages/vault-decryptor-page.ts',
923+
'test/e2e/page-objects/pages/wallet-details-page.ts',
924+
],
925+
rules: {
926+
'@typescript-eslint/member-ordering': [
927+
'error',
928+
{
929+
classes: {
930+
memberTypes: ['field', 'constructor', 'method'],
931+
order: 'alphabetically',
932+
},
933+
},
934+
],
935+
},
936+
},
782937
],
783938
};

.github/scripts/benchmark-stats-commit.sh

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,15 +122,21 @@ assemble_performance_data() {
122122

123123
# Merge the startup group into presets (only if any startup files were found).
124124
if [[ "${page_load_json}" != "{}" ]]; then
125-
presets_json=$(echo "${presets_json}" | jq --argjson pl "${page_load_json}" '. + {"pageLoad": $pl}')
125+
# Keep large JSON off argv (ARG_MAX): presets_json via stdin, page_load_json
126+
# via a temp file read with --slurpfile.
127+
pl_file="$(mktemp)"
128+
printf '%s' "${page_load_json}" >"${pl_file}"
129+
presets_json=$(printf '%s' "${presets_json}" | jq --slurpfile pl "${pl_file}" '. + {"pageLoad": $pl[0]}')
130+
rm -f "${pl_file}"
126131
fi
127132

128133
echo "Collected ${file_count} preset(s)" >&2
129134

130-
jq -n \
135+
# presets_json can exceed ARG_MAX; pass it via stdin instead of as a jq argument
136+
# (a too-large argv makes the kernel fail to exec jq with "Argument list too long").
137+
printf '%s' "${presets_json}" | jq \
131138
--argjson timestamp "$(date +%s000)" \
132-
--argjson presets "${presets_json}" \
133-
'{ timestamp: $timestamp, presets: $presets }'
139+
'{ timestamp: $timestamp, presets: . }'
134140
}
135141

136142
# Resolve stats file and assemble data
@@ -191,8 +197,14 @@ fi
191197

192198
TEMP_FILE="${STATS_FILE}.tmp"
193199

194-
jq --arg sha "${HEAD_COMMIT_HASH}" --argjson data "${COMMIT_DATA}" \
195-
'. + {($sha): $data}' "${STATS_FILE}" > "${TEMP_FILE}"
200+
# COMMIT_DATA wraps presets_json and is strictly larger, so it can exceed
201+
# ARG_MAX too. Read it via --slurpfile from a temp file rather than passing
202+
# the blob on argv.
203+
data_file="$(mktemp)"
204+
printf '%s' "${COMMIT_DATA}" >"${data_file}"
205+
jq --arg sha "${HEAD_COMMIT_HASH}" --slurpfile data "${data_file}" \
206+
'. + {($sha): $data[0]}' "${STATS_FILE}" > "${TEMP_FILE}"
207+
rm -f "${data_file}"
196208
mv "${TEMP_FILE}" "${STATS_FILE}"
197209

198210
git add "${STATS_FILE}"

.github/workflows/ai-pr-risk-analysis.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ jobs:
2424
permissions:
2525
contents: read
2626
pull-requests: write
27+
checks: write
2728
steps:
2829
- name: Checkout repository
2930
uses: actions/checkout@v6
@@ -39,8 +40,6 @@ jobs:
3940

4041
- name: Run AI PR Analysis
4142
uses: ./.ai-analyzer-action
42-
env:
43-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4443
with:
4544
mode: pr-risk-analysis
4645
add-comment: false

CHANGELOG.md

Lines changed: 79 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,57 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [13.34.1]
11+
12+
### Changed
13+
14+
- Bumped `@lavamoat/webpack` from 2.2.0 to 2.2.3 (#43333)
15+
16+
### Fixed
17+
18+
- Fixed handling of scientific notation in `parseBalanceWithDecimals` to prevent BigInt crash (#43314)
19+
20+
## [13.34.0]
21+
22+
### Added
23+
24+
- Added section to manage networks (#42944)
25+
- Added the client version to the transaction metadata (#43022)
26+
- Added address poisoning warnings when sending to suspiciously similar addresses (#42893)
27+
- Add new UI and error handling for QR scanning (#42905)
28+
- Added a volume value label on the Perps chart y-axis that appears when hovering a volume bar. (#42882)
29+
- Hardened the SRP Reveal malicious-site warning into a full-page block with no proceed-anyway path (#42737)
30+
- Add Telegram login to Social Login option (#42103)
31+
- Added low value tokens section (#42681)
32+
- Fix onboarding's backup & sync toggle being stuck when enabled (#42904)
33+
- Added a biometrics setup step after restoring a wallet (in forgot password flow) so users can enable passkey unlock before (#42865)
34+
returning home.
35+
- Added new UI for hardware wallet onboarding process (#42720)
36+
- Fixed a bug that stopped Solana tokens from being imported (#42854)
37+
Fixed a bug that stopped Tron assets for showing on
38+
first import
39+
- Add new user traits in metametrics, `account_type`. (#42855)
40+
- Adds new ERC-7715 permission type `token-approval-revocation` that can be granted via (#42841)
41+
`wallet_requestExecutionPermissions`
42+
- Add support for `token-approval-revocation` permission via `wallet_requestExecutionPermissions` RPC (#42954)
43+
- Show hidden tokens in Send Flow (#42934)
44+
- Add Sentry distributed tracing instrumentation for Background RPC calls and inter-controller messenger calls. (#39891)
45+
46+
### Fixed
47+
48+
- perf(6634): extract gas estimate side-effects, strip unused withRouter props (#42687)
49+
- Fixed the VIP tier label to display "VIP" instead of "VIP Fox" (#42856)
50+
- perf(6633): strip unused `withRouterHooks` props in lock and unlock-page containers (#42688)
51+
- Updated Activity tab empty states to show context-specific messaging and actions when users have no transaction (#42786)
52+
history
53+
- Removed outdated translations from community-contributed ga, pt_BR, and zh_TW locales. (#40974)
54+
55+
### Changed
56+
57+
- Bump the `@metamask/tron-wallet-snap` to `^1.25.6` (#42701)
58+
- Bumped bitcoin snap v1.11.0 (#42993)
59+
- chore: Replace `await-semaphore` with `async-mutex` (#42818)
60+
1061
## [13.33.0]
1162

1263
### Added
@@ -21,6 +72,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2172
- Added stop loss, take profit, liquidation, and auto-deleveraging badges to perps activity rows (#42645)
2273
- Added VIP tier badge and fee discount display for Perps trading and Bridge transactions (#42782)
2374
- Show VIP badge in swap page (#42771)
75+
- Update toggle (#42714)
76+
- Show enforced-simulations protection state ("Cancelled" status + info banner) in transaction details and Activity v2; rename (#42368)
77+
`FORCE_ENABLE_SIMULATIONS` dev flag.
2478

2579
### Changed
2680

@@ -30,27 +84,39 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3084

3185
### Fixed
3286

33-
- Fixed a bug that stopped Solana and Tron tokens from being imported (#42854)
34-
- Fixed merging RPC and token list metadata on custom import (#42840)
35-
- Removed the number of promises waiting for unlock from the badge (#42825)
36-
- Fixed sponsored hardware wallet send max native (#42494)
37-
- Fixed a perps bug where market orders submitted with TP/SL left the Auto-close section empty and surfaced the TP/SL orders in the Orders section of the market detail page (#42661)
38-
- Fixed a bug that made only the Recent activity arrow tappable in Perps (#42676)
39-
- Fixed Perps withdraw validation and activity details (#42751)
87+
- Fixed carousel links so supported deep links open directly in MetaMask instead of going through an extra browser tab. (#42634)
88+
- Fixed an issue where EIP-7702 authorization signatures with leading zero bytes in `r` or `s` could be rejected by relays and (#42970)
89+
public RPCs.
90+
- Add guard to asset-util to prevent infinite recursion (#42966)
91+
- Fix the inpage provider not being available via `window.ethereum` and EIP-6963 on websites with certain (#42338)
92+
Content-Security-Policy settings configured.
93+
- Fixed a bug that could default transactions to gas station before the native balance finished loading, and corrected (#42857)
94+
gasless native-balance metrics for nested and L1-fee transactions.
95+
- Merge RPC and token list metadata on custom import (#42840)
96+
- Remove the number of promises waiting for unlock from the badge (#42825)
97+
- Added current position size display on the increase exposure screen for perpetual trades (#42673)
98+
- Sponsored hardware wallet send max native (#42494)
99+
- Fixed a perps bug where market orders submitted with TP/SL left the Auto-close section empty and surfaced the TP/SL orders in (#42661)
100+
the Orders section of the market detail page.
101+
- Fixed a bug that made only the Recent activity arrow tappable in Perps. (#42676)
102+
- Fixed Perps withdraw validation and activity details. (#42751)
103+
- N/A (#42770)
40104
- Fixed Perps market token logos that were difficult to see in dark mode (#42689)
41105
- Fixed open order price display to use correct number of decimals matching market price precision (#42405)
42-
- Fixed BTC swap when BTC network fees not retrieved (#42632)
106+
- Prevented BTC swap when BTC network fees not retrieved (#42632)
107+
- Null (#42698)
108+
- Fixed a bug that stopped Solana and Tron tokens from being imported (#42854)
43109
- Fixed Monad swap activity in asset details (#42669)
44110

45111
## [13.32.1]
46112

47113
### Changed
48114

49-
- Bumped `qs` to 6.15.2, `tmp` to 0.2.6, updated uuid audit ignore ([#42999](https://github.com/MetaMask/metamask-extension/pull/42999))
115+
- Bumped `qs` to 6.15.2, `tmp` to 0.2.6, updated uuid audit ignore (#42999)
50116

51117
### Fixed
52118

53-
- Disabled unified assets controller to fix background calls issue ([#42992](https://github.com/MetaMask/metamask-extension/pull/42992))
119+
- Disabled unified assets controller to fix background calls issue (#42992)
54120

55121
## [13.32.0]
56122

@@ -2396,7 +2462,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
23962462
- This changelog was split off with 12.22.0
23972463
- All older changes can be found in [docs/CHANGELOG_older.md](https://github.com/MetaMask/metamask-extension/blob/main/docs/CHANGELOG_older.md)
23982464

2399-
[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v13.33.0...HEAD
2465+
[Unreleased]: https://github.com/MetaMask/metamask-extension/compare/v13.34.1...HEAD
2466+
[13.34.1]: https://github.com/MetaMask/metamask-extension/compare/v13.34.0...v13.34.1
2467+
[13.34.0]: https://github.com/MetaMask/metamask-extension/compare/v13.33.0...v13.34.0
24002468
[13.33.0]: https://github.com/MetaMask/metamask-extension/compare/v13.32.1...v13.33.0
24012469
[13.32.1]: https://github.com/MetaMask/metamask-extension/compare/v13.32.0...v13.32.1
24022470
[13.32.0]: https://github.com/MetaMask/metamask-extension/compare/v13.31.0...v13.32.0

0 commit comments

Comments
 (0)