Skip to content

Releases: docmd-io/docmd

docmd@0.6.2 🚀 (Analytics V2 + Nav V2 + Breadcrumbs)

15 Mar 18:08
51f4656

Choose a tag to compare

docmd logo

The docmd 0.6.2 release focuses on refining the navigation architecture for complex, versioned documentation sites while providing deep insights through enhanced analytics and improving site-wide user experience with automated breadcrumbs.

✨ Highlights

Smart Version Switcher

Say goodbye to 404s when switching versions. The version switcher now intelligently checks if the current page exists in the target version. If an exact match isn't found, it gracefully falls back to the root of that version instead of showing a "Not Found" page.

Navigation Architecture V2 (navigation.json)

Manage large, versioned documentation sites with ease. You can now place a navigation.json file directly inside your versioned documentation folders (e.g., docs-05/navigation.json). This eliminates the need for massive, duplicated navigation arrays in your main docmd.config.js.

Automated Breadcrumbs

Every documentation page now features automated breadcrumbs located right above the title. This improves user orientation within deeply nested hierarchies and provides better context for both human readers and AI models. Breadcrumbs are enabled by default and can be toggled via config.layout.breadcrumbs.

Analytics V2 (Auto-Event Tagging)

The Analytics plugin has been significantly upgraded to support auto-event tagging. It now automatically tracks:

  • External Link Clicks: Understand where your users go after reading your docs.
  • Downloads: Automatically track clicks on PDFs, ZIPs, and other binary assets.
  • Search Keywords: Track what users are looking for with debounced keyword logging (can be disabled via trackSearch: false).
  • Navigation Interactions: Track Table of Contents (TOC) clicks and permalink (heading anchor) usage.

📝 Complete Changelog

🛠️ Core Generator

  • Preserve Markdown indentation in changelog container by @ghunteranderson in #82
  • V2 Nav Resolution: Added support for the navigation.json resolution pattern.
  • Breadcrumb Logic: Implemented automated crumb trail calculation based on navigation active-state.
  • Stable Version Switching: updated docmd-main.js with fetch(HEAD) validation for version links.

🛡️ Security & Stability

  • Dependency Fix: Patched a high-priority vulnerability in the flatted library related to unbounded recursion DoS in the parse() revive phase.
  • PWA Safety: Added an explicit Service Worker unregistration safety net to prevent ghost caches for users who remove the PWA plugin.

🔌 Plugins

  • Analytics V2: New autoEvents option (enabled by default) for event tracking without manual code injection.

New Contributors

📥 Upgrade

npm install -g @docmd/core

Full Changelog: 0.6.1...0.6.2

docmd@0.6.1 🩹 (Patch Fix)

11 Mar 19:50
bb20aeb

Choose a tag to compare

This is a hotfix release addressing pipeline publication issues and a critical runtime error in the plugin installer introduced in 0.6.0.

🐛 Bug Fixes

🚀 CI/CD NPM Publisher

  • Monorepo Workspaces: Fixed a major bug in the docmd Release to NPM GitHub Actions workflow where npm publish interpreted package paths as GitHub remote repositories.
  • Fail-Safe Publishing: Completely overhauled the publisher to robustly handle partial updates (e.g. ignoring EPRIVATE packages and safely skipping already-published packages) without failing the release pipeline.

🔌 Plugin Installer (Runtime)

  • Missing Registry: Resolved a critical MODULE_NOT_FOUND error that crashed docmd build on user sites. The registry/plugins.json database was inadvertently excluded from the published NPM tarball, causing imports to fail in production.
  • Explicit Whitelisting: Added the registry folder to the "files" array in @docmd/plugin-installer's package.json, ensuring the registry data is properly bundled in all future NPM releases.

📥 Upgrade

npm install -g @docmd/core

Full Changelog: 0.6.0...0.6.1

docmd@0.6.0 ✨ (TypeScript + ESM Migration)

