Record SSH access and verified Xcode 27 build [skip ci]

This commit is contained in:
2026-09-13 18:13:07 +03:00
parent 1e14bf72a2
commit 2fbf3bf859
2 changed files with 44 additions and 6 deletions
+25 -1
View File
@@ -4,7 +4,31 @@
Репозиторий: `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`.
## Правила проекта ## Инфраструктура — текущее состояние
- 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. - SwiftUI, без веб-клиента. Музыка играет на Windows.
- Сверять контракт с Windows PROTOCOL.md; не менять серверный протокол молча. - Сверять контракт с Windows PROTOCOL.md; не менять серверный протокол молча.
+19 -5
View File
@@ -23,7 +23,7 @@ Windows-агентом и подключение по QR. В 0.4.0 добавл
## Сборка на Mac ## Сборка на Mac
1. Открыть `MusicBridge.xcodeproj` в Xcode 16 или новее. 1. Открыть `MusicBridge.xcodeproj` в Xcode 27.
2. Выбрать схему MusicBridge и симулятор iPhone. Run запускает приложение, 2. Выбрать схему MusicBridge и симулятор iPhone. Run запускает приложение,
Test выполняет `MusicBridgeTests`. Test выполняет `MusicBridgeTests`.
3. Для физического iPhone выбрать свою Team в Signing & Capabilities. Сертификаты 3. Для физического iPhone выбрать свою Team в Signing & Capabilities. Сертификаты
@@ -38,7 +38,7 @@ Windows-агентом и подключение по QR. В 0.4.0 добавл
## GitHub Actions ## GitHub Actions
`.github/workflows/ios.yml` собирает приложение и выполняет XCTest на `macos-15` `.github/workflows/ios.yml` собирает приложение и выполняет XCTest на `xcode-27`
при push в main, pull request или ручном запуске. Сохраняет лог, `.xcresult` при push в main, pull request или ручном запуске. Сохраняет лог, `.xcresult`
и ZIP приложения **для симулятора**, который нельзя установить на физический iPhone. и ZIP приложения **для симулятора**, который нельзя установить на физический iPhone.
Apple ID и сертификаты для этой проверки не требуются. GitHub remote подключён: Apple ID и сертификаты для этой проверки не требуются. GitHub remote подключён:
@@ -69,7 +69,7 @@ Apple ID и сертификаты для этой проверки не тре
Пользователь также подтвердил установку через iloader. Для повторной установки Пользователь также подтвердил установку через iloader. Для повторной установки
с Live Activity используйте версию **0.6.0 (build 7)**: с 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, которым установлена первая версия. подпишите тем же Apple Account, которым установлена первая версия.
В 0.4.0 добавлены иконка, карточка QR, раскрываемые ручные поля, крупная В 0.4.0 добавлены иконка, карточка QR, раскрываемые ручные поля, крупная
@@ -141,8 +141,7 @@ play/pause, следующий трек и обновление. Компакт
Apple предлагает `RemoteMediaSession` в новом NowPlaying framework (iOS 27+) Apple предлагает `RemoteMediaSession` в новом NowPlaying framework (iOS 27+)
для отображения музыки внешнего устройства на экране блокировки и в Control Center. для отображения музыки внешнего устройства на экране блокировки и в Control Center.
Это подходит архитектуре MusicBridge. Нужны SDK/Xcode 27 и отдельное расширение Это подходит архитектуре MusicBridge. Нужно отдельное расширение `com.apple.nowplaying.remote-media`. Сборка переведена на Xcode 27; 32 теста и Release archive прошли.
`com.apple.nowplaying.remote-media`; текущая сборка использует Xcode 16.4.
Эта интеграция исследована, но ещё не реализована. Для фоновых обновлений удалённых Эта интеграция исследована, но ещё не реализована. Для фоновых обновлений удалённых
сессий Apple также предоставляет push-механизм. сессий Apple также предоставляет push-механизм.
[Документация remote media sessions](https://developer.apple.com/documentation/nowplaying/publishing-remote-media-sessions). [Документация 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) - [GitHub: лимиты и оплата Actions](https://docs.github.com/en/billing/concepts/product-billing/github-actions)
План и ограничения — в `PLAN.md`. Копия протокола агента — в `PROTOCOL.md`. План и ограничения — в `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.