Skip to content

feat(mod): /orc dashboard — reactive cockpit, surfaces, real controls - #109

Merged
HigorAlves merged 13 commits into
mainfrom
feat/mod-cockpit-redesign
Oct 6, 2026
Merged

HigorAlves merged 13 commits into
mainfrom
feat/mod-cockpit-redesign

Conversation

@HigorAlves

@HigorAlves HigorAlves commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

Why

The /orc pane was flat text in six tabs, refreshed by hand, and used 3 of the 15 render sites and 3 of the 12 elements the mods API ships. This makes it a dashboard that draws itself from $.state and puts orc's phase where the eye already is.

What changed

  • Snapshot lives in $.state; it refreshes on every orc-state write the model runs through Bash and on each main-loop turn end. Render sites subscribe by reading, so the Refresh button and the tabs are gone.
  • Dashboard: header strip (phase, slices, policy, model profile, context %, cost), bordered phase ladder beside the slice ledger (stacked under 72 columns), collapsible QA · PR · Agents · Decisions · Digest · Diff sections with ! attention marks, Selects for autopilot and model profile (settled through orc-state decision set), Links to PRs, the resume digest as Markdown, the current slice's diff as Code.
  • Outside the pane: the spinner suffix carries orc flow 5/9 implement · implementer, the idle prompt hint names the flow, a non-manual policy shows in the mode footer, and orc-state / orc-pr-size / orc-report / gh pr checks tool rows collapse to one dim line.
  • New plugin contract orc/types/index.d.ts (manifest types) declaring PluginState.orc.
  • A per-branch modelProfile decision now wins over the model_profile userConfig at spawn.

How tested

orc cockpit docked beside the transcript: header strip, phase ladder beside the slice ledger, collapsed sections, Resume button

PR, Decisions, Digest and Diff sections open

orc cockpit with the size bar and PR link, the autopilot and model-profile selects, the resume digest as Markdown, and the current slice's diff as Code

Live Claude Code 2.1.291 in tmux at 132 columns, captured with colors and rendered to PNG.

Tests: 44 pass (claude plugin test orc, Claude Code 2.1.291). plugin validate --strict, tsc --noEmit, shellcheck and every scripts/ci/verify-*.sh clean. Headless claude -p "/orc" prints the text summary with no model turn.

Notes

  • The hooks engine's static scan sets three rules the code follows: $ never crosses an import (every hook and loader is in register.ts; pane.ts, cockpit.ts, state.ts are pure), state refs are literals in register.ts, one hook per event without a matcher.
  • 2.1.291 types the Bash tool.call event flat (e.command); the refresh trigger reads both shapes.
  • Needs Claude Code ≥ 2.1.287. On 2.1.285 mods load only with CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1; without mods orc behaves as before.

Size-budget-override: one PR by design — eight plan slices with one commit each, 924 LOC of which ~40% is tests, no stacked chain

@HigorAlves
HigorAlves merged commit 60dce87 into main Oct 6, 2026
5 checks passed
@HigorAlves
HigorAlves deleted the feat/mod-cockpit-redesign branch October 6, 2026 17:29
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