Releases: oddship/moat
Release list
v0.6.2
v0.6.2 — Search Dialog Polish
A small follow-up release focused on the built-in search dialog.
Search dialog dismissal
The built-in docs shell search dialog is now easier to exit:
- clicking outside the dialog closes it
- a dedicated close button is shown inside the dialog
- pressing
Escapestill closes it in one step from the search field
Native oat dialog patterns
The built-in layout now leans on oat and native dialog behavior instead of custom modal handling:
- the topnav search trigger opens the dialog with
commandforandcommand="show-modal" - the dialog uses
closedby="any"for backdrop dismissal - the close control uses
command="close" - the search field and close control are grouped with oat's
fieldset.group
This keeps the modal behavior simpler and makes the built-in UI more consistent with oat.
Test coverage
Playwright coverage now checks that the search dialog closes correctly when:
- the close button is clicked
- the backdrop is clicked
Compatibility
This release is backward-compatible.
- built-in search remains optional
- existing search index generation is unchanged
- keyboard search shortcut behavior is unchanged
v0.6.1
v0.6.1 — Docs Shell Improvements
A small follow-up release focused on moat's built-in docs shell.
Top navigation improvements
The built-in layout now supports a cleaner split between primary and secondary top navigation links:
[[topnav]]for primary links in the top bar[[topnav_more]]for secondary links grouped underMore
This keeps the top navigation simpler while still leaving room for project links such as GitHub and RSS.
Footer config for the built-in layout
The built-in footer can now be configured with plain text and markdown links:
footer_text = "© [oddship](https://github.com/oddship) 2026"
disable_moat_citation = falseThe older [extra].footer HTML path still works as a fallback.
Topnav base path fix
Internal top navigation links now correctly honor base_path.
This fixes GitHub Pages style deployments where docs live under a project path such as /moat/ instead of the site root.
Search and feed polish
The built-in layout keeps modal search in the top navigation and now documents / as the shortcut.
When RSS feed generation is enabled, the built-in layout can expose the feed from the More dropdown.
Docs updates
The README, sample config, and docs now reflect the final built-in layout behavior for:
[[topnav]][[topnav_more]]- modal search
- RSS feed placement
- footer config
Compatibility
This release is backward-compatible.
- Existing
[[topnav]]links continue to work - Existing
[extra].footerstill works - Search and feed remain optional
v0.6.0
Highlights
Site primitives for richer content sites
moat can now power blogs, changelogs, and knowledge-base style docs more comfortably, without needing a separate mode or custom pipeline.
Wiki links
[[Page Title]]links now resolve by page title, case-insensitively- Unknown targets render as plain text instead of broken links
- This is included in
moat@latest, so reusable docs workflows that install the latest release now pick it up automatically
Date and draft frontmatter
- Pages can now define
dateanddraft - Drafts are excluded from output, nav, search, and feeds
- Dates support
YYYY-MM-DD,YYYY-MM-DD HH:MM, and full timestamps
RSS feed support
- Add
[feed]inconfig.tomlto generatefeed.xml - Feed items are sorted newest first
- Built-in layout now adds an RSS icon in topnav and feed autodiscovery metadata
Page listings and date-aware navigation
- Templates and shortcodes can use
{{ .Pages }}and{{ .SectionPages "section" }} - Sections with dated pages sort newest first in the sidebar
nav_children: falselets section index pages collapse large sections into a single nav item
Other changes
- Built-in layouts now show formatted page dates when
dateis present - Added
formatDatefor custom layouts - Added built-in
rssicon support for[[links]]and[[topnav]] - Fixed feed URLs double-prefixing
base_path - Improved built-in icon alignment and topnav layout ordering
- Updated docs Pages workflow actions to Node 24
Full changelog
v0.5.0
Highlights
Built-in client-side search
- Full-text search across all pages via
_search.jsonindex - Dialog-based UI with
/keyboard shortcut - Multi-word tokenized queries — all terms must match
- Enabled by default, disable with
[search] enabled = false
Top navigation bar
- New
[[topnav]]config section for links in the header bar - Built-in icon system (
icon = "github"renders inline SVG) - Separate from sidebar
[[links]]— backward compatible
Logo and favicon support
logoandfaviconconfig options- Inline SVG logos via
logo_inlinefor light/dark mode variants
Other changes
- Zero inline styles — layout uses oat utility classes exclusively
- Dark mode syntax highlighting fix for unstyled tokens
- HTML-escaped nav output (security hardening)
- HTML entities unescaped in search index text
- Number prefix stripping handles any digit count (1-, 01-, 001-)
- Shortcode close-tag regex cached per name
- Favicon type auto-detected (was hardcoded to SVG)
- Playwright e2e test suite (23 tests)
- New unit tests for nav and frontmatter (20 total)
- Development reference guide in docs
Full changelog
v0.4.0
Features since v0.1.0:
- config.toml support (site_name, base_path, highlight themes, extras)
- Syntax highlighting via Chroma CSS classes (70 themes, light/dark)
- Layout inheritance (block/define, _layout.{name}.html variants)
- Shortcodes ({{< name >}} block and {{< name />}} self-closing)
- Embedded default layouts — zero-config builds with oat styling
- moat init — scaffold a docs directory
- [[links]] config — sidebar links (e.g. GitHub) above page nav
- safeHTML template function for HTML in config values
- Reusable GitHub Actions workflow (build-docs.yml)
- Version injected via ldflags (no hardcoded constant)
v0.1.0
fix(ci): split build and release to avoid race condition