|
|
|
@@ -34,14 +34,18 @@ Windows-агент — соседний проект `C:/Users/areso/MusicBridge
|
|
|
|
|
- [ ] Интеграционный тест отказа от redirect.
|
|
|
|
|
- [ ] Проверить 401 и отзыв устройства, Keychain после переустановки/блокировки.
|
|
|
|
|
- [x] Установить на физический iPhone: пользователь подтвердил установку через iloader 2026-09-12.
|
|
|
|
|
- [ ] Проверить LAN/плеер/команды/обложку с настоящим Windows-агентом.
|
|
|
|
|
- [ ] Камера для QR, системные разрешения и обработка отказа.
|
|
|
|
|
- [ ] Bonjour-поиск `_musicbridge._tcp`, список ПК и обновление адреса при смене IP.
|
|
|
|
|
- [x] Первое подключение к настоящему Windows-агенту: пользователь подтвердил рабочий пилот на iPhone 2026-09-12.
|
|
|
|
|
- [ ] Полная ручная проверка каждого действия, обложки и устойчивости в Яндекс Музыке и SoundCloud.
|
|
|
|
|
- [x] Камера для QR, запрос доступа, сообщение при отказе, остановка камеры при закрытии/уходе в фон.
|
|
|
|
|
- [x] Bonjour-поиск `_musicbridge._tcp`, список адресов ПК и восстановление адреса с сохранённым сертификатом.
|
|
|
|
|
- [ ] Проверить камеру, открытие QR стандартной камерой, Bonjour и смену IP на физическом iPhone.
|
|
|
|
|
- [ ] Улучшить ошибки сопряжения по серверным кодам; повтор загрузки обложки после 404.
|
|
|
|
|
- [ ] Иконка приложения, визуальная проверка разных размеров экрана и Dynamic Type.
|
|
|
|
|
- [ ] Live Activities / Dynamic Island / App Intents — отдельный последующий этап.
|
|
|
|
|
|
|
|
|
|
Ограничения: хранится один ПК; при смене его IP пока нужно повторное сопряжение.
|
|
|
|
|
Ограничения: хранится один доверенный ПК; адрес при смене IP восстанавливается через
|
|
|
|
|
Bonjour, если доступны объявления того же агента. Новый адрес сохраняется только
|
|
|
|
|
после успешного HTTPS-запроса с прежним отпечатком и токеном.
|
|
|
|
|
Нет фонового воспроизведения, App Store/TestFlight и подписанной IPA.
|
|
|
|
|
Потеря ответа на успешное сопряжение может оставить устройство на ПК: удалить его
|
|
|
|
|
в окне агента перед повтором. Облачный runner не имеет доступа к домашней LAN.
|
|
|
|
@@ -66,13 +70,15 @@ Windows-агент — соседний проект `C:/Users/areso/MusicBridge
|
|
|
|
|
`tools/tls_fixture.py` запускается в CI перед сборкой тестов; закрытые ключи
|
|
|
|
|
создаются временно на runner и не включаются в приложение или артефакты.
|
|
|
|
|
- Сообщение «непригодные данные» при импорте приглашения пока не разобрано:
|
|
|
|
|
пользователь попросил отложить его. Следующий ручной шаг — повторить сопряжение
|
|
|
|
|
после установки новой IPA, затем проверить команды, прогресс и обложку.
|
|
|
|
|
пользователь попросил отложить его. Следующий этап — исправить импорт и добавить
|
|
|
|
|
сканер QR, затем поиск ПК и проверки устойчивости.
|
|
|
|
|
- `93f7c9c`: [Actions 34694138394](https://github.com/polskikh13/musicbridgeios/actions/runs/34694138394)
|
|
|
|
|
— 10 XCTest, 0 отказов, успешный Release archive. Версия 0.1.1 (build 2),
|
|
|
|
|
IPA скачана в `build/iPhone-0.1.1/MusicBridge-iPhone.ipa`; локально проверены ZIP,
|
|
|
|
|
iPhoneOS ARM64, версия и ATS-настройки внутри готовой IPA.
|
|
|
|
|
Сопряжение на физическом iPhone после этого исправления ещё не подтверждено.
|
|
|
|
|
После обновления пользователь подтвердил: «всё работает в пилотном режиме».
|
|
|
|
|
Это подтверждает первую рабочую связку iPhone ↔ Windows; полная матрица ручных
|
|
|
|
|
проверок и длительная работа пока не подтверждены.
|
|
|
|
|
|
|
|
|
|
## Карта
|
|
|
|
|
|
|
|
|
@@ -81,12 +87,37 @@ Windows-агент — соседний проект `C:/Users/areso/MusicBridge
|
|
|
|
|
- `KeychainStore.swift`: хранение сопряжения.
|
|
|
|
|
- `PlayerStore.swift`: состояние, команды, жизненный цикл и восстановление.
|
|
|
|
|
- `ContentView.swift`: подключение и плеер.
|
|
|
|
|
- `QRScanner.swift`: камера AVFoundation, доступ, сканирование и жизненный цикл.
|
|
|
|
|
- `DiscoveryStore.swift`: Bonjour, разрешение адресов, TXT и безопасный выбор адреса.
|
|
|
|
|
- `MusicBridgeTests/`: XCTest и пример Windows JSON.
|
|
|
|
|
- `tools/`: генератор проекта, структурные проверки, выбор симулятора для CI.
|
|
|
|
|
- `.github/workflows/ios.yml`: CI на macOS.
|
|
|
|
|
- `tools/package_ipa.sh`: Release archive для настоящего iPhone и упаковка Payload.
|
|
|
|
|
- `tools/verify_ipa.py`: проверка ZIP, Info.plist, ARM64 и платформы Mach-O (iOS, не Simulator).
|
|
|
|
|
|
|
|
|
|
## QR и поиск ПК — 0.2.0 (build 3)
|
|
|
|
|
|
|
|
|
|
- Добавлен сканер внутри приложения; после сканирования заполняются адрес,
|
|
|
|
|
отпечаток и код, подключение запускает пользователь. Также зарегистрирована
|
|
|
|
|
схема `musicbridge://`, приглашения принимаются через `onOpenURL`.
|
|
|
|
|
Посторонний QR, повреждённый JSON и истёкший код дают понятную ошибку.
|
|
|
|
|
- Регистрация URL-схемы устраняет отсутствие обработчика ссылки при чтении QR
|
|
|
|
|
стандартной камерой. Исходное сообщение «непригодные данные» ещё нужно
|
|
|
|
|
перепроверить на телефоне, точный источник той ошибки не был установлен.
|
|
|
|
|
- Поиск использует NSBonjourServices и NetServiceBrowser. Объявления версии 1
|
|
|
|
|
принимаются только с допустимым SHA-256 и частным IPv4. При первом выборе
|
|
|
|
|
найденного ПК пользователь сверяет полный отпечаток с его экраном.
|
|
|
|
|
- При восстановлении адреса TXT служит только подсказкой: сертификат из сети
|
|
|
|
|
не заменяет сохранённый. Чужой fingerprint не используется; токен отправляется
|
|
|
|
|
только через соединение с прежним TLS pin. После успеха адрес обновляется в Keychain.
|
|
|
|
|
- Поиск приостанавливается в фоне; адреса повторно разрешаются раз в 15 секунд,
|
|
|
|
|
список ограничен 64 сервисами и 16 адресами на сервис. Есть повторный поиск
|
|
|
|
|
и переход в настройки разрешений.
|
|
|
|
|
- `397caf2`: Actions 34694893204 — 14 XCTest, 0 отказов, Release archive успешен.
|
|
|
|
|
Проверены формат объявления Windows, разбор sockaddr, отказы чужим данным,
|
|
|
|
|
сохранение pin/token при смене адреса и .NET timestamp с семью дробными цифрами.
|
|
|
|
|
Камера и реальный multicast iPhone ↔ Windows не эмулируются этими тестами.
|
|
|
|
|
|
|
|
|
|
## Результаты 2026-09-10
|
|
|
|
|
|
|
|
|
|
- `07322c2`: успешный [Actions run 34445566212](https://github.com/polskikh13/musicbridgeios/actions/runs/34445566212).
|
|
|
|
|