The docmd 0.7.3 release delivers significant new authoring capabilities, a production-grade migration engine for users switching from competing platforms, and a complete overhaul of the Mermaid diagram rendering pipeline. We have also unified the icon rendering logic across all interactive containers and introduced deeply contextual pagination logic.

✨ Highlights

🚀 Multi-Service Migration Engine

We have replaced the legacy internal config migration tool with a full-featured migration engine that can move your entire documentation project from a competing platform to docmd in a single command.

Supported Sources

Source Command Config Detected
Docusaurus npx @docmd/core migrate --docusaurus docusaurus.config.js / .ts
MkDocs npx @docmd/core migrate --mkdocs mkdocs.yml
VitePress npx @docmd/core migrate --vitepress .vitepress/config.[js|ts|mjs]
Astro Starlight npx @docmd/core migrate --starlight astro.config.mjs / .ts

Each migration will:

  1. Detect the source project’s configuration file and extract the site title.
  2. Safely move all existing files into a <source>-backup/ directory.
  3. Copy the documentation source files (docs/, src/content/docs/, etc.) into docmd’s standard docs/ structure.
  4. Generate a ready-to-use docmd.config.js with sensible defaults.
cd my-docusaurus-site
npx @docmd/core migrate --docusaurus
npx @docmd/core dev

Note: Because every documentation platform handles complex logic like sidebars, versioning, and internationalization (i18n) via proprietary code or APIs, docmd does not attempt to auto-translate these configurations to avoid breaking your build. The migration engine focuses purely on safely moving your Markdown content and assets, while leaving the setup of navigation.json and localisation to you via docmd’s simple native APIs.

Read our new comprehensive Migration Guides to see exactly what gets migrated and the easy steps required to map your previous tool’s configuration to docmd.

📝 Code Block Titles

You can now add a descriptive filename or title to any fenced code block by placing a quoted string after the language identifier. This renders a clean, Mintlify-style header bar above the code.

```javascript "config.js"
export default {
  title: "My Site"
};
```

The title is rendered as a semantic label (not a heading), so it will never appear in the Table of Contents or interfere with your page structure.

📊 Interactive Mermaid Diagrams

We have completely overhauled how docmd renders Mermaid diagrams, turning static SVGs into deeply interactive visual elements.

  • Smart Scaling: Diagrams are rendered at full Mermaid quality and then intelligently scaled to fit the content width using CSS transforms, preserving all label and edge positioning.
  • Pan & Drag: Click and drag to pan across large diagrams.
  • Zoom Controls: Dedicated zoom in/out buttons appear on hover for precise inspection.
  • Fullscreen Mode: A native fullscreen toggle allows users to expand complex charts for distraction-free viewing.
  • Lucide Icon Integration: The Lucide icon pack is registered directly into the Mermaid engine (icon:icon-name), enabling rich architecture diagrams with the same icons used in your sidebar and tabs.
  • Dark Mode: Diagrams and their containers now render correctly in dark mode with properly themed borders and backgrounds.

✨ Isomorphic Container Icons

We have refactored the core parser to use a shared Container Integrity Engine. This ensures that all interactive elements—Callouts, Cards, Collapsibles, and now Tabs—support a unified icon:name syntax.

Icons in Tabs

You can now add any Lucide icon directly to your tab labels, providing immediate visual context to your users. This is particularly useful for differentiating between package managers, operating systems, or programming languages.

::: tabs
== tab "npm" icon:box
npx @docmd/core dev

== tab "Bun" icon:zap
bunx docmd dev
:::

All icons are rendered as optimised inline SVGs, maintaining docmd’s commitment to zero-layout-shift and sub-100ms navigation performance.

⚡ First-Class Bun Support

Following the rapid adoption of the Bun runtime, we have updated all core documentation and “Getting Started” guides to include native Bun examples.

  • bunx support: All one-off commands now include bunx alternatives alongside npx.
  • Dependency management: Installation guides now cover bun add workflows for project-level integration.
  • Documentation Parity: English, Chinese, and German guides have been synchronised to ensure a consistent experience regardless of your preferred runtime or language.

🧭 Contextual Pagination Navigation

The Next and Previous page pagination links at the bottom of articles have received a major intelligence upgrade.

Previously, these links defaulted to generating URLs for the primary locale and latest version, which disrupted the user experience when browsing translated docs or archived versions. The Core Engine now natively understands the outputPrefix context, ensuring that your readers stay perfectly within their current language and version silo as they navigate sequentially through your documentation.

🎨 Visual Refinements

  • Softer Code Blocks: All code blocks now feature softer border-radius corners and subtle box shadows for a more premium aesthetic.
  • Dark Mode Code Borders: Added a dedicated --border-color-codeblock variable for dark mode, fixing invisible borders on code blocks and diagram containers.
  • Mermaid Container Chrome: Diagrams are now wrapped in a bordered, padded container with consistent styling across light and dark themes.

🛠️ Internal Refactoring

This release includes a significant architectural cleanup of the docmd/parser package:

  • Refactored Utility Layer: Moved parseTitleAndIcon into a central container-helper utility. This eliminates logic duplication between the tabs and common-containers modules.
  • Custom Fence Renderer: Code block titles are implemented via a markdown-it fence renderer override, ensuring titles are never misinterpreted as content headings.
  • Performance Optimisation: The shared helper uses optimised regex patterns to reduce the overhead of parsing large documents with many interactive containers.

📝 Complete Changelog

🚀 Features & Enhancements

  • Migration Engine: New docmd migrate command supporting Docusaurus, MkDocs, VitePress, and Astro Starlight.
  • Code Block Titles: Added language "title" syntax for filename headers on fenced code blocks.
  • Tabs Icons: Added support for icon:name syntax in the == tab sub-delimiter.
  • Shared Parser Logic: Created a unified container-helper utility for parsing titles and icons across all containers.
  • Mermaid Interactive Controls: Diagrams now feature native pan, zoom, and fullscreen capabilities with smart transform-based scaling.
  • Mermaid Icons: Registered the Lucide icon pack within the Mermaid rendering engine.
  • Context-Aware Pagination: Next/Previous links now automatically respect the active locale and version silos.
  • Bun Ecosystem: Comprehensive update to all Getting Started and Installation guides to include Bun/bunx examples.
  • Dark Mode Code Borders: Added --border-color-codeblock dark mode variable for proper border visibility.
  • Visual Consistency: Standardized icon sizes and alignment within tab navigation bars.

🐛 Bug Fixes

  • Navigation Sync: Fixed an inconsistency in the Chinese (zh) navigation where a legacy “Recipes” section was incorrectly visible.
  • Code Block Title Rendering: Fixed a critical bug where titles after the language identifier were being parsed as markdown headings instead of being captured as code block labels.
  • Mermaid Scroll Hijacking: Fixed an issue where mouse wheel scrolling was blocked when hovering over Mermaid diagrams.
  • Mermaid Dark Mode: Fixed invisible diagram container borders in dark mode.
  • Parser Robustness: Fixed an edge case where nested containers within tabs could occasionally fail to render if they contained specific Markdown-it fence markers.
  • Locale Consistency: Corrected several technical translation inaccuracies in the German content-ux guides.

Migration Guide

For end users: No changes required. npm update @docmd/core is sufficient.

For plugin authors: If you were manually parsing tab headers, we recommend switching to the exported parseTitleAndIcon utility from @docmd/parser to maintain compatibility with future icon enhancements.

For users of other documentation platforms: Run npx @docmd/core migrate --help to see all available migration sources and get started in seconds.