🔖 release: 1.16.0

This commit is contained in:
Andrey committed 2026-10-01 18:21:52 +03:00
1 parent 91fab586fa
commit 0f88c73abe
3 files changed
+83 -1

No files matched your search

+44
View File
@@ -0,0 +1,44 @@
# История релизов Chatballs
Сжатая история выпусков: что изменилось, миграции, особые шаги обновления и отката. Релизы публикуются на GitHub (`dartdavros/chatballs`); штатное обновление — из интерфейса или `docker compose pull && docker compose up -d --wait` с `compose.yaml` релиза. Поведение, введённое релизами, перенесено в соответствующие спецификации и решения.
| Версия | Дата | Главное | Миграции / особые шаги |
|---|---|---|---|
| 1.3.0 | 2026-09-12 | Несколько организаций: переключатель, приглашения существующих учётных записей, приглашение владельца письмом, администратор установки (`set_instance_admin`). Платформенный API создания организаций заработал в поставке. nginx разрешает upstream на каждом запросе. `backend-app` без паролей platform и migration; три тома секретов. Настройки установки переехали на `/api/v1/instance/…`; сессия отдаёт `isInstanceAdmin`; новые эндпоинты приглашений. | `tenancy.0031–0033`, `identity.0036–0037`. `secrets` сам переносит пароли в новые тома. Оркестраторам: `CHATBALLS_DB_PLATFORM_ALIAS=1` воркеру и новые пути файлов паролей. Проверка: `chatballs doctor`. |
| 1.3.1 | 2026-09-12 | «Ошибка загрузки» после мастера: промах по адресу установки перечитывает настройки сразу. Пустое состояние «Базы знаний» по центру. | — |
| 1.4.0 | 2026-09-13 | SVG-логотип организации с проверкой и CSP `sandbox`. Воркер: растущая пауза после сбоя опроса (6 с — 15 мин), журнал без шума. Демо-подключения не опрашиваются. | — |
| 1.5.0 | 2026-09-13 | Обновление из интерфейса: баннер, кнопка «Обновить», сервис `updater`, том `chatballs-updates`. | `updates.0001`, `tenancy.0034`. Ставится вручную (в прошлом `compose.yaml` нет `updater`). |
| 1.6.0 | 2026-09-13 | «Добавить организацию» в переключателе; выбор организации после входа; ссылки `/join` снова работают (поиск через каталог входа). | `tenancy.0035`: вставка организации ролью app только в своём контексте, id резервируется заранее. |
| 1.6.1 | 2026-09-13 | Проверка обновлений раз в 15 минут (`CHATBALLS_UPDATE_CHECK_INTERVAL_SECONDS`). | — |
| 1.6.2 | 2026-09-13 | Обновление из интерфейса действительно устанавливается (контейнер установки поднимался с входной точкой updater); оборвавшаяся установка не блокирует кнопку. | Версии 1.5.0–1.6.1 обновляются вручную один раз; зависший контейнер снять `docker rm -f chatballs-updater-apply`. |
| 1.7.2 | 2026-09-14 | Логотип в сайдбаре без обводки; крупнее загрузчики; загрузчик портала сразу по центру; «Работает на Chatballs» в футере порталов. | — |
| 1.7.4 | — | Импорт YAML создаёт недостающие категории; предпросмотр не блокирует документы; исправлено меню меток. | — |
| 1.8.0 | — | Coturn поднимается со стеком (3478, TURN-over-TLS выключен); адреса relay от адреса установки; «Завершить» из любой живой фазы. «Удалить диалог». Фото контактов хранятся в установке. Голосовое MAX без тела. Счётчик «Чат» по видимости. Категории сворачиваются; 20/50/100 на странице; окно выбора знаний по категориям и порталам. Перетаскиваемая кнопка «Начало работы». | `conversations/0025`. Открыть на файрволе `3478/udp`, `3478/tcp`, `49160–49999/udp`. |
| 1.8.1 | — | Аудиозвонок: окно оператора закрывается, когда клиент кладёт трубку. | — |
| 1.9.0 | — | Отдельная интеграция для расшифровки голосовых на агенте; ошибки расшифровки словами. | `ai/0020`. |
| 1.9.1 | — | User-Agent `Chatballs/<версия>` для запросов к провайдерам; проверка подключения объясняет отказ словами. | — |
| 1.10.0 | — | Две пары «провайдер + модель» на агенте; модель принадлежит агенту. | `ai/0021`, `ai/0022`. |
| 1.11.0 | — | Подключение сообщества ВКонтакте (Bots Long Poll); ссылки на справку в форме подключения; секреты из URL не попадают в журнал. | `integrations/0009`. |
| 1.12.0 | — | Открытие диалога гасит все его уведомления у этого сотрудника; марка ВКонтакте; точка режима в углу аватара. | — |
| 1.13.0 | — | Установка на нестандартном порту и за прокси панели (`X-Forwarded-Proto`); размер контекста агента 1–200. | `ai/0023`, `identity/0040`. Установкам на нестандартном порту — вписать `адрес:порт` в настройки один раз. |
| 1.14.0 | — | Ход AI вынесен в `worker-events` (реплики, очередь по диалогу, срок ответа); сбои провайдера по организации. Новый облик виджета: «печатает», разворот, анимация «джин», подпись «Работает на Chatballs». | `conversations/0026`, новый сервис `worker-events`. |
| 1.14.1 | — | Первое открытие виджета с анимацией и правильной кнопкой. | — |
| 1.15.0 | — | Раздел «Шаблоны ответов» в настройках; переменные в шаблонах. | — |
| 1.15.3 | — | Виджет на телефоне — на весь экран. | — |
| 1.16.0 | 2026-10-01 | Страница настройки веб-подключения: данные сайта, форма перед чатом, оформление и свои иконки/CSS. Данные сайта в контакте, событиях и промпте агента. Обновление сохраняет Compose override. Постоянные каталоги dev-данных вне worktree. | `webchat/0006`, `conversations/0027–0028`, `tenancy/0038–0039`. Установкам за прокси с override — первый переход вручную с обоими Compose-файлами. |
## Откат на 1.2.x (до разделения томов секретов)
Прежний релиз ждёт плоские файлы паролей в `chatballs-secrets`; без них его генератор создаст новые пароли. Перед запуском старой версии:
```bash
docker run --rm -v <проект>_chatballs-secrets:/s -v <проект>_chatballs-secrets-platform:/p:ro -v <проект>_chatballs-secrets-schema:/m:ro alpine sh -c 'cp /p/postgres_platform_password /m/postgres_migration_password /m/postgres_password /s/ && chmod 444 /s/postgres_*'
```
Миграции обратимы (`migrate tenancy 0030`, `migrate identity 0035`), но откат `identity.0037` удаляет должность, телефон и группы у ожидающих приглашений.
## Заметки для разработчиков из релизов
- Тесты бэкенда в dev-стеке — из контейнера `backend-admin`; изменение генератора секретов требует `docker compose -f compose.yaml -f compose.dev.yaml build secrets`.
- Playwright-проект `internal-ui` работает с русской локалью браузера; моки сессии отдают язык установки.
- RLS проверяется тестами под реальной ролью (`tenancy/test_rls.py`).
+1 -1
View File
@@ -1 +1 @@
1.15.3
1.16.0
+38
View File
@@ -0,0 +1,38 @@
# Chatballs 1.16.0
## Настройка веб-виджета
- Настройки веб-подключения вынесены на отдельную страницу с разделами данных
сайта, формы перед чатом и оформления.
- Через `Chatballs.setFields` сайт передаёт поля контакта и дополнительные
данные. Они сохраняются в контакте, отображаются оператору, обновляются
в диалоге и учитываются в контексте ответа агента.
- Форма перед чатом собирает обязательные поля, проверяет формат и использует
данные, заранее переданные сайтом. Правки клиента имеют приоритет.
- Настраиваются цвета, положение и оформление кнопки, иконки и собственный CSS.
Загружаемые SVG проходят очистку. В справке описаны стабильные CSS-классы.
## Установка и обновления
- Обновление из интерфейса сохраняет дополнительные Compose-файлы установки
в исходном порядке: стандартный override и произвольные файлы через `-f`.
- Помощник обновления получает каталог установки и override-файлы только
на чтение. Пропавший или некорректный override останавливает обновление
до перезапуска сервисов. Файлы override не заменяются релизом.
- Для сервера с существующим nginx Chatballs можно разместить на локальном
HTTP-порту, сохранив стандартный HTTPS-домен снаружи. Пример — в
`docs/deployment-overrides.ru.md`.
- Dev-окружение задачи использует постоянный каталог PostgreSQL, Redis и media
вне worktree. Скрипт проверяет исходные секреты и не инициализирует
отсутствующую базу без явного `-InitializeDatabase`.
## Обновление
Схема базы меняется: `webchat/0006`, `conversations/0027–0028`,
`tenancy/0038–0039`. Штатный сервис `init` применяет миграции при запуске.
Перед обновлением сохраните резервную копию данных и томов секретов.
Если текущая версия ещё не поддерживает override, первый переход на 1.16.0
нужно выполнить вручную: скачать `compose.yaml` релиза и запустить его вместе
с используемыми override-файлами. После этого обновления из интерфейса
сохраняют эту конфигурацию.