Add SwiftUI + Network Extension (LibXray/hev), parse Clash Meta YAML from subscription URLs into vless/trojan/hy2 share links, keep the selected server on connect, and ship Navis-3.8.2.13.ipa with versioned changelog. Co-authored-by: Cursor <cursoragent@cursor.com>
Navis iOS
Клиент по модели macOS Manager: ядро поднимает SOCKS :1080 / HTTP :1081, трафик в туннель через hev → SOCKS (вместо networksetup).
Версия: 3.8.2+13
Что работает
| Протокол | Статус |
|---|---|
| VLESS / VMess / Trojan | Да — LibXray + конфиг как internal/protocols/xray |
| Hysteria2 | Конфиг готов (Hy2ConfigBuilder); runtime ждёт единый NavisCore (второй Go-runtime нельзя рядом с LibXray) |
| Naive / AWG | Нет (как ограничения iOS / следующий этап) |
Требования
- Xcode 16+
scripts/fetch-ios-cores.sh→ios/Vendor/(LibXray + HevSocks5Tunnel)- Apple Developer Team для установки на устройство
- App IDs + App Group
group.win.evilfox.navis+ Network Extension (Packet Tunnel)
Сборка
./scripts/fetch-ios-cores.sh # один раз / при обновлении ядер
NAVIS_IOS_SKIP_SIMULATOR=1 ./scripts/build-ios.sh
# Подписанный IPA:
export NAVIS_IOS_TEAM_ID=XXXXXXXXXX
./scripts/build-ios.sh
Артефакты: dist/navis-release/ios/Navis-<version>.ipa (без Team — unsigned, подпишите сами).
Или Xcode → ios/Navis.xcodeproj → Team → Run / Archive.
Архитектура
- App пишет URI в App Group +
providerConfiguration→startVPNTunnel PacketTunnelProvider: сначала LibXray/Hy2 → SOCKS:1080, затем маршруты (IP сервера в exclude)hev_socks5_tunnel_main(utun_fd)→127.0.0.1:1080
Bundle IDs
| Target | ID |
|---|---|
| Navis | win.evilfox.navis |
| NavisTunnel | win.evilfox.navis.tunnel |
История версий (iOS)
- 3.8.2+13
- Clash Meta YAML-подписки → vless / trojan / hysteria2 share-URI (не JSON)
- Фильтр ложных naive (
Qure@masterв path иконок) - Выбор сервера не подменяется на «первый»; hy2/naive помечены как недоступные
- Надёжная передача URI: App Group file +
providerConfiguration+ options - Старт Xray до
setTunnelNetworkSettings, exclude IP прокси (без routing loop) - Кнопка «Отключить» во время подключения; бейдж версии
x.y.z.build build-ios.shчитает версию изupdate.go; IPA:Navis-3.8.2.13.ipa
- 3.8.2+12 (каркас iOS в ветке до bump)
- SwiftUI + Packet Tunnel stub → полный путь LibXray + hev
- XrayConfigBuilder / Hy2ConfigBuilder по модели macOS
- fetch-ios-cores.sh (LibXray, HevSocks5Tunnel)