From 699ec3848016aad31db33eecc0079645f24f83b6 Mon Sep 17 00:00:00 2001 From: Offending Commit Date: Wed, 3 Jun 2026 17:03:10 -0500 Subject: [PATCH] fix(web): reset serverFilter when the selected instance is removed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the user filters to a specific server and that instance is then deleted (e.g. from Settings), shownInstances becomes [] — empty table, no message. A useEffect resets the filter to ALL_SERVERS whenever the selected ID disappears from the instances list. --- packages/web/src/components/dashboard/Dashboard.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/web/src/components/dashboard/Dashboard.tsx b/packages/web/src/components/dashboard/Dashboard.tsx index ac72827..b4d9bed 100644 --- a/packages/web/src/components/dashboard/Dashboard.tsx +++ b/packages/web/src/components/dashboard/Dashboard.tsx @@ -1,7 +1,7 @@ import { Link, useNavigate } from "@tanstack/react-router"; import { motion } from "framer-motion"; import { Boxes, LayoutDashboard, Network, Settings as SettingsIcon } from "lucide-react"; -import { useCallback, useMemo, useState } from "react"; +import { useCallback, useEffect, useMemo, useState } from "react"; import { computeFleetAggregates, DEFAULT_ROW_METRICS, @@ -29,6 +29,12 @@ export function Dashboard() { const [serverFilter, setServerFilter] = useState(ALL_SERVERS); const [metricsById, setMetricsById] = useState>({}); + useEffect(() => { + if (serverFilter !== ALL_SERVERS && !instances.find((i) => i.id === serverFilter)) { + setServerFilter(ALL_SERVERS); + } + }, [instances, serverFilter]); + const onMetrics = useCallback((id: string, m: FleetRowMetrics) => { setMetricsById((prev) => ({ ...prev, [id]: m })); }, []);