Commit Graph
57 Commits
Author SHA1 Message Date
Trung Nguyen 02b412b178 Docs: answer with cards (steps, tables, notes, follow-up questions) in Gordon chat (#26452)
## Description

Gordon answers everything in plain markdown, even when the answer is a
procedure or a comparison. Those answers are harder to scan than they
need to be. This PR lets Gordon put a small card inside its answer when
that helps:

- **Steps** for procedures, with commands in code boxes
- **Tables** for comparisons (limits, plans, options)
- **Notes** for warnings, active incidents or tips
- **Code snippets** for config files
- **Follow-up questions** as chips. Selecting one asks it as your next
question.

```
You can containerize it with docker init, then run it with Compose.

┌───────────────────────────────────────────────┐
│ Containerize a Node.js app                    │
│ ① Generate the Docker assets                  │
│   [ docker init ]                             │
│ ② Build and run the app                       │
│   [ docker compose up --build ]               │
│ ▌ Use Docker Hardened Images for security     │
│ ( How do I add a database service? )          │
└───────────────────────────────────────────────┘

Sources:
- https://docs.docker.com/guides/nodejs/
```

Short answers, explanations and greetings stay plain markdown.

### How it works

```
chat ── "I can draw cards" (ui: "openui-v1") ──▶ Gordon
chat ◀── markdown answer, with at most one ```openui-lang block ── Gordon
chat: draws the block as a card, everything else as markdown
```

- The chat sends one extra field with each question. Only then does
Gordon's backend tell the model it may add a card. Without the field,
answers are the same as today.
- A card is a fenced block of [OpenUI
Lang](https://www.openui.com/docs/openui-lang) inside the normal answer
text, so the conversation history and stored messages stay plain text.
- The chat draws the block with its own styles. Anything it doesn't
recognize is left out, and if the card code can't load, the block shows
as a plain code block.

### Visual change to all answers

Gordon's answers are no longer inside a grey bubble. A framed card
inside the grey bubble looked like a box in a box. Answers now sit on
the panel background at full width, and the card stands out as its own
block. Your own messages keep the blue bubble.

<!-- screenshots: before / after, light and dark -->

### Rollout

- Cards are **on in local builds and deploy previews**, and **off in
production**.
- To turn them on in production, set `params.gordon.cards: true` in
`hugo.yaml`.
- Gordon's backend already supports this, so no other change is needed.

### Other notes

- **Safety:** card text from the model is only ever inserted as text,
never as HTML.
- **Page weight:** the card code (about 120 KB gzipped) is a separate
bundle. It's only downloaded when an answer first contains a card, never
on page load.
- **Copy button:** copies the answer with cards written out as markdown
(numbered steps, a table, `> [!NOTE]`), not the raw card code. Follow-up
chips are left out.
- **Instructions Gordon gets:** the prompt lives entirely in Gordon's
backend, which injects it when the chat sends `ui: "openui-v1"`. This
repo only has the component list the chat draws
(`assets/js/gordon-cards/components.mjs`). The backend's card prompt
describes the same components, so when adding or changing one, the
backend's prompt changes with it.
- **New dependencies:** `@openuidev/lang-core` (the OpenUI Lang parser)
and `zod`, pinned. Its usage telemetry never runs in a browser, and
`.npmrc` already blocks install scripts.

### How to test

1. Run `docker compose watch` and open http://localhost:1313. Local
builds use Gordon's staging backend.
2. Open Gordon from the header and ask:
- **Should show a card:** "How do I containerize my Node.js app?", "What
are the Docker Hub pull limits?", "How do I set up a registry mirror?"
   - **Should stay plain text:** "What is Docker Scout?", "hi"
3. Select a follow-up chip. It should ask that question.
4. Select **Copy** on an answer with a card. The pasted text should be
markdown.
5. Reload the page. Cards should come back from the conversation
history.
6. Check dark mode.
7. In the browser's Network tab, check:
   - each question to `/public/ask` includes `"ui": "openui-v1"`;
   - `gordon-cards.js` only loads after the first answer with a card.

## Related issues or tickets

<!-- none public -->

## Reviews

- [x] Technical review
- [ ] Editorial review
- [ ] Product review
2026-10-27 17:16:06 +01: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 63ddb2912c Merge pull request #25710 from dvdksn/codex/migrate-rumdl
build: migrate Markdown tooling to rumdl
2026-08-05 09:16:24 +02:00
dependabot[bot] 7486675995 chore(deps): bump @docker/marlin-sdk-web-public from 0.5.0 to 0.6.0 (#25505)
Bumps @docker/marlin-sdk-web-public from 0.5.0 to 0.6.0.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@docker/marlin-sdk-web-public&package-manager=npm_and_yarn&previous-version=0.5.0&new-version=0.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-07 15:05:40 +01:00
dependabot[bot] 4a7f8f18fa chore(deps): bump @docker/marlin-sdk-web-public from 0.4.0 to 0.5.0
Bumps @docker/marlin-sdk-web-public from 0.4.0 to 0.5.0.

---
updated-dependencies:
- dependency-name: "@docker/marlin-sdk-web-public"
  dependency-version: 0.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-30 01:43:51 +00:00
dependabot[bot] 79995d0b31 chore(deps): bump @docker/marlin-sdk-web-public from 0.3.0 to 0.4.0
Bumps @docker/marlin-sdk-web-public from 0.3.0 to 0.4.0.

---
updated-dependencies:
- dependency-name: "@docker/marlin-sdk-web-public"
  dependency-version: 0.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-22 19:23:30 +00:00
Harrison Crosse 80a807d3ea deps: bump @docker/marlin-sdk-web-public to 0.3.0 (#25257)
Bumps `@docker/marlin-sdk-web-public` from 0.2.0 to 0.3.0.
2026-06-04 10:10:03 +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 KarlssonandClaude Opus 4.7 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 KarlssonandClaude Sonnet 4.6 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
Michael Irwin 4959df3e31 Add new guides for all of the new labspaces 2026-04-02 14:42:00 -04:00
David Karlsson 6dabf0d176 deps: upgrade npm dependencies
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-03-17 09:19:07 +01:00
dependabot[bot] 5b592eb81a build(deps): bump tar in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the / directory: [tar](https://github.com/isaacs/node-tar).


Updates `tar` from 7.5.10 to 7.5.11
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.10...v7.5.11)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.11
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 21:31:52 +00:00
dependabot[bot] c3a10ae7e9 build(deps): bump tar in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the / directory: [tar](https://github.com/isaacs/node-tar).


Updates `tar` from 7.5.9 to 7.5.10
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.9...v7.5.10)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.10
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-05 20:38:53 +00:00
dependabot[bot] 65b812f6e7 build(deps): bump tar in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the / directory: [tar](https://github.com/isaacs/node-tar).


Updates `tar` from 7.5.7 to 7.5.9
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.7...v7.5.9)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.9
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-18 07:48:08 +00:00
dependabot[bot] 655a3aaaa5 build(deps): bump tar in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the / directory: [tar](https://github.com/isaacs/node-tar).


Updates `tar` from 7.5.3 to 7.5.7
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.3...v7.5.7)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.7
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-28 17:26:01 +00:00
dependabot[bot] ec53fc444c build(deps): bump tar in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the / directory: [tar](https://github.com/isaacs/node-tar).


Updates `tar` from 7.4.3 to 7.5.3
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.4.3...v7.5.3)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.3
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-17 14:06:19 +00:00
David Karlsson d3a595ef6a site: use gordon for ask ai
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2026-01-13 12:21:28 +01:00
David Karlsson 7418c6c0f3 deps: delete unused @tailwindcss/nesting package
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2025-11-03 15:27:13 +01:00
David Karlsson 8e6cc3deed deps: upgrade prettier-plugin-tailwindcss to v0.7.1
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2025-11-03 15:24:10 +01:00
David Karlsson b41b7ab11b deps: upgrade prettier to v3.6.2
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2025-11-03 15:24:10 +01:00
David Karlsson 1cb27f2f58 deps: upgrade markdownlint to v0.38.0
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2025-11-03 15:24:07 +01:00
Arthur 038e6dc682 chore: update Tailwind to v4 (#22666)
- Extract classes to utilities and components.
- Reduce number of colors used.
- Harmonize button colors.
- Restyle admonitions.
- Move **Page options** button to main article.
- Various color tweaks.
2025-05-28 08:37:10 +01:00
David Karlsson 5d8488b0fd deps: update transitive node.js dependencies
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-11-18 10:54:06 +01:00
David Karlsson 6e38856d9f deps: bump @floatingui/dom
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-11-18 10:50:53 +01:00
David Karlsson 7980ee8dca deps: bump tailwindcss and plugins
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-11-18 10:49:42 +01:00
David Karlsson 3cf7531c0e deps: bump postcss
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-11-18 10:48:56 +01:00
David Karlsson e748d24301 deps: bump alpinejs to v3.14.3
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-11-18 10:46:27 +01:00
dependabot[bot] 33335fa093 build(deps): bump cross-spawn from 7.0.3 to 7.0.5
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.5.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.5)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-16 06:46:18 +00:00
David Karlsson cac579e760 deps(dev): update prettier-plugin-tailwindcss to v0.6.8
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-09-27 12:09:29 +02:00
David Karlsson 0b30dbd231 deps: update tailwindcss to v3.4.13
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-09-27 12:09:29 +02:00
David Karlsson a5d0beb21d deps: update postcss to v8.4.47
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-09-27 12:09:29 +02:00
David Karlsson 31c573c27f deps: update autoprefixer to v10.4.20
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-09-27 12:09:29 +02:00
David Karlsson a9179a5086 deps: update @floating-ui/dom to v1.6.11
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-09-27 12:09:29 +02:00
David Karlsson d3b966e9f6 deps: update material-symbols icons to v0.23.0
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-09-27 12:09:29 +02:00
David Karlsson 55e5c95981 deps(dev): update markdownlint@0.35.0, markdownlint-cli2@0.14.0
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-09-27 12:09:26 +02:00
David Karlsson 4443d3640a hugo: update layout architecture
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-09-16 14:43:05 +02:00
David Karlsson b857d14fb3 build(deps): upgrade autoprefixer
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-06-24 10:00:43 +02:00
David Karlsson 5ee936c15c build(deps): upgrade tailwind
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-06-24 09:59:38 +02:00
David Karlsson 39ea097c8b build(deps): upgrade floating-ui
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-06-24 09:58:37 +02:00
David Karlsson a01215d2bc build(deps): upgrade postcss
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-06-24 09:56:53 +02:00
David Karlsson 825903b941 build(deps): upgrade prettier
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-06-24 09:56:11 +02:00
David Karlsson 7cfa4f2f63 build(deps): upgrade markdownlint to v0.34
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-06-24 09:55:10 +02:00
David Karlsson aa497de6c9 build(deps): upgrade alpinejs to 3.14.1
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-06-24 09:54:18 +02:00
dependabot[bot] 1b908385cb build(deps): bump braces from 3.0.2 to 3.0.3
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-11 04:09:42 +00:00
David Karlsson 97307d4c66 search: pagefind v1.1.0
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-05-23 14:05:59 +02:00
David Karlsson 6ccbfa3f64 hugo: use fuse.js search instead of algolia
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-04-26 14:36:13 +02:00
a846de1787 Add documentation for core Docker concepts and guides (#19691)
* Added the-basic pages
---------

Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
Co-authored-by: Michael Irwin <mikesir87@gmail.com>
Co-authored-by: Craig Osterhout <103533812+craig-osterhout@users.noreply.github.com>
2024-03-27 14:09:35 -07:00
David Karlsson 36d3f62159 feat: add tooltip partial
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-02-23 15:03:27 +01:00
David Karlsson 0fec9e909c build(deps): upgrade nodejs prod dependencies
Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
2024-02-01 10:00:04 +01:00