The docmd 0.6.9 release focuses on significant core stability updates, hardening the plugin resolution architecture, and the introduction of a highly requested mathematical plugin leveraging server-side rendered LaTeX.
โจ Highlights
๐งฎ Math Plugin (KaTeX)
Introducing @docmd/plugin-math โ an official extension providing native parsed LaTeX and KaTeX support seamlessly decoupled into docmd. Writing $E = mc^2$ or block arrays $$ automatically hooks into robust server-side build steps producing purely static visual nodes. No client-side Javascript compilation is required!
๐๏ธ Plugin Security Hardening
The plugin resolution architecture has been completely rewritten. Shorthand names (e.g. math, search) are now strictly reserved for official @docmd/plugin-* packages. Third-party plugins must be referenced by their full package name โ there is no fallback cascade to community or bare npm names. This eliminates supply-chain attack vectors via namespace squatting entirely.
๐งน Layout & UI Stability
This release contains sweeping fixes protecting custom UI definitions matching #101. noStyle structurally broken layout grids have been resolved restoring total CSS conformity across customized landing pages heavily featuring .menubar blocks. Navigational headers explicitly linked toward raw .md domains are also safely purged enforcing clean-urls matching the generated HTML structure!
๐ Complete Changelog
๐งฐ Core Improvements
- Plugin Security Hardening: Rewrote
core/src/utils/plugin-loaderโ shorthand names now resolve exclusively to official@docmd/plugin-*scope. Third-party plugins require full package names with no fallback cascade. - Expanded Asset Parsing (#100): Rewrote
core/src/engine/assets.tsto natively verify and append nestedconfig.src/assetsdefinitions concurrently alongside rootCWD/assetssupporting local documentation directories explicitly. - UX Menu Linking: Menubar now uses absolute base paths instead of relative paths, fixing broken URLs on versioned pages where menubar links incorrectly resolved to version-scoped paths (e.g.
/05/nostyleinstead of/nostyle).
๐งต Bug Fixes & Refactors
- miniSearch Fatal Crashes (#8): Fixed a runtime structural array duplication resulting in a failed indexing routine. Added
seenIdstracking insideplugins/search/src/index.tsintercepting overlapping layout blocks silently. - Menubar Flex Structural Collapse (#101): Found and deleted orphaned closing elements inside
menubar.ejs. Options menus (theme,search) correctly load intomenubar-rightaligned grids completely separate from iterated loop structures bridging un-styled overrides easily. - SPA Sidebar URL Nesting: Fixed an issue where SPA navigation caused sidebar hrefs to nest incorrectly (e.g.
/nostyle/nostyle/). The SPA router now resolves fetched sidebar hrefs to absolute paths before syncing them into the current DOM. - Removed Implicit
.mdStripping: The config normalizer no longer silently strips.mdextensions from navigation and menubar URLs. Users should use clean URLs in their config as documented โ this prevents hidden routing conflicts with SPA navigation. - TypeScript Strictness: Added
"types": ["node"]to monorepo basetsconfig.jsonand replacedimport.meta.dirnamewithfileURLToPathfor universal type compatibility across all packages.
Migration Guide
No breaking changes for users of official plugins. If you were relying on shorthand names for third-party plugins, update your docmd.config.js to use the full package name instead.