Устаревший профиль и миграция
Со [legacy] enabled = true (по умолчанию в 1.x, выключен с 2.0) сервер дополнительно обслуживает старые
приложения: socket.io в пространстве имён / со старыми событиями (command → command_response, getState,
setState, sendOsc, brightness, volume, rotation, dome-state, integration-event, clear-integration),
необязательный порт 3000, старые REST-пути (/api/dome/*, /api/system/*, /api/vendor/*, POST /api/command,
набор Manager v4), WS /ws Manager и старые адреса OSC. Каждое старое сообщение переводится ровно в одну новую
операцию с теми же правами; значения 0..100 переводятся в 0..1; неизвестные типы получают ответ
legacy-unsupported: <тип>. Обращения учитываются в freedome_mediaserver_legacy_requests_total.
Миграция: перевести приложения на SDK (freedome_client для Dart, @freedome/client для TypeScript) и поиск через
mDNS _freedome._tcp + GET /api/v1/info. Полная таблица соответствия и фикстуры — в контракте (compat/legacy/).