Skip to content

v0.10.0

Choose a tag to compare

@flancer64 flancer64 released this 30 Sep 18:27

Added

  • Sitemap representation selection through TEQ_CMS__SITEMAP_REPRESENTATIONS: HTML (default), Markdown, or both, with every distinct eligible source language, canonical alias deduplication, and Markdown discovery independent of HTML availability (issue #33).
  • Optional boolean publication indexable metadata to exclude sources from generated discovery while retaining public routing.
  • Shared catalog representation inventory and real CLI/HTTP discovery tests with XML parsing, deterministic generation, and canonical/alternate checks.
  • Shared CMS 404 responses and a terminal PROCESS handler, with optional localized
    host 404.html templates, a replaceable DI presentation policy, safe template data,
    non-HTML Markdown/API/static errors, HEAD support, and no-store/noindex headers.
  • Real CLI HTTP coverage and consumer guidance for branded missing pages.
  • Publish root-level and nested Markdown across the public tmpl/web/ tree by default without family registration (issue #31).
  • Add a replaceable host DI policy for publication mode, presentation names, and static-only URL prefixes; keep deployment settings separate from route policy.
  • Support unlocalized neutral sources and root index publication with canonical / and localized /{locale}/ links.

Changed

  • Use Markdown, ordinary templates, then web/ static files, then 404; found invalid Markdown does not fall through to legacy HTML.
  • Deliver static exclusions and discovery files directly through the standard web static handler, terminating missing files with 404.
  • Retain nonempty PUBLICATION_FAMILIES as legacy compatibility mode; reject explicit site policy combined with legacy families.
  • Extend ordinary template-name lookup to requested, default, and unlocalized template trees.
  • Update context, usage documentation, and consumer skill with host policy composition and migration guidance.

Fixed

  • Select HTML language by explicit URL locale, then supported weighted Accept-Language, then tmpl default, including neutral .html; preserve unlocalized source priority and stable neutral Markdown, and vary caches by language.
  • Separate Markdown source priority from response format: explicit .md/.html overrides headers; extensionless publication URLs use Accept, then User-Agent hints, returning Markdown to agents and HTML to people with cache variation.
  • Use explicit .md URLs for Markdown alternates and llms.txt, including /index.md for home; include available unlocalized HTML in sitemap.xml.

Verification

  • Cover site-wide URL forms, exact sources, root priority, host-selected presentations, static exclusions, safety, canonical discovery, and real CLI DI policy substitution.

Upgrade guidance

  • Empty TEQ_CMS__PUBLICATION_FAMILIES now enables site-wide public Markdown. Keep private content outside tmpl/web/ and web/. Nonempty family settings retain legacy compatibility.
  • Explicit .md/.html selects the representation. Extensionless URLs negotiate through HTTP headers; human HTML language uses URL locale, then supported Accept-Language, then the tmpl default.
  • Regenerate discovery files with teq cms:generate. Sitemap defaults to HTML; use TEQ_CMS__SITEMAP_REPRESENTATIONS=markdown or both when required.

Validation

  • 81 passing unit and acceptance tests, including real CLI/HTTP coverage.
  • Type checking, ESM validation, ADSM context validation, and npm payload verification passed.