HuskyNET — Chat Theme 5.5.5.5.1

Тёмная тема WordPress: чат, командная строка и дашборд в одном окне. Сайт выглядит как мессенджер — слева чаты, по центру команды и плитки, справа события.
Версия темы в style.css: 2.20. Схема таблиц чатов: DB 2.2.
Возможности
- Переписки и сообщества — личные чаты 1+1, избранное (сообщения себе), диалоги и группы; гости читают открытое, авторы пишут, создатель управляет участниками. Авторизованный закрепляет нужные чаты вверху списка (меню «⋯» → «Закрепить»).
- Командная строка — поле «Введите команду…»: поиск по сайту, новости, AI, управление чатом, вложения файлов.
- Главная как хаб — плитки нейросетей, сайтов, групп, мини-приложений и баннеров проектов; контент из записей, страниц и чатов.
- Лента справа — напоминания, непрочитанные, события автопостинга (Telegram, VK и др.).
- Медиа как в соцсетях — галереи, превью ссылок, видео, пересылка, закреп, push в браузере.
- Поиск и фильтры — поиск по чатам, фильтр списков в левом меню, теги, период, закреплённые сообщения, массовое выделение.
- AI-диалоги — режим с контекстной памятью через плагин AI Mode (
ai-mode=1). - REST API — внешние системы публикуют и читают сообщения (Application Passwords); ответы обогащаются превью и полями видео.
Требования
- WordPress 6.0+ (Application Passwords — с 5.6).
- PHP 8.0+ (библиотека Web Push; рекомендовано 8.1).
- MySQL 5.7+ / MariaDB 10.4+.
mod_rewrite(или эквивалент) для ЧПУ/dialog/{slug}и REST.- HTTPS — для Web Push и сервис-воркера.
- WP Cron — для плагинов автопостинга и планировщика команд.
Плагины (новости, AI, соцфид, напоминания) лежат в wp-content/plugins/ рядом с темой, не внутри неё. Рекомендуется та же раскладка каталогов при выкладке.
Установка и запуск
- Скопируйте тему в
wp-content/themes/chat-theme5_5_5_5_1. - В админке WordPress: Внешний вид → Темы — активируйте Husky Chat Theme.
- При активации тема создаёт/обновляет таблицы
wp_chat_dialogs,wp_chat_user_dialog_status,wp_chat_dialog_versions(версия схемыCHAT_THEME_DB_VERSION= 2.2). Убедитесь, чтоdialog_context—LONGTEXT. - Установите и включите плагины из
wp-content/plugins(Chat Enhancer, AI, новости, social feed — по необходимости). - REST: создайте Application Password в профиле пользователя. Инструкции —
inc/api/SETUP.mdиinc/api/API_INSTRUCTION.md. - Push (по желанию): в
_dop для уведомлений/выполнитеPUSH_INSTALLATION_GUIDE.md, сгенерируйте VAPID (generate-vapid-keys.php), сохраните ключи в опциях WP илиwp-config.php. Проверка:check-push-installation.php. Нужен HTTPS.
Локально подойдёт любой стек с PHP 8+ (OpenServer, LocalWP, wp-env). Включите WP_DEBUG и WP_DEBUG_LOG при разработке.
Продакшен: HTTPS, opcache PHP, persistent object cache (Redis/Memcached) для REST, регулярный бэкап wp_chat_dialogs (JSON истории вручную не собрать), после обновления sw.js перерегистрировать service worker.
| Настройка | Где | Зачем |
| — | — | — |
| Размер пачки сообщений | js/chat-theme.js (MESSAGES_PER_PAGE) | Ленивая загрузка |
| Период опроса | js/chat-theme.js (pollIntervalMs) | Обновление ленты |
| Права на чат | functions.php (chat_theme_check_dialog_access) | Кто видит и пишет |
| Состав вкладок | template-parts/sliding-menu.php | Меню |
| Команды плагинов | фильтр chat_theme_handle_backend_command | Расширения |
Использование
Главная (чат не открыт)
- Откройте корень сайта.
- Сверху всегда поле «Введите команду…».
- Ниже — дашборд:
— плитки быстрого доступа (сайты/сервисы; админ правит шестерёнкой, опция quick_access_sites);
— до 12 публичных групп;
— до 10 записей категории со слагом PRO;
— выбранные страницы (список ID в index.php, $homepage_page_ids);
— блоки новостей из чатов (карточки news-card / сетка news-grid / две колонки news-card-2).
- Чтобы карточка проекта попала в ряд записей на главной, запись WordPress должна быть в категории PRO.
- Блоки новостей: под плитками страниц. Гость видит только общую ленту карточек, без вкладок. У
edit_posts(Автор и выше) сверху вкладки Новости и Моя лента; при входе открывается Моя лента. Общие Новости правят только админы (manage_options), набор один на всех. Моя лента — у каждого автора/админа своя (user metachat_theme_homepage_my_feed), правит только владелец. Кнопка «+» на вкладке, которую можно править. Слева от кнопок блока — имя чата или название дайджеста.
После перехода в диалог центр становится лентой сообщений; дашборд скрывается.
Плитки записей, страниц и чатов
На главной и в шаблонах: chat_theme_display_content_tiles( array( 'source_type' => 'post'|'page'|'chat', ... ) ). На обычной странице WP — шорткод content_tiles в квадратных скобках (через the_content() в page.php; в Gutenberg — блок «Шорткод» или «Произвольный HTML»). Примеры ниже — текст, не живой виджет.
[content_tiles source_type="post" category="news" count="6" excerpt_length="200"]
[content_tiles source_type="post" category="news" count="9" horizontal_scroll="true" tiles_per_row="3"]
[content_tiles source_type="page" post_ids="3798,3796,3794" tiles_per_row="3" count="0"]
[content_tiles source_type="chat" chat_slugs="slug-чата" count="0" title_words="8" lazy_batch="8" section_title="Из чата"]
Атрибуты: source_type, post_ids, category / categories, tag / tags, chat_slugs, count (0 — все, сначала lazy_batch, подгрузка при прокрутке), tiles_per_row (3 или 6), excerpt_length, title_words (чаты), section_title, section_class, wrapper, horizontal_scroll. Свой PHP-шаблон страницы: комментарий Template Name, вызов функции, в админке назначить шаблон. Параметры PHP и стили — doc/ARCHITECTURE.md § 11.
Левое меню
- Нажмите иконку меню (гамбургер) или откройте панель на десктопе.
- Личные — подгруппы «Пользователи» (в т.ч. Избранное) и «Диалоги». У WP-админа ниже — свёрнутые черновики. Под заголовком каждой плашки — поле «Поиск…»: список сужается по мере ввода, без кнопки; любое слово названия (и логин у людей) подходит, несколько слов в запросе — все должны встретиться. Меню «⋯» → «Закрепить»: чат поднимается вверх своего списка (только если вы в нём состоите / подписаны).
- Группы — мои группы и «Доступные группы» (блок скрыт, если список пуст). То же поле поиска под заголовком плашки. У своих групп в «⋯» есть «Закрепить»; у доступных (без подписки) — только «Подписаться».
- Инфо — страницы и записи WordPress; открываются в попапе (прямой URL — отдельная страница).
- Клик по человеку всегда открывает канонический личный чат 1+1 (
is_dm), а не общий диалог.
У гостя: «Текущий диалог» только при своём черновике (по IP), затем группы, люди, инфо.
Навигация: вкладка → список чатов → выбор диалога → лента сообщений.
Личный чат, диалог, группа
- Клик по пользователю — личная переписка; в шапке имя и аватар собеседника.
- Команда
dialog to-add логин(или ПКМ → добавить) снимаетis_dmнавсегда: чат становится диалогом. - В группе создатель добавляет/удаляет участников, меняет роли «автор» / «подписчик» (ПКМ по участнику).
- Шестерёнка «Действия»: удалить чат, если есть право
chat_theme_can_delete_dialog. - «Избранное» — чат себе; участников добавить нельзя; первым в списке пересылки.
Командная строка
- Введите текст в поле «Введите команду…» и нажмите отправку (или кнопку
/для списка команд). - Скрепка или drag-and-drop — вложения. В AI-диалоге (
ai-mode=1) обычный текст уходит в модель какbot …. - После установки плагина команда должна появиться в UI (
/news,/aiи т.д.). Если ответ не сохраняется — смотритеWP_DEBUG_LOG.
| Команда | Назначение | Примечания |
| — | — | — |
| dialog add {title} | Переименовать текущий диалог | Владелец / админ |
| dialog desc {html} | Описание диалога | Нужно edit_posts |
| dialog logo {url} | Логотип | Владелец |
| dialog list | Список диалогов | Только чтение |
| dialog draft | Черновики | Нужна авторизация |
| dialog public-list / private-list | Публичные / закрытые чаты | private-list без личных 1+1 (is_dm) |
| dialog to {login\|id} | Открыть/создать личный чат 1+1 | Ищет is_dm=1 с парой в opponent |
| dialog to-add {login\|id} | Добавить автора | Если был DM — is_dm сбрасывается навсегда |
| dialog to-del {login\|id} | Удалить автора | Нельзя удалить создателя; в DM запрещено |
| wp {поиск} | Поиск по сайту | Плагин Husky AI Search; также Хаски {запрос} |
| news {тема} | Новости | Плагин NewsAPI |
| ai {запрос} | Нейросеть | Плагин My AI Chat, вложения |
Как писать свой плагин-команду — doc/ARCHITECTURE.md § 10.
Сообщения
- Над пузырём (у кого есть
edit_posts): правка, удаление, пересылка, шаринг, закреп. - Картинки без текста — сетка на всю ширину (как VK); с текстом — галерея сверху, пузырь снизу.
- Поиск, теги, дата и закреп — круглые кнопки справа в колонке чата (работают по локальному кешу сообщений, без полной перезагрузки истории).
- Пересылка: Избранное → личные чаты (по имени собеседника) → диалоги → группы; только куда можно писать.
Админка: список чатов
- В боковом меню WP откройте Чаты (
wp-admin/admin.php?page=chat-theme-chats). Нужно правоmanage_options. - Таблица в стиле записей: название (клик открывает сообщения чата), дата создания, автор, число сообщений с дельтой (
1 842 (+15)— клик открывает лог версий), среднее в день, участники, статус, кто может писать, переключатель слежения, меню «⋮». - Заголовки столбцов сортируют список; внизу — пагинация. Черновики в таблице не показываются.
- Меню «⋮» меняет публичность и кто может писать (все / только участники). Личную переписку с оппонентами нельзя сделать публичной.
- На консоли блок «Статистика чата» остаётся для пользователей и системы; таблица чатов оттуда убрана (ссылка «Все чаты» в шапке блока).
Правая панель и push
- Колокольчик открывает ленту: сверху напоминания (HuskyTodo), ниже события опросов, автопостинга и непрочитанных.
- Клик по напоминанию открывает связанный чат; «+ Добавить напоминание» — модалка задачи.
- Push в браузере — после разрешения уведомлений и настройки VAPID. Уведомление приходит на сообщения пользователя, файла и превью ссылки; клик открывает диалог. Проверка SW: DevTools → Application → Service Workers.
REST для внешних систем
- Создайте Application Password в профиле WP.
- Базовый URL:
/wp-json/my-chat/v1/. - Чтение чата:
GET /chats/{slug}. В сообщениях естьpreview_urlи при видео —video_type,video_url,video_embed_src,video_page_url(для агрегаторов вроде vc_clone). - Публикация —
inc/api/HOW_TO_PUBLISH.md.
Структура проекта
chat-theme5_5_5_5_1/
├── functions.php # ядро: AJAX, права, команды, миграции БД, push
├── index.php # главная: командная строка + дашборд плиток
├── single-post-chat.php # шаблон открытого диалога
├── page.php / header.php / footer.php
├── style.css # стили темы (Version 2.19)
├── sw.js # Service Worker (Web Push)
├── js/
│ ├── chat-theme.js # состояние чата, кеш, команды, лента уведомлений
│ ├── homepage-news-blocks.js
│ └── script.js
├── inc/
│ ├── api/ # REST + инструкции
│ ├── pinned-chats.php
│ ├── content-tiles-widget.php
│ ├── homepage-news-blocks.php
│ ├── admin-chats.php
│ └── ajax-handlers.php
├── template-parts/
├── vendor/web-push/
├── _dop для уведомлений/ # VAPID, проверка push
├── doc/ # ARCHITECTURE, CHANGELOG, AI_RULES
├── CHANGELOG.md # ссылка на doc/CHANGELOG.md
└── README.md
Слои, таблицы и потоки данных — в doc/ARCHITECTURE.md.
Технологии
- WordPress / PHP 8+ — тема, шаблоны, AJAX
admin-ajax.php, REST. - jQuery / ES5 — клиентское состояние в
js/chat-theme.js(без сборщика). - JSON в LONGTEXT — история сообщений в
wp_chat_dialogs.dialog_context. - Minishlink Web Push — серверная отправка браузерных уведомлений.
- Service Worker (`sw.js`) — показ push и переход в диалог.
- Font Awesome — иконки интерфейса.
- Плагины через фильтр
chat_theme_handle_backend_command— AI, новости, поиск, соцфид.
Разрешения, интеграции, ключи
Права WordPress
| Кто | Что может |
| — | — |
| Гость | Читать открытые группы, безопасные команды без записи |
| Авторизованный | Личные чаты, сообщения (если чат разрешает), команды |
| Создатель чата (user_id) | Удаление своего чата, роли, метаданные, участники |
| Автор в чате (opponent) | Писать; без прав создателя не удаляет чужую группу |
| Подписчик | Чтение / ограниченная запись; закреп чата в меню |
| edit_posts | Инструменты под пузырём (edit/delete/forward/pin), своя лента новостей на главной |
| manage_options | Любые группы/диалоги, роли везде, плитки главной, общая лента новостей на главной, страница Чаты в админке |
Публичность чата — поля is_public и user_edit. Кастомной роли WP при необходимости выдайте edit_posts.
Плагины рядом с темой
| Плагин | Каталог | Зачем |
| — | — | — |
| AI Mode | @ai-mode | Диалоги с нейросетью, модели в админке плагина |
| Chat Enhancer | +chat-enhancer-… | Сохранение ответов ботов |
| NewsAPI | + wp-tag-plugin | news {тема} |
| Husky AI Search | +husky-ai-search | wp / Хаски |
| My AI Chat | +my-ai-chat-3 | ai {запрос} |
| Социальный фид | +husky-social-feed-plugin-... | Импорт из соцсетей |
| vc_clone | другая тема WP | Читает REST чатов |
Ключи и токены (не в репозитории темы)
- REST: Application Password в профиле пользователя WP.
- Web Push: пара VAPID (генератор в
_dop для уведомлений/generate-vapid-keys.php). - AI / новости / соцсети: опции соответствующих плагинов, не файлы темы.
Точка расширения для плагинов: фильтр chat_theme_handle_backend_command. Плагин возвращает { handled, result }; тема сохраняет через безопасные хелперы (read → modify → write). Иначе ленивая загрузка затрёт историю. Контракт, примеры PHP/JS и AI Mode — doc/ARCHITECTURE.md § 10.
История изменений
Все значимые изменения в теме документируются в этом файле.
[Unreleased]
Added
- Закрепление чатов в левом меню (pin): пункт «Закрепить» / «Открепить» в меню «⋯» у пользователей, диалогов и своих групп. Закреплённые поднимаются вверх списка. Только для авторизованных; чаты без подписки («Доступные группы») закрепить нельзя. Список хранится в user meta
chat_theme_pinned_chats(inc/pinned-chats.php, AJAXchat_theme_toggle_pin_chat). - Главная: вкладки Новости (общая лента, правят только админы) и Моя лента (своя у каждого с
edit_posts, user metachat_theme_homepage_my_feed). Гость вкладок не видит. - Главная: в режиме «один чат» тот же список групп, что в дайджесте — название рядом со слагом (выбор одной позиции).
Changed
- Главная: если видны вкладки лент, по умолчанию открыта Моя лента (и у авторов, и у админов).
- У блока новостей слева от кнопок управления — название чата (режим «один чат») или своё имя дайджеста (поле в настройках, по умолчанию «Дайджест»).
- Админка Чаты (
wp-admin/admin.php?page=chat-theme-chats): одна таблица в стиле записей WP — название (ссылка на сообщения), дата создания, автор, сообщения в формате1 842 (+15)с логом версий, среднее/день, участники, статус, кто может писать, слежение, меню «⋮» (публичный/приватный, все/участники). Сортировка столбцов и пагинация. Черновики в списке не показываются. - С консоли WordPress убрана разворачивающаяся таблица «Чаты»; в шапке блока «Статистика чата» осталась ссылка «Все чаты». Слежение и лог версий работают на странице «Чаты».
- Гайды из папки
docs/перенесены вREADME.md,doc/ARCHITECTURE.mdиdoc/AI_RULES.mdбез потери содержания; папкаdocs/удалена. REST-инструкции остаются вinc/api/. - На сенсорных экранах меню «⋯» у карточки чата всегда видно (без наведения).
- Режим «один чат»: список групп с названием и слагом, как в дайджесте (выбор одной позиции; слаг вручную — если чата нет в списке).
- Хардкод вызовов
chat_theme_display_chat_postsвindex.phpзаменён наchat_theme_render_homepage_news_blocks(). Текущие 17 блоков остаются значением по умолчанию, пока админ не сохранит свой набор.
Fixed
- Фатальная ошибка PHP:
chat_theme_user_is_dialog_member()больше не объявляется повторно вinc/pinned-chats.php(канон остаётся вfunctions.php). - REST
add_message: повтор того же текста от того же пользователя в течение 90 с не создаёт второе сообщение (клиент иногда шлёт POST дважды).
Added
- Левое меню: поле «Поиск…» под заголовком плашек «Пользователи», «Диалоги», «Группы» (и «Доступные группы» / «Люди» у гостя). Фильтр по мере ввода, без кнопки; совпадение с любым словом названия, несколько слов в запросе — все должны встретиться.
Changed
- Шаблон документации: канон четвёрки файлов —
README.md,doc/ARCHITECTURE.md,doc/CHANGELOG.md,doc/AI_RULES.md. Подробные гайды остаются вdocs/. - README / архитектура: ряд записей на главной берётся из категории WordPress со слагом PRO (
$homepage_category_slugвindex.php); страницы — из$homepage_page_ids. - README приведён к полной структуре продукта: возможности, требования, установка, сценарии (главная, меню, чаты, команды, сообщения, панель, REST), дерево, стек, права и ключи. Убрана таблица версий из README (история только здесь).
docs/ARCHITECTURE.md: удалён склеенный дубликат старой редакции; исправлена двойная нумерация §7; добавлены дерево файлов, таблицы БД 2.2, маршрут/dialog/{slug}, правилоopponentпри save.- Добавлен
docs/AI_RULES.md— куда класть фичи, схема сообщений, текущий этап темы. - README / архитектура / UI-гайд: тема описана как трёхколоночный хаб (меню, командная строка + плитки, лента событий), а не только как «чат с вкладками».
- UI-гайд: мобильные правила (закрытие меню, фокус поля ввода,
--app-height, слайдеры).
Added
- Правая панель уведомлений v2: единый поток событий (опросы HSF / размещения SCP / непрочитанные) с ленивой подгрузкой чанками по 15 (
chat_theme_notification_feed); poll/placement за 24 часа. - Компактные карточки напоминаний в панели: иконка диалога, клик открывает чат, edit/delete при наведении; карточка «+ Добавить напоминание» (HuskyTodo 1.9).
- Левое меню: подсветка текущего диалога; списки предзагружаются один раз (без wipe при открытии чата); исправлен ранний openMenu до инициализации user_id.
- Пункт «Удалить» в меню «Действия» (шестерёнка) для диалогов/групп по правам
chat_theme_can_delete_dialog. - ПКМ по участнику: «В авторы» / «В подписчики» (AJAX
my_set_member_role). - Аккордеон левого меню в стиле блока авторизации: «Личные» → Пользователи + Диалоги; «Группы» → Группы + Доступные группы.
- «Избранное»: чат сообщений себе (
is_favorites), пункт в «Пользователи», первым в списке пересылки. - Поле
is_dmвwp_chat_dialogs(DB 2.1): канонический личный чат 1+1; клик по человеку всегда открывает/создаёт именно его. - Команды
dialog to-add/dialog to-del(раньше были только в подсказках). - GUI: ПКМ на участнике — «Удалить из чата»; ПКМ на боте — «Добавить в чат» (модальный список пользователей).
- REST API: обогащение сообщений полями
preview_url,video_type,video_url,video_embed_src,video_page_urlчерезenrich_message_for_api()— для внешних потребителей (тема vc_clone и др.). - Функция
chat_theme_get_message_video_info()— извлекает данные видео из вложений и HTML (VK embed,<video>, Telegram). - Fallback для VK: парсинг
vk.com/video…иvk.com/wall…(widget_post) при превьюtype=video_thumb, если embed вырезанwp_kses_post. chat_theme_message_persist_video_fields()— сохраняетvideo_*в JSON сообщения до kses.- Фильтр
chat_theme_kses_allow_hsf_video_embed— не вырезаетdata-embed-src/data-vk-urlу VK-embed.
Fixed
- Мобильные: плавная анимация VK/link-слайдеров восстановлена (высота после transform, translate3d, native smooth scroll).
- Мобильные: после авторизации не открывается панель профиля; редирект на главную;
sessionStorageпанели сбрасывается. - Мобильные: программный фокус на
#chat-inputотключён — клавиатура открывается только по тапу в поле. - VK/link-слайдеры: высота контейнера подстраивается под активный слайд (пузырь сжимается/растягивается), без пустоты от самого высокого кадра.
- Пересылка: сообщение ищется надёжнее (String msg_id, локальный реестр после поиска/закрепов, fallback DOM/AJAX).
- Мобильное меню: при переходе в диалог панель всегда закрывается; не восстанавливается поверх открытого
/dialog/….
Changed
- Панель
#notifications-sidebar: убраны заголовок «Уведомления» и аккордеоны (напоминания / HSF / SCP / непрочитанные); вместо них — блок напоминаний + лента карточек событий. - Попап WP-страниц/записей: один заголовок в шапке, крестик справа; без «Назад к списку»; пункты «Инфо» открываются в попапе (прямой URL — отдельная страница).
- VK-галереи: та же позиция/отступ, что у обычных пузырей; вогнутый вырез вокруг аватарки на самой галерее.
- Картинки внутри пузыря и в превью ссылок (плагин
+my-chat-link-handler-5: слайдер / одиночные / inline) — всегда со скруглением. - Сообщения с картинками-вложениями + текст: сначала VK-галерея без пузыря, снизу текстовый пузырь той же ширины (
message-with-gallery). - Картинки во всех видах постов — на всю ширину блока/пузыря и со скруглением (одиночные, слайдер, альбом, inline).
- Посты только с картинками: без пузыря, сетка на всю ширину колонки (как VK); при нечётном числе первая картинка на ширину двух.
- Черновики: скрыты у WP-авторов; у админов — свёрнутая подгруппа в «Личные» после диалогов.
- «Доступные группы» не показываются, если список пуст.
- У гостя «Текущий диалог» только при своём черновике (по IP) и первым в меню.
- Вкладка «Люди» для авторизованных убрана и объединена с «Личные» (подгруппы Пользователи / Диалоги).
- Список пересылки: Избранное → личные чаты по имени оппонента → диалоги → группы (внутри блока по алфавиту); только где пользователь создатель или автор и может писать.
- Права: WP-админ удаляет любые группы и меняет роли; создатель группы/диалога имеет полные права в своём чате.
- Инструменты под пузырём сообщения (edit/delete/forward/share/pin + save/cache) доступны всем с правом WP
edit_posts(Автор, Редактор, Админ), а не только создателю чата. - Подгруппа «Диалоги» не показывает чаты с
is_dm=1(они через «Пользователи»). - Ярлык «Личный чат» только при
is_dm=1; иначе приватный чат — «Диалог». - В личном чате в шапке/правой колонке показываются имя и аватар собеседника; служебное
dialog_titleредактируется отдельно («Имя диалога»). - У ботов (Хаски, Рыжий кот) аватары с ярко-синей обводкой — те же параметры, что у онлайн-статуса (зелёная).
Fixed
- Компактные боковые отступы аккордеона «Личные»/«Группы» — больше места под названия диалогов.
- Пункт «Удалить» в шестерёнке: прямоугольная заливка вместо «растянутого круга» (конфликт с
border-radius: 50%у.delete-dialog-button). - Создатель диалога (в т.ч. WP Автор) снова может менять превью/аватар: на фронте сравнивался числовой
user_idсо строкой изwp_localize_script. - Обновление списка групп после подписки учитывает аккордеон
.menu-accordion-host. dialog to-add/dialog to-delне обрабатывались бэкендом («Неизвестная команда»).chat_theme_get_message_video_info(): сохранённыйvideo_page_url(wall) больше не блокирует повторный разбор HTML наdata-video-embed-src/data-embed-src.- kses: разрешены
data-video-embed-srcиdata-video-page-urlна.social-feed-post. - Паритет доменов
vk.ruвchat_theme_parse_vk_video_from_text()(video/clip/wall). chat_theme_get_message_preview_url()игнорируетdefault-link-image.png(котёнок-заглушка link-handler).- В личной переписке сообщения от оппонента (не владельца) снова сохраняются:
add/edit/delete_message_safeи кэш изображений больше не передаютopponentвchat_theme_save_or_update_dialog, из‑за чего срабатывала проверка «смена участников» только для владельца/админа. saveCurrentDialogотправляетopponent_idsтолько при создании личной переписки, а не при каждом сохранении.
[1.10.0] — 2025-11-25
Added
- Добавлена поддержка плагина AI Mode (
@ai-mode) для работы с нейросетями - Добавлено поле
ai_modeв объектcurrentDialogна фронтенде для отслеживания AI режима - Реализована автоматическая обёртка пользовательских сообщений в команду
bot [текст]в AI-диалогах - Добавлена передача флага
ai_modeиз бэкенда на фронтенд при загрузке диалога
Changed
- Обновлена функция
chat_theme_get_dialog_by_slug()для выборки поляai-modeиз БД - Обновлена функция
handle_load_dialog_by_slug()для передачиai_modeв ответе AJAX - Улучшена логика обработки команд: предотвращено дублирование сообщений в AI-диалогах
- Обновлена функция
processCommand()для автоматической обработки AI команд
Fixed
- Исправлена проблема дублирования сообщений в AI-диалогах (
ai-mode=1) - Исправлена логика сохранения сообщений: фронтенд не сохраняет сообщения, если их сохраняет плагин
- Улучшена синхронизация между фронтендом и бэкендом при работе с AI
[1.9.0] — 2025-11-24
Added
- Добавлен столбец
ai-mode(по умолчанию0) в таблицуwp_chat_dialogsдля фиксации статуса режима ИИ с поддержкой контекста. - Создан файл
CHANGELOG.mdи добавлена ссылка в документацию.



