feat(explorer): mission-control resilience, ops token labels, and CI validate
Some checks failed
Deploy Explorer Live / deploy (push) Failing after 14s
Validate Explorer / frontend (push) Successful in 1m34s
Validate Explorer / smoke-e2e (push) Failing after 1m26s

Add SSE reconnect with backoff, fallback REST polling, visibility-aware refresh,
extended token-list labels on operations pages, validate-on-pr workflow, and smoke coverage.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
defiQUG
2026-05-22 20:40:11 -07:00
parent e3ec87c324
commit 7a7dfca221
17 changed files with 268 additions and 42 deletions

View File

@@ -32,6 +32,7 @@ import {
HOME_PRICE_FEED_REFRESH_MS,
resolveHomePriceFeedAddresses,
} from '@/utils/featuredTokens'
import { createVisibilityAwarePoller } from '@/utils/visibilityRefresh'
type HomeStats = ExplorerStats
@@ -180,14 +181,11 @@ export default function Home({
}, [chainId])
useEffect(() => {
loadDashboard()
const timer = window.setInterval(() => {
void loadDashboard()
}, HOME_DASHBOARD_REFRESH_MS)
return () => {
window.clearInterval(timer)
}
void loadDashboard()
return createVisibilityAwarePoller({
intervalMs: HOME_DASHBOARD_REFRESH_MS,
task: loadDashboard,
})
}, [loadDashboard])
useEffect(() => {
@@ -210,7 +208,6 @@ export default function Home({
useEffect(() => {
let cancelled = false
let timer: ReturnType<typeof setTimeout> | null = null
const refreshFeaturedPrices = async () => {
try {
@@ -221,20 +218,18 @@ export default function Home({
if (!cancelled && process.env.NODE_ENV !== 'production') {
console.warn('Failed to load featured token prices:', error)
}
} finally {
if (!cancelled) {
timer = setTimeout(() => {
void refreshFeaturedPrices()
}, HOME_PRICE_FEED_REFRESH_MS)
}
}
}
void refreshFeaturedPrices()
const stop = createVisibilityAwarePoller({
intervalMs: HOME_PRICE_FEED_REFRESH_MS,
task: refreshFeaturedPrices,
})
return () => {
cancelled = true
if (timer) clearTimeout(timer)
stop()
}
}, [loadFeaturedPrices])
@@ -307,6 +302,31 @@ export default function Home({
}
}, [])
useEffect(() => {
if (relayFeedState !== 'fallback') return
let cancelled = false
const refreshSnapshot = async () => {
try {
const status = await missionControlApi.getBridgeStatus()
if (!cancelled) {
setBridgeStatus(status)
setRelaySummary(summarizeMissionControlRelay(status))
}
} catch (error) {
if (!cancelled && process.env.NODE_ENV !== 'production') {
console.warn('Failed to refresh mission control snapshot:', error)
}
}
}
return createVisibilityAwarePoller({
intervalMs: HOME_DASHBOARD_REFRESH_MS,
task: refreshSnapshot,
})
}, [relayFeedState])
const relayToneClasses =
relaySummary?.tone === 'danger'
? 'border-red-200 bg-red-50 text-red-900 dark:border-red-900/60 dark:bg-red-950/40 dark:text-red-100'