Renderer (app/index.html):
- navigateTo now pushes a history entry for user navigations (pushState),
while the initial load, back/forward (popstate/hashchange), and category
re-renders still replaceState. The browser Back button now returns to the
previous page instead of leaving the site.
Service worker (mdcms.py generator + app/service-worker.js):
- Serve the cached index.html app shell for navigation requests. Reloading a
clean URL like /section-id previously 404'd on the static host before any
JavaScript ran; the shell fallback lets the client-side router resolve the
path. Also makes pretty-URL reloads work offline.
https://claude.ai/code/session_018KXUwmSNMGF2UBywTChCcS
Implements four new mdcms fenced-block types:
tab-underline / tab, tab-filled,
accordion-underline / accordion, accordion-filled
Each block reads items: from a YAML body. Tab state and accordion
open/close are managed with aria-selected / aria-expanded and
data-open attributes. Markdown content inside each item is rendered
with the same pipeline as the surrounding page.
Adds computeDerivedTokens() — called on every applyTheme() — which
computes --mdcms-bar, --mdcms-filled-bg/border/fg, --mdcms-strip-border
from the active palette. Uses HSL chroma (S × (1-|2L-1|)) instead of raw
HSL S for the bold-nav heuristic, avoiding a false-positive on near-white
nav colours like the default #F8FAFC.
Adds app/pages/tabs-accordions.md as a visual test page and
docs/unreleased.md to track this change ahead of the next release.
https://claude.ai/code/session_01SFMh7PDxJjvvo5dYbCCFFs