Skip to content

[openworlds-audit][CROSS-CUTTING] Iconography: replace raw glyphs + Placeholder.glyph with OpenWorldsIcon registry calls #279

Description

@100yenadmin

Cross-cutting Major enrichment from the 2026-05-29 audit pass. Rolls into and extends #174 (icon registry).

Symptom

The OpenWorldsIcon registry (the window.OpenWorldsIcon?.has?.(kind) + <window.OpenWorldsIcon id={kind} size={n} /> pattern in chrome.jsx:62-63) is used inconsistently. Many screens fall back to raw unicode glyphs or <Placeholder label={glyph_name}> even when an icon would render.

File:line — known usages where Icon should replace Placeholder/raw glyph

File:line Current Should be
screen-character.jsx:595 <Placeholder label={a.glyph}> <IconPlate glyph={a.icon}> (AbilityCard)
screen-character.jsx:616 <Placeholder label={f.glyph}> <IconPlate glyph={f.icon}> (FeatRow)
screen-character.jsx:753 <Placeholder label={sp.glyph}> <IconPlate glyph={sp.icon}> (Spell tile)
screen-character.jsx:427 <Placeholder label={sp.glyph}> same (RestPrepareModal)
screen-combat.jsx:194-200 mixed fallback icons "◈ ✺ ⊘" OpenWorldsIcon ids if registered
screen-combat.jsx:597-599 iconNode = registry ? <Icon> : icon (string) use Icon when registered (already conditional) — ensure registry has the IDs
screen-table.jsx:289-292 raw text "d20 d12 d8 d6" + optional icon guarantee dice.d20 dice.d12 dice.d8 dice.d6 in registry
screen-map.jsx:625 conditional atlas.travel ensure registered
camp-sidebar.jsx:418 <span style="...{icon}">{icon}</span> (one-char) use OpenWorldsIcon if available

Acceptance criteria

  • Audit the OpenWorldsIcon registry (referenced by chrome.jsx) and confirm coverage for: dice.d20, dice.d12, dice.d8, dice.d6, dice.roll, atlas.travel, camp.rest, combat.attack, inventory.potion, inventory.locked, quest.scroll, codex.book, settlement.tavern, plus all 14 SRD conditions, all 5 damage types, all 5e classes (sigil), all 5e schools of magic.
  • Replace <Placeholder label={…glyph string…}> with <IconPlate glyph={…}> (or <OpenWorldsIcon id={…}>) in each of the rows above.
  • Falls back to single-letter glyph or Placeholder ONLY when the icon is genuinely missing.
  • Verified: Character → Abilities tab shows real glyphs (not "lay on hands" text placeholder).

Why it matters

Icons-as-text strings undermine the prestige-CRPG framing. The registry exists; it just isn't used consistently. Closing this lifts visual polish on 5+ screens at once.

Parent: #174 (icon registry). Per-screen epics: #246 #247 #250.
Umbrella: #242.

Metadata

Metadata

Assignees

No one assigned

    Labels

    asset-gapNeeds wiki-first ingest or local _private artenhancementNew feature or requestepic:per-page-polishEPIC G — per-page UI/UX polishiconographyIcon registry usage (#174 parent)severity:majorVisible degradation a Pathfinder/BG3 player calls out in 60stier-1Tier 1: Claude Code pluginui-auditFrom the 2026-05-29 UI/UX audit (docs/ui-audit/)

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions