vestige/apps/dashboard/src/lib
Sam Valladares 7a3d30914d feat(dashboard): surface Heartbeat uptime_secs in the sidebar footer
The Heartbeat event has shipped since v2.0.5 carrying uptime_secs,
memory_count, avg_retention, suppressed_count. Three of the four were
already wired into the sidebar footer (memory count, retention,
forgetting indicator). uptime_secs was the one field that fired every
30 seconds into a silent void.

Added:
- `uptimeSeconds` derived store + `formatUptime(secs)` helper in
  websocket.ts. The helper picks the two most significant units so the
  sidebar stays tight: "3d 4h" instead of "3d 4h 22m 17s", "18m 43s"
  for shorter runs, "47s" on a fresh boot.
- New line in the sidebar status footer between retention and the
  ForgettingIndicator: "up 3d 4h" with a hover tooltip ("MCP server
  uptime") for discoverability. Hidden at sub-lg breakpoints to match
  the existing responsive pattern of the surrounding text.

Zero backend work — the data was already on the wire. This is pure
UI gap closure: four of four Heartbeat fields now visible.

svelte-check clean (580 files, 0 errors).
2026-04-19 20:33:20 -05:00
..
components feat(v2.0.5): Intentional Amnesia — active forgetting via top-down inhibitory control 2026-04-14 17:30:30 -05:00
graph feat(dashboard): wire 6 graph event handlers (suppress + core cognitive) 2026-04-18 18:33:31 -05:00
stores feat(dashboard): surface Heartbeat uptime_secs in the sidebar footer 2026-04-19 20:33:20 -05:00
types feat(dashboard): expose suppress + unsuppress HTTP endpoints + memories UI button 2026-04-19 20:31:44 -05:00