Skip to content

Commit 9f0622c

Browse files
ci(release): publish latest release
1 parent 541f8d7 commit 9f0622c

1,085 files changed

Lines changed: 33464 additions & 16473 deletions

File tree

Some content is hidden

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

.env.defaults

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ INFURA_KEY=stored-in-.env.local
1212
ONESIGNAL_APP_ID=stored-in-.env.local
1313
QUICKNODE_ENDPOINT_NAME=stored-in-.env.local
1414
QUICKNODE_ENDPOINT_TOKEN=stored-in-.env.local
15+
QUICKNODE_SOLANA_RPC_URL=stored-in-.env.local
1516
STATSIG_API_KEY=stored-in-.env.local
1617
STATSIG_PROXY_URL=stored-in-.env
1718
UNISWAP_API_KEY=stored-in-.env.local

.mcp.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,7 @@
2828
"command": "argent",
2929
"args": [
3030
"mcp"
31-
],
32-
"env": {
33-
"ARGENT_MCP_LOG": "~/.argent/mcp-calls.log"
34-
}
31+
]
3532
}
3633
}
3734
}

RELEASE

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
IPFS hash of the deployment:
2-
- CIDv0: `Qmd88CKZc5hjhzyte8fkcphiPqUY67k9WCDqNdVWcesDex`
3-
- CIDv1: `bafybeig3vhkrrksvvl3np3qbx2prwzvltzkmsc2xonnbtxguldlhwq3lre`
2+
- CIDv0: `QmUKj6FRWbbb9KzXLektsshwBwFpKtNpoAB5SwERR1KWMw`
3+
- CIDv1: `bafybeicy5f7mprd6hqsd4xo6onxa5fxnroyim6nipgojsda3a55qw47oei`
44

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

@@ -10,5 +10,5 @@ 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://bafybeig3vhkrrksvvl3np3qbx2prwzvltzkmsc2xonnbtxguldlhwq3lre.ipfs.dweb.link/
14-
- [ipfs://Qmd88CKZc5hjhzyte8fkcphiPqUY67k9WCDqNdVWcesDex/](ipfs://Qmd88CKZc5hjhzyte8fkcphiPqUY67k9WCDqNdVWcesDex/)
13+
- https://bafybeicy5f7mprd6hqsd4xo6onxa5fxnroyim6nipgojsda3a55qw47oei.ipfs.dweb.link/
14+
- [ipfs://QmUKj6FRWbbb9KzXLektsshwBwFpKtNpoAB5SwERR1KWMw/](ipfs://QmUKj6FRWbbb9KzXLektsshwBwFpKtNpoAB5SwERR1KWMw/)

VERSION

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

apps/extension/README.md

Lines changed: 22 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,9 @@
66

77
Before running the extension, you need to get the environment variables from 1password in order to get full functionality. Run the command `bun extension env:local:download` to copy them to your root folder.
88

9-
### Build Systems
9+
### Build System
1010

11-
The extension supports two build systems during the migration from Webpack to WXT:
12-
13-
- **WXT** (new) - Preferred for local development. Opens browser automatically.
14-
- **Webpack** (legacy) - Still used for production builds during the transition.
11+
The extension is built with **WXT** (Vite-based) for both local development and production. The dev server opens a browser automatically.
1512

1613
### Running the extension locally
1714

@@ -23,7 +20,7 @@ bun install
2320

2421
---
2522

26-
#### Option 1: WXT (recommended)
23+
#### Running with WXT
2724

2825
```bash
2926
bun extension dev
@@ -73,70 +70,37 @@ Absolute output directories by platform:
7370
- Linux: `/var/tmp/stretch`
7471
- Windows: `C:/ProgramData/stretch`
7572

76-
### Reusing an already-onboarded extension state
77-
78-
Use a persistent Chrome user-data directory for the extension browser profile.
73+
##### Loading into your own Chrome (no managed browser)
7974

80-
For absolute mode, set `WXT_CHROME_USER_DATA_DIR` to a stable path and keep reusing it:
75+
`start:absolute` auto-launches a separate web-ext-managed Chrome with its own
76+
profile, so it onboards fresh on every run. To instead build/watch to the
77+
absolute path and load it into your everyday Chrome — keeping your login and
78+
completed onboarding, the way the old `start:webpack:absolute` worked:
8179

8280
```bash
83-
WXT_CHROME_USER_DATA_DIR=/var/tmp/uniswap-extension-chrome-data bun extension start:absolute
81+
bun extension start:absolute:no-browser
8482
```
8583

86-
To avoid onboarding on every run:
87-
1. Start with a stable `WXT_CHROME_USER_DATA_DIR`.
88-
2. Complete onboarding once.
89-
3. Reuse the same directory on subsequent runs (or copy it from a known onboarded machine).
84+
Then load the output directory (e.g. `/Users/Shared/stretch` on Mac) once via
85+
`chrome://extensions`**Load unpacked**. Because it lives in your own profile,
86+
state persists across reruns and you only onboard once. The dev server still
87+
hot-reloads the unpacked extension.
9088

91-
This preserves extension local storage and persisted Redux state, including onboarding status.
89+
### Reusing an already-onboarded extension state (managed browser)
9290

93-
To keep extension dev running without WXT auto-opening a browser window, set:
91+
`start:absolute` persists its Chrome profile by default — the profile lives in a
92+
sibling directory of the output dir (e.g. `/Users/Shared/stretch-chrome-data` on
93+
Mac), so it survives the outdir wipe WXT performs on each build. Complete
94+
onboarding once and it's preserved (local storage + persisted Redux state) across
95+
reruns.
9496

95-
```bash
96-
WXT_NO_OPEN_BROWSER=true bun extension start:absolute
97-
```
98-
99-
---
100-
101-
#### Option 2: Webpack (legacy)
97+
To point at a different profile directory, set `WXT_CHROME_USER_DATA_DIR` to any
98+
stable path **outside** the output dir:
10299

103100
```bash
104-
bun extension start:webpack
105-
```
106-
107-
Then manually load the extension into Chrome:
108-
109-
1. Go to **chrome://extensions**
110-
2. At the top right, turn on **Developer mode**
111-
3. Click **Load unpacked**
112-
4. Find and select the extension folder (`apps/extension/dev`)
113-
114-
##### Running Webpack with absolute paths (for Scantastic testing)
115-
116-
Our Scantastic API requires a consistent origin header, so the build must be loaded from an absolute path. Chrome generates a consistent extension ID based on the path it was loaded from.
117-
118-
```bash
119-
# Mac
120-
bun extension start:webpack:absolute
121-
122-
# Windows
123-
bun extension start:webpack:absolute:windows
101+
WXT_CHROME_USER_DATA_DIR=/var/tmp/uniswap-extension-chrome-data bun extension start:absolute
124102
```
125103

126-
Then manually load the extension into Chrome:
127-
128-
1. Go to **chrome://extensions**
129-
2. At the top right, turn on **Developer mode**
130-
3. Click **Load unpacked**
131-
4. Find and select the extension folder with an absolute path:
132-
- Mac: `/Users/Shared/stretch`
133-
- Windows: `C:/ProgramData/stretch`
134-
5. Your extension URL should be:
135-
- Mac: `chrome-extension://ceofpnbcmdjbibjjdniemjemmgaibeih`
136-
- Windows: `chrome-extension://ffogefanhjekjafbpofianlhkonejcoe`
137-
138-
The backend allows these origins, and the ID is consistently generated based on the absolute path.
139-
140104
## Migrations
141105

142106
We use `redux-persist` to persist the Redux state between user sessions. Most of this state is shared between the mobile app and the extension. Please review the [Wallet Migrations README](../../packages/wallet/src/state//README.md) for details on how to write migrations when you add or remove anything from the Redux state structure.

apps/extension/e2e/fixtures/extension-context.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,9 @@ interface CreateExtensionContextOptions {
1414
export async function createExtensionContext(options: CreateExtensionContextOptions = {}): Promise<BrowserContext> {
1515
const { userDataDirPrefix = 'playwright-extension' } = options
1616

17-
// Default to the WXT output directory (the primary build system). The legacy webpack
18-
// output at `../../build` can still be loaded by overriding EXTENSION_BUILD_DIR.
19-
// Using `||` (not `??`) so an empty-string env var falls through to the default,
20-
// which matters in CI matrices where the var is set to '' for the WXT leg.
17+
// Default to the WXT output directory. A different build can be loaded by setting
18+
// EXTENSION_BUILD_DIR. Using `||` (not `??`) so an empty-string env var falls through
19+
// to the default.
2120
// oxlint-disable-next-line eslint-js/no-restricted-syntax allow process.env access
2221
const extensionPath = process.env['EXTENSION_BUILD_DIR'] || path.join(__dirname, '../../.output/chrome-mv3')
2322

apps/extension/e2e/sandbox-test/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ <h3>3. Sandboxed (allow-scripts + allow-same-origin)</h3>
5151
<div class="instructions">
5252
<strong>How to use:</strong><br>
5353
1. Serve this directory: <code>python3 -m http.server 8080</code><br>
54-
2. Load the extension in Chrome (webpack dev build via <code>bun start:webpack</code>)<br>
54+
2. Load the extension in Chrome (dev build via <code>bun start</code>)<br>
5555
3. Open <code>http://localhost:8080</code> in Chrome<br>
5656
4. All three cards should show their expected results (green = pass, red = fail)<br>
5757
<br>

apps/extension/package.json

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@
1111
"@ethersproject/wordlists": "5.7.0",
1212
"@metamask/rpc-errors": "6.2.1",
1313
"@reduxjs/toolkit": "1.9.3",
14-
"@svgr/webpack": "8.0.1",
1514
"@tamagui/core": "1.136.1",
1615
"@tanstack/react-query": "5.90.20",
1716
"@uniswap/analytics-events": "2.43.0",
1817
"@uniswap/client-notification-service": "0.0.11",
19-
"@uniswap/sdk-core": "7.15.0",
18+
"@uniswap/sdk-core": "7.17.0",
2019
"@uniswap/universal-router-sdk": "4.33.0",
2120
"@uniswap/v3-sdk": "3.29.1",
2221
"@uniswap/v4-sdk": "1.29.1",
@@ -30,7 +29,6 @@
3029
"ethers": "5.7.2",
3130
"eventemitter3": "5.0.1",
3231
"i18next": "23.10.0",
33-
"node-polyfill-webpack-plugin": "2.0.1",
3432
"react": "19.1.0",
3533
"react-dom": "19.1.0",
3634
"react-i18next": "14.1.0",
@@ -66,7 +64,6 @@
6664
},
6765
"devDependencies": {
6866
"@playwright/test": "1.58.2",
69-
"@pmmmwh/react-refresh-webpack-plugin": "0.5.11",
7067
"@testing-library/dom": "10.4.0",
7168
"@testing-library/react": "16.3.0",
7269
"@types/chrome": "0.0.304",
@@ -80,28 +77,13 @@
8077
"@types/ua-parser-js": "0.7.31",
8178
"@typescript/native-preview": "7.0.0-dev.20260421.2",
8279
"@welldone-software/why-did-you-render": "10.0.1",
83-
"clean-webpack-plugin": "4.0.0",
84-
"concurrently": "8.2.2",
85-
"copy-webpack-plugin": "11.0.0",
86-
"css-loader": "6.11.0",
8780
"dotenv": "16.0.3",
88-
"dotenv-webpack": "8.0.1",
89-
"esbuild-loader": "3.2.0",
9081
"jest": "29.7.0",
9182
"jest-chrome": "0.8.0",
9283
"jest-environment-jsdom": "29.5.0",
9384
"jest-extended": "4.0.2",
94-
"mini-css-extract-plugin": "2.9.1",
9585
"ms": "2.1.3",
96-
"react-refresh": "0.14.0",
97-
"serve": "14.2.4",
98-
"style-loader": "3.3.2",
99-
"swc-loader": "0.2.6",
100-
"tamagui-loader": "1.136.1",
101-
"typescript": "5.9.2",
102-
"webpack": "5.90.0",
103-
"webpack-cli": "5.1.4",
104-
"webpack-dev-server": "4.15.1"
86+
"typescript": "5.9.2"
10587
},
10688
"private": true,
10789
"scripts": {
@@ -126,11 +108,10 @@
126108
"snapshots": "nx snapshots extension",
127109
"start": "nx start extension",
128110
"start:absolute": "nx start:absolute extension",
111+
"start:absolute:no-browser": "nx start:absolute:no-browser extension",
129112
"start:absolute:mac": "nx start:absolute:mac extension",
130113
"start:absolute:linux": "nx start:absolute:linux extension",
131114
"start:absolute:windows": "nx start:absolute:windows extension",
132-
"start:webpack": "nx start:webpack extension",
133-
"start:webpack:absolute": "nx start:webpack:absolute extension",
134115
"test": "nx test extension",
135116
"typecheck": "nx typecheck extension",
136117
"zip": "nx zip extension",

apps/extension/project.json

Lines changed: 16 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,19 @@
1111
"cwd": "{projectRoot}"
1212
}
1313
},
14-
"build:production": {
15-
"command": "webpack --node-env=production --env BUILD_ENV=prod BUILD_NUM=${BUILD_NUM:-0}",
14+
"build:wxt": {
15+
"command": "wxt build",
1616
"options": {
1717
"cwd": "{projectRoot}"
1818
}
1919
},
20-
"build:wxt": {
20+
"build:production": {
2121
"command": "wxt build",
2222
"options": {
23-
"cwd": "{projectRoot}"
23+
"cwd": "{projectRoot}",
24+
"env": {
25+
"NODE_ENV": "production"
26+
}
2427
}
2528
},
2629
"check:circular": {
@@ -115,6 +118,15 @@
115118
"cwd": "{projectRoot}"
116119
}
117120
},
121+
"start:absolute:no-browser": {
122+
"command": "bun run scripts/startAbsolute.ts",
123+
"options": {
124+
"cwd": "{projectRoot}",
125+
"env": {
126+
"WXT_NO_OPEN_BROWSER": "true"
127+
}
128+
}
129+
},
118130
"start:absolute:mac": {
119131
"command": "WXT_ABSOLUTE_OUTDIR=/Users/Shared/stretch wxt",
120132
"options": {
@@ -133,18 +145,6 @@
133145
"cwd": "{projectRoot}"
134146
}
135147
},
136-
"start:webpack": {
137-
"command": "webpack serve --config webpack.config.js",
138-
"options": {
139-
"cwd": "{projectRoot}"
140-
}
141-
},
142-
"start:webpack:absolute": {
143-
"command": "webpack serve --config webpack.config.js --output-path /Users/Shared/stretch",
144-
"options": {
145-
"cwd": "{projectRoot}"
146-
}
147-
},
148148
"test": {
149149
"command": "jest",
150150
"options": {
@@ -181,16 +181,6 @@
181181
"cache": true,
182182
"dependsOn": ["^build", "prepare"]
183183
},
184-
"build:e2e:webpack": {
185-
"command": "webpack --node-env=production --env BUILD_ENV=dev --env BUILD_NUM=0",
186-
"options": {
187-
"cwd": "{projectRoot}"
188-
},
189-
"inputs": ["sourceFiles"],
190-
"outputs": ["{projectRoot}/build"],
191-
"cache": true,
192-
"dependsOn": ["^build", "prepare"]
193-
},
194184
"playwright:test": {
195185
"command": "playwright test --config=e2e/config/playwright.config.ts",
196186
"options": {
@@ -221,12 +211,6 @@
221211
"command": "nx playwright:ui extension",
222212
"dependsOn": ["build:e2e"]
223213
},
224-
"diff:builds": {
225-
"command": "bun run scripts/diffBuilds.ts",
226-
"options": {
227-
"cwd": "{projectRoot}"
228-
}
229-
},
230214
"validate:build": {
231215
"command": "bun run scripts/validateBuildOutput.ts",
232216
"options": {

0 commit comments

Comments
 (0)