Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
396 commits
Select commit Hold shift + click to select a range
13b1de3
fix(perps): [DESIGN DEBT] Update arrow symbols on perps order pages (…
abretonc7s Apr 2, 2026
ac5543d
fix: apply themed background color to navigation card styles (#28307)
asalsys Apr 2, 2026
11f9d69
fix(perps): reduce always-on websocket init errors (#28258)
abretonc7s Apr 2, 2026
26911b7
fix(onboarding): add theme background color and center title in Socia…
tylerc-consensys Apr 2, 2026
b2f5730
fix: apply theme background color to Ramp buy/sell navigation cards (…
asalsys Apr 2, 2026
1d58bc0
refactor: remove ScreenComponent any casts for RootModalFlow security…
asalsys Apr 2, 2026
a7980e3
test: sets the carousel mocks to false on the netwrok-manager spec (#…
christopherferreira9 Apr 2, 2026
3e78a6a
test: unified framework main branch (#27939)
cortisiko Apr 2, 2026
65c0a30
feat: Expose all PerpsController methods through messenger (#28257)
cryptodev-2s Apr 2, 2026
0145d28
feat: add push notification icons to Braze configuration for Android …
baptiste-marchand Apr 2, 2026
8d90107
chore: update design-system-react-native to 0.12.0 and migrate deprec…
georgewrmarshall Apr 2, 2026
fd52cb8
feat: migrate Skeleton component (confirmations scope) (#27433)
kirillzyusko Apr 2, 2026
1e29033
fix(nav): add slide transition to Swaps and Bridge screens (#28347)
asalsys Apr 2, 2026
830b661
test: show build type and branch name on About MetaMask screen for no…
sleepytanya Apr 2, 2026
ca8193e
fix: dismiss bridge keypad when zero-state content is touched (#28325)
bfullam Apr 2, 2026
bcd3dc3
refactor(navigation): deduplicate clearStackNavigatorOptions across r…
asalsys Apr 2, 2026
5e11176
refactor: remove ScreenComponent any casts for RootModalFlow assets/s…
asalsys Apr 2, 2026
d9a3cd6
fix: dedup chain change relay notifications over WalletConnect (#27978)
wenfix Apr 2, 2026
e37cc9c
refactor: remove getTransactionsNavbarOptions (#28289)
jiexi Apr 2, 2026
27cccb3
fix: detect SDKConnectV2 connections in useOriginSource via v2Connect…
adonesky1 Apr 2, 2026
3c45e88
chore(component-library): align deprecated migration links for Text/I…
georgewrmarshall Apr 2, 2026
6e136a6
refactor: remove ScreenComponent any casts for RootModalFlow SDK/acco…
asalsys Apr 2, 2026
69b2afb
chore: use push EAS directly (#28362)
weitingsun Apr 2, 2026
827b918
feat: integrate `money-account-controller` (#28301)
ccharly Apr 2, 2026
b155157
fix: prevent infinite quote request loop caused by token warning in u…
infiniteflower Apr 2, 2026
a173556
fix: Fix network picker in IAB not reflecting dapp selected network (…
jiexi Apr 2, 2026
0c0ad7b
feat: Add self reported dapp url in CONNECT_REQUEST_COMPLETED event (…
jiexi Apr 2, 2026
366e9cc
ci: fix Runway OTA core workflow reusable job layout (#28368)
weitingsun Apr 3, 2026
fda751e
fix(predict): improve Predict buy-with-any-token UX from UAT issues c…
caieu Apr 3, 2026
94ed316
feat: migrate Button component (mobile core UX scope) (#27693)
kirillzyusko Apr 3, 2026
7c83657
feat: Skeleton migration (card scope) (#27362)
kirillzyusko Apr 3, 2026
b5af435
feat(card): Apple In-App provisioning (#25744)
Brunonascdev Apr 3, 2026
c7a447a
fix(add-asset): use gesture-handler ScrollView in network selector bo…
Prithpal-Sooriya Apr 3, 2026
af4d7ea
fix: add hasPerpsMarket to token details opened event cp-7.73.0 (#28242)
sahar-fehri Apr 3, 2026
16eacfe
chore(release): Bump main version to 7.74.0 (#28357)
metamaskbot Apr 3, 2026
e0e9612
ci: skip smart e2e ai selection for cherry-pick PRs targeting release…
chloeYue Apr 3, 2026
08250fe
feat(perps): add toast notifications and balance validation for perps…
dan437 Apr 3, 2026
b1dd773
feat: Expose RewardsController and PredictController methods through …
cryptodev-2s Apr 3, 2026
637ad6a
refactor(onboarding): remove stale unlock CTA and tests (#28216)
georgewrmarshall Apr 3, 2026
3500166
chore: refactoring onboarding screens to design system (#28192)
georgewrmarshall Apr 3, 2026
6baff38
fix: Resolve fine location max sdk to app version's sdk - cp-7.72.0 (…
Cal-L Apr 3, 2026
6334093
chore(ci): clean up workflow inputs and add iOS build number (#28375)
tommasini Apr 3, 2026
5284a0c
test: address claim position flake (#28380)
cortisiko Apr 3, 2026
aabb479
feat(card): remove Card-related blocking feature flags (#27935)
Brunonascdev Apr 3, 2026
43a952d
fix: fix text size when the user increases it cp-7.73.0 (#28340)
zone-live Apr 3, 2026
8da8416
refactor: rename analytics source from sdk_connect_v2 to mm_connect (…
adonesky1 Apr 3, 2026
0711cca
chore: upgrade design system packages and migrate bold to semibold (#…
georgewrmarshall Apr 3, 2026
5d16844
fix(ramps): Single-owner React Query fetching for providers, tokens, …
imyugioh Apr 3, 2026
9e56b9f
fix(ramps): match Build Quote payment pill to payment selection modal…
amitabh94 Apr 4, 2026
bcdaa5c
fix: buy flow quote loading and provider selection (#28373)
amitabh94 Apr 4, 2026
f4d21a3
fix(ramp): default icon color on Build Quote payment pill (#28398)
amitabh94 Apr 4, 2026
62ea975
fix(ramps): Case sensitive mismatch between token assetIds and provid…
imyugioh Apr 5, 2026
abac035
fix: Remove Android access fine location from bluetooth library - cp-…
Cal-L Apr 6, 2026
da7f034
refactor: remove ScreenComponent any casts for Redux/shared-Props com…
asalsys Apr 6, 2026
853bcfb
feat(card): migrate card on-chain checks to CardController (#28291)
Brunonascdev Apr 6, 2026
408e6d9
chore: upgrade Xcode to 26.3 to satisfy iOS 26 SDK requirement (#27726)
tommasini Apr 6, 2026
3e7f8c0
test: adds a retry to the android system images install (#28107)
christopherferreira9 Apr 6, 2026
11fc440
refactor(predict): move deposit amount to PredictPayWithAnyTokenInfo …
caieu Apr 6, 2026
1e48b30
feat(card): migrate authentication to CardController (#28414)
Brunonascdev Apr 6, 2026
98d60f3
feat: add remote feature flag for section ordering and made predictio…
juanmigdr Apr 6, 2026
2c1a56d
feat(predict): implement featured carousel (#28102)
ghgoodreau Apr 6, 2026
0d42616
feat: adding money account withdraw confirmation page (#28181)
jpuri Apr 6, 2026
bfd958c
refactor(predict): decompose PredictController into focused modules (…
matallui Apr 6, 2026
f6dcbae
chore(deps): bump @xmldom/xmldom to 0.8.12 (#28424)
georgewrmarshall Apr 6, 2026
bfc8e9a
chore(deps): upgrade twrnc preset to remove unused fontWeight styles …
georgewrmarshall Apr 6, 2026
f923f78
chore: improve unit test CI performance via shared deps cache and Jes…
tommasini Apr 6, 2026
41c8d80
feat: Advanced charts integration in token details page (#26465)
sahar-fehri Apr 6, 2026
6d11677
chore: gitignore claude worktrees directory (#28443)
tylerc-consensys Apr 7, 2026
e259aee
fix: silent biometric cancel for react-native keychain errors (#28372)
grvgoel81 Apr 7, 2026
a8d18ab
feat: Ondo campaign activity view (#28360)
sophieqgu Apr 7, 2026
faee9e7
fix: correct gas modal stacking on cancel/speed-up (#28232)
vinistevam Apr 7, 2026
dbcb3fe
feat: implement A/B testing for homepage trending sections (#28021)
PatrykLucka Apr 7, 2026
0a21a64
refactor(onboarding): migrate OAuthRehydration to design system (#28315)
tylerc-consensys Apr 7, 2026
5c404d0
fix: enhance multichain address sorting and block explorer integratio…
PatrykLucka Apr 7, 2026
7e704a6
fix: check for balance considering different formats (#28382)
bergarces Apr 7, 2026
fd014ad
ci: use artifacts instead of cache for unit test workspace sharing (#…
tommasini Apr 7, 2026
8d45408
fix: improve badge display for long name tokens and network name disp…
sahar-fehri Apr 7, 2026
b4f63c4
feat(perps): compliance on ui (#28034)
aganglada Apr 7, 2026
bff93ab
chore: revert ci changes unit tests improvements (#28474)
tommasini Apr 7, 2026
da75427
chore(rewards): improve Ondo campaign RWA position UX (#28450)
VGR-GIT Apr 7, 2026
45bc5d1
feat: integrate analytics tracking for NFT actions in NFTsSection (#2…
PatrykLucka Apr 7, 2026
f488d2b
feat: selectSRPbottomsheet and revealPrivateCredential design migrati…
grvgoel81 Apr 7, 2026
f7b5763
feat: migrate `BottomSheet` (perps scope) (#28260)
kirillzyusko Apr 7, 2026
f223e87
Merge origin/main into stable-main-7.78.0
metamaskbot Apr 7, 2026
d3a6a28
feat: liveline charts (#28369)
matallui Apr 7, 2026
6491997
feat: compliace tracking (#28475)
aganglada Apr 7, 2026
2830dfa
chore: improve scroll back experience on advanced charts (#28451)
sahar-fehri Apr 7, 2026
4973b2f
ci: replace Bitrise trigger with Runway pipeline in RC build workflow…
tommasini Apr 7, 2026
5ed240f
ci(unit-tests): enable Jest cache and increase maxWorkers in CI (#28482)
tommasini Apr 7, 2026
2f176df
fix(snaps): Display account group names and balances in `SnapUIAccoun…
FrederikBolding Apr 7, 2026
ab27dd1
feat(predict): track mmpay submitted event with payment token address…
caieu Apr 7, 2026
ebd9f20
fix(ramp): prevent payment method flash before auto-selection (#28173)
saustrie-consensys Apr 7, 2026
825f0d9
chore: slack rc mjs cleanup (#28490)
tommasini Apr 7, 2026
4276cd7
fix(predict): reset active order state on payment token clear and sup…
caieu Apr 7, 2026
182d77e
fix(onboarding): remove stale footer flag for fox animation (#28364)
georgewrmarshall Apr 7, 2026
0a229a8
feat(predict): add series data service for Crypto Up/Down markets (#2…
matallui Apr 7, 2026
6b87906
test: update unit test guidelines to account for the removal of toMat…
cortisiko Apr 7, 2026
f520f7e
chore(fonts): remove remaining Geist-Bold references (#28425)
georgewrmarshall Apr 7, 2026
bc06cd5
chore(ci): migrate iOS CI runners from macOS Sequoia to Tahoe for Xco…
tommasini Apr 7, 2026
505770f
fix: backfill-consent-event cp-7.73.0 (#28080)
ieow Apr 8, 2026
15bfa95
ci(e2e): add dedicated SmokeSeedlessOnboarding CI job for iOS and And…
smgv Apr 8, 2026
8f239c2
ci: change create release PR to bump OTA version (#28202)
weitingsun Apr 8, 2026
c9a5b45
fix: update account status screen with new ui design system cp-7.73.0…
ieow Apr 8, 2026
d1254b3
Merge branch 'main' into stable-main-7.78.0
chloeYue Apr 8, 2026
be27544
chore(release): sync stable to main for version 7.72.0 (#28486)
metamaskbotv2[bot] Apr 8, 2026
c86fa52
feat: migrate socialLoginIosUser screen into new design system (#28227)
grvgoel81 Apr 8, 2026
e75dadb
feat: redesign MM Pay confirmations pages (#28336)
jpuri Apr 8, 2026
f740e26
chore(rewards): render rich text for campaign step description (#28498)
sophieqgu Apr 8, 2026
16c6205
refactor(analytics): D4 migrate useMetrics to useAnalytics in Notific…
NicolasMassart Apr 8, 2026
6d2563a
chore(agentic): shrink AgentStepHud overlay and tidy agent-local giti…
abretonc7s Apr 8, 2026
905043c
feat: add "Your bonus" section to mUSD asset page (#28479)
Kureev Apr 8, 2026
93c5524
feat(perps): sync controller code with extension (#28509)
abretonc7s Apr 8, 2026
5f822a5
fix(perps): show standard Order submitted toast for pay-with-any-toke…
michalconsensys Apr 8, 2026
a971982
refactor(analytics): D1 migrate Rewards from useMetrics to useAnalyti…
NicolasMassart Apr 8, 2026
3f4f74d
fix: mock useTokensData in SimulationValueDisplay test to prevent fla…
dan437 Apr 8, 2026
b5a944d
fix: Android slippage input text clipping (#28464)
bfullam Apr 8, 2026
5ac52ae
feat: add pull-to-refresh functionality to DeFiPositionsList componen…
PatrykLucka Apr 8, 2026
4d6afcc
fix(bridge): harden token hooks against malformed API responses cp-7.…
bfullam Apr 8, 2026
cea6aac
test: remove toMatchSnapshot and removed snapshot files in component …
cortisiko Apr 8, 2026
65c65fe
refactor: migrate SettingsButtonSection to design-system Button (#28058)
georgewrmarshall Apr 8, 2026
d02664a
chore(ci): use preinstalled Android API 36 image for E2E (#28468)
joaoloureirop Apr 8, 2026
6acdb7b
chore: update JS bundle size limit to 55 MB (#28547)
bfullam Apr 8, 2026
243b197
feat: add fiat price impact value in price impact modal (#28378)
GeorgeGkas Apr 8, 2026
9cf2c1c
fix: track navbar location for trade swap clicks (#28544)
bfullam Apr 8, 2026
ccf1e6c
fix(perps): extract payment token init into useInitPerpsPaymentToken …
michalconsensys Apr 8, 2026
ad0f41c
fix(predict): allows long titles to wrap in buy preview header (#28446)
ghgoodreau Apr 8, 2026
3cc9298
chore: remove usage of tokensChainsCache in token details page (#28533)
juanmigdr Apr 8, 2026
5f18700
test: remove toMatchSnapshot and removed snapshot files inaccounts te…
cortisiko Apr 8, 2026
d1fce97
fix: remove unused logs (#27925)
joaoloureirop Apr 8, 2026
fa7e722
chore: Generate iOS IPA for dev builds and test APK for Android build…
Cal-L Apr 8, 2026
9e56211
feat: automatically enrich analytics events with active A/B tests (#2…
bfullam Apr 8, 2026
a31efa9
fix: compliance env (#28562)
aganglada Apr 8, 2026
8d435dd
feat(rewards): campaign tour (#28495)
sophieqgu Apr 8, 2026
8e7eb3e
fix: include clientId and clientVersion in bridge token api requests …
micaelae Apr 8, 2026
8575cca
feat(predict): add feed grouping logic for Crypto Up/Down series (#28…
matallui Apr 8, 2026
68bf844
fix(i18n): correct Turkish percent interpolation placeholders (TMCU-6…
PatrykLucka Apr 8, 2026
7362ef0
feat(perps): Export perps decimal formatters from UI utils to control…
abretonc7s Apr 9, 2026
3fa1e22
fix(perps): TP/SL orders disappear after creating a market order (#28…
abretonc7s Apr 9, 2026
aae73ee
test: Add skip-smart-e2e-selection label for Feature Flag Drift CI (#…
LeVinhGithub Apr 9, 2026
19e3757
fix: standardize account type analytics (#27596)
grvgoel81 Apr 9, 2026
f459bdf
feat: handle Braze deeplinks when clicking push notifications (#28379)
baptiste-marchand Apr 9, 2026
7b2a0a1
refactor(ManualBackupStep3): migrate to design system components (#27…
tylerc-consensys Apr 9, 2026
a8af4fe
chore: use horizontal scroll for perps section in explore (#28512)
juanmigdr Apr 9, 2026
f974f41
fix: use event subscription for timeframe changing resolution for AC …
sahar-fehri Apr 9, 2026
703f986
chore: bump `@metamask/tron-wallet-snap` to `^1.25.1` (#28520)
mikesposito Apr 9, 2026
d4007a1
feat(tron): add TRX staking rewards overview (#28052)
ulissesferreira Apr 9, 2026
bebb40f
feat: legacy-ios-google-not-supported (#28402)
ieow Apr 9, 2026
bb8500e
feat: improve STX metrics (#28501)
rarquevaux Apr 9, 2026
f83e6fd
feat: add performance tracking for homepage sections (#28463)
PatrykLucka Apr 9, 2026
6a1e724
chore: remove tokensChainsCache from token hiding flow (#28552)
juanmigdr Apr 9, 2026
c8f106d
fix(analytics): send has_marketing_consent as boolean in user traits …
ieow Apr 9, 2026
413327c
fix: persist chart type in state (#28580)
sahar-fehri Apr 9, 2026
3cef363
feat: hide zero-balance tokens on homepage and migrate setting for al…
salimtb Apr 9, 2026
ee41b3b
feat: add account selection on money account deposit page (#28415)
jpuri Apr 9, 2026
3b09c24
fix: perps withdraw metrics, UI, and fee display improvements (#28588)
dan437 Apr 9, 2026
71c555f
fix: ensure Send max is full balance if gas sponsored (#28055)
maxime-oe Apr 9, 2026
da893e4
fix: adjust volume bar transparency (#28577)
sahar-fehri Apr 9, 2026
3a0f847
fix: normalize address before formatting assetId for advanced chart d…
sahar-fehri Apr 9, 2026
f866ad8
chore: Update transaction pay controller to 19.1.0 (#28591)
pedronfigueiredo Apr 9, 2026
1ae013c
feat: use new reveal srp flow for seedless account (#28081)
grvgoel81 Apr 9, 2026
d2ae7cd
fix: MMPay design issues (#28597)
jpuri Apr 9, 2026
d732206
chore: enable batched account creation for Solana (#28429)
gantunesr Apr 9, 2026
156d15a
fix: money account confirmation page issues (#28466)
jpuri Apr 9, 2026
7e598d5
fix: Ensure `AbortController` populates `reason` for `AbortSignal` (#…
FrederikBolding Apr 9, 2026
31512e8
fix(perps): avoid full reconnection on foreground return when WebSock…
abretonc7s Apr 9, 2026
2998fd8
feat: add QR hardware wallet adapter (#28036)
montelaidev Apr 9, 2026
8b1df75
feat: add tempo transactions support on Mobile (#27142)
maxime-oe Apr 9, 2026
11e58e2
fix: perps withdraw token selection and balance validation (#28599)
dan437 Apr 9, 2026
2fc5b96
test: market insights on asset view added (#28587)
javiergarciavera Apr 9, 2026
202d3e8
test: remove toMatchSnapshot and removed snapshot files in money move…
cortisiko Apr 9, 2026
3708dbf
refactor(analytics): D2 migrate useMetrics to useAnalytics in Stake a…
NicolasMassart Apr 9, 2026
24d0f3e
refactor(analytics): D5 migrate MetaMetrics.getInstance() to analytic…
NicolasMassart Apr 9, 2026
6887e57
feat: add "Convert your stablecoins" module to Cash full view (#28536)
Kureev Apr 9, 2026
10b3e23
fix: route aggregated mUSD row to Cash screen instead of asset detail…
Kureev Apr 9, 2026
0c26cf4
chore: stop using tokensChainsCache on predictions withdraw confirmat…
juanmigdr Apr 9, 2026
35588df
fix(preidct): prioritize sport market type sorting over price sorting…
caieu Apr 9, 2026
d119b2d
fix: replace bridge close button with back navigation (#28605)
bfullam Apr 9, 2026
ce2f348
fix(predict): wires homepage_positions entry_point on Predict Feed Vi…
ghgoodreau Apr 9, 2026
af22d25
feat(predict): add extendedSportsMarketsLeagues version-gated feature…
caieu Apr 9, 2026
3f566c5
feat(STX-472): add gas-included metrics properties (#28571)
rarquevaux Apr 9, 2026
f8a6fb8
fix: bump axios to 1.15.0 to resolve critical SSRF vulnerability (#28…
weitingsun Apr 9, 2026
154ed38
chore: migrate DeleteNetworkModal to MDMS BottomSheet (#27998)
georgewrmarshall Apr 9, 2026
caacf44
chore: Migrate AddressSelector to DS BottomSheet (#28299)
georgewrmarshall Apr 9, 2026
41e27a5
test: remove toMatchSnapshot and removed snapshot files in core ux te…
cortisiko Apr 9, 2026
aedda91
fix: forward build outputs to Slack and PR comment to prevent stale b…
weitingsun Apr 9, 2026
27023bc
test: Fix Trade smoke tests (#28619)
davibroc Apr 9, 2026
dd3323c
test: migrate perf import multiple srp to ts (#28370)
cortisiko Apr 10, 2026
e14d0e7
fix: resolve white background in modals by using transparentModal pre…
tommasini Apr 10, 2026
05be635
test: phishing detection E2E tests with mocked dapp-scanning API (#28…
chrisleewilcox Apr 10, 2026
e0238a1
chore: upgrade @metamask/design-system-react-native to v0.14.0 (desig…
georgewrmarshall Apr 10, 2026
7a18715
feat(predict): scaffold Crypto Up/Down detail screen with header (#28…
matallui Apr 10, 2026
49357e1
feat(predict): add TimeSlotPicker component for series time windows (…
matallui Apr 10, 2026
c3b271a
test: add file download E2E tests with local HTML fixtures (#28634)
chrisleewilcox Apr 10, 2026
bbec92d
fix(perps): Incorrect PnL and order size displayed in perp market pag…
abretonc7s Apr 10, 2026
f501f76
test: remove toMatchSnapshot and removed snapshot files in assets tes…
cortisiko Apr 10, 2026
213dbe7
chore: remove unused tokensChainsCache usage in useWithdrawTokens (#2…
juanmigdr Apr 10, 2026
04e229d
fix: stake Tron page doesn't display any fee value (#28240)
Julink-eth Apr 10, 2026
2b1ea46
fix(perps): agentic preflight expo build + CDP discovery (#28640)
abretonc7s Apr 10, 2026
6d9165f
test: MMQA-1637 move all perps e2e tests to smoke (#27931)
racitores Apr 10, 2026
9f195d0
test: fixes local android build runs (#28606)
christopherferreira9 Apr 10, 2026
4aedbb4
fix: show transaction fee, est. time, and total rows for same-chain p…
dan437 Apr 10, 2026
f55869f
fix: advanced charts interactions (#28653)
sahar-fehri Apr 10, 2026
86b6748
refactor: rename Controller types to MessengerClient types (#28610)
cryptodev-2s Apr 10, 2026
6bb27e9
refactor(ramp): remove checkout callback registry from unified Checko…
wachunei Apr 10, 2026
54df3a0
fix: fallback media doesn't take up space cp-7.73.0 (#28618)
vinnyhoward Apr 10, 2026
c323361
chore: remove usage of tokensChainsCache from OndoPortfolio (#28646)
juanmigdr Apr 10, 2026
adf9753
fix: show perps withdraw transactions in Perps activity Deposits tab …
dan437 Apr 10, 2026
d48128d
fix: always show swaps button in asset but use default evm pair if ch…
infiniteflower Apr 10, 2026
495414e
fix(navigation): use transparentModal presentation for all feature mo…
tommasini Apr 10, 2026
216a318
chore: add charting library url (#28521)
tommasini Apr 10, 2026
56151ce
chore: expose GIT_BRANCH env var in build workflow for app informatio…
tommasini Apr 10, 2026
d80d86f
feat(predict): adds RTDS WebSocket connection for live crypto price s…
ghgoodreau Apr 10, 2026
62b5070
test: Mmqa 1695 perps market insights (#28616)
javiergarciavera Apr 10, 2026
51e1608
fix: add background color to MusdQuickConvertView to prevent glitchy …
tommasini Apr 10, 2026
2ff2004
chore: remove tokensChainsCache usage from usePerpsPaymentTokens (#28…
juanmigdr Apr 10, 2026
59dacd6
fix: remove animation config from learn more import srp pop up (#28629)
vinnyhoward Apr 10, 2026
9bd66ad
test: remove toMatchSnapshot and removed snapshot files in card tests…
cortisiko Apr 10, 2026
96ee8a5
chore(ci): derive RC slack notification changelog from git ancestry (…
joaoloureirop Apr 10, 2026
aafd5e0
chore: remove usage of tokensChainsCache from useMusdConversionStatus…
juanmigdr Apr 10, 2026
0805e78
chore(ci): enable RC rolling builds (#28680)
joaoloureirop Apr 10, 2026
90f34c6
fix(perps): enforce geo-block and compliance gate on Market Insights …
michalconsensys Apr 10, 2026
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
cb1e882
modify workflow to accept 2 digits
weitingsun Apr 13, 2026
fbaa070
chore: set OTA_VERSION to v7.78.21 for OTA hotfix (release/7.78.21)
metamaskbot Apr 13, 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
  •  
  •  
  •  
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
77 changes: 69 additions & 8 deletions .cursor/rules/unit-testing-guidelines.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,62 @@ testID={`token-item-${token.symbol}`}
testID={`network-option-${network.chainId}`}
```

## Snapshot Testing Policy - MANDATORY

### The Rule

- ❌ **`toMatchSnapshot()` is BANNED** — Do not use it. Do not add it. Do not approve it.
- ✅ **`toMatchInlineSnapshot()` is ALLOWED** — Use sparingly, only when the serialized output is the meaningful assertion.

### Why `toMatchSnapshot()` Is Banned

External snapshot files (`.snap`) have three critical problems:

1. **Invisible in review** — The diff lives in a separate `.snap` file that reviewers routinely rubber-stamp. Regressions hide there.
2. **No code ownership** — `CODEOWNERS` explicitly assigns `**/*.snap` to *nobody*, meaning no team is accountable for snapshot correctness.
3. **Brittle by design** — Any style tweak, whitespace change, or unrelated refactor regenerates the snapshot and silently passes CI.

### Why `toMatchInlineSnapshot()` Is Allowed

The snapshot string lives directly in the test file, so:
- It appears in the PR diff alongside the code that produces it
- The file's code owner is responsible for reviewing it
- Reviewers can see exactly what changed and why

### When to Use `toMatchInlineSnapshot()`

Only use it when the serialized shape of the output **is** the assertion — for example, verifying a complex object structure, a formatted string, or a serialized data payload. Do **not** use it as a lazy substitute for explicit `expect` calls.

```ts
// ❌ BANNED — writes to an external .snap file
expect(tree).toMatchSnapshot();
expect(component).toMatchSnapshot();
expect(result).toMatchSnapshot();

// ✅ ALLOWED — snapshot is inline and visible in review
expect(result).toMatchInlineSnapshot(`
{
"chainId": "0x1",
"name": "Ethereum Mainnet",
}
`);

// ✅ PREFERRED — explicit assertions are always better than snapshots
expect(result.chainId).toBe('0x1');
expect(result.name).toBe('Ethereum Mainnet');
```

### Migrating Existing `toMatchSnapshot()` Calls

When you encounter an existing `toMatchSnapshot()` call:
1. **Prefer replacing it** with explicit `expect` assertions targeting the specific values that matter.
2. If the full serialized output is genuinely meaningful, convert to `toMatchInlineSnapshot()`.
3. Delete the corresponding `.snap` file entry once migrated.

Do **not** leave `toMatchSnapshot()` in place when modifying a test file — migrate it as part of your change.

---

## Assertions - PREFER toBeOnTheScreen

- **ALWAYS use `toBeOnTheScreen()`** to assert element presence - NOT `toBeTruthy()` or `toBeDefined()`
Expand Down Expand Up @@ -398,7 +454,7 @@ it.each(['small', 'medium', 'large'] as const)('renders %s size', (size) => {
## Test Determinism

- **EVERYTHING** not under test must be mocked - no exceptions.
- Avoid brittle tests: do not test internal state or UI snapshots for logic.
- Avoid brittle tests: do not test internal state or UI snapshots for logic. **`toMatchSnapshot()` is banned** — see Snapshot Testing Policy above.
- Only test public behavior, not implementation details.
- Mock time, randomness, and external systems to ensure consistent results.

Expand Down Expand Up @@ -514,7 +570,7 @@ expect(result).toBe(false);
```

- Ensure tests use proper matchers (`toBeOnTheScreen` vs `toBeDefined`).
- Do not approve PRs without reviewing snapshot diffs, it can reveal errors.
- **Reject any new `.snap` files or new `toMatchSnapshot()` calls** — these are banned; require the author to use explicit assertions or `toMatchInlineSnapshot()` instead.
- Reject tests with complex names combining multiple logical conditions (AND/OR).

# Refactoring Support
Expand All @@ -527,6 +583,7 @@ expect(result).toBe(false);

Before submitting any test file, verify:

- [ ] **No `toMatchSnapshot()` calls** — BANNED; use explicit assertions or `toMatchInlineSnapshot()` instead
- [ ] **No mocking to inject testIDs** - Use component's built-in testID support
- [ ] **testIDs via child prop objects** - Use `closeButtonProps={{ testID }}` not mocks
- [ ] **No "should" in any test name**
Expand All @@ -545,6 +602,7 @@ Before submitting any test file, verify:

# Common Mistakes to AVOID - CRITICAL

- ❌ **Using `toMatchSnapshot()`** — BANNED; it writes opaque `.snap` files with no code owner; use explicit assertions or `toMatchInlineSnapshot()` instead
- ❌ **Mocking to inject testIDs** - Components already support testID (see guidelines above)
- ❌ **Using "should" in test names** - This is the #1 mistake, use action-oriented descriptions
- ❌ **Testing multiple behaviors in one test** - One test, one behavior
Expand Down Expand Up @@ -588,8 +646,9 @@ yarn test:unit:coverage
## Workflow Requirements

- Confirm all tests are passing before commit.
- When a snapshot update is detected, confirm the changes are expected.
- Do not blindly update snapshots without understanding the differences.
- **Do not add new `toMatchSnapshot()` calls** — this is banned. See Snapshot Testing Policy.
- When modifying a test file that contains `toMatchSnapshot()`, opportunistically migrate those calls to explicit assertions or `toMatchInlineSnapshot()` — do not block a PR solely to force migration, but do not add new ones.
- `toMatchInlineSnapshot()` updates are acceptable but must be reviewed — confirm the new inline snapshot reflects an intentional, expected change.

# Reference Code Examples

Expand All @@ -606,12 +665,14 @@ it('indicates expired milk when past due date', () => {
});
```

## ❌ Brittle Snapshot
## ❌ Banned: `toMatchSnapshot()`

```ts
// ❌ BANNED — toMatchSnapshot() writes to an external .snap file.
// It has no code owner, hides regressions, and breaks on trivial changes.
it('renders the button', () => {
const { container } = render(<MyButton />);
expect(container).toMatchSnapshot(); // 🚫 fails on minor style changes
expect(container).toMatchSnapshot(); // 🚫 BANNED — do not use
});
```

Expand Down Expand Up @@ -640,7 +701,7 @@ it('hides selector when disabled', () => {

## Reviewer Responsibilities

Validate tests fail when code breaks • Ensure proper matchers • Review snapshot diffs • Reject complex names with AND/OR
Validate tests fail when code breaks • Ensure proper matchers • **Reject new `toMatchSnapshot()` calls and new `.snap` files** • Reject complex names with AND/OR

```ts
// OK
Expand All @@ -652,6 +713,6 @@ it('renders and disables button when input is empty or missing required field');

## Workflow

Always run tests after changes • Confirm all pass before commit • Review snapshot changes • Don't blindly update snapshots
Always run tests after changes • Confirm all pass before commit • **Do not add new `toMatchSnapshot()` calls** — migrate existing ones to explicit assertions or `toMatchInlineSnapshot()` when touching a test file

**Resources**: [Contributor docs](https://github.com/MetaMask/contributor-docs/blob/main/docs/testing/unit-testing.md) • [Jest Matchers](https://jestjs.io/docs/using-matchers) • [React Native Testing Library](https://testing-library.com/docs/react-native-testing-library/intro/)
2 changes: 1 addition & 1 deletion .detoxrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ module.exports = {
'ios.simulator': {
type: 'ios.simulator',
device: {
type: 'iPhone 15 Pro',
type: 'iPhone 16 Pro',
},
},
'android.emulator': {
Expand Down
98 changes: 23 additions & 75 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -167,81 +167,10 @@ module.exports = {
'no-console': 'off',
},
},
{
// Temporary rollout strategy:
// Keep color-no-hex disabled for all tests by default, then re-enable it
// for specific folders in small PR batches. Once migration is complete,
// remove this override and enforce across all tests in:
// - app/components/
// - app/component-library/
files: ['**/*.test.{js,ts,tsx}', '**/*.stories.{js,ts,tsx}'],
rules: {
'@metamask/design-tokens/color-no-hex': 'off',
},
},
{
files: [
// @MetaMask/card
'app/components/UI/Card/**/*.{js,jsx,ts,tsx}',
// @MetaMask/core-platform
'app/components/Snaps/**/*.{js,jsx,ts,tsx}',
// @MetaMask/predict
'app/components/UI/Predict/**/*.{js,jsx,ts,tsx}',
// @MetaMask/ramp
'app/components/UI/Ramp/**/*.{js,jsx,ts,tsx}',
// @MetaMask/rewards
'app/components/UI/Rewards/**/*.{js,jsx,ts,tsx}',
// @MetaMask/perps
'app/components/UI/Perps/**/*.{js,jsx,ts,tsx}',
// @MetaMask/metamask-earn
'app/components/UI/Earn/**/*.{js,jsx,ts,tsx}',
'app/components/UI/Stake/**/*.{js,jsx,ts,tsx}',
// @MetaMask/metamask-assets
'app/components/UI/Assets/**/*.{js,jsx,ts,tsx}',
'app/components/UI/Tokens/**/*.{js,jsx,ts,tsx}',
'app/components/UI/AssetOverview/**/*.{js,jsx,ts,tsx}',
'app/components/UI/Collectibles/**/*.{js,jsx,ts,tsx}',
'app/components/UI/CollectibleContractElement/**/*.{js,jsx,ts,tsx}',
'app/components/UI/CollectibleContractInformation/**/*.{js,jsx,ts,tsx}',
'app/components/UI/CollectibleContractOverview/**/*.{js,jsx,ts,tsx}',
'app/components/UI/CollectibleContracts/**/*.{js,jsx,ts,tsx}',
'app/components/UI/CollectibleDetectionModal/**/*.{js,jsx,ts,tsx}',
'app/components/UI/CollectibleMedia/**/*.{js,jsx,ts,tsx}',
'app/components/UI/CollectibleModal/**/*.{js,jsx,ts,tsx}',
'app/components/UI/CollectibleOverview/**/*.{js,jsx,ts,tsx}',
'app/components/UI/ConfirmAddAsset/**/*.{js,jsx,ts,tsx}',
'app/components/UI/DeFiPositions/**/*.{js,jsx,ts,tsx}',
'app/components/UI/TokenDetails/**/*.{js,jsx,ts,tsx}',
'app/components/Views/AddAsset/**/*.{js,jsx,ts,tsx}',
'app/components/Views/Asset/**/*.{js,jsx,ts,tsx}',
'app/components/Views/AssetDetails/**/*.{js,jsx,ts,tsx}',
'app/components/Views/AssetHideConfirmation/**/*.{js,jsx,ts,tsx}',
'app/components/Views/AssetOptions/**/*.{js,jsx,ts,tsx}',
'app/components/Views/Collectible/**/*.{js,jsx,ts,tsx}',
'app/components/Views/CollectibleView/**/*.{js,jsx,ts,tsx}',
'app/components/Views/DetectedTokens/**/*.{js,jsx,ts,tsx}',
'app/components/Views/NFTAutoDetectionModal/**/*.{js,jsx,ts,tsx}',
'app/components/Views/NftDetails/**/*.{js,jsx,ts,tsx}',
// @MetaMask/mobile-core-ux
'app/components/Views/AccountActions/**/*.{js,jsx,ts,tsx}',
'app/components/Views/AccountSelector/**/*.{js,jsx,ts,tsx}',
'app/components/Views/AccountsMenu/**/*.{js,jsx,ts,tsx}',
'app/components/Views/AddressQRCode/**/*.{js,jsx,ts,tsx}',
'app/components/Views/EditAccountName/**/*.{js,jsx,ts,tsx}',
'app/components/Views/LockScreen/**/*.{js,jsx,ts,tsx}',
'app/components/Views/Login/**/*.{js,jsx,ts,tsx}',
'app/components/Views/MultichainTransactionsView/**/*.{js,jsx,ts,tsx}',
'app/components/Views/NetworkConnect/**/*.{js,jsx,ts,tsx}',
'app/components/Views/NetworkSelector/**/*.{js,jsx,ts,tsx}',
'app/components/Views/QRAccountDisplay/**/*.{js,jsx,ts,tsx}',
'app/components/Views/QRScanner/**/*.{js,jsx,ts,tsx}',
'app/components/Views/Settings/**/*.{js,jsx,ts,tsx}',
'app/components/Views/TermsAndConditions/**/*.{js,jsx,ts,tsx}',
'app/components/Views/UnifiedTransactionsView/**/*.{js,jsx,ts,tsx}',
'app/components/UI/MultichainTransactionListItem/**/*.{js,jsx,ts,tsx}',
'app/components/UI/TransactionActionModal/**/*.{js,jsx,ts,tsx}',
'app/components/UI/TransactionElement/**/*.{js,jsx,ts,tsx}',
'app/components/UI/Transactions/**/*.{js,jsx,ts,tsx}',
'app/components/**/*.{js,jsx,ts,tsx}',
'app/component-library/**/*.{js,jsx,ts,tsx}',
],
rules: {
'@metamask/design-tokens/color-no-hex': 'error',
Expand Down Expand Up @@ -331,7 +260,10 @@ module.exports = {
//
// See docs/perps/perps-core-sync.md for the full sync workflow.
{
files: ['app/controllers/perps/**/*.{ts,tsx}'],
files: [
'app/controllers/perps/**/*.{ts,tsx}',
'app/**/*-method-action-types*.ts',
],
excludedFiles: ['**/*.test.ts', '**/*.test.tsx'],
rules: {
// === Existing rule ===
Expand All @@ -355,6 +287,22 @@ module.exports = {
message:
'Use ES private class fields (#field) instead of TypeScript private keyword.',
},
// Mirror @metamask/eslint-config base rule — prevents `'x' in obj`
// type-guards that would land in core as new `no-restricted-syntax`
// suppressions. Use `hasProperty()` from `@metamask/utils` instead.
{
selector: "BinaryExpression[operator='in']",
message:
'The "in" operator is not allowed. Use `hasProperty()` from `@metamask/utils` instead.',
},
{
selector: 'WithStatement',
message: 'With statements are not allowed',
},
{
selector: 'SequenceExpression',
message: 'Sequence expressions are not allowed',
},
],
'id-denylist': [
'error',
Expand Down Expand Up @@ -674,7 +622,7 @@ module.exports = {
'react/no-string-refs': 'error',
'react/no-unused-prop-types': 'error',
'react/prefer-es6-class': 'error',
'@metamask/design-tokens/color-no-hex': 'warn',
'@metamask/design-tokens/color-no-hex': 'off',
radix: 'off',

// These rule modifications are removing changes to our shared ESLint config made after
Expand Down
47 changes: 25 additions & 22 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,9 @@ app/core/DeeplinkManager @MetaMask/mobile-pla
scripts/build.sh @MetaMask/mobile-platform
fingerprint.config.js @MetaMask/mobile-platform
builds.yml @MetaMask/mobile-platform
.github/workflows/create-build-branch.yml @MetaMask/mobile-platform
.github/workflows/push-eas-update.yml @MetaMask/mobile-admins
.github/workflows/build-and-upload-to-testflight.yml @MetaMask/mobile-admins
.github/workflows/upload-to-testflight.yml @MetaMask/mobile-admins
scripts/update-expo-channel.js @MetaMask/mobile-admins
certs/certificate.pem @MetaMask/mobile-admins
Expand All @@ -59,16 +61,17 @@ scripts/set-secrets-from-config.js @MetaMask/mobile-adm
# Platform & Snaps Code Fencing File
metro.transform.js @MetaMask/mobile-platform @MetaMask/core-platform

# Ramps Team
app/components/UI/Ramp/ @MetaMask/ramp
app/reducers/fiatOrders/ @MetaMask/ramp
app/core/Engine/controllers/ramps-controller @MetaMask/ramp
app/core/Engine/messengers/ramps-controller-messenger @MetaMask/ramp
app/core/Engine/messengers/ramps-service-messenger @MetaMask/ramp
app/selectors/rampsController @MetaMask/ramp
**/Ramp/** @MetaMask/ramp
**/ramp/** @MetaMask/ramp
**/ramps/** @MetaMask/ramp
# Money Movement Team (formerly Ramps)
app/components/UI/Ramp/ @MetaMask/money-movement
app/reducers/fiatOrders/ @MetaMask/money-movement
app/core/Engine/controllers/ramps-controller @MetaMask/money-movement
app/core/Engine/messengers/ramps-controller-messenger @MetaMask/money-movement
app/core/Engine/messengers/ramps-service-messenger @MetaMask/money-movement
app/selectors/rampsController @MetaMask/money-movement
**/Ramp/** @MetaMask/money-movement
**/ramp/** @MetaMask/money-movement
**/ramps/** @MetaMask/money-movement
**/money-movement/** @MetaMask/money-movement

# Card Team
app/components/UI/Card/ @MetaMask/card
Expand All @@ -79,7 +82,7 @@ app/selectors/cardController.ts @MetaMask/card

# Confirmation Team
app/components/Views/confirmations @MetaMask/confirmations
app/components/Views/confirmations/external/staking @MetaMask/confirmations @MetaMask/metamask-earn
app/components/Views/confirmations/external/staking @MetaMask/confirmations @MetaMask/earn
app/core/Engine/controllers/approval-controller @MetaMask/confirmations
app/core/Engine/controllers/gas-fee-controller @MetaMask/confirmations
app/core/Engine/controllers/signature-controller @MetaMask/confirmations
Expand Down Expand Up @@ -148,14 +151,14 @@ app/components/UI/TemplateRenderer @MetaMask/confirmations @MetaMask/core-plat


# Earn Team
app/components/UI/Stake @MetaMask/metamask-earn
app/core/Engine/controllers/earn-controller @MetaMask/metamask-earn
app/core/Engine/messengers/earn-controller-messenger @MetaMask/metamask-earn
app/selectors/earnController @MetaMask/metamask-earn
**/Earn/** @MetaMask/metamask-earn
**/earn/** @MetaMask/metamask-earn
**/Money/** @MetaMask/metamask-earn
**/money/** @MetaMask/metamask-earn
app/components/UI/Stake @MetaMask/earn
app/core/Engine/controllers/earn-controller @MetaMask/earn
app/core/Engine/messengers/earn-controller-messenger @MetaMask/earn
app/selectors/earnController @MetaMask/earn
**/Earn/** @MetaMask/earn
**/earn/** @MetaMask/earn
**/Money/** @MetaMask/earn
**/money/** @MetaMask/earn

# Rewards Team
app/core/Engine/controllers/rewards-controller @MetaMask/rewards
Expand Down Expand Up @@ -287,9 +290,9 @@ tests/flows/ @MetaMask/qa
# Note: Test builds (main-test, flask-test) in build/builds.yml are owned by QA team
# but the file itself is protected by mobile-platform for consistency

# Co-owned by Swaps and Ramps teams
app/util/parseAmount.ts @MetaMask/swaps-engineers @MetaMask/ramp
app/util/parseAmount.test.ts @MetaMask/swaps-engineers @MetaMask/ramp
# Co-owned by Swaps and Money Movement teams
app/util/parseAmount.ts @MetaMask/swaps-engineers @MetaMask/money-movement
app/util/parseAmount.test.ts @MetaMask/swaps-engineers @MetaMask/money-movement

# Snapshots – no code owners assigned
# This allows anyone with write access to approve changes to any *.snap files.
Expand Down
4 changes: 2 additions & 2 deletions .github/actionlint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ self-hosted-runner:
- "gha-mm-scale-set-ubuntu-22.04-amd64-small"
- "gha-mm-scale-set-ubuntu-22.04-amd64-med"
- "macos-15"
- "ghcr.io/cirruslabs/macos-runner:sequoia"
- "ghcr.io/cirruslabs/macos-runner:sequoia-xl"
- "ghcr.io/cirruslabs/macos-runner:tahoe"
- "ghcr.io/cirruslabs/macos-runner:tahoe-xl"
- "ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-md"
- "ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-lg"
- "ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04-xl"
Expand Down
Loading
Loading