Document verified resilience stage and next iOS phases [skip ci]
This commit is contained in:
@@ -31,15 +31,16 @@ Windows-агент — соседний проект `C:/Users/areso/MusicBridge
|
||||
- [x] Первый успешный xcodebuild + XCTest на macOS: 7 тестов, 0 отказов.
|
||||
- [x] Подключён GitHub remote polskikh13/musicbridgeios; Actions и чтение логов через gh работают.
|
||||
- [x] Интеграционные тесты TLS: верный/чужой/истёкший сертификат, HTTPS и WSS.
|
||||
- [ ] Интеграционный тест отказа от redirect.
|
||||
- [ ] Проверить 401 и отзыв устройства, Keychain после переустановки/блокировки.
|
||||
- [x] Пройдены интеграционные проверки redirect, 401, возврата из фона и загрузки обложки.
|
||||
- [ ] Проверить реальный Keychain после переустановки/блокировки и отзыв устройства на физическом iPhone.
|
||||
- [x] Установить на физический iPhone: пользователь подтвердил установку через iloader 2026-09-12.
|
||||
- [x] Первое подключение к настоящему Windows-агенту: пользователь подтвердил рабочий пилот на iPhone 2026-09-12.
|
||||
- [ ] Полная ручная проверка каждого действия, обложки и устойчивости в Яндекс Музыке и SoundCloud.
|
||||
- [x] Камера для QR, запрос доступа, сообщение при отказе, остановка камеры при закрытии/уходе в фон.
|
||||
- [x] Bonjour-поиск `_musicbridge._tcp`, список адресов ПК и восстановление адреса с сохранённым сертификатом.
|
||||
- [ ] Проверить камеру, открытие QR стандартной камерой, Bonjour и смену IP на физическом iPhone.
|
||||
- [ ] Улучшить ошибки сопряжения по серверным кодам; повтор загрузки обложки после 404.
|
||||
- [x] QR через камеру работает на физическом iPhone — подтверждено пользователем после установки 0.2.0.
|
||||
- [ ] Отдельно проверить оба входа (встроенный сканер и стандартная камера), отказ в доступе к камере, Bonjour и смену IP на физическом iPhone.
|
||||
- [x] Реализованы понятные ошибки сопряжения по кодам сервера, повтор загрузки обложки после 404 и ручной повтор.
|
||||
- [ ] Иконка приложения, визуальная проверка разных размеров экрана и Dynamic Type.
|
||||
- [ ] Live Activities / Dynamic Island / App Intents — отдельный последующий этап.
|
||||
|
||||
@@ -89,6 +90,7 @@ Bonjour, если доступны объявления того же агент
|
||||
- `ContentView.swift`: подключение и плеер.
|
||||
- `QRScanner.swift`: камера AVFoundation, доступ, сканирование и жизненный цикл.
|
||||
- `DiscoveryStore.swift`: Bonjour, разрешение адресов, TXT и безопасный выбор адреса.
|
||||
- `ConnectionStorage.swift`: доступ к Keychain и подмена хранилища для изолированных тестов жизненного цикла.
|
||||
- `MusicBridgeTests/`: XCTest и пример Windows JSON.
|
||||
- `tools/`: генератор проекта, структурные проверки, выбор симулятора для CI.
|
||||
- `.github/workflows/ios.yml`: CI на macOS.
|
||||
@@ -122,7 +124,44 @@ Bonjour, если доступны объявления того же агент
|
||||
на снимке симулятора; исправлен статус при возвращении без сохранённого ПК.
|
||||
IPA скачана в `build/iPhone-0.2.0/MusicBridge-iPhone.ipa`; проверены ZIP, ARM64
|
||||
iPhoneOS, версия 0.2.0 (3), разрешение камеры, Bonjour и обработчик URL в готовом пакете.
|
||||
Следующий шаг: установить обновление через iloader и проверить QR/поиск/смену IP на iPhone.
|
||||
Пользователь подтвердил работу QR через камеру на iPhone. Следующий шаг:
|
||||
проверить Bonjour/смену IP и устойчивость, улучшить ошибки и восстановление обложки.
|
||||
|
||||
## Следующие этапы — выполнять последовательно
|
||||
|
||||
1. **Устойчивость и ошибки — версия 0.3.0 (build 4).** Исправления и автоматические
|
||||
проверки завершены. Следующий ручной шаг — проверка на iPhone.
|
||||
2. **Интерфейс.** Иконка, размеры/крупный текст, удобство плеера и состояния пустого
|
||||
экрана. Сохранять рабочие сценарии QR и ручного подключения.
|
||||
3. **Системные интеграции.** Сначала исследовать актуальные ограничения Live Activities,
|
||||
Dynamic Island, App Intents и локальной связи в фоне; затем реализовать доступные
|
||||
сценарии. Не имитировать фоновое аудио. Не обещать постоянный WSS при блокировке.
|
||||
4. **Несколько сохранённых ПК** — последующее расширение, сейчас сохраняется один.
|
||||
|
||||
Изменения первого этапа:
|
||||
|
||||
- Итоговый `bde6f7a`: [Actions 34712051233](https://github.com/polskikh13/musicbridgeios/actions/runs/34712051233)
|
||||
— 23 XCTest без отказов, Release archive успешен. IPA 0.3.0 (build 4) скачана
|
||||
в `build/iPhone-0.3.0/MusicBridge-iPhone.ipa`; проверены ZIP, платформа iPhoneOS,
|
||||
ARM64 и версия. Экран подключения просмотрен на снимке симулятора.
|
||||
|
||||
- Четыре попытки загрузить обложку, паузы 2/4/8 секунд, отдельное сообщение и кнопка
|
||||
ручного повтора. После 404 перечитывается состояние, чтобы заметить смену трека.
|
||||
Старая обложка не должна подменять новую после запоздавшего ответа.
|
||||
- При уходе в фон закрываются текущие соединения и незавершённое сопряжение;
|
||||
его поздний ответ не сохраняется. Если сервер уже создал запись устройства,
|
||||
пользователь получает указание удалить её перед повторным сопряжением.
|
||||
- Ответ 401 переводит приложение в состояние повторного сопряжения, останавливает
|
||||
автоматические повторы и сохраняет этот статус при возвращении из фона.
|
||||
- Понятные сообщения для invalid_code, pairing_closed, device_limit, storage_failed,
|
||||
HTTP-ошибок, сетевых сбоев и TLS. Текст отказа команды не стирается обновлением
|
||||
прогресса; сообщение можно скрыть. Команды не повторяются автоматически.
|
||||
- Успех команды и неудача последующего чтения состояния различаются в интерфейсе.
|
||||
После недоступности Keychain при запуске чтение повторяется при активации приложения.
|
||||
- Реальные HTTPS/WSS тесты используют временный сервер CI с задержками, 404/401/503,
|
||||
redirect, ошибками сопряжения и сменой обложки. Реальный пользовательский Keychain
|
||||
в этих тестах не изменяется. Сон ПК, Wi-Fi и системную блокировку надо проверить
|
||||
отдельно на физических устройствах.
|
||||
|
||||
## Результаты 2026-09-10
|
||||
|
||||
|
||||
@@ -67,10 +67,17 @@ Apple ID и сертификаты для этой проверки не тре
|
||||
## Установка на iPhone через Sideloadly
|
||||
|
||||
Пользователь также подтвердил установку через iloader. Для повторной установки
|
||||
с QR и поиском ПК используйте версию **0.2.0 (build 3)**:
|
||||
`build/iPhone-0.2.0/MusicBridge-iPhone.ipa`. Выберите этот файл в iloader и
|
||||
с исправлениями устойчивости используйте версию **0.3.0 (build 4)**:
|
||||
`build/iPhone-0.3.0/MusicBridge-iPhone.ipa`. Выберите этот файл в iloader и
|
||||
подпишите тем же Apple Account, которым установлена первая версия.
|
||||
|
||||
В 0.3.0 обложка повторно загружается после временного сбоя, а после четырёх
|
||||
неудачных попыток доступен ручной повтор. Отозванный доступ требует нового
|
||||
сопряжения; автоматические попытки прекращаются. Если свернуть приложение во
|
||||
время сопряжения, повторите его со свежим QR (удалив созданную запись на ПК,
|
||||
если она уже успела появиться). При неизвестном результате команды проверьте
|
||||
плеер перед повтором: приложение не повторяет команды автоматически.
|
||||
|
||||
Workflow также выполняет Release archive для `generic/platform=iOS` и создаёт
|
||||
`MusicBridge-iPhone.ipa` в артефакте `MusicBridge-iPhone`. Это ARM64-сборка для
|
||||
iOS 17+, без подписи. Подпись создаёт Sideloadly на вашем ПК с вашим Apple Account.
|
||||
|
||||
Reference in New Issue
Block a user