- New `mdcms serve` command: local preview server with SPA clean-URL
fallback. Unknown extension-less paths (e.g. /section-id) are served
index.html so reloads and shared clean URLs work; paths with an
extension still 404, preserving the renderer's category-variant
fallback. Serves .md as text/markdown and .yml as text/yaml.
Options: [name], --path, --port (default 8800), --bind.
- New docs/hosting.md: explains why clean URLs 404 on plain static
hosts and documents the fix per environment (mdcms serve, service
worker, GitHub Pages 404.html, Netlify/Cloudflare _redirects, nginx,
Apache, Caddy), plus a standalone Python preview script.
- Update stale boot error message in index.html to point at
`mdcms serve` instead of the removed "option 8".
- Update CLAUDE.md command table and local-preview note.
https://claude.ai/code/session_018KXUwmSNMGF2UBywTChCcS