Skip to content

Review fixes: Trigger Radar coverage, find-proxy hardening, screener perf, feed 404, font#1

Open
gorillachimps wants to merge 5 commits into
mainfrom
fix/review-2026-06-01-quickwins
Open

Review fixes: Trigger Radar coverage, find-proxy hardening, screener perf, feed 404, font#1
gorillachimps wants to merge 5 commits into
mainfrom
fix/review-2026-06-01-quickwins

Conversation

@gorillachimps
Copy link
Copy Markdown
Owner

Quick-win cluster from the 2026-06-01 review (full report: REVIEW_2026-06-01.md). Read-only audit → fixes; no behavior change beyond the findings. tsc clean; verified against next dev + browser. Not yet deployed.

  • Trigger Radar (H1/M3/L3): evaluate armed markets by id via a new /api/markets?ids= branch instead of the volume-ranked top-500 — alerts armed from a market-detail page on a low-volume market now actually fire (the button used to show "Alerting" and silently never fire). Drops the app-wide 60s top-500 refetch. Reconcile the fired-set against removed alerts (bounded + re-armable).
  • find-proxy (M2/L4): rate-limit on platform x-real-ip (was the spoofable leftmost X-Forwarded-For); bound the hits map.
  • Screener perf (H2/M4/M5/H3): coalesce live-mid updates to one flush/~800ms (was one setState per WS message → full re-render + re-sort); prune rotated-out mids; memoize the live cell. Verified in-browser: mids still tick (53.95%→54.05% over 6s), zero console errors.
  • Follow feed (M1/M10/L1/L15): resolve each trade's token — Auspex markets link in-app, others link out to Polymarket (no more /markets/[slug] 404); show Copy only where it works; row wraps on mobile.
  • Font: self-host Geist via the geist package (no build-time network) — the ss01/cv11/tabular-nums type system was silently falling back to system-ui in prod. Verified rendering as GeistSans.

🤖 Generated with Claude Code

gorillachimps and others added 5 commits June 1, 2026 19:40
The watcher fetched /api/markets?limit=500 (volume-ranked), so an alert armed from a market-detail page on a market outside the top 500 silently never fired while the button still showed Alerting. Now fetches exactly the armed markets via a new /api/markets?ids= branch (getMarketsByIds) -- any snapshot market is covered and the app-wide 60s top-500 refetch is gone. Also reconcile the persisted fired-set against removed alerts so it stays bounded and re-armed alerts can fire again. Findings H1, M3, L3.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The per-IP limit keyed on the leftmost X-Forwarded-For entry, which is client-controlled and trivially spoofable to dodge the Etherscan-quota guard. Prefer x-real-ip (Vercel-set), fall back to the closest-trusted XFF hop. Also bound the hits map (prune expired windows + cap) so a churn of distinct IPs cannot grow it unbounded on a warm instance. Findings M2, L4.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
useLiveMidMap called setMids on every WS book/price-change message, forcing a full screener re-render + react-table re-sort per message; and never pruned mids for tokens that rotated out of the subscribed set (stale frozen values + unbounded Map growth). Stage mid changes and flush once per ~800ms (one re-render per burst; live cadence unchanged -- verified mids still tick in-browser), and prune on subscription change. Memoize PmBar, the live cell. Findings H2, M4, M5, partial H3.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copy-this-fill and the title link pointed at /markets/[slug] for every followed-wallet trade, 404-ing whenever the wallet traded a non-crypto market absent from Auspex's snapshot, and the Copy button silently no-op'd. Resolve each trade's token via useMarketLookup: crypto markets keep the in-app link + Copy; everything else links out to Polymarket. Also let the row wrap on mobile so the title is not crushed. Findings M1, M10, L1, L15.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
next/font/google was disabled to avoid a build-time network fetch, so the ss01/cv11/tabular-nums type system silently fell back to system-ui in production. Adopt the geist package (local next/font assets, no build-time network) and wire GeistSans/GeistMono .variable onto <html>; globals.css already consumes --font-geist-sans/-mono. Verified rendering as GeistSans in-browser.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented Jun 1, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
auspex Ready Ready Preview, Comment Jun 1, 2026 5:23pm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant