Changelog
What's new in Aardvark — releases and notable changes, newest first, filterable by tag.
Everything new in Aardvark, newest first. Releases carry a version badge; use the tag cloud on the right to filter the timeline by area — pick more than one to combine them.
Filter by tag
Ask AI highlights code without calling out
Opening the Ask AI panel used to fetch highlight.js from a CDN the first time a reader asked a question. It doesn’t any more: answers are highlighted by the lexer Aardvark already uses for your pages, so the assistant makes no third-party request, needs no extra Content-Security-Policy origin, and still works where that CDN is unreachable.
The colors are unchanged: answers were already painted from your theme’s syntax palette and still are. What has gone is the extra stylesheet that remapped highlight.js’s class names onto that palette, because the built-in lexer emits the same classes your own code blocks use. An answer still stays plain while it streams and is colored in one pass once it finishes — what no longer happens is the repaint when the CDN script arrived late and recolored an answer already on screen.
The trade is breadth. The built-in lexer covers 20 languages — JSON, Bash, Python, JavaScript, TypeScript, Go, PHP, Rust, Ruby, Java, C, C++, SQL, YAML, INI/TOML, CSS, SCSS, XML/HTML, Markdown and Aardvark’s own template syntax, plus the usual aliases. Anything outside that list renders as readable plain text where the CDN’s grammar set would have colored it.
Released in 0.3.3. See Ask AI.
Maps run on your own site, not a CDN
{% map %} used to pull MapLibre GL JS from a public CDN at runtime. It now bundles a
runtime served from your own site and publishes the map worker as a same-origin asset, so
nothing executable in a map comes from a third party. A map keeps working when a CDN is
blocked or slow, and it needs no CDN allowance in a Content-Security-Policy.
The runtime is read out of your own node_modules, so a site upgrading from an earlier
release has to install mantine-map 0.4.0 — add it to package.json and run your package
manager, since it is the installed tree that decides and a listed-but-uninstalled package is not
a copy Aardvark can build against. Until that copy is there, the build warns,
drops the interactive map and falls back to the accessible list of locations the tag always
renders for readers without JavaScript — the build still succeeds, which is what makes a
vanished map easy to overlook. Pin the version exactly: a copy that is not 0.4.0 is dropped the
same way, since that is the version the map surface is built against. Sites scaffolded by 0.3.3
already carry the pin. On 0.3.3 the install is required; a later release ships the runtime inside
Aardvark itself and drops the step.
Three knobs are gone with the CDN they pointed at: map.maplibreVersion, map.maplibreJs
and map.maplibreCss no longer do anything, and are ignored without a warning — delete
them rather than waiting to be told. If you set a Content-Security-Policy, a map now needs
worker-src 'self' and img-src 'self' data: blob:; the basemap’s own style, tile, glyph
and sprite origins still belong under connect-src/img-src, since those carry map data
rather than code.
The runtime is only shipped by sites that use it: a page tree with no {% map %} emits
neither the MapLibre bundle nor the worker.
Released in 0.3.3. See Map.
Ask-AI reader assistant
An optional Ask AI assistant answers reader questions grounded in your docs, backed by a metered cloud gateway. Bring your own key, or use the bundled, capped allowance to try it out.
Build-time accessibility contrast audit
vark build now runs a non-fatal WCAG color-contrast audit over your theme
colors (light and dark) and reports any pair that falls below the configured level, so
regressions surface before they ship. Read more under Accessibility.
Faster dev-loop rebuilds
vark dev keeps edit-loop rebuilds fast by skipping Open Graph card rendering —
then the build’s heaviest phase, and one that only matters when you ship. Full vark build output is unchanged. Publish-only phases added since are skipped in dev the
same way: the whole-site PDF, from 0.1.7. Why Aardvark still re-renders every
page covers the design thinking.
Generate the CLI reference from `vark --help`
The CLI reference page is now generated straight from vark --help, so every
flag and subcommand stays in lockstep with the code:
- No hand-maintained option tables to drift
- Each subcommand is documented from its own
--help
See the CLI reference for the full command list.
Index OpenAPI descriptions for search
Operation and schema descriptions from your OpenAPI spec are now part of the search index, so a reader searching for an endpoint’s behavior lands on the right reference section — not just pages that happen to mention it in prose.
Interactive Mantine islands
Embed any Mantine component as an interactive island straight from Markdown. Islands are optionally prerendered to static HTML at build time for crawlers and first paint, then rehydrated on the client for full interactivity.
Multi-language sites
Serve translated content from per-language directories with an automatic language
picker. vark build --translate fills missing or changed pages with a
model, grounded in the site’s definitions glossary; unchanged pages are skipped
via a content-hash cache.
Social unfurl cards (Open Graph)
Every page can render a branded 1200×630 Open Graph card — your logo over a gradient
of the theme’s primary color — rendered fresh under _aardvark/og/ on every production
build, and skipped entirely by vark dev so the editing loop stays fast.
Standardized code-block Copy & Download buttons
Every code block — on the page, in the file-tree modal, and in OpenAPI request/response samples — now shares one Copy and Download affordance, so the interaction is identical everywhere a reader meets code. See the components library.