diff --git a/VERSION.properties b/VERSION.properties
index edd0c34e..db6de73c 100644
--- a/VERSION.properties
+++ b/VERSION.properties
@@ -1,2 +1,2 @@
-client.version=1.13.0
+client.version=1.13.1
server.version=1.11.0
diff --git a/docs/UI-Design/ISSUES-for-dev.md b/docs/UI-Design/ISSUES-for-dev.md
new file mode 100644
index 00000000..bd1d1c64
--- /dev/null
+++ b/docs/UI-Design/ISSUES-for-dev.md
@@ -0,0 +1,41 @@
+# Замечания к серверу и UI (найдено при редизайне)
+
+Код по этим пунктам не менялся.
+
+## Ошибки
+
+1. **Лента «Подписки» пуста у логинов с заглавными буквами** (например `User_t2_03`).
+ `Net_ListSubscriptionsFeed_Handler.loadFollowedChannels` ищет `connections_state.login = ?` в исходном регистре,
+ а в `connections_state` логин хранится в нижнем регистре (FK на `solana_user_pda_current.normalized_login`).
+ Подписки в базе есть, но `followedChannels` пуст. Отсюда же «подписка не срабатывает» в UI:
+ кнопка не меняется на «Отписаться», канал не появляется в «Подписках».
+
+2. **Превью в списке чатов — «Сообщение недоступно»**, хотя в самом чате сообщения расшифровываются.
+ `messages-list.js` строит превью по `dialog.lastMessageBlobB64`, `catch` глушит настоящую ошибку.
+ Проверить, не бывает ли так у реальных пользователей (например, если последнее сообщение отправлено с другого устройства).
+
+3. **Прямой переход по адресу** `/settings`, `/profile`, `/channels/new` при загрузке страницы уводит на «Личные».
+
+4. **`?localWsPort=` теряется при навигации**: после обновления страницы UI молча подключается к `shineup.me`.
+
+## Безопасность / конфигурация
+
+5. **Приватный ключ web-push в репозитории**: `SHiNE-server/src/main/resources/application.properties` → `webpush.vapid.private`.
+ Если он совпадает с продовым — перевыпустить и убрать из git.
+
+6. По умолчанию сервер представляется логином прода `server.SHiNE.login=shineupme` — при запуске вне прода легко перепутать.
+
+## На будущее
+
+7. **Каждое действие перерисовывает страницу целиком** (лайк → шапка на мгновение «Канал / Загрузка…», лента перестраивается),
+ отсюда «дёрганье» при переходах назад. Нужны оптимистичные обновления (лайк/ответ меняют только свой элемент),
+ кэш загруженных лент между переходами, обновление без полной перерисовки.
+
+8. **Кэш модулей после деплоя.** Страницы в `js/app.js` подключаются с метками `?v=…`, а `js/components/*` и `js/services/*` — без меток,
+ браузер может держать старую версию. Для изменённых страниц метки подняты до `?v=202609260900`;
+ для остальных модулей стоит проверить заголовки кэширования или ввести общую метку версии, как у CSS и `app.js`.
+
+## Не сделано в редизайне
+
+- Автопроверка серверов в настройках.
+- Число подписчиков в шапке канала (нет в API).
diff --git a/shine-UI/index.html b/shine-UI/index.html
index 55d2ed5c..3430e76f 100644
--- a/shine-UI/index.html
+++ b/shine-UI/index.html
@@ -6,6 +6,7 @@
name="viewport"
content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-visual"
/>
+
@@ -24,6 +25,17 @@
document.documentElement.dataset.themeMode = mode;
document.documentElement.dataset.theme = resolved;
document.documentElement.style.colorScheme = resolved;
+ // Своя палитра (см. js/services/theme-service.js) применяется до отрисовки, без вспышки.
+ try {
+ const applied = JSON.parse(localStorage.getItem('shine-ui-palette-applied-v1') || 'null');
+ const colors = applied && applied[resolved];
+ if (colors) {
+ Object.keys(colors).forEach(function (role) {
+ if (/^#[0-9a-f]{6}$/i.test(colors[role])) document.documentElement.style.setProperty('--' + role, colors[role]);
+ });
+ if (colors.accent) document.documentElement.style.setProperty('--focus-ring', colors.accent);
+ }
+ } catch {}
}());