Release 3.8.2.13: iOS Packet Tunnel client and Clash URL subscriptions.
ci / test (macos-latest) (push) Waiting to run
ci / test (ubuntu-latest) (push) Waiting to run
ci / test (windows-latest) (push) Waiting to run

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>
This commit is contained in:
M4
2026-08-01 22:46:32 +03:00
co-authored by Cursor
parent 8b564110d5
commit 7ceb3a5148
44 changed files with 4165 additions and 72 deletions
+63
View File
@@ -0,0 +1,63 @@
# 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)
## Сборка
```bash
./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.
## Архитектура
1. App пишет URI в App Group + `providerConfiguration``startVPNTunnel`
2. `PacketTunnelProvider`: сначала LibXray/Hy2 → SOCKS `:1080`, затем маршруты (IP сервера в exclude)
3. `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)