Skip to content

Commit 99199ea

Browse files
committed
docs: restructure Plugins into Add-ons (Devframes + Services); move helpers to references
1 parent d1fb83d commit 99199ea

39 files changed

Lines changed: 384 additions & 164 deletions

‎docs/app/app.config.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ export default defineAppConfig({
1919
},
2020
{
2121
label: 'Adapters',
22-
sections: ['adapters', 'frameworks', 'helpers'],
22+
sections: ['adapters', 'frameworks'],
2323
},
24-
{ label: 'Plugins', sections: ['plugins'], link: 'section' as const },
24+
{ label: 'Add-ons', sections: ['add-ons'], link: 'section' as const },
2525
{ label: 'Reference', sections: ['references'], link: 'section' as const },
2626
{ label: 'Errors', sections: ['errors'], link: 'section' as const },
2727
{

‎docs/app/components/global/GettingStartedWizard.vue‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ const DOC_CATALOG: Record<string, DocEntry> = {
140140
'/guide/build-your-own-json-render-frontend': { title: 'Build Your Own JSON-Render Frontend', description: 'Implement the renderer contract in your own framework instead of the reference one.', icon: 'i-lucide-component' },
141141
'/guide/build-your-own-hub-ui': { title: 'Build Your Own Hub UI', description: 'The two contracts a hub UI provider implements — node side and browser side.', icon: 'i-lucide-layout-panel-left' },
142142
'/guide/standalone-cli': { title: 'Standalone CLI with Devframe', description: 'npx my-tool starts a dev server serving your SPA over type-safe RPC.', icon: 'i-lucide-terminal' },
143-
'/helpers/interactive-auth': { title: 'Interactive Auth', description: 'An OTP auth layer over devframe\'s node-side primitives.', icon: 'i-lucide-key-round' },
144-
'/helpers/utilities': { title: 'Utilities', description: 'Small, stable helpers bundled into devframe — no npm install.', icon: 'i-lucide-wrench' },
143+
'/references/interactive-auth': { title: 'Interactive Auth', description: 'An OTP auth layer over devframe\'s node-side primitives.', icon: 'i-lucide-key-round' },
144+
'/references/utilities': { title: 'Utilities', description: 'Small, stable helpers bundled into devframe — no npm install.', icon: 'i-lucide-wrench' },
145145
'/adapters': { title: 'Adapters', description: 'Every path from a DevframeDefinition to a running devframe.', icon: 'i-lucide-shuffle' },
146146
'/adapters/initiate': { title: 'The Standard Handler', description: 'initDevframe() turns a definition into a Web Standard Request → Response handler.', icon: 'i-lucide-server' },
147147
'/adapters/cac': { title: 'CLI (cac)', description: 'A cac CLI around a DevframeDefinition with dev, build, and mcp commands.', icon: 'i-lucide-square-terminal' },
@@ -153,36 +153,36 @@ const DOC_CATALOG: Record<string, DocEntry> = {
153153
'/frameworks/vite': { title: 'Vite', description: 'Author one devframe\'s SPA, or mount a whole hub, from a Vite plugin.', icon: 'i-simple-icons-vite' },
154154
'/frameworks/next': { title: 'Next', description: 'Host devframes from a Next.js App Router app via a route handler.', icon: 'i-simple-icons-nextdotjs' },
155155
'/frameworks/nuxt': { title: 'Nuxt', description: 'A Nuxt module split into authoring one devframe or mounting a hub.', icon: 'i-simple-icons-nuxtdotjs' },
156-
'/plugins/a11y': { title: 'Accessibility Inspector', description: 'Runs axe-core against the user app and highlights violations in the page.', icon: 'i-lucide-accessibility' },
157-
'/plugins/terminals': { title: 'Terminals', description: 'A terminal panel built on xterm.js.', icon: 'i-lucide-square-terminal' },
156+
'/add-ons/devframes/a11y': { title: 'Accessibility Inspector', description: 'Runs axe-core against the user app and highlights violations in the page.', icon: 'i-lucide-accessibility' },
157+
'/add-ons/devframes/terminals': { title: 'Terminals', description: 'A terminal panel built on xterm.js.', icon: 'i-lucide-square-terminal' },
158158
}
159159
160160
/** Always worth reading, regardless of what's checked above. */
161161
const BASE_DOCS = ['/guide', '/guide/devframe-definition', '/guide/tutorial-server-data-inspector']
162162
163163
/** `${section.key}:${item.value}` -> doc routes that answer is worth reading. */
164164
const RECOMMENDATIONS: Record<string, string[]> = {
165-
'dataSource:node': ['/guide/rpc', '/guide/shared-state', '/helpers/utilities'],
166-
'dataSource:browser': ['/guide/client-context', '/guide/deep-linking', '/plugins/a11y'],
165+
'dataSource:node': ['/guide/rpc', '/guide/shared-state', '/references/utilities'],
166+
'dataSource:browser': ['/guide/client-context', '/guide/deep-linking', '/add-ons/devframes/a11y'],
167167
168168
'environments:standalone': ['/guide/standalone-cli', '/adapters/cac', '/adapters/build'],
169169
'environments:framework': ['/adapters'],
170170
'environments:all': ['/adapters/initiate', '/adapters', '/guide/devframe-definition'],
171171
172172
'availability:dev': ['/guide/rpc', '/guide/transports'],
173173
'availability:build': ['/adapters/build', '/guide/client-assets'],
174-
'availability:static': ['/adapters/build', '/helpers/utilities'],
174+
'availability:static': ['/adapters/build', '/references/utilities'],
175175
'availability:remote': ['/guide/transports', '/guide/security'],
176176
177177
'frontend:framework': ['/guide/client-assets', '/guide/client'],
178178
'frontend:webcomponents': ['/guide/hub', '/guide/build-your-own-hub-ui'],
179179
'frontend:nodeside': ['/guide/json-render', '/guide/build-your-own-json-render-frontend'],
180180
181181
'requirements:agent': ['/guide/agent-native', '/adapters/mcp'],
182-
'requirements:terminal': ['/plugins/terminals'],
182+
'requirements:terminal': ['/add-ons/devframes/terminals'],
183183
'requirements:streaming': ['/guide/streaming'],
184184
'requirements:deep-linking': ['/guide/deep-linking'],
185-
'requirements:overlay': ['/guide/client-context', '/plugins/a11y'],
185+
'requirements:overlay': ['/guide/client-context', '/add-ons/devframes/a11y'],
186186
}
187187
188188
const selections = reactive<Record<string, string[]>>(

‎docs/content/1.guide/1.tutorial-server-data-inspector.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ export default defineConfig({
245245
npx vite --config vite.hub.config.ts
246246
```
247247

248-
Your inspector now sits in the hub's dock rail as a dock entry. Add more to `devframes: [...]` — your own or the [built-in devframes](/plugins) — and each gets its own. (The hub prints a code to authorize on first connect.)
248+
Your inspector now sits in the hub's dock rail as a dock entry. Add more to `devframes: [...]` — your own or the [built-in devframes](/add-ons) — and each gets its own. (The hub prints a code to authorize on first connect.)
249249

250250
## Step 5 — Build a static version
251251

@@ -317,7 +317,7 @@ node bin.mjs mcp # expose the tool to a coding agent over MCP
317317

318318
You can also assemble your own CLI from the adapter functions used above.
319319

320-
That's it for this tutorial. For a full-featured version, there's a ready-to-use [Data Inspector built-in devframe](/plugins/data-inspector) to use or read for reference.
320+
That's it for this tutorial. For a full-featured version, there's a ready-to-use [Data Inspector built-in devframe](/add-ons/devframes/data-inspector) to use or read for reference.
321321

322322
## What's next
323323

‎docs/content/1.guide/10.standalone-cli.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ Booleans become `--verbose` / `--no-verbose`, else `--depth <value>`; keys are c
188188

189189
## Common RPC functions
190190

191-
Recipes for opening files in the editor or OS explorer live in `devframe/recipes/common-rpc-functions` ([Common RPC Functions](/helpers/common-rpc-functions)).
191+
Recipes for opening files in the editor or OS explorer live in `devframe/recipes/common-rpc-functions` ([Common RPC Functions](/references/common-rpc-functions)).
192192

193193
## Snapshot queries for static builds
194194

‎docs/content/1.guide/12.in-page-channel.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ navigation:
55
description: 'The in-page channel connects a devframe''s page script to its panels entirely in the browser — typed events, calls, and page-script-authoritative shared state, with no server involved.'
66
---
77

8-
The in-page channel (`devframe/in-page-channel`) connects a devframe's page script to its panels entirely in the browser — typed events, calls, and page-script-authoritative shared state, with no server involved. It is how a live inspect-the-page loop (like the [a11y inspector](/plugins/a11y)'s scan/highlight cycle) works identically in dev and in a static build.
8+
The in-page channel (`devframe/in-page-channel`) connects a devframe's page script to its panels entirely in the browser — typed events, calls, and page-script-authoritative shared state, with no server involved. It is how a live inspect-the-page loop (like the [a11y inspector](/add-ons/devframes/a11y)'s scan/highlight cycle) works identically in dev and in a static build.
99

1010
## Overview
1111

‎docs/content/1.guide/16.hub.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ _Orchestrating multiple devtools (from [A Playground](https://github.com/devfram
1313

1414
## What the hub adds
1515

16-
`DevframeHubContext` adds four subsystems to `DevframeNodeContext`: `ctx.docks` registers dock entries and groups and [activates docks](#cross-iframe-dock-activation); `ctx.terminals` aggregates terminal sessions with streaming output ([Terminals](/plugins/terminals#hub-aggregation)); `ctx.messages` is the server-side toast/notification queue; `ctx.commands` is the hierarchical command palette with keybindings and `when` clauses. Each subsystem's API is in the [Hub API reference](/references/hub-api#hub-subsystems).
16+
`DevframeHubContext` adds four subsystems to `DevframeNodeContext`: `ctx.docks` registers dock entries and groups and [activates docks](#cross-iframe-dock-activation); `ctx.terminals` aggregates terminal sessions with streaming output ([Terminals](/add-ons/devframes/terminals#hub-aggregation)); `ctx.messages` is the server-side toast/notification queue; `ctx.commands` is the hierarchical command palette with keybindings and `when` clauses. Each subsystem's API is in the [Hub API reference](/references/hub-api#hub-subsystems).
1717

1818
Data-driven UI panels are an opt-in [JSON-Render](/guide/json-render) package (a `json-render` dock type).
1919

@@ -58,7 +58,7 @@ await rpc.call('hub:docks:activate', {
5858
})
5959
```
6060

61-
It mirrors into the `devframe:docks:active` shared-state slot; the [terminals dock](/plugins/terminals#focusing-a-session) reads `params.sessionId`, unknown ids no-op ([DF8107](/errors/DF8107)). Server-side: `ctx.docks.activate(dockId, params?)`.
61+
It mirrors into the `devframe:docks:active` shared-state slot; the [terminals dock](/add-ons/devframes/terminals#focusing-a-session) reads `params.sessionId`, unknown ids no-op ([DF8107](/errors/DF8107)). Server-side: `ctx.docks.activate(dockId, params?)`.
6262

6363
## Process-control launchers
6464

‎docs/content/1.guide/17.client-context.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ Client scripts execute in the user app's page realm (`window`); anchor shared st
7070

7171
### Dual boots
7272

73-
One bundle can serve as both a client script (default export) and, via a globally-guarded self-boot, a standalone page script ([a11y inspector](/plugins/a11y)).
73+
One bundle can serve as both a client script (default export) and, via a globally-guarded self-boot, a standalone page script ([a11y inspector](/add-ons/devframes/a11y)).
7474

7575
## Iframe panels
7676

‎docs/content/1.guide/19.services.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,11 @@ A reactive UI subscribes via `rpc.services.state()`. `has()`/`get()`/`keys()` ar
115115

116116
### Built-in services
117117

118-
**`@devframes/service-open`** (`devframes:service:open`) opens files in an editor (`open-in-editor`, optional `line`/`column`) or OS explorer (`open-in-finder`), refusing paths outside the workspace root plus extra `roots` (`DS_OPEN_0002`), gating editors to `KNOWN_EDITORS`. Options `{ editor?, roots? }` (later wins; dirs union-merged).
118+
Three first-party wire services ship ready to install, each with its own page under [Add-ons › Services](/add-ons/services):
119119

120-
**`@devframes/service-git`** (`devframes:service:git`) runs typed git ops — `status`, `log`, `show`, `readFile`, `diff`, `branches`, `tags`, `stage`, `unstage`, `commit` — on one repo fixed at install (`{ cwd? }`). Write ops are exposed; authorization is the host framework's boundary.
121-
122-
**`@devframes/service-shiki`** (`devframes:service:shiki`) renders [Shiki](https://shiki.style) highlighting on the node side via three RPC queries — `highlight` (dual-theme HTML), `code-to-hast`, `code-to-tokens` — all client-`cacheable`, LRU-cached per `(code, lang, themes)`. Options `{ themes?, langs? }` — light/dark pair (defaults `vitesse-light`/`vitesse-dark`; later wins) and preloaded languages (union-merged).
120+
- **[`@devframes/service-open`](/add-ons/services/open)** (`devframes:service:open`) — open files in an editor or OS explorer, refusing paths outside the workspace root.
121+
- **[`@devframes/service-git`](/add-ons/services/git)** (`devframes:service:git`) — typed read/write git operations on one repo.
122+
- **[`@devframes/service-shiki`](/add-ons/services/shiki)** (`devframes:service:shiki`) — node-side [Shiki](https://shiki.style) highlighting, LRU-cached and dual-theme.
123123

124124
## Services, RPC, or shared state?
125125

‎docs/content/1.guide/20.deep-linking.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ await rpc.call('hub:docks:activate', {
2020

2121
The hub broadcasts the request and mirrors it into the [`devframe:docks:active`](/guide/shared-state) slot, so a dock mounting *because* of the switch converges on it. The target subscribes, filters on its `dockId`, and reads `params` — see [Cross-iframe dock activation](/guide/hub#cross-iframe-dock-activation).
2222

23-
Focus is one-shot: the [terminals dock](/plugins/terminals#focusing-a-session) reads `params.sessionId`, the [Data Inspector](/plugins/data-inspector#deep-linking) `params.sourceId`; a target naming something unregistered waits, then fires once. An id that never arrives is a no-op; an unknown `dockId` warns ([DF8107](/errors/DF8107)).
23+
Focus is one-shot: the [terminals dock](/add-ons/devframes/terminals#focusing-a-session) reads `params.sessionId`, the [Data Inspector](/add-ons/devframes/data-inspector#deep-linking) `params.sourceId`; a target naming something unregistered waits, then fires once. An id that never arrives is a no-op; an unknown `dockId` warns ([DF8107](/errors/DF8107)).
2424

2525
## Standalone URL deep links
2626

@@ -38,6 +38,6 @@ history.replaceState(history.state, '', `#${params.toString()}`)
3838
window.addEventListener('hashchange', applyState)
3939
```
4040

41-
The [terminals dock](/plugins/terminals#deep-linking) keys a selection as `#id=<sessionId>`; the [Data Inspector](/plugins/data-inspector#deep-linking) encodes its workbench (`#source=…&query=…` plus filter/auto-rerun flags). `replaceState` writes never fire `hashchange`, so boot read, live listener, and write-back don't loop.
41+
The [terminals dock](/add-ons/devframes/terminals#deep-linking) keys a selection as `#id=<sessionId>`; the [Data Inspector](/add-ons/devframes/data-inspector#deep-linking) encodes its workbench (`#source=…&query=…` plus filter/auto-rerun flags). `replaceState` writes never fire `hashchange`, so boot read, live listener, and write-back don't loop.
4242

4343
Keep credentials out of anything shareable: a handshake token belongs in the query string, scrubbed once read (as the Data Inspector does), never in a copyable hash.

‎docs/content/1.guide/23.built-with.md‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,18 @@ description: 'Real-world devtools and hub UI providers built on devframe — fro
1313

1414
## Built-in Devframes
1515

16-
The [built-in devframes](/plugins) are real tools built on Devframe, each in a different UI framework:
16+
The [built-in devframes](/add-ons) are real tools built on Devframe, each in a different UI framework:
1717

1818
| Devframe | UI framework | What it does |
1919
|--------|--------------|--------------|
20-
| [Data Inspector](/plugins/data-inspector) | Vue | Query live server-side objects with jora. |
21-
| [Devframe Inspector](/plugins/inspect) | Vue | Browse RPC, shared state, and the agent-consumable API. |
22-
| [Open Graph Viewer](/plugins/og) | Vue | Inspect Open Graph / Twitter metadata and card previews. |
23-
| [Accessibility Inspector](/plugins/a11y) | Solid | Run axe-core; list WCAG violations. |
24-
| [Git](/plugins/git) | React (Next.js) | Repository dashboard: status, graph, branches, diffs. |
25-
| [Terminals](/plugins/terminals) | Svelte | Stream output and run interactive PTY shells. |
26-
| [Code Server](/plugins/code-server) | Vue | Run VS Code in the browser. |
27-
| [Assets](/plugins/assets) | Vue | Browse, preview, upload, rename, and delete files. |
20+
| [Data Inspector](/add-ons/devframes/data-inspector) | Vue | Query live server-side objects with jora. |
21+
| [Devframe Inspector](/add-ons/devframes/inspect) | Vue | Browse RPC, shared state, and the agent-consumable API. |
22+
| [Open Graph Viewer](/add-ons/devframes/og) | Vue | Inspect Open Graph / Twitter metadata and card previews. |
23+
| [Accessibility Inspector](/add-ons/devframes/a11y) | Solid | Run axe-core; list WCAG violations. |
24+
| [Git](/add-ons/devframes/git) | React (Next.js) | Repository dashboard: status, graph, branches, diffs. |
25+
| [Terminals](/add-ons/devframes/terminals) | Svelte | Stream output and run interactive PTY shells. |
26+
| [Code Server](/add-ons/devframes/code-server) | Vue | Run VS Code in the browser. |
27+
| [Assets](/add-ons/devframes/assets) | Vue | Browse, preview, upload, rename, and delete files. |
2828

2929
## Playable Examples
3030

0 commit comments

Comments
 (0)