Ovellum v0.12.0
English

Edited

Glossary#

Anchor#

A documentation insertion point: the place in a generated Markdown file where the merger will splice human-written content for a given source symbol. Represented as an HTML comment:

<!-- ovellum:anchor id="src/foo.ts::formatDate" generated="…" -->

Every auto-generated section gets one. See Concepts → Anchors and zones.

Anchor ID#

The stable identifier for an anchor. Format: {relativeFilePath}::{symbolPath}. Examples: src/utils/format.ts::formatDate, src/models/User.ts::User.constructor, src/index.ts::__module__.

basePath#

Jekyll-style subpath the site is served from. Set via site.basePath (e.g. '/ovellum'). Prepended to every internal URL, asset path, canonical link, and sitemap.xml entry at render time. Authors keep writing root-relative links (/getting-started/); the build adds the prefix. Empty by default — the site is served from the root.

Auto mode#

The simplest pipeline: source to IR to Markdown. Existing output is overwritten on every build. No merge step.

Block tag#

The Markdown HTML-comment tag pair (default <!-- @manual:start --> / <!-- @manual:end -->) that fences a protected zone. Configurable via protect.blockTag.

The "Section › Page" trail rendered above the article on pages two or more levels deep in the nav. Computed from the nav tree by walking from the root to the current page; the final entry carries aria-current="page". Top-level pages get none.

CTA (call to action)#

A button on the landing-page hero that invites the reader to do something. Configured under site.landing.hero.ctas.

Draft#

A work-in-progress page, marked with frontmatter draft: true or a folder's _meta.json "draft": true (which cascades). Drafts are shown in ovellum dev with a ribbon + sidebar badge and excluded from ovellum build (and the sitemap/RSS). They're unpublished, not secret — still visible to anyone with repo access. Distinct from site.ignoreFiles, which is never parsed at all. See the Drafts guide.

The "Edit this page" link rendered under each article when site.editUrlPattern is set. The {path} placeholder is substituted with the page's source path relative to the build's working directory, so the pattern usually points at the GitHub/GitLab/Bitbucket "edit file" URL for that path.

Feature card#

One cell of the landing-page feature grid. Configured under site.landing.features[].

Frontmatter#

YAML block at the top of a Markdown file, between --- delimiters. Parsed via gray-matter. Used for page titles, descriptions, mode overrides, and more.

Hero#

The full-width title + subtitle + CTA block at the top of a landing page.

Icon registry#

The small inline-SVG icon set the default template ships with, backed by Lucide. Each icon renders at 24×24 with stroke="currentColor" and stroke-width="2", so it inherits color from the surrounding text and works for free in every theme. Public helper: renderIcon(name, opts) from the @ovellum/site package.

Hybrid mode#

The default mode. Generates from source, then merges existing protected zones from the previous output back in. Orphans go to .ovellum/orphans/.

Inline tag#

A JSDoc tag (default @preserve) that marks a doc comment as human-managed. The source-code counterpart to the block tag.

IR (intermediate representation)#

The typed shape passed from the parser to the generator. Decouples parsing from rendering.

Landing page#

A wider, marketing-style page rendered at / when site.landing.enabled is true. Hero + feature grid + optional prose

  • optional trust strip. Doc pages keep their existing URLs.

Last modified#

The "Edited" half of the page meta line. A page's frontmatter updated: pins it explicitly; otherwise read from git log --follow --diff-filter=AM (last content change, ignoring pure renames) when the file is tracked, otherwise from the filesystem mtime. Falls back to omitting the line if none resolve. Controlled by site.pageMeta.lastModified (default true); the date's wording (today / Jun 14, 2026 / 2026-06-14) follows site.dateFormat.

Manual mode#

Markdown-first static-site builder. No source parsing. Produces HTML + CSS + minimal JavaScript.

Manual block#

Synonym for protected zone. Spec calls them "protected zones"; runtime code leans "manual block".

Merger#

The package responsible for combining freshly generated content with existing protected zones. Quarantines orphans.

Orphan#

A protected zone whose source anchor no longer exists in the current IR. Quarantined to .ovellum/orphans/ with metadata; never silently dropped. See Concepts → Orphans.

Page meta#

The small line above each article showing reading time and last-modified date: 2 min read · Edited May 17, 2026. Configured via site.pageMeta; either half can be toggled off, or you can hide the whole line by disabling both.

Pagefind#

The static search indexer Ovellum ships behind site.search.enabled. Pagefind produces a static index from the built HTML and ships a small client that loads it on demand — no server, no runtime indexer. Output lands at dist/pagefind/.

Pretty URL#

Output path shape in manual mode: each page becomes {slug}/index.html so the URL is /{slug}/. Works on any static host without rewrites.

Protected zone#

A <!-- @manual:start id="…" --><!-- @manual:end --> region in a Markdown file whose contents are preserved verbatim across regeneration. See Concepts → Anchors and zones.

The @media print rules in the default template that hide the chrome (topbar, sidebar, ToC, search, prev/next, edit link), widen the article, print external link URLs inline, and avoid page-breaks inside code blocks. No config required — it kicks in whenever a reader prints.

Quarantine#

The act of writing an orphan record to disk under protect.orphanDir rather than discarding it. Orphan files are human-readable Markdown, reviewable in PRs.

Reading time#

The "N min read" half of the page meta line. Counts visible prose at ~200 wpm after stripping code blocks, inline code, link URLs, HTML, and heading punctuation. Always at least 1 minute. Controlled by site.pageMeta.readingTime (default true).

Sanitization#

The pass that strips dangerous HTML from rendered Markdown. renderMarkdown runs every source through rehype-sanitize before shiki highlights code blocks. Removed: <script>, <iframe>, <object>, <embed>, on* event handlers, and any URL whose scheme isn't on the allowlist (javascript:, vbscript:, and data: are all dropped — including data: on <img> because data:image/svg+xml can carry executable JS). See Security for the full policy.

@preserve#

JSDoc tag (the default inline tag) on a source comment that asks the generator to wrap the comment's description in a protected zone automatically — so user edits to that description survive regeneration.

Topbar nav#

The right-aligned navigation in the topbar, driven by site.topbarNav. Links render in order beside the brand on every page. External links get a small icon and open in a new tab. Below 720px the nav collapses into a hamburger button that opens a full-width sheet.

Trust strip#

The optional row of partner / sponsor / "powered by" links rendered at the bottom of a landing page, above the footer. Configured under site.landing.trustStrip.

shiki#

The TextMate-grammar-based syntax highlighter used at build time. Emits HTML with CSS variables so a single build serves both light and dark code-block themes with zero runtime cost.

ts-morph#

The TypeScript compiler API wrapper used by the parser. Provides a friendlier surface than the raw compiler API; full type information retained.

Edit this page