Skip to content

Goal Dashboard

nick3 edited this page May 28, 2026 · 1 revision

Goal Dashboard

The live UI for the autonomous goal runner. Ctrl+Shift+G to open.

Component: src/renderer/components/GoalDashboard.tsx. Also opens automatically when you click the Goals chip in the status bar.


Layout

┌─────────────────────────────────────────────────────────────────────┐
│ Goal Runner  [2 running] [12 total]   [+ New Goal] [Prune] [×]      │
├──────────────┬──────────────────────────────────────────────────────┤
│ [All Active Finished]                                                │
│              │  Detail header                                        │
│ ┌──────────┐ │  [running] pane abc123 · risk=write_local             │
│ │ Running  │ │  Goal text…                                           │
│ │ "Deploy" │ │  criterion: shell "curl -sf http://…" exits 0         │
│ │ 2m ago   │ │                                          [Abort]      │
│ │ 12 steps │ │                                          [Delete]     │
│ └──────────┘ │                                                       │
│ ┌──────────┐ │  Step log (autoscroll)                                │
│ │ Complete │ │   0  [0s]    declare_step             OK              │
│ │ "Tests"  │ │   1  [2s]    write_to_terminal        OK              │
│ │ 1h ago   │ │   2  [15s]   read_terminal_output     OK              │
│ │ 45 steps │ │   3  [16s]   verify_step              OK              │
│ └──────────┘ │   …                                                   │
│              │                                                       │
│              ├──────────────────────────────────────────────────────┤
│              │  Critic & Verification rail                           │
│              │  critic:progressing  ssh works, installing nginx     │
│              │  critic:stuck        same config edit 4× same error  │
│              │  verify:fail         exit 7, curl: connection refused│
└──────────────┴──────────────────────────────────────────────────────┘

Header

  • Title: "Goal Runner"
  • Status pills: running count (pulsing blue if > 0), total goals
  • + New Goal: opens the Starting-a-Goal
  • Prune: delete all finished goals (in-flight goals are always kept). Confirms.
  • ×: close dashboard

Goal list (left, 320px)

Filter tabs at the top: All / Active / Finished. Switch to constrain the list.

Each goal entry shows:

  • Color-coded status badge (pending/running/paused/completed/failed/aborted)
  • Relative timestamp ("just now", "5m ago", "1h ago", date for older)
  • First two lines of goal text (line-clamp-2)
  • Pane ID prefix
  • Step count

Click a goal to inspect it in the detail pane. The most recently active goal is auto-selected on open.


Detail header

For the selected goal:

  • Status badge (matches the list)
  • Pane ID and risk profile
  • Sandbox dir if set
  • Goal text (full)
  • Criterion in plain English (humanized from the structured form)
  • Abort button (only for running goals) — confirms, then sends abort signal. Loop exits at the next checkpoint.
  • Delete button — confirms, removes the goal from the log. If you delete the currently-selected goal, selection clears.
  • Final report box (for finished goals) — shows the final report text in a monospace <pre>. For completed goals this is the verification detail; for aborted/failed, it's the reason + what was learned.

Step log

Live-scrolling list of every tool call the AI has made. Each row:

  0  [0s]    declare_step             OK    {"number":1,"title":"focus pane","action":"focus_pane","success_criteria":"pane is focused"}
  1  [2s]    write_to_terminal        OK    "Focused pane c4bf7ed1-..."
  2  [15s]   read_terminal_output     OK    {"success":true,"content":"[?9001h...","hasMore":false,"totalBytes":...}

Columns:

  • Step index (right-aligned)
  • Elapsed time since goal start ([2s], [1m 30s], [1h 12m])
  • Tool name, color-coded by category:
    • green = terminal tools
    • blue = browser tools
    • purple = pane tools
    • pink = orchestration
    • amber = step protocol
    • cyan = vision
    • emerald (bold) = claim_complete
    • orange (bold) = abort_with_report
  • OK / ERR badge
  • Result preview below, truncated (~80 chars on the row, full on hover)

Auto-scrolls to the bottom when new steps arrive. Manual scroll up to inspect history; scroll-to-bottom resumes auto-follow.


Critic & verification rail

When the critic fires or verification fails for the selected goal, events accumulate in a bottom rail:

critic:progressing  agent is methodically working through deploy steps
critic:stuck        agent has retried the same nginx config edit 4× same error
verify:fail         Shell exited 7, wanted 0. Output tail: curl: (7) Failed to connect…

Each event line:

  • Label color-coded by type:
    • critic:progressing — green
    • critic:stuck — yellow
    • critic:achieved — emerald
    • critic:misled — orange
    • verify:fail — red
  • Reason / detail text

The rail is scrollable, capped at ~40 rows visible. Older events are kept in memory for the session.


Live updates

The dashboard subscribes to the goal:event IPC channel. Event types:

Event Effect
started Refresh goal list (new goal appears at top)
step Re-fetch the affected goal so its step log is fresh
verification_failed Append to verification rail
critic Append to critic rail
ended Refresh goal list (status changes from running → completed/failed/aborted)

No polling, no refresh button — the dashboard stays current automatically.


Status bar pill

Even when the dashboard is closed, the Goals chip in the status bar shows a pulsing badge with the running-goal count. Click to open the dashboard. The count updates live via the same goal:event subscription.


Comparison with the Fleet Dashboard

Fleet Dashboard Goal Dashboard
Scope Multi-pane orchestration Single-pane autonomous goals
Per-row data Each pane (agent state) Each goal (step log)
Best for "Who's working on what?" "Is the goal making progress?"
Live events Coordination events (task assigned/completed) Step + critic + verification events
Hotkey (status bar Fleet chip) Ctrl+Shift+G

Both can be open simultaneously — they show different (but related) slices of the AI's activity.


See also

Clone this wiki locally