Skip to content

feat(dashboard): aggregate /api/dashboard/overview + Hermes-native cards#242

Merged
outsourc-e merged 3 commits into
mainfrom
feat/dashboard-parity-phase-1
May 3, 2026
Merged

feat(dashboard): aggregate /api/dashboard/overview + Hermes-native cards#242
outsourc-e merged 3 commits into
mainfrom
feat/dashboard-parity-phase-1

Conversation

@outsourc-e
Copy link
Copy Markdown
Owner

Summary

Workspace dashboard now mirrors what the native Hermes Agent dashboard at :9120 surfaces, in a single server-aggregated round trip.

New server endpoint GET /api/dashboard/overview proxies six native endpoints in parallel with per-section graceful fallbacks:

  • /api/status \u2192 gateway state + active sessions + platforms
  • /api/cron/jobs \u2192 cron summary
  • /api/plugins/hermes-achievements/* \u2192 achievements ribbon
  • /api/model/info \u2192 model + context + capabilities
  • /api/analytics/usage \u2192 token totals + top models + optional cost

Each slice independently resolves to null if auth/plugin/dashboard isn't available \u2014 vanilla installs still render a usable dashboard.

New cards

  • SystemStatusStrip \u2014 one-line gateway pill + active-agents + warning chip on restart_requested
  • PlatformsCard \u2014 connected platforms with per-platform state pills
  • CronSummaryCard \u2014 scheduled/paused/running counts + next-run countdown, deep link to /jobs
  • AchievementsCard \u2014 3 most recent unlocks with tier badges + modal for full ribbon
  • AnalyticsSummaryCard \u2014 top-3 models by tokens with proportional bars + real cost (replaces the hardcoded $5/M estimate)

Tests

  • 7 new tests for the aggregator covering empty/mixed/full payloads and field-rename quirks (gateway_platforms vs platforms, active_sessions vs active_agents)
  • 31 swarm + dashboard tests passing in total

Aurora release bot added 3 commits May 2, 2026 15:22
Workspace dashboard now mirrors what the native Hermes Agent dashboard at
:9120 surfaces, on top of the existing sessions analytics, in a single
server-aggregated round trip.

Adds new server endpoint `GET /api/dashboard/overview` that fans out to:
- /api/status         (gateway state, active sessions, platforms)
- /api/cron/jobs      (cron summary)
- /api/plugins/hermes-achievements/recent-unlocks (recent ribbon)
- /api/plugins/hermes-achievements/achievements   (totals)
- /api/model/info     (provider, model, context, capabilities)
- /api/analytics/usage (token totals, top models, optional cost)

Per-section graceful fallbacks: each slice independently resolves to
null on auth failure / missing endpoint / unreachable dashboard, and
the corresponding card hides itself. Vanilla installs without the
achievements plugin or analytics auth still get a usable dashboard.

Adds 5 new dashboard cards:

- SystemStatusStrip: one-line gateway + active-agents pill at top,
  warning chip when restart_requested.
- PlatformsCard: connected platforms with per-platform state pills
  (api_server, telegram, discord, etc.).
- CronSummaryCard: scheduled / paused / running counts + next-run
  countdown, click-through to /jobs.
- AchievementsCard: 3 most recent unlocks with tier badges, plus a
  modal that fetches a wider window (?achievements=12) for the full
  ribbon view.
- AnalyticsSummaryCard: top-3 models by tokens with proportional bars,
  total tokens over the window, real cost from the dashboard (replaces
  the old hardcoded ~$5/M estimate).

Other tweaks:

- Replace the hardcoded cost subline on the Tokens MetricTile with the
  real estimated_cost_usd value from /api/analytics/usage when present.
- New section row between the chart row and Recent Sessions for
  Platforms / Analytics / Achievements.

Tests: +7 for the aggregator covering the empty / mixed / full payload
shapes plus the field-rename quirks (gateway_platforms vs platforms,
active_sessions vs active_agents). All 31 swarm/dashboard tests green.
Polish pass on PR #242 (Workspace dashboard parity phase 1) before
merge. Tightens layout per the dashboard spec's '10-second status
read' goal.

Layout changes:
- Drop the centered logo hero. New header is a single row with title,
  Hermes Workspace label, and inline QuickActions.
- Collapse the three stacked status rows (SystemStatusStrip,
  CronSummaryCard, PlatformsCard) into one OpsStrip that surfaces
  gateway state, version, active agents, restart-pending, config
  drift, platform pills, and cron pulse in a single horizontal bar.
- Re-flow main content as 8/4 split: Activity + Analytics on the left,
  Model + Skills + Achievements as a side rail.

Data parity:
- Aggregator now exposes status.version, releaseDate, configVersion,
  latestConfigVersion, hermesHome from /api/status. OpsStrip uses these
  for the version chip and config drift warning.
- New ModelInfoCard reads overview.modelInfo (i.e. /api/model/info, the
  active model the gateway is using) instead of /api/claude-config
  defaults. Surfaces context length and tools/vision/reasoning chips.

UX:
- AnalyticsSummaryCard now renders a stable 'No usage in last Nd'
  empty state instead of disappearing, so layout doesn't reflow on
  fresh installs.
- Cron stale next-run (>7 days overdue) downgrades to muted 'stale'
  label so March overdue jobs don't look alarming.

Cleanup:
- Remove orphaned SystemStatusStrip, CronSummaryCard, PlatformsCard
  components. Drop legacy ModelCard + dead SystemGlance helper from
  dashboard-screen.tsx (-179 lines net).

Tests/build:
- pnpm exec vitest run src/server/dashboard-aggregator.test.ts (7/7)
- pnpm build (passes)
@outsourc-e outsourc-e merged commit 6a6d9d9 into main May 3, 2026
3 checks passed
@outsourc-e outsourc-e deleted the feat/dashboard-parity-phase-1 branch May 3, 2026 13:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant