- Подложка adaptive-иконки: градиент под акцент темы + радиальное свечение + мягкая
тень от логотипа (ic_bg_<тема>, было плоским цветом). Иконку-лого не трогал.
- Сплэш под выбранную тему: системный сплэш Android 12+ нельзя перекрасить под выбор
пользователя (alias-тема на ColorOS игнорится), поэтому системный = просто тёмный
(splash_transparent), а красивый сплэш рисуем сами на Compose (SplashOverlay):
3D-лого + акцентное свечение + тень + анимация, цвет берём из текущей темы.
- Тему на старте читаем синхронно из SharedPreferences (мгновенно, без блокировки кадра).
- Ускорен холодный старт до первого кадра 1.48с→1.11с: сплэш рисуется на первом
дешёвом кадре, тяжёлый контент (ViewModels/плеер) композится под ним; старт
PlayerService уведён с критического пути. Остаток — оверхед debug-сборки.
Логотип: монограмма-R пользователя отрендерена в матовый 3D через routerai
(gpt-5.4-image), один мастер перекрашен под 8 тем (recolor по яркости, форма
идентична).
- Внутри приложения: AppMark показывает перекрашенный 3D-логотип текущей палитры
(LocalThemePalette + ThemePalette.logoRes, drawable logo_<тема>).
- Иконка лаунчера следует теме: 8 adaptive-иконок (ic_fg_<тема> + ic_bg_<тема>) и
8 activity-alias в манифесте; LauncherIconManager включает alias выбранной темы,
гасит остальные (ровно один активен, guard против лишних миганий). Переключение —
в MainActivity по LaunchedEffect(paletteId). На ColorOS иконка может обновляться
с задержкой — особенность системы.
Скрипты генерации в design/logos (ключ routerai — вне репо, ~/.routerai_key).