Skip to content

Commit be33720

Browse files
ci(release): publish latest release
1 parent dd7379a commit be33720

File tree

914 files changed

+33821
-37885
lines changed

Some content is hidden

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

914 files changed

+33821
-37885
lines changed

.yarn/patches/@tamagui-web-npm-1.121.7-4de089c18f.patch

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ index 40466f28af50e22730462702a96e2c8b41969276..92f8f589a72098efc72e58f7cf64fb80
4343
}, 50))), content;
4444
});
4545
+ // UNISWAP PATCH: Using key to avoid conditionally calling useAnimation hook
46-
+ var component = /* @__PURE__ */ import_react.default.forwardRef(function(propsIn, forwardedRef) {
46+
+ var component = /* @__PURE__ */ React.forwardRef(function(propsIn, forwardedRef) {
4747
+ return /* @__PURE__ */ _jsx(OldComponent, {
4848
+ ref: forwardedRef,
4949
+ ...propsIn,

CODEOWNERS

-1
This file was deleted.

RELEASE

+12-23
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,12 @@
1-
IPFS hash of the deployment:
2-
- CIDv0: `Qmb32y1Tr36548yibWocrfwjoXvLKDe2fwiJ34vMNi6A24`
3-
- CIDv1: `bafybeif4ussdpkymilubf3qmecctn52my5szafwzho24vhcxez6nvfwdpe`
4-
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://bafybeif4ussdpkymilubf3qmecctn52my5szafwzho24vhcxez6nvfwdpe.ipfs.dweb.link/
14-
- [ipfs://Qmb32y1Tr36548yibWocrfwjoXvLKDe2fwiJ34vMNi6A24/](ipfs://Qmb32y1Tr36548yibWocrfwjoXvLKDe2fwiJ34vMNi6A24/)
15-
16-
### 5.76.2 (2025-03-17)
17-
18-
19-
### Bug Fixes
20-
21-
* **web:** fix swapping on TDP (#17378) 3000727
22-
23-
1+
We are back with some new updates! Here’s the latest:
2+
3+
Unichain Updates: Enjoy faster swap speeds, more onramp options, and more token data.
4+
Monad Testnet Support: Swap here by toggling to testnet mode in settings
5+
6+
Other changes:
7+
- VND currency support
8+
- Improvements to our NFT Spam reporting feature
9+
- Stronger warnings when sending funds to token contracts
10+
- New icon for the Buy/Sell button on the homepage
11+
- Various bug fixes and performance improvements
12+
- Improved help center articles

VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
web/5.76.2
1+
mobile/1.47.1

apps/extension/.eslintrc.js

+2-22
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
const rulesDirPlugin = require('eslint-plugin-rulesdir')
2-
rulesDirPlugin.RULES_DIR = '../../packages/uniswap/eslint_rules'
3-
41
module.exports = {
52
root: true,
6-
extends: ['@uniswap/eslint-config/native-app'],
7-
plugins: ['rulesdir'],
3+
extends: ['@uniswap/eslint-config/native'],
84
ignorePatterns: [
95
'node_modules',
106
'dist',
@@ -24,7 +20,6 @@ module.exports = {
2420
ecmaVersion: 2018,
2521
sourceType: 'module',
2622
},
27-
rules: {},
2823
overrides: [
2924
{
3025
files: ['src/assets/index.ts', 'src/contentScript/index.tsx'],
@@ -43,21 +38,6 @@ module.exports = {
4338
],
4439
},
4540
},
46-
{
47-
files: ['**/contentScript/injected.ts'],
48-
rules: {
49-
'no-restricted-syntax': [
50-
'error',
51-
{
52-
selector: 'CallExpression[callee.object.name="logger"][callee.property.name!=/^(debug)$/]',
53-
message:
54-
'Only logger.debug is allowed in this file. Please handle errors and info logs explicitly using ErrorLog and InfoLog message passing.',
55-
},
56-
],
57-
},
58-
},
5941
],
60-
rules: {
61-
'rulesdir/i18n': 'error',
62-
},
42+
rules: {},
6343
}

apps/extension/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
"@uniswap/v3-sdk": "3.25.2",
1717
"@uniswap/v4-sdk": "1.21.2",
1818
"dotenv-webpack": "8.0.1",
19-
"eslint-plugin-rulesdir": "0.2.2",
2019
"ethers": "5.7.2",
2120
"eventemitter3": "5.0.1",
2221
"framer-motion": "10.17.6",

apps/extension/src/app/apollo.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { ApolloProvider } from '@apollo/client'
22
import { PropsWithChildren } from 'react'
33
import { localStorage } from 'redux-persist-webextension-storage'
44
import { getReduxStore } from 'src/store/store'
5-
// eslint-disable-next-line @typescript-eslint/no-restricted-imports
5+
// eslint-disable-next-line no-restricted-imports
66
import { usePersistedApolloClient } from 'wallet/src/data/apollo/usePersistedApolloClient'
77

88
// Extension local storage has 10 MB limit, so we want to be very careful to leave enough space for the redux store + any other data that we might want to store in local storage
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { PropsWithChildren } from 'react'
2+
import { useTranslation } from 'react-i18next'
3+
import { Flex, Text, Tooltip } from 'ui/src'
4+
5+
type Side = 'top' | 'right' | 'bottom' | 'left'
6+
type Alignment = 'start' | 'end'
7+
type AlignedPlacement = `${Side}-${Alignment}`
8+
9+
export function ComingSoon({
10+
children,
11+
placement = 'bottom-end',
12+
}: PropsWithChildren & {
13+
placement?: Side | AlignedPlacement
14+
}): JSX.Element {
15+
const { t } = useTranslation()
16+
17+
return (
18+
<Tooltip delay={20} placement={placement}>
19+
<Tooltip.Trigger>
20+
<Flex grow flex={1}>
21+
{children}
22+
</Flex>
23+
</Tooltip.Trigger>
24+
<Tooltip.Content px="$none" py="$none">
25+
<Flex p="$spacing12">
26+
<Text color="$neutral2" variant="body3">
27+
{t('settings.setting.beta.tooltip')}
28+
</Text>
29+
</Flex>
30+
</Tooltip.Content>
31+
</Tooltip>
32+
)
33+
}

apps/extension/src/app/components/PasswordInput.tsx

+3-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { forwardRef } from 'react'
22
import { useTranslation } from 'react-i18next'
33
import { TextInput } from 'react-native'
44
import { Input, InputProps } from 'src/app/components/Input'
5-
import { Flex, FlexProps, IconProps, Text, TouchableArea } from 'ui/src'
5+
import { DeprecatedButton, Flex, FlexProps, IconProps, Text } from 'ui/src'
66
import { Eye, EyeOff } from 'ui/src/components/icons'
77
import { PasswordStrength, getPasswordStrengthTextAndColor } from 'wallet/src/utils/password'
88

@@ -34,17 +34,16 @@ export const PasswordInput = forwardRef<TextInput, PasswordInputProps>(function
3434
<StrengthIndicator strength={passwordStrength} />
3535
) : (
3636
onToggleHideInput && (
37-
<TouchableArea
37+
<DeprecatedButton
3838
backgroundColor="$transparent"
3939
hoverStyle={hoverStyle}
4040
position="absolute"
4141
pressStyle={hoverStyle}
4242
right="$spacing8"
43-
p="$spacing12"
4443
onPress={(): void => onToggleHideInput(!hideInput)}
4544
>
4645
{hideInput ? <Eye {...iconProps} /> : <EyeOff {...iconProps} />}
47-
</TouchableArea>
46+
</DeprecatedButton>
4847
)
4948
)}
5049
</Flex>

apps/extension/src/app/components/Trace/TraceUserProperties.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { useAppFiatCurrencyInfo } from 'uniswap/src/features/fiatCurrency/hooks'
55
import { useCurrentLanguage } from 'uniswap/src/features/language/hooks'
66
import { useHideSmallBalancesSetting, useHideSpamTokensSetting } from 'uniswap/src/features/settings/hooks'
77
import { ExtensionUserPropertyName, setUserProperty } from 'uniswap/src/features/telemetry/user'
8-
// eslint-disable-next-line @typescript-eslint/no-restricted-imports
8+
// eslint-disable-next-line no-restricted-imports
99
import { analytics } from 'utilities/src/telemetry/analytics/analytics'
1010
import { useGatingUserPropertyUsernames } from 'wallet/src/features/gating/userPropertyHooks'
1111
import { useActiveAccount, useSignerAccounts, useViewOnlyAccounts } from 'wallet/src/features/wallet/hooks'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { Flex } from 'ui/src'
2+
import { LoadingSpinnerInner, LoadingSpinnerOuter } from 'ui/src/components/icons'
3+
4+
const SPINNER_HEIGHT = 80
5+
6+
export function LoadingSpinner(): JSX.Element {
7+
return (
8+
<>
9+
<Flex height={SPINNER_HEIGHT} position="relative" width={80}>
10+
<Flex bottom={0} left={0} position="absolute" right={0} top={0}>
11+
<LoadingSpinnerOuter color="$DEP_brandedAccentSoft" size={80} />
12+
</Flex>
13+
<Flex
14+
bottom={0}
15+
left={0}
16+
position="absolute"
17+
right={0}
18+
style={{ animation: `spin ${SPIN_SPEED_MS}ms linear infinite` }}
19+
top={0}
20+
>
21+
<LoadingSpinnerInner color="$accent1" size={80} />
22+
</Flex>
23+
</Flex>
24+
</>
25+
)
26+
}
27+
28+
const SPIN_SPEED_MS = 1000

apps/extension/src/app/components/loading/SelectWalletSkeleton.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { SkeletonBox } from 'src/app/components/loading/SkeletonBox'
22
import { Flex } from 'ui/src'
3-
import { WALLET_PREVIEW_CARD_MIN_HEIGHT } from 'wallet/src/components/WalletPreviewCard/WalletPreviewCard'
3+
import { WALLET_PREVIEW_CARD_HEIGHT } from 'wallet/src/components/WalletPreviewCard/WalletPreviewCard'
44

55
export function SelectWalletsSkeleton({ repeat = 3 }: { repeat?: number }): JSX.Element {
66
return (
@@ -20,7 +20,7 @@ function WalletSkeleton({ opacity }: { opacity: number }): JSX.Element {
2020
borderColor="$surface3"
2121
borderRadius="$rounded20"
2222
borderWidth="$spacing1"
23-
height={WALLET_PREVIEW_CARD_MIN_HEIGHT}
23+
height={WALLET_PREVIEW_CARD_HEIGHT}
2424
justifyContent="flex-start"
2525
opacity={opacity}
2626
overflow="hidden"

apps/extension/src/app/components/loading/SkeletonBox.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,5 @@ export function SkeletonBox({
1212
height: number | string
1313
borderRadius?: string
1414
}): JSX.Element {
15-
// eslint-disable-next-line react/forbid-elements
1615
return <div className="skeleton-box" style={{ width, height, borderRadius }} />
1716
}

apps/extension/src/app/components/modal/InfoModal.tsx

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ReactNode } from 'react'
2-
import { Anchor, Button, ButtonEmphasis, Flex, Text, TouchableArea, useSporeColors } from 'ui/src'
2+
import { Anchor, DeprecatedButton, Flex, Text, TouchableArea, useSporeColors } from 'ui/src'
33
import { X } from 'ui/src/components/icons'
44
import { zIndexes } from 'ui/src/theme'
55
import { Modal } from 'uniswap/src/components/modals/Modal'
@@ -14,7 +14,7 @@ export interface ModalProps {
1414
title: string
1515
description: string
1616
buttonText: string
17-
buttonEmphasis?: ButtonEmphasis
17+
buttonTheme?: 'primary' | 'secondary' | 'tertiary'
1818
onButtonPress?: () => void
1919
linkText?: string
2020
linkUrl?: string
@@ -29,7 +29,7 @@ export function InfoModal({
2929
title,
3030
description,
3131
buttonText,
32-
buttonEmphasis,
32+
buttonTheme,
3333
onButtonPress,
3434
linkText,
3535
linkUrl,
@@ -60,11 +60,9 @@ export function InfoModal({
6060
{description}
6161
</Text>
6262
</Flex>
63-
<Flex row alignSelf="stretch">
64-
<Button size="medium" emphasis={buttonEmphasis} onPress={onButtonPress}>
65-
{buttonText}
66-
</Button>
67-
</Flex>
63+
<DeprecatedButton size="medium" theme={buttonTheme} width="100%" onPress={onButtonPress}>
64+
{buttonText}
65+
</DeprecatedButton>
6866
{linkText && linkUrl && (
6967
<Anchor href={linkUrl} lineHeight={16} p="$spacing12" target="_blank" textDecorationLine="none">
7068
<Text color="$neutral2" textAlign="center" variant="buttonLabel3">

apps/extension/src/app/core/PopupApp.tsx

+14-17
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { ErrorElement } from 'src/app/components/ErrorElement'
99
import { BaseAppContainer } from 'src/app/core/BaseAppContainer'
1010
import { DatadogAppNameTag } from 'src/app/datadog'
1111
import { initExtensionAnalytics } from 'src/app/utils/analytics'
12-
import { Button, Flex, Image, Text } from 'ui/src'
12+
import { DeprecatedButton, Flex, Image, Text } from 'ui/src'
1313
import { CHROME_LOGO, UNISWAP_LOGO } from 'ui/src/assets'
1414
import { iconSizes, spacing } from 'ui/src/theme'
1515
import { syncAppWithDeviceLanguage } from 'uniswap/src/features/settings/slice'
@@ -75,22 +75,19 @@ function PopupContent(): JSX.Element {
7575
<Flex fill />
7676

7777
<Trace logPress element={ElementName.ExtensionPopupOpenButton}>
78-
<Flex>
79-
<Button
80-
variant="branded"
81-
emphasis="primary"
82-
size="medium"
83-
width="100%"
84-
onPress={async () => {
85-
if (windowIdNumber) {
86-
await chrome.sidePanel.open({ tabId: tabIdNumber, windowId: windowIdNumber })
87-
window.close()
88-
}
89-
}}
90-
>
91-
{t('extension.popup.chrome.button')}
92-
</Button>
93-
</Flex>
78+
<DeprecatedButton
79+
theme="primary"
80+
width="100%"
81+
onPress={async () => {
82+
if (windowIdNumber) {
83+
// eslint-disable-next-line security/detect-non-literal-fs-filename
84+
await chrome.sidePanel.open({ tabId: tabIdNumber, windowId: windowIdNumber })
85+
window.close()
86+
}
87+
}}
88+
>
89+
{t('extension.popup.chrome.button')}
90+
</DeprecatedButton>
9491
</Trace>
9592
</Flex>
9693
</Trace>

apps/extension/src/app/features/accounts/AccountItem.tsx

+16-10
Original file line numberDiff line numberDiff line change
@@ -160,25 +160,31 @@ export function AccountItem({ address, onAccountSelect, balanceUSD }: AccountIte
160160
size={iconSizes.icon40}
161161
variant="subheading2"
162162
/>
163-
<ContextMenu closeOnClick itemId={address} menuOptions={menuOptions} onLeftClick>
164-
<Flex centered>
165-
<Text $group-hover={{ opacity: 0 }} color="$neutral2" opacity={1} variant="body3">
166-
{formattedBalance}
167-
</Text>
163+
<Flex>
164+
<Text
165+
$group-hover={{ opacity: 0 }}
166+
color="$neutral2"
167+
opacity={1}
168+
position="absolute"
169+
right={0}
170+
top="50%"
171+
transform="translateY(-50%)"
172+
variant="body3"
173+
>
174+
{formattedBalance}
175+
</Text>
176+
<ContextMenu closeOnClick itemId={address} menuOptions={menuOptions} onLeftClick>
168177
<Flex
169178
$group-hover={{ opacity: 1 }}
170179
borderRadius="$roundedFull"
171180
hoverStyle={{ backgroundColor: '$surface2Hovered' }}
172181
opacity={0}
173-
position="absolute"
174182
p="$spacing4"
175-
right={0}
176-
top={0}
177183
>
178184
<Ellipsis color="$neutral2" size="$icon.16" />
179185
</Flex>
180-
</Flex>
181-
</ContextMenu>
186+
</ContextMenu>
187+
</Flex>
182188
</Flex>
183189
</TouchableArea>
184190
</>

0 commit comments

Comments
 (0)