Skip to content

docs(configuration,reference): refresh for 0.66.2 - #776

Merged
edspencer merged 6 commits into
mainfrom
docs/configuration-reference-0.66
Aug 9, 2026
Merged

docs(configuration,reference): refresh for 0.66.2#776
edspencer merged 6 commits into
mainfrom
docs/configuration-reference-0.66

Conversation

@edspencer

@edspencer edspencer commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Docs last had a systematic pass at v0.62; main is 0.66.2. This is the
configuration/ + reference/ slice of a coordinated five-way refresh.
Docs only — no changeset, no version bump.

Every claim below was re-verified against source before editing.

The two that told readers a shipped capability does not exist

headers / type: sse are carried. herdctl 5.32.0 widened McpServerSchema
and Paddock shipped it in 0.63.0 (#705). Four blocks across two pages still
described the 0.62 behaviour — that headers is stripped (breaking the OAuth
token hash, which is keyed on {type, url, headers}) and that every url server
is downgraded to HTTP. Both are now carried verbatim on both the host-inherit
path and the declared mcpServers: path, and nothing produces a degraded
caveat any more. The "What cannot be declared" list is rewritten around the
refusals that actually remain: an unrecognised key, both command and url or
neither, headers on a non-url server, a type that disagrees with the
declaration, and a reserved name.
(claude-mcp.ts:74-99, :207-233; mcp-servers.ts:79-83, :146, :306-321,
:388-415.)

Host plugin inheritance exists. Shipped in 0.63.0 and documented as not
existing — "inert today", "none of them reach Paddock", "the engine also has no
way to pass a plugin path per session". Every clause is false. Replaced with the
three-row truth table from the source, plus why the symlink alone never worked
(a session plugin is enabled by default, no settings-source grant needed) and the
mcp__plugin_<plugin>_<server>__* allow-list widening.
(claude-plugins.ts:31-56, :375-430; herdctl-agent-config.ts:189.)

Then

The Config screen's DTO (0.66.2, #757/#722/#723) — instance-settings.md
described one always-on banner and a write with no concurrency story. Added: the
three banner states, value vs pendingValue vs pendingRestart,
configVersionexpectedVersion409 config_conflict, the 400 on an
env-shadowed write, and that a save stamps schemaVersion: 1 when absent —
which is the mechanism config-file.md already promises.

reference/websocket.md was three frames and several fields behind. Added
chat:queued_state, chat:queued_returned and chat:injected; attachments on
chat:send / chat:set_queue / chat:queued_flushed; qid superseding the
legacy ts; subagentType/description/hasSubagent on both tool frames; the
three hub.broadcast frames missing from the no-seq list. The closing note
asserting "no chat:queued" was actively misleading with four chat:queued_*
frames now in play — replaced with a section on what each one means.

Smaller: fourteen → fifteen paddock_manage tools (3 read + 8 write + 4
trigger) in two places; api.md's auth section named /api/health as the sole
exemption when there are three groups; the /api/root/* mount is now documented
(every workspace route registered once, mounted twice — which is why the root
workspace's key is ""); the two trigger routes hooks.md was missing, on which
it disagreed with schedules.md; /open-api/yaml; a
CLAUDE_SECURESTORAGE_CONFIG_DIR row.

Where the docs are right and the code is wrong

Three filed issues are cited in the pages rather than worked around, so nobody
later "corrects" a page back against a stale type or string:

Left alone, deliberately

The audit's "verified correct" set — port 7233, the claude: block and all
five defaults (credentials is the one host), schemaVersion,
environmentPrompt omitted-vs-empty semantics, the auth exemption list in
authentication.md, bind-safety, the model catalog, chat recovery. Not swept.

cd website && npm run build exits 0. The two caddyfile highlighting warnings
it prints are pre-existing and come from guides/securing.md, outside this slice.

HomeLab Agent added 6 commits August 8, 2026 07:16
herdctl 5.32.0 (Paddock 0.63.0) carries an MCP server's `type` and `headers`
verbatim on both the host-inherit and declared paths, and added the `plugins`
passthrough that makes host plugin inheritance real. Three pages still told
readers neither capability existed.

- config-file.md: rewrite the two "cannot be carried" cautions; replace the
  "inert today" plugins paragraph and the "none of them reach Paddock" block
  with the instructions x mcpServers truth table from claude-plugins.ts:48-52;
  add the mcpServers: schema table; note headers in the argv-exposure caution
  and the env:VAR leaf list; fourteen -> fifteen paddock_manage tools.
- environment.md: same for the PADDOCK_CLAUDE_MCP_SERVERS and
  PADDOCK_CLAUDE_INSTRUCTIONS rows, and the env:VAR leaf list.
instance-settings.md described a single always-on restart banner and a write
with no concurrency story. #757/#722/#723 replaced both.

- three banner states (configFileError / just-saved / restartRequired), and
  restartRequired is computed now, not hardcoded false
- value vs pendingValue vs pendingRestart, per field
- configVersion -> expectedVersion -> 409 config_conflict, opt-in
- the 400 on an env-shadowed write
- a save stamps schemaVersion: 1 when absent, which is what config-file.md
  promises
- add chat:queued_state, chat:queued_returned and chat:injected to the
  server->client table (all three exist and are handled by the client)
- chat:send and chat:set_queue carry attachments; set_queue's identity is qid,
  not the legacy ts (#245/#736) -- note added on why
- chat:tool_start/tool_call carry subagentType/description/hasSubagent (#429)
- chat:queued_flushed carries attachments (#728)
- the no-seq list was missing the three hub.broadcast frames
- replace the misleading "no chat:queued" note with a section on the four
  queue frames and why _returned is not a flag on _flushed
- self-mcp.md frontmatter + mcp.md scope prose: fourteen -> fifteen
  paddock_manage tools (ALL_OPERATIONS = 3 read + 8 write + 4 trigger)
- api.md: the auth section named /api/health as the sole exemption; there are
  three groups (health, the compiled bundle, /mcp + its metadata). Also
  document the /api/root/* mount -- every workspace route is registered once
  and mounted twice, which is why the root workspace's key is ""
- hooks.md: add the two trigger routes it was missing (GET .../runtime and
  POST .../:name/run); schedules.md already listed all six
- openapi.md: note /open-api/yaml
- environment.md: add the CLAUDE_SECURESTORAGE_CONFIG_DIR row
- websocket.md: a note that the page documents what the server SENDS, citing
  #772 (chat:injected absent from the ServerMessage union) and #773 (the web
  client's mirrored types are stale on the #728 queue attachments), so neither
  is later used to 'correct' the page back
- instance-settings.md: the Self MCP projects field's help text says only
  'create whole new projects' but the flag also gates promote_project, which
  clones a caller-supplied URL (#775) -- document the grant, not the string
- retire the 'notebook project to repo-backed' phrasing in the two capability
  rows, matching self-mcp.md's managed/unmanaged vocabulary
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 8, 2026

Copy link
Copy Markdown

Deploying paddock with  Cloudflare Pages  Cloudflare Pages

Latest commit: 83ad8b2
Status: ✅  Deploy successful!
Preview URL: https://cf230d29.paddock-7u2.pages.dev
Branch Preview URL: https://docs-configuration-reference.paddock-7u2.pages.dev

View logs

@edspencer
edspencer merged commit f30b9c2 into main Aug 9, 2026
5 checks passed
@edspencer
edspencer deleted the docs/configuration-reference-0.66 branch August 9, 2026 02:32
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