Files
vidconf/CHANGELOG.md
Max Ronzhin 28b87a8c95
Some checks failed
CI / backend (push) Has been cancelled
CI / frontend (push) Has been cancelled
release: версия 0.0.5
2026-07-27 00:56:37 +03:00

11 KiB
Raw Permalink Blame History

Изменения

Формат основан на Keep a Changelog, проект придерживается семантического версионирования.

0.0.5 — 2026-07-27

Контактный адрес инстанса: настраиваемый адрес для ответов на письма (уходят от no-reply@) и кнопка проверки почтовой конфигурации из админки.

Добавлено

  • Настройка «Контактный адрес» в админке (вкладка «Настройки») — email подставляется в заголовок Reply-To писем подтверждения регистрации, приглашений на конференции и саммари; при выключенной настройке Reply-To не проставляется, поведение как раньше.
  • Кнопка «Отправить тестовое письмо» — синхронная проверка почтовой конфигурации без регистрации фиктивного пользователя. Получатель по умолчанию — email текущего администратора, можно указать другой. Результат виден сразу: успех либо текст ошибки транспорта (сервер недоступен/получатель отклонён), без логина и пароля SMTP в ответе.

0.0.4 — 2026-07-26

Календарь конференций: перестроен в раскладку «календарь во всю ширину плюс модальные окна» — карточки событий разгружены, подробности вынесены во всплывающее окно.

Изменения

  • Форма создания и редактирования конференции больше не занимает постоянную колонку справа, а открывается в модальном окне — по кнопке «Новая конференция», по карандашику на карточке события или из информационного окна. Добавлен общий хук useModalDismiss (закрытие по Escape и возврат фокуса на элемент, из которого окно открыли).
  • Блок календаря занимает всю ширину страницы.
  • Карточка события в сетке содержит только название (обрезается многоточием и больше не вылезает за границы ячейки) и — у организатора — кнопку редактирования. Время, номер и статус переехали в информационное окно.
  • Клик по карточке события всегда открывает информационное окно, в том числе для своих конференций: редактирование стало отдельным действием.
  • Информационное окно вхождения дополнено статус-бейджем и кнопкой «Редактировать» для организатора.

Исправления

  • Подпись периода в недельном и месячном виде больше не содержит «г.» (форматирование через Intl.DateTimeFormat вместо локали FullCalendar).

0.0.3 — 2026-07-26

Мобильная версия: адаптивная вёрстка для узких экранов на ключевых экранах сервиса, найденная и поправленная по итогам ручного прохода по мобильному интерфейсу.

Исправления

  • Вход/регистрация (AuthLayout): заголовок «Ваша инфраструктура» вылезал за край брендовой панели на узких экранах — кегль теперь адаптивно уменьшается (clamp()) вместо обрезки.
  • Комната конференции: топбар и тулбар не помещались на мобильной ширине (тулбар с 8 кнопками физически шире экрана, крайние кнопки были обрезаны без возможности до них докрутить). На мобильном тулбар сокращён до микрофона/камеры/устройств/чата/выхода (демонстрация экрана, полноэкранный режим и мини-окно скрыты — редко нужны с телефона), в топбаре скрыты название конференции и строка статуса, а чип «№ … / Пригласить» оставлен — с телефона он нужнее.
  • Админка: заголовок и 4 вкладки раздела не помещались в ширину (вкладки переносятся в 2 ряда, поясняющий текст под заголовком скрыт на мобильном); таблицы «Конференции» и «Пользователи» обрезались вбок — на мобильном в них остаются только ключевые колонки, название конференции стало кнопкой, открывающей то же окно редактирования, что и раньше (туда же добавлена кнопка удаления — на мобильном столбец действий скрыт).
  • Подключение к конференции (/join): кнопка «Ввести другую ссылку или номер» на экране завершённой конференции вылезала за карточку на узких экранах (единственная кнопка на этом флоу без формы-обёртки, задающей ей ширину, а .btn держит white-space: nowrap).

0.0.2 — 2026-07-26

Релиз воспроизводимого боевого развёртывания: конфигурация деплоя перенесена в репозиторий как источник истины, устранён инцидент безопасности, добавлена пошаговая инструкция для девопсов.

Безопасность

  • postgres и redis сняты с публикации на 0.0.0.0 и привязаны к 127.0.0.1 (docker писал DNAT в обход ufw, порты были открыты в интернет).
  • Порты backend, livekit-signaling, prometheus, grafana, llm также переведены на loopback — наружу остаются только 80/443/7881 (+ UDP 54000-54100).
  • Для redis включена обязательная аутентификация (--requirepass); пароль проброшен во всех потребителей (backend, worker, exporter, livekit, egress).

Развёртывание и инфраструктура

  • nginx/coturn/livekit: TLS на 443, http→https редирект, ACME-webroot; конфиги вынесены в *.template и рендерятся через deploy/render-templates.sh (envsubst). Секреты — только из .env, обязательны (${VAR:?}), без небезопасных дефолтов.
  • --env-file .env добавлен во все вызовы docker compose (без него compose не подхватывал корневой .env и брал dev-дефолты — корень бага «конференции не работают у других» и WARN: LIVEKIT_API_KEY not set).
  • Мониторинг развязан от опционального LLM: job=llm/алерт LlmDown закомментированы для профилей без llm/llm-gpu.
  • install.sh: fail-fast валидация — установка останавливается с понятной ошибкой, если на боевом домене остались dev-плейсхолдеры (example.com, ws://localhost, devkey и т.п.), вместо тихого подъёма нерабочего прода.
  • install.sh: флаг --monitoring (Grafana/Prometheus раньше не поднимались ни в одном пресете).
  • .env.example покрывает все параметры деплоя; дефолтные профили — media,monitoring.

Исправления

  • nginx: /openapi.json больше не перехватывается SPA-фолбэком, а отдаётся схемой backend.
  • Предупреждение в .env.example: LIVEKIT_PUBLIC_URL в HTTPS-проде обязан быть wss://.

Документация

  • Добавлено docs/deploy/DEPLOYMENT.md — полное руководство от голой Ubuntu 24 до рабочего https://<домен>: SSL, .env, профили, траблшутинг, доступ к мониторингу через ssh-туннель, описание панелей, runbook включения транскрибации/суммаризации. Ссылки добавлены в README.md.
  • docs/deploy/install.md: задокументирован флаг --monitoring.

Примечания по эксплуатации

  • На боевом сервере исправлен certbot deploy-hook (nginx -s reloadrestart): без этого после автопродления сертификата nginx продолжал бы отдавать старый.
  • TURN-раздача клиентам (rtc.turn_servers + TURN/TLS на 443) остаётся опциональной — кросс-сетевое медиа проверено вживую и работает без неё; нужна только для экстремального NAT (CGNAT/жёсткий корпоративный firewall).

0.0.1

Первоначальная версия VidConf.