11 Mar 18:56
71119b3

Choose a tag to compare

docmd logo

This landmark release marks a complete architectural overhaul of the docmd monorepo, transitioning the entire engine to TypeScript and ESM while launching a premium suite of automated developer tools.

✨ Highlights

🛡️ The docmd Dev Environment Tools

We've transformed the contributor workflow into a professional, automated experience. No more manual npm install blocks or confusing build sequences.

  • pnpm onboard: A single command to set up a fresh fork. It silently handles dependency installation and monorepo builds. Use --link-docmd to instantly add docmd to your system path.
  • pnpm verify: Our new production-grade verification suite. It runs a branded E2E failsafe process, ensuring every parser rule, theme asset, and plugin lifecycle is 100% sound before release.
  • pnpm reset: A total environmental purge. Safely stops background servers, unlinks global binaries, and wipes all build caches for a truly fresh start.

🏗️ TypeScript & ESM Native

The core engine has "grown up." We've migrated the entire monorepo from JavaScript (CJS) to TypeScript (ESM) to ensure long-term stability and developer agility.

  • Type-Safe Core: Internal APIs (Parser, Builder, Plugin System) now feature full type definitions, making contributions safer and eliminating "undefined" runtime errors.
  • Modern Modules (ESM): Dropped legacy CommonJS in favor of native ECMAScript Modules, resulting in faster execution and better compatibility with the modern JS ecosystem.
  • Plugin Ecosystem Upgrade: We didn't stop at the core! All official plugins (plugin-mermaid, plugin-pwa, plugin-search, plugin-seo, plugin-sitemap, plugin-analytics, plugin-installer, plugin-llms) have been rewritten in fully typed ESM. Frontend assets are now independently bundled with esbuild.
  • Version-Specific Navigation: You can now override the global navigation for specific versions, allowing you to tailor the sidebar for legacy documentation versions.
  • Universal Linting (Flat Config): Implemented ESLint 9 with a unified eslint.config.mjs, bringing professional code quality standards to every corner of the monorepo with 0% configuration overhead for new packages.

📝 Complete Changelog

🤖 CI/CD Guardrails

  • Automated Verification: Introduced GitHub Actions that automatically run pnpm verify on every Push and Pull Request to the main branch.
  • Release Automation: Modernized the NPM publish workflow to use the new branded verification suite as a final release gatekeeper.

🐛 Refinements & Fixes

  • Branded CLI: All developer commands now feature the blue docmd branding and consistent dimmed status feedback.
  • Playground Bridges: Added playground:add and playground:remove workspace aliases to allow testing CLI features safely inside an isolated playground context.
  • Zero-Bloat Dependency Tree: Conducted a full dependency audit of @docmd/core and @docmd/parser, removing unused legacy packages like markdown-it-container to ensure the smallest possible install footprint.
  • Optimised Failsafe: The verification suite now automatically handles monorepo builds and supports a --skip-setup flag for lightning-fast CI execution.

📥 Upgrade

npm install -g @docmd/core

Full Changelog: 0.5.4...0.6.0

docmd@0.5.4 🚀 (Plugin Installer)

10 Mar 22:37
5fd2a6a

Choose a tag to compare

docmd logo

This release introduces a fully automated plugin installation engine and hardens our configuration schemas for a much smoother developer experience.

✨ Highlights

🚀 The Plugin Installer (docmd add)

Gone are the days of manually tweaking configuration files to add new features! docmd now ships with an absolute zero-touch plugin installer.

  • docmd add <plugin>: Instantly download and inject official docmd plugins into your environment. Need search? Just run docmd add search. Need analytics? docmd add analytics.
  • Automatic Config Injection: The CLI parses your existing docmd.config.js and securely injects the exact plugin block natively without breaking your code structure.
  • Intelligent Package Detection: Handles --no-save proxies for bare repositories seamlessly.
  • Clean Uninstalls (docmd remove): Automatically wipes plugin traces safely from your configuration file.

