# Заготовки подключения — iOS не начинать до команды пользователя ## Уже есть - `ConnectionInvitation`: проверяет домашний IPv4 HTTPS-адрес, код/срок и SHA-256 сертификата; создаёт строку `musicbridge://pair?data=`. - Клавиша `I` в агенте выводит эту строку для каждого подходящего адреса при открытом сопряжении (`B`) и запуске с `--lan`. Это **данные для QR, не QR-картинка**. - В JSON: `version:1`, `endpoint`, `certificateSha256`, `code` (строка из 8 цифр), `expiresAt` (ISO 8601). Payload содержит секрет сопряжения: не публиковать/не отправлять внешним генераторам QR. Его срок совпадает со сроком кода. - `DiscoveryDescriptor`: сервис `_musicbridge._tcp.local.`, имя `MusicBridge-<12 первых символов отпечатка>`, TXT `v=1`, `id=<полный SHA-256>`. - Авторизованный `GET /v1/info` возвращает `protocolVersion`, `agentId`, `serviceType`, `instanceName`; идентификатор равен отпечатку сертификата. ## Следующая реализация на Windows - [ ] Локальная генерация QR из payload; отображение в окне агента/трее. - [ ] Закрывать/обновлять показанный QR при истечении кода, сопряжении или смене IP. - [ ] Выбор адаптера при нескольких адресах; сейчас для каждого свой payload. - [ ] mDNS/DNS-SD publisher: PTR/SRV/TXT/A, порт HTTPS агента, без кодов и токенов. - [ ] Обработка конфликтов имён, смены адресов, сна/пробуждения и остановки сервиса. - [ ] Проверка объявления со второго устройства. Сейчас multicast не отправляется. - [ ] Tray, кнопки сопряжения/отзыва, автозапуск и упаковка Windows. Не заменять mDNS рассылкой секретов. Объявления сети не являются доказательством подлинности ПК: проверять сохранённый отпечаток TLS перед отправкой токена. ## Порядок подключения будущего нативного клиента 1. Считать QR внутри приложения, проверить схему/версию, размер payload, HTTPS-адрес, отсутствие userinfo/параметров, формат отпечатка/кода и срок. 2. Проверить TLS по отпечатку из QR **до** отправки POST `/v1/pair`. 3. Сохранить токен и отпечаток в Keychain; не сохранять код как постоянный секрет. 4. Получить `/v1/info`, `/v1/state`, открыть WSS `/v1/events`. 5. При переподключении найти адрес по DNS-SD, сопоставить ID, проверить TLS; при 401 запросить повторное сопряжение, не повторять команды автоматически. Схема `musicbridge://` пока не зарегистрирована на iPhone; Safari ничего делать с ней не должен. Swift, Xcode-проект, установка и интерфейс iPhone отложены.