From 062861fae09afb131854f7d3a5286bd84e416c4f Mon Sep 17 00:00:00 2001 From: Brad Harris Date: Fri, 24 Jul 2026 22:05:13 -0600 Subject: [PATCH] Docs: cover the Service Resources dashboard; fix stale agent-card feedback-panel claim MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - New in-app docs section (Settings → Resources dashboard from #823): opt-in collection, summary cards, history charts, subsystem health, workload/capacity cards - Ambient tip pointing at the new dashboard (since 0.30.0) - README features bullet for the resources dashboard - Agents section: the expanded-card 'feedback panel' was removed in #782 (reviews now live in feedback threads); describe the Review button, IDE launch button, and worktree-path copy pill instead Co-Authored-By: Claude Fable 5 --- README.md | 1 + apps/web/src/components/app/docs-pane.tsx | 10 +++ .../components/app/docs-sections/agents.tsx | 13 ++-- .../src/components/app/docs-sections/index.ts | 1 + .../app/docs-sections/resources.tsx | 61 +++++++++++++++++++ apps/web/src/lib/tips/tips.ts | 8 +++ 6 files changed, 89 insertions(+), 5 deletions(-) create mode 100644 apps/web/src/components/app/docs-sections/resources.tsx diff --git a/README.md b/README.md index cffadaef..c2dacbd7 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ Give this prompt to a coding agent to get Dispatch installed as a persistent ser - Browser Feedback — a Chrome extension to select an element on any web page, comment, and send it with bounded DOM context and a cropped element screenshot to a running agent (paired under Settings → Connections). - Slack notifications with focus-aware suppression. - Activity analytics — heatmaps, daily status charts, working time by project. +- Service resources dashboard — live CPU, memory, subsystem health, and workload metrics for the Dispatch server, agents, and host (Settings → Resources, opt-in collection). - Token usage tracking by day, project, and model. - Agent history with soft-delete preservation, filtering, and per-agent detail views. - Release management — cut releases, deploy tags, and self-update from the UI. diff --git a/apps/web/src/components/app/docs-pane.tsx b/apps/web/src/components/app/docs-pane.tsx index 775cb12c..46669912 100644 --- a/apps/web/src/components/app/docs-pane.tsx +++ b/apps/web/src/components/app/docs-pane.tsx @@ -4,6 +4,7 @@ import { ArrowDownToLine, Bell, Briefcase, + Gauge, GitBranch, Image, Keyboard, @@ -26,6 +27,7 @@ import { NotificationsContent, PersonalitiesContent, PersonasContent, + ResourcesContent, ShortcutsContent, ToolsContent, UpdatesContent, @@ -44,6 +46,7 @@ export type DocsSection = | "media" | "browser-feedback" | "notifications" + | "resources" | "updates"; type SectionDef = { @@ -132,6 +135,13 @@ const SECTIONS: SectionDef[] = [ title: "Notifications", content: , }, + { + id: "resources", + label: "Service Resources", + icon: Gauge, + title: "Service Resources", + content: , + }, { id: "updates", label: "Updates", diff --git a/apps/web/src/components/app/docs-sections/agents.tsx b/apps/web/src/components/app/docs-sections/agents.tsx index 141f5e76..65975b28 100644 --- a/apps/web/src/components/app/docs-sections/agents.tsx +++ b/apps/web/src/components/app/docs-sections/agents.tsx @@ -145,11 +145,14 @@ export function AgentsContent() { base branch and working branch (indented below the base); non-worktree agents show the working directory and current branch. A{" "} diff-stats badge in the top-right summarizes - uncommitted changes against the base branch. CLI agents also show - whether they're running in full access or sandboxed mode, plus a - feedback panel and persona launcher; terminal agents skip those since - they have no CLI. Persona agents show their role and link to their - parent agent. + uncommitted changes against the base branch. The details card also has + a button to open the working directory in your IDE and, for worktree + agents, a pill that copies the worktree path. CLI agents additionally + show whether they're running in full access or sandboxed mode, plus a{" "} + Review button that launches a reviewer agent (see the + Reviewers section — review feedback lives in the Changes tab's + threads, not on the card); terminal agents skip those since they have + no CLI. Persona agents show their role and link to their parent agent.

diff --git a/apps/web/src/components/app/docs-sections/index.ts b/apps/web/src/components/app/docs-sections/index.ts index 5415a53f..0408fe48 100644 --- a/apps/web/src/components/app/docs-sections/index.ts +++ b/apps/web/src/components/app/docs-sections/index.ts @@ -9,4 +9,5 @@ export { EventsContent } from "./events"; export { MediaContent } from "./media"; export { BrowserFeedbackContent } from "./browser-feedback"; export { NotificationsContent } from "./notifications"; +export { ResourcesContent } from "./resources"; export { UpdatesContent } from "./updates"; diff --git a/apps/web/src/components/app/docs-sections/resources.tsx b/apps/web/src/components/app/docs-sections/resources.tsx new file mode 100644 index 00000000..5d11a009 --- /dev/null +++ b/apps/web/src/components/app/docs-sections/resources.tsx @@ -0,0 +1,61 @@ +import { H3, P, Section } from "./primitives"; + +export function ResourcesContent(): JSX.Element { + return ( + <> +
+

Service resources dashboard

+

+ Settings → Resources shows live health and resource + insights for the Dispatch server, its agent processes, dependencies, + and the host machine. An overall status badge sits next to the title; + when something is off, a Dispatch needs attention{" "} + card at the top explains why. +

+
+ +
+

Enabling collection

+

+ Metrics collection is off by default. Turn on{" "} + Collect resource metrics to sample service health and + resource usage every 5 seconds, keeping up to one hour of history in + memory. Turning collection off clears the collected history, and + history also resets when Dispatch restarts — nothing is written to the + database. Both directions ask for confirmation. A window picker + switches the charts between the last 15 minutes and the last hour. +

+
+ +
+

What's shown

+

+ Summary cards cover Dispatch's CPU (one-core percentage) and memory + (resident set plus JS heap), the agent process tree's combined CPU and + memory, database latency and connection-pool usage, event-loop and API + p95 latencies, and the host's free memory and load. Below them, CPU + and memory history charts plot Dispatch, agents, and host load over + the selected window. +

+

+ A workload card counts running agents, connected browsers, active + terminal views, scheduled jobs, and in-flight git refreshes; a + capacity card lists service uptime, database pool size, requests per + minute, and host CPU count. +

+
+ +
+

Subsystem health

+

+ Each background subsystem — the API server, database, job schedulers, + UI event stream, terminal observers, agent reconciliation, activity + monitor, git diff refreshes, and the update checker — reports its own + status badge with run counts, failure rates, p95 durations, and a + recent-trend sparkline, so you can spot which part of Dispatch is + struggling rather than just that something is. +

+
+ + ); +} diff --git a/apps/web/src/lib/tips/tips.ts b/apps/web/src/lib/tips/tips.ts index 653487cf..97af26aa 100644 --- a/apps/web/src/lib/tips/tips.ts +++ b/apps/web/src/lib/tips/tips.ts @@ -212,6 +212,14 @@ export const tips: Tip[] = [ since: "0.29.3", surfaces: ["ambient"], }, + { + id: "service-resources", + title: "Service Resources", + body: "Wondering how Dispatch is holding up? Settings → Resources charts live CPU, memory, subsystem health, and workload for the server, agents, and host.", + docsSection: "resources", + since: "0.30.0", + surfaces: ["ambient"], + }, { id: "job-webhook-trigger", title: "Job Webhook Triggers",