fabro/apps/fabro-web/app/lib
Bryan Helmkamp 40ed64c1c2
Add system resources settings page (#328)
## Summary

Adds server-visible resource reporting and a compact Resources settings
tab for CPU, memory, and the filesystem that contains Fabro storage.

## Changes

- Adds `GET /api/v1/system/resources` backed by `sysinfo`, including CPU
sampling, cgroup-aware memory reporting, storage filesystem matching,
and Fabro-managed disk byte totals.
- Extends the OpenAPI contract and regenerates the Rust and TypeScript
API clients.
- Adds a deterministic demo-mode resources route.
- Adds `/settings/resources` with 5 second polling and panels for
overview, CPU, memory, disk, and notes.
- Adds server integration/unit coverage and web route/render coverage.

## Screenshot

![Resources settings
page](https://raw.githubusercontent.com/fabro-sh/fabro/feature/system-resources-settings/docs/public/images/web/settings-resources.jpg)

## Verification

- `cargo build -p fabro-api`
- `cd lib/packages/fabro-api-client && bun run generate`
- `cargo nextest run -p fabro-server --features test-support --test it
api::system`
- `cargo test -p fabro-server resource_sampler::tests`
- `cd apps/fabro-web && bun test`
- `cd apps/fabro-web && bun run typecheck`
- `cd apps/fabro-web && bun run build`
- `cargo +nightly-2026-04-14 fmt --check --all`
- `cargo +nightly-2026-04-14 clippy --workspace --all-targets -- -D
warnings`

---

[![Compound
Engineering](https://img.shields.io/badge/Compound%20Engineering-Codex-6f42c1)](https://github.com/compound-engineering)

🤖 Generated with GPT-5 via [Codex](https://openai.com/codex)

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 17:22:53 -04:00
..
api-client.test.ts fix(api): type interview answer submissions 2026-05-08 09:18:35 -07:00
api-client.ts feat(server): add GET /api/v1/providers and /settings/models page (#321) 2026-05-20 09:05:00 -04:00
board-events.test.tsx refactor: remove compatibility shims (#281) 2026-05-16 15:29:25 -04:00
board-events.ts feat(pr): support GitHub pull request associations (#270) 2026-05-16 12:47:27 -04:00
chats-runtime.test.ts feat(fabro-web): port /chats/new + /chats/:id from prototype (#289) 2026-05-16 17:10:16 -04:00
chats-runtime.ts feat(fabro-web): port /chats/new + /chats/:id from prototype (#289) 2026-05-16 17:10:16 -04:00
chats-script.ts feat(fabro-web): port /chats/new + /chats/:id from prototype (#289) 2026-05-16 17:10:16 -04:00
chats-store.test.tsx feat(fabro-web): port /chats/new + /chats/:id from prototype (#289) 2026-05-16 17:10:16 -04:00
chats-store.tsx feat(fabro-web): port /chats/new + /chats/:id from prototype (#289) 2026-05-16 17:10:16 -04:00
chats-types.ts feat(fabro-web): port /chats/new + /chats/:id from prototype (#289) 2026-05-16 17:10:16 -04:00
cross-tab-sse.test.ts fix(web): recover cross-tab SSE coordination after fallback 2026-05-04 15:52:18 -04:00
cross-tab-sse.ts refactor: remove compatibility shims (#281) 2026-05-16 15:29:25 -04:00
demo-mode.test.tsx feat: wire web UI to real server with demo mode toggle 2026-04-08 04:46:08 -04:00
demo-mode.tsx feat: wire web UI to real server with demo mode toggle 2026-04-08 04:46:08 -04:00
format.ts Add system resources settings page (#328) 2026-05-20 17:22:53 -04:00
graph-theme.ts refactor(web): drop light mode, go dark-only 2026-04-20 09:27:08 -04:00
live-events.test.tsx feat(web): build live events page in settings 2026-05-10 14:05:10 -04:00
live-events.ts refactor: remove compatibility shims (#281) 2026-05-16 15:29:25 -04:00
mutations.ts refactor: remove compatibility shims (#281) 2026-05-16 15:29:25 -04:00
pierre-diffs-worker.ts fix(web): virtualize run file diffs consistently 2026-05-05 16:41:39 -04:00
queries.ts Add system resources settings page (#328) 2026-05-20 17:22:53 -04:00
query-keys.test.ts feat(web): add Sandbox tab and route to run detail 2026-05-09 21:48:31 -04:00
query-keys.ts Add system resources settings page (#328) 2026-05-20 17:22:53 -04:00
run-actions.test.ts feat(api): unify public run shape 2026-05-10 20:48:55 -04:00
run-actions.ts feat(api): unify public run shape 2026-05-10 20:48:55 -04:00
run-events.test.tsx refactor: remove compatibility shims (#281) 2026-05-16 15:29:25 -04:00
run-events.ts refactor: remove compatibility shims (#281) 2026-05-16 15:29:25 -04:00
run-settings-snapshot.ts refactor: remove compatibility shims (#281) 2026-05-16 15:29:25 -04:00
sse.ts refactor: remove compatibility shims (#281) 2026-05-16 15:29:25 -04:00
stage-sidebar.test.ts feat(api): expose stage handlers on run stages 2026-05-08 13:36:02 -07:00
stage-sidebar.ts feat(web): add specialized stage renderers for non-agent handlers 2026-05-09 18:35:19 -04:00
test-utils.tsx feat(fabro-web): port /chats/new + /chats/:id from prototype (#289) 2026-05-16 17:10:16 -04:00
time.ts Read billing and stages from RunProjection with live runtimes (#213) 2026-05-05 09:32:33 -04:00
unknown.ts refactor(web): narrow event property reads via shared helpers 2026-04-30 22:45:38 -04:00