Решили: симптом «у панелей нет ни фона, ни каймы, текст дефолтно-серый» диагностируется не
глазами, а числом правил в ярусе: tokens.semantic обязан давать одно правило со ста с лишним
свойствами. Ноль правил означает, что ярус ролей мёртв, и каждое правило с var(--gm-color-*)
молча выброшено — то есть вся тема выглядит отключённой, хотя .tss на месте и ошибок в консоли нет.
Почему: отдельная запись рядом с
«A Broken USS Comment Kills A Whole Token Tier Silently»
нужна потому, что та описывает ПРИЧИНУ, а эта — СПОСОБ УЗНАТЬ. Между поломкой и её обнаружением
прошло больше часа: правка комментария к --gm-color-veil закрыла чужой комментарий лишним */,
после чего исчезли роли, а выглядело это как «тема не применяется в play» — и час ушёл на
перезапуски play, переназначение themeStyleSheet и подозрение импортёра.
Грабли:
- Ни один тест не краснеет.
PaletteSnapshotTestsчитаетtokens.*.ussкак ТЕКСТ регулярками, поэтому сломанный комментарий для него невидим: строка--gm-color-veil: var(--gm-ink-950);в файле есть, значит снимок сходится. Импортёр же выбрасывает ярус целиком — и молча. - Консоль тоже молчит. Ошибок USS нет: с точки зрения парсера файл валиден, просто половина его оказалась внутри комментария.
- Диагностика, которая сработала — рефлексия по теме:
flattenedRecursiveImportsу.tssдаёт список из ~37 таблиц, и у каждой видно число правил. Мёртвый ярус там виден сразу. Тот же список отвечает на второй вопрос — доехал ли новый@importдо темы. - Правка USS при живом редакторе не подхватывается play-сеансом. После починки файла нужен
ImportAssetплюс ПОЛНЫЙ перезапуск play: переназначениеthemeStyleSheetна лету дерево не чинит, аdoc.enabled = false/trueего обнуляет.
Владелец правды: Assets/_Project/UI/Theme/tokens.semantic.uss,
Assets/_Project/UI/Theme/GuildmasterRuntimeTheme.tss, тест PaletteSnapshotTests (и его предел).