Page extras
Announcement bar, edit links, feedback widget, last-updated date and the changelog.
Everything on this page is opt-in via site.json. Nothing renders until you configure it. This demo site has all of them enabled, so you can see each one live.
Announcement bar
The bar above the topbar. Markdown text with an optional dismiss button. The dismissal remembers the announcement’s id, so a new id re-shows the bar to everyone:
"announcement": {
"id": "release-2026-06",
"text": "**v2 is out**: [release notes](/changelog/)",
"dismissible": true
}Outdated-version banner
Automatic. No configuration is needed beyond the version manifest. Readers on a non-latest version see a banner linking to the same page in the latest version.
Edit this page and last updated
At the bottom of every article:
"editUrl": "https://gitlab.com/acme/docs/-/edit/main/content"The page’s content path is appended automatically. “Last updated” appears when dates exist. Set enableGitInfo = true in hugo.toml to pull dates from git history.
Feedback widget
“Was this page helpful?” with Yes/No at the end of each article (look below). Votes POST as JSON to your endpoint:
"feedback": { "url": "https://feedback.acme.com/api/docs" }{ "href": "/docs/v1_0_0/en/install/", "helpful": true, "version": "v1_0_0", "lang": "en", "ts": "2026-06-12T10:00:00Z" }No personal data is collected. The endpoint must respond 2xx and allow CORS from the docs origin. A short Cloudflare Worker or Netlify function forwarding to a Slack webhook or spreadsheet is the typical receiver.
Caution
This demo site posts to
httpbin.org(a public echo service) purely so the buttons work. Replace or removefeedback.urlbefore shipping.
Printable handbook
The book icon in the settings drawer opens a handbook: the entire current version and language assembled into one page. It starts with a cover, then every section and page in sidebar order, each chapter starting on a fresh sheet. Open it and print to PDF (Ctrl/⌘ P) to get a single coherent manual.
It is a Hugo output format, enabled on each language root’s _index.md:
---
title: "English"
outputs: ["HTML", "Handbook"]
---That produces one handbook per version and language at docs/<version>/<lang>/handbook.html. It reuses the print stylesheet, always prints with the light theme (ink-friendly and readable) and needs no JavaScript.
Because it is plain HTML, you can also feed it to any HTML-to-PDF tool in your CI pipeline to produce a real, page-numbered PDF. See Print and handbook.
Note
Interactive embeds (Mermaid, draw.io, OpenAPI, PDF) render via JavaScript, so in the static handbook they show a short “view online” note instead. All text, code, images, admonitions, tables and tabs are included in full.
Changelog
A multilingual release-notes section at /changelog/, with one page per release showing the date, colored badges and full Markdown. Create:
content/changelog/
├── _index.md ← title, type: docs, layout: changelog-list, cascade type
└── en/
├── _index.md ← layout: changelog-list, cascade layout: changelog
└── v1_0_0.md ← title, date, badges, body---
title: "v1.0.0"
date: 2026-06-01
description: "First stable release."
badges: [added, fixed, breaking]
---Badge vocabulary (translated and theme-colored): added, changed, fixed, deprecated, removed, breaking, security, performance, docs. Each language gets an RSS feed automatically. Copy the _index.md files from this site’s exampleSite/content/changelog/. The front matter wiring matters.