v0.2.1
Changelog
All notable changes to the LitMDX monorepo are documented here.
This changelog tracks the state of the overall project — docs, template, workspace
and the integration between packages. Individual package changelogs are maintained
separately in each packages/*/CHANGELOG.md.
The format follows Keep a Changelog.
Versioning follows Semantic Versioning.
[0.2.1] — Unreleased
Fixed
create-litmdxassets not found onnpx create-litmdx:ASSETS_DIR
was resolved using'../assets'relative todist/index.js, which pointed
to the package root (no assets there). Changed to'./assets'so it
correctly resolves todist/assets/where the build script copies them.workspace:^leaked into publishedlitmdxpackage: the release
workflow usednpm publishwhich does not resolve pnpmworkspace:protocols,
causing@litmdx/core: "workspace:^"to be written verbatim into the
publishedpackage.json. Users installinglitmdxoutside a pnpm workspace
gotERR_PNPM_WORKSPACE_PKG_NOT_FOUND. Fixed by switching the release
workflow topnpm publish --no-git-checksand pinning@litmdx/coreto
^0.1.3inpackages/cli/package.jsonso the resolved version is always
written correctly on publish.
0.2.0 — 2026-04-03
Summary
Sidebar overrides, WebMCP hardening, workspace ergonomics, developer tooling
improvements, and several bug fixes. Roadmap items 3, 4, and 5 are complete.
Packages
| Package | Version |
|---|---|
@litmdx/core |
0.1.3 |
litmdx |
0.3.0 |
create-litmdx |
0.1.6 |
Added
Sidebar overrides
sidebar_hiddenfrontmatter field — settingsidebar_hidden: truein any
.mdxfile removes it from the sidebar tree entirely- Group labels now read
sidebar_label/titlefrom the group'sindex.mdx
frontmatter before falling back to the directory name - Empty groups (all children hidden) are filtered out of the rendered sidebar
WebMCP hardening
list_pagestool now returnsdescriptionalongsidepathandtitle,
allowing agents to pre-filter pages without additional tool calls- Input validation in
navigate_toandget_page_content: both throw
"path is required"when the argument is empty or missing search_pagesreturns[]immediately for an empty query instead of
searching for the string"undefined"
Workspace ergonomics
@litmdx/coreresolved viaworkspace:^inside the monorepo so the local
source is always used during developmentengines: { "node": ">=18.0.0" }declared inpackages/cliand
packages/core
Developer tooling
checkscript: full local CI mirror in fail-fast order —
lint → format:check → typecheck → build:packages → publish:dry → testpublish:dryscript (pnpm -r --filter './packages/*' pack --dry-run) to
verify package tarballs without touching the registry
CI / release
ci.yml: monorepo-level CI running on every push / PR tomainanddevelopmonorepo-release.yml: tag-based GitHub Release workflow (v*tags),
validates tag against rootpackage.jsonversion, auto-marks pre-releasesCHANGELOG.mdintroduced
Fixed
sidebar_hiddensilently dropped:page-meta.tsextracted frontmatter
through a closedallowedKeysSet that did not includesidebar_hidden,
causing the field to be discarded before reaching runtime; added to
GeneratedFrontmattertype andallowedKeyswebmcpdefault wrong in docs:docs/reference/configuration.mdx
documented thewebmcpfield with defaulttrue; the real default has
always beenfalse(user.webmcp ?? falseinresolveConfig)list_pagesexample missingdescription: the example in
docs/home/features/webmcp.mdxdid not show thedescriptionfield in the
list_pagesresponse; updated to reflect the actual response shape- Stale header comment in
WebMCPIntegration.tsx: the opening comment
listed 3 tools while the implementation registers 5; corrected - Dev server crash on port conflict:
strictPort: truein the Vite config
caused a hard crash when port 5173 was occupied; changed tostrictPort: false
so Vite falls back to the next available port pnpm devnot starting Vite: the thirdconcurrentlyprocess was
runningpnpm --filter litmdx run dev(a secondtsc --watch) instead of
node packages/cli/dist/bin/cli.js dev; corrected- Cloudflare Pages build failure: root
buildscript was invoking
pnpm --filter litmdx run build(compiles the CLI package) instead of
node packages/cli/dist/bin/cli.js build(builds the docs site); corrected publish:dryshowing "no new packages":publish --dry-runchecks the
registry and skips already-published versions; replaced withpack --dry-run- Group label ignoring frontmatter: sidebar groups always used the
directory-derived label; now readssidebar_label/titlefromindex.mdx create-litmdxduplicateassets/in published tarball: removed the
redundant top-level"assets"entry fromfiles(assets are already
included underdist/assets/)
Changed
SidebarGroupnow computesisActivewithuseMemoand uses the exported
hasActiveDescendanthelper fromsidebar/helpers.ts
0.1.0 — 2026-04-02
Summary
Initial stable baseline of the LitMDX monorepo. This release establishes the
core product architecture, the opt-in component system, custom user components,
WebMCP integration, and the full workspace structure.
Packages
| Package | Version |
|---|---|
@litmdx/core |
0.1.2 |
litmdx |
0.2.3 |
create-litmdx |
0.1.5 |
Added
Core product
- MDX compilation pipeline via
@litmdx/corewith remark/rehype plugin chain - File-system router with automatic sidebar generation from
docs/structure defineConfigAPI for type-safe configuration inlitmdx.config.ts- Vite plugin integration handling MDX transformation and virtual modules
- Static site generation (SSG) with prerender across all routes
- Pagefind integration for zero-dependency full-text search
- Sitemap generation on build
- WebMCP integration — exposes the docs as a structured interface consumable
by AI agents vianavigator.modelContextwhenwebmcp: trueis set in config - Frontmatter support:
title,description,order,sidebar,noindex
CLI (litmdx)
litmdx dev— development server with HMRlitmdx build— full production build with SSG, search index and sitemaplitmdx init— initialise a new project from the built-in template- Vite configuration managed internally; user projects need no
vite.config.ts
Scaffolder (create-litmdx)
npm create litmdxinteractive scaffolder- Generates a ready-to-use project with template, config and dependencies
Opt-in component system
- Built-in heavy components are opt-in to keep the default bundle small
- Mermaid diagrams available as opt-in (
components.mermaid: true) - Formal eligibility rules for future opt-in components (>50 KB gzip, >5 chunks,
or irrelevant to the majority of sites) - JSDoc on
ComponentsConfigdocuments cost per component - Tests verify that disabled components are excluded from the bundle
Custom user components
- Users can register their own MDX components via
src/components/index.ts|tsx|js|jsx - Generated bridge file merges user components into
mdxComponentsautomatically - Watcher in
devmode regenerates the bridge on file changes - Explicit React alias prevents duplicate React instances in workspaces/monorepos
Docs site
- Documentation site built with LitMDX itself, covering:
- Getting started, routing, project structure
- Features: components, configuration, deployment, frontmatter, search,
sitemap, SSG, WebMCP - Customisation: custom components, Tailwind CSS
- Reference: CLI, configuration, contributing
Workspace
- pnpm workspace monorepo with
packages/core,packages/cli,packages/create-litmdx - Shared
tsconfig.base.jsonandeslint.config.base.js - Root scripts:
dev,build,build:packages,test,typecheck,
lint,format,clean,setup - CI workflows per package (core, cli, create-litmdx) on
mainanddevelop - Release workflow for npm publishing (
workflow_dispatch) - Monorepo CI (
ci.yml) and monorepo release workflow (monorepo-release.yml)
Notes
- Internal roadmap targets 0–30 day priorities: sidebar overrides, SEO per page,
search UX improvements, WebMCP hardening, monorepo workspace ergonomics versionado de docsandi18nare explicitly deferred features; will only
proceed if real repeated demand exists