137 lines
11 KiB
Markdown
137 lines
11 KiB
Markdown
# Изменения
|
||
|
||
Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/),
|
||
проект придерживается [семантического версионирования](https://semver.org/lang/ru/).
|
||
|
||
## [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 reload` → `restart`):
|
||
без этого после автопродления сертификата nginx продолжал бы отдавать старый.
|
||
- TURN-раздача клиентам (`rtc.turn_servers` + TURN/TLS на 443) остаётся
|
||
опциональной — кросс-сетевое медиа проверено вживую и работает без неё;
|
||
нужна только для экстремального NAT (CGNAT/жёсткий корпоративный firewall).
|
||
|
||
## [0.0.1]
|
||
|
||
Первоначальная версия VidConf.
|
||
|
||
[0.0.5]: https://github.com/MaxRonzhin/vidconf_rel/releases/tag/v0.0.5
|
||
[0.0.4]: https://github.com/MaxRonzhin/vidconf_rel/releases/tag/v0.0.4
|
||
[0.0.3]: https://github.com/MaxRonzhin/vidconf_rel/releases/tag/v0.0.3
|
||
[0.0.2]: https://github.com/MaxRonzhin/vidconf_rel/releases/tag/v0.0.2
|
||
[0.0.1]: https://github.com/MaxRonzhin/vidconf_rel/releases/tag/v0.0.1
|