📝 Complete Changelog

🛡️ Universal Config Migrator

If you built your docmd site back on our V1 architecture (siteTitle, srcDir, defaultMode), upgrading is now bulletproof.

  • Running docmd migrate now detects all legacy schemas and actively translates them into the modern V3 standard (title, src, appearance).
  • It protects custom layouts while intelligently mapping everything forward and automatically saving an exact backup of your legacy config for peace of mind.

🐛 Bug Fixes & Refinements

  • Fixed Scroll Clipping (Sky & Retro Themes): Addressed a critical CSS bug causing the main .content-theme-cover layout to improperly clip and hide deeply nested page contents when using the Sky or Retro themes. Scrolling through massive documents now behaves fluidly without trapping content behind fixed bounds.
  • Improved Failsafe Mechanics: Expanded our internal CI/CD script (failsafe.js) to rigorously spawn dummy packages and assert all Installer regex behaviors on the fly so feature-regressions are impossible.

📥 Upgrade

npm install -g @docmd/core

Full Changelog: 0.5.3...0.5.4

docmd@0.5.3 🎨 (Themes V2)

10 Mar 20:12
9a5254a

Choose a tag to compare

docmd logo

This release focuses on theme improvements, developer control, and internal architecture improvements. It introduces a new CLI command for managing running servers, finalises the transition to the new appearance theme system, and performs a large refactor across the UI and theme layers to make docmd easier to maintain long-term.

image

✨ Highlights

Major UI and Theme Refactor

A substantial cleanup was performed across UI templates, CSS, and theme logic.

The goal was simple: reduce legacy complexity and standardise styling across themes.

Key improvements include:

  • Container polishing: Containers look much better and consistent now, especially callouts.
  • Expanded design tokens: Colours, spacing, typography, radii, and shadows are now more consistently defined.
  • Improved layout structure: Better handling of content areas, sidebars, menubars, and responsive behaviour.
  • Cleaner navigation system: Navigation templates were refactored for simpler active/parent logic and improved accessibility.
  • Better theme toggling: Highlight stylesheets and theme switching logic were corrected and simplified.
  • Lighter themes: Themes are lighter now, a lot of transitional animations are removed, making UX faster and snappier than before.

Overall this significantly reduces duplicated styling while making themes easier to extend and maintain.

New docmd stop Command

Managing running dev servers is now simpler.

A new CLI command allows you to stop active docmd servers directly from the terminal. This is particularly useful when multiple dev instances are running or when a previous process did not exit cleanly.

  • Quick shutdown: Stop running servers without hunting for processes.
  • CLI integration: Fully wired into the main docmd binary.
  • Cleaner dev workflow: Prevents port conflicts and lingering background processes.

Theme System Migration (appearance)

The theme configuration system has been modernised.

The previous defaultMode option has been replaced with appearance, providing clearer semantics and aligning theme handling across the UI.

  • Cleaner configuration: A single consistent appearance model.
  • Backward compatible: Existing configs using defaultMode continue to work automatically.
  • Earlier theme initialisation: Pages now initialise appearance earlier to prevent flashing during load.

📝 Complete Changelog

✨ CLI & Dev Server

  • Added a new docmd stop command to terminate running docmd servers.
  • Improved dev server shutdown handling for more graceful process termination.
  • CLI wiring added for the new stop command.

🎨 Theme & UI System Refactor

  • Large cleanup and refactor of theme CSS architecture.
  • Expanded design tokens for colour, typography, spacing, borders, and shadows.
  • Improved responsive layout across content areas, header, menubar, and sidebar.
  • Updated code blocks, tables, cards, and callouts for visual consistency.
  • Reworked navigation template logic with better active state detection and collapsible groups.
  • Introduced additional structural classes for layout organisation.
  • Improved accessibility attributes and navigation semantics.
  • Adjusted scroll offsets, anchors, buttons, hover states, and general UI polish.

