# Фикс: лампочка камеры горит при выключенном видео в звонке **Ветка:** `fix/camera-led-preview` · **Статус:** реализовано, СБОРКА OK, **ждёт тест-фазу** (не деплоено). ## Симптом Пользователь входит в конференцию с выключенной камерой (или выключает её). Своего видео в звонке нет — но индикатор камеры ноутбука ГОРИТ, будто камера используется. Приватностный баг. ## Первопричина (по исходникам, высокая уверенность) Два независимых слоя работы с камерой: 1. **Медиа-конвейер звонка** (`utils/media/pipeline/MediaDevicesSource.js`) — при выключении видео вызывает `setVideoAllowed(false)` → `track.stop()`. Камеру отпускает КОРРЕКТНО. 2. **Превью-подсистема** (`composables/useDevices.js`) — используется диалогом настроек И контрол-кнопками звонка. `initializeDevices()` БЕЗУСЛОВНО грабит камеру: `updateVideoStream()` → `getUserMedia({video:true})`. Отпускает только когда отписались ВСЕ. Виновник — контрол-кнопки: `LocalVideoControlButton.vue` и `LocalAudioControlButton.vue` на `mounted()` зовут `subscribeToDevices()` и держат подписку ВЕСЬ звонок (`beforeUnmount` = конец звонка). Первый же подписчик поднимает `initializeDevices()` → камера включается и горит всё время, хотя кнопкам нужен лишь СПИСОК устройств для меню выбора, а не живой поток. У кнопок нет `