From 28ea610e81f0191c5b7044bf238a0a0954c42dd1 Mon Sep 17 00:00:00 2001 From: Anso Date: Fri, 5 Jun 2026 21:53:14 -0400 Subject: [PATCH] refactor(masthead): remove stat-tile hover tooltips (#1319) Drop the cursor-following hover tooltips from the masthead stat tiles: the RUNNING tile on the Home dashboard (the managed / external / exited breakdown) and the CONTAINERS tile on the Fleet view (the running / total split). Both revert to plain stat tiles, matching the CPU and MEM tiles beside them. The dashboard and fleet docs are updated to match and the orphaned screenshot is removed. --- docs/features/dashboard.mdx | 6 +-- docs/features/fleet-view.mdx | 2 +- docs/images/dashboard/running-tile-hover.png | Bin 30554 -> 0 bytes .../components/dashboard/HealthStatusBar.tsx | 44 +--------------- .../src/components/fleet/FleetMasthead.tsx | 48 +++--------------- 5 files changed, 10 insertions(+), 90 deletions(-) delete mode 100644 docs/images/dashboard/running-tile-hover.png diff --git a/docs/features/dashboard.mdx b/docs/features/dashboard.mdx index 2615161c..dd27e7ba 100644 --- a/docs/features/dashboard.mdx +++ b/docs/features/dashboard.mdx @@ -23,13 +23,9 @@ It carries: - A **pulsing dot** that mirrors the state color: green when nominal, amber when degraded, rose when critical. The dot is solid (no pulse) when Healthy. - A **meta line** in uppercase mono tracking with the active node's name, the number of nodes registered to this Sencho instance, and the time since the last successful poll, for example `LOCAL · 4 NODES · LAST SYNC 1S`. - A **reasons line** that names exactly which signals moved the state away from Healthy, for example `RAM 95% · 18 unread errors`. When the state is Healthy the reasons line reads `All systems nominal`. -- Three quick stat tiles on the right edge of the bar: **RUNNING** (`active/total`), **CPU**, and **MEM**. Hover the **RUNNING** tile to expand a managed / external (and exited, when present) breakdown in a cursor-following tooltip. +- Three quick stat tiles on the right edge of the bar: **RUNNING** (`active/total`), **CPU**, and **MEM**. - An alerts counter pinned to the far right, showing the number of unread notifications next to a bell icon. The icon and count tint amber while at least one alert is unread. - - Status masthead with the RUNNING tile hovered, the cursor-following tooltip showing '15 managed · 1 external' under the masthead values. - - The masthead's CPU stat tile tints amber once host CPU crosses 80% and stays amber even at 90% or higher. The MEM and RUNNING values stay neutral; the reasons line and the gauge strip below are where you read severity. ## Resource gauges diff --git a/docs/features/fleet-view.mdx b/docs/features/fleet-view.mdx index 12c87793..7f152365 100644 --- a/docs/features/fleet-view.mdx +++ b/docs/features/fleet-view.mdx @@ -32,7 +32,7 @@ A single rail summarises the state of every registered node so you can read the |------|---------------| | **CPU** | Average CPU across online nodes, with a sub-line that names the peak node (`peak %`). The value tints amber once average CPU is at or above 80%. | | **MEM** | Total RAM used across online nodes, with `of · %` underneath. | -| **CONTAINERS** | Active running container count across online nodes, with `of total` underneath. Hover the tile to surface a cursor-following tooltip with the running / total split. | +| **CONTAINERS** | Active running container count across online nodes, with `of total` underneath. | - An **alerts indicator** pinned to the far right: a bell icon next to the current critical-node count, with an `alert` / `alerts` mono label. The icon and number tint destructive while the count is above zero. diff --git a/docs/images/dashboard/running-tile-hover.png b/docs/images/dashboard/running-tile-hover.png deleted file mode 100644 index beea6870a7c9c639940f4cd86d255a170eb18494..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30554 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�A28(9ghZB+6*r_@xBNXc-85G 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 XO@mvHV$To!4}`q5id3b9QQ-dou|>j_ diff --git a/frontend/src/components/dashboard/HealthStatusBar.tsx b/frontend/src/components/dashboard/HealthStatusBar.tsx index 31de4e83..58c48a48 100644 --- a/frontend/src/components/dashboard/HealthStatusBar.tsx +++ b/frontend/src/components/dashboard/HealthStatusBar.tsx @@ -1,11 +1,5 @@ import { useEffect, useMemo, useState } from 'react'; import { Bell } from 'lucide-react'; -import { - CursorProvider, - Cursor, - CursorContainer, - CursorFollow, -} from '@/components/animate-ui/primitives/animate/cursor'; import type { Stats, SystemStats, NotificationItem, HealthLevel } from './types'; interface HealthStatusBarProps { @@ -153,43 +147,7 @@ export function HealthStatusBar({ {/* Stats column */}

- - - - - - - - -
-
- - {stats.managed} - managed - - · - - {stats.unmanaged} - external - - {stats.exited > 0 ? ( - <> - · - - {stats.exited} - exited - - - ) : null} -
-
-
-
+ = 80 ? 'warn' : 'value'} divider />
diff --git a/frontend/src/components/fleet/FleetMasthead.tsx b/frontend/src/components/fleet/FleetMasthead.tsx index 5db083bc..d12f9cd5 100644 --- a/frontend/src/components/fleet/FleetMasthead.tsx +++ b/frontend/src/components/fleet/FleetMasthead.tsx @@ -1,12 +1,5 @@ import { useEffect, useMemo, useState } from 'react'; import { Bell } from 'lucide-react'; -import { - CursorProvider, - Cursor, - CursorContainer, - CursorFollow, -} from '@/components/animate-ui/primitives/animate/cursor'; - type FleetHealth = 'healthy' | 'degraded' | 'critical'; interface FleetMastheadProps { @@ -145,40 +138,13 @@ export function FleetMasthead({ tone="value" divider /> - - - - - - - - -
-
- - {activeContainers} - running - - · - - {totalContainers} - total - -
-
-
-
+