WORK-368
ID:WORK-368Status:done

substrateTarget routing + build validation + surfaces theme-authoring docs

Add substrateTarget routing (default self, theme-overridable, author wins), media-well binding and validation, and document the three fill layers.

Priority:mediumComplexity:moderateMilestone:v0.20.0Source:SPEC-087

Criteria completion

Criteria completion: 3 of 3 (100%) checked; history from Jun 9 to Jun 90%25%50%75%100%Jun 9Jun 9
Branches 2
History 4
  1. 7e6b7cc
    • ☑ Surface fill target is `RuneConfig.substrateTarget` (default `'self'`, separate from `frameTarget`), theme-overridable via `mergeThemeConfig`; a per-instance `substrate-target="self|media"` always wins.
    • ☑ Targeting `media` on a rune with no media section emits a build warning; the addressable media-well surface is defined for later `tint` reuse.
    • ☑ A theme-authoring "surfaces" page documents the three fill layers (`tint`=colour, `bg`=image, `substrate`=pattern), the self/media-well targeting, and the Case A/B examples.
    by bjornolofandersson
  2. 702732b
    Content editedby Claude
    plan: mark Batch 3 (SPEC-087 surface fills) done + changeset
  3. 9c0545a
    Created (ready)by bjornolofandersson
  4. 1da59d6
    Content editedby Claude
    plan: add v0.20.0 milestone and break down SPEC-086..091 into work items

Acceptance Criteria

  • Surface fill target is RuneConfig.substrateTarget (default 'self', separate from frameTarget), theme-overridable via mergeThemeConfig; a per-instance substrate-target="self|media" always wins.
  • Targeting media on a rune with no media section emits a build warning; the addressable media-well surface is defined for later tint reuse.
  • A theme-authoring "surfaces" page documents the three fill layers (tint=colour, bg=image, substrate=pattern), the self/media-well targeting, and the Case A/B examples.

Approach

Media-zone element WORK-339; mergeThemeConfig. SPEC-087 §2.

References

  • SPEC-087

Resolution

Completed: 2026-06-09

Branch: claude/spec-087-surface-fills

What was done

  • RuneConfig.substrateTarget (default 'self', separate from frameTarget), theme-overridable via mergeThemeConfig; per-instance substrate-target="self|media" always wins; media-zone binding to [data-section="media"]; build warning + validate.ts validation when targeting media on a rune with no media section.
  • Theme-authoring surface-fills.md page: the three fill layers (tint/bg/substrate), the substrate enum + facets, the tint-tracking inset surface, self/media-well targeting, and the Case A/B examples.

Notes

  • The addressable media-well surface is defined here for later tint reuse (a follow-on).