diff --git a/PLAN.md b/PLAN.md index 3318835..073b0af 100644 --- a/PLAN.md +++ b/PLAN.md @@ -1,6 +1,6 @@ # MusicBridge iOS — план -Обновлено: 2026-09-12. Пользователь разрешил начать нативное iOS-приложение. +Обновлено: 2026-09-13. Пользователь разрешил начать нативное iOS-приложение. Репозиторий: `C:/Users/areso/iOS MusicBridge`; origin — dev.yukinoki.ru/musicbridge/ios. Windows-агент — соседний проект `C:/Users/areso/MusicBridge/MusicBridge.Agent`. @@ -41,7 +41,9 @@ Windows-агент — соседний проект `C:/Users/areso/MusicBridge - [x] QR через камеру работает на физическом iPhone — подтверждено пользователем после установки 0.2.0. - [ ] Отдельно проверить оба входа (встроенный сканер и стандартная камера), отказ в доступе к камере, Bonjour и смену IP на физическом iPhone. - [x] Реализованы понятные ошибки сопряжения по кодам сервера, повтор загрузки обложки после 404 и ручной повтор. -- [ ] Иконка приложения, визуальная проверка разных размеров экрана и Dynamic Type. +- [x] Иконка приложения и обновлённый интерфейс подключения/плеера. +- [x] Просмотрены снимки 0.4.0: подключение, светлая/тёмная темы, iPhone SE и крупный текст. +- [ ] Проверить новый интерфейс и иконку 0.4.0 на физическом iPhone. - [ ] Live Activities / Dynamic Island / App Intents — отдельный последующий этап. Ограничения: хранится один доверенный ПК; адрес при смене IP восстанавливается через @@ -131,13 +133,35 @@ Bonjour, если доступны объявления того же агент 1. **Устойчивость и ошибки — версия 0.3.0 (build 4).** Исправления и автоматические проверки завершены. Следующий ручной шаг — проверка на iPhone. -2. **Интерфейс.** Иконка, размеры/крупный текст, удобство плеера и состояния пустого - экрана. Сохранять рабочие сценарии QR и ручного подключения. +2. **Интерфейс — версия 0.4.0 (build 5).** Добавлены иконка, компактный экран QR, + раскрываемые ручные поля, крупная play/pause, процент громкости и меню ПК. + Сборка и 23 XCTest прошли; просмотрены темы, компактный экран и крупный текст. + Сценарии QR и ручного подключения сохранены; нужна проверка на телефоне. 3. **Системные интеграции.** Сначала исследовать актуальные ограничения Live Activities, Dynamic Island, App Intents и локальной связи в фоне; затем реализовать доступные сценарии. Не имитировать фоновое аудио. Не обещать постоянный WSS при блокировке. 4. **Несколько сохранённых ПК** — последующее расширение, сейчас сохраняется один. +Изменения второго этапа: + +- Итоговый `aa0b0f0`: [Actions 34746477145](https://github.com/polskikh13/musicbridgeios/actions/runs/34746477145) + — 23 XCTest без отказов и успешный Release archive. Итоговая IPA скачана в + `build/iPhone-0.4.0/MusicBridge-iPhone.ipa`; проверены ZIP, iPhoneOS ARM64, + версия 0.4.0 (5), AppIcon в Info.plist и скомпилированный каталог Assets.car. + Снимки находятся в `build/iPhone-0.4.0/final-preview`. На маленьком экране + основные кнопки видны сразу; для нижней части громкости может требоваться прокрутка. +- `cbd3c0f`: добавлены оригинальная иконка 1024×1024 и каталог AppIcon, + карточка QR, раскрываемые ручные поля, меню ПК, крупная play/pause и процент громкости. +- `aa0b0f0`: после просмотра iPhone SE уменьшена обложка по доступной высоте окна; + размеры заданы явно, чтобы заглушка оставалась квадратной. Исполнитель выровнен по центру. +- В Debug есть изолированный предпросмотр с примером трека и памятью вместо Keychain; + в Release этот режим недоступен. CI сохраняет светлый/тёмный плеер, крупный текст, + компактный экран и подключение. Ошибка Keychain -34018 на снимке подключения + относится к неподписанному запуску в CI; доступ к Keychain на телефоне требует подписи. +- Ручная проверка обновления: установить IPA через iloader, проверить иконку, + сохранённое сопряжение, QR, меню ПК, перемотку и громкость; повторить с крупным + системным шрифтом и тёмной темой. Реальную камеру и домашнюю сеть CI не проверяет. + Изменения первого этапа: - Итоговый `bde6f7a`: [Actions 34712051233](https://github.com/polskikh13/musicbridgeios/actions/runs/34712051233) diff --git a/README.md b/README.md index 179c75b..73b341c 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,11 @@ Нативный пульт на SwiftUI для MusicBridge.Agent на Windows. Звук играет на ПК. Минимальная версия iOS — 17. Зависимостей Swift Package/CocoaPods нет. -## Первый вариант +## Возможности - Сопряжение по HTTPS-адресу домашнего ПК, SHA-256 сертификата и коду. -- Импорт строки `musicbridge://pair?data=…` из QR агента; камера пока не реализована. +- Сканирование QR агента камерой, открытие `musicbridge://pair?data=…` и ручной ввод. +- Поиск компьютера через Bonjour и восстановление адреса доверенного ПК. - Проверка закреплённого DER-сертификата до отправки кода и при следующих соединениях. - Хранение адреса, отпечатка и токена в Keychain только на этом устройстве. - Название, исполнитель, обложка, позиция, play/pause, следующий/предыдущий трек, @@ -14,11 +15,10 @@ - WSS-состояние, переподключение с задержкой, остановка сети в фоне и восстановление при возврате. Команды автоматически не повторяются. -**Статус:** первый вариант собирается в GitHub Actions на macOS, Xcode 16.4, -Swift 6.1.2. Семь XCTest прошли на симуляторе iOS 18.5; проверка на физическом -iPhone и соединение с Windows-агентом ещё не выполнены. -[Успешный запуск](https://github.com/polskikh13/musicbridgeios/actions/runs/34444563869) -проверяет исходники коммита `a761431`. +**Статус:** пользователь подтвердил установку через iloader, рабочий пилот с +Windows-агентом и подключение по QR. В 0.4.0 добавлены иконка и обновлённый +интерфейс. Автоматические проверки включают 23 XCTest и Release archive; +полная проверка устойчивости на физических устройствах остаётся в `PLAN.md`. ## Сборка на Mac @@ -53,12 +53,12 @@ Apple ID и сертификаты для этой проверки не тре ## Подключение через QR и поиск ПК -В версии 0.2.0 откройте окно сопряжения в Windows-агенте (`--tray --lan`), -на iPhone нажмите «Сканировать QR с ПК» и разрешите камеру. После сканирования +Откройте окно сопряжения в Windows-агенте (`--tray --lan`), +на iPhone нажмите «Сканировать QR» и разрешите камеру. После сканирования нажмите «Подключить компьютер». Ссылки `musicbridge://` также открываются из стандартной камеры. Приглашение должно быть свежим. -В разделе «Найти ПК в сети» можно выбрать найденный адрес. Сверьте **весь** +В разделе «Найти компьютер» можно выбрать найденный адрес. Сверьте **весь** предложенный отпечаток с экраном ПК и введите код. Если поиск не работает, проверьте доступ к локальной сети в настройках MusicBridge; ручной ввод остаётся. При смене адреса уже доверенного ПК приложение пробует объявления с тем же @@ -67,11 +67,15 @@ Apple ID и сертификаты для этой проверки не тре ## Установка на iPhone через Sideloadly Пользователь также подтвердил установку через iloader. Для повторной установки -с исправлениями устойчивости используйте версию **0.3.0 (build 4)**: -`build/iPhone-0.3.0/MusicBridge-iPhone.ipa`. Выберите этот файл в iloader и +с новым интерфейсом используйте версию **0.4.0 (build 5)**: +`build/iPhone-0.4.0/MusicBridge-iPhone.ipa`. Выберите этот файл в iloader и подпишите тем же Apple Account, которым установлена первая версия. -В 0.3.0 обложка повторно загружается после временного сбоя, а после четырёх +В 0.4.0 добавлены иконка, карточка QR, раскрываемые ручные поля, крупная +play/pause, процент громкости и меню компьютера. Размер обложки зависит от +доступной высоты окна; при крупном системном шрифте экран прокручивается. + +Начиная с 0.3.0 обложка повторно загружается после временного сбоя, а после четырёх неудачных попыток доступен ручной повтор. Отозванный доступ требует нового сопряжения; автоматические попытки прекращаются. Если свернуть приложение во время сопряжения, повторите его со свежим QR (удалив созданную запись на ПК,