feat: home dashboard and Settings Hub polish (#506)

* feat(dashboard): drop CPU column and relative timestamp from Stack Health and status bar

The Stack Health table's CPU column duplicated data already surfaced in
the top ResourceGauges and the CPU Usage historical chart. The health
status bar's 'just now' timestamp was cosmetic: no consumer relied on
lastUpdated state for polling, staleness detection, or conditional
rendering. Removing both tightens the dashboard and eliminates a dead
prop chain through useDashboardData.

* refactor: remove dead admin_email field from setup flow

The Setup form captured an admin email under 'Used for license recovery.
Never shared with third parties.' but the value was written to
global_settings and read nowhere: no license recovery, SMTP, or support
contact flow consumed it. Rather than building UI on top of the dead
field, delete the input, the payload key, and the backend persistence.
Any orphaned row from prior setups is harmless and the frontend ignores
unknown settings keys.

* feat(settings): use Radix ScrollArea with per-section scroll memory

Settings Hub used a native-scroll div that snapped to the top every time
the user switched subsections and exposed the default browser scrollbar.
Wrap the nav and content panes with the shadcn ScrollArea (Radix under
the hood, type='hover') and expose a viewportRef so the modal can stash
each section's scrollTop in a ref and restore it via useLayoutEffect on
switch. Style the thumb with translucent foreground tokens so it reads
as glass against popovers and dialogs. Replaces a hand-rolled scroll
hook and ad-hoc CSS utility.
This commit is contained in:
Anso
2026-04-11 21:46:14 -04:00
committed by SaelixCode
parent 4aa49f371d
commit 622c1f9262
10 changed files with 59 additions and 79 deletions
+2 -3
View File
@@ -19,7 +19,7 @@ The top bar provides an at-a-glance health assessment for the active node. Sench
| **Degraded** | At least one resource is above 80%, or there are unread error alerts. |
| **Critical** | At least one resource is above 90%, or there are exited containers with unread errors. |
The bar also shows the active node name, the number of running containers, the current alert count, and a relative timestamp for the last data refresh.
The bar also shows the active node name, the number of running containers, and the current alert count.
## Resource gauges
@@ -43,10 +43,9 @@ A table listing every stack in your `COMPOSE_DIR` with live status and resource
|--------|-------------|
| **Stack** | Stack name (derived from the directory name) |
| **Status** | `UP` (running) or `DN` (exited) |
| **CPU** | Aggregate CPU usage across all containers in the stack, normalized over host cores |
| **Memory** | Total memory allocated by the stack's containers |
Click any row to navigate directly to that stack's editor. Stacks are sorted with running stacks first, then alphabetically. If you have more than 8 stacks, the table paginates automatically.
Click any row to navigate directly to that stack's editor. Stacks are sorted with running stacks first, then alphabetically. If you have more than 8 stacks, the table paginates automatically. For fleet-wide CPU usage, see the **CPU** resource gauge card at the top of the dashboard and the **CPU Usage** historical chart below the table.
## Historical metrics charts