Skip to content

Commit 420f329

Browse files
committed
merge main and solve conflicts
2 parents d69afff + 4efb704 commit 420f329

213 files changed

Lines changed: 7634 additions & 4189 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: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,45 @@ module.exports = {
181181
},
182182
{
183183
files: [
184+
'app/components/hooks/useIsOriginalNativeTokenSymbol/**/*.{js,jsx,ts,tsx}',
185+
'app/components/hooks/useTokenBalancesController/**/*.{js,jsx,ts,tsx}',
186+
'app/components/hooks/useTokenBalance.tsx',
187+
'app/components/hooks/useTokensData/**/*.{js,jsx,ts,tsx}',
188+
'app/components/hooks/useSafeChains.ts',
184189
'app/components/UI/Card/**/*.{js,jsx,ts,tsx}',
185190
'app/components/Snaps/**/*.{js,jsx,ts,tsx}',
186191
'app/components/UI/Predict/**/*.{js,jsx,ts,tsx}',
187192
'app/components/UI/Ramp/**/*.{js,jsx,ts,tsx}',
188193
'app/components/UI/Rewards/**/*.{js,jsx,ts,tsx}',
189194
'app/components/UI/Perps/**/*.{js,jsx,ts,tsx}',
195+
'app/components/UI/Earn/**/*.{js,jsx,ts,tsx}',
196+
'app/components/UI/Stake/**/*.{js,jsx,ts,tsx}',
197+
// Assets team has a large number of folder ownership areas,
198+
'app/components/UI/Assets/**/*.{js,jsx,ts,tsx}',
199+
'app/components/UI/Tokens/**/*.{js,jsx,ts,tsx}',
200+
'app/components/UI/AssetOverview/**/*.{js,jsx,ts,tsx}',
201+
'app/components/UI/Collectibles/**/*.{js,jsx,ts,tsx}',
202+
'app/components/UI/CollectibleContractElement/**/*.{js,jsx,ts,tsx}',
203+
'app/components/UI/CollectibleContractInformation/**/*.{js,jsx,ts,tsx}',
204+
'app/components/UI/CollectibleContractOverview/**/*.{js,jsx,ts,tsx}',
205+
'app/components/UI/CollectibleContracts/**/*.{js,jsx,ts,tsx}',
206+
'app/components/UI/CollectibleDetectionModal/**/*.{js,jsx,ts,tsx}',
207+
'app/components/UI/CollectibleMedia/**/*.{js,jsx,ts,tsx}',
208+
'app/components/UI/CollectibleModal/**/*.{js,jsx,ts,tsx}',
209+
'app/components/UI/CollectibleOverview/**/*.{js,jsx,ts,tsx}',
210+
'app/components/UI/ConfirmAddAsset/**/*.{js,jsx,ts,tsx}',
211+
'app/components/UI/DeFiPositions/**/*.{js,jsx,ts,tsx}',
212+
'app/components/UI/TokenDetails/**/*.{js,jsx,ts,tsx}',
213+
'app/components/Views/AddAsset/**/*.{js,jsx,ts,tsx}',
214+
'app/components/Views/Asset/**/*.{js,jsx,ts,tsx}',
215+
'app/components/Views/AssetDetails/**/*.{js,jsx,ts,tsx}',
216+
'app/components/Views/AssetHideConfirmation/**/*.{js,jsx,ts,tsx}',
217+
'app/components/Views/AssetOptions/**/*.{js,jsx,ts,tsx}',
218+
'app/components/Views/Collectible/**/*.{js,jsx,ts,tsx}',
219+
'app/components/Views/CollectibleView/**/*.{js,jsx,ts,tsx}',
220+
'app/components/Views/DetectedTokens/**/*.{js,jsx,ts,tsx}',
221+
'app/components/Views/NFTAutoDetectionModal/**/*.{js,jsx,ts,tsx}',
222+
'app/components/Views/NftDetails/**/*.{js,jsx,ts,tsx}',
190223
],
191224
rules: {
192225
'@metamask/design-tokens/color-no-hex': 'error',

.github/CODEOWNERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ app/selectors/featureFlagController/rewards @MetaMask/rewards
164164
**/rewards/** @MetaMask/rewards
165165

166166
# Perps Team
167+
scripts/perps/agentic/teams/perps/ @MetaMask/perps
167168
app/components/UI/Perps/ @MetaMask/perps
168169
app/components/UI/WalletAction/*perps* @MetaMask/perps
169170
app/core/Engine/controllers/perps-controller @MetaMask/perps
@@ -187,6 +188,7 @@ app/core/DeeplinkManager/handlers/legacy/handlePredictUrl.ts @MetaMask/predict
187188
app/components/hooks/useIsOriginalNativeTokenSymbol @MetaMask/metamask-assets
188189
app/components/hooks/useTokenBalancesController @MetaMask/metamask-assets
189190
app/components/hooks/useTokenBalance.tsx @MetaMask/metamask-assets
191+
app/components/hooks/useTokensData @MetaMask/metamask-assets
190192
app/components/hooks/useSafeChains.ts @MetaMask/metamask-assets
191193
app/components/UI/Assets @MetaMask/metamask-assets
192194
app/components/UI/AssetOverview @MetaMask/metamask-assets

.github/workflows/build.yml

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,17 @@ on:
1414
type: boolean
1515
default: false
1616
source_branch:
17-
description: 'Branch, tag, or SHA to build'
17+
description: >-
18+
Branch, tag, or SHA. If skip_version_bump is false: base branch for the version bump (empty uses github.ref_name).
19+
If skip_version_bump is true: ref for prepare, node-modules setup, and build checkout (empty uses the default triggering ref).
1820
required: false
1921
type: string
2022
default: ''
21-
ref:
22-
description: 'Git ref to checkout when skip_version_bump is true. Defaults to the triggering event ref.'
23+
upload_to_sentry:
24+
description: 'If true, enable Sentry CLI upload of JS source maps and native debug symbols during the build'
2325
required: false
24-
type: string
25-
default: ''
26+
type: boolean
27+
default: false
2628
workflow_dispatch:
2729
inputs:
2830
build_name:
@@ -50,6 +52,11 @@ on:
5052
required: false
5153
type: boolean
5254
default: false
55+
upload_to_sentry:
56+
description: 'Upload JS source maps and native debug symbols to Sentry during the build (requires Sentry auth in the build environment)'
57+
required: false
58+
type: boolean
59+
default: false
5360

5461
permissions:
5562
contents: read
@@ -157,13 +164,13 @@ jobs:
157164
submodules: recursive
158165

159166
- uses: actions/checkout@v4
160-
if: ${{ inputs.skip_version_bump && inputs.ref != '' }}
167+
if: ${{ inputs.skip_version_bump && inputs.source_branch != '' }}
161168
with:
162-
ref: ${{ inputs.ref }}
169+
ref: ${{ inputs.source_branch }}
163170
submodules: recursive
164171

165172
- uses: actions/checkout@v4
166-
if: ${{ inputs.skip_version_bump && inputs.ref == '' }}
173+
if: ${{ inputs.skip_version_bump && inputs.source_branch == '' }}
167174
with:
168175
submodules: recursive
169176

@@ -313,6 +320,19 @@ jobs:
313320
cat ios/.xcode.env.local
314321
node --version
315322
323+
# Sentry: build.sh defaults SENTRY_DISABLE_AUTO_UPLOAD=true; set false only when opted in.
324+
- name: Configure Sentry upload
325+
env:
326+
UPLOAD_TO_SENTRY: ${{ inputs.upload_to_sentry }}
327+
run: |
328+
if [ "$UPLOAD_TO_SENTRY" = "true" ]; then
329+
echo "SENTRY_DISABLE_AUTO_UPLOAD=false" >> "$GITHUB_ENV"
330+
echo "✅ Sentry auto-upload enabled for this build"
331+
else
332+
echo "SENTRY_DISABLE_AUTO_UPLOAD=true" >> "$GITHUB_ENV"
333+
echo "ℹ️ Sentry auto-upload disabled"
334+
fi
335+
316336
# Build with retry logic. Timeouts: 55min per attempt, 115min total for step, 120min job
317337
- name: Build ${{ matrix.platform }}
318338
timeout-minutes: 115

.github/workflows/cla.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
types: [opened,closed,synchronize]
77
merge_group:
88
types: [checks_requested]
9-
9+
1010
jobs:
1111
CLABot:
1212
if: github.event_name == 'pull_request_target' || contains(github.event.comment.html_url, '/pull/')
@@ -24,6 +24,6 @@ jobs:
2424
url-to-cladocument: 'https://metamask.io/cla.html'
2525
# This branch can't have protections, commits are made directly to the specified branch.
2626
branch: 'cla-signatures'
27-
allowlist: 'dependabot[bot],metamaskbot,crowdin-bot,runway-github[bot],cursorbot,cursoragent'
27+
allowlist: 'dependabot[bot],metamaskbot,metamaskbotv2[bot],crowdin-bot,runway-github[bot],cursorbot,cursoragent'
2828
allow-organization-members: true
2929
blockchain-storage-flag: false

.github/workflows/nightly-build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ jobs:
7676
build_name: main-exp
7777
platform: both
7878
skip_version_bump: true
79-
ref: ${{ needs.bump-version-exp.outputs.commit-hash }}
79+
source_branch: ${{ needs.bump-version-exp.outputs.commit-hash }}
8080
secrets: inherit
8181

8282
build-rc:
@@ -87,7 +87,7 @@ jobs:
8787
build_name: main-rc
8888
platform: both
8989
skip_version_bump: true
90-
ref: ${{ needs.bump-version-rc.outputs.commit-hash }}
90+
source_branch: ${{ needs.bump-version-rc.outputs.commit-hash }}
9191
secrets: inherit
9292

9393
upload-exp-testflight:

.github/workflows/release-pr-approval.yml

Lines changed: 0 additions & 18 deletions
This file was deleted.

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
# typescript incremental build cache
22
.tsbuildinfo
33

4+
# task working directory (agent-local, not shipped)
5+
.task/
6+
47
# osx
58
.DS_Store
69
# don't save asdf tools-version config as nvm is prioritized.

CHANGELOG.md

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

88
## [Unreleased]
99

10+
## [7.70.0]
11+
12+
### Added
13+
14+
- Add auth header to bridge getToken calls (#26191)
15+
- Add a Contact Support button on CardHome (#27421)
16+
- Added an mUSD bonus calculator to the Rewards tab (#27398)
17+
- Add Monad integration on Card delegation (#27392)
18+
- Added a Cash section on the homepage that shows aggregated mUSD balance, annualized bonus copy for stablecoin holders, and a dedicated Cash token list view with network filter (#27123)
19+
- Homepage tokens and DeFi now always sort by balance/value; View all keeps your sort preference. Popular networks are selected when opening the Wallet so View all shows all popular networks by default (#27339)
20+
- Include nfts on manual refresh (#27272)
21+
- Added a remote feature flag to control default pay token preselection when users have no Perps balance. (#27289)
22+
- Added a banner to display TRX that is ready for withdrawal on the token details view (#27075)
23+
- Add campaign opt-in and participant status hooks/controller actions (#27121)
24+
- Added a banner to display TRX in the 14-day unstaking lock period on the token details view (#27074)
25+
- Add select quotes functionality (#26640)
26+
- When users have no perps balance, the app now preselects the allowlist token with the highest balance for payment when available, and shows an "Add funds" button on the market details screen when no token can be preselected (#26281)
27+
- Expose GET /campaigns endpoint through RewardsController with 5-minute cache (#27108)
28+
- Always display popular networks assets on the token section of the home page (#27009)
29+
- Added Trending tokens to the mobile Swap zero state with filter controls and improved Bridge quote/loading state handling (#26620)
30+
- Added off-device linked accounts detection, caching, and display in Rewards Settings (#26674)
31+
- Added a live blinking cursor to the Ramp Buy and Sell amount input screens for a more intuitive input experience (#27292)
32+
33+
### Changed
34+
35+
- Updated the mUSD conversion flow to redirect users to the home page if they've "Max" converted their last eligible token (#27383)
36+
- Updated Bridge token selector balance sizing and color hierarchy (#27197)
37+
- Improved RPC URL display in Networks Management to hide protocol and API keys, matching Network Selector (#27067)
38+
- Update the new home page nft section redesign to always show popular networks (#27165)
39+
- Update the new home page redesign defi section to always show popular networks (#27163)
40+
- Updated swap price impact text coloring (#26390)
41+
- Updated mUSD conversion copy to reflect annualized bonus and claim timeline (#27097)
42+
- Refactored token-conversion-asset-header to stack assets vertically when text overflow is detected (#27010)
43+
- Replaced mUSD conversion-specific network fee row with the generic transaction fee row and updated fee tooltip copy (#27091)
44+
- Updates price impact modals content (#27256)
45+
- Update icons when tab bar is pressed (#27082)
46+
- Updated the error state icon on the homepage to a new no-connection illustration (#27070)
47+
- Updated View more card styling with background color and updated Perps View more to navigate to market list (#27078)
48+
49+
### Fixed
50+
51+
- Fixed Ledger connect screen image being cut off on iOS after using the keyboard. (#27665)
52+
- Fixed a bug where tapping perpetuals items on the homepage did not show the tutorial for first-time users (#27423)
53+
- Fixed UI styling on perps, explore and predictions (#26890)
54+
- Fixed missing mUSD icon when viewing token details from the Cash section empty state (#27442)
55+
- Fixed a brief flash of empty content in the Tokens section while token data loads on the homepage (#27431)
56+
- Fixed Perps reconnect recovery and error reporting for market data and position actions (#27408)
57+
- Fixed Card Onboarding name issues (#27291)
58+
- fix(homepage): fix session summary section tracking and visibility detection (#27402)
59+
- Disable slide-to-dismiss behavior of swaps keypad (#26770)
60+
- Remove thrown exceptions in migration 121 when `NetworkEnablementController` is absent or `NetworkEnablementController.nativeAssetIdentifiers` is missing (#27275)
61+
- Fixed Android Google sign-in errors not falling back to browser-based login for unrecognized credential manager failures (#26964)
62+
- Fixed a visual inconsistency where bridge token selector ticker text appeared thinner than other token lists. (#27357)
63+
- fix: scanning verbiage only shows when actually scanning (#27319)
64+
- Fixed a bug where switching to a non-EVM network caused EVM transaction details to display the wrong block explorer link (#27321)
65+
- Fixed a bug where closing the "Token not available" modal left the user in a stuck state instead of navigating back to the token selection screen (#27297)
66+
- Fixed a bug where the "Change provider" link in the payment selection modal was not clickable while payment methods were loading (#27288)
67+
- fix: increase touchable area of select quotes entry (#27267)
68+
- Fixed OTP error messages to show the actual error from the server instead of a generic fallback (#26727)
69+
- fix: pin seed phrase font size to prevent shrinking on large font devices (#27238)
70+
- Fix issue related to info icon press navigating to select quotes rather than opening info modal (#27249)
71+
- Long/Short from Asset Details now ensures Arbitrum network exists (adds it if missing) before creating the deposit transaction, fixing "Transaction creation failed" when the user has no Arbitrum network (#27213, #26756)
72+
- Fixed a race condition causing CLIENT_NOT_INITIALIZED errors when navigating to Perps before controller initialization completes (#27178)
73+
- Fixed a bug where hiding balances on the wallet home screen was not reflected in the account list (#27190)
74+
- Fixed BottomSheet dismissing the wrong screen when rapidly opened and closed, which could leave mUSD conversion confirmation flows in a blocked state with unrejected pending approvals (#27026)
75+
- Fixed layout issues in Ramp Order Details — inline info icon, centered status text, sticky footer, stripped redundant order prefix, adjusted toast offset, and centered text in processing info modal (#27025)
76+
- Fix avoid O(n) api calls to on-ramp endpoint (#26900)
77+
- Fixed mUSD conversion confirmation no longer gets stuck when tapping external links that briefly background the app (#27155)
78+
- Fixed a bug in the asset picker where token and balance text could wrap incorrectly by aligning mobile layout and truncation behavior with extension (#27069)
79+
- Fixed privacy mode not hiding financial values on Perps screens (#27128)
80+
- Fix Ledger transaction not displayed after opening ETH app (#26322)
81+
- Fixed issue of confirmation not rejecting when app locks (#26905)
82+
- Fixed missing horizontal padding on NFT skeleton loading state in full view (#27077)
83+
- Fixed a bug where the Ramp checkout provider title appeared above the WebView content (#27024)
84+
- Hardened mUSD conversion quick convert status tracking. Auto reject pending mUSD approvals when app is foregrounded. (#26608)
85+
- Fixed missing block explorer link on "Receive mUSD" row for Linea USDT and DAI conversions using aggregator routes (#27022)
86+
87+
## [7.69.1]
88+
89+
### Fixed
90+
91+
- Fixed root pages scrollable behavior with SafeAreaView, standardizing safe area and header inset handling across main tab views (#27446)
92+
- Fixed token prices in the wallet list displaying without thousand-separator commas and with too many decimal places (#27485)
93+
1094
## [7.69.0]
1195

1296
### Added
@@ -64,6 +148,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
64148
- Fixed token hiding not working on the redesigned homepage (#26649)
65149
- Fixed an issue that could cause repeated Bridge RPC balance calls and improved how quickly source balances appear after token selection (#25952)
66150

151+
## [7.68.3]
152+
153+
### Fixed
154+
155+
- Fixed seedless onboarding vault decryption crash by handling both vault formats in encryptorAdapter (#27393)
156+
- Fixed OTA environment variable configuration to use new build flag (#26668)
157+
67158
## [7.68.2]
68159

69160
### Fixed
@@ -10917,8 +11008,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1091711008
- [#957](https://github.com/MetaMask/metamask-mobile/pull/957): fix timeouts (#957)
1091811009
- [#954](https://github.com/MetaMask/metamask-mobile/pull/954): Bugfix: onboarding navigation (#954)
1091911010

10920-
[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.69.0...HEAD
10921-
[7.69.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.68.2...v7.69.0
11011+
[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.70.0...HEAD
11012+
[7.70.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.69.1...v7.70.0
11013+
[7.69.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.69.0...v7.69.1
11014+
[7.69.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.68.3...v7.69.0
11015+
[7.68.3]: https://github.com/MetaMask/metamask-mobile/compare/v7.68.2...v7.68.3
1092211016
[7.68.2]: https://github.com/MetaMask/metamask-mobile/compare/v7.68.1...v7.68.2
1092311017
[7.68.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.68.0...v7.68.1
1092411018
[7.68.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.67.3...v7.68.0

android/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ android {
188188
minSdkVersion rootProject.ext.minSdkVersion
189189
targetSdkVersion rootProject.ext.targetSdkVersion
190190
versionName "7.71.0"
191-
versionCode 4134
191+
versionCode 4138
192192
testBuildType System.getProperty('testBuildType', 'debug')
193193
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
194194
manifestPlaceholders.MM_BRANCH_KEY_TEST = "$System.env.MM_BRANCH_KEY_TEST"

app/component-library/components-temp/KeyValueRow/KeyValueLabel/KeyValueLabel.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,7 @@ const KeyValueRowLabel = ({ label, tooltip }: KeyValueRowLabelProps) => {
3434

3535
const onNavigateToTooltipModal = () => {
3636
if (!hasTooltip) return;
37-
openTooltipModal(tooltip.title, tooltip.content, undefined, undefined, {
38-
bottomPadding: tooltip.bottomPadding,
39-
});
37+
openTooltipModal(tooltip.title, tooltip.content, undefined, undefined);
4038
tooltip?.onPress?.();
4139
};
4240

0 commit comments

Comments
 (0)