Repository navigation
feat(mod): /orc dashboard — reactive cockpit, surfaces, real controls - #109
Merged
Merged
Conversation
… marks and PR links
…, diff of the last commit
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The
/orcpane 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$.stateand puts orc's phase where the eye already is.What changed
$.state; it refreshes on everyorc-statewrite 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.!attention marks,Selects for autopilot and model profile (settled throughorc-state decision set),Links to PRs, the resume digest asMarkdown, the current slice's diff asCode.orc flow 5/9 implement · implementer, the idle prompt hint names the flow, a non-manual policy shows in the mode footer, andorc-state/orc-pr-size/orc-report/gh pr checkstool rows collapse to one dim line.orc/types/index.d.ts(manifesttypes) declaringPluginState.orc.modelProfiledecision now wins over themodel_profileuserConfig at spawn.How tested
PR, Decisions, Digest and Diff sections open
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 everyscripts/ci/verify-*.shclean. Headlessclaude -p "/orc"prints the text summary with no model turn.Notes
$never crosses an import (every hook and loader is inregister.ts;pane.ts,cockpit.ts,state.tsare pure), state refs are literals inregister.ts, one hook per event without a matcher.tool.callevent flat (e.command); the refresh trigger reads both shapes.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