Sky

image
  • Minor variable cleanups and alignment with the new shared layout structure.
  • Adjusted background, link, border, and muted text variables.

Ruby

image
  • Consolidated root variables and simplified theme overrides.
  • Removed unnecessary shadows and layout rules.
  • Standardised font and code variable usage.

Retro

image
  • Full redesign into a cleaner Classic Computing style.
  • Added Google font imports and rebuilt light/dark variables.
  • Removed legacy CRT effects, scanlines, and glow animations.
  • Simplified layout and improved accessibility contrast.

⚙️ Configuration & Zero-Config Improvements

  • Migrated theme configuration from defaultMode to appearance.
  • Maintained backward compatibility by mapping defaultModeappearance.
  • Refined zero-config navigation logic so an explicitly empty navigation is now respected.
  • Prevent default plugins from being injected when plugins are explicitly defined.

📥 Upgrade

npm install -g @docmd/core

Full Changelog: 0.5.2...0.5.3

docmd@0.5.2 🚀 (Menubar Release)

09 Mar 21:46

Choose a tag to compare

docmd logo

This release introduces the Menubar component, significantly hardens the Zero-Config engine, and transforms the developer experience with a robust dev server and a built-in _playground.

✨ Highlights

Menubar

The focus of this release is the new Menubar, providing a top-level navigation layer for your documentation.

  • Versatile Positioning: Can be placed at the very top of the viewport (fixed) or inside the header slot (sticky).
  • Rich Components: Supports branding (logo + title), link items, and nested dropdowns for complex navigation needs.
  • Responsive Design: Automatically collapses on mobile devices to maintain a clean reading experience.

Built-in _playground

We've added a dedicated _playground package within the repository. Developers can now test core engine changes, UI components, and parser rules in real-time without leaving the codebase.

Smarter Options Menu + New Positioning

The Options Menu is now more flexible than ever.

  • Menubar Integration: A new menubar position allows the options menu to sit perfectly on the right side of your navigation bar.
  • Intelligent Fallbacks: If you configure the options menu to a position that is currently disabled (like header or menubar), docmd now automatically falls back to sidebar-top to ensure your users never lose access to essential utilities.

📝 Complete Changelog

✨ Dev-UX & Dev Server Hardening

  • Auto Port Selection: docmd dev now automatically finds and binds to the next available port if 3000 is in use, eliminating interactive prompts and speeding up launch times.
  • Log Refinement: We've eliminated repeating build logs and improved visual highlights, providing clearer details about the build process and PWA asset generation.
  • Robust Rebuilds: Fixed issues where pnpm dev would fail during active development. The internal watcher is now smarter about tracking core utility changes.
  • Nested Design: Improved the visual and structural handling of nested containers (e.g., Tabs inside Callouts).

📦 Zero-Config Evolution

  • Selective Activation: Zero-Config is now more surgical about where it activates, implementing "silent kills" to avoid triggering in invalid or non-project directories.
  • Stability: Multiple edge cases in directory analysis have been resolved, making the zero-config start much more reliable across different OS environments.

🐛 Bug Fixes

  • Indentation Fixes: Reset indentation in common-containers to prevent code block parsing by @svallory in #75
  • Container Heading Logic: Fixed a design flaw where headings inside containers (Tabs, Cards, etc.) were receiving permalinks and appearing in the Table of Contents. They are now correctly excluded to keep your TOC focused on main page sections.
  • Sidebar-Top Fallback: Fixed an issue where the Options Menu would remain invisible if its primary target container was disabled.

📥 Upgrade

npm install -g @docmd/core

New Contributors

Full Changelog: 0.5.1...0.5.2

docmd@0.5.1 🚀 (PWA Plugin Release)

06 Mar 17:16

Choose a tag to compare

docmd logo

This release focuses on refining the developer experience, enhancing our AI-First approach, and introducing powerful new plugins for the ecosystem.

