Skip to content

Commit 9f1cb1b

Browse files
ci(release): publish latest release
1 parent 67f9a00 commit 9f1cb1b

File tree

607 files changed

+15609
-10416
lines changed

Some content is hidden

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

607 files changed

+15609
-10416
lines changed

.nxignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ apps/extension/dev
1010
apps/extension/build
1111
packages/*/dist
1212
packages/*/types
13+
dist/out-tsc
1314

1415
# Ignore Generator Templates
1516
tools/**/generators/**/files

RELEASE

Lines changed: 75 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
IPFS hash of the deployment:
2-
- CIDv0: `QmdAodaydg2G1DMoDLKRK39QsrN47iPkFTsbAF6fXtkghx`
3-
- CIDv1: `bafybeig4lgkyet2btz5jd2xn52zuuiw7l5orpq5ndnk7imuaund45l5dnm`
2+
- CIDv0: `QmZLgue86DopPSEeUnHyM3Wr5vcB8LM2qxqxnHsAx63Kf6`
3+
- CIDv1: `bafybeifdomfn4wr7d44hy24ekkgs7paglr26rq5e77qw3a7mfxo4fctdne`
44

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

@@ -10,9 +10,79 @@ 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://bafybeig4lgkyet2btz5jd2xn52zuuiw7l5orpq5ndnk7imuaund45l5dnm.ipfs.dweb.link/
14-
- [ipfs://QmdAodaydg2G1DMoDLKRK39QsrN47iPkFTsbAF6fXtkghx/](ipfs://QmdAodaydg2G1DMoDLKRK39QsrN47iPkFTsbAF6fXtkghx/)
13+
- https://bafybeifdomfn4wr7d44hy24ekkgs7paglr26rq5e77qw3a7mfxo4fctdne.ipfs.dweb.link/
14+
- [ipfs://QmZLgue86DopPSEeUnHyM3Wr5vcB8LM2qxqxnHsAx63Kf6/](ipfs://QmZLgue86DopPSEeUnHyM3Wr5vcB8LM2qxqxnHsAx63Kf6/)
1515

16-
### 5.120.9 (2025-12-10)
16+
## 5.121.0 (2025-12-11)
17+
18+
19+
### Features
20+
21+
* **web:** add proper page titles to each portfolio tab (#25875) cdd3bb3
22+
* **web:** add refunded amounts to the migrate modal (#25824) bf676a1
23+
* **web:** add view_external_wallets_on_web flag (#25973) 4a5b0b1
24+
* **web:** add wallet search results (#25974) 286c62d
25+
* **web:** align block explorer icons on web TDP (#25838) 681b6f5
26+
* **web:** final wrapped cherry-picks - staging (#26314) b479480
27+
* **web:** Update homepage copy pre-unification vote (#26093) 66c4bc6
28+
* **web:** update TDP and PDP chart type selection to segmented controls (#25839) e9a85ed
29+
* **web:** wrapped dynamic aspect ratio & iframe url connection (#26079) cdc5dde
30+
31+
32+
### Bug Fixes
33+
34+
* **web:** catch errors when lazy-loading modals (#24420) 0eb09f7
35+
* **web:** Change step icon ripple to pink (#25721) 7e4a304
36+
* **web:** disable handler onclickoutside for sheet staging (#26362) c6f2c72
37+
* **web:** disable notification service in e2e tests (#25811) 93c5137
38+
* **web:** disable tamagui compiler for CurrencyInputPanel (#26363) dc15502
39+
* **web:** dynamically compute app header height including Top Level B… (#26401) 2ab6c9e
40+
* **web:** enable correct tamagui stacking zIndex mode (#26000) 095d746
41+
* **web:** enable tamagui compiler in staging (#25930) 6c55793
42+
* **web:** Ensure env vars are loaded for playwright tests (#25638) e4017db
43+
* **web:** Ensure TXs are hexlified before sending to dapp (#25924) fe44f2c
44+
* **web:** fix activity table loading skeleton logic (#25893) 9476c4a
45+
* **web:** Fix displaying web tooltip on mobile (#25061) e3aeb79
46+
* **web:** Fix dividers in swap steps (#25940) 4e8b492
47+
* **web:** handle solana only wallet connection for Portfolio (#25790) 024ed51
48+
* **web:** make amount column on activity table appear to be two columns (#25636) 81c03d1
49+
* **web:** properly cache NFTs so it doesn't load every time you change back to NFTs tab (#25761) 749f5e2
50+
* **web:** quick nit fixes (#25774) 0d1e97c
51+
* **web:** reduce polling for useFormattedCurrencyAmountAndUSDValue (#25635) 1785af3
52+
* **web:** remove batching capabilities from monad (#25957) 62b6e49
53+
* **web:** remove unnecessary animation properties from various components to fix crashes (#25714) 2606015
54+
* **web:** Replace swap flow with send flow for wallet rejection e2e test (#25650) b801033
55+
* **web:** replace use usd price with use usdc value in trade price component staging (#26385) fe955b8
56+
* **web:** reverting trading api key (#26181) 82efb64
57+
* **web:** tamagui style bug with Animated Icons (#25904) 081924f
58+
* **web:** tamagui Tooltip Adapt context && increase Popover zIndexes (#26144) b4d68db
59+
* **web:** tamagui Tooltip zIndex fix (#26106) ff9ebe1
60+
* **web:** tamagui z-index fix (#25976) 52f1276
61+
* **web:** Update dev (#26036) b52e28b
62+
* **web:** use popover zIndex for tamagui popover (#26070) e46fcf7
63+
* **web:** wait for Session to init before fetching notifs (#25820) ea3cdfb
64+
* **web:** zindex/hover fixes for navbar (#26023) 8cabbce
65+
66+
67+
### Continuous Integration
68+
69+
* **web:** update sitemaps 9c275de
70+
71+
72+
### Code Refactoring
73+
74+
* **web:** add retry link to specific graphql queries (#25829) 8c501fa
75+
* **web:** extract hooks from outage banner component (#25744) 8efdde3
76+
* **web:** update logic to determine when to show outage banner (#25745) 45540a7
77+
78+
79+
### Styles
80+
81+
* **web:** better logic for empty portfolio chart (#26065) a4236e6
82+
* **web:** fix chart loading state thrash (#25629) 5ef5890
83+
* **web:** fix overview tables gap (#25625) 8e52a6a
84+
* **web:** remove decimals on overview chart price labels (#25890) 2164000
85+
* **web:** slow emblems animation on connect wallet banner (#25931) 6ac4f05
86+
* **web:** table style nits (#25896) b4a01c6
1787

1888

VERSION

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

apps/extension/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
"@uniswap/analytics-events": "2.43.0",
1919
"@uniswap/client-embeddedwallet": "0.0.16",
2020
"@uniswap/sdk-core": "7.9.0",
21-
"@uniswap/uniswapx-sdk": "3.0.0-beta.7",
2221
"@uniswap/universal-router-sdk": "4.19.5",
2322
"@uniswap/v3-sdk": "3.25.2",
2423
"@uniswap/v4-sdk": "1.21.2",

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

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import { ApiInit, getEntryGatewayUrl, provideSessionService } from '@universe/api'
2-
import { getIsSessionServiceEnabled, getIsSessionUpgradeAutoEnabled } from '@universe/gating'
2+
import {
3+
getIsSessionServiceEnabled,
4+
getIsSessionUpgradeAutoEnabled,
5+
useIsSessionServiceEnabled,
6+
} from '@universe/gating'
37
import {
48
createChallengeSolverService,
59
createSessionInitializationService,
@@ -32,35 +36,43 @@ const provideSessionInitializationService = (): SessionInitializationService =>
3236
getIsSessionUpgradeAutoEnabled,
3337
})
3438

39+
function BaseAppContainerInner({ children }: PropsWithChildren): JSX.Element {
40+
const isSessionServiceEnabled = useIsSessionServiceEnabled()
41+
42+
return (
43+
<I18nextProvider i18n={i18n}>
44+
<SharedWalletProvider reduxStore={getReduxStore()}>
45+
<ErrorBoundary>
46+
<AccountsStoreContextProvider>
47+
<GraphqlProvider>
48+
<BlankUrlProvider>
49+
<SmartWalletNudgesProvider>
50+
<LocalizationContextProvider>
51+
<TraceUserProperties />
52+
<ApiInit
53+
getSessionInitService={provideSessionInitializationService}
54+
isSessionServiceEnabled={isSessionServiceEnabled}
55+
/>
56+
{children}
57+
</LocalizationContextProvider>
58+
</SmartWalletNudgesProvider>
59+
</BlankUrlProvider>
60+
</GraphqlProvider>
61+
</AccountsStoreContextProvider>
62+
</ErrorBoundary>
63+
</SharedWalletProvider>
64+
</I18nextProvider>
65+
)
66+
}
67+
3568
export function BaseAppContainer({
3669
children,
3770
appName,
3871
}: PropsWithChildren<{ appName: DatadogAppNameTag }>): JSX.Element {
3972
return (
4073
<Trace>
4174
<ExtensionStatsigProvider appName={appName}>
42-
<I18nextProvider i18n={i18n}>
43-
<SharedWalletProvider reduxStore={getReduxStore()}>
44-
<ErrorBoundary>
45-
<AccountsStoreContextProvider>
46-
<GraphqlProvider>
47-
<BlankUrlProvider>
48-
<SmartWalletNudgesProvider>
49-
<LocalizationContextProvider>
50-
<TraceUserProperties />
51-
<ApiInit
52-
getSessionInitService={provideSessionInitializationService}
53-
getIsSessionServiceEnabled={getIsSessionServiceEnabled}
54-
/>
55-
{children}
56-
</LocalizationContextProvider>
57-
</SmartWalletNudgesProvider>
58-
</BlankUrlProvider>
59-
</GraphqlProvider>
60-
</AccountsStoreContextProvider>
61-
</ErrorBoundary>
62-
</SharedWalletProvider>
63-
</I18nextProvider>
75+
<BaseAppContainerInner>{children}</BaseAppContainerInner>
6476
</ExtensionStatsigProvider>
6577
</Trace>
6678
)

apps/extension/src/app/features/dappRequests/hooks/usePrepareAndSignSendCallsTransaction.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ export function usePrepareAndSignSendCallsTransaction({
5858
})
5959
: [],
6060
smartContractDelegationAddress: UNISWAP_DELEGATION_ADDRESS,
61+
// @ts-expect-error - TODO: no longer available in API types, verify if still needed
6162
walletAddress: account.address,
6263
},
6364
})

apps/extension/src/app/features/dappRequests/requestContent/EthSend/Swap/SwapRequestContent.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { useDappLastChainId } from 'src/app/features/dapp/hooks'
22
import { useDappRequestQueueContext } from 'src/app/features/dappRequests/DappRequestQueueContext'
33
import { SwapDisplay } from 'src/app/features/dappRequests/requestContent/EthSend/Swap/SwapDisplay'
44
import { formatUnits, useSwapDetails } from 'src/app/features/dappRequests/requestContent/EthSend/Swap/utils'
5-
import { UniswapXSwapRequest } from 'src/app/features/dappRequests/types/Permit2Types'
65
import { UniversalRouterCall } from 'src/app/features/dappRequests/types/UniversalRouterTypes'
76
import { DEFAULT_NATIVE_ADDRESS, DEFAULT_NATIVE_ADDRESS_LEGACY } from 'uniswap/src/features/chains/evm/defaults'
87
import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains'
@@ -13,6 +12,7 @@ import { useCurrencyInfo, useNativeCurrencyInfo } from 'uniswap/src/features/tok
1312
import { TransactionType, TransactionTypeInfo } from 'uniswap/src/features/transactions/types/transactionDetails'
1413
import { buildCurrencyId } from 'uniswap/src/utils/currencyId'
1514
import { assert } from 'utilities/src/errors'
15+
import { UniswapXSwapRequest } from 'wallet/src/components/dappRequests/types/Permit2Types'
1616

1717
function getTransactionTypeInfo({
1818
inputCurrencyInfo,

apps/extension/src/app/features/dappRequests/requestContent/PersonalSign/PersonalSignRequestContent.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ import { SignMessageRequest } from 'src/app/features/dappRequests/types/DappRequ
99
import { Flex, IconButton, Text, Tooltip } from 'ui/src'
1010
import { AlertTriangleFilled, Code, StickyNoteTextSquare } from 'ui/src/components/icons'
1111
import { zIndexes } from 'ui/src/theme'
12+
import { EthMethod } from 'uniswap/src/features/dappRequests/types'
1213
import { logger } from 'utilities/src/logger/logger'
1314
import { containsNonPrintableChars } from 'utilities/src/primitives/string'
1415
import { useBooleanState } from 'utilities/src/react/useBooleanState'
15-
import { DappSignatureScanningContent } from 'wallet/src/components/dappRequests/DappSignatureScanningContent'
16+
import { DappPersonalSignContent } from 'wallet/src/components/dappRequests/DappPersonalSignContent'
1617
import { TransactionRiskLevel } from 'wallet/src/features/dappRequests/types'
1718
import { shouldDisableConfirm } from 'wallet/src/features/dappRequests/utils/riskUtils'
1819

@@ -89,12 +90,12 @@ function PersonalSignRequestContentWithScanning({
8990
showAddressFooter={false}
9091
disableConfirm={disableConfirm}
9192
>
92-
<DappSignatureScanningContent
93+
<DappPersonalSignContent
9394
chainId={activeChain}
9495
account={currentAccount.address}
9596
message={message}
9697
isDecoded={isDecoded}
97-
method="personal_sign"
98+
method={EthMethod.PersonalSign}
9899
params={[hexMessage, currentAccount.address]}
99100
dappUrl={dappUrl}
100101
confirmedRisk={confirmedRisk}

apps/extension/src/app/features/dappRequests/requestContent/SendCalls/SendCallsRequestContent.tsx

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
ParsedCall,
1414
SendCallsRequest,
1515
} from 'src/app/features/dappRequests/types/DappRequestTypes'
16-
import { toSupportedChainId } from 'uniswap/src/features/chains/utils'
16+
import { UniverseChainId } from 'uniswap/src/features/chains/types'
1717
import { GasFeeResult } from 'uniswap/src/features/gas/types'
1818
import { TransactionType, TransactionTypeInfo } from 'uniswap/src/features/transactions/types/transactionDetails'
1919
import { useBooleanState } from 'utilities/src/react/useBooleanState'
@@ -35,31 +35,18 @@ interface SendCallsRequestContentProps {
3535
*/
3636
function SendCallsRequestContentWithScanning({
3737
dappRequest,
38+
chainId,
3839
transactionGasFeeResult,
3940
showSmartWalletActivation,
4041
onConfirm,
4142
onCancel,
42-
}: SendCallsRequestContentProps): JSX.Element {
43+
}: SendCallsRequestContentProps & { chainId: UniverseChainId }): JSX.Element {
4344
const { t } = useTranslation()
4445
const { dappUrl, currentAccount } = useDappRequestQueueContext()
45-
const lastChainId = useDappLastChainId(dappUrl)
46-
const chainId = toSupportedChainId(dappRequest.chainId) ?? lastChainId
4746
const { value: confirmedRisk, setValue: setConfirmedRisk } = useBooleanState(false)
4847
// Initialize with null to indicate scan hasn't completed yet
4948
const [riskLevel, setRiskLevel] = useState<TransactionRiskLevel | null>(null)
5049

51-
if (!chainId) {
52-
return (
53-
<SendCallsRequestContentLegacy
54-
dappRequest={dappRequest}
55-
transactionGasFeeResult={transactionGasFeeResult}
56-
showSmartWalletActivation={showSmartWalletActivation}
57-
onConfirm={onConfirm}
58-
onCancel={onCancel}
59-
/>
60-
)
61-
}
62-
6350
const disableConfirm = shouldDisableConfirm({
6451
riskLevel,
6552
confirmedRisk,
@@ -165,9 +152,10 @@ export function SendCallsRequestHandler({ request }: { request: DappRequestStore
165152
await onCancel(request)
166153
}, [onCancel, request])
167154

168-
return blockaidTransactionScanning ? (
155+
return blockaidTransactionScanning && chainId ? (
169156
<SendCallsRequestContentWithScanning
170157
dappRequest={dappRequest}
158+
chainId={chainId}
171159
transactionGasFeeResult={gasFeeResult}
172160
showSmartWalletActivation={showSmartWalletActivation}
173161
onCancel={onCancelRequest}

apps/extension/src/app/features/dappRequests/requestContent/SignTypeData/NonStandardTypedDataRequestContent.tsx

Lines changed: 2 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@ import { useState } from 'react'
22
import { useTranslation } from 'react-i18next'
33
import { DappRequestContent } from 'src/app/features/dappRequests/DappRequestContent'
44
import { SignTypedDataRequest } from 'src/app/features/dappRequests/types/DappRequestTypes'
5-
import { Flex, Separator, Text } from 'ui/src'
6-
import { Clear, Signature } from 'ui/src/components/icons'
7-
import { InlineWarningCard } from 'uniswap/src/components/InlineWarningCard/InlineWarningCard'
8-
import { WarningSeverity } from 'uniswap/src/components/modals/WarningModal/types'
5+
import { NonStandardTypedDataContent } from 'wallet/src/components/dappRequests/SignTypedData/NonStandardTypedDataContent'
96

107
interface NonStandardTypedDataRequestContentProps {
118
dappRequest: SignTypedDataRequest
@@ -17,58 +14,14 @@ export function NonStandardTypedDataRequestContent({
1714
const { t } = useTranslation()
1815
const [checked, setChecked] = useState(false)
1916

20-
const hasMessageToShow = !!dappRequest.typedData
21-
2217
return (
2318
<DappRequestContent
2419
showNetworkCost
2520
confirmText={t('common.button.sign')}
2621
title={t('dapp.request.signature.header')}
2722
disableConfirm={!checked}
2823
>
29-
<Flex gap="$spacing16">
30-
<Flex
31-
backgroundColor="$surface2"
32-
borderColor="$surface3"
33-
borderRadius="$rounded16"
34-
borderWidth="$spacing1"
35-
flexDirection="column"
36-
gap="$spacing12"
37-
pt="$spacing12"
38-
pb={!hasMessageToShow ? '$spacing12' : undefined}
39-
overflow="hidden"
40-
>
41-
<Flex row px="$spacing12" gap="$spacing8" alignItems="center">
42-
<Clear color="$neutral2" size="$icon.16" />
43-
<Text variant="body3" color="$neutral2">
44-
{t('dapp.request.signature.decodeError')}
45-
</Text>
46-
</Flex>
47-
{hasMessageToShow && <Separator />}
48-
{hasMessageToShow && (
49-
<Flex maxHeight={150} $platform-web={{ overflowY: 'auto' }} px="$spacing16" gap="$spacing8">
50-
<Flex row gap="$spacing8" alignItems="center">
51-
<Signature color="$neutral2" size="$icon.16" />
52-
<Text variant="body3" color="$neutral2">
53-
{t('common.message')}
54-
</Text>
55-
</Flex>
56-
<Text variant="body3" color="$neutral1">
57-
{dappRequest.typedData}
58-
</Text>
59-
</Flex>
60-
)}
61-
</Flex>
62-
<InlineWarningCard
63-
hideCtaIcon
64-
severity={WarningSeverity.Medium}
65-
heading={t('dapp.request.signature.irregular')}
66-
description={t('dapp.request.signature.irregular.description')}
67-
checkboxLabel={t('dapp.request.signature.irregular.understand')}
68-
checked={checked}
69-
setChecked={setChecked}
70-
/>
71-
</Flex>
24+
<NonStandardTypedDataContent typedData={dappRequest.typedData} checked={checked} onCheckedChange={setChecked} />
7225
</DappRequestContent>
7326
)
7427
}

0 commit comments

Comments
 (0)