Новости платформы

Единый центр объявлений, системных публикаций и релизов.
Новости и релизы Живая лента

Центр новостей

Системные объявления, админские публикации и релизные заметки в одной аккуратной ленте. Фильтруйте по типу, следите за версиями и быстро переходите к уведомлениям или управлению.

Отправитель TAJELO System Всего 1109 Релизы 704
Уведомления
Быстрый доступ к уведомлениям, админским публикациям и истории обновлений.
Всего
1109
Публикаций в ленте
Объявления
0
Админ-публикации
Системные
405
Базовые заметки
Релизы
704
История версий
Лента публикаций
Готово к фильтрации
Пока нет опубликованных новостей
Новые объявления и релизы появятся здесь автоматически.
Релиз v5.8.67
2026-04-06

Релиз v5.8.67

Release v5.8.67 is prepared and ready for update deployment. · Release archive assembled via canonical cross-platform builder scripts/release-builder.php. · Pre-release checks were skipped by --skip-checks.
Система v5.8.67
2026-04-06

TSOY.CLOUD 5.8.67: release update

- Release v5.8.67 is prepared and ready for update deployment. - Technical changelog for this version is synced automatically.
Релиз v5.8.66
2026-04-06

Релиз v5.8.66

Release v5.8.66 is prepared and ready for update deployment. · Release archive assembled via canonical cross-platform builder scripts/release-builder.php. · Pre-release checks were skipped by --skip-checks.
Система v5.8.66
2026-04-06

TSOY.CLOUD 5.8.66: release update

- Release v5.8.66 is prepared and ready for update deployment. - Technical changelog for this version is synced automatically.
Релиз v5.8.65
2026-04-06

Релиз v5.8.65

Release v5.8.65 is prepared and ready for update deployment. · Release archive assembled via canonical cross-platform builder scripts/release-builder.php. · Pre-release checks were skipped by --skip-checks.
Система v5.8.65
2026-04-06

TSOY.CLOUD 5.8.65: release update

- Release v5.8.65 is prepared and ready for update deployment. - Technical changelog for this version is synced automatically.
Релиз v5.8.64
2026-04-06

Релиз v5.8.64

Техническое обновление: завершено разделение всех крупных контроллеров на UseCase-механизмы согласно плану модернизации P2. · Decomposed ChatCoreController, CloudContentController, and ToolsLinksBoardController into separate UseCase classes. · Finished Phase P2 (Heavy controller decomposition) from ROADMAP.md.
Система v5.8.64
2026-04-06

TSOY.CLOUD 5.8.64: release update

- Release v5.8.64 is prepared and ready for update deployment. - Technical changelog for this version is synced automatically.
Релиз v5.8.63
2026-04-04

Релиз v5.8.63

Release v5.8.63 is prepared and ready for update deployment. · Release archive assembled via canonical cross-platform builder scripts/release-builder.php. · Pre-release checks were skipped by --skip-checks.
Система v5.8.63
2026-04-04

TSOY.CLOUD 5.8.63: release update

- Release v5.8.63 is prepared and ready for update deployment. - Technical changelog for this version is synced automatically.
Релиз v5.8.62
2026-04-03

Релиз v5.8.62

Release v5.8.62 is prepared and ready for update deployment. · Release archive assembled via canonical cross-platform builder scripts/release-builder.php. · Pre-release checks were skipped by --skip-checks.
Система v5.8.62
2026-04-03

TSOY.CLOUD 5.8.62: release update

- Release v5.8.62 is prepared and ready for update deployment. - Technical changelog for this version is synced automatically.
Релиз v5.8.52
2026-03-20

Релиз v5.8.52

Чаты разделены визуально и логически: основной чат теперь явно обозначен как полноформатный мессенджер, а правый dock — как отдельный боковой чат. · Создание групповой беседы из основного чата больше не должно уводить пользователя в правую узкую панель: группа открывается в основном полотне чата. · views/chat.php: добавлены явные термины `Основной чат`, group-aware подсказки, обновлён modal создания групп и bootstrap `currentChannelId`. · views/layout.php: правый dock переименован в `Боковой чат`, переработан create-panel и подписи сценариев `сбоку`.
Релиз v5.8.51
2026-03-08

Релиз v5.8.51

Hotfix стабильности: устранены предупреждения рендера layout и связанные сбои отображения после обновления. · Обновление не меняет пользовательские сценарии и настройки, только исправляет внутреннюю ошибку вывода. · views/layout.php: добавлены жёсткие string-дефолты для `site_name/site_header_name/site_footer/site_logo_path/site_favicon_path/site_pwa_icon_path` перед использованием в шаблоне. · app/router/kernel.php (`router_emit_response`): добавлена проверка `headers_sent()` перед `http_response_code()` и отправкой headers, чтобы исключить warning `Cannot set response code - headers already sent`.
Система v5.8.51
2026-03-08

TSOY.CLOUD 5.8.51: hotfix layout/router (устранены warnings)

- Исправлен warning `Undefined variable ` в layout: значения `site_*` теперь всегда инициализируются безопасными строковыми дефолтами. - Исправлен warning `Cannot set response code - headers already sent`: роутер проверяет `headers_sent()` перед установкой HT…
Релиз v5.8.50
2026-03-08

Релиз v5.8.50

Hotfix релиз: устранено критичное падение старта приложения после обновления роутера. · Обновление устанавливается без изменений пользовательских настроек, маршрутов и данных. · app/router/routes.php: исправлена нормализация handler-overrides для root-route `''` (пустой route id больше не отбрасывается). · app/router/route_handler_overrides.php: добавлен явный override `'' => 'public_auth'` для полной совместимости с `route_caps`.
Система v5.8.50
2026-03-08

TSOY.CLOUD 5.8.50: hotfix релиз роутера (исправлен bootstrap-fatal)

- Исправлен критичный startup-fatal `Missing route handler overrides`, проявившийся после выноса route-overrides в конфиг. - В overrides добавлен root-маршрут (`''`), а загрузчик роутов больше не теряет пустой route id при нормализации. - Сообщение диагностик…
Релиз v5.8.49
2026-03-08

Релиз v5.8.49

Сборка релиза стала стабильнее: маршрутное ядро переведено на более прозрачную модульную схему диспетчеризации. · Обновлены встроенные релизные данные: новая версия корректно отображается в системной информации и новостях после обновления. · app/router/handlers/settings_admin_legacy.php: полностью вынесена ветка `settings/admin_settings/settings_admin_*` из legacy-switch, сохранено поведение 1:1. · app/router/kernel.php: `router_dispatch_handler()` переведён на декларативный mapping (`handler -> entrypoint`), удалены промежуточные `router_dispatch_*` обёртки; добавлен лог compatibility-fallback при обращении к legacy.
Система v5.8.49
2026-03-08

TSOY.CLOUD 5.8.49: модульный роутер (техрелиз) и стабильная сборка релизов

- Выполнен следующий этап рефакторинга роутинга: крупные settings-ветки вынесены из legacy-switch в модульный handler без изменения публичных URL и контрактов. - Диспетчеризация handler-ов переведена на декларативный mapping (`handler -> entrypoint`), что упр…
Релиз v5.8.48
2026-03-07

Релиз v5.8.48

Мобильная шапка: устранён плавающий верхний отступ, topbar снова корректно прижат к верхней кромке экрана. · Уведомления: открытие страницы по колокольчику ускорено; пропали заметные фризы при переходе. · views/layout.php + views/partials/head.php: удалены критичные CSS-зависимости от `:has(...)`; добавлены shell-hooks `data-shell-has-topbar` и `data-shell-canvas-route`, исправлен safe-area offset на mobile. · app/notifications.php: unread-счётчик переведён на fast-path по `conversations.u1_unread_count/u2_unread_count` с fallback на legacy подсчёт по `messages`.
Система v5.8.48
2026-03-07

TSOY.CLOUD 5.8.48: анти-лаг проход интерфейса, мобильная шапка и ускорение уведомлений

- Исправлено смещение верхнего меню на телефонах: мобильная шапка снова прижата к верху экрана без лишнего safe-area зазора. - Устранён лаг при открытии уведомлений: переход по колокольчику стал заметно быстрее. - Доработан мобильный мессенджер: при сбоях asy…
Релиз v5.8.45
2026-03-06

Релиз v5.8.45

Чаты: при открытии диалога фокус теперь стабильно ставится на последние сообщения, включая мобильный браузер и PWA. · Чаты: индикатор доставки/прочтения у исходящих сообщений перенесён в строку метаданных сразу после времени. · views/chat.php: добавлены `focusLatestMessages()` и `historyLoadEnabled` для безопасного initial auto-scroll к низу без случайной подгрузки истории в момент открытия диалога. · views/chat.php: `.msg-read-state` переведён из absolute-overlay в inline-мету; рендер чеков синхронизирован в PHP/JS-билдерах сообщений.
Система v5.8.45
2026-03-06

TSOY.CLOUD 5.8.45: стабильность чатов и PWA-синхронизация

- При открытии чата теперь гарантирован фокус на последних сообщениях, в том числе на телефонах и в PWA. - Индикатор прочтения у исходящих сообщений перенесён в строку времени, чтобы не конфликтовать с кнопкой меню сообщения. - Исправлен запуск эмодзи-пикера …
Релиз v5.8.44
2026-03-05

Релиз v5.8.44

VPN Vault: окно создания записи свёрнуто по умолчанию и открывается только по кнопке «Добавить запись», чтобы не перегружать интерфейс. · VPN Vault: сохранён пошаговый режим 1→2→3 с понятной навигацией для новичков при создании VPN-записи. · views/vpn.php: подтверждён wizard-поток (`create_step`) и collapsible create-panel через `createExpanded`, с сохранением шага при POST-валидации. · views/vpn.php: добавлен структурированный рендер reveal-полей (`$vpnRevealedRows`, `$vpnSecretFieldLabels`, обработка `raw` JSON) для человеко-понятного вывода секрета.
Релиз v5.8.43
2026-03-05

Релиз v5.8.43

Менеджер паролей: добавлен отдельный тип записи «Сервис» для сервисных кабинетов (например, кабинеты оператора связи). · Формы создания/редактирования стали типо-зависимыми: показываются только релевантные поля для выбранного типа записи. · app/passwords.php: расширена модель `pm_items` полями `phone_contract_holder`, `phone_contract_at`, `phone_last_activity_at`, `phone_keepalive_days`; добавлены нормализаторы и серверная валидация интервалов. · app/passwords.php: внедрена серверная типо-зависимая очистка мобильных метаданных (оператор/тариф/договорные поля хранятся только для `phone|service`).
Релиз v5.8.42
2026-03-05

Релиз v5.8.42

Менеджер паролей: добавлен быстрый импорт из буфера обмена и авторазбор вставленного текста (URL, email, телефон, user:pass, login/password, vpn://). · Менеджер паролей: форма создания стала удобнее для новичков — шаги, пресеты, прогресс заполнения и генератор/оценка пароля. · app/passwords.php: внедрены `pm_phone_normalize()`, расширенные поля телефона (`phone_country`, `phone_operator`, `phone_plan`, `phone_comment`) и фильтры `phone_value/phone_usage` в `pm_items_list_for_user(...)`. · app/passwords.php: добавлена `pm_phone_usage_map_for_user(...)` для построения связей по номеру между сервисами в пределах пользователя.
Релиз v5.8.41
2026-03-05

Релиз v5.8.41

VPN Vault: добавлено управление Amnezia Premium из интерфейса — можно хранить ключ `vpn://...`, видеть срок действия и статус. · VPN Vault: доступы к записи теперь управляются без перезагрузки страницы (выдача, изменение прав, удаление доступа). · app/vpn.php + index.php: добавлена обработка `amnezia_link` с валидацией формата `vpn://...` и включением в зашифрованный secret payload. · index.php (`case vpn` / `case vpn_api`): интегрированы permission-aware операции для shared-записей и API-действия `share_add`, `share_perm`, `share_remove`.
Релиз v5.8.40
2026-03-05

Релиз v5.8.40

Доска: кнопка «Создать доску» в форме выровнена по полям и больше не «висит» выше строки контролов. · Настройки: нижний блок сохранения стал компактнее и перестал визуально раздуваться на широких экранах. · views/board_hub.php: для action-колонки добавлен выравнивающий spacer-label и минимальная ширина, чтобы кнопка была в одной оптической линии с input/select. · views/admin_settings.php: save-bar переведён на grid-layout (`admin-settings-savebar-meta`), уменьшены отступы/высота, обновлена адаптивная логика для мобильных.
Релиз v5.8.39
2026-03-04

Релиз v5.8.39

Доска: форма создания на странице инструмента выровнена по одной линии, без визуального «скачка» по вертикали. · Поля «Доступ» и «Публичность» получили одинаковую высоту и ширину, интерфейс стал ровнее и читаемее. · views/board_hub.php: сетка формы переведена на верхнее выравнивание (`align-items-start`) и унифицирована высота контролов (`.form-control/.form-select` + `.board-create-submit`). · views/board_hub.php: добавлены классы `board-create-form`, `board-create-col-title`, `board-create-col-option`, `board-create-submit` и медиаправила для согласованной ширины колонок.
Релиз v5.8.38
2026-03-04

Релиз v5.8.38

PWA на мобильных стал стабильнее: вложения снова корректно открываются через единый viewer без конфликтов с fallback-переходами. · Исправлено «залипание» серого фона после закрытия модалок/viewer тапом вне окна на телефонах. · views/partials/scripts.php: добавлен глобальный cleanup modal/offcanvas backdrop-артефактов (`hide/hidden/pageshow/focus`) и исключён перехват `.js-open-viewer` ссылок в standalone file-viewer interceptor. · public/assets/js/viewer.js: обработка touch/click переработана с безопасным fallback (не блокирует обычную ссылку, если modal viewer не открылся), добавлена дополнительная очистка backdrop при hide.
Релиз v5.8.34
2026-03-03

Релиз v5.8.34

Доска: интерфейс инструментов переработан в более чистую и интуитивную панель с логической группировкой. · Доска: добавлен встроенный чат участников с поддержкой текстовых сообщений и аудио-сообщений с микрофона. · views/board_canvas.php: обновлены layout/CSS панели инструментов, добавлен chat-panel с long-poll, UI/логика записи аудио через `MediaRecorder`, кнопка `btnUndo` и вызов `board_api&action=undo`. · index.php (`case board_api`): добавлены chat-экшены (`chat_all`, `chat_poll`, `chat_send`), экшен `undo`, и корректный `can_upload` через `upload_policy_check(...)`.
Система v5.8.34
2026-03-03

TSOY.CLOUD 5.8.34: обновлённая доска, чат с аудио и Undo

- Интерфейс инструментов доски переработан: добавлены логические группы и более удобная панель. - В доске появился встроенный чат участников с поддержкой аудио-сообщений. - Вложения чата доски открываются через единый viewer, плюс добавлена отмена действия: к…
Релиз v5.8.33
2026-03-03

Релиз v5.8.33

Профиль: обложка снова отображается со скруглёнными углами, включая мобильную версию. · Профиль: шапка переработана по отступам — логин `@username` больше не наезжает на аватар и имя. · app/migrations.php + app/users.php: добавлено поле `users.avatar_shape` (`round|square`), нормализация значения и поддержка в `USER_SELECT_COLUMNS`/`user_update_profile_full()`. · index.php + app/auth.php + views/layout.php: `avatar_shape` интегрирован в сохранение профиля и сессионный снимок активного профиля.
Система v5.8.33
2026-03-03

TSOY.CLOUD 5.8.33: улучшенная шапка профиля и выбор формы аватарки

- Профильная обложка снова скругляется корректно, включая мобильный интерфейс. - Исправлены отступы шапки профиля: логин больше не пересекается с аватаром/именем. - В настройках добавлен выбор формы аватарки (круг/квадрат) с сохранением в профиль и live-предп…
Релиз v5.8.31
2026-03-03

Релиз v5.8.31

Чаты: облачки сообщений возвращены к прежнему компактному виду, как в предыдущем интерфейсе. · Чаты: у исходящих сообщений индикатор доставки/прочтения снова отображается в правом верхнем круглом бейдже (как раньше). · views/chat.php: для `.msg-bubble` возвращена компактная геометрия (`width: fit-content`), снижена «тяжесть» тени и скорректированы радиусы своих/чужих bubble. · views/chat.php: `.msg-meta` переведён на single-line layout; добавлена обрезка длинного имени отправителя без переноса времени.
Система v5.8.31
2026-03-03

TSOY.CLOUD 5.8.31: возврат классического вида bubble в чатах

- В чатах возвращён прежний компактный вид облачков сообщений, ближе к историческому интерфейсу. - Для исходящих сообщений индикатор доставки/прочтения снова показывается в правом верхнем круглом бейдже. - Подровнены плотности `telegram/compact/roomy`, чтобы …
Релиз v5.8.30
2026-03-03

Релиз v5.8.30

Чаты: возвращён классический вид сообщений без «треугольных хвостов», пузырьки снова выглядят аккуратно в обеих темах. · Чаты: меню действий сообщения стало легче визуально, корректно позиционируется для своих/чужих сообщений и больше не уезжает за границы окна. · views/chat.php: удалены CSS-tail псевдоэлементы пузырьков, выровнены радиусы и переработан theme-aware стиль dropdown-меню действий. · views/chat.php: удалены quick-replies UI/JS; оставлены только рабочие действия в меню сообщения (`reply`, `copy`, `edit`, `delete`).
Система v5.8.30
2026-03-03

TSOY.CLOUD 5.8.30: исправления UI/логики чатов и сценариев удаления

- В чатах возвращён чистый классический стиль облачков сообщений без «треугольных хвостов». - Меню действий сообщения стабилизировано: корректная тема (light/dark) и позиционирование для своих/чужих сообщений. - Убраны быстрые шаблоны ответов (освобождено мес…
Релиз v5.8.29
2026-03-03

Релиз v5.8.29

Настройки стали проще для ежедневной работы: добавлен режим «Базовый», который скрывает сложные блоки и оставляет только ключевые параметры. · Добавлен режим «Продвинутый» для админов: в нём доступны PWA/Push, звонки/WebRTC, health-check, база данных и расширенные RBAC-настройки. · views/admin_settings.php: введён переключатель режима интерфейса (`basic`/`advanced`) с сохранением выбора в `localStorage` и mode-aware фильтрацией секций, подпунктов и поиска. · views/admin_settings.php + index.php: RBAC/registration/domain policies интегрированы в общий settings POST-flow; `admin_policies` переведён в legacy-роут с редиректом на `settings_admin_access#settings-rbac`.
Система v5.8.29
2026-03-03

TSOY.CLOUD 5.8.29: базовый/продвинутый режимы настроек и единый центр политик

- Интерфейс настроек разделён на режимы: `Базовый` (ключевые параметры) и `Продвинутый` (PWA/звонки/DB/RBAC), чтобы снизить перегруз. - Роли, регистрация и доменные политики объединены с `Настройки -> Доступ` в один центр управления. - Старый путь `admin_poli…
Релиз v2.3.8
2026-02-22

Релиз v2.3.8

Снижен лаг при открытии страниц. · Polling-задачи переведены в менее агрессивный режим.
Релиз v2.3.10
2026-02-22

Релиз v2.3.10

Исправлены критические проблемы отображения текста и уведомлений. · Подготовлена база для финальной правки кодировки.
Релиз v2.3.11
2026-02-22

Релиз v2.3.11

Полностью восстановлен текст интерфейса на корректной кириллице. · Исправлены сообщения профиля, чатов, звонков и административных страниц. · index.php восстановлен из стабильной версии и очищен от поврежденных строк. · Обновлены маршруты администрирования звонков: мониторинг, закрытие и удаление комнат.
Релиз v2.3.12
2026-02-22

Релиз v2.3.12

Исправлено отображение текста на странице звонка по ссылке. · Восстановлены подписи и действия в админ-панели. · Очищены поврежденные символы в views/call_room.php и views/admin.php. · В call_room добавлено управление закрытием комнаты для создателя и администратора.
Релиз v2.3.13
2026-02-22

Релиз v2.3.13

Зафиксировано правило: кодировка проекта только UTF-8 без BOM. · Добавлен .editorconfig с обязательным charset=utf-8. · Добавлен scripts/check-encoding.ps1 и подключён в scripts/make-release.ps1.
Релиз v2.3.14
2026-02-22

Релиз v2.3.14

Улучшено качество аудиозвонков в личных и публичных комнатах. · Добавлена автопопытка восстановления соединения при сетевых сбоях. · Вынесены единые WebRTC-параметры: ICE/STUN/TURN и аудио-профиль в настройки админа. · Убраны хардкоды RTCPeerConnection в chat/call_room/admin_call_monitor.
Релиз v2.3.15
2026-02-22

Релиз v2.3.15

Звонки стали отзывчивее без перегруза сервера: события обрабатываются быстрее после действий пользователя. · Стабильнее работа в фоне и после возврата в приложение/вкладку. · Переведены call polling-циклы на адаптивный single-flight алгоритм (без наложения запросов). · Добавлены таймауты запросов, backoff при ошибках и fast-retry после сигналов/действий.
Релиз v2.3.16
2026-02-22

Релиз v2.3.16

В админке добавлены импорт и экспорт базы данных в JSON для резервного копирования и переноса. · Добавлены сервисные операции очистки БД и файлов: RTC-мусор, старый аудит, удалённые файлы и сироты в uploads. · Добавлен модуль app/admin_maintenance.php с безопасным экспортом/импортом и обслуживанием хранилища. · Импорт БД выполняется с полной заменой данных таблиц приложения (через DELETE в транзакции, без TRUNCATE).
Релиз v2.3.17
2026-02-22

Релиз v2.3.17

Исправлена критическая ошибка отправки emoji/смайликов в мессенджере на MySQL. · После обновления сайт автоматически приводит старые таблицы чата и связанные таблицы к emoji-safe кодировке utf8mb4. · MySQL-подключение теперь принудительно использует SET NAMES/CHARACTER SET utf8mb4. · Добавлен runtime-check кодировки таблиц через INFORMATION_SCHEMA и best-effort конвертация в utf8mb4 только при необходимости.
Релиз v2.3.18
2026-02-22

Релиз v2.3.18

В админке БД добавлен визуальный статус проверки utf8mb4/emoji (для MySQL). · Теперь можно быстро увидеть, есть ли таблицы или колонки, которые ещё не готовы к emoji. · Добавлен отчёт admin_db_charset_report() по INFORMATION_SCHEMA: default charset/collation БД, таблицы и текстовые колонки. · Отчёт выведен в views/admin_db.php с компактной сводкой и таблицами проблемных объектов (если есть).
Релиз v2.3.19
2026-02-22

Релиз v2.3.19

Переработан блок смайликов в мессенджере: быстрые emoji, недавние emoji и удобная панель выбора. · Подключена библиотека emoji picker с поиском и категориями; добавлены быстрые кнопки, включая клоуна 🤡. · Локально подключена библиотека public/vendor/emoji-button/emoji-button.min.js (без CDN-зависимости в рантайме). · В chat composer добавено хранение недавних emoji в localStorage и fallback-режим, если библиотека недоступна.
Релиз v2.3.20
2026-02-22

Релиз v2.3.20

Исправлен баг мессенджера: новые сообщения теперь появляются в открытом чате без перезахода. · Если вы находитесь внизу ленты, чат автоматически прокручивается к новым сообщениям. · Добавлен lightweight endpoint chat_messages_poll (инкрементальная выдача сообщений по after_id). · Во views/chat.php добавлен single-flight polling и клиентский рендер новых сообщений без полной перезагрузки страницы.
Релиз v2.3.21
2026-02-22

Релиз v2.3.21

Список диалогов в мессенджере теперь обновляется автоматически: новые сообщения и непрочитанные появляются без перезахода в чат. · Превью последнего сообщения, время и бейдж непрочитанных синхронизируются прямо в открытом разделе «Мессенджер». · Добавлен endpoint chat_dialogs_poll с компактной JSON-выдачей списка диалогов для текущего пользователя. · Во views/chat.php добавлен отдельный single-flight polling списка диалогов с backoff, signature-check и обновлением DOM только при изменениях.
Релиз v2.3.22
2026-02-22

Релиз v2.3.22

Переработан интерфейс мессенджера в стиле PWA-мессенджеров: удобнее список диалогов, компактнее шапка чата и чище лента сообщений. · На телефоне чат занимает экран аккуратнее: более компактные action-кнопки, улучшенная шапка и удобнее поле ввода для быстрых сообщений. · Во views/chat.php обновлены layout/styling для desktop и mobile (split-pane, sticky composer, адаптивная шапка, улучшенные bubbles). · Серверный и клиентский рендер списка диалогов унифицированы: одинаковая разметка строк (аватар/имя/время/превью/unread badge).
Релиз v2.3.23
2026-02-22

Релиз v2.3.23

Исправлена проблема со «слетающей» авторизацией: сессия пользователя теперь сохраняется стабильнее, особенно в PWA и на мобильных устройствах. · Пользователю больше не нужно постоянно повторно входить в аккаунт при обычном использовании сайта. · Добавлена устойчивая инициализация PHP-сессии: cookie lifetime 30 дней, gc_maxlifetime 30 дней, httponly/samesite и корректный secure через HTTPS/X-Forwarded-Proto. · Сессии вынесены в project-local storage/sessions (если доступно), чтобы изолировать их от server-wide gc других сайтов/приложений.
Релиз v2.3.24
2026-02-22

Релиз v2.3.24

Исправлен UX мессенджера на ПК: форма ввода теперь закреплена поверх ленты сообщений и всегда видна, как в Telegram/WhatsApp. · Возвращён стеклянный (glass) вид мессенджера на телефоне и PWA-экране. · Добавлен endpoint chat_messages_before_poll (before_id) и server helper conversation_messages_before_for_user() для lazy-history. · Стартовая загрузка сообщений в чате уменьшена до компактной пачки, дальнейшая история догружается по scroll trigger.
Релиз v2.3.25
2026-02-22

Релиз v2.3.25

Исправлен критичный UX-баг мессенджера на ПК: при открытии диалога теперь сразу видны последние сообщения и форма ввода (без прокрутки всей страницы вниз). · Форма ввода закреплена поверх ленты сообщений, а прокрутка выполняется внутри окна чата. · Для desktop conversation pane добавлена жёсткая высота по viewport (CSS + JS syncDesktopMessengerViewport), чтобы контент не растягивал страницу. · chatMessages переведён в гарантированно внутренний scroll-container; composer остаётся fixed/overlay внутри card.
Релиз v2.3.26
2026-02-22

Релиз v2.3.26

Добавлен отдельный центр уведомлений: быстрые переключатели, статус разрешений браузера, Service Worker/PWA и тест уведомления на устройство. · Настройки уведомлений теперь можно менять без захода в профиль — прямо из раздела «Уведомления». · Маршрут notifications получил обработку POST (сохранение notify_desktop/notify_sound) и скорректирован порядок mark_seen/counts. · Глобальный runtime уведомлений переработан: user-scoped localStorage state, единый helper __TSOY_NOTIFY_RUNTIME (SW/device notify, permission/status/test).
Релиз v2.3.27
2026-02-22

Релиз v2.3.27

Добавлена публичная страница «О проекте» (`/about`) с описанием проекта и карточками участников/вклада. · В профиле (редактирование) для администратора добавлен блок управления страницей «О проекте», включая загрузку фото участников с устройства. · Добавлены маршрут `about`, pretty-route `/about` и POST-обработчик `post_like_toggle` с JSON-ответом для AJAX. · В `profile_edit` добавлено сохранение настроек страницы about через `settings` + хранение списка участников в JSON (`about_contributors_json`).
Релиз v2.3.28
2026-02-22

Релиз v2.3.28

Hotfix: исправлено битое сообщение после сохранения настроек в центре уведомлений (теперь отображается нормальная кириллица). · В `index.php` заменены оставшиеся mojibake-строки flash-сообщения `Настройки уведомлений сохранены.` в обработчиках профиля и центра уведомлений.
Релиз v2.3.29
2026-02-22

Релиз v2.3.29

Hotfix: исправлены оставшиеся «кракозябры» в системных сообщениях/заголовках из `index.php` (включая центр уведомлений и очистку аудита в разделе БД). · Выполнена массовая зачистка mojibake-строковых литералов в `index.php` (восстановлена нормальная кириллица в flash/title сообщениях). · Усилен `scripts/check-encoding.ps1`: проверка mojibake теперь использует кодовые точки (`U+00C2/U+00C3/U+00D0/U+00D1`), а не хрупкий текстовый regex.
Релиз v2.3.30
2026-02-22

Релиз v2.3.30

Ссылка на страницу «О проекте» добавлена в подвал рядом с версией проекта. · Настройки страницы «О проекте» вынесены из профиля в отдельный раздел администрирования в дашборде. · Добавлен маршрут `admin_about` + новая страница `views/admin_about.php`; сохранение настроек about перенесено из `profile_edit` в admin-раздел. · Расширен RBAC: новые роли (`global_admin`, `admin_tester`), нормализация политик по умолчанию, закреплённые инварианты для доступа к БД/политикам/настройкам.
Релиз v2.3.31
2026-02-22

Релиз v2.3.31

Исправлены права управления пользователями: первый пользователь всегда закреплён как `global_admin`, обычный администратор не может понижать/блокировать/удалять его и сбрасывать ему пароль. · Роль `admin_tester` теперь может пользоваться обычными функциями приложения (включая профиль и фото), при этом изменения в админ-разделах по-прежнему заблокированы. · Добавлены backend-инварианты для первого пользователя (`user_ensure_first_global_admin`, запрет бана/удаления первого пользователя) и защита операций над `global_admin` в `admin_users`. · Глобальный guard `admin_tester` сужен до write-операций админ-разделов, чтобы не ломать обычный пользовательский функционал.
Релиз v2.3.32
2026-02-22

Релиз v2.3.32

Исправлена логика публичных файлов: фото участников со страницы `/about` остаются публичными, но больше не попадают в ленту «Публичные файлы» на главной. · Улучшена навигация и нейминг: пользовательское облако переименовано в «Мои файлы», а `admin`-экран оформлен как «Файлы проекта». · В `app/files.php` добавлена фильтрация публичной ленты по исключениям (`files_public_feed_excluded_ids()`), сейчас туда входят фото участников из `about_contributors_json`. · Обновлены заголовки/подписи в `views/home.php`, `views/dashboard.php`, `views/admin.php`, `views/layout.php`, `views/staff.php`, `views/chat.php`, `views/contacts.php` для уменьшения путаницы между пользовательским и административным файловыми экранами.
Релиз v2.3.33
2026-02-22

Релиз v2.3.33

Добавлена отдельная «мемная» invite-регистрация для друзей с автоназначением ролей `admin` и `admin_tester` по токен-ссылке. · Страница спец-регистрации получила отдельный дизайн с анимациями и роль-специфичными сообщениями (admin/tester). · Добавлен модуль `app/friend_registration.php`: JSON-конфиг спец-регистрации, токены, invite-ссылки, нормализация и resolve роли по токену. · В `index.php` добавлены маршруты `friend_register` и `admin_friend_register`, а также pretty-route `/friend-invite/<token>`.
Релиз v2.3.34
2026-02-22

Релиз v2.3.34

Hotfix: устранены предупреждения Deprecated на PHP 8.4+ в модуле спец-регистрации друзей. · В `app/friend_registration.php` сигнатуры helper-функций обновлены с implicit nullable (`array $cfg = null`) на явный nullable тип (`?array $cfg = null`).
Релиз v2.3.35
2026-02-22

Релиз v2.3.35

В спец-регистрацию друзей встроен виджет «кошка-говешка» с анимированным блоком внутри формы. · В настройках спец-регистрации можно загрузить фото кошки с устройства, включать/выключать блок и настраивать подпись/бейдж. · Спец-регистрация расширена настройками `cat_*` в `app/friend_registration.php`; загрузка изображения реализована в `index.php` и хранится в `public/friend_register/`. · В `views/friend_register.php` добавлен анимированный cat-widget с безопасным fallback без картинки.
Релиз v2.3.36
2026-02-22

Релиз v2.3.36

Базовый пресет оформления снова по умолчанию `Default`, а `Psychedelic` оставлен как опциональный вариант в настройках. · Уведомления о сообщениях и событиях теперь открывают соответствующий раздел (чат или календарь), а не всегда центр уведомлений. · Добавлен JSON endpoint `chat_send_async` и клиентский submit-handler во `views/chat.php` для AJAX-отправки сообщения с поддержкой вложений. · В `notif_poll` добавлены target-ссылки (`chat`/`calendar`), а `views/partials/scripts.php` формирует отдельные device-notifications с корректным `data.url`.
Релиз v2.3.37
2026-02-22

Релиз v2.3.37

Мессенджер структурно облегчён: более компактный header/messages/composer stack, меньше визуальной тяжести и ближе к привычной мобильной логике. · Исправлено поведение поля ввода в мобильном полноэкранном чате: composer больше не “съезжает” вниз из-за наложенных padding/overlay-стилей. · В `views/chat.php` добавлены структурные классы (`chat-list-card`, `chat-conv-card`, `chat-conv-body`, `chat-composer-shell`) и финальный CSS override-блок с упрощённой layout-схемой. · Убран тяжёлый overlay-режим composer для conversation pane (через CSS overrides), сообщения снова живут в нормальном flex-stack без лишнего bottom-overlay padding.
Релиз v2.3.38
2026-02-22

Релиз v2.3.38

Перестроена DOM-структура окна диалога: `chatMessages` теперь единый контейнер на всю область чата, внутри которого находятся шапка, лента сообщений и composer. · Шапка диалога и панель ввода встроены внутрь общего контейнера как в современных мессенджерах, что улучшает поведение на мобильных экранах. · В `views/chat.php` `id=\"chatMessages\"` переведён в роль root-container conversation pane, а scroll-area вынесена в `id=\"chatMessagesScroll\"`. · JS-логика мессенджера обновлена на новый scroll-target (`chatMessagesScroll`) с backward fallback на старую структуру.
Релиз v2.3.39
2026-02-22

Релиз v2.3.39

Уменьшен зазор между клавиатурой и полем ввода в мобильном мессенджере (почти вплотную, несколько миллиметров). · Панель ввода в fullscreen-чате лучше поджимается к клавиатуре на iPhone/iOS. · В `views/chat.php` добавлен динамический CSS var `--chat-mobile-composer-gap` и логика `visualViewport`-детекта открытой клавиатуры. · При открытой клавиатуре fullscreen-pane чата растягивается до видимого нижнего края без лишнего white-gap из-за `visualViewport.offsetTop`.
Релиз v2.3.40
2026-02-22

Релиз v2.3.40

Исправлен большой пустой отступ между полем ввода и клавиатурой в мобильном мессенджере (fullscreen chat). · Панель ввода и лента сообщений теперь корректно сжимаются при открытии клавиатуры. · В `views/chat.php` снят конфликтующий `min-height`/жёсткая высота на mobile fullscreen-цепочке контейнеров (`chat-conv-body` → `#chatMessages` → scroll-wrap → `#chatMessagesScroll`). · Горячий фикс рассчитан на iOS/Safari/PWA сценарии, где клавиатура уменьшает viewport и ломает flex-layout с `min-height`.
Релиз v2.3.41
2026-02-22

Релиз v2.3.41

Дополнительно исправлен большой зазор над клавиатурой на iPhone: поле ввода поджимается ближе даже при включённой assistant/suggestions панели iOS. · В `views/chat.php` добавлена реальная компенсация нижнего зазора по измерению положения composer относительно viewport (а не только по `visualViewport.height`). · Учтён iOS-кейс, когда `visualViewport` и `window.innerHeight` расходятся на высоту assistant/suggestions панели клавиатуры.
Релиз v2.3.42
2026-02-22

Релиз v2.3.42

Для диагностики iPhone-отступа убрана встроенная (inline) панель быстрых смайликов из формы сообщения в мессенджере. · Кнопка смайликов в composer теперь открывает полный emoji picker, если inline-панель отключена. · Из `views/chat.php` удалён блок `chat-emoji-panel` внутри composer; JS-клик по `emojiBtn` переведён на fallback `toggleFullEmojiPicker()` при отсутствии inline-панели.
Релиз v2.3.43
2026-02-22

Релиз v2.3.43

Для диагностики iPhone-отступа убран набор layout-классов у нижнего блока `attachHint / Убрать вложение` в composer мессенджера. · В `views/chat.php` блок под composer (с `attachHint` и `attachClearBtn`) упрощён до обычного контейнера без `d-flex/.../mt-2`.
Релиз v2.3.44
2026-02-22

Релиз v2.3.44

Для диагностики iPhone-отступа убран класс `small text-secondary` у блока `attachHint` в composer мессенджера. · В `views/chat.php` элемент `#attachHint` оставлен без CSS-классов, чтобы исключить влияние типографики/line-height на высоту composer.
Релиз v2.3.45
2026-02-22

Релиз v2.3.45

Для диагностики iPhone-отступа удалён `id=\"attachHint\"` у нижнего блока composer и связанный CSS-минимум высоты. · В `views/chat.php` удалено правило `#chatConvPane #attachHint { min-height ... }`, а сам элемент оставлен без `id`, чтобы исключить его вклад в высоту composer.
Релиз v2.3.46
2026-02-22

Релиз v2.3.46

Мессенджер вынесен из общего `container py-4` в отдельное “полотно” layout (full-canvas host), чтобы уменьшить конфликты мобильного fullscreen-режима с обёртками страницы. · Это изменение направлено именно на iPhone-баг с большим отступом над клавиатурой: чат теперь живёт в более простой DOM-структуре без общей контейнерной обвязки страницы. · В `views/layout.php` добавлен route-aware режим `contentCanvasRoute` для `chat`: контент мессенджера рендерится в `chat-canvas-stage` вне `container py-4`. · В `views/chat.php` обновлены mobile fullscreen-селекторы, которые раньше были жёстко привязаны к `.container.py-4`, теперь они поддерживают `.chat-canvas-stage`.
Релиз v2.3.47
2026-02-22

Релиз v2.3.47

Мессенджер после фикса iPhone-клавиатуры дополнительно очищен и визуально облегчён: обновлены шапка страницы, список диалогов, полотно сообщений и composer. · Строка состояния редактирования в composer теперь показывается только в режиме редактирования, а не занимает место постоянно. · Из `views/chat.php` удалён временный JS-компенсатор `tightenComposerToViewportBottom()` и связанный runtime-костыль `--chat-mobile-composer-gap`, оставлена более простая `visualViewport`-синхронизация. · Добавлены финальные CSS-overrides для canvas-режима чата (`chat-canvas-stage`) без возврата к старой layout-обвязке `container py-4`.
Релиз v2.3.48
2026-02-22

Релиз v2.3.48

На главной в разделе «Новости» теперь по умолчанию показываются только первые записи, остальные открываются кнопкой «Загрузить ещё». · В истории версий (технические новости по версиям) добавлен такой же режим постепенной подгрузки списка через кнопку «Показать ещё версии». · В `views/layout.php` добавлен универсальный client-side `load more`-инициализатор для блоков с `data-load-more-*`. · Разметка новостей на главной (`views/home.php`) и модалки истории версий (`views/layout.php`) переведена на единый шаблон постепенного раскрытия списка.
Релиз v2.3.49
2026-02-22

Релиз v2.3.49

Исправлен повторный iPhone-баг в мессенджере с большим отступом между клавиатурой и полем ввода (runtime-компенсация viewport/composer для mobile fullscreen). · Новости на главной и технические заметки по версиям теперь действительно свёрнуты по умолчанию (первые 3 записи), остальные открываются через кнопку «Показать ещё / Загрузить ещё». · В `views/chat.php` возвращена измеряемая компенсация `visualViewport` по фактическому gap до composer (без возврата старого `--chat-mobile-composer-gap` костыля). · В `views/layout.php` исправлен клиентский `load more`-инициализатор (Safari-safe проверка вместо `ParentNode`) и добавлено серверное начальное сворачивание версий.
Релиз v2.3.50
2026-02-22

Релиз v2.3.50

В мессенджере убрана служебная подпись под именем собеседника; клик по фото/имени в шапке диалога теперь открывает профиль собеседника. · Профиль расширен: значок админ-роли для администраторов, список друзей, количество друзей, а также кнопки добавления/удаления из друзей прямо на странице профиля. · Добавлены helper-функции для видимости карточек разработчиков на `/about` (`about_developer_visibility_json`, `user_about_card_visible()`, `user_about_card_set_visible()`) и фильтрация в `users_about_developers()`. · Маршруты `post_create/post_update` получили поддержку `cover_device_file` через новый helper `post_cover_from_upload()` в `app/posts.php`.
Релиз v2.3.51
2026-02-22

Релиз v2.3.51

В мессенджере из composer удалён нижний блок `chat-attach-row` (подсказка/кнопка вложения), чтобы убрать лишнюю высоту и iPhone-gap («подбородок»). · Из `views/chat.php` удалена разметка `div.chat-attach-row`; JS обработчики вложений уже безопасно работают при отсутствии `attachHint/attachClearBtn`.
Релиз v2.3.52
2026-02-22

Релиз v2.3.52

Усилен iPhone-fix для мессенджера: composer в mobile fullscreen при открытой клавиатуре закрепляется в `fixed`-режиме относительно видимой области, чтобы убрать большой зазор над клавиатурой. · В `views/chat.php` добавлен режим `chat-composer-vv-fixed` + JS-синхронизация с `visualViewport` (адаптивно: `bottom=0` или компенсация `keyboardInset`, если fixed элемент уходит под клавиатуру).
Релиз v2.3.53
2026-02-22

Релиз v2.3.53

В мессенджере с composer снят класс `chat-sticky` (оставлен только `chat-composer-shell`) — hotfix для iPhone-отступа над клавиатурой. · В `views/chat.php` удалён `chat-sticky` у обёртки формы сообщений, чтобы исключить конфликт sticky/fixed логики в mobile fullscreen.
Релиз v2.3.54
2026-02-22

Релиз v2.3.54

Ещё один iPhone hotfix для мессенджера: при открытой клавиатуре `fixed`-composer больше не обрезается контейнерами чата (снят clipping/blurs на время mobile keyboard mode). · В `views/chat.php` добавлен режим `chat-composer-vv-mode`: при активной клавиатуре снимаются `overflow:hidden` и `backdrop-filter` у `chat-conv-card/chat-conv-body`, чтобы Safari не привязывал/не обрезал `position: fixed` composer внутри карточки.
Релиз v2.3.55
2026-02-22

Релиз v2.3.55

В мессенджере переписан mobile-composer режим для iPhone: поле ввода при открытой клавиатуре выносится в отдельный viewport-портал, чтобы не появлялся большой зазор над клавиатурой. · В `views/chat.php` реализован `composer portal` (spacer + перенос `.chat-composer-shell` в `body` при mobile keyboard mode) вместо прежней fixed/sticky-компенсации внутри карточки чата.
Релиз v2.3.56
2026-02-22

Релиз v2.3.56

Добавлена система мультипрофилей: у одного аккаунта можно создавать, переключать и удалять несколько профилей через меню по клику на имя/аватар в шапке. · Для ролей разработчиков (`global_admin`/`admin`/`admin_tester`) добавлен выбор, какой профиль показывать на странице `/about`. · В `app/migrations.php` добавлены `user_profiles`, колонки `users.active_profile_id/users.about_profile_id` и `posts.hide_from_guests`. · В `app/users.php` реализованы helper-ы мультипрофилей (bootstrap/create/switch/delete/sync/about-select) и overlay данных выбранного профиля в `/about`.
Релиз v2.3.57
2026-02-22

Релиз v2.3.57

Мессенджер откатан по фронтенду (`views/chat.php`) к состоянию релиза `2.3.46` — это версия, на которой исчезал iPhone-gap («подбородок») над клавиатурой. · Сравнение показало, что `views/layout.php` (перенос чата в `chat-canvas-stage`) остаётся правильным; регрессия появилась позже в `views/chat.php` после добавления mobile keyboard viewport-хаков (`chat-composer-vv-portal`, `chat-composer-vv-fixed`, `chat-composer-vv-mode`, spacer/portal composer). · Откат выполнен точечно только для мессенджера: `views/chat.php` взят из архива `releases/tsoycloud_v2.3.46_2026-02-22.zip`.
Релиз v2.3.58
2026-02-22

Релиз v2.3.58

Мультипрофили переработаны: теперь каждый профиль аккаунта — это отдельный пользователь со своим логином и собственной страницей `/user/<login>` (отдельные посты, файлы и медиа). · В меню профилей аккаунта создание профиля теперь запрашивает отдельный логин (`username`) и отображаемое имя; основной профиль нельзя удалить. · Логика `user_profiles_*` в `app/users.php` переведена с таблицы `user_profiles` на связанные записи `users` через `owner_account_user_id` (старую таблицу больше не используем как источник истины). · В `app/auth.php` добавлен `auth_session_apply_active_profile()` и `$_SESSION[\"auth_user_id\"]`: сессия хранит владельца аккаунта отдельно от активного профиля (`$_SESSION[\"user\"]`).
Релиз v2.3.59
2026-02-22

Релиз v2.3.59

Мессенджер улучшен поверх стабильной базы (без возврата mobile keyboard-хаков): имя/аватар собеседника в шапке снова открывают профиль, убрана лишняя служебная подпись. · В профиле добавлены отдельные блоки медиа: фото, видео и аудио (для владельца — из облака, для гостей/других пользователей — из видимых постов). · В `app/migrations.php` добавлены таблицы `post_comments` и `user_pages`. · В `app/posts.php` реализованы helpers комментариев и поддержка внутренних ссылок (`/page/...`) в `post_attachment_add_link()` для публикации страниц.
Релиз v2.3.60
2026-02-22

Релиз v2.3.60

Исправлено мобильное меню профилей в шапке: dropdown больше не уезжает влево на узких экранах (ограничена ширина, стабилизировано позиционирование). · В `views/layout.php` профильный dropdown переведен на `data-bs-display=\"static\"` и вынесен на отдельный класс `topbar-profile-menu`; в `views/partials/head.php` добавлены mobile-safe стили ширины/переполнения.
Релиз v2.3.61
2026-02-22

Релиз v2.3.61

Исправлен раздел «Медиа» в профиле: теперь он показывает только контент, который пользователь явно добавил в посты (обложки и вложения), а не все файлы из облака. · В `views/profile.php` блок `Медиа` переведен на единый источник данных (медиа из постов) для владельца и гостей; облачные файлы владельца больше не попадают туда автоматически.
Релиз v2.3.62
2026-02-22

Релиз v2.3.62

Профиль переведён на более современный шаблонный стиль: обновлены карточки, шапка профиля и добавлены верхние вкладки разделов (Посты/Друзья/Страницы/Медиа). · Разделы Фото/Видео/Аудио теперь работают как отдельные ручные галереи профиля: пользователь сам добавляет контент в галереи, а не получает автоподбор из облака/постов. · Добавлен helper `app/profile_media.php` и таблица `profile_media_items` (ручные галереи профиля) с миграцией в `app/migrations.php`. · Добавлен маршрут `profile_media_gallery` в `index.php` (добавление/удаление элементов галереи, загрузка файлов с устройства).
Релиз v2.3.63
2026-02-22

Релиз v2.3.63

Профиль ещё ближе к новому шаблону: усилен визуал шапки (cover/avatar/chips/статистика), обновлены карточки друзей/страниц/медиа и общий стиль карточек постов/модалок. · Улучшена навигация по разделам профиля через верхние вкладки с сохранением активной вкладки. · В `views/profile.php` расширен слой профильных стилей и добавлены счётчики/визуальные блоки без изменения бизнес-логики постов, комментариев и ролей.
Релиз v2.3.64
2026-02-22

Релиз v2.3.64

Посты на странице профиля ещё ближе к новому шаблону: добавлен header карточки (аватар/имя/@username/время), улучшен action-bar и визуал карточек. · Модалка комментариев профиля визуально переработана и на мобильных ведёт себя ближе к формату bottom-sheet. · В `views/profile.php` добавлены профильные UI-классы для карточек постов и комментариев без изменения текущей логики лайков/комментариев/прав доступа.
Релиз v2.3.65
2026-02-22

Релиз v2.3.65

Управление галереями профиля перенесено в модалку (вместо collapse), что ближе к новому шаблону и удобнее на мобильных устройствах. · Экран `Редактировать профиль` заметно переработан визуально: добавлен hero-preview профиля, улучшены блоки загрузки аватара/обложки и группировка полей. · В `views/profile.php` блок управления ручными галереями переведён на modal-layout без изменения логики форм `profile_media_gallery`. · В `views/profile_edit.php` добавлены новые UI-обёртки и стили (`profile-edit-header-*`, `profile-edit-fieldset`, `profile-edit-upload-*`) при сохранении прежних POST-полей.
Релиз v2.3.66
2026-02-22

Релиз v2.3.66

Профиль дополнительно отполирован под мобильные устройства: карточки друзей и страниц стали компактнее и аккуратнее на узких экранах. · В модалке комментариев улучшен блок ввода: форма стала ближе к привычному мобильному composer-формату. · В `views/profile.php` добавлены mobile-first стили и классы для списков друзей/страниц, медиасетки и composer-разметки комментариев без изменения бизнес-логики.
Релиз v3.0.0
2026-02-22

Релиз v3.0.0

Подготовлен крупный профильный апдейт 3.0: улучшен mobile UX профиля (Друзья/Страницы/Медиа), а форма комментариев в модалке стала ближе к привычному мобильному composer-формату. · Полностью переработан интерфейс мультипрофилей в шапке: новый dropdown с быстрым переключением, аватарами и статусами профилей. · В `views/layout.php` переписана разметка topbar dropdown и модалки `#userProfilesModal` без изменения существующих роутов/POST-действий (`user_profiles`). · В `views/partials/head.php` добавлен новый слой стилей для мультипрофильного UX (`topbar-profile-*`, `user-profiles-modal-modern`, `user-profile-card*`) с адаптацией под мобильные экраны.
Релиз v3.0.1
2026-02-22

Релиз v3.0.1

На странице профиля кнопка копирования публичной ссылки теперь копирует адрес в буфер и показывает диалог «Скопировано». · При открытии профиля по публичной ссылке `/user/<username>` скрывается боковое меню (desktop + mobile offcanvas), страница выглядит ближе к формату соцсети. · В `views/profile.php` обновлён helper `copyText()` для кнопок `.js-copy`: успешное копирование подтверждается диалогом, fallback остаётся только при ошибке clipboard API. · В `views/layout.php` добавлен режим публичной страницы профиля (`$publicProfilePageRoute`) с условным отключением sidebar/offcanvas и корректировкой mobile topbar-отступа.
Релиз v3.0.2
2026-02-22

Релиз v3.0.2

На страницах профиля боковое меню теперь скрывается только у гостей. Для авторизованных пользователей навигация в профиле снова доступна. · В `views/layout.php` режим “соц-страницы без меню” ограничен только гостевым просмотром публичного профиля (`$guestPublicProfileSocialMode`).
Релиз v3.0.3
2026-02-22

Релиз v3.0.3

Кнопки «Ссылка на профиль» и «Ссылка на пост» на странице профиля теперь копируют ссылку в буфер по одному клику. · В `views/profile.php` copy-handler для `.js-copy/.js-magnet` усилен: добавлены `preventDefault/stopPropagation` и fallback-копирование через `textarea + execCommand(copy)` без обязательного `prompt`.
Релиз v3.1.0
2026-02-22

Релиз v3.1.0

Конструктор пользовательских страниц серьёзно переработан: добавлены блоки «Статья», «Гайд» и «Плеер роликов» помимо галереи/ссылок. · В выборе файлов для конструктора страниц больше не нужны ID вручную: добавлен единый проводник файлов с папками, поиском, фильтрами и мультивыбором. · Добавлен reusable partial `views/partials/file_explorer_picker.php` (модалка + JS-компонент `TsoyFileExplorerPicker`) для повторного использования в разных разделах. · В `app/pages.php` расширена модель блоков страниц (`article`, `guide`, `video_player`) и обновлён сбор используемых file_id для рендера.
Релиз v3.2.0
2026-02-22

Релиз v3.2.0

Усилен PWA-режим для ПК и смартфонов: улучшен manifest (ярлыки быстрых действий, desktop/mobile launch-поведение, метаданные приложения). · Уведомления и звонки в PWA/браузере теперь надёжнее открывают нужный раздел по клику (чат, конкретный звонок, уведомления и т.д.). · Root и `public/service-worker.js` синхронизированы и переведены на единый hardened SW (navigation preload, deep-link `notificationclick`, управление файловым кешем через message API). · В Service Worker добавлен корректный bypass для `Range`-запросов, чтобы не ломать стриминг аудио/видео и просмотр медиа на мобильных устройствах.
Релиз v3.2.1
2026-02-22

Релиз v3.2.1

В разделе «Настройки → Брендинг» добавлена отдельная настройка названия проекта в шапке (верхняя панель и боковое меню). · Добавлен ключ настроек `site_header_name`; при пустом значении используется fallback на `site_name`. · В `views/layout.php` брендинг шапки переведён на отдельную переменную `$siteHeaderName`, не затрагивая title страниц и прочие места, где используется `site_name`.
Релиз v3.3.0
2026-02-22

Релиз v3.3.0

Проведена большая унификация визуального стиля проекта: карточки, навигация, формы, модалки и отступы лучше согласованы между разделами. · Раздел «Настройки → Оформление» расширен: добавлены настройки глобального шрифта, масштаба текста, ширины контента, контраста поверхностей и отдельная плотность мессенджера. · Расширен `ui_config()` и системные настройки (`ui_font_family`, `ui_font_scale`, `ui_content_width`, `ui_surface_contrast`, `ui_chat_density`) с валидацией в `index.php?r=admin_settings`. · В `views/partials/head.php` добавлены новые data-атрибуты UI и глобальные CSS-токены (font-scale, content-width, surface-contrast) для централизованного управления дизайном.
Релиз v3.3.1
2026-02-22

Релиз v3.3.1

В мессенджере выбор файла из облака переведён на единый проводник (папки, поиск, фильтры, превью), как в других разделах проекта. · Исправлено меню действий сообщения (`Изменить/Удалить`): dropdown больше не перекрывается соседними сообщениями. · В `views/chat.php` интегрирован reusable `TsoyFileExplorerPicker` для attach-модалки (mobile-safe сценарий через отдельную модалку picker-а). · Для строк сообщений добавлен z-index lift при `show.bs.dropdown` (`chat-row-menu-open`), чтобы меню действий не попадало под соседние bubbles.
Релиз v3.3.2
2026-02-22

Релиз v3.3.2

В «Центре уведомлений» блок с уведомлениями/событиями теперь показывается первым, а настройки уведомлений идут после него. · В `views/notifications.php` переставлен визуальный порядок колонок через grid-order (`notify-col-feed` перед `notify-col-settings`) и обновлён заголовок блока на «Все уведомления».
Релиз v3.3.3
2026-02-22

Релиз v3.3.3

Страница «Контакты» визуально приведена к стилю мессенджера: одинаковая шапка, поверхности, контуры и оттенки/градиенты. · В `views/contacts.php` добавлен локальный токенизированный стиль (`contacts-page`) с той же логикой surface/background, что и в мессенджере, включая реакции на `ui_surface_contrast` и `ui_density`.
Релиз v3.3.4
2026-02-22

Релиз v3.3.4

Проводник файлов в профиле (обложка и вложения постов) переведён на единое ядро `TsoyFileExplorerPicker`, как в мессенджере. · Вложения к посту с устройства в профиле переработаны в единый блок внутри модалки вложений (облако + устройство + ссылки), чтобы выбор работал стабильнее и понятнее. · В `views/profile.php` добавлен JS-слой унификации старых модалок вложений постов: облачные файлы выбираются через общий picker, а hidden-inputs собираются по mime (`attach_images/video/audio/files`). · В `app/files.php` расширен `files_admin_list()` (фильтры по владельцу и папке) и добавлены helper-функции `files_admin_owner_stats()` / `files_admin_folders_list()` для админского проводника.
Релиз v3.3.5
2026-02-22

Релиз v3.3.5

Исправлен двойной проводник в профиле: при выборе обложки поста больше не открывается одновременно новый и старый интерфейс. · Исправлены лишние кнопки «Сохранить / Отмена» под опубликованными постами (ошибка разметки edit-блока). · В `views/profile.php` удалены legacy JS-билдеры вложений постов (`js-att`/`js-att-edit`) и старые вкладки вложений теперь физически вырезаются из DOM после инициализации нового picker-слоя. · В `views/profile.php` убраны bootstrap-trigger атрибуты с кнопок выбора обложки (теперь открывается только `TsoyFileExplorerPicker`), а возврат старой attach-модалки после picker отключён.
Релиз v3.3.6
2026-02-22

Релиз v3.3.6

В конструкторе пользовательских страниц добавлен новый блок «Таблица» с ручным редактированием ячеек. · Для блока таблицы доступны действия: добавить/удалить строку и добавить/удалить столбец, а также режим «первая строка — заголовки». · В `app/pages.php` добавлена нормализация блока `table` (header + rows, ограничения размеров и длины ячеек). · В `views/my_pages.php` расширен page-builder: тип `table`, визуальный table-editor и сериализация таблицы в `blocks_json`.
Релиз v3.4.0
2026-02-23

Релиз v3.4.0

Добавлены полноценные push-уведомления на устройство (через Web Push + Service Worker) для сценариев, когда сайт/PWA закрыт. · Push-уведомления теперь приходят по ключевым событиям: сообщения, входящие звонки/приглашения в звонок, лайки постов, комментарии и добавления в друзья. · Добавлен `app/push.php`: VAPID-ключи (автогенерация), подписки Web Push, очередь уведомлений, payloadless Web Push dispatch и pull-механизм для SW. · В `app/migrations.php` добавлены таблицы `push_subscriptions` и `push_queue` (MySQL/SQLite) с индексами для подписок и очереди доставки.
Релиз v3.4.1
2026-02-23

Релиз v3.4.1

Исправлено мобильное открытие окна вложений в мессенджере: attach-модалки/проводник теперь открываются поверх fullscreen-чата. · Меню профиля/переключения мультипрофилей в мобильной шапке больше не уезжает влево: dropdown центрируется по viewport. · В `views/chat.php` поднят z-index attach-модалки и file-picker-модалки над mobile chat pane (`z-index: 2100`) и добавлена маркировка backdrop (`chat-over-chat-backdrop`). · В `views/chat.php` усилен mobile-open handler клипсы (`pointerup` + `touchend` + click guard), чтобы не терялись тапы в fullscreen-мессенджере.
Релиз v3.4.2
2026-02-23

Релиз v3.4.2

Исправлена навигация по клику на уведомления: уведомления теперь корректно открывают источник (чат, календарь, профиль/пост и т.д.) в браузере и PWA. · В `views/partials/scripts.php` `__tsoyNavigateFromNotification()` переведён на резолв ссылок через `appBasePath`, а fallback `Notification.onclick` теперь использует тот же навигатор. · В `service-worker.js` / `public/service-worker.js` `notificationclick` теперь резолвит `data.url` относительно `self.registration.scope` (а не `origin`), что исправляет deep-link в установках не в корне сайта.
Релиз v3.4.3
2026-02-23

Релиз v3.4.3

Уведомления стали информативнее: для новых сообщений показываются имя отправителя и фрагмент текста. · Для входящих звонков в уведомления добавлены действия «Принять» и «Отклонить» (там, где это поддерживает браузер/устройство). · В `notif_poll` добавлен preview последнего непрочитанного сообщения (`sender/body/url`), а клиентский polling в `views/partials/scripts.php` использует его для desktop-уведомлений и toast. · В `app/push.php` расширен payload Web Push: поддержка `data` и `action_urls`, а `push_notify_incoming_call()` теперь отправляет actions (`accept/close`) и URL принятия звонка.
Релиз v3.4.4
2026-02-23

Релиз v3.4.4

В дашборде (`Настройки`) добавлен отдельный блок настроек уведомлений: цвет, оформление toast/desktop-уведомлений, рингтон уведомлений и отдельный рингтон входящего звонка. · Добавлен блок `PWA и обновления`: политика обновления (manual/notify/auto), интервал проверки Service Worker, автозапрос persistent storage и toast-оповещения об обновлении PWA. · Добавлены новые ключи настроек в `app/settings.php`; сохранение/валидация реализованы в `index.php` (`admin_settings`). · В `views/layout.php` новые настройки прокидываются в `window.__TSOY_NOTIFY` (`ui/sounds/pwa`) для runtime-слоя.
Релиз v3.4.5
2026-02-23

Релиз v3.4.5

В настройках уведомлений добавлена загрузка своих рингтонов: отдельно для обычных уведомлений и отдельно для входящего звонка. · В админке можно прослушать загруженные рингтоны прямо в разделе настроек и удалить их при необходимости. · Добавлены настройки `notify_sound_custom_path` и `notify_call_sound_custom_path`, а в `admin_settings` реализована загрузка аудиофайлов в `public/sounds`. · Во фронтенде (`views/layout.php` + `views/partials/scripts.php`) runtime уведомлений получил поддержку кастомных аудио-файлов с fallback на синтезированные звуки, если браузер блокирует воспроизведение.
Релиз v3.5.0
2026-02-23

Релиз v3.5.0

Стабилизационный релиз: проведён общий cleanup проекта, снижён шум от временных артефактов и улучшена предсказуемость работы уведомлений/PWA-настроек. · В настройках уведомлений доработана работа со своими рингтонами: при замене старые файлы корректно очищаются, а слишком большие файлы не принимаются. · Удалены временные каталоги восстановления/аудита (`tmp_*`) из рабочей директории, которые засоряли поиск и увеличивали накладные расходы проверок. · В `scripts/check-encoding.ps1` добавлено универсальное исключение для временных каталогов `tmp_*`, чтобы сборочные проверки не сканировали техмусор.
Релиз v3.5.1
2026-02-23

Релиз v3.5.1

Hotfix рингтонов на телефонах: улучшено воспроизведение кастомных рингтонов уведомлений/звонка на мобильных браузерах и PWA. · В `views/partials/scripts.php` исправлен баг кастомного рингтона уведомлений: теперь Promise `audio.play()` реально проверяется, и при ошибке срабатывает fallback-звук. · Кастомные рингтоны теперь резолвятся через `appBasePath` (`__tsoyResolveAppUrl`) для корректной работы в установках проекта в подпапке сайта.
Релиз v3.5.2
2026-02-23

Релиз v3.5.2

Усилена надёжность уведомлений: добавлен серверный retry-worker для wake-push доставки с повторными попытками и backoff. · В админке (Настройки -> PWA и обновления) появился блок диагностики push-очереди: количество недоставленных элементов, состояние очереди и статус подписок. · В `push_queue` добавлены поля состояния доставки (`dispatch_state`, попытки, backoff, lock, last_error/status) и миграции для MySQL/SQLite. · В `app/push.php` реализованы функции очереди и worker-обработки (`claim/process due`, retry/backoff, статистика очереди).
Релиз v3.5.3
2026-02-23

Релиз v3.5.3

Уведомления стали стабильнее при закрытом PWA/сайте: сервер теперь пытается отправлять полноценный Web Push payload (с телом уведомления), а не только wake-push. · Сохранён fallback-режим (`wake-push + push_pull`) для совместимости, если endpoint/браузер не принимает payload. · В `app/push.php` добавлена payload-отправка Web Push (`aes128gcm`) с VAPID и шифрованием сообщения на стороне сервера (ECDH + HKDF + AES-128-GCM). · `push_dispatch_user()` теперь умеет отправлять payload в push и возвращает раздельную статистику `payload_sent` / `wake_sent`.
Релиз v3.5.4
2026-02-23

Релиз v3.5.4

В админке (`Настройки -> PWA и обновления`) добавлена диагностика push-устройств: список подписок, устройство/режим, последний успех доставки и ошибки. · Появилась кнопка `Тест push` для каждого устройства, чтобы быстро проверить доставку уведомлений на конкретную подписку. · В `app/push.php` добавлены helper-функции диагностики: `push_subscriptions_admin_list()`, `push_subscription_get()`, `push_subscription_test_send()`. · Добавлен route `index.php?r=push_test_subscription` (admin/settings), который отправляет тестовый push на выбранную подписку и пишет результат в flash.
Релиз v3.5.5
2026-02-23

Релиз v3.5.5

Диагностика push-устройств в админке стала практичнее: добавлены фильтры (поиск, active/inactive, только с ошибками). · Для push-подписок появились действия `Отключить / Включить / Удалить` прямо в таблице устройств. · В `app/push.php` добавлены admin-helper’ы управления подписками: `push_subscription_set_active()` и `push_subscription_delete_by_id()`, а список подписок получил серверные фильтры (`q`, `only_errors`, `state`). · В `index.php` добавлен route `push_subscription_admin_action` для безопасного управления подписками из админки (POST + CSRF + capability).
Релиз v3.5.6
2026-02-23

Релиз v3.5.6

Исправлен бренд в уведомлениях: заголовок уведомлений теперь подтягивается из настроек сайта, а не захардкожен как `TSOY.CLOUD`. · В диагностике push-устройств добавлена колонка `Последний тест` (успех/ошибка, режим `payload/wake`, HTTP-код, время). · В `app/push.php` добавлен helper `push_app_title()` (с кешем), и серверные push-события/очередь/тестовые уведомления переведены на имя сайта из `settings`. · В `views/layout.php` + `views/partials/scripts.php` runtime уведомлений получил `siteName/siteHeaderName`; browser/PWA fallback notifications и toast теперь используют бренд из настроек.
Релиз v3.5.7
2026-02-23

Релиз v3.5.7

В диагностике push-устройств добавлена статистика реальных доставок по подписке: `payload`, `wake`, `wake fallback`, `errors` (накопительно, с последнего сброса). · Добавлены кнопки сброса статистики доставок: для одной подписки и для всех подписок сразу. · В `push_subscriptions` добавлены поля `push_stat_*` и миграции для MySQL/SQLite; реальные отправки в `push_dispatch_user()` записывают статистику по подписке (`payload/wake/fallback/error`). · В `app/push.php` реализованы helper’ы `push_subscription_delivery_stats_record()` и `push_subscription_delivery_stats_reset()`.
Релиз v3.5.8
2026-02-23

Релиз v3.5.8

Hotfix уведомлений: название в заголовке уведомления теперь берётся в приоритете из `Название в шапке`, затем из `Название сайта`. · Исправлен fallback тестового уведомления в центре уведомлений: больше не показывает захардкоженный `TSOY.CLOUD`. · В `views/notifications.php` fallback `new Notification(...)` переведён на бренд из `window.__TSOY_NOTIFY`. · В `views/partials/scripts.php` helper `__tsoyNotifyTitle()` теперь использует `siteHeaderName` раньше `siteName`.
Релиз v3.5.10
2026-02-23

Релиз v3.5.10

В диагностике push-устройств добавлена агрегированная сводка по всем подпискам: `payload success rate`, `fallback rate`, `error rate` и общие счётчики попыток. · Добавлен мини-график/спарклайн по дням (14 дней): stacked bars `payload / wake / errors`, где высота столбца показывает объём попыток за день. · В `app/push.php` `push_queue_stats()` расширен блоком `delivery_summary`, который агрегирует `push_stat_*` по всем push-подпискам и считает проценты (`payload/fallback/error`). · Добавлена таблица/миграция `push_delivery_daily_stats` и запись дневной статистики при реальных отправках push (`payload/wake/fallback/error`).
Релиз v3.5.11
2026-02-23

Релиз v3.5.11

Страница `Настройки` в дашборде больше не выглядит как сплошная простыня: добавлен блок быстрых переходов по разделам (якоря) и группировка по логическим секциям. · Появились явные секции: основные параметры, дизайн/уведомления, PWA/push, функции/звонки/диагностика — ориентироваться в настройках стало заметно проще. · В `views/admin_settings.php` добавлены якоря (`id`) для ключевых блоков настроек и верхняя навигационная панель без изменения backend-логики сохранения формы. · Страница сохранена как единая форма `admin_settings`, поэтому существующие `POST`-обработчики, `formaction` для push-диагностики и CSRF-проверки продолжают работать без миграций.
Релиз v3.5.12
2026-02-23

Релиз v3.5.12

Hotfix страницы `Настройки`: быстрые переходы по разделам теперь ведут в нужные блоки страницы, а не в корень сайта. · Убран sticky-режим блока `Разделы настроек`, из-за которого он перекрывал интерфейс при прокрутке. · В `views/admin_settings.php` ссылки разделов переведены с hash-only (`#...`) на route-aware (`index.php?r=admin_settings#...`) для корректной работы при наличии `<base>`/нестандартного base path. · Снята sticky-позиция с `admin-settings-nav-card` (оставлен статичный блок), чтобы навигация не накрывала карточки настроек ниже по странице.
Релиз v3.5.13
2026-02-23

Релиз v3.5.13

Страница `Настройки` переделана в Android-style режим: слева список разделов, справа показывается только выбранный раздел настроек. · Переключение разделов теперь происходит без переходов по странице/якорям; интерфейс не перекрывается и не дёргается. · В `views/admin_settings.php` реализован client-side секционный контроллер (`data-settings-nav` / `data-settings-section`) с переключением видимости блоков внутри одной формы. · Сохранена совместимость с текущим backend `admin_settings`: `POST`-логика, `formaction` кнопки push-диагностики и CSRF-проверка не менялись.
Релиз v3.5.14
2026-02-23

Релиз v3.5.14

В разделе `Система` настроек добавлен выпадающий список выбора часового пояса по Гринвичу (GMT/UTC offsets). · При выборе смещения из списка значение автоматически подставляется в поле часового пояса ниже, чтобы сохранить настройку одним кликом. · В `views/admin_settings.php` добавлена генерация preset-списка фиксированных зон `GMT-12 ... GMT+14` с валидными IANA-идентификаторами (`Etc/GMT±N`, `UTC`). · Добавлена JS-связка `systemTimezoneUtcPreset -> systemTimezoneInput`, которая подставляет выбранный preset в существующее поле `system_timezone` без изменений backend-валидации.
Релиз v3.5.15
2026-02-23

Релиз v3.5.15

Настройки переведены в Android-style режим с боковым меню разделов и вторым уровнем внутри `PWA и push` (`Обновления`, `Очередь push`, `Устройства`). · В главное меню добавлен отдельный пункт `Настройки` (после `Дашборд`), доступный всем авторизованным пользователям. · Добавлен route `settings` с доступом через `sections.settings`; legacy route `admin_settings` сохранён для совместимости админ-инструментов и внутренних redirect’ов. · `index.php` (`settings/admin_settings`) разделён по scope сохранения: личные настройки (theme + notify prefs) сохраняются всем ролям, глобальные админ-настройки — только при `admin.settings` и не в режиме `admin_tester`.
Релиз v3.5.16
2026-02-23

Релиз v3.5.16

Админские настройки физически разнесены по отдельным страницам (`Брендинг`, `Доступ и лимиты`, `Система`, `Оформление`, `PWA и push`, `Звонки/диагностика`, `База данных`) при сохранении общего бокового меню. · Переходы в меню настроек теперь открывают соответствующий экран, а не просто переключают внутренние блоки в одном и том же URL. · В `index.php` добавлены route-level страницы настроек (`settings_admin_*`) с capability-gates через `admin.settings`; legacy `admin_settings` сохранён и перенаправлен в режим `Брендинг` внутри общего шаблона. · В `views/admin_settings.php` реализована route-aware навигация: единый шаблон использует разные `action`/initial section в зависимости от текущего settings-route и корректно обрабатывает hash-переходы (`#pwa-notify-admin`, подпункты PWA и др.).
Релиз v3.5.17
2026-02-23

Релиз v3.5.17

Hotfix страницы `Настройки`: пункты бокового меню снова выглядят как кнопки (без подчёркиваний) и заполняют всю ширину колонки. · На desktop видимый раздел настроек теперь растягивается на всю доступную ширину правой панели (как `WebRTC`), а не остаётся половинной карточкой. · В `views/admin_settings.php` для `.admin-settings-side-btn` добавлены `display:block` и `text-decoration:none`, что устраняет регресс после перевода пунктов меню в `<a>`. · В JS-section режиме добавлен CSS override для `.js-settings-block.is-visible` внутри `.row`: `flex-basis/max-width:100%` (исправлен конфликт с Bootstrap `col-lg-6`).
Релиз v3.5.18
2026-02-23

Релиз v3.5.18

Hotfix страницы `Настройки`: в разделе `База данных` убрана лишняя горизонтальная линия перед карточкой блока. · Нижняя панель сохранения (`Сохраняются все изменённые поля...`) теперь подстраивается под тему оформления и остаётся читаемой в светлой и тёмной темах. · В `views/admin_settings.php` удалён лишний `<hr class=\"my-4\">` перед блоком `settings-db`. · Стили `admin-settings-savebar` переведены с жёстко тёмного фона (`rgba(20,22,30,...)`) на theme-aware фон через Bootstrap CSS variables (`--bs-body-bg-rgb`, `--bs-body-color`, `--bs-border-color-translucent`).
Релиз v3.6.0
2026-02-23

Релиз v3.6.0

Начат рефакторинг связки `Профиль / Контакты / Мессенджер`: на всех трёх экранах добавлен единый переключатель разделов (Social Hub) и явное описание роли каждого раздела. · `Профиль` теперь явно позиционируется как публичная страница пользователя (посты, медиа, страницы, друзья), `Контакты` — как каталог и управление связями, `Мессенджер` — как диалоги/вложения/звонки. · Добавлен reusable partial `views/partials/social_suite.php` (единый CSS для Social Hub: header/switcher/surfaces/role-map chips). · `views/profile.php`, `views/contacts.php`, `views/chat.php` подключены к `social_suite` и получили общий navigation shell без вмешательства в критичную mobile-геометрию композера мессенджера.
Релиз v3.6.1
2026-02-23

Релиз v3.6.1

Следующий шаг по связке `Контакты / Мессенджер`: в мессенджере блок `Быстрый старт` теперь показывает только контакты пользователя, а полный каталог вынесен в раздел `Контакты`. · В настройках исправлено выравнивание раздела `База данных`: карточка блока больше не поднимается выше меню слева. · В `views/chat.php` удалено дублирование каталога пользователей внутри мессенджера: список `Начать чат` переведён на `contacts_list($me_id)` + ссылка в `index.php?r=contacts`. · В `views/admin_settings.php` выровнен db-блок (`settings-db`) относительно общего grid/меню и обновлены подписи/подразделы блока дизайна (`ui/notify`) для разделения личных и глобальных настроек.
Релиз v3.6.2
2026-02-23

Релиз v3.6.2

Убран лишний `Social Hub` с экранов `Профиль / Контакты / Мессенджер`: переключение между разделами остаётся в основном меню, интерфейс снова стал компактнее. · В `Мессенджере` закреплена роль экрана: только активные диалоги и общение. Новый чат создаётся через раздел `Контакты`. · Удалён временный partial `views/partials/social_suite.php` и его подключения из `views/profile.php`, `views/contacts.php`, `views/chat.php` (откат лишнего UI-слоя без влияния на backend). · В `views/chat.php` удалён дублирующий сценарий старта чатов из списка пользователей/контактов: оставлен переход в `index.php?r=contacts` и история активных диалогов.
Релиз v3.6.3
2026-02-23

Релиз v3.6.3

Следующий шаг по связке `Контакты / Мессенджер`: в карточках пользователей на странице `Контакты` добавлены явные действия `Написать` и `Позвонить`. · Мессенджер очищен от каталоговых элементов: в боковой панели оставлены только активные диалоги, без блока быстрого старта/списков людей. · `index.php` (`chat_start` и `chat?start=`) теперь прокидывает `call=1` в итоговый URL диалога, чтобы из внешних экранов можно было запускать звонок напрямую. · В `views/contacts.php` унифицированы action-кнопки карточек (`Написать` / `Позвонить`) для списка контактов и каталога пользователей.
Релиз v3.6.4
2026-02-23

Релиз v3.6.4

Дожат интерфейс мессенджера под единый стиль с `Контактами`: обновлены список диалогов, шапка диалога и composer (кнопки, границы, поверхности, типографика). · Список диалогов стал визуально ближе к карточкам контактов: более ровные поверхности, одинаковая логика hover/active, читаемые превью и время. · Изменения сделаны только в `views/chat.php` на уровне CSS/визуальных состояний (`chat-dialog-item`, `chat-dialog-head`, `chat-inputbar`, action-buttons). · Мобильная геометрия ввода/клавиатуры (`fixed/sticky/viewport` логика, fullscreen layout цепочка) не изменялась, чтобы не вернуть iPhone-баг с \"подбородком\".
Релиз v3.6.5
2026-02-23

Релиз v3.6.5

Мессенджер получил второй visual-pass: доработаны карточки диалогов, шапка активного диалога, кнопки действий и composer для более цельного и лёгкого вида. · В списке диалогов добавлена компактная CTA-кнопка `Контакты` в шапке списка и более полезное пустое состояние с переходом в `Контакты`. · В `views/chat.php` расширен UI-only CSS слой (polish pass 2): `chat-list-headbar`, `chat-dialog-item`, `chat-dialog-head`, `chat-head-btn`, `chat-compose-btn` и density overrides. · Добавлены только безопасные классы/микроразметка в `views/chat.php` (CTA в списке диалогов, классы кнопок) без изменения маршрутов, логики сообщений и звонков.
Релиз v3.6.6
2026-02-23

Релиз v3.6.6

Hotfix iPhone/PWA уведомлений: системная строка `from ...` теперь берёт бренд из настроек (`Название в шапке` → `Название сайта`), а не из старого захардкоженного `TSOY.CLOUD`. · PWA meta-теги (`application-name`, `apple-mobile-web-app-title`) синхронизированы с брендингом проекта, чтобы имя приложения и имя в уведомлениях совпадали. · В `index.php` добавлен route `manifest`, который отдаёт динамический Web App Manifest на основе текущих настроек брендинга (`site_header_name` / `site_name`). · В `views/partials/head.php` `<link rel=\"manifest\">` переведён на динамический route с cache-bust (`APP_VERSION` + hash бренда); `application-name` и `apple-mobile-web-app-title` переведены на приоритет `site_header_name`.
Релиз v3.6.7
2026-02-23

Релиз v3.6.7

Исправлен мобильный overflow окна `Диалоги` в мессенджере: карточка списка диалогов больше не вылезает за ширину экрана на iPhone/смартфонах. · Стабилизирована ширина mobile-раскладки мессенджера без изменений логики клавиатуры и без риска вернуть баг с `подбородком`. · В `views/chat.php` для mobile добавлен точечный фикс ширины: убраны отрицательные отступы `row g-3` (Bootstrap gutter overflow) и зажаты `#chatListPane`/карточка/тело списка в `max-width:100%`. · Изменение ограничено CSS-слоем страницы чата; fullscreen/composer/`visualViewport` логика не изменялась.
Релиз v3.6.8
2026-02-23

Релиз v3.6.8

Ускорена отправка сообщений в мессенджере: сообщение появляется заметно быстрее после нажатия `Отправить`, без ощущения паузы в 2–3 секунды. · Повышена плавность UX при отправке: сервер отдаёт ответ чату сразу, а push-уведомления больше не держат отправку сообщения. · В `index.php` (`chat_send_async`) push для нового сообщения переведён в queue-first режим: уведомление ставится в очередь без синхронной отправки (`sendNow=false`). · HTTP-ответ `chat_send_async` теперь завершается до фоновой попытки dispatch push (`fastcgi_finish_request` / flush), чтобы Web Push не блокировал отображение сообщения.
Релиз v3.6.9
2026-02-23

Релиз v3.6.9

Подготовлен серверный фундамент чата для больших историй переписки (сотни тысяч/миллионы сообщений) без изменения привычного интерфейса. · Список диалогов и polling чата стали легче для сервера за счёт оптимизации хранения unread-состояния и индексов под крупные переписки. · В `conversations` добавлены денормализованные unread-счётчики (`u1_unread_count`, `u2_unread_count`) и метаданные последнего сообщения (`last_message_id`, `last_message_preview`). · В `app/chat.php` `message_send()` / `conversation_mark_read()` обновляют unread-счётчики диалога; `message_delete_for_me()` и `conversation_clear_for_me()` синхронизируют их через пересчёт/сброс.
Релиз v3.6.10
2026-02-23

Релиз v3.6.10

Полиш страницы `Контакты`: действия `Написать`, `Позвонить`, `Удалить` в карточках заменены на компактные иконки (конверт, трубка, корзина) для более чистого интерфейса. · Сохранены подсказки (`title`) и `aria-label`, чтобы UX остался понятным и доступным на ПК и мобильных устройствах. · В `views/contacts.php` добавлены `contacts-actions` и `contacts-action-icon` (theme/density-friendly размеры икон-кнопок), заменена текстовая разметка кнопок в списке `Мои контакты` и `Каталог пользователей`. · Логика маршрутов и действий (`chat_start`, `chat_start&call=1`, add/remove contact) не изменялась.
Релиз v3.6.11
2026-02-23

Релиз v3.6.11

Доведён UI действий в `Контактах`: кнопка `В контакты` заменена на иконку `человек+`, чтобы все действия в карточках были в одном визуальном языке. · Заголовок `Каталог пользователей` и кнопка `Найти` теперь находятся в одной строке, поле поиска вынесено отдельно ниже на полную ширину. · В `views/contacts.php` кнопка добавления контакта переведена на `bi-person-plus` с `title`/`aria-label`; сохранена существующая POST-логика `action=add`. · Поиск в каталоге использует `form=\"contactsSearchForm\"` у кнопки `Найти`, чтобы держать правильную desktop/mobile компоновку без изменения backend-маршрута `contacts`.
Релиз v3.6.12
2026-02-23

Релиз v3.6.12

Системные файлы проекта (логотип, favicon, кастомные звуки уведомлений/звонка и служебные ассеты спец-регистрации) переведены в единую системную папку `public/system/...`. · Старые пути (`public/branding`, `public/sounds`, `public/friend_register`) автоматически и мягко переносятся в новую системную структуру при запуске приложения. · Добавлен `app/system_assets.php`: единый helper для системных ассетов (безопасное сохранение upload-файлов, удаление только из разрешённых системных директорий, миграция legacy-путей). · В `index.php` (`admin_settings`) загрузка логотипа, favicon и кастомных рингтонов переведена на `system_assets_store_upload(...)` с хранением в `public/system/branding` и `public/system/sounds`.
Релиз v3.6.13
2026-02-23

Релиз v3.6.13

В настройках переработан раздел `Внешний вид`: вместо разрозненных пунктов `Внешний вид профиля` и `Внешний вид сайта` появился единый раздел `Внешний вид` с подпунктами (профиль / сайт / стиль уведомлений). · Для глобального оформления сайта добавлены готовые профили внешнего вида (несколько пресетов под разные сценарии: чистый, рабочий, чтение, мягкий, ночной, psychedelic). · Добавлен helper `ui_appearance_profiles()` в `app/bootstrap.php` с готовыми профилями оформления и пакетами значений для `ui_*` настроек. · В `views/admin_settings.php` объединена навигация дизайна в один top-level `Внешний вид`, добавлен UI выбора/подстановки профиля оформления и обновлены кириллические шрифтовые опции.
Релиз v3.6.14
2026-02-23

Релиз v3.6.14

Исправлен UX профиля: кнопка `Написать` больше не отображается на собственной карточке профиля. · У вложений постов в обычном просмотре убраны кнопки `Удалить`: удаление доступно только в режиме редактирования поста. · В `views/profile.php` кнопка перехода в чат скрыта для `is_self`. · Из обычного рендера вложений в `views/profile.php` удалены формы `post_attachment_delete`; удаление оставлено в edit-блоке (`js-del-att`).
Релиз v3.6.15
2026-02-23

Релиз v3.6.15

В личном разделе `Настройки -> Внешний вид` добавлены персональные режимы основного бокового меню: `показывать всегда`, `скрывать всегда`, `по кнопке`. · Для публичной страницы профиля добавлена персональная настройка вида для гостей: `показывать боковое меню`, `скрывать боковое меню`, `скрывать боковое меню и шапку сайта`. · В `users` добавлены персональные UI-поля `ui_sidebar_mode` и `guest_profile_chrome_mode` (миграции в `app/migrations.php`). · В `index.php` (`settings`) сохранение пользовательских настроек расширено: добавлен `user_update_ui_prefs(...)` и синхронизация значений в session snapshot.
Релиз v3.6.16
2026-02-23

Релиз v3.6.16

В мессенджере добавлено контекстное меню сообщения по правой кнопке мыши и по удержанию на мобильных устройствах. · Меню действий сообщения теперь включает `Изменить`, `Удалить`, `Цитировать` и `Реакция` (с выбором emoji). · Добавлена таблица `message_reactions` (MySQL/SQLite) и миграции/индексы в `app/migrations.php`. · В `app/chat.php` добавлены batch-подгрузка реакций для пачек сообщений (`chat_messages_payload_for_client`) и `message_reaction_toggle(...)`.
Релиз v3.6.17
2026-02-23

Релиз v3.6.17

В мессенджере у сообщений добавлена маленькая галочка статуса прочтения (`прочитано / не прочитано`). · Галочка отображается у ваших сообщений и обновляется в диалоге автоматически, когда собеседник читает чат. · В `app/chat.php` в payload сообщений добавлен `is_read`, а также helper `conversation_last_read_sent_message_id(...)` для лёгкого read-receipt sync. · В `chat_send_async` и `chat_messages_poll` (`index.php`) добавлен `read_upto_own_id`, чтобы фронт мог обновлять статусы уже отрисованных сообщений без перезагрузки.
Релиз v3.6.18
2026-02-23

Релиз v3.6.18

В контекстное меню сообщения мессенджера добавлен пункт `Будильник` (пинг-напоминание). · Будильник доступен для ваших сообщений и отправляет повторное уведомление собеседнику только если сообщение ещё не прочитано. · Добавлен route `chat_message_nudge` в `index.php` с проверками: сообщение принадлежит текущему пользователю, находится в этом диалоге и ещё не прочитано. · В `app/push.php` добавлен `push_notify_chat_message_reminder(...)` с отдельным типом `chat_nudge` и dedupe tag по сообщению.
Релиз v3.6.19
2026-02-23

Релиз v3.6.19

Начато внедрение голосовых сообщений в мессенджер: добавлена красная кнопка микрофона и аккуратное окно записи. · Голос записывается прямо в браузере/на устройстве и прикрепляется к сообщению как аудио-вложение. · В `views/chat.php` добавлены voice-recorder modal, UI состояния записи и интеграция с `MediaRecorder` (MVP) без изменения keyboard/fullscreen геометрии чата. · Записанный blob прикрепляется через существующий `chatFileInput` (`DataTransfer`) и уходит в уже существующий backend upload flow `chat_send_async` / `message_send`.
Релиз v3.6.20
2026-02-23

Релиз v3.6.20

Добавлен глобальный preloader при загрузке страниц сайта: пользователь видит аккуратный индикатор загрузки вместо “пустого” экрана. · Для PWA добавлен отдельный режим preloader `Идёт установка приложения…` при установке через системную кнопку. · В `views/partials/head.php` добавлен theme-aware overlay `#tsoyPreloader` (общий для сайта и установщика), работающий в светлой/тёмной теме без жёстко тёмного фона. · В `views/partials/scripts.php` добавлен runtime `window.__TSOY_PRELOADER` (show/hide/set) с автоскрытием после загрузки, показом на внутренних переходах и submit-формах (кроме AJAX submit с `preventDefault`).
Релиз v3.6.21
2026-02-23

Релиз v3.6.21

Исправлено переключение разделов в настройках: секции теперь открываются без ощущения полной перезагрузки страницы. · В `Контактах` длинные имена пользователей больше не раздвигают и не перестраивают иконки действий: текст ужимается/переносится внутри текстовой зоны, а кнопки остаются на месте. · В `views/admin_settings.php` клики по боковому меню настроек переведены на client-side section switch (`history.pushState`) вместо обязательной навигации по `settings_admin_*` route; `form action` динамически переключается по секции, поэтому сохранение остаётся корректным. · В `views/contacts.php` добавлены отдельные классы текстовой зоны (`contacts-person-*`), `contacts-actions` переведён в `nowrap`/`flex-shrink:0`, а длинные имена ограничены в 1–2 строки без сдвига иконок.
Релиз v3.6.22
2026-02-23

Релиз v3.6.22

Hotfix preloader: убран автопоказ на каждый внутренний клик, поэтому переключение секций настроек и переходы между чатами больше не должны “подвисать” из-за overlay. · Preloader сохранён там, где он реально полезен: первичная загрузка страницы, установка сайта и установка PWA. · В `views/partials/scripts.php` глобальный preloader переведён в explicit-flow режим: отключён автоперехват всех внутренних ссылок и обычных submit-форм. · Автопоказ preloader оставлен только для `install.php` submit и для форм с `data-preloader=\"1\"`; PWA install flow (`beforeinstallprompt`) сохранён отдельно.
Релиз v3.6.23
2026-02-23

Релиз v3.6.23

В `Профиле` длинные тексты в карточках друзей/страниц и в постах ведут себя аккуратнее: текст ужимается/переносится внутри своей зоны и не ломает действия/бейджи. · В `install.php` добавлена мини-анимация этапов установки (БД → миграции → админ → готово) с синхронизацией текста в preloader. · В `views/profile.php` добавлены clamp/overflow правила для карточек друзей/страниц и фикс action-зон в постах, чтобы длинные строки не выталкивали элементы интерфейса. · В `install.php` реализован submit-time stepper без изменения backend-логики: этапы анимируются на клиенте и обновляют `__TSOY_PRELOADER` в режиме `install-site`.
Релиз v3.6.24
2026-02-23

Релиз v3.6.24

Hotfix preloader: страницы `Профиль` и `Мессенджер` открываются заметно быстрее, overlay загрузки больше не ждёт долго все картинки/медиа. · Preloader теперь скрывается на этапе готовности DOM, а не только после полного `window.load`. · В `views/partials/scripts.php` логика initial preloader boot переведена на `DOMContentLoaded`/`interactive` + `requestAnimationFrame`, чтобы не блокировать UI на медиа-насыщенных страницах. · `window.load` и `pageshow` оставлены только как fallback-сигналы; добавлен hard fail-safe timeout на случай странных браузерных зависаний событий.
Релиз v3.6.25
2026-02-23

Релиз v3.6.25

Hotfix голосовых сообщений: голосовые `.webm` в мессенджере теперь отображаются плеером, а не только ссылкой на файл. · Фикс работает и для уже отправленных голосовых (по имени `voice_message_*`), и для новых записей. · В `app/files.php` добавлена нормализация MIME для browser voice-notes (`voice_message_*`), чтобы `.webm/.ogg/.m4a` не сохранялись как generic/video MIME. · В `app/chat.php` добавлен helper `chat_file_is_audio_like(...)`, а payload чата теперь отдаёт `file_is_audio` для корректного client render старых и новых голосовых.
Релиз v3.6.26
2026-02-23

Релиз v3.6.26

На главной странице блок недавних файлов больше не растягивает экран вниз: по умолчанию показываются первые 3 файла. · Остальные файлы открываются кнопкой `Показать ещё файлы` (порциями по 3), как в разделе новостей. · В `views/home.php` лента файлов переведена на существующий механизм `data-load-more-root` из `views/layout.php` без добавления нового JS-кода. · Для элементов файлов добавлено серверное начальное скрытие (`d-none`) после первых 3 записей, чтобы список был компактным сразу при рендере страницы.
Релиз v3.6.27
2026-02-23

Релиз v3.6.27

Hotfix голосовых сообщений в мессенджере: voice-notes отображаются компактной одной строкой без второй строки с именем файла. · Визуал голосового сообщения стал тоньше и аккуратнее, ближе к обычной строке сообщения. · В `views/chat.php` voice-note рендер (`voice_message_*`) уже использует отдельный inline-layout без file-link; в релиз включён hotfix компактности CSS (`.chat-voice-inline-row`, `.chat-audio-clip.is-voice-note`). · Серверный и polling JS рендеры голосовых сообщений синхронизированы: для voice-notes не выводится отдельная строка имени файла.
Релиз v3.6.28
2026-02-23

Релиз v3.6.28

Голосовые сообщения в мессенджере: один тап по микрофону запускает запись, повторный тап останавливает запись и сразу отправляет голосовое. · Если запись не удалось отправить автоматически, голосовое остаётся прикреплённым в composer и можно отправить вручную. · В `views/chat.php` обычный click/tap микрофона переведён на toggle-логику записи (`start/stop+auto-send`) без изменения mobile composer/fullscreen геометрии. · Добавлен helper программной отправки через существующий async submit (`chat_send_async`) после авто-прикрепления voice blob в composer.
Релиз v3.6.29
2026-02-23

Релиз v3.6.29

Голосовые сообщения в чате теперь воспроизводятся одинаково на ПК и телефоне: компактной одной кнопкой play/pause. · У voice-note больше нет зависимости от урезанных native audio-controls браузера на десктопе. · В `views/chat.php` voice-notes (`voice_message_*`) переведены на custom mini-player (кнопка + hidden audio) в server-side и polling-render. · Добавлена JS-делегация управления воспроизведением (play/pause, синхронизация иконки, автопауза предыдущего голосового).
Релиз v3.6.30
2026-02-23

Релиз v3.6.30

В `Настройки -> Внешний вид` добавлены персональные настройки preloader: режим (`умный / только установка-PWA / выключить`), компактный вид и показ текста. · Preloader теперь можно настроить под себя по каждому профилю аккаунта (профиль = отдельный user). · В `users` добавлены персональные UI-поля preloader (`ui_preloader_mode`, `ui_preloader_compact`, `ui_preloader_show_text`) с загрузкой в session snapshot и применением в `views/partials/scripts.php`. · В `views/partials/head.php` добавлены вариации preloader (`compact`, скрытие текста), а runtime учитывает пользовательский режим без ломки install/PWA сценариев.
Релиз v3.6.31
2026-02-23

Релиз v3.6.31

Hotfix голосовых сообщений на телефоне: mini-player voice-note снова стабильно воспроизводится по тапу. · Поведение mini-player синхронизировано для mobile/desktop (play/pause одной кнопкой). · В `views/chat.php` для voice mini-player добавлен mobile-safe `touchend` handler с подавлением дубля `click`, чтобы iPhone/Safari не терял тап. · Скрытый `<audio>` переведён с `display:none` на visually-hidden класс; добавлен `audio.load()` перед `play()` для лучшей совместимости мобильных браузеров.
Релиз v3.6.32
2026-02-23

Релиз v3.6.32

В Брендинге добавлена отдельная настройка `Иконка PWA` (опционально) для установленного приложения. · Если PWA-иконка не задана, приложение теперь использует `favicon`, а затем `лого` как fallback. · Route `index.php?r=manifest` теперь динамически подменяет `icons` (и shortcut icons) из настроек брендинга вместо жёстких `/public/icons/...`. · В `views/partials/head.php` `apple-touch-icon` переведены на динамический PWA icon с cache-bust, а `manifest` cache-bust учитывает смену иконки.
Релиз v3.6.33
2026-02-23

Релиз v3.6.33

В PWA исправлен просмотр файлов: теперь файл открывается во встроенной странице-просмотрщике с кнопкой `Назад`, а не “захватывает” приложение без пути назад. · Кнопка `Открыть` в файловом проводнике тоже использует этот встроенный просмотр в standalone/PWA. · Добавлен route `index.php?r=file_viewer` с безопасной проверкой доступа к файлу и возвратом по `back` URL. · В `views/partials/scripts.php` добавлен standalone-PWA перехват ссылок `index.php?r=view&id=...` с перенаправлением во встроенный просмотрщик вместо raw-file response.
Релиз v3.6.34
2026-02-23

Релиз v3.6.34

Hotfix mini-плеера голосовых на телефоне: воспроизведение по тапу снова стабильно запускается. · Поведение mini-player выровнено между iPhone/Android и ПК (одна кнопка play/pause). · В `views/chat.php` mini-player получил прямые обработчики `touchend/click` на кнопке (а не только делегирование через контейнер сообщений) с защитой от двойного срабатывания. · Убран рискованный pre-play `audio.load()` как основной путь; добавлен fallback reload только при ошибке `play()`.
Релиз v4.0.0
2026-02-27

Релиз v4.0.0

Новый формат приложения `messenger`: отдельный упрощённый режим только для Контактов и Мессенджера с прямым открытием чата. · Страница `Админ → Пользователи` полностью переработана: аккаунт и его профили теперь управляются в одной карточке. · В модель пользователей добавлены `app_mode`, `group_id`, `group_role`, `allow_multiprofile`, `admin_password_hint`; добавлены таблицы `groups`, `group_members`, `group_bridges` и миграции/индексы для них. · Реализована backend-видимость по группам и мостам в `users_directory`, `contacts_list`, `conversation_get_or_create`, `conversations_for_user` и проверках `chat_start`/добавления контактов.
Релиз v4.1.0
2026-02-28

Релиз v4.1.0

Управление группами и мостами вынесено в отдельную страницу `Дашборд → Группы и мосты` с полным управлением: создание, переименование, удаление групп и мостов, просмотр участников. · Страница `Пользователи` очищена от группового управления, оставлены только аккаунты и создание; добавлена ссылка на новую страницу групп. · Добавлены backend-функции `group_rename()`, `group_delete()`, `group_bridge_delete()` в `app/users.php` для полного CRUD-управления группами и мостами. · Новый route `admin_groups` в `index.php` с POST-обработчиками: `create_group`, `rename_group`, `delete_group`, `set_bridge`, `delete_bridge`.
Релиз v4.2.0
2026-02-27

Релиз v4.2.0

В мессенджере при записи голосового сообщения появляется красная кнопка-корзина для отмены записи (как в Telegram). Работает и при тапе, и при удержании. · Добавлена функция «Удалить у всех»: отправитель может удалить своё сообщение не только для себя, но и для собеседника. · Добавлена кнопка `#voiceCancelBtn` (`.chat-voice-cancel-btn`) в inputbar мессенджера; появляется при `voiceTapRecording`/`voiceHoldRecording`, вызывает `voiceRecResetState()` для отмены. · В `app/chat.php` добавлена `message_delete_for_all()` — физическое удаление сообщения и его реакций; доступно только отправителю.
Релиз v4.3.0
2026-02-27

Релиз v4.3.0

Создана отдельная страница «Новости» со всеми админ- и системными новостями, пагинацией и кнопкой «Показать ещё». · На дашборде в блоке «Новости» теперь показываются только 2 последних записи и ссылка «Все новости →». · Создан `views/news.php` — standalone-страница новостей с `page_top`, раздельными блоками admin/system news и load-more (initial=10). · Добавлен маршрут `case "news"` в `index.php` затягивающий `views/news.php`.
Релиз v4.4.0
2026-02-28

Релиз v4.4.0

Администрирование новостей вынесено из дашборда сотрудников на отдельную страницу с полным CRUD (создание, чтение, редактирование, удаление). · Файловый проводник «Мои файлы» полностью переписан: карточный/списочный вид, drag-n-drop файлов в папки, зона загрузки, контекстное меню, иконки по типу файла, переключатель grid/list. · В `app/news.php` добавлены `news_get()` и `news_update()` для CRUD новостей. · В `index.php` добавлен маршрут `news_update` (POST, csrf, audit_log).
Релиз v4.5.0
2026-02-28

Релиз v4.5.0

Мессенджер переработан в стиле Telegram: кнопка «корзина» при записи голосового теперь слева, заголовок чата стал overlay поверх сообщений (больше полезной площади), упрощённый хедер (только «Назад» + имя/аватар). · Нажатие на имя/аватар в чате открывает карточку пользователя (Telegram-style slide-in панель) с действиями: звонок, ссылка, профиль, очистить чат. · `views/chat.php` — voiceCancelBtn перемещён перед attachBtn в HTML (trash слева при записи). · `views/chat.php` — заменён `.chat-dialog-head` на `.chat-overlay-head` (position: absolute, backdrop-filter, overlay поверх сообщений).
Релиз v4.6.0
2026-02-28

Релиз v4.6.0

Создана единая дизайн-система проекта (14 переиспользуемых компонентов): карточки, hover-эффекты, стеклянные панели, навигация, статусные индикаторы, зоны загрузки и др. · Unification поверхностных переменных (light/dark × soft/balanced/strong) — 6 тем теперь задаются в одном месте вместо дублирования в каждом view. · Создан `public/css/design-system.css` (382 строки, 14 компонентов): `.t-surface`, `.t-stat-card`/`.t-stat-grid`, `.t-card-hover`, `.t-info-card`, `.t-card-frosted`, `.t-section`/`.t-section-title`, `.t-page-border`, `.t-summary-grid`, `.t-status-pill`, `.t-list-hover`, `.t-status-dot`, `.t-sticky-bar`, `.t-nav-item`, `.t-upload-zone`. · В `views/partials/head.php` подключён `public/css/design-system.css` перед inline `<style>`.
Релиз v5.0.0
2026-03-01

Релиз v5.0.0

Система «Группы» переименована в «Домены» — организационные единицы теперь называются доменами. · Маршрут `admin_groups` → `admin_domains`; навигация, дашборд и все UI-тексты обновлены. · Миграция БД: таблицы `groups`→`domains`, `group_bridges`→`domain_bridges`, `group_members`→`domain_members`; колонки `group_id`→`domain_id`, `group_role`→`domain_role`, `is_global_group`→`is_root_domain`, `group_a_id`→`domain_a_id`, `group_b_id`→`domain_b_id`. · Поддержка MySQL и SQLite: `ALTER TABLE RENAME`, `RENAME COLUMN` / `CHANGE COLUMN` в зависимости от драйвера.
Релиз v5.1.0
2026-03-01

Релиз v5.1.0

Маршрут `dashboard` (файловый проводник) переименован в `skybox` — SkyBox, личное облачное хранилище. · Маршрут `staff` (панель администратора) переименован в `dashboard` — Дашборд. · `views/dashboard.php` → `views/skybox.php`; `views/staff.php` → `views/dashboard.php`; `views/admin.php` → `views/filehub.php`. · `index.php`: маршруты, capability map, case-блоки и все redirect/fallback URL обновлены.
Релиз v5.2.0
2026-03-01

Релиз v5.2.0

FileHub переписан на единый с SkyBox карточный интерфейс (grid/list, sidebar, поиск, breadcrumbs). · Выпадающее меню профиля полностью переработано: чистый список ссылок, компактное переключение профилей, убрана сетка кнопок. · `views/filehub.php` переписан с табличной разметки на `cloud-file-grid`/`cloud-file-card` из SkyBox. · `views/layout.php`: dropdown `.topbar-profile-menu` и модальное окно `#userProfilesModal` заменены новой разметкой с `.tpm-*` и `.upm-*` классами.
Релиз v5.3.0
2026-03-01

Релиз v5.3.0

Поле «Отображаемое имя» разделено на «Имя» и «Фамилия» — два отдельных поля повсюду в системе. · При регистрации теперь обязательно указать имя и фамилию. · Миграция: добавлены колонки `first_name` и `last_name` в таблицу `users`. · Колонка `display_name` сохранена для обратной совместимости — автоматически вычисляется из `first_name + last_name`.
Релиз v5.4.0
2026-03-01

Релиз v5.4.0

Настройка Preloader перенесена из личных настроек пользователя в глобальные настройки администратора (раздел «Дизайн»). · Push-подписки: автоматическая дедупликация устройств — при переподписке с того же устройства старая подписка заменяется. · Preloader: параметры `preloader_mode`, `preloader_compact`, `preloader_show_text` перенесены в таблицу `settings`. · Per-user параметры `ui_preloader_mode`, `ui_preloader_compact`, `ui_preloader_show_text` больше не используются (колонки сохранены для совместимости).
Релиз v5.5.0
2026-03-02

Релиз v5.5.0

Защита от брутфорса: ограничение попыток входа (5 за 15 мин) с автоматической блокировкой по IP+логину. · Минимальная длина пароля — 8 символов (регистрация, смена пароля, создание пользователя). · Security headers: X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, HSTS. · .htaccess deny для директорий `app/` и `storage/` — прямой доступ запрещён.
Релиз v5.6.0
2026-02-28

Релиз v5.6.0

Редактирование профиля: страница переверстана на CSS Grid — блоки «Смена пароля» и «Уведомления» теперь в боковой колонке справа (1fr + 380px). · Политики: галочки для admin и admin_tester разблокированы при редактировании global_admin. · Новые функции: `user_role_rank()`, `user_can_see_password()`, `user_get_password_hint()`, `domain_get_by_code()`, `domain_generate_short_code()`, `domain_regen_code()`. · `domain_create()` генерирует уникальный 3-char код вместо slug-транслитерации.
Релиз v5.7.0
2026-02-28

Релиз v5.7.0

Дашборд: полностью переработанная панель с KPI-виджетами — пользователи, сообщения, файлы, контент, звонки, аудит. · Дашборд: лента последних действий (10 записей) с иконками по типу операции и карточка «Новые пользователи». · Новая функция `dashboard_stats()` в `app/health.php` — агрегированная статистика из 15+ таблиц за один вызов. · Настройки дашборда: `dashboard_widgets_json`, `dashboard_refresh_interval`, `dashboard_show_activity`, `dashboard_compact` в `settings_defaults()`.
Релиз v5.8.0
2026-02-28

Релиз v5.8.0

Настройки: иконки Bootstrap Icons у каждого пункта сайдбара (палитра, щит, шестерёнка, телефон, БД и др.) во цветных плашках. · Настройки: быстрый поиск по всем разделам — поле с debounce-фильтрацией, счётчик совпадений, горячая клавиша Ctrl+K. · CSS: новые классы `.admin-settings-search`, `.admin-settings-side-icon`, `.admin-settings-section-hdr`, `.js-dirty-badge`, `.admin-settings-kbd-hint`. · CSS: анимация `settingsFadeIn` (opacity + translateY), `savebarPulse` для индикации dirty-state.
Релиз v5.8.1
2026-02-28

Релиз v5.8.1

Удаление пользователей: исправлен баг — удалённые пользователи теперь скрываются из основного списка, кнопка «Показать удалённых» для просмотра. · Удаление пользователей: бейдж «удалён» и кнопка «Восстановить» в карточке пользователя. · `users_accounts_with_profiles()` принимает параметр `$includeDeleted` — по умолчанию скрывает `is_deleted=1`. · Новая функция `user_restore()` для восстановления soft-deleted пользователей.
Релиз v5.8.2
2026-02-28

Релиз v5.8.2

Полное удаление аккаунта: администратор может безвозвратно удалить пользователя и все его данные (сообщения, файлы, посты, профили). · Полное удаление аккаунта: кнопка «Полное удаление» в панели управления пользователями с усиленным подтверждением. · Новая функция `user_delete_hard()` — полная очистка всех данных пользователя из 31+ таблиц и файловой системы (аватары, обложки, загруженные файлы). · Ручная очистка таблиц без FK CASCADE: `domain_members`, `short_links`, `boards`, `rtc_*` таблицы; nullify `created_by_user_id` в `domains` / `domain_bridges`.
Релиз v5.8.3
2026-02-28

Релиз v5.8.3

База данных: новая опция «Подключиться без миграции» — позволяет переключить конфиг на существующую БД с данными без переноса и без удаления данных. · Предотвращает потерю данных при повторном подключении к MySQL после обновления сайта (когда конфиг сбрасывается на SQLite). · Параметр `skip_migration` в admin_db POST-обработчике: проверяет подключение, запускает `ensure_schema()` (CREATE IF NOT EXISTS + инкрементальные миграции) и `ensure_mysql_utf8mb4()`, но НЕ вызывает `migrate_database()` / `db_truncate()`. · Разрешена отправка формы при `target === current` в режиме reconnect (для переподключения к той же БД).
Релиз v5.8.4
2026-02-28

Релиз v5.8.4

Доменная изоляция: администратор домена теперь видит в разделе «Пользователи» только пользователей своего домена, а не всех. · Новая политика «Мосты для доменных администраторов» (Настройки → Доступ): не видеть / только просмотр / полный доступ к пользователям мостовых доменов. · `users_accounts_with_profiles()` принимает `?array $filterDomainIds` — SQL фильтрует `domain_id IN (…)`. · Новые хелперы: `is_root_domain_admin()`, `admin_bridged_domain_ids()`, `admin_visible_domain_ids()`, `admin_can_manage_user()`, `admin_can_view_user()`.
Релиз v5.8.5
2026-03-01

Релиз v5.8.5

Дашборд: статистика фильтруется по домену — администратор домена видит метрики только своего домена, а не всего сервиса. · Политики: доменные политики (мосты, корневой админ, домен по умолчанию) перенесены из Настроек на страницу «Политики» для единообразного управления. · Новая функция `dashboard_stats_for_domains(array $domainIds)` в `app/health.php` — статистика, ограниченная набором доменов. · `views/dashboard.php` использует `admin_visible_domain_ids()` для выбора `dashboard_stats()` или `dashboard_stats_for_domains()`.
Релиз v5.8.6
2026-03-01

Релиз v5.8.6

Мессенджер: полная переработка интерфейса в стиле Telegram — боковой список диалогов, панель переписки, адаптивная мобильная раскладка. · Мессенджер: голосовые сообщения, эмодзи-пикер, вложения файлов из облака и устройства. · views/chat.php: 6589 → 2410 строк (−63%), IIFE-архитектура с 23 секциями, 98 функций, 51 слушателей событий. · views/profile.php: 2338 → 1247 строк (−47%), CSS-переменные через .pf-* namespace, Bootstrap 5.3.3 интеграция.
Релиз v5.8.7
2026-03-01

Релиз v5.8.7

Исправлена ошибка FK-ограничения при переключении с SQLite на MySQL: таблица news больше не требует существующего пользователя для системных записей. · news: author_user_id изменён с INT NOT NULL на INT NULL DEFAULT NULL; FK-ограничение fk_news_user удалено. · Миграция Stage 10.21: DROP FOREIGN KEY, MODIFY COLUMN, UPDATE author_user_id = 0 → NULL для существующих MySQL-установок.
Релиз v5.8.8
2026-03-01

Релиз v5.8.8

Исправлена ошибка «Incorrect string value» при переключении на MySQL: эмодзи в новостях и чейнджлоге теперь корректно сохраняются. · ensure_mysql_utf8mb4() вызывается ДО ensure_schema() — SET NAMES utf8mb4 теперь действует до любых INSERT. · Список таблиц в ensure_mysql_utf8mb4 расширен с 21 до 39 (добавлены domains, boards, push_*, short_links, profile_media_items и др.).
Релиз v5.8.9
2026-03-01

Релиз v5.8.9

Профиль: исправлено отображение аватара и обложки (неверное имя поля avatar_file_id → avatar_path). · Мессенджер: сообщения теперь отображаются в цветных облачках (свои — акцентные, чужие — серые). · profile.php: avatar_file_id → avatar_path, cover_file_id → cover_path (6 мест). · chat.php: добавлены CSS-классы msg-own / msg-other на элементы сообщений (PHP + JS).
Релиз v5.8.10
2026-03-01

Релиз v5.8.10

Мессенджер: окно чата теперь корректно помещается в экран на любом устройстве (ПК и мобильные). · layout.php: content-canvas-mode → flex column с height:100dvh для корректного заполнения viewport. · chat.php: messenger-shell заменён calc(100dvh-140px) на flex:1 + min-height:0 — автоматическое заполнение оставшегося пространства.
Релиз v5.8.11
2026-03-01

Релиз v5.8.11

Профиль: кнопка «Написать» теперь открывает диалог с пользователем, а не пустой мессенджер. · Мессенджер: заголовок «Мессенджер» скрывается когда активен диалог (и на ПК, и на мобильных) — больше места для сообщений. · profile.php: ссылка «Написать» peer= → user_id= (матчит параметр в chat_start роуте). · chat.php: .chat-page-head скрывается на всех брейкпоинтах когда есть активный чат (display:none!important).
Релиз v5.8.12
2026-03-01

Релиз v5.8.12

Мессенджер: заголовок скрыт на мобильных — диалоги занимают весь экран. · Мессенджер: кнопка действий (⋯) теперь внутри облачка сообщения, а не за его пределами. · chat.php: .chat-page-head display:none!important на @media ≤991.98px (скрыт всегда на мобильных). · chat.php: .msg-actions-btn перенесён внутрь bubble (top:.25rem right:.25rem вместо left/right:-.8rem).
Релиз v5.8.13
2026-03-01

Релиз v5.8.13

Мессенджер: панель ввода теперь всегда видна на экране, страница не прокручивается. · layout.php: html/body/app-shell получают height:100dvh + overflow:hidden через :has(.content-canvas-mode). · layout.php: sidebar ограничен 100dvh с overflow-y:auto в canvas-режиме.
Релиз v5.8.14
2026-03-02

Релиз v5.8.14

Мессенджер: исправлены read receipts — отметка «прочитано» снова обновляется без перезагрузки страницы. · Мессенджер: исправлен экран звонка — окно звонка теперь корректно открывается и закрывается. · index.php: добавлен JSON endpoint `chat_mark_read` (CSRF + проверка участника диалога). · index.php: добавлен route `chat_file` для `admin_chat_view` с проверкой прав `admin/users`.
Релиз v5.8.15
2026-03-02

Релиз v5.8.15

Мессенджер: панель ввода закреплена внизу экрана на ПК и мобильных, без провала по высоте. · Мессенджер: кнопки отправки/микрофона снова работают по ожидаемой логике (пусто — микрофон, есть текст — отправка). · views/chat.php: выровнена мобильная/desktop вёрстка compose-зоны, исправлены conditionals рендера send/mic. · views/chat.php: интегрирован Picmo (`public/vendor/picmo/*`) вместо тяжёлого рантайма старого picker.
Релиз v5.8.16
2026-03-02

Релиз v5.8.16

Звонки в мессенджере: исправлен сценарий «Связь: ожидание» без подключения — звонки снова устанавливаются. · Мессенджер на телефоне: устранён правый зазор, чат и зона ввода снова растягиваются на всю ширину экрана. · index.php: call/rtc роуты добавлены в whitelist messenger-mode (`call_start/call_poll/call_signal_send/...`) — больше нет редиректа в HTML для JSON API. · app/chat.php: `call_is_participant()` получил fallback на `caller/callee` для legacy/частично мигрированных записей `rtc_call_members`.
Релиз v5.8.17
2026-03-02

Релиз v5.8.17

Мобильный чат: устранён нижний «подбородок» и восстановлена корректная полноэкранная геометрия в mobile/PWA. · Мессенджер: новые сообщения снова появляются строго снизу, история подгружается только вверх. · views/chat.php: mobile fullscreen переведён на единый safe-area (компенсация только в composer), `body.chat-mobile-fullscreen` больше не дублирует нижний inset. · views/chat.php: `chatJumpBottom` вынесен из потока сообщений; `appendMessages()` всегда добавляет в конец, `prependMessages()` — только в начало.
Релиз v5.8.18
2026-03-02

Релиз v5.8.18

Обновления больше не переключают рабочий сайт с MySQL на SQLite после распаковки релиза. · Первичный запуск корректно открывает установщик, если реальная конфигурация БД отсутствует. · scripts/make-release.ps1: исключено принудительное добавление `storage/config.php` в релиз (опционально только через `-IncludeRuntimeConfig`). · app/core.php: `is_installed()` переведён на валидацию конфигурации (`mysql` поля / наличие sqlite-файла), а не на простой факт существования `storage/config.php`.
Релиз v5.8.19
2026-03-02

Релиз v5.8.19

Мобильный мессенджер: исправлена геометрия fullscreen-чата на телефоне — убран нижний «подбородок», зона ввода прижата к низу и корректно следует за клавиатурой. · Мессенджер: устранены повторяющиеся day-divider при отправке новых сообщений в текущий день. · views/chat.php: mobile fullscreen переведён на `inset + --chat-vv-bottom` (keyboard gap) вместо `top/height`, убраны лишние `100vw` ограничения и правый зазор. · views/chat.php: day-divider логика нормализована через `normalizeDayToken()` + `lastRenderedDayToken()`; `appendMessages()` больше не создаёт лишние разделители дат.
Релиз v5.8.20
2026-03-02

Релиз v5.8.20

Исправлен критичный сбой `CSRF token mismatch` после регистрации/авторизации в мобильных webview (включая Telegram/iOS). · Формы входа/регистрации/спец-регистрации и инсталлятора стали устойчивее к возврату из кеша страницы. · app/bootstrap.php: CSRF переведён на rolling-пул токенов (`csrf_tokens`) + восстановление из cookie при потере session. · app/bootstrap.php: добавлен fallback по нескольким именам CSRF-cookie (`__Host-*` и non-host) для mixed HTTPS/proxy окружений.
Релиз v5.8.21
2026-03-02

Релиз v5.8.21

Версия на сайте теперь корректно обновляется после деплоя релиза на Linux-серверы. · Тех. релиз и системная новость для текущей версии автоматически появляются в интерфейсе без ручного добавления. · scripts/make-release.ps1: сборка ZIP переписана на явное добавление файлов с POSIX-путями (`/`) вместо Windows-разделителей (`\`). · app/news.php: добавлена `news_sync_builtin_releases_for_version(APP_VERSION)` — дозапись встроенных `system/changelog` записей для текущей версии в существующие БД.
Релиз v5.8.22
2026-03-02

Релиз v5.8.22

Исправлена диагностика обновлений: теперь легко проверить, какая версия реально работает на сервере. · Уточнён и зафиксирован безопасный деплой-процесс для production, чтобы версия в подвале и техрелизы всегда обновлялись. · index.php и install.php: добавлен HTTP-заголовок `X-TSOY-Version` с текущим `APP_VERSION` для быстрой проверки фактической версии после деплоя. · README.md: добавлены инструкции проверки версии через `curl -I` и очистки артефактов старых Windows-архивов (`*\\*`) на Linux.
Релиз v5.8.23
2026-03-02

Релиз v5.8.23

Стабилизирована работа проекта за reverse-proxy/CDN: HTTPS-ссылки и cookie теперь формируются корректно в проксированных окружениях. · Снижён риск проблем с логином/CSRF/выходом из-за неверного определения схемы запроса. · app/core.php: добавлены `request_is_https()` и `request_scheme()` с поддержкой `HTTPS`, `X-Forwarded-Proto`, `X-Forwarded-SSL`, `Front-End-Https`. · app/bootstrap.php, app/auth.php, app/utils.php: secure-cookie логика переведена на единый helper (session/theme/csrf/guest token).
Релиз v5.8.24
2026-03-02

Релиз v5.8.24

Исправлен критичный фатал после деплоя: сайт снова открывается штатно (без `Call to undefined function request_is_https()`). · app/bootstrap.php: загрузка `app/core.php` перенесена в начало файла, до первого вызова `request_is_https()`. · Исправлен порядок инициализации bootstrap для совместимости с production-окружениями при `require_once app/bootstrap.php` из `index.php`.
Релиз v5.8.25
2026-03-02

Релиз v5.8.25

Админка БД: добавлен анализ потенциально неиспользуемых колонок прямо в разделе `/index.php?r=admin_db`. · Удаление колонок переведено в безопасный режим: только после явного подтверждения и только для проверенных случаев. · app/admin_maintenance.php: добавлены `admin_db_unused_columns_report()` и `admin_db_drop_column()` с эвристическим сканом кода проекта. · Проверки удаления: защита критичных имён (`id`, `*_id`, `*_at`), блокировка при индексах/PK/FK и повторная проверка использования в коде.
Релиз v5.8.26
2026-03-02

Релиз v5.8.26

Админка БД: упрощён процесс массового удаления ненужных таблиц. · Теперь можно одним действием удалить сразу несколько выбранных таблиц с единым подтверждением. · app/admin_maintenance.php: добавлены `admin_db_unused_tables_report()` и `admin_db_drop_tables_batch()`. · Пакетное удаление защищено проверками: миграционное управление таблицей, сигналы использования в коде и внешние ключи.
Система v2.3.6
2026-02-22

Управление жизненным циклом комнат звонков

- Создатель может завершать комнату звонка. - Админ может закрывать и удалять публичные комнаты.
Система v2.3.8
2026-02-22

Оптимизация старта интерфейса

- Перенесены второстепенные polling-задачи в idle-фазу. - Снижен пиковый отклик главного потока при открытии страниц.
Система v2.3.9
2026-02-22

Hotfix 2.3.9: стабилизация текста

- Проведена чистка поврежденных строк интерфейса. - Обновлены сообщения и статусы в основных маршрутах.
Система v2.3.10
2026-02-22

Hotfix 2.3.10: исправление кодировки

- Удалены поврежденные текстовые строки из ключевых экранов. - Исправлены уведомления профиля, чатов и панели. - Подготовлена база для финальной стабилизации.
Система v2.3.11
2026-02-22

Hotfix 2.3.11: полная правка кодировки

- Восстановлен index.php из стабильной базы без поврежденных строк. - Исправлены системные сообщения и заголовки в маршрутах и админ-разделах. - Очищены тексты новостей: теперь только нормальная кириллица.
Система v2.3.12
2026-02-22

Hotfix 2.3.12: исправлен экран звонка по ссылке

- Восстановлены тексты и элементы интерфейса на странице /index.php?r=call_room. - Исправлены поврежденные символы в views/call_room.php и views/admin.php. - Добавлено закрытие комнаты создателем/админом прямо из экрана звонка.
Система v2.3.13
2026-02-22

Policy 2.3.13: UTF-8 без BOM всегда

- В проект добавлено обязательное правило кодировки: только UTF-8 without BOM. - Добавлен .editorconfig с фиксированным charset=utf-8. - В релизный процесс встроена автоматическая проверка scripts/check-encoding.ps1.
Система v2.3.14
2026-02-22

Call Quality 2.3.14: стабильнее звук и соединение

- В звонках убраны жестко прошитые STUN-серверы: теперь ICE/STUN/TURN задаются в админ-настройках. - Добавлены параметры качества аудио: echo/noise suppression, AGC, channel count, sample rate, max bitrate. - Включено автоматическое ICE-переподключение при `d…
Система v2.3.15
2026-02-22

Call Stability 2.3.15: быстрый отклик без «убийства» сервера

- Для звонков внедрён адаптивный polling: один активный запрос за цикл, без наложения и штормов. - Добавлены таймауты, backoff при ошибках сети и fast-poll после сигналов/действий. - Алгоритм применён в личных звонках, комнатах по ссылке и админ-мониторинге.
Система v2.3.16
2026-02-22

Admin DB Tools 2.3.16: импорт/экспорт БД и безопасная очистка

- В разделе администрирования БД добавлены экспорт базы в JSON и обратный импорт JSON-дампа проекта. - Добавлены операции обслуживания: очистка RTC-сигналов/комнат, очистка старого аудита, удаление soft-deleted файлов и файлов-сирот в uploads. - Импорт выполн…
Система v2.3.17
2026-02-22

Hotfix 2.3.17: emoji снова отправляются в мессенджере (MySQL utf8mb4)

- Исправлена критическая ошибка `Incorrect string value` при отправке смайликов/emoji в сообщениях. - Для MySQL-подключения принудительно включён utf8mb4 (`SET NAMES` / `SET CHARACTER SET`). - Добавлена автоматическая проверка и конвертация старых таблиц в ut…
Система v2.3.18
2026-02-22

Admin DB 2.3.18: диагностика utf8mb4 / emoji для MySQL

- В разделе администрирования БД добавлен отчёт по кодировке MySQL для контроля поддержки emoji. - Отчёт показывает default charset/collation базы, количество таблиц проекта и список таблиц/колонок с не-utf8mb4 кодировкой (если есть). - Это диагностический ре…
Система v2.3.19
2026-02-22

Messenger Emoji 2.3.19: полноценный picker + недавние + клоун 🤡

- Блок смайликов в мессенджере переработан: добавлены быстрые emoji, секция недавних и более удобное управление. - Подключена библиотека emoji picker с поиском и категориями (локально, без зависимости от CDN в рантайме). - В быстрый набор добавлен клоун 🤡; вы…
Система v2.3.20
2026-02-22

Messenger Hotfix 2.3.20: сообщения видны сразу в открытом чате

- Исправлена проблема, когда уведомление о новом сообщении приходило, но в открытом чате сообщение не отображалось до повторного входа в диалог. - Добавлен инкрементальный polling новых сообщений и дорисовка сообщений прямо в ленте без перезагрузки страницы. …
Система v2.3.21
2026-02-22

Messenger Hotfix 2.3.21: список диалогов обновляется без перезахода

- Исправлена проблема, когда новые сообщения были видны по уведомлениям, но список диалогов (превью/непрочитанные) обновлялся только после повторного открытия чата. - Добавлен polling списка диалогов с компактной JSON-выдачей и обновлением только изменившихся…
Система v2.3.22
2026-02-22

Messenger UI 2.3.22: PWA-интерфейс ближе к Telegram/WhatsApp

- Переработан интерфейс мессенджера: список диалогов стал удобнее (аватары, время, превью, unread badge), а окно чата выглядит аккуратнее и быстрее читается. - Обновлены шапка диалога, лента сообщений и поле ввода в стиле PWA-мессенджера: удобнее на ПК и комп…
Система v2.3.23
2026-02-22

Hotfix 2.3.23: стабильная авторизация (PWA/мобильные сессии)

- Исправлена проблема, когда авторизация слетала и приходилось часто заново входить в аккаунт. - Для PHP-сессий настроены стабильные cookie-параметры (30 дней, httponly, SameSite=Lax, корректный secure при HTTPS). - Добавлено скользящее продление session cook…
Система v2.3.24
2026-02-22

Messenger UX 2.3.24: фиксированная форма + lazy history x10 + glass mobile

- На ПК исправлена главная проблема длинных диалогов: форма ввода сообщений закреплена поверх ленты и всегда видна, больше не нужно листать страницу до самого низа. - История сообщений теперь догружается по 10 сообщений при прокрутке вверх (lazy loading), а н…
Система v2.3.25
2026-02-22

Messenger Hotfix 2.3.25: последние сообщения + форма ввода видны сразу

- Исправлен баг на ПК, из-за которого при открытии длинного диалога форма ввода оказывалась внизу страницы и до неё приходилось прокручивать весь сайт. - Теперь по умолчанию открываются последние сообщения, а форма ввода закреплена поверх ленты и всегда видна…
Система v2.3.26
2026-02-22

Notifications Center 2.3.26: быстрые настройки + проверка доставки + mobile chat keyboard fix

- Добавлен отдельный центр уведомлений: быстрые переключатели Push/браузерных уведомлений и звука, статус разрешений, Service Worker и режима PWA. - Добавлена кнопка проверки уведомления на устройство и улучшена логика доставки через единый runtime helper (Se…
Система v2.3.27
2026-02-22

Profile & Social 2.3.27: about-страница, лайки постов, загрузка файлов с устройства

- Добавлена публичная страница `/about` с описанием проекта и карточками людей, внёсших вклад (с фото). - В `Профиль → Редактирование` (для администратора) появился блок управления страницей «О проекте»: текст, авторы, роли, заметки и загрузка фото участников…
Система v2.3.28
2026-02-22

Hotfix 2.3.28: кириллица в центре уведомлений

- Исправлено битое flash-сообщение после сохранения настроек в центре уведомлений. - Причина: в `index.php` оставалась строка в mojibake-виде; заменена на нормальную кириллицу (`Настройки уведомлений сохранены.`).
Система v2.3.29
2026-02-22

Hotfix 2.3.29: полная зачистка кракозябр в index.php + усиленный encoding-check

- Исправлены оставшиеся битые строки в `index.php` (flash-сообщения и заголовки разделов), включая примеры из `Центра уведомлений` и `Админ → База данных`. - Проведён полный проход по рабочим файлам проекта: активный mojibake был обнаружен в `index.php` и уст…
Система v3.0.0
2026-02-22

TSOY.CLOUD 3.0: большой апдейт профилей и мультипрофилей

- Продолжена большая переработка профиля: мобильная вёрстка блоков `Друзья / Страницы / Медиа`, карточки постов и модалка комментариев стали аккуратнее и ближе к новому шаблону. - `Фото / Видео / Аудио` оформлены как отдельные ручные галереи профиля: пользова…
Система v3.1.0
2026-02-22

TSOY.CLOUD 3.1.0: новый конструктор страниц + единый файловый проводник для выбора медиа

- Переработан конструктор пользовательских страниц: теперь можно собирать не только галереи, но и статьи, обучающие гайды, плееры с роликами и блоки ссылок. - Убрано ручное указание ID файлов в конструкторе страниц: выбор изображений и видео теперь идёт через…
Система v3.2.0
2026-02-22

TSOY.CLOUD 3.2.0: большой PWA-апдейт (уведомления, офлайн-кеш, desktop/mobile режим)

- Усилен PWA-режим на ПК и смартфонах: обновлён manifest (ярлыки быстрых действий, launch-поведение, совместимость desktop/mobile). - Улучшена работа уведомлений и звонков: клик по уведомлению теперь надёжнее открывает нужный раздел/чат, включая fallback-увед…
Система v3.3.0
2026-02-22

TSOY.CLOUD 3.3.0: единая система оформления + компактный мессенджер

- Проведена большая унификация визуального стиля проекта: карточки, навигация, формы и модалки стали более согласованными. - В `Настройки → Оформление` добавлены новые настройки дизайна: шрифт, масштаб текста, ширина контента, контраст поверхностей и отдельна…
Система v3.3.1
2026-02-22

TSOY.CLOUD 3.3.1: мессенджер (единый проводник вложений + fix меню сообщений) и улучшенная связка с “Оформлением”

- В мессенджере выбор вложений из облака переведён на единый файловый проводник (как в профиле и конструкторе страниц): папки, поиск, фильтры, превью и нормальный mobile UX. - Исправлено перекрытие меню редактирования/удаления сообщения: dropdown больше не пр…
Система v3.3.2
2026-02-22

TSOY.CLOUD 3.3.2: центр уведомлений — сначала уведомления, потом настройки

- В центре уведомлений изменён порядок блоков: сначала показывается блок «Все уведомления» (события/сводка), а затем блок настроек уведомлений. - Обновлён заголовок верхнего блока для более понятной логики экрана.
Система v3.3.3
2026-02-22

TSOY.CLOUD 3.3.3: контакты и мессенджер теперь в одном визуальном стиле

- Страница «Контакты» приведена к визуальному стилю мессенджера: одинаковые поверхности, контуры, мягкий градиент шапки и тип карточек. - Стили контактов теперь также реагируют на настройки `Оформление` (`Контраст поверхностей` и `Плотность`), как и мессендже…
Система v3.3.4
2026-02-22

TSOY.CLOUD 3.3.4: единый проводник в профиле и нормальное админ-хранилище с папками

- Проводник в профиле при выборе обложки и вложений поста переведён на единое ядро (как в мессенджере): больше нет разрозненных списков/селекторов. - В модалке вложений поста объединены блоки «Из облака», «С устройства» и «Ссылки», чтобы вложения с телефона/П…
Система v3.3.5
2026-02-22

TSOY.CLOUD 3.3.5: профиль (двойные проводники/лишние кнопки) и mobile-fix клипсы в мессенджере

- В профиле устранён двойной проводник при выборе обложки поста: теперь открывается только новый единый проводник. - Исправлена ошибка разметки, из-за которой у опубликованных постов могли появляться лишние кнопки «Сохранить / Отмена». - Копирование ссылок на…
Система v3.3.6
2026-02-22

TSOY.CLOUD 3.3.6: в конструкторе страниц появился блок «Таблица»

- В разделе «Мои страницы» добавлен новый блок `Таблица` для конструкторов страниц. - Можно редактировать ячейки прямо в сетке и управлять структурой: добавлять/удалять строки и столбцы. - Есть переключатель «первая строка — заголовки» для красивого отображен…
Система v3.4.0
2026-02-23

TSOY.CLOUD 3.4.0: полноценный Web Push (закрытый PWA/сайт) + индикатор качества звонков

- Реализованы настоящие Web Push-уведомления: сообщения, звонки, лайки, комментарии и добавления в друзья теперь могут приходить на устройство даже когда сайт/PWA закрыт. - Подписка на push синхронизируется с настройкой уведомлений пользователя и Service Work…
Система v3.4.1
2026-02-23

TSOY.CLOUD 3.4.1: mobile fix мессенджера (вложения) и центрирование меню профиля

- Исправлено открытие окна вложений в мессенджере на телефонах: attach-модалка и единый проводник теперь открываются поверх fullscreen-чата. - Для клипсы (`📎`) усилена обработка tap/click на мобильных устройствах, чтобы тапы не терялись в сложной fixed-верстк…
Система v3.4.2
2026-02-23

TSOY.CLOUD 3.4.2: hotfix навигации по уведомлениям (deep-link в источник)

- Исправлен переход по клику на уведомления: теперь уведомление корректно открывает именно источник события (чат, календарь, профиль/пост и т.д.). - Починена обработка ссылок в браузере и PWA для установок проекта в подпапке сайта (deep-link резолвится относи…
Система v3.4.3
2026-02-23

TSOY.CLOUD 3.4.3: информативные уведомления (сообщения + действия для звонка)

- Уведомления о сообщениях теперь показывают отправителя и фрагмент текста сообщения, а клик ведёт сразу в нужный диалог. - Для входящих звонков в уведомления добавлены действия «Принять» и «Отклонить» (если устройство/браузер поддерживает actions в уведомлен…
Система v3.4.4
2026-02-23

TSOY.CLOUD 3.4.4: настройки уведомлений в дашборде + улучшенный PWA update flow

- В `Настройки` добавлен новый раздел для уведомлений: цвет, оформление, рингтон уведомлений и отдельный рингтон входящего звонка. - Добавлен раздел `PWA и обновления`: политика обновления (`manual/notify/auto`), интервал проверки Service Worker, автозапрос p…
Система v3.4.5
2026-02-23

TSOY.CLOUD 3.4.5: свои рингтоны уведомлений и звонка

- В новом блоке настроек уведомлений теперь можно загрузить собственный рингтон для обычных уведомлений и отдельный рингтон для входящего звонка. - Добавлено превью/прослушивание загруженных рингтонов прямо в админке и удаление кастомного файла по чекбоксу. -…
Система v3.5.0
2026-02-23

TSOY.CLOUD 3.5.0: stability-сборка (cleanup, техдолг, аккуратные оптимизации)

- Проведён стабилизационный проход по проекту: убран техмусор, упрощены мелкие дубли в layout/head и улучшена поддерживаемость кода. - Для кастомных рингтонов уведомлений/звонков усилена надёжность: удаление старых файлов при замене, безопасная очистка только…
Система v3.5.1
2026-02-23

TSOY.CLOUD 3.5.1: hotfix рингтонов на телефонах

- Исправлено воспроизведение кастомных рингтонов уведомлений на телефонах: теперь ошибка `audio.play()` корректно отслеживается и при необходимости включается fallback-звук. - Кастомные рингтоны (уведомления/звонок) теперь резолвятся относительно пути приложе…
Система v3.5.2
2026-02-23

TSOY.CLOUD 3.5.2: notifications reliability phase 1 (retry worker + диагностика)

- Усилена надёжность доставки wake-push: в серверной очереди уведомлений появились состояния отправки, повторы с backoff и защита от зависших обработок. - В `Настройки -> PWA и обновления` добавлена диагностика push-очереди: недоставленные элементы, активные …
Система v3.5.3
2026-02-23

TSOY.CLOUD 3.5.3: notifications reliability phase 2 (Web Push payload + fallback)

- Сервер теперь отправляет полноценный Web Push payload (тело уведомления) для поддерживаемых push-подписок, поэтому уведомления стабильнее приходят даже когда сайт/PWA закрыт. - Сохранён совместимый fallback `wake-push + push_pull`, если payload не поддержив…
Система v3.5.4
2026-02-23

TSOY.CLOUD 3.5.4: диагностика push-устройств в админке + тест push по подписке

- В `Настройки -> PWA и обновления` добавлен список push-устройств/подписок: пользователь, устройство, режим (`browser/standalone`), encoding, последний успех и ошибки. - Для каждой подписки появилась кнопка `Тест push`, чтобы проверить доставку уведомления н…
Система v3.5.5
2026-02-23

TSOY.CLOUD 3.5.5: фильтры и управление push-подписками в админке

- В диагностике push-устройств появились фильтры: поиск по пользователю/устройству/endpoint, `active/inactive` и `только с ошибками`. - Для каждой push-подписки доступны действия `Тест push`, `Отключить/Включить` и `Удалить` прямо в таблице. - Управление подп…
Система v3.5.6
2026-02-23

TSOY.CLOUD 3.5.6: бренд уведомлений из настроек + статус последнего push-теста

- Заголовок уведомлений теперь берётся из настроек сайта (брендинг), а не остаётся захардкоженным как `TSOY.CLOUD`. - В диагностике push-устройств добавлена колонка `Последний тест`: время, `OK/Fail`, режим `payload/wake`, HTTP-код и текст ошибки. - Тест push…
Система v3.5.7
2026-02-23

TSOY.CLOUD 3.5.7: статистика реальной доставки push + бренд уведомлений из настроек

- В диагностике push-устройств появилась статистика реальных доставок по подписке: `payload`, `wake`, `wake fallback`, `errors` (накопительно, с последнего сброса). - Добавлены кнопки сброса статистики доставки push: глобально по всем подпискам и отдельно по …
Система v3.5.8
2026-02-23

TSOY.CLOUD 3.5.8: hotfix названия уведомлений (бренд из настроек)

- Исправлен приоритет названия уведомлений: теперь сначала используется `Название в шапке`, затем `Название сайта`. - Починен fallback тестового уведомления в центре уведомлений: больше нет захардкоженного `TSOY.CLOUD`. - Серверные push-уведомления и клиентск…
Система v3.5.10
2026-02-23

TSOY.CLOUD 3.5.10: сводка + мини-график доставки push (payload/fallback/error)

- В диагностике push добавлена агрегированная сводка по всем подпискам: `payload success rate`, `fallback rate`, `error rate` и общее число попыток. - Добавлен мини-график по дням (14 дней): stacked bars `payload / wake / errors`, где высота столбца = объём п…
Система v3.5.11
2026-02-23

TSOY.CLOUD 3.5.11: админ-настройки разбиты на понятные разделы

- Страница `Настройки` получила быстрый навигатор по разделам (якоря): теперь можно сразу перейти к брендингу, оформлению, PWA/push, WebRTC и другим блокам. - Добавлена логическая группировка секций (`Основные параметры`, `Дизайн и уведомления`, `Функции, зво…
Система v3.5.12
2026-02-23

TSOY.CLOUD 3.5.12: hotfix навигации по разделам настроек

- Исправлены кнопки блока «Разделы настроек»: переходы теперь корректно ведут к нужным секциям страницы `Настройки`, а не в корень сайта. - Убран sticky-режим навигационного блока, из-за которого он перекрывал интерфейс при прокрутке.
Система v3.5.13
2026-02-23

TSOY.CLOUD 3.5.13: Android-style настройки (меню слева, раздел справа)

- Страница `Настройки` переделана в режим с боковым меню разделов: слева список категорий, справа открывается только выбранный раздел. - Переключение секций происходит без переходов по странице и без перекрытия интерфейса навигационным блоком. - Добавлена сов…
Система v3.5.14
2026-02-23

TSOY.CLOUD 3.5.14: выбор часового пояса по Гринвичу в настройках системы

- В разделе `Система` добавлен выпадающий список выбора часового пояса по Гринвичу (`GMT/UTC`) с готовыми смещениями. - Выбор смещения автоматически подставляет корректный timezone ID в поле `Часовой пояс`, чтобы настройка сохранялась без ручного ввода. - Пол…
Система v3.5.15
2026-02-23

TSOY.CLOUD 3.5.15: role-aware настройки для всех + Android-style меню разделов

- В главное меню добавлен пункт `Настройки` для всех авторизованных пользователей; экран настроек стал role-aware (пользователь/модератор, админ, admin_tester, global_admin). - Настройки переведены в Android-style режим: слева список разделов, справа выбранны…
Система v3.5.16
2026-02-23

TSOY.CLOUD 3.5.16: админ-настройки разнесены по отдельным страницам

- Админские настройки физически разнесены по отдельным страницам (`Брендинг`, `Доступ и лимиты`, `Система`, `Оформление`, `PWA и push`, `Звонки/диагностика`, `База данных`) при сохранении единого бокового меню. - Переходы в меню теперь открывают соответствующ…
Система v3.5.17
2026-02-23

TSOY.CLOUD 3.5.17: hotfix вёрстки страницы настроек (desktop/mobile)

- Исправлен регресс после перевода меню настроек на ссылки: пункты бокового меню снова отображаются как полноценные кнопки без подчёркиваний и на всю ширину колонки. - Видимый раздел настроек в правой части теперь занимает всю доступную ширину (исправлен конф…
Система v3.5.18
2026-02-23

TSOY.CLOUD 3.5.18: hotfix блока БД и нижней панели сохранения в настройках

- В разделе `База данных` на странице `Настройки` убрана лишняя горизонтальная линия перед карточкой блока. - Нижняя панель сохранения (`Сохраняются все изменённые поля...`) теперь использует theme-aware цвета и остаётся читаемой в светлой/тёмной теме. - Испр…
Система v3.6.0
2026-02-23

TSOY.CLOUD 3.6.0: начало рефакторинга связки Профиль / Контакты / Мессенджер

- На страницах `Профиль`, `Контакты` и `Мессенджер` добавлен единый блок `Social Hub` с переключателем разделов и описанием назначения каждого экрана. - Зафиксированы роли модулей: `Профиль` = публичная страница и контент, `Контакты` = каталог и управление св…
Система v3.6.1
2026-02-23

TSOY.CLOUD 3.6.1: следующий шаг по связке Контакты/Мессенджер + UX-фиксы настроек

- В мессенджере блок `Быстрый старт` теперь использует только ваши контакты; полный каталог пользователей и управление связями оставлены в разделе `Контакты`. - В настройках исправлено выравнивание блока `База данных` относительно бокового меню (карточка боль…
Система v3.6.2
2026-02-23

TSOY.CLOUD 3.6.2: убран лишний Social Hub, мессенджер закреплён за диалогами

- Убран лишний UI-блок `Social Hub` с экранов `Профиль`, `Контакты` и `Мессенджер`: переключение между разделами остаётся в основном меню, интерфейс стал компактнее. - В `Мессенджере` оставлены только активные диалоги и сам чат; новые диалоги создаются через …
Система v3.6.3
2026-02-23

TSOY.CLOUD 3.6.3: контакты = старт общения, мессенджер = только диалоги

- На странице `Контакты` у карточек пользователей добавлены явные действия `Написать` и `Позвонить`. - `Мессенджер` очищен от каталоговых элементов: в боковой панели оставлена только история активных диалогов и сам чат. - Переходы через `chat_start` теперь ко…
Система v3.6.4
2026-02-23

TSOY.CLOUD 3.6.4: визуальный полиш мессенджера (в стиле Контактов) без риска вернуть подбородок

- Обновлены список диалогов, шапка активного диалога и composer мессенджера: карточки, границы, кнопки и типографика приведены к стилю раздела `Контакты`. - Улучшены состояния hover/active у диалогов, читаемость превью сообщений и кнопок в шапке диалога. - Из…
Система v3.6.5
2026-02-23

TSOY.CLOUD 3.6.5: второй полиш-проход мессенджера (диалоги, шапка, composer, плотность)

- Доработаны карточки диалогов, шапка активного диалога и composer мессенджера: кнопки, поверхности, состояния hover/active и типографика стали более цельными. - В шапке списка диалогов добавлена компактная CTA-кнопка `Контакты`, а пустое состояние стало поле…
Система v3.6.6
2026-02-23

TSOY.CLOUD 3.6.6: hotfix iPhone/PWA бренда уведомлений (строка from ...)

- Исправлен бренд iPhone/PWA уведомлений: системная строка `from ...` теперь берёт имя из настроек (`Название в шапке` → `Название сайта`), а не из старого `TSOY.CLOUD`. - Добавлен динамический route `manifest`, чтобы Web App Manifest подстраивался под бренди…
Система v3.6.7
2026-02-23

TSOY.CLOUD 3.6.7: hotfix mobile-overflow окна Диалоги в мессенджере

- Исправлен небольшой выезд окна `Диалоги` за экран на телефонах (в т.ч. iPhone): список диалогов теперь укладывается в ширину viewport. - Причина была в mobile-overflow от Bootstrap `row g-3` (отрицательные margins в canvas-режиме чата). - Фикс сделан только…
Система v3.6.8
2026-02-23

TSOY.CLOUD 3.6.8: ускорена отправка сообщений в мессенджере (без паузы от push)

- Исправлена задержка при отправке сообщений в мессенджере (ощущение паузы 2–3 секунды после нажатия `Отправить`). - Причина была в синхронной отправке Web Push прямо внутри `chat_send_async`: push мог тормозить HTTP-ответ чату. - Теперь сообщение сохраняется…
Система v3.6.9
2026-02-23

TSOY.CLOUD 3.6.9: фундамент для больших чатов (миллионы сообщений) без нагрузки на сервер

- Подготовлена серверная оптимизация чата для больших историй переписки: список диалогов и polling работают легче без изменения интерфейса. - Добавлены денормализованные unread-счётчики в `conversations` (по каждому участнику), чтобы не считать `COUNT(*)` unr…
Система v3.6.10
2026-02-23

TSOY.CLOUD 3.6.10: иконки действий в Контактах (конверт/трубка/корзина)

- На странице `Контакты` действия в карточках (`Написать`, `Позвонить`, `Удалить`) заменены на компактные иконки: конверт, трубка и корзина. - Интерфейс стал чище и плотнее, особенно в каталоге пользователей и в блоке `Мои контакты`. - Сохранены `title` и `ar…
Система v3.6.11
2026-02-23

TSOY.CLOUD 3.6.11: доведён UI действий в Контактах (+ строка Каталог/Найти)

- Кнопка `В контакты` в каталоге пользователей переведена на иконку `человек+`, чтобы все действия в карточках (`написать`, `позвонить`, `удалить`, `добавить`) были в одном стиле. - Заголовок `Каталог пользователей` и кнопка `Найти` теперь собраны в одну стро…
Система v3.6.12
2026-02-23

TSOY.CLOUD 3.6.12: системные файлы вынесены в отдельную папку public/system

- Логотип, favicon, кастомные звуки уведомлений/звонка и служебные ассеты спец-регистрации теперь хранятся в единой системной папке `public/system/...`. - Добавлен общий helper для системных файлов: безопасное сохранение upload-ов, удаление только из разрешён…
Система v3.6.13
2026-02-23

TSOY.CLOUD 3.6.13: единый раздел «Внешний вид», готовые профили оформления и кириллические шрифты

- В настройках объединён дизайн-блок: вместо раздельных пунктов `Внешний вид профиля` и `Внешний вид сайта` теперь один раздел `Внешний вид` с подпунктами (профиль / сайт / стиль уведомлений). - Для глобального оформления сайта добавлены готовые профили внешн…
Система v3.6.14
2026-02-23

TSOY.CLOUD 3.6.14: UX-фикс профиля (кнопка «Написать» и удаление вложений)

- На своей карточке профиля больше не показывается кнопка `Написать` — она остаётся только при просмотре чужого профиля. - У вложений постов в обычном режиме просмотра убраны кнопки `Удалить`; удаление осталось только в режиме редактирования поста. - Исправле…
Система v3.6.15
2026-02-23

TSOY.CLOUD 3.6.15: персональные режимы меню и публичного профиля для гостей

- В `Настройки -> Внешний вид` добавлены персональные режимы основного бокового меню: `показывать всегда`, `скрывать всегда`, `по кнопке`. - Для публичной страницы профиля (`/user/<login>`) добавлена личная настройка для гостей: показывать боковое меню, скрыв…
Система v3.6.16
2026-02-23

TSOY.CLOUD 3.6.16: контекстное меню сообщений (ПК/мобилка) + цитаты и реакции

- В мессенджере по правому клику мыши и по удержанию на телефоне открывается меню действий сообщения: `Изменить`, `Удалить`, `Цитировать`, `Реакция`. - Добавлены emoji-реакции к сообщениям с отображением количества; свою реакцию можно переключать повторным на…
Система v3.6.17
2026-02-23

TSOY.CLOUD 3.6.17: галочки прочтения сообщений в мессенджере

- У ваших сообщений в мессенджере появилась компактная галочка статуса: сообщение прочитано или ещё нет. - Статус прочтения обновляется в открытом диалоге автоматически через обычный polling, без перезагрузки страницы. - Изменение не затрагивает мобильную гео…
Система v3.6.18
2026-02-23

TSOY.CLOUD 3.6.18: «будильник» по сообщению в контекстном меню мессенджера

- В контекстное меню сообщения добавлен пункт `Будильник` — повторное уведомление собеседнику по конкретному сообщению. - Будильник работает только для ваших сообщений и только если сообщение ещё не прочитано (иначе пункт отключается/сервер вернёт `уже прочит…
Система v3.6.19
2026-02-23

TSOY.CLOUD 3.6.19: старт голосовых сообщений в мессенджере (красный интерфейс записи)

- В composer мессенджера добавлена красная кнопка микрофона: открывается аккуратное окно записи голосового сообщения. - Запись выполняется через `MediaRecorder` прямо на устройстве и прикрепляется в чат как аудио-вложение. - Аудио-вложения (в том числе голосо…
Система v3.6.20
2026-02-23

TSOY.CLOUD 3.6.20: preloader загрузки сайта и отдельный статус установки PWA

- Добавлен глобальный preloader загрузки страниц: при открытии/переходе по сайту показывается аккуратный индикатор `Загрузка`, чтобы интерфейс не выглядел пустым при ожидании. - Для PWA-установки добавлен отдельный режим `Идёт установка приложения…` (показыва…
Система v3.6.21
2026-02-23

TSOY.CLOUD 3.6.21: плавное переключение секций настроек + фиксы длинных имён в Контактах/Мессенджере

- Разделы в `Настройках` теперь переключаются мягко без полного визуального reload-эффекта: открывается нужный блок справа, а URL обновляется через историю браузера. - В `Контактах` длинные имена пользователей больше не смещают иконки действий (`конверт / тру…
Система v3.6.22
2026-02-23

TSOY.CLOUD 3.6.22: hotfix preloader (без ступора на чатах и секциях настроек)

- Исправлен глобальный preloader: он больше не включается на каждый внутренний клик и не тормозит переключение секций в `Настройках` или переходы между диалогами в `Мессенджере`. - Preloader оставлен только для действительно длинных/понятных сценариев: первич…
Система v3.6.23
2026-02-23

TSOY.CLOUD 3.6.23: hold-to-record голосовые + компактное предпрослушивание и прогресс установки

- В `Мессенджере` добавлен мобильный режим `удерживай для записи`: зажмите красную кнопку микрофона, отпустите — запись остановится и автоматически прикрепится к сообщению. - После записи голосового в composer появляется компактное предпрослушивание (мини-пле…
Система v3.6.24
2026-02-23

TSOY.CLOUD 3.6.24: hotfix preloader на Профиле и в Мессенджере

- Исправлен долгий preloader на страницах `Профиль` и `Мессенджер`: overlay загрузки больше не ждёт полный `window.load` со всеми картинками и медиа. - Preloader теперь скрывается на этапе готовности DOM (`DOMContentLoaded`/`interactive`), поэтому страницы на…
Система v3.6.25
2026-02-23

TSOY.CLOUD 3.6.25: hotfix отображения голосовых сообщений (плеер вместо файла)

- Исправлено отображение голосовых сообщений в мессенджере: записи вида `voice_message_*.webm` теперь показываются встроенным аудио-плеером, а не только ссылкой на файл. - Фикс работает и для уже отправленных сообщений: чат распознаёт голосовые по имени файла…
Система v3.6.26
2026-02-23

TSOY.CLOUD 3.6.26: компактная лента недавних файлов на главной

- На главной странице блок `Недавние мои файлы` / `Недавние гостевые файлы` больше не создаёт длинный `подбородок` из списка файлов. - По умолчанию показываются первые 3 файла, остальные открываются кнопкой `Показать ещё файлы` (порциями по 3). - Использован …
Система v3.6.27
2026-02-23

TSOY.CLOUD 3.6.27: голосовые сообщения в одну компактную строку

- Голосовые сообщения (`voice_message_*`) в мессенджере теперь отображаются компактной одной строкой без отдельной строки имени файла. - Плеер voice-note визуально стал тоньше и аккуратнее, чтобы не раздувать высоту сообщения. - Фикс работает и в первичном ре…
Система v3.6.28
2026-02-23

TSOY.CLOUD 3.6.28: tap-to-record для голосовых (второй тап — отправка)

- В мессенджере микрофон теперь работает в режиме toggle: первый тап запускает запись, второй тап останавливает запись и сразу отправляет голосовое сообщение. - Если автоотправка не удалась, запись автоматически остаётся прикреплённой в поле ввода — её можно …
Система v3.6.29
2026-02-23

TSOY.CLOUD 3.6.29: одинаковый mini-player голосовых на ПК и телефоне

- Голосовые сообщения в мессенджере теперь воспроизводятся одинаково на ПК и мобильных: компактной кнопкой play/pause в одну строку. - Убрана зависимость от урезанных native audio-controls браузера на десктопе (где могла пропадать кнопка воспроизведения). - Н…
Система v3.6.30
2026-02-23

TSOY.CLOUD 3.6.30: персональные настройки preloader

- В `Настройки -> Внешний вид` добавлены настройки preloader для текущего профиля: режим работы (`умный / только установка-PWA / выключить`), компактный вид и показ текста. - Настройки персональные: у каждого профиля (профиль = отдельный user) можно выбрать с…
Система v3.6.31
2026-02-23

TSOY.CLOUD 3.6.31: hotfix воспроизведения голосовых на телефоне

- Исправлено воспроизведение голосовых сообщений на мобильных устройствах: mini-player снова стабильно запускается по тапу. - Для voice-note добавлен mobile-safe `touchend` с защитой от двойного срабатывания (`touchend` + `click`). - Скрытый аудио-элемент пер…
Система v3.6.32
2026-02-23

TSOY.CLOUD 3.6.32: отдельная иконка PWA + fallback на favicon/logo

- В `Настройки -> Брендинг` добавлена отдельная загрузка `Иконка PWA` для установленного приложения. - Если отдельная PWA-иконка не задана, приложение использует `favicon`, а затем `лого` как fallback. - `manifest` и `apple-touch-icon` теперь формируются дина…
Система v3.6.33
2026-02-23

TSOY.CLOUD 3.6.33: встроенный просмотр файлов в PWA (с возвратом назад)

- В standalone/PWA просмотр файла теперь открывается не “сырым” `view`, а во встроенной странице-просмотрщике с кнопкой `Назад`. - После просмотра файла в PWA можно вернуться обратно в приложение без закрытия и повторного запуска. - Кнопка `Открыть` в файлово…
Система v3.6.34
2026-02-23

TSOY.CLOUD 3.6.34: hotfix mini-плеера голосовых на телефоне

- Исправлен запуск воспроизведения голосовых сообщений на телефоне (mini-player в чате). - Для кнопки mini-player добавлены прямые mobile-safe обработчики `touchend/click` с защитой от двойного срабатывания. - `audio.load()` больше не мешает запуску как основ…
Система v4.0.0
2026-02-27

TSOY.CLOUD 4.0.0: группы, мосты и формат messenger

- Добавлены группы пользователей и мосты между группами: можно гибко задавать, кто видит друг друга в контактах и чатах. - Админ-раздел `Пользователи` переработан: аккаунт и его профили управляются в одной карточке, добавлены режим приложения, мультипрофиль и…
Система v4.1.0
2026-02-28

TSOY.CLOUD 4.1.0: страница групп, единый дизайн

- Группы и мосты вынесены в отдельную страницу управления: создание, переименование, удаление групп, управление мостами и просмотр участников. - Страница пользователей упрощена: только аккаунты и создание новых пользователей. - Унифицирован дизайн всего проек…
Система v5.8.20
2026-03-02

TSOY.CLOUD 5.8.20: стабильная авторизация после регистрации (CSRF hotfix)

- Исправлен критичный сценарий `CSRF token mismatch` после регистрации/входа в мобильных webview. - Формы входа и регистрации стали устойчивее к stale-страницам из кэша браузера/вебвью. - При рассинхроне CSRF теперь показывается корректный возврат и повтор де…
Система v5.8.21
2026-03-02

TSOY.CLOUD 5.8.21: корректное обновление версии и авто-публикация релизов

- Исправлен формат ZIP-сборки релиза: пути теперь совместимы с Linux-распаковкой, обновления реально применяются к рабочим файлам. - Для текущей версии автоматически публикуются техрелиз и системная новость в БД без ручного создания в админке. - После деплоя …
Система v5.8.22
2026-03-02

TSOY.CLOUD 5.8.22: контроль фактической версии после деплоя

- Добавлен серверный заголовок `X-TSOY-Version`, чтобы сразу видеть реальную версию работающего кода. - Документация дополнена проверками и инструкциями очистки артефактов от старых архивов с некорректными путями. - Это закрывает частую ситуацию, когда в подв…
Система v5.8.23
2026-03-02

TSOY.CLOUD 5.8.23: прокси/HTTPS-стабилизация и синхронизация конфигурации

- Унифицировано определение HTTPS за прокси/CDN, чтобы ссылки и secure-cookie формировались корректно. - Исправлены смежные точки: share/call-link URL, logout cookie cleanup, CSRF/theme/guest cookie secure-флаги. - Документация обновлена: для SQLite используе…
Система v5.8.24
2026-03-02

TSOY.CLOUD 5.8.24: hotfix bootstrap (fatal на старте)

- Исправлен фатал `Call to undefined function request_is_https()` после обновления. - Причина: вызов helper до подключения `app/core.php`. - Загрузка `core.php` перенесена в начало `app/bootstrap.php`.
Релиз v2.3.8
2026-02-22

Релиз v2.3.8

Снижен лаг при открытии страниц. · Polling-задачи переведены в менее агрессивный режим.
Релиз v2.3.10
2026-02-22

Релиз v2.3.10

Исправлены критические проблемы отображения текста и уведомлений. · Подготовлена база для финальной правки кодировки.
Релиз v2.3.11
2026-02-22

Релиз v2.3.11

Полностью восстановлен текст интерфейса на корректной кириллице. · Исправлены сообщения профиля, чатов, звонков и административных страниц. · index.php восстановлен из стабильной версии и очищен от поврежденных строк. · Обновлены маршруты администрирования звонков: мониторинг, закрытие и удаление комнат.
Релиз v2.3.12
2026-02-22

Релиз v2.3.12

Исправлено отображение текста на странице звонка по ссылке. · Восстановлены подписи и действия в админ-панели. · Очищены поврежденные символы в views/call_room.php и views/admin.php. · В call_room добавлено управление закрытием комнаты для создателя и администратора.
Релиз v2.3.13
2026-02-22

Релиз v2.3.13

Зафиксировано правило: кодировка проекта только UTF-8 без BOM. · Добавлен .editorconfig с обязательным charset=utf-8. · Добавлен scripts/check-encoding.ps1 и подключён в scripts/make-release.ps1.
Релиз v2.3.14
2026-02-22

Релиз v2.3.14

Улучшено качество аудиозвонков в личных и публичных комнатах. · Добавлена автопопытка восстановления соединения при сетевых сбоях. · Вынесены единые WebRTC-параметры: ICE/STUN/TURN и аудио-профиль в настройки админа. · Убраны хардкоды RTCPeerConnection в chat/call_room/admin_call_monitor.
Релиз v2.3.15
2026-02-22

Релиз v2.3.15

Звонки стали отзывчивее без перегруза сервера: события обрабатываются быстрее после действий пользователя. · Стабильнее работа в фоне и после возврата в приложение/вкладку. · Переведены call polling-циклы на адаптивный single-flight алгоритм (без наложения запросов). · Добавлены таймауты запросов, backoff при ошибках и fast-retry после сигналов/действий.
Релиз v2.3.16
2026-02-22

Релиз v2.3.16

В админке добавлены импорт и экспорт базы данных в JSON для резервного копирования и переноса. · Добавлены сервисные операции очистки БД и файлов: RTC-мусор, старый аудит, удалённые файлы и сироты в uploads. · Добавлен модуль app/admin_maintenance.php с безопасным экспортом/импортом и обслуживанием хранилища. · Импорт БД выполняется с полной заменой данных таблиц приложения (через DELETE в транзакции, без TRUNCATE).
Релиз v2.3.17
2026-02-22

Релиз v2.3.17

Исправлена критическая ошибка отправки emoji/смайликов в мессенджере на MySQL. · После обновления сайт автоматически приводит старые таблицы чата и связанные таблицы к emoji-safe кодировке utf8mb4. · MySQL-подключение теперь принудительно использует SET NAMES/CHARACTER SET utf8mb4. · Добавлен runtime-check кодировки таблиц через INFORMATION_SCHEMA и best-effort конвертация в utf8mb4 только при необходимости.
Релиз v2.3.18
2026-02-22

Релиз v2.3.18

В админке БД добавлен визуальный статус проверки utf8mb4/emoji (для MySQL). · Теперь можно быстро увидеть, есть ли таблицы или колонки, которые ещё не готовы к emoji. · Добавлен отчёт admin_db_charset_report() по INFORMATION_SCHEMA: default charset/collation БД, таблицы и текстовые колонки. · Отчёт выведен в views/admin_db.php с компактной сводкой и таблицами проблемных объектов (если есть).
Релиз v2.3.19
2026-02-22

Релиз v2.3.19

Переработан блок смайликов в мессенджере: быстрые emoji, недавние emoji и удобная панель выбора. · Подключена библиотека emoji picker с поиском и категориями; добавлены быстрые кнопки, включая клоуна 🤡. · Локально подключена библиотека public/vendor/emoji-button/emoji-button.min.js (без CDN-зависимости в рантайме). · В chat composer добавено хранение недавних emoji в localStorage и fallback-режим, если библиотека недоступна.
Релиз v2.3.20
2026-02-22

Релиз v2.3.20

Исправлен баг мессенджера: новые сообщения теперь появляются в открытом чате без перезахода. · Если вы находитесь внизу ленты, чат автоматически прокручивается к новым сообщениям. · Добавлен lightweight endpoint chat_messages_poll (инкрементальная выдача сообщений по after_id). · Во views/chat.php добавлен single-flight polling и клиентский рендер новых сообщений без полной перезагрузки страницы.
Релиз v2.3.21
2026-02-22

Релиз v2.3.21

Список диалогов в мессенджере теперь обновляется автоматически: новые сообщения и непрочитанные появляются без перезахода в чат. · Превью последнего сообщения, время и бейдж непрочитанных синхронизируются прямо в открытом разделе «Мессенджер». · Добавлен endpoint chat_dialogs_poll с компактной JSON-выдачей списка диалогов для текущего пользователя. · Во views/chat.php добавлен отдельный single-flight polling списка диалогов с backoff, signature-check и обновлением DOM только при изменениях.
Релиз v2.3.22
2026-02-22

Релиз v2.3.22

Переработан интерфейс мессенджера в стиле PWA-мессенджеров: удобнее список диалогов, компактнее шапка чата и чище лента сообщений. · На телефоне чат занимает экран аккуратнее: более компактные action-кнопки, улучшенная шапка и удобнее поле ввода для быстрых сообщений. · Во views/chat.php обновлены layout/styling для desktop и mobile (split-pane, sticky composer, адаптивная шапка, улучшенные bubbles). · Серверный и клиентский рендер списка диалогов унифицированы: одинаковая разметка строк (аватар/имя/время/превью/unread badge).
Релиз v2.3.23
2026-02-22

Релиз v2.3.23

Исправлена проблема со «слетающей» авторизацией: сессия пользователя теперь сохраняется стабильнее, особенно в PWA и на мобильных устройствах. · Пользователю больше не нужно постоянно повторно входить в аккаунт при обычном использовании сайта. · Добавлена устойчивая инициализация PHP-сессии: cookie lifetime 30 дней, gc_maxlifetime 30 дней, httponly/samesite и корректный secure через HTTPS/X-Forwarded-Proto. · Сессии вынесены в project-local storage/sessions (если доступно), чтобы изолировать их от server-wide gc других сайтов/приложений.
Релиз v2.3.24
2026-02-22

Релиз v2.3.24

Исправлен UX мессенджера на ПК: форма ввода теперь закреплена поверх ленты сообщений и всегда видна, как в Telegram/WhatsApp. · Возвращён стеклянный (glass) вид мессенджера на телефоне и PWA-экране. · Добавлен endpoint chat_messages_before_poll (before_id) и server helper conversation_messages_before_for_user() для lazy-history. · Стартовая загрузка сообщений в чате уменьшена до компактной пачки, дальнейшая история догружается по scroll trigger.
Релиз v2.3.25
2026-02-22

Релиз v2.3.25

Исправлен критичный UX-баг мессенджера на ПК: при открытии диалога теперь сразу видны последние сообщения и форма ввода (без прокрутки всей страницы вниз). · Форма ввода закреплена поверх ленты сообщений, а прокрутка выполняется внутри окна чата. · Для desktop conversation pane добавлена жёсткая высота по viewport (CSS + JS syncDesktopMessengerViewport), чтобы контент не растягивал страницу. · chatMessages переведён в гарантированно внутренний scroll-container; composer остаётся fixed/overlay внутри card.
Релиз v2.3.26
2026-02-22

Релиз v2.3.26

Добавлен отдельный центр уведомлений: быстрые переключатели, статус разрешений браузера, Service Worker/PWA и тест уведомления на устройство. · Настройки уведомлений теперь можно менять без захода в профиль — прямо из раздела «Уведомления». · Маршрут notifications получил обработку POST (сохранение notify_desktop/notify_sound) и скорректирован порядок mark_seen/counts. · Глобальный runtime уведомлений переработан: user-scoped localStorage state, единый helper __TSOY_NOTIFY_RUNTIME (SW/device notify, permission/status/test).
Релиз v2.3.27
2026-02-22

Релиз v2.3.27

Добавлена публичная страница «О проекте» (`/about`) с описанием проекта и карточками участников/вклада. · В профиле (редактирование) для администратора добавлен блок управления страницей «О проекте», включая загрузку фото участников с устройства. · Добавлены маршрут `about`, pretty-route `/about` и POST-обработчик `post_like_toggle` с JSON-ответом для AJAX. · В `profile_edit` добавлено сохранение настроек страницы about через `settings` + хранение списка участников в JSON (`about_contributors_json`).
Релиз v2.3.28
2026-02-22

Релиз v2.3.28

Hotfix: исправлено битое сообщение после сохранения настроек в центре уведомлений (теперь отображается нормальная кириллица). · В `index.php` заменены оставшиеся mojibake-строки flash-сообщения `Настройки уведомлений сохранены.` в обработчиках профиля и центра уведомлений.
Релиз v2.3.29
2026-02-22

Релиз v2.3.29

Hotfix: исправлены оставшиеся «кракозябры» в системных сообщениях/заголовках из `index.php` (включая центр уведомлений и очистку аудита в разделе БД). · Выполнена массовая зачистка mojibake-строковых литералов в `index.php` (восстановлена нормальная кириллица в flash/title сообщениях). · Усилен `scripts/check-encoding.ps1`: проверка mojibake теперь использует кодовые точки (`U+00C2/U+00C3/U+00D0/U+00D1`), а не хрупкий текстовый regex.
Релиз v2.3.30
2026-02-22

Релиз v2.3.30

Ссылка на страницу «О проекте» добавлена в подвал рядом с версией проекта. · Настройки страницы «О проекте» вынесены из профиля в отдельный раздел администрирования в дашборде. · Добавлен маршрут `admin_about` + новая страница `views/admin_about.php`; сохранение настроек about перенесено из `profile_edit` в admin-раздел. · Расширен RBAC: новые роли (`global_admin`, `admin_tester`), нормализация политик по умолчанию, закреплённые инварианты для доступа к БД/политикам/настройкам.
Релиз v2.3.31
2026-02-22

Релиз v2.3.31

Исправлены права управления пользователями: первый пользователь всегда закреплён как `global_admin`, обычный администратор не может понижать/блокировать/удалять его и сбрасывать ему пароль. · Роль `admin_tester` теперь может пользоваться обычными функциями приложения (включая профиль и фото), при этом изменения в админ-разделах по-прежнему заблокированы. · Добавлены backend-инварианты для первого пользователя (`user_ensure_first_global_admin`, запрет бана/удаления первого пользователя) и защита операций над `global_admin` в `admin_users`. · Глобальный guard `admin_tester` сужен до write-операций админ-разделов, чтобы не ломать обычный пользовательский функционал.
Релиз v2.3.32
2026-02-22

Релиз v2.3.32

Исправлена логика публичных файлов: фото участников со страницы `/about` остаются публичными, но больше не попадают в ленту «Публичные файлы» на главной. · Улучшена навигация и нейминг: пользовательское облако переименовано в «Мои файлы», а `admin`-экран оформлен как «Файлы проекта». · В `app/files.php` добавлена фильтрация публичной ленты по исключениям (`files_public_feed_excluded_ids()`), сейчас туда входят фото участников из `about_contributors_json`. · Обновлены заголовки/подписи в `views/home.php`, `views/dashboard.php`, `views/admin.php`, `views/layout.php`, `views/staff.php`, `views/chat.php`, `views/contacts.php` для уменьшения путаницы между пользовательским и административным файловыми экранами.
Релиз v2.3.33
2026-02-22

Релиз v2.3.33

Добавлена отдельная «мемная» invite-регистрация для друзей с автоназначением ролей `admin` и `admin_tester` по токен-ссылке. · Страница спец-регистрации получила отдельный дизайн с анимациями и роль-специфичными сообщениями (admin/tester). · Добавлен модуль `app/friend_registration.php`: JSON-конфиг спец-регистрации, токены, invite-ссылки, нормализация и resolve роли по токену. · В `index.php` добавлены маршруты `friend_register` и `admin_friend_register`, а также pretty-route `/friend-invite/<token>`.
Релиз v2.3.34
2026-02-22

Релиз v2.3.34

Hotfix: устранены предупреждения Deprecated на PHP 8.4+ в модуле спец-регистрации друзей. · В `app/friend_registration.php` сигнатуры helper-функций обновлены с implicit nullable (`array $cfg = null`) на явный nullable тип (`?array $cfg = null`).
Релиз v2.3.35
2026-02-22

Релиз v2.3.35

В спец-регистрацию друзей встроен виджет «кошка-говешка» с анимированным блоком внутри формы. · В настройках спец-регистрации можно загрузить фото кошки с устройства, включать/выключать блок и настраивать подпись/бейдж. · Спец-регистрация расширена настройками `cat_*` в `app/friend_registration.php`; загрузка изображения реализована в `index.php` и хранится в `public/friend_register/`. · В `views/friend_register.php` добавлен анимированный cat-widget с безопасным fallback без картинки.
Релиз v2.3.36
2026-02-22

Релиз v2.3.36

Базовый пресет оформления снова по умолчанию `Default`, а `Psychedelic` оставлен как опциональный вариант в настройках. · Уведомления о сообщениях и событиях теперь открывают соответствующий раздел (чат или календарь), а не всегда центр уведомлений. · Добавлен JSON endpoint `chat_send_async` и клиентский submit-handler во `views/chat.php` для AJAX-отправки сообщения с поддержкой вложений. · В `notif_poll` добавлены target-ссылки (`chat`/`calendar`), а `views/partials/scripts.php` формирует отдельные device-notifications с корректным `data.url`.
Релиз v2.3.37
2026-02-22

Релиз v2.3.37

Мессенджер структурно облегчён: более компактный header/messages/composer stack, меньше визуальной тяжести и ближе к привычной мобильной логике. · Исправлено поведение поля ввода в мобильном полноэкранном чате: composer больше не “съезжает” вниз из-за наложенных padding/overlay-стилей. · В `views/chat.php` добавлены структурные классы (`chat-list-card`, `chat-conv-card`, `chat-conv-body`, `chat-composer-shell`) и финальный CSS override-блок с упрощённой layout-схемой. · Убран тяжёлый overlay-режим composer для conversation pane (через CSS overrides), сообщения снова живут в нормальном flex-stack без лишнего bottom-overlay padding.
Релиз v2.3.38
2026-02-22

Релиз v2.3.38

Перестроена DOM-структура окна диалога: `chatMessages` теперь единый контейнер на всю область чата, внутри которого находятся шапка, лента сообщений и composer. · Шапка диалога и панель ввода встроены внутрь общего контейнера как в современных мессенджерах, что улучшает поведение на мобильных экранах. · В `views/chat.php` `id=\"chatMessages\"` переведён в роль root-container conversation pane, а scroll-area вынесена в `id=\"chatMessagesScroll\"`. · JS-логика мессенджера обновлена на новый scroll-target (`chatMessagesScroll`) с backward fallback на старую структуру.
Релиз v2.3.39
2026-02-22

Релиз v2.3.39

Уменьшен зазор между клавиатурой и полем ввода в мобильном мессенджере (почти вплотную, несколько миллиметров). · Панель ввода в fullscreen-чате лучше поджимается к клавиатуре на iPhone/iOS. · В `views/chat.php` добавлен динамический CSS var `--chat-mobile-composer-gap` и логика `visualViewport`-детекта открытой клавиатуры. · При открытой клавиатуре fullscreen-pane чата растягивается до видимого нижнего края без лишнего white-gap из-за `visualViewport.offsetTop`.
Релиз v2.3.40
2026-02-22

Релиз v2.3.40

Исправлен большой пустой отступ между полем ввода и клавиатурой в мобильном мессенджере (fullscreen chat). · Панель ввода и лента сообщений теперь корректно сжимаются при открытии клавиатуры. · В `views/chat.php` снят конфликтующий `min-height`/жёсткая высота на mobile fullscreen-цепочке контейнеров (`chat-conv-body` → `#chatMessages` → scroll-wrap → `#chatMessagesScroll`). · Горячий фикс рассчитан на iOS/Safari/PWA сценарии, где клавиатура уменьшает viewport и ломает flex-layout с `min-height`.
Релиз v2.3.41
2026-02-22

Релиз v2.3.41

Дополнительно исправлен большой зазор над клавиатурой на iPhone: поле ввода поджимается ближе даже при включённой assistant/suggestions панели iOS. · В `views/chat.php` добавлена реальная компенсация нижнего зазора по измерению положения composer относительно viewport (а не только по `visualViewport.height`). · Учтён iOS-кейс, когда `visualViewport` и `window.innerHeight` расходятся на высоту assistant/suggestions панели клавиатуры.
Релиз v2.3.42
2026-02-22

Релиз v2.3.42

Для диагностики iPhone-отступа убрана встроенная (inline) панель быстрых смайликов из формы сообщения в мессенджере. · Кнопка смайликов в composer теперь открывает полный emoji picker, если inline-панель отключена. · Из `views/chat.php` удалён блок `chat-emoji-panel` внутри composer; JS-клик по `emojiBtn` переведён на fallback `toggleFullEmojiPicker()` при отсутствии inline-панели.
Релиз v2.3.43
2026-02-22

Релиз v2.3.43

Для диагностики iPhone-отступа убран набор layout-классов у нижнего блока `attachHint / Убрать вложение` в composer мессенджера. · В `views/chat.php` блок под composer (с `attachHint` и `attachClearBtn`) упрощён до обычного контейнера без `d-flex/.../mt-2`.
Релиз v2.3.44
2026-02-22

Релиз v2.3.44

Для диагностики iPhone-отступа убран класс `small text-secondary` у блока `attachHint` в composer мессенджера. · В `views/chat.php` элемент `#attachHint` оставлен без CSS-классов, чтобы исключить влияние типографики/line-height на высоту composer.
Релиз v2.3.45
2026-02-22

Релиз v2.3.45

Для диагностики iPhone-отступа удалён `id=\"attachHint\"` у нижнего блока composer и связанный CSS-минимум высоты. · В `views/chat.php` удалено правило `#chatConvPane #attachHint { min-height ... }`, а сам элемент оставлен без `id`, чтобы исключить его вклад в высоту composer.
Релиз v2.3.46
2026-02-22

Релиз v2.3.46

Мессенджер вынесен из общего `container py-4` в отдельное “полотно” layout (full-canvas host), чтобы уменьшить конфликты мобильного fullscreen-режима с обёртками страницы. · Это изменение направлено именно на iPhone-баг с большим отступом над клавиатурой: чат теперь живёт в более простой DOM-структуре без общей контейнерной обвязки страницы. · В `views/layout.php` добавлен route-aware режим `contentCanvasRoute` для `chat`: контент мессенджера рендерится в `chat-canvas-stage` вне `container py-4`. · В `views/chat.php` обновлены mobile fullscreen-селекторы, которые раньше были жёстко привязаны к `.container.py-4`, теперь они поддерживают `.chat-canvas-stage`.
Релиз v2.3.47
2026-02-22

Релиз v2.3.47

Мессенджер после фикса iPhone-клавиатуры дополнительно очищен и визуально облегчён: обновлены шапка страницы, список диалогов, полотно сообщений и composer. · Строка состояния редактирования в composer теперь показывается только в режиме редактирования, а не занимает место постоянно. · Из `views/chat.php` удалён временный JS-компенсатор `tightenComposerToViewportBottom()` и связанный runtime-костыль `--chat-mobile-composer-gap`, оставлена более простая `visualViewport`-синхронизация. · Добавлены финальные CSS-overrides для canvas-режима чата (`chat-canvas-stage`) без возврата к старой layout-обвязке `container py-4`.
Релиз v2.3.48
2026-02-22

Релиз v2.3.48

На главной в разделе «Новости» теперь по умолчанию показываются только первые записи, остальные открываются кнопкой «Загрузить ещё». · В истории версий (технические новости по версиям) добавлен такой же режим постепенной подгрузки списка через кнопку «Показать ещё версии». · В `views/layout.php` добавлен универсальный client-side `load more`-инициализатор для блоков с `data-load-more-*`. · Разметка новостей на главной (`views/home.php`) и модалки истории версий (`views/layout.php`) переведена на единый шаблон постепенного раскрытия списка.
Релиз v2.3.49
2026-02-22

Релиз v2.3.49

Исправлен повторный iPhone-баг в мессенджере с большим отступом между клавиатурой и полем ввода (runtime-компенсация viewport/composer для mobile fullscreen). · Новости на главной и технические заметки по версиям теперь действительно свёрнуты по умолчанию (первые 3 записи), остальные открываются через кнопку «Показать ещё / Загрузить ещё». · В `views/chat.php` возвращена измеряемая компенсация `visualViewport` по фактическому gap до composer (без возврата старого `--chat-mobile-composer-gap` костыля). · В `views/layout.php` исправлен клиентский `load more`-инициализатор (Safari-safe проверка вместо `ParentNode`) и добавлено серверное начальное сворачивание версий.
Релиз v2.3.50
2026-02-22

Релиз v2.3.50

В мессенджере убрана служебная подпись под именем собеседника; клик по фото/имени в шапке диалога теперь открывает профиль собеседника. · Профиль расширен: значок админ-роли для администраторов, список друзей, количество друзей, а также кнопки добавления/удаления из друзей прямо на странице профиля. · Добавлены helper-функции для видимости карточек разработчиков на `/about` (`about_developer_visibility_json`, `user_about_card_visible()`, `user_about_card_set_visible()`) и фильтрация в `users_about_developers()`. · Маршруты `post_create/post_update` получили поддержку `cover_device_file` через новый helper `post_cover_from_upload()` в `app/posts.php`.
Релиз v2.3.51
2026-02-22

Релиз v2.3.51

В мессенджере из composer удалён нижний блок `chat-attach-row` (подсказка/кнопка вложения), чтобы убрать лишнюю высоту и iPhone-gap («подбородок»). · Из `views/chat.php` удалена разметка `div.chat-attach-row`; JS обработчики вложений уже безопасно работают при отсутствии `attachHint/attachClearBtn`.
Релиз v2.3.52
2026-02-22

Релиз v2.3.52

Усилен iPhone-fix для мессенджера: composer в mobile fullscreen при открытой клавиатуре закрепляется в `fixed`-режиме относительно видимой области, чтобы убрать большой зазор над клавиатурой. · В `views/chat.php` добавлен режим `chat-composer-vv-fixed` + JS-синхронизация с `visualViewport` (адаптивно: `bottom=0` или компенсация `keyboardInset`, если fixed элемент уходит под клавиатуру).
Релиз v2.3.53
2026-02-22

Релиз v2.3.53

В мессенджере с composer снят класс `chat-sticky` (оставлен только `chat-composer-shell`) — hotfix для iPhone-отступа над клавиатурой. · В `views/chat.php` удалён `chat-sticky` у обёртки формы сообщений, чтобы исключить конфликт sticky/fixed логики в mobile fullscreen.
Релиз v2.3.54
2026-02-22

Релиз v2.3.54

Ещё один iPhone hotfix для мессенджера: при открытой клавиатуре `fixed`-composer больше не обрезается контейнерами чата (снят clipping/blurs на время mobile keyboard mode). · В `views/chat.php` добавлен режим `chat-composer-vv-mode`: при активной клавиатуре снимаются `overflow:hidden` и `backdrop-filter` у `chat-conv-card/chat-conv-body`, чтобы Safari не привязывал/не обрезал `position: fixed` composer внутри карточки.
Релиз v2.3.55
2026-02-22

Релиз v2.3.55

В мессенджере переписан mobile-composer режим для iPhone: поле ввода при открытой клавиатуре выносится в отдельный viewport-портал, чтобы не появлялся большой зазор над клавиатурой. · В `views/chat.php` реализован `composer portal` (spacer + перенос `.chat-composer-shell` в `body` при mobile keyboard mode) вместо прежней fixed/sticky-компенсации внутри карточки чата.
Релиз v2.3.56
2026-02-22

Релиз v2.3.56

Добавлена система мультипрофилей: у одного аккаунта можно создавать, переключать и удалять несколько профилей через меню по клику на имя/аватар в шапке. · Для ролей разработчиков (`global_admin`/`admin`/`admin_tester`) добавлен выбор, какой профиль показывать на странице `/about`. · В `app/migrations.php` добавлены `user_profiles`, колонки `users.active_profile_id/users.about_profile_id` и `posts.hide_from_guests`. · В `app/users.php` реализованы helper-ы мультипрофилей (bootstrap/create/switch/delete/sync/about-select) и overlay данных выбранного профиля в `/about`.
Релиз v2.3.57
2026-02-22

Релиз v2.3.57

Мессенджер откатан по фронтенду (`views/chat.php`) к состоянию релиза `2.3.46` — это версия, на которой исчезал iPhone-gap («подбородок») над клавиатурой. · Сравнение показало, что `views/layout.php` (перенос чата в `chat-canvas-stage`) остаётся правильным; регрессия появилась позже в `views/chat.php` после добавления mobile keyboard viewport-хаков (`chat-composer-vv-portal`, `chat-composer-vv-fixed`, `chat-composer-vv-mode`, spacer/portal composer). · Откат выполнен точечно только для мессенджера: `views/chat.php` взят из архива `releases/tsoycloud_v2.3.46_2026-02-22.zip`.
Релиз v2.3.58
2026-02-22

Релиз v2.3.58

Мультипрофили переработаны: теперь каждый профиль аккаунта — это отдельный пользователь со своим логином и собственной страницей `/user/<login>` (отдельные посты, файлы и медиа). · В меню профилей аккаунта создание профиля теперь запрашивает отдельный логин (`username`) и отображаемое имя; основной профиль нельзя удалить. · Логика `user_profiles_*` в `app/users.php` переведена с таблицы `user_profiles` на связанные записи `users` через `owner_account_user_id` (старую таблицу больше не используем как источник истины). · В `app/auth.php` добавлен `auth_session_apply_active_profile()` и `$_SESSION[\"auth_user_id\"]`: сессия хранит владельца аккаунта отдельно от активного профиля (`$_SESSION[\"user\"]`).
Релиз v2.3.59
2026-02-22

Релиз v2.3.59

Мессенджер улучшен поверх стабильной базы (без возврата mobile keyboard-хаков): имя/аватар собеседника в шапке снова открывают профиль, убрана лишняя служебная подпись. · В профиле добавлены отдельные блоки медиа: фото, видео и аудио (для владельца — из облака, для гостей/других пользователей — из видимых постов). · В `app/migrations.php` добавлены таблицы `post_comments` и `user_pages`. · В `app/posts.php` реализованы helpers комментариев и поддержка внутренних ссылок (`/page/...`) в `post_attachment_add_link()` для публикации страниц.
Релиз v2.3.60
2026-02-22

Релиз v2.3.60

Исправлено мобильное меню профилей в шапке: dropdown больше не уезжает влево на узких экранах (ограничена ширина, стабилизировано позиционирование). · В `views/layout.php` профильный dropdown переведен на `data-bs-display=\"static\"` и вынесен на отдельный класс `topbar-profile-menu`; в `views/partials/head.php` добавлены mobile-safe стили ширины/переполнения.
Релиз v2.3.61
2026-02-22

Релиз v2.3.61

Исправлен раздел «Медиа» в профиле: теперь он показывает только контент, который пользователь явно добавил в посты (обложки и вложения), а не все файлы из облака. · В `views/profile.php` блок `Медиа` переведен на единый источник данных (медиа из постов) для владельца и гостей; облачные файлы владельца больше не попадают туда автоматически.
Релиз v2.3.62
2026-02-22

Релиз v2.3.62

Профиль переведён на более современный шаблонный стиль: обновлены карточки, шапка профиля и добавлены верхние вкладки разделов (Посты/Друзья/Страницы/Медиа). · Разделы Фото/Видео/Аудио теперь работают как отдельные ручные галереи профиля: пользователь сам добавляет контент в галереи, а не получает автоподбор из облака/постов. · Добавлен helper `app/profile_media.php` и таблица `profile_media_items` (ручные галереи профиля) с миграцией в `app/migrations.php`. · Добавлен маршрут `profile_media_gallery` в `index.php` (добавление/удаление элементов галереи, загрузка файлов с устройства).
Релиз v2.3.63
2026-02-22

Релиз v2.3.63

Профиль ещё ближе к новому шаблону: усилен визуал шапки (cover/avatar/chips/статистика), обновлены карточки друзей/страниц/медиа и общий стиль карточек постов/модалок. · Улучшена навигация по разделам профиля через верхние вкладки с сохранением активной вкладки. · В `views/profile.php` расширен слой профильных стилей и добавлены счётчики/визуальные блоки без изменения бизнес-логики постов, комментариев и ролей.
Релиз v2.3.64
2026-02-22

Релиз v2.3.64

Посты на странице профиля ещё ближе к новому шаблону: добавлен header карточки (аватар/имя/@username/время), улучшен action-bar и визуал карточек. · Модалка комментариев профиля визуально переработана и на мобильных ведёт себя ближе к формату bottom-sheet. · В `views/profile.php` добавлены профильные UI-классы для карточек постов и комментариев без изменения текущей логики лайков/комментариев/прав доступа.
Релиз v2.3.65
2026-02-22

Релиз v2.3.65

Управление галереями профиля перенесено в модалку (вместо collapse), что ближе к новому шаблону и удобнее на мобильных устройствах. · Экран `Редактировать профиль` заметно переработан визуально: добавлен hero-preview профиля, улучшены блоки загрузки аватара/обложки и группировка полей. · В `views/profile.php` блок управления ручными галереями переведён на modal-layout без изменения логики форм `profile_media_gallery`. · В `views/profile_edit.php` добавлены новые UI-обёртки и стили (`profile-edit-header-*`, `profile-edit-fieldset`, `profile-edit-upload-*`) при сохранении прежних POST-полей.
Релиз v2.3.66
2026-02-22

Релиз v2.3.66

Профиль дополнительно отполирован под мобильные устройства: карточки друзей и страниц стали компактнее и аккуратнее на узких экранах. · В модалке комментариев улучшен блок ввода: форма стала ближе к привычному мобильному composer-формату. · В `views/profile.php` добавлены mobile-first стили и классы для списков друзей/страниц, медиасетки и composer-разметки комментариев без изменения бизнес-логики.
Релиз v3.0.0
2026-02-22

Релиз v3.0.0

Подготовлен крупный профильный апдейт 3.0: улучшен mobile UX профиля (Друзья/Страницы/Медиа), а форма комментариев в модалке стала ближе к привычному мобильному composer-формату. · Полностью переработан интерфейс мультипрофилей в шапке: новый dropdown с быстрым переключением, аватарами и статусами профилей. · В `views/layout.php` переписана разметка topbar dropdown и модалки `#userProfilesModal` без изменения существующих роутов/POST-действий (`user_profiles`). · В `views/partials/head.php` добавлен новый слой стилей для мультипрофильного UX (`topbar-profile-*`, `user-profiles-modal-modern`, `user-profile-card*`) с адаптацией под мобильные экраны.
Релиз v3.0.1
2026-02-22

Релиз v3.0.1

На странице профиля кнопка копирования публичной ссылки теперь копирует адрес в буфер и показывает диалог «Скопировано». · При открытии профиля по публичной ссылке `/user/<username>` скрывается боковое меню (desktop + mobile offcanvas), страница выглядит ближе к формату соцсети. · В `views/profile.php` обновлён helper `copyText()` для кнопок `.js-copy`: успешное копирование подтверждается диалогом, fallback остаётся только при ошибке clipboard API. · В `views/layout.php` добавлен режим публичной страницы профиля (`$publicProfilePageRoute`) с условным отключением sidebar/offcanvas и корректировкой mobile topbar-отступа.
Релиз v3.0.2
2026-02-22

Релиз v3.0.2

На страницах профиля боковое меню теперь скрывается только у гостей. Для авторизованных пользователей навигация в профиле снова доступна. · В `views/layout.php` режим “соц-страницы без меню” ограничен только гостевым просмотром публичного профиля (`$guestPublicProfileSocialMode`).
Релиз v3.0.3
2026-02-22

Релиз v3.0.3

Кнопки «Ссылка на профиль» и «Ссылка на пост» на странице профиля теперь копируют ссылку в буфер по одному клику. · В `views/profile.php` copy-handler для `.js-copy/.js-magnet` усилен: добавлены `preventDefault/stopPropagation` и fallback-копирование через `textarea + execCommand(copy)` без обязательного `prompt`.
Релиз v3.1.0
2026-02-22

Релиз v3.1.0

Конструктор пользовательских страниц серьёзно переработан: добавлены блоки «Статья», «Гайд» и «Плеер роликов» помимо галереи/ссылок. · В выборе файлов для конструктора страниц больше не нужны ID вручную: добавлен единый проводник файлов с папками, поиском, фильтрами и мультивыбором. · Добавлен reusable partial `views/partials/file_explorer_picker.php` (модалка + JS-компонент `TsoyFileExplorerPicker`) для повторного использования в разных разделах. · В `app/pages.php` расширена модель блоков страниц (`article`, `guide`, `video_player`) и обновлён сбор используемых file_id для рендера.
Релиз v3.2.0
2026-02-22

Релиз v3.2.0

Усилен PWA-режим для ПК и смартфонов: улучшен manifest (ярлыки быстрых действий, desktop/mobile launch-поведение, метаданные приложения). · Уведомления и звонки в PWA/браузере теперь надёжнее открывают нужный раздел по клику (чат, конкретный звонок, уведомления и т.д.). · Root и `public/service-worker.js` синхронизированы и переведены на единый hardened SW (navigation preload, deep-link `notificationclick`, управление файловым кешем через message API). · В Service Worker добавлен корректный bypass для `Range`-запросов, чтобы не ломать стриминг аудио/видео и просмотр медиа на мобильных устройствах.
Релиз v3.2.1
2026-02-22

Релиз v3.2.1

В разделе «Настройки → Брендинг» добавлена отдельная настройка названия проекта в шапке (верхняя панель и боковое меню). · Добавлен ключ настроек `site_header_name`; при пустом значении используется fallback на `site_name`. · В `views/layout.php` брендинг шапки переведён на отдельную переменную `$siteHeaderName`, не затрагивая title страниц и прочие места, где используется `site_name`.
Релиз v3.3.0
2026-02-22

Релиз v3.3.0

Проведена большая унификация визуального стиля проекта: карточки, навигация, формы, модалки и отступы лучше согласованы между разделами. · Раздел «Настройки → Оформление» расширен: добавлены настройки глобального шрифта, масштаба текста, ширины контента, контраста поверхностей и отдельная плотность мессенджера. · Расширен `ui_config()` и системные настройки (`ui_font_family`, `ui_font_scale`, `ui_content_width`, `ui_surface_contrast`, `ui_chat_density`) с валидацией в `index.php?r=admin_settings`. · В `views/partials/head.php` добавлены новые data-атрибуты UI и глобальные CSS-токены (font-scale, content-width, surface-contrast) для централизованного управления дизайном.
Релиз v3.3.1
2026-02-22

Релиз v3.3.1

В мессенджере выбор файла из облака переведён на единый проводник (папки, поиск, фильтры, превью), как в других разделах проекта. · Исправлено меню действий сообщения (`Изменить/Удалить`): dropdown больше не перекрывается соседними сообщениями. · В `views/chat.php` интегрирован reusable `TsoyFileExplorerPicker` для attach-модалки (mobile-safe сценарий через отдельную модалку picker-а). · Для строк сообщений добавлен z-index lift при `show.bs.dropdown` (`chat-row-menu-open`), чтобы меню действий не попадало под соседние bubbles.
Релиз v3.3.2
2026-02-22

Релиз v3.3.2

В «Центре уведомлений» блок с уведомлениями/событиями теперь показывается первым, а настройки уведомлений идут после него. · В `views/notifications.php` переставлен визуальный порядок колонок через grid-order (`notify-col-feed` перед `notify-col-settings`) и обновлён заголовок блока на «Все уведомления».
Релиз v3.3.3
2026-02-22

Релиз v3.3.3

Страница «Контакты» визуально приведена к стилю мессенджера: одинаковая шапка, поверхности, контуры и оттенки/градиенты. · В `views/contacts.php` добавлен локальный токенизированный стиль (`contacts-page`) с той же логикой surface/background, что и в мессенджере, включая реакции на `ui_surface_contrast` и `ui_density`.
Релиз v3.3.4
2026-02-22

Релиз v3.3.4

Проводник файлов в профиле (обложка и вложения постов) переведён на единое ядро `TsoyFileExplorerPicker`, как в мессенджере. · Вложения к посту с устройства в профиле переработаны в единый блок внутри модалки вложений (облако + устройство + ссылки), чтобы выбор работал стабильнее и понятнее. · В `views/profile.php` добавлен JS-слой унификации старых модалок вложений постов: облачные файлы выбираются через общий picker, а hidden-inputs собираются по mime (`attach_images/video/audio/files`). · В `app/files.php` расширен `files_admin_list()` (фильтры по владельцу и папке) и добавлены helper-функции `files_admin_owner_stats()` / `files_admin_folders_list()` для админского проводника.
Релиз v3.3.5
2026-02-22

Релиз v3.3.5

Исправлен двойной проводник в профиле: при выборе обложки поста больше не открывается одновременно новый и старый интерфейс. · Исправлены лишние кнопки «Сохранить / Отмена» под опубликованными постами (ошибка разметки edit-блока). · В `views/profile.php` удалены legacy JS-билдеры вложений постов (`js-att`/`js-att-edit`) и старые вкладки вложений теперь физически вырезаются из DOM после инициализации нового picker-слоя. · В `views/profile.php` убраны bootstrap-trigger атрибуты с кнопок выбора обложки (теперь открывается только `TsoyFileExplorerPicker`), а возврат старой attach-модалки после picker отключён.
Релиз v3.3.6
2026-02-22

Релиз v3.3.6

В конструкторе пользовательских страниц добавлен новый блок «Таблица» с ручным редактированием ячеек. · Для блока таблицы доступны действия: добавить/удалить строку и добавить/удалить столбец, а также режим «первая строка — заголовки». · В `app/pages.php` добавлена нормализация блока `table` (header + rows, ограничения размеров и длины ячеек). · В `views/my_pages.php` расширен page-builder: тип `table`, визуальный table-editor и сериализация таблицы в `blocks_json`.
Релиз v3.4.0
2026-02-23

Релиз v3.4.0

Добавлены полноценные push-уведомления на устройство (через Web Push + Service Worker) для сценариев, когда сайт/PWA закрыт. · Push-уведомления теперь приходят по ключевым событиям: сообщения, входящие звонки/приглашения в звонок, лайки постов, комментарии и добавления в друзья. · Добавлен `app/push.php`: VAPID-ключи (автогенерация), подписки Web Push, очередь уведомлений, payloadless Web Push dispatch и pull-механизм для SW. · В `app/migrations.php` добавлены таблицы `push_subscriptions` и `push_queue` (MySQL/SQLite) с индексами для подписок и очереди доставки.
Релиз v3.4.1
2026-02-23

Релиз v3.4.1

Исправлено мобильное открытие окна вложений в мессенджере: attach-модалки/проводник теперь открываются поверх fullscreen-чата. · Меню профиля/переключения мультипрофилей в мобильной шапке больше не уезжает влево: dropdown центрируется по viewport. · В `views/chat.php` поднят z-index attach-модалки и file-picker-модалки над mobile chat pane (`z-index: 2100`) и добавлена маркировка backdrop (`chat-over-chat-backdrop`). · В `views/chat.php` усилен mobile-open handler клипсы (`pointerup` + `touchend` + click guard), чтобы не терялись тапы в fullscreen-мессенджере.
Релиз v3.4.2
2026-02-23

Релиз v3.4.2

Исправлена навигация по клику на уведомления: уведомления теперь корректно открывают источник (чат, календарь, профиль/пост и т.д.) в браузере и PWA. · В `views/partials/scripts.php` `__tsoyNavigateFromNotification()` переведён на резолв ссылок через `appBasePath`, а fallback `Notification.onclick` теперь использует тот же навигатор. · В `service-worker.js` / `public/service-worker.js` `notificationclick` теперь резолвит `data.url` относительно `self.registration.scope` (а не `origin`), что исправляет deep-link в установках не в корне сайта.
Релиз v3.4.3
2026-02-23

Релиз v3.4.3

Уведомления стали информативнее: для новых сообщений показываются имя отправителя и фрагмент текста. · Для входящих звонков в уведомления добавлены действия «Принять» и «Отклонить» (там, где это поддерживает браузер/устройство). · В `notif_poll` добавлен preview последнего непрочитанного сообщения (`sender/body/url`), а клиентский polling в `views/partials/scripts.php` использует его для desktop-уведомлений и toast. · В `app/push.php` расширен payload Web Push: поддержка `data` и `action_urls`, а `push_notify_incoming_call()` теперь отправляет actions (`accept/close`) и URL принятия звонка.
Релиз v3.4.4
2026-02-23

Релиз v3.4.4

В дашборде (`Настройки`) добавлен отдельный блок настроек уведомлений: цвет, оформление toast/desktop-уведомлений, рингтон уведомлений и отдельный рингтон входящего звонка. · Добавлен блок `PWA и обновления`: политика обновления (manual/notify/auto), интервал проверки Service Worker, автозапрос persistent storage и toast-оповещения об обновлении PWA. · Добавлены новые ключи настроек в `app/settings.php`; сохранение/валидация реализованы в `index.php` (`admin_settings`). · В `views/layout.php` новые настройки прокидываются в `window.__TSOY_NOTIFY` (`ui/sounds/pwa`) для runtime-слоя.
Релиз v3.4.5
2026-02-23

Релиз v3.4.5

В настройках уведомлений добавлена загрузка своих рингтонов: отдельно для обычных уведомлений и отдельно для входящего звонка. · В админке можно прослушать загруженные рингтоны прямо в разделе настроек и удалить их при необходимости. · Добавлены настройки `notify_sound_custom_path` и `notify_call_sound_custom_path`, а в `admin_settings` реализована загрузка аудиофайлов в `public/sounds`. · Во фронтенде (`views/layout.php` + `views/partials/scripts.php`) runtime уведомлений получил поддержку кастомных аудио-файлов с fallback на синтезированные звуки, если браузер блокирует воспроизведение.
Релиз v3.5.0
2026-02-23

Релиз v3.5.0

Стабилизационный релиз: проведён общий cleanup проекта, снижён шум от временных артефактов и улучшена предсказуемость работы уведомлений/PWA-настроек. · В настройках уведомлений доработана работа со своими рингтонами: при замене старые файлы корректно очищаются, а слишком большие файлы не принимаются. · Удалены временные каталоги восстановления/аудита (`tmp_*`) из рабочей директории, которые засоряли поиск и увеличивали накладные расходы проверок. · В `scripts/check-encoding.ps1` добавлено универсальное исключение для временных каталогов `tmp_*`, чтобы сборочные проверки не сканировали техмусор.
Релиз v3.5.1
2026-02-23

Релиз v3.5.1

Hotfix рингтонов на телефонах: улучшено воспроизведение кастомных рингтонов уведомлений/звонка на мобильных браузерах и PWA. · В `views/partials/scripts.php` исправлен баг кастомного рингтона уведомлений: теперь Promise `audio.play()` реально проверяется, и при ошибке срабатывает fallback-звук. · Кастомные рингтоны теперь резолвятся через `appBasePath` (`__tsoyResolveAppUrl`) для корректной работы в установках проекта в подпапке сайта.
Релиз v3.5.2
2026-02-23

Релиз v3.5.2

Усилена надёжность уведомлений: добавлен серверный retry-worker для wake-push доставки с повторными попытками и backoff. · В админке (Настройки -> PWA и обновления) появился блок диагностики push-очереди: количество недоставленных элементов, состояние очереди и статус подписок. · В `push_queue` добавлены поля состояния доставки (`dispatch_state`, попытки, backoff, lock, last_error/status) и миграции для MySQL/SQLite. · В `app/push.php` реализованы функции очереди и worker-обработки (`claim/process due`, retry/backoff, статистика очереди).
Релиз v3.5.3
2026-02-23

Релиз v3.5.3

Уведомления стали стабильнее при закрытом PWA/сайте: сервер теперь пытается отправлять полноценный Web Push payload (с телом уведомления), а не только wake-push. · Сохранён fallback-режим (`wake-push + push_pull`) для совместимости, если endpoint/браузер не принимает payload. · В `app/push.php` добавлена payload-отправка Web Push (`aes128gcm`) с VAPID и шифрованием сообщения на стороне сервера (ECDH + HKDF + AES-128-GCM). · `push_dispatch_user()` теперь умеет отправлять payload в push и возвращает раздельную статистику `payload_sent` / `wake_sent`.
Релиз v3.5.4
2026-02-23

Релиз v3.5.4

В админке (`Настройки -> PWA и обновления`) добавлена диагностика push-устройств: список подписок, устройство/режим, последний успех доставки и ошибки. · Появилась кнопка `Тест push` для каждого устройства, чтобы быстро проверить доставку уведомлений на конкретную подписку. · В `app/push.php` добавлены helper-функции диагностики: `push_subscriptions_admin_list()`, `push_subscription_get()`, `push_subscription_test_send()`. · Добавлен route `index.php?r=push_test_subscription` (admin/settings), который отправляет тестовый push на выбранную подписку и пишет результат в flash.
Релиз v3.5.5
2026-02-23

Релиз v3.5.5

Диагностика push-устройств в админке стала практичнее: добавлены фильтры (поиск, active/inactive, только с ошибками). · Для push-подписок появились действия `Отключить / Включить / Удалить` прямо в таблице устройств. · В `app/push.php` добавлены admin-helper’ы управления подписками: `push_subscription_set_active()` и `push_subscription_delete_by_id()`, а список подписок получил серверные фильтры (`q`, `only_errors`, `state`). · В `index.php` добавлен route `push_subscription_admin_action` для безопасного управления подписками из админки (POST + CSRF + capability).
Релиз v3.5.6
2026-02-23

Релиз v3.5.6

Исправлен бренд в уведомлениях: заголовок уведомлений теперь подтягивается из настроек сайта, а не захардкожен как `TSOY.CLOUD`. · В диагностике push-устройств добавлена колонка `Последний тест` (успех/ошибка, режим `payload/wake`, HTTP-код, время). · В `app/push.php` добавлен helper `push_app_title()` (с кешем), и серверные push-события/очередь/тестовые уведомления переведены на имя сайта из `settings`. · В `views/layout.php` + `views/partials/scripts.php` runtime уведомлений получил `siteName/siteHeaderName`; browser/PWA fallback notifications и toast теперь используют бренд из настроек.
Релиз v3.5.7
2026-02-23

Релиз v3.5.7

В диагностике push-устройств добавлена статистика реальных доставок по подписке: `payload`, `wake`, `wake fallback`, `errors` (накопительно, с последнего сброса). · Добавлены кнопки сброса статистики доставок: для одной подписки и для всех подписок сразу. · В `push_subscriptions` добавлены поля `push_stat_*` и миграции для MySQL/SQLite; реальные отправки в `push_dispatch_user()` записывают статистику по подписке (`payload/wake/fallback/error`). · В `app/push.php` реализованы helper’ы `push_subscription_delivery_stats_record()` и `push_subscription_delivery_stats_reset()`.
Релиз v3.5.8
2026-02-23

Релиз v3.5.8

Hotfix уведомлений: название в заголовке уведомления теперь берётся в приоритете из `Название в шапке`, затем из `Название сайта`. · Исправлен fallback тестового уведомления в центре уведомлений: больше не показывает захардкоженный `TSOY.CLOUD`. · В `views/notifications.php` fallback `new Notification(...)` переведён на бренд из `window.__TSOY_NOTIFY`. · В `views/partials/scripts.php` helper `__tsoyNotifyTitle()` теперь использует `siteHeaderName` раньше `siteName`.
Релиз v3.5.10
2026-02-23

Релиз v3.5.10

В диагностике push-устройств добавлена агрегированная сводка по всем подпискам: `payload success rate`, `fallback rate`, `error rate` и общие счётчики попыток. · Добавлен мини-график/спарклайн по дням (14 дней): stacked bars `payload / wake / errors`, где высота столбца показывает объём попыток за день. · В `app/push.php` `push_queue_stats()` расширен блоком `delivery_summary`, который агрегирует `push_stat_*` по всем push-подпискам и считает проценты (`payload/fallback/error`). · Добавлена таблица/миграция `push_delivery_daily_stats` и запись дневной статистики при реальных отправках push (`payload/wake/fallback/error`).
Релиз v3.5.11
2026-02-23

Релиз v3.5.11

Страница `Настройки` в дашборде больше не выглядит как сплошная простыня: добавлен блок быстрых переходов по разделам (якоря) и группировка по логическим секциям. · Появились явные секции: основные параметры, дизайн/уведомления, PWA/push, функции/звонки/диагностика — ориентироваться в настройках стало заметно проще. · В `views/admin_settings.php` добавлены якоря (`id`) для ключевых блоков настроек и верхняя навигационная панель без изменения backend-логики сохранения формы. · Страница сохранена как единая форма `admin_settings`, поэтому существующие `POST`-обработчики, `formaction` для push-диагностики и CSRF-проверки продолжают работать без миграций.
Релиз v3.5.12
2026-02-23

Релиз v3.5.12

Hotfix страницы `Настройки`: быстрые переходы по разделам теперь ведут в нужные блоки страницы, а не в корень сайта. · Убран sticky-режим блока `Разделы настроек`, из-за которого он перекрывал интерфейс при прокрутке. · В `views/admin_settings.php` ссылки разделов переведены с hash-only (`#...`) на route-aware (`index.php?r=admin_settings#...`) для корректной работы при наличии `<base>`/нестандартного base path. · Снята sticky-позиция с `admin-settings-nav-card` (оставлен статичный блок), чтобы навигация не накрывала карточки настроек ниже по странице.
Релиз v3.5.13
2026-02-23

Релиз v3.5.13

Страница `Настройки` переделана в Android-style режим: слева список разделов, справа показывается только выбранный раздел настроек. · Переключение разделов теперь происходит без переходов по странице/якорям; интерфейс не перекрывается и не дёргается. · В `views/admin_settings.php` реализован client-side секционный контроллер (`data-settings-nav` / `data-settings-section`) с переключением видимости блоков внутри одной формы. · Сохранена совместимость с текущим backend `admin_settings`: `POST`-логика, `formaction` кнопки push-диагностики и CSRF-проверка не менялись.
Релиз v3.5.14
2026-02-23

Релиз v3.5.14

В разделе `Система` настроек добавлен выпадающий список выбора часового пояса по Гринвичу (GMT/UTC offsets). · При выборе смещения из списка значение автоматически подставляется в поле часового пояса ниже, чтобы сохранить настройку одним кликом. · В `views/admin_settings.php` добавлена генерация preset-списка фиксированных зон `GMT-12 ... GMT+14` с валидными IANA-идентификаторами (`Etc/GMT±N`, `UTC`). · Добавлена JS-связка `systemTimezoneUtcPreset -> systemTimezoneInput`, которая подставляет выбранный preset в существующее поле `system_timezone` без изменений backend-валидации.
Релиз v3.5.15
2026-02-23

Релиз v3.5.15

Настройки переведены в Android-style режим с боковым меню разделов и вторым уровнем внутри `PWA и push` (`Обновления`, `Очередь push`, `Устройства`). · В главное меню добавлен отдельный пункт `Настройки` (после `Дашборд`), доступный всем авторизованным пользователям. · Добавлен route `settings` с доступом через `sections.settings`; legacy route `admin_settings` сохранён для совместимости админ-инструментов и внутренних redirect’ов. · `index.php` (`settings/admin_settings`) разделён по scope сохранения: личные настройки (theme + notify prefs) сохраняются всем ролям, глобальные админ-настройки — только при `admin.settings` и не в режиме `admin_tester`.
Релиз v3.5.16
2026-02-23

Релиз v3.5.16

Админские настройки физически разнесены по отдельным страницам (`Брендинг`, `Доступ и лимиты`, `Система`, `Оформление`, `PWA и push`, `Звонки/диагностика`, `База данных`) при сохранении общего бокового меню. · Переходы в меню настроек теперь открывают соответствующий экран, а не просто переключают внутренние блоки в одном и том же URL. · В `index.php` добавлены route-level страницы настроек (`settings_admin_*`) с capability-gates через `admin.settings`; legacy `admin_settings` сохранён и перенаправлен в режим `Брендинг` внутри общего шаблона. · В `views/admin_settings.php` реализована route-aware навигация: единый шаблон использует разные `action`/initial section в зависимости от текущего settings-route и корректно обрабатывает hash-переходы (`#pwa-notify-admin`, подпункты PWA и др.).
Релиз v3.5.17
2026-02-23

Релиз v3.5.17

Hotfix страницы `Настройки`: пункты бокового меню снова выглядят как кнопки (без подчёркиваний) и заполняют всю ширину колонки. · На desktop видимый раздел настроек теперь растягивается на всю доступную ширину правой панели (как `WebRTC`), а не остаётся половинной карточкой. · В `views/admin_settings.php` для `.admin-settings-side-btn` добавлены `display:block` и `text-decoration:none`, что устраняет регресс после перевода пунктов меню в `<a>`. · В JS-section режиме добавлен CSS override для `.js-settings-block.is-visible` внутри `.row`: `flex-basis/max-width:100%` (исправлен конфликт с Bootstrap `col-lg-6`).
Релиз v3.5.18
2026-02-23

Релиз v3.5.18

Hotfix страницы `Настройки`: в разделе `База данных` убрана лишняя горизонтальная линия перед карточкой блока. · Нижняя панель сохранения (`Сохраняются все изменённые поля...`) теперь подстраивается под тему оформления и остаётся читаемой в светлой и тёмной темах. · В `views/admin_settings.php` удалён лишний `<hr class=\"my-4\">` перед блоком `settings-db`. · Стили `admin-settings-savebar` переведены с жёстко тёмного фона (`rgba(20,22,30,...)`) на theme-aware фон через Bootstrap CSS variables (`--bs-body-bg-rgb`, `--bs-body-color`, `--bs-border-color-translucent`).
Релиз v3.6.0
2026-02-23

Релиз v3.6.0

Начат рефакторинг связки `Профиль / Контакты / Мессенджер`: на всех трёх экранах добавлен единый переключатель разделов (Social Hub) и явное описание роли каждого раздела. · `Профиль` теперь явно позиционируется как публичная страница пользователя (посты, медиа, страницы, друзья), `Контакты` — как каталог и управление связями, `Мессенджер` — как диалоги/вложения/звонки. · Добавлен reusable partial `views/partials/social_suite.php` (единый CSS для Social Hub: header/switcher/surfaces/role-map chips). · `views/profile.php`, `views/contacts.php`, `views/chat.php` подключены к `social_suite` и получили общий navigation shell без вмешательства в критичную mobile-геометрию композера мессенджера.
Релиз v3.6.1
2026-02-23

Релиз v3.6.1

Следующий шаг по связке `Контакты / Мессенджер`: в мессенджере блок `Быстрый старт` теперь показывает только контакты пользователя, а полный каталог вынесен в раздел `Контакты`. · В настройках исправлено выравнивание раздела `База данных`: карточка блока больше не поднимается выше меню слева. · В `views/chat.php` удалено дублирование каталога пользователей внутри мессенджера: список `Начать чат` переведён на `contacts_list($me_id)` + ссылка в `index.php?r=contacts`. · В `views/admin_settings.php` выровнен db-блок (`settings-db`) относительно общего grid/меню и обновлены подписи/подразделы блока дизайна (`ui/notify`) для разделения личных и глобальных настроек.
Релиз v3.6.2
2026-02-23

Релиз v3.6.2

Убран лишний `Social Hub` с экранов `Профиль / Контакты / Мессенджер`: переключение между разделами остаётся в основном меню, интерфейс снова стал компактнее. · В `Мессенджере` закреплена роль экрана: только активные диалоги и общение. Новый чат создаётся через раздел `Контакты`. · Удалён временный partial `views/partials/social_suite.php` и его подключения из `views/profile.php`, `views/contacts.php`, `views/chat.php` (откат лишнего UI-слоя без влияния на backend). · В `views/chat.php` удалён дублирующий сценарий старта чатов из списка пользователей/контактов: оставлен переход в `index.php?r=contacts` и история активных диалогов.
Релиз v3.6.3
2026-02-23

Релиз v3.6.3

Следующий шаг по связке `Контакты / Мессенджер`: в карточках пользователей на странице `Контакты` добавлены явные действия `Написать` и `Позвонить`. · Мессенджер очищен от каталоговых элементов: в боковой панели оставлены только активные диалоги, без блока быстрого старта/списков людей. · `index.php` (`chat_start` и `chat?start=`) теперь прокидывает `call=1` в итоговый URL диалога, чтобы из внешних экранов можно было запускать звонок напрямую. · В `views/contacts.php` унифицированы action-кнопки карточек (`Написать` / `Позвонить`) для списка контактов и каталога пользователей.
Релиз v3.6.4
2026-02-23

Релиз v3.6.4

Дожат интерфейс мессенджера под единый стиль с `Контактами`: обновлены список диалогов, шапка диалога и composer (кнопки, границы, поверхности, типографика). · Список диалогов стал визуально ближе к карточкам контактов: более ровные поверхности, одинаковая логика hover/active, читаемые превью и время. · Изменения сделаны только в `views/chat.php` на уровне CSS/визуальных состояний (`chat-dialog-item`, `chat-dialog-head`, `chat-inputbar`, action-buttons). · Мобильная геометрия ввода/клавиатуры (`fixed/sticky/viewport` логика, fullscreen layout цепочка) не изменялась, чтобы не вернуть iPhone-баг с \"подбородком\".
Релиз v3.6.5
2026-02-23

Релиз v3.6.5

Мессенджер получил второй visual-pass: доработаны карточки диалогов, шапка активного диалога, кнопки действий и composer для более цельного и лёгкого вида. · В списке диалогов добавлена компактная CTA-кнопка `Контакты` в шапке списка и более полезное пустое состояние с переходом в `Контакты`. · В `views/chat.php` расширен UI-only CSS слой (polish pass 2): `chat-list-headbar`, `chat-dialog-item`, `chat-dialog-head`, `chat-head-btn`, `chat-compose-btn` и density overrides. · Добавлены только безопасные классы/микроразметка в `views/chat.php` (CTA в списке диалогов, классы кнопок) без изменения маршрутов, логики сообщений и звонков.
Релиз v3.6.6
2026-02-23

Релиз v3.6.6

Hotfix iPhone/PWA уведомлений: системная строка `from ...` теперь берёт бренд из настроек (`Название в шапке` → `Название сайта`), а не из старого захардкоженного `TSOY.CLOUD`. · PWA meta-теги (`application-name`, `apple-mobile-web-app-title`) синхронизированы с брендингом проекта, чтобы имя приложения и имя в уведомлениях совпадали. · В `index.php` добавлен route `manifest`, который отдаёт динамический Web App Manifest на основе текущих настроек брендинга (`site_header_name` / `site_name`). · В `views/partials/head.php` `<link rel=\"manifest\">` переведён на динамический route с cache-bust (`APP_VERSION` + hash бренда); `application-name` и `apple-mobile-web-app-title` переведены на приоритет `site_header_name`.
Релиз v3.6.7
2026-02-23

Релиз v3.6.7

Исправлен мобильный overflow окна `Диалоги` в мессенджере: карточка списка диалогов больше не вылезает за ширину экрана на iPhone/смартфонах. · Стабилизирована ширина mobile-раскладки мессенджера без изменений логики клавиатуры и без риска вернуть баг с `подбородком`. · В `views/chat.php` для mobile добавлен точечный фикс ширины: убраны отрицательные отступы `row g-3` (Bootstrap gutter overflow) и зажаты `#chatListPane`/карточка/тело списка в `max-width:100%`. · Изменение ограничено CSS-слоем страницы чата; fullscreen/composer/`visualViewport` логика не изменялась.
Релиз v3.6.8
2026-02-23

Релиз v3.6.8

Ускорена отправка сообщений в мессенджере: сообщение появляется заметно быстрее после нажатия `Отправить`, без ощущения паузы в 2–3 секунды. · Повышена плавность UX при отправке: сервер отдаёт ответ чату сразу, а push-уведомления больше не держат отправку сообщения. · В `index.php` (`chat_send_async`) push для нового сообщения переведён в queue-first режим: уведомление ставится в очередь без синхронной отправки (`sendNow=false`). · HTTP-ответ `chat_send_async` теперь завершается до фоновой попытки dispatch push (`fastcgi_finish_request` / flush), чтобы Web Push не блокировал отображение сообщения.
Релиз v3.6.9
2026-02-23

Релиз v3.6.9

Подготовлен серверный фундамент чата для больших историй переписки (сотни тысяч/миллионы сообщений) без изменения привычного интерфейса. · Список диалогов и polling чата стали легче для сервера за счёт оптимизации хранения unread-состояния и индексов под крупные переписки. · В `conversations` добавлены денормализованные unread-счётчики (`u1_unread_count`, `u2_unread_count`) и метаданные последнего сообщения (`last_message_id`, `last_message_preview`). · В `app/chat.php` `message_send()` / `conversation_mark_read()` обновляют unread-счётчики диалога; `message_delete_for_me()` и `conversation_clear_for_me()` синхронизируют их через пересчёт/сброс.
Релиз v3.6.10
2026-02-23

Релиз v3.6.10

Полиш страницы `Контакты`: действия `Написать`, `Позвонить`, `Удалить` в карточках заменены на компактные иконки (конверт, трубка, корзина) для более чистого интерфейса. · Сохранены подсказки (`title`) и `aria-label`, чтобы UX остался понятным и доступным на ПК и мобильных устройствах. · В `views/contacts.php` добавлены `contacts-actions` и `contacts-action-icon` (theme/density-friendly размеры икон-кнопок), заменена текстовая разметка кнопок в списке `Мои контакты` и `Каталог пользователей`. · Логика маршрутов и действий (`chat_start`, `chat_start&call=1`, add/remove contact) не изменялась.
Релиз v3.6.11
2026-02-23

Релиз v3.6.11

Доведён UI действий в `Контактах`: кнопка `В контакты` заменена на иконку `человек+`, чтобы все действия в карточках были в одном визуальном языке. · Заголовок `Каталог пользователей` и кнопка `Найти` теперь находятся в одной строке, поле поиска вынесено отдельно ниже на полную ширину. · В `views/contacts.php` кнопка добавления контакта переведена на `bi-person-plus` с `title`/`aria-label`; сохранена существующая POST-логика `action=add`. · Поиск в каталоге использует `form=\"contactsSearchForm\"` у кнопки `Найти`, чтобы держать правильную desktop/mobile компоновку без изменения backend-маршрута `contacts`.
Релиз v3.6.12
2026-02-23

Релиз v3.6.12

Системные файлы проекта (логотип, favicon, кастомные звуки уведомлений/звонка и служебные ассеты спец-регистрации) переведены в единую системную папку `public/system/...`. · Старые пути (`public/branding`, `public/sounds`, `public/friend_register`) автоматически и мягко переносятся в новую системную структуру при запуске приложения. · Добавлен `app/system_assets.php`: единый helper для системных ассетов (безопасное сохранение upload-файлов, удаление только из разрешённых системных директорий, миграция legacy-путей). · В `index.php` (`admin_settings`) загрузка логотипа, favicon и кастомных рингтонов переведена на `system_assets_store_upload(...)` с хранением в `public/system/branding` и `public/system/sounds`.
Релиз v3.6.13
2026-02-23

Релиз v3.6.13

В настройках переработан раздел `Внешний вид`: вместо разрозненных пунктов `Внешний вид профиля` и `Внешний вид сайта` появился единый раздел `Внешний вид` с подпунктами (профиль / сайт / стиль уведомлений). · Для глобального оформления сайта добавлены готовые профили внешнего вида (несколько пресетов под разные сценарии: чистый, рабочий, чтение, мягкий, ночной, psychedelic). · Добавлен helper `ui_appearance_profiles()` в `app/bootstrap.php` с готовыми профилями оформления и пакетами значений для `ui_*` настроек. · В `views/admin_settings.php` объединена навигация дизайна в один top-level `Внешний вид`, добавлен UI выбора/подстановки профиля оформления и обновлены кириллические шрифтовые опции.
Релиз v3.6.14
2026-02-23

Релиз v3.6.14

Исправлен UX профиля: кнопка `Написать` больше не отображается на собственной карточке профиля. · У вложений постов в обычном просмотре убраны кнопки `Удалить`: удаление доступно только в режиме редактирования поста. · В `views/profile.php` кнопка перехода в чат скрыта для `is_self`. · Из обычного рендера вложений в `views/profile.php` удалены формы `post_attachment_delete`; удаление оставлено в edit-блоке (`js-del-att`).
Релиз v3.6.15
2026-02-23

Релиз v3.6.15

В личном разделе `Настройки -> Внешний вид` добавлены персональные режимы основного бокового меню: `показывать всегда`, `скрывать всегда`, `по кнопке`. · Для публичной страницы профиля добавлена персональная настройка вида для гостей: `показывать боковое меню`, `скрывать боковое меню`, `скрывать боковое меню и шапку сайта`. · В `users` добавлены персональные UI-поля `ui_sidebar_mode` и `guest_profile_chrome_mode` (миграции в `app/migrations.php`). · В `index.php` (`settings`) сохранение пользовательских настроек расширено: добавлен `user_update_ui_prefs(...)` и синхронизация значений в session snapshot.
Релиз v3.6.16
2026-02-23

Релиз v3.6.16

В мессенджере добавлено контекстное меню сообщения по правой кнопке мыши и по удержанию на мобильных устройствах. · Меню действий сообщения теперь включает `Изменить`, `Удалить`, `Цитировать` и `Реакция` (с выбором emoji). · Добавлена таблица `message_reactions` (MySQL/SQLite) и миграции/индексы в `app/migrations.php`. · В `app/chat.php` добавлены batch-подгрузка реакций для пачек сообщений (`chat_messages_payload_for_client`) и `message_reaction_toggle(...)`.
Релиз v3.6.17
2026-02-23

Релиз v3.6.17

В мессенджере у сообщений добавлена маленькая галочка статуса прочтения (`прочитано / не прочитано`). · Галочка отображается у ваших сообщений и обновляется в диалоге автоматически, когда собеседник читает чат. · В `app/chat.php` в payload сообщений добавлен `is_read`, а также helper `conversation_last_read_sent_message_id(...)` для лёгкого read-receipt sync. · В `chat_send_async` и `chat_messages_poll` (`index.php`) добавлен `read_upto_own_id`, чтобы фронт мог обновлять статусы уже отрисованных сообщений без перезагрузки.
Релиз v3.6.18
2026-02-23

Релиз v3.6.18

В контекстное меню сообщения мессенджера добавлен пункт `Будильник` (пинг-напоминание). · Будильник доступен для ваших сообщений и отправляет повторное уведомление собеседнику только если сообщение ещё не прочитано. · Добавлен route `chat_message_nudge` в `index.php` с проверками: сообщение принадлежит текущему пользователю, находится в этом диалоге и ещё не прочитано. · В `app/push.php` добавлен `push_notify_chat_message_reminder(...)` с отдельным типом `chat_nudge` и dedupe tag по сообщению.
Релиз v3.6.19
2026-02-23

Релиз v3.6.19

Начато внедрение голосовых сообщений в мессенджер: добавлена красная кнопка микрофона и аккуратное окно записи. · Голос записывается прямо в браузере/на устройстве и прикрепляется к сообщению как аудио-вложение. · В `views/chat.php` добавлены voice-recorder modal, UI состояния записи и интеграция с `MediaRecorder` (MVP) без изменения keyboard/fullscreen геометрии чата. · Записанный blob прикрепляется через существующий `chatFileInput` (`DataTransfer`) и уходит в уже существующий backend upload flow `chat_send_async` / `message_send`.
Релиз v3.6.20
2026-02-23

Релиз v3.6.20

Добавлен глобальный preloader при загрузке страниц сайта: пользователь видит аккуратный индикатор загрузки вместо “пустого” экрана. · Для PWA добавлен отдельный режим preloader `Идёт установка приложения…` при установке через системную кнопку. · В `views/partials/head.php` добавлен theme-aware overlay `#tsoyPreloader` (общий для сайта и установщика), работающий в светлой/тёмной теме без жёстко тёмного фона. · В `views/partials/scripts.php` добавлен runtime `window.__TSOY_PRELOADER` (show/hide/set) с автоскрытием после загрузки, показом на внутренних переходах и submit-формах (кроме AJAX submit с `preventDefault`).
Релиз v3.6.21
2026-02-23

Релиз v3.6.21

Исправлено переключение разделов в настройках: секции теперь открываются без ощущения полной перезагрузки страницы. · В `Контактах` длинные имена пользователей больше не раздвигают и не перестраивают иконки действий: текст ужимается/переносится внутри текстовой зоны, а кнопки остаются на месте. · В `views/admin_settings.php` клики по боковому меню настроек переведены на client-side section switch (`history.pushState`) вместо обязательной навигации по `settings_admin_*` route; `form action` динамически переключается по секции, поэтому сохранение остаётся корректным. · В `views/contacts.php` добавлены отдельные классы текстовой зоны (`contacts-person-*`), `contacts-actions` переведён в `nowrap`/`flex-shrink:0`, а длинные имена ограничены в 1–2 строки без сдвига иконок.
Релиз v3.6.22
2026-02-23

Релиз v3.6.22

Hotfix preloader: убран автопоказ на каждый внутренний клик, поэтому переключение секций настроек и переходы между чатами больше не должны “подвисать” из-за overlay. · Preloader сохранён там, где он реально полезен: первичная загрузка страницы, установка сайта и установка PWA. · В `views/partials/scripts.php` глобальный preloader переведён в explicit-flow режим: отключён автоперехват всех внутренних ссылок и обычных submit-форм. · Автопоказ preloader оставлен только для `install.php` submit и для форм с `data-preloader=\"1\"`; PWA install flow (`beforeinstallprompt`) сохранён отдельно.
Релиз v3.6.23
2026-02-23

Релиз v3.6.23

В `Профиле` длинные тексты в карточках друзей/страниц и в постах ведут себя аккуратнее: текст ужимается/переносится внутри своей зоны и не ломает действия/бейджи. · В `install.php` добавлена мини-анимация этапов установки (БД → миграции → админ → готово) с синхронизацией текста в preloader. · В `views/profile.php` добавлены clamp/overflow правила для карточек друзей/страниц и фикс action-зон в постах, чтобы длинные строки не выталкивали элементы интерфейса. · В `install.php` реализован submit-time stepper без изменения backend-логики: этапы анимируются на клиенте и обновляют `__TSOY_PRELOADER` в режиме `install-site`.
Релиз v3.6.24
2026-02-23

Релиз v3.6.24

Hotfix preloader: страницы `Профиль` и `Мессенджер` открываются заметно быстрее, overlay загрузки больше не ждёт долго все картинки/медиа. · Preloader теперь скрывается на этапе готовности DOM, а не только после полного `window.load`. · В `views/partials/scripts.php` логика initial preloader boot переведена на `DOMContentLoaded`/`interactive` + `requestAnimationFrame`, чтобы не блокировать UI на медиа-насыщенных страницах. · `window.load` и `pageshow` оставлены только как fallback-сигналы; добавлен hard fail-safe timeout на случай странных браузерных зависаний событий.
Релиз v3.6.25
2026-02-23

Релиз v3.6.25

Hotfix голосовых сообщений: голосовые `.webm` в мессенджере теперь отображаются плеером, а не только ссылкой на файл. · Фикс работает и для уже отправленных голосовых (по имени `voice_message_*`), и для новых записей. · В `app/files.php` добавлена нормализация MIME для browser voice-notes (`voice_message_*`), чтобы `.webm/.ogg/.m4a` не сохранялись как generic/video MIME. · В `app/chat.php` добавлен helper `chat_file_is_audio_like(...)`, а payload чата теперь отдаёт `file_is_audio` для корректного client render старых и новых голосовых.
Релиз v3.6.26
2026-02-23

Релиз v3.6.26

На главной странице блок недавних файлов больше не растягивает экран вниз: по умолчанию показываются первые 3 файла. · Остальные файлы открываются кнопкой `Показать ещё файлы` (порциями по 3), как в разделе новостей. · В `views/home.php` лента файлов переведена на существующий механизм `data-load-more-root` из `views/layout.php` без добавления нового JS-кода. · Для элементов файлов добавлено серверное начальное скрытие (`d-none`) после первых 3 записей, чтобы список был компактным сразу при рендере страницы.
Релиз v3.6.27
2026-02-23

Релиз v3.6.27

Hotfix голосовых сообщений в мессенджере: voice-notes отображаются компактной одной строкой без второй строки с именем файла. · Визуал голосового сообщения стал тоньше и аккуратнее, ближе к обычной строке сообщения. · В `views/chat.php` voice-note рендер (`voice_message_*`) уже использует отдельный inline-layout без file-link; в релиз включён hotfix компактности CSS (`.chat-voice-inline-row`, `.chat-audio-clip.is-voice-note`). · Серверный и polling JS рендеры голосовых сообщений синхронизированы: для voice-notes не выводится отдельная строка имени файла.
Релиз v3.6.28
2026-02-23

Релиз v3.6.28

Голосовые сообщения в мессенджере: один тап по микрофону запускает запись, повторный тап останавливает запись и сразу отправляет голосовое. · Если запись не удалось отправить автоматически, голосовое остаётся прикреплённым в composer и можно отправить вручную. · В `views/chat.php` обычный click/tap микрофона переведён на toggle-логику записи (`start/stop+auto-send`) без изменения mobile composer/fullscreen геометрии. · Добавлен helper программной отправки через существующий async submit (`chat_send_async`) после авто-прикрепления voice blob в composer.
Релиз v3.6.29
2026-02-23

Релиз v3.6.29

Голосовые сообщения в чате теперь воспроизводятся одинаково на ПК и телефоне: компактной одной кнопкой play/pause. · У voice-note больше нет зависимости от урезанных native audio-controls браузера на десктопе. · В `views/chat.php` voice-notes (`voice_message_*`) переведены на custom mini-player (кнопка + hidden audio) в server-side и polling-render. · Добавлена JS-делегация управления воспроизведением (play/pause, синхронизация иконки, автопауза предыдущего голосового).
Релиз v3.6.30
2026-02-23

Релиз v3.6.30

В `Настройки -> Внешний вид` добавлены персональные настройки preloader: режим (`умный / только установка-PWA / выключить`), компактный вид и показ текста. · Preloader теперь можно настроить под себя по каждому профилю аккаунта (профиль = отдельный user). · В `users` добавлены персональные UI-поля preloader (`ui_preloader_mode`, `ui_preloader_compact`, `ui_preloader_show_text`) с загрузкой в session snapshot и применением в `views/partials/scripts.php`. · В `views/partials/head.php` добавлены вариации preloader (`compact`, скрытие текста), а runtime учитывает пользовательский режим без ломки install/PWA сценариев.
Релиз v3.6.31
2026-02-23

Релиз v3.6.31

Hotfix голосовых сообщений на телефоне: mini-player voice-note снова стабильно воспроизводится по тапу. · Поведение mini-player синхронизировано для mobile/desktop (play/pause одной кнопкой). · В `views/chat.php` для voice mini-player добавлен mobile-safe `touchend` handler с подавлением дубля `click`, чтобы iPhone/Safari не терял тап. · Скрытый `<audio>` переведён с `display:none` на visually-hidden класс; добавлен `audio.load()` перед `play()` для лучшей совместимости мобильных браузеров.
Релиз v3.6.32
2026-02-23

Релиз v3.6.32

В Брендинге добавлена отдельная настройка `Иконка PWA` (опционально) для установленного приложения. · Если PWA-иконка не задана, приложение теперь использует `favicon`, а затем `лого` как fallback. · Route `index.php?r=manifest` теперь динамически подменяет `icons` (и shortcut icons) из настроек брендинга вместо жёстких `/public/icons/...`. · В `views/partials/head.php` `apple-touch-icon` переведены на динамический PWA icon с cache-bust, а `manifest` cache-bust учитывает смену иконки.
Релиз v3.6.33
2026-02-23

Релиз v3.6.33

В PWA исправлен просмотр файлов: теперь файл открывается во встроенной странице-просмотрщике с кнопкой `Назад`, а не “захватывает” приложение без пути назад. · Кнопка `Открыть` в файловом проводнике тоже использует этот встроенный просмотр в standalone/PWA. · Добавлен route `index.php?r=file_viewer` с безопасной проверкой доступа к файлу и возвратом по `back` URL. · В `views/partials/scripts.php` добавлен standalone-PWA перехват ссылок `index.php?r=view&id=...` с перенаправлением во встроенный просмотрщик вместо raw-file response.
Релиз v3.6.34
2026-02-23

Релиз v3.6.34

Hotfix mini-плеера голосовых на телефоне: воспроизведение по тапу снова стабильно запускается. · Поведение mini-player выровнено между iPhone/Android и ПК (одна кнопка play/pause). · В `views/chat.php` mini-player получил прямые обработчики `touchend/click` на кнопке (а не только делегирование через контейнер сообщений) с защитой от двойного срабатывания. · Убран рискованный pre-play `audio.load()` как основной путь; добавлен fallback reload только при ошибке `play()`.
Релиз v4.0.0
2026-02-27

Релиз v4.0.0

Новый формат приложения `messenger`: отдельный упрощённый режим только для Контактов и Мессенджера с прямым открытием чата. · Страница `Админ → Пользователи` полностью переработана: аккаунт и его профили теперь управляются в одной карточке. · В модель пользователей добавлены `app_mode`, `group_id`, `group_role`, `allow_multiprofile`, `admin_password_hint`; добавлены таблицы `groups`, `group_members`, `group_bridges` и миграции/индексы для них. · Реализована backend-видимость по группам и мостам в `users_directory`, `contacts_list`, `conversation_get_or_create`, `conversations_for_user` и проверках `chat_start`/добавления контактов.
Релиз v4.1.0
2026-02-28

Релиз v4.1.0

Управление группами и мостами вынесено в отдельную страницу `Дашборд → Группы и мосты` с полным управлением: создание, переименование, удаление групп и мостов, просмотр участников. · Страница `Пользователи` очищена от группового управления, оставлены только аккаунты и создание; добавлена ссылка на новую страницу групп. · Добавлены backend-функции `group_rename()`, `group_delete()`, `group_bridge_delete()` в `app/users.php` для полного CRUD-управления группами и мостами. · Новый route `admin_groups` в `index.php` с POST-обработчиками: `create_group`, `rename_group`, `delete_group`, `set_bridge`, `delete_bridge`.
Релиз v4.2.0
2026-02-27

Релиз v4.2.0

В мессенджере при записи голосового сообщения появляется красная кнопка-корзина для отмены записи (как в Telegram). Работает и при тапе, и при удержании. · Добавлена функция «Удалить у всех»: отправитель может удалить своё сообщение не только для себя, но и для собеседника. · Добавлена кнопка `#voiceCancelBtn` (`.chat-voice-cancel-btn`) в inputbar мессенджера; появляется при `voiceTapRecording`/`voiceHoldRecording`, вызывает `voiceRecResetState()` для отмены. · В `app/chat.php` добавлена `message_delete_for_all()` — физическое удаление сообщения и его реакций; доступно только отправителю.
Релиз v4.3.0
2026-02-27

Релиз v4.3.0

Создана отдельная страница «Новости» со всеми админ- и системными новостями, пагинацией и кнопкой «Показать ещё». · На дашборде в блоке «Новости» теперь показываются только 2 последних записи и ссылка «Все новости →». · Создан `views/news.php` — standalone-страница новостей с `page_top`, раздельными блоками admin/system news и load-more (initial=10). · Добавлен маршрут `case "news"` в `index.php` затягивающий `views/news.php`.
Релиз v4.4.0
2026-02-28

Релиз v4.4.0

Администрирование новостей вынесено из дашборда сотрудников на отдельную страницу с полным CRUD (создание, чтение, редактирование, удаление). · Файловый проводник «Мои файлы» полностью переписан: карточный/списочный вид, drag-n-drop файлов в папки, зона загрузки, контекстное меню, иконки по типу файла, переключатель grid/list. · В `app/news.php` добавлены `news_get()` и `news_update()` для CRUD новостей. · В `index.php` добавлен маршрут `news_update` (POST, csrf, audit_log).
Релиз v4.5.0
2026-02-28

Релиз v4.5.0

Мессенджер переработан в стиле Telegram: кнопка «корзина» при записи голосового теперь слева, заголовок чата стал overlay поверх сообщений (больше полезной площади), упрощённый хедер (только «Назад» + имя/аватар). · Нажатие на имя/аватар в чате открывает карточку пользователя (Telegram-style slide-in панель) с действиями: звонок, ссылка, профиль, очистить чат. · `views/chat.php` — voiceCancelBtn перемещён перед attachBtn в HTML (trash слева при записи). · `views/chat.php` — заменён `.chat-dialog-head` на `.chat-overlay-head` (position: absolute, backdrop-filter, overlay поверх сообщений).
Релиз v4.6.0
2026-02-28

Релиз v4.6.0

Создана единая дизайн-система проекта (14 переиспользуемых компонентов): карточки, hover-эффекты, стеклянные панели, навигация, статусные индикаторы, зоны загрузки и др. · Unification поверхностных переменных (light/dark × soft/balanced/strong) — 6 тем теперь задаются в одном месте вместо дублирования в каждом view. · Создан `public/css/design-system.css` (382 строки, 14 компонентов): `.t-surface`, `.t-stat-card`/`.t-stat-grid`, `.t-card-hover`, `.t-info-card`, `.t-card-frosted`, `.t-section`/`.t-section-title`, `.t-page-border`, `.t-summary-grid`, `.t-status-pill`, `.t-list-hover`, `.t-status-dot`, `.t-sticky-bar`, `.t-nav-item`, `.t-upload-zone`. · В `views/partials/head.php` подключён `public/css/design-system.css` перед inline `<style>`.
Релиз v5.0.0
2026-03-01

Релиз v5.0.0

Система «Группы» переименована в «Домены» — организационные единицы теперь называются доменами. · Маршрут `admin_groups` → `admin_domains`; навигация, дашборд и все UI-тексты обновлены. · Миграция БД: таблицы `groups`→`domains`, `group_bridges`→`domain_bridges`, `group_members`→`domain_members`; колонки `group_id`→`domain_id`, `group_role`→`domain_role`, `is_global_group`→`is_root_domain`, `group_a_id`→`domain_a_id`, `group_b_id`→`domain_b_id`. · Поддержка MySQL и SQLite: `ALTER TABLE RENAME`, `RENAME COLUMN` / `CHANGE COLUMN` в зависимости от драйвера.
Релиз v5.1.0
2026-03-01

Релиз v5.1.0

Маршрут `dashboard` (файловый проводник) переименован в `skybox` — SkyBox, личное облачное хранилище. · Маршрут `staff` (панель администратора) переименован в `dashboard` — Дашборд. · `views/dashboard.php` → `views/skybox.php`; `views/staff.php` → `views/dashboard.php`; `views/admin.php` → `views/filehub.php`. · `index.php`: маршруты, capability map, case-блоки и все redirect/fallback URL обновлены.
Релиз v5.2.0
2026-03-01

Релиз v5.2.0

FileHub переписан на единый с SkyBox карточный интерфейс (grid/list, sidebar, поиск, breadcrumbs). · Выпадающее меню профиля полностью переработано: чистый список ссылок, компактное переключение профилей, убрана сетка кнопок. · `views/filehub.php` переписан с табличной разметки на `cloud-file-grid`/`cloud-file-card` из SkyBox. · `views/layout.php`: dropdown `.topbar-profile-menu` и модальное окно `#userProfilesModal` заменены новой разметкой с `.tpm-*` и `.upm-*` классами.
Релиз v5.3.0
2026-03-01

Релиз v5.3.0

Поле «Отображаемое имя» разделено на «Имя» и «Фамилия» — два отдельных поля повсюду в системе. · При регистрации теперь обязательно указать имя и фамилию. · Миграция: добавлены колонки `first_name` и `last_name` в таблицу `users`. · Колонка `display_name` сохранена для обратной совместимости — автоматически вычисляется из `first_name + last_name`.
Релиз v5.4.0
2026-03-01

Релиз v5.4.0

Настройка Preloader перенесена из личных настроек пользователя в глобальные настройки администратора (раздел «Дизайн»). · Push-подписки: автоматическая дедупликация устройств — при переподписке с того же устройства старая подписка заменяется. · Preloader: параметры `preloader_mode`, `preloader_compact`, `preloader_show_text` перенесены в таблицу `settings`. · Per-user параметры `ui_preloader_mode`, `ui_preloader_compact`, `ui_preloader_show_text` больше не используются (колонки сохранены для совместимости).
Релиз v5.5.0
2026-03-02

Релиз v5.5.0

Защита от брутфорса: ограничение попыток входа (5 за 15 мин) с автоматической блокировкой по IP+логину. · Минимальная длина пароля — 8 символов (регистрация, смена пароля, создание пользователя). · Security headers: X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, HSTS. · .htaccess deny для директорий `app/` и `storage/` — прямой доступ запрещён.
Релиз v5.6.0
2026-02-28

Релиз v5.6.0

Редактирование профиля: страница переверстана на CSS Grid — блоки «Смена пароля» и «Уведомления» теперь в боковой колонке справа (1fr + 380px). · Политики: галочки для admin и admin_tester разблокированы при редактировании global_admin. · Новые функции: `user_role_rank()`, `user_can_see_password()`, `user_get_password_hint()`, `domain_get_by_code()`, `domain_generate_short_code()`, `domain_regen_code()`. · `domain_create()` генерирует уникальный 3-char код вместо slug-транслитерации.
Релиз v5.7.0
2026-02-28

Релиз v5.7.0

Дашборд: полностью переработанная панель с KPI-виджетами — пользователи, сообщения, файлы, контент, звонки, аудит. · Дашборд: лента последних действий (10 записей) с иконками по типу операции и карточка «Новые пользователи». · Новая функция `dashboard_stats()` в `app/health.php` — агрегированная статистика из 15+ таблиц за один вызов. · Настройки дашборда: `dashboard_widgets_json`, `dashboard_refresh_interval`, `dashboard_show_activity`, `dashboard_compact` в `settings_defaults()`.
Релиз v5.8.0
2026-02-28

Релиз v5.8.0

Настройки: иконки Bootstrap Icons у каждого пункта сайдбара (палитра, щит, шестерёнка, телефон, БД и др.) во цветных плашках. · Настройки: быстрый поиск по всем разделам — поле с debounce-фильтрацией, счётчик совпадений, горячая клавиша Ctrl+K. · CSS: новые классы `.admin-settings-search`, `.admin-settings-side-icon`, `.admin-settings-section-hdr`, `.js-dirty-badge`, `.admin-settings-kbd-hint`. · CSS: анимация `settingsFadeIn` (opacity + translateY), `savebarPulse` для индикации dirty-state.
Релиз v5.8.1
2026-02-28

Релиз v5.8.1

Удаление пользователей: исправлен баг — удалённые пользователи теперь скрываются из основного списка, кнопка «Показать удалённых» для просмотра. · Удаление пользователей: бейдж «удалён» и кнопка «Восстановить» в карточке пользователя. · `users_accounts_with_profiles()` принимает параметр `$includeDeleted` — по умолчанию скрывает `is_deleted=1`. · Новая функция `user_restore()` для восстановления soft-deleted пользователей.
Релиз v5.8.2
2026-02-28

Релиз v5.8.2

Полное удаление аккаунта: администратор может безвозвратно удалить пользователя и все его данные (сообщения, файлы, посты, профили). · Полное удаление аккаунта: кнопка «Полное удаление» в панели управления пользователями с усиленным подтверждением. · Новая функция `user_delete_hard()` — полная очистка всех данных пользователя из 31+ таблиц и файловой системы (аватары, обложки, загруженные файлы). · Ручная очистка таблиц без FK CASCADE: `domain_members`, `short_links`, `boards`, `rtc_*` таблицы; nullify `created_by_user_id` в `domains` / `domain_bridges`.
Релиз v5.8.3
2026-02-28

Релиз v5.8.3

База данных: новая опция «Подключиться без миграции» — позволяет переключить конфиг на существующую БД с данными без переноса и без удаления данных. · Предотвращает потерю данных при повторном подключении к MySQL после обновления сайта (когда конфиг сбрасывается на SQLite). · Параметр `skip_migration` в admin_db POST-обработчике: проверяет подключение, запускает `ensure_schema()` (CREATE IF NOT EXISTS + инкрементальные миграции) и `ensure_mysql_utf8mb4()`, но НЕ вызывает `migrate_database()` / `db_truncate()`. · Разрешена отправка формы при `target === current` в режиме reconnect (для переподключения к той же БД).
Релиз v5.8.4
2026-02-28

Релиз v5.8.4

Доменная изоляция: администратор домена теперь видит в разделе «Пользователи» только пользователей своего домена, а не всех. · Новая политика «Мосты для доменных администраторов» (Настройки → Доступ): не видеть / только просмотр / полный доступ к пользователям мостовых доменов. · `users_accounts_with_profiles()` принимает `?array $filterDomainIds` — SQL фильтрует `domain_id IN (…)`. · Новые хелперы: `is_root_domain_admin()`, `admin_bridged_domain_ids()`, `admin_visible_domain_ids()`, `admin_can_manage_user()`, `admin_can_view_user()`.
Релиз v5.8.5
2026-03-01

Релиз v5.8.5

Дашборд: статистика фильтруется по домену — администратор домена видит метрики только своего домена, а не всего сервиса. · Политики: доменные политики (мосты, корневой админ, домен по умолчанию) перенесены из Настроек на страницу «Политики» для единообразного управления. · Новая функция `dashboard_stats_for_domains(array $domainIds)` в `app/health.php` — статистика, ограниченная набором доменов. · `views/dashboard.php` использует `admin_visible_domain_ids()` для выбора `dashboard_stats()` или `dashboard_stats_for_domains()`.
Релиз v5.8.6
2026-03-01

Релиз v5.8.6

Мессенджер: полная переработка интерфейса в стиле Telegram — боковой список диалогов, панель переписки, адаптивная мобильная раскладка. · Мессенджер: голосовые сообщения, эмодзи-пикер, вложения файлов из облака и устройства. · views/chat.php: 6589 → 2410 строк (−63%), IIFE-архитектура с 23 секциями, 98 функций, 51 слушателей событий. · views/profile.php: 2338 → 1247 строк (−47%), CSS-переменные через .pf-* namespace, Bootstrap 5.3.3 интеграция.
Релиз v5.8.7
2026-03-01

Релиз v5.8.7

Исправлена ошибка FK-ограничения при переключении с SQLite на MySQL: таблица news больше не требует существующего пользователя для системных записей. · news: author_user_id изменён с INT NOT NULL на INT NULL DEFAULT NULL; FK-ограничение fk_news_user удалено. · Миграция Stage 10.21: DROP FOREIGN KEY, MODIFY COLUMN, UPDATE author_user_id = 0 → NULL для существующих MySQL-установок.
Релиз v5.8.8
2026-03-01

Релиз v5.8.8

Исправлена ошибка «Incorrect string value» при переключении на MySQL: эмодзи в новостях и чейнджлоге теперь корректно сохраняются. · ensure_mysql_utf8mb4() вызывается ДО ensure_schema() — SET NAMES utf8mb4 теперь действует до любых INSERT. · Список таблиц в ensure_mysql_utf8mb4 расширен с 21 до 39 (добавлены domains, boards, push_*, short_links, profile_media_items и др.).
Релиз v5.8.9
2026-03-01

Релиз v5.8.9

Профиль: исправлено отображение аватара и обложки (неверное имя поля avatar_file_id → avatar_path). · Мессенджер: сообщения теперь отображаются в цветных облачках (свои — акцентные, чужие — серые). · profile.php: avatar_file_id → avatar_path, cover_file_id → cover_path (6 мест). · chat.php: добавлены CSS-классы msg-own / msg-other на элементы сообщений (PHP + JS).
Релиз v5.8.10
2026-03-01

Релиз v5.8.10

Мессенджер: окно чата теперь корректно помещается в экран на любом устройстве (ПК и мобильные). · layout.php: content-canvas-mode → flex column с height:100dvh для корректного заполнения viewport. · chat.php: messenger-shell заменён calc(100dvh-140px) на flex:1 + min-height:0 — автоматическое заполнение оставшегося пространства.
Релиз v5.8.11
2026-03-01

Релиз v5.8.11

Профиль: кнопка «Написать» теперь открывает диалог с пользователем, а не пустой мессенджер. · Мессенджер: заголовок «Мессенджер» скрывается когда активен диалог (и на ПК, и на мобильных) — больше места для сообщений. · profile.php: ссылка «Написать» peer= → user_id= (матчит параметр в chat_start роуте). · chat.php: .chat-page-head скрывается на всех брейкпоинтах когда есть активный чат (display:none!important).
Релиз v5.8.12
2026-03-01

Релиз v5.8.12

Мессенджер: заголовок скрыт на мобильных — диалоги занимают весь экран. · Мессенджер: кнопка действий (⋯) теперь внутри облачка сообщения, а не за его пределами. · chat.php: .chat-page-head display:none!important на @media ≤991.98px (скрыт всегда на мобильных). · chat.php: .msg-actions-btn перенесён внутрь bubble (top:.25rem right:.25rem вместо left/right:-.8rem).
Релиз v5.8.13
2026-03-01

Релиз v5.8.13

Мессенджер: панель ввода теперь всегда видна на экране, страница не прокручивается. · layout.php: html/body/app-shell получают height:100dvh + overflow:hidden через :has(.content-canvas-mode). · layout.php: sidebar ограничен 100dvh с overflow-y:auto в canvas-режиме.
Релиз v5.8.14
2026-03-02

Релиз v5.8.14

Мессенджер: исправлены read receipts — отметка «прочитано» снова обновляется без перезагрузки страницы. · Мессенджер: исправлен экран звонка — окно звонка теперь корректно открывается и закрывается. · index.php: добавлен JSON endpoint `chat_mark_read` (CSRF + проверка участника диалога). · index.php: добавлен route `chat_file` для `admin_chat_view` с проверкой прав `admin/users`.
Релиз v5.8.15
2026-03-02

Релиз v5.8.15

Мессенджер: панель ввода закреплена внизу экрана на ПК и мобильных, без провала по высоте. · Мессенджер: кнопки отправки/микрофона снова работают по ожидаемой логике (пусто — микрофон, есть текст — отправка). · views/chat.php: выровнена мобильная/desktop вёрстка compose-зоны, исправлены conditionals рендера send/mic. · views/chat.php: интегрирован Picmo (`public/vendor/picmo/*`) вместо тяжёлого рантайма старого picker.
Релиз v5.8.16
2026-03-02

Релиз v5.8.16

Звонки в мессенджере: исправлен сценарий «Связь: ожидание» без подключения — звонки снова устанавливаются. · Мессенджер на телефоне: устранён правый зазор, чат и зона ввода снова растягиваются на всю ширину экрана. · index.php: call/rtc роуты добавлены в whitelist messenger-mode (`call_start/call_poll/call_signal_send/...`) — больше нет редиректа в HTML для JSON API. · app/chat.php: `call_is_participant()` получил fallback на `caller/callee` для legacy/частично мигрированных записей `rtc_call_members`.
Релиз v5.8.17
2026-03-02

Релиз v5.8.17

Мобильный чат: устранён нижний «подбородок» и восстановлена корректная полноэкранная геометрия в mobile/PWA. · Мессенджер: новые сообщения снова появляются строго снизу, история подгружается только вверх. · views/chat.php: mobile fullscreen переведён на единый safe-area (компенсация только в composer), `body.chat-mobile-fullscreen` больше не дублирует нижний inset. · views/chat.php: `chatJumpBottom` вынесен из потока сообщений; `appendMessages()` всегда добавляет в конец, `prependMessages()` — только в начало.
Релиз v5.8.18
2026-03-02

Релиз v5.8.18

Обновления больше не переключают рабочий сайт с MySQL на SQLite после распаковки релиза. · Первичный запуск корректно открывает установщик, если реальная конфигурация БД отсутствует. · scripts/make-release.ps1: исключено принудительное добавление `storage/config.php` в релиз (опционально только через `-IncludeRuntimeConfig`). · app/core.php: `is_installed()` переведён на валидацию конфигурации (`mysql` поля / наличие sqlite-файла), а не на простой факт существования `storage/config.php`.
Релиз v5.8.19
2026-03-02

Релиз v5.8.19

Мобильный мессенджер: исправлена геометрия fullscreen-чата на телефоне — убран нижний «подбородок», зона ввода прижата к низу и корректно следует за клавиатурой. · Мессенджер: устранены повторяющиеся day-divider при отправке новых сообщений в текущий день. · views/chat.php: mobile fullscreen переведён на `inset + --chat-vv-bottom` (keyboard gap) вместо `top/height`, убраны лишние `100vw` ограничения и правый зазор. · views/chat.php: day-divider логика нормализована через `normalizeDayToken()` + `lastRenderedDayToken()`; `appendMessages()` больше не создаёт лишние разделители дат.
Релиз v5.8.20
2026-03-02

Релиз v5.8.20

Исправлен критичный сбой `CSRF token mismatch` после регистрации/авторизации в мобильных webview (включая Telegram/iOS). · Формы входа/регистрации/спец-регистрации и инсталлятора стали устойчивее к возврату из кеша страницы. · app/bootstrap.php: CSRF переведён на rolling-пул токенов (`csrf_tokens`) + восстановление из cookie при потере session. · app/bootstrap.php: добавлен fallback по нескольким именам CSRF-cookie (`__Host-*` и non-host) для mixed HTTPS/proxy окружений.
Релиз v5.8.21
2026-03-02

Релиз v5.8.21

Версия на сайте теперь корректно обновляется после деплоя релиза на Linux-серверы. · Тех. релиз и системная новость для текущей версии автоматически появляются в интерфейсе без ручного добавления. · scripts/make-release.ps1: сборка ZIP переписана на явное добавление файлов с POSIX-путями (`/`) вместо Windows-разделителей (`\`). · app/news.php: добавлена `news_sync_builtin_releases_for_version(APP_VERSION)` — дозапись встроенных `system/changelog` записей для текущей версии в существующие БД.
Релиз v5.8.22
2026-03-02

Релиз v5.8.22

Исправлена диагностика обновлений: теперь легко проверить, какая версия реально работает на сервере. · Уточнён и зафиксирован безопасный деплой-процесс для production, чтобы версия в подвале и техрелизы всегда обновлялись. · index.php и install.php: добавлен HTTP-заголовок `X-TSOY-Version` с текущим `APP_VERSION` для быстрой проверки фактической версии после деплоя. · README.md: добавлены инструкции проверки версии через `curl -I` и очистки артефактов старых Windows-архивов (`*\\*`) на Linux.
Релиз v5.8.23
2026-03-02

Релиз v5.8.23

Стабилизирована работа проекта за reverse-proxy/CDN: HTTPS-ссылки и cookie теперь формируются корректно в проксированных окружениях. · Снижён риск проблем с логином/CSRF/выходом из-за неверного определения схемы запроса. · app/core.php: добавлены `request_is_https()` и `request_scheme()` с поддержкой `HTTPS`, `X-Forwarded-Proto`, `X-Forwarded-SSL`, `Front-End-Https`. · app/bootstrap.php, app/auth.php, app/utils.php: secure-cookie логика переведена на единый helper (session/theme/csrf/guest token).
Релиз v5.8.24
2026-03-02

Релиз v5.8.24

Исправлен критичный фатал после деплоя: сайт снова открывается штатно (без `Call to undefined function request_is_https()`). · app/bootstrap.php: загрузка `app/core.php` перенесена в начало файла, до первого вызова `request_is_https()`. · Исправлен порядок инициализации bootstrap для совместимости с production-окружениями при `require_once app/bootstrap.php` из `index.php`.
Релиз v5.8.25
2026-03-02

Релиз v5.8.25

Админка БД: добавлен анализ потенциально неиспользуемых колонок прямо в разделе `/index.php?r=admin_db`. · Удаление колонок переведено в безопасный режим: только после явного подтверждения и только для проверенных случаев. · app/admin_maintenance.php: добавлены `admin_db_unused_columns_report()` и `admin_db_drop_column()` с эвристическим сканом кода проекта. · Проверки удаления: защита критичных имён (`id`, `*_id`, `*_at`), блокировка при индексах/PK/FK и повторная проверка использования в коде.
Релиз v5.8.26
2026-03-02

Релиз v5.8.26

Админка БД: упрощён процесс массового удаления ненужных таблиц. · Теперь можно одним действием удалить сразу несколько выбранных таблиц с единым подтверждением. · app/admin_maintenance.php: добавлены `admin_db_unused_tables_report()` и `admin_db_drop_tables_batch()`. · Пакетное удаление защищено проверками: миграционное управление таблицей, сигналы использования в коде и внешние ключи.
Система v2.3.6
2026-02-22

Управление жизненным циклом комнат звонков

- Создатель может завершать комнату звонка. - Админ может закрывать и удалять публичные комнаты.
Система v2.3.8
2026-02-22

Оптимизация старта интерфейса

- Перенесены второстепенные polling-задачи в idle-фазу. - Снижен пиковый отклик главного потока при открытии страниц.
Система v2.3.9
2026-02-22

Hotfix 2.3.9: стабилизация текста

- Проведена чистка поврежденных строк интерфейса. - Обновлены сообщения и статусы в основных маршрутах.
Система v2.3.10
2026-02-22

Hotfix 2.3.10: исправление кодировки

- Удалены поврежденные текстовые строки из ключевых экранов. - Исправлены уведомления профиля, чатов и панели. - Подготовлена база для финальной стабилизации.
Система v2.3.11
2026-02-22

Hotfix 2.3.11: полная правка кодировки

- Восстановлен index.php из стабильной базы без поврежденных строк. - Исправлены системные сообщения и заголовки в маршрутах и админ-разделах. - Очищены тексты новостей: теперь только нормальная кириллица.
Система v2.3.12
2026-02-22

Hotfix 2.3.12: исправлен экран звонка по ссылке

- Восстановлены тексты и элементы интерфейса на странице /index.php?r=call_room. - Исправлены поврежденные символы в views/call_room.php и views/admin.php. - Добавлено закрытие комнаты создателем/админом прямо из экрана звонка.
Система v2.3.13
2026-02-22

Policy 2.3.13: UTF-8 без BOM всегда

- В проект добавлено обязательное правило кодировки: только UTF-8 without BOM. - Добавлен .editorconfig с фиксированным charset=utf-8. - В релизный процесс встроена автоматическая проверка scripts/check-encoding.ps1.
Система v2.3.14
2026-02-22

Call Quality 2.3.14: стабильнее звук и соединение

- В звонках убраны жестко прошитые STUN-серверы: теперь ICE/STUN/TURN задаются в админ-настройках. - Добавлены параметры качества аудио: echo/noise suppression, AGC, channel count, sample rate, max bitrate. - Включено автоматическое ICE-переподключение при `d…
Система v2.3.15
2026-02-22

Call Stability 2.3.15: быстрый отклик без «убийства» сервера

- Для звонков внедрён адаптивный polling: один активный запрос за цикл, без наложения и штормов. - Добавлены таймауты, backoff при ошибках сети и fast-poll после сигналов/действий. - Алгоритм применён в личных звонках, комнатах по ссылке и админ-мониторинге.
Система v2.3.16
2026-02-22

Admin DB Tools 2.3.16: импорт/экспорт БД и безопасная очистка

- В разделе администрирования БД добавлены экспорт базы в JSON и обратный импорт JSON-дампа проекта. - Добавлены операции обслуживания: очистка RTC-сигналов/комнат, очистка старого аудита, удаление soft-deleted файлов и файлов-сирот в uploads. - Импорт выполн…
Система v2.3.17
2026-02-22

Hotfix 2.3.17: emoji снова отправляются в мессенджере (MySQL utf8mb4)

- Исправлена критическая ошибка `Incorrect string value` при отправке смайликов/emoji в сообщениях. - Для MySQL-подключения принудительно включён utf8mb4 (`SET NAMES` / `SET CHARACTER SET`). - Добавлена автоматическая проверка и конвертация старых таблиц в ut…
Система v2.3.18
2026-02-22

Admin DB 2.3.18: диагностика utf8mb4 / emoji для MySQL

- В разделе администрирования БД добавлен отчёт по кодировке MySQL для контроля поддержки emoji. - Отчёт показывает default charset/collation базы, количество таблиц проекта и список таблиц/колонок с не-utf8mb4 кодировкой (если есть). - Это диагностический ре…
Система v2.3.19
2026-02-22

Messenger Emoji 2.3.19: полноценный picker + недавние + клоун 🤡

- Блок смайликов в мессенджере переработан: добавлены быстрые emoji, секция недавних и более удобное управление. - Подключена библиотека emoji picker с поиском и категориями (локально, без зависимости от CDN в рантайме). - В быстрый набор добавлен клоун 🤡; вы…
Система v2.3.20
2026-02-22

Messenger Hotfix 2.3.20: сообщения видны сразу в открытом чате

- Исправлена проблема, когда уведомление о новом сообщении приходило, но в открытом чате сообщение не отображалось до повторного входа в диалог. - Добавлен инкрементальный polling новых сообщений и дорисовка сообщений прямо в ленте без перезагрузки страницы. …
Система v2.3.21
2026-02-22

Messenger Hotfix 2.3.21: список диалогов обновляется без перезахода

- Исправлена проблема, когда новые сообщения были видны по уведомлениям, но список диалогов (превью/непрочитанные) обновлялся только после повторного открытия чата. - Добавлен polling списка диалогов с компактной JSON-выдачей и обновлением только изменившихся…
Система v2.3.22
2026-02-22

Messenger UI 2.3.22: PWA-интерфейс ближе к Telegram/WhatsApp

- Переработан интерфейс мессенджера: список диалогов стал удобнее (аватары, время, превью, unread badge), а окно чата выглядит аккуратнее и быстрее читается. - Обновлены шапка диалога, лента сообщений и поле ввода в стиле PWA-мессенджера: удобнее на ПК и комп…
Система v2.3.23
2026-02-22

Hotfix 2.3.23: стабильная авторизация (PWA/мобильные сессии)

- Исправлена проблема, когда авторизация слетала и приходилось часто заново входить в аккаунт. - Для PHP-сессий настроены стабильные cookie-параметры (30 дней, httponly, SameSite=Lax, корректный secure при HTTPS). - Добавлено скользящее продление session cook…
Система v2.3.24
2026-02-22

Messenger UX 2.3.24: фиксированная форма + lazy history x10 + glass mobile

- На ПК исправлена главная проблема длинных диалогов: форма ввода сообщений закреплена поверх ленты и всегда видна, больше не нужно листать страницу до самого низа. - История сообщений теперь догружается по 10 сообщений при прокрутке вверх (lazy loading), а н…
Система v2.3.25
2026-02-22

Messenger Hotfix 2.3.25: последние сообщения + форма ввода видны сразу

- Исправлен баг на ПК, из-за которого при открытии длинного диалога форма ввода оказывалась внизу страницы и до неё приходилось прокручивать весь сайт. - Теперь по умолчанию открываются последние сообщения, а форма ввода закреплена поверх ленты и всегда видна…
Система v2.3.26
2026-02-22

Notifications Center 2.3.26: быстрые настройки + проверка доставки + mobile chat keyboard fix

- Добавлен отдельный центр уведомлений: быстрые переключатели Push/браузерных уведомлений и звука, статус разрешений, Service Worker и режима PWA. - Добавлена кнопка проверки уведомления на устройство и улучшена логика доставки через единый runtime helper (Se…
Система v2.3.27
2026-02-22

Profile & Social 2.3.27: about-страница, лайки постов, загрузка файлов с устройства

- Добавлена публичная страница `/about` с описанием проекта и карточками людей, внёсших вклад (с фото). - В `Профиль → Редактирование` (для администратора) появился блок управления страницей «О проекте»: текст, авторы, роли, заметки и загрузка фото участников…
Система v2.3.28
2026-02-22

Hotfix 2.3.28: кириллица в центре уведомлений

- Исправлено битое flash-сообщение после сохранения настроек в центре уведомлений. - Причина: в `index.php` оставалась строка в mojibake-виде; заменена на нормальную кириллицу (`Настройки уведомлений сохранены.`).
Система v2.3.29
2026-02-22

Hotfix 2.3.29: полная зачистка кракозябр в index.php + усиленный encoding-check

- Исправлены оставшиеся битые строки в `index.php` (flash-сообщения и заголовки разделов), включая примеры из `Центра уведомлений` и `Админ → База данных`. - Проведён полный проход по рабочим файлам проекта: активный mojibake был обнаружен в `index.php` и уст…
Система v3.0.0
2026-02-22

TSOY.CLOUD 3.0: большой апдейт профилей и мультипрофилей

- Продолжена большая переработка профиля: мобильная вёрстка блоков `Друзья / Страницы / Медиа`, карточки постов и модалка комментариев стали аккуратнее и ближе к новому шаблону. - `Фото / Видео / Аудио` оформлены как отдельные ручные галереи профиля: пользова…
Система v3.1.0
2026-02-22

TSOY.CLOUD 3.1.0: новый конструктор страниц + единый файловый проводник для выбора медиа

- Переработан конструктор пользовательских страниц: теперь можно собирать не только галереи, но и статьи, обучающие гайды, плееры с роликами и блоки ссылок. - Убрано ручное указание ID файлов в конструкторе страниц: выбор изображений и видео теперь идёт через…
Система v3.2.0
2026-02-22

TSOY.CLOUD 3.2.0: большой PWA-апдейт (уведомления, офлайн-кеш, desktop/mobile режим)

- Усилен PWA-режим на ПК и смартфонах: обновлён manifest (ярлыки быстрых действий, launch-поведение, совместимость desktop/mobile). - Улучшена работа уведомлений и звонков: клик по уведомлению теперь надёжнее открывает нужный раздел/чат, включая fallback-увед…
Система v3.3.0
2026-02-22

TSOY.CLOUD 3.3.0: единая система оформления + компактный мессенджер

- Проведена большая унификация визуального стиля проекта: карточки, навигация, формы и модалки стали более согласованными. - В `Настройки → Оформление` добавлены новые настройки дизайна: шрифт, масштаб текста, ширина контента, контраст поверхностей и отдельна…
Система v3.3.1
2026-02-22

TSOY.CLOUD 3.3.1: мессенджер (единый проводник вложений + fix меню сообщений) и улучшенная связка с “Оформлением”

- В мессенджере выбор вложений из облака переведён на единый файловый проводник (как в профиле и конструкторе страниц): папки, поиск, фильтры, превью и нормальный mobile UX. - Исправлено перекрытие меню редактирования/удаления сообщения: dropdown больше не пр…
Система v3.3.2
2026-02-22

TSOY.CLOUD 3.3.2: центр уведомлений — сначала уведомления, потом настройки

- В центре уведомлений изменён порядок блоков: сначала показывается блок «Все уведомления» (события/сводка), а затем блок настроек уведомлений. - Обновлён заголовок верхнего блока для более понятной логики экрана.
Система v3.3.3
2026-02-22

TSOY.CLOUD 3.3.3: контакты и мессенджер теперь в одном визуальном стиле

- Страница «Контакты» приведена к визуальному стилю мессенджера: одинаковые поверхности, контуры, мягкий градиент шапки и тип карточек. - Стили контактов теперь также реагируют на настройки `Оформление` (`Контраст поверхностей` и `Плотность`), как и мессендже…
Система v3.3.4
2026-02-22

TSOY.CLOUD 3.3.4: единый проводник в профиле и нормальное админ-хранилище с папками

- Проводник в профиле при выборе обложки и вложений поста переведён на единое ядро (как в мессенджере): больше нет разрозненных списков/селекторов. - В модалке вложений поста объединены блоки «Из облака», «С устройства» и «Ссылки», чтобы вложения с телефона/П…
Система v3.3.5
2026-02-22

TSOY.CLOUD 3.3.5: профиль (двойные проводники/лишние кнопки) и mobile-fix клипсы в мессенджере

- В профиле устранён двойной проводник при выборе обложки поста: теперь открывается только новый единый проводник. - Исправлена ошибка разметки, из-за которой у опубликованных постов могли появляться лишние кнопки «Сохранить / Отмена». - Копирование ссылок на…
Система v3.3.6
2026-02-22

TSOY.CLOUD 3.3.6: в конструкторе страниц появился блок «Таблица»

- В разделе «Мои страницы» добавлен новый блок `Таблица` для конструкторов страниц. - Можно редактировать ячейки прямо в сетке и управлять структурой: добавлять/удалять строки и столбцы. - Есть переключатель «первая строка — заголовки» для красивого отображен…
Система v3.4.0
2026-02-23

TSOY.CLOUD 3.4.0: полноценный Web Push (закрытый PWA/сайт) + индикатор качества звонков

- Реализованы настоящие Web Push-уведомления: сообщения, звонки, лайки, комментарии и добавления в друзья теперь могут приходить на устройство даже когда сайт/PWA закрыт. - Подписка на push синхронизируется с настройкой уведомлений пользователя и Service Work…
Система v3.4.1
2026-02-23

TSOY.CLOUD 3.4.1: mobile fix мессенджера (вложения) и центрирование меню профиля

- Исправлено открытие окна вложений в мессенджере на телефонах: attach-модалка и единый проводник теперь открываются поверх fullscreen-чата. - Для клипсы (`📎`) усилена обработка tap/click на мобильных устройствах, чтобы тапы не терялись в сложной fixed-верстк…
Система v3.4.2
2026-02-23

TSOY.CLOUD 3.4.2: hotfix навигации по уведомлениям (deep-link в источник)

- Исправлен переход по клику на уведомления: теперь уведомление корректно открывает именно источник события (чат, календарь, профиль/пост и т.д.). - Починена обработка ссылок в браузере и PWA для установок проекта в подпапке сайта (deep-link резолвится относи…
Система v3.4.3
2026-02-23

TSOY.CLOUD 3.4.3: информативные уведомления (сообщения + действия для звонка)

- Уведомления о сообщениях теперь показывают отправителя и фрагмент текста сообщения, а клик ведёт сразу в нужный диалог. - Для входящих звонков в уведомления добавлены действия «Принять» и «Отклонить» (если устройство/браузер поддерживает actions в уведомлен…
Система v3.4.4
2026-02-23

TSOY.CLOUD 3.4.4: настройки уведомлений в дашборде + улучшенный PWA update flow

- В `Настройки` добавлен новый раздел для уведомлений: цвет, оформление, рингтон уведомлений и отдельный рингтон входящего звонка. - Добавлен раздел `PWA и обновления`: политика обновления (`manual/notify/auto`), интервал проверки Service Worker, автозапрос p…
Система v3.4.5
2026-02-23

TSOY.CLOUD 3.4.5: свои рингтоны уведомлений и звонка

- В новом блоке настроек уведомлений теперь можно загрузить собственный рингтон для обычных уведомлений и отдельный рингтон для входящего звонка. - Добавлено превью/прослушивание загруженных рингтонов прямо в админке и удаление кастомного файла по чекбоксу. -…
Система v3.5.0
2026-02-23

TSOY.CLOUD 3.5.0: stability-сборка (cleanup, техдолг, аккуратные оптимизации)

- Проведён стабилизационный проход по проекту: убран техмусор, упрощены мелкие дубли в layout/head и улучшена поддерживаемость кода. - Для кастомных рингтонов уведомлений/звонков усилена надёжность: удаление старых файлов при замене, безопасная очистка только…
Система v3.5.1
2026-02-23

TSOY.CLOUD 3.5.1: hotfix рингтонов на телефонах

- Исправлено воспроизведение кастомных рингтонов уведомлений на телефонах: теперь ошибка `audio.play()` корректно отслеживается и при необходимости включается fallback-звук. - Кастомные рингтоны (уведомления/звонок) теперь резолвятся относительно пути приложе…
Система v3.5.2
2026-02-23

TSOY.CLOUD 3.5.2: notifications reliability phase 1 (retry worker + диагностика)

- Усилена надёжность доставки wake-push: в серверной очереди уведомлений появились состояния отправки, повторы с backoff и защита от зависших обработок. - В `Настройки -> PWA и обновления` добавлена диагностика push-очереди: недоставленные элементы, активные …
Система v3.5.3
2026-02-23

TSOY.CLOUD 3.5.3: notifications reliability phase 2 (Web Push payload + fallback)

- Сервер теперь отправляет полноценный Web Push payload (тело уведомления) для поддерживаемых push-подписок, поэтому уведомления стабильнее приходят даже когда сайт/PWA закрыт. - Сохранён совместимый fallback `wake-push + push_pull`, если payload не поддержив…
Система v3.5.4
2026-02-23

TSOY.CLOUD 3.5.4: диагностика push-устройств в админке + тест push по подписке

- В `Настройки -> PWA и обновления` добавлен список push-устройств/подписок: пользователь, устройство, режим (`browser/standalone`), encoding, последний успех и ошибки. - Для каждой подписки появилась кнопка `Тест push`, чтобы проверить доставку уведомления н…
Система v3.5.5
2026-02-23

TSOY.CLOUD 3.5.5: фильтры и управление push-подписками в админке

- В диагностике push-устройств появились фильтры: поиск по пользователю/устройству/endpoint, `active/inactive` и `только с ошибками`. - Для каждой push-подписки доступны действия `Тест push`, `Отключить/Включить` и `Удалить` прямо в таблице. - Управление подп…
Система v3.5.6
2026-02-23

TSOY.CLOUD 3.5.6: бренд уведомлений из настроек + статус последнего push-теста

- Заголовок уведомлений теперь берётся из настроек сайта (брендинг), а не остаётся захардкоженным как `TSOY.CLOUD`. - В диагностике push-устройств добавлена колонка `Последний тест`: время, `OK/Fail`, режим `payload/wake`, HTTP-код и текст ошибки. - Тест push…
Система v3.5.7
2026-02-23

TSOY.CLOUD 3.5.7: статистика реальной доставки push + бренд уведомлений из настроек

- В диагностике push-устройств появилась статистика реальных доставок по подписке: `payload`, `wake`, `wake fallback`, `errors` (накопительно, с последнего сброса). - Добавлены кнопки сброса статистики доставки push: глобально по всем подпискам и отдельно по …
Система v3.5.8
2026-02-23

TSOY.CLOUD 3.5.8: hotfix названия уведомлений (бренд из настроек)

- Исправлен приоритет названия уведомлений: теперь сначала используется `Название в шапке`, затем `Название сайта`. - Починен fallback тестового уведомления в центре уведомлений: больше нет захардкоженного `TSOY.CLOUD`. - Серверные push-уведомления и клиентск…
Система v3.5.10
2026-02-23

TSOY.CLOUD 3.5.10: сводка + мини-график доставки push (payload/fallback/error)

- В диагностике push добавлена агрегированная сводка по всем подпискам: `payload success rate`, `fallback rate`, `error rate` и общее число попыток. - Добавлен мини-график по дням (14 дней): stacked bars `payload / wake / errors`, где высота столбца = объём п…
Система v3.5.11
2026-02-23

TSOY.CLOUD 3.5.11: админ-настройки разбиты на понятные разделы

- Страница `Настройки` получила быстрый навигатор по разделам (якоря): теперь можно сразу перейти к брендингу, оформлению, PWA/push, WebRTC и другим блокам. - Добавлена логическая группировка секций (`Основные параметры`, `Дизайн и уведомления`, `Функции, зво…
Система v3.5.12
2026-02-23

TSOY.CLOUD 3.5.12: hotfix навигации по разделам настроек

- Исправлены кнопки блока «Разделы настроек»: переходы теперь корректно ведут к нужным секциям страницы `Настройки`, а не в корень сайта. - Убран sticky-режим навигационного блока, из-за которого он перекрывал интерфейс при прокрутке.
Система v3.5.13
2026-02-23

TSOY.CLOUD 3.5.13: Android-style настройки (меню слева, раздел справа)

- Страница `Настройки` переделана в режим с боковым меню разделов: слева список категорий, справа открывается только выбранный раздел. - Переключение секций происходит без переходов по странице и без перекрытия интерфейса навигационным блоком. - Добавлена сов…
Система v3.5.14
2026-02-23

TSOY.CLOUD 3.5.14: выбор часового пояса по Гринвичу в настройках системы

- В разделе `Система` добавлен выпадающий список выбора часового пояса по Гринвичу (`GMT/UTC`) с готовыми смещениями. - Выбор смещения автоматически подставляет корректный timezone ID в поле `Часовой пояс`, чтобы настройка сохранялась без ручного ввода. - Пол…
Система v3.5.15
2026-02-23

TSOY.CLOUD 3.5.15: role-aware настройки для всех + Android-style меню разделов

- В главное меню добавлен пункт `Настройки` для всех авторизованных пользователей; экран настроек стал role-aware (пользователь/модератор, админ, admin_tester, global_admin). - Настройки переведены в Android-style режим: слева список разделов, справа выбранны…
Система v3.5.16
2026-02-23

TSOY.CLOUD 3.5.16: админ-настройки разнесены по отдельным страницам

- Админские настройки физически разнесены по отдельным страницам (`Брендинг`, `Доступ и лимиты`, `Система`, `Оформление`, `PWA и push`, `Звонки/диагностика`, `База данных`) при сохранении единого бокового меню. - Переходы в меню теперь открывают соответствующ…
Система v3.5.17
2026-02-23

TSOY.CLOUD 3.5.17: hotfix вёрстки страницы настроек (desktop/mobile)

- Исправлен регресс после перевода меню настроек на ссылки: пункты бокового меню снова отображаются как полноценные кнопки без подчёркиваний и на всю ширину колонки. - Видимый раздел настроек в правой части теперь занимает всю доступную ширину (исправлен конф…
Система v3.5.18
2026-02-23

TSOY.CLOUD 3.5.18: hotfix блока БД и нижней панели сохранения в настройках

- В разделе `База данных` на странице `Настройки` убрана лишняя горизонтальная линия перед карточкой блока. - Нижняя панель сохранения (`Сохраняются все изменённые поля...`) теперь использует theme-aware цвета и остаётся читаемой в светлой/тёмной теме. - Испр…
Система v3.6.0
2026-02-23

TSOY.CLOUD 3.6.0: начало рефакторинга связки Профиль / Контакты / Мессенджер

- На страницах `Профиль`, `Контакты` и `Мессенджер` добавлен единый блок `Social Hub` с переключателем разделов и описанием назначения каждого экрана. - Зафиксированы роли модулей: `Профиль` = публичная страница и контент, `Контакты` = каталог и управление св…
Система v3.6.1
2026-02-23

TSOY.CLOUD 3.6.1: следующий шаг по связке Контакты/Мессенджер + UX-фиксы настроек

- В мессенджере блок `Быстрый старт` теперь использует только ваши контакты; полный каталог пользователей и управление связями оставлены в разделе `Контакты`. - В настройках исправлено выравнивание блока `База данных` относительно бокового меню (карточка боль…
Система v3.6.2
2026-02-23

TSOY.CLOUD 3.6.2: убран лишний Social Hub, мессенджер закреплён за диалогами

- Убран лишний UI-блок `Social Hub` с экранов `Профиль`, `Контакты` и `Мессенджер`: переключение между разделами остаётся в основном меню, интерфейс стал компактнее. - В `Мессенджере` оставлены только активные диалоги и сам чат; новые диалоги создаются через …
Система v3.6.3
2026-02-23

TSOY.CLOUD 3.6.3: контакты = старт общения, мессенджер = только диалоги

- На странице `Контакты` у карточек пользователей добавлены явные действия `Написать` и `Позвонить`. - `Мессенджер` очищен от каталоговых элементов: в боковой панели оставлена только история активных диалогов и сам чат. - Переходы через `chat_start` теперь ко…
Система v3.6.4
2026-02-23

TSOY.CLOUD 3.6.4: визуальный полиш мессенджера (в стиле Контактов) без риска вернуть подбородок

- Обновлены список диалогов, шапка активного диалога и composer мессенджера: карточки, границы, кнопки и типографика приведены к стилю раздела `Контакты`. - Улучшены состояния hover/active у диалогов, читаемость превью сообщений и кнопок в шапке диалога. - Из…
Система v3.6.5
2026-02-23

TSOY.CLOUD 3.6.5: второй полиш-проход мессенджера (диалоги, шапка, composer, плотность)

- Доработаны карточки диалогов, шапка активного диалога и composer мессенджера: кнопки, поверхности, состояния hover/active и типографика стали более цельными. - В шапке списка диалогов добавлена компактная CTA-кнопка `Контакты`, а пустое состояние стало поле…
Система v3.6.6
2026-02-23

TSOY.CLOUD 3.6.6: hotfix iPhone/PWA бренда уведомлений (строка from ...)

- Исправлен бренд iPhone/PWA уведомлений: системная строка `from ...` теперь берёт имя из настроек (`Название в шапке` → `Название сайта`), а не из старого `TSOY.CLOUD`. - Добавлен динамический route `manifest`, чтобы Web App Manifest подстраивался под бренди…
Система v3.6.7
2026-02-23

TSOY.CLOUD 3.6.7: hotfix mobile-overflow окна Диалоги в мессенджере

- Исправлен небольшой выезд окна `Диалоги` за экран на телефонах (в т.ч. iPhone): список диалогов теперь укладывается в ширину viewport. - Причина была в mobile-overflow от Bootstrap `row g-3` (отрицательные margins в canvas-режиме чата). - Фикс сделан только…
Система v3.6.8
2026-02-23

TSOY.CLOUD 3.6.8: ускорена отправка сообщений в мессенджере (без паузы от push)

- Исправлена задержка при отправке сообщений в мессенджере (ощущение паузы 2–3 секунды после нажатия `Отправить`). - Причина была в синхронной отправке Web Push прямо внутри `chat_send_async`: push мог тормозить HTTP-ответ чату. - Теперь сообщение сохраняется…
Система v3.6.9
2026-02-23

TSOY.CLOUD 3.6.9: фундамент для больших чатов (миллионы сообщений) без нагрузки на сервер

- Подготовлена серверная оптимизация чата для больших историй переписки: список диалогов и polling работают легче без изменения интерфейса. - Добавлены денормализованные unread-счётчики в `conversations` (по каждому участнику), чтобы не считать `COUNT(*)` unr…
Система v3.6.10
2026-02-23

TSOY.CLOUD 3.6.10: иконки действий в Контактах (конверт/трубка/корзина)

- На странице `Контакты` действия в карточках (`Написать`, `Позвонить`, `Удалить`) заменены на компактные иконки: конверт, трубка и корзина. - Интерфейс стал чище и плотнее, особенно в каталоге пользователей и в блоке `Мои контакты`. - Сохранены `title` и `ar…
Система v3.6.11
2026-02-23

TSOY.CLOUD 3.6.11: доведён UI действий в Контактах (+ строка Каталог/Найти)

- Кнопка `В контакты` в каталоге пользователей переведена на иконку `человек+`, чтобы все действия в карточках (`написать`, `позвонить`, `удалить`, `добавить`) были в одном стиле. - Заголовок `Каталог пользователей` и кнопка `Найти` теперь собраны в одну стро…
Система v3.6.12
2026-02-23

TSOY.CLOUD 3.6.12: системные файлы вынесены в отдельную папку public/system

- Логотип, favicon, кастомные звуки уведомлений/звонка и служебные ассеты спец-регистрации теперь хранятся в единой системной папке `public/system/...`. - Добавлен общий helper для системных файлов: безопасное сохранение upload-ов, удаление только из разрешён…
Система v3.6.13
2026-02-23

TSOY.CLOUD 3.6.13: единый раздел «Внешний вид», готовые профили оформления и кириллические шрифты

- В настройках объединён дизайн-блок: вместо раздельных пунктов `Внешний вид профиля` и `Внешний вид сайта` теперь один раздел `Внешний вид` с подпунктами (профиль / сайт / стиль уведомлений). - Для глобального оформления сайта добавлены готовые профили внешн…
Система v3.6.14
2026-02-23

TSOY.CLOUD 3.6.14: UX-фикс профиля (кнопка «Написать» и удаление вложений)

- На своей карточке профиля больше не показывается кнопка `Написать` — она остаётся только при просмотре чужого профиля. - У вложений постов в обычном режиме просмотра убраны кнопки `Удалить`; удаление осталось только в режиме редактирования поста. - Исправле…
Система v3.6.15
2026-02-23

TSOY.CLOUD 3.6.15: персональные режимы меню и публичного профиля для гостей

- В `Настройки -> Внешний вид` добавлены персональные режимы основного бокового меню: `показывать всегда`, `скрывать всегда`, `по кнопке`. - Для публичной страницы профиля (`/user/<login>`) добавлена личная настройка для гостей: показывать боковое меню, скрыв…
Система v3.6.16
2026-02-23

TSOY.CLOUD 3.6.16: контекстное меню сообщений (ПК/мобилка) + цитаты и реакции

- В мессенджере по правому клику мыши и по удержанию на телефоне открывается меню действий сообщения: `Изменить`, `Удалить`, `Цитировать`, `Реакция`. - Добавлены emoji-реакции к сообщениям с отображением количества; свою реакцию можно переключать повторным на…
Система v3.6.17
2026-02-23

TSOY.CLOUD 3.6.17: галочки прочтения сообщений в мессенджере

- У ваших сообщений в мессенджере появилась компактная галочка статуса: сообщение прочитано или ещё нет. - Статус прочтения обновляется в открытом диалоге автоматически через обычный polling, без перезагрузки страницы. - Изменение не затрагивает мобильную гео…
Система v3.6.18
2026-02-23

TSOY.CLOUD 3.6.18: «будильник» по сообщению в контекстном меню мессенджера

- В контекстное меню сообщения добавлен пункт `Будильник` — повторное уведомление собеседнику по конкретному сообщению. - Будильник работает только для ваших сообщений и только если сообщение ещё не прочитано (иначе пункт отключается/сервер вернёт `уже прочит…
Система v3.6.19
2026-02-23

TSOY.CLOUD 3.6.19: старт голосовых сообщений в мессенджере (красный интерфейс записи)

- В composer мессенджера добавлена красная кнопка микрофона: открывается аккуратное окно записи голосового сообщения. - Запись выполняется через `MediaRecorder` прямо на устройстве и прикрепляется в чат как аудио-вложение. - Аудио-вложения (в том числе голосо…
Система v3.6.20
2026-02-23

TSOY.CLOUD 3.6.20: preloader загрузки сайта и отдельный статус установки PWA

- Добавлен глобальный preloader загрузки страниц: при открытии/переходе по сайту показывается аккуратный индикатор `Загрузка`, чтобы интерфейс не выглядел пустым при ожидании. - Для PWA-установки добавлен отдельный режим `Идёт установка приложения…` (показыва…
Система v3.6.21
2026-02-23

TSOY.CLOUD 3.6.21: плавное переключение секций настроек + фиксы длинных имён в Контактах/Мессенджере

- Разделы в `Настройках` теперь переключаются мягко без полного визуального reload-эффекта: открывается нужный блок справа, а URL обновляется через историю браузера. - В `Контактах` длинные имена пользователей больше не смещают иконки действий (`конверт / тру…
Система v3.6.22
2026-02-23

TSOY.CLOUD 3.6.22: hotfix preloader (без ступора на чатах и секциях настроек)

- Исправлен глобальный preloader: он больше не включается на каждый внутренний клик и не тормозит переключение секций в `Настройках` или переходы между диалогами в `Мессенджере`. - Preloader оставлен только для действительно длинных/понятных сценариев: первич…
Система v3.6.23
2026-02-23

TSOY.CLOUD 3.6.23: hold-to-record голосовые + компактное предпрослушивание и прогресс установки

- В `Мессенджере` добавлен мобильный режим `удерживай для записи`: зажмите красную кнопку микрофона, отпустите — запись остановится и автоматически прикрепится к сообщению. - После записи голосового в composer появляется компактное предпрослушивание (мини-пле…
Система v3.6.24
2026-02-23

TSOY.CLOUD 3.6.24: hotfix preloader на Профиле и в Мессенджере

- Исправлен долгий preloader на страницах `Профиль` и `Мессенджер`: overlay загрузки больше не ждёт полный `window.load` со всеми картинками и медиа. - Preloader теперь скрывается на этапе готовности DOM (`DOMContentLoaded`/`interactive`), поэтому страницы на…
Система v3.6.25
2026-02-23

TSOY.CLOUD 3.6.25: hotfix отображения голосовых сообщений (плеер вместо файла)

- Исправлено отображение голосовых сообщений в мессенджере: записи вида `voice_message_*.webm` теперь показываются встроенным аудио-плеером, а не только ссылкой на файл. - Фикс работает и для уже отправленных сообщений: чат распознаёт голосовые по имени файла…
Система v3.6.26
2026-02-23

TSOY.CLOUD 3.6.26: компактная лента недавних файлов на главной

- На главной странице блок `Недавние мои файлы` / `Недавние гостевые файлы` больше не создаёт длинный `подбородок` из списка файлов. - По умолчанию показываются первые 3 файла, остальные открываются кнопкой `Показать ещё файлы` (порциями по 3). - Использован …
Система v3.6.27
2026-02-23

TSOY.CLOUD 3.6.27: голосовые сообщения в одну компактную строку

- Голосовые сообщения (`voice_message_*`) в мессенджере теперь отображаются компактной одной строкой без отдельной строки имени файла. - Плеер voice-note визуально стал тоньше и аккуратнее, чтобы не раздувать высоту сообщения. - Фикс работает и в первичном ре…
Система v3.6.28
2026-02-23

TSOY.CLOUD 3.6.28: tap-to-record для голосовых (второй тап — отправка)

- В мессенджере микрофон теперь работает в режиме toggle: первый тап запускает запись, второй тап останавливает запись и сразу отправляет голосовое сообщение. - Если автоотправка не удалась, запись автоматически остаётся прикреплённой в поле ввода — её можно …
Система v3.6.29
2026-02-23

TSOY.CLOUD 3.6.29: одинаковый mini-player голосовых на ПК и телефоне

- Голосовые сообщения в мессенджере теперь воспроизводятся одинаково на ПК и мобильных: компактной кнопкой play/pause в одну строку. - Убрана зависимость от урезанных native audio-controls браузера на десктопе (где могла пропадать кнопка воспроизведения). - Н…
Система v3.6.30
2026-02-23

TSOY.CLOUD 3.6.30: персональные настройки preloader

- В `Настройки -> Внешний вид` добавлены настройки preloader для текущего профиля: режим работы (`умный / только установка-PWA / выключить`), компактный вид и показ текста. - Настройки персональные: у каждого профиля (профиль = отдельный user) можно выбрать с…
Система v3.6.31
2026-02-23

TSOY.CLOUD 3.6.31: hotfix воспроизведения голосовых на телефоне

- Исправлено воспроизведение голосовых сообщений на мобильных устройствах: mini-player снова стабильно запускается по тапу. - Для voice-note добавлен mobile-safe `touchend` с защитой от двойного срабатывания (`touchend` + `click`). - Скрытый аудио-элемент пер…
Система v3.6.32
2026-02-23

TSOY.CLOUD 3.6.32: отдельная иконка PWA + fallback на favicon/logo

- В `Настройки -> Брендинг` добавлена отдельная загрузка `Иконка PWA` для установленного приложения. - Если отдельная PWA-иконка не задана, приложение использует `favicon`, а затем `лого` как fallback. - `manifest` и `apple-touch-icon` теперь формируются дина…
Система v3.6.33
2026-02-23

TSOY.CLOUD 3.6.33: встроенный просмотр файлов в PWA (с возвратом назад)

- В standalone/PWA просмотр файла теперь открывается не “сырым” `view`, а во встроенной странице-просмотрщике с кнопкой `Назад`. - После просмотра файла в PWA можно вернуться обратно в приложение без закрытия и повторного запуска. - Кнопка `Открыть` в файлово…
Система v3.6.34
2026-02-23

TSOY.CLOUD 3.6.34: hotfix mini-плеера голосовых на телефоне

- Исправлен запуск воспроизведения голосовых сообщений на телефоне (mini-player в чате). - Для кнопки mini-player добавлены прямые mobile-safe обработчики `touchend/click` с защитой от двойного срабатывания. - `audio.load()` больше не мешает запуску как основ…
Система v4.0.0
2026-02-27

TSOY.CLOUD 4.0.0: группы, мосты и формат messenger

- Добавлены группы пользователей и мосты между группами: можно гибко задавать, кто видит друг друга в контактах и чатах. - Админ-раздел `Пользователи` переработан: аккаунт и его профили управляются в одной карточке, добавлены режим приложения, мультипрофиль и…
Система v4.1.0
2026-02-28

TSOY.CLOUD 4.1.0: страница групп, единый дизайн

- Группы и мосты вынесены в отдельную страницу управления: создание, переименование, удаление групп, управление мостами и просмотр участников. - Страница пользователей упрощена: только аккаунты и создание новых пользователей. - Унифицирован дизайн всего проек…
Система v5.8.20
2026-03-02

TSOY.CLOUD 5.8.20: стабильная авторизация после регистрации (CSRF hotfix)

- Исправлен критичный сценарий `CSRF token mismatch` после регистрации/входа в мобильных webview. - Формы входа и регистрации стали устойчивее к stale-страницам из кэша браузера/вебвью. - При рассинхроне CSRF теперь показывается корректный возврат и повтор де…
Система v5.8.21
2026-03-02

TSOY.CLOUD 5.8.21: корректное обновление версии и авто-публикация релизов

- Исправлен формат ZIP-сборки релиза: пути теперь совместимы с Linux-распаковкой, обновления реально применяются к рабочим файлам. - Для текущей версии автоматически публикуются техрелиз и системная новость в БД без ручного создания в админке. - После деплоя …
Система v5.8.22
2026-03-02

TSOY.CLOUD 5.8.22: контроль фактической версии после деплоя

- Добавлен серверный заголовок `X-TSOY-Version`, чтобы сразу видеть реальную версию работающего кода. - Документация дополнена проверками и инструкциями очистки артефактов от старых архивов с некорректными путями. - Это закрывает частую ситуацию, когда в подв…
Система v5.8.23
2026-03-02

TSOY.CLOUD 5.8.23: прокси/HTTPS-стабилизация и синхронизация конфигурации

- Унифицировано определение HTTPS за прокси/CDN, чтобы ссылки и secure-cookie формировались корректно. - Исправлены смежные точки: share/call-link URL, logout cookie cleanup, CSRF/theme/guest cookie secure-флаги. - Документация обновлена: для SQLite используе…
Система v5.8.24
2026-03-02

TSOY.CLOUD 5.8.24: hotfix bootstrap (fatal на старте)

- Исправлен фатал `Call to undefined function request_is_https()` после обновления. - Причина: вызов helper до подключения `app/core.php`. - Загрузка `core.php` перенесена в начало `app/bootstrap.php`.
Релиз v5.8.26
2026-03-02

Релиз v5.8.26

Админка БД: упрощён процесс массового удаления ненужных таблиц. · Теперь можно одним действием удалить сразу несколько выбранных таблиц с единым подтверждением. · app/admin_maintenance.php: добавлены `admin_db_unused_tables_report()` и `admin_db_drop_tables_batch()`. · Пакетное удаление защищено проверками: миграционное управление таблицей, сигналы использования в коде и внешние ключи.
Релиз v5.8.25
2026-03-02

Релиз v5.8.25

Админка БД: добавлен анализ потенциально неиспользуемых колонок прямо в разделе `/index.php?r=admin_db`. · Удаление колонок переведено в безопасный режим: только после явного подтверждения и только для проверенных случаев. · app/admin_maintenance.php: добавлены `admin_db_unused_columns_report()` и `admin_db_drop_column()` с эвристическим сканом кода проекта. · Проверки удаления: защита критичных имён (`id`, `*_id`, `*_at`), блокировка при индексах/PK/FK и повторная проверка использования в коде.
Релиз v5.8.24
2026-03-02

Релиз v5.8.24

Исправлен критичный фатал после деплоя: сайт снова открывается штатно (без `Call to undefined function request_is_https()`). · app/bootstrap.php: загрузка `app/core.php` перенесена в начало файла, до первого вызова `request_is_https()`. · Исправлен порядок инициализации bootstrap для совместимости с production-окружениями при `require_once app/bootstrap.php` из `index.php`.
Система v5.8.24
2026-03-02

TSOY.CLOUD 5.8.24: hotfix bootstrap (fatal на старте)

- Исправлен фатал `Call to undefined function request_is_https()` после обновления. - Причина: вызов helper до подключения `app/core.php`. - Загрузка `core.php` перенесена в начало `app/bootstrap.php`.
Релиз v5.8.23
2026-03-02

Релиз v5.8.23

Стабилизирована работа проекта за reverse-proxy/CDN: HTTPS-ссылки и cookie теперь формируются корректно в проксированных окружениях. · Снижён риск проблем с логином/CSRF/выходом из-за неверного определения схемы запроса. · app/core.php: добавлены `request_is_https()` и `request_scheme()` с поддержкой `HTTPS`, `X-Forwarded-Proto`, `X-Forwarded-SSL`, `Front-End-Https`. · app/bootstrap.php, app/auth.php, app/utils.php: secure-cookie логика переведена на единый helper (session/theme/csrf/guest token).
Система v5.8.23
2026-03-02

TSOY.CLOUD 5.8.23: прокси/HTTPS-стабилизация и синхронизация конфигурации

- Унифицировано определение HTTPS за прокси/CDN, чтобы ссылки и secure-cookie формировались корректно. - Исправлены смежные точки: share/call-link URL, logout cookie cleanup, CSRF/theme/guest cookie secure-флаги. - Документация обновлена: для SQLite используе…
Релиз v5.8.22
2026-03-02

Релиз v5.8.22

Исправлена диагностика обновлений: теперь легко проверить, какая версия реально работает на сервере. · Уточнён и зафиксирован безопасный деплой-процесс для production, чтобы версия в подвале и техрелизы всегда обновлялись. · index.php и install.php: добавлен HTTP-заголовок `X-TSOY-Version` с текущим `APP_VERSION` для быстрой проверки фактической версии после деплоя. · README.md: добавлены инструкции проверки версии через `curl -I` и очистки артефактов старых Windows-архивов (`*\\*`) на Linux.
Система v5.8.22
2026-03-02

TSOY.CLOUD 5.8.22: контроль фактической версии после деплоя

- Добавлен серверный заголовок `X-TSOY-Version`, чтобы сразу видеть реальную версию работающего кода. - Документация дополнена проверками и инструкциями очистки артефактов от старых архивов с некорректными путями. - Это закрывает частую ситуацию, когда в подв…
Релиз v2.3.8
2026-02-22

Релиз v2.3.8

Снижен лаг при открытии страниц. · Polling-задачи переведены в менее агрессивный режим.
Релиз v2.3.10
2026-02-22

Релиз v2.3.10

Исправлены критические проблемы отображения текста и уведомлений. · Подготовлена база для финальной правки кодировки.
Релиз v2.3.11
2026-02-22

Релиз v2.3.11

Полностью восстановлен текст интерфейса на корректной кириллице. · Исправлены сообщения профиля, чатов, звонков и административных страниц. · index.php восстановлен из стабильной версии и очищен от поврежденных строк. · Обновлены маршруты администрирования звонков: мониторинг, закрытие и удаление комнат.
Релиз v2.3.12
2026-02-22

Релиз v2.3.12

Исправлено отображение текста на странице звонка по ссылке. · Восстановлены подписи и действия в админ-панели. · Очищены поврежденные символы в views/call_room.php и views/admin.php. · В call_room добавлено управление закрытием комнаты для создателя и администратора.
Релиз v2.3.13
2026-02-22

Релиз v2.3.13

Зафиксировано правило: кодировка проекта только UTF-8 без BOM. · Добавлен .editorconfig с обязательным charset=utf-8. · Добавлен scripts/check-encoding.ps1 и подключён в scripts/make-release.ps1.
Релиз v2.3.14
2026-02-22

Релиз v2.3.14

Улучшено качество аудиозвонков в личных и публичных комнатах. · Добавлена автопопытка восстановления соединения при сетевых сбоях. · Вынесены единые WebRTC-параметры: ICE/STUN/TURN и аудио-профиль в настройки админа. · Убраны хардкоды RTCPeerConnection в chat/call_room/admin_call_monitor.
Релиз v2.3.15
2026-02-22

Релиз v2.3.15

Звонки стали отзывчивее без перегруза сервера: события обрабатываются быстрее после действий пользователя. · Стабильнее работа в фоне и после возврата в приложение/вкладку. · Переведены call polling-циклы на адаптивный single-flight алгоритм (без наложения запросов). · Добавлены таймауты запросов, backoff при ошибках и fast-retry после сигналов/действий.
Релиз v2.3.16
2026-02-22

Релиз v2.3.16

В админке добавлены импорт и экспорт базы данных в JSON для резервного копирования и переноса. · Добавлены сервисные операции очистки БД и файлов: RTC-мусор, старый аудит, удалённые файлы и сироты в uploads. · Добавлен модуль app/admin_maintenance.php с безопасным экспортом/импортом и обслуживанием хранилища. · Импорт БД выполняется с полной заменой данных таблиц приложения (через DELETE в транзакции, без TRUNCATE).
Релиз v2.3.17
2026-02-22

Релиз v2.3.17

Исправлена критическая ошибка отправки emoji/смайликов в мессенджере на MySQL. · После обновления сайт автоматически приводит старые таблицы чата и связанные таблицы к emoji-safe кодировке utf8mb4. · MySQL-подключение теперь принудительно использует SET NAMES/CHARACTER SET utf8mb4. · Добавлен runtime-check кодировки таблиц через INFORMATION_SCHEMA и best-effort конвертация в utf8mb4 только при необходимости.
Релиз v2.3.18
2026-02-22

Релиз v2.3.18

В админке БД добавлен визуальный статус проверки utf8mb4/emoji (для MySQL). · Теперь можно быстро увидеть, есть ли таблицы или колонки, которые ещё не готовы к emoji. · Добавлен отчёт admin_db_charset_report() по INFORMATION_SCHEMA: default charset/collation БД, таблицы и текстовые колонки. · Отчёт выведен в views/admin_db.php с компактной сводкой и таблицами проблемных объектов (если есть).
Релиз v2.3.19
2026-02-22

Релиз v2.3.19

Переработан блок смайликов в мессенджере: быстрые emoji, недавние emoji и удобная панель выбора. · Подключена библиотека emoji picker с поиском и категориями; добавлены быстрые кнопки, включая клоуна 🤡. · Локально подключена библиотека public/vendor/emoji-button/emoji-button.min.js (без CDN-зависимости в рантайме). · В chat composer добавено хранение недавних emoji в localStorage и fallback-режим, если библиотека недоступна.
Релиз v2.3.20
2026-02-22

Релиз v2.3.20

Исправлен баг мессенджера: новые сообщения теперь появляются в открытом чате без перезахода. · Если вы находитесь внизу ленты, чат автоматически прокручивается к новым сообщениям. · Добавлен lightweight endpoint chat_messages_poll (инкрементальная выдача сообщений по after_id). · Во views/chat.php добавлен single-flight polling и клиентский рендер новых сообщений без полной перезагрузки страницы.
Релиз v2.3.21
2026-02-22

Релиз v2.3.21

Список диалогов в мессенджере теперь обновляется автоматически: новые сообщения и непрочитанные появляются без перезахода в чат. · Превью последнего сообщения, время и бейдж непрочитанных синхронизируются прямо в открытом разделе «Мессенджер». · Добавлен endpoint chat_dialogs_poll с компактной JSON-выдачей списка диалогов для текущего пользователя. · Во views/chat.php добавлен отдельный single-flight polling списка диалогов с backoff, signature-check и обновлением DOM только при изменениях.
Релиз v2.3.22
2026-02-22

Релиз v2.3.22

Переработан интерфейс мессенджера в стиле PWA-мессенджеров: удобнее список диалогов, компактнее шапка чата и чище лента сообщений. · На телефоне чат занимает экран аккуратнее: более компактные action-кнопки, улучшенная шапка и удобнее поле ввода для быстрых сообщений. · Во views/chat.php обновлены layout/styling для desktop и mobile (split-pane, sticky composer, адаптивная шапка, улучшенные bubbles). · Серверный и клиентский рендер списка диалогов унифицированы: одинаковая разметка строк (аватар/имя/время/превью/unread badge).
Релиз v2.3.23
2026-02-22

Релиз v2.3.23

Исправлена проблема со «слетающей» авторизацией: сессия пользователя теперь сохраняется стабильнее, особенно в PWA и на мобильных устройствах. · Пользователю больше не нужно постоянно повторно входить в аккаунт при обычном использовании сайта. · Добавлена устойчивая инициализация PHP-сессии: cookie lifetime 30 дней, gc_maxlifetime 30 дней, httponly/samesite и корректный secure через HTTPS/X-Forwarded-Proto. · Сессии вынесены в project-local storage/sessions (если доступно), чтобы изолировать их от server-wide gc других сайтов/приложений.
Релиз v2.3.24
2026-02-22

Релиз v2.3.24

Исправлен UX мессенджера на ПК: форма ввода теперь закреплена поверх ленты сообщений и всегда видна, как в Telegram/WhatsApp. · Возвращён стеклянный (glass) вид мессенджера на телефоне и PWA-экране. · Добавлен endpoint chat_messages_before_poll (before_id) и server helper conversation_messages_before_for_user() для lazy-history. · Стартовая загрузка сообщений в чате уменьшена до компактной пачки, дальнейшая история догружается по scroll trigger.
Релиз v2.3.25
2026-02-22

Релиз v2.3.25

Исправлен критичный UX-баг мессенджера на ПК: при открытии диалога теперь сразу видны последние сообщения и форма ввода (без прокрутки всей страницы вниз). · Форма ввода закреплена поверх ленты сообщений, а прокрутка выполняется внутри окна чата. · Для desktop conversation pane добавлена жёсткая высота по viewport (CSS + JS syncDesktopMessengerViewport), чтобы контент не растягивал страницу. · chatMessages переведён в гарантированно внутренний scroll-container; composer остаётся fixed/overlay внутри card.
Релиз v2.3.26
2026-02-22

Релиз v2.3.26

Добавлен отдельный центр уведомлений: быстрые переключатели, статус разрешений браузера, Service Worker/PWA и тест уведомления на устройство. · Настройки уведомлений теперь можно менять без захода в профиль — прямо из раздела «Уведомления». · Маршрут notifications получил обработку POST (сохранение notify_desktop/notify_sound) и скорректирован порядок mark_seen/counts. · Глобальный runtime уведомлений переработан: user-scoped localStorage state, единый helper __TSOY_NOTIFY_RUNTIME (SW/device notify, permission/status/test).
Релиз v2.3.27
2026-02-22

Релиз v2.3.27

Добавлена публичная страница «О проекте» (`/about`) с описанием проекта и карточками участников/вклада. · В профиле (редактирование) для администратора добавлен блок управления страницей «О проекте», включая загрузку фото участников с устройства. · Добавлены маршрут `about`, pretty-route `/about` и POST-обработчик `post_like_toggle` с JSON-ответом для AJAX. · В `profile_edit` добавлено сохранение настроек страницы about через `settings` + хранение списка участников в JSON (`about_contributors_json`).
Релиз v2.3.28
2026-02-22

Релиз v2.3.28

Hotfix: исправлено битое сообщение после сохранения настроек в центре уведомлений (теперь отображается нормальная кириллица). · В `index.php` заменены оставшиеся mojibake-строки flash-сообщения `Настройки уведомлений сохранены.` в обработчиках профиля и центра уведомлений.
Релиз v2.3.29
2026-02-22

Релиз v2.3.29

Hotfix: исправлены оставшиеся «кракозябры» в системных сообщениях/заголовках из `index.php` (включая центр уведомлений и очистку аудита в разделе БД). · Выполнена массовая зачистка mojibake-строковых литералов в `index.php` (восстановлена нормальная кириллица в flash/title сообщениях). · Усилен `scripts/check-encoding.ps1`: проверка mojibake теперь использует кодовые точки (`U+00C2/U+00C3/U+00D0/U+00D1`), а не хрупкий текстовый regex.
Релиз v2.3.30
2026-02-22

Релиз v2.3.30

Ссылка на страницу «О проекте» добавлена в подвал рядом с версией проекта. · Настройки страницы «О проекте» вынесены из профиля в отдельный раздел администрирования в дашборде. · Добавлен маршрут `admin_about` + новая страница `views/admin_about.php`; сохранение настроек about перенесено из `profile_edit` в admin-раздел. · Расширен RBAC: новые роли (`global_admin`, `admin_tester`), нормализация политик по умолчанию, закреплённые инварианты для доступа к БД/политикам/настройкам.
Релиз v2.3.31
2026-02-22

Релиз v2.3.31

Исправлены права управления пользователями: первый пользователь всегда закреплён как `global_admin`, обычный администратор не может понижать/блокировать/удалять его и сбрасывать ему пароль. · Роль `admin_tester` теперь может пользоваться обычными функциями приложения (включая профиль и фото), при этом изменения в админ-разделах по-прежнему заблокированы. · Добавлены backend-инварианты для первого пользователя (`user_ensure_first_global_admin`, запрет бана/удаления первого пользователя) и защита операций над `global_admin` в `admin_users`. · Глобальный guard `admin_tester` сужен до write-операций админ-разделов, чтобы не ломать обычный пользовательский функционал.
Релиз v2.3.32
2026-02-22

Релиз v2.3.32

Исправлена логика публичных файлов: фото участников со страницы `/about` остаются публичными, но больше не попадают в ленту «Публичные файлы» на главной. · Улучшена навигация и нейминг: пользовательское облако переименовано в «Мои файлы», а `admin`-экран оформлен как «Файлы проекта». · В `app/files.php` добавлена фильтрация публичной ленты по исключениям (`files_public_feed_excluded_ids()`), сейчас туда входят фото участников из `about_contributors_json`. · Обновлены заголовки/подписи в `views/home.php`, `views/dashboard.php`, `views/admin.php`, `views/layout.php`, `views/staff.php`, `views/chat.php`, `views/contacts.php` для уменьшения путаницы между пользовательским и административным файловыми экранами.
Релиз v2.3.33
2026-02-22

Релиз v2.3.33

Добавлена отдельная «мемная» invite-регистрация для друзей с автоназначением ролей `admin` и `admin_tester` по токен-ссылке. · Страница спец-регистрации получила отдельный дизайн с анимациями и роль-специфичными сообщениями (admin/tester). · Добавлен модуль `app/friend_registration.php`: JSON-конфиг спец-регистрации, токены, invite-ссылки, нормализация и resolve роли по токену. · В `index.php` добавлены маршруты `friend_register` и `admin_friend_register`, а также pretty-route `/friend-invite/<token>`.
Релиз v2.3.34
2026-02-22

Релиз v2.3.34

Hotfix: устранены предупреждения Deprecated на PHP 8.4+ в модуле спец-регистрации друзей. · В `app/friend_registration.php` сигнатуры helper-функций обновлены с implicit nullable (`array $cfg = null`) на явный nullable тип (`?array $cfg = null`).
Релиз v2.3.35
2026-02-22

Релиз v2.3.35

В спец-регистрацию друзей встроен виджет «кошка-говешка» с анимированным блоком внутри формы. · В настройках спец-регистрации можно загрузить фото кошки с устройства, включать/выключать блок и настраивать подпись/бейдж. · Спец-регистрация расширена настройками `cat_*` в `app/friend_registration.php`; загрузка изображения реализована в `index.php` и хранится в `public/friend_register/`. · В `views/friend_register.php` добавлен анимированный cat-widget с безопасным fallback без картинки.
Релиз v2.3.36
2026-02-22

Релиз v2.3.36

Базовый пресет оформления снова по умолчанию `Default`, а `Psychedelic` оставлен как опциональный вариант в настройках. · Уведомления о сообщениях и событиях теперь открывают соответствующий раздел (чат или календарь), а не всегда центр уведомлений. · Добавлен JSON endpoint `chat_send_async` и клиентский submit-handler во `views/chat.php` для AJAX-отправки сообщения с поддержкой вложений. · В `notif_poll` добавлены target-ссылки (`chat`/`calendar`), а `views/partials/scripts.php` формирует отдельные device-notifications с корректным `data.url`.
Релиз v2.3.37
2026-02-22

Релиз v2.3.37

Мессенджер структурно облегчён: более компактный header/messages/composer stack, меньше визуальной тяжести и ближе к привычной мобильной логике. · Исправлено поведение поля ввода в мобильном полноэкранном чате: composer больше не “съезжает” вниз из-за наложенных padding/overlay-стилей. · В `views/chat.php` добавлены структурные классы (`chat-list-card`, `chat-conv-card`, `chat-conv-body`, `chat-composer-shell`) и финальный CSS override-блок с упрощённой layout-схемой. · Убран тяжёлый overlay-режим composer для conversation pane (через CSS overrides), сообщения снова живут в нормальном flex-stack без лишнего bottom-overlay padding.
Релиз v2.3.38
2026-02-22

Релиз v2.3.38

Перестроена DOM-структура окна диалога: `chatMessages` теперь единый контейнер на всю область чата, внутри которого находятся шапка, лента сообщений и composer. · Шапка диалога и панель ввода встроены внутрь общего контейнера как в современных мессенджерах, что улучшает поведение на мобильных экранах. · В `views/chat.php` `id=\"chatMessages\"` переведён в роль root-container conversation pane, а scroll-area вынесена в `id=\"chatMessagesScroll\"`. · JS-логика мессенджера обновлена на новый scroll-target (`chatMessagesScroll`) с backward fallback на старую структуру.
Релиз v2.3.39
2026-02-22

Релиз v2.3.39

Уменьшен зазор между клавиатурой и полем ввода в мобильном мессенджере (почти вплотную, несколько миллиметров). · Панель ввода в fullscreen-чате лучше поджимается к клавиатуре на iPhone/iOS. · В `views/chat.php` добавлен динамический CSS var `--chat-mobile-composer-gap` и логика `visualViewport`-детекта открытой клавиатуры. · При открытой клавиатуре fullscreen-pane чата растягивается до видимого нижнего края без лишнего white-gap из-за `visualViewport.offsetTop`.
Релиз v2.3.40
2026-02-22

Релиз v2.3.40

Исправлен большой пустой отступ между полем ввода и клавиатурой в мобильном мессенджере (fullscreen chat). · Панель ввода и лента сообщений теперь корректно сжимаются при открытии клавиатуры. · В `views/chat.php` снят конфликтующий `min-height`/жёсткая высота на mobile fullscreen-цепочке контейнеров (`chat-conv-body` → `#chatMessages` → scroll-wrap → `#chatMessagesScroll`). · Горячий фикс рассчитан на iOS/Safari/PWA сценарии, где клавиатура уменьшает viewport и ломает flex-layout с `min-height`.
Релиз v2.3.41
2026-02-22

Релиз v2.3.41

Дополнительно исправлен большой зазор над клавиатурой на iPhone: поле ввода поджимается ближе даже при включённой assistant/suggestions панели iOS. · В `views/chat.php` добавлена реальная компенсация нижнего зазора по измерению положения composer относительно viewport (а не только по `visualViewport.height`). · Учтён iOS-кейс, когда `visualViewport` и `window.innerHeight` расходятся на высоту assistant/suggestions панели клавиатуры.
Релиз v2.3.42
2026-02-22

Релиз v2.3.42

Для диагностики iPhone-отступа убрана встроенная (inline) панель быстрых смайликов из формы сообщения в мессенджере. · Кнопка смайликов в composer теперь открывает полный emoji picker, если inline-панель отключена. · Из `views/chat.php` удалён блок `chat-emoji-panel` внутри composer; JS-клик по `emojiBtn` переведён на fallback `toggleFullEmojiPicker()` при отсутствии inline-панели.
Релиз v2.3.43
2026-02-22

Релиз v2.3.43

Для диагностики iPhone-отступа убран набор layout-классов у нижнего блока `attachHint / Убрать вложение` в composer мессенджера. · В `views/chat.php` блок под composer (с `attachHint` и `attachClearBtn`) упрощён до обычного контейнера без `d-flex/.../mt-2`.
Релиз v2.3.44
2026-02-22

Релиз v2.3.44

Для диагностики iPhone-отступа убран класс `small text-secondary` у блока `attachHint` в composer мессенджера. · В `views/chat.php` элемент `#attachHint` оставлен без CSS-классов, чтобы исключить влияние типографики/line-height на высоту composer.
Релиз v2.3.45
2026-02-22

Релиз v2.3.45

Для диагностики iPhone-отступа удалён `id=\"attachHint\"` у нижнего блока composer и связанный CSS-минимум высоты. · В `views/chat.php` удалено правило `#chatConvPane #attachHint { min-height ... }`, а сам элемент оставлен без `id`, чтобы исключить его вклад в высоту composer.
Релиз v2.3.46
2026-02-22

Релиз v2.3.46

Мессенджер вынесен из общего `container py-4` в отдельное “полотно” layout (full-canvas host), чтобы уменьшить конфликты мобильного fullscreen-режима с обёртками страницы. · Это изменение направлено именно на iPhone-баг с большим отступом над клавиатурой: чат теперь живёт в более простой DOM-структуре без общей контейнерной обвязки страницы. · В `views/layout.php` добавлен route-aware режим `contentCanvasRoute` для `chat`: контент мессенджера рендерится в `chat-canvas-stage` вне `container py-4`. · В `views/chat.php` обновлены mobile fullscreen-селекторы, которые раньше были жёстко привязаны к `.container.py-4`, теперь они поддерживают `.chat-canvas-stage`.
Релиз v2.3.47
2026-02-22

Релиз v2.3.47

Мессенджер после фикса iPhone-клавиатуры дополнительно очищен и визуально облегчён: обновлены шапка страницы, список диалогов, полотно сообщений и composer. · Строка состояния редактирования в composer теперь показывается только в режиме редактирования, а не занимает место постоянно. · Из `views/chat.php` удалён временный JS-компенсатор `tightenComposerToViewportBottom()` и связанный runtime-костыль `--chat-mobile-composer-gap`, оставлена более простая `visualViewport`-синхронизация. · Добавлены финальные CSS-overrides для canvas-режима чата (`chat-canvas-stage`) без возврата к старой layout-обвязке `container py-4`.
Релиз v2.3.48
2026-02-22

Релиз v2.3.48

На главной в разделе «Новости» теперь по умолчанию показываются только первые записи, остальные открываются кнопкой «Загрузить ещё». · В истории версий (технические новости по версиям) добавлен такой же режим постепенной подгрузки списка через кнопку «Показать ещё версии». · В `views/layout.php` добавлен универсальный client-side `load more`-инициализатор для блоков с `data-load-more-*`. · Разметка новостей на главной (`views/home.php`) и модалки истории версий (`views/layout.php`) переведена на единый шаблон постепенного раскрытия списка.
Релиз v2.3.49
2026-02-22

Релиз v2.3.49

Исправлен повторный iPhone-баг в мессенджере с большим отступом между клавиатурой и полем ввода (runtime-компенсация viewport/composer для mobile fullscreen). · Новости на главной и технические заметки по версиям теперь действительно свёрнуты по умолчанию (первые 3 записи), остальные открываются через кнопку «Показать ещё / Загрузить ещё». · В `views/chat.php` возвращена измеряемая компенсация `visualViewport` по фактическому gap до composer (без возврата старого `--chat-mobile-composer-gap` костыля). · В `views/layout.php` исправлен клиентский `load more`-инициализатор (Safari-safe проверка вместо `ParentNode`) и добавлено серверное начальное сворачивание версий.
Релиз v2.3.50
2026-02-22

Релиз v2.3.50

В мессенджере убрана служебная подпись под именем собеседника; клик по фото/имени в шапке диалога теперь открывает профиль собеседника. · Профиль расширен: значок админ-роли для администраторов, список друзей, количество друзей, а также кнопки добавления/удаления из друзей прямо на странице профиля. · Добавлены helper-функции для видимости карточек разработчиков на `/about` (`about_developer_visibility_json`, `user_about_card_visible()`, `user_about_card_set_visible()`) и фильтрация в `users_about_developers()`. · Маршруты `post_create/post_update` получили поддержку `cover_device_file` через новый helper `post_cover_from_upload()` в `app/posts.php`.
Релиз v2.3.51
2026-02-22

Релиз v2.3.51

В мессенджере из composer удалён нижний блок `chat-attach-row` (подсказка/кнопка вложения), чтобы убрать лишнюю высоту и iPhone-gap («подбородок»). · Из `views/chat.php` удалена разметка `div.chat-attach-row`; JS обработчики вложений уже безопасно работают при отсутствии `attachHint/attachClearBtn`.
Релиз v2.3.52
2026-02-22

Релиз v2.3.52

Усилен iPhone-fix для мессенджера: composer в mobile fullscreen при открытой клавиатуре закрепляется в `fixed`-режиме относительно видимой области, чтобы убрать большой зазор над клавиатурой. · В `views/chat.php` добавлен режим `chat-composer-vv-fixed` + JS-синхронизация с `visualViewport` (адаптивно: `bottom=0` или компенсация `keyboardInset`, если fixed элемент уходит под клавиатуру).
Релиз v2.3.53
2026-02-22

Релиз v2.3.53

В мессенджере с composer снят класс `chat-sticky` (оставлен только `chat-composer-shell`) — hotfix для iPhone-отступа над клавиатурой. · В `views/chat.php` удалён `chat-sticky` у обёртки формы сообщений, чтобы исключить конфликт sticky/fixed логики в mobile fullscreen.
Релиз v2.3.54
2026-02-22

Релиз v2.3.54

Ещё один iPhone hotfix для мессенджера: при открытой клавиатуре `fixed`-composer больше не обрезается контейнерами чата (снят clipping/blurs на время mobile keyboard mode). · В `views/chat.php` добавлен режим `chat-composer-vv-mode`: при активной клавиатуре снимаются `overflow:hidden` и `backdrop-filter` у `chat-conv-card/chat-conv-body`, чтобы Safari не привязывал/не обрезал `position: fixed` composer внутри карточки.
Релиз v2.3.55
2026-02-22

Релиз v2.3.55

В мессенджере переписан mobile-composer режим для iPhone: поле ввода при открытой клавиатуре выносится в отдельный viewport-портал, чтобы не появлялся большой зазор над клавиатурой. · В `views/chat.php` реализован `composer portal` (spacer + перенос `.chat-composer-shell` в `body` при mobile keyboard mode) вместо прежней fixed/sticky-компенсации внутри карточки чата.
Релиз v2.3.56
2026-02-22

Релиз v2.3.56

Добавлена система мультипрофилей: у одного аккаунта можно создавать, переключать и удалять несколько профилей через меню по клику на имя/аватар в шапке. · Для ролей разработчиков (`global_admin`/`admin`/`admin_tester`) добавлен выбор, какой профиль показывать на странице `/about`. · В `app/migrations.php` добавлены `user_profiles`, колонки `users.active_profile_id/users.about_profile_id` и `posts.hide_from_guests`. · В `app/users.php` реализованы helper-ы мультипрофилей (bootstrap/create/switch/delete/sync/about-select) и overlay данных выбранного профиля в `/about`.
Релиз v2.3.57
2026-02-22

Релиз v2.3.57

Мессенджер откатан по фронтенду (`views/chat.php`) к состоянию релиза `2.3.46` — это версия, на которой исчезал iPhone-gap («подбородок») над клавиатурой. · Сравнение показало, что `views/layout.php` (перенос чата в `chat-canvas-stage`) остаётся правильным; регрессия появилась позже в `views/chat.php` после добавления mobile keyboard viewport-хаков (`chat-composer-vv-portal`, `chat-composer-vv-fixed`, `chat-composer-vv-mode`, spacer/portal composer). · Откат выполнен точечно только для мессенджера: `views/chat.php` взят из архива `releases/tsoycloud_v2.3.46_2026-02-22.zip`.
Релиз v2.3.58
2026-02-22

Релиз v2.3.58

Мультипрофили переработаны: теперь каждый профиль аккаунта — это отдельный пользователь со своим логином и собственной страницей `/user/<login>` (отдельные посты, файлы и медиа). · В меню профилей аккаунта создание профиля теперь запрашивает отдельный логин (`username`) и отображаемое имя; основной профиль нельзя удалить. · Логика `user_profiles_*` в `app/users.php` переведена с таблицы `user_profiles` на связанные записи `users` через `owner_account_user_id` (старую таблицу больше не используем как источник истины). · В `app/auth.php` добавлен `auth_session_apply_active_profile()` и `$_SESSION[\"auth_user_id\"]`: сессия хранит владельца аккаунта отдельно от активного профиля (`$_SESSION[\"user\"]`).
Релиз v2.3.59
2026-02-22

Релиз v2.3.59

Мессенджер улучшен поверх стабильной базы (без возврата mobile keyboard-хаков): имя/аватар собеседника в шапке снова открывают профиль, убрана лишняя служебная подпись. · В профиле добавлены отдельные блоки медиа: фото, видео и аудио (для владельца — из облака, для гостей/других пользователей — из видимых постов). · В `app/migrations.php` добавлены таблицы `post_comments` и `user_pages`. · В `app/posts.php` реализованы helpers комментариев и поддержка внутренних ссылок (`/page/...`) в `post_attachment_add_link()` для публикации страниц.
Релиз v2.3.60
2026-02-22

Релиз v2.3.60

Исправлено мобильное меню профилей в шапке: dropdown больше не уезжает влево на узких экранах (ограничена ширина, стабилизировано позиционирование). · В `views/layout.php` профильный dropdown переведен на `data-bs-display=\"static\"` и вынесен на отдельный класс `topbar-profile-menu`; в `views/partials/head.php` добавлены mobile-safe стили ширины/переполнения.
Релиз v2.3.61
2026-02-22

Релиз v2.3.61

Исправлен раздел «Медиа» в профиле: теперь он показывает только контент, который пользователь явно добавил в посты (обложки и вложения), а не все файлы из облака. · В `views/profile.php` блок `Медиа` переведен на единый источник данных (медиа из постов) для владельца и гостей; облачные файлы владельца больше не попадают туда автоматически.
Релиз v2.3.62
2026-02-22

Релиз v2.3.62

Профиль переведён на более современный шаблонный стиль: обновлены карточки, шапка профиля и добавлены верхние вкладки разделов (Посты/Друзья/Страницы/Медиа). · Разделы Фото/Видео/Аудио теперь работают как отдельные ручные галереи профиля: пользователь сам добавляет контент в галереи, а не получает автоподбор из облака/постов. · Добавлен helper `app/profile_media.php` и таблица `profile_media_items` (ручные галереи профиля) с миграцией в `app/migrations.php`. · Добавлен маршрут `profile_media_gallery` в `index.php` (добавление/удаление элементов галереи, загрузка файлов с устройства).
Релиз v2.3.63
2026-02-22

Релиз v2.3.63

Профиль ещё ближе к новому шаблону: усилен визуал шапки (cover/avatar/chips/статистика), обновлены карточки друзей/страниц/медиа и общий стиль карточек постов/модалок. · Улучшена навигация по разделам профиля через верхние вкладки с сохранением активной вкладки. · В `views/profile.php` расширен слой профильных стилей и добавлены счётчики/визуальные блоки без изменения бизнес-логики постов, комментариев и ролей.
Релиз v2.3.64
2026-02-22

Релиз v2.3.64

Посты на странице профиля ещё ближе к новому шаблону: добавлен header карточки (аватар/имя/@username/время), улучшен action-bar и визуал карточек. · Модалка комментариев профиля визуально переработана и на мобильных ведёт себя ближе к формату bottom-sheet. · В `views/profile.php` добавлены профильные UI-классы для карточек постов и комментариев без изменения текущей логики лайков/комментариев/прав доступа.
Релиз v2.3.65
2026-02-22

Релиз v2.3.65

Управление галереями профиля перенесено в модалку (вместо collapse), что ближе к новому шаблону и удобнее на мобильных устройствах. · Экран `Редактировать профиль` заметно переработан визуально: добавлен hero-preview профиля, улучшены блоки загрузки аватара/обложки и группировка полей. · В `views/profile.php` блок управления ручными галереями переведён на modal-layout без изменения логики форм `profile_media_gallery`. · В `views/profile_edit.php` добавлены новые UI-обёртки и стили (`profile-edit-header-*`, `profile-edit-fieldset`, `profile-edit-upload-*`) при сохранении прежних POST-полей.
Релиз v2.3.66
2026-02-22

Релиз v2.3.66

Профиль дополнительно отполирован под мобильные устройства: карточки друзей и страниц стали компактнее и аккуратнее на узких экранах. · В модалке комментариев улучшен блок ввода: форма стала ближе к привычному мобильному composer-формату. · В `views/profile.php` добавлены mobile-first стили и классы для списков друзей/страниц, медиасетки и composer-разметки комментариев без изменения бизнес-логики.
Релиз v3.0.0
2026-02-22

Релиз v3.0.0

Подготовлен крупный профильный апдейт 3.0: улучшен mobile UX профиля (Друзья/Страницы/Медиа), а форма комментариев в модалке стала ближе к привычному мобильному composer-формату. · Полностью переработан интерфейс мультипрофилей в шапке: новый dropdown с быстрым переключением, аватарами и статусами профилей. · В `views/layout.php` переписана разметка topbar dropdown и модалки `#userProfilesModal` без изменения существующих роутов/POST-действий (`user_profiles`). · В `views/partials/head.php` добавлен новый слой стилей для мультипрофильного UX (`topbar-profile-*`, `user-profiles-modal-modern`, `user-profile-card*`) с адаптацией под мобильные экраны.
Релиз v3.0.1
2026-02-22

Релиз v3.0.1

На странице профиля кнопка копирования публичной ссылки теперь копирует адрес в буфер и показывает диалог «Скопировано». · При открытии профиля по публичной ссылке `/user/<username>` скрывается боковое меню (desktop + mobile offcanvas), страница выглядит ближе к формату соцсети. · В `views/profile.php` обновлён helper `copyText()` для кнопок `.js-copy`: успешное копирование подтверждается диалогом, fallback остаётся только при ошибке clipboard API. · В `views/layout.php` добавлен режим публичной страницы профиля (`$publicProfilePageRoute`) с условным отключением sidebar/offcanvas и корректировкой mobile topbar-отступа.
Релиз v3.0.2
2026-02-22

Релиз v3.0.2

На страницах профиля боковое меню теперь скрывается только у гостей. Для авторизованных пользователей навигация в профиле снова доступна. · В `views/layout.php` режим “соц-страницы без меню” ограничен только гостевым просмотром публичного профиля (`$guestPublicProfileSocialMode`).
Релиз v3.0.3
2026-02-22

Релиз v3.0.3

Кнопки «Ссылка на профиль» и «Ссылка на пост» на странице профиля теперь копируют ссылку в буфер по одному клику. · В `views/profile.php` copy-handler для `.js-copy/.js-magnet` усилен: добавлены `preventDefault/stopPropagation` и fallback-копирование через `textarea + execCommand(copy)` без обязательного `prompt`.
Релиз v3.1.0
2026-02-22

Релиз v3.1.0

Конструктор пользовательских страниц серьёзно переработан: добавлены блоки «Статья», «Гайд» и «Плеер роликов» помимо галереи/ссылок. · В выборе файлов для конструктора страниц больше не нужны ID вручную: добавлен единый проводник файлов с папками, поиском, фильтрами и мультивыбором. · Добавлен reusable partial `views/partials/file_explorer_picker.php` (модалка + JS-компонент `TsoyFileExplorerPicker`) для повторного использования в разных разделах. · В `app/pages.php` расширена модель блоков страниц (`article`, `guide`, `video_player`) и обновлён сбор используемых file_id для рендера.
Релиз v3.2.0
2026-02-22

Релиз v3.2.0

Усилен PWA-режим для ПК и смартфонов: улучшен manifest (ярлыки быстрых действий, desktop/mobile launch-поведение, метаданные приложения). · Уведомления и звонки в PWA/браузере теперь надёжнее открывают нужный раздел по клику (чат, конкретный звонок, уведомления и т.д.). · Root и `public/service-worker.js` синхронизированы и переведены на единый hardened SW (navigation preload, deep-link `notificationclick`, управление файловым кешем через message API). · В Service Worker добавлен корректный bypass для `Range`-запросов, чтобы не ломать стриминг аудио/видео и просмотр медиа на мобильных устройствах.
Релиз v3.2.1
2026-02-22

Релиз v3.2.1

В разделе «Настройки → Брендинг» добавлена отдельная настройка названия проекта в шапке (верхняя панель и боковое меню). · Добавлен ключ настроек `site_header_name`; при пустом значении используется fallback на `site_name`. · В `views/layout.php` брендинг шапки переведён на отдельную переменную `$siteHeaderName`, не затрагивая title страниц и прочие места, где используется `site_name`.
Релиз v3.3.0
2026-02-22

Релиз v3.3.0

Проведена большая унификация визуального стиля проекта: карточки, навигация, формы, модалки и отступы лучше согласованы между разделами. · Раздел «Настройки → Оформление» расширен: добавлены настройки глобального шрифта, масштаба текста, ширины контента, контраста поверхностей и отдельная плотность мессенджера. · Расширен `ui_config()` и системные настройки (`ui_font_family`, `ui_font_scale`, `ui_content_width`, `ui_surface_contrast`, `ui_chat_density`) с валидацией в `index.php?r=admin_settings`. · В `views/partials/head.php` добавлены новые data-атрибуты UI и глобальные CSS-токены (font-scale, content-width, surface-contrast) для централизованного управления дизайном.
Релиз v3.3.1
2026-02-22

Релиз v3.3.1

В мессенджере выбор файла из облака переведён на единый проводник (папки, поиск, фильтры, превью), как в других разделах проекта. · Исправлено меню действий сообщения (`Изменить/Удалить`): dropdown больше не перекрывается соседними сообщениями. · В `views/chat.php` интегрирован reusable `TsoyFileExplorerPicker` для attach-модалки (mobile-safe сценарий через отдельную модалку picker-а). · Для строк сообщений добавлен z-index lift при `show.bs.dropdown` (`chat-row-menu-open`), чтобы меню действий не попадало под соседние bubbles.
Релиз v3.3.2
2026-02-22

Релиз v3.3.2

В «Центре уведомлений» блок с уведомлениями/событиями теперь показывается первым, а настройки уведомлений идут после него. · В `views/notifications.php` переставлен визуальный порядок колонок через grid-order (`notify-col-feed` перед `notify-col-settings`) и обновлён заголовок блока на «Все уведомления».
Релиз v3.3.3
2026-02-22

Релиз v3.3.3

Страница «Контакты» визуально приведена к стилю мессенджера: одинаковая шапка, поверхности, контуры и оттенки/градиенты. · В `views/contacts.php` добавлен локальный токенизированный стиль (`contacts-page`) с той же логикой surface/background, что и в мессенджере, включая реакции на `ui_surface_contrast` и `ui_density`.
Релиз v3.3.4
2026-02-22

Релиз v3.3.4

Проводник файлов в профиле (обложка и вложения постов) переведён на единое ядро `TsoyFileExplorerPicker`, как в мессенджере. · Вложения к посту с устройства в профиле переработаны в единый блок внутри модалки вложений (облако + устройство + ссылки), чтобы выбор работал стабильнее и понятнее. · В `views/profile.php` добавлен JS-слой унификации старых модалок вложений постов: облачные файлы выбираются через общий picker, а hidden-inputs собираются по mime (`attach_images/video/audio/files`). · В `app/files.php` расширен `files_admin_list()` (фильтры по владельцу и папке) и добавлены helper-функции `files_admin_owner_stats()` / `files_admin_folders_list()` для админского проводника.
Релиз v3.3.5
2026-02-22

Релиз v3.3.5

Исправлен двойной проводник в профиле: при выборе обложки поста больше не открывается одновременно новый и старый интерфейс. · Исправлены лишние кнопки «Сохранить / Отмена» под опубликованными постами (ошибка разметки edit-блока). · В `views/profile.php` удалены legacy JS-билдеры вложений постов (`js-att`/`js-att-edit`) и старые вкладки вложений теперь физически вырезаются из DOM после инициализации нового picker-слоя. · В `views/profile.php` убраны bootstrap-trigger атрибуты с кнопок выбора обложки (теперь открывается только `TsoyFileExplorerPicker`), а возврат старой attach-модалки после picker отключён.
Релиз v3.3.6
2026-02-22

Релиз v3.3.6

В конструкторе пользовательских страниц добавлен новый блок «Таблица» с ручным редактированием ячеек. · Для блока таблицы доступны действия: добавить/удалить строку и добавить/удалить столбец, а также режим «первая строка — заголовки». · В `app/pages.php` добавлена нормализация блока `table` (header + rows, ограничения размеров и длины ячеек). · В `views/my_pages.php` расширен page-builder: тип `table`, визуальный table-editor и сериализация таблицы в `blocks_json`.
Релиз v3.4.0
2026-02-23

Релиз v3.4.0

Добавлены полноценные push-уведомления на устройство (через Web Push + Service Worker) для сценариев, когда сайт/PWA закрыт. · Push-уведомления теперь приходят по ключевым событиям: сообщения, входящие звонки/приглашения в звонок, лайки постов, комментарии и добавления в друзья. · Добавлен `app/push.php`: VAPID-ключи (автогенерация), подписки Web Push, очередь уведомлений, payloadless Web Push dispatch и pull-механизм для SW. · В `app/migrations.php` добавлены таблицы `push_subscriptions` и `push_queue` (MySQL/SQLite) с индексами для подписок и очереди доставки.
Релиз v3.4.1
2026-02-23

Релиз v3.4.1

Исправлено мобильное открытие окна вложений в мессенджере: attach-модалки/проводник теперь открываются поверх fullscreen-чата. · Меню профиля/переключения мультипрофилей в мобильной шапке больше не уезжает влево: dropdown центрируется по viewport. · В `views/chat.php` поднят z-index attach-модалки и file-picker-модалки над mobile chat pane (`z-index: 2100`) и добавлена маркировка backdrop (`chat-over-chat-backdrop`). · В `views/chat.php` усилен mobile-open handler клипсы (`pointerup` + `touchend` + click guard), чтобы не терялись тапы в fullscreen-мессенджере.
Релиз v3.4.2
2026-02-23

Релиз v3.4.2

Исправлена навигация по клику на уведомления: уведомления теперь корректно открывают источник (чат, календарь, профиль/пост и т.д.) в браузере и PWA. · В `views/partials/scripts.php` `__tsoyNavigateFromNotification()` переведён на резолв ссылок через `appBasePath`, а fallback `Notification.onclick` теперь использует тот же навигатор. · В `service-worker.js` / `public/service-worker.js` `notificationclick` теперь резолвит `data.url` относительно `self.registration.scope` (а не `origin`), что исправляет deep-link в установках не в корне сайта.
Релиз v3.4.3
2026-02-23

Релиз v3.4.3

Уведомления стали информативнее: для новых сообщений показываются имя отправителя и фрагмент текста. · Для входящих звонков в уведомления добавлены действия «Принять» и «Отклонить» (там, где это поддерживает браузер/устройство). · В `notif_poll` добавлен preview последнего непрочитанного сообщения (`sender/body/url`), а клиентский polling в `views/partials/scripts.php` использует его для desktop-уведомлений и toast. · В `app/push.php` расширен payload Web Push: поддержка `data` и `action_urls`, а `push_notify_incoming_call()` теперь отправляет actions (`accept/close`) и URL принятия звонка.
Релиз v3.4.4
2026-02-23

Релиз v3.4.4

В дашборде (`Настройки`) добавлен отдельный блок настроек уведомлений: цвет, оформление toast/desktop-уведомлений, рингтон уведомлений и отдельный рингтон входящего звонка. · Добавлен блок `PWA и обновления`: политика обновления (manual/notify/auto), интервал проверки Service Worker, автозапрос persistent storage и toast-оповещения об обновлении PWA. · Добавлены новые ключи настроек в `app/settings.php`; сохранение/валидация реализованы в `index.php` (`admin_settings`). · В `views/layout.php` новые настройки прокидываются в `window.__TSOY_NOTIFY` (`ui/sounds/pwa`) для runtime-слоя.
Релиз v3.4.5
2026-02-23

Релиз v3.4.5

В настройках уведомлений добавлена загрузка своих рингтонов: отдельно для обычных уведомлений и отдельно для входящего звонка. · В админке можно прослушать загруженные рингтоны прямо в разделе настроек и удалить их при необходимости. · Добавлены настройки `notify_sound_custom_path` и `notify_call_sound_custom_path`, а в `admin_settings` реализована загрузка аудиофайлов в `public/sounds`. · Во фронтенде (`views/layout.php` + `views/partials/scripts.php`) runtime уведомлений получил поддержку кастомных аудио-файлов с fallback на синтезированные звуки, если браузер блокирует воспроизведение.
Релиз v3.5.0
2026-02-23

Релиз v3.5.0

Стабилизационный релиз: проведён общий cleanup проекта, снижён шум от временных артефактов и улучшена предсказуемость работы уведомлений/PWA-настроек. · В настройках уведомлений доработана работа со своими рингтонами: при замене старые файлы корректно очищаются, а слишком большие файлы не принимаются. · Удалены временные каталоги восстановления/аудита (`tmp_*`) из рабочей директории, которые засоряли поиск и увеличивали накладные расходы проверок. · В `scripts/check-encoding.ps1` добавлено универсальное исключение для временных каталогов `tmp_*`, чтобы сборочные проверки не сканировали техмусор.
Релиз v3.5.1
2026-02-23

Релиз v3.5.1

Hotfix рингтонов на телефонах: улучшено воспроизведение кастомных рингтонов уведомлений/звонка на мобильных браузерах и PWA. · В `views/partials/scripts.php` исправлен баг кастомного рингтона уведомлений: теперь Promise `audio.play()` реально проверяется, и при ошибке срабатывает fallback-звук. · Кастомные рингтоны теперь резолвятся через `appBasePath` (`__tsoyResolveAppUrl`) для корректной работы в установках проекта в подпапке сайта.
Релиз v3.5.2
2026-02-23

Релиз v3.5.2

Усилена надёжность уведомлений: добавлен серверный retry-worker для wake-push доставки с повторными попытками и backoff. · В админке (Настройки -> PWA и обновления) появился блок диагностики push-очереди: количество недоставленных элементов, состояние очереди и статус подписок. · В `push_queue` добавлены поля состояния доставки (`dispatch_state`, попытки, backoff, lock, last_error/status) и миграции для MySQL/SQLite. · В `app/push.php` реализованы функции очереди и worker-обработки (`claim/process due`, retry/backoff, статистика очереди).
Релиз v3.5.3
2026-02-23

Релиз v3.5.3

Уведомления стали стабильнее при закрытом PWA/сайте: сервер теперь пытается отправлять полноценный Web Push payload (с телом уведомления), а не только wake-push. · Сохранён fallback-режим (`wake-push + push_pull`) для совместимости, если endpoint/браузер не принимает payload. · В `app/push.php` добавлена payload-отправка Web Push (`aes128gcm`) с VAPID и шифрованием сообщения на стороне сервера (ECDH + HKDF + AES-128-GCM). · `push_dispatch_user()` теперь умеет отправлять payload в push и возвращает раздельную статистику `payload_sent` / `wake_sent`.
Релиз v3.5.4
2026-02-23

Релиз v3.5.4

В админке (`Настройки -> PWA и обновления`) добавлена диагностика push-устройств: список подписок, устройство/режим, последний успех доставки и ошибки. · Появилась кнопка `Тест push` для каждого устройства, чтобы быстро проверить доставку уведомлений на конкретную подписку. · В `app/push.php` добавлены helper-функции диагностики: `push_subscriptions_admin_list()`, `push_subscription_get()`, `push_subscription_test_send()`. · Добавлен route `index.php?r=push_test_subscription` (admin/settings), который отправляет тестовый push на выбранную подписку и пишет результат в flash.
Релиз v3.5.5
2026-02-23

Релиз v3.5.5

Диагностика push-устройств в админке стала практичнее: добавлены фильтры (поиск, active/inactive, только с ошибками). · Для push-подписок появились действия `Отключить / Включить / Удалить` прямо в таблице устройств. · В `app/push.php` добавлены admin-helper’ы управления подписками: `push_subscription_set_active()` и `push_subscription_delete_by_id()`, а список подписок получил серверные фильтры (`q`, `only_errors`, `state`). · В `index.php` добавлен route `push_subscription_admin_action` для безопасного управления подписками из админки (POST + CSRF + capability).
Релиз v3.5.6
2026-02-23

Релиз v3.5.6

Исправлен бренд в уведомлениях: заголовок уведомлений теперь подтягивается из настроек сайта, а не захардкожен как `TSOY.CLOUD`. · В диагностике push-устройств добавлена колонка `Последний тест` (успех/ошибка, режим `payload/wake`, HTTP-код, время). · В `app/push.php` добавлен helper `push_app_title()` (с кешем), и серверные push-события/очередь/тестовые уведомления переведены на имя сайта из `settings`. · В `views/layout.php` + `views/partials/scripts.php` runtime уведомлений получил `siteName/siteHeaderName`; browser/PWA fallback notifications и toast теперь используют бренд из настроек.
Релиз v3.5.7
2026-02-23

Релиз v3.5.7

В диагностике push-устройств добавлена статистика реальных доставок по подписке: `payload`, `wake`, `wake fallback`, `errors` (накопительно, с последнего сброса). · Добавлены кнопки сброса статистики доставок: для одной подписки и для всех подписок сразу. · В `push_subscriptions` добавлены поля `push_stat_*` и миграции для MySQL/SQLite; реальные отправки в `push_dispatch_user()` записывают статистику по подписке (`payload/wake/fallback/error`). · В `app/push.php` реализованы helper’ы `push_subscription_delivery_stats_record()` и `push_subscription_delivery_stats_reset()`.
Релиз v3.5.8
2026-02-23

Релиз v3.5.8

Hotfix уведомлений: название в заголовке уведомления теперь берётся в приоритете из `Название в шапке`, затем из `Название сайта`. · Исправлен fallback тестового уведомления в центре уведомлений: больше не показывает захардкоженный `TSOY.CLOUD`. · В `views/notifications.php` fallback `new Notification(...)` переведён на бренд из `window.__TSOY_NOTIFY`. · В `views/partials/scripts.php` helper `__tsoyNotifyTitle()` теперь использует `siteHeaderName` раньше `siteName`.
Релиз v3.5.10
2026-02-23

Релиз v3.5.10

В диагностике push-устройств добавлена агрегированная сводка по всем подпискам: `payload success rate`, `fallback rate`, `error rate` и общие счётчики попыток. · Добавлен мини-график/спарклайн по дням (14 дней): stacked bars `payload / wake / errors`, где высота столбца показывает объём попыток за день. · В `app/push.php` `push_queue_stats()` расширен блоком `delivery_summary`, который агрегирует `push_stat_*` по всем push-подпискам и считает проценты (`payload/fallback/error`). · Добавлена таблица/миграция `push_delivery_daily_stats` и запись дневной статистики при реальных отправках push (`payload/wake/fallback/error`).
Релиз v3.5.11
2026-02-23

Релиз v3.5.11

Страница `Настройки` в дашборде больше не выглядит как сплошная простыня: добавлен блок быстрых переходов по разделам (якоря) и группировка по логическим секциям. · Появились явные секции: основные параметры, дизайн/уведомления, PWA/push, функции/звонки/диагностика — ориентироваться в настройках стало заметно проще. · В `views/admin_settings.php` добавлены якоря (`id`) для ключевых блоков настроек и верхняя навигационная панель без изменения backend-логики сохранения формы. · Страница сохранена как единая форма `admin_settings`, поэтому существующие `POST`-обработчики, `formaction` для push-диагностики и CSRF-проверки продолжают работать без миграций.
Релиз v3.5.12
2026-02-23

Релиз v3.5.12

Hotfix страницы `Настройки`: быстрые переходы по разделам теперь ведут в нужные блоки страницы, а не в корень сайта. · Убран sticky-режим блока `Разделы настроек`, из-за которого он перекрывал интерфейс при прокрутке. · В `views/admin_settings.php` ссылки разделов переведены с hash-only (`#...`) на route-aware (`index.php?r=admin_settings#...`) для корректной работы при наличии `<base>`/нестандартного base path. · Снята sticky-позиция с `admin-settings-nav-card` (оставлен статичный блок), чтобы навигация не накрывала карточки настроек ниже по странице.
Релиз v3.5.13
2026-02-23

Релиз v3.5.13

Страница `Настройки` переделана в Android-style режим: слева список разделов, справа показывается только выбранный раздел настроек. · Переключение разделов теперь происходит без переходов по странице/якорям; интерфейс не перекрывается и не дёргается. · В `views/admin_settings.php` реализован client-side секционный контроллер (`data-settings-nav` / `data-settings-section`) с переключением видимости блоков внутри одной формы. · Сохранена совместимость с текущим backend `admin_settings`: `POST`-логика, `formaction` кнопки push-диагностики и CSRF-проверка не менялись.
Релиз v3.5.14
2026-02-23

Релиз v3.5.14

В разделе `Система` настроек добавлен выпадающий список выбора часового пояса по Гринвичу (GMT/UTC offsets). · При выборе смещения из списка значение автоматически подставляется в поле часового пояса ниже, чтобы сохранить настройку одним кликом. · В `views/admin_settings.php` добавлена генерация preset-списка фиксированных зон `GMT-12 ... GMT+14` с валидными IANA-идентификаторами (`Etc/GMT±N`, `UTC`). · Добавлена JS-связка `systemTimezoneUtcPreset -> systemTimezoneInput`, которая подставляет выбранный preset в существующее поле `system_timezone` без изменений backend-валидации.
Релиз v3.5.15
2026-02-23

Релиз v3.5.15

Настройки переведены в Android-style режим с боковым меню разделов и вторым уровнем внутри `PWA и push` (`Обновления`, `Очередь push`, `Устройства`). · В главное меню добавлен отдельный пункт `Настройки` (после `Дашборд`), доступный всем авторизованным пользователям. · Добавлен route `settings` с доступом через `sections.settings`; legacy route `admin_settings` сохранён для совместимости админ-инструментов и внутренних redirect’ов. · `index.php` (`settings/admin_settings`) разделён по scope сохранения: личные настройки (theme + notify prefs) сохраняются всем ролям, глобальные админ-настройки — только при `admin.settings` и не в режиме `admin_tester`.
Релиз v3.5.16
2026-02-23

Релиз v3.5.16

Админские настройки физически разнесены по отдельным страницам (`Брендинг`, `Доступ и лимиты`, `Система`, `Оформление`, `PWA и push`, `Звонки/диагностика`, `База данных`) при сохранении общего бокового меню. · Переходы в меню настроек теперь открывают соответствующий экран, а не просто переключают внутренние блоки в одном и том же URL. · В `index.php` добавлены route-level страницы настроек (`settings_admin_*`) с capability-gates через `admin.settings`; legacy `admin_settings` сохранён и перенаправлен в режим `Брендинг` внутри общего шаблона. · В `views/admin_settings.php` реализована route-aware навигация: единый шаблон использует разные `action`/initial section в зависимости от текущего settings-route и корректно обрабатывает hash-переходы (`#pwa-notify-admin`, подпункты PWA и др.).
Релиз v3.5.17
2026-02-23

Релиз v3.5.17

Hotfix страницы `Настройки`: пункты бокового меню снова выглядят как кнопки (без подчёркиваний) и заполняют всю ширину колонки. · На desktop видимый раздел настроек теперь растягивается на всю доступную ширину правой панели (как `WebRTC`), а не остаётся половинной карточкой. · В `views/admin_settings.php` для `.admin-settings-side-btn` добавлены `display:block` и `text-decoration:none`, что устраняет регресс после перевода пунктов меню в `<a>`. · В JS-section режиме добавлен CSS override для `.js-settings-block.is-visible` внутри `.row`: `flex-basis/max-width:100%` (исправлен конфликт с Bootstrap `col-lg-6`).
Релиз v3.5.18
2026-02-23

Релиз v3.5.18

Hotfix страницы `Настройки`: в разделе `База данных` убрана лишняя горизонтальная линия перед карточкой блока. · Нижняя панель сохранения (`Сохраняются все изменённые поля...`) теперь подстраивается под тему оформления и остаётся читаемой в светлой и тёмной темах. · В `views/admin_settings.php` удалён лишний `<hr class=\"my-4\">` перед блоком `settings-db`. · Стили `admin-settings-savebar` переведены с жёстко тёмного фона (`rgba(20,22,30,...)`) на theme-aware фон через Bootstrap CSS variables (`--bs-body-bg-rgb`, `--bs-body-color`, `--bs-border-color-translucent`).
Релиз v3.6.0
2026-02-23

Релиз v3.6.0

Начат рефакторинг связки `Профиль / Контакты / Мессенджер`: на всех трёх экранах добавлен единый переключатель разделов (Social Hub) и явное описание роли каждого раздела. · `Профиль` теперь явно позиционируется как публичная страница пользователя (посты, медиа, страницы, друзья), `Контакты` — как каталог и управление связями, `Мессенджер` — как диалоги/вложения/звонки. · Добавлен reusable partial `views/partials/social_suite.php` (единый CSS для Social Hub: header/switcher/surfaces/role-map chips). · `views/profile.php`, `views/contacts.php`, `views/chat.php` подключены к `social_suite` и получили общий navigation shell без вмешательства в критичную mobile-геометрию композера мессенджера.
Релиз v3.6.1
2026-02-23

Релиз v3.6.1

Следующий шаг по связке `Контакты / Мессенджер`: в мессенджере блок `Быстрый старт` теперь показывает только контакты пользователя, а полный каталог вынесен в раздел `Контакты`. · В настройках исправлено выравнивание раздела `База данных`: карточка блока больше не поднимается выше меню слева. · В `views/chat.php` удалено дублирование каталога пользователей внутри мессенджера: список `Начать чат` переведён на `contacts_list($me_id)` + ссылка в `index.php?r=contacts`. · В `views/admin_settings.php` выровнен db-блок (`settings-db`) относительно общего grid/меню и обновлены подписи/подразделы блока дизайна (`ui/notify`) для разделения личных и глобальных настроек.
Релиз v3.6.2
2026-02-23

Релиз v3.6.2

Убран лишний `Social Hub` с экранов `Профиль / Контакты / Мессенджер`: переключение между разделами остаётся в основном меню, интерфейс снова стал компактнее. · В `Мессенджере` закреплена роль экрана: только активные диалоги и общение. Новый чат создаётся через раздел `Контакты`. · Удалён временный partial `views/partials/social_suite.php` и его подключения из `views/profile.php`, `views/contacts.php`, `views/chat.php` (откат лишнего UI-слоя без влияния на backend). · В `views/chat.php` удалён дублирующий сценарий старта чатов из списка пользователей/контактов: оставлен переход в `index.php?r=contacts` и история активных диалогов.
Релиз v3.6.3
2026-02-23

Релиз v3.6.3

Следующий шаг по связке `Контакты / Мессенджер`: в карточках пользователей на странице `Контакты` добавлены явные действия `Написать` и `Позвонить`. · Мессенджер очищен от каталоговых элементов: в боковой панели оставлены только активные диалоги, без блока быстрого старта/списков людей. · `index.php` (`chat_start` и `chat?start=`) теперь прокидывает `call=1` в итоговый URL диалога, чтобы из внешних экранов можно было запускать звонок напрямую. · В `views/contacts.php` унифицированы action-кнопки карточек (`Написать` / `Позвонить`) для списка контактов и каталога пользователей.
Релиз v3.6.4
2026-02-23

Релиз v3.6.4

Дожат интерфейс мессенджера под единый стиль с `Контактами`: обновлены список диалогов, шапка диалога и composer (кнопки, границы, поверхности, типографика). · Список диалогов стал визуально ближе к карточкам контактов: более ровные поверхности, одинаковая логика hover/active, читаемые превью и время. · Изменения сделаны только в `views/chat.php` на уровне CSS/визуальных состояний (`chat-dialog-item`, `chat-dialog-head`, `chat-inputbar`, action-buttons). · Мобильная геометрия ввода/клавиатуры (`fixed/sticky/viewport` логика, fullscreen layout цепочка) не изменялась, чтобы не вернуть iPhone-баг с \"подбородком\".
Релиз v3.6.5
2026-02-23

Релиз v3.6.5

Мессенджер получил второй visual-pass: доработаны карточки диалогов, шапка активного диалога, кнопки действий и composer для более цельного и лёгкого вида. · В списке диалогов добавлена компактная CTA-кнопка `Контакты` в шапке списка и более полезное пустое состояние с переходом в `Контакты`. · В `views/chat.php` расширен UI-only CSS слой (polish pass 2): `chat-list-headbar`, `chat-dialog-item`, `chat-dialog-head`, `chat-head-btn`, `chat-compose-btn` и density overrides. · Добавлены только безопасные классы/микроразметка в `views/chat.php` (CTA в списке диалогов, классы кнопок) без изменения маршрутов, логики сообщений и звонков.
Релиз v3.6.6
2026-02-23

Релиз v3.6.6

Hotfix iPhone/PWA уведомлений: системная строка `from ...` теперь берёт бренд из настроек (`Название в шапке` → `Название сайта`), а не из старого захардкоженного `TSOY.CLOUD`. · PWA meta-теги (`application-name`, `apple-mobile-web-app-title`) синхронизированы с брендингом проекта, чтобы имя приложения и имя в уведомлениях совпадали. · В `index.php` добавлен route `manifest`, который отдаёт динамический Web App Manifest на основе текущих настроек брендинга (`site_header_name` / `site_name`). · В `views/partials/head.php` `<link rel=\"manifest\">` переведён на динамический route с cache-bust (`APP_VERSION` + hash бренда); `application-name` и `apple-mobile-web-app-title` переведены на приоритет `site_header_name`.
Релиз v3.6.7
2026-02-23

Релиз v3.6.7

Исправлен мобильный overflow окна `Диалоги` в мессенджере: карточка списка диалогов больше не вылезает за ширину экрана на iPhone/смартфонах. · Стабилизирована ширина mobile-раскладки мессенджера без изменений логики клавиатуры и без риска вернуть баг с `подбородком`. · В `views/chat.php` для mobile добавлен точечный фикс ширины: убраны отрицательные отступы `row g-3` (Bootstrap gutter overflow) и зажаты `#chatListPane`/карточка/тело списка в `max-width:100%`. · Изменение ограничено CSS-слоем страницы чата; fullscreen/composer/`visualViewport` логика не изменялась.
Релиз v3.6.8
2026-02-23

Релиз v3.6.8

Ускорена отправка сообщений в мессенджере: сообщение появляется заметно быстрее после нажатия `Отправить`, без ощущения паузы в 2–3 секунды. · Повышена плавность UX при отправке: сервер отдаёт ответ чату сразу, а push-уведомления больше не держат отправку сообщения. · В `index.php` (`chat_send_async`) push для нового сообщения переведён в queue-first режим: уведомление ставится в очередь без синхронной отправки (`sendNow=false`). · HTTP-ответ `chat_send_async` теперь завершается до фоновой попытки dispatch push (`fastcgi_finish_request` / flush), чтобы Web Push не блокировал отображение сообщения.
Релиз v3.6.9
2026-02-23

Релиз v3.6.9

Подготовлен серверный фундамент чата для больших историй переписки (сотни тысяч/миллионы сообщений) без изменения привычного интерфейса. · Список диалогов и polling чата стали легче для сервера за счёт оптимизации хранения unread-состояния и индексов под крупные переписки. · В `conversations` добавлены денормализованные unread-счётчики (`u1_unread_count`, `u2_unread_count`) и метаданные последнего сообщения (`last_message_id`, `last_message_preview`). · В `app/chat.php` `message_send()` / `conversation_mark_read()` обновляют unread-счётчики диалога; `message_delete_for_me()` и `conversation_clear_for_me()` синхронизируют их через пересчёт/сброс.
Релиз v3.6.10
2026-02-23

Релиз v3.6.10

Полиш страницы `Контакты`: действия `Написать`, `Позвонить`, `Удалить` в карточках заменены на компактные иконки (конверт, трубка, корзина) для более чистого интерфейса. · Сохранены подсказки (`title`) и `aria-label`, чтобы UX остался понятным и доступным на ПК и мобильных устройствах. · В `views/contacts.php` добавлены `contacts-actions` и `contacts-action-icon` (theme/density-friendly размеры икон-кнопок), заменена текстовая разметка кнопок в списке `Мои контакты` и `Каталог пользователей`. · Логика маршрутов и действий (`chat_start`, `chat_start&call=1`, add/remove contact) не изменялась.
Релиз v3.6.11
2026-02-23

Релиз v3.6.11

Доведён UI действий в `Контактах`: кнопка `В контакты` заменена на иконку `человек+`, чтобы все действия в карточках были в одном визуальном языке. · Заголовок `Каталог пользователей` и кнопка `Найти` теперь находятся в одной строке, поле поиска вынесено отдельно ниже на полную ширину. · В `views/contacts.php` кнопка добавления контакта переведена на `bi-person-plus` с `title`/`aria-label`; сохранена существующая POST-логика `action=add`. · Поиск в каталоге использует `form=\"contactsSearchForm\"` у кнопки `Найти`, чтобы держать правильную desktop/mobile компоновку без изменения backend-маршрута `contacts`.
Релиз v3.6.12
2026-02-23

Релиз v3.6.12

Системные файлы проекта (логотип, favicon, кастомные звуки уведомлений/звонка и служебные ассеты спец-регистрации) переведены в единую системную папку `public/system/...`. · Старые пути (`public/branding`, `public/sounds`, `public/friend_register`) автоматически и мягко переносятся в новую системную структуру при запуске приложения. · Добавлен `app/system_assets.php`: единый helper для системных ассетов (безопасное сохранение upload-файлов, удаление только из разрешённых системных директорий, миграция legacy-путей). · В `index.php` (`admin_settings`) загрузка логотипа, favicon и кастомных рингтонов переведена на `system_assets_store_upload(...)` с хранением в `public/system/branding` и `public/system/sounds`.
Релиз v3.6.13
2026-02-23

Релиз v3.6.13

В настройках переработан раздел `Внешний вид`: вместо разрозненных пунктов `Внешний вид профиля` и `Внешний вид сайта` появился единый раздел `Внешний вид` с подпунктами (профиль / сайт / стиль уведомлений). · Для глобального оформления сайта добавлены готовые профили внешнего вида (несколько пресетов под разные сценарии: чистый, рабочий, чтение, мягкий, ночной, psychedelic). · Добавлен helper `ui_appearance_profiles()` в `app/bootstrap.php` с готовыми профилями оформления и пакетами значений для `ui_*` настроек. · В `views/admin_settings.php` объединена навигация дизайна в один top-level `Внешний вид`, добавлен UI выбора/подстановки профиля оформления и обновлены кириллические шрифтовые опции.
Релиз v3.6.14
2026-02-23

Релиз v3.6.14

Исправлен UX профиля: кнопка `Написать` больше не отображается на собственной карточке профиля. · У вложений постов в обычном просмотре убраны кнопки `Удалить`: удаление доступно только в режиме редактирования поста. · В `views/profile.php` кнопка перехода в чат скрыта для `is_self`. · Из обычного рендера вложений в `views/profile.php` удалены формы `post_attachment_delete`; удаление оставлено в edit-блоке (`js-del-att`).
Релиз v3.6.15
2026-02-23

Релиз v3.6.15

В личном разделе `Настройки -> Внешний вид` добавлены персональные режимы основного бокового меню: `показывать всегда`, `скрывать всегда`, `по кнопке`. · Для публичной страницы профиля добавлена персональная настройка вида для гостей: `показывать боковое меню`, `скрывать боковое меню`, `скрывать боковое меню и шапку сайта`. · В `users` добавлены персональные UI-поля `ui_sidebar_mode` и `guest_profile_chrome_mode` (миграции в `app/migrations.php`). · В `index.php` (`settings`) сохранение пользовательских настроек расширено: добавлен `user_update_ui_prefs(...)` и синхронизация значений в session snapshot.
Релиз v3.6.16
2026-02-23

Релиз v3.6.16

В мессенджере добавлено контекстное меню сообщения по правой кнопке мыши и по удержанию на мобильных устройствах. · Меню действий сообщения теперь включает `Изменить`, `Удалить`, `Цитировать` и `Реакция` (с выбором emoji). · Добавлена таблица `message_reactions` (MySQL/SQLite) и миграции/индексы в `app/migrations.php`. · В `app/chat.php` добавлены batch-подгрузка реакций для пачек сообщений (`chat_messages_payload_for_client`) и `message_reaction_toggle(...)`.
Релиз v3.6.17
2026-02-23

Релиз v3.6.17

В мессенджере у сообщений добавлена маленькая галочка статуса прочтения (`прочитано / не прочитано`). · Галочка отображается у ваших сообщений и обновляется в диалоге автоматически, когда собеседник читает чат. · В `app/chat.php` в payload сообщений добавлен `is_read`, а также helper `conversation_last_read_sent_message_id(...)` для лёгкого read-receipt sync. · В `chat_send_async` и `chat_messages_poll` (`index.php`) добавлен `read_upto_own_id`, чтобы фронт мог обновлять статусы уже отрисованных сообщений без перезагрузки.
Релиз v3.6.18
2026-02-23

Релиз v3.6.18

В контекстное меню сообщения мессенджера добавлен пункт `Будильник` (пинг-напоминание). · Будильник доступен для ваших сообщений и отправляет повторное уведомление собеседнику только если сообщение ещё не прочитано. · Добавлен route `chat_message_nudge` в `index.php` с проверками: сообщение принадлежит текущему пользователю, находится в этом диалоге и ещё не прочитано. · В `app/push.php` добавлен `push_notify_chat_message_reminder(...)` с отдельным типом `chat_nudge` и dedupe tag по сообщению.
Релиз v3.6.19
2026-02-23

Релиз v3.6.19

Начато внедрение голосовых сообщений в мессенджер: добавлена красная кнопка микрофона и аккуратное окно записи. · Голос записывается прямо в браузере/на устройстве и прикрепляется к сообщению как аудио-вложение. · В `views/chat.php` добавлены voice-recorder modal, UI состояния записи и интеграция с `MediaRecorder` (MVP) без изменения keyboard/fullscreen геометрии чата. · Записанный blob прикрепляется через существующий `chatFileInput` (`DataTransfer`) и уходит в уже существующий backend upload flow `chat_send_async` / `message_send`.
Релиз v3.6.20
2026-02-23

Релиз v3.6.20

Добавлен глобальный preloader при загрузке страниц сайта: пользователь видит аккуратный индикатор загрузки вместо “пустого” экрана. · Для PWA добавлен отдельный режим preloader `Идёт установка приложения…` при установке через системную кнопку. · В `views/partials/head.php` добавлен theme-aware overlay `#tsoyPreloader` (общий для сайта и установщика), работающий в светлой/тёмной теме без жёстко тёмного фона. · В `views/partials/scripts.php` добавлен runtime `window.__TSOY_PRELOADER` (show/hide/set) с автоскрытием после загрузки, показом на внутренних переходах и submit-формах (кроме AJAX submit с `preventDefault`).
Релиз v3.6.21
2026-02-23

Релиз v3.6.21

Исправлено переключение разделов в настройках: секции теперь открываются без ощущения полной перезагрузки страницы. · В `Контактах` длинные имена пользователей больше не раздвигают и не перестраивают иконки действий: текст ужимается/переносится внутри текстовой зоны, а кнопки остаются на месте. · В `views/admin_settings.php` клики по боковому меню настроек переведены на client-side section switch (`history.pushState`) вместо обязательной навигации по `settings_admin_*` route; `form action` динамически переключается по секции, поэтому сохранение остаётся корректным. · В `views/contacts.php` добавлены отдельные классы текстовой зоны (`contacts-person-*`), `contacts-actions` переведён в `nowrap`/`flex-shrink:0`, а длинные имена ограничены в 1–2 строки без сдвига иконок.
Релиз v3.6.22
2026-02-23

Релиз v3.6.22

Hotfix preloader: убран автопоказ на каждый внутренний клик, поэтому переключение секций настроек и переходы между чатами больше не должны “подвисать” из-за overlay. · Preloader сохранён там, где он реально полезен: первичная загрузка страницы, установка сайта и установка PWA. · В `views/partials/scripts.php` глобальный preloader переведён в explicit-flow режим: отключён автоперехват всех внутренних ссылок и обычных submit-форм. · Автопоказ preloader оставлен только для `install.php` submit и для форм с `data-preloader=\"1\"`; PWA install flow (`beforeinstallprompt`) сохранён отдельно.
Релиз v3.6.23
2026-02-23

Релиз v3.6.23

В `Профиле` длинные тексты в карточках друзей/страниц и в постах ведут себя аккуратнее: текст ужимается/переносится внутри своей зоны и не ломает действия/бейджи. · В `install.php` добавлена мини-анимация этапов установки (БД → миграции → админ → готово) с синхронизацией текста в preloader. · В `views/profile.php` добавлены clamp/overflow правила для карточек друзей/страниц и фикс action-зон в постах, чтобы длинные строки не выталкивали элементы интерфейса. · В `install.php` реализован submit-time stepper без изменения backend-логики: этапы анимируются на клиенте и обновляют `__TSOY_PRELOADER` в режиме `install-site`.
Релиз v3.6.24
2026-02-23

Релиз v3.6.24

Hotfix preloader: страницы `Профиль` и `Мессенджер` открываются заметно быстрее, overlay загрузки больше не ждёт долго все картинки/медиа. · Preloader теперь скрывается на этапе готовности DOM, а не только после полного `window.load`. · В `views/partials/scripts.php` логика initial preloader boot переведена на `DOMContentLoaded`/`interactive` + `requestAnimationFrame`, чтобы не блокировать UI на медиа-насыщенных страницах. · `window.load` и `pageshow` оставлены только как fallback-сигналы; добавлен hard fail-safe timeout на случай странных браузерных зависаний событий.
Релиз v3.6.25
2026-02-23

Релиз v3.6.25

Hotfix голосовых сообщений: голосовые `.webm` в мессенджере теперь отображаются плеером, а не только ссылкой на файл. · Фикс работает и для уже отправленных голосовых (по имени `voice_message_*`), и для новых записей. · В `app/files.php` добавлена нормализация MIME для browser voice-notes (`voice_message_*`), чтобы `.webm/.ogg/.m4a` не сохранялись как generic/video MIME. · В `app/chat.php` добавлен helper `chat_file_is_audio_like(...)`, а payload чата теперь отдаёт `file_is_audio` для корректного client render старых и новых голосовых.
Релиз v3.6.26
2026-02-23

Релиз v3.6.26

На главной странице блок недавних файлов больше не растягивает экран вниз: по умолчанию показываются первые 3 файла. · Остальные файлы открываются кнопкой `Показать ещё файлы` (порциями по 3), как в разделе новостей. · В `views/home.php` лента файлов переведена на существующий механизм `data-load-more-root` из `views/layout.php` без добавления нового JS-кода. · Для элементов файлов добавлено серверное начальное скрытие (`d-none`) после первых 3 записей, чтобы список был компактным сразу при рендере страницы.
Релиз v3.6.27
2026-02-23

Релиз v3.6.27

Hotfix голосовых сообщений в мессенджере: voice-notes отображаются компактной одной строкой без второй строки с именем файла. · Визуал голосового сообщения стал тоньше и аккуратнее, ближе к обычной строке сообщения. · В `views/chat.php` voice-note рендер (`voice_message_*`) уже использует отдельный inline-layout без file-link; в релиз включён hotfix компактности CSS (`.chat-voice-inline-row`, `.chat-audio-clip.is-voice-note`). · Серверный и polling JS рендеры голосовых сообщений синхронизированы: для voice-notes не выводится отдельная строка имени файла.
Релиз v3.6.28
2026-02-23

Релиз v3.6.28

Голосовые сообщения в мессенджере: один тап по микрофону запускает запись, повторный тап останавливает запись и сразу отправляет голосовое. · Если запись не удалось отправить автоматически, голосовое остаётся прикреплённым в composer и можно отправить вручную. · В `views/chat.php` обычный click/tap микрофона переведён на toggle-логику записи (`start/stop+auto-send`) без изменения mobile composer/fullscreen геометрии. · Добавлен helper программной отправки через существующий async submit (`chat_send_async`) после авто-прикрепления voice blob в composer.
Релиз v3.6.29
2026-02-23

Релиз v3.6.29

Голосовые сообщения в чате теперь воспроизводятся одинаково на ПК и телефоне: компактной одной кнопкой play/pause. · У voice-note больше нет зависимости от урезанных native audio-controls браузера на десктопе. · В `views/chat.php` voice-notes (`voice_message_*`) переведены на custom mini-player (кнопка + hidden audio) в server-side и polling-render. · Добавлена JS-делегация управления воспроизведением (play/pause, синхронизация иконки, автопауза предыдущего голосового).
Релиз v3.6.30
2026-02-23

Релиз v3.6.30

В `Настройки -> Внешний вид` добавлены персональные настройки preloader: режим (`умный / только установка-PWA / выключить`), компактный вид и показ текста. · Preloader теперь можно настроить под себя по каждому профилю аккаунта (профиль = отдельный user). · В `users` добавлены персональные UI-поля preloader (`ui_preloader_mode`, `ui_preloader_compact`, `ui_preloader_show_text`) с загрузкой в session snapshot и применением в `views/partials/scripts.php`. · В `views/partials/head.php` добавлены вариации preloader (`compact`, скрытие текста), а runtime учитывает пользовательский режим без ломки install/PWA сценариев.
Релиз v3.6.31
2026-02-23

Релиз v3.6.31

Hotfix голосовых сообщений на телефоне: mini-player voice-note снова стабильно воспроизводится по тапу. · Поведение mini-player синхронизировано для mobile/desktop (play/pause одной кнопкой). · В `views/chat.php` для voice mini-player добавлен mobile-safe `touchend` handler с подавлением дубля `click`, чтобы iPhone/Safari не терял тап. · Скрытый `<audio>` переведён с `display:none` на visually-hidden класс; добавлен `audio.load()` перед `play()` для лучшей совместимости мобильных браузеров.
Релиз v3.6.32
2026-02-23

Релиз v3.6.32

В Брендинге добавлена отдельная настройка `Иконка PWA` (опционально) для установленного приложения. · Если PWA-иконка не задана, приложение теперь использует `favicon`, а затем `лого` как fallback. · Route `index.php?r=manifest` теперь динамически подменяет `icons` (и shortcut icons) из настроек брендинга вместо жёстких `/public/icons/...`. · В `views/partials/head.php` `apple-touch-icon` переведены на динамический PWA icon с cache-bust, а `manifest` cache-bust учитывает смену иконки.
Релиз v3.6.33
2026-02-23

Релиз v3.6.33

В PWA исправлен просмотр файлов: теперь файл открывается во встроенной странице-просмотрщике с кнопкой `Назад`, а не “захватывает” приложение без пути назад. · Кнопка `Открыть` в файловом проводнике тоже использует этот встроенный просмотр в standalone/PWA. · Добавлен route `index.php?r=file_viewer` с безопасной проверкой доступа к файлу и возвратом по `back` URL. · В `views/partials/scripts.php` добавлен standalone-PWA перехват ссылок `index.php?r=view&id=...` с перенаправлением во встроенный просмотрщик вместо raw-file response.
Релиз v3.6.34
2026-02-23

Релиз v3.6.34

Hotfix mini-плеера голосовых на телефоне: воспроизведение по тапу снова стабильно запускается. · Поведение mini-player выровнено между iPhone/Android и ПК (одна кнопка play/pause). · В `views/chat.php` mini-player получил прямые обработчики `touchend/click` на кнопке (а не только делегирование через контейнер сообщений) с защитой от двойного срабатывания. · Убран рискованный pre-play `audio.load()` как основной путь; добавлен fallback reload только при ошибке `play()`.
Релиз v4.0.0
2026-02-27

Релиз v4.0.0

Новый формат приложения `messenger`: отдельный упрощённый режим только для Контактов и Мессенджера с прямым открытием чата. · Страница `Админ → Пользователи` полностью переработана: аккаунт и его профили теперь управляются в одной карточке. · В модель пользователей добавлены `app_mode`, `group_id`, `group_role`, `allow_multiprofile`, `admin_password_hint`; добавлены таблицы `groups`, `group_members`, `group_bridges` и миграции/индексы для них. · Реализована backend-видимость по группам и мостам в `users_directory`, `contacts_list`, `conversation_get_or_create`, `conversations_for_user` и проверках `chat_start`/добавления контактов.
Релиз v4.1.0
2026-02-28

Релиз v4.1.0

Управление группами и мостами вынесено в отдельную страницу `Дашборд → Группы и мосты` с полным управлением: создание, переименование, удаление групп и мостов, просмотр участников. · Страница `Пользователи` очищена от группового управления, оставлены только аккаунты и создание; добавлена ссылка на новую страницу групп. · Добавлены backend-функции `group_rename()`, `group_delete()`, `group_bridge_delete()` в `app/users.php` для полного CRUD-управления группами и мостами. · Новый route `admin_groups` в `index.php` с POST-обработчиками: `create_group`, `rename_group`, `delete_group`, `set_bridge`, `delete_bridge`.
Релиз v4.2.0
2026-02-27

Релиз v4.2.0

В мессенджере при записи голосового сообщения появляется красная кнопка-корзина для отмены записи (как в Telegram). Работает и при тапе, и при удержании. · Добавлена функция «Удалить у всех»: отправитель может удалить своё сообщение не только для себя, но и для собеседника. · Добавлена кнопка `#voiceCancelBtn` (`.chat-voice-cancel-btn`) в inputbar мессенджера; появляется при `voiceTapRecording`/`voiceHoldRecording`, вызывает `voiceRecResetState()` для отмены. · В `app/chat.php` добавлена `message_delete_for_all()` — физическое удаление сообщения и его реакций; доступно только отправителю.
Релиз v4.3.0
2026-02-27

Релиз v4.3.0

Создана отдельная страница «Новости» со всеми админ- и системными новостями, пагинацией и кнопкой «Показать ещё». · На дашборде в блоке «Новости» теперь показываются только 2 последних записи и ссылка «Все новости →». · Создан `views/news.php` — standalone-страница новостей с `page_top`, раздельными блоками admin/system news и load-more (initial=10). · Добавлен маршрут `case "news"` в `index.php` затягивающий `views/news.php`.
Релиз v4.4.0
2026-02-28

Релиз v4.4.0

Администрирование новостей вынесено из дашборда сотрудников на отдельную страницу с полным CRUD (создание, чтение, редактирование, удаление). · Файловый проводник «Мои файлы» полностью переписан: карточный/списочный вид, drag-n-drop файлов в папки, зона загрузки, контекстное меню, иконки по типу файла, переключатель grid/list. · В `app/news.php` добавлены `news_get()` и `news_update()` для CRUD новостей. · В `index.php` добавлен маршрут `news_update` (POST, csrf, audit_log).
Релиз v4.5.0
2026-02-28

Релиз v4.5.0

Мессенджер переработан в стиле Telegram: кнопка «корзина» при записи голосового теперь слева, заголовок чата стал overlay поверх сообщений (больше полезной площади), упрощённый хедер (только «Назад» + имя/аватар). · Нажатие на имя/аватар в чате открывает карточку пользователя (Telegram-style slide-in панель) с действиями: звонок, ссылка, профиль, очистить чат. · `views/chat.php` — voiceCancelBtn перемещён перед attachBtn в HTML (trash слева при записи). · `views/chat.php` — заменён `.chat-dialog-head` на `.chat-overlay-head` (position: absolute, backdrop-filter, overlay поверх сообщений).
Релиз v4.6.0
2026-02-28

Релиз v4.6.0

Создана единая дизайн-система проекта (14 переиспользуемых компонентов): карточки, hover-эффекты, стеклянные панели, навигация, статусные индикаторы, зоны загрузки и др. · Unification поверхностных переменных (light/dark × soft/balanced/strong) — 6 тем теперь задаются в одном месте вместо дублирования в каждом view. · Создан `public/css/design-system.css` (382 строки, 14 компонентов): `.t-surface`, `.t-stat-card`/`.t-stat-grid`, `.t-card-hover`, `.t-info-card`, `.t-card-frosted`, `.t-section`/`.t-section-title`, `.t-page-border`, `.t-summary-grid`, `.t-status-pill`, `.t-list-hover`, `.t-status-dot`, `.t-sticky-bar`, `.t-nav-item`, `.t-upload-zone`. · В `views/partials/head.php` подключён `public/css/design-system.css` перед inline `<style>`.
Релиз v5.0.0
2026-03-01

Релиз v5.0.0

Система «Группы» переименована в «Домены» — организационные единицы теперь называются доменами. · Маршрут `admin_groups` → `admin_domains`; навигация, дашборд и все UI-тексты обновлены. · Миграция БД: таблицы `groups`→`domains`, `group_bridges`→`domain_bridges`, `group_members`→`domain_members`; колонки `group_id`→`domain_id`, `group_role`→`domain_role`, `is_global_group`→`is_root_domain`, `group_a_id`→`domain_a_id`, `group_b_id`→`domain_b_id`. · Поддержка MySQL и SQLite: `ALTER TABLE RENAME`, `RENAME COLUMN` / `CHANGE COLUMN` в зависимости от драйвера.
Релиз v5.1.0
2026-03-01

Релиз v5.1.0

Маршрут `dashboard` (файловый проводник) переименован в `skybox` — SkyBox, личное облачное хранилище. · Маршрут `staff` (панель администратора) переименован в `dashboard` — Дашборд. · `views/dashboard.php` → `views/skybox.php`; `views/staff.php` → `views/dashboard.php`; `views/admin.php` → `views/filehub.php`. · `index.php`: маршруты, capability map, case-блоки и все redirect/fallback URL обновлены.
Релиз v5.2.0
2026-03-01

Релиз v5.2.0

FileHub переписан на единый с SkyBox карточный интерфейс (grid/list, sidebar, поиск, breadcrumbs). · Выпадающее меню профиля полностью переработано: чистый список ссылок, компактное переключение профилей, убрана сетка кнопок. · `views/filehub.php` переписан с табличной разметки на `cloud-file-grid`/`cloud-file-card` из SkyBox. · `views/layout.php`: dropdown `.topbar-profile-menu` и модальное окно `#userProfilesModal` заменены новой разметкой с `.tpm-*` и `.upm-*` классами.
Релиз v5.3.0
2026-03-01

Релиз v5.3.0

Поле «Отображаемое имя» разделено на «Имя» и «Фамилия» — два отдельных поля повсюду в системе. · При регистрации теперь обязательно указать имя и фамилию. · Миграция: добавлены колонки `first_name` и `last_name` в таблицу `users`. · Колонка `display_name` сохранена для обратной совместимости — автоматически вычисляется из `first_name + last_name`.
Релиз v5.4.0
2026-03-01

Релиз v5.4.0

Настройка Preloader перенесена из личных настроек пользователя в глобальные настройки администратора (раздел «Дизайн»). · Push-подписки: автоматическая дедупликация устройств — при переподписке с того же устройства старая подписка заменяется. · Preloader: параметры `preloader_mode`, `preloader_compact`, `preloader_show_text` перенесены в таблицу `settings`. · Per-user параметры `ui_preloader_mode`, `ui_preloader_compact`, `ui_preloader_show_text` больше не используются (колонки сохранены для совместимости).
Релиз v5.5.0
2026-03-02

Релиз v5.5.0

Защита от брутфорса: ограничение попыток входа (5 за 15 мин) с автоматической блокировкой по IP+логину. · Минимальная длина пароля — 8 символов (регистрация, смена пароля, создание пользователя). · Security headers: X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, HSTS. · .htaccess deny для директорий `app/` и `storage/` — прямой доступ запрещён.
Релиз v5.6.0
2026-02-28

Релиз v5.6.0

Редактирование профиля: страница переверстана на CSS Grid — блоки «Смена пароля» и «Уведомления» теперь в боковой колонке справа (1fr + 380px). · Политики: галочки для admin и admin_tester разблокированы при редактировании global_admin. · Новые функции: `user_role_rank()`, `user_can_see_password()`, `user_get_password_hint()`, `domain_get_by_code()`, `domain_generate_short_code()`, `domain_regen_code()`. · `domain_create()` генерирует уникальный 3-char код вместо slug-транслитерации.
Релиз v5.7.0
2026-02-28

Релиз v5.7.0

Дашборд: полностью переработанная панель с KPI-виджетами — пользователи, сообщения, файлы, контент, звонки, аудит. · Дашборд: лента последних действий (10 записей) с иконками по типу операции и карточка «Новые пользователи». · Новая функция `dashboard_stats()` в `app/health.php` — агрегированная статистика из 15+ таблиц за один вызов. · Настройки дашборда: `dashboard_widgets_json`, `dashboard_refresh_interval`, `dashboard_show_activity`, `dashboard_compact` в `settings_defaults()`.
Релиз v5.8.0
2026-02-28

Релиз v5.8.0

Настройки: иконки Bootstrap Icons у каждого пункта сайдбара (палитра, щит, шестерёнка, телефон, БД и др.) во цветных плашках. · Настройки: быстрый поиск по всем разделам — поле с debounce-фильтрацией, счётчик совпадений, горячая клавиша Ctrl+K. · CSS: новые классы `.admin-settings-search`, `.admin-settings-side-icon`, `.admin-settings-section-hdr`, `.js-dirty-badge`, `.admin-settings-kbd-hint`. · CSS: анимация `settingsFadeIn` (opacity + translateY), `savebarPulse` для индикации dirty-state.
Релиз v5.8.1
2026-02-28

Релиз v5.8.1

Удаление пользователей: исправлен баг — удалённые пользователи теперь скрываются из основного списка, кнопка «Показать удалённых» для просмотра. · Удаление пользователей: бейдж «удалён» и кнопка «Восстановить» в карточке пользователя. · `users_accounts_with_profiles()` принимает параметр `$includeDeleted` — по умолчанию скрывает `is_deleted=1`. · Новая функция `user_restore()` для восстановления soft-deleted пользователей.
Релиз v5.8.2
2026-02-28

Релиз v5.8.2

Полное удаление аккаунта: администратор может безвозвратно удалить пользователя и все его данные (сообщения, файлы, посты, профили). · Полное удаление аккаунта: кнопка «Полное удаление» в панели управления пользователями с усиленным подтверждением. · Новая функция `user_delete_hard()` — полная очистка всех данных пользователя из 31+ таблиц и файловой системы (аватары, обложки, загруженные файлы). · Ручная очистка таблиц без FK CASCADE: `domain_members`, `short_links`, `boards`, `rtc_*` таблицы; nullify `created_by_user_id` в `domains` / `domain_bridges`.
Релиз v5.8.3
2026-02-28

Релиз v5.8.3

База данных: новая опция «Подключиться без миграции» — позволяет переключить конфиг на существующую БД с данными без переноса и без удаления данных. · Предотвращает потерю данных при повторном подключении к MySQL после обновления сайта (когда конфиг сбрасывается на SQLite). · Параметр `skip_migration` в admin_db POST-обработчике: проверяет подключение, запускает `ensure_schema()` (CREATE IF NOT EXISTS + инкрементальные миграции) и `ensure_mysql_utf8mb4()`, но НЕ вызывает `migrate_database()` / `db_truncate()`. · Разрешена отправка формы при `target === current` в режиме reconnect (для переподключения к той же БД).
Релиз v5.8.4
2026-02-28

Релиз v5.8.4

Доменная изоляция: администратор домена теперь видит в разделе «Пользователи» только пользователей своего домена, а не всех. · Новая политика «Мосты для доменных администраторов» (Настройки → Доступ): не видеть / только просмотр / полный доступ к пользователям мостовых доменов. · `users_accounts_with_profiles()` принимает `?array $filterDomainIds` — SQL фильтрует `domain_id IN (…)`. · Новые хелперы: `is_root_domain_admin()`, `admin_bridged_domain_ids()`, `admin_visible_domain_ids()`, `admin_can_manage_user()`, `admin_can_view_user()`.
Релиз v5.8.5
2026-03-01

Релиз v5.8.5

Дашборд: статистика фильтруется по домену — администратор домена видит метрики только своего домена, а не всего сервиса. · Политики: доменные политики (мосты, корневой админ, домен по умолчанию) перенесены из Настроек на страницу «Политики» для единообразного управления. · Новая функция `dashboard_stats_for_domains(array $domainIds)` в `app/health.php` — статистика, ограниченная набором доменов. · `views/dashboard.php` использует `admin_visible_domain_ids()` для выбора `dashboard_stats()` или `dashboard_stats_for_domains()`.
Релиз v5.8.6
2026-03-01

Релиз v5.8.6

Мессенджер: полная переработка интерфейса в стиле Telegram — боковой список диалогов, панель переписки, адаптивная мобильная раскладка. · Мессенджер: голосовые сообщения, эмодзи-пикер, вложения файлов из облака и устройства. · views/chat.php: 6589 → 2410 строк (−63%), IIFE-архитектура с 23 секциями, 98 функций, 51 слушателей событий. · views/profile.php: 2338 → 1247 строк (−47%), CSS-переменные через .pf-* namespace, Bootstrap 5.3.3 интеграция.
Релиз v5.8.7
2026-03-01

Релиз v5.8.7

Исправлена ошибка FK-ограничения при переключении с SQLite на MySQL: таблица news больше не требует существующего пользователя для системных записей. · news: author_user_id изменён с INT NOT NULL на INT NULL DEFAULT NULL; FK-ограничение fk_news_user удалено. · Миграция Stage 10.21: DROP FOREIGN KEY, MODIFY COLUMN, UPDATE author_user_id = 0 → NULL для существующих MySQL-установок.
Релиз v5.8.8
2026-03-01

Релиз v5.8.8

Исправлена ошибка «Incorrect string value» при переключении на MySQL: эмодзи в новостях и чейнджлоге теперь корректно сохраняются. · ensure_mysql_utf8mb4() вызывается ДО ensure_schema() — SET NAMES utf8mb4 теперь действует до любых INSERT. · Список таблиц в ensure_mysql_utf8mb4 расширен с 21 до 39 (добавлены domains, boards, push_*, short_links, profile_media_items и др.).
Релиз v5.8.9
2026-03-01

Релиз v5.8.9

Профиль: исправлено отображение аватара и обложки (неверное имя поля avatar_file_id → avatar_path). · Мессенджер: сообщения теперь отображаются в цветных облачках (свои — акцентные, чужие — серые). · profile.php: avatar_file_id → avatar_path, cover_file_id → cover_path (6 мест). · chat.php: добавлены CSS-классы msg-own / msg-other на элементы сообщений (PHP + JS).
Релиз v5.8.10
2026-03-01

Релиз v5.8.10

Мессенджер: окно чата теперь корректно помещается в экран на любом устройстве (ПК и мобильные). · layout.php: content-canvas-mode → flex column с height:100dvh для корректного заполнения viewport. · chat.php: messenger-shell заменён calc(100dvh-140px) на flex:1 + min-height:0 — автоматическое заполнение оставшегося пространства.
Релиз v5.8.11
2026-03-01

Релиз v5.8.11

Профиль: кнопка «Написать» теперь открывает диалог с пользователем, а не пустой мессенджер. · Мессенджер: заголовок «Мессенджер» скрывается когда активен диалог (и на ПК, и на мобильных) — больше места для сообщений. · profile.php: ссылка «Написать» peer= → user_id= (матчит параметр в chat_start роуте). · chat.php: .chat-page-head скрывается на всех брейкпоинтах когда есть активный чат (display:none!important).
Релиз v5.8.12
2026-03-01

Релиз v5.8.12

Мессенджер: заголовок скрыт на мобильных — диалоги занимают весь экран. · Мессенджер: кнопка действий (⋯) теперь внутри облачка сообщения, а не за его пределами. · chat.php: .chat-page-head display:none!important на @media ≤991.98px (скрыт всегда на мобильных). · chat.php: .msg-actions-btn перенесён внутрь bubble (top:.25rem right:.25rem вместо left/right:-.8rem).
Релиз v5.8.13
2026-03-01

Релиз v5.8.13

Мессенджер: панель ввода теперь всегда видна на экране, страница не прокручивается. · layout.php: html/body/app-shell получают height:100dvh + overflow:hidden через :has(.content-canvas-mode). · layout.php: sidebar ограничен 100dvh с overflow-y:auto в canvas-режиме.
Релиз v5.8.14
2026-03-02

Релиз v5.8.14

Мессенджер: исправлены read receipts — отметка «прочитано» снова обновляется без перезагрузки страницы. · Мессенджер: исправлен экран звонка — окно звонка теперь корректно открывается и закрывается. · index.php: добавлен JSON endpoint `chat_mark_read` (CSRF + проверка участника диалога). · index.php: добавлен route `chat_file` для `admin_chat_view` с проверкой прав `admin/users`.
Релиз v5.8.15
2026-03-02

Релиз v5.8.15

Мессенджер: панель ввода закреплена внизу экрана на ПК и мобильных, без провала по высоте. · Мессенджер: кнопки отправки/микрофона снова работают по ожидаемой логике (пусто — микрофон, есть текст — отправка). · views/chat.php: выровнена мобильная/desktop вёрстка compose-зоны, исправлены conditionals рендера send/mic. · views/chat.php: интегрирован Picmo (`public/vendor/picmo/*`) вместо тяжёлого рантайма старого picker.
Релиз v5.8.16
2026-03-02

Релиз v5.8.16

Звонки в мессенджере: исправлен сценарий «Связь: ожидание» без подключения — звонки снова устанавливаются. · Мессенджер на телефоне: устранён правый зазор, чат и зона ввода снова растягиваются на всю ширину экрана. · index.php: call/rtc роуты добавлены в whitelist messenger-mode (`call_start/call_poll/call_signal_send/...`) — больше нет редиректа в HTML для JSON API. · app/chat.php: `call_is_participant()` получил fallback на `caller/callee` для legacy/частично мигрированных записей `rtc_call_members`.
Релиз v5.8.17
2026-03-02

Релиз v5.8.17

Мобильный чат: устранён нижний «подбородок» и восстановлена корректная полноэкранная геометрия в mobile/PWA. · Мессенджер: новые сообщения снова появляются строго снизу, история подгружается только вверх. · views/chat.php: mobile fullscreen переведён на единый safe-area (компенсация только в composer), `body.chat-mobile-fullscreen` больше не дублирует нижний inset. · views/chat.php: `chatJumpBottom` вынесен из потока сообщений; `appendMessages()` всегда добавляет в конец, `prependMessages()` — только в начало.
Релиз v5.8.18
2026-03-02

Релиз v5.8.18

Обновления больше не переключают рабочий сайт с MySQL на SQLite после распаковки релиза. · Первичный запуск корректно открывает установщик, если реальная конфигурация БД отсутствует. · scripts/make-release.ps1: исключено принудительное добавление `storage/config.php` в релиз (опционально только через `-IncludeRuntimeConfig`). · app/core.php: `is_installed()` переведён на валидацию конфигурации (`mysql` поля / наличие sqlite-файла), а не на простой факт существования `storage/config.php`.
Система v2.3.6
2026-02-22

Управление жизненным циклом комнат звонков

- Создатель может завершать комнату звонка. - Админ может закрывать и удалять публичные комнаты.
Система v2.3.8
2026-02-22

Оптимизация старта интерфейса

- Перенесены второстепенные polling-задачи в idle-фазу. - Снижен пиковый отклик главного потока при открытии страниц.
Система v2.3.9
2026-02-22

Hotfix 2.3.9: стабилизация текста

- Проведена чистка поврежденных строк интерфейса. - Обновлены сообщения и статусы в основных маршрутах.
Система v2.3.10
2026-02-22

Hotfix 2.3.10: исправление кодировки

- Удалены поврежденные текстовые строки из ключевых экранов. - Исправлены уведомления профиля, чатов и панели. - Подготовлена база для финальной стабилизации.
Система v2.3.11
2026-02-22

Hotfix 2.3.11: полная правка кодировки

- Восстановлен index.php из стабильной базы без поврежденных строк. - Исправлены системные сообщения и заголовки в маршрутах и админ-разделах. - Очищены тексты новостей: теперь только нормальная кириллица.
Система v2.3.12
2026-02-22

Hotfix 2.3.12: исправлен экран звонка по ссылке

- Восстановлены тексты и элементы интерфейса на странице /index.php?r=call_room. - Исправлены поврежденные символы в views/call_room.php и views/admin.php. - Добавлено закрытие комнаты создателем/админом прямо из экрана звонка.
Система v2.3.13
2026-02-22

Policy 2.3.13: UTF-8 без BOM всегда

- В проект добавлено обязательное правило кодировки: только UTF-8 without BOM. - Добавлен .editorconfig с фиксированным charset=utf-8. - В релизный процесс встроена автоматическая проверка scripts/check-encoding.ps1.
Система v2.3.14
2026-02-22

Call Quality 2.3.14: стабильнее звук и соединение

- В звонках убраны жестко прошитые STUN-серверы: теперь ICE/STUN/TURN задаются в админ-настройках. - Добавлены параметры качества аудио: echo/noise suppression, AGC, channel count, sample rate, max bitrate. - Включено автоматическое ICE-переподключение при `d…
Система v2.3.15
2026-02-22

Call Stability 2.3.15: быстрый отклик без «убийства» сервера

- Для звонков внедрён адаптивный polling: один активный запрос за цикл, без наложения и штормов. - Добавлены таймауты, backoff при ошибках сети и fast-poll после сигналов/действий. - Алгоритм применён в личных звонках, комнатах по ссылке и админ-мониторинге.
Система v2.3.16
2026-02-22

Admin DB Tools 2.3.16: импорт/экспорт БД и безопасная очистка

- В разделе администрирования БД добавлены экспорт базы в JSON и обратный импорт JSON-дампа проекта. - Добавлены операции обслуживания: очистка RTC-сигналов/комнат, очистка старого аудита, удаление soft-deleted файлов и файлов-сирот в uploads. - Импорт выполн…
Система v2.3.17
2026-02-22

Hotfix 2.3.17: emoji снова отправляются в мессенджере (MySQL utf8mb4)

- Исправлена критическая ошибка `Incorrect string value` при отправке смайликов/emoji в сообщениях. - Для MySQL-подключения принудительно включён utf8mb4 (`SET NAMES` / `SET CHARACTER SET`). - Добавлена автоматическая проверка и конвертация старых таблиц в ut…
Система v2.3.18
2026-02-22

Admin DB 2.3.18: диагностика utf8mb4 / emoji для MySQL

- В разделе администрирования БД добавлен отчёт по кодировке MySQL для контроля поддержки emoji. - Отчёт показывает default charset/collation базы, количество таблиц проекта и список таблиц/колонок с не-utf8mb4 кодировкой (если есть). - Это диагностический ре…
Система v2.3.19
2026-02-22

Messenger Emoji 2.3.19: полноценный picker + недавние + клоун 🤡

- Блок смайликов в мессенджере переработан: добавлены быстрые emoji, секция недавних и более удобное управление. - Подключена библиотека emoji picker с поиском и категориями (локально, без зависимости от CDN в рантайме). - В быстрый набор добавлен клоун 🤡; вы…
Система v2.3.20
2026-02-22

Messenger Hotfix 2.3.20: сообщения видны сразу в открытом чате

- Исправлена проблема, когда уведомление о новом сообщении приходило, но в открытом чате сообщение не отображалось до повторного входа в диалог. - Добавлен инкрементальный polling новых сообщений и дорисовка сообщений прямо в ленте без перезагрузки страницы. …
Система v2.3.21
2026-02-22

Messenger Hotfix 2.3.21: список диалогов обновляется без перезахода

- Исправлена проблема, когда новые сообщения были видны по уведомлениям, но список диалогов (превью/непрочитанные) обновлялся только после повторного открытия чата. - Добавлен polling списка диалогов с компактной JSON-выдачей и обновлением только изменившихся…
Система v2.3.22
2026-02-22

Messenger UI 2.3.22: PWA-интерфейс ближе к Telegram/WhatsApp

- Переработан интерфейс мессенджера: список диалогов стал удобнее (аватары, время, превью, unread badge), а окно чата выглядит аккуратнее и быстрее читается. - Обновлены шапка диалога, лента сообщений и поле ввода в стиле PWA-мессенджера: удобнее на ПК и комп…
Система v2.3.23
2026-02-22

Hotfix 2.3.23: стабильная авторизация (PWA/мобильные сессии)

- Исправлена проблема, когда авторизация слетала и приходилось часто заново входить в аккаунт. - Для PHP-сессий настроены стабильные cookie-параметры (30 дней, httponly, SameSite=Lax, корректный secure при HTTPS). - Добавлено скользящее продление session cook…
Система v2.3.24
2026-02-22

Messenger UX 2.3.24: фиксированная форма + lazy history x10 + glass mobile

- На ПК исправлена главная проблема длинных диалогов: форма ввода сообщений закреплена поверх ленты и всегда видна, больше не нужно листать страницу до самого низа. - История сообщений теперь догружается по 10 сообщений при прокрутке вверх (lazy loading), а н…
Система v2.3.25
2026-02-22

Messenger Hotfix 2.3.25: последние сообщения + форма ввода видны сразу

- Исправлен баг на ПК, из-за которого при открытии длинного диалога форма ввода оказывалась внизу страницы и до неё приходилось прокручивать весь сайт. - Теперь по умолчанию открываются последние сообщения, а форма ввода закреплена поверх ленты и всегда видна…
Система v2.3.26
2026-02-22

Notifications Center 2.3.26: быстрые настройки + проверка доставки + mobile chat keyboard fix

- Добавлен отдельный центр уведомлений: быстрые переключатели Push/браузерных уведомлений и звука, статус разрешений, Service Worker и режима PWA. - Добавлена кнопка проверки уведомления на устройство и улучшена логика доставки через единый runtime helper (Se…
Система v2.3.27
2026-02-22

Profile & Social 2.3.27: about-страница, лайки постов, загрузка файлов с устройства

- Добавлена публичная страница `/about` с описанием проекта и карточками людей, внёсших вклад (с фото). - В `Профиль → Редактирование` (для администратора) появился блок управления страницей «О проекте»: текст, авторы, роли, заметки и загрузка фото участников…
Система v2.3.28
2026-02-22

Hotfix 2.3.28: кириллица в центре уведомлений

- Исправлено битое flash-сообщение после сохранения настроек в центре уведомлений. - Причина: в `index.php` оставалась строка в mojibake-виде; заменена на нормальную кириллицу (`Настройки уведомлений сохранены.`).
Система v2.3.29
2026-02-22

Hotfix 2.3.29: полная зачистка кракозябр в index.php + усиленный encoding-check

- Исправлены оставшиеся битые строки в `index.php` (flash-сообщения и заголовки разделов), включая примеры из `Центра уведомлений` и `Админ → База данных`. - Проведён полный проход по рабочим файлам проекта: активный mojibake был обнаружен в `index.php` и уст…
Система v3.0.0
2026-02-22

TSOY.CLOUD 3.0: большой апдейт профилей и мультипрофилей

- Продолжена большая переработка профиля: мобильная вёрстка блоков `Друзья / Страницы / Медиа`, карточки постов и модалка комментариев стали аккуратнее и ближе к новому шаблону. - `Фото / Видео / Аудио` оформлены как отдельные ручные галереи профиля: пользова…
Система v3.1.0
2026-02-22

TSOY.CLOUD 3.1.0: новый конструктор страниц + единый файловый проводник для выбора медиа

- Переработан конструктор пользовательских страниц: теперь можно собирать не только галереи, но и статьи, обучающие гайды, плееры с роликами и блоки ссылок. - Убрано ручное указание ID файлов в конструкторе страниц: выбор изображений и видео теперь идёт через…
Система v3.2.0
2026-02-22

TSOY.CLOUD 3.2.0: большой PWA-апдейт (уведомления, офлайн-кеш, desktop/mobile режим)

- Усилен PWA-режим на ПК и смартфонах: обновлён manifest (ярлыки быстрых действий, launch-поведение, совместимость desktop/mobile). - Улучшена работа уведомлений и звонков: клик по уведомлению теперь надёжнее открывает нужный раздел/чат, включая fallback-увед…
Система v3.3.0
2026-02-22

TSOY.CLOUD 3.3.0: единая система оформления + компактный мессенджер

- Проведена большая унификация визуального стиля проекта: карточки, навигация, формы и модалки стали более согласованными. - В `Настройки → Оформление` добавлены новые настройки дизайна: шрифт, масштаб текста, ширина контента, контраст поверхностей и отдельна…
Система v3.3.1
2026-02-22

TSOY.CLOUD 3.3.1: мессенджер (единый проводник вложений + fix меню сообщений) и улучшенная связка с “Оформлением”

- В мессенджере выбор вложений из облака переведён на единый файловый проводник (как в профиле и конструкторе страниц): папки, поиск, фильтры, превью и нормальный mobile UX. - Исправлено перекрытие меню редактирования/удаления сообщения: dropdown больше не пр…
Система v3.3.2
2026-02-22

TSOY.CLOUD 3.3.2: центр уведомлений — сначала уведомления, потом настройки

- В центре уведомлений изменён порядок блоков: сначала показывается блок «Все уведомления» (события/сводка), а затем блок настроек уведомлений. - Обновлён заголовок верхнего блока для более понятной логики экрана.
Система v3.3.3
2026-02-22

TSOY.CLOUD 3.3.3: контакты и мессенджер теперь в одном визуальном стиле

- Страница «Контакты» приведена к визуальному стилю мессенджера: одинаковые поверхности, контуры, мягкий градиент шапки и тип карточек. - Стили контактов теперь также реагируют на настройки `Оформление` (`Контраст поверхностей` и `Плотность`), как и мессендже…
Система v3.3.4
2026-02-22

TSOY.CLOUD 3.3.4: единый проводник в профиле и нормальное админ-хранилище с папками

- Проводник в профиле при выборе обложки и вложений поста переведён на единое ядро (как в мессенджере): больше нет разрозненных списков/селекторов. - В модалке вложений поста объединены блоки «Из облака», «С устройства» и «Ссылки», чтобы вложения с телефона/П…
Система v3.3.5
2026-02-22

TSOY.CLOUD 3.3.5: профиль (двойные проводники/лишние кнопки) и mobile-fix клипсы в мессенджере

- В профиле устранён двойной проводник при выборе обложки поста: теперь открывается только новый единый проводник. - Исправлена ошибка разметки, из-за которой у опубликованных постов могли появляться лишние кнопки «Сохранить / Отмена». - Копирование ссылок на…
Система v3.3.6
2026-02-22

TSOY.CLOUD 3.3.6: в конструкторе страниц появился блок «Таблица»

- В разделе «Мои страницы» добавлен новый блок `Таблица` для конструкторов страниц. - Можно редактировать ячейки прямо в сетке и управлять структурой: добавлять/удалять строки и столбцы. - Есть переключатель «первая строка — заголовки» для красивого отображен…
Система v3.4.0
2026-02-23

TSOY.CLOUD 3.4.0: полноценный Web Push (закрытый PWA/сайт) + индикатор качества звонков

- Реализованы настоящие Web Push-уведомления: сообщения, звонки, лайки, комментарии и добавления в друзья теперь могут приходить на устройство даже когда сайт/PWA закрыт. - Подписка на push синхронизируется с настройкой уведомлений пользователя и Service Work…
Система v3.4.1
2026-02-23

TSOY.CLOUD 3.4.1: mobile fix мессенджера (вложения) и центрирование меню профиля

- Исправлено открытие окна вложений в мессенджере на телефонах: attach-модалка и единый проводник теперь открываются поверх fullscreen-чата. - Для клипсы (`📎`) усилена обработка tap/click на мобильных устройствах, чтобы тапы не терялись в сложной fixed-верстк…
Система v3.4.2
2026-02-23

TSOY.CLOUD 3.4.2: hotfix навигации по уведомлениям (deep-link в источник)

- Исправлен переход по клику на уведомления: теперь уведомление корректно открывает именно источник события (чат, календарь, профиль/пост и т.д.). - Починена обработка ссылок в браузере и PWA для установок проекта в подпапке сайта (deep-link резолвится относи…
Система v3.4.3
2026-02-23

TSOY.CLOUD 3.4.3: информативные уведомления (сообщения + действия для звонка)

- Уведомления о сообщениях теперь показывают отправителя и фрагмент текста сообщения, а клик ведёт сразу в нужный диалог. - Для входящих звонков в уведомления добавлены действия «Принять» и «Отклонить» (если устройство/браузер поддерживает actions в уведомлен…
Система v3.4.4
2026-02-23

TSOY.CLOUD 3.4.4: настройки уведомлений в дашборде + улучшенный PWA update flow

- В `Настройки` добавлен новый раздел для уведомлений: цвет, оформление, рингтон уведомлений и отдельный рингтон входящего звонка. - Добавлен раздел `PWA и обновления`: политика обновления (`manual/notify/auto`), интервал проверки Service Worker, автозапрос p…
Система v3.4.5
2026-02-23

TSOY.CLOUD 3.4.5: свои рингтоны уведомлений и звонка

- В новом блоке настроек уведомлений теперь можно загрузить собственный рингтон для обычных уведомлений и отдельный рингтон для входящего звонка. - Добавлено превью/прослушивание загруженных рингтонов прямо в админке и удаление кастомного файла по чекбоксу. -…
Система v3.5.0
2026-02-23

TSOY.CLOUD 3.5.0: stability-сборка (cleanup, техдолг, аккуратные оптимизации)

- Проведён стабилизационный проход по проекту: убран техмусор, упрощены мелкие дубли в layout/head и улучшена поддерживаемость кода. - Для кастомных рингтонов уведомлений/звонков усилена надёжность: удаление старых файлов при замене, безопасная очистка только…
Система v3.5.1
2026-02-23

TSOY.CLOUD 3.5.1: hotfix рингтонов на телефонах

- Исправлено воспроизведение кастомных рингтонов уведомлений на телефонах: теперь ошибка `audio.play()` корректно отслеживается и при необходимости включается fallback-звук. - Кастомные рингтоны (уведомления/звонок) теперь резолвятся относительно пути приложе…
Система v3.5.2
2026-02-23

TSOY.CLOUD 3.5.2: notifications reliability phase 1 (retry worker + диагностика)

- Усилена надёжность доставки wake-push: в серверной очереди уведомлений появились состояния отправки, повторы с backoff и защита от зависших обработок. - В `Настройки -> PWA и обновления` добавлена диагностика push-очереди: недоставленные элементы, активные …
Система v3.5.3
2026-02-23

TSOY.CLOUD 3.5.3: notifications reliability phase 2 (Web Push payload + fallback)

- Сервер теперь отправляет полноценный Web Push payload (тело уведомления) для поддерживаемых push-подписок, поэтому уведомления стабильнее приходят даже когда сайт/PWA закрыт. - Сохранён совместимый fallback `wake-push + push_pull`, если payload не поддержив…
Система v3.5.4
2026-02-23

TSOY.CLOUD 3.5.4: диагностика push-устройств в админке + тест push по подписке

- В `Настройки -> PWA и обновления` добавлен список push-устройств/подписок: пользователь, устройство, режим (`browser/standalone`), encoding, последний успех и ошибки. - Для каждой подписки появилась кнопка `Тест push`, чтобы проверить доставку уведомления н…
Система v3.5.5
2026-02-23

TSOY.CLOUD 3.5.5: фильтры и управление push-подписками в админке

- В диагностике push-устройств появились фильтры: поиск по пользователю/устройству/endpoint, `active/inactive` и `только с ошибками`. - Для каждой push-подписки доступны действия `Тест push`, `Отключить/Включить` и `Удалить` прямо в таблице. - Управление подп…
Система v3.5.6
2026-02-23

TSOY.CLOUD 3.5.6: бренд уведомлений из настроек + статус последнего push-теста

- Заголовок уведомлений теперь берётся из настроек сайта (брендинг), а не остаётся захардкоженным как `TSOY.CLOUD`. - В диагностике push-устройств добавлена колонка `Последний тест`: время, `OK/Fail`, режим `payload/wake`, HTTP-код и текст ошибки. - Тест push…
Система v3.5.7
2026-02-23

TSOY.CLOUD 3.5.7: статистика реальной доставки push + бренд уведомлений из настроек

- В диагностике push-устройств появилась статистика реальных доставок по подписке: `payload`, `wake`, `wake fallback`, `errors` (накопительно, с последнего сброса). - Добавлены кнопки сброса статистики доставки push: глобально по всем подпискам и отдельно по …
Система v3.5.8
2026-02-23

TSOY.CLOUD 3.5.8: hotfix названия уведомлений (бренд из настроек)

- Исправлен приоритет названия уведомлений: теперь сначала используется `Название в шапке`, затем `Название сайта`. - Починен fallback тестового уведомления в центре уведомлений: больше нет захардкоженного `TSOY.CLOUD`. - Серверные push-уведомления и клиентск…
Система v3.5.10
2026-02-23

TSOY.CLOUD 3.5.10: сводка + мини-график доставки push (payload/fallback/error)

- В диагностике push добавлена агрегированная сводка по всем подпискам: `payload success rate`, `fallback rate`, `error rate` и общее число попыток. - Добавлен мини-график по дням (14 дней): stacked bars `payload / wake / errors`, где высота столбца = объём п…
Система v3.5.11
2026-02-23

TSOY.CLOUD 3.5.11: админ-настройки разбиты на понятные разделы

- Страница `Настройки` получила быстрый навигатор по разделам (якоря): теперь можно сразу перейти к брендингу, оформлению, PWA/push, WebRTC и другим блокам. - Добавлена логическая группировка секций (`Основные параметры`, `Дизайн и уведомления`, `Функции, зво…
Система v3.5.12
2026-02-23

TSOY.CLOUD 3.5.12: hotfix навигации по разделам настроек

- Исправлены кнопки блока «Разделы настроек»: переходы теперь корректно ведут к нужным секциям страницы `Настройки`, а не в корень сайта. - Убран sticky-режим навигационного блока, из-за которого он перекрывал интерфейс при прокрутке.
Система v3.5.13
2026-02-23

TSOY.CLOUD 3.5.13: Android-style настройки (меню слева, раздел справа)

- Страница `Настройки` переделана в режим с боковым меню разделов: слева список категорий, справа открывается только выбранный раздел. - Переключение секций происходит без переходов по странице и без перекрытия интерфейса навигационным блоком. - Добавлена сов…
Система v3.5.14
2026-02-23

TSOY.CLOUD 3.5.14: выбор часового пояса по Гринвичу в настройках системы

- В разделе `Система` добавлен выпадающий список выбора часового пояса по Гринвичу (`GMT/UTC`) с готовыми смещениями. - Выбор смещения автоматически подставляет корректный timezone ID в поле `Часовой пояс`, чтобы настройка сохранялась без ручного ввода. - Пол…
Система v3.5.15
2026-02-23

TSOY.CLOUD 3.5.15: role-aware настройки для всех + Android-style меню разделов

- В главное меню добавлен пункт `Настройки` для всех авторизованных пользователей; экран настроек стал role-aware (пользователь/модератор, админ, admin_tester, global_admin). - Настройки переведены в Android-style режим: слева список разделов, справа выбранны…
Система v3.5.16
2026-02-23

TSOY.CLOUD 3.5.16: админ-настройки разнесены по отдельным страницам

- Админские настройки физически разнесены по отдельным страницам (`Брендинг`, `Доступ и лимиты`, `Система`, `Оформление`, `PWA и push`, `Звонки/диагностика`, `База данных`) при сохранении единого бокового меню. - Переходы в меню теперь открывают соответствующ…
Система v3.5.17
2026-02-23

TSOY.CLOUD 3.5.17: hotfix вёрстки страницы настроек (desktop/mobile)

- Исправлен регресс после перевода меню настроек на ссылки: пункты бокового меню снова отображаются как полноценные кнопки без подчёркиваний и на всю ширину колонки. - Видимый раздел настроек в правой части теперь занимает всю доступную ширину (исправлен конф…
Система v3.5.18
2026-02-23

TSOY.CLOUD 3.5.18: hotfix блока БД и нижней панели сохранения в настройках

- В разделе `База данных` на странице `Настройки` убрана лишняя горизонтальная линия перед карточкой блока. - Нижняя панель сохранения (`Сохраняются все изменённые поля...`) теперь использует theme-aware цвета и остаётся читаемой в светлой/тёмной теме. - Испр…
Система v3.6.0
2026-02-23

TSOY.CLOUD 3.6.0: начало рефакторинга связки Профиль / Контакты / Мессенджер

- На страницах `Профиль`, `Контакты` и `Мессенджер` добавлен единый блок `Social Hub` с переключателем разделов и описанием назначения каждого экрана. - Зафиксированы роли модулей: `Профиль` = публичная страница и контент, `Контакты` = каталог и управление св…
Система v3.6.1
2026-02-23

TSOY.CLOUD 3.6.1: следующий шаг по связке Контакты/Мессенджер + UX-фиксы настроек

- В мессенджере блок `Быстрый старт` теперь использует только ваши контакты; полный каталог пользователей и управление связями оставлены в разделе `Контакты`. - В настройках исправлено выравнивание блока `База данных` относительно бокового меню (карточка боль…
Система v3.6.2
2026-02-23

TSOY.CLOUD 3.6.2: убран лишний Social Hub, мессенджер закреплён за диалогами

- Убран лишний UI-блок `Social Hub` с экранов `Профиль`, `Контакты` и `Мессенджер`: переключение между разделами остаётся в основном меню, интерфейс стал компактнее. - В `Мессенджере` оставлены только активные диалоги и сам чат; новые диалоги создаются через …
Система v3.6.3
2026-02-23

TSOY.CLOUD 3.6.3: контакты = старт общения, мессенджер = только диалоги

- На странице `Контакты` у карточек пользователей добавлены явные действия `Написать` и `Позвонить`. - `Мессенджер` очищен от каталоговых элементов: в боковой панели оставлена только история активных диалогов и сам чат. - Переходы через `chat_start` теперь ко…
Система v3.6.4
2026-02-23

TSOY.CLOUD 3.6.4: визуальный полиш мессенджера (в стиле Контактов) без риска вернуть подбородок

- Обновлены список диалогов, шапка активного диалога и composer мессенджера: карточки, границы, кнопки и типографика приведены к стилю раздела `Контакты`. - Улучшены состояния hover/active у диалогов, читаемость превью сообщений и кнопок в шапке диалога. - Из…
Система v3.6.5
2026-02-23

TSOY.CLOUD 3.6.5: второй полиш-проход мессенджера (диалоги, шапка, composer, плотность)

- Доработаны карточки диалогов, шапка активного диалога и composer мессенджера: кнопки, поверхности, состояния hover/active и типографика стали более цельными. - В шапке списка диалогов добавлена компактная CTA-кнопка `Контакты`, а пустое состояние стало поле…
Система v3.6.6
2026-02-23

TSOY.CLOUD 3.6.6: hotfix iPhone/PWA бренда уведомлений (строка from ...)

- Исправлен бренд iPhone/PWA уведомлений: системная строка `from ...` теперь берёт имя из настроек (`Название в шапке` → `Название сайта`), а не из старого `TSOY.CLOUD`. - Добавлен динамический route `manifest`, чтобы Web App Manifest подстраивался под бренди…
Система v3.6.7
2026-02-23

TSOY.CLOUD 3.6.7: hotfix mobile-overflow окна Диалоги в мессенджере

- Исправлен небольшой выезд окна `Диалоги` за экран на телефонах (в т.ч. iPhone): список диалогов теперь укладывается в ширину viewport. - Причина была в mobile-overflow от Bootstrap `row g-3` (отрицательные margins в canvas-режиме чата). - Фикс сделан только…
Система v3.6.8
2026-02-23

TSOY.CLOUD 3.6.8: ускорена отправка сообщений в мессенджере (без паузы от push)

- Исправлена задержка при отправке сообщений в мессенджере (ощущение паузы 2–3 секунды после нажатия `Отправить`). - Причина была в синхронной отправке Web Push прямо внутри `chat_send_async`: push мог тормозить HTTP-ответ чату. - Теперь сообщение сохраняется…
Система v3.6.9
2026-02-23

TSOY.CLOUD 3.6.9: фундамент для больших чатов (миллионы сообщений) без нагрузки на сервер

- Подготовлена серверная оптимизация чата для больших историй переписки: список диалогов и polling работают легче без изменения интерфейса. - Добавлены денормализованные unread-счётчики в `conversations` (по каждому участнику), чтобы не считать `COUNT(*)` unr…
Система v3.6.10
2026-02-23

TSOY.CLOUD 3.6.10: иконки действий в Контактах (конверт/трубка/корзина)

- На странице `Контакты` действия в карточках (`Написать`, `Позвонить`, `Удалить`) заменены на компактные иконки: конверт, трубка и корзина. - Интерфейс стал чище и плотнее, особенно в каталоге пользователей и в блоке `Мои контакты`. - Сохранены `title` и `ar…
Система v3.6.11
2026-02-23

TSOY.CLOUD 3.6.11: доведён UI действий в Контактах (+ строка Каталог/Найти)

- Кнопка `В контакты` в каталоге пользователей переведена на иконку `человек+`, чтобы все действия в карточках (`написать`, `позвонить`, `удалить`, `добавить`) были в одном стиле. - Заголовок `Каталог пользователей` и кнопка `Найти` теперь собраны в одну стро…
Система v3.6.12
2026-02-23

TSOY.CLOUD 3.6.12: системные файлы вынесены в отдельную папку public/system

- Логотип, favicon, кастомные звуки уведомлений/звонка и служебные ассеты спец-регистрации теперь хранятся в единой системной папке `public/system/...`. - Добавлен общий helper для системных файлов: безопасное сохранение upload-ов, удаление только из разрешён…
Система v3.6.13
2026-02-23

TSOY.CLOUD 3.6.13: единый раздел «Внешний вид», готовые профили оформления и кириллические шрифты

- В настройках объединён дизайн-блок: вместо раздельных пунктов `Внешний вид профиля` и `Внешний вид сайта` теперь один раздел `Внешний вид` с подпунктами (профиль / сайт / стиль уведомлений). - Для глобального оформления сайта добавлены готовые профили внешн…
Система v3.6.14
2026-02-23

TSOY.CLOUD 3.6.14: UX-фикс профиля (кнопка «Написать» и удаление вложений)

- На своей карточке профиля больше не показывается кнопка `Написать` — она остаётся только при просмотре чужого профиля. - У вложений постов в обычном режиме просмотра убраны кнопки `Удалить`; удаление осталось только в режиме редактирования поста. - Исправле…
Система v3.6.15
2026-02-23

TSOY.CLOUD 3.6.15: персональные режимы меню и публичного профиля для гостей

- В `Настройки -> Внешний вид` добавлены персональные режимы основного бокового меню: `показывать всегда`, `скрывать всегда`, `по кнопке`. - Для публичной страницы профиля (`/user/<login>`) добавлена личная настройка для гостей: показывать боковое меню, скрыв…
Система v3.6.16
2026-02-23

TSOY.CLOUD 3.6.16: контекстное меню сообщений (ПК/мобилка) + цитаты и реакции

- В мессенджере по правому клику мыши и по удержанию на телефоне открывается меню действий сообщения: `Изменить`, `Удалить`, `Цитировать`, `Реакция`. - Добавлены emoji-реакции к сообщениям с отображением количества; свою реакцию можно переключать повторным на…
Система v3.6.17
2026-02-23

TSOY.CLOUD 3.6.17: галочки прочтения сообщений в мессенджере

- У ваших сообщений в мессенджере появилась компактная галочка статуса: сообщение прочитано или ещё нет. - Статус прочтения обновляется в открытом диалоге автоматически через обычный polling, без перезагрузки страницы. - Изменение не затрагивает мобильную гео…
Система v3.6.18
2026-02-23

TSOY.CLOUD 3.6.18: «будильник» по сообщению в контекстном меню мессенджера

- В контекстное меню сообщения добавлен пункт `Будильник` — повторное уведомление собеседнику по конкретному сообщению. - Будильник работает только для ваших сообщений и только если сообщение ещё не прочитано (иначе пункт отключается/сервер вернёт `уже прочит…
Система v3.6.19
2026-02-23

TSOY.CLOUD 3.6.19: старт голосовых сообщений в мессенджере (красный интерфейс записи)

- В composer мессенджера добавлена красная кнопка микрофона: открывается аккуратное окно записи голосового сообщения. - Запись выполняется через `MediaRecorder` прямо на устройстве и прикрепляется в чат как аудио-вложение. - Аудио-вложения (в том числе голосо…
Система v3.6.20
2026-02-23

TSOY.CLOUD 3.6.20: preloader загрузки сайта и отдельный статус установки PWA

- Добавлен глобальный preloader загрузки страниц: при открытии/переходе по сайту показывается аккуратный индикатор `Загрузка`, чтобы интерфейс не выглядел пустым при ожидании. - Для PWA-установки добавлен отдельный режим `Идёт установка приложения…` (показыва…
Система v3.6.21
2026-02-23

TSOY.CLOUD 3.6.21: плавное переключение секций настроек + фиксы длинных имён в Контактах/Мессенджере

- Разделы в `Настройках` теперь переключаются мягко без полного визуального reload-эффекта: открывается нужный блок справа, а URL обновляется через историю браузера. - В `Контактах` длинные имена пользователей больше не смещают иконки действий (`конверт / тру…
Система v3.6.22
2026-02-23

TSOY.CLOUD 3.6.22: hotfix preloader (без ступора на чатах и секциях настроек)

- Исправлен глобальный preloader: он больше не включается на каждый внутренний клик и не тормозит переключение секций в `Настройках` или переходы между диалогами в `Мессенджере`. - Preloader оставлен только для действительно длинных/понятных сценариев: первич…
Система v3.6.23
2026-02-23

TSOY.CLOUD 3.6.23: hold-to-record голосовые + компактное предпрослушивание и прогресс установки

- В `Мессенджере` добавлен мобильный режим `удерживай для записи`: зажмите красную кнопку микрофона, отпустите — запись остановится и автоматически прикрепится к сообщению. - После записи голосового в composer появляется компактное предпрослушивание (мини-пле…
Система v3.6.24
2026-02-23

TSOY.CLOUD 3.6.24: hotfix preloader на Профиле и в Мессенджере

- Исправлен долгий preloader на страницах `Профиль` и `Мессенджер`: overlay загрузки больше не ждёт полный `window.load` со всеми картинками и медиа. - Preloader теперь скрывается на этапе готовности DOM (`DOMContentLoaded`/`interactive`), поэтому страницы на…
Система v3.6.25
2026-02-23

TSOY.CLOUD 3.6.25: hotfix отображения голосовых сообщений (плеер вместо файла)

- Исправлено отображение голосовых сообщений в мессенджере: записи вида `voice_message_*.webm` теперь показываются встроенным аудио-плеером, а не только ссылкой на файл. - Фикс работает и для уже отправленных сообщений: чат распознаёт голосовые по имени файла…
Система v3.6.26
2026-02-23

TSOY.CLOUD 3.6.26: компактная лента недавних файлов на главной

- На главной странице блок `Недавние мои файлы` / `Недавние гостевые файлы` больше не создаёт длинный `подбородок` из списка файлов. - По умолчанию показываются первые 3 файла, остальные открываются кнопкой `Показать ещё файлы` (порциями по 3). - Использован …
Система v3.6.27
2026-02-23

TSOY.CLOUD 3.6.27: голосовые сообщения в одну компактную строку

- Голосовые сообщения (`voice_message_*`) в мессенджере теперь отображаются компактной одной строкой без отдельной строки имени файла. - Плеер voice-note визуально стал тоньше и аккуратнее, чтобы не раздувать высоту сообщения. - Фикс работает и в первичном ре…
Система v3.6.28
2026-02-23

TSOY.CLOUD 3.6.28: tap-to-record для голосовых (второй тап — отправка)

- В мессенджере микрофон теперь работает в режиме toggle: первый тап запускает запись, второй тап останавливает запись и сразу отправляет голосовое сообщение. - Если автоотправка не удалась, запись автоматически остаётся прикреплённой в поле ввода — её можно …
Система v3.6.29
2026-02-23

TSOY.CLOUD 3.6.29: одинаковый mini-player голосовых на ПК и телефоне

- Голосовые сообщения в мессенджере теперь воспроизводятся одинаково на ПК и мобильных: компактной кнопкой play/pause в одну строку. - Убрана зависимость от урезанных native audio-controls браузера на десктопе (где могла пропадать кнопка воспроизведения). - Н…
Система v3.6.30
2026-02-23

TSOY.CLOUD 3.6.30: персональные настройки preloader

- В `Настройки -> Внешний вид` добавлены настройки preloader для текущего профиля: режим работы (`умный / только установка-PWA / выключить`), компактный вид и показ текста. - Настройки персональные: у каждого профиля (профиль = отдельный user) можно выбрать с…
Система v3.6.31
2026-02-23

TSOY.CLOUD 3.6.31: hotfix воспроизведения голосовых на телефоне

- Исправлено воспроизведение голосовых сообщений на мобильных устройствах: mini-player снова стабильно запускается по тапу. - Для voice-note добавлен mobile-safe `touchend` с защитой от двойного срабатывания (`touchend` + `click`). - Скрытый аудио-элемент пер…
Система v3.6.32
2026-02-23

TSOY.CLOUD 3.6.32: отдельная иконка PWA + fallback на favicon/logo

- В `Настройки -> Брендинг` добавлена отдельная загрузка `Иконка PWA` для установленного приложения. - Если отдельная PWA-иконка не задана, приложение использует `favicon`, а затем `лого` как fallback. - `manifest` и `apple-touch-icon` теперь формируются дина…
Система v3.6.33
2026-02-23

TSOY.CLOUD 3.6.33: встроенный просмотр файлов в PWA (с возвратом назад)

- В standalone/PWA просмотр файла теперь открывается не “сырым” `view`, а во встроенной странице-просмотрщике с кнопкой `Назад`. - После просмотра файла в PWA можно вернуться обратно в приложение без закрытия и повторного запуска. - Кнопка `Открыть` в файлово…
Система v3.6.34
2026-02-23

TSOY.CLOUD 3.6.34: hotfix mini-плеера голосовых на телефоне

- Исправлен запуск воспроизведения голосовых сообщений на телефоне (mini-player в чате). - Для кнопки mini-player добавлены прямые mobile-safe обработчики `touchend/click` с защитой от двойного срабатывания. - `audio.load()` больше не мешает запуску как основ…
Система v4.0.0
2026-02-27

TSOY.CLOUD 4.0.0: группы, мосты и формат messenger

- Добавлены группы пользователей и мосты между группами: можно гибко задавать, кто видит друг друга в контактах и чатах. - Админ-раздел `Пользователи` переработан: аккаунт и его профили управляются в одной карточке, добавлены режим приложения, мультипрофиль и…
Система v4.1.0
2026-02-28

TSOY.CLOUD 4.1.0: страница групп, единый дизайн

- Группы и мосты вынесены в отдельную страницу управления: создание, переименование, удаление групп, управление мостами и просмотр участников. - Страница пользователей упрощена: только аккаунты и создание новых пользователей. - Унифицирован дизайн всего проек…
Релиз v2.3.8
2026-02-22

Релиз v2.3.8

Снижен лаг при открытии страниц. · Polling-задачи переведены в менее агрессивный режим.
Релиз v2.3.10
2026-02-22

Релиз v2.3.10

Исправлены критические проблемы отображения текста и уведомлений. · Подготовлена база для финальной правки кодировки.
Релиз v2.3.11
2026-02-22

Релиз v2.3.11

Полностью восстановлен текст интерфейса на корректной кириллице. · Исправлены сообщения профиля, чатов, звонков и административных страниц. · index.php восстановлен из стабильной версии и очищен от поврежденных строк. · Обновлены маршруты администрирования звонков: мониторинг, закрытие и удаление комнат.
Релиз v2.3.12
2026-02-22

Релиз v2.3.12

Исправлено отображение текста на странице звонка по ссылке. · Восстановлены подписи и действия в админ-панели. · Очищены поврежденные символы в views/call_room.php и views/admin.php. · В call_room добавлено управление закрытием комнаты для создателя и администратора.
Релиз v2.3.13
2026-02-22

Релиз v2.3.13

Зафиксировано правило: кодировка проекта только UTF-8 без BOM. · Добавлен .editorconfig с обязательным charset=utf-8. · Добавлен scripts/check-encoding.ps1 и подключён в scripts/make-release.ps1.
Релиз v2.3.14
2026-02-22

Релиз v2.3.14

Улучшено качество аудиозвонков в личных и публичных комнатах. · Добавлена автопопытка восстановления соединения при сетевых сбоях. · Вынесены единые WebRTC-параметры: ICE/STUN/TURN и аудио-профиль в настройки админа. · Убраны хардкоды RTCPeerConnection в chat/call_room/admin_call_monitor.
Релиз v2.3.15
2026-02-22

Релиз v2.3.15

Звонки стали отзывчивее без перегруза сервера: события обрабатываются быстрее после действий пользователя. · Стабильнее работа в фоне и после возврата в приложение/вкладку. · Переведены call polling-циклы на адаптивный single-flight алгоритм (без наложения запросов). · Добавлены таймауты запросов, backoff при ошибках и fast-retry после сигналов/действий.
Релиз v2.3.16
2026-02-22

Релиз v2.3.16

В админке добавлены импорт и экспорт базы данных в JSON для резервного копирования и переноса. · Добавлены сервисные операции очистки БД и файлов: RTC-мусор, старый аудит, удалённые файлы и сироты в uploads. · Добавлен модуль app/admin_maintenance.php с безопасным экспортом/импортом и обслуживанием хранилища. · Импорт БД выполняется с полной заменой данных таблиц приложения (через DELETE в транзакции, без TRUNCATE).
Релиз v2.3.17
2026-02-22

Релиз v2.3.17

Исправлена критическая ошибка отправки emoji/смайликов в мессенджере на MySQL. · После обновления сайт автоматически приводит старые таблицы чата и связанные таблицы к emoji-safe кодировке utf8mb4. · MySQL-подключение теперь принудительно использует SET NAMES/CHARACTER SET utf8mb4. · Добавлен runtime-check кодировки таблиц через INFORMATION_SCHEMA и best-effort конвертация в utf8mb4 только при необходимости.
Релиз v2.3.18
2026-02-22

Релиз v2.3.18

В админке БД добавлен визуальный статус проверки utf8mb4/emoji (для MySQL). · Теперь можно быстро увидеть, есть ли таблицы или колонки, которые ещё не готовы к emoji. · Добавлен отчёт admin_db_charset_report() по INFORMATION_SCHEMA: default charset/collation БД, таблицы и текстовые колонки. · Отчёт выведен в views/admin_db.php с компактной сводкой и таблицами проблемных объектов (если есть).
Релиз v2.3.19
2026-02-22

Релиз v2.3.19

Переработан блок смайликов в мессенджере: быстрые emoji, недавние emoji и удобная панель выбора. · Подключена библиотека emoji picker с поиском и категориями; добавлены быстрые кнопки, включая клоуна 🤡. · Локально подключена библиотека public/vendor/emoji-button/emoji-button.min.js (без CDN-зависимости в рантайме). · В chat composer добавено хранение недавних emoji в localStorage и fallback-режим, если библиотека недоступна.
Релиз v2.3.20
2026-02-22

Релиз v2.3.20

Исправлен баг мессенджера: новые сообщения теперь появляются в открытом чате без перезахода. · Если вы находитесь внизу ленты, чат автоматически прокручивается к новым сообщениям. · Добавлен lightweight endpoint chat_messages_poll (инкрементальная выдача сообщений по after_id). · Во views/chat.php добавлен single-flight polling и клиентский рендер новых сообщений без полной перезагрузки страницы.
Релиз v2.3.21
2026-02-22

Релиз v2.3.21

Список диалогов в мессенджере теперь обновляется автоматически: новые сообщения и непрочитанные появляются без перезахода в чат. · Превью последнего сообщения, время и бейдж непрочитанных синхронизируются прямо в открытом разделе «Мессенджер». · Добавлен endpoint chat_dialogs_poll с компактной JSON-выдачей списка диалогов для текущего пользователя. · Во views/chat.php добавлен отдельный single-flight polling списка диалогов с backoff, signature-check и обновлением DOM только при изменениях.
Релиз v2.3.22
2026-02-22

Релиз v2.3.22

Переработан интерфейс мессенджера в стиле PWA-мессенджеров: удобнее список диалогов, компактнее шапка чата и чище лента сообщений. · На телефоне чат занимает экран аккуратнее: более компактные action-кнопки, улучшенная шапка и удобнее поле ввода для быстрых сообщений. · Во views/chat.php обновлены layout/styling для desktop и mobile (split-pane, sticky composer, адаптивная шапка, улучшенные bubbles). · Серверный и клиентский рендер списка диалогов унифицированы: одинаковая разметка строк (аватар/имя/время/превью/unread badge).
Релиз v2.3.23
2026-02-22

Релиз v2.3.23

Исправлена проблема со «слетающей» авторизацией: сессия пользователя теперь сохраняется стабильнее, особенно в PWA и на мобильных устройствах. · Пользователю больше не нужно постоянно повторно входить в аккаунт при обычном использовании сайта. · Добавлена устойчивая инициализация PHP-сессии: cookie lifetime 30 дней, gc_maxlifetime 30 дней, httponly/samesite и корректный secure через HTTPS/X-Forwarded-Proto. · Сессии вынесены в project-local storage/sessions (если доступно), чтобы изолировать их от server-wide gc других сайтов/приложений.
Релиз v2.3.24
2026-02-22

Релиз v2.3.24

Исправлен UX мессенджера на ПК: форма ввода теперь закреплена поверх ленты сообщений и всегда видна, как в Telegram/WhatsApp. · Возвращён стеклянный (glass) вид мессенджера на телефоне и PWA-экране. · Добавлен endpoint chat_messages_before_poll (before_id) и server helper conversation_messages_before_for_user() для lazy-history. · Стартовая загрузка сообщений в чате уменьшена до компактной пачки, дальнейшая история догружается по scroll trigger.
Релиз v2.3.25
2026-02-22

Релиз v2.3.25

Исправлен критичный UX-баг мессенджера на ПК: при открытии диалога теперь сразу видны последние сообщения и форма ввода (без прокрутки всей страницы вниз). · Форма ввода закреплена поверх ленты сообщений, а прокрутка выполняется внутри окна чата. · Для desktop conversation pane добавлена жёсткая высота по viewport (CSS + JS syncDesktopMessengerViewport), чтобы контент не растягивал страницу. · chatMessages переведён в гарантированно внутренний scroll-container; composer остаётся fixed/overlay внутри card.
Релиз v2.3.26
2026-02-22

Релиз v2.3.26

Добавлен отдельный центр уведомлений: быстрые переключатели, статус разрешений браузера, Service Worker/PWA и тест уведомления на устройство. · Настройки уведомлений теперь можно менять без захода в профиль — прямо из раздела «Уведомления». · Маршрут notifications получил обработку POST (сохранение notify_desktop/notify_sound) и скорректирован порядок mark_seen/counts. · Глобальный runtime уведомлений переработан: user-scoped localStorage state, единый helper __TSOY_NOTIFY_RUNTIME (SW/device notify, permission/status/test).
Релиз v2.3.27
2026-02-22

Релиз v2.3.27

Добавлена публичная страница «О проекте» (`/about`) с описанием проекта и карточками участников/вклада. · В профиле (редактирование) для администратора добавлен блок управления страницей «О проекте», включая загрузку фото участников с устройства. · Добавлены маршрут `about`, pretty-route `/about` и POST-обработчик `post_like_toggle` с JSON-ответом для AJAX. · В `profile_edit` добавлено сохранение настроек страницы about через `settings` + хранение списка участников в JSON (`about_contributors_json`).
Релиз v2.3.28
2026-02-22

Релиз v2.3.28

Hotfix: исправлено битое сообщение после сохранения настроек в центре уведомлений (теперь отображается нормальная кириллица). · В `index.php` заменены оставшиеся mojibake-строки flash-сообщения `Настройки уведомлений сохранены.` в обработчиках профиля и центра уведомлений.
Релиз v2.3.29
2026-02-22

Релиз v2.3.29

Hotfix: исправлены оставшиеся «кракозябры» в системных сообщениях/заголовках из `index.php` (включая центр уведомлений и очистку аудита в разделе БД). · Выполнена массовая зачистка mojibake-строковых литералов в `index.php` (восстановлена нормальная кириллица в flash/title сообщениях). · Усилен `scripts/check-encoding.ps1`: проверка mojibake теперь использует кодовые точки (`U+00C2/U+00C3/U+00D0/U+00D1`), а не хрупкий текстовый regex.
Релиз v2.3.30
2026-02-22

Релиз v2.3.30

Ссылка на страницу «О проекте» добавлена в подвал рядом с версией проекта. · Настройки страницы «О проекте» вынесены из профиля в отдельный раздел администрирования в дашборде. · Добавлен маршрут `admin_about` + новая страница `views/admin_about.php`; сохранение настроек about перенесено из `profile_edit` в admin-раздел. · Расширен RBAC: новые роли (`global_admin`, `admin_tester`), нормализация политик по умолчанию, закреплённые инварианты для доступа к БД/политикам/настройкам.
Релиз v2.3.31
2026-02-22

Релиз v2.3.31

Исправлены права управления пользователями: первый пользователь всегда закреплён как `global_admin`, обычный администратор не может понижать/блокировать/удалять его и сбрасывать ему пароль. · Роль `admin_tester` теперь может пользоваться обычными функциями приложения (включая профиль и фото), при этом изменения в админ-разделах по-прежнему заблокированы. · Добавлены backend-инварианты для первого пользователя (`user_ensure_first_global_admin`, запрет бана/удаления первого пользователя) и защита операций над `global_admin` в `admin_users`. · Глобальный guard `admin_tester` сужен до write-операций админ-разделов, чтобы не ломать обычный пользовательский функционал.
Релиз v2.3.32
2026-02-22

Релиз v2.3.32

Исправлена логика публичных файлов: фото участников со страницы `/about` остаются публичными, но больше не попадают в ленту «Публичные файлы» на главной. · Улучшена навигация и нейминг: пользовательское облако переименовано в «Мои файлы», а `admin`-экран оформлен как «Файлы проекта». · В `app/files.php` добавлена фильтрация публичной ленты по исключениям (`files_public_feed_excluded_ids()`), сейчас туда входят фото участников из `about_contributors_json`. · Обновлены заголовки/подписи в `views/home.php`, `views/dashboard.php`, `views/admin.php`, `views/layout.php`, `views/staff.php`, `views/chat.php`, `views/contacts.php` для уменьшения путаницы между пользовательским и административным файловыми экранами.
Релиз v2.3.33
2026-02-22

Релиз v2.3.33

Добавлена отдельная «мемная» invite-регистрация для друзей с автоназначением ролей `admin` и `admin_tester` по токен-ссылке. · Страница спец-регистрации получила отдельный дизайн с анимациями и роль-специфичными сообщениями (admin/tester). · Добавлен модуль `app/friend_registration.php`: JSON-конфиг спец-регистрации, токены, invite-ссылки, нормализация и resolve роли по токену. · В `index.php` добавлены маршруты `friend_register` и `admin_friend_register`, а также pretty-route `/friend-invite/<token>`.
Релиз v2.3.34
2026-02-22

Релиз v2.3.34

Hotfix: устранены предупреждения Deprecated на PHP 8.4+ в модуле спец-регистрации друзей. · В `app/friend_registration.php` сигнатуры helper-функций обновлены с implicit nullable (`array $cfg = null`) на явный nullable тип (`?array $cfg = null`).
Релиз v2.3.35
2026-02-22

Релиз v2.3.35

В спец-регистрацию друзей встроен виджет «кошка-говешка» с анимированным блоком внутри формы. · В настройках спец-регистрации можно загрузить фото кошки с устройства, включать/выключать блок и настраивать подпись/бейдж. · Спец-регистрация расширена настройками `cat_*` в `app/friend_registration.php`; загрузка изображения реализована в `index.php` и хранится в `public/friend_register/`. · В `views/friend_register.php` добавлен анимированный cat-widget с безопасным fallback без картинки.
Релиз v2.3.36
2026-02-22

Релиз v2.3.36

Базовый пресет оформления снова по умолчанию `Default`, а `Psychedelic` оставлен как опциональный вариант в настройках. · Уведомления о сообщениях и событиях теперь открывают соответствующий раздел (чат или календарь), а не всегда центр уведомлений. · Добавлен JSON endpoint `chat_send_async` и клиентский submit-handler во `views/chat.php` для AJAX-отправки сообщения с поддержкой вложений. · В `notif_poll` добавлены target-ссылки (`chat`/`calendar`), а `views/partials/scripts.php` формирует отдельные device-notifications с корректным `data.url`.
Релиз v2.3.37
2026-02-22

Релиз v2.3.37

Мессенджер структурно облегчён: более компактный header/messages/composer stack, меньше визуальной тяжести и ближе к привычной мобильной логике. · Исправлено поведение поля ввода в мобильном полноэкранном чате: composer больше не “съезжает” вниз из-за наложенных padding/overlay-стилей. · В `views/chat.php` добавлены структурные классы (`chat-list-card`, `chat-conv-card`, `chat-conv-body`, `chat-composer-shell`) и финальный CSS override-блок с упрощённой layout-схемой. · Убран тяжёлый overlay-режим composer для conversation pane (через CSS overrides), сообщения снова живут в нормальном flex-stack без лишнего bottom-overlay padding.
Релиз v2.3.38
2026-02-22

Релиз v2.3.38

Перестроена DOM-структура окна диалога: `chatMessages` теперь единый контейнер на всю область чата, внутри которого находятся шапка, лента сообщений и composer. · Шапка диалога и панель ввода встроены внутрь общего контейнера как в современных мессенджерах, что улучшает поведение на мобильных экранах. · В `views/chat.php` `id=\"chatMessages\"` переведён в роль root-container conversation pane, а scroll-area вынесена в `id=\"chatMessagesScroll\"`. · JS-логика мессенджера обновлена на новый scroll-target (`chatMessagesScroll`) с backward fallback на старую структуру.
Релиз v2.3.39
2026-02-22

Релиз v2.3.39

Уменьшен зазор между клавиатурой и полем ввода в мобильном мессенджере (почти вплотную, несколько миллиметров). · Панель ввода в fullscreen-чате лучше поджимается к клавиатуре на iPhone/iOS. · В `views/chat.php` добавлен динамический CSS var `--chat-mobile-composer-gap` и логика `visualViewport`-детекта открытой клавиатуры. · При открытой клавиатуре fullscreen-pane чата растягивается до видимого нижнего края без лишнего white-gap из-за `visualViewport.offsetTop`.
Релиз v2.3.40
2026-02-22

Релиз v2.3.40

Исправлен большой пустой отступ между полем ввода и клавиатурой в мобильном мессенджере (fullscreen chat). · Панель ввода и лента сообщений теперь корректно сжимаются при открытии клавиатуры. · В `views/chat.php` снят конфликтующий `min-height`/жёсткая высота на mobile fullscreen-цепочке контейнеров (`chat-conv-body` → `#chatMessages` → scroll-wrap → `#chatMessagesScroll`). · Горячий фикс рассчитан на iOS/Safari/PWA сценарии, где клавиатура уменьшает viewport и ломает flex-layout с `min-height`.
Релиз v2.3.41
2026-02-22

Релиз v2.3.41

Дополнительно исправлен большой зазор над клавиатурой на iPhone: поле ввода поджимается ближе даже при включённой assistant/suggestions панели iOS. · В `views/chat.php` добавлена реальная компенсация нижнего зазора по измерению положения composer относительно viewport (а не только по `visualViewport.height`). · Учтён iOS-кейс, когда `visualViewport` и `window.innerHeight` расходятся на высоту assistant/suggestions панели клавиатуры.
Релиз v2.3.42
2026-02-22

Релиз v2.3.42

Для диагностики iPhone-отступа убрана встроенная (inline) панель быстрых смайликов из формы сообщения в мессенджере. · Кнопка смайликов в composer теперь открывает полный emoji picker, если inline-панель отключена. · Из `views/chat.php` удалён блок `chat-emoji-panel` внутри composer; JS-клик по `emojiBtn` переведён на fallback `toggleFullEmojiPicker()` при отсутствии inline-панели.
Релиз v2.3.43
2026-02-22

Релиз v2.3.43

Для диагностики iPhone-отступа убран набор layout-классов у нижнего блока `attachHint / Убрать вложение` в composer мессенджера. · В `views/chat.php` блок под composer (с `attachHint` и `attachClearBtn`) упрощён до обычного контейнера без `d-flex/.../mt-2`.
Релиз v2.3.44
2026-02-22

Релиз v2.3.44

Для диагностики iPhone-отступа убран класс `small text-secondary` у блока `attachHint` в composer мессенджера. · В `views/chat.php` элемент `#attachHint` оставлен без CSS-классов, чтобы исключить влияние типографики/line-height на высоту composer.
Релиз v2.3.45
2026-02-22

Релиз v2.3.45

Для диагностики iPhone-отступа удалён `id=\"attachHint\"` у нижнего блока composer и связанный CSS-минимум высоты. · В `views/chat.php` удалено правило `#chatConvPane #attachHint { min-height ... }`, а сам элемент оставлен без `id`, чтобы исключить его вклад в высоту composer.
Релиз v2.3.46
2026-02-22

Релиз v2.3.46

Мессенджер вынесен из общего `container py-4` в отдельное “полотно” layout (full-canvas host), чтобы уменьшить конфликты мобильного fullscreen-режима с обёртками страницы. · Это изменение направлено именно на iPhone-баг с большим отступом над клавиатурой: чат теперь живёт в более простой DOM-структуре без общей контейнерной обвязки страницы. · В `views/layout.php` добавлен route-aware режим `contentCanvasRoute` для `chat`: контент мессенджера рендерится в `chat-canvas-stage` вне `container py-4`. · В `views/chat.php` обновлены mobile fullscreen-селекторы, которые раньше были жёстко привязаны к `.container.py-4`, теперь они поддерживают `.chat-canvas-stage`.
Релиз v2.3.47
2026-02-22

Релиз v2.3.47

Мессенджер после фикса iPhone-клавиатуры дополнительно очищен и визуально облегчён: обновлены шапка страницы, список диалогов, полотно сообщений и composer. · Строка состояния редактирования в composer теперь показывается только в режиме редактирования, а не занимает место постоянно. · Из `views/chat.php` удалён временный JS-компенсатор `tightenComposerToViewportBottom()` и связанный runtime-костыль `--chat-mobile-composer-gap`, оставлена более простая `visualViewport`-синхронизация. · Добавлены финальные CSS-overrides для canvas-режима чата (`chat-canvas-stage`) без возврата к старой layout-обвязке `container py-4`.
Релиз v2.3.48
2026-02-22

Релиз v2.3.48

На главной в разделе «Новости» теперь по умолчанию показываются только первые записи, остальные открываются кнопкой «Загрузить ещё». · В истории версий (технические новости по версиям) добавлен такой же режим постепенной подгрузки списка через кнопку «Показать ещё версии». · В `views/layout.php` добавлен универсальный client-side `load more`-инициализатор для блоков с `data-load-more-*`. · Разметка новостей на главной (`views/home.php`) и модалки истории версий (`views/layout.php`) переведена на единый шаблон постепенного раскрытия списка.
Релиз v2.3.49
2026-02-22

Релиз v2.3.49

Исправлен повторный iPhone-баг в мессенджере с большим отступом между клавиатурой и полем ввода (runtime-компенсация viewport/composer для mobile fullscreen). · Новости на главной и технические заметки по версиям теперь действительно свёрнуты по умолчанию (первые 3 записи), остальные открываются через кнопку «Показать ещё / Загрузить ещё». · В `views/chat.php` возвращена измеряемая компенсация `visualViewport` по фактическому gap до composer (без возврата старого `--chat-mobile-composer-gap` костыля). · В `views/layout.php` исправлен клиентский `load more`-инициализатор (Safari-safe проверка вместо `ParentNode`) и добавлено серверное начальное сворачивание версий.
Релиз v2.3.50
2026-02-22

Релиз v2.3.50

В мессенджере убрана служебная подпись под именем собеседника; клик по фото/имени в шапке диалога теперь открывает профиль собеседника. · Профиль расширен: значок админ-роли для администраторов, список друзей, количество друзей, а также кнопки добавления/удаления из друзей прямо на странице профиля. · Добавлены helper-функции для видимости карточек разработчиков на `/about` (`about_developer_visibility_json`, `user_about_card_visible()`, `user_about_card_set_visible()`) и фильтрация в `users_about_developers()`. · Маршруты `post_create/post_update` получили поддержку `cover_device_file` через новый helper `post_cover_from_upload()` в `app/posts.php`.
Релиз v2.3.51
2026-02-22

Релиз v2.3.51

В мессенджере из composer удалён нижний блок `chat-attach-row` (подсказка/кнопка вложения), чтобы убрать лишнюю высоту и iPhone-gap («подбородок»). · Из `views/chat.php` удалена разметка `div.chat-attach-row`; JS обработчики вложений уже безопасно работают при отсутствии `attachHint/attachClearBtn`.
Релиз v2.3.52
2026-02-22

Релиз v2.3.52

Усилен iPhone-fix для мессенджера: composer в mobile fullscreen при открытой клавиатуре закрепляется в `fixed`-режиме относительно видимой области, чтобы убрать большой зазор над клавиатурой. · В `views/chat.php` добавлен режим `chat-composer-vv-fixed` + JS-синхронизация с `visualViewport` (адаптивно: `bottom=0` или компенсация `keyboardInset`, если fixed элемент уходит под клавиатуру).
Релиз v2.3.53
2026-02-22

Релиз v2.3.53

В мессенджере с composer снят класс `chat-sticky` (оставлен только `chat-composer-shell`) — hotfix для iPhone-отступа над клавиатурой. · В `views/chat.php` удалён `chat-sticky` у обёртки формы сообщений, чтобы исключить конфликт sticky/fixed логики в mobile fullscreen.
Релиз v2.3.54
2026-02-22

Релиз v2.3.54

Ещё один iPhone hotfix для мессенджера: при открытой клавиатуре `fixed`-composer больше не обрезается контейнерами чата (снят clipping/blurs на время mobile keyboard mode). · В `views/chat.php` добавлен режим `chat-composer-vv-mode`: при активной клавиатуре снимаются `overflow:hidden` и `backdrop-filter` у `chat-conv-card/chat-conv-body`, чтобы Safari не привязывал/не обрезал `position: fixed` composer внутри карточки.
Релиз v2.3.55
2026-02-22

Релиз v2.3.55

В мессенджере переписан mobile-composer режим для iPhone: поле ввода при открытой клавиатуре выносится в отдельный viewport-портал, чтобы не появлялся большой зазор над клавиатурой. · В `views/chat.php` реализован `composer portal` (spacer + перенос `.chat-composer-shell` в `body` при mobile keyboard mode) вместо прежней fixed/sticky-компенсации внутри карточки чата.
Релиз v2.3.56
2026-02-22

Релиз v2.3.56

Добавлена система мультипрофилей: у одного аккаунта можно создавать, переключать и удалять несколько профилей через меню по клику на имя/аватар в шапке. · Для ролей разработчиков (`global_admin`/`admin`/`admin_tester`) добавлен выбор, какой профиль показывать на странице `/about`. · В `app/migrations.php` добавлены `user_profiles`, колонки `users.active_profile_id/users.about_profile_id` и `posts.hide_from_guests`. · В `app/users.php` реализованы helper-ы мультипрофилей (bootstrap/create/switch/delete/sync/about-select) и overlay данных выбранного профиля в `/about`.
Релиз v2.3.57
2026-02-22

Релиз v2.3.57

Мессенджер откатан по фронтенду (`views/chat.php`) к состоянию релиза `2.3.46` — это версия, на которой исчезал iPhone-gap («подбородок») над клавиатурой. · Сравнение показало, что `views/layout.php` (перенос чата в `chat-canvas-stage`) остаётся правильным; регрессия появилась позже в `views/chat.php` после добавления mobile keyboard viewport-хаков (`chat-composer-vv-portal`, `chat-composer-vv-fixed`, `chat-composer-vv-mode`, spacer/portal composer). · Откат выполнен точечно только для мессенджера: `views/chat.php` взят из архива `releases/tsoycloud_v2.3.46_2026-02-22.zip`.
Релиз v2.3.58
2026-02-22

Релиз v2.3.58

Мультипрофили переработаны: теперь каждый профиль аккаунта — это отдельный пользователь со своим логином и собственной страницей `/user/<login>` (отдельные посты, файлы и медиа). · В меню профилей аккаунта создание профиля теперь запрашивает отдельный логин (`username`) и отображаемое имя; основной профиль нельзя удалить. · Логика `user_profiles_*` в `app/users.php` переведена с таблицы `user_profiles` на связанные записи `users` через `owner_account_user_id` (старую таблицу больше не используем как источник истины). · В `app/auth.php` добавлен `auth_session_apply_active_profile()` и `$_SESSION[\"auth_user_id\"]`: сессия хранит владельца аккаунта отдельно от активного профиля (`$_SESSION[\"user\"]`).
Релиз v2.3.59
2026-02-22

Релиз v2.3.59

Мессенджер улучшен поверх стабильной базы (без возврата mobile keyboard-хаков): имя/аватар собеседника в шапке снова открывают профиль, убрана лишняя служебная подпись. · В профиле добавлены отдельные блоки медиа: фото, видео и аудио (для владельца — из облака, для гостей/других пользователей — из видимых постов). · В `app/migrations.php` добавлены таблицы `post_comments` и `user_pages`. · В `app/posts.php` реализованы helpers комментариев и поддержка внутренних ссылок (`/page/...`) в `post_attachment_add_link()` для публикации страниц.
Релиз v2.3.60
2026-02-22

Релиз v2.3.60

Исправлено мобильное меню профилей в шапке: dropdown больше не уезжает влево на узких экранах (ограничена ширина, стабилизировано позиционирование). · В `views/layout.php` профильный dropdown переведен на `data-bs-display=\"static\"` и вынесен на отдельный класс `topbar-profile-menu`; в `views/partials/head.php` добавлены mobile-safe стили ширины/переполнения.
Релиз v2.3.61
2026-02-22

Релиз v2.3.61

Исправлен раздел «Медиа» в профиле: теперь он показывает только контент, который пользователь явно добавил в посты (обложки и вложения), а не все файлы из облака. · В `views/profile.php` блок `Медиа` переведен на единый источник данных (медиа из постов) для владельца и гостей; облачные файлы владельца больше не попадают туда автоматически.
Релиз v2.3.62
2026-02-22

Релиз v2.3.62

Профиль переведён на более современный шаблонный стиль: обновлены карточки, шапка профиля и добавлены верхние вкладки разделов (Посты/Друзья/Страницы/Медиа). · Разделы Фото/Видео/Аудио теперь работают как отдельные ручные галереи профиля: пользователь сам добавляет контент в галереи, а не получает автоподбор из облака/постов. · Добавлен helper `app/profile_media.php` и таблица `profile_media_items` (ручные галереи профиля) с миграцией в `app/migrations.php`. · Добавлен маршрут `profile_media_gallery` в `index.php` (добавление/удаление элементов галереи, загрузка файлов с устройства).
Релиз v2.3.63
2026-02-22

Релиз v2.3.63

Профиль ещё ближе к новому шаблону: усилен визуал шапки (cover/avatar/chips/статистика), обновлены карточки друзей/страниц/медиа и общий стиль карточек постов/модалок. · Улучшена навигация по разделам профиля через верхние вкладки с сохранением активной вкладки. · В `views/profile.php` расширен слой профильных стилей и добавлены счётчики/визуальные блоки без изменения бизнес-логики постов, комментариев и ролей.
Релиз v2.3.64
2026-02-22

Релиз v2.3.64

Посты на странице профиля ещё ближе к новому шаблону: добавлен header карточки (аватар/имя/@username/время), улучшен action-bar и визуал карточек. · Модалка комментариев профиля визуально переработана и на мобильных ведёт себя ближе к формату bottom-sheet. · В `views/profile.php` добавлены профильные UI-классы для карточек постов и комментариев без изменения текущей логики лайков/комментариев/прав доступа.
Релиз v2.3.65
2026-02-22

Релиз v2.3.65

Управление галереями профиля перенесено в модалку (вместо collapse), что ближе к новому шаблону и удобнее на мобильных устройствах. · Экран `Редактировать профиль` заметно переработан визуально: добавлен hero-preview профиля, улучшены блоки загрузки аватара/обложки и группировка полей. · В `views/profile.php` блок управления ручными галереями переведён на modal-layout без изменения логики форм `profile_media_gallery`. · В `views/profile_edit.php` добавлены новые UI-обёртки и стили (`profile-edit-header-*`, `profile-edit-fieldset`, `profile-edit-upload-*`) при сохранении прежних POST-полей.
Релиз v2.3.66
2026-02-22

Релиз v2.3.66

Профиль дополнительно отполирован под мобильные устройства: карточки друзей и страниц стали компактнее и аккуратнее на узких экранах. · В модалке комментариев улучшен блок ввода: форма стала ближе к привычному мобильному composer-формату. · В `views/profile.php` добавлены mobile-first стили и классы для списков друзей/страниц, медиасетки и composer-разметки комментариев без изменения бизнес-логики.
Релиз v3.0.0
2026-02-22

Релиз v3.0.0

Подготовлен крупный профильный апдейт 3.0: улучшен mobile UX профиля (Друзья/Страницы/Медиа), а форма комментариев в модалке стала ближе к привычному мобильному composer-формату. · Полностью переработан интерфейс мультипрофилей в шапке: новый dropdown с быстрым переключением, аватарами и статусами профилей. · В `views/layout.php` переписана разметка topbar dropdown и модалки `#userProfilesModal` без изменения существующих роутов/POST-действий (`user_profiles`). · В `views/partials/head.php` добавлен новый слой стилей для мультипрофильного UX (`topbar-profile-*`, `user-profiles-modal-modern`, `user-profile-card*`) с адаптацией под мобильные экраны.
Релиз v3.0.1
2026-02-22

Релиз v3.0.1

На странице профиля кнопка копирования публичной ссылки теперь копирует адрес в буфер и показывает диалог «Скопировано». · При открытии профиля по публичной ссылке `/user/<username>` скрывается боковое меню (desktop + mobile offcanvas), страница выглядит ближе к формату соцсети. · В `views/profile.php` обновлён helper `copyText()` для кнопок `.js-copy`: успешное копирование подтверждается диалогом, fallback остаётся только при ошибке clipboard API. · В `views/layout.php` добавлен режим публичной страницы профиля (`$publicProfilePageRoute`) с условным отключением sidebar/offcanvas и корректировкой mobile topbar-отступа.
Релиз v3.0.2
2026-02-22

Релиз v3.0.2

На страницах профиля боковое меню теперь скрывается только у гостей. Для авторизованных пользователей навигация в профиле снова доступна. · В `views/layout.php` режим “соц-страницы без меню” ограничен только гостевым просмотром публичного профиля (`$guestPublicProfileSocialMode`).
Релиз v3.0.3
2026-02-22

Релиз v3.0.3

Кнопки «Ссылка на профиль» и «Ссылка на пост» на странице профиля теперь копируют ссылку в буфер по одному клику. · В `views/profile.php` copy-handler для `.js-copy/.js-magnet` усилен: добавлены `preventDefault/stopPropagation` и fallback-копирование через `textarea + execCommand(copy)` без обязательного `prompt`.
Релиз v3.1.0
2026-02-22

Релиз v3.1.0

Конструктор пользовательских страниц серьёзно переработан: добавлены блоки «Статья», «Гайд» и «Плеер роликов» помимо галереи/ссылок. · В выборе файлов для конструктора страниц больше не нужны ID вручную: добавлен единый проводник файлов с папками, поиском, фильтрами и мультивыбором. · Добавлен reusable partial `views/partials/file_explorer_picker.php` (модалка + JS-компонент `TsoyFileExplorerPicker`) для повторного использования в разных разделах. · В `app/pages.php` расширена модель блоков страниц (`article`, `guide`, `video_player`) и обновлён сбор используемых file_id для рендера.
Релиз v3.2.0
2026-02-22

Релиз v3.2.0

Усилен PWA-режим для ПК и смартфонов: улучшен manifest (ярлыки быстрых действий, desktop/mobile launch-поведение, метаданные приложения). · Уведомления и звонки в PWA/браузере теперь надёжнее открывают нужный раздел по клику (чат, конкретный звонок, уведомления и т.д.). · Root и `public/service-worker.js` синхронизированы и переведены на единый hardened SW (navigation preload, deep-link `notificationclick`, управление файловым кешем через message API). · В Service Worker добавлен корректный bypass для `Range`-запросов, чтобы не ломать стриминг аудио/видео и просмотр медиа на мобильных устройствах.
Релиз v3.2.1
2026-02-22

Релиз v3.2.1

В разделе «Настройки → Брендинг» добавлена отдельная настройка названия проекта в шапке (верхняя панель и боковое меню). · Добавлен ключ настроек `site_header_name`; при пустом значении используется fallback на `site_name`. · В `views/layout.php` брендинг шапки переведён на отдельную переменную `$siteHeaderName`, не затрагивая title страниц и прочие места, где используется `site_name`.
Релиз v3.3.0
2026-02-22

Релиз v3.3.0

Проведена большая унификация визуального стиля проекта: карточки, навигация, формы, модалки и отступы лучше согласованы между разделами. · Раздел «Настройки → Оформление» расширен: добавлены настройки глобального шрифта, масштаба текста, ширины контента, контраста поверхностей и отдельная плотность мессенджера. · Расширен `ui_config()` и системные настройки (`ui_font_family`, `ui_font_scale`, `ui_content_width`, `ui_surface_contrast`, `ui_chat_density`) с валидацией в `index.php?r=admin_settings`. · В `views/partials/head.php` добавлены новые data-атрибуты UI и глобальные CSS-токены (font-scale, content-width, surface-contrast) для централизованного управления дизайном.
Релиз v3.3.1
2026-02-22

Релиз v3.3.1

В мессенджере выбор файла из облака переведён на единый проводник (папки, поиск, фильтры, превью), как в других разделах проекта. · Исправлено меню действий сообщения (`Изменить/Удалить`): dropdown больше не перекрывается соседними сообщениями. · В `views/chat.php` интегрирован reusable `TsoyFileExplorerPicker` для attach-модалки (mobile-safe сценарий через отдельную модалку picker-а). · Для строк сообщений добавлен z-index lift при `show.bs.dropdown` (`chat-row-menu-open`), чтобы меню действий не попадало под соседние bubbles.
Релиз v3.3.2
2026-02-22

Релиз v3.3.2

В «Центре уведомлений» блок с уведомлениями/событиями теперь показывается первым, а настройки уведомлений идут после него. · В `views/notifications.php` переставлен визуальный порядок колонок через grid-order (`notify-col-feed` перед `notify-col-settings`) и обновлён заголовок блока на «Все уведомления».
Релиз v3.3.3
2026-02-22

Релиз v3.3.3

Страница «Контакты» визуально приведена к стилю мессенджера: одинаковая шапка, поверхности, контуры и оттенки/градиенты. · В `views/contacts.php` добавлен локальный токенизированный стиль (`contacts-page`) с той же логикой surface/background, что и в мессенджере, включая реакции на `ui_surface_contrast` и `ui_density`.
Релиз v3.3.4
2026-02-22

Релиз v3.3.4

Проводник файлов в профиле (обложка и вложения постов) переведён на единое ядро `TsoyFileExplorerPicker`, как в мессенджере. · Вложения к посту с устройства в профиле переработаны в единый блок внутри модалки вложений (облако + устройство + ссылки), чтобы выбор работал стабильнее и понятнее. · В `views/profile.php` добавлен JS-слой унификации старых модалок вложений постов: облачные файлы выбираются через общий picker, а hidden-inputs собираются по mime (`attach_images/video/audio/files`). · В `app/files.php` расширен `files_admin_list()` (фильтры по владельцу и папке) и добавлены helper-функции `files_admin_owner_stats()` / `files_admin_folders_list()` для админского проводника.
Релиз v3.3.5
2026-02-22

Релиз v3.3.5

Исправлен двойной проводник в профиле: при выборе обложки поста больше не открывается одновременно новый и старый интерфейс. · Исправлены лишние кнопки «Сохранить / Отмена» под опубликованными постами (ошибка разметки edit-блока). · В `views/profile.php` удалены legacy JS-билдеры вложений постов (`js-att`/`js-att-edit`) и старые вкладки вложений теперь физически вырезаются из DOM после инициализации нового picker-слоя. · В `views/profile.php` убраны bootstrap-trigger атрибуты с кнопок выбора обложки (теперь открывается только `TsoyFileExplorerPicker`), а возврат старой attach-модалки после picker отключён.
Релиз v3.3.6
2026-02-22

Релиз v3.3.6

В конструкторе пользовательских страниц добавлен новый блок «Таблица» с ручным редактированием ячеек. · Для блока таблицы доступны действия: добавить/удалить строку и добавить/удалить столбец, а также режим «первая строка — заголовки». · В `app/pages.php` добавлена нормализация блока `table` (header + rows, ограничения размеров и длины ячеек). · В `views/my_pages.php` расширен page-builder: тип `table`, визуальный table-editor и сериализация таблицы в `blocks_json`.
Релиз v3.4.0
2026-02-23

Релиз v3.4.0

Добавлены полноценные push-уведомления на устройство (через Web Push + Service Worker) для сценариев, когда сайт/PWA закрыт. · Push-уведомления теперь приходят по ключевым событиям: сообщения, входящие звонки/приглашения в звонок, лайки постов, комментарии и добавления в друзья. · Добавлен `app/push.php`: VAPID-ключи (автогенерация), подписки Web Push, очередь уведомлений, payloadless Web Push dispatch и pull-механизм для SW. · В `app/migrations.php` добавлены таблицы `push_subscriptions` и `push_queue` (MySQL/SQLite) с индексами для подписок и очереди доставки.
Релиз v3.4.1
2026-02-23

Релиз v3.4.1

Исправлено мобильное открытие окна вложений в мессенджере: attach-модалки/проводник теперь открываются поверх fullscreen-чата. · Меню профиля/переключения мультипрофилей в мобильной шапке больше не уезжает влево: dropdown центрируется по viewport. · В `views/chat.php` поднят z-index attach-модалки и file-picker-модалки над mobile chat pane (`z-index: 2100`) и добавлена маркировка backdrop (`chat-over-chat-backdrop`). · В `views/chat.php` усилен mobile-open handler клипсы (`pointerup` + `touchend` + click guard), чтобы не терялись тапы в fullscreen-мессенджере.
Релиз v3.4.2
2026-02-23

Релиз v3.4.2

Исправлена навигация по клику на уведомления: уведомления теперь корректно открывают источник (чат, календарь, профиль/пост и т.д.) в браузере и PWA. · В `views/partials/scripts.php` `__tsoyNavigateFromNotification()` переведён на резолв ссылок через `appBasePath`, а fallback `Notification.onclick` теперь использует тот же навигатор. · В `service-worker.js` / `public/service-worker.js` `notificationclick` теперь резолвит `data.url` относительно `self.registration.scope` (а не `origin`), что исправляет deep-link в установках не в корне сайта.
Релиз v3.4.3
2026-02-23

Релиз v3.4.3

Уведомления стали информативнее: для новых сообщений показываются имя отправителя и фрагмент текста. · Для входящих звонков в уведомления добавлены действия «Принять» и «Отклонить» (там, где это поддерживает браузер/устройство). · В `notif_poll` добавлен preview последнего непрочитанного сообщения (`sender/body/url`), а клиентский polling в `views/partials/scripts.php` использует его для desktop-уведомлений и toast. · В `app/push.php` расширен payload Web Push: поддержка `data` и `action_urls`, а `push_notify_incoming_call()` теперь отправляет actions (`accept/close`) и URL принятия звонка.
Релиз v3.4.4
2026-02-23

Релиз v3.4.4

В дашборде (`Настройки`) добавлен отдельный блок настроек уведомлений: цвет, оформление toast/desktop-уведомлений, рингтон уведомлений и отдельный рингтон входящего звонка. · Добавлен блок `PWA и обновления`: политика обновления (manual/notify/auto), интервал проверки Service Worker, автозапрос persistent storage и toast-оповещения об обновлении PWA. · Добавлены новые ключи настроек в `app/settings.php`; сохранение/валидация реализованы в `index.php` (`admin_settings`). · В `views/layout.php` новые настройки прокидываются в `window.__TSOY_NOTIFY` (`ui/sounds/pwa`) для runtime-слоя.
Релиз v3.4.5
2026-02-23

Релиз v3.4.5

В настройках уведомлений добавлена загрузка своих рингтонов: отдельно для обычных уведомлений и отдельно для входящего звонка. · В админке можно прослушать загруженные рингтоны прямо в разделе настроек и удалить их при необходимости. · Добавлены настройки `notify_sound_custom_path` и `notify_call_sound_custom_path`, а в `admin_settings` реализована загрузка аудиофайлов в `public/sounds`. · Во фронтенде (`views/layout.php` + `views/partials/scripts.php`) runtime уведомлений получил поддержку кастомных аудио-файлов с fallback на синтезированные звуки, если браузер блокирует воспроизведение.
Релиз v3.5.0
2026-02-23

Релиз v3.5.0

Стабилизационный релиз: проведён общий cleanup проекта, снижён шум от временных артефактов и улучшена предсказуемость работы уведомлений/PWA-настроек. · В настройках уведомлений доработана работа со своими рингтонами: при замене старые файлы корректно очищаются, а слишком большие файлы не принимаются. · Удалены временные каталоги восстановления/аудита (`tmp_*`) из рабочей директории, которые засоряли поиск и увеличивали накладные расходы проверок. · В `scripts/check-encoding.ps1` добавлено универсальное исключение для временных каталогов `tmp_*`, чтобы сборочные проверки не сканировали техмусор.
Релиз v3.5.1
2026-02-23

Релиз v3.5.1

Hotfix рингтонов на телефонах: улучшено воспроизведение кастомных рингтонов уведомлений/звонка на мобильных браузерах и PWA. · В `views/partials/scripts.php` исправлен баг кастомного рингтона уведомлений: теперь Promise `audio.play()` реально проверяется, и при ошибке срабатывает fallback-звук. · Кастомные рингтоны теперь резолвятся через `appBasePath` (`__tsoyResolveAppUrl`) для корректной работы в установках проекта в подпапке сайта.
Релиз v3.5.2
2026-02-23

Релиз v3.5.2

Усилена надёжность уведомлений: добавлен серверный retry-worker для wake-push доставки с повторными попытками и backoff. · В админке (Настройки -> PWA и обновления) появился блок диагностики push-очереди: количество недоставленных элементов, состояние очереди и статус подписок. · В `push_queue` добавлены поля состояния доставки (`dispatch_state`, попытки, backoff, lock, last_error/status) и миграции для MySQL/SQLite. · В `app/push.php` реализованы функции очереди и worker-обработки (`claim/process due`, retry/backoff, статистика очереди).
Релиз v3.5.3
2026-02-23

Релиз v3.5.3

Уведомления стали стабильнее при закрытом PWA/сайте: сервер теперь пытается отправлять полноценный Web Push payload (с телом уведомления), а не только wake-push. · Сохранён fallback-режим (`wake-push + push_pull`) для совместимости, если endpoint/браузер не принимает payload. · В `app/push.php` добавлена payload-отправка Web Push (`aes128gcm`) с VAPID и шифрованием сообщения на стороне сервера (ECDH + HKDF + AES-128-GCM). · `push_dispatch_user()` теперь умеет отправлять payload в push и возвращает раздельную статистику `payload_sent` / `wake_sent`.
Релиз v3.5.4
2026-02-23

Релиз v3.5.4

В админке (`Настройки -> PWA и обновления`) добавлена диагностика push-устройств: список подписок, устройство/режим, последний успех доставки и ошибки. · Появилась кнопка `Тест push` для каждого устройства, чтобы быстро проверить доставку уведомлений на конкретную подписку. · В `app/push.php` добавлены helper-функции диагностики: `push_subscriptions_admin_list()`, `push_subscription_get()`, `push_subscription_test_send()`. · Добавлен route `index.php?r=push_test_subscription` (admin/settings), который отправляет тестовый push на выбранную подписку и пишет результат в flash.
Релиз v3.5.5
2026-02-23

Релиз v3.5.5

Диагностика push-устройств в админке стала практичнее: добавлены фильтры (поиск, active/inactive, только с ошибками). · Для push-подписок появились действия `Отключить / Включить / Удалить` прямо в таблице устройств. · В `app/push.php` добавлены admin-helper’ы управления подписками: `push_subscription_set_active()` и `push_subscription_delete_by_id()`, а список подписок получил серверные фильтры (`q`, `only_errors`, `state`). · В `index.php` добавлен route `push_subscription_admin_action` для безопасного управления подписками из админки (POST + CSRF + capability).
Релиз v3.5.6
2026-02-23

Релиз v3.5.6

Исправлен бренд в уведомлениях: заголовок уведомлений теперь подтягивается из настроек сайта, а не захардкожен как `TSOY.CLOUD`. · В диагностике push-устройств добавлена колонка `Последний тест` (успех/ошибка, режим `payload/wake`, HTTP-код, время). · В `app/push.php` добавлен helper `push_app_title()` (с кешем), и серверные push-события/очередь/тестовые уведомления переведены на имя сайта из `settings`. · В `views/layout.php` + `views/partials/scripts.php` runtime уведомлений получил `siteName/siteHeaderName`; browser/PWA fallback notifications и toast теперь используют бренд из настроек.
Релиз v3.5.7
2026-02-23

Релиз v3.5.7

В диагностике push-устройств добавлена статистика реальных доставок по подписке: `payload`, `wake`, `wake fallback`, `errors` (накопительно, с последнего сброса). · Добавлены кнопки сброса статистики доставок: для одной подписки и для всех подписок сразу. · В `push_subscriptions` добавлены поля `push_stat_*` и миграции для MySQL/SQLite; реальные отправки в `push_dispatch_user()` записывают статистику по подписке (`payload/wake/fallback/error`). · В `app/push.php` реализованы helper’ы `push_subscription_delivery_stats_record()` и `push_subscription_delivery_stats_reset()`.
Релиз v3.5.8
2026-02-23

Релиз v3.5.8

Hotfix уведомлений: название в заголовке уведомления теперь берётся в приоритете из `Название в шапке`, затем из `Название сайта`. · Исправлен fallback тестового уведомления в центре уведомлений: больше не показывает захардкоженный `TSOY.CLOUD`. · В `views/notifications.php` fallback `new Notification(...)` переведён на бренд из `window.__TSOY_NOTIFY`. · В `views/partials/scripts.php` helper `__tsoyNotifyTitle()` теперь использует `siteHeaderName` раньше `siteName`.
Релиз v3.5.10
2026-02-23

Релиз v3.5.10

В диагностике push-устройств добавлена агрегированная сводка по всем подпискам: `payload success rate`, `fallback rate`, `error rate` и общие счётчики попыток. · Добавлен мини-график/спарклайн по дням (14 дней): stacked bars `payload / wake / errors`, где высота столбца показывает объём попыток за день. · В `app/push.php` `push_queue_stats()` расширен блоком `delivery_summary`, который агрегирует `push_stat_*` по всем push-подпискам и считает проценты (`payload/fallback/error`). · Добавлена таблица/миграция `push_delivery_daily_stats` и запись дневной статистики при реальных отправках push (`payload/wake/fallback/error`).
Релиз v3.5.11
2026-02-23

Релиз v3.5.11

Страница `Настройки` в дашборде больше не выглядит как сплошная простыня: добавлен блок быстрых переходов по разделам (якоря) и группировка по логическим секциям. · Появились явные секции: основные параметры, дизайн/уведомления, PWA/push, функции/звонки/диагностика — ориентироваться в настройках стало заметно проще. · В `views/admin_settings.php` добавлены якоря (`id`) для ключевых блоков настроек и верхняя навигационная панель без изменения backend-логики сохранения формы. · Страница сохранена как единая форма `admin_settings`, поэтому существующие `POST`-обработчики, `formaction` для push-диагностики и CSRF-проверки продолжают работать без миграций.
Релиз v3.5.12
2026-02-23

Релиз v3.5.12

Hotfix страницы `Настройки`: быстрые переходы по разделам теперь ведут в нужные блоки страницы, а не в корень сайта. · Убран sticky-режим блока `Разделы настроек`, из-за которого он перекрывал интерфейс при прокрутке. · В `views/admin_settings.php` ссылки разделов переведены с hash-only (`#...`) на route-aware (`index.php?r=admin_settings#...`) для корректной работы при наличии `<base>`/нестандартного base path. · Снята sticky-позиция с `admin-settings-nav-card` (оставлен статичный блок), чтобы навигация не накрывала карточки настроек ниже по странице.
Релиз v3.5.13
2026-02-23

Релиз v3.5.13

Страница `Настройки` переделана в Android-style режим: слева список разделов, справа показывается только выбранный раздел настроек. · Переключение разделов теперь происходит без переходов по странице/якорям; интерфейс не перекрывается и не дёргается. · В `views/admin_settings.php` реализован client-side секционный контроллер (`data-settings-nav` / `data-settings-section`) с переключением видимости блоков внутри одной формы. · Сохранена совместимость с текущим backend `admin_settings`: `POST`-логика, `formaction` кнопки push-диагностики и CSRF-проверка не менялись.
Релиз v3.5.14
2026-02-23

Релиз v3.5.14

В разделе `Система` настроек добавлен выпадающий список выбора часового пояса по Гринвичу (GMT/UTC offsets). · При выборе смещения из списка значение автоматически подставляется в поле часового пояса ниже, чтобы сохранить настройку одним кликом. · В `views/admin_settings.php` добавлена генерация preset-списка фиксированных зон `GMT-12 ... GMT+14` с валидными IANA-идентификаторами (`Etc/GMT±N`, `UTC`). · Добавлена JS-связка `systemTimezoneUtcPreset -> systemTimezoneInput`, которая подставляет выбранный preset в существующее поле `system_timezone` без изменений backend-валидации.
Релиз v3.5.15
2026-02-23

Релиз v3.5.15

Настройки переведены в Android-style режим с боковым меню разделов и вторым уровнем внутри `PWA и push` (`Обновления`, `Очередь push`, `Устройства`). · В главное меню добавлен отдельный пункт `Настройки` (после `Дашборд`), доступный всем авторизованным пользователям. · Добавлен route `settings` с доступом через `sections.settings`; legacy route `admin_settings` сохранён для совместимости админ-инструментов и внутренних redirect’ов. · `index.php` (`settings/admin_settings`) разделён по scope сохранения: личные настройки (theme + notify prefs) сохраняются всем ролям, глобальные админ-настройки — только при `admin.settings` и не в режиме `admin_tester`.
Релиз v3.5.16
2026-02-23

Релиз v3.5.16

Админские настройки физически разнесены по отдельным страницам (`Брендинг`, `Доступ и лимиты`, `Система`, `Оформление`, `PWA и push`, `Звонки/диагностика`, `База данных`) при сохранении общего бокового меню. · Переходы в меню настроек теперь открывают соответствующий экран, а не просто переключают внутренние блоки в одном и том же URL. · В `index.php` добавлены route-level страницы настроек (`settings_admin_*`) с capability-gates через `admin.settings`; legacy `admin_settings` сохранён и перенаправлен в режим `Брендинг` внутри общего шаблона. · В `views/admin_settings.php` реализована route-aware навигация: единый шаблон использует разные `action`/initial section в зависимости от текущего settings-route и корректно обрабатывает hash-переходы (`#pwa-notify-admin`, подпункты PWA и др.).
Релиз v3.5.17
2026-02-23

Релиз v3.5.17

Hotfix страницы `Настройки`: пункты бокового меню снова выглядят как кнопки (без подчёркиваний) и заполняют всю ширину колонки. · На desktop видимый раздел настроек теперь растягивается на всю доступную ширину правой панели (как `WebRTC`), а не остаётся половинной карточкой. · В `views/admin_settings.php` для `.admin-settings-side-btn` добавлены `display:block` и `text-decoration:none`, что устраняет регресс после перевода пунктов меню в `<a>`. · В JS-section режиме добавлен CSS override для `.js-settings-block.is-visible` внутри `.row`: `flex-basis/max-width:100%` (исправлен конфликт с Bootstrap `col-lg-6`).
Релиз v3.5.18
2026-02-23

Релиз v3.5.18

Hotfix страницы `Настройки`: в разделе `База данных` убрана лишняя горизонтальная линия перед карточкой блока. · Нижняя панель сохранения (`Сохраняются все изменённые поля...`) теперь подстраивается под тему оформления и остаётся читаемой в светлой и тёмной темах. · В `views/admin_settings.php` удалён лишний `<hr class=\"my-4\">` перед блоком `settings-db`. · Стили `admin-settings-savebar` переведены с жёстко тёмного фона (`rgba(20,22,30,...)`) на theme-aware фон через Bootstrap CSS variables (`--bs-body-bg-rgb`, `--bs-body-color`, `--bs-border-color-translucent`).
Релиз v3.6.0
2026-02-23

Релиз v3.6.0

Начат рефакторинг связки `Профиль / Контакты / Мессенджер`: на всех трёх экранах добавлен единый переключатель разделов (Social Hub) и явное описание роли каждого раздела. · `Профиль` теперь явно позиционируется как публичная страница пользователя (посты, медиа, страницы, друзья), `Контакты` — как каталог и управление связями, `Мессенджер` — как диалоги/вложения/звонки. · Добавлен reusable partial `views/partials/social_suite.php` (единый CSS для Social Hub: header/switcher/surfaces/role-map chips). · `views/profile.php`, `views/contacts.php`, `views/chat.php` подключены к `social_suite` и получили общий navigation shell без вмешательства в критичную mobile-геометрию композера мессенджера.
Релиз v3.6.1
2026-02-23

Релиз v3.6.1

Следующий шаг по связке `Контакты / Мессенджер`: в мессенджере блок `Быстрый старт` теперь показывает только контакты пользователя, а полный каталог вынесен в раздел `Контакты`. · В настройках исправлено выравнивание раздела `База данных`: карточка блока больше не поднимается выше меню слева. · В `views/chat.php` удалено дублирование каталога пользователей внутри мессенджера: список `Начать чат` переведён на `contacts_list($me_id)` + ссылка в `index.php?r=contacts`. · В `views/admin_settings.php` выровнен db-блок (`settings-db`) относительно общего grid/меню и обновлены подписи/подразделы блока дизайна (`ui/notify`) для разделения личных и глобальных настроек.
Релиз v3.6.2
2026-02-23

Релиз v3.6.2

Убран лишний `Social Hub` с экранов `Профиль / Контакты / Мессенджер`: переключение между разделами остаётся в основном меню, интерфейс снова стал компактнее. · В `Мессенджере` закреплена роль экрана: только активные диалоги и общение. Новый чат создаётся через раздел `Контакты`. · Удалён временный partial `views/partials/social_suite.php` и его подключения из `views/profile.php`, `views/contacts.php`, `views/chat.php` (откат лишнего UI-слоя без влияния на backend). · В `views/chat.php` удалён дублирующий сценарий старта чатов из списка пользователей/контактов: оставлен переход в `index.php?r=contacts` и история активных диалогов.
Релиз v3.6.3
2026-02-23

Релиз v3.6.3

Следующий шаг по связке `Контакты / Мессенджер`: в карточках пользователей на странице `Контакты` добавлены явные действия `Написать` и `Позвонить`. · Мессенджер очищен от каталоговых элементов: в боковой панели оставлены только активные диалоги, без блока быстрого старта/списков людей. · `index.php` (`chat_start` и `chat?start=`) теперь прокидывает `call=1` в итоговый URL диалога, чтобы из внешних экранов можно было запускать звонок напрямую. · В `views/contacts.php` унифицированы action-кнопки карточек (`Написать` / `Позвонить`) для списка контактов и каталога пользователей.
Релиз v3.6.4
2026-02-23

Релиз v3.6.4

Дожат интерфейс мессенджера под единый стиль с `Контактами`: обновлены список диалогов, шапка диалога и composer (кнопки, границы, поверхности, типографика). · Список диалогов стал визуально ближе к карточкам контактов: более ровные поверхности, одинаковая логика hover/active, читаемые превью и время. · Изменения сделаны только в `views/chat.php` на уровне CSS/визуальных состояний (`chat-dialog-item`, `chat-dialog-head`, `chat-inputbar`, action-buttons). · Мобильная геометрия ввода/клавиатуры (`fixed/sticky/viewport` логика, fullscreen layout цепочка) не изменялась, чтобы не вернуть iPhone-баг с \"подбородком\".
Релиз v3.6.5
2026-02-23

Релиз v3.6.5

Мессенджер получил второй visual-pass: доработаны карточки диалогов, шапка активного диалога, кнопки действий и composer для более цельного и лёгкого вида. · В списке диалогов добавлена компактная CTA-кнопка `Контакты` в шапке списка и более полезное пустое состояние с переходом в `Контакты`. · В `views/chat.php` расширен UI-only CSS слой (polish pass 2): `chat-list-headbar`, `chat-dialog-item`, `chat-dialog-head`, `chat-head-btn`, `chat-compose-btn` и density overrides. · Добавлены только безопасные классы/микроразметка в `views/chat.php` (CTA в списке диалогов, классы кнопок) без изменения маршрутов, логики сообщений и звонков.
Релиз v3.6.6
2026-02-23

Релиз v3.6.6

Hotfix iPhone/PWA уведомлений: системная строка `from ...` теперь берёт бренд из настроек (`Название в шапке` → `Название сайта`), а не из старого захардкоженного `TSOY.CLOUD`. · PWA meta-теги (`application-name`, `apple-mobile-web-app-title`) синхронизированы с брендингом проекта, чтобы имя приложения и имя в уведомлениях совпадали. · В `index.php` добавлен route `manifest`, который отдаёт динамический Web App Manifest на основе текущих настроек брендинга (`site_header_name` / `site_name`). · В `views/partials/head.php` `<link rel=\"manifest\">` переведён на динамический route с cache-bust (`APP_VERSION` + hash бренда); `application-name` и `apple-mobile-web-app-title` переведены на приоритет `site_header_name`.
Релиз v3.6.7
2026-02-23

Релиз v3.6.7

Исправлен мобильный overflow окна `Диалоги` в мессенджере: карточка списка диалогов больше не вылезает за ширину экрана на iPhone/смартфонах. · Стабилизирована ширина mobile-раскладки мессенджера без изменений логики клавиатуры и без риска вернуть баг с `подбородком`. · В `views/chat.php` для mobile добавлен точечный фикс ширины: убраны отрицательные отступы `row g-3` (Bootstrap gutter overflow) и зажаты `#chatListPane`/карточка/тело списка в `max-width:100%`. · Изменение ограничено CSS-слоем страницы чата; fullscreen/composer/`visualViewport` логика не изменялась.
Релиз v3.6.8
2026-02-23

Релиз v3.6.8

Ускорена отправка сообщений в мессенджере: сообщение появляется заметно быстрее после нажатия `Отправить`, без ощущения паузы в 2–3 секунды. · Повышена плавность UX при отправке: сервер отдаёт ответ чату сразу, а push-уведомления больше не держат отправку сообщения. · В `index.php` (`chat_send_async`) push для нового сообщения переведён в queue-first режим: уведомление ставится в очередь без синхронной отправки (`sendNow=false`). · HTTP-ответ `chat_send_async` теперь завершается до фоновой попытки dispatch push (`fastcgi_finish_request` / flush), чтобы Web Push не блокировал отображение сообщения.
Релиз v3.6.9
2026-02-23

Релиз v3.6.9

Подготовлен серверный фундамент чата для больших историй переписки (сотни тысяч/миллионы сообщений) без изменения привычного интерфейса. · Список диалогов и polling чата стали легче для сервера за счёт оптимизации хранения unread-состояния и индексов под крупные переписки. · В `conversations` добавлены денормализованные unread-счётчики (`u1_unread_count`, `u2_unread_count`) и метаданные последнего сообщения (`last_message_id`, `last_message_preview`). · В `app/chat.php` `message_send()` / `conversation_mark_read()` обновляют unread-счётчики диалога; `message_delete_for_me()` и `conversation_clear_for_me()` синхронизируют их через пересчёт/сброс.
Релиз v3.6.10
2026-02-23

Релиз v3.6.10

Полиш страницы `Контакты`: действия `Написать`, `Позвонить`, `Удалить` в карточках заменены на компактные иконки (конверт, трубка, корзина) для более чистого интерфейса. · Сохранены подсказки (`title`) и `aria-label`, чтобы UX остался понятным и доступным на ПК и мобильных устройствах. · В `views/contacts.php` добавлены `contacts-actions` и `contacts-action-icon` (theme/density-friendly размеры икон-кнопок), заменена текстовая разметка кнопок в списке `Мои контакты` и `Каталог пользователей`. · Логика маршрутов и действий (`chat_start`, `chat_start&call=1`, add/remove contact) не изменялась.
Релиз v3.6.11
2026-02-23

Релиз v3.6.11

Доведён UI действий в `Контактах`: кнопка `В контакты` заменена на иконку `человек+`, чтобы все действия в карточках были в одном визуальном языке. · Заголовок `Каталог пользователей` и кнопка `Найти` теперь находятся в одной строке, поле поиска вынесено отдельно ниже на полную ширину. · В `views/contacts.php` кнопка добавления контакта переведена на `bi-person-plus` с `title`/`aria-label`; сохранена существующая POST-логика `action=add`. · Поиск в каталоге использует `form=\"contactsSearchForm\"` у кнопки `Найти`, чтобы держать правильную desktop/mobile компоновку без изменения backend-маршрута `contacts`.
Релиз v3.6.12
2026-02-23

Релиз v3.6.12

Системные файлы проекта (логотип, favicon, кастомные звуки уведомлений/звонка и служебные ассеты спец-регистрации) переведены в единую системную папку `public/system/...`. · Старые пути (`public/branding`, `public/sounds`, `public/friend_register`) автоматически и мягко переносятся в новую системную структуру при запуске приложения. · Добавлен `app/system_assets.php`: единый helper для системных ассетов (безопасное сохранение upload-файлов, удаление только из разрешённых системных директорий, миграция legacy-путей). · В `index.php` (`admin_settings`) загрузка логотипа, favicon и кастомных рингтонов переведена на `system_assets_store_upload(...)` с хранением в `public/system/branding` и `public/system/sounds`.
Релиз v3.6.13
2026-02-23

Релиз v3.6.13

В настройках переработан раздел `Внешний вид`: вместо разрозненных пунктов `Внешний вид профиля` и `Внешний вид сайта` появился единый раздел `Внешний вид` с подпунктами (профиль / сайт / стиль уведомлений). · Для глобального оформления сайта добавлены готовые профили внешнего вида (несколько пресетов под разные сценарии: чистый, рабочий, чтение, мягкий, ночной, psychedelic). · Добавлен helper `ui_appearance_profiles()` в `app/bootstrap.php` с готовыми профилями оформления и пакетами значений для `ui_*` настроек. · В `views/admin_settings.php` объединена навигация дизайна в один top-level `Внешний вид`, добавлен UI выбора/подстановки профиля оформления и обновлены кириллические шрифтовые опции.
Релиз v3.6.14
2026-02-23

Релиз v3.6.14

Исправлен UX профиля: кнопка `Написать` больше не отображается на собственной карточке профиля. · У вложений постов в обычном просмотре убраны кнопки `Удалить`: удаление доступно только в режиме редактирования поста. · В `views/profile.php` кнопка перехода в чат скрыта для `is_self`. · Из обычного рендера вложений в `views/profile.php` удалены формы `post_attachment_delete`; удаление оставлено в edit-блоке (`js-del-att`).
Релиз v3.6.15
2026-02-23

Релиз v3.6.15

В личном разделе `Настройки -> Внешний вид` добавлены персональные режимы основного бокового меню: `показывать всегда`, `скрывать всегда`, `по кнопке`. · Для публичной страницы профиля добавлена персональная настройка вида для гостей: `показывать боковое меню`, `скрывать боковое меню`, `скрывать боковое меню и шапку сайта`. · В `users` добавлены персональные UI-поля `ui_sidebar_mode` и `guest_profile_chrome_mode` (миграции в `app/migrations.php`). · В `index.php` (`settings`) сохранение пользовательских настроек расширено: добавлен `user_update_ui_prefs(...)` и синхронизация значений в session snapshot.
Релиз v3.6.16
2026-02-23

Релиз v3.6.16

В мессенджере добавлено контекстное меню сообщения по правой кнопке мыши и по удержанию на мобильных устройствах. · Меню действий сообщения теперь включает `Изменить`, `Удалить`, `Цитировать` и `Реакция` (с выбором emoji). · Добавлена таблица `message_reactions` (MySQL/SQLite) и миграции/индексы в `app/migrations.php`. · В `app/chat.php` добавлены batch-подгрузка реакций для пачек сообщений (`chat_messages_payload_for_client`) и `message_reaction_toggle(...)`.
Релиз v3.6.17
2026-02-23

Релиз v3.6.17

В мессенджере у сообщений добавлена маленькая галочка статуса прочтения (`прочитано / не прочитано`). · Галочка отображается у ваших сообщений и обновляется в диалоге автоматически, когда собеседник читает чат. · В `app/chat.php` в payload сообщений добавлен `is_read`, а также helper `conversation_last_read_sent_message_id(...)` для лёгкого read-receipt sync. · В `chat_send_async` и `chat_messages_poll` (`index.php`) добавлен `read_upto_own_id`, чтобы фронт мог обновлять статусы уже отрисованных сообщений без перезагрузки.
Релиз v3.6.18
2026-02-23

Релиз v3.6.18

В контекстное меню сообщения мессенджера добавлен пункт `Будильник` (пинг-напоминание). · Будильник доступен для ваших сообщений и отправляет повторное уведомление собеседнику только если сообщение ещё не прочитано. · Добавлен route `chat_message_nudge` в `index.php` с проверками: сообщение принадлежит текущему пользователю, находится в этом диалоге и ещё не прочитано. · В `app/push.php` добавлен `push_notify_chat_message_reminder(...)` с отдельным типом `chat_nudge` и dedupe tag по сообщению.
Релиз v3.6.19
2026-02-23

Релиз v3.6.19

Начато внедрение голосовых сообщений в мессенджер: добавлена красная кнопка микрофона и аккуратное окно записи. · Голос записывается прямо в браузере/на устройстве и прикрепляется к сообщению как аудио-вложение. · В `views/chat.php` добавлены voice-recorder modal, UI состояния записи и интеграция с `MediaRecorder` (MVP) без изменения keyboard/fullscreen геометрии чата. · Записанный blob прикрепляется через существующий `chatFileInput` (`DataTransfer`) и уходит в уже существующий backend upload flow `chat_send_async` / `message_send`.
Релиз v3.6.20
2026-02-23

Релиз v3.6.20

Добавлен глобальный preloader при загрузке страниц сайта: пользователь видит аккуратный индикатор загрузки вместо “пустого” экрана. · Для PWA добавлен отдельный режим preloader `Идёт установка приложения…` при установке через системную кнопку. · В `views/partials/head.php` добавлен theme-aware overlay `#tsoyPreloader` (общий для сайта и установщика), работающий в светлой/тёмной теме без жёстко тёмного фона. · В `views/partials/scripts.php` добавлен runtime `window.__TSOY_PRELOADER` (show/hide/set) с автоскрытием после загрузки, показом на внутренних переходах и submit-формах (кроме AJAX submit с `preventDefault`).
Релиз v3.6.21
2026-02-23

Релиз v3.6.21

Исправлено переключение разделов в настройках: секции теперь открываются без ощущения полной перезагрузки страницы. · В `Контактах` длинные имена пользователей больше не раздвигают и не перестраивают иконки действий: текст ужимается/переносится внутри текстовой зоны, а кнопки остаются на месте. · В `views/admin_settings.php` клики по боковому меню настроек переведены на client-side section switch (`history.pushState`) вместо обязательной навигации по `settings_admin_*` route; `form action` динамически переключается по секции, поэтому сохранение остаётся корректным. · В `views/contacts.php` добавлены отдельные классы текстовой зоны (`contacts-person-*`), `contacts-actions` переведён в `nowrap`/`flex-shrink:0`, а длинные имена ограничены в 1–2 строки без сдвига иконок.
Релиз v3.6.22
2026-02-23

Релиз v3.6.22

Hotfix preloader: убран автопоказ на каждый внутренний клик, поэтому переключение секций настроек и переходы между чатами больше не должны “подвисать” из-за overlay. · Preloader сохранён там, где он реально полезен: первичная загрузка страницы, установка сайта и установка PWA. · В `views/partials/scripts.php` глобальный preloader переведён в explicit-flow режим: отключён автоперехват всех внутренних ссылок и обычных submit-форм. · Автопоказ preloader оставлен только для `install.php` submit и для форм с `data-preloader=\"1\"`; PWA install flow (`beforeinstallprompt`) сохранён отдельно.
Релиз v3.6.23
2026-02-23

Релиз v3.6.23

В `Профиле` длинные тексты в карточках друзей/страниц и в постах ведут себя аккуратнее: текст ужимается/переносится внутри своей зоны и не ломает действия/бейджи. · В `install.php` добавлена мини-анимация этапов установки (БД → миграции → админ → готово) с синхронизацией текста в preloader. · В `views/profile.php` добавлены clamp/overflow правила для карточек друзей/страниц и фикс action-зон в постах, чтобы длинные строки не выталкивали элементы интерфейса. · В `install.php` реализован submit-time stepper без изменения backend-логики: этапы анимируются на клиенте и обновляют `__TSOY_PRELOADER` в режиме `install-site`.
Релиз v3.6.24
2026-02-23

Релиз v3.6.24

Hotfix preloader: страницы `Профиль` и `Мессенджер` открываются заметно быстрее, overlay загрузки больше не ждёт долго все картинки/медиа. · Preloader теперь скрывается на этапе готовности DOM, а не только после полного `window.load`. · В `views/partials/scripts.php` логика initial preloader boot переведена на `DOMContentLoaded`/`interactive` + `requestAnimationFrame`, чтобы не блокировать UI на медиа-насыщенных страницах. · `window.load` и `pageshow` оставлены только как fallback-сигналы; добавлен hard fail-safe timeout на случай странных браузерных зависаний событий.
Релиз v3.6.25
2026-02-23

Релиз v3.6.25

Hotfix голосовых сообщений: голосовые `.webm` в мессенджере теперь отображаются плеером, а не только ссылкой на файл. · Фикс работает и для уже отправленных голосовых (по имени `voice_message_*`), и для новых записей. · В `app/files.php` добавлена нормализация MIME для browser voice-notes (`voice_message_*`), чтобы `.webm/.ogg/.m4a` не сохранялись как generic/video MIME. · В `app/chat.php` добавлен helper `chat_file_is_audio_like(...)`, а payload чата теперь отдаёт `file_is_audio` для корректного client render старых и новых голосовых.
Релиз v3.6.26
2026-02-23

Релиз v3.6.26

На главной странице блок недавних файлов больше не растягивает экран вниз: по умолчанию показываются первые 3 файла. · Остальные файлы открываются кнопкой `Показать ещё файлы` (порциями по 3), как в разделе новостей. · В `views/home.php` лента файлов переведена на существующий механизм `data-load-more-root` из `views/layout.php` без добавления нового JS-кода. · Для элементов файлов добавлено серверное начальное скрытие (`d-none`) после первых 3 записей, чтобы список был компактным сразу при рендере страницы.
Релиз v3.6.27
2026-02-23

Релиз v3.6.27

Hotfix голосовых сообщений в мессенджере: voice-notes отображаются компактной одной строкой без второй строки с именем файла. · Визуал голосового сообщения стал тоньше и аккуратнее, ближе к обычной строке сообщения. · В `views/chat.php` voice-note рендер (`voice_message_*`) уже использует отдельный inline-layout без file-link; в релиз включён hotfix компактности CSS (`.chat-voice-inline-row`, `.chat-audio-clip.is-voice-note`). · Серверный и polling JS рендеры голосовых сообщений синхронизированы: для voice-notes не выводится отдельная строка имени файла.
Релиз v3.6.28
2026-02-23

Релиз v3.6.28

Голосовые сообщения в мессенджере: один тап по микрофону запускает запись, повторный тап останавливает запись и сразу отправляет голосовое. · Если запись не удалось отправить автоматически, голосовое остаётся прикреплённым в composer и можно отправить вручную. · В `views/chat.php` обычный click/tap микрофона переведён на toggle-логику записи (`start/stop+auto-send`) без изменения mobile composer/fullscreen геометрии. · Добавлен helper программной отправки через существующий async submit (`chat_send_async`) после авто-прикрепления voice blob в composer.
Релиз v3.6.29
2026-02-23

Релиз v3.6.29

Голосовые сообщения в чате теперь воспроизводятся одинаково на ПК и телефоне: компактной одной кнопкой play/pause. · У voice-note больше нет зависимости от урезанных native audio-controls браузера на десктопе. · В `views/chat.php` voice-notes (`voice_message_*`) переведены на custom mini-player (кнопка + hidden audio) в server-side и polling-render. · Добавлена JS-делегация управления воспроизведением (play/pause, синхронизация иконки, автопауза предыдущего голосового).
Релиз v3.6.30
2026-02-23

Релиз v3.6.30

В `Настройки -> Внешний вид` добавлены персональные настройки preloader: режим (`умный / только установка-PWA / выключить`), компактный вид и показ текста. · Preloader теперь можно настроить под себя по каждому профилю аккаунта (профиль = отдельный user). · В `users` добавлены персональные UI-поля preloader (`ui_preloader_mode`, `ui_preloader_compact`, `ui_preloader_show_text`) с загрузкой в session snapshot и применением в `views/partials/scripts.php`. · В `views/partials/head.php` добавлены вариации preloader (`compact`, скрытие текста), а runtime учитывает пользовательский режим без ломки install/PWA сценариев.
Релиз v3.6.31
2026-02-23

Релиз v3.6.31

Hotfix голосовых сообщений на телефоне: mini-player voice-note снова стабильно воспроизводится по тапу. · Поведение mini-player синхронизировано для mobile/desktop (play/pause одной кнопкой). · В `views/chat.php` для voice mini-player добавлен mobile-safe `touchend` handler с подавлением дубля `click`, чтобы iPhone/Safari не терял тап. · Скрытый `<audio>` переведён с `display:none` на visually-hidden класс; добавлен `audio.load()` перед `play()` для лучшей совместимости мобильных браузеров.
Релиз v3.6.32
2026-02-23

Релиз v3.6.32

В Брендинге добавлена отдельная настройка `Иконка PWA` (опционально) для установленного приложения. · Если PWA-иконка не задана, приложение теперь использует `favicon`, а затем `лого` как fallback. · Route `index.php?r=manifest` теперь динамически подменяет `icons` (и shortcut icons) из настроек брендинга вместо жёстких `/public/icons/...`. · В `views/partials/head.php` `apple-touch-icon` переведены на динамический PWA icon с cache-bust, а `manifest` cache-bust учитывает смену иконки.
Релиз v3.6.33
2026-02-23

Релиз v3.6.33

В PWA исправлен просмотр файлов: теперь файл открывается во встроенной странице-просмотрщике с кнопкой `Назад`, а не “захватывает” приложение без пути назад. · Кнопка `Открыть` в файловом проводнике тоже использует этот встроенный просмотр в standalone/PWA. · Добавлен route `index.php?r=file_viewer` с безопасной проверкой доступа к файлу и возвратом по `back` URL. · В `views/partials/scripts.php` добавлен standalone-PWA перехват ссылок `index.php?r=view&id=...` с перенаправлением во встроенный просмотрщик вместо raw-file response.
Релиз v3.6.34
2026-02-23

Релиз v3.6.34

Hotfix mini-плеера голосовых на телефоне: воспроизведение по тапу снова стабильно запускается. · Поведение mini-player выровнено между iPhone/Android и ПК (одна кнопка play/pause). · В `views/chat.php` mini-player получил прямые обработчики `touchend/click` на кнопке (а не только делегирование через контейнер сообщений) с защитой от двойного срабатывания. · Убран рискованный pre-play `audio.load()` как основной путь; добавлен fallback reload только при ошибке `play()`.
Релиз v4.0.0
2026-02-27

Релиз v4.0.0

Новый формат приложения `messenger`: отдельный упрощённый режим только для Контактов и Мессенджера с прямым открытием чата. · Страница `Админ → Пользователи` полностью переработана: аккаунт и его профили теперь управляются в одной карточке. · В модель пользователей добавлены `app_mode`, `group_id`, `group_role`, `allow_multiprofile`, `admin_password_hint`; добавлены таблицы `groups`, `group_members`, `group_bridges` и миграции/индексы для них. · Реализована backend-видимость по группам и мостам в `users_directory`, `contacts_list`, `conversation_get_or_create`, `conversations_for_user` и проверках `chat_start`/добавления контактов.
Релиз v4.1.0
2026-02-28

Релиз v4.1.0

Управление группами и мостами вынесено в отдельную страницу `Дашборд → Группы и мосты` с полным управлением: создание, переименование, удаление групп и мостов, просмотр участников. · Страница `Пользователи` очищена от группового управления, оставлены только аккаунты и создание; добавлена ссылка на новую страницу групп. · Добавлены backend-функции `group_rename()`, `group_delete()`, `group_bridge_delete()` в `app/users.php` для полного CRUD-управления группами и мостами. · Новый route `admin_groups` в `index.php` с POST-обработчиками: `create_group`, `rename_group`, `delete_group`, `set_bridge`, `delete_bridge`.
Релиз v4.2.0
2026-02-27

Релиз v4.2.0

В мессенджере при записи голосового сообщения появляется красная кнопка-корзина для отмены записи (как в Telegram). Работает и при тапе, и при удержании. · Добавлена функция «Удалить у всех»: отправитель может удалить своё сообщение не только для себя, но и для собеседника. · Добавлена кнопка `#voiceCancelBtn` (`.chat-voice-cancel-btn`) в inputbar мессенджера; появляется при `voiceTapRecording`/`voiceHoldRecording`, вызывает `voiceRecResetState()` для отмены. · В `app/chat.php` добавлена `message_delete_for_all()` — физическое удаление сообщения и его реакций; доступно только отправителю.
Релиз v4.3.0
2026-02-27

Релиз v4.3.0

Создана отдельная страница «Новости» со всеми админ- и системными новостями, пагинацией и кнопкой «Показать ещё». · На дашборде в блоке «Новости» теперь показываются только 2 последних записи и ссылка «Все новости →». · Создан `views/news.php` — standalone-страница новостей с `page_top`, раздельными блоками admin/system news и load-more (initial=10). · Добавлен маршрут `case "news"` в `index.php` затягивающий `views/news.php`.
Релиз v4.4.0
2026-02-28

Релиз v4.4.0

Администрирование новостей вынесено из дашборда сотрудников на отдельную страницу с полным CRUD (создание, чтение, редактирование, удаление). · Файловый проводник «Мои файлы» полностью переписан: карточный/списочный вид, drag-n-drop файлов в папки, зона загрузки, контекстное меню, иконки по типу файла, переключатель grid/list. · В `app/news.php` добавлены `news_get()` и `news_update()` для CRUD новостей. · В `index.php` добавлен маршрут `news_update` (POST, csrf, audit_log).
Релиз v4.5.0
2026-02-28

Релиз v4.5.0

Мессенджер переработан в стиле Telegram: кнопка «корзина» при записи голосового теперь слева, заголовок чата стал overlay поверх сообщений (больше полезной площади), упрощённый хедер (только «Назад» + имя/аватар). · Нажатие на имя/аватар в чате открывает карточку пользователя (Telegram-style slide-in панель) с действиями: звонок, ссылка, профиль, очистить чат. · `views/chat.php` — voiceCancelBtn перемещён перед attachBtn в HTML (trash слева при записи). · `views/chat.php` — заменён `.chat-dialog-head` на `.chat-overlay-head` (position: absolute, backdrop-filter, overlay поверх сообщений).
Релиз v4.6.0
2026-02-28

Релиз v4.6.0

Создана единая дизайн-система проекта (14 переиспользуемых компонентов): карточки, hover-эффекты, стеклянные панели, навигация, статусные индикаторы, зоны загрузки и др. · Unification поверхностных переменных (light/dark × soft/balanced/strong) — 6 тем теперь задаются в одном месте вместо дублирования в каждом view. · Создан `public/css/design-system.css` (382 строки, 14 компонентов): `.t-surface`, `.t-stat-card`/`.t-stat-grid`, `.t-card-hover`, `.t-info-card`, `.t-card-frosted`, `.t-section`/`.t-section-title`, `.t-page-border`, `.t-summary-grid`, `.t-status-pill`, `.t-list-hover`, `.t-status-dot`, `.t-sticky-bar`, `.t-nav-item`, `.t-upload-zone`. · В `views/partials/head.php` подключён `public/css/design-system.css` перед inline `<style>`.
Релиз v5.0.0
2026-03-01

Релиз v5.0.0

Система «Группы» переименована в «Домены» — организационные единицы теперь называются доменами. · Маршрут `admin_groups` → `admin_domains`; навигация, дашборд и все UI-тексты обновлены. · Миграция БД: таблицы `groups`→`domains`, `group_bridges`→`domain_bridges`, `group_members`→`domain_members`; колонки `group_id`→`domain_id`, `group_role`→`domain_role`, `is_global_group`→`is_root_domain`, `group_a_id`→`domain_a_id`, `group_b_id`→`domain_b_id`. · Поддержка MySQL и SQLite: `ALTER TABLE RENAME`, `RENAME COLUMN` / `CHANGE COLUMN` в зависимости от драйвера.
Релиз v5.1.0
2026-03-01

Релиз v5.1.0

Маршрут `dashboard` (файловый проводник) переименован в `skybox` — SkyBox, личное облачное хранилище. · Маршрут `staff` (панель администратора) переименован в `dashboard` — Дашборд. · `views/dashboard.php` → `views/skybox.php`; `views/staff.php` → `views/dashboard.php`; `views/admin.php` → `views/filehub.php`. · `index.php`: маршруты, capability map, case-блоки и все redirect/fallback URL обновлены.
Релиз v5.2.0
2026-03-01

Релиз v5.2.0

FileHub переписан на единый с SkyBox карточный интерфейс (grid/list, sidebar, поиск, breadcrumbs). · Выпадающее меню профиля полностью переработано: чистый список ссылок, компактное переключение профилей, убрана сетка кнопок. · `views/filehub.php` переписан с табличной разметки на `cloud-file-grid`/`cloud-file-card` из SkyBox. · `views/layout.php`: dropdown `.topbar-profile-menu` и модальное окно `#userProfilesModal` заменены новой разметкой с `.tpm-*` и `.upm-*` классами.
Релиз v5.3.0
2026-03-01

Релиз v5.3.0

Поле «Отображаемое имя» разделено на «Имя» и «Фамилия» — два отдельных поля повсюду в системе. · При регистрации теперь обязательно указать имя и фамилию. · Миграция: добавлены колонки `first_name` и `last_name` в таблицу `users`. · Колонка `display_name` сохранена для обратной совместимости — автоматически вычисляется из `first_name + last_name`.
Релиз v5.4.0
2026-03-01

Релиз v5.4.0

Настройка Preloader перенесена из личных настроек пользователя в глобальные настройки администратора (раздел «Дизайн»). · Push-подписки: автоматическая дедупликация устройств — при переподписке с того же устройства старая подписка заменяется. · Preloader: параметры `preloader_mode`, `preloader_compact`, `preloader_show_text` перенесены в таблицу `settings`. · Per-user параметры `ui_preloader_mode`, `ui_preloader_compact`, `ui_preloader_show_text` больше не используются (колонки сохранены для совместимости).
Релиз v5.5.0
2026-03-02

Релиз v5.5.0

Защита от брутфорса: ограничение попыток входа (5 за 15 мин) с автоматической блокировкой по IP+логину. · Минимальная длина пароля — 8 символов (регистрация, смена пароля, создание пользователя). · Security headers: X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, HSTS. · .htaccess deny для директорий `app/` и `storage/` — прямой доступ запрещён.
Релиз v5.6.0
2026-02-28

Релиз v5.6.0

Редактирование профиля: страница переверстана на CSS Grid — блоки «Смена пароля» и «Уведомления» теперь в боковой колонке справа (1fr + 380px). · Политики: галочки для admin и admin_tester разблокированы при редактировании global_admin. · Новые функции: `user_role_rank()`, `user_can_see_password()`, `user_get_password_hint()`, `domain_get_by_code()`, `domain_generate_short_code()`, `domain_regen_code()`. · `domain_create()` генерирует уникальный 3-char код вместо slug-транслитерации.
Релиз v5.7.0
2026-02-28

Релиз v5.7.0

Дашборд: полностью переработанная панель с KPI-виджетами — пользователи, сообщения, файлы, контент, звонки, аудит. · Дашборд: лента последних действий (10 записей) с иконками по типу операции и карточка «Новые пользователи». · Новая функция `dashboard_stats()` в `app/health.php` — агрегированная статистика из 15+ таблиц за один вызов. · Настройки дашборда: `dashboard_widgets_json`, `dashboard_refresh_interval`, `dashboard_show_activity`, `dashboard_compact` в `settings_defaults()`.
Релиз v5.8.0
2026-02-28

Релиз v5.8.0

Настройки: иконки Bootstrap Icons у каждого пункта сайдбара (палитра, щит, шестерёнка, телефон, БД и др.) во цветных плашках. · Настройки: быстрый поиск по всем разделам — поле с debounce-фильтрацией, счётчик совпадений, горячая клавиша Ctrl+K. · CSS: новые классы `.admin-settings-search`, `.admin-settings-side-icon`, `.admin-settings-section-hdr`, `.js-dirty-badge`, `.admin-settings-kbd-hint`. · CSS: анимация `settingsFadeIn` (opacity + translateY), `savebarPulse` для индикации dirty-state.
Релиз v5.8.1
2026-02-28

Релиз v5.8.1

Удаление пользователей: исправлен баг — удалённые пользователи теперь скрываются из основного списка, кнопка «Показать удалённых» для просмотра. · Удаление пользователей: бейдж «удалён» и кнопка «Восстановить» в карточке пользователя. · `users_accounts_with_profiles()` принимает параметр `$includeDeleted` — по умолчанию скрывает `is_deleted=1`. · Новая функция `user_restore()` для восстановления soft-deleted пользователей.
Релиз v5.8.2
2026-02-28

Релиз v5.8.2

Полное удаление аккаунта: администратор может безвозвратно удалить пользователя и все его данные (сообщения, файлы, посты, профили). · Полное удаление аккаунта: кнопка «Полное удаление» в панели управления пользователями с усиленным подтверждением. · Новая функция `user_delete_hard()` — полная очистка всех данных пользователя из 31+ таблиц и файловой системы (аватары, обложки, загруженные файлы). · Ручная очистка таблиц без FK CASCADE: `domain_members`, `short_links`, `boards`, `rtc_*` таблицы; nullify `created_by_user_id` в `domains` / `domain_bridges`.
Релиз v5.8.3
2026-02-28

Релиз v5.8.3

База данных: новая опция «Подключиться без миграции» — позволяет переключить конфиг на существующую БД с данными без переноса и без удаления данных. · Предотвращает потерю данных при повторном подключении к MySQL после обновления сайта (когда конфиг сбрасывается на SQLite). · Параметр `skip_migration` в admin_db POST-обработчике: проверяет подключение, запускает `ensure_schema()` (CREATE IF NOT EXISTS + инкрементальные миграции) и `ensure_mysql_utf8mb4()`, но НЕ вызывает `migrate_database()` / `db_truncate()`. · Разрешена отправка формы при `target === current` в режиме reconnect (для переподключения к той же БД).
Релиз v5.8.4
2026-02-28

Релиз v5.8.4

Доменная изоляция: администратор домена теперь видит в разделе «Пользователи» только пользователей своего домена, а не всех. · Новая политика «Мосты для доменных администраторов» (Настройки → Доступ): не видеть / только просмотр / полный доступ к пользователям мостовых доменов. · `users_accounts_with_profiles()` принимает `?array $filterDomainIds` — SQL фильтрует `domain_id IN (…)`. · Новые хелперы: `is_root_domain_admin()`, `admin_bridged_domain_ids()`, `admin_visible_domain_ids()`, `admin_can_manage_user()`, `admin_can_view_user()`.
Релиз v5.8.5
2026-03-01

Релиз v5.8.5

Дашборд: статистика фильтруется по домену — администратор домена видит метрики только своего домена, а не всего сервиса. · Политики: доменные политики (мосты, корневой админ, домен по умолчанию) перенесены из Настроек на страницу «Политики» для единообразного управления. · Новая функция `dashboard_stats_for_domains(array $domainIds)` в `app/health.php` — статистика, ограниченная набором доменов. · `views/dashboard.php` использует `admin_visible_domain_ids()` для выбора `dashboard_stats()` или `dashboard_stats_for_domains()`.
Релиз v5.8.6
2026-03-01

Релиз v5.8.6

Мессенджер: полная переработка интерфейса в стиле Telegram — боковой список диалогов, панель переписки, адаптивная мобильная раскладка. · Мессенджер: голосовые сообщения, эмодзи-пикер, вложения файлов из облака и устройства. · views/chat.php: 6589 → 2410 строк (−63%), IIFE-архитектура с 23 секциями, 98 функций, 51 слушателей событий. · views/profile.php: 2338 → 1247 строк (−47%), CSS-переменные через .pf-* namespace, Bootstrap 5.3.3 интеграция.
Релиз v5.8.7
2026-03-01

Релиз v5.8.7

Исправлена ошибка FK-ограничения при переключении с SQLite на MySQL: таблица news больше не требует существующего пользователя для системных записей. · news: author_user_id изменён с INT NOT NULL на INT NULL DEFAULT NULL; FK-ограничение fk_news_user удалено. · Миграция Stage 10.21: DROP FOREIGN KEY, MODIFY COLUMN, UPDATE author_user_id = 0 → NULL для существующих MySQL-установок.
Релиз v5.8.8
2026-03-01

Релиз v5.8.8

Исправлена ошибка «Incorrect string value» при переключении на MySQL: эмодзи в новостях и чейнджлоге теперь корректно сохраняются. · ensure_mysql_utf8mb4() вызывается ДО ensure_schema() — SET NAMES utf8mb4 теперь действует до любых INSERT. · Список таблиц в ensure_mysql_utf8mb4 расширен с 21 до 39 (добавлены domains, boards, push_*, short_links, profile_media_items и др.).
Релиз v5.8.9
2026-03-01

Релиз v5.8.9

Профиль: исправлено отображение аватара и обложки (неверное имя поля avatar_file_id → avatar_path). · Мессенджер: сообщения теперь отображаются в цветных облачках (свои — акцентные, чужие — серые). · profile.php: avatar_file_id → avatar_path, cover_file_id → cover_path (6 мест). · chat.php: добавлены CSS-классы msg-own / msg-other на элементы сообщений (PHP + JS).
Релиз v5.8.10
2026-03-01

Релиз v5.8.10

Мессенджер: окно чата теперь корректно помещается в экран на любом устройстве (ПК и мобильные). · layout.php: content-canvas-mode → flex column с height:100dvh для корректного заполнения viewport. · chat.php: messenger-shell заменён calc(100dvh-140px) на flex:1 + min-height:0 — автоматическое заполнение оставшегося пространства.
Релиз v5.8.11
2026-03-01

Релиз v5.8.11

Профиль: кнопка «Написать» теперь открывает диалог с пользователем, а не пустой мессенджер. · Мессенджер: заголовок «Мессенджер» скрывается когда активен диалог (и на ПК, и на мобильных) — больше места для сообщений. · profile.php: ссылка «Написать» peer= → user_id= (матчит параметр в chat_start роуте). · chat.php: .chat-page-head скрывается на всех брейкпоинтах когда есть активный чат (display:none!important).
Релиз v5.8.12
2026-03-01

Релиз v5.8.12

Мессенджер: заголовок скрыт на мобильных — диалоги занимают весь экран. · Мессенджер: кнопка действий (⋯) теперь внутри облачка сообщения, а не за его пределами. · chat.php: .chat-page-head display:none!important на @media ≤991.98px (скрыт всегда на мобильных). · chat.php: .msg-actions-btn перенесён внутрь bubble (top:.25rem right:.25rem вместо left/right:-.8rem).
Релиз v5.8.13
2026-03-01

Релиз v5.8.13

Мессенджер: панель ввода теперь всегда видна на экране, страница не прокручивается. · layout.php: html/body/app-shell получают height:100dvh + overflow:hidden через :has(.content-canvas-mode). · layout.php: sidebar ограничен 100dvh с overflow-y:auto в canvas-режиме.
Релиз v5.8.14
2026-03-02

Релиз v5.8.14

Мессенджер: исправлены read receipts — отметка «прочитано» снова обновляется без перезагрузки страницы. · Мессенджер: исправлен экран звонка — окно звонка теперь корректно открывается и закрывается. · index.php: добавлен JSON endpoint `chat_mark_read` (CSRF + проверка участника диалога). · index.php: добавлен route `chat_file` для `admin_chat_view` с проверкой прав `admin/users`.
Релиз v5.8.15
2026-03-02

Релиз v5.8.15

Мессенджер: панель ввода закреплена внизу экрана на ПК и мобильных, без провала по высоте. · Мессенджер: кнопки отправки/микрофона снова работают по ожидаемой логике (пусто — микрофон, есть текст — отправка). · views/chat.php: выровнена мобильная/desktop вёрстка compose-зоны, исправлены conditionals рендера send/mic. · views/chat.php: интегрирован Picmo (`public/vendor/picmo/*`) вместо тяжёлого рантайма старого picker.
Релиз v5.8.16
2026-03-02

Релиз v5.8.16

Звонки в мессенджере: исправлен сценарий «Связь: ожидание» без подключения — звонки снова устанавливаются. · Мессенджер на телефоне: устранён правый зазор, чат и зона ввода снова растягиваются на всю ширину экрана. · index.php: call/rtc роуты добавлены в whitelist messenger-mode (`call_start/call_poll/call_signal_send/...`) — больше нет редиректа в HTML для JSON API. · app/chat.php: `call_is_participant()` получил fallback на `caller/callee` для legacy/частично мигрированных записей `rtc_call_members`.
Релиз v5.8.17
2026-03-02

Релиз v5.8.17

Мобильный чат: устранён нижний «подбородок» и восстановлена корректная полноэкранная геометрия в mobile/PWA. · Мессенджер: новые сообщения снова появляются строго снизу, история подгружается только вверх. · views/chat.php: mobile fullscreen переведён на единый safe-area (компенсация только в composer), `body.chat-mobile-fullscreen` больше не дублирует нижний inset. · views/chat.php: `chatJumpBottom` вынесен из потока сообщений; `appendMessages()` всегда добавляет в конец, `prependMessages()` — только в начало.
Система v2.3.6
2026-02-22

Управление жизненным циклом комнат звонков

- Создатель может завершать комнату звонка. - Админ может закрывать и удалять публичные комнаты.
Система v2.3.8
2026-02-22

Оптимизация старта интерфейса

- Перенесены второстепенные polling-задачи в idle-фазу. - Снижен пиковый отклик главного потока при открытии страниц.
Система v2.3.9
2026-02-22

Hotfix 2.3.9: стабилизация текста

- Проведена чистка поврежденных строк интерфейса. - Обновлены сообщения и статусы в основных маршрутах.
Система v2.3.10
2026-02-22

Hotfix 2.3.10: исправление кодировки

- Удалены поврежденные текстовые строки из ключевых экранов. - Исправлены уведомления профиля, чатов и панели. - Подготовлена база для финальной стабилизации.
Система v2.3.11
2026-02-22

Hotfix 2.3.11: полная правка кодировки

- Восстановлен index.php из стабильной базы без поврежденных строк. - Исправлены системные сообщения и заголовки в маршрутах и админ-разделах. - Очищены тексты новостей: теперь только нормальная кириллица.
Система v2.3.12
2026-02-22

Hotfix 2.3.12: исправлен экран звонка по ссылке

- Восстановлены тексты и элементы интерфейса на странице /index.php?r=call_room. - Исправлены поврежденные символы в views/call_room.php и views/admin.php. - Добавлено закрытие комнаты создателем/админом прямо из экрана звонка.
Система v2.3.13
2026-02-22

Policy 2.3.13: UTF-8 без BOM всегда

- В проект добавлено обязательное правило кодировки: только UTF-8 without BOM. - Добавлен .editorconfig с фиксированным charset=utf-8. - В релизный процесс встроена автоматическая проверка scripts/check-encoding.ps1.
Система v2.3.14
2026-02-22

Call Quality 2.3.14: стабильнее звук и соединение

- В звонках убраны жестко прошитые STUN-серверы: теперь ICE/STUN/TURN задаются в админ-настройках. - Добавлены параметры качества аудио: echo/noise suppression, AGC, channel count, sample rate, max bitrate. - Включено автоматическое ICE-переподключение при `d…
Система v2.3.15
2026-02-22

Call Stability 2.3.15: быстрый отклик без «убийства» сервера

- Для звонков внедрён адаптивный polling: один активный запрос за цикл, без наложения и штормов. - Добавлены таймауты, backoff при ошибках сети и fast-poll после сигналов/действий. - Алгоритм применён в личных звонках, комнатах по ссылке и админ-мониторинге.
Система v2.3.16
2026-02-22

Admin DB Tools 2.3.16: импорт/экспорт БД и безопасная очистка

- В разделе администрирования БД добавлены экспорт базы в JSON и обратный импорт JSON-дампа проекта. - Добавлены операции обслуживания: очистка RTC-сигналов/комнат, очистка старого аудита, удаление soft-deleted файлов и файлов-сирот в uploads. - Импорт выполн…
Система v2.3.17
2026-02-22

Hotfix 2.3.17: emoji снова отправляются в мессенджере (MySQL utf8mb4)

- Исправлена критическая ошибка `Incorrect string value` при отправке смайликов/emoji в сообщениях. - Для MySQL-подключения принудительно включён utf8mb4 (`SET NAMES` / `SET CHARACTER SET`). - Добавлена автоматическая проверка и конвертация старых таблиц в ut…
Система v2.3.18
2026-02-22

Admin DB 2.3.18: диагностика utf8mb4 / emoji для MySQL

- В разделе администрирования БД добавлен отчёт по кодировке MySQL для контроля поддержки emoji. - Отчёт показывает default charset/collation базы, количество таблиц проекта и список таблиц/колонок с не-utf8mb4 кодировкой (если есть). - Это диагностический ре…
Система v2.3.19
2026-02-22

Messenger Emoji 2.3.19: полноценный picker + недавние + клоун 🤡

- Блок смайликов в мессенджере переработан: добавлены быстрые emoji, секция недавних и более удобное управление. - Подключена библиотека emoji picker с поиском и категориями (локально, без зависимости от CDN в рантайме). - В быстрый набор добавлен клоун 🤡; вы…
Система v2.3.20
2026-02-22

Messenger Hotfix 2.3.20: сообщения видны сразу в открытом чате

- Исправлена проблема, когда уведомление о новом сообщении приходило, но в открытом чате сообщение не отображалось до повторного входа в диалог. - Добавлен инкрементальный polling новых сообщений и дорисовка сообщений прямо в ленте без перезагрузки страницы. …
Система v2.3.21
2026-02-22

Messenger Hotfix 2.3.21: список диалогов обновляется без перезахода

- Исправлена проблема, когда новые сообщения были видны по уведомлениям, но список диалогов (превью/непрочитанные) обновлялся только после повторного открытия чата. - Добавлен polling списка диалогов с компактной JSON-выдачей и обновлением только изменившихся…
Система v2.3.22
2026-02-22

Messenger UI 2.3.22: PWA-интерфейс ближе к Telegram/WhatsApp

- Переработан интерфейс мессенджера: список диалогов стал удобнее (аватары, время, превью, unread badge), а окно чата выглядит аккуратнее и быстрее читается. - Обновлены шапка диалога, лента сообщений и поле ввода в стиле PWA-мессенджера: удобнее на ПК и комп…
Система v2.3.23
2026-02-22

Hotfix 2.3.23: стабильная авторизация (PWA/мобильные сессии)

- Исправлена проблема, когда авторизация слетала и приходилось часто заново входить в аккаунт. - Для PHP-сессий настроены стабильные cookie-параметры (30 дней, httponly, SameSite=Lax, корректный secure при HTTPS). - Добавлено скользящее продление session cook…
Система v2.3.24
2026-02-22

Messenger UX 2.3.24: фиксированная форма + lazy history x10 + glass mobile

- На ПК исправлена главная проблема длинных диалогов: форма ввода сообщений закреплена поверх ленты и всегда видна, больше не нужно листать страницу до самого низа. - История сообщений теперь догружается по 10 сообщений при прокрутке вверх (lazy loading), а н…
Система v2.3.25
2026-02-22

Messenger Hotfix 2.3.25: последние сообщения + форма ввода видны сразу

- Исправлен баг на ПК, из-за которого при открытии длинного диалога форма ввода оказывалась внизу страницы и до неё приходилось прокручивать весь сайт. - Теперь по умолчанию открываются последние сообщения, а форма ввода закреплена поверх ленты и всегда видна…
Система v2.3.26
2026-02-22

Notifications Center 2.3.26: быстрые настройки + проверка доставки + mobile chat keyboard fix

- Добавлен отдельный центр уведомлений: быстрые переключатели Push/браузерных уведомлений и звука, статус разрешений, Service Worker и режима PWA. - Добавлена кнопка проверки уведомления на устройство и улучшена логика доставки через единый runtime helper (Se…
Система v2.3.27
2026-02-22

Profile & Social 2.3.27: about-страница, лайки постов, загрузка файлов с устройства

- Добавлена публичная страница `/about` с описанием проекта и карточками людей, внёсших вклад (с фото). - В `Профиль → Редактирование` (для администратора) появился блок управления страницей «О проекте»: текст, авторы, роли, заметки и загрузка фото участников…
Система v2.3.28
2026-02-22

Hotfix 2.3.28: кириллица в центре уведомлений

- Исправлено битое flash-сообщение после сохранения настроек в центре уведомлений. - Причина: в `index.php` оставалась строка в mojibake-виде; заменена на нормальную кириллицу (`Настройки уведомлений сохранены.`).
Система v2.3.29
2026-02-22

Hotfix 2.3.29: полная зачистка кракозябр в index.php + усиленный encoding-check

- Исправлены оставшиеся битые строки в `index.php` (flash-сообщения и заголовки разделов), включая примеры из `Центра уведомлений` и `Админ → База данных`. - Проведён полный проход по рабочим файлам проекта: активный mojibake был обнаружен в `index.php` и уст…
Система v3.0.0
2026-02-22

TSOY.CLOUD 3.0: большой апдейт профилей и мультипрофилей

- Продолжена большая переработка профиля: мобильная вёрстка блоков `Друзья / Страницы / Медиа`, карточки постов и модалка комментариев стали аккуратнее и ближе к новому шаблону. - `Фото / Видео / Аудио` оформлены как отдельные ручные галереи профиля: пользова…
Система v3.1.0
2026-02-22

TSOY.CLOUD 3.1.0: новый конструктор страниц + единый файловый проводник для выбора медиа

- Переработан конструктор пользовательских страниц: теперь можно собирать не только галереи, но и статьи, обучающие гайды, плееры с роликами и блоки ссылок. - Убрано ручное указание ID файлов в конструкторе страниц: выбор изображений и видео теперь идёт через…
Система v3.2.0
2026-02-22

TSOY.CLOUD 3.2.0: большой PWA-апдейт (уведомления, офлайн-кеш, desktop/mobile режим)

- Усилен PWA-режим на ПК и смартфонах: обновлён manifest (ярлыки быстрых действий, launch-поведение, совместимость desktop/mobile). - Улучшена работа уведомлений и звонков: клик по уведомлению теперь надёжнее открывает нужный раздел/чат, включая fallback-увед…
Система v3.3.0
2026-02-22

TSOY.CLOUD 3.3.0: единая система оформления + компактный мессенджер

- Проведена большая унификация визуального стиля проекта: карточки, навигация, формы и модалки стали более согласованными. - В `Настройки → Оформление` добавлены новые настройки дизайна: шрифт, масштаб текста, ширина контента, контраст поверхностей и отдельна…
Система v3.3.1
2026-02-22

TSOY.CLOUD 3.3.1: мессенджер (единый проводник вложений + fix меню сообщений) и улучшенная связка с “Оформлением”

- В мессенджере выбор вложений из облака переведён на единый файловый проводник (как в профиле и конструкторе страниц): папки, поиск, фильтры, превью и нормальный mobile UX. - Исправлено перекрытие меню редактирования/удаления сообщения: dropdown больше не пр…
Система v3.3.2
2026-02-22

TSOY.CLOUD 3.3.2: центр уведомлений — сначала уведомления, потом настройки

- В центре уведомлений изменён порядок блоков: сначала показывается блок «Все уведомления» (события/сводка), а затем блок настроек уведомлений. - Обновлён заголовок верхнего блока для более понятной логики экрана.
Система v3.3.3
2026-02-22

TSOY.CLOUD 3.3.3: контакты и мессенджер теперь в одном визуальном стиле

- Страница «Контакты» приведена к визуальному стилю мессенджера: одинаковые поверхности, контуры, мягкий градиент шапки и тип карточек. - Стили контактов теперь также реагируют на настройки `Оформление` (`Контраст поверхностей` и `Плотность`), как и мессендже…
Система v3.3.4
2026-02-22

TSOY.CLOUD 3.3.4: единый проводник в профиле и нормальное админ-хранилище с папками

- Проводник в профиле при выборе обложки и вложений поста переведён на единое ядро (как в мессенджере): больше нет разрозненных списков/селекторов. - В модалке вложений поста объединены блоки «Из облака», «С устройства» и «Ссылки», чтобы вложения с телефона/П…
Система v3.3.5
2026-02-22

TSOY.CLOUD 3.3.5: профиль (двойные проводники/лишние кнопки) и mobile-fix клипсы в мессенджере

- В профиле устранён двойной проводник при выборе обложки поста: теперь открывается только новый единый проводник. - Исправлена ошибка разметки, из-за которой у опубликованных постов могли появляться лишние кнопки «Сохранить / Отмена». - Копирование ссылок на…
Система v3.3.6
2026-02-22

TSOY.CLOUD 3.3.6: в конструкторе страниц появился блок «Таблица»

- В разделе «Мои страницы» добавлен новый блок `Таблица` для конструкторов страниц. - Можно редактировать ячейки прямо в сетке и управлять структурой: добавлять/удалять строки и столбцы. - Есть переключатель «первая строка — заголовки» для красивого отображен…
Система v3.4.0
2026-02-23

TSOY.CLOUD 3.4.0: полноценный Web Push (закрытый PWA/сайт) + индикатор качества звонков

- Реализованы настоящие Web Push-уведомления: сообщения, звонки, лайки, комментарии и добавления в друзья теперь могут приходить на устройство даже когда сайт/PWA закрыт. - Подписка на push синхронизируется с настройкой уведомлений пользователя и Service Work…
Система v3.4.1
2026-02-23

TSOY.CLOUD 3.4.1: mobile fix мессенджера (вложения) и центрирование меню профиля

- Исправлено открытие окна вложений в мессенджере на телефонах: attach-модалка и единый проводник теперь открываются поверх fullscreen-чата. - Для клипсы (`📎`) усилена обработка tap/click на мобильных устройствах, чтобы тапы не терялись в сложной fixed-верстк…
Система v3.4.2
2026-02-23

TSOY.CLOUD 3.4.2: hotfix навигации по уведомлениям (deep-link в источник)

- Исправлен переход по клику на уведомления: теперь уведомление корректно открывает именно источник события (чат, календарь, профиль/пост и т.д.). - Починена обработка ссылок в браузере и PWA для установок проекта в подпапке сайта (deep-link резолвится относи…
Система v3.4.3
2026-02-23

TSOY.CLOUD 3.4.3: информативные уведомления (сообщения + действия для звонка)

- Уведомления о сообщениях теперь показывают отправителя и фрагмент текста сообщения, а клик ведёт сразу в нужный диалог. - Для входящих звонков в уведомления добавлены действия «Принять» и «Отклонить» (если устройство/браузер поддерживает actions в уведомлен…
Система v3.4.4
2026-02-23

TSOY.CLOUD 3.4.4: настройки уведомлений в дашборде + улучшенный PWA update flow

- В `Настройки` добавлен новый раздел для уведомлений: цвет, оформление, рингтон уведомлений и отдельный рингтон входящего звонка. - Добавлен раздел `PWA и обновления`: политика обновления (`manual/notify/auto`), интервал проверки Service Worker, автозапрос p…
Система v3.4.5
2026-02-23

TSOY.CLOUD 3.4.5: свои рингтоны уведомлений и звонка

- В новом блоке настроек уведомлений теперь можно загрузить собственный рингтон для обычных уведомлений и отдельный рингтон для входящего звонка. - Добавлено превью/прослушивание загруженных рингтонов прямо в админке и удаление кастомного файла по чекбоксу. -…
Система v3.5.0
2026-02-23

TSOY.CLOUD 3.5.0: stability-сборка (cleanup, техдолг, аккуратные оптимизации)

- Проведён стабилизационный проход по проекту: убран техмусор, упрощены мелкие дубли в layout/head и улучшена поддерживаемость кода. - Для кастомных рингтонов уведомлений/звонков усилена надёжность: удаление старых файлов при замене, безопасная очистка только…
Система v3.5.1
2026-02-23

TSOY.CLOUD 3.5.1: hotfix рингтонов на телефонах

- Исправлено воспроизведение кастомных рингтонов уведомлений на телефонах: теперь ошибка `audio.play()` корректно отслеживается и при необходимости включается fallback-звук. - Кастомные рингтоны (уведомления/звонок) теперь резолвятся относительно пути приложе…
Система v3.5.2
2026-02-23

TSOY.CLOUD 3.5.2: notifications reliability phase 1 (retry worker + диагностика)

- Усилена надёжность доставки wake-push: в серверной очереди уведомлений появились состояния отправки, повторы с backoff и защита от зависших обработок. - В `Настройки -> PWA и обновления` добавлена диагностика push-очереди: недоставленные элементы, активные …
Система v3.5.3
2026-02-23

TSOY.CLOUD 3.5.3: notifications reliability phase 2 (Web Push payload + fallback)

- Сервер теперь отправляет полноценный Web Push payload (тело уведомления) для поддерживаемых push-подписок, поэтому уведомления стабильнее приходят даже когда сайт/PWA закрыт. - Сохранён совместимый fallback `wake-push + push_pull`, если payload не поддержив…
Система v3.5.4
2026-02-23

TSOY.CLOUD 3.5.4: диагностика push-устройств в админке + тест push по подписке

- В `Настройки -> PWA и обновления` добавлен список push-устройств/подписок: пользователь, устройство, режим (`browser/standalone`), encoding, последний успех и ошибки. - Для каждой подписки появилась кнопка `Тест push`, чтобы проверить доставку уведомления н…
Система v3.5.5
2026-02-23

TSOY.CLOUD 3.5.5: фильтры и управление push-подписками в админке

- В диагностике push-устройств появились фильтры: поиск по пользователю/устройству/endpoint, `active/inactive` и `только с ошибками`. - Для каждой push-подписки доступны действия `Тест push`, `Отключить/Включить` и `Удалить` прямо в таблице. - Управление подп…
Система v3.5.6
2026-02-23

TSOY.CLOUD 3.5.6: бренд уведомлений из настроек + статус последнего push-теста

- Заголовок уведомлений теперь берётся из настроек сайта (брендинг), а не остаётся захардкоженным как `TSOY.CLOUD`. - В диагностике push-устройств добавлена колонка `Последний тест`: время, `OK/Fail`, режим `payload/wake`, HTTP-код и текст ошибки. - Тест push…
Система v3.5.7
2026-02-23

TSOY.CLOUD 3.5.7: статистика реальной доставки push + бренд уведомлений из настроек

- В диагностике push-устройств появилась статистика реальных доставок по подписке: `payload`, `wake`, `wake fallback`, `errors` (накопительно, с последнего сброса). - Добавлены кнопки сброса статистики доставки push: глобально по всем подпискам и отдельно по …
Система v3.5.8
2026-02-23

TSOY.CLOUD 3.5.8: hotfix названия уведомлений (бренд из настроек)

- Исправлен приоритет названия уведомлений: теперь сначала используется `Название в шапке`, затем `Название сайта`. - Починен fallback тестового уведомления в центре уведомлений: больше нет захардкоженного `TSOY.CLOUD`. - Серверные push-уведомления и клиентск…
Система v3.5.10
2026-02-23

TSOY.CLOUD 3.5.10: сводка + мини-график доставки push (payload/fallback/error)

- В диагностике push добавлена агрегированная сводка по всем подпискам: `payload success rate`, `fallback rate`, `error rate` и общее число попыток. - Добавлен мини-график по дням (14 дней): stacked bars `payload / wake / errors`, где высота столбца = объём п…
Система v3.5.11
2026-02-23

TSOY.CLOUD 3.5.11: админ-настройки разбиты на понятные разделы

- Страница `Настройки` получила быстрый навигатор по разделам (якоря): теперь можно сразу перейти к брендингу, оформлению, PWA/push, WebRTC и другим блокам. - Добавлена логическая группировка секций (`Основные параметры`, `Дизайн и уведомления`, `Функции, зво…
Система v3.5.12
2026-02-23

TSOY.CLOUD 3.5.12: hotfix навигации по разделам настроек

- Исправлены кнопки блока «Разделы настроек»: переходы теперь корректно ведут к нужным секциям страницы `Настройки`, а не в корень сайта. - Убран sticky-режим навигационного блока, из-за которого он перекрывал интерфейс при прокрутке.
Система v3.5.13
2026-02-23

TSOY.CLOUD 3.5.13: Android-style настройки (меню слева, раздел справа)

- Страница `Настройки` переделана в режим с боковым меню разделов: слева список категорий, справа открывается только выбранный раздел. - Переключение секций происходит без переходов по странице и без перекрытия интерфейса навигационным блоком. - Добавлена сов…
Система v3.5.14
2026-02-23

TSOY.CLOUD 3.5.14: выбор часового пояса по Гринвичу в настройках системы

- В разделе `Система` добавлен выпадающий список выбора часового пояса по Гринвичу (`GMT/UTC`) с готовыми смещениями. - Выбор смещения автоматически подставляет корректный timezone ID в поле `Часовой пояс`, чтобы настройка сохранялась без ручного ввода. - Пол…
Система v3.5.15
2026-02-23

TSOY.CLOUD 3.5.15: role-aware настройки для всех + Android-style меню разделов

- В главное меню добавлен пункт `Настройки` для всех авторизованных пользователей; экран настроек стал role-aware (пользователь/модератор, админ, admin_tester, global_admin). - Настройки переведены в Android-style режим: слева список разделов, справа выбранны…
Система v3.5.16
2026-02-23

TSOY.CLOUD 3.5.16: админ-настройки разнесены по отдельным страницам

- Админские настройки физически разнесены по отдельным страницам (`Брендинг`, `Доступ и лимиты`, `Система`, `Оформление`, `PWA и push`, `Звонки/диагностика`, `База данных`) при сохранении единого бокового меню. - Переходы в меню теперь открывают соответствующ…
Система v3.5.17
2026-02-23

TSOY.CLOUD 3.5.17: hotfix вёрстки страницы настроек (desktop/mobile)

- Исправлен регресс после перевода меню настроек на ссылки: пункты бокового меню снова отображаются как полноценные кнопки без подчёркиваний и на всю ширину колонки. - Видимый раздел настроек в правой части теперь занимает всю доступную ширину (исправлен конф…
Система v3.5.18
2026-02-23

TSOY.CLOUD 3.5.18: hotfix блока БД и нижней панели сохранения в настройках

- В разделе `База данных` на странице `Настройки` убрана лишняя горизонтальная линия перед карточкой блока. - Нижняя панель сохранения (`Сохраняются все изменённые поля...`) теперь использует theme-aware цвета и остаётся читаемой в светлой/тёмной теме. - Испр…
Система v3.6.0
2026-02-23

TSOY.CLOUD 3.6.0: начало рефакторинга связки Профиль / Контакты / Мессенджер

- На страницах `Профиль`, `Контакты` и `Мессенджер` добавлен единый блок `Social Hub` с переключателем разделов и описанием назначения каждого экрана. - Зафиксированы роли модулей: `Профиль` = публичная страница и контент, `Контакты` = каталог и управление св…
Система v3.6.1
2026-02-23

TSOY.CLOUD 3.6.1: следующий шаг по связке Контакты/Мессенджер + UX-фиксы настроек

- В мессенджере блок `Быстрый старт` теперь использует только ваши контакты; полный каталог пользователей и управление связями оставлены в разделе `Контакты`. - В настройках исправлено выравнивание блока `База данных` относительно бокового меню (карточка боль…
Система v3.6.2
2026-02-23

TSOY.CLOUD 3.6.2: убран лишний Social Hub, мессенджер закреплён за диалогами

- Убран лишний UI-блок `Social Hub` с экранов `Профиль`, `Контакты` и `Мессенджер`: переключение между разделами остаётся в основном меню, интерфейс стал компактнее. - В `Мессенджере` оставлены только активные диалоги и сам чат; новые диалоги создаются через …
Система v3.6.3
2026-02-23

TSOY.CLOUD 3.6.3: контакты = старт общения, мессенджер = только диалоги

- На странице `Контакты` у карточек пользователей добавлены явные действия `Написать` и `Позвонить`. - `Мессенджер` очищен от каталоговых элементов: в боковой панели оставлена только история активных диалогов и сам чат. - Переходы через `chat_start` теперь ко…
Система v3.6.4
2026-02-23

TSOY.CLOUD 3.6.4: визуальный полиш мессенджера (в стиле Контактов) без риска вернуть подбородок

- Обновлены список диалогов, шапка активного диалога и composer мессенджера: карточки, границы, кнопки и типографика приведены к стилю раздела `Контакты`. - Улучшены состояния hover/active у диалогов, читаемость превью сообщений и кнопок в шапке диалога. - Из…
Система v3.6.5
2026-02-23

TSOY.CLOUD 3.6.5: второй полиш-проход мессенджера (диалоги, шапка, composer, плотность)

- Доработаны карточки диалогов, шапка активного диалога и composer мессенджера: кнопки, поверхности, состояния hover/active и типографика стали более цельными. - В шапке списка диалогов добавлена компактная CTA-кнопка `Контакты`, а пустое состояние стало поле…
Система v3.6.6
2026-02-23

TSOY.CLOUD 3.6.6: hotfix iPhone/PWA бренда уведомлений (строка from ...)

- Исправлен бренд iPhone/PWA уведомлений: системная строка `from ...` теперь берёт имя из настроек (`Название в шапке` → `Название сайта`), а не из старого `TSOY.CLOUD`. - Добавлен динамический route `manifest`, чтобы Web App Manifest подстраивался под бренди…
Система v3.6.7
2026-02-23

TSOY.CLOUD 3.6.7: hotfix mobile-overflow окна Диалоги в мессенджере

- Исправлен небольшой выезд окна `Диалоги` за экран на телефонах (в т.ч. iPhone): список диалогов теперь укладывается в ширину viewport. - Причина была в mobile-overflow от Bootstrap `row g-3` (отрицательные margins в canvas-режиме чата). - Фикс сделан только…
Система v3.6.8
2026-02-23

TSOY.CLOUD 3.6.8: ускорена отправка сообщений в мессенджере (без паузы от push)

- Исправлена задержка при отправке сообщений в мессенджере (ощущение паузы 2–3 секунды после нажатия `Отправить`). - Причина была в синхронной отправке Web Push прямо внутри `chat_send_async`: push мог тормозить HTTP-ответ чату. - Теперь сообщение сохраняется…
Система v3.6.9
2026-02-23

TSOY.CLOUD 3.6.9: фундамент для больших чатов (миллионы сообщений) без нагрузки на сервер

- Подготовлена серверная оптимизация чата для больших историй переписки: список диалогов и polling работают легче без изменения интерфейса. - Добавлены денормализованные unread-счётчики в `conversations` (по каждому участнику), чтобы не считать `COUNT(*)` unr…
Система v3.6.10
2026-02-23

TSOY.CLOUD 3.6.10: иконки действий в Контактах (конверт/трубка/корзина)

- На странице `Контакты` действия в карточках (`Написать`, `Позвонить`, `Удалить`) заменены на компактные иконки: конверт, трубка и корзина. - Интерфейс стал чище и плотнее, особенно в каталоге пользователей и в блоке `Мои контакты`. - Сохранены `title` и `ar…
Система v3.6.11
2026-02-23

TSOY.CLOUD 3.6.11: доведён UI действий в Контактах (+ строка Каталог/Найти)

- Кнопка `В контакты` в каталоге пользователей переведена на иконку `человек+`, чтобы все действия в карточках (`написать`, `позвонить`, `удалить`, `добавить`) были в одном стиле. - Заголовок `Каталог пользователей` и кнопка `Найти` теперь собраны в одну стро…
Система v3.6.12
2026-02-23

TSOY.CLOUD 3.6.12: системные файлы вынесены в отдельную папку public/system

- Логотип, favicon, кастомные звуки уведомлений/звонка и служебные ассеты спец-регистрации теперь хранятся в единой системной папке `public/system/...`. - Добавлен общий helper для системных файлов: безопасное сохранение upload-ов, удаление только из разрешён…
Система v3.6.13
2026-02-23

TSOY.CLOUD 3.6.13: единый раздел «Внешний вид», готовые профили оформления и кириллические шрифты

- В настройках объединён дизайн-блок: вместо раздельных пунктов `Внешний вид профиля` и `Внешний вид сайта` теперь один раздел `Внешний вид` с подпунктами (профиль / сайт / стиль уведомлений). - Для глобального оформления сайта добавлены готовые профили внешн…
Система v3.6.14
2026-02-23

TSOY.CLOUD 3.6.14: UX-фикс профиля (кнопка «Написать» и удаление вложений)

- На своей карточке профиля больше не показывается кнопка `Написать` — она остаётся только при просмотре чужого профиля. - У вложений постов в обычном режиме просмотра убраны кнопки `Удалить`; удаление осталось только в режиме редактирования поста. - Исправле…
Система v3.6.15
2026-02-23

TSOY.CLOUD 3.6.15: персональные режимы меню и публичного профиля для гостей

- В `Настройки -> Внешний вид` добавлены персональные режимы основного бокового меню: `показывать всегда`, `скрывать всегда`, `по кнопке`. - Для публичной страницы профиля (`/user/<login>`) добавлена личная настройка для гостей: показывать боковое меню, скрыв…
Система v3.6.16
2026-02-23

TSOY.CLOUD 3.6.16: контекстное меню сообщений (ПК/мобилка) + цитаты и реакции

- В мессенджере по правому клику мыши и по удержанию на телефоне открывается меню действий сообщения: `Изменить`, `Удалить`, `Цитировать`, `Реакция`. - Добавлены emoji-реакции к сообщениям с отображением количества; свою реакцию можно переключать повторным на…
Система v3.6.17
2026-02-23

TSOY.CLOUD 3.6.17: галочки прочтения сообщений в мессенджере

- У ваших сообщений в мессенджере появилась компактная галочка статуса: сообщение прочитано или ещё нет. - Статус прочтения обновляется в открытом диалоге автоматически через обычный polling, без перезагрузки страницы. - Изменение не затрагивает мобильную гео…
Система v3.6.18
2026-02-23

TSOY.CLOUD 3.6.18: «будильник» по сообщению в контекстном меню мессенджера

- В контекстное меню сообщения добавлен пункт `Будильник` — повторное уведомление собеседнику по конкретному сообщению. - Будильник работает только для ваших сообщений и только если сообщение ещё не прочитано (иначе пункт отключается/сервер вернёт `уже прочит…
Система v3.6.19
2026-02-23

TSOY.CLOUD 3.6.19: старт голосовых сообщений в мессенджере (красный интерфейс записи)

- В composer мессенджера добавлена красная кнопка микрофона: открывается аккуратное окно записи голосового сообщения. - Запись выполняется через `MediaRecorder` прямо на устройстве и прикрепляется в чат как аудио-вложение. - Аудио-вложения (в том числе голосо…
Система v3.6.20
2026-02-23

TSOY.CLOUD 3.6.20: preloader загрузки сайта и отдельный статус установки PWA

- Добавлен глобальный preloader загрузки страниц: при открытии/переходе по сайту показывается аккуратный индикатор `Загрузка`, чтобы интерфейс не выглядел пустым при ожидании. - Для PWA-установки добавлен отдельный режим `Идёт установка приложения…` (показыва…
Система v3.6.21
2026-02-23

TSOY.CLOUD 3.6.21: плавное переключение секций настроек + фиксы длинных имён в Контактах/Мессенджере

- Разделы в `Настройках` теперь переключаются мягко без полного визуального reload-эффекта: открывается нужный блок справа, а URL обновляется через историю браузера. - В `Контактах` длинные имена пользователей больше не смещают иконки действий (`конверт / тру…
Система v3.6.22
2026-02-23

TSOY.CLOUD 3.6.22: hotfix preloader (без ступора на чатах и секциях настроек)

- Исправлен глобальный preloader: он больше не включается на каждый внутренний клик и не тормозит переключение секций в `Настройках` или переходы между диалогами в `Мессенджере`. - Preloader оставлен только для действительно длинных/понятных сценариев: первич…
Система v3.6.23
2026-02-23

TSOY.CLOUD 3.6.23: hold-to-record голосовые + компактное предпрослушивание и прогресс установки

- В `Мессенджере` добавлен мобильный режим `удерживай для записи`: зажмите красную кнопку микрофона, отпустите — запись остановится и автоматически прикрепится к сообщению. - После записи голосового в composer появляется компактное предпрослушивание (мини-пле…
Система v3.6.24
2026-02-23

TSOY.CLOUD 3.6.24: hotfix preloader на Профиле и в Мессенджере

- Исправлен долгий preloader на страницах `Профиль` и `Мессенджер`: overlay загрузки больше не ждёт полный `window.load` со всеми картинками и медиа. - Preloader теперь скрывается на этапе готовности DOM (`DOMContentLoaded`/`interactive`), поэтому страницы на…
Система v3.6.25
2026-02-23

TSOY.CLOUD 3.6.25: hotfix отображения голосовых сообщений (плеер вместо файла)

- Исправлено отображение голосовых сообщений в мессенджере: записи вида `voice_message_*.webm` теперь показываются встроенным аудио-плеером, а не только ссылкой на файл. - Фикс работает и для уже отправленных сообщений: чат распознаёт голосовые по имени файла…
Система v3.6.26
2026-02-23

TSOY.CLOUD 3.6.26: компактная лента недавних файлов на главной

- На главной странице блок `Недавние мои файлы` / `Недавние гостевые файлы` больше не создаёт длинный `подбородок` из списка файлов. - По умолчанию показываются первые 3 файла, остальные открываются кнопкой `Показать ещё файлы` (порциями по 3). - Использован …
Система v3.6.27
2026-02-23

TSOY.CLOUD 3.6.27: голосовые сообщения в одну компактную строку

- Голосовые сообщения (`voice_message_*`) в мессенджере теперь отображаются компактной одной строкой без отдельной строки имени файла. - Плеер voice-note визуально стал тоньше и аккуратнее, чтобы не раздувать высоту сообщения. - Фикс работает и в первичном ре…
Система v3.6.28
2026-02-23

TSOY.CLOUD 3.6.28: tap-to-record для голосовых (второй тап — отправка)

- В мессенджере микрофон теперь работает в режиме toggle: первый тап запускает запись, второй тап останавливает запись и сразу отправляет голосовое сообщение. - Если автоотправка не удалась, запись автоматически остаётся прикреплённой в поле ввода — её можно …
Система v3.6.29
2026-02-23

TSOY.CLOUD 3.6.29: одинаковый mini-player голосовых на ПК и телефоне

- Голосовые сообщения в мессенджере теперь воспроизводятся одинаково на ПК и мобильных: компактной кнопкой play/pause в одну строку. - Убрана зависимость от урезанных native audio-controls браузера на десктопе (где могла пропадать кнопка воспроизведения). - Н…
Система v3.6.30
2026-02-23

TSOY.CLOUD 3.6.30: персональные настройки preloader

- В `Настройки -> Внешний вид` добавлены настройки preloader для текущего профиля: режим работы (`умный / только установка-PWA / выключить`), компактный вид и показ текста. - Настройки персональные: у каждого профиля (профиль = отдельный user) можно выбрать с…
Система v3.6.31
2026-02-23

TSOY.CLOUD 3.6.31: hotfix воспроизведения голосовых на телефоне

- Исправлено воспроизведение голосовых сообщений на мобильных устройствах: mini-player снова стабильно запускается по тапу. - Для voice-note добавлен mobile-safe `touchend` с защитой от двойного срабатывания (`touchend` + `click`). - Скрытый аудио-элемент пер…
Система v3.6.32
2026-02-23

TSOY.CLOUD 3.6.32: отдельная иконка PWA + fallback на favicon/logo

- В `Настройки -> Брендинг` добавлена отдельная загрузка `Иконка PWA` для установленного приложения. - Если отдельная PWA-иконка не задана, приложение использует `favicon`, а затем `лого` как fallback. - `manifest` и `apple-touch-icon` теперь формируются дина…
Система v3.6.33
2026-02-23

TSOY.CLOUD 3.6.33: встроенный просмотр файлов в PWA (с возвратом назад)

- В standalone/PWA просмотр файла теперь открывается не “сырым” `view`, а во встроенной странице-просмотрщике с кнопкой `Назад`. - После просмотра файла в PWA можно вернуться обратно в приложение без закрытия и повторного запуска. - Кнопка `Открыть` в файлово…
Система v3.6.34
2026-02-23

TSOY.CLOUD 3.6.34: hotfix mini-плеера голосовых на телефоне

- Исправлен запуск воспроизведения голосовых сообщений на телефоне (mini-player в чате). - Для кнопки mini-player добавлены прямые mobile-safe обработчики `touchend/click` с защитой от двойного срабатывания. - `audio.load()` больше не мешает запуску как основ…
Система v4.0.0
2026-02-27

TSOY.CLOUD 4.0.0: группы, мосты и формат messenger

- Добавлены группы пользователей и мосты между группами: можно гибко задавать, кто видит друг друга в контактах и чатах. - Админ-раздел `Пользователи` переработан: аккаунт и его профили управляются в одной карточке, добавлены режим приложения, мультипрофиль и…
Система v4.1.0
2026-02-28

TSOY.CLOUD 4.1.0: страница групп, единый дизайн

- Группы и мосты вынесены в отдельную страницу управления: создание, переименование, удаление групп, управление мостами и просмотр участников. - Страница пользователей упрощена: только аккаунты и создание новых пользователей. - Унифицирован дизайн всего проек…

© 2026 TSOY.CLOUD