From 2fbf3bf85912839b363c259e9917dba014f23084 Mon Sep 17 00:00:00 2001 From: ares Date: Sun, 13 Sep 2026 18:13:07 +0300 Subject: [PATCH] Record SSH access and verified Xcode 27 build [skip ci] --- PLAN.md | 26 +++++++++++++++++++++++++- README.md | 24 +++++++++++++++++++----- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/PLAN.md b/PLAN.md index 86037a2..c65dd85 100644 --- a/PLAN.md +++ b/PLAN.md @@ -4,7 +4,31 @@ Репозиторий: `C:/Users/areso/iOS MusicBridge`; origin — dev.yukinoki.ru/musicbridge/ios. Windows-агент — соседний проект `C:/Users/areso/MusicBridge/MusicBridge.Agent`. -## Правила проекта +## Инфраструктура — текущее состояние + +- SSH к macOS проверен: `aresov@10.67.67.28`, macOS 26.6.2, x86_64, + около 459 ГБ свободно. Xcode не установлен. Локальный отдельный ключ: + `C:/Users/areso/.ssh/musicbridge_macos_ed25519` (закрытый ключ не включать в репо). + Использовать `C:/Windows/System32/OpenSSH/ssh.exe` с `-F NUL`, + `-o ProxyCommand=none -o ProxyJump=none -o IdentitiesOnly=yes` и этим ключом; + другая установленная версия ssh не подключалась. Host key сохранён в known_hosts. +- Xcode 27 требует Apple Silicon; эта Intel-виртуалка не подходит для SDK 27. + CI переведён на GitHub-hosted `xcode-27`: Xcode 27.0 (27A5252f), Swift 6.4, SDK iOS 27.0. + [Actions 34764552877](https://github.com/polskikh13/musicbridgeios/actions/runs/34764552877) + для `1e14bf7`: 32 XCTest, 0 отказов, успешный Release archive. + IPA: `build/iPhone-0.6.0-xcode27/MusicBridge-iPhone.ipa`; проверены SDK 27, ARM64 + приложения/расширения и структура пакета. Предпросмотр карточки просмотрен. + Версия осталась 0.6.0 (7); новые функции в пересборке не добавлены. + Просроченный тестовый сертификат создаётся с явными датами через + cryptography==46.0.3 в отдельном venv, поскольку новый OpenSSL отвергает -days -1. +- Пользователь подтвердил бесплатный Apple Account через iloader. + Фоновая доставка APNs заблокирована отсутствием Push Notifications capability + и соответствующей подписи. Платная Developer Program, App ID, ключ APNs и + provisioning profile пока отсутствуют; не обещать работу push после простой + смены Xcode. После появления доступа нужны регистрация токенов, отправитель + обновлений с Windows/сервера и тестирование доставки на физическом iPhone. + +## Правила реализации - SwiftUI, без веб-клиента. Музыка играет на Windows. - Сверять контракт с Windows PROTOCOL.md; не менять серверный протокол молча. diff --git a/README.md b/README.md index ea85b4f..a2174da 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Windows-агентом и подключение по QR. В 0.4.0 добавл ## Сборка на Mac -1. Открыть `MusicBridge.xcodeproj` в Xcode 16 или новее. +1. Открыть `MusicBridge.xcodeproj` в Xcode 27. 2. Выбрать схему MusicBridge и симулятор iPhone. Run запускает приложение, Test выполняет `MusicBridgeTests`. 3. Для физического iPhone выбрать свою Team в Signing & Capabilities. Сертификаты @@ -38,7 +38,7 @@ Windows-агентом и подключение по QR. В 0.4.0 добавл ## GitHub Actions -`.github/workflows/ios.yml` собирает приложение и выполняет XCTest на `macos-15` +`.github/workflows/ios.yml` собирает приложение и выполняет XCTest на `xcode-27` при push в main, pull request или ручном запуске. Сохраняет лог, `.xcresult` и ZIP приложения **для симулятора**, который нельзя установить на физический iPhone. Apple ID и сертификаты для этой проверки не требуются. GitHub remote подключён: @@ -69,7 +69,7 @@ Apple ID и сертификаты для этой проверки не тре Пользователь также подтвердил установку через iloader. Для повторной установки с Live Activity используйте версию **0.6.0 (build 7)**: -`build/iPhone-0.6.0/MusicBridge-iPhone.ipa`. Выберите этот файл в iloader и +`build/iPhone-0.6.0-xcode27/MusicBridge-iPhone.ipa`. Выберите этот файл в iloader и подпишите тем же Apple Account, которым установлена первая версия. В 0.4.0 добавлены иконка, карточка QR, раскрываемые ручные поля, крупная @@ -141,8 +141,7 @@ play/pause, следующий трек и обновление. Компакт Apple предлагает `RemoteMediaSession` в новом NowPlaying framework (iOS 27+) для отображения музыки внешнего устройства на экране блокировки и в Control Center. -Это подходит архитектуре MusicBridge. Нужны SDK/Xcode 27 и отдельное расширение -`com.apple.nowplaying.remote-media`; текущая сборка использует Xcode 16.4. +Это подходит архитектуре MusicBridge. Нужно отдельное расширение `com.apple.nowplaying.remote-media`. Сборка переведена на Xcode 27; 32 теста и Release archive прошли. Эта интеграция исследована, но ещё не реализована. Для фоновых обновлений удалённых сессий Apple также предоставляет push-механизм. [Документация remote media sessions](https://developer.apple.com/documentation/nowplaying/publishing-remote-media-sessions). @@ -155,3 +154,18 @@ Apple предлагает `RemoteMediaSession` в новом NowPlaying framewo - [GitHub: лимиты и оплата Actions](https://docs.github.com/en/billing/concepts/product-billing/github-actions) План и ограничения — в `PLAN.md`. Копия протокола агента — в `PROTOCOL.md`. + +## Сервер сборки и фоновые обновления + +GitHub Actions использует Apple Silicon runner `xcode-27` с проверкой версии Xcode. +SSH к локальной macOS-виртуалке настроен, однако она x86_64, без Xcode и не может +запускать Xcode 27. Для SDK 27 используется GitHub Actions. + +Тестовый TLS-сервер требует `cryptography==46.0.3`; CI устанавливает пакет +в отдельное Python-окружение. Это зависимость тестов, не приложения. + +Пользователь использует бесплатный Apple Account. APNs требует Push Notifications +capability и подписи с соответствующим provisioning profile, недоступных Personal Team. +Поэтому автоматическая фоновая доставка ещё не подключена. Команды Live Activity +выполняют запросы при нажатии; смена трека на ПК при приостановленном приложении +не обновляет карточку без запроса или push.