Skip to content

Commit deaefb5

Browse files
ci(release): publish latest release
1 parent 269e0a8 commit deaefb5

File tree

495 files changed

+21395
-6030
lines changed

Some content is hidden

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

495 files changed

+21395
-6030
lines changed

.env.defaults

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,7 @@ SCANTASTIC_API_URL_OVERRIDE=
3434
STATSIG_PROXY_URL_OVERRIDE=
3535
TRADING_API_URL_OVERRIDE=
3636
UNITAGS_API_URL_OVERRIDE=
37+
UNISWAP_NOTIF_API_BASE_URL_OVERRIDE=
38+
ENTRY_GATEWAY_API_URL_OVERRIDE=
3739
GH_TOKEN_RN_CLI=
3840
JUPITER_PROXY_URL=

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ yarn-error.log*
2929

3030
# local env files
3131
.env
32+
.env.local
3233
.env.defaults.local
3334

3435
# turbo

RELEASE

Lines changed: 47 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
IPFS hash of the deployment:
2-
- CIDv0: `QmNMoMSDQVQwUdfxLqhLpM4bKgGMyEHU2LU2RfDFaRqACc`
3-
- CIDv1: `bafybeiaajnnkurqabznrl32buiydbsym77nt2np3d5xv5mgskkd6euk3au`
2+
- CIDv0: `QmcXKJu5dG8FFG831szNgdEfs9U7XxCnRwbSuAygxy42Ph`
3+
- CIDv1: `bafybeigsx4i67rlwmg76alnqawpcpe2gugwvtu7dcgojfgxm2e4ap43gma`
44

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

@@ -10,65 +10,67 @@ 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://bafybeiaajnnkurqabznrl32buiydbsym77nt2np3d5xv5mgskkd6euk3au.ipfs.dweb.link/
14-
- [ipfs://QmNMoMSDQVQwUdfxLqhLpM4bKgGMyEHU2LU2RfDFaRqACc/](ipfs://QmNMoMSDQVQwUdfxLqhLpM4bKgGMyEHU2LU2RfDFaRqACc/)
13+
- https://bafybeigsx4i67rlwmg76alnqawpcpe2gugwvtu7dcgojfgxm2e4ap43gma.ipfs.dweb.link/
14+
- [ipfs://QmcXKJu5dG8FFG831szNgdEfs9U7XxCnRwbSuAygxy42Ph/](ipfs://QmcXKJu5dG8FFG831szNgdEfs9U7XxCnRwbSuAygxy42Ph/)
1515

16-
## 5.117.0 (2025-11-05)
16+
## 5.118.0 (2025-11-13)
1717

1818

1919
### Features
2020

21-
* **web:** add activity items to new mini portfolio (#24822) f0994c6
22-
* **web:** add infinite scroll for portfolio activity table (#24691) d71921f
23-
* **web:** add infinite scroll to minip on web activity (#23352) 78d6dcb
24-
* **web:** add NFT context menu (#24791) 10ed3e4
25-
* **web:** add report position option to context menus (#24840) b587dfc
26-
* **web:** add report position option to PDP (#24841) 97d0b94
27-
* **web:** add toast on report (#24717) 65c8cd6
28-
* **web:** add web entry points for token reporting (#24714) b83cb90
29-
* **web:** block timestamp countdown (#24632) 6a1da1d
30-
* **web:** dialog content container + spacing tweaks (#24239) 035026d
31-
* **web:** portfolio Overview tab (#24737) ed3f451
32-
* **web:** stub out new mini portfolio behind flag (#24821) 0602da3
33-
* **web:** toucan auction status (#24866) 0d9d56b
34-
* **web:** use shared token details hooks with unified 24hr change (#24726) 501d754
21+
* **web:** add bid distribution chart calculations (#24634) a4d4a0f
22+
* **web:** add bid distribution chart UI components (#24636) 0b17542
23+
* **web:** add dev tools for bid distribution chart testing (#24638) 875e7b9
24+
* **web:** add max valuation input (#24301) 31ae922
25+
* **web:** add network filtering to overview tab (#25105) 24d0bf4
26+
* **web:** add nft formatting support in activity table (#25034) c30f149
27+
* **web:** add solana support for web portfolio page (#25108) 1d13ffe
28+
* **web:** add toucan activities UX (#24763) f2ad86a
29+
* **web:** add Toucan chart infrastructure (#24633) f0d25d6
30+
* **web:** add toucan stats UX (#24764) 5558640
31+
* **web:** filter NFTs by chain (#25116) 245586f
32+
* **web:** implement chart hooks and main renderer (#24635) 5be2fe0
33+
* **web:** improve time hover formatting for activity table (#25035) 43e27ba
34+
* **web:** integrate chart into auction store and add supporting features (#24637) 66adc2e
35+
* **web:** Overview mini tokens table (#24805) 752b8e6
36+
* **web:** Portfolio Overview Limits table (#24817) 4a6e7aa
37+
* **web:** portfolio overview mini activity table (#24816) c870eb2
38+
* **web:** portfolio overview mini pools table (#24818) c380379
39+
* **web:** scaffold toucan auction activity + stats container (#24762) bfbb327
40+
* **web:** toucan add clearing price line (#24730) 0db762b
41+
* **web:** toucan bid distribution not started state (#24919) 2839785
42+
* **web:** v2 -> v3 migrate using the new flow (#22488) 86504f7
3543

3644

3745
### Bug Fixes
3846

39-
* **web:** calculate fiat delta from API percentage for multi-chain tokens (#24728) 36f4c68
40-
* **web:** data reporting abilities fixes (#25130) 9246200
41-
* **web:** default to mainnet for limits flow (#24884) 666bdb0
42-
* **web:** fix issue with listpools endpoint returning an error (#25141) 62f132b
43-
* **web:** fix nested scrollbar overflowY issue (#24688) 60d39f3
44-
* **web:** Fix non-reactive prices on explore tab (#24766) 4539d99
45-
* **web:** Load tokens until scrollbar appears- PORT-359 (#23085) 5a480cf
46-
* **web:** log interface swap finalization results for flashblocks (#24869) b800fb3
47-
* **web:** portfolio polishes (#24944) 6d94d95
48-
* **web:** position card context menu fixes and cleanup (#24839) 5568c4d
49-
* **web:** prevent blank loading state in swap modal 5790e16
50-
* **web:** remove bad import in server side worker code (#24803) 048e2a0
51-
* **web:** Remove unnecessary button outline on Switch (#24697) 6216bb8
52-
* **web:** revert table scroll update (#25113) 9d12691
47+
* **web:** add transaction to TransactionState redux prior to onModification (#25218) 5a4f64f
48+
* **web:** address feedback (#24949) ed03cfd
49+
* **web:** allow table row height prop to fix row overflow (#25099) 468bffd
50+
* **web:** ExpectedTransactionState types (#25152) d659705
51+
* **web:** filter token balance by selected chain (#25194) 9b6639f
52+
* **web:** fix issue with listpools endpoint returning an error (#25140) ebd8351
53+
* **web:** fix protocol stats calcs (#25123) 4b0f0ca
54+
* **web:** hide report option when we already know a position is hidden (#25209) 47aea4b
55+
* **web:** more dialog fixes (#24747) 0c37ec6
56+
* **web:** nft count should reflect search results (#24952) 0267bc5
57+
* **web:** notif system initialization (#25008) f30ffbf
58+
* **web:** prevent blank loading state in swap modal (#25144) b6f7698
59+
* **web:** revert table scroll update (#25111) a9084fd
60+
* **web:** use new Dialog to fix broken dialogs (#24742) a86c256
61+
* **web:** use new Dialog to fix Token Warning modal (#24744) ef0c42b
5362

5463

5564
### Continuous Integration
5665

57-
* **web:** update sitemaps c5134d4
58-
59-
60-
### Code Refactoring
61-
62-
* **web:** Consolidate swap and wrap callbacks into useSwapHandlers (#24219) b151db3
63-
* **web:** Consolidate swap and wrap handlers into unified interface (#24184) 672c7be
66+
* **web:** update sitemaps 20e677d
6467

6568

6669
### Styles
6770

68-
* **web:** apply textured background to pool details page table variants (#25040) 8381ec0
69-
* **web:** fix portfolio page account header scroll animation (#24953) 13aef52
70-
* **web:** update activity tab filter to reflect designs (#24687) 68f73cb
71-
* **web:** update loading skeletons for NFT Cards (#24951) d556e00
72-
* **web:** update price chart styles (#24773) 5f231db
71+
* **web:** add support for network filter size transition (#25187) 0033e73
72+
* **web:** disconnected state style polishes (#24986) 0f7d20f
73+
* **web:** fix various alignment issues (#25195) 7b44676
74+
* **web:** style connect wallet banner in light and dark theme (#25110) 5cecfe5
7375

7476

VERSION

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

apps/extension/jest.config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ module.exports = {
3838
],
3939
resolver: "<rootDir>/src/test/jest-resolver.js",
4040
displayName: 'Extension Wallet',
41+
testMatch: [
42+
'<rootDir>/src/**/*.(spec|test).[jt]s?(x)',
43+
'<rootDir>/config/**/*.(spec|test).[jt]s?(x)',
44+
],
4145
testPathIgnorePatterns: [
4246
...preset.testPathIgnorePatterns,
4347
'<rootDir>/e2e/',

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ApiInit, getSessionService } from '@universe/api'
1+
import { ApiInit, getEntryGatewayUrl, getSessionService } from '@universe/api'
22
import { createChallengeSolverService, createSessionInitializationService } from '@universe/sessions'
33
import { PropsWithChildren } from 'react'
44
import { I18nextProvider } from 'react-i18next'
@@ -18,8 +18,7 @@ import { SharedWalletProvider } from 'wallet/src/providers/SharedWalletProvider'
1818

1919
const sessionInitializationService = createSessionInitializationService({
2020
sessionService: getSessionService({
21-
// TODO: Use real base url
22-
getBaseUrl: () => 'https://entry-gateway.backend-dev.api.uniswap.org',
21+
getBaseUrl: getEntryGatewayUrl,
2322
}),
2423
challengeSolverService: createChallengeSolverService(),
2524
})

apps/extension/src/app/features/dappRequests/DappRequestContent.tsx

Lines changed: 19 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,7 @@ import {
1212
isBatchedSwapRequest,
1313
isConnectionRequest,
1414
} from 'src/app/features/dappRequests/types/DappRequestTypes'
15-
import {
16-
Anchor,
17-
AnimatePresence,
18-
Button,
19-
Flex,
20-
GetThemeValueForKey,
21-
styled,
22-
Text,
23-
UniversalImage,
24-
UniversalImageResizeMode,
25-
} from 'ui/src'
26-
import { Verified } from 'ui/src/components/icons'
27-
import { borderRadii, iconSizes } from 'ui/src/theme'
28-
import { DappIconPlaceholder } from 'uniswap/src/components/dapps/DappIconPlaceholder'
15+
import { AnimatePresence, Button, Flex, GetThemeValueForKey, styled, Text } from 'ui/src'
2916
import { UNISWAP_WEB_HOSTNAME } from 'uniswap/src/constants/urls'
3017
import { useEnabledChains } from 'uniswap/src/features/chains/hooks/useEnabledChains'
3118
import { UniverseChainId } from 'uniswap/src/features/chains/types'
@@ -40,7 +27,9 @@ import { logger } from 'utilities/src/logger/logger'
4027
import { useEvent } from 'utilities/src/react/hooks'
4128
import { useThrottledCallback } from 'utilities/src/react/useThrottledCallback'
4229
import { MAX_HIDDEN_CALLS_BY_DEFAULT } from 'wallet/src/components/BatchedTransactions/BatchedTransactionDetails'
30+
import { DappRequestHeader } from 'wallet/src/components/dappRequests/DappRequestHeader'
4331
import { WarningBox } from 'wallet/src/components/WarningBox/WarningBox'
32+
import { DappVerificationStatus } from 'wallet/src/features/dappRequests/types'
4433
import { AddressFooter } from 'wallet/src/features/transactions/TransactionRequest/AddressFooter'
4534
import { NetworkFeeFooter } from 'wallet/src/features/transactions/TransactionRequest/NetworkFeeFooter'
4635
import { useActiveAccountWithThrow } from 'wallet/src/features/wallet/hooks'
@@ -57,7 +46,6 @@ interface DappRequestFooterProps {
5746
maybeCloseOnConfirm?: boolean
5847
onCancel?: (requestToConfirm?: DappRequestStoreItem, transactionTypeInfo?: TransactionTypeInfo) => void
5948
onConfirm?: (requestToCancel?: DappRequestStoreItem) => void
60-
showAllNetworks?: boolean
6149
showNetworkCost?: boolean
6250
showSmartWalletActivation?: boolean
6351
transactionGasFeeResult?: GasFeeResult
@@ -102,7 +90,6 @@ export function DappRequestContent({
10290
maybeCloseOnConfirm,
10391
onCancel,
10492
onConfirm,
105-
showAllNetworks,
10693
showNetworkCost,
10794
showSmartWalletActivation,
10895
transactionGasFeeResult,
@@ -111,11 +98,25 @@ export function DappRequestContent({
11198
disableConfirm,
11299
contentHorizontalPadding = '$spacing12',
113100
}: PropsWithChildren<DappRequestContentProps>): JSX.Element {
114-
const { forwards, currentIndex } = useDappRequestQueueContext()
101+
const { forwards, currentIndex, dappIconUrl, dappUrl, request } = useDappRequestQueueContext()
102+
const hostname = extractNameFromUrl(dappUrl).toUpperCase()
103+
const showVerified =
104+
request && isConnectionRequest(request.dappRequest) && formatDappURL(dappUrl) === UNISWAP_WEB_HOSTNAME
115105

116106
return (
117107
<>
118-
<DappRequestHeader headerIcon={headerIcon} title={title} />
108+
<Flex mb="$spacing4" ml="$spacing8" mt="$spacing8" mr="$spacing8" px="$spacing12">
109+
<DappRequestHeader
110+
dappInfo={{
111+
name: hostname,
112+
url: dappUrl,
113+
icon: dappIconUrl,
114+
}}
115+
title={title}
116+
verificationStatus={showVerified ? DappVerificationStatus.Verified : undefined}
117+
headerIcon={headerIcon}
118+
/>
119+
</Flex>
119120
<AnimatePresence exitBeforeEnter custom={{ forwards }}>
120121
<AnimatedPane key={currentIndex} animation="200ms" px={contentHorizontalPadding}>
121122
{children}
@@ -127,7 +128,6 @@ export function DappRequestContent({
127128
connectedAccountAddress={connectedAccountAddress}
128129
isUniswapX={isUniswapX}
129130
maybeCloseOnConfirm={maybeCloseOnConfirm}
130-
showAllNetworks={showAllNetworks}
131131
showNetworkCost={showNetworkCost}
132132
showSmartWalletActivation={showSmartWalletActivation}
133133
transactionGasFeeResult={transactionGasFeeResult}
@@ -139,48 +139,6 @@ export function DappRequestContent({
139139
)
140140
}
141141

142-
function DappRequestHeader({ headerIcon, title }: DappRequestHeaderProps): JSX.Element {
143-
const { dappIconUrl, dappUrl, request } = useDappRequestQueueContext()
144-
const hostname = extractNameFromUrl(dappUrl).toUpperCase()
145-
const fallbackIcon = <DappIconPlaceholder iconSize={iconSizes.icon40} name={hostname} />
146-
const showVerified =
147-
request && isConnectionRequest(request.dappRequest) && formatDappURL(dappUrl) === UNISWAP_WEB_HOSTNAME
148-
149-
return (
150-
<Flex mb="$spacing4" ml="$spacing8" mt="$spacing8" px="$spacing12">
151-
<Flex row>
152-
<Flex borderRadius="$roundedFull" borderWidth="$spacing1" borderColor="$surface3">
153-
{headerIcon || (
154-
<UniversalImage
155-
style={{
156-
image: { borderRadius: borderRadii.roundedFull },
157-
}}
158-
fallback={fallbackIcon}
159-
size={{
160-
width: iconSizes.icon40,
161-
height: iconSizes.icon40,
162-
resizeMode: UniversalImageResizeMode.Contain,
163-
}}
164-
uri={dappIconUrl}
165-
/>
166-
)}
167-
</Flex>
168-
</Flex>
169-
<Text mt="$spacing8" variant="subheading1">
170-
{title}
171-
</Text>
172-
<Anchor href={dappUrl} rel="noopener noreferrer" target="_blank" textDecorationLine="none">
173-
<Flex row alignItems="center" mt="$spacing4" gap="$gap4">
174-
<Text color="$accent1" textAlign="left" variant="body4">
175-
{formatDappURL(dappUrl)}
176-
</Text>
177-
{showVerified && <Verified color="$accent1" size="$icon.12" />}
178-
</Flex>
179-
</Anchor>
180-
</Flex>
181-
)
182-
}
183-
184142
const WINDOW_CLOSE_DELAY = 10
185143

186144
function DappRequestFooter({
Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,18 @@
11
import { useTranslation } from 'react-i18next'
22
import { DappRequestContent } from 'src/app/features/dappRequests/DappRequestContent'
3-
import { Flex, Text } from 'ui/src'
3+
import { useDappRequestQueueContext } from 'src/app/features/dappRequests/DappRequestQueueContext'
4+
import { AccountType } from 'uniswap/src/features/accounts/types'
5+
import { DappConnectionContent } from 'wallet/src/components/dappRequests/DappConnectionContent'
46

57
export function ConnectionRequestContent(): JSX.Element {
68
const { t } = useTranslation()
9+
const { currentAccount } = useDappRequestQueueContext()
10+
11+
const isViewOnly = currentAccount.type === AccountType.Readonly
712

813
return (
9-
<DappRequestContent
10-
showAllNetworks
11-
confirmText={t('common.button.connect')}
12-
title={t('dapp.request.connect.title')}
13-
>
14-
<Flex
15-
backgroundColor="$surface2"
16-
borderColor="$surface3"
17-
borderRadius="$rounded12"
18-
borderWidth="$spacing1"
19-
p="$spacing12"
20-
>
21-
<Text color="$neutral2" variant="body4">
22-
{t('dapp.request.connect.helptext')}
23-
</Text>
24-
</Flex>
14+
<DappRequestContent confirmText={t('common.button.connect')} title={t('dapp.request.connect.title')}>
15+
<DappConnectionContent isViewOnly={isViewOnly} />
2516
</DappRequestContent>
2617
)
2718
}

apps/extension/src/app/features/home/HomeScreen.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ export const HomeScreen = memo(function _HomeScreen(): JSX.Element {
174174
<PortfolioHeader address={address} />
175175
</Flex>
176176
<Flex pb="$spacing8" pl="$spacing4">
177-
<PortfolioBalance owner={address} />
177+
<PortfolioBalance evmOwner={address} />
178178
</Flex>
179179

180180
<PortfolioActionButtons />

apps/extension/src/app/utils/analytics.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,18 @@ import 'symbol-observable' // Needed by `reduxed-chrome-storage` as polyfill, or
55
import { EXTENSION_ORIGIN_APPLICATION } from 'src/app/version'
66
import { uniswapUrls } from 'uniswap/src/constants/urls'
77
import { getUniqueId } from 'utilities/src/device/uniqueId'
8+
import { isTestEnv } from 'utilities/src/environment/env'
9+
import { logger } from 'utilities/src/logger/logger'
810
import { ApplicationTransport } from 'utilities/src/telemetry/analytics/ApplicationTransport'
911
// biome-ignore lint/style/noRestrictedImports: Direct utilities import required for analytics initialization
1012
import { analytics, getAnalyticsAtomDirect } from 'utilities/src/telemetry/analytics/analytics'
1113

1214
export async function initExtensionAnalytics(): Promise<void> {
15+
if (isTestEnv()) {
16+
logger.debug('analytics.ts', 'initExtensionAnalytics', 'Skipping Amplitude initialization in test environment')
17+
return
18+
}
19+
1320
const analyticsAllowed = await getAnalyticsAtomDirect(true)
1421
await analytics.init({
1522
transportProvider: new ApplicationTransport({

0 commit comments

Comments
 (0)