# Изменения Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/), проект придерживается [семантического версионирования](https://semver.org/lang/ru/). ## [0.0.36] — 2026-08-10 Исправление к 0.0.35: замена фона не появлялась в Safari и Firefox. ### Исправлено - Проверка поддержки замены фона была строже, чем требует библиотека, и молча отрезала два браузера — кнопки выбора фона не было ни в превью, ни в комнате. У библиотеки два конвейера обработки кадров: современный (только Chrome и производные) и запасной через `canvas.captureStream()`, который работает и в Safari, и в Firefox; проверка требовала именно современный. Теперь условие буквально повторяет проверку самой библиотеки. ## [0.0.35] — 2026-08-10 Замена фона видео на картинку — отключаемый модуль (по умолчанию выключен). Три готовые сцены и свои картинки (до 10 штук, загружаются в профиле). **Только на компьютере:** сегментацию силуэта считает нейросеть на каждом кадре, и на телефоне это греет устройство, ест батарею и просаживает FPS в самой встрече — портить основное ради украшения нельзя. ### Добавлено - Кнопка «Фон» в тулбаре комнаты и выбор фона в превью на входе. Выбранный до входа фон применяется к публикуемому треку сразу в конференции. - Три дефолтные сцены (офис, пляж с пальмами, космическая станция) — собственные векторные рисунки (`design/backgrounds/`), а не фотографии из интернета: у нарисованной сцены нет чужой лицензии, а продукт расходится по инсталляциям, и проверять права на каждую копию некому. - Раздел «Свои фоны» в профиле: загрузка (не больше 10 штук) и удаление. Картинка уменьшается до 1280px по длинной стороне и переводится в WebP прямо в браузере перед отправкой — «чтобы не грузили БД». Файлы лежат на диске, в БД только пути, как у аватаров. - Тумблер «Замена фона видео» в админке. Лимит на число картинок и формат файла проверяются на сервере, а не только в интерфейсе. ### Особенности реализации - **Модель сегментации и wasm-рантайм отдаются со своего домена.** По умолчанию библиотека тянет их с внешних CDN (jsdelivr и storage.googleapis.com), и в закрытом контуре фича молча не работала бы. Модель (Apache 2.0) лежит в репозитории, рантайм копируется из node_modules при сборке; nginx отдаёт их сжатыми и с долгим кэшем. - Библиотека и модель грузятся **лениво**, только когда фон реально включают: вход в конференцию не стал медленнее, основной бандл не вырос. - «Десктоп» определяется по возможностям устройства (точный указатель + hover + число точек касания), а НЕ по ширине окна: узкое окно на десктопе — всё ещё десктоп, а широкий планшет — всё ещё планшет. На мобильном кнопки нет вовсе, а не задизейбленной. - Фон переживает выключение и включение камеры и смену устройства съёмки. Удаление применённой сейчас картинки сбрасывает выбор на «без фона». ## [0.0.34] — 2026-08-09 Правка к проверке устройств на входе (0.0.33): превью и кнопки камеры/микрофона теперь и на шаге «Подключиться к конференции», не только на карточке «Как вас зовут?». Закрывает реальный пробел — авторизованный пользователь, входящий через `/join`, карточку «Как вас зовут?» не проходит вовсе (сразу подключение) и раньше проверку устройств не видел никогда. ### Исправлено - Превью камеры и кнопки вкл/выкл — на шаге ввода ссылки/номера конференции, тем же компонентом, что и на карточке гостя. Поток живёт непрерывно на обоих шагах — переход между ними не гасит и не переоткрывает камеру. - Состояние кнопок «войти с камерой/микрофоном» теперь доезжает до комнаты и для гостя (`input → guest-info → комната`), и для авторизованного пользователя (`input → connecting → комната`). - Починена грабля с превью между шагами: `