Document UI release and remaining device checks [skip ci]

This commit is contained in:
2026-09-13 11:02:44 +03:00
parent aa0b0f0d8e
commit 2ca6201ad6
2 changed files with 45 additions and 17 deletions
+28 -4
View File
@@ -1,6 +1,6 @@
# MusicBridge iOS — план # MusicBridge iOS — план
Обновлено: 2026-09-12. Пользователь разрешил начать нативное iOS-приложение. Обновлено: 2026-09-13. Пользователь разрешил начать нативное iOS-приложение.
Репозиторий: `C:/Users/areso/iOS MusicBridge`; origin — dev.yukinoki.ru/musicbridge/ios. Репозиторий: `C:/Users/areso/iOS MusicBridge`; origin — dev.yukinoki.ru/musicbridge/ios.
Windows-агент — соседний проект `C:/Users/areso/MusicBridge/MusicBridge.Agent`. Windows-агент — соседний проект `C:/Users/areso/MusicBridge/MusicBridge.Agent`.
@@ -41,7 +41,9 @@ Windows-агент — соседний проект `C:/Users/areso/MusicBridge
- [x] QR через камеру работает на физическом iPhone — подтверждено пользователем после установки 0.2.0. - [x] QR через камеру работает на физическом iPhone — подтверждено пользователем после установки 0.2.0.
- [ ] Отдельно проверить оба входа (встроенный сканер и стандартная камера), отказ в доступе к камере, Bonjour и смену IP на физическом iPhone. - [ ] Отдельно проверить оба входа (встроенный сканер и стандартная камера), отказ в доступе к камере, Bonjour и смену IP на физическом iPhone.
- [x] Реализованы понятные ошибки сопряжения по кодам сервера, повтор загрузки обложки после 404 и ручной повтор. - [x] Реализованы понятные ошибки сопряжения по кодам сервера, повтор загрузки обложки после 404 и ручной повтор.
- [ ] Иконка приложения, визуальная проверка разных размеров экрана и Dynamic Type. - [x] Иконка приложения и обновлённый интерфейс подключения/плеера.
- [x] Просмотрены снимки 0.4.0: подключение, светлая/тёмная темы, iPhone SE и крупный текст.
- [ ] Проверить новый интерфейс и иконку 0.4.0 на физическом iPhone.
- [ ] Live Activities / Dynamic Island / App Intents — отдельный последующий этап. - [ ] Live Activities / Dynamic Island / App Intents — отдельный последующий этап.
Ограничения: хранится один доверенный ПК; адрес при смене IP восстанавливается через Ограничения: хранится один доверенный ПК; адрес при смене IP восстанавливается через
@@ -131,13 +133,35 @@ Bonjour, если доступны объявления того же агент
1. **Устойчивость и ошибки — версия 0.3.0 (build 4).** Исправления и автоматические 1. **Устойчивость и ошибки — версия 0.3.0 (build 4).** Исправления и автоматические
проверки завершены. Следующий ручной шаг — проверка на iPhone. проверки завершены. Следующий ручной шаг — проверка на iPhone.
2. **Интерфейс.** Иконка, размеры/крупный текст, удобство плеера и состояния пустого 2. **Интерфейс — версия 0.4.0 (build 5).** Добавлены иконка, компактный экран QR,
экрана. Сохранять рабочие сценарии QR и ручного подключения. раскрываемые ручные поля, крупная play/pause, процент громкости и меню ПК.
Сборка и 23 XCTest прошли; просмотрены темы, компактный экран и крупный текст.
Сценарии QR и ручного подключения сохранены; нужна проверка на телефоне.
3. **Системные интеграции.** Сначала исследовать актуальные ограничения Live Activities, 3. **Системные интеграции.** Сначала исследовать актуальные ограничения Live Activities,
Dynamic Island, App Intents и локальной связи в фоне; затем реализовать доступные Dynamic Island, App Intents и локальной связи в фоне; затем реализовать доступные
сценарии. Не имитировать фоновое аудио. Не обещать постоянный WSS при блокировке. сценарии. Не имитировать фоновое аудио. Не обещать постоянный WSS при блокировке.
4. **Несколько сохранённых ПК** — последующее расширение, сейчас сохраняется один. 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) - Итоговый `bde6f7a`: [Actions 34712051233](https://github.com/polskikh13/musicbridgeios/actions/runs/34712051233)
+17 -13
View File
@@ -3,10 +3,11 @@
Нативный пульт на SwiftUI для MusicBridge.Agent на Windows. Звук играет на ПК. Нативный пульт на SwiftUI для MusicBridge.Agent на Windows. Звук играет на ПК.
Минимальная версия iOS — 17. Зависимостей Swift Package/CocoaPods нет. Минимальная версия iOS — 17. Зависимостей Swift Package/CocoaPods нет.
## Первый вариант ## Возможности
- Сопряжение по HTTPS-адресу домашнего ПК, SHA-256 сертификата и коду. - Сопряжение по HTTPS-адресу домашнего ПК, SHA-256 сертификата и коду.
- Импорт строки `musicbridge://pair?data=…` из QR агента; камера пока не реализована. - Сканирование QR агента камерой, открытие `musicbridge://pair?data=…` и ручной ввод.
- Поиск компьютера через Bonjour и восстановление адреса доверенного ПК.
- Проверка закреплённого DER-сертификата до отправки кода и при следующих соединениях. - Проверка закреплённого DER-сертификата до отправки кода и при следующих соединениях.
- Хранение адреса, отпечатка и токена в Keychain только на этом устройстве. - Хранение адреса, отпечатка и токена в Keychain только на этом устройстве.
- Название, исполнитель, обложка, позиция, play/pause, следующий/предыдущий трек, - Название, исполнитель, обложка, позиция, play/pause, следующий/предыдущий трек,
@@ -14,11 +15,10 @@
- WSS-состояние, переподключение с задержкой, остановка сети в фоне и восстановление - WSS-состояние, переподключение с задержкой, остановка сети в фоне и восстановление
при возврате. Команды автоматически не повторяются. при возврате. Команды автоматически не повторяются.
**Статус:** первый вариант собирается в GitHub Actions на macOS, Xcode 16.4, **Статус:** пользователь подтвердил установку через iloader, рабочий пилот с
Swift 6.1.2. Семь XCTest прошли на симуляторе iOS 18.5; проверка на физическом Windows-агентом и подключение по QR. В 0.4.0 добавлены иконка и обновлённый
iPhone и соединение с Windows-агентом ещё не выполнены. интерфейс. Автоматические проверки включают 23 XCTest и Release archive;
[Успешный запуск](https://github.com/polskikh13/musicbridgeios/actions/runs/34444563869) полная проверка устойчивости на физических устройствах остаётся в `PLAN.md`.
проверяет исходники коммита `a761431`.
## Сборка на Mac ## Сборка на Mac
@@ -53,12 +53,12 @@ Apple ID и сертификаты для этой проверки не тре
## Подключение через QR и поиск ПК ## Подключение через QR и поиск ПК
В версии 0.2.0 откройте окно сопряжения в Windows-агенте (`--tray --lan`), Откройте окно сопряжения в Windows-агенте (`--tray --lan`),
на iPhone нажмите «Сканировать QR с ПК» и разрешите камеру. После сканирования на iPhone нажмите «Сканировать QR» и разрешите камеру. После сканирования
нажмите «Подключить компьютер». Ссылки `musicbridge://` также открываются нажмите «Подключить компьютер». Ссылки `musicbridge://` также открываются
из стандартной камеры. Приглашение должно быть свежим. из стандартной камеры. Приглашение должно быть свежим.
В разделе «Найти ПК в сети» можно выбрать найденный адрес. Сверьте **весь** В разделе «Найти компьютер» можно выбрать найденный адрес. Сверьте **весь**
предложенный отпечаток с экраном ПК и введите код. Если поиск не работает, предложенный отпечаток с экраном ПК и введите код. Если поиск не работает,
проверьте доступ к локальной сети в настройках MusicBridge; ручной ввод остаётся. проверьте доступ к локальной сети в настройках MusicBridge; ручной ввод остаётся.
При смене адреса уже доверенного ПК приложение пробует объявления с тем же При смене адреса уже доверенного ПК приложение пробует объявления с тем же
@@ -67,11 +67,15 @@ Apple ID и сертификаты для этой проверки не тре
## Установка на iPhone через Sideloadly ## Установка на iPhone через Sideloadly
Пользователь также подтвердил установку через iloader. Для повторной установки Пользователь также подтвердил установку через iloader. Для повторной установки
с исправлениями устойчивости используйте версию **0.3.0 (build 4)**: с новым интерфейсом используйте версию **0.4.0 (build 5)**:
`build/iPhone-0.3.0/MusicBridge-iPhone.ipa`. Выберите этот файл в iloader и `build/iPhone-0.4.0/MusicBridge-iPhone.ipa`. Выберите этот файл в iloader и
подпишите тем же Apple Account, которым установлена первая версия. подпишите тем же Apple Account, которым установлена первая версия.
В 0.3.0 обложка повторно загружается после временного сбоя, а после четырёх В 0.4.0 добавлены иконка, карточка QR, раскрываемые ручные поля, крупная
play/pause, процент громкости и меню компьютера. Размер обложки зависит от
доступной высоты окна; при крупном системном шрифте экран прокручивается.
Начиная с 0.3.0 обложка повторно загружается после временного сбоя, а после четырёх
неудачных попыток доступен ручной повтор. Отозванный доступ требует нового неудачных попыток доступен ручной повтор. Отозванный доступ требует нового
сопряжения; автоматические попытки прекращаются. Если свернуть приложение во сопряжения; автоматические попытки прекращаются. Если свернуть приложение во
время сопряжения, повторите его со свежим QR (удалив созданную запись на ПК, время сопряжения, повторите его со свежим QR (удалив созданную запись на ПК,