diff --git a/frontend/components/dashboard/ScanTerminalDashboard.tsx b/frontend/components/dashboard/ScanTerminalDashboard.tsx index fcf3326b..eabc4195 100644 --- a/frontend/components/dashboard/ScanTerminalDashboard.tsx +++ b/frontend/components/dashboard/ScanTerminalDashboard.tsx @@ -886,8 +886,17 @@ function PolyWeatherTerminal({ }, [isEn]); const filteredRegionRows = useMemo(() => { - if (selectedRegionKey === "all") return rows; - return rows.filter((row) => String(row.trading_region).toLowerCase() === selectedRegionKey); + const byRegion = selectedRegionKey === "all" + ? rows + : rows.filter((row) => String(row.trading_region).toLowerCase() === selectedRegionKey); + // Deduplicate: one row per city, keep the first (highest score from sorting) + const seen = new Set(); + return byRegion.filter((row) => { + const key = (row.city || "").toLowerCase(); + if (seen.has(key)) return false; + seen.add(key); + return true; + }); }, [rows, selectedRegionKey]); const watchRows = useMemo(() => { diff --git a/frontend/components/dashboard/scan-terminal/GroupedMarketTable.tsx b/frontend/components/dashboard/scan-terminal/GroupedMarketTable.tsx index 43917263..307ca0dd 100644 --- a/frontend/components/dashboard/scan-terminal/GroupedMarketTable.tsx +++ b/frontend/components/dashboard/scan-terminal/GroupedMarketTable.tsx @@ -2,7 +2,7 @@ import { Fragment, useState } from "react"; import clsx from "clsx"; -import { ChevronDown, ChevronRight } from "lucide-react"; +import { ChevronDown, ChevronRight, ExternalLink } from "lucide-react"; import type { ScanOpportunityRow } from "@/lib/dashboard-types"; import { type ContinentGroup, @@ -125,7 +125,21 @@ export function GroupedMarketTable({ {temp(row.signed_gap ?? row.gap_to_target, row.temp_symbol)} - {formatPrice(row.midpoint, row.ask, row.bid)} + {row.market_url ? ( + e.stopPropagation()} + className="inline-flex items-center gap-0.5 text-blue-600 hover:text-blue-800 hover:underline" + title={row.market_question || "Polymarket"} + > + {formatPrice(row.midpoint, row.ask, row.bid)} + + + ) : ( + formatPrice(row.midpoint, row.ask, row.bid) + )} {pct(row.edge_percent)} diff --git a/frontend/components/dashboard/scan-terminal/Panel.tsx b/frontend/components/dashboard/scan-terminal/Panel.tsx index 0ba1c92e..397f9d54 100644 --- a/frontend/components/dashboard/scan-terminal/Panel.tsx +++ b/frontend/components/dashboard/scan-terminal/Panel.tsx @@ -27,9 +27,6 @@ export function Panel({
{actions} - - ↗ -