Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
601822d
[skip ci] Bump version number to 4019
metamaskbot Mar 12, 2026
c60cf6d
chore(runway): cherry-pick feat: MUSD-454 add quick convert event tra…
runway-github[bot] Mar 12, 2026
a11cbad
[skip ci] Bump version number to 4020
metamaskbot Mar 12, 2026
bb9ccfa
chore: resolve merge conflicts for stable sync into release/7.70.0
chloeYue Mar 13, 2026
ba9585e
fix: use stable version of HyperLiquidProvider test
chloeYue Mar 13, 2026
a0eca7f
fix: keep release/7.70.0 version of HyperLiquidProvider test
chloeYue Mar 13, 2026
a5fc9d3
chore: Stable sync release 7.70.0 (#27468)
chloeYue Mar 14, 2026
966fede
[skip ci] Bump version number to 4025
metamaskbot Mar 14, 2026
be84e84
bump semvar version to 7.69.1 && build version to 4030
metamaskbot Mar 16, 2026
cd8d0b4
update OTA version
chloeYue Mar 16, 2026
91082bf
revert version back to 7.69.0
chloeYue Mar 16, 2026
0969ce3
update changelog for 7.69.1 (hotfix - no test plan)
chloeYue Mar 16, 2026
f28443b
update changelog
chloeYue Mar 16, 2026
947d9a2
chore(runway): cherry-pick refactor: Reverted selected state for expl…
runway-github[bot] Mar 16, 2026
3e3faf4
[skip ci] Bump version number to 4033
metamaskbot Mar 16, 2026
cf7e766
chore(runway): cherry-pick fix: Updated root pages scrollable behavio…
runway-github[bot] Mar 16, 2026
c7fd457
[skip ci] Bump version number to 4034
metamaskbot Mar 16, 2026
5cd8c23
chore: increase js bundle to 53 (#27135)
tommasini Mar 6, 2026
c0756c0
chore: new environment variable to builds with gh actions (#26668)
tommasini Feb 27, 2026
0ad4fa8
fix(seedless-onboarding): handle both vault formats in encryptorAdapter
himanshuchawla009 Mar 11, 2026
b7db750
merge in release 7.68.2
weitingsun Mar 16, 2026
e5f965c
chore(runway): cherry-pick fix: Updated root pages scrollable behavio…
runway-github[bot] Mar 16, 2026
9fc9bd9
revert GITHUB_ACTIONS to use BUILDS_ENABLED_WITH_GH_ACTIONS_TEMPORARY
weitingsun Mar 16, 2026
e749eee
Revert "chore: increase js bundle to 53 (#27135)"
joaoloureirop Mar 16, 2026
39a655c
chore: sync stable into release/7.68.3
chloeYue Mar 17, 2026
71438cc
chore(runway): cherry-pick chore: Market Insights design review cp-7.…
runway-github[bot] Mar 17, 2026
e3c3646
[skip ci] Bump version number to 4042
metamaskbot Mar 17, 2026
3d05140
chore(runway): cherry-pick chore: correct token price formatting in w…
runway-github[bot] Mar 17, 2026
4ea9643
[skip ci] Bump version number to 4043
metamaskbot Mar 17, 2026
7250a77
chore(runway): cherry-pick chore: New Crowdin translations by Github …
runway-github[bot] Mar 17, 2026
490d47e
[skip ci] Bump version number to 4044
metamaskbot Mar 17, 2026
2177dbe
chore: Stable sync release 7.68.3 (#27512)
chloeYue Mar 17, 2026
adfa229
release: release-changelog/7.68.3 (#27513)
chloeYue Mar 17, 2026
b4978f3
release: 7.68.3 (#27505)
chloeYue Mar 17, 2026
a9ba017
chore: sync stable into release/7.69.1
chloeYue Mar 17, 2026
70f7cf9
fix: correct 7.68.3 compare link (v7.68.2...v7.68.3)
chloeYue Mar 17, 2026
c450c5a
chore: Stable sync release 7.69.1 (#27520)
chloeYue Mar 17, 2026
21679ed
chore: rebase changelog onto release/7.69.1 (post stable sync)
chloeYue Mar 17, 2026
73afab8
update changelog for 7.69.1 (hotfix - no test plan)
metamaskbot Mar 17, 2026
c2b4740
fix: restore [7.69.0] compare link to v7.68.2...v7.69.0 (do not modif…
chloeYue Mar 17, 2026
dd3b9c5
chore: sync stable into release/7.70.0
chloeYue Mar 17, 2026
2782087
fix: correct 7.68.3 compare link (v7.68.2...v7.68.3)
chloeYue Mar 17, 2026
e3dd523
fix: keep OTA_VERSION as v7.65.1 (release branch value)
chloeYue Mar 17, 2026
cc3c820
update changelog for 7.69.1 (hotfix - no test plan)
metamaskbot Mar 17, 2026
9030124
chore: add token price formatting fix to 7.69.1 changelog (f33e161 / …
chloeYue Mar 17, 2026
0f738ed
chore: Stable sync release 7.70.0 (#27533)
chloeYue Mar 17, 2026
a534051
[skip ci] Bump version number to 4045
metamaskbot Mar 17, 2026
97a9118
update OTA version
weitingsun Mar 17, 2026
fd9cc4d
chore(runway): cherry-pick fix: Updated root pages scrollable behavio…
runway-github[bot] Mar 16, 2026
e491031
chore(runway): cherry-pick chore: correct token price formatting in w…
runway-github[bot] Mar 17, 2026
489ef5a
chore(runway): cherry-pick fix: correct Spanish translation for obtai…
runway-github[bot] Mar 18, 2026
f29fb61
[skip ci] Bump version number to 4059
metamaskbot Mar 18, 2026
57fb814
Merge branch 'stable' into release/7.69.1-ota
joaoloureirop Mar 18, 2026
3603101
Release: 7.69.1 (#27554)
joaoloureirop Mar 19, 2026
08efa50
Merge branch 'stable' into release-changelog/7.69.1
joaoloureirop Mar 19, 2026
5cdf708
chore(release): release-changelog/7.69.1 (#27472)
joaoloureirop Mar 19, 2026
bb3265d
chore(runway): cherry-pick fix: nfts not showing when non-evm is chos…
runway-github[bot] Mar 19, 2026
310f247
[skip ci] Bump version number to 4077
metamaskbot Mar 19, 2026
cc8ec43
chore(runway): cherry-pick fix: market insights animation bug cp-7.70…
runway-github[bot] Mar 19, 2026
a328c61
[skip ci] Bump version number to 4078
metamaskbot Mar 19, 2026
8f15701
fix(25760): prevent Ledger connect image from being cut off on iOS af…
owencraston Mar 19, 2026
9fd985f
[skip ci] Bump version number to 4079
metamaskbot Mar 19, 2026
f6502bc
chore(runway): cherry-pick fix(homepage): hide Predictions section on…
runway-github[bot] Mar 19, 2026
7288fc0
[skip ci] Bump version number to 4080
metamaskbot Mar 19, 2026
1824e9c
chore: Cherry-pick: Merkl rewards fixes and MUSD-518 CTA event (7.70.…
PatrykLucka Mar 19, 2026
cd4bb07
[skip ci] Bump version number to 4081
metamaskbot Mar 19, 2026
eb2fd37
chore(runway): cherry-pick chore: patch assets-controllers to fix no…
runway-github[bot] Mar 19, 2026
a03d392
[skip ci] Bump version number to 4082
metamaskbot Mar 19, 2026
5b70fff
chore: Stable sync release 7.70.0 (#27672)
chloeYue Mar 19, 2026
fb1fb7c
Revert "chore: Stable sync release 7.70.0 (#27672)"
chloeYue Mar 19, 2026
4c8bad4
[skip ci] Bump version number to 4086
metamaskbot Mar 19, 2026
a1210e1
chore: revert Stable sync release 7.70.0 (#27672) (#27689)
chloeYue Mar 19, 2026
ab22f90
[skip ci] Bump version number to 4087
metamaskbot Mar 19, 2026
e986cf5
chore: sync stable into release/7.70.0
chloeYue Mar 19, 2026
a2a699a
chore: Stable sync release 7.70.0 (#27691)
chloeYue Mar 19, 2026
8124ae5
[skip ci] Bump version number to 4090
metamaskbot Mar 19, 2026
44a0851
chore(runway): cherry-pick feat: fix incorrect styling of claimable b…
runway-github[bot] Mar 19, 2026
c2c2fa3
[skip ci] Bump version number to 4094
metamaskbot Mar 19, 2026
79cfcd8
[skip ci] Bump version number to 4129
metamaskbot Mar 20, 2026
219e3cf
Revert "fix: MUL-1331 modify android manifest file for correct BLE lo…
joaoloureirop Mar 20, 2026
3f263e6
[skip ci] Bump version number to 4130
metamaskbot Mar 20, 2026
569181a
release: release-changelog/7.70.0 (#27452)
metamaskbot Mar 23, 2026
f61547c
release: 7.70.0 (#27451)
chloeYue Mar 23, 2026
63cee1a
chore: resolve merge conflicts for stable sync into release/7.71.0
chloeYue Mar 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 96 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,90 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [7.70.0]

### Added

- Add auth header to bridge getToken calls (#26191)
- Add a Contact Support button on CardHome (#27421)
- Added an mUSD bonus calculator to the Rewards tab (#27398)
- Add Monad integration on Card delegation (#27392)
- 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)
- 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)
- Include nfts on manual refresh (#27272)
- Added a remote feature flag to control default pay token preselection when users have no Perps balance. (#27289)
- Added a banner to display TRX that is ready for withdrawal on the token details view (#27075)
- Add campaign opt-in and participant status hooks/controller actions (#27121)
- Added a banner to display TRX in the 14-day unstaking lock period on the token details view (#27074)
- Add select quotes functionality (#26640)
- 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)
- Expose GET /campaigns endpoint through RewardsController with 5-minute cache (#27108)
- Always display popular networks assets on the token section of the home page (#27009)
- Added Trending tokens to the mobile Swap zero state with filter controls and improved Bridge quote/loading state handling (#26620)
- Added off-device linked accounts detection, caching, and display in Rewards Settings (#26674)
- Added a live blinking cursor to the Ramp Buy and Sell amount input screens for a more intuitive input experience (#27292)

### Changed

- Updated the mUSD conversion flow to redirect users to the home page if they've "Max" converted their last eligible token (#27383)
- Updated Bridge token selector balance sizing and color hierarchy (#27197)
- Improved RPC URL display in Networks Management to hide protocol and API keys, matching Network Selector (#27067)
- Update the new home page nft section redesign to always show popular networks (#27165)
- Update the new home page redesign defi section to always show popular networks (#27163)
- Updated swap price impact text coloring (#26390)
- Updated mUSD conversion copy to reflect annualized bonus and claim timeline (#27097)
- Refactored token-conversion-asset-header to stack assets vertically when text overflow is detected (#27010)
- Replaced mUSD conversion-specific network fee row with the generic transaction fee row and updated fee tooltip copy (#27091)
- Updates price impact modals content (#27256)
- Update icons when tab bar is pressed (#27082)
- Updated the error state icon on the homepage to a new no-connection illustration (#27070)
- Updated View more card styling with background color and updated Perps View more to navigate to market list (#27078)

### Fixed

- Fixed Ledger connect screen image being cut off on iOS after using the keyboard. (#27665)
- Fixed a bug where tapping perpetuals items on the homepage did not show the tutorial for first-time users (#27423)
- Fixed UI styling on perps, explore and predictions (#26890)
- Fixed missing mUSD icon when viewing token details from the Cash section empty state (#27442)
- Fixed a brief flash of empty content in the Tokens section while token data loads on the homepage (#27431)
- Fixed Perps reconnect recovery and error reporting for market data and position actions (#27408)
- Fixed Card Onboarding name issues (#27291)
- fix(homepage): fix session summary section tracking and visibility detection (#27402)
- Disable slide-to-dismiss behavior of swaps keypad (#26770)
- Remove thrown exceptions in migration 121 when `NetworkEnablementController` is absent or `NetworkEnablementController.nativeAssetIdentifiers` is missing (#27275)
- Fixed Android Google sign-in errors not falling back to browser-based login for unrecognized credential manager failures (#26964)
- Fixed a visual inconsistency where bridge token selector ticker text appeared thinner than other token lists. (#27357)
- fix: scanning verbiage only shows when actually scanning (#27319)
- Fixed a bug where switching to a non-EVM network caused EVM transaction details to display the wrong block explorer link (#27321)
- 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)
- Fixed a bug where the "Change provider" link in the payment selection modal was not clickable while payment methods were loading (#27288)
- fix: increase touchable area of select quotes entry (#27267)
- Fixed OTP error messages to show the actual error from the server instead of a generic fallback (#26727)
- fix: pin seed phrase font size to prevent shrinking on large font devices (#27238)
- Fix issue related to info icon press navigating to select quotes rather than opening info modal (#27249)
- 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)
- Fixed a race condition causing CLIENT_NOT_INITIALIZED errors when navigating to Perps before controller initialization completes (#27178)
- Fixed a bug where hiding balances on the wallet home screen was not reflected in the account list (#27190)
- 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)
- 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)
- Fix avoid O(n) api calls to on-ramp endpoint (#26900)
- Fixed mUSD conversion confirmation no longer gets stuck when tapping external links that briefly background the app (#27155)
- 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)
- Fixed privacy mode not hiding financial values on Perps screens (#27128)
- Fix Ledger transaction not displayed after opening ETH app (#26322)
- Fixed issue of confirmation not rejecting when app locks (#26905)
- Fixed missing horizontal padding on NFT skeleton loading state in full view (#27077)
- Fixed a bug where the Ramp checkout provider title appeared above the WebView content (#27024)
- Hardened mUSD conversion quick convert status tracking. Auto reject pending mUSD approvals when app is foregrounded. (#26608)
- Fixed missing block explorer link on "Receive mUSD" row for Linea USDT and DAI conversions using aggregator routes (#27022)

## [7.69.1]

### Fixed

- Fixed root pages scrollable behavior with SafeAreaView, standardizing safe area and header inset handling across main tab views (#27446)
- Fixed token prices in the wallet list displaying without thousand-separator commas and with too many decimal places (#27485)

## [7.69.0]

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

## [7.68.3]

### Fixed

- Fixed seedless onboarding vault decryption crash by handling both vault formats in encryptorAdapter (#27393)
- Fixed OTA environment variable configuration to use new build flag (#26668)

## [7.68.2]

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

[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.69.0...HEAD
[7.69.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.68.2...v7.69.0
[Unreleased]: https://github.com/MetaMask/metamask-mobile/compare/v7.70.0...HEAD
[7.70.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.69.1...v7.70.0
[7.69.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.69.0...v7.69.1
[7.69.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.68.3...v7.69.0
[7.68.3]: https://github.com/MetaMask/metamask-mobile/compare/v7.68.2...v7.68.3
[7.68.2]: https://github.com/MetaMask/metamask-mobile/compare/v7.68.1...v7.68.2
[7.68.1]: https://github.com/MetaMask/metamask-mobile/compare/v7.68.0...v7.68.1
[7.68.0]: https://github.com/MetaMask/metamask-mobile/compare/v7.67.3...v7.68.0
Expand Down
4 changes: 2 additions & 2 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@
<!-- Android < 12 -->
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="false" />

<!-- Bluetooth permissions: Android API >= 31 (Android 12)-->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation"/>
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
Comment thread
chloeYue marked this conversation as resolved.

<uses-sdk tools:overrideLibrary="com.tectiv3.aes" />

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/**
* Config for build-time defaults.
* Production: uses GITHUB_ACTIONS and E2E. Tests: mock this module to control shouldApply().
*/
export const buildTimeDefaultsConfig = {
shouldApply(): boolean {
return (
process.env.BUILDS_ENABLED_WITH_GH_ACTIONS_TEMPORARY === 'true' &&
process.env.E2E !== 'true'
);
},
};
Comment thread
chloeYue marked this conversation as resolved.
14 changes: 11 additions & 3 deletions app/selectors/featureFlagController/legalNotices/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,27 @@ import { selectRemoteFeatureFlags } from '..';
import { getFeatureFlagValue } from '../env';

/**
* Selector for PNA25 feature flag
* Checks the environment variable `MM_EXTENSION_UX_PNA25` to override the remote flag
* Selector for PNA25 feature flag.
* When GITHUB_ACTIONS (and not E2E): use only remote (builds.yml). Otherwise
* MM_EXTENSION_UX_PNA25 can override the remote flag.
*
* @returns {boolean} True if PNA25 feature is enabled
*/
export const selectIsPna25FlagEnabled = createSelector(
selectRemoteFeatureFlags,
(remoteFeatureFlags): boolean => {
const remoteValue = remoteFeatureFlags?.extensionUxPna25;
const useRemoteOnly =
process.env.BUILDS_ENABLED_WITH_GH_ACTIONS_TEMPORARY === 'true' &&
process.env.E2E !== 'true';

if (useRemoteOnly) {
return remoteValue === true;
}

return getFeatureFlagValue(
process.env.MM_EXTENSION_UX_PNA25,
Boolean(remoteValue),
remoteValue === true,
);
},
);
16 changes: 10 additions & 6 deletions app/selectors/featureFlagController/networkBlacklist/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ export interface AdditionalNetworksBlacklistFeatureFlag {
* Allows to remove a network from the additional network selection.
* Returns an array of chain IDs that should be hidden from the Additional Networks list.
*
* Supports local environment variable override via MM_ADDITIONAL_NETWORK_BLACKLIST
* (comma-separated chain IDs, e.g., "0x8f,0x531")
* When GITHUB_ACTIONS (and not E2E): use only remote (builds.yml). Otherwise supports
* local override via MM_ADDITIONAL_NETWORK_BLACKLIST (comma-separated chain IDs).
*
* @param state - The Redux state
* @returns Array of blacklisted chain IDs
Expand All @@ -23,7 +23,14 @@ export const selectAdditionalNetworksBlacklistFeatureFlag = createSelector(
| string[]
| undefined;

// Parse environment variable override
if (
process.env.BUILDS_ENABLED_WITH_GH_ACTIONS_TEMPORARY === 'true' &&
process.env.E2E !== 'true'
) {
const value = remoteValue || [];
return Array.isArray(value) ? value : [];
}

const envValue = process.env.MM_ADDITIONAL_NETWORK_BLACKLIST;
let envArray: string[] = [];

Expand All @@ -34,10 +41,7 @@ export const selectAdditionalNetworksBlacklistFeatureFlag = createSelector(
.filter((id) => id.length > 0);
}

// Use environment variable if provided, otherwise use remote value, fallback to empty array
const finalValue = envArray.length > 0 ? envArray : remoteValue || [];

// Ensure we return an array of strings
return Array.isArray(finalValue) ? finalValue : [];
},
);
Loading