Skip to content

feat: restore system metrics footer#246

Merged
outsourc-e merged 3 commits intooutsourc-e:mainfrom
dontcallmejames:feat/system-metrics-footer
May 3, 2026
Merged

feat: restore system metrics footer#246
outsourc-e merged 3 commits intooutsourc-e:mainfrom
dontcallmejames:feat/system-metrics-footer

Conversation

@dontcallmejames
Copy link
Copy Markdown
Contributor

@dontcallmejames dontcallmejames commented May 2, 2026

Summary

  • restore the System metrics footer behind the existing settings toggle
  • add a /api/system-metrics endpoint for CPU, memory, disk, and Hermes status
  • fix persisted settings hydration so the toggle survives refreshes
  • refine the footer into a subtle theme-native status bar with no polling flicker and sidebar-aware offset

Test Plan

  • corepack pnpm exec eslint src/components/system-metrics-footer.tsx src/components/workspace-shell.tsx
  • corepack pnpm build
  • local smoke check: footer renders, starts after the sidebar at 300px, does not overlap, and shows CPU/RAM/Disk/Hermes/Updated

@outsourc-e outsourc-e merged commit 0ce4dc5 into outsourc-e:main May 3, 2026
3 checks passed
outsourc-e added a commit that referenced this pull request May 3, 2026
…ack (#265)

* fix(api): replace broken 'authResult as unknown as Response' cast with proper 401

isAuthenticated() returns boolean. The previous pattern:

  const authResult = isAuthenticated(request)
  if (authResult !== true) return authResult as unknown as Response

silenced the TypeScript error but threw HTTPError -> 500 at runtime
because the framework received `false` instead of a Response. This
broke /api/connection-status entirely on protected setups (causing
ONBOARDING_KEY to never persist on fresh installs) and would have
broken the just-merged /api/system-metrics in the same way.

Replace with the canonical pattern used by every other API route:

  if (!isAuthenticated(request)) {
    return json({ error: 'Unauthorized' }, { status: 401 })
  }

Refs #261 (which spotted the pattern in connection-status), #246
(which copied the broken pattern into system-metrics).

* fix(claude-proxy): fall back to /v1/models for /api/available-models on vanilla agent

Vanilla hermes-agent (any version through 2026-05) does not expose
`/api/available-models` \u2014 that endpoint is legacy fork-only. The chat
composer + settings dialog hit `/api/claude-proxy/api/available-models`
expecting it to work, get 404, and fall through to broken UI states
where the model picker is empty.

Fix: when proxying GET /api/available-models and the upstream returns
404, synthesize a compatible `{ models: [...] }` response from
/v1/models filtered by ?provider= so the picker keeps working.

Also: read the bearer token at request time using the same precedence
as the rest of the codebase (HERMES_API_TOKEN || CLAUDE_API_TOKEN ||
module-level BEARER_TOKEN). PR #234 fixed this in openai-compat-api.ts;
this catches the proxy path that was missed.

Refs #261.

---------

Co-authored-by: Aurora release bot <release@outsourc-e.com>
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.

2 participants