Skip to content
Merged
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
452 commits
Select commit Hold shift + click to select a range
1eff744
refactor: rename CONTROLLER_MESSENGERS to MESSENGER_FACTORIES (#28641)
cryptodev-2s Apr 10, 2026
0a2700f
fix: navigation default settings transitions cp-7.73.0 (#28690)
weitingsun Apr 10, 2026
61d3687
fix(bridge): support disabled networks in swap deeplinks (#28670)
bfullam Apr 10, 2026
a44ded4
feat(predict): add Positions/Outcomes tab bar to game details (#28668)
caieu Apr 10, 2026
e7ba37c
feat: as a money account user i want to access my money account activ…
nickewansmith Apr 10, 2026
43b030d
fix(predict): prevent token selector from using stale approvals from …
caieu Apr 10, 2026
5517bff
fix: perp and short transition cp-7.73.0 (#28689)
tommasini Apr 10, 2026
894a971
feat(perps): disk-backed cold-start cache for instant data display (#…
abretonc7s Apr 11, 2026
d76192c
fix: Fix UI issue related to SafeAreaView top inset recalculation cp-…
Cal-L Apr 11, 2026
d4daf1d
fix: resolve formatting and lint errors in SafeAreaViewWithHookTopIns…
abretonc7s Apr 13, 2026
6b7f6d2
feat(perps): agentic lifecycle actions and multi-device support (#28709)
abretonc7s Apr 13, 2026
a2e1f96
ci: remove scheduled trigger from Android regression workflow (#28254)
cmd-ob Apr 13, 2026
f1be502
fix: musd deposit page for new MM Pay designs cp-7.74.0 (#28654)
jpuri Apr 13, 2026
3a4eac4
refactor: replace speed-up/cancel retry modal with error toasts (#27857)
vinistevam Apr 13, 2026
3d1b381
docs(ab-testing): rewrite onboarding guide (#28723)
bfullam Apr 13, 2026
03015f4
chore: migrating money account deposit fund alert to alert system (#2…
jpuri Apr 13, 2026
cbed107
Merge origin/main into stable-main-7.74.0
metamaskbot Apr 13, 2026
4740ed6
chore(release): sync stable to main for version 7.74.0 (#28727)
metamaskbotv2[bot] Apr 13, 2026
cc65ec5
chore: social - traders list leaderboard (#28170)
zone-live Apr 13, 2026
bee9b14
feat(rewards): multiple leaderboards one for each tier (#28621)
sophieqgu Apr 13, 2026
16484d7
fix(ramps): normalize provider IDs in BuildQuote quote matching [TRAM…
saustrie-consensys Apr 13, 2026
6c57486
fix(MUSD-402): resolve persisting mUSD success toast after rapid tran…
Kureev Apr 13, 2026
a229847
chore: bump `@metamask/tron-wallet-snap` to `^1.25.2` cp-7.74.0 (#28603)
ulissesferreira Apr 13, 2026
98d0713
refactor: rename initModularizedControllers to initMessengerClients a…
cryptodev-2s Apr 13, 2026
7a7cc5d
chore: Polish Money patterns for visual cohesion (#28712)
amandaye0h Apr 13, 2026
c954102
test: Sync Feature Flag Registry - 2026-04-07 01:42 UTC (#28444)
github-actions[bot] Apr 13, 2026
aa88381
chore(rewards): stats page (#28734)
VGR-GIT Apr 13, 2026
27de0c6
feat(card): migrate CardHome to Controller (#28564)
Brunonascdev Apr 13, 2026
c0ff402
chore(ci): RC builds: parallelize iOS and Android (#28693)
joaoloureirop Apr 13, 2026
6a3034b
feat(predict): use PredictPositionDetail in picks for extended sports…
caieu Apr 13, 2026
06ce646
feat: split request_source to distinguish SDKv1 from MWP (#28697)
adonesky1 Apr 13, 2026
51e6376
style(MUSD-629): green check icons and muted background for stablecoi…
Kureev Apr 13, 2026
c6d3455
chore(musd): clarify variable-rate disclaimer in bonus tooltip (#28669)
Kureev Apr 13, 2026
890f4a4
fix: update info icon color to IconAlternative for better visibility …
Kureev Apr 13, 2026
e2e2d1a
feat: pass `remote_session_id` from dapp to wallet in SDKConnectV2 co…
ffmcgee725 Apr 13, 2026
7f05e00
feat(predict): add scrollable chip bar for outcome groups (#28738)
caieu Apr 13, 2026
d4bf60b
chore: remove homepageRedesignV1 feature flag and allow full page ref…
vinnyhoward Apr 13, 2026
bab6ef1
fix(predict): use game data instead of tags to determine sport market…
caieu Apr 13, 2026
38bb5d0
chore: Android release candidate URL build cp-7.73.0 (#28781)
tommasini Apr 13, 2026
6e274a1
feat(agentic): improve preflight visibility and CDP discovery resilie…
abretonc7s Apr 14, 2026
f5c328f
fix: routing to money account confirmation page (#28735)
jpuri Apr 14, 2026
0cb05c8
fix(test): skip flaky Name Lookup Snap E2E test suite (#28774)
chrisleewilcox Apr 14, 2026
623c78a
feat: add Mantle mainnet (#27840)
jeremytsng Apr 14, 2026
0f7ff11
chore(analytics): add new properties to the HOME_VIEWED event (#28388)
vinnyhoward Apr 14, 2026
95cdbf4
feat: leaderboard trader profile page (#28583)
Bigshmow Apr 14, 2026
8b1c923
chore(rewards): Ondo campaign various fixes (#28768)
sophieqgu Apr 14, 2026
2deeaf8
fix(predict): enable gas station for predictDepositAndOrder pay token…
caieu Apr 14, 2026
594724b
fix(MUSD-406): prevent double goBack when BottomSheet overlay is tapp…
Kureev Apr 14, 2026
e2e9b6e
fix: hide network filter on mUSD tokens view (#28673)
Kureev Apr 14, 2026
25febb0
feat(rewards): add subscription benefits (#27515)
Draym Apr 14, 2026
f362260
fix: disable OTP input while verification is in-flight on Transak UB2…
saustrie-consensys Apr 14, 2026
6a98fbb
chore: bump @metamask/transaction-controller and @metamask/transactio…
dan437 Apr 14, 2026
5acb9f9
test: improves flake for BTC send toke and SolanDapp specs (#28797)
christopherferreira9 Apr 14, 2026
c435468
test(snaps): Fix name lookup E2E (#28806)
FrederikBolding Apr 14, 2026
9f21804
test: removes step for iOS setup environment (#28799)
christopherferreira9 Apr 14, 2026
922ffbd
feat(predict): add outcome grouping logic for sport events (#28739)
caieu Apr 14, 2026
0770e7b
feat: integrate earn-controller 12.0.0 to fix broken pooled-staking d…
Matt561 Apr 14, 2026
75a8f39
refactor: update DeFiSection to improve viewport tracking and event f…
PatrykLucka Apr 14, 2026
f66503f
chore(rewards): ineligible status for ondo campaign (#28796)
VGR-GIT Apr 14, 2026
204cc6c
fix: swaps button active when empty quote (#28759)
infiniteflower Apr 14, 2026
15470f4
refactor(card): simplify card home hook and solve priority re-order i…
Brunonascdev Apr 14, 2026
5de60b6
feat: `ButtonBase` pilot migration (#28548)
kirillzyusko Apr 14, 2026
e7e746e
feat: `ButtonHero` pilot migration (#28657)
kirillzyusko Apr 14, 2026
8684cf0
feat: `ButtonFilter` pilot migration (#28661)
kirillzyusko Apr 14, 2026
5c5a76a
chore: adds navigation to profile from TopTraderCard (#28811)
zone-live Apr 14, 2026
ccd2ace
feat(predict): hide crypto up/down markets from featured carousel whe…
ghgoodreau Apr 14, 2026
7753e77
chore(rewards): preset Ondo USD as source for new positions if owned …
VGR-GIT Apr 14, 2026
b57fe71
feat: `TextButton` pilot migration (#28686)
kirillzyusko Apr 14, 2026
f4e2578
refactor(ramp): migrate BottomSheet to design system (phase 2) (#28812)
wachunei Apr 14, 2026
3c86508
fix: use ohlcv data to calculate advanced chart percentage value (#28…
sahar-fehri Apr 14, 2026
84322d2
feat: `ButtonIcon` pilot migration (#28666)
kirillzyusko Apr 14, 2026
6ac4c30
feat(predict): add PredictSportOutcomeCard and inline layout for Pred…
caieu Apr 14, 2026
a6bb78d
feat: migrate Button component (snaps scope) (#27688)
kirillzyusko Apr 14, 2026
ef0fda9
feat: add NoPhotography icon (#28568)
brianacnguyen Apr 14, 2026
da40efb
fix: make state input editable in KYC flow (#28532)
meltingice1337 Apr 14, 2026
efb94e2
feat: implement KYC auto-close polling in Checkout (#28595)
meltingice1337 Apr 14, 2026
833cafd
fix(ramp): order details processing info modal backdrop (TRAM-3441) (…
wachunei Apr 14, 2026
78ca9d2
feat(STX-473): compute and report usd_balance_source in Bridge/Swap Q…
rarquevaux Apr 14, 2026
75d0b66
fix(ramp): move Build Quote header inside ScreenLayout body (TRAM-344…
wachunei Apr 14, 2026
ab1836f
feat: add gas fees sponsored message in the transaction activity tab …
Battambang Apr 14, 2026
e7901f4
fix: prevent buy screen crash if selected pay token metadata incomple…
caieu Apr 14, 2026
93e043a
chore: remove axios from yarnrc (#28828)
weitingsun Apr 14, 2026
a4db202
chore(deps): upgrade @metamask/design-system-react-native to v0.16.0 …
georgewrmarshall Apr 14, 2026
c6ecd4b
fix(ramp): surface provider error messages for out-of-bounds amounts …
saustrie-consensys Apr 14, 2026
fba5ef0
chore: traders leaderboard pull to refresh (#28798)
zone-live Apr 14, 2026
67ce7d4
fix: Fix transparent defi position nav bar cp-7.73.0 (#28833)
Cal-L Apr 14, 2026
e18020f
fix: ERC20 approval showing up as NFT approve for ledger tx (#28732)
montelaidev Apr 14, 2026
6cbaf74
chore: upgrade design system packages (v32.0.0) (#28842)
georgewrmarshall Apr 14, 2026
f293774
test: migrate browser security E2E tests to local fixtures (#28834)
chrisleewilcox Apr 15, 2026
845825f
fix: hide gas sponsorship badge for hardware wallets in bridge activi…
dawnseeker8 Apr 15, 2026
f285cd7
fix(perps): missing latest funding payments in Activity (#28671)
abretonc7s Apr 15, 2026
ceca490
chore: Update title in MetaMask Card banner in Rewards tab (#28844)
Montoya Apr 15, 2026
bbb7601
chore: Remove multiple references to points in Rewards copy (#28845)
Montoya Apr 15, 2026
dc62c1b
test: update logs and add unit test (#28818)
racitores Apr 15, 2026
cf53733
refactor(perps): unify dual DEX discovery caches to prevent desync bu…
abretonc7s Apr 15, 2026
f8f763b
feat(perps): create core sync skill and upgrade validate-core-sync (#…
abretonc7s Apr 15, 2026
25c3b88
feat(social): add TraderPositionView screen and navigation wiring (#2…
joaosantos15 Apr 15, 2026
c87c5a1
test: migrates specs to the new apprach for MetaMetrics event checks …
christopherferreira9 Apr 15, 2026
a8d7daf
feat(perps): update latest hyperliquid sdk (#28672)
abretonc7s Apr 15, 2026
9eb6eb4
chore(rewards): Rwds 1203 help icon button is on sub pages (#28835)
sophieqgu Apr 15, 2026
07d219d
chore: remove token details v2 flag (#28823)
juanmigdr Apr 15, 2026
1507b42
fix: Polish token selector for Buy, Swap and Send (#28711)
amandaye0h Apr 15, 2026
f52d87e
feat: hide zero balance tokens native exempt (#28721)
salimtb Apr 15, 2026
7512e66
chore: clean up pna25 feature flag (#28808)
ameliejyc Apr 15, 2026
0915fe3
chore: add performance checks to PR template (#28850)
andrepimenta Apr 15, 2026
420f0dd
chore: move import to the top (#28859)
joaosantos15 Apr 15, 2026
6da10b2
feat: migrate `BottomSheet` in `NftGridItemBottomSheet` component (#2…
kirillzyusko Apr 15, 2026
ac64722
feat: social & ai codeowners (#28852)
aganglada Apr 15, 2026
6b36702
refactor(homepage): replace assetsDefiPositions selector with deFiPos…
PatrykLucka Apr 15, 2026
7c48d5b
fix(earn): prevent swipe gesture conflict in earn screen stack naviga…
tommasini Apr 15, 2026
7753f3c
fix(swaps): prevent max quick-pick overflow on small screens (#28858)
bfullam Apr 15, 2026
544e1f9
feat: Phase 1 - SQLite event write infrastructure for dev tools usage…
NicolasMassart Apr 15, 2026
5e07f6a
feat(predict): add PredictSportLineSelector component with animated l…
caieu Apr 15, 2026
271cdc0
chore(rewards): emit campaign opt-in and page view events (#28794)
VGR-GIT Apr 15, 2026
351ead7
feat(perps): Fix candlestick chart 429 rate limiting on rapid asset n…
abretonc7s Apr 15, 2026
80c692d
feat: add wallet page (#28018)
montelaidev Apr 15, 2026
0442e49
fix(earn): aggregate mUSD balance across mainnet and Linea for estima…
Kureev Apr 15, 2026
a220b55
feat: add native token send in transaction activity for gas fees spon…
Battambang Apr 15, 2026
4b8cd1b
fix(rewards): fix Ondo campaign tour carousel exit animation directio…
VGR-GIT Apr 15, 2026
8e023b8
refactor(card): unify funding balances and fix EVM spending limit dis…
Brunonascdev Apr 15, 2026
a3645fc
fix(navbar): opaque background on deposit compact header (TRAM-3450) …
wachunei Apr 15, 2026
aab57ac
chore: update badge color and position (#28857)
sahar-fehri Apr 15, 2026
9c63656
feat: MUSD-430: Money homepage empty state (#28853)
Kureev Apr 15, 2026
91efd3a
feat(ramp): TRAM-3451 inline headers for unified buy v2 (#28883)
wachunei Apr 15, 2026
7e6d1c7
chore: fix fetch history from webview on advanced charts (#28886)
sahar-fehri Apr 15, 2026
ff903fd
feat(predict): adds crypto target price client for up/down markets (#…
ghgoodreau Apr 15, 2026
7418947
chore: bump ramps-controller to 13.2.0 (#28879)
meltingice1337 Apr 16, 2026
acda605
chore: New Crowdin Translations by GitHub Action cp-7.73.0 (#28223)
metamaskbot Apr 16, 2026
3af2c1d
chore(rewards): remove pending sheet (#28890)
sophieqgu Apr 16, 2026
bfbeae4
feat: add green sticky buttons AB test (#28729)
juanmigdr Apr 16, 2026
576cc25
chore: Bump Snaps packages (#28849)
FrederikBolding Apr 16, 2026
0de4e50
feat(rewards): show 'Entries closed' CTA when active campaign is past…
VGR-GIT Apr 16, 2026
b5c452e
feat(rewards): chain filter toggle + symbol casing fix in Ondo RWA as…
VGR-GIT Apr 16, 2026
63b2944
chore: fallback to legacy chart if ohlcv data is empty (#28728)
sahar-fehri Apr 16, 2026
f961ea9
feat(rewards): show geo-locked CTA and toast for Ondo campaign (#28900)
VGR-GIT Apr 16, 2026
96b61fd
fix: only fire APP_OPENED on background β†’ active transition (#27463)
vinnyhoward Apr 16, 2026
0b4a9e7
chore: consolidate chart events (#28902)
sahar-fehri Apr 16, 2026
8189b0f
fix: srp word truncation (#28908)
grvgoel81 Apr 16, 2026
97e5846
chore: fix outline pill on scroll back token details ac (#28837)
sahar-fehri Apr 16, 2026
399db6a
feat(agentic): clear Babel transpilation cache before Metro start (#2…
abretonc7s Apr 16, 2026
a0092f8
feat(agentic): set missing post-onboarding flags in setupWallet (#28895)
abretonc7s Apr 16, 2026
1aeaa40
feat(rewards): add deeplinks for campaigns & musd pages (#28802)
VGR-GIT Apr 16, 2026
8afc798
fix: tempo useHasInsufficientBalance return false non-7702 (#28817)
maxime-oe Apr 16, 2026
164c011
fix: update wallet creation error analytics (#28635)
grvgoel81 Apr 16, 2026
a230c51
feat: display realized PnL and sold value for closed positions (#28875)
Bigshmow Apr 16, 2026
24b95c6
fix: changed location prop name for cash account event (#28882)
vinnyhoward Apr 16, 2026
894f0d6
feat: show private key list as full screen (#28703)
gantunesr Apr 16, 2026
c7a5c69
chore: disable geo-restrictions for stocks in Explore (#28872)
juanmigdr Apr 16, 2026
9c635c6
ci: bump bundle to 56 (#28910)
tommasini Apr 16, 2026
d90a85e
fix(earn): match Figma spec for claim bonus tag shape (#28903)
Kureev Apr 16, 2026
4a47b76
feat(rewards): network filter + sanitize token names in RWA selector …
VGR-GIT Apr 16, 2026
6657274
feat(card): unfunded state (#28891)
Brunonascdev Apr 16, 2026
1e37733
refactor: rename controller to messengerClient in init result and get…
cryptodev-2s Apr 16, 2026
d8b33fb
chore: align legacy and advanced charts loading overlay layout (#28920)
sahar-fehri Apr 16, 2026
5e9026a
chore: remove @metamask/sdk-analytics and migrate SDKv1 events to Met…
wenfix Apr 16, 2026
be2a383
chore: bump assets controller v5.0.0 (#28569)
salimtb Apr 16, 2026
99aba0d
chore(rewards): reduce Ondo per-user cache TTL to 1 minute (#28929)
VGR-GIT Apr 16, 2026
7eec98b
feat: add chain filter pills with client-side filtering (All, Base, S…
Bigshmow Apr 16, 2026
2577e38
fix: remove notification account setting modal that was causing flick…
baptiste-marchand Apr 16, 2026
3a70efc
chore: updated balance to have a range in metrics (#28914)
juanmigdr Apr 16, 2026
0fc1185
feat(ci): POC Bitrise GH Action runners for iOS E2E (#28791)
Qbandev Apr 16, 2026
17417a6
fix(perps): use live price for reverse position orders (#28897)
geositta Apr 16, 2026
37b1dcf
chore(rewards): Adjust leaderboard (#28932)
sophieqgu Apr 16, 2026
a0f9657
fix(predict): show both Yes/No buttons for binary markets in featured…
ghgoodreau Apr 16, 2026
dbc74ea
fix: gas fees sponsored full swap native in transaction display (#28930)
Battambang Apr 16, 2026
8f8ffa4
fix(Rewards): Ondo campaign afterhours message (#28936)
Montoya Apr 16, 2026
aed2881
feat: MUSD-673 conditionally render Money hub via feature flag (#28934)
Matt561 Apr 16, 2026
9faf0fb
feat: forward allowlisted Segment events to Braze [GE-165] [GE-190] (…
baptiste-marchand Apr 16, 2026
bd38182
fix(predict): handle undefined team alias in sport card token matchin…
ghgoodreau Apr 16, 2026
ed06f50
chore(runway): cherry-pick feat(predict): Implement Predict Bet Slip …
runway-github[bot] Apr 17, 2026
442ce6f
chore(runway): cherry-pick chore: fix time range change race conditio…
runway-github[bot] Apr 17, 2026
b303b35
chore(runway): cherry-pick chore: bump chart margin on token details …
runway-github[bot] Apr 17, 2026
68bb8aa
chore(runway): cherry-pick fix(perps): use native stack navigator to …
runway-github[bot] Apr 17, 2026
ae27d88
chore(runway): cherry-pick fix: fix block explorer redirection cp-7.7…
runway-github[bot] Apr 17, 2026
133322d
chore(runway): cherry-pick fix: fix navigation to token details from …
runway-github[bot] Apr 17, 2026
edb1505
chore(runway): cherry-pick fix: reset price on timeRange change cp-7.…
runway-github[bot] Apr 17, 2026
46d1ece
[skip ci] Bump version number to 4548
metamaskbot Apr 17, 2026
824c38b
chore(runway): cherry-pick chore(rewards): Ondo campaign UI audit (#2…
runway-github[bot] Apr 17, 2026
98532a8
[skip ci] Bump version number to 4549
metamaskbot Apr 17, 2026
280497b
chore(runway): cherry-pick fix(rewards): match carousel design from p…
runway-github[bot] Apr 17, 2026
03c356b
[skip ci] Bump version number to 4550
metamaskbot Apr 17, 2026
385df81
chore(runway): cherry-pick fix(MUSD-651): polish Cash & mUSD UI per l…
runway-github[bot] Apr 17, 2026
80627ad
[skip ci] Bump version number to 4553
metamaskbot Apr 17, 2026
ae418fe
chore(runway): cherry-pick fix: notifications text overlap [GE-192] c…
runway-github[bot] Apr 18, 2026
2b23ec0
[skip ci] Bump version number to 4561
metamaskbot Apr 18, 2026
c455e06
chore(runway): cherry-pick fix(charts): handle fast timeframe reloads…
runway-github[bot] Apr 18, 2026
2905a76
[skip ci] Bump version number to 4562
metamaskbot Apr 18, 2026
9746dc2
chore(runway): cherry-pick fix: update chart container layout cp-7.74…
runway-github[bot] Apr 20, 2026
74c6af1
[skip ci] Bump version number to 4575
metamaskbot Apr 20, 2026
1b4f7f6
chore(runway): cherry-pick fix(rewards): resolve Ondo position swap a…
runway-github[bot] Apr 20, 2026
1ee42e5
[skip ci] Bump version number to 4579
metamaskbot Apr 20, 2026
9de45a5
chore(runway): cherry-pick fix(ramp): show PayPal in payment selector…
runway-github[bot] Apr 20, 2026
57800ec
[skip ci] Bump version number to 4581
metamaskbot Apr 20, 2026
0b98ec6
chore(runway): cherry-pick fix(MUSD-672): resolve Money Hub UX and UI…
runway-github[bot] Apr 20, 2026
9f69fed
[skip ci] Bump version number to 4582
metamaskbot Apr 20, 2026
bbac67b
chore(runway): cherry-pick feat: normalize assetId for Ramps API & au…
runway-github[bot] Apr 21, 2026
c2c099b
[skip ci] Bump version number to 4589
metamaskbot Apr 21, 2026
f8dfbce
chore(runway): cherry-pick feat: warning prompt - cp-7.74.0 (#29082)
runway-github[bot] Apr 21, 2026
56dbf09
[skip ci] Bump version number to 4590
metamaskbot Apr 21, 2026
2b4af65
chore(runway): cherry-pick fix: Explicitly support locales for Androi…
runway-github[bot] Apr 21, 2026
5ae9045
[skip ci] Bump version number to 4592
metamaskbot Apr 21, 2026
11951e1
chore(runway): cherry-pick fix: unify sticky footer buttons across To…
runway-github[bot] Apr 21, 2026
f268a12
[skip ci] Bump version number to 4597
metamaskbot Apr 21, 2026
636b6b5
chore(runway): cherry-pick feat: remove Braze Segment events filterin…
runway-github[bot] Apr 22, 2026
681f032
[skip ci] Bump version number to 4608
metamaskbot Apr 22, 2026
91f16ae
chore(runway): cherry-pick fix: support stocks in token import flow c…
runway-github[bot] Apr 22, 2026
5c04d4e
[skip ci] Bump version number to 4609
metamaskbot Apr 22, 2026
985830d
chore(runway): cherry-pick fix(perps): complete spot-balance parity c…
runway-github[bot] Apr 22, 2026
254a150
[skip ci] Bump version number to 4610
metamaskbot Apr 22, 2026
5f7ebf7
chore(runway): cherry-pick fix: MUSD-671 money hub missing analytics …
runway-github[bot] Apr 22, 2026
59f1220
[skip ci] Bump version number to 4618
metamaskbot Apr 22, 2026
10d79f4
chore: cherry-pick feat(predict): add Polymarket CLOB v2 support cp-7…
chloeYue Apr 23, 2026
c249da7
[skip ci] Bump version number to 4623
metamaskbot Apr 23, 2026
e8401ae
fix: max mUSD conversion displays wrong value (#29175)
matthewwalsh0 Apr 23, 2026
0fa8ee4
[skip ci] Bump version number to 4624
metamaskbot Apr 23, 2026
d0a4402
chore(runway): cherry-pick test: integrate AI test plan into RC build…
runway-github[bot] Apr 23, 2026
a5e06f1
[skip ci] Bump version number to 4626
metamaskbot Apr 23, 2026
bae7faf
chore(runway): cherry-pick fix: compliance modal appear once on asset…
runway-github[bot] Apr 23, 2026
8f021b1
[skip ci] Bump version number to 4627
metamaskbot Apr 23, 2026
284a6c5
chore(runway): cherry-pick dbdf5b0 (#29246)
runway-github[bot] Apr 23, 2026
86438b3
[skip ci] Bump version number to 4631
metamaskbot Apr 23, 2026
b5947ba
chore(runway): cherry-pick fix(perps): HL Unified-mode live balance —…
runway-github[bot] Apr 23, 2026
4c406ba
[skip ci] Bump version number to 4636
metamaskbot Apr 23, 2026
fc3b5d4
chore(runway): cherry-pick 0e57cdc (#29268)
runway-github[bot] Apr 23, 2026
7119ba2
[skip ci] Bump version number to 4639
metamaskbot Apr 23, 2026
52d6ca1
chore(runway): cherry-pick fix: musd money hub 7.74.0 release blocker…
runway-github[bot] Apr 23, 2026
6cabca5
[skip ci] Bump version number to 4641
metamaskbot Apr 23, 2026
94f88d7
chore(runway): cherry-pick chore: New Crowdin Translations by GitHub …
runway-github[bot] Apr 23, 2026
24372ff
[skip ci] Bump version number to 4644
metamaskbot Apr 23, 2026
ceb7072
chore(runway): cherry-pick fix: MUSD-696 fix money hub deeplink navig…
runway-github[bot] Apr 23, 2026
8705283
[skip ci] Bump version number to 4653
metamaskbot Apr 23, 2026
8ab3233
chore(runway): cherry-pick fix: hide big transaction fee on Perps wit…
runway-github[bot] Apr 24, 2026
f7d5cfc
[skip ci] Bump version number to 4664
metamaskbot Apr 24, 2026
9ade1cf
chore(runway): cherry-pick fix: tempo and eip 7702 txs activity remov…
runway-github[bot] Apr 24, 2026
160614b
[skip ci] Bump version number to 4665
metamaskbot Apr 24, 2026
ae5f863
chore: merge stable into release/7.74.00 (sync after 7.73.2 β†’ stable)
chloeYue Apr 24, 2026
02a5848
fix(merge): restore release/7.74.00 predict types and remove stable d…
chloeYue Apr 24, 2026
c05da38
chore: clean up duplicated comment block in build-rc-auto workflow
chloeYue Apr 24, 2026
2ec25c1
[skip ci] Bump version number to 4674
metamaskbot Apr 24, 2026
92165b5
chore(release): stable sync after merging 7.73.2 (#29326)
chloeYue Apr 27, 2026
dbab42c
[skip ci] Bump version number to 4694
metamaskbot Apr 27, 2026
dd7eb4b
chore(runway): cherry-pick fix(card): update feature flag listener on…
runway-github[bot] Apr 27, 2026
bb2ff1f
[skip ci] Bump version number to 4695
metamaskbot Apr 27, 2026
4bbd221
Merge remote-tracking branch 'origin/stable-sync-7.73.2' into release…
joaoloureirop Apr 27, 2026
64531d7
[skip ci] Bump version number to 4696
metamaskbot Apr 27, 2026
1e39ef0
[skip ci] Bump version number to 4698
metamaskbot Apr 27, 2026
fe2545f
trigger ci
joaoloureirop Apr 28, 2026
19fda50
release: release-changelog/7.74.0 (#28945)
metamaskbotv2[bot] Apr 28, 2026
4fcf97c
[skip ci] Bump version number to 4705
metamaskbot Apr 28, 2026
46e2208
trigger ci
joaoloureirop Apr 28, 2026
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
  •  
  •  
  •  
142 changes: 142 additions & 0 deletions .agents/skills/perps-core-sync/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
---
name: perps-core-sync
description: Sync the perps controller from mobile to the core monorepo with change detection, automated validation, failure resolution, and post-sync commit guidance. Use after perps controller changes land in mobile.
---

# Perps Core Sync

## Purpose

Use this skill to sync `app/controllers/perps/` from mobile to `packages/perps-controller/src/` in the core monorepo. The sync is driven by `scripts/perps/validate-core-sync.sh` β€” a 9-step pipeline (preflight, conflict check, copy, install, verify, eslint fix, build, lint, write sync state).

Use when:

- New commits touch `app/controllers/perps/` since the last sync
- A perps PR is merged and needs to propagate to core
- You need to verify mobile changes are core-compatible before pushing

Do not use when:

- Changes are UI-only (`app/components/UI/Perps/`) β€” these don't sync
- Changes are test-only (`*.test.ts`) β€” tests are excluded from sync
- The core repo is not checked out locally

## Pre-Sync: Detect Changes

Read the sync state from core to find what changed since the last sync:

```bash
cat <core-path>/packages/perps-controller/.sync-state.json
```

Extract `lastSyncedMobileCommit` and run:

```bash
# Commits since last sync
git log <lastSyncedMobileCommit>..HEAD --oneline -- app/controllers/perps/

# File-level summary (excluding tests)
git diff <lastSyncedMobileCommit>..HEAD --stat -- app/controllers/perps/ ':!*.test.ts'
```

Pay special attention to:

- **New files** β€” need exports wired in core's `index.ts`, may need `tsconfig` references or new dependencies
- **Deleted files** β€” rsync `--delete` handles removal, but verify no stale imports remain in core
- **Changes to `PerpsPlatformDependencies`** β€” DI interface changes affect extension consumers
- **Public API changes** β€” state shape, method signatures, event names affect all consumers

## Execute Sync

```bash
bash scripts/perps/validate-core-sync.sh --core-path <core-path>
```

Options:

- `--skip-build` β€” skip the build step for faster iteration when debugging lint/copy issues
- `--skip-test` β€” skip the test step for faster iteration
- `--verbose` β€” show full output for every step (useful for debugging)

The script runs these 12 steps in order:

| Step | What it does |
| ----------------------- | --------------------------------------------------------------------------------------- |
| 1. Pre-flight checks | Confirms mobile source, core destination, required tools |
| 2. Conflict check | Fetches origin/main, checks for upstream perps-controller changes, validates sync state |
| 3. Copy source files | rsync `.ts` files (excluding tests, mocks, fixtures) |
| 4. Install dependencies | `yarn install` in core |
| 5. Verify build fixes | Checks for `__DEV__`, mobile imports, closure fixes |
| 6. ESLint auto-fix | Runs `--fix`, `--suppress-all`, `--prune-suppressions`, checks suppression delta |
| 7. Format fix (oxfmt) | Runs `yarn lint:misc --write` β€” core uses oxfmt, not prettier |
| 8. Build | `yarn workspace @metamask/perps-controller build` |
| 9. Lint | Final lint pass to confirm zero violations |
| 10. Test | `yarn workspace @metamask/perps-controller test` β€” catches DI/fixture mismatches |
| 11. Changelog check | Verifies `CHANGELOG.md` has been updated (core CI requirement) |
| 12. Write sync state | Updates `.sync-state.json` with commit hashes and checksum |

## Failure Resolution

| Failure | Cause | Fix |
| -------------------------------------------------------- | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `__DEV__` found | Mobile code uses `__DEV__` guard | Replace with `false` in the mobile source file, or route through `PerpsPlatformDependencies` for environment-aware behavior. Fix in mobile, then re-sync. |
| Mobile imports (Engine, react-native, Sentry, DevLogger) | Direct platform import in controller | Route through `PerpsPlatformDependencies` (DI). All platform services must come through the `infrastructure` constructor param. Fix in mobile. |
| Suppression delta increase | Sync introduces new ESLint violations | Fix violations in mobile first (e.g., `'x' in y` β†’ `hasProperty(y, 'x')` from `@metamask/utils`). Re-run sync after fixing. |
| Build failure | Missing tsconfig references, missing dependencies, type errors | Check `packages/perps-controller/tsconfig.json` references. Ensure new imports have corresponding `dependencies` in `package.json`. |
| Lint failure after fix | Auto-fix didn't resolve all issues | Re-run the eslint fix step. If persistent, check for new rule violations that need manual fixes in mobile. |
| Format fix failure | oxfmt can't auto-fix some files | Check for syntax errors that prevent parsing. Core uses `oxfmt` (not prettier) for TS formatting. |
| Test failure | Test fixtures missing new DI dependencies | Add mocks for new `PerpsPlatformDependencies` fields (e.g., `diskCache`) in `tests/defer-eligibility.test.ts`. |
| Changelog check failure | `CHANGELOG.md` not updated | Add entries under `## [Unreleased]` with `### Added`, `### Fixed`, `### Changed` sections linking to the PR. |
| Conflict check: behind origin/main | Someone pushed perps-controller changes to main | `cd <core-path> && git merge origin/main` before re-running sync. |
| Conflict check: checksum mismatch | Core source was hand-edited since last sync | Review the edits. Either port them back to mobile or discard and re-sync. |

## Post-Sync

After all 12 steps pass:

1. **Review the diff in core:**

```bash
cd <core-path> && git diff --stat
```

2. **Update `CHANGELOG.md`** before committing. Core CI requires entries under `## [Unreleased]`. Sections must follow [Keep a Changelog](https://keepachangelog.com/) order:

```
### Added β€” new features, exports, files
### Changed β€” refactors, dependency bumps
### Deprecated β€” soon-to-be-removed features
### Removed β€” removed features
### Fixed β€” bug fixes
### Security β€” vulnerability fixes
```

Each entry must link to the PR: `([#NNNN](https://github.com/MetaMask/core/pull/NNNN))`.
Validate locally: `yarn workspace @metamask/perps-controller changelog:validate`

3. **Commit in core** with conventional format:

```
feat(perps): sync controller from mobile

Syncs app/controllers/perps/ from mobile commit <short-hash>.

Changes:
- <summarize key changes from the pre-sync commit list>
```

4. **Verify `.sync-state.json` was updated** β€” it should contain the current mobile HEAD commit.

5. **Check suppression count** β€” if non-zero, note it in the PR description. Target is zero suppressions.

6. **Use `--verbose` when debugging** β€” without it, step output is captured to temp files and only shown on failure. With `--verbose`, all output streams to the terminal.

## Portability Rules

Reference: `docs/perps/perps-review-antipatterns.md` (Controller Portability section).

- **No `__DEV__`** β€” must not appear in controller files. Core has no React Native dev mode.
- **No mobile imports** β€” no `react-native`, `Engine`, `Sentry`, `DevLogger`. Everything through `PerpsPlatformDependencies` DI.
- **No direct controller imports from app code** β€” app files must import from `@metamask/perps-controller`, not relative paths.
- **Public API = publisher contract** β€” changing state shape, method signatures, or event names affects extension consumers. Coordinate breaking changes.
- **New dependencies must be in DI interface** β€” controller code must not reach outside its boundary.
4 changes: 4 additions & 0 deletions .agents/skills/perps-core-sync/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
interface:
display_name: "Core Sync"
short_description: "Sync perps controller from mobile to core monorepo."
default_prompt: "Use $perps-core-sync to detect changes and sync app/controllers/perps/ to core."
1 change: 1 addition & 0 deletions .agents/skills/pr-codeowners/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ description: Identify code owners for changed files and map them to Slack group
| wallet-api-platform | wallet-integrations-team |
| ramp | ramp-team |
| predict | predict-team |
| social-ai | social-ai-team |
| rewards | rewards-team |
| design-system-engineers | metamask-design-system-team |
| core-platform | core-platform-team |
Expand Down
4 changes: 1 addition & 3 deletions .claude/commands/unit-test.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,18 @@
## Steps

1. **Get changed files**

- Run `git diff --name-only --diff-filter=ACMR` for all changes (staged + unstaged)
- Filter for `.js`, `.jsx`, `.ts`, `.tsx` files
- Display list

2. **Find test files**

- Check if file is already a test file (contains `.test.`)
- For source files, find related tests: `{basename}.test.{ext}`
- Exclude snapshots (`.snap`)
- Collect unique test files
- **Flag any `toMatchSnapshot()` calls found** β€” these are banned; note them for migration to explicit assertions or `toMatchInlineSnapshot()`

3. **Run tests**

- Execute `yarn jest` with all found test files
- Run without coverage
- Capture results
Expand Down
6 changes: 6 additions & 0 deletions .claude/skills/perps-core-sync/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
name: perps-core-sync
summary: Sync perps controller from mobile to core monorepo with change detection.
---

Follow `.agents/skills/perps-core-sync/SKILL.md`.
16 changes: 12 additions & 4 deletions .cursor/rules/ui-development-guidelines.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,19 @@ Always prioritize @metamask/design-system-react-native components and Tailwind C
**Before writing any new component or choosing what to use, ask: "Does @metamask/design-system-react-native have this?"**

1. **FIRST**: Use `@metamask/design-system-react-native` components
- **Always use for**: Box (layout), Text (typography), Button/ButtonBase/ButtonIcon, Icon, Checkbox
- **Always use for**: Box (layout), Text, SensitiveText, TextButton (inline links only)
- **Always use for**: Button, ButtonBase, ButtonIcon, ButtonSemantic, Icon, Checkbox, RadioButton
- **Always use for**: Avatar variants (Account, Base, Favicon, Group, Icon, Network, Token)
- **Always use for**: Badge variants (Count, Icon, Network, Status, Wrapper)
- **Always use for**: BottomSheet, BottomSheetFooter, BottomSheetHeader, BottomSheetDialog, BottomSheetOverlay
- **Always use for**: HeaderBase, HeaderRoot, HeaderSearch, HeaderStandard
- **Always use for**: BannerAlert, Card, ListItem, Skeleton, Label, Input, TextField
- **Always use for**: KeyValueRow, KeyValueColumn, ActionListItem, MainActionButton, TabEmptyState

- **Rule**: If it exists in the design system, you MUST use it

2. **SECOND**: Use `app/component-library` ONLY if design system lacks it
- **Use for**: BottomSheet, Tabs, Headers, ListItems, Skeleton, Tags, Modal, Overlay, Toast, RadioButton, etc.
- **Use for**: Tabs, Tags, Cells, Modal, Overlay, Toast, Pickers, Select, Sheet/SheetHeader, etc.
- **Rule**: These are MetaMask-specific implementations not (yet) in the design system
- **Important**: component-library components should themselves use design system primitives internally

Expand All @@ -40,10 +46,12 @@ Always prioritize @metamask/design-system-react-native components and Tailwind C
### Decision Tree
```
Need a component?
β”œβ”€ Is it Box, Text, Button, Icon, Avatar, Badge, or Checkbox?
β”œβ”€ Is it Box, Text, Button, Icon, Avatar, Badge, Checkbox, RadioButton,
β”‚ BottomSheet, Header, BannerAlert, Card, ListItem, Skeleton, Label,
β”‚ TextField, Input, KeyValueRow, SensitiveText, TextButton, or ActionListItem?
β”‚ └─ YES β†’ Use @metamask/design-system-react-native [STOP]
β”‚
β”œβ”€ Is it BottomSheet, Tabs, Header, ListItem, Skeleton, Tag, Modal, etc?
β”œβ”€ Is it Tabs, Tags, Cells, Modal, Overlay, Toast, Pickers, Select, Sheet?
β”‚ └─ YES β†’ Use app/component-library [STOP]
β”‚
β”œβ”€ Is it feature-specific UI (e.g., BridgeInputSelector, StakeInputView)?
Expand Down
Loading
Loading