1
0
mirror of https://github.com/docker/docs.git synced 2026-10-23 18:09:02 +03:00

40 Commits

Author SHA1 Message Date
agent
5c858018dc docs: fix API reference banner contrast in dark mode
The API reference banner kept its light background when links switched to light colors in dark mode. Add dark background, border, and text colors matching the note callout palette.
2026-10-06 15:22:40 +00:00
maxcleme
4dcdee13f3 site: remove leftover VWO smartcode
Drops the staging-only VWO Async SmartCode snippet from the head partial
and the matching analytics.vwo account param. VWO is no longer used;
this was left over from the 2024 A/B testing trial on docs-stage.

Signed-off-by: maxcleme <maxime.clement@docker.com>
2026-10-02 15:14:28 +02:00
David Karlsson
bed22bda81 docs: Cloud Sandboxes API and SDK (#26168)
## Description

Add an experimental Sandboxes API and SDK section alongside Docker
Sandboxes under AI and agents, at `/ai/sandboxes-api/`. Cover
installation of `@docker/sandboxes`, browser and PAT authentication, and
a TypeScript walkthrough that launches the shell kit, runs a command,
and deletes the sandbox. Explain kits and image choices with examples,
along with compute sizes, quotas, permissions, resource lifecycle,
errors, and retries. Link subscription setup and billing to the shared
Docker Agentic Platform guide. Preserve the previous
`/ai/sandboxes/api/` URLs with redirects.

Uses the shared Docker Agentic Platform documentation merged in #26142.
Sibling to #26158, which introduces CLI-side Cloud Sandboxes
documentation.

Include 36 SDK cookbook recipes at `/ai/sandboxes-api/cookbook/` and the
public REST API reference at `/reference/api/sandboxes/`. Import the
generated export from `docker/sbx-api` commit `60d79c1d` (source
`1a7f4026`). Overview and installation remain maintained here. The
reference uses the shared API renderer from main, with separate
operation and schema pages, streaming and WebSocket details, and a
downloadable OpenAPI spec. An API reference link appears in the API/SDK
sidebar. A pinned manifest and import script provide the basis for later
release automation.

Examples are optional in the shared renderer; supplied examples still
have to pass schema validation. Requests without body examples use a
request-body file with instructions to prepare it. The import copies all
selected recipes and the OpenAPI specification byte for byte from the
corrected upstream export, without patches or link rewrites. The broken
naming recipe remains temporarily excluded.

This remains a draft pending validation against the published npm SDK.
The imported cookbook contains the TypeScript-only guidance, five-minute
request deadlines, kit-readiness explanation, active-policy status
requirement, and snapshot-deletion and lifetime-renewal restrictions.

Validation: scoped Markdown and Vale checks, full Hugo build, rendered
navigation, redirects, and internal links, and TypeScript type-checking
against the generated public SDK from `docker/sbx-api` commit
`68f214b9`. Import validation also covers all 60 REST operations and 188
schema definitions, 1,198 imported-page links and anchors,
desktop/mobile rendering, Markdown output, spec delivery, and a repeat
import. The shared renderer tests, strict generation for all five APIs
(zero diagnostics), full Hugo build, and verification of 453
HTML/Markdown page pairs and API links pass. No live sandbox execution.
The corrected export passes strict generation for all five APIs with
zero diagnostics, scoped Markdown/Vale lint, a full Hugo build, and
verification of 453 HTML/Markdown page pairs and API links. A repeat
import produces identical files. The spec update changes examples only;
schemas and operations are unchanged.

@netlify /ai/sandboxes-api/

Generated by Codex

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-09-24 18:06:30 +02:00
David Karlsson
5c18bca350 docs: migrate AI Governance API reference (#26125)
## Summary

Vendor the OpenAPI 3.2 specification merged in
docker/governor-services#755 and move AI Governance onto the unified API
reference renderer while preserving its existing URLs. This supersedes
#26067, which vendors an earlier upstream revision and retains the
legacy renderer.

@netlify /reference/api/ai-governance/latest/

[Deploy
preview](https://deploy-preview-26125--docsdocker.netlify.app/reference/api/ai-governance/latest/)

Generated by Codex
2026-09-22 08:58:30 +02:00
David Karlsson
c93c72c7c2 Merge pull request #25979 from dvdksn/codex/sandbox-interactive-diagram
docs: prototype interactive Sandboxes diagram
2026-09-21 16:23:46 +02:00
David Karlsson
9b1f7de05f docs: unify Hub, DVP, and Registry API references (#26048)
@netlify /reference/api/

[Preview the API
reference](https://deploy-preview-26048--docsdocker.netlify.app/reference/api/)

Adds a shared API reference experience for Hub, DVP, and Registry: a
catalog, operation navigation, linked schemas, request and response
examples, and matching HTML and Markdown output. A validation and
generation pipeline prepares the reference data for Hugo and runs as
part of Docker and Netlify builds.

Migrates the three specifications to OpenAPI 3.2, correcting response
shapes, nullable fields, and authentication and token examples. The Hub
migration also corrects SCIM contracts and CSV exports; DVP gains
complete report response schemas and examples. Registry keeps its
documented Hub-specific subset, with authentication and media
negotiation expressed through OpenAPI security and content fields.

Validation is strict for both checks and generation, with no exception
baseline or bypass flag. The build uses the migrated sources directly,
without migration scripts or records.

Page and specification URLs remain stable, including the DVP alias.
Operation and schema anchors change. Engine and Governance retain their
existing references.

Validated locally with Go tests, strict validation of all three
specifications (zero diagnostics), scoped formatting and lint, and a
full Hugo build checking all 176 HTML/Markdown page pairs, example
parity, reference links, and byte-identical published specifications. A
browser check confirmed raw CSV rendering and the generated request
header. No live API requests were made.
2026-09-17 16:56:32 +02:00
David Karlsson
fd74c4a89f Merge pull request #25955 from dvdksn/codex/add-docs-honeypot
docs: add bot-detection honeypot
2026-08-27 15:53:29 +02:00
David Karlsson
a4dd1dfb76 docs: add bot-detection honeypot
Automated crawlers had no dedicated trap route in the docs site. Add a hidden site-wide footer link to a noindex page whose existing Marlin pageview identifies requests.

Co-Authored-By: Codex <codex@openai.com>
2026-08-27 11:06:43 +00:00
Codex
53f24e10a0 docs: hide Agentic Platform subtree
Agentic Platform child pages remained visible to generated discovery indexes because only the section root disabled sitemap output.

Cascade the sitemap setting and reveal hidden descendants only within the active sidebar branch.
2026-08-27 09:01:41 +00:00
Craig Osterhout
ae45f40caa dap (#25941)
<!--Delete sections as needed -->

## Description

<!-- Tell us what you did and why -->

## Related issues or tickets

<!-- Related issues, pull requests, or Jira tickets -->

## Reviews

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

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

---------

Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
Co-authored-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-26 15:42:04 -05:00
David Karlsson
678542f456 docs: add automated what's new highlights (#25729)
## Summary

Replace the static Featured topics section with a data-driven Whatʼs new
timeline. Show the five most important launches by default and let
readers expand the full curated 30-day archive.

Run a daily Claude Sonnet 5 curator over a rolling 30-day window, with
manual dispatch support, deterministic validation, and bot-managed pull
requests. Package the editorial workflow as the reusable
`curate-whats-new` repository skill so Docker Agent and other Agent
Skills-compatible clients can invoke the same process.

Preserve the human-reviewed July 13 through August 11, 2026 result and
flexible selection criteria as a regression example outside the skillʼs
runtime context.

@netlify /

[Homepage
preview](https://deploy-preview-25729--docsdocker.netlify.app/)

Generated by Codex
2026-08-12 17:23:31 +02:00
Trung Nguyen
824235ad10 fix(gordon): empty-state scroll and wheel-chaining bugs
- Make outer messagesContainer the sole always-on scroller and use my-auto
  on the empty-state root so the robot's top stays at scrollTop=0 and is
  always reachable, even on short viewports.
- Add overscroll-behavior: contain to the drawer paper and messages
  scroller so the wheel doesn't chain out to the docs page behind.
- Drop the robotFloat keyframe (re-rasterises the SVG every frame while
  idle) and size the robot with clamp(80px, 35%, 160px) so it stays
  compact on short drawers.
2026-07-01 15:45:36 +02:00
David Karlsson
f02e2a5633 Revamp the guides section: taxonomy, single-page structure, and new landing/filter UX (#25338)
## What

A full revamp of the `/guides` section — taxonomy, structure, and UX.

Preview: https://deploy-preview-25338--docsdocker.netlify.app/guides/

### Taxonomy & structure
- Replaces the sprawling 24-tag set with a focused 9-tag taxonomy
aligned to use case / SDLC: **Languages & frameworks, AI, Testing,
CI/CD, Security, Databases, Deployment, Admin, Hands-on labs**.
- Removes the languages taxonomy entirely (`data/languages.yaml` and all
`languages:` front matter).
- Collapses all multi-page guide series into single pages, with aliases
so old sub-page URLs continue to resolve.
- Deletes redirect-only shim pages and flattens directory-wrapped single
pages.

### Landing page (`/guides/`)
- A clean index: hero, then category sections listing each guide as a
plain **title / summary** row.
- **Browse rail** (sticky, left): click a topic to filter the page to
just that topic's guides; "All guides" resets. A count + Clear bar
appears while filtering.
- **Text filter**: instant client-side search over title, summary, and
tags. Topic filter and text search are mutually exclusive and share the
same flat-list view.
- No more "Featured guides" section.

### Guide content pages
- Removes the left sidebar for the guides section (mobile drawer kept).
- Centered reading column (`92ch`) with the TOC taking the remaining
width.
- Summary rendered as a lead paragraph under the h1.
- TOC scrollbar auto-hides until hover; breadcrumbs render at a
consistent size inside and outside `prose`.

## Notes
- Deep full-text search across guide bodies is still handled by the
existing site-wide Pagefind (⌘K); the landing filter is the fast
metadata-narrowing surface.
- `series.html` is retained — it's still used by `get-started` pages.

## Validation
- Site builds clean locally (Hugo dev server, no errors / broken refs).
- All collapsed sub-page URLs redirect via aliases.

## Follow-ups

- Prune guides that we no longer need/want
- Tighten the guides that span too many concepts (e.g. language guides;
remove cicd/deploy/sscs)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-01 10:47:10 +02:00
Usha Mandya
721054f0ff Update footer link to Docker Terms of Use
Rename the footer "Terms of Service" link to "Terms of Use" and point it
to https://www.docker.com/legal/docker-terms-use/.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 10:13:35 +01: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
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
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
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
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
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
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
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
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
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
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
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
David Karlsson
f88723afe2 site: add mainEntityOfPage, inLanguage schema.org metadata
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-02-23 17:29:31 +01:00
David Karlsson
90e2cb52fa chore: migrate to Hugo v0.146.0 new template lookup system
- layouts/partials/ → layouts/_partials/
- layouts/shortcodes/ → layouts/_shortcodes/
- layouts/_default/_markup/ → layouts/_markup/
- layouts/_default/*.html → layouts/*.html (flatten _default/)
- layouts/index.html → layouts/home.html
- layouts/index.*.json/txt → layouts/home.*.json/txt
- layouts/_default/index.llms.txt → layouts/home.llms.txt
- layouts/tag/ → layouts/tags/ (match /tags/ URL path)
2026-02-19 16:09:15 +01:00