V0.19.0
Name:v0.19.0Status:planning

v0.19.0 — Polish, composability & rollups

Where v0.18.0 hardened the rune output contract, v0.19.0 builds on that stable base along several threads: visual polish of the Lumina theme, making rune composability a supported and validated surface (SPEC-084), turning bento into a proper composition substrate (SPEC-085), and improving the cross-page aggregation runes that the plan plugin leans on.

Milestone burndown: 0 open work items remaining; peak 0, started Jun 601Jun 6Jun 15
Open work items Ideal burndown
Progress 9/13 work items
Related 26

Work Items

Ready 4
WORK-340 main
Token hygiene: phantom-token reconciliation + vocabulary cleanup
Lumina's CSS references several colour tokens that are never defined, so each paints a stale literal fallback (a sky-blue from an old default theme, or a cool Tailwind gray) that doesn't track light/dark. This is the real cause of the "out of place" blue (e.g. the typography specimen background) and the cold-gray muted text in dark mode. Fix the drift at the source, reconcile the vocabulary, and keep the configurable shapes (presets, generator, docs) in correspondence.
high moderate
0/9 criteria
WORK-341 main
Dark-mode token parity audit
Make dark-mode token coverage deliberate. Most "dark looks off" reports trace to the phantom tokens fixed in WORK-340 (a phantom can't have a dark value); this item closes the genuine remaining gaps and records the intentional shared-token decisions.
medium simple
0/4 criteria
WORK-351 main
Theme-aware global chrome: selection, scrollbars, color-scheme
Three pieces of browser chrome currently ignore the theme. Make them token-driven and mode-aware.
medium simple
0/4 criteria
WORK-352 main
Focus-visible and reduced-motion consistency
Accessibility polish across the theme. Today only ~5 of ~90 rune CSS files define :focus-visible, and only 2 honor prefers-reduced-motion — so keyboard focus is inconsistent and animations don't degrade for motion-sensitive users.
medium moderate
0/4 criteria
Done 9
WORK-296 main
Decompose plan-progress as sugar over aggregate
With the generic aggregate rune in place (WORK-294), plan-progress becomes thin sugar over aggregate — same pattern as backlog / decision-log / plan-activity wrapping collection. plan-progress's current rendering (the progress bar + per-status badge row) is exactly the aggregate composition; we just need plan-specific defaults baked in so the call site stays {% plan-progress /%}.
medium moderate
8/8 criteria
WORK-336 main
Audit and rationalize rune context modifiers
Review every declared contextModifiers entry across core and plugins, decide whether the pairing is meaningful, and either style it or remove it. The lone KNOWN_MISSING_SELECTORS context entry — Hero's feature → in-feature — is the first casualty: it has no sensible rendering, so the modifier comes out rather than getting CSS.
medium simple
4/4 criteria
WORK-337 main
Enforce parent nesting at build time
Turn RuneConfig.parent into a validated, self-declared requiresParent constraint (SPEC-084). A child rune that declares it must live inside a given parent, but appears outside it, surfaces a diagnostic instead of rendering silently-broken output. Crucially this is open-world: only a rune that self-declares a requirement is ever checked — the framework keeps no registry of allowed children, so third-party runes on either side just work.
medium moderate
5/5 criteria
WORK-338 main
Composability authoring contract + CLI coverage audit
The authoring-facing half of SPEC-084: a contract guide for rune authors plus a CLI audit. (The end-user catalog of concrete compositions lives separately in the "Compositions" docs category, WORK-346 — this item is the "how the contract works" reference, not the recipe book.)
medium moderate
5/5 criteria
WORK-339 main
Media-zone guest adaptation (any visual rune sits cleanly in a media zone)
Per SPEC-084's open-world styling rule, a container adapts its slot, not the specific guest. Containers that already expose a media zone (card, feature, hero, recipe) should size/clip any visual rune dropped into that zone — map today, chart/gallery/diagram/embed/sandbox next — via one name-agnostic selector, rather than per-pair styling. map-in-card is the proof case.
medium moderate
7/7 criteria
WORK-342 main
Modernize plan card-sugars to compose with the bar rune
The plan sugars backlog, decision-log, and plan-activity lower to collection with bespoke card/table bodies that predate the bar rune. Rebuild their default bodies to compose from bar and give backlog a layout passthrough — while keeping the rollup faithful when the query mixes entity types.
medium moderate
8/8 criteria
WORK-344 main
Expose group metadata in collection item templates
When collection groups results, the per-item template can't see which group it belongs to or that group's size — so authors drop to aggregate for anything group-aware. Expose the group key (and count) on $item so grouped collections can render group context inline.
low simple
4/4 criteria
WORK-349 main
Aggregate chart layout
Close the one gap between "we have the data" and "we can chart it." Plan entities are already registered in the main site's registry, so {% aggregate type="work" group="status" %} returns real counts today — but aggregate can only render an inline integer or a body-zoned template, not a chart. Add a layout="chart" mode that renders the grouped counts as an SVG, reusing the rf-chart renderer from WORK-333. This is the SPEC-076 "chart layout" future extension, and the clean "data rune feeds viz rune" composition.
medium moderate
6/6 criteria
WORK-353 main
Chart theming contract and SVG reference implementation
Today the rf-chart web component hardcodes its palette (a JS array of semantic token refs) and all geometry (bar width bw*0.75, point r:4, stroke/ font/ gridline sizes). A theme has no say over bar thickness, series colours, etc. Define a provider-agnostic theming contract — a --rf-chart-* custom-property surface — and make the built-in SVG renderer the reference implementation of it.
medium moderate
8/8 criteria