ci(release): publish latest release

parent b8c8439e
IPFS hash of the deployment: IPFS hash of the deployment:
- CIDv0: `QmXS4vd18Mi4tKCVNuk1qnB1wyNPN7XRR1iSygxNvnRKiD` - CIDv0: `QmZhPHVskUQR1q2jr5D2AyMkfvkoBtbN95Z3ofUcwyH3Lh`
- CIDv1: `bafybeiehdr3z22tnf5jdnjnsj5kfb7ywjjefa2oyttljiuwjtu6mhocxjy` - CIDv1: `bafybeifiybibt7gtwvbhz4awqe7lzdd5m62cm7mcuriu5eva3zceuov4xy`
The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org). The latest release is always mirrored at [app.uniswap.org](https://app.uniswap.org).
...@@ -10,73 +10,14 @@ You can also access the Uniswap Interface from an IPFS gateway. ...@@ -10,73 +10,14 @@ You can also access the Uniswap Interface from an IPFS gateway.
Your Uniswap settings are never remembered across different URLs. Your Uniswap settings are never remembered across different URLs.
IPFS gateways: IPFS gateways:
- https://bafybeiehdr3z22tnf5jdnjnsj5kfb7ywjjefa2oyttljiuwjtu6mhocxjy.ipfs.dweb.link/ - https://bafybeifiybibt7gtwvbhz4awqe7lzdd5m62cm7mcuriu5eva3zceuov4xy.ipfs.dweb.link/
- [ipfs://QmXS4vd18Mi4tKCVNuk1qnB1wyNPN7XRR1iSygxNvnRKiD/](ipfs://QmXS4vd18Mi4tKCVNuk1qnB1wyNPN7XRR1iSygxNvnRKiD/) - [ipfs://QmZhPHVskUQR1q2jr5D2AyMkfvkoBtbN95Z3ofUcwyH3Lh/](ipfs://QmZhPHVskUQR1q2jr5D2AyMkfvkoBtbN95Z3ofUcwyH3Lh/)
## 5.86.0 (2025-05-21) ### 5.86.1 (2025-05-23)
### Features
* **web:** [lp] prefill hook and fee tier (#19820) 09bd7d7
* **web:** defer limit/buy/send form renders (#19445) e464d28
* **web:** defer render of mini portfolio (#19442) 9ce97c7
* **web:** defer top level Updaters (#19444) 4e57ea2
* **web:** gracefully handle upgrade prompt rejection (#19753) cf8beed
* **web:** lazy-import redux store in async code (#19441) 1ba4faa
* **web:** re sign in to EW when session ends (#19670) 8d003c0
* **web:** show backup EW card (#19317) 89f2297
* **web:** skip quotes for hidden positions, stabilize refs (#19755) 165b56d
* **web:** update animation direction for get started modal (#19717) 932f082
* **web:** virtualize positions list (#19754) 2460066
* **web:** vite support (#19713) 1cbf6ea
### Bug Fixes ### Bug Fixes
* **web:** [lp] improve liquiditySaga error logging (#19546) f7857cf * **web:** hotfix prod cb 5792 patch (#20096) 11ba54c
* **web:** add custom range icon color (#19564) 3b8b585
* **web:** Add formAction None to CSP (#19333) d9ef80b
* **web:** add retries to the getstarted e2e test (#19513) 6fa8bd6
* **web:** add useInitialHeight prop to fix enter animation on liquidity modals (#19530) a3f0063
* **web:** Adds color extraction to token detail page charts (#19300) b2b0289
* **web:** allow press on disabled web3-status-connected (#19534) 87d8aac
* **web:** dedupe and cache wallet capabilities calls (#19739) 729472d
* **web:** delete unused GQL queries (#19506) 6eca1a3
* **web:** do not double stringify list authenticator credential (#19715) 25d9d16
* **web:** fix color of UniswapX gas fee tooltip (#19563) 5bb793e
* **web:** fix mobile status overflow on positions (#19350) ea732a4
* **web:** fix web pool index virtualized list dynamic heights (#20074) 9af7388
* **web:** improve LP incentive tooltip responsiveness (#19550) 563b9d4
* **web:** incorrect bridge card display for wrong network (#19541) 593c2bd
* **web:** only support batch swaps on supported status (#19565) c81568c
* **web:** REVERT "remove async imports in LanguageProvider and amplitude" (#19738) 081bfaa
* **web:** settings tooltips (#20059) (#20073) 4ef1352
* **web:** staging web update unwrap tx on smart wallet accounts (#20025) ac4f3a6
* **web:** temp remove disabled prop from Button (#19676) 41c2e61
* **web:** update EW endpoint for beta (#19519) b405d89
* **web:** update MoreHorizontal icon size (#19558) 57c4372
* **web:** use liquidity info badges on pool details page (#19809) 33ce214
* **web): Revert "feat(web:** defer render of mini portfolio (#19442) - staging (#19987) 1e04adb
### Continuous Integration
* **web:** update sitemaps 277df80
### Code Refactoring
* **web:** rename graphql folder (#19712) 06730e1
* **web:** use useScrollbarStyles from ui and remove web ScrollBarStyles (#19516) 6f0b63f
### Tests
* **web:** [errors] add wait for timeout after swap settings click (#19511) 6412e2b
* **web:** delete cypress fees test (#19537) 26a8096
* **web:** handle smart wallet delegations (#19677) 9824dec
* **web:** playwright amplitude extension and logging test (#19536) b234ac6
* **web:** token selector sections should be visible (#19529) df98029
web/5.86.0 web/5.86.1
\ No newline at end of file \ No newline at end of file
...@@ -54,6 +54,37 @@ function finalizeBatch(params: { ...@@ -54,6 +54,37 @@ function finalizeBatch(params: {
delete FAILURE_COUNT_MAP[transaction.batchInfo.batchId] delete FAILURE_COUNT_MAP[transaction.batchInfo.batchId]
} }
/**
* TODO(WEB-7872):Temporary parsing logic for Coinbase Smart Wallet responses that do not yet conform
* to the EIP-5972 spec. Once the coinbase smart wallet is updated, this method (and its caller) can be
* deleted.
*/
function handleFallbackParsingForCoinbase(params: {
result: GetCallsResult
transaction: PendingBatchDetails
onActivityUpdate: OnActivityUpdate
}) {
const { result, transaction, onActivityUpdate } = params
// We only care about confirmed results. "PENDING" responses are ignored so the
// next poll can re-check them later.
if (result.status !== 'CONFIRMED') {
return
}
const receipt = result.receipts?.[0]
if (!receipt) {
throw new Error(
`${transaction.batchInfo.connectorId ?? 'wallet'} returned CONFIRMED with no receipt (legacy Coinbase path)`,
)
}
const hash = receipt.transactionHash
const updatedStatus = receipt.status === 1 ? TransactionStatus.Confirmed : TransactionStatus.Failed
finalizeBatch({ transaction, onActivityUpdate, hash, status: updatedStatus })
}
export function usePollPendingBatchTransactions(onActivityUpdate: OnActivityUpdate) { export function usePollPendingBatchTransactions(onActivityUpdate: OnActivityUpdate) {
const pendingBatchTransactions = usePendingBatches() const pendingBatchTransactions = usePendingBatches()
const walletProvider = useEthersWeb3Provider() const walletProvider = useEthersWeb3Provider()
...@@ -62,6 +93,13 @@ export function usePollPendingBatchTransactions(onActivityUpdate: OnActivityUpda ...@@ -62,6 +93,13 @@ export function usePollPendingBatchTransactions(onActivityUpdate: OnActivityUpda
for (const transaction of pendingBatchTransactions) { for (const transaction of pendingBatchTransactions) {
try { try {
const result = await getCallsStatus({ provider, batchId: transaction.batchInfo.batchId }) const result = await getCallsStatus({ provider, batchId: transaction.batchInfo.batchId })
// TODO(WEB-7872) If Coinbase smart wallet returns a string status, handle via fallback helper.
if (typeof result?.status === 'string') {
handleFallbackParsingForCoinbase({ result, transaction, onActivityUpdate })
continue
}
const receipt = result?.receipts?.[0] const receipt = result?.receipts?.[0]
if (result?.status === 200) { if (result?.status === 200) {
if (!receipt) { if (!receipt) {
...@@ -109,7 +147,8 @@ type GetCallsResult = { ...@@ -109,7 +147,8 @@ type GetCallsResult = {
version: string version: string
id: `0x${string}` id: `0x${string}`
chainId: `0x${string}` chainId: `0x${string}`
status: number // See "Status Codes" // TODO(WEB-7872): Remove temporary support for v1 of atomic batching schema for coinbase wallet (CONFIRMED | PENDING)
status: number | 'CONFIRMED' | 'PENDING'
atomic: boolean atomic: boolean
receipts?: { receipts?: {
logs: { logs: {
...@@ -117,7 +156,8 @@ type GetCallsResult = { ...@@ -117,7 +156,8 @@ type GetCallsResult = {
data: `0x${string}` data: `0x${string}`
topics: `0x${string}`[] topics: `0x${string}`[]
}[] }[]
status: `0x${string}` // Hex 1 or 0 for success or failure, respectively // TODO(WEB-7872): Remove temporary support for v1 of atomic batching schema for coinbase wallet (0 | 1)
status: `0x${string}` | 0 | 1
blockHash: `0x${string}` blockHash: `0x${string}`
blockNumber: `0x${string}` blockNumber: `0x${string}`
gasUsed: `0x${string}` gasUsed: `0x${string}`
......
...@@ -28,7 +28,12 @@ async function sendCalls(params: { ...@@ -28,7 +28,12 @@ async function sendCalls(params: {
{ version: CURRENT_SEND_CALLS_VERSION, calls, from, chainId, atomicRequired: true }, { version: CURRENT_SEND_CALLS_VERSION, calls, from, chainId, atomicRequired: true },
]) ])
return result.id // TODO(WEB-7872): Remove temporary support for v1 of atomic batching schema for coinbase wallet (remove case below)
if (typeof result === 'string') {
return result
}
return result.id as string
} }
export function* handleAtomicSendCalls( export function* handleAtomicSendCalls(
......
...@@ -53,7 +53,9 @@ enum AtomicBatchingStatus { ...@@ -53,7 +53,9 @@ enum AtomicBatchingStatus {
export function isAtomicBatchingSupported(chainCapabilities: ChainCapabilities): boolean { export function isAtomicBatchingSupported(chainCapabilities: ChainCapabilities): boolean {
return ( return (
chainCapabilities?.atomic?.status === AtomicBatchingStatus.Supported || chainCapabilities?.atomic?.status === AtomicBatchingStatus.Supported ||
chainCapabilities?.atomic?.status === AtomicBatchingStatus.Ready chainCapabilities?.atomic?.status === AtomicBatchingStatus.Ready ||
// TODO(WEB-7872): Remove temporary support for v1 of atomic batching schema for coinbase wallet (remove line below)
chainCapabilities?.atomicBatch?.supported === true
) )
} }
......
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