WORK-368
Setting up your dashboard 0 entities found · 9/35 branches scanned
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; tracking started on Jun 9, no incremental history yet0%25%50%75%100%Jun 9Jun 15

Tracking started Jun 9 — check back for trends.

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).