diff --git a/packages/k8s-ui/src/components/topology/TopologyFilterSidebar.tsx b/packages/k8s-ui/src/components/topology/TopologyFilterSidebar.tsx
index 799b63d1b..f70ec85e0 100644
--- a/packages/k8s-ui/src/components/topology/TopologyFilterSidebar.tsx
+++ b/packages/k8s-ui/src/components/topology/TopologyFilterSidebar.tsx
@@ -386,9 +386,31 @@ export const TopologyFilterSidebar = memo(function TopologyFilterSidebar({
{/* Footer stats */}
-
- Showing {availableKinds.filter(k => visibleKinds.has(k.kind)).reduce((sum, k) => sum + (kindCounts.get(k.kind) || 0), 0)} of {nodes.length} resources
-
+ {(() => {
+ // Total and visible both sum over availableKinds (the kinds the user
+ // can filter). nodes.length would include the synthetic Internet node,
+ // which isn't a filterable kind, so the two wouldn't reconcile and a
+ // "filtered" count would show even with nothing hidden.
+ const sumKinds = (ks: typeof availableKinds) =>
+ ks.reduce((sum, k) => sum + (kindCounts.get(k.kind) || 0), 0)
+ const total = sumKinds(availableKinds)
+ const visible = sumKinds(availableKinds.filter(k => visibleKinds.has(k.kind)))
+ const hidden = total - visible
+ const filteredOutKinds = availableKinds.filter(k => !visibleKinds.has(k.kind) && (kindCounts.get(k.kind) || 0) > 0)
+ return (
+
0
+ ? `Hidden by kind filter: ${filteredOutKinds.map(k => `${kindCounts.get(k.kind)} ${k.kind}`).join(', ')}`
+ : undefined}
+ >
+ Showing {visible} of {total} resources
+ {hidden > 0 && (
+ ยท {hidden} filtered
+ )}
+
+ )
+ })()}
)
diff --git a/web/src/components/helm/ChartBrowser.tsx b/web/src/components/helm/ChartBrowser.tsx
index 9b9fa424c..3a3477786 100644
--- a/web/src/components/helm/ChartBrowser.tsx
+++ b/web/src/components/helm/ChartBrowser.tsx
@@ -476,7 +476,9 @@ function LocalChartCard({ chart, onSelect }: LocalChartCardProps) {
)}