Document verified resilience stage and next iOS phases [skip ci]

This commit is contained in:
2026-09-12 21:46:04 +03:00
parent bde6f7a466
commit bce04f5d96
2 changed files with 53 additions and 7 deletions
+44 -5
View File
@@ -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