Collection
{% collection %} queries the entity registry for many entities and projects them into a layout. It's the plural counterpart to {% ref %} (one entity → a link) and {% expand %} (one entity → inlined content): where those consume a single entity, collection selects a set — by type, with a field:value filter, sorted/grouped/limited — and renders each item.
It's generic over entity type. Anything in the registry works the same way — plan work items, page entities, and any type a plugin registers — so a hand-maintained list that mirrors structured data becomes a live query instead.
{% collection type="work" filter="status:ready" sort="priority" limit=5 /%}<section data-rune="collection">
<meta data-field="collection-type" content="work">
<meta data-field="collection-filter" content="status:ready">
<meta data-field="collection-sort" content="priority">
<meta data-field="collection-group" content="">
<meta data-field="collection-limit" content="5">
<meta data-field="collection-fields" content="">
<meta data-field="collection-layout" content="list">
<meta data-field="collection-group-display" content="headings">
<meta data-field="collection-empty" content="">
<meta data-field="__collection-sentinel" content="true">
<div data-name="items"></div>
</section><section class="rf-collection" data-type="work" data-layout="list" data-rune="collection" data-density="full">
<div data-name="items" class="rf-collection__items rf-collection__items">
<div class="rf-collection__item" data-entity-id="WORK-101">
<a class="rf-collection__title" href="/runes/plan/examples">Content model validation errors</a>
</div>
<div class="rf-collection__item" data-entity-id="WORK-102">
<a class="rf-collection__title" href="/runes/plan/examples">Token fallback chain for nested tints</a>
</div>
<div class="rf-collection__item" data-entity-id="RF-142">
<a class="rf-collection__title" href="/runes/plan/work">Implement tint rune dark mode support</a>
</div>
<div class="rf-collection__item" data-entity-id="WORK-055">
<span class="rf-collection__title">Learning Package Pipeline Hooks</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-094">
<span class="rf-collection__title">Create @refrakt-md/vite plugin — Level 1 static transform</span>
</div>
</div>
</section>That renders every registered work entity whose status is ready, highest priority first (capped at five for this preview).
Selecting entities — type + filter
type is the entity type (comma-separated for several: type="work,bug"). filter narrows the set with space-separated field:value clauses.
{% collection type="work" filter="status:ready priority:high priority:critical" /%}
The field-match grammar
This is the canonical reference for the field:value syntax — the same grammar and parser used by collection's filter, backlog's filter, and entityRoutes. The operator is chosen by the shape of the value, so the same string works in a markdoc attribute and in JSON config:
| Form | Example | Matches |
|---|---|---|
| exact | status:ready | the field equals ready |
| glob | url:/blog/* | * is any run of characters, anchored full-match (prefix, suffix, or infix) |
| regex | id:/^SPEC-\d+$/ | a value wrapped in slashes (optional trailing flags); not auto-anchored |
Rules:
- Same field repeated → OR, different fields → AND:
status:ready status:review priority:highmeans (ready or review) and high. - Quote values with spaces:
title:"Getting Started". - Matching is case-sensitive.
- A field resolves top-level first (
id,type,sourceFile) then from the entity'sdata;urlis an alias for the entity's resolved URL (sourceUrl, falling back todata.url). That's whyurl:/blog/*works — folder membership is just a URL prefix match, no special "folder" concept. - Array-valued fields (e.g.
tags) match on membership — any element matching the clause counts. - A malformed clause (no colon, empty field) is ignored with a build warning. An empty
filtermatches everything.
Sort, group, limit
{% collection type="work" sort="priority" group="status" limit=20 /%}
sort— a field name. Prefix-(or suffix-desc) for descending:sort="-date"orsort="date-desc". Numeric values sort numerically, otherwise lexically (ISO dates sort chronologically as strings).group— a field name; items are grouped under a heading per distinct value (empty values group under(none)).group-display— how groups are presented:headings(default) oraccordion. See Group display.limit— a positive integer cap, applied after sort. Withgroup, the cap is on the total item count.
Group display — headings or accordion
By default each group is a heading followed by its items. Set group-display="accordion" to render groups as collapsible native <details> panels instead — styled identically to the accordion rune, collapsed by default, with the group's item count beside its label:
{% collection type="work" group="status" group-display="accordion" /%}<section data-rune="collection">
<meta data-field="collection-type" content="work">
<meta data-field="collection-filter" content="">
<meta data-field="collection-sort" content="">
<meta data-field="collection-group" content="status">
<meta data-field="collection-limit" content="">
<meta data-field="collection-fields" content="">
<meta data-field="collection-layout" content="list">
<meta data-field="collection-group-display" content="accordion">
<meta data-field="collection-empty" content="">
<meta data-field="__collection-sentinel" content="true">
<div data-name="items"></div>
</section>blocked1
in-progress4
review4
ready30
pending17
draft5
done368
<section class="rf-collection" data-type="work" data-layout="list" data-rune="collection" data-density="full">
<div data-name="items" class="rf-collection__items rf-collection__items">
<div class="rf-accordion">
<details class="rf-accordion-item" data-group="blocked">
<summary class="rf-accordion-item__header">
<span class="rf-accordion-item__title">blocked</span>
<span class="rf-accordion-item__count">1</span>
</summary>
<div class="rf-accordion-item__body">
<div class="rf-collection__item" data-entity-id="RF-215">
<a class="rf-collection__title" href="/runes/plan/work">Alignment system migration</a>
</div>
</div>
</details>
<details class="rf-accordion-item" data-group="in-progress">
<summary class="rf-accordion-item__header">
<span class="rf-accordion-item__title">in-progress</span>
<span class="rf-accordion-item__count">4</span>
</summary>
<div class="rf-accordion-item__body">
<div class="rf-collection__item" data-entity-id="WORK-104">
<a class="rf-collection__title" href="/runes/plan/examples">Heading level auto-detection for nested runes</a>
</div>
<div class="rf-collection__item" data-entity-id="WORK-105">
<a class="rf-collection__title" href="/runes/plan/examples">Snapshot tests for identity transform output</a>
</div>
<div class="rf-collection__item" data-entity-id="WORK-051">
<span class="rf-collection__title">Editor Package Awareness</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-089">
<span class="rf-collection__title">Create @refrakt-md/astro adapter package</span>
</div>
</div>
</details>
<details class="rf-accordion-item" data-group="review">
<summary class="rf-accordion-item__header">
<span class="rf-accordion-item__title">review</span>
<span class="rf-accordion-item__count">4</span>
</summary>
<div class="rf-accordion-item__body">
<div class="rf-collection__item" data-entity-id="WORK-108">
<a class="rf-collection__title" href="/runes/plan/examples">Responsive modifier system</a>
</div>
<div class="rf-collection__item" data-entity-id="WORK-293">
<span class="rf-collection__title">Ship the client behaviors bundle in the html scaffold</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-346">
<span class="rf-collection__title">Rune compositions docs category</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-380">
<span class="rf-collection__title">Surface-model showcase gallery</span>
</div>
</div>
</details>
<details class="rf-accordion-item" data-group="ready">
<summary class="rf-accordion-item__header">
<span class="rf-accordion-item__title">ready</span>
<span class="rf-accordion-item__count">30</span>
</summary>
<div class="rf-accordion-item__body">
<div class="rf-collection__item" data-entity-id="WORK-101">
<a class="rf-collection__title" href="/runes/plan/examples">Content model validation errors</a>
</div>
<div class="rf-collection__item" data-entity-id="WORK-102">
<a class="rf-collection__title" href="/runes/plan/examples">Token fallback chain for nested tints</a>
</div>
<div class="rf-collection__item" data-entity-id="WORK-103">
<a class="rf-collection__title" href="/runes/plan/examples">Interactive rune playground</a>
</div>
<div class="rf-collection__item" data-entity-id="RF-142">
<a class="rf-collection__title" href="/runes/plan/work">Implement tint rune dark mode support</a>
</div>
<div class="rf-collection__item" data-entity-id="WORK-052">
<span class="rf-collection__title">Create-Refrakt Project Type Defaults</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-053">
<span class="rf-collection__title">CSS Fallback Resolution for Third-Party Packages</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-055">
<span class="rf-collection__title">Learning Package Pipeline Hooks</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-056">
<span class="rf-collection__title">Editor Background Entity Registry</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-057">
<span class="rf-collection__title">Editor Registry-Powered Autocomplete</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-058">
<span class="rf-collection__title">Pipeline Incremental Build Optimization</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-094">
<span class="rf-collection__title">Create @refrakt-md/vite plugin — Level 1 static transform</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-095">
<span class="rf-collection__title">Vite plugin — virtual CSS module and tree-shaking</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-096">
<span class="rf-collection__title">Vite plugin — dev server HMR</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-097">
<span class="rf-collection__title">Vite plugin — Level 2 cross-page pipeline</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-098">
<span class="rf-collection__title">Vite plugin — behavior init helper export</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-115">
<span class="rf-collection__title">Migrate community package postTransform uses to declarative config</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-116">
<span class="rf-collection__title">Update inspect and contracts tooling for structure slots features</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-287">
<span class="rf-collection__title">CSS tree-shake: include deferred-body rune contents in the usage analyzer</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-332">
<span class="rf-collection__title">Remove the legacy data-field engine machinery (Tier 2)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-350">
<span class="rf-collection__title">Rebuild index composability section as a bento showcase</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-391">
<span class="rf-collection__title">group-order attribute on collection, aggregate, relationships</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-392">
<span class="rf-collection__title">Multi-site support in refrakt edit</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-393">
<span class="rf-collection__title">Registry-aware block preview in the editor</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-394">
<span class="rf-collection__title">Close editHints coverage gaps across rune packages</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-395">
<span class="rf-collection__title">Surface pipeline warnings in the editor</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-397">
<span class="rf-collection__title">Relocate bento and bento-cell from marketing to core runes</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-417">
<span class="rf-collection__title">data rune preprocessor + CSV/JSON adapters</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-423">
<span class="rf-collection__title">elevation depth-ladder axis</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-424">
<span class="rf-collection__title">prominence axis (page-section family)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-425">
<span class="rf-collection__title">Lumina: map the axes + retire the static surface groups</span>
</div>
</div>
</details>
<details class="rf-accordion-item" data-group="pending">
<summary class="rf-accordion-item__header">
<span class="rf-accordion-item__title">pending</span>
<span class="rf-accordion-item__count">17</span>
</summary>
<div class="rf-accordion-item__body">
<div class="rf-collection__item" data-entity-id="WORK-005">
<span class="rf-collection__title">Build stat Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-006">
<span class="rf-collection__title">Build math Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-007">
<span class="rf-collection__title">Build concept Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-008">
<span class="rf-collection__title">Build exercise Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-009">
<span class="rf-collection__title">Build quiz Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-010">
<span class="rf-collection__title">Build glossary Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-011">
<span class="rf-collection__title">Build prerequisite Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-012">
<span class="rf-collection__title">Build objective Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-013">
<span class="rf-collection__title">Build partner Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-014">
<span class="rf-collection__title">Build job Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-016">
<span class="rf-collection__title">Build album Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-017">
<span class="rf-collection__title">Build artist Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-018">
<span class="rf-collection__title">Build video Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-409">
<span class="rf-collection__title">Visual-regression harness</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-410">
<span class="rf-collection__title">Skeleton/skin split — spike</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-426">
<span class="rf-collection__title">Migration + docs for the surface axes</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-427">
<span class="rf-collection__title">Demonstrate the axes: full-bleed hero recipe / playlist</span>
</div>
</div>
</details>
<details class="rf-accordion-item" data-group="draft">
<summary class="rf-accordion-item__header">
<span class="rf-accordion-item__title">draft</span>
<span class="rf-accordion-item__count">5</span>
</summary>
<div class="rf-accordion-item__body">
<div class="rf-collection__item" data-entity-id="WORK-107">
<a class="rf-collection__title" href="/runes/plan/examples">Theme marketplace architecture</a>
</div>
<div class="rf-collection__item" data-entity-id="WORK-334">
<span class="rf-collection__title">Chart renderer provider selection and additional providers</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-343">
<span class="rf-collection__title">Schema-declared achieved status for open-world rollups</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-354">
<span class="rf-collection__title">Responsive per-cell bento spans</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-355">
<span class="rf-collection__title">Generate theme scheme stylesheet from tokens.ts (retire hand-authored dark.css + tint.css palette copies)</span>
</div>
</div>
</details>
<details class="rf-accordion-item" data-group="done">
<summary class="rf-accordion-item__header">
<span class="rf-accordion-item__title">done</span>
<span class="rf-accordion-item__count">368</span>
</summary>
<div class="rf-accordion-item__body">
<div class="rf-collection__item" data-entity-id="WORK-106">
<a class="rf-collection__title" href="/runes/plan/examples">Add copy button to code fences</a>
</div>
<div class="rf-collection__item" data-entity-id="WORK-001">
<span class="rf-collection__title">Official Rune Packages — Breakout Plan</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-002">
<span class="rf-collection__title">Batch 3: Convert Runes Using sections Resolver</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-003">
<span class="rf-collection__title">Editor Visual Polish Plan</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-004">
<span class="rf-collection__title">Build gallery Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-015">
<span class="rf-collection__title">Build track and playlist Runes</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-019">
<span class="rf-collection__title">Build audio Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-020">
<span class="rf-collection__title">Add Entity Registration to @refrakt-md/plan</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-021">
<span class="rf-collection__title">Update Plan Documents to Use Xref Syntax</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-022">
<span class="rf-collection__title">Build backlog Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-023">
<span class="rf-collection__title">Build decision-log Rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-024">
<span class="rf-collection__title">Add knownSections to Plan Rune Content Models</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-025">
<span class="rf-collection__title">Milestone Auto-Backlog and Checklist Progress</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-026">
<span class="rf-collection__title">Add ref as Alias for xref</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-027">
<span class="rf-collection__title">CLI Plugin Discovery Architecture</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-028">
<span class="rf-collection__title">Plan File Scanner Library</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-029">
<span class="rf-collection__title">plan init and plan create Commands</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-030">
<span class="rf-collection__title">plan update Command</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-031">
<span class="rf-collection__title">plan next Command</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-032">
<span class="rf-collection__title">plan status Command</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-033">
<span class="rf-collection__title">plan validate Command</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-034">
<span class="rf-collection__title">Plan Dashboard Theme</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-035">
<span class="rf-collection__title">plan serve and plan build Commands</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-036">
<span class="rf-collection__title">Update CLAUDE.md files for plan CLI usage</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-037">
<span class="rf-collection__title">Define planLayout in @refrakt-md/transform</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-038">
<span class="rf-collection__title">Build nav region builder for plan site</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-039">
<span class="rf-collection__title">Refactor plan render pipeline to use @refrakt-md/html</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-040">
<span class="rf-collection__title">Add syntax highlighting to plan site</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-041">
<span class="rf-collection__title">Add client behaviors to plan site</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-042">
<span class="rf-collection__title">Config-aware theme resolution for plan site</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-043">
<span class="rf-collection__title">Token bridging — update plan CSS to use --rf-* tokens</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-044">
<span class="rf-collection__title">Collapsible status groups in plan sidebar</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-045">
<span class="rf-collection__title">Sidebar search and filter bar for plan site</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-046">
<span class="rf-collection__title">Enhanced plan dashboard with progress and milestone scoping</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-047">
<span class="rf-collection__title">Tag-based cross-cutting view pages for plan site</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-048">
<span class="rf-collection__title">Keyboard navigation for plan site</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-049">
<span class="rf-collection__title">Dependency visualization for plan site</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-050">
<span class="rf-collection__title">Converge plan site renderer with shared layout engine</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-054">
<span class="rf-collection__title">Storytelling Package Pipeline Hooks</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-059">
<span class="rf-collection__title">Metadata Dimensions on StructureEntry</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-060">
<span class="rf-collection__title">Annotate Rune Configs with Metadata Dimensions</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-061">
<span class="rf-collection__title">Lumina Generic Metadata CSS</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-062">
<span class="rf-collection__title">Inspector Metadata Audit</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-063">
<span class="rf-collection__title">Density Dimension</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-064">
<span class="rf-collection__title">Section Anatomy Dimension</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-065">
<span class="rf-collection__title">Interactive State Dimension</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-066">
<span class="rf-collection__title">Media Slots Dimension</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-067">
<span class="rf-collection__title">Lumina Universal Dimension CSS</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-068">
<span class="rf-collection__title">Inspector Dimensions Audit</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-069">
<span class="rf-collection__title">Universal Checklist Styling</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-070">
<span class="rf-collection__title">Universal Sequential Item Styling</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-071">
<span class="rf-collection__title">Lumina Per-Rune Redundant CSS Cleanup</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-072">
<span class="rf-collection__title">Add --resolve and --resolve-file flags to plan update</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-073">
<span class="rf-collection__title">Add resolution validation checks to plan validate</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-074">
<span class="rf-collection__title">Display resolution metadata in plan status and plan serve</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-075">
<span class="rf-collection__title">Update plan init CLAUDE.md template with resolution guidance</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-076">
<span class="rf-collection__title">Extract Shared Layout Meta Tag Utility</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-077">
<span class="rf-collection__title">Extract Shared Media Image Unwrap Utility</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-078">
<span class="rf-collection__title">BEM Modifier Hygiene for Storytelling Runes</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-079">
<span class="rf-collection__title">Align Playlist Transform to Standard Structure</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-080">
<span class="rf-collection__title">Refactor Realm and Faction Transforms to Use Shared Utilities</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-081">
<span class="rf-collection__title">Consolidate Character Transform to Single Code Path</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-082">
<span class="rf-collection__title">Shared Split Layout CSS with Two-Mode Mobile Collapse</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-083">
<span class="rf-collection__title">Create Shared Git Timestamp Utility</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-084">
<span class="rf-collection__title">Inject $file.created and $file.modified Variables into Content Pipeline</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-085">
<span class="rf-collection__title">Add Timestamp Attributes to Plan Rune Schemas</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-086">
<span class="rf-collection__title">Consolidate Plan Scanner with Shared Git Timestamp Utility</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-087">
<span class="rf-collection__title">Add Sitemap lastmod Support Using File Timestamps</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-088">
<span class="rf-collection__title">Extract shared utilities from @refrakt-md/svelte to @refrakt-md/transform</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-090">
<span class="rf-collection__title">Create @refrakt-md/nuxt adapter package</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-091">
<span class="rf-collection__title">Create @refrakt-md/next adapter package</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-092">
<span class="rf-collection__title">Create @refrakt-md/eleventy adapter package</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-093">
<span class="rf-collection__title">Add multi-framework support to create-refrakt</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-099">
<span class="rf-collection__title">Migrate simple core runes from Model to createContentModelSchema</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-100">
<span class="rf-collection__title">Migrate simple community runes from Model to createContentModelSchema</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-109">
<span class="rf-collection__title">Remove Type system — delete schema classes, registries, and old signature</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-110">
<span class="rf-collection__title">Add value mapping to modifier config</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-111">
<span class="rf-collection__title">Replace hardcoded density contexts with configurable childDensity</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-112">
<span class="rf-collection__title">Implement named slots with ordering for structure entries</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-113">
<span class="rf-collection__title">Add repeated element generation to structure entries</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-114">
<span class="rf-collection__title">Implement element projection (hide, group, relocate)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-117">
<span class="rf-collection__title">Implement framework-agnostic extraction logic for component interface</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-118">
<span class="rf-collection__title">Validate property and ref name uniqueness in createComponentRenderable</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-119">
<span class="rf-collection__title">Update Svelte renderer to pass props and snippets to component overrides</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-120">
<span class="rf-collection__title">Export generic type interfaces for rune component overrides</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-121">
<span class="rf-collection__title">Add component interface view to refrakt inspect</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-122">
<span class="rf-collection__title">Document framework-native component override interface</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-123">
<span class="rf-collection__title">Create @refrakt-md/react renderer with ADR-008 component interface</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-124">
<span class="rf-collection__title">Create @refrakt-md/vue renderer with ADR-008 component interface</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-125">
<span class="rf-collection__title">Add Astro native component override support with ADR-008 named slots</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-126">
<span class="rf-collection__title">Parse Resolution sections in the plan scanner</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-127">
<span class="rf-collection__title">Fix plan schema bugs: pending status, severity mismatch, tag filtering</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-128">
<span class="rf-collection__title">Add source, milestone, and complexity validation to plan validate</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-129">
<span class="rf-collection__title">knownSections scanner integration: section-scoped refs and validation</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-130">
<span class="rf-collection__title">Support attribute clearing in plan CLI update command</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-131">
<span class="rf-collection__title">Update site docs and plan CLAUDE.md for plan package hardening changes</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-132">
<span class="rf-collection__title">Convert plan content to machine-readable refs and adopt knownSections conventions</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-133">
<span class="rf-collection__title">Mobile plan section navigation and desktop TOC filtering</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-134">
<span class="rf-collection__title">Event model types and per-entity git history extraction</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-135">
<span class="rf-collection__title">Batch extraction and history caching</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-136">
<span class="rf-collection__title">CLI plan history single-entity mode</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-137">
<span class="rf-collection__title">CLI plan history global mode and filters</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-138">
<span class="rf-collection__title">plan-history site rune — tag definition and pipeline hooks</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-139">
<span class="rf-collection__title">plan-history CSS rendering</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-140">
<span class="rf-collection__title">Tab layout for plan entity pages</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-141">
<span class="rf-collection__title">Split plan entity header into primary badges, title, secondary badges</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-142">
<span class="rf-collection__title">Make plan init tool-agnostic</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-143">
<span class="rf-collection__title">Rename plan directories to plural form</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-144">
<span class="rf-collection__title">Extract pure scanner functions into scanner-core module</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-145">
<span class="rf-collection__title">Extract pure diffing functions into diff module</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-146">
<span class="rf-collection__title">Extract relationship builder into relationships module</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-147">
<span class="rf-collection__title">Extract entity card builder and sentiments into cards module</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-148">
<span class="rf-collection__title">Add edge-safe entry points to package.json exports</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-149">
<span class="rf-collection__title">Promote shared rune-reference infrastructure to packages/runes</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-150">
<span class="rf-collection__title">Add content-model renderer for agent-facing rune docs</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-151">
<span class="rf-collection__title">Add attribute preset registry for tier-aware reference output</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-152">
<span class="rf-collection__title">Migrate legacy Model-class runes and audit custom-pattern descriptions</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-153">
<span class="rf-collection__title">Rename RuneInfo.prompt → authoringHints and surface in reference output</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-154">
<span class="rf-collection__title">Drop the reinterprets field entirely</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-155">
<span class="rf-collection__title">Build refrakt reference CLI commands</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-156">
<span class="rf-collection__title">Generate AGENTS.md during create-refrakt scaffolding</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-157">
<span class="rf-collection__title">Add --type plan to create-refrakt</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-158">
<span class="rf-collection__title">Adopt {ID}-{slug}.md filename convention for plan items</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-159">
<span class="rf-collection__title">Unified RefraktConfig types, loader, and JSON Schema</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-160">
<span class="rf-collection__title">Add discoverPlugins() helper to @refrakt-md/cli</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-161">
<span class="rf-collection__title">Extend CliPluginCommand with inputSchema/outputSchema/mcpHandler</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-162">
<span class="rf-collection__title">Refactor runPlugin dispatch to use discoverPlugins</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-163">
<span class="rf-collection__title">refrakt --help lists installed plugins + new refrakt plugins list command</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-164">
<span class="rf-collection__title">Add --site flag to site-scoped CLI commands</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-165">
<span class="rf-collection__title">Lint cli-plugin shape in refrakt package validate</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-166">
<span class="rf-collection__title">Framework adapters accept site option</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-167">
<span class="rf-collection__title">Add inputSchema + mcpHandler to plan commands</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-168">
<span class="rf-collection__title">Plan package consumes unified config (init scaffolds, serve/build read paths)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-169">
<span class="rf-collection__title">Scaffold @refrakt-md/mcp package with stdio entry, auto-detect, and core tools</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-170">
<span class="rf-collection__title">MCP plugin tools (via discovery) and resources</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-171">
<span class="rf-collection__title">Add refrakt config migrate command</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-172">
<span class="rf-collection__title">Migrate this repo's site config to the unified root config</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-173">
<span class="rf-collection__title">Update create-refrakt scaffolds for the unified config shape</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-174">
<span class="rf-collection__title">Site docs — configuration section</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-175">
<span class="rf-collection__title">Site docs — MCP + plugin authoring update + CLAUDE.md pointer</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-176">
<span class="rf-collection__title">v0.11.0 config follow-ups</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-177">
<span class="rf-collection__title">Security policy for transform pipeline (sandbox hardening)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-178">
<span class="rf-collection__title">Nav layout foundations — header menubar and footer columns</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-179">
<span class="rf-collection__title">Collapsible sidebar nav with URL-aware auto-open</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-180">
<span class="rf-collection__title">Cards nav layout with frontmatter enrichment</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-181">
<span class="rf-collection__title">Menubar interactive behavior — dropdowns, hamburger, keyboard</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-182">
<span class="rf-collection__title">Pagination rune for sequential page navigation</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-183">
<span class="rf-collection__title">Site reference docs for new nav layouts and the pagination rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-184">
<span class="rf-collection__title">Adopt new nav layouts and pagination across refrakt.md</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-185">
<span class="rf-collection__title">Typed token contract in @refrakt-md/types</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-186">
<span class="rf-collection__title">Highlighter token rename: --shiki-* → --rf-syntax-*</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-187">
<span class="rf-collection__title">Config-driven token stylesheet generation</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-188">
<span class="rf-collection__title">Dark mode as PartialTokenContract overlay</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-189">
<span class="rf-collection__title">theme.colorScheme initial state field</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-190">
<span class="rf-collection__title">Preset loading and merge order</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-191">
<span class="rf-collection__title">Migrate existing Lumina tokens to the new contract</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-192">
<span class="rf-collection__title">Author the canonical prism SVG asset</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-193">
<span class="rf-collection__title">Favicon and app icon set</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-194">
<span class="rf-collection__title">Replace brand mark on the refrakt site</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-195">
<span class="rf-collection__title">Update TintTokens / TintDefinition types</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-196">
<span class="rf-collection__title">mergeThemeConfig extends support + remove deprecated RefraktConfig.tints</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-197">
<span class="rf-collection__title">Engine + tint.css rename to new --tint-* property names</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-198">
<span class="rf-collection__title">Migrate Lumina and plugin tint configs</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-199">
<span class="rf-collection__title">Document the tint migration recipe</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-200">
<span class="rf-collection__title">Neutral default body palette (light + dark)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-201">
<span class="rf-collection__title">Syntax highlighting palette (five hues + comment + punctuation)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-202">
<span class="rf-collection__title">Status palette (4 sentiments × 3 tokens × 2 modes)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-203">
<span class="rf-collection__title">Configure Google Fonts loading</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-204">
<span class="rf-collection__title">Tideline preset module</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-205">
<span class="rf-collection__title">Niwaki preset module</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-206">
<span class="rf-collection__title">Refrakt site adopts presets: ["niwaki"]</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-207">
<span class="rf-collection__title">create-refrakt template + post-init preset surfaces</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-208">
<span class="rf-collection__title">Preset documentation pages with design-plugin runes</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-209">
<span class="rf-collection__title">Site screenshots refreshed against new appearance</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-210">
<span class="rf-collection__title">v0.14.0 migration note for palette and fonts</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-211">
<span class="rf-collection__title">Add theme toggle to Lumina</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-212">
<span class="rf-collection__title">Cascade resolution function in @refrakt-md/content</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-213">
<span class="rf-collection__title">Frontmatter schema extension (tint, tint-mode, tint-lock)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-214">
<span class="rf-collection__title">Renderer integration + pre-paint script</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-215">
<span class="rf-collection__title">Refrakt site adopts the tint cascade</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-216">
<span class="rf-collection__title">/docs/themes/tint-cascade documentation page</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-217">
<span class="rf-collection__title">Extend SyntaxTokens interface with optional roles</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-218">
<span class="rf-collection__title">Extended Shiki css-variables theme in @refrakt-md/highlight</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-219">
<span class="rf-collection__title">CSS generator fallback chains for optional syntax roles</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-220">
<span class="rf-collection__title">Nord preset module</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-221">
<span class="rf-collection__title">Nord preset documentation page</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-222">
<span class="rf-collection__title">Cross-reference SPEC-056 from SPEC-048</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-223">
<span class="rf-collection__title">Scoped tint projection from preset modules</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-224">
<span class="rf-collection__title">Dracula preset module + doc page</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-225">
<span class="rf-collection__title">Solarized preset module + doc page</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-226">
<span class="rf-collection__title">Catppuccin preset module + doc page</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-227">
<span class="rf-collection__title">Tokyo Night preset module + doc page</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-228">
<span class="rf-collection__title">One Dark preset module + doc page</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-229">
<span class="rf-collection__title">Gruvbox preset module + doc page</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-230">
<span class="rf-collection__title">Themes catalog wrap-up</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-231">
<span class="rf-collection__title">Build-time slug resolution + error system</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-232">
<span class="rf-collection__title">Build-time active state + Lumina CSS</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-233">
<span class="rf-collection__title">Site nav migration + authoring docs</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-234">
<span class="rf-collection__title">{% badge %} core inline rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-235">
<span class="rf-collection__title">Description / icon enrichment generalised across auto layouts</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-236">
<span class="rf-collection__title">Menubar enrichment, column flow, and strip layout — engine + CSS + behavior</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-237">
<span class="rf-collection__title">Rich-dropdown authoring docs + site demo</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-238">
<span class="rf-collection__title">Docs IA split: separate author handbook from developer ("extend") handbook</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-239">
<span class="rf-collection__title">Extract composeSiteTokensCss into @refrakt-md/transform/node</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-240">
<span class="rf-collection__title">Wire site-tokens CSS through the Astro adapter</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-241">
<span class="rf-collection__title">Wire site-tokens CSS through the Nuxt adapter</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-242">
<span class="rf-collection__title">Surface site-tokens CSS in Eleventy, Next.js, and HTML adapters</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-243">
<span class="rf-collection__title">Thread SeoToHtmlOptions through every adapter's SEO surface</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-244">
<span class="rf-collection__title">Replace template-astro/src/setup.ts with createRefraktLoader</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-245">
<span class="rf-collection__title">CSS tree-shaking across non-SvelteKit adapters</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-246">
<span class="rf-collection__title">Shared pipeline-stats output across adapters</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-247">
<span class="rf-collection__title">Surface security and variables options on non-SvelteKit adapters</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-248">
<span class="rf-collection__title">Content HMR for non-SvelteKit Vite adapters and Eleventy</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-249">
<span class="rf-collection__title">Page variables and $file.path</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-250">
<span class="rf-collection__title">File-roots mechanism</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-251">
<span class="rf-collection__title">Plan plugin: unconditional scan, entity registration, fileRoots opt-in</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-252">
<span class="rf-collection__title">XrefPattern config types, compilation, and validation</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-253">
<span class="rf-collection__title">Decoupled entity-lookup/URL-resolution chain; per-segment encoding; data-target-type propagation</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-254">
<span class="rf-collection__title">Shared lang-map module in @refrakt-md/runes</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-255">
<span class="rf-collection__title">Snippet rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-256">
<span class="rf-collection__title">EntityRegistration.scope: 'page' | 'site' field</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-257">
<span class="rf-collection__title">Drawer rune (schema, transform, CSS)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-258">
<span class="rf-collection__title">Drawer behaviors (progressive enhancement, <dialog>, shortcut, URL hash sync)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-259">
<span class="rf-collection__title">Generic data-outline-scope walkers (TOC isolation + heading-ID namespacing)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-260">
<span class="rf-collection__title">Expand rune (resolver, extraction, level= demotion, canonical-link affordance)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-261">
<span class="rf-collection__title">Shared field-match parser</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-262">
<span class="rf-collection__title">Deferred-body capture for per-entity templates</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-263">
<span class="rf-collection__title">Collection rune: query engine and built-in layouts</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-264">
<span class="rf-collection__title">Collection heading-delimited table columns</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-265">
<span class="rf-collection__title">Shared markdoc formatter functions</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-266">
<span class="rf-collection__title">card rune (generic content card)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-267">
<span class="rf-collection__title">contributePages pipeline phase</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-268">
<span class="rf-collection__title">entityRoutes config-rules adapter</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-269">
<span class="rf-collection__title">embed() embeddability contract</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-270">
<span class="rf-collection__title">Plan entity embeddability (sourceFile + extract)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-271">
<span class="rf-collection__title">create-refrakt plan-site scaffold</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-272">
<span class="rf-collection__title">refrakt plan site dogfood</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-273">
<span class="rf-collection__title">Deprecate plan build and serve commands</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-274">
<span class="rf-collection__title">Extract shared collection render and sort/group helpers</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-275">
<span class="rf-collection__title">Relationship graph in the entity registry</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-276">
<span class="rf-collection__title">Domain-aware (type, field) ordering for collection sort and group</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-277">
<span class="rf-collection__title">Promote humanize to a public shared formatter</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-278">
<span class="rf-collection__title">Generic relationships rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-279">
<span class="rf-collection__title">Plan plugin: contribute edges and ordering, remove duplicated graph and sort/group</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-280">
<span class="rf-collection__title">Plan-site entity render templates: expand + relationships + plan-history</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-281">
<span class="rf-collection__title">Milestone page via collection; render progress via the generic progress rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-282">
<span class="rf-collection__title">Remove plan postProcess injection (milestone backlog + entity tabs)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-283">
<span class="rf-collection__title">Thread plan ordering override into collection; delete filter.ts sort/group</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-284">
<span class="rf-collection__title">Collapse backlog, decision-log, and plan-activity onto collection (thin sugar)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-285">
<span class="rf-collection__title">Generic progress rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-286">
<span class="rf-collection__title">Collection/relationships body zones (preamble/template/fallback) and empty state</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-288">
<span class="rf-collection__title">Theme-toggle layout chrome + behavior</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-289">
<span class="rf-collection__title">Lumina theme-toggle styling (identical look)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-290">
<span class="rf-collection__title">SvelteKit adapter no-flash theme plumbing</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-291">
<span class="rf-collection__title">Remove the Svelte-only ThemeToggle component path</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-292">
<span class="rf-collection__title">Extend theme plumbing + toggle to the remaining adapters</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-294">
<span class="rf-collection__title">Aggregate rune — schema, post-process resolver, tests</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-295">
<span class="rf-collection__title">Lumina styling for the aggregate rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-296">
<span class="rf-collection__title">Decompose plan-progress as sugar over aggregate</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-297">
<span class="rf-collection__title">Document the aggregate rune on the site</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-298">
<span class="rf-collection__title">Drawer enhancements — footer slot, always-visible chrome</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-299">
<span class="rf-collection__title">Site config — repoUrl + repoBranch for GitHub source links</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-300">
<span class="rf-collection__title">Drawer hoist mechanism for the shared preview attribute</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-301">
<span class="rf-collection__title">file-ref rune — path-based file references with optional drawer preview</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-302">
<span class="rf-collection__title">xref preview="drawer" — mention an entity in prose, expand on demand</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-303">
<span class="rf-collection__title">Document file-ref, the shared preview attribute, and the drawer footer slot</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-304">
<span class="rf-collection__title">Fence-level annotations: line numbers, line highlight, and source-based labels for codegroup/diff</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-305">
<span class="rf-collection__title">Engine + layout primitives + composable runes + Lumina chip-universal</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-306">
<span class="rf-collection__title">Plan plugin migration to metaFields + zones</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-307">
<span class="rf-collection__title">Storytelling plugin migration to metaFields + zones</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-308">
<span class="rf-collection__title">Learning plugin migration to metaFields + zones</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-309">
<span class="rf-collection__title">Docs plugin migration to metaFields + zones</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-310">
<span class="rf-collection__title">Places plugin migration to metaFields + zones</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-311">
<span class="rf-collection__title">Media plugin migration to metaFields + zones</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-312">
<span class="rf-collection__title">Core Budget rune migration to metaFields + zones</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-313">
<span class="rf-collection__title">Remove legacy slots + structure shim from engine</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-314">
<span class="rf-collection__title">Engine: block-and-layout projection model</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-315">
<span class="rf-collection__title">bar layout, intrinsic field shape, code metaType</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-316">
<span class="rf-collection__title">Migrate plan package to blocks/layout</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-317">
<span class="rf-collection__title">Migrate learning package to blocks/layout</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-318">
<span class="rf-collection__title">Migrate docs package to blocks/layout (api proof)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-319">
<span class="rf-collection__title">Migrate remaining rune packages to blocks/layout</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-320">
<span class="rf-collection__title">Remove legacy placement fields; finalize contract + docs</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-321">
<span class="rf-collection__title">Reserved fields attribute + schema dual-emit</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-322">
<span class="rf-collection__title">Engine reads the fields attribute (dual-read)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-323">
<span class="rf-collection__title">Drop data-field metas; delete the side-channel cruft</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-324">
<span class="rf-collection__title">Recursive layout assembly engine</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-325">
<span class="rf-collection__title">Flatten rune transforms to flat-emit + declarative grouping</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-326">
<span class="rf-collection__title">Move semantic derivation out of postTransform (budget totals)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-327">
<span class="rf-collection__title">Surface grouped skeleton in contracts; deprecate projection.group/relocate</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-328">
<span class="rf-collection__title">Migrate pre-engine field consumers to the fields bag</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-329">
<span class="rf-collection__title">Untangle schema.org SEO metas from the data channel</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-330">
<span class="rf-collection__title">Stabilize the plan-site dogfood test under parallel load</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-331">
<span class="rf-collection__title">Drop dual-emitted data-field metas from rune output (Tier 1)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-333">
<span class="rf-collection__title">Chart seam: semantic table IR + rf-chart web component (svg only)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-335">
<span class="rf-collection__title">Move structural building out of postTransform into rune transforms (embed/diagram/sandbox/mockup/comparison)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-336">
<span class="rf-collection__title">Audit and rationalize rune context modifiers</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-337">
<span class="rf-collection__title">Enforce parent nesting at build time</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-338">
<span class="rf-collection__title">Composability authoring contract + CLI coverage audit</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-339">
<span class="rf-collection__title">Media-zone guest adaptation (any visual rune sits cleanly in a media zone)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-340">
<span class="rf-collection__title">Token hygiene: phantom-token reconciliation + vocabulary cleanup</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-341">
<span class="rf-collection__title">Dark-mode token parity audit</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-342">
<span class="rf-collection__title">Modernize plan card-sugars to compose with the bar rune</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-344">
<span class="rf-collection__title">Expose group metadata in collection item templates</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-345">
<span class="rf-collection__title">Bento cell adopts card's zone contract; bento becomes a grid primitive</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-347">
<span class="rf-collection__title">Explicit bento-cell authoring</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-348">
<span class="rf-collection__title">Bento sizing model, size-derived media placement, and link tiles</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-349">
<span class="rf-collection__title">Aggregate chart layout</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-351">
<span class="rf-collection__title">Theme-aware global chrome: selection, scrollbars, color-scheme</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-352">
<span class="rf-collection__title">Focus-visible and reduced-motion consistency</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-353">
<span class="rf-collection__title">Chart theming contract and SVG reference implementation</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-356">
<span class="rf-collection__title">Bento levels — heading→footprint ladder</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-357">
<span class="rf-collection__title">Per-group sentiment projection in aggregate (colour plan-progress badges)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-358">
<span class="rf-collection__title">Engine config variants: RuneConfig.variants type + axis validation</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-359">
<span class="rf-collection__title">Per-instance variant resolution and merge over base config</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-360">
<span class="rf-collection__title">Per-variant structure contracts and inspect variant selection</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-361">
<span class="rf-collection__title">Migrate card/bento-cell to flat-slot model; feature grid/stack + cover variants</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-362">
<span class="rf-collection__title">Universal elevation attribute backed by a --rf-shadow-* token scale</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-363">
<span class="rf-collection__title">frames preset registry + frame attribute and inline facet overrides</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-364">
<span class="rf-collection__title">frameTarget routing + host-owned clip + shared frame CSS layer</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-365">
<span class="rf-collection__title">Collapse showcase into the frame model with deprecated aliases + docs</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-366">
<span class="rf-collection__title">Tint-tracking inset surface: --rf-surface-inset-shift token + use-site color-mix</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-367">
<span class="rf-collection__title">substrate pattern attribute: engine enum + shared base gradient stylesheet</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-368">
<span class="rf-collection__title">substrateTarget routing + build validation + surfaces theme-authoring docs</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-369">
<span class="rf-collection__title">bg gradient fill: inline facets + structured BgPresetDefinition.gradient</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-370">
<span class="rf-collection__title">Formalize the bg raw-CSS escape hatch + project-config backgrounds merge</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-371">
<span class="rf-collection__title">Structured overlay/scrim facets + raw-string overlay deprecation path</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-372">
<span class="rf-collection__title">Soft-lint raw CSS covered by structured facets + bg reference docs</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-373">
<span class="rf-collection__title">media-position=cover layout + height authority (as a config variant)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-374">
<span class="rf-collection__title">content-place 2-axis logical overlay anchor + orientation-adaptive auto</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-375">
<span class="rf-collection__title">Default cover scrim bound to content-place</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-376">
<span class="rf-collection__title">Card intrinsic height/aspect knob for bg-only cards + card docs</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-377">
<span class="rf-collection__title">Media-guest interaction model: presentational default + capability flag + fallbacks</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-378">
<span class="rf-collection__title">href demotion of media guests + cover backdrop pointer-events</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-379">
<span class="rf-collection__title">Interaction-posture build warnings + posture reference docs</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-381">
<span class="rf-collection__title">Sandbox lazy/poster activation</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-382">
<span class="rf-collection__title">three.js sandbox composition — a live program as a media guest</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-383">
<span class="rf-collection__title">Frontmatter indexing on the page entity</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-384">
<span class="rf-collection__title">Typed page entities</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-385">
<span class="rf-collection__title">Rune-page metadata backfill</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-386">
<span class="rf-collection__title">Generated rune catalogue + index stats</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-387">
<span class="rf-collection__title">Rune-doc drift guardrail</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-388">
<span class="rf-collection__title">Data-bound sandbox core</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-389">
<span class="rf-collection__title">3D sitemap showcase</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-390">
<span class="rf-collection__title">Plan relationship-graph showcase</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-396">
<span class="rf-collection__title">Generic section rune (eyebrow/headline/blurb preamble + body)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-398">
<span class="rf-collection__title">Hero as a cover host</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-399">
<span class="rf-collection__title">Cover guest fill and sandbox fill height mode</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-400">
<span class="rf-collection__title">Build warning for non-eager sandbox in a cover media zone</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-401">
<span class="rf-collection__title">Prism scene — the niwaki-refraction hero backdrop</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-402">
<span class="rf-collection__title">Docs — hero cover reference and animated prism background showcase</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-403">
<span class="rf-collection__title">Nested-density title sizing — full-density runes in compact hosts</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-404">
<span class="rf-collection__title">Typography token contract</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-405">
<span class="rf-collection__title">Lumina typography refactor onto tokens</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-406">
<span class="rf-collection__title">Generate Lumina token CSS from tokens.ts</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-407">
<span class="rf-collection__title">Gallery generator — rune subject</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-408">
<span class="rf-collection__title">Gallery generator — layout fixtures</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-411">
<span class="rf-collection__title">Fixture format, loader & generated manifest</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-412">
<span class="rf-collection__title">Complete the standardised fixture corpus</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-413">
<span class="rf-collection__title">AI write mode draws fixtures as few-shot exemplars</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-414">
<span class="rf-collection__title">Fixture validation in CI</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-415">
<span class="rf-collection__title">Fixture-authoring docs</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-416">
<span class="rf-collection__title">Gallery: bundle behaviors so interactive/lifecycle runes render</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-418">
<span class="rf-collection__title">Image-src scheme registry + resolver hook</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-419">
<span class="rf-collection__title">icon: image-src resolver</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-420">
<span class="rf-collection__title">placeholder: image-src resolver</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-421">
<span class="rf-collection__title">Migrate fixtures to placeholder: (drop the base64-PNG interim)</span>
</div>
<div class="rf-collection__item" data-entity-id="WORK-422">
<span class="rf-collection__title">Image-scheme authoring docs</span>
</div>
</div>
</details>
</div>
</div>
</section>Panels are independent (open as many as you like) and need no JavaScript — the disclosure is the browser's. The count is shown because collapsed panels hide their contents, so the size cue is genuinely useful there. For arbitrary per-group chrome beyond headings or accordion, render one filtered collection per group value, stacked.
Domain-aware ordering
Enum fields don't sort alphabetically. For a field whose values are a fixed set — a work item's priority (critical/high/medium/low), a status, a severity — sort and group order by the field's declared order, not lexically, so sort="priority" runs critical→low and group="status" lists statuses in a sensible sequence. The order is taken from each rune's attribute definition; a plugin may register an explicit override when a dashboard order differs from the declaration order. Across mixed types (type="work,bug"), each entity is ranked within its own type's ordering, so the groups still compose. Fields with no declared order fall back to numeric/lexical.
Layouts
layout controls arrangement only — item chrome comes from the item (see Per-item templates).
layout | Arrangement | With no body template |
|---|---|---|
list (default) | stacked | a compact title link per entity |
grid | responsive multi-column | a generic auto-card (title link + projected fields) |
table | aligned columns | columns from fields (or heading-delimited columns) |
There is no
cardslayout — a card gallery isgridplus{% card %}items (see below).layoutnever auto-wraps your content in a card; you choose the chrome.
Field projection — fields
fields is the zero-template shorthand for the no-body case: a comma-separated list of data fields rendered with humanized headers and default per-type formatting.
{% collection type="work" filter="status:ready" layout="table" fields="status,priority" limit=5 /%}<section data-rune="collection">
<meta data-field="collection-type" content="work">
<meta data-field="collection-filter" content="status:ready">
<meta data-field="collection-sort" content="">
<meta data-field="collection-group" content="">
<meta data-field="collection-limit" content="5">
<meta data-field="collection-fields" content="status,priority">
<meta data-field="collection-layout" content="table">
<meta data-field="collection-group-display" content="headings">
<meta data-field="collection-empty" content="">
<meta data-field="__collection-sentinel" content="true">
<div data-name="items"></div>
</section>| Title | Status | Priority |
|---|---|---|
| Content model validation errors | ready | critical |
| Token fallback chain for nested tints | ready | high |
| Interactive rune playground | ready | medium |
| Implement tint rune dark mode support | ready | high |
| Create-Refrakt Project Type Defaults | ready | medium |
<section class="rf-collection" data-type="work" data-layout="table" data-rune="collection" data-density="full">
<div data-name="items" class="rf-collection__items rf-collection__items">
<table class="rf-collection__table">
<thead>
<tr>
<th>Title</th>
<th>Status</th>
<th>Priority</th>
</tr>
</thead>
<tbody>
<tr data-entity-id="WORK-101">
<td>
<a class="rf-collection__title" href="/runes/plan/examples">Content model validation errors</a>
</td>
<td data-field="status">ready</td>
<td data-field="priority">critical</td>
</tr>
<tr data-entity-id="WORK-102">
<td>
<a class="rf-collection__title" href="/runes/plan/examples">Token fallback chain for nested tints</a>
</td>
<td data-field="status">ready</td>
<td data-field="priority">high</td>
</tr>
<tr data-entity-id="WORK-103">
<td>
<a class="rf-collection__title" href="/runes/plan/examples">Interactive rune playground</a>
</td>
<td data-field="status">ready</td>
<td data-field="priority">medium</td>
</tr>
<tr data-entity-id="RF-142">
<td>
<a class="rf-collection__title" href="/runes/plan/work">Implement tint rune dark mode support</a>
</td>
<td data-field="status">ready</td>
<td data-field="priority">high</td>
</tr>
<tr data-entity-id="WORK-052">
<td>
<span class="rf-collection__title">Create-Refrakt Project Type Defaults</span>
</td>
<td data-field="status">ready</td>
<td data-field="priority">medium</td>
</tr>
</tbody>
</table>
</div>
</section>For anything richer than raw values (formatting, combining fields, a designed card), use a body template.
Per-item templates
Give collection a body and it becomes the per-item template: the body is transformed once per entity with $item bound to that entity. The body is raw output arranged by layout — add a rune like {% card %} for chrome.
{% collection type="work" filter="status:ready" sort="priority" layout="grid" %}
{% card href=$item.url %}
### {% $item.data.title %}
Status: {% $item.data.status %} · Priority: {% $item.data.priority %}
{% /card %}
{% /collection %}
The $item variable
$item is a read-only bound variable (like $page / $file), not a contract any rune implements:
| Field | Always present? | Notes |
|---|---|---|
$item.id | yes | the entity id |
$item.identifier | yes | id, or name for name-keyed types (e.g. milestones) — a universal identifier |
$item.type | yes | the entity type |
$item.url | yes | resolved URL (sourceUrl ?? data.url); empty string, never undefined, when there's no on-site URL |
$item.data.* | type-specific | the entity's payload. A missing field renders nothing (no warning) |
$item.sentiment | when mapped | the entity's status sentiment (positive / negative / caution / neutral), e.g. to colour a badge; empty when unmapped |
$item.mixed | yes | true when the set spans more than one type (and isn't grouped by type) — useful for a conditional type chip |
$item.group | grouped only | the item's group key (the value of the group field); empty when ungrouped |
$item.groupCount | grouped only | the number of items in this item's group; 0 when ungrouped |
Payload fields are accessed under .data (e.g. $item.data.title) — there's no hoisting to $item.title, so a payload field can never shadow id/type/url.
$item.group / $item.groupCount let a grouped collection's per-item template render group context inline (e.g. {% if $item.groupCount %}{% $item.group %} ({% $item.groupCount %}){% /if %}) without dropping to aggregate.
Cards are plain runes
The card in the example above ({% card %}) knows nothing about $item, the registry, or collection — the template wires entity fields into its attributes/body. So card stays a self-contained component you can also use standalone, and there's no per-entity *-card proliferation: a designed item is {% card %} (or another rune) fed by $item, not a bespoke work-card.
Reusable templates — item-template
When the same template is reused across collections, point item-template at a markdoc partial instead of writing an inline body (mutually exclusive with an inline body):
{% collection type="page" filter="url:/blog/*" sort="date-desc" item-template="cards:post.md" /%}
…where cards/post.md contains the {% card href=$item.url %}…{% /card %} template. Same mechanism, different source.
Table columns
In table layout, an empty body uses the fields shorthand. For labels, formatting, or combined columns, give the body heading-delimited columns — each heading is a column (label = heading text, in order), and the markdoc beneath it is that column's per-cell template with $item bound:
{% collection type="product" layout="table" sort="price" %}
## Product
{% link href=$item.url %}**{% $item.data.title %}**{% /link %}
## Price
{% currency($item.data.price, $item.data.currency) %}
## Stock
{% if $item.data.stock %}{% $item.data.stock %} in stock{% else %}Out{% /if %}
{% /collection %}
Collection owns the <table> and header row; each <td> is the cell template rendered per entity. Column headings are static labels — $item belongs in the cell body, not the heading.
Linking from a cell — use
{% link %}. Markdown link syntax can't interpolate a variable into its destination:[{% $item.data.title %}]({% $item.url %})renders as literal text, because a markdown link's href is fixed at parse time. The{% link href=$item.url %}…{% /link %}tag takes a dynamic href (as in the Product column above), and works in any body template, partial, or table cell where$itemis bound. Thefieldsshorthand's auto-generated Title column also links each entity automatically.
Formatter functions
Value formatting is done with shared markdoc functions, usable anywhere markdoc runs — collection cells, body templates, entityRoutes render strings, ordinary content:
| Function | Example | Output |
|---|---|---|
currency(amount, code?) | {% currency($item.data.price, "EUR") %} | €1,234.00 |
date(value) | {% date($item.data.published) %} | Jan 15, 2024 |
number(value) | {% number($item.data.views) %} | 1,234,567 |
join(array, sep?) | {% join($item.data.tags, " · ") %} | a · b · c |
humanize(value) | {% humanize($item.data.status) %} | In Progress |
Formatting lives in these functions, not in fields or a projection mini-language.
Attributes
| Attribute | Type | Default | Description |
|---|---|---|---|
type | string | — | Entity type(s) to query, comma-separated. (show is an alias.) |
filter | string | — | field:value clauses (see grammar). |
sort | string | — | Sort field; -field / field-desc for descending. |
group | string | — | Group-by field. |
group-display | headings | accordion | headings | How groups are presented (only with group). |
limit | number | — | Max items, applied after sort. |
fields | string | — | Comma-separated data fields for the no-body built-in. |
layout | list | grid | table | list | Arrangement. Item chrome comes from the item. |
item-template | string | — | Partial used as the per-item template (mutually exclusive with an inline body). |
empty | string | — | Fallback text shown when the query yields nothing (no-body form). Absent → render nothing. |
Body zones — preamble, template, fallback
When you give collection a body, split it on a top-level --- (horizontal rule) into up to three zones — the same convention as card:
{% collection type="work" filter="status:blocked" group="status" %}
## Blocked
Work that can't progress.
---
{% card href=$item.url %}### {% $item.data.title %}{% /card %}
---
Nothing blocked — nice.
{% /collection %}
- preamble (optional, leading) — rendered once, above the items, only when the query is non-empty. Put the section heading here so the whole section (heading + items) appears or vanishes together — something
{% if %}can't do, since emptiness is resolved at build time. - template — the per-item template (today's single-zone body).
- fallback (optional, trailing) — rendered once, in place of the items, only when the query is empty.
Zones are positional: 1 zone → template; 2 → preamble + template; 3 → preamble + template + fallback. A --- inside a nested rune (a {% card %}'s own zones) is never a delimiter — only top-level rules split. For the self-closing form (no body), use the empty attribute for the fallback.
Count variables — $count and $shown
The preamble and fallback zones can read two bound variables describing the match set:
| Variable | Value |
|---|---|
$count | total entities matched, before limit |
$shown | entities actually rendered, after limit |
{% collection type="work" filter="status:ready" limit=5 %}
## Ready work
Showing {% $shown %} of {% $count %}.
---
{% card href=$item.url %}### {% $item.data.title %}{% /card %}
{% /collection %}
They're list-scoped (the whole query), not per-group — a group's own count appears in its accordion summary automatically. In the fallback zone both are 0.
Output contract
<section class="rf-collection" data-rune="collection" data-type="work" data-layout="grid">
<div class="rf-collection__items">
<!-- grid / list built-in items -->
<article class="rf-collection__card" data-entity-id="W-1">
<a class="rf-collection__title" href="/work/W-1/">…</a>
<span class="rf-collection__field" data-field="status">ready</span>
</article>
<!-- …or, with a body template, each item is the template's own output -->
<div class="rf-collection__item" data-entity-id="W-1">…</div>
</div>
</section>
When group is set, items are wrapped in div.rf-collection__group[data-group] with a h3.rf-collection__group-title. With group-display="accordion" the groups are instead a div.rf-accordion of details.rf-accordion-item[data-group] panels — reusing the accordion rune's classes (__header / __title / __count / __body). The table layout emits a table.rf-collection__table with <thead> + one <tr data-entity-id> per entity.