✨ Highlights

Progressive Web App (PWA) Plugin

You can now instantly turn your documentation site into an installable application with a zero-config, intelligent Service Worker and offline availability! The @docmd/plugin-pwa is shipped natively.

  • Zero Config: Add pwa: {} to your config plugins. It automatically generates manifest.webmanifest, service-worker.js, and injects all mobile meta tags.
  • Smart Caching: Uses a network-first with cache fallback strategy — fresh content is always preferred but the offline shell activates seamlessly when there's no network.
  • Automatic Cache Busting: Every docmd build generates a uniquely fingerprinted Service Worker (docmd-cache-<timestamp>). Old caches are purged automatically on activation — no user action needed.
  • 5-Minute Background Updates: A silent polling interval checks the server for a new Service Worker every 5 minutes, so redeployed content reaches users without requiring a manual refresh.
  • Ghost Worker Cleanup: If you remove the PWA plugin from your config, docmd automatically detects the missing manifest on the client and unregisters any lingering Service Workers without user action.
  • Customizable: Override theme colors, background colors, and PWA icons via pwa.logo or a manual pwa.icons array.

Read Complete Documentation on PWA Plugin.

AI First Full Context Generation

docmd 0.5.1 is officially the easiest static site generator for LLMs to consume natively.

  • llms-full.txt Generation: Beyond the structural llms.txt, the LLM Plugin now concatenates the raw, unmodified markdown content of your entire documentation repository into a single unified llms-full.txt file. Give it directly to ChatGPT or Claude to immediately inject your entire codebase context in one shot.

Deep Section Linking in Search

  • The Search Plugin has been overhauled to provide hyper-granular results. Instead of just taking users to matching pages, search results are now broken down by Header sections (<h3>, <h4> etc) and seamlessly deeply link users straight to the exact paragraph the keyword originates from.

Block AI Bots with SEO Plugin

  • SEO AI Bot Blacklist: Added native seo.aiBots configuration support which automatically blankets your meta headers with <meta name="GPTBot" content="noindex"> tags across 12 prominent model scrapers for projects that need privacy.
  • Meta Description: If you omit a frontmatter description from a Markdown file, the SEO plugin automatically constructs a rich excerpt fallback from the first 150 characters of the content securely.
// Blocking Bots Globally
plugins: {
    seo: {
      aiBots: false // This will block all common AI bots
    }
}

// Page Specific Overrides
---
title: My Private Guide
seo:
  aiBots: false # Only block bots on this specific page
---

Bots in current block list - GPTBot, ChatGPT-User, Google-Extended, CCBot, anthropic-ai, Omgilibot, Omgili, FacebookBot, Diffbot, Bytespider, ImagesiftBot, and cohere-ai.

📝 Complete Changelog

✨ Zero-Config Hardening

  • Smarter Path Resolving: Zero-Config mode now automatically detects docs, src/docs, and content base folders natively.
  • Metadata Fallbacks: Zero-Config will automatically try to ingest the root package.json to assign the proper name and description to the documentation site natively.
  • Failsafe Executions: Dev Loops are completely eradicated. If you run docmd dev in a folder that has zero Markdown files anywhere to be found, it now cleanly aborts with a useful error message instead of spamming watcher loops indefinitely.

🐛 Bug Fixes

  • SPA Query Selector: Fixed a crash in docmd-main.js which caused navigation loops when users manually clicked Anchor tags with IDs starting with numeric values.

📥 Upgrade

npm install -g @docmd/core

Full Changelog: 0.5.0...0.5.1

docmd@0.5.0 🎊 (The Versioning Release)

05 Mar 13:08

Choose a tag to compare

docmd logo

v0.5.0 marks a massive evolution for docmd. We are introducing Enterprise-Grade Versioning, a magical Zero-Config Mode, and a modernized configuration schema, all while maintaining our promise of zero bloat. This release transforms docmd from a simple documentation generator into a robust platform capable of handling complex, multi-versioned projects with ease.

image

✨ Highlights

Documentation Versioning Support

You asked, we delivered. You can now maintain multiple versions of your documentation (e.g., v1.0, v2.0) simultaneously. docmd handles the routing, asset separation, and UI automatically.

  • Sticky Switching: Changing versions keeps you on the same page (e.g., switching v1 -> v2 while on /installation takes you to /v2/installation).
  • Smart Navigation: The sidebar automatically filters out links that don't exist in older versions.
  • Per-Version Navigation: You can completely override the menu for specific versions.
versions: {
  current: 'v2', // Builds to root (/) for optimal SEO
  all:[
    { 
      id: 'v2', 
      dir: 'docs', 
      label: 'v2.x (Latest)' 
    },
    { 
      id: 'v1', 
      dir: 'docs-v1', 
      label: 'v1.x',

      // version specific navigation: not required (optional)
      // docmd is smart enough to auto-generate custom nav for your specific version based on available docs
      navigation: [
          { title: 'Legacy Guide', path: '/legacy-intro' }
      ]
    }
  ]
}

Zero-Config Mode (--zero-config)

Want to document a project instantly? You no longer need a config file.

Run docmd dev -z for dev server and docmd build -z for production in any folder.
Our new Auto-Router will:

  • Scan your directory structure recursively.
  • Extract H1 titles from every Markdown file.
  • Build a deeply nested, collapsible sidebar.
  • Launch the dev server instantly.
  • Note: Zero-Config is still in beta and does not support versioning yet.

V3 Configuration Schema (Simpler Labels)

We have streamlined the configuration labels to align with modern standards (like Vite/VitePress). It is cleaner, shorter, and more intuitive.

Legacy v0.4 labels are still 100% supported, so no breaking changes!

Legacy Modern (v0.5) Description
siteTitle title The name of your website.
siteUrl url Production URL (Critical for SEO).
srcDir src Your markdown source folder.
outputDir out Build output folder.

Native 404s & SEO Redirects

docmd now behaves like a mature Static Site Generator (SSG) regarding SEO traffic.

  • Custom 404: We generate a native 404.html that inherits your theme, sidebar, and layout.
  • Redirects: Define old paths in your config, and we generate static HTML redirects to preserve your SEO ranking.
module.exports = defineConfig({
  redirects: { '/old-guide': '/new-guide' },
  notFound: { 
    title: 'Page Not Found', 
    content: 'Oops! This page has moved.' 
  }
});

Whitelabeling (Hide Branding)

For professional use cases, you can now easily toggle off the "Built with docmd" footer signature.

footer: {
  style: 'minimal',
  branding: false    // you can hide docmd signature now
}

📝 Complete Changelog

✨ Features & Enhancements:

  • Core: Implemented Multi-Version Build Engine. It loops through configured versions and builds them into isolated sub-directories (/v1/, /v2/).
  • Core: Added Auto-Router for Zero-Config mode. It performs AST-free scanning of headers to build navigation trees dynamically.
  • Core: Introduced defineConfig helper for IDE autocomplete support.
  • Config: Added V3 Schema (title, src, out, url) with internal normalization for backward compatibility.
  • UI: Added Version Dropdown component with "Sticky Path" logic (preserves relative path when switching versions).
  • UI: Major sidebar CSS overhaul. The navigation list now scrolls independently of the header/footer (Flexbox layout), eliminating double scrollbars.
  • UI: Sidebar dropdowns now intelligently open upwards when placed at the bottom of the sidebar.
  • Dev Server: Now serves the custom 404.html instead of a raw text error when a route is missing.

🐛 Bug Fixes:

  • Search: Fixed search index 404s in versioned subfolders by implementing DOCMD_SITE_ROOT logic.
  • Core: Fixed ReferenceError: options is not defined in config loader when using specific flags.
  • UI: Fixed SPA Router duplicating relative paths (e.g., /v1/v1/page) by hard-reloading on version context switches.
  • Live Editor: Fixed crash caused by missing isOfflineMode flag in the browser-side rendering engine.
  • Build: Fixed EJS Render Error for 404 pages by passing correct template context.
  • Failsafe: Upgraded test suite to brute-test Versioning, Zero-Config, and Redirect generation before every release.

📥 Upgrade

npm install -g @docmd/core

Full Changelog: 0.4.11...0.5.0

docmd@0.4.11 ⚡ (Lightning Update)

28 Feb 21:09

Choose a tag to compare

docmd logo

While v0.4.8 introduced the architecture for our Single Page Application (SPA) experience, v0.4.11 makes our 0ms latency claim a reality. By implementing predictive UI patterns, docmd is now officially faster than the time it takes for a user to click.

⚡ Lightning SPA: Predictive Prefetching

We have implemented Intent-based Prefetching. docmd now monitors user behavior; the moment a mouse hovers over a link, the engine begins downloading the page in the background.

  • Perceived 0ms Latency: By the time the user actually clicks, the content is already in the memory cache, making the transition truly instantaneous.
  • Data Efficient: The selective delay ensures we don't waste bandwidth on accidental mouse swipes, only fetching when intent is clear.

🐛 Bug Fixes

  • Search Plugin: The search engine now calculates its index path using absolute URLs derived from the project root. This ensures that the search bar and results function flawlessly regardless of how deep you navigate into nested folders via the SPA. Fixed #63.
  • Mermaid In-Memory Rendering: docmd now generates SVG diagrams in a background memory buffer. This allows Mermaid to calculate dimensions accurately even if the diagram is currently hidden inside a Tab or a Collapsible container. The diagram "snaps" into view the moment the container is opened.
  • Performance: Optimized the SPA router to prevent unnecessary DOM destruction, preserving the scroll position and state of the sidebar more effectively.
  • Sync: Bumped all internal workspace packages to maintain monorepo lockstep.

📥 Upgrade

npm install -g @docmd/core

Full Changelog: 0.4.10...0.4.11

docmd@0.4.10 🛠️ (Stability Fix)

27 Feb 18:17

Choose a tag to compare

docmd logo

Following our massive architectural overhaul in v0.4.8, we've spent this release hunting down edge cases, perfecting the Single Page Application (SPA) experience, and making our Markdown parser completely bulletproof.

image

🛠️ Bug Fixes & Improvements

SPA Router & Navigation:

  • Fix: Eliminated the "layout dragging" jitter that occurred when navigating to or from pages with heavy elements (like Mermaid diagrams). The router now briefly locks the layout height during DOM swaps for a perfectly stable, native-feeling transition.
  • Fix: Resolved 404 Not Found errors for Favicons and Theme CSS that occurred when the SPA navigated between different folder depths (e.g., from / to /content/syntax/).
  • Fix: Relative internal Markdown links (e.g., [link](./file.md)) now resolve correctly. The parser now intelligently calculates depth traversal to account for docmd's "Clean URLs" folder structure. Fix #62.
  • Fix: Hash anchors in internal links (e.g., [link](./file.md#section)) are now preserved correctly during the HTML build step.

Mermaid & Plugins:

  • Fix: Fixed a critical Mermaid.js crash (Could not find a suitable point for the given distance) that occurred when diagrams were placed inside hidden containers like Tabs or Collapsibles. docmd now uses an advanced in-memory SVG rendering queue that safely waits for the container to become visible before drawing.

Parser & UI:

  • Fix: Indented ::: button components inside nested containers (like Cards or Callouts) are no longer mistakenly parsed as <pre><code> blocks by standard Markdown rules.
  • Fix: The "Edit this page" link in the footer now accurately points to the original .md source file path rather than the generated .html output path.

📥 Upgrade

npm install -g @docmd/core

Full Changelog: 0.4.9...0.4.10