feat(codemap+website): locator/compose polish, plugins gallery page, ops-board design#246
Merged
Merged
Conversation
Field report #3: a module loc pointed at a DIRECTORY (server/src/gateway) — natural for module nodes, but the probe only used the file endpoint, where directories surface as E_IS_DIR or, on some connectors, as not-found. So: - wsLocate treats E_IS_DIR as a hit and, after a file-endpoint miss, confirms candidates with a tree listing before ruling them out; resolution now returns {path, kind} and a directory jump opens the workspace folder view (the dialog's deep-link already lists dirs). - Line anchors only apply to files. - map.yaml header guide gains the strongest lever against invented paths: VERIFY the path exists (ls it) before writing loc, and prefer a representative file + #L<line> over a bare directory. Template seed regenerated byte-identical. - Renderer search also matches loc paths. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ent messages
Renderer plugins can now PREFILL the channel composer (plugin -> host
cheers:compose {text}); nothing is ever sent on the plugin's behalf.
The human's send keystroke is what turns a suggestion into a channel
action — side effects stay human-in-the-loop, audit-visible, and
behind the existing bot approval gates. Enables ChatOps-style boards
(click Deploy -> composer holds '@ops deploy web-1 test' -> review ->
send).
- MessageComposer gains a prefill prop: an empty draft is filled, a
typed draft gets the text appended on a new line (user text is never
lost); @Label tokens matching mentionables are registered as picked
mentions — routing's source of truth — so the suggestion actually
reaches its bot; focus + cursor-to-end.
- SandboxRenderer shape-gates the message (string, <=4000 chars,
control chars stripped) and threads it via ctx.composeMessage to
ChannelView, which owns the composer.
- Protocol docs (EN normative + zh) and the SDK gain the message /
compose(text).
- codemap example: the detail drawer gains '让 bot 讲讲这个模块' —
the mention is derived from the node's loc handle (the bot that
wrote the loc is the bot that knows the code).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ChatOps server dashboard over an agent-maintained ops/servers.yaml: control-machine model (bot = the machine that SSHes into servers, via routing, unreachable≠down), lean cards (status badges + flags, details in a drawer), lucide-style icons, deploy via cheers:compose prefill. Design artifact for the upcoming ops-board plugin/template pair. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New website/plugins.html — the plugin column: what a workbench plugin is (one sandboxed HTML file), the three-step try/install/preinstalled story, a gallery of the four official plugins (descriptions from their actual manifests) and the docs/arch examples (codemap, paper tracker, code review board, starter kit + SDK), the one-line security model, and links into the dev guide + normative spec. Download links serve from ./downloads/plugins/*, assembled by pages.yml at build time from the sources of truth (server/assets/workbench-plugins + docs/arch/examples) — no duplicate copies in git. The workflow also triggers on changes to those paths so downloads stay fresh. Every page's nav gains a Plugins entry; plugin-dev's self-link now points here. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
What
One workstream, five commits — codemap hardening, the cheers:compose host verb, and the website plugin column:
1. Directory locators + tree-confirmed probing (
wsLocate)A module's natural
locis often a directory (server/src/gateway); the file endpoint reports those asE_IS_DIR— or not-found on some connectors. Probing now treatsE_IS_DIRas a hit and confirms file-endpoint misses with a tree listing before ruling a candidate out. Resolution returns{path, kind}: directories open the workspace folder view, line anchors apply to files only.2. Verify-before-write prompt rule (map.yaml header guide)
"The path part is relative to YOUR workspace root: VERIFY it exists (e.g.
ls <path>) before writing it"; prefer a representative file +#L<line>over a bare directory. Template seed regenerated byte-identical. Renderer search also matches loc paths.3.
cheers:compose— plugin-suggested, human-sent messages (new protocol-1 host verb)Plugins can prefill the channel composer; nothing is ever sent on their behalf. Empty draft filled / typed draft appended on a new line (user text never lost);
@labeltokens matching members register as picked mentions — routing's source of truth — so the suggestion actually reaches its bot. Host shape-gates (≤4000 chars, control chars stripped). Docs (EN + zh) + SDKcompose(text); the codemap drawer gains "让 bot 讲讲这个模块" (mention derived from the node's loc handle). Enabling primitive for ChatOps boards.4. Website: Plugins gallery page (
website/plugins.html)The plugin column: what a plugin is, the try→install→preinstalled story, galleries for the four official plugins (descriptions from their actual manifests) and the docs examples (codemap pair, paper tracker, code review board, starter kit + SDK), one-line security model, learn-more grid. Download links serve
./downloads/plugins/*, assembled bypages.ymlat build time from the sources of truth (no duplicates in git; workflow also triggers on those paths). Every page's nav gains a Plugins entry.5. Ops-board design artifact (docs/arch)
Approved v3 mockup for the upcoming ops-board plugin pair: control-machine model (bot = the machine that SSHes into servers;
viarouting; unreachable ≠ down), lean cards with details-in-drawer, lucide-style icons, deploy via compose prefill.Tests / verification
npm test74 passed ·npm run typecheckclean except pre-existingPdfViewer.tsx.🤖 Generated with Claude Code