Render repository content through theme contracts
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
version: 1
|
||||
enabled: true
|
||||
artifacts:
|
||||
content_paths:
|
||||
- pages
|
||||
- articles
|
||||
- projects
|
||||
media_paths: []
|
||||
@@ -1,9 +1,9 @@
|
||||
<article class="content-grid">
|
||||
<aside><h2>Contents</h2><ol>{% for heading in item.tableOfContents %}<li><a href="#{{ heading.id | escape }}">{{ heading.text | escape }}</a></li>{% endfor %}</ol></aside>
|
||||
<aside><h2>Contents</h2><ol>{% for heading in page.tableOfContents %}<li><a href="#{{ heading.id }}">{{ heading.text }}</a></li>{% endfor %}</ol></aside>
|
||||
<div>
|
||||
<p class="eyebrow">{{ item.artifactType | escape }}</p>
|
||||
<h1>{{ item.title | escape }}</h1>
|
||||
<p class="lede">{{ item.summary | escape }}</p>
|
||||
<div class="prose">{{ item.content | safe_content }}</div>
|
||||
<p class="eyebrow">{{ page.contentModel }}</p>
|
||||
<h1>{{ page.title }}</h1>
|
||||
<p class="lede">{{ page.summary }}</p>
|
||||
<div class="prose">{{ page.renderedContent | safe_content }}</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -2,27 +2,22 @@
|
||||
<aside class="project-meta">
|
||||
<p class="eyebrow">Project</p>
|
||||
<dl>
|
||||
<dt>Version</dt><dd>{{ project.version | escape }}</dd>
|
||||
<dt>License</dt><dd>{{ project.license | escape }}</dd>
|
||||
<dt>Source commit</dt><dd><code>{{ project.sourceSnapshot.commit | escape }}</code></dd>
|
||||
<dt>Updated</dt><dd>{{ project.sourceSnapshot.committedAt | escape }}</dd>
|
||||
<dt>Version</dt><dd>{{ page.metadata.version }}</dd>
|
||||
<dt>License</dt><dd>{{ page.metadata.license }}</dd>
|
||||
<dt>Source commit</dt><dd><code>{{ page.provenance.commit }}</code></dd>
|
||||
<dt>Updated</dt><dd>{{ page.updated }}</dd>
|
||||
</dl>
|
||||
<h2>Stack</h2>
|
||||
<ul>{% for item in project.stack %}<li>{{ item | escape }}</li>{% endfor %}</ul>
|
||||
<ul>{% for item in page.metadata.stack %}<li>{{ item }}</li>{% endfor %}</ul>
|
||||
</aside>
|
||||
<div class="project-body">
|
||||
<h1>{{ project.title | escape }}</h1>
|
||||
<p class="lede">{{ project.summary | escape }}</p>
|
||||
<p><a href="{{ project.homepage | escape }}">Open the standalone demo</a></p>
|
||||
<h2 id="provenance">Pinned provenance</h2>
|
||||
<p>The project and its publication were read from <code>{{ project.sourceSnapshot.repository | escape }}</code> at one exact commit.</p>
|
||||
<h1>{{ page.title }}</h1>
|
||||
<p class="lede">{{ page.summary }}</p>
|
||||
<div class="prose">{{ page.renderedContent | safe_content }}</div>
|
||||
<p><a href="{{ page.metadata.homepage }}">Open the standalone demo</a></p>
|
||||
<h2 id="tags">Tags</h2>
|
||||
<ul class="tags">{% for tag in project.tags %}<li>{{ tag | escape }}</li>{% endfor %}</ul>
|
||||
<h2 id="devlogs">Devlogs</h2>
|
||||
{% if project.relatedContent.devlogs.size == 0 %}<p>No matching devlogs in this snapshot.</p>{% endif %}
|
||||
{% for item in project.relatedContent.devlogs %}<article><h3><a href="{{ item.route | escape }}">{{ item.title | escape }}</a></h3></article>{% endfor %}
|
||||
<ul class="tags">{% for tag in page.tags %}<li>{{ tag }}</li>{% endfor %}</ul>
|
||||
<h2 id="articles">Related articles</h2>
|
||||
{% if project.relatedContent.articles.size == 0 %}<p>No matching articles in this snapshot.</p>{% endif %}
|
||||
{% for item in project.relatedContent.articles %}<article><h3><a href="{{ item.route | escape }}">{{ item.title | escape }}</a></h3></article>{% endfor %}
|
||||
{% for item in page.relationships.articles %}<article><h3><a href="{{ item.route }}">{{ item.title }}</a></h3></article>{% endfor %}
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
<section class="hero">
|
||||
<p class="eyebrow">Engineering · Architecture · Operations</p>
|
||||
<h1>{{ site.title | escape }}</h1>
|
||||
<p>Repository-owned presentation rendered from an exact Git commit.</p>
|
||||
<h1>{{ page.title }}</h1>
|
||||
<p>{{ page.summary }}</p>
|
||||
<div class="prose">{{ page.renderedContent | safe_content }}</div>
|
||||
</section>
|
||||
<section class="feed" aria-labelledby="latest">
|
||||
<h2 id="latest">Latest publications</h2>
|
||||
{% if content.size == 0 %}<p>No published content in this snapshot.</p>{% endif %}
|
||||
{% for item in content %}
|
||||
<article><p class="eyebrow">{{ item.artifactType | escape }}</p><h3><a href="{{ item.route | escape }}">{{ item.title | escape }}</a></h3><p>{{ item.summary | escape }}</p></article>
|
||||
{% if collection.items.size == 0 %}<p>No published content in this snapshot.</p>{% endif %}
|
||||
{% for item in collection.items %}
|
||||
<article><p class="eyebrow">{{ item.contentModel }}</p><h3><a href="{{ item.route }}">{{ item.title }}</a></h3><p>{{ item.summary }}</p></article>
|
||||
{% endfor %}
|
||||
</section>
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
<!doctype html>
|
||||
<html lang="{{ site.language | escape }}">
|
||||
<html lang="{{ site.language }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="labyricorn-theme/v1">
|
||||
<title>{{ page.title | escape }} · {{ site.title | escape }}</title>
|
||||
{% for stylesheet in theme.stylesheets %}<link rel="stylesheet" href="{{ stylesheet | escape }}">
|
||||
{% endfor %}{% for script in theme.scripts %}<script src="{{ script | escape }}" defer></script>
|
||||
<title>{{ page.title }} · {{ site.title }}</title>
|
||||
{% for stylesheet in theme.styles %}<link rel="stylesheet" href="{{ stylesheet }}">
|
||||
{% endfor %}{% for script in theme.scripts %}<script src="{{ script }}" defer></script>
|
||||
{% endfor %}</head>
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<a class="brand" href="/"><img src="/assets/images/logo.svg" width="32" height="32" alt=""><span>{{ site.title | escape }}</span></a>
|
||||
<a class="brand" href="/"><img src="/assets/images/logo.svg" width="32" height="32" alt=""><span>{{ site.title }}</span></a>
|
||||
<nav aria-label="Primary">
|
||||
{% for entry in navigation %}<a href="{{ entry.route | escape }}">{{ entry.label | escape }}</a>{% endfor %}
|
||||
{% for entry in navigation %}<a href="{{ entry.route }}">{{ entry.label }}</a>{% endfor %}
|
||||
</nav>
|
||||
</header>
|
||||
<main>{{ page.body | safe_page_body }}</main>
|
||||
<footer class="site-footer">
|
||||
<span>Built from immutable Git snapshots.</span>
|
||||
<code>{{ build.id | escape }}</code>
|
||||
<code>{{ build.id }}</code>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<header class="section-heading">
|
||||
<p class="eyebrow">Section</p>
|
||||
<h1>{{ section.label | escape }}</h1>
|
||||
<h1>{{ page.title }}</h1>
|
||||
</header>
|
||||
<section class="feed">
|
||||
{% if content.size == 0 %}<p>No published items in this snapshot.</p>{% endif %}
|
||||
{% for item in content %}
|
||||
<article><h2><a href="{{ item.route | escape }}">{{ item.title | escape }}</a></h2><p>{{ item.summary | escape }}</p></article>
|
||||
{% if collection.items.size == 0 %}<p>No published items in this snapshot.</p>{% endif %}
|
||||
{% for item in collection.items %}
|
||||
<article><h2><a href="{{ item.route }}">{{ item.title }}</a></h2><p>{{ item.summary }}</p></article>
|
||||
{% endfor %}
|
||||
</section>
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
model: article
|
||||
title: Repository Rendering Is Live
|
||||
slug: repository-rendering
|
||||
route: /articles/repository-rendering/
|
||||
date: 2026-07-23
|
||||
status: published
|
||||
summary: The reference article proves Markdown discovery and strict Liquid rendering.
|
||||
tags:
|
||||
- git
|
||||
- liquid
|
||||
metadata:
|
||||
projectId: website-engine-control-plane
|
||||
---
|
||||
|
||||
## Immutable inputs
|
||||
|
||||
Every build resolves one exact Git commit before rendering.
|
||||
|
||||
## Verified output
|
||||
|
||||
The generated release records source checksums and can be promoted atomically.
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
model: page
|
||||
title: Labyricorn Engineering & Architecture
|
||||
slug: home
|
||||
route: /
|
||||
status: published
|
||||
summary: Deterministic publishing from immutable Git snapshots.
|
||||
---
|
||||
|
||||
The control plane renders this homepage from committed Markdown and repository-owned Liquid templates.
|
||||
@@ -0,0 +1,16 @@
|
||||
---
|
||||
model: project
|
||||
title: Website Engine Control Plane
|
||||
slug: website-engine-control-plane
|
||||
route: /project/website-engine-control-plane/
|
||||
status: published
|
||||
summary: A deterministic Git-native static site control plane.
|
||||
tags:
|
||||
- static-site
|
||||
- git
|
||||
- liquid
|
||||
---
|
||||
|
||||
## Configuration first
|
||||
|
||||
The project page joins its allowlisted declaration with this committed Markdown body.
|
||||
Reference in New Issue
Block a user