Implement QR pairing window and mDNS announcements; update documentation and tests

This commit is contained in:
2026-09-09 09:53:37 +03:00
parent d5e827112a
commit 2da3c9544b
7 changed files with 321 additions and 61 deletions
+24 -8
View File
@@ -69,10 +69,12 @@ Windows Core Audio → системная громкость устройств
- [x] Постоянные доверенные устройства, безопасное хранение хешей токенов, отзыв доступа.
- [x] Постоянный сертификат, защищённое хранилище Windows DPAPI, блокировка второго агента.
- [ ] Обновление истекающего сертификата с явным повторным сопряжением.
- [ ] QR-сопряжение с адресом и отпечатком сертификата.
- [x] Локальный QR с адресом, кодом и отпечатком; Windows-окно по клавише I.
- [x] Обновление QR при смене адреса/кода; очистка при закрытии сопряжения.
- [x] Заготовки: payload для QR, проверка адреса/срока, клавиша I.
- [x] Заготовки: DNS-SD descriptor и авторизованный /v1/info; без multicast.
- [ ] Bonjour/mDNS для поиска из нативного приложения.
- [x] Объявление Bonjour/mDNS: PTR/SRV/TXT/A, повторные объявления и goodbye.
- [ ] Полноценное разрешение конфликтов имён mDNS (сейчас имя по хешу сертификата).
- [ ] Проверить подключение со второго устройства в домашней сети.
- [ ] Проверить смену плеера/аудиоустройства, отсутствие плеера, сон/пробуждение,
отключение Wi-Fi и несколько клиентов.
@@ -106,6 +108,14 @@ Windows Core Audio → системная громкость устройств
2026-09-09:
- Последний этап — работающие QR и mDNS: **95 проверок прошло**, Release-сборка
без ошибок и предупреждений. Прогон: `dotnet run --project tests/MusicBridge.Agent.Tests.csproj -c Release --no-build -- --qr-window-smoke --mdns-smoke --live-read`.
Проверены декодирование QR независимой библиотекой, скрытое окно и очистка
просроченного QR, реальные объявления/goodbye mDNS отдельным слушателем на
этом же ПК. Снимок окна просмотрен. Реальная обложка: JPEG, 12068 байт.
Второе физическое устройство и сканирование телефоном пока не проверялись.
Далее — исторические результаты предыдущих этапов.
- Последний этап — заготовки подключения: Release-сборка без ошибок/предупреждений,
**82 автоматические проверки прошли** (`dotnet run --project tests/MusicBridge.Agent.Tests.csproj -c Release --no-build`).
Проверены payload, адреса, истёкший код, descriptor и авторизация /v1/info.
@@ -154,11 +164,13 @@ Windows Core Audio → системная громкость устройств
При повреждении/недоступности хранилища или истечении сертификата агент завершается
с ошибкой и не создаёт молча новую идентичность. Восстановление описано в PROTOCOL.md.
- По умолчанию только loopback. `--lan` включает IPv4-сеть; брандмауэр не меняется.
- QR, mDNS, iPhone UI и интеграции iOS ещё не реализованы.
- QR и mDNS реализованы на Windows. iPhone UI и интеграции iOS ещё не реализованы.
- Адреса обновляются примерно раз в секунду; mDNS пересоздаётся при смене списка,
объявляется на домашних IPv4-адаптерах с multicast. Автоизменения брандмауэра нет.
Следующий шаг: этап 3 — QR-сопряжение (адрес, код, закрепляемый отпечаток),
затем Bonjour/mDNS и проверка с другого устройства. iPhone-клиент пока не начинать.
Заготовки готовы; точные границы и следующие шаги — в `CONNECTION-ROADMAP.md`.
Следующий шаг: проверка с другого устройства и устойчивости при смене сети,
затем tray/автозапуск/упаковка. iPhone-клиент пока не начинать.
Точные границы реализации и следующие шаги — в `CONNECTION-ROADMAP.md`.
Начать разработку iOS только после новой команды пользователя.
## Карта файлов
@@ -176,6 +188,10 @@ Windows Core Audio → системная громкость устройств
- `Network/AgentCertificate.cs`: создание сертификата TLS для первого запуска.
- `PROTOCOL.md`: команды запуска и точный контракт будущего iPhone-клиента.
- `CONNECTION-ROADMAP.md`: заготовки QR/DNS-SD и шаги будущего подключения.
- `Network/ConnectionInvitation.cs`: данные для QR, без генерации картинки.
- `Network/DiscoveryDescriptor.cs`: описание DNS-SD, без сетевой рассылки.
- `Network/ConnectionInvitation.cs`: проверка и формат данных QR.
- `Network/PairingQr.cs`: локальная генерация PNG (QRCoder).
- `PairingWindowHost.cs`: окно QR на отдельном STA-потоке, выбор адреса и обновления.
- `Network/LocalAddresses.cs`: подходящие домашние IPv4-адреса.
- `Network/DiscoveryDescriptor.cs`: публичные поля DNS-SD.
- `Network/MdnsPublisher.cs`: объявления mDNS, обновления адресов и goodbye.
- `tests/`: исполняемые проверки без дополнительных тестовых NuGet-пакетов.