ci(release): publish latest release

parent 5a1edbe7
IPFS hash of the deployment:
- CIDv0: `QmQToF1qiuAjejy6i8taYNKVGVw2eehvVKb8mimGtzmdnt`
- CIDv1: `bafybeia7rqlhhzrec6fjpzeo2eh3ayuiiqrkqehr2puihgnpw5xabvisqu`
- CIDv0: `Qmare3scA791vEczmDbddpWRgmipd2LyBeHGoV53RzqJWd`
- CIDv1: `bafybeifz7lwau4w4z7awqjzujhgnff4lpwxrj533xk3n6skzpjmvzpyhvi`
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
......@@ -10,51 +10,14 @@ You can also access the Uniswap Interface from an IPFS gateway.
Your Uniswap settings are never remembered across different URLs.
IPFS gateways:
- https://bafybeia7rqlhhzrec6fjpzeo2eh3ayuiiqrkqehr2puihgnpw5xabvisqu.ipfs.dweb.link/
- [ipfs://QmQToF1qiuAjejy6i8taYNKVGVw2eehvVKb8mimGtzmdnt/](ipfs://QmQToF1qiuAjejy6i8taYNKVGVw2eehvVKb8mimGtzmdnt/)
- https://bafybeifz7lwau4w4z7awqjzujhgnff4lpwxrj533xk3n6skzpjmvzpyhvi.ipfs.dweb.link/
- [ipfs://Qmare3scA791vEczmDbddpWRgmipd2LyBeHGoV53RzqJWd/](ipfs://Qmare3scA791vEczmDbddpWRgmipd2LyBeHGoV53RzqJWd/)
## 5.79.0 (2025-04-16)
### Features
* **web:** [EW] add EW redux state and Recently Signed In Modal (#18035) f78e203
* **web:** [EW] add ExternallyConnectableExtension dynamic config to select which extension the web app will communicate with (#18226) 211a6f8
* **web:** [EW] Add new passkeys to wallet (#14816) a06b597
* **web:** [EW] Be able to delete passkeys (#14817) 53cf094
* **web:** [EW] Modify Sign In Connector (#17668) eb6e89f
* **web:** add apr section to position page (#18078) 328c45a
* **web:** add low network native balance warning for send (#18248) 1eb12a9
* **web:** add username to EW registration (#18084) 5ac58a5
* **web:** allow Low network token balance warning to show for interface (#18102) d756982
* **web:** lp incentive position card updates (#18044) d50e225
* **web:** update positions page with lp incentive boost treatments (#18026) 4211bdc
### 5.79.1 (2025-04-17)
### Bug Fixes
* **web:** fixing arb v3 (#18421) (#18503) 6d6599f
* **web:** handle async token0 or token1 in create context (#18395) ad71e5e
* **web:** hotfix staging fix safari dropdown (#18468) b19c84c
* **web:** move to 1 worker and fix wallet connection (#18348) c38af7e
* **web:** only use mainnet in legacy searchbardropdown (#17966) de03a5d
* **web:** tooltip on hover tamagui bug (#18349) 4c9c8aa
* **web:** web staging builds (#18402) 8aff715
### Continuous Integration
* **web:** update sitemaps 7d9688f
### Code Refactoring
* **web:** kill multicall (#15064) ef6c894
* **web:** move x-specifics to getUniswapXSwapTxAndGasInfo (#18180) 35560f7
* **web:** rm unused indicativeTrade field from swapTxAndGasInfo (#18177) 3161013
* **web:** rm useMultipleContractSingleData in legacy v2 hook (#15062) ab7b73e
* **web:** rm useMultipleContractSingleData in usePools (#15063) 2dba888
* **web:** rm useMultipleContractSingleData in useV2Pairs (#15061) 7549b71
* **web:** rm useMultipleContractSingleData usage in useCurrencyBalance (#15059) 11995d0
* **web:** v4 0 slippage at max (#18588) 07180fd
web/5.79.0
\ No newline at end of file
web/5.79.1
\ No newline at end of file
......@@ -18,6 +18,8 @@ import {
import { toSupportedChainId } from 'uniswap/src/features/chains/utils'
import { CurrencyInfo } from 'uniswap/src/features/dataApi/types'
import { useTransactionGasFee, useUSDCurrencyAmountOfGasFee } from 'uniswap/src/features/gas/hooks'
import { FeatureFlags } from 'uniswap/src/features/gating/flags'
import { useFeatureFlag } from 'uniswap/src/features/gating/hooks'
import { useCurrencyInfo } from 'uniswap/src/features/tokens/useCurrencyInfo'
import {
IncreasePositionTxAndGasInfo,
......@@ -48,6 +50,7 @@ export function IncreaseLiquidityTxContextProvider({ children }: PropsWithChildr
const { derivedIncreaseLiquidityInfo, increaseLiquidityState, currentTransactionStep } = useIncreaseLiquidityContext()
const { customDeadline, customSlippageTolerance } = useTransactionSettingsContext()
const [hasIncreaseErrorResponse, setHasIncreaseErrorResponse] = useState(false)
const v4ZeroSlippageEnabled = useFeatureFlag(FeatureFlags.V40Slippage)
const { currencyAmounts, error } = derivedIncreaseLiquidityInfo
const { exactField } = increaseLiquidityState
......@@ -141,6 +144,10 @@ export function IncreaseLiquidityTxContextProvider({ children }: PropsWithChildr
exactField === PositionField.TOKEN0 ? [amount0, amount1] : [amount1, amount0]
const independentToken = exactField === PositionField.TOKEN0 ? IndependentToken.TOKEN_0 : IndependentToken.TOKEN_1
// stopgap measure to prevent overslippage on V4 pools
// TODO: remove this when we can set an upper limit on maxAmounts on protocol level
const forceV4ZeroSlippage = v4ZeroSlippageEnabled && positionInfo.version === ProtocolVersion.V4
return {
simulateTransaction: !approvalsNeeded,
protocol: apiProtocolItems,
......@@ -161,9 +168,17 @@ export function IncreaseLiquidityTxContextProvider({ children }: PropsWithChildr
hooks: positionInfo.v4hook,
},
},
slippageTolerance: customSlippageTolerance,
slippageTolerance: forceV4ZeroSlippage ? 0 : customSlippageTolerance,
}
}, [account, positionInfo, currencyAmounts, approvalsNeeded, customSlippageTolerance, exactField])
}, [
account,
positionInfo,
currencyAmounts,
approvalsNeeded,
customSlippageTolerance,
exactField,
v4ZeroSlippageEnabled,
])
const currency0Info = useCurrencyInfo(currencyId(positionInfo?.currency0Amount.currency))
const currency1Info = useCurrencyInfo(currencyId(positionInfo?.currency1Amount.currency))
......
import { ProtocolVersion } from '@uniswap/client-pools/dist/pools/v1/types_pb'
import { FeeTierSearchModal } from 'components/Liquidity/FeeTierSearchModal'
import { useCreatePositionDependentAmountFallback } from 'components/Liquidity/hooks/useDependentAmountFallback'
import { DepositState } from 'components/Liquidity/types'
......@@ -37,6 +38,8 @@ import { useCheckLpApprovalQuery } from 'uniswap/src/data/apiClients/tradingApi/
import { useCreateLpPositionCalldataQuery } from 'uniswap/src/data/apiClients/tradingApi/useCreateLpPositionCalldataQuery'
import { toSupportedChainId } from 'uniswap/src/features/chains/utils'
import { useTransactionGasFee, useUSDCurrencyAmountOfGasFee } from 'uniswap/src/features/gas/hooks'
import { FeatureFlags } from 'uniswap/src/features/gating/flags'
import { useFeatureFlag } from 'uniswap/src/features/gating/hooks'
import { getErrorMessageToDisplay, parseErrorMessageTitle } from 'uniswap/src/features/transactions/liquidity/utils'
import { useTransactionSettingsContext } from 'uniswap/src/features/transactions/settings/contexts/TransactionSettingsContext'
import { TransactionStep, TransactionStepType } from 'uniswap/src/features/transactions/swap/types/steps'
......@@ -170,6 +173,7 @@ export function CreateTxContextProvider({ children }: { children: React.ReactNod
const { derivedDepositInfo, depositState } = useDepositContext()
const { priceRangeState, derivedPriceRangeInfo } = usePriceRangeContext()
const swapSettings = useTransactionSettingsContext()
const v4ZeroSlippageEnabled = useFeatureFlag(FeatureFlags.V40Slippage)
const hasError = Boolean(derivedDepositInfo.error)
const [hasCreateErrorResponse, setHasCreateErrorResponse] = useState(false)
......@@ -215,6 +219,10 @@ export function CreateTxContextProvider({ children }: { children: React.ReactNod
approvalCalldata?.gasFeeToken1Approval,
)
// stopgap measure to prevent overslippage on V4 pools
// TODO: remove this when we can set an upper limit on maxAmounts on protocol level
const forceV4ZeroSlippage = v4ZeroSlippageEnabled && derivedPositionInfo.protocolVersion === ProtocolVersion.V4
const createCalldataQueryParams = useMemo(() => {
return generateCreateCalldataQueryParams({
account,
......@@ -225,6 +233,7 @@ export function CreateTxContextProvider({ children }: { children: React.ReactNod
derivedPriceRangeInfo,
derivedDepositInfo,
independentField: depositState.exactField,
slippageTolerance: forceV4ZeroSlippage ? 0 : undefined,
})
}, [
account,
......@@ -235,6 +244,7 @@ export function CreateTxContextProvider({ children }: { children: React.ReactNod
positionState,
priceRangeState,
depositState.exactField,
forceV4ZeroSlippage,
])
const isUserCommittedToCreate =
......
......@@ -1004,6 +1004,7 @@ export function generateCreateCalldataQueryParams({
derivedPriceRangeInfo,
derivedDepositInfo,
independentField,
slippageTolerance,
}: {
account?: AccountMeta
approvalCalldata?: CheckApprovalLPResponse
......@@ -1013,6 +1014,7 @@ export function generateCreateCalldataQueryParams({
derivedPriceRangeInfo: PriceRangeInfo
derivedDepositInfo: DepositInfo
independentField: PositionField
slippageTolerance?: number
}): CreateLPPositionRequest | undefined {
const apiProtocolItems = getProtocolItems(positionState.protocolVersion)
const currencies = derivedPositionInfo.currencies
......@@ -1065,6 +1067,7 @@ export function generateCreateCalldataQueryParams({
independentAmount: independentAmount?.quotient.toString(),
independentToken,
defaultDependentAmount: dependentAmount?.quotient.toString(),
slippageTolerance,
position: {
pool: {
token0: getCurrencyAddressForTradingApi(currencyAmounts[token0Index]?.currency),
......@@ -1123,6 +1126,7 @@ export function generateCreateCalldataQueryParams({
independentToken,
initialDependentAmount: initialPrice && dependentAmount?.quotient?.toString(), // only set this if there is an initialPrice
initialPrice,
slippageTolerance,
position: {
tickLower,
tickUpper,
......
......@@ -64,6 +64,7 @@ export enum FeatureFlags {
UniswapXSyntheticQuote,
UniswapXv2,
UniversalSwap,
V40Slippage,
}
/* eslint-enable @typescript-eslint/prefer-enum-initializers */
......@@ -111,6 +112,7 @@ export const WEB_FEATURE_FLAG_NAMES = new Map<FeatureFlags, string>([
[FeatureFlags.UniswapXSyntheticQuote, 'uniswapx_synthetic_quote'],
[FeatureFlags.UniswapXv2, 'uniswapx_v2'],
[FeatureFlags.UniversalSwap, 'universal_swap'],
[FeatureFlags.V40Slippage, 'v4_0_slippage'],
])
// These names must match the gate name on statsig
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment