Skip to content

feat(templates): migrate to Zola 0.23 and Tera 2 - #181

Draft
forkwright wants to merge 2 commits into
mainfrom
feat/179-zola-0.23-migration
Draft

feat(templates): migrate to Zola 0.23 and Tera 2#181
forkwright wants to merge 2 commits into
mainfrom
feat/179-zola-0.23-migration

Conversation

@forkwright

Copy link
Copy Markdown
Owner

Summary

  • pin the substrate and both generated consumer gates to the official Zola 0.23.3 Linux artifact;
  • migrate every Typikon template from the removed Tera 1 macro/filter dialect to collision-resistant typikon.* Tera 2 components;
  • preserve Zola's engine-owned feed page set, including its include_in_feeds, ordering, and limit behavior;
  • add a static dialect/pin contract and a real multilingual renderer fixture for author fallbacks, breadcrumb language, and sameAs accumulation.

This is the separately gated renderer prerequisite for #179. It intentionally does not implement or close the scoped-root-feed issue.

Why this is separate

Zola 0.22.1 does not parse or expose the include_in_feeds page field required by #179 acceptance item 4. The field is native in Zola 0.23, but that release also moves the renderer to Tera 2. A version-only bump would break Typikon's macro imports, namespace calls, removed collection/string filters, and positional test arguments.

Keeping this migration separate gives the renderer transition its own exact-head proof before feed membership semantics are layered onto refreshed main.

Compatibility contract

  • theme.toml, Typikon's own gate, bin/typikon-defaults.sh, and both generated consumer gate templates agree on Zola 0.23.3 and SHA-256 f07c92607e5745268b576bd325ceef3a582aada253bb64db8d92a8a85303d958.
  • The digest matches GitHub's published final-release metadata for zola-v0.23.3-x86_64-unknown-linux-gnu.tar.gz.
  • Components use the collision-resistant typikon.* namespace because Tera 2 registers components globally and consumer templates can otherwise replace theme internals.
  • Components receive only declared arguments. Breadcrumb callers therefore pass both config and the current page/section language explicitly.
  • Consumer template overrides and removed Zola shortcodes must migrate before a consumer raises its pin. This PR changes no consumer repository.

Verification before push

  • Kanon MCP structured lint: 0 violations (6 existing suppressions reported).
  • git diff --check: clean.
  • python3 ci/check-tera2-contract.py: pass.
  • Both new checks are present in the derived ci/run-fixtures.sh --list corpus.
  • bin/typikon-validate examples/sample-blog: 5/5.
  • bin/typikon-validate examples/sample-shop: 11/11.
  • workflow-template, release-config, consumer-schema-registry, and fixture-discovery checks: pass.
  • Python AST and embedded TOML/frontmatter parsing for the renderer fixture: pass.
  • Three read-only source reviews found no remaining Tera 2 or candidate-diff blocker.

No Zola build was run locally. This public repository's GitHub full-gate-build job is the required authority for actual Zola 0.23.3 parsing/rendering, including the new isolated multilingual fixture. The PR should remain draft until that exact-head gate is terminal and reviewed.

Refs #179

forkwright added 2 commits August 19, 2026 20:42
Move the shared substrate to the pinned Zola 0.23.3 renderer, migrate the complete template dialect to collision-resistant Tera 2 components, and add static plus GitHub-rendered compatibility contracts.

This is the separately gated prerequisite for scoped root-feed semantics; it does not close the feed issue.

Refs #179
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant