Files
ios/PLAN.md
T
ros 6174be5610
iOS build and tests / simulator (push) Has been cancelled
Add native SwiftUI player and macOS CI
2026-09-10 09:11:55 +03:00

58 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MusicBridge iOS — план
Обновлено: 2026-09-10. Пользователь разрешил начать нативное iOS-приложение.
Репозиторий: `C:/Users/areso/iOS MusicBridge`; origin — dev.yukinoki.ru/musicbridge/ios.
Windows-агент — соседний проект `C:/Users/areso/MusicBridge/MusicBridge.Agent`.
## Правила проекта
- SwiftUI, без веб-клиента. Музыка играет на Windows.
- Сверять контракт с Windows PROTOCOL.md; не менять серверный протокол молча.
- Токены только в Keychain, проверка сертификата до сопряжения, запрет redirect.
- Не повторять команды автоматически после потери ответа.
- Не называть проверки Python сборкой Swift или запуском XCTest.
- После этапа обновлять этот файл: реализация, проверки, ограничения, следующий шаг.
## Реализовано в исходниках, требует Xcode-проверки
- [x] Проект Xcode, shared scheme, iOS 17+, SwiftUI, без внешних зависимостей.
- [x] Модели состояния и команд v1; валидация HTTPS IPv4 домашней сети и QR-строки.
- [x] Ручное сопряжение, импорт приглашения, проверка SHA-256 DER-сертификата.
- [x] Keychain: адрес, отпечаток и bearer-токен; удаление локального сопряжения.
- [x] HTTPS-команды, обложка до 2 МиБ, поток WSS с ограничением размера сообщения.
- [x] Экран трека, возможности кнопок, прогресс, перемотка, громкость, mute.
- [x] Переподключение 1…16 секунд, watchdog потока, отключение в фоне, возврат.
- [x] XCTest исходники: диапазоны адресов, отказ опасным URL, отпечатки,
QR/срок/коды, JSON Windows, расчёт позиции, формат команд.
- [x] GitHub Actions: сборка/тесты симулятора, логи, xcresult и артефакт приложения.
## Проверки и следующие шаги
- [ ] Первый успешный xcodebuild + XCTest на macOS. На текущем Windows Swift/Xcode нет.
- [ ] Подключить выбранный пользователем GitHub remote и запустить Actions.
- [ ] Интеграционные тесты TLS: верный/чужой/истёкший сертификат, redirect, WSS.
- [ ] Проверить 401 и отзыв устройства, Keychain после переустановки/блокировки.
- [ ] Настроить подпись и установку на физический iPhone.
- [ ] Проверить LAN/плеер/команды/обложку с настоящим Windows-агентом.
- [ ] Камера для QR, системные разрешения и обработка отказа.
- [ ] Bonjour-поиск `_musicbridge._tcp`, список ПК и обновление адреса при смене IP.
- [ ] Улучшить ошибки сопряжения по серверным кодам; повтор загрузки обложки после 404.
- [ ] Иконка приложения, визуальная проверка разных размеров экрана и Dynamic Type.
- [ ] Live Activities / Dynamic Island / App Intents — отдельный последующий этап.
Ограничения: хранится один ПК; при смене его IP пока нужно повторное сопряжение.
Нет фонового воспроизведения, App Store/TestFlight и подписанной IPA.
Потеря ответа на успешное сопряжение может оставить устройство на ПК: удалить его
в окне агента перед повтором. Облачный runner не имеет доступа к домашней LAN.
## Карта
- `MusicBridge/Models.swift`: контракт и проверка входных данных.
- `BridgeClient.swift`: сертификат, HTTPS, WSS, ограничения ответов.
- `KeychainStore.swift`: хранение сопряжения.
- `PlayerStore.swift`: состояние, команды, жизненный цикл и восстановление.
- `ContentView.swift`: подключение и плеер.
- `MusicBridgeTests/`: XCTest и пример Windows JSON.
- `tools/`: генератор проекта, структурные проверки, выбор симулятора для CI.
- `.github/workflows/ios.yml`: CI на macOS.