feat(brand): новый 3D-логотип (монограмма R) + лого/иконка под цветовую тему

Логотип: монограмма-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).
This commit is contained in:
nk
2026-06-07 16:17:39 +03:00
parent 07f56acf27
commit 2fcc065a18
44 changed files with 617 additions and 24 deletions

View File

@@ -36,12 +36,50 @@
android:name=".MainActivity"
android:exported="true"
android:theme="@style/Theme.Radiola.Splash"
android:configChanges="orientation|screenSize|smallestScreenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
android:configChanges="orientation|screenSize|smallestScreenSize" />
<!-- Иконка лаунчера под цветовую тему: всегда включён ровно ОДИН alias.
Переключается в рантайме (LauncherIconManager) при смене темы. -->
<activity-alias android:name=".MainAliasForest" android:enabled="true" android:exported="true"
android:targetActivity=".MainActivity" android:label="@string/app_name"
android:icon="@mipmap/ic_launcher_forest" android:roundIcon="@mipmap/ic_launcher_forest_round">
<intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter>
</activity-alias>
<activity-alias android:name=".MainAliasOcean" android:enabled="false" android:exported="true"
android:targetActivity=".MainActivity" android:label="@string/app_name"
android:icon="@mipmap/ic_launcher_ocean" android:roundIcon="@mipmap/ic_launcher_ocean_round">
<intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter>
</activity-alias>
<activity-alias android:name=".MainAliasSunset" android:enabled="false" android:exported="true"
android:targetActivity=".MainActivity" android:label="@string/app_name"
android:icon="@mipmap/ic_launcher_sunset" android:roundIcon="@mipmap/ic_launcher_sunset_round">
<intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter>
</activity-alias>
<activity-alias android:name=".MainAliasAmethyst" android:enabled="false" android:exported="true"
android:targetActivity=".MainActivity" android:label="@string/app_name"
android:icon="@mipmap/ic_launcher_amethyst" android:roundIcon="@mipmap/ic_launcher_amethyst_round">
<intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter>
</activity-alias>
<activity-alias android:name=".MainAliasNeon" android:enabled="false" android:exported="true"
android:targetActivity=".MainActivity" android:label="@string/app_name"
android:icon="@mipmap/ic_launcher_neon" android:roundIcon="@mipmap/ic_launcher_neon_round">
<intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter>
</activity-alias>
<activity-alias android:name=".MainAliasAmber" android:enabled="false" android:exported="true"
android:targetActivity=".MainActivity" android:label="@string/app_name"
android:icon="@mipmap/ic_launcher_amber" android:roundIcon="@mipmap/ic_launcher_amber_round">
<intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter>
</activity-alias>
<activity-alias android:name=".MainAliasIce" android:enabled="false" android:exported="true"
android:targetActivity=".MainActivity" android:label="@string/app_name"
android:icon="@mipmap/ic_launcher_ice" android:roundIcon="@mipmap/ic_launcher_ice_round">
<intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter>
</activity-alias>
<activity-alias android:name=".MainAliasRose" android:enabled="false" android:exported="true"
android:targetActivity=".MainActivity" android:label="@string/app_name"
android:icon="@mipmap/ic_launcher_rose" android:roundIcon="@mipmap/ic_launcher_rose_round">
<intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter>
</activity-alias>
<service
android:name=".service.PlayerService"