V0.22.0
Setting up your dashboard 0 entities found · 7/32 branches scanned
Name:v0.22.0Status:active

v0.22.0 — Theme platform foundations

The first slice of the SPEC-094 theme-platform epic: make the theme system ready to support themes beyond Lumina (magazine / editorial / business) — without yet building one. Two independent threads — tokenize + generate and gallery + visual-regression harness — plus the spike that sizes the v0.23.0 skeleton/skin extraction.

Deferred to later slices: the wholesale skeleton/skin extraction and data-surface (v0.23.0), and theme-owned fonts, new layouts, the theme scaffold, and an actual second theme (later).

Milestone burndown: 0 open work items remaining; peak 0, started Jun 1201Jun 12Jun 15
Open work items Ideal burndown
Progress 17/17 work items

Work Items

Done 17
WORK-404 main
Typography token contract
Extend the SPEC-048 TokenContract with a real typographic system. Today the contract carries only font.sans / font.mono — no scale, leading, weight, or tracking — so typographic identity (the primary differentiator for editorial/magazine themes) is not themeable. This is the gate for the SPEC-094 Tier 1 foundations.
high moderate
4/4 criteria
WORK-405 main
Lumina typography refactor onto tokens
Replace Lumina's hardcoded typography with the WORK-404 tokens. Today there are ~351 hardcoded font-size declarations against 5 tokenized — so an editorial theme wanting a different scale must override hundreds of declarations across 90 files. Tokenizing here is also what shrinks the WORK-410 skeleton/skin spike's classification surface.
high complex
3/3 criteria
WORK-407 main
Gallery generator — rune subject
A CLI command that emits a deterministic static rune gallery: every rune across its variant matrix, on one page, rendered through the HTML adapter. This is the AI-iteration surface and the deterministic subject the harness (WORK-409) photographs.
high complex
4/4 criteria
WORK-408 main
Gallery generator — layout fixtures
Extend the gallery generator (WORK-407) to a second subject class: layout fixtures — representative sample pages rendered through each LayoutConfig so page chrome (header, nav, sidebar, TOC, mobile panel, footer) is visually covered. Chrome carries as much of a theme's identity as runes, and the skeleton/skin extraction touches styles/layouts/*, so this is what lets the harness guarantee hold for chrome, not just content blocks.
medium moderate
3/3 criteria
WORK-409 main
Visual-regression harness
A shared Playwright harness that photographs the generated gallery + layout fixtures and diffs them against a baseline. This closes the AI iteration loop and — critically — gives the v0.23.0 skeleton/skin extraction its "diff must be empty" proof. No screenshot testing exists in the repo today; this is greenfield.Baselines are ephemeral, not committed. Fixtures and theme CSS churn constantly, so committed golden PNGs would mean endless binary diffs and a re-baseline commit on nearly every PR — noise that trains everyone to ignore the check, plus repo bloat. Instead the baseline is whatever you compare against in the moment (__screenshots__/ is gitignored): capture-then- compare locally, or compare-against-base in CI.
high moderate
4/5 criteria
WORK-410 main
Skeleton/skin split — spike
The gating spike for the v0.23.0 wholesale extraction. The skeleton/skin cut is a per-declaration design call (structure and aesthetics are braided inside single rules), so settle it empirically on a small slice before committing to the public contract every future theme depends on.
high moderate
3/3 criteria
WORK-411 main
Fixture format, loader & generated manifest
The foundation of SPEC-102: pin down the fixture format and unify the four fragmented stores into one source the CLI, gallery, editor, and reference all read. The WORK-407 gallery exposed the cost of the status quo — getFixture reads only cli/lib/fixtures.ts (13 runes), ignores RUNE_EXAMPLES (24), and 25 runes fall back to a naive stub that renders wrong (<p> inside an inline badge span).
high complex
4/4 criteria
WORK-412 main
Complete the standardised fixture corpus
With the format + loader in place (WORK-411), author a good fixture for every rune so the gallery, editor, and inspect render the whole catalogue correctly. The WORK-407 gallery surfaced ~25 runes with no real fixture (rendering the broken stub) and several child runes shown standalone.
high complex
4/4 criteria
WORK-413 main
AI write mode draws fixtures as few-shot exemplars
ai/src/modes/write.ts hardcodes an "Example structure" in its prompt. Replace it with the unified fixtures — drawing each rune's rich/canonical fixture (with its notes) as in-context few-shot exemplars. No training pipeline; retrieval into the prompt only.
medium moderate
2/2 criteria
WORK-414 main
Fixture validation in CI
Guard the corpus: parse the frontmatter fields (the format established in WORK-411 strips the block; this work consumes it), validate them against the schema, support <rune>.<scenario>.md scenarios, and ensure every fixture parses + transforms. plugin-validate reports role coverage instead of only warning "no fixture".
medium moderate
4/4 criteria
WORK-415 main
Fixture-authoring docs
Document the fixture format, frontmatter fields, the role (coverage-vs-exemplar) split, and the <rune>.<scenario>.md convention under the plugin/theme authoring section.
low simple
1/1 criteria
WORK-416 main
Gallery: bundle behaviors so interactive/lifecycle runes render
The WORK-407 gallery renders the static pre-enhancement HTML, so custom-element / lifecycle runes render empty: diagram → <rf-diagram>, chart → <rf-chart>, nav → <rf-nav>, sandbox → <rf-sandbox>, map → ~nothing. Progressive-enhancement runes (accordion, details, tabs, …) render their no-JS fallback (all-expanded) rather than their real state. Including the behaviors client makes the lifecycle runes draw and the PE runes show their enhanced (representative) state.
medium moderate
3/3 criteria
WORK-418 main
Image-src scheme registry + resolver hook
The foundation for SPEC-106: recognise custom URL schemes in a Markdown image's src during the transform and resolve them to a renderable, before the generic <img> fallback. Custom schemes (placeholder:, icon:) already survive markdown-it's validateLink, so ![alt](scheme:arg) arrives as an image node with src intact.
medium moderate
3/3 criteria
WORK-419 main
icon: image-src resolver
The inline icon shorthand discussed when the icon rune landed: ![GitHub](icon:github) resolves to the named icon's inline SVG — the same source the {% icon %} rune uses.
medium moderate
3/3 criteria
WORK-420 main
placeholder: image-src resolver
![Portrait](placeholder:portrait) resolves to a generated, theme-tinted inline SVG placeholder sized to the named shape — deterministic, offline, screenshot-stable.
medium moderate
3/3 criteria
WORK-421 main
Migrate fixtures to placeholder: (drop the base64-PNG interim)
With the placeholder: resolver in place, swap the SPEC-102 fixtures' base64-PNG image blobs for clean ![alt](placeholder:<shape>) references, and confirm the image-consuming runes render the resolved SVG.
medium simple
2/2 criteria
WORK-422 main
Image-scheme authoring docs
Document the image-src scheme sugar for content authors, and the data:svg caveat.
low simple
2/2 criteria