diff --git a/.env.example b/.env.example index fc18713..7f55a77 100644 --- a/.env.example +++ b/.env.example @@ -112,7 +112,7 @@ SMTP_TIMEOUT_S=30 # --- Версия инстанса (релиз v0.0.1) --- # install.sh копирует значение из корневого файла VERSION при каждой # установке/обновлении — руками менять не нужно. -VIDCONF_VERSION=0.0.12 +VIDCONF_VERSION=0.0.13 # --- Профили compose. Дефолт ниже (`media,monitoring`) — только для ручного # `docker compose up` БЕЗ install.sh: медиа (LiveKit+coturn) + мониторинг, diff --git a/CHANGELOG.md b/CHANGELOG.md index 7af77f1..02f5886 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,35 @@ Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/), проект придерживается [семантического версионирования](https://semver.org/lang/ru/). +## [0.0.13] — 2026-07-28 + +Снижение нагрузки на сеть: клиент перестаёт получать полное качество всех +чужих камер независимо от того, какого размера плитка на экране. + +### Изменено +- Включены `adaptiveStream` и `dynacast` в опциях комнаты. Оба флага в LiveKit + выключены по умолчанию, из-за чего каждый участник был подписан на полное + качество всех чужих треков, а каждый паблишер слал все слои симулкаста, даже + когда их никто не смотрит. Теперь качество подписки выбирается по фактическому + размеру плитки, а неотрисованные треки уходят в паузу. На локальном стенде + (9 участников, паблишеры 720p) входящий поток одного клиента упал с + 11 110 до 778 кбит/с. + + Вместе с этим начинает экономить уже написанный код, который до сих пор не + давал выигрыша: «скрыть остальных» не рендерит карусель (исходящий трафик + LiveKit 0.76 → 0.03 Мбит/с), пагинация сетки участников рендерит только + текущую страницу, а пауза чужого видео в свёрнутой вкладке работает лишь + при включённом `adaptiveStream`. +- Контейнеры больше не пересобирают окружение Python при запуске: во все + вызовы `uv run` в прод-путях (CMD образа, `command`/`entrypoint`/`healthcheck` + сервисов, миграции и seed в `install.sh`) добавлен `--no-sync`. Раньше + окружение, собранное на этапе build с `--no-dev`, при каждом старте + синхронизировалось заново и подтягивало dev-группу: ~26 МБ загрузок, + замедленный старт и ruff/mypy/pytest в рантайме. Healthcheck'и делали то же + самое каждые 15 секунд всю жизнь контейнера. Размер `/app/.venv` после + запуска: 574 → 456 МБ. Локальная разработка не затронута — там dev-группа + нужна и ставится как раньше. + ## [0.0.12] — 2026-07-28 Разблокировка backend под нагрузкой: вход в конференцию перестаёт отваливаться, diff --git a/VERSION b/VERSION index 8cbf02c..43b2961 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.0.12 +0.0.13 diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index 67edf21..8c05ebc 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -82,7 +82,7 @@ services: MEDIA_ROOT: ${MEDIA_ROOT:-/app/media} # Версия инстанса (релиз v0.0.1) — install.sh копирует значение # из файла VERSION (корень репозитория) в .env; отдаётся в GET /api/health. - VIDCONF_VERSION: ${VIDCONF_VERSION:-0.0.12} + VIDCONF_VERSION: ${VIDCONF_VERSION:-0.0.13} # Число процессов uvicorn (см. backend/Dockerfile). Дефолт 2 рассчитан # на 4-ядерный сервер, где ядра делятся с LiveKit. Поднимая значение, # проверьте бюджет соединений с БД: каждый воркер держит свой пул