542 Commits

Author SHA1 Message Date
David Karlsson b586d74072 Merge pull request #25392 from dvdksn/includes-cleanup
Remove unused includes and fail the build on broken include references
2026-06-18 17:55:06 +02:00
David Karlsson 482519b7d1 hugo: fail the build on broken include references
The include shortcode previously called readFile directly, which renders
nothing when the target is missing instead of failing. That let renamed
or deleted snippets linger as silent no-ops (for example the stale
scout-early-access.md and compose/develop.md references).

Check fileExists first and errorf with the shortcode position when the
target is missing, mirroring the file/files shortcodes. Verified against
Hugo 0.163.0: valid includes still render; a missing target now fails the
build with the offending file and line.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 11:08:24 +02:00
David Karlsson bfb37fee27 Merge pull request #25279 from dvdksn/worktree-sbx-experimental-badges
sbx-cli: render experimental indicators for commands and flags
2026-06-10 14:47:29 +02:00
David Karlsson c43b2b9886 cli: use violet for experimental flag badges
Align the experimental flag badges in the Docker CLI layout with the
violet color used by the sbx-cli layout, so experimental indicators are
consistent across both reference templates.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 14:39:48 +02:00
David Karlsson 59a9547a27 sbx-cli: render experimental indicators for commands and flags
The sbx-cli layout had no handling for the experimental: true field
present in many data/sbx_cli/*.yaml files. Add visual indicators
matching the Docker CLI layout:

- Command-level (experimental: true at YAML root): magenta callout
  block below the summary table
- Flag-level (experimental: true on an option): violet badge before
  the flag description in Options and Global options tables
- Subcommands table: violet badge alongside the synopsis for
  experimental child commands

The title heading stays plain, consistent with cli.html, which signals
experimental status only through the command-level callout.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 14:39:32 +02:00
Craig Osterhout 5862e80e5b guides: update python & add files component (#25206)
<!--Delete sections as needed -->

## Description

Updated Python guide

- Removed DOI in favor of DHI only. DHI Community is now free, so
there's no reason to keep the DOI fallback path.
- Removed the git clone sample-app pattern. Maintaining external sample
repos is a burden, and split source of truth between the docs and the
sample.
- New file browser / scaffolding component. Lets users copy individual
files or scaffold the whole project with one command. Replaces the role
the cloned sample repo used to play.
- New "Secure your supply chain" topic highlighting what DHI gives you
and how to attach matching attestations to your own image in CI.
- A bunch of smaller improvements: clearer intros for each topic,
progressively updating the same app in all topics, ran and fixed issues,
etc.

https://deploy-preview-25206--docsdocker.netlify.app/guides/python/

## Related issues or tickets

ENGDOCS-3308

## Reviews

<!-- Notes for reviewers here -->
<!-- List applicable reviews (optionally @tag reviewers) -->

- [ ] Technical review
- [ ] Editorial review

---------

Signed-off-by: Craig Osterhout <craig.osterhout@docker.com>
2026-06-08 12:07:31 -07:00
David Karlsson 50eeca7b4d build: bump Hugo to 0.162.1 and fix deferred CSS template (#25264)
## Summary

The site fails to build on Hugo 0.162, which no longer allows
`templates.Defer` inside a `partialCached` partial. `head.html` called
`utils/css.html` (which defers with a global key) via `partialCached`.
This switches that call to `partial` — the global Defer key already
dedupes the work, so caching was redundant — and bumps the pinned Hugo
version in the `Dockerfile` and `netlify.toml` to 0.162.1.

Verified with a full local build on Hugo 0.162.1 extended (Node 24):
clean build, 3332 pages, no template errors.

## Learnings

- Hugo 0.162 enforces that `templates.Defer` cannot live inside a
`partialCached` partial; the build error points at the deferred
template, not the `partialCached` caller, so trace upward to the caching
call site.

Generated by Claude Code

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 13:04:49 +02:00
David Karlsson 4595cae8ac build: bump Hugo to 0.162.1 and fix deferred CSS template
Hugo 0.162 disallows templates.Defer inside a partialCached partial.
The CSS partial uses templates.Defer with a global key, so switch its
caller in head.html from partialCached to partial (the global Defer key
already dedupes the work). Bump the pinned Hugo version in the Dockerfile
and netlify.toml.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 11:05:31 +02:00
David Karlsson 4e1cedac16 Merge pull request #25235 from dvdksn/worktree-remove-api-header
Remove redundant header from API reference pages
2026-06-03 08:09:57 +02:00
David Karlsson 553c69e1b7 sbx: restructure governance docs and add API reference (#25162)
## Summary

Restructures the Docker AI Governance documentation under
\`/ai/sandboxes/governance/\` and adds the supporting API reference.

Preview links:

-
https://deploy-preview-25162--docsdocker.netlify.app/ai/sandboxes/governance/
-
https://deploy-preview-25162--docsdocker.netlify.app/reference/api/ai-governance/

### Information architecture

The existing \`security/governance\` and \`security/policy\` pages are
merged into a new top-level \`governance\` section so local-policy and
org-policy sit side by side instead of being split across unrelated
parents:

- \`/ai/sandboxes/governance/\` — section landing; explains local + org
as layered enforcement
- \`/ai/sandboxes/governance/concepts/\` — resource model, rule syntax,
evaluation, precedence
- \`/ai/sandboxes/governance/local/\` — \`sbx policy\` CLI for
individual machines
- \`/ai/sandboxes/governance/org/\` — Admin Console flow (was
\`security/governance.md\`)
- \`/ai/sandboxes/governance/monitoring/\` — \`sbx policy ls\` / \`sbx
policy log\`

### API reference

\`/reference/api/ai-governance/\` renders the Governance OpenAPI spec
vendored at \`content/reference/api/ai-governance/api.yaml\` from
\`docker/governor-services\`. Operations, schemas, examples, and status
codes are fully driven by the spec — future updates land via re-vendor,
not in-repo edits. Anything wrong in the rendered reference should be
fixed upstream and re-vendored here.

The spec has been re-vendored to the latest upstream version, which
updated the server URL to \`hub.docker.com/v2\` and added the
\`/governance/\` prefix to all API paths.

### Review focus

1. The \`/ai/sandboxes/governance/\` landing — does the local + org
framing match how the product is positioned?
2. \`/reference/api/ai-governance/\` — does the rendered spec match the
source of truth, and is anything important missing?

Generated by Claude Code

---------

Co-authored-by: Louis-Arnaud <la.catoire@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 10:05:05 +02:00
Arnaud Héritier 1d6fa0234a fix(cli): render experimental callout without markdownify round-trip
The experimental notice on CLI reference pages was being produced by
running a Hugo shortcode through markdownify. The shortcode template
embeds the icon partial, and the recent migration to multi-line
Heroicons SVGs (commit ee71c80562) pushed the inner SVG path to a
4-space indent inside the expanded HTML. markdownify then re-parsed
that HTML as Markdown and treated the indented lines (the SVG path
plus the trailing </span> and <strong>Experimental</strong>) as a
fenced code block, which is what users see on docs.docker.com.

Replace the markdownify+shortcode round-trip with the rendered HTML
inline, matching the styling of the experimental shortcode but with
no Markdown re-parse.

Fixes #25215
2026-05-30 19:17:22 +02:00
David Karlsson d95336d485 Merge pull request #25178 from dvdksn/mermaid-codeblock-hook
layouts: render mermaid code blocks as diagrams
2026-05-27 14:49:57 +02:00
David Karlsson 9789556384 layouts: render ```mermaid code blocks as diagrams
Adds a Hugo codeblock render hook that turns ```mermaid fences into
<pre class="mermaid"> containers, plus a lazily-loaded mermaid bundle
that only ships on pages that actually contain a diagram. Mirrors the
existing YouTube embed pattern (Store flag + conditional script tag in
baseof) so the main scripts.js bundle stays unchanged.
2026-05-27 11:08:46 +02:00
David Karlsson 28ca826bf1 analytics: fix Marlin endpoint URL double-encoding in head.html
Hugo's html/template JS-escapes string values inside <script> blocks.
Calling jsonify per-field produced quoted strings like "https://..."
which were then re-escaped, embedding literal quote characters in the
endpoint value passed to the SDK.

Fix by jsonifying the whole config dict at once and marking it safeJS
so html/template does not apply a second round of escaping.

Also extract the environment ternary out of the Marlin constructor call
for readability.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 15:42:49 +02:00
David Karlsson a6c2209c7f analytics: add Marlin SDK and migrate dropdown Heap markers
Introduces @docker/marlin-sdk-web-public for first-party pageview and
click analytics, bundled into scripts.js via Hugo's existing js.Build
pipeline. Config is emitted to window.__marlinConfig from head.html and
gated to prod/staging only.

Renames data-heap-id attributes on the markdown-dropdown buttons to
marlin-action so they are picked up by the SDK's auto-click tracking.

TODO: replace the REPLACE-ME endpoint placeholders in hugo.yaml with
the canonical Marlin ingestion URLs from the data-platform team.

TODO: heap.track() calls in youtube-script.html are left in place —
the public SDK exposes no equivalent track() method, so video
play/pause events cannot be migrated yet.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-05-22 13:40:16 +02:00
Michael Irwin cc85fe12f8 Merge pull request #25091 from mikesir87/add-model-prereqs-to-ai-labs
Adjust verbiage in labs using models to include DMR setup link
2026-05-19 03:22:03 -04:00
Michael Irwin 8eb80439f8 Adjust verbiage in labs using models to include DMR setup link
Resolves #25090
2026-05-18 20:17:54 -04:00
David Karlsson ee71c80562 chore: migrate icons from Material Symbols to Heroicons
Replaces @material-symbols/svg-400 (5.5 MB) with heroicons (488 KB) — an
11x reduction in icon asset size. Heroicons uses a single consistent
distribution format (24px solid SVGs, fill="currentColor") eliminating
the need for the separate utils/svg.html partial, the icon-svg-stroke CSS
utility, and the dual-path resolution logic in icon.html.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-05-18 12:05:54 +02:00
David Karlsson 3f6b396fbb Replace page actions dropdown with inline row
Render the page actions (Ask Gordon, Copy Markdown, View Markdown) as
a horizontal row of icon links below the page title, separated from the
body by a divider — emulating the Stripe docs pattern. Drops the bordered
button + dropdown UI from md-dropdown.html and the Open in Claude entry.

Also clean up dead kapa.ai references: the "Ask Gordon" action now talks
to the Alpine gordon store directly instead of clicking the header
button via an open-kapa-widget class hook. The class, the unused
glossary link hook, and the dead params.kapa config block all go away.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 11:32:28 +02:00
David Karlsson c6b69e69c3 chore: remove unused templates
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-05-01 09:46:02 +02:00
David Karlsson 29224e35d2 chore: .Site.LanguageCode was deprecated in favor of .Language.Locale
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-05-01 09:24:58 +02:00
David Karlsson 122761ce2f chore: refactor deprecated site.Data -> hugo.Data
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-05-01 09:22:27 +02:00
David Karlsson 5014f3f3fe chore: upgrade pagefind and unhide search in safari
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-05-01 09:08:22 +02:00
David Karlsson b299a17c9c chore: improve main llms.txt entrypoint
Make it shorter, only highlight main landing pages

Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-04-27 08:55:14 +02:00
David Karlsson 6fe2b1154d Add markdown output for docs homepage 2026-04-24 15:00:46 +02:00
David Karlsson ee06a88f41 chore: implement agent-readiness improvements from audit
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-04-24 13:19:28 +02:00
David Karlsson 63be81fadd Advertise the Docker docs MCP server
Publish an MCP Server Card at /.well-known/mcp/server-card.json
pointing at https://mcp-docs.docker.com/mcp, so agents doing MCP
discovery can find the official Docker docs endpoint. Mirror the
serverInfo and capabilities reported by the server's initialize
response.

Also add a one-line pointer near the top of llms.txt so LLMs fetching
the index learn about the structured-access alternative.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 15:38:34 +02:00
David Karlsson bca4905aef Declare AI content usage preferences in robots.txt
Add Content-Signal directive opting in to AI training, search indexing,
and AI input (RAG/grounding). Docker's official docs benefit from wide
distribution through AI assistants, so permitting training and grounding
is aligned with the site's purpose.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-20 15:32:47 +02:00
Craig Osterhout c3bd7fb911 guides: minor layout fixes (#24679)
<!--Delete sections as needed -->

## Description

At just the right medium width, some chips' text overlaps. Removed no
wrap for medium.
<img width="1248" height="837" alt="image"
src="https://github.com/user-attachments/assets/1ac818f2-2512-4669-891d-4b1ea0735bf0"
/>

Some tags in the left-nav have no guides (release notes, secrets, etc.).
Added conditional to make sure the tag and language has associated
guides before displaying
<img width="987" height="761" alt="image"
src="https://github.com/user-attachments/assets/d479a1d8-e287-4320-b620-6dcfab5e04da"
/>


https://deploy-preview-24679--docsdocker.netlify.app/guides/?tags=distributed-systems

## Related issues or tickets

ENGDOCS-3227

## Reviews

<!-- Notes for reviewers here -->
<!-- List applicable reviews (optionally @tag reviewers) -->

- [ ] Editorial review

Signed-off-by: Craig Osterhout <craig.osterhout@docker.com>
2026-04-10 07:34:43 +01:00
Derek Misler 68ba732d88 Apply new empty state to docs.docker.com
Signed-off-by: Derek Misler <derek.misler@docker.com>
2026-04-08 14:20:17 -04:00
Michael Irwin bfc2bfb3b0 Modify launch lab shortcode to add tear down instructions (#24640)
## Description

Modify the shortcode used to launch labs to add teardown instructions. 

In order for the teardown instructions to work reliably (since there's
no guarantee the user will be in the same directory), the startup
command also adds a flag to specify the project name (`-p labspace`).
2026-04-06 16:55:18 -05:00
Michael Irwin c2d33ae85e Merge pull request #24614 from mikesir87/add-new-labs
Create new guides for several new labspaces
2026-04-02 15:18:10 -04:00
Michael Irwin 4959df3e31 Add new guides for all of the new labspaces 2026-04-02 14:42:00 -04:00
Craig Osterhout d72c32e321 offload: product updates (#24487)
<!--Delete sections as needed -->

## Description

Updates for upcoming Offload release.

Preview:
- https://deploy-preview-24487--docsdocker.netlify.app/offload/
-
https://deploy-preview-24487--docsdocker.netlify.app/desktop/setup/vm-vdi/#use-docker-offload

## Related issues or tickets

ENGDOCS-3216
DCL-1433
#24089

## Reviews

<!-- Notes for reviewers here -->
<!-- List applicable reviews (optionally @tag reviewers) -->

- [ ] Technical review
- [ ] Editorial review
- [ ] Product review

Signed-off-by: Craig Osterhout <craig.osterhout@docker.com>
2026-04-02 10:18:14 -07:00
Michael Irwin 063bee504d Move lab launch instructions to above the fold 2026-04-02 12:17:03 -04:00
David Karlsson db740fe266 docs: add auto/system theme option to theme toggle (#24519)
> 🤖 Generated with [Claude Code](https://claude.com/claude-code)

## Summary

`theme.js` unconditionally wrote the resolved preference to
`localStorage` on every page load, permanently locking in a concrete
`"light"` or `"dark"` value even for first-time visitors — making it
impossible to track OS preference changes after any site visit. Removed
the unconditional `localStorage.setItem` from `theme.js` so the early
script only reads (never writes); the Alpine.js toggle in `header.html`
now cycles through three states (light → dark → auto), with "auto"
removing the `theme-preference` key and resolving from
`prefers-color-scheme` with a live `matchMedia` change listener so the
theme updates immediately when the OS preference changes. A contrast
icon indicates auto mode; all three icon spans are driven by Alpine
`x-show` directives rather than pure CSS dark-mode classes.

**Verified:** logic matches the standard three-state pattern;
`prefers-color-scheme` media query and `matchMedia` change listener are
the canonical browser APIs for system-preference tracking.
**Checked:** no other files reference `theme-preference` or the theme
toggle; no CSS changes required.

Closes #23177

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 06:19:52 +02:00
David Karlsson cdde205ba8 sandboxes: add sbx documentation
Add full documentation for the sbx CLI sandbox experience including
get-started, usage guide, architecture, agents (claude-code, codex,
copilot, gemini, kiro, opencode, cagent, custom-environments),
security (isolation, credentials, policy, workspace trust),
troubleshooting, and FAQ. Update _index.md as the section landing
page.

Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-03-31 17:35:01 +02:00
David Karlsson c3d814812f hugo: use partialCached for static templates
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-03-17 08:49:01 +01:00
David Karlsson e0b858adf4 site: add tooltip for gordon header btn
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-03-16 12:40:01 +01:00
Tiara Johnson e7e28c4386 Update pricing url with ref and refAction params [GRO-282] (#24339)
## Description
In order to better attribute upgrade sources, we are adding two params -
`ref` and `refAction` to the existing pricing url.
The `ref` will be "Docs" and the `refAction` will be the particular docs
page from where the pricing url click is originated.

## Related issues or tickets
https://docker.atlassian.net/browse/GRO-282

## Reviews
@akristen You should see the new url params when hovering over or
clicking any of the updated pricing urls

- [ ] Technical review
- [ ] Editorial review
- [ ] Product review

---------

Co-authored-by: Alexa Kristensen <81787716+akristen@users.noreply.github.com>
2026-03-12 09:12:44 -05:00
David Karlsson eb22a5b867 Merge pull request #24182 from derekmisler/rebrand-docker-ai-references-to-gordon-across
Rebrand "Docker AI" references to "Gordon" across docs.docker.com
2026-03-09 17:21:34 +01:00
Derek Misler 1bf9cb9c3b Rebrand "Docker AI" references to "Gordon" across docs.docker.com
Signed-off-by: Derek Misler <derek.misler@docker.com>
2026-03-06 11:48:48 -05:00
Craig Osterhout f6c676ec74 dhi: add packages and tiers
Signed-off-by: Craig Osterhout <craig.osterhout@docker.com>

spacing fix

Signed-off-by: Craig Osterhout <craig.osterhout@docker.com>

Update content/manuals/dhi/_index.md

Co-authored-by: Usha Mandya <47779042+usha-mandya@users.noreply.github.com>
2026-03-03 11:27:04 -08:00
David Karlsson 5b3eac08a6 site: truncate schema.org titles at 110 chars
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-02-25 14:27:33 +01:00
David Karlsson 3a6fef5db8 site: use array for schema.org keywords
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-02-25 14:24:17 +01:00
David Karlsson 4899ea2cf1 chore: move cli data files to data subdir
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-02-24 08:01:08 +01:00
David Karlsson 70d0c07c69 site: use content adapters for cli reference
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-02-24 08:01:05 +01:00
David Karlsson dde88001b6 site: simplify security-announcements rss page
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-02-23 17:29:32 +01:00
David Karlsson d5fd0b2f11 site: simplify base templates
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-02-23 17:29:32 +01:00
David Karlsson 33226cf897 site: simplify guides/series layouts
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-02-23 17:29:31 +01:00