На мобильном в таблице остаются только колонки «Конференция» и
«Владелец» — название конференции с номером стало кнопкой, открывающей
то же окно редактирования, что и карандаш в скрытой на мобильном колонке
действий. Туда же добавлена кнопка «Удалить» (с подтверждением) — раньше
удаление было доступно только из строки таблицы, которая на мобильном
теперь скрыта.
На мобильном в таблице остаётся только колонка «Пользователь» — роль,
команда, регистрация, статус и блокировка уже редактируются в карточке
профиля, которая открывается кликом по имени (AdminUserProfileDialog).
.page-head h1 (общий заголовок оболочки) — тот же баг с фиксированным
кеглем 34px, что и в auth.css, чинится тем же способом (clamp), лечит заодно
любую другую длинную шапку на страницах оболочки. В админке дополнительно:
поясняющий текст под заголовком скрыт на мобильном (не несёт функции), 4
вкладки переносятся в 2 ряда вместо горизонтального оверфлоу всей страницы.
room-toolbar с 8 кнопками (520px) не помещался в мобильную ширину (375px) —
крайние кнопки обрезались без возможности до них доскроллить. На мобильном
убираем демонстрацию экрана/полноэкранный режим/мини-окно (редко нужны с
телефона) и уплотняем оставшиеся 5 кнопок. В топбаре убираем инвайт-чип
(номер + копирование ссылки) — сверху остаются только название конференции
и статус.
font: var(--text-display-lg) даёт фиксированные 34px — слово не помещалось
в брендовую панель на узких экранах (375px), а overflow:hidden панели
обрезал его вместо переноса. font-size: clamp() уменьшает кегль на узких
вьюпортах вместо обрезки.
Переносит рабочие правки продакшен-сервера в репозиторий воспроизводимо:
- nginx: HTTPS-блок на 443 (TLS1.2/1.3, http->https redirect, ACME
webroot, X-Forwarded-Proto) добавлен в nginx.conf.template. Список
доменов и имя каталога сертификата — параметры (NGINX_SERVER_NAMES,
NGINX_CERT_NAME), не хардкод. Рендерится штатным entrypoint'ом образа
nginx (envsubst-on-templates).
- Самоподписанный dev-сертификат генерируется на старте контейнера
(docker-entrypoint-certs.sh), если реальный Let's Encrypt не смонтирован
— иначе `docker compose up` без профиля ломался бы локально без
реальных сертификатов.
- healthcheck nginx переключён на /healthz (без TLS-редиректа), иначе
http://127.0.0.1:80/ после добавления 443-редиректа всегда unhealthy.
- coturn/turnserver.conf и livekit/livekit.yaml переведены в *.template —
оба образа не читают env для статических полей (static-auth-secret,
use_external_ip/node_ip, webhook.api_key), поэтому реальные файлы
генерируются перед стартом стека скриптом deploy/render-templates.sh
(вызывается install.sh). Секреты/IP — только в .env, не в git.
- docker-compose.yml: LIVEKIT_API_KEY/SECRET везде (backend, livekit,
egress) через ${VAR:?} без небезопасных дефолтов; порт 443 + монтирование
/etc/letsencrypt (ro) и certbot-webroot у nginx; build-args
VITE_LIVEKIT_URL/NEXT_PUBLIC_LIVEKIT_URL для frontend (сейчас не
используются кодом, оставлены про запас).