diff --git a/.env.example b/.env.example index 629c591..ca8da2d 100644 --- a/.env.example +++ b/.env.example @@ -122,7 +122,7 @@ SMTP_TIMEOUT_S=30 # --- Версия инстанса (релиз v0.0.1) --- # install.sh копирует значение из корневого файла VERSION при каждой # установке/обновлении — руками менять не нужно. -VIDCONF_VERSION=0.0.26 +VIDCONF_VERSION=0.0.27 # --- Профили compose. Дефолт ниже (`media,monitoring`) — только для ручного # `docker compose up` БЕЗ install.sh: медиа (LiveKit+coturn) + мониторинг, diff --git a/CHANGELOG.md b/CHANGELOG.md index e8ce4e7..5d3d3c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,36 @@ Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/), проект придерживается [семантического версионирования](https://semver.org/lang/ru/). +## [0.0.27] — 2026-08-04 + +Разрыв связи больше не выбрасывает участника из конференции. + +### Исправлено +- Телефон с погасшим экраном выпадал из конференции, а при возвращении + мог оказаться в лобби вместо комнаты. Причина установлена по логам + прода: Chrome срезает ресурсы фоновой вкладке, телефон перестаёт + отвечать по ICE, и LiveKit закрывает участника через 5 с после потери + соединения (замерено: 37 с после блокировки экрана, 23 с после + сворачивания браузера — то есть достаточно просто убрать вкладку в + фон, гасить экран не обязательно). Восстановить сессию после этого + нельзя — участника на сервере уже нет; нужен полный повторный вход, + и `livekit-client` пытается сделать его сам, но его бюджет повторов + (10 попыток за ~44 с) в фоновой вкладке успевает сгореть. Тогда + приходило событие `Disconnected`, и страница комнаты уводила + пользователя в лобби. + + Теперь непреднамеренный разрыв не уводит со страницы: сбрасывается + состояние входа, и работает уже имевшийся путь авто-перезахода — + резолв конференции, свежий токен, вход заново. Намеренный выход + отличается по нажатию кнопки «Выйти», а не по коду причины: причину + `CLIENT_INITIATED` присылает и кнопка, и сам `livekit-client`, который + при заморозке вкладки (событие `freeze`) вызывает `disconnect()` + самостоятельно. Разрывы, после которых возвращаться нельзя (участника + выгнал организатор, конференция закрыта, вход той же личностью с + другого устройства), уводят в лобби как раньше. От цикла «вошёл — + сразу выбросило» защищает лимит в 5 перезаходов подряд; соединение, + прожившее дольше 30 с, счётчик обнуляет. + ## [0.0.26] — 2026-08-04 Мобильная комната: свайп шторки настроек и полноэкранный режим. diff --git a/VERSION b/VERSION index 41ba552..669a9ca 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.26 \ No newline at end of file +0.0.27 \ No newline at end of file diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index 5851ade..6dd1b33 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -89,7 +89,7 @@ services: MEDIA_ROOT: ${MEDIA_ROOT:-/app/media} # Версия инстанса (релиз v0.0.1) — install.sh копирует значение # из файла VERSION (корень репозитория) в .env; отдаётся в GET /api/health. - VIDCONF_VERSION: ${VIDCONF_VERSION:-0.0.26} + VIDCONF_VERSION: ${VIDCONF_VERSION:-0.0.27} # Число процессов uvicorn (см. backend/Dockerfile). Дефолт 2 рассчитан # на 4-ядерный сервер, где ядра делятся с LiveKit. Поднимая значение, # проверьте бюджет соединений с БД: каждый воркер держит свой пул