Skip to content

Commit 9e2bcfb

Browse files
ci(release): publish latest release
1 parent d359d65 commit 9e2bcfb

File tree

595 files changed

+24275
-15268
lines changed

Some content is hidden

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

595 files changed

+24275
-15268
lines changed

.gitignore

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,11 @@ packages/uniswap/src/i18n/locales/source/*_old.json
6363
# CodeTours Extension
6464
.tours/*
6565

66-
# RNEF
67-
.rnef/
66+
# Expo
67+
.expo/
68+
69+
# auto-generated test ids
70+
apps/mobile/.maestro/scripts/testIds.js
6871

6972
# claude
7073
claude.local.md

RELEASE

Lines changed: 55 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
IPFS hash of the deployment:
2-
- CIDv0: `QmUkJyrJfaSMjpdv5afUJLWfqHyBDTsNPn2mb6XwutWecr`
3-
- CIDv1: `bafybeic7gxapw2yactpmoap3uux7gv4kkesw3if44x775vbhjkxnbjrrbm`
2+
- CIDv0: `QmWkKS6r4PsaUCmRLuK4UYLJTzoMUmchG4Hg2aV8FjBisd`
3+
- CIDv1: `bafybeid45wr3ffrhjew54zla2scgbqwqxaeusfpt3wcooypuvrlpul5x5q`
44

55
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
66

@@ -10,14 +10,63 @@ You can also access the Uniswap Interface from an IPFS gateway.
1010
Your Uniswap settings are never remembered across different URLs.
1111

1212
IPFS gateways:
13-
- https://bafybeic7gxapw2yactpmoap3uux7gv4kkesw3if44x775vbhjkxnbjrrbm.ipfs.dweb.link/
14-
- [ipfs://QmUkJyrJfaSMjpdv5afUJLWfqHyBDTsNPn2mb6XwutWecr/](ipfs://QmUkJyrJfaSMjpdv5afUJLWfqHyBDTsNPn2mb6XwutWecr/)
13+
- https://bafybeid45wr3ffrhjew54zla2scgbqwqxaeusfpt3wcooypuvrlpul5x5q.ipfs.dweb.link/
14+
- [ipfs://QmWkKS6r4PsaUCmRLuK4UYLJTzoMUmchG4Hg2aV8FjBisd/](ipfs://QmWkKS6r4PsaUCmRLuK4UYLJTzoMUmchG4Hg2aV8FjBisd/)
1515

16-
### 5.119.6 (2025-11-24)
16+
## 5.120.0 (2025-11-26)
17+
18+
19+
### Features
20+
21+
* **web:** add analytics events for disconnected state (#25498) a376650
22+
* **web:** add analytics events to tokens tab (#25502) 5ff49d5
23+
* **web:** add analytics for activity & overview tabs (#25541) cb35643
24+
* **web:** add disconnected state to wrapped experience (#25448) 3dcd73b
25+
* **web:** add explore page table (#25536) 304e07f
26+
* **web:** add iframe Uniswap Wrapped page (#25124) a1029d6
27+
* **web:** add nav portfolio analytics (#25501) 53e7940
28+
* **web:** add section tracing for portfolio tabs (#25499) b0ef491
29+
* **web:** Add step count to review progress (#25513) 68c39ba
30+
* **web:** add uniswap wrapped banner (#25313) adfb85d
31+
* **web:** add wrapped nav entrypoint (#25324) 2bcae33
32+
* **web:** nfts tab analytics (#25503) 5b3bedf
33+
* **web:** override staging entry gateway BE url (#25504) a50af7e
34+
* **web:** track overview action tile events (#25500) 55a0952
35+
* **web:** Update the swap review UI (#25530) 01092e0
1736

1837

1938
### Bug Fixes
2039

21-
* **web:** sessions initialization - wait for statsig to finish loading (#25779) 35e02c1
40+
* **web:** add max-height for tokens table and disable vertical scroll sync (#25577) 3ffa333
41+
* **web:** add new backend corn-staging url to staging CSP (#25523) 7bd3f4f
42+
* **web:** add x-request-source to all notifications requests (#25678) 1be77db
43+
* **web:** correctly detect build mode in CSP plugin (#25527) cd80872
44+
* **web:** Don't show loading state of Swap on landing page (#25514) b5da191
45+
* **web:** Fix step complete icon (#25654) 0129711
46+
* **web:** Fix type of ToucanChartSeries (#25181) 759ee46
47+
* **web:** handle solana only wallet connection for Portfolio (#25831) dd822ed
48+
* **web:** improve infinite scroll loading skeleton on activity table (#25563) 02d1ddd
49+
* **web:** improve responsive stats tiles (#25561) 9637d17
50+
* **web:** iterate on view more button on new mini portfolio (#25562) 5a827b5
51+
* **web:** notification service - staging fixes (#25549) 05b1b09
52+
* **web:** portfolio balance chart match/mismatch logic (#25675) 71707d2
53+
* **web:** Scroll token list, when user hides hidden tokens (#25442) b832367
54+
* **web:** show txns hash on activity table for all swaps until protocol data improves (#25645) e34278d
55+
56+
57+
### Continuous Integration
58+
59+
* **web:** update sitemaps 77dced6
60+
61+
62+
### Styles
63+
64+
* **web:** improve empty state on activity tabe (#25560) ce9fef7
65+
* **web:** table v2 hover color (#25564) ecb43c3
66+
67+
68+
### Code Refactoring
69+
70+
* **web:** Refactor and prepare swap review for CA (#25512) 44f2353
2271

2372

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
web/5.119.6
1+
web/5.120.0

apps/api-self-serve/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
"clsx": "2.1.1",
1616
"isbot": "5.1.31",
1717
"lucide-react": "0.548.0",
18-
"react": "18.3.1",
19-
"react-dom": "18.3.1",
18+
"react": "19.0.0",
19+
"react-dom": "19.0.0",
2020
"react-router": "7.6.3",
2121
"tailwind-merge": "3.3.1",
2222
"tailwindcss-animate": "1.0.7"
@@ -25,11 +25,11 @@
2525
"@react-router/dev": "7.6.3",
2626
"@tailwindcss/vite": "4.1.13",
2727
"@types/node": "22.13.1",
28-
"@types/react": "18.3.18",
28+
"@types/react": "19.0.10",
2929
"@uniswap/eslint-config": "workspace:^",
30-
"eslint": "8.44.0",
30+
"eslint": "8.57.1",
3131
"tailwindcss": "4.1.16",
32-
"typescript": "5.3.3",
32+
"typescript": "5.8.3",
3333
"vite": "npm:[email protected]",
3434
"vite-tsconfig-paths": "5.1.4"
3535
}

apps/cli/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@
1010
"ink-select-input": "6.2.0",
1111
"ink-spinner": "5.0.0",
1212
"ink-text-input": "6.0.0",
13-
"react": "18.3.1"
13+
"react": "19.0.0"
1414
},
1515
"devDependencies": {
1616
"@types/bun": "1.3.1",
1717
"@types/node": "22.13.1",
18-
"@types/react": "18.3.18",
18+
"@types/react": "19.0.10",
1919
"@uniswap/eslint-config": "workspace:^",
2020
"depcheck": "1.4.7",
21-
"eslint": "8.44.0",
21+
"eslint": "8.57.1",
2222
"ink-gradient": "3.0.0",
23-
"typescript": "5.3.3"
23+
"typescript": "5.8.3"
2424
},
2525
"scripts": {
2626
"dev": "bun run --watch src/cli-ui.tsx",

apps/cli/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
2+
/// <reference path="../../../index.d.ts" />

apps/cli/src/ui/screens/ConfigReview.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,8 @@ export function ConfigReview({ onConfirm, onBack }: ConfigReviewProps): JSX.Elem
242242
for (const slug of teamSlugs) {
243243
// Check cache first
244244
if (state.teamMembersCache[slug]) {
245-
allEmails.push(...(state.teamMembersCache[slug]?.emails ?? []))
246-
allUsernames.push(...(state.teamMembersCache[slug]?.usernames ?? []))
245+
allEmails.push(...state.teamMembersCache[slug].emails)
246+
allUsernames.push(...state.teamMembersCache[slug].usernames)
247247
} else {
248248
// Fetch if not cached (fallback, should be rare if user viewed details)
249249
try {

apps/extension/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,5 @@ tsconfig.tsbuildinfo
3535

3636
# E2E test artifacts
3737
e2e/test-results/
38+
39+
coverage/

apps/extension/jest-setup.js

Lines changed: 80 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'utilities/jest-package-mocks'
22
import 'uniswap/jest-package-mocks'
33
import 'wallet/jest-package-mocks'
44
import 'config/jest-presets/ui/ui-package-mocks'
5+
import 'react-native-gesture-handler/jestSetup';
56

67
import { chrome } from 'jest-chrome'
78
import { AppearanceSettingType } from 'wallet/src/features/appearance/slice'
@@ -51,6 +52,39 @@ global.chrome = {
5152
i18n: {
5253
...global.chrome.i18n,
5354
getUILanguage: jest.fn().mockReturnValue(MOCK_LANGUAGE)
55+
},
56+
storage: {
57+
...chrome.storage,
58+
local: {
59+
...chrome.storage.local,
60+
addListener: jest.fn(),
61+
},
62+
session: {
63+
get: jest.fn().mockImplementation((_keys, callback) => {
64+
if (callback) {
65+
callback({})
66+
}
67+
return Promise.resolve({})
68+
}),
69+
set: jest.fn().mockImplementation((_items, callback) => {
70+
if (callback) {
71+
callback()
72+
}
73+
return Promise.resolve()
74+
}),
75+
remove: jest.fn().mockImplementation((_keys, callback) => {
76+
if (callback) {
77+
callback()
78+
}
79+
return Promise.resolve()
80+
}),
81+
clear: jest.fn().mockImplementation((callback) => {
82+
if (callback) {
83+
callback()
84+
}
85+
return Promise.resolve()
86+
})
87+
}
5488
}
5589
}
5690

@@ -69,10 +103,52 @@ const mockAppearanceSetting = AppearanceSettingType.System
69103
jest.mock('wallet/src/features/appearance/hooks', () => {
70104
return {
71105
useCurrentAppearanceSetting: () => mockAppearanceSetting,
72-
}
73-
})
74-
jest.mock('wallet/src/features/appearance/hooks', () => {
75-
return {
76106
useSelectedColorScheme: () => 'light',
77107
}
78108
})
109+
110+
// Mock IntersectionObserver for Tamagui's useElementLayout
111+
const IntersectionObserverMock = jest.fn().mockImplementation((callback) => ({
112+
observe: jest.fn((element) => {
113+
// Immediately call the callback with a mock entry
114+
if (callback && element) {
115+
callback([
116+
{
117+
target: element,
118+
isIntersecting: true,
119+
intersectionRatio: 1,
120+
boundingClientRect: {
121+
x: 0,
122+
y: 0,
123+
width: 100,
124+
height: 100,
125+
top: 0,
126+
right: 100,
127+
bottom: 100,
128+
left: 0,
129+
},
130+
intersectionRect: {
131+
x: 0,
132+
y: 0,
133+
width: 100,
134+
height: 100,
135+
top: 0,
136+
right: 100,
137+
bottom: 100,
138+
left: 0,
139+
},
140+
rootBounds: null,
141+
time: 0,
142+
},
143+
])
144+
}
145+
}),
146+
unobserve: jest.fn(),
147+
disconnect: jest.fn(),
148+
takeRecords: jest.fn().mockReturnValue([]),
149+
root: null,
150+
rootMargin: '',
151+
thresholds: [],
152+
}))
153+
154+
global.IntersectionObserver = IntersectionObserverMock

apps/extension/jest.config.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,5 @@ module.exports = {
6262
setupFiles: [
6363
'../../config/jest-presets/jest/setup.js',
6464
'./jest-setup.js',
65-
'../../node_modules/react-native-gesture-handler/jestSetup.js',
6665
],
6766
}

0 commit comments

Comments
 (0)