- Add generate_pwa(): builds manifest.json (name, short_name, theme_color,
standalone display, favicon icon) and service-worker.js with a
cache-first strategy; cache name is versioned by a hash of the precache
file list so new builds automatically invalidate old caches; precache
list covers index.html, config.yml, nav.yml, search.json, theme file,
and all pages/posts/assets
- Call generate_pwa() from run_build() when pwa: yes/true in config.yml
- index.html: add <link rel="manifest"> and SW registration script in
<head>; both silently no-op when the generated files are absent
- index.html boot(): write offline-message from config to localStorage
on every load so the message survives cache eviction
- index.html navigateTo(): show localStorage offline message when a page
fetch fails instead of the generic not-found message
- Update CLAUDE.md with PWA config key reference
https://claude.ai/code/session_015XtsgTMi8UtmgxEgb5Qt2c
- Add renderTocTag(): groups visible pages by section in section sort
order; sorts pages within each section by sort then filename; excludes
current page, draft sections, and category-invisible pages; renders
section headings and linked page lists; replaces the tag placeholder
- Add toc dispatch in hydrateMdcmsTags()
- Add .mdcms-toc, .mdcms-toc-section, .mdcms-toc-list CSS
https://claude.ai/code/session_015XtsgTMi8UtmgxEgb5Qt2c
- Add validate_assets(): scans config.yml and theme.yml recursively for
string values starting with assets/, and all markdown files in pages/
and posts/ via regex; deduplicates by (path, source) before checking
- Add _collect_yaml_assets() helper for recursive YAML traversal
- Call validate_assets() in run_build() after writing nav.yml and
search.json; prints yellow warnings for each missing asset, build
continues on all warnings
https://claude.ai/code/session_015XtsgTMi8UtmgxEgb5Qt2c
- CLI_VERSION → 0.3.1, CLI_RELEASE_DATE → 10 May 2026
- Replace click.version_option with custom callback that prints version
+ release date, then fetches docs/banner/v{VERSION}.txt from GitHub
and prints it; falls back to a "no online information" message on 404
or network error
- Add versioning rule to CLAUDE.md
https://claude.ai/code/session_015XtsgTMi8UtmgxEgb5Qt2c
date and datetime were overlapping with created. Only created is now
read by the scanner and emitted in search.json; modified is also
included in search.json output alongside it.
https://claude.ai/code/session_013A4egzphocyto9bvZ76dxf
- Replace interactive TUI with click-based subcommands:
register, delete, view, build
- build accepts NAME (registry), --path, or CWD for GitHub Actions use
- Switch to PyYAML for frontmatter and nav.yml parsing
- Add pyproject.toml with click + PyYAML deps and mdcms entry point
- Add v0.3 version marker to app/config.yml and app/index.html
- Registry moves to ~/.config/mdcms/sites.json (XDG-compliant)
- Project root is now the directory containing index.html (no website/ subdir)
- register auto-downloads template from GitHub if no site found
https://claude.ai/code/session_01MqEqGhP1guGx5VuFsLaws2