Skip to content

Commit f9a2e2e

Browse files
ci(release): publish latest release
1 parent ea3b63f commit f9a2e2e

File tree

300 files changed

+15591
-5136
lines changed

Some content is hidden

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

300 files changed

+15591
-5136
lines changed

CODEOWNERS

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* @uniswap/web-admins

RELEASE

+20-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,23 @@
1-
We are back with a new feature:
1+
IPFS hash of the deployment:
2+
- CIDv0: `QmNy6ppw64jmLBEZ6r8D19beUVH3objJPrjMfNxvugqakD`
3+
- CIDv1: `bafybeiajkzyd25iwsu5lax4wtilh5ukji3kmzrt7r76k45pcminbsirsty`
24

3-
Fiat Offramp: Users can now sell their crypto back into cash and have it deposit to their bank account, centralized exchange account, and more!
5+
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
6+
7+
You can also access the Uniswap Interface from an IPFS gateway.
8+
**BEWARE**: The Uniswap interface uses [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) to remember your settings, such as which tokens you have imported.
9+
**You should always use an IPFS gateway that enforces origin separation**, or our hosted deployment of the latest release at [app.uniswap.org](https://app.uniswap.org).
10+
Your Uniswap settings are never remembered across different URLs.
11+
12+
IPFS gateways:
13+
- https://bafybeiajkzyd25iwsu5lax4wtilh5ukji3kmzrt7r76k45pcminbsirsty.ipfs.dweb.link/
14+
- [ipfs://QmNy6ppw64jmLBEZ6r8D19beUVH3objJPrjMfNxvugqakD/](ipfs://QmNy6ppw64jmLBEZ6r8D19beUVH3objJPrjMfNxvugqakD/)
15+
16+
### 5.68.4 (2025-02-05)
17+
18+
19+
### Bug Fixes
20+
21+
* **web:** use price to create mock pair (#15923) 40968c3
422

5-
Other changes:
623

7-
- More robust dapp information on Activity screen
8-
- Reduced onboarding screens for new wallets
9-
- Improved volume-based sorting on our Explore page
10-
- Various bug fixes and performance improvements

VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
mobile/1.44.1
1+
web/5.68.4

apps/extension/package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
"@svgr/webpack": "8.0.1",
1313
"@tamagui/core": "1.114.4",
1414
"@types/uuid": "9.0.1",
15-
"@uniswap/analytics-events": "2.40.0",
15+
"@uniswap/analytics-events": "2.41.0",
1616
"@uniswap/uniswapx-sdk": "3.0.0-beta.1",
17-
"@uniswap/universal-router-sdk": "4.10.0",
18-
"@uniswap/v3-sdk": "3.21.0",
19-
"@uniswap/v4-sdk": "1.15.0",
17+
"@uniswap/universal-router-sdk": "4.14.0",
18+
"@uniswap/v3-sdk": "3.24.0",
19+
"@uniswap/v4-sdk": "1.18.0",
2020
"dotenv-webpack": "8.0.1",
2121
"ethers": "5.7.2",
2222
"eventemitter3": "5.0.1",

apps/extension/src/app/components/tabs/ActivityTab.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { memo } from 'react'
22
import { ScrollView } from 'ui/src'
3-
import { useActivityData } from 'wallet/src/features/activity/useActivityData'
3+
import { useActivityData } from 'wallet/src/features/activity/hooks/useActivityData'
44

55
export const ActivityTab = memo(function _ActivityTab({ address }: { address: Address }): JSX.Element {
66
const { maybeEmptyComponent, renderActivityItem, sectionData } = useActivityData({

apps/extension/src/app/features/accounts/__snapshots__/AccountSwitcherScreen.test.tsx.snap

+6-6
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ exports[`AccountSwitcherScreen renders correctly 1`] = `
5757
<svg
5858
fill="none"
5959
stroke-width="8"
60-
style="color: rgb(125, 125, 125); width: 24px; height: 24px;"
60+
style="width: 24px; height: 24px; color: rgb(125, 125, 125);"
6161
viewBox="0 0 16 16"
6262
>
6363
<path
@@ -155,7 +155,7 @@ exports[`AccountSwitcherScreen renders correctly 1`] = `
155155
<svg
156156
fill="none"
157157
stroke-width="8"
158-
style="color: rgb(125, 125, 125); width: 14px; height: 14px;"
158+
style="width: 14px; height: 14px; color: rgb(125, 125, 125);"
159159
viewBox="0 0 24 24"
160160
>
161161
<path
@@ -210,7 +210,7 @@ exports[`AccountSwitcherScreen renders correctly 1`] = `
210210
<svg
211211
fill="none"
212212
stroke-width="2"
213-
style="color: rgb(125, 125, 125); width: 16px; height: 16px;"
213+
style="width: 16px; height: 16px; color: rgb(125, 125, 125);"
214214
viewBox="0 0 24 24"
215215
>
216216
<path
@@ -289,7 +289,7 @@ exports[`AccountSwitcherScreen renders correctly 1`] = `
289289
<svg
290290
fill="none"
291291
stroke-width="8"
292-
style="color: rgb(125, 125, 125); width: 24px; height: 24px;"
292+
style="width: 24px; height: 24px; color: rgb(125, 125, 125);"
293293
viewBox="0 0 16 16"
294294
>
295295
<path
@@ -387,7 +387,7 @@ exports[`AccountSwitcherScreen renders correctly 1`] = `
387387
<svg
388388
fill="none"
389389
stroke-width="8"
390-
style="color: rgb(125, 125, 125); width: 14px; height: 14px;"
390+
style="width: 14px; height: 14px; color: rgb(125, 125, 125);"
391391
viewBox="0 0 24 24"
392392
>
393393
<path
@@ -442,7 +442,7 @@ exports[`AccountSwitcherScreen renders correctly 1`] = `
442442
<svg
443443
fill="none"
444444
stroke-width="2"
445-
style="color: rgb(125, 125, 125); width: 16px; height: 16px;"
445+
style="width: 16px; height: 16px; color: rgb(125, 125, 125);"
446446
viewBox="0 0 24 24"
447447
>
448448
<path

apps/extension/src/app/features/receive/__snapshots__/ReceiveScreen.test.tsx.snap

+4-4
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ exports[`ReceiveScreen renders without error 1`] = `
3030
<svg
3131
fill="none"
3232
stroke-width="8"
33-
style="color: rgb(125, 125, 125); width: 24px; height: 24px;"
33+
style="width: 24px; height: 24px; color: rgb(125, 125, 125);"
3434
viewBox="0 0 16 16"
3535
>
3636
<path
@@ -99,7 +99,7 @@ exports[`ReceiveScreen renders without error 1`] = `
9999
<svg
100100
fill="none"
101101
stroke-width="8"
102-
style="color: rgb(125, 125, 125); width: 16px; height: 16px;"
102+
style="width: 16px; height: 16px; color: rgb(125, 125, 125);"
103103
viewBox="0 0 24 24"
104104
>
105105
<path
@@ -6066,7 +6066,7 @@ exports[`ReceiveScreen renders without error 1`] = `
60666066
<svg
60676067
fill="none"
60686068
stroke-width="8"
6069-
style="color: rgb(125, 125, 125); width: 24px; height: 24px;"
6069+
style="width: 24px; height: 24px; color: rgb(125, 125, 125);"
60706070
viewBox="0 0 16 16"
60716071
>
60726072
<path
@@ -6135,7 +6135,7 @@ exports[`ReceiveScreen renders without error 1`] = `
61356135
<svg
61366136
fill="none"
61376137
stroke-width="8"
6138-
style="color: rgb(125, 125, 125); width: 16px; height: 16px;"
6138+
style="width: 16px; height: 16px; color: rgb(125, 125, 125);"
61396139
viewBox="0 0 24 24"
61406140
>
61416141
<path

apps/extension/src/app/features/settings/SettingsScreen.tsx

+22-10
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { useDispatch } from 'react-redux'
44
import { Link } from 'react-router-dom'
55
import { ScreenHeader } from 'src/app/components/layout/ScreenHeader'
66
import { SCREEN_ITEM_HORIZONTAL_PAD } from 'src/app/constants'
7+
import { useAllDappConnectionsForActiveAccount } from 'src/app/features/dapp/hooks'
78
import { SettingsItemWithDropdown } from 'src/app/features/settings/SettingsItemWithDropdown'
89
import { AppRoutes, SettingsRoutes } from 'src/app/navigation/constants'
910
import { useExtensionNavigation } from 'src/app/navigation/utils'
@@ -66,6 +67,7 @@ export function SettingsScreen(): JSX.Element {
6667
const { navigateTo, navigateBack } = useExtensionNavigation()
6768
const currentLanguageInfo = useCurrentLanguageInfo()
6869
const appFiatCurrencyInfo = useAppFiatCurrencyInfo()
70+
const dappUrls = useAllDappConnectionsForActiveAccount()
6971

7072
const [isLanguageModalOpen, setIsLanguageModalOpen] = useState(false)
7173
const [isTestnetModalOpen, setIsTestnetModalOpen] = useState(false)
@@ -185,6 +187,7 @@ export function SettingsScreen(): JSX.Element {
185187
<SettingsItem
186188
Icon={Globe}
187189
title={t('settings.setting.wallet.connections.title')}
190+
count={dappUrls.length}
188191
onPress={(): void => navigateTo(`${AppRoutes.Settings}/${SettingsRoutes.ManageConnections}`)}
189192
/>
190193
<SettingsItem
@@ -237,6 +240,7 @@ function SettingsItem({
237240
iconProps,
238241
themeProps,
239242
url,
243+
count,
240244
hideChevron = false,
241245
}: {
242246
Icon: GeneratedIcon
@@ -247,6 +251,7 @@ function SettingsItem({
247251
// TODO: do this with a wrapping Theme, "detrimental" wasn't working
248252
themeProps?: { color?: string; hoverColor?: string }
249253
url?: string
254+
count?: number
250255
}): JSX.Element {
251256
const colors = useSporeColors()
252257
const hoverColor = themeProps?.hoverColor ?? colors.surface2.val
@@ -257,7 +262,7 @@ function SettingsItem({
257262
borderRadius="$rounded12"
258263
flexDirection="row"
259264
flexGrow={1}
260-
gap="$spacing16"
265+
gap="$spacing12"
261266
hoverStyle={{
262267
backgroundColor: hoverColor as ColorTokens,
263268
}}
@@ -266,15 +271,22 @@ function SettingsItem({
266271
py="$spacing8"
267272
onPress={onPress}
268273
>
269-
<Flex row gap="$spacing12">
270-
<Icon
271-
color={themeProps?.color ?? '$neutral2'}
272-
size={iconSizes.icon24}
273-
strokeWidth={iconProps?.strokeWidth ?? undefined}
274-
/>
275-
<Text style={{ color: themeProps?.color ?? colors.neutral1.val }} variant="subheading2">
276-
{title}
277-
</Text>
274+
<Flex row justifyContent="space-between" flexGrow={1}>
275+
<Flex row gap="$spacing12">
276+
<Icon
277+
color={themeProps?.color ?? '$neutral2'}
278+
size={iconSizes.icon24}
279+
strokeWidth={iconProps?.strokeWidth ?? undefined}
280+
/>
281+
<Text style={{ color: themeProps?.color ?? colors.neutral1.val }} variant="subheading2">
282+
{title}
283+
</Text>
284+
</Flex>
285+
{count !== undefined && (
286+
<Text alignSelf="center" color="$neutral2" variant="subheading2">
287+
{count}
288+
</Text>
289+
)}
278290
</Flex>
279291
{!hideChevron && (
280292
<RotatableChevron color="$neutral3" direction="end" height={iconSizes.icon20} width={iconSizes.icon20} />

apps/extension/src/manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"manifest_version": 3,
33
"name": "Uniswap Extension",
44
"description": "The Uniswap Extension is a self-custody crypto wallet that's built for swapping.",
5-
"version": "1.14.0",
5+
"version": "1.15.0",
66
"minimum_chrome_version": "116",
77
"icons": {
88
"16": "assets/icon16.png",

apps/mobile/android/app/build.gradle

+4-7
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,9 @@ if (isCI && datadogPropertiesAvailable && !isE2E) {
8989
apply from: "../../../../node_modules/@datadog/mobile-react-native/datadog-sourcemaps.gradle"
9090
}
9191

92-
def devVersionName = "1.44.1"
93-
def betaVersionName = "1.44.1"
94-
def prodVersionName = "1.44.1"
92+
def devVersionName = "1.45"
93+
def betaVersionName = "1.45"
94+
def prodVersionName = "1.45"
9595

9696
android {
9797
ndkVersion rootProject.ext.ndkVersion
@@ -252,12 +252,9 @@ dependencies {
252252
implementation 'com.onesignal:OneSignal:4.8.9'
253253
implementation 'com.github.statsig-io:android-sdk:4.36.0'
254254

255-
// This is required for the backported AndroidX Photo Picker on versions of Android below 30
256-
implementation("androidx.activity:activity:1.9.+")
257-
258255
// For animated GIF support
259256
implementation 'com.facebook.fresco:animated-gif:3.6.0'
260-
257+
261258
if (hermesEnabled.toBoolean()) {
262259
implementation("com.facebook.react:hermes-android")
263260
} else {

apps/mobile/android/app/src/main/AndroidManifest.xml

-15
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@
99
<uses-permission android:name="android.permission.VIBRATE" />
1010
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
1111

12-
<!-- This permission which may be added by expo modules. Unless it's used app-wide, should not be included in our app per Play Store rules -->
13-
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove" />
14-
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove" />
15-
1612
<application
1713
android:name=".MainApplication"
1814
android:label="@string/app_name"
@@ -27,17 +23,6 @@
2723
android:taskAffinity=""
2824
android:excludeFromRecents="true">
2925

30-
<!-- Trigger Google Play services to install the backported photo picker module. -->
31-
<service android:name="com.google.android.gms.metadata.ModuleDependencies"
32-
android:enabled="false"
33-
android:exported="false"
34-
tools:ignore="MissingClass">
35-
<intent-filter>
36-
<action android:name="com.google.android.gms.metadata.MODULE_DEPENDENCIES" />
37-
</intent-filter>
38-
<meta-data android:name="photopicker_activity:0:required" android:value="" />
39-
</service>
40-
4126
<meta-data
4227
android:name="com.onesignal.messaging.default_notification_icon"
4328
android:resource="@drawable/ic_stat_onesignal_default" />

apps/mobile/ios/Podfile.lock

+2-4
Original file line numberDiff line numberDiff line change
@@ -2337,9 +2337,7 @@ PODS:
23372337
- React
23382338
- react-native-get-random-values (1.8.0):
23392339
- React-Core
2340-
- react-native-image-picker (7.2.3):
2341-
- glog
2342-
- RCT-Folly (= 2022.05.16.00)
2340+
- react-native-image-picker (7.0.1):
23432341
- React-Core
23442342
- react-native-mmkv (2.10.1):
23452343
- MMKV (>= 1.2.13)
@@ -3083,7 +3081,7 @@ SPEC CHECKSUMS:
30833081
react-native-compat: 100540c3cebb076da442cf058e375e8ca895ae28
30843082
react-native-context-menu-view: dcec18eb8882e20596dbb75802e7d19cb87dac02
30853083
react-native-get-random-values: a6ea6a8a65dc93e96e24a11105b1a9c8cfe1d72a
3086-
react-native-image-picker: b049e0ea9d6b1b58c06262e19f8b66c87ac7b760
3084+
react-native-image-picker: 1569cfade34b3a011191ce262423e6ce2f8db5a1
30873085
react-native-mmkv: dea675cf9697ad35940f1687e98e133e1358ef9f
30883086
react-native-netinfo: 129bd99f607a2dc5bb096168f3e5c150fd1f1c95
30893087
react-native-onesignal: ab800900cffeca4d9db70a05244013fc8a36ceb8

0 commit comments

Comments
 (0)