Editor#
The editor is a Milkdown v7 WYSIWYG interface loaded inside the native GUI window. All content API calls go through the app:// scheme handler (in-process, no HTTP server — see GUI).
Milkdown#
Milkdown (v7, 11k+ stars) is the core editor. It’s built on ProseMirror + Remark and works with markdown natively — no HTML→MD→HTML roundtrip. Both WYSIWYG and raw markdown source modes are available via toggle.
Hotwired (Turbo + Stimulus)#
Navigation and interaction use Hotwired:
- Turbo Drive — SPA-like navigation without client-side routing
- Turbo Frames — Inline editing without hand-coded fetch calls
- Stimulus — Tiny controllers for editor mount/unmount, mode toggle, save buffer, flush
Combined bundle: ~28KB gzip.
Flush-Based Writes#
Edits accumulate in an in-memory buffer + IndexedDB (crash recovery). The filesystem is only touched on explicit “Flush” or page navigation. This prevents partial writes and reduces I/O.
Initial Page#
When the editor loads at the root URL (/), it defaults to content/_index.md (the home page). _index.md is displayed as “Home” in the sidebar and maps to the / URL path.
Supported Formatting#
The editor supports full CommonMark and GitHub Flavored Markdown (GFM), including tables, strikethrough, task lists, and auto-links.
Markdown Alerts#
The editor supports GitHub-style markdown alerts (also known as admonitions):
> [!NOTE]
> Useful information that users should know.
> [!TIP]
> Helpful advice for doing things better.
> [!IMPORTANT]
> Key information users need to know.
> [!WARNING]
> Urgent info that needs immediate attention.
> [!CAUTION]
> Advises about risks or negative outcomes.These render as colored callout blocks in the WYSIWYG editor matching the Hugo Book theme’s .book-hint styling.
Hugo Shortcodes#
Hugo/Book shortcodes (e.g., {{< hint info */)>}}, {{</* details "Summary" >}}, {{< param "name" >}}) are preserved as-is in the markdown source and highlighted as styled badges in the WYSIWYG editor. For a full list of supported shortcodes, see the Hugo Book shortcode reference and Hugo shortcode documentation. Unimplemented shortcodes pass through the editor unchanged.
Backends#
The editor stores plain markdown files. The same files can be processed by supported backends to produce a static site. See the Backends page for details on formatting compatibility per backend.