You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Three intertwined fixes:
1. Script mosaic was showing (error) on every cell
Root cause: components used import.meta.glob("/maps/*.json") to
preload map IR, but Vite's glob doesn't see files in public/ in dev
(only source files). The strategy was registered with an empty map
dictionary, so every transliterate() call threw "Map dependency
missing".
Fix: switched ScriptMosaic, MapExplorer, MapPreview, MapCatalogue,
HeroMorph, QuickBox to use fetch() at runtime, walking transitive
dependencies in two passes so multi-stage pipelines resolve.
Also corrected six system codes in the mosaic that never existed
(un-hin-Deva-Latn-1972 -> un-hin-Deva-Latn-2016, etc.).
2. /about, /docs, /blog rendered without styles
Root cause: those pages used legacy design tokens (--muted, --text,
--border, --accent, --bg, --surface) that no longer exist after the
redesign.
Fix: bulk-migrated every legacy token to the new design system
(--color-stone, --color-ink, --color-rule, --color-brand, etc.).
3. Wired in @iso24229/iso15924-data and @iso24229/iso639-data
Every transliteration system carries ISO 15924 script codes (source
+ destination) and ISO 639 language info (or multiple for
cross-language systems). New src/data/iso.ts resolves codes to
human names at build time:
- scriptName("Cyrl") -> "Cyrillic"
- scriptNumber("Cyrl") -> 220
- languageName("eng") -> "English"
- parseLanguageField("iso-639-2:eng|iso-639-2:fr") -> "English / French"
Map detail pages now show "Cyrillic · 220" instead of bare "Cyrl",
and language fields render as "English / French" instead of raw
"iso-639-2:eng|iso-639-2:fr".
Tests:
- Added test/iso-data.test.ts (10 tests covering script + lang resolution)
- Updated script-mosaic.test.ts to mock fetch()
- All 129 tests pass
0 commit comments