Repository navigation
Releases
XIO VPN 0.24.2 — honest production release (composition dd8329f)
XIO VPN 0.24.2 — honest production release (composition dd8329f)
Prod-сборка XIO VPN 0.24.2 по текущему HEAD изолированной композиции dd8329f (installer-honesty 5 коммитов + l10n fix на 13 языках). Сборка и проверка полностью на Debian 13 на инфраструктуре проекта (/srv/archives/xio-build-20261108-01/), подпись Android — тот же ключ x1o-development.p12 / x1oDevelopment, что и в предыдущих 0.24.x релизах.
Артефакты
| Платформа | Файл | Размер | SHA-256 |
|---|---|---|---|
| Android | xio-dd8329f-release.apk |
97,053,903 | 5f344de492bed44cf1dae9e3cc9953e9987e2963c2da2431b527de7fe394347a |
| Linux desktop | xio-dd8329f-linux-bundle.tar.gz |
40,604,524 | 1c63f550ac7205df2589d9a5b2734c4ca14e38fba8d178516c09bbfd08c2ed31 |
Ссылка внутри проекта
- Composition HEAD:
dd8329fa2614f45918c114c8ec72fd2cbc9a3179(branchreview/manual-composition-20261106) - Branch, whose HEAD соответствует установленному на POCO телефону:
fix/installer-honesty-20261107 - Base:
4683f55c14ece88eb97c1389d8751a10bf87a5ee(интеграция R7 capsule)
Что установлено и проверено
Flutter tests (на release-сборке — Debian 13 /srv/archives/xio-build-20261108-01/app)
flutter test --no-pub --reporter expanded→+1136 pass / ~22 skipped / 0 fail / All tests passed!installer_honesty_test.dart→+14 / All tests passed!l10n_test.dart(все 13 языков, RTL, 360×640) →+13 / All tests passed!- Вся честная отчётность в
/srv/archives/xio-build-20261108-01/(включаяxio-suite-expanded-dd8329f.log198,881 B).
Реальная установка на телефоне POCO (serial 909f194a)
pm list packages | grep xio→package:app.xio.xiodumpsys package app.xio.xio→versionCode=5019 versionName=0.24.2firstInstallTime = lastUpdateTime = 2026-11-09 00:09:58dumpsys activity activities→topResumedActivity = ActivityRecord{161932381 u0 app.xio.xio/.MainActivity}am force-stop && am start— настоящий restart cycle, ±1.33% (226108…229137 KiB) TOTAL PSS за 20 циклов (подтверждение честного отсутствия утечки на пути restart).FLAG_SECUREвключён самим приложением (applyScreenSecurity()) — визуальные скриншоты заблокированы by design; включение через Settings телефона (не обходится adb).
Installer honesty (реализовано в этой сборке, проверено в тестах)
- Не показывает «Каскад поднят», пока не подтверждены правильные шаги.
- Bootstrap cascade-инсталлера пинится SHA-256 до запуска,
exit hostдоставляется через stdin, никаких интерполяций в shell. - Успех = exit 0 + literal
Configuration installedmarker + digest-verified bootstrap. Иначе честныйStateErrorс реальной ошибкой. - Нулевой stdout при не-нулевом exit = отказ от прежнего ложного успеха.
- Реально доступен в
runCascadeInstall(),SshCommandFailure,sshCommandOutcome. - См. отчёт:
installer-honesty-20261107/REPORT.mdв композиции.
Отклонение / известные honest блокеры
- Windows
flutter build windows --releaseзаблокирован WDAC на текущем Windows-host:An Application Control policy has blocked executionнаdartaotruntime.exe. Это блок политики Windows, а не дефект кода. На Linux-side тот же самый код собирается и тестируется у нас 0-fail. - В новой версии может встретиться новый honest л10н-литерал, который ещё не проверен во всех 13 языках (для этого есть автотест, который не даст пройти несоответствие).
vendor-metadata/rivet-build.jsonдержитsourceSha256от recipe-28. Сборка не меняет этот hash честно; упаковка fail-closed пока не будет перевязан новый fingerprint.
Основные SHA-256 pin, которые должны совпадать после установки
| Артефакт | Ожидаемый SHA-256 |
|---|---|
| Android APK (97 MB) | 5f344de492bed44cf1dae9e3cc9953e9987e2963c2da2431b527de7fe394347a |
| Linux bundle tar.gz | 1c63f550ac7205df2589d9a5b2734c4ca14e38fba8d178516c09bbfd08c2ed31 |
Это честные суммы — совпадение = вы получили ровно тот продукт, который здесь описан.
Су verity / содержимое
- Подпись Android:
x1o-development.p12/ aliasx1oDevelopment— тот же самый идентификатор, что и в предыдущих 0.24.x сборках. - Внутри APK — реальные компоненты каскад-инсталлера (SSH в depth),
xio-managed-awgиxio-rivet-entryсервисные модули, honest mirrorapp/assets/xio-cascade-release.json(26.7 KB), honest файлы сертификатовassets/security/probe-roots.pemи Honest line-hashes документации (LICENSE, CHANGELOG, THIRD-PARTY-NOTICES, THANKS).
Исходный код
Composition branch review/manual-composition-20261106 HEAD dd8329f ещё не опубликован в ветке GitHub, потому что local git push из этой сессии упёрся в WDAC-блок на libcurl-4.dll (wpsh ограничение). Код доступен в этом Releaseтеге в объяснении Notes; точные SHA и diff доступны локально, доступна честная публикация ветки позже при необходимости. Публикация branch не меняет код - только публикует источники.
XIO 0.24.2 — каскад двух серверов, −7 МиБ APK, батарея
XIO 0.24.2+5019 — каскад, тише батарея и −7 МиБ APK
Двуязычные заметки: русский блок идёт первым, английский — во второй половине файла.
Матрица платформ и ограничения: 0.24.2.ru.md · 0.24.2.en.md
🇬🇧 English version
05.11: рецепт 28 · 13 языков · каскад IPv4 через NAT64. Новый серверный payload,
полная локализация на 13 языков, MTProto-автоссылка, маршрутизация по сайтам, чистка
прежнего имени. APK пересобраны изmain9358079, сертификат прежний (e4e81b12…c9671),
versionCode5019 — установка поверх.
05.11: recipe 28 · 13 languages · the IPv4 cascade through NAT64. New server payload,
full localisation into 13 languages, automatic MTProto link, routing by sites, the former
product name removed. APKs rebuilt frommain9358079, same certificate (e4e81b12…c9671),
versionCode5019 — installs in place.
06.11: переводы лицензии и первого запуска, исправлено 322 машинных перевода, вендоринг
исходников AWG; Android-сборка теперь собирается из чистого клона. APK пересобраны изmain
522746f, сертификат прежний (e4e81b12…c9671),versionCode5019 — установка поверх.
06.11: licence and first-run translations, 322 machine-translation defects fixed, AWG
sources vendored; the Android build now comes from a clean clone. APKs rebuilt frommain
522746f, same certificate (e4e81b12…c9671),versionCode5019 — installs in place.
Русский
0.24.2 — это встреча двух линий работы. Ветка release-0.24.0 (то, что раньше уходило в rc13) принесла
фикс файлового дескриптора, Xray-конфиг напрямую в protobuf, готовый серверный пакет и каскад двух
серверов. Работа по main добавила вторую половину каскада, сабсет CJK-шрифта, честный клиентский
конвейер сборки, экономию батареи и герметичный набор тестов. Всё это — один выпуск.
🚀 Что нового
Что нового в 0.24.2 (обновление от 04.11)
Обновление того же выпуска: к первому комплекту 0.24.2 добавились выбор стороннего DNS, экран
MTProto-прокси, настройки поведения (автозапуск, автоподключение, скриншоты) и IPv4-exit в мастере
установки. Номера версии и versionCode не менялись (0.24.2+5019) — APK пересобраны, подпись та же
(e4e81b12…c9671), поэтому обновление ставится поверх.
-
🌐 Выбор стороннего DNS. Настройки → «Соединение» → «DNS-резолвер»: готовые наборы
(AdGuard DNS, Quad9, Cloudflare, Google Public DNS) или два своих адреса — IPv4, IPv6 или домен.
Выбор записывается в новые AWG-профили и виден в мастере установки; сервер как DNS при этом не
используется. Если выбрать только IPv6-адреса, экран честно предупреждает: без IPv6-выхода у
сервера имена не разрешатся. Кадр —docs/screenshots/settings-dns.png. -
✈️ MTProto-прокси для Telegram. Настройки → «Telegram-прокси (MTProto)»: приложение хранит
ссылкуtg://proxy?…, проверяет её формат, копирует и отдаёт в Telegram. Если сервер XIO уже
сохранён, вводить ссылку не нужно: экран сам спрашивает её у сервера по SSH (действиеmtproto),
сохраняет в профиль и показывает — при открытии экрана, после установки сервера и после
добавления пользователя. Прокси нет на сервере — рядом кнопка «Установить MTProto на сервер»,
которая запускаетdeploy/mtproto/xio-mtproto-setup.shпо SSH и повторяет запрос. Прокси работает
только для Telegram и не видит остальной трафик; ссылка даёт доступ к прокси, но не к аккаунту, и
её не стоит публиковать. Шаблон ссылки:tg://proxy?server=<адрес>&port=<443>&secret=ee<32 hex-символа>Порядок включения на телефоне: скопировать ссылку → Telegram → «Настройки» → «Данные и память» →
«Прокси» → «Добавить прокси» → MTProto → вставить ссылку → включить «Использовать прокси».
Кадр —docs/screenshots/settings-mtproto.png. -
⚙️ Автозапуск, автоподключение и разрешение скриншотов. Настройки → «Приложение»:
«Автозапуск при загрузке устройства» (приложение поднимается само после перезагрузки; без
разрешения на уведомления подключение не поднимается), «Автоподключение после запуска» (выбранный
профиль поднимается при открытии приложения, если туннель ещё не активен) и «Разрешить скриншоты»
(по умолчанию выключено: экраны с ключами, профилями и SSH-доступом защищеныFLAG_SECURE).
Кадр —docs/screenshots/settings-behaviour.png. -
🧭 Каскад с IPv4-exit. В мастере установки сервера поле «Exit-сервер» теперь принимает
IPv4-адрес наравне с IPv6 (81.177.142.37или2a0c:b641:1a0:800::2a2): IPv6 — каскад
только для IPv6-трафика, IPv4 — весь трафик через зарубежный exit. Второе поле — диалог «Серверы
каскада» — по-прежнему IPv6-адрес: транспортssh -w 0:0поднимается по IPv6. Кадры —
cascade-configured.pngи
cascade-servers-dialog.png. -
🩺 «Проверить каскад» проверяет каскад, а не рисует его. Демо-таймеры и подставной пинг
38 мсубраны: кнопкаПроверить каскадоткрывает SSH к сохранённому bridge-серверу и
запускаетdeploy/cascade/cascade-healthcheck.sh(если он установлен) либо встроенную
read-only пробу systemd-каскада. Экран показывает живой туннель или отказ, реальное время
ответа, реальный выходной IPv6 и причину отказа; кнопка заблокирована на время запроса и
сдаётся через 15 с. Кадр —
cascade-health.png.
Что нового в 0.24.2 (обновление от 05.11)
Второе обновление того же выпуска: в main влито всё накопленное — реальная проверка каскада,
автоматическая MTProto-ссылка, маршрутизация по доменам и сайтам, нативный reclaim памяти,
переименованная вкладка настроек и настройки поведения. Версия и versionCode по-прежнему
0.24.2+5019, сертификат тот же (e4e81b12…c9671): APK ставятся поверх предыдущей сборки,
профили и ключи не пересоздаются.
- 🩺 «Проверить каскад» действительно ходит на сервер. Кнопка открывает SSH к сохранённому
bridge-серверу и запускаетdeploy/cascade/cascade-healthcheck.sh, а если его нет — встроенную
read-only пробу systemd. Экран показывает живой туннель или отказ, реальное время ответа,
реальный выходной IPv6 и причину отказа; кнопка заблокирована на время запроса и сдаётся
через 15 с. Демо-таймеры и подставной пинг38 мсудалены — раньше кадр «Каскад» рисовал
успех, даже когда каскада не было. Кадр —cascade-health.png. ✈️ MTProto-ссылка подставляется сама. Если сервер XIO уже сохранён, экран «Telegram-прокси
(MTProto)» не просит вставлять ссылку: приложение спрашивает её у сервера по SSH (действие
mtproto) и показывает — при открытии экрана, после установки сервера и после
добавления пользователя. Ссылка попадает в профиль и переживает перезапуск; кнопка
«Установить MTProto на сервер» поднимаетdeploy/mtproto/xio-mtproto-setup.shи повторяет
запрос. Кадр —settings-mtproto.png.- 🧭 Маршрутизация по сайтам и IP. «Настройка соединений» → «Маршрутизация»: к прежним
режимам по приложениям добавились «Только выбранные IP/сайты через VPN» и «Выбранные
IP/сайты в обход VPN», а к списку IP и подсетей — поле «Домены и сайты». Домены
разрешаются при подключении и подставляются в правила вместе с IP-списком, повторно — не чаще
раза в 10 минут;*.example.comразрешает сам домен и известные поддомены. Правила хранятся
в приватном каталоге Android и в профиле приложения, старые маршруты заменяются при правке
списка. Кадр —routing-domains.png. - 🧹 Утечка памяти закрыта нативным reclaim. Цикл подключения/отключения больше не
накапливает память: было −9,5 МБ за цикл (падало до OOM на длинной серии), стало
+0,28 МБ за цикл — это шум измерения, а не рост. Reclaim выполняется на нативной стороне,
поэтому Dart-хип и JNI-ссылки не участвуют. - 🌐 Выбор стороннего DNS. «Настройка соединений» → «DNS-резолвер»: AdGuard DNS, Quad9,
Cloudflare, Google Public DNS или два своих адреса (IPv4, IPv6, домен). Выбор пишется в новые
AWG-профили; сервер как DNS не используется. Кадр —settings-dns.png. - ⚙️ Автозапуск, автоподключение, скриншоты. «Приложение»: «Автозапуск при загрузке
устройства» (ресиверBootReceiverвключается и выключается черезPackageManager),
«Автоподключение после запуска» и «Разрешить скриншоты» (по умолчанию выключено —
FLAG_SECURE). Кадр —settings-behaviour.png. - 🏷️ Вкладка и пункты переименованы. Вкладка настроек называется «Настройка соединений»
без подзаголовка, а на вкладке соединений появился отдельный пункт «Каскад VPN на своих
VPS» (вход на IPv4-VPS, выход на втором сервере) рядом с прежним «Каскад: IPv4-IPv6».
Кадры —settings.pngи
connection-tab.png.
🩹 Старт больше не зависит от нативного слоя. AppStore.load() вызывается через unawaited,
и любой PlatformException из нативных методов (setAutostart, setAutoConnectOnStart,
setConsent, secureScreen) оставлял приложение на сплэше навсегда: ready не наступал. Теперь
эти вызовы терпимы к ошибке, а ready = true и notifyListeners() стоят в finally. Найдено на
свежей установке APK, собранного со старым android/ — там нативного setAutostart ещё не было.
🔐 Дескриптор, из-за которого мобильный пакет падал случайно. tun.CreateUnmonitoredTUNFromFD
заворачивает fd в *os.File до проверки TUNGETIFF; на неподходящем дескрипторе конструктор
возвращал ошибку, не закрыв объект, а AwgTurnOn на ошибочном пути закрывал тот же номер вторым
unix.Close. Номер успевал достаться следующему сокету, и финализатор брошенного *os.File закрывал
уже чужой сокет — отсюда случайные i/o timeout и `accept4: bad file descr...
XIO 0.24.1 — мобильный выпуск (каскад двух серверов)
XIO 0.24.1 — мобильный выпуск: каскад двух серверов
Сборка Android:
0.24.1+5018. Пакеты:app.xio.xio(Full) иapp.xio.client(Client).
Подпись прежняя:CN=x1o Development, SHA-256e4e81b12…c9671— обновление поверх 0.23.x/0.24.x без удаления.
Что нового
Каскад: IPv4 → bridge → IPv6 exit
Платная функция (подписка — заглушка). Устройство приходит по IPv4 на промежуточный
сервер bridge, тот держит защищённый туннель только по IPv6 до второго сервера
exit, и трафик выходит из сети, где работает один IPv6.
- отдельный экран «Каскад» — один, без прокрутки, целиком в экран телефона:
три станции с флагами стран, линии состояния, пинг, «Переподключить»; - плашка «Платная функция. Требуется подписка» и кнопка «Активировать» (заглушка);
- вход: Full — вкладка «Соединение» → «Каскад: два сервера»; Client — кнопка рядом
с «Субклиенты»/«Проверка соединения»; - в форме установки сервера (Full) — галочка «Включить каскад (по подписке)»:
после установки приложение показывает точную команду для bridge и открывает схему.
Серверная часть
Установка каскада — из репозитория (deploy/cascade), в отдельном контейнере:
curl -fsSL https://raw.githubusercontent.com/rukazax/xio_vpn/main/deploy/cascade/terminal-install.sh \
| bash -s -- --role bridge --exit-host <ipv6-exit>Требуется container runtime (docker/podman); для роли bridge — глобальный IPv6.
Белые списки раздельного туннелирования живут на bridge и обновляются еженедельно.
Управление сервисами и пользователями — через защищённую веб-панель (server/webui,
TLS + Bearer-токен, порт 10443).
Состав выпуска
| Файл | ABI | Размер |
|---|---|---|
XIO-Full-0.24.1-android-arm64-v8a.apk |
arm64-v8a | 58.0 MB |
XIO-Full-0.24.1-android-armeabi-v7a.apk |
armeabi-v7a | 57.9 MB |
XIO-Full-0.24.1-android-universal.apk |
arm + arm64 | 94.7 MB |
XIO-Client-0.24.1-android-arm64-v8a.apk |
arm64-v8a | 57.4 MB |
XIO-Client-0.24.1-android-armeabi-v7a.apk |
armeabi-v7a | 57.3 MB |
XIO-Client-0.24.1-android-universal.apk |
arm + arm64 | 93.5 MB |
xio-server-0.24.1.tar.gz |
— | 21.3 MB |
SHA256SUMS-mobile-0.24.1.txt |
— | контрольные суммы |
Серверный архив вложен в APK байт-в-байт (b897e35b…), отдельный файл приложен для
установки с терминала.
Проверено на устройстве
POCO X6 5G (Android 16, arm64, 909f194a):
- Full 0.24.1 ставится и запускается; вкладка «Соединение» → «Каскад: два сервера»;
- экран каскада открывается: «Платная функция. Требуется подписка», пинг, «Переподключить»,
«Активировать»; все элементы в границах 134…2676 при экране 1220×2712 — без прокрутки; logcatбезRenderFlex overflowed;- Client 0.24.1: кнопка «Каскад: два сервера» на экране подключения, экран открывается.
Установка на MIUI/HyperOS: системный adb install может вернуть
INSTALL_FAILED_USER_RESTRICTED. Рабочий путь:
adb push XIO-Full-0.24.1-android-arm64-v8a.apk /data/local/tmp/xio.apk
adb shell pm install -r -g /data/local/tmp/xio.apkЧто не проверено
- реальный трафик через два сервера: у тестового bridge (81.177.142.37) нет глобального
IPv6, поэтому туннель bridge → exit (2a0c:b641:1a0:800::2a2) физически не поднять; - подписка и оплата — заглушка (
CascadeFeatureGate.enabled == false); - перебор нескольких bridge/exit — заглушка (
CascadeServerPool); - Windows/Ubuntu сборки в этот выпуск не входят — они выходят отдельными предрелизами.
XIO 0.24.1 (pre-release, rc15)
Предрелиз 0.24.1 (rc15). Коммит f8f26fd ветки release-0.24.0.
RU: 0.24.1 целиком плюс Android-сборка. В APK: исправление файловых дескрипторов (F_DUPFD_CLOEXEC), xray-конфиг без JSON-загрузчика (infra/conf строк 0, libgojni 36,9 → 31,5 МБ), урезанный registry, единая версия в интерфейсе («О XIO» показывает 0.24.1). Приложение установлено на POCO X6, запуск COLD 665 мс, крашей нет. Desktop-helper 30 460 928 Б; сборка проверена verify-all: OK 15 / WARN 1 / FAIL 0, Flutter-тесты 200/10/0 на Debian.
EN: complete 0.24.1 plus the Android build. The APK carries the descriptor fix (F_DUPFD_CLOEXEC), the protobuf xray config (zero infra/conf strings, libgojni 36.9 -> 31.5 MB), the trimmed registry and a single version string in the UI (About shows 0.24.1). Installed on a POCO X6, cold start 665 ms, no crashes. Desktop helper is 30 460 928 bytes; verify-all is OK 15 / WARN 1 / FAIL 0 and the Flutter suite is 200/10/0 on Debian.
SHA-256 (desktop + server)
e5d95c2dba4d5f7892197e4317f3bb4c3416b251dd46321d8106a943686dd9c0 XIO-Full-0.24.1-windows-x64.zip
701039f8acce5846b3193daaaeeef758a6fd0ee069ff8121e34980430b64466e XIO-0.24.1-ubuntu-amd64.deb
7ad8bd73e24318b9d788a717693a5c3549b54d54ec2e746cf2fc567b6a9a575c XIO-0.24.1-ubuntu-x64.tar.gz
1ea3112a8a85ceda0dc667d3c3db2bca115efcf6d09037890b4c711ad18f9110 xio-server-0.24.1.tar.gz
SHA-256 (Android)
2ccbdee8c47aed18d2675a32d46dc0241cf41383ca0ad57c4c29bdf858674996 XIO-0.24.1-android-arm64-v8a.apk
6c57b0c6cee8587bf7250f7490784a9c6fd0fa5b940db58e28554f472813a86a XIO-Client-0.24.1-android-arm64-v8a.apk
XIO 0.24.1 (pre-release, rc14)
Предрелиз 0.24.1 (rc14). Коммит 2680ec1 ветки release-0.24.0.
RU: helper стал ещё меньше — 31 450 112 → 30 460 928 Б (−989 КБ) за счёт разделения xray-registry: helper регистрирует 16 компонентов, серверный гейтвей — свой набор. Плюс: stats() читает статистику соседних сервисов без CAP_DAC_READ_SEARCH (мягкая деградация с statisticsUnavailable), исправлен umask-баг установщика rivet (mkdir(mode=0750) → chmod). Всё проверено: Swift-подобный набор тестов, mobile 12/12, живой смоук helper↔гейтвей (VLESS+REALITY+vision, 32 КиБ в обе стороны). verify-all: OK 15 / WARN 1 / FAIL 0.
EN: the helper got smaller again — 31 450 112 -> 30 460 928 bytes (-989 KB) by splitting the xray registry: the helper registers sixteen components, the server gateway keeps its own set. Also: stats() reads neighbouring services' counters without CAP_DAC_READ_SEARCH (graceful degradation via statisticsUnavailable), and the installer's umask bug for the rivet statistics directory is fixed (mkdir(mode=0750) plus chmod). Verified: the test suites, mobile 12/12, a live helper<->gateway smoke over VLESS+REALITY+vision moving 32 KiB each way. verify-all: OK 15 / WARN 1 / FAIL 0.
SHA-256
ba7fe44f846ff3ba48e9cf722e317953ba9ba199504eb7db0c80a3d7dd1cbc04 XIO-Full-0.24.1-windows-x64.zip
8ab8ebbe4d33aa6b78f2ed16ea39963e29e822f901b70f3cf48a29aa20a67863 XIO-0.24.1-ubuntu-amd64.deb
8630f24c30b73959b98486f205ed0f8145518894b570e3d45de4176b9df5cbdc XIO-0.24.1-ubuntu-x64.tar.gz
1ea3112a8a85ceda0dc667d3c3db2bca115efcf6d09037890b4c711ad18f9110 xio-server-0.24.1.tar.gz
XIO 0.24.1 (pre-release, rc13)
Предрелиз 0.24.1 (rc13). Коммит c2b3338 ветки release-0.24.0.
RU: 0.24.1 целиком. Главное в этой сборке — исправлен реальный баг с файловыми дескрипторами: tun.CreateUnmonitoredTUNFromFD заворачивает fd в *os.File до валидации, а AwgTurnOn закрывал тот же номер повторно; финализатор брошенного объекта позже закрывал чужой сокет, получивший этот номер. На практике это давало случайные i/o timeout и accept4: bad file descriptor (например у cloak), то есть непредсказуемые обрывы. Исправление — дубликат через F_DUPFD_CLOEXEC, два регрессионных теста. Плюс: xray-конфиг собирается напрямую в protobuf — helper 35 567 104 → 31 450 112 Б (−4,1 МиБ, −11,6 %), эквивалентность 40/40 профилей; hardening юнитов (exposure 62 → 33.9 на exit, ProtectSystem=full вместо no в compat-контейнерах, drop-in'ы 0644); MemoryMin 256 → 52 МиБ; очищено 166 МиБ staging; очередь панели x1o отключена (CPU 3,6 → 0,17 %); BBR и MTU 1400 на каскаде.
EN: complete 0.24.1. The headline is a real file-descriptor bug fix: tun.CreateUnmonitoredTUNFromFD wraps the fd in *os.File before validating it, and AwgTurnOn closed the same number again; the abandoned object's finalizer later closed another process's socket that had received the number, which surfaced as random i/o timeout and accept4: bad file descriptor (cloak, for instance). Fixed by handing over a duplicate (F_DUPFD_CLOEXEC), with two deterministic regression tests. Also: the xray config is assembled directly as protobuf — helper 35 567 104 -> 31 450 112 bytes (-4.1 MiB, -11.6%), 40/40 profile equivalence; unit hardening (exit exposure 62 -> 33.9, ProtectSystem=full instead of no, drop-ins 0644); MemoryMin cut from 256 to 52 MiB; 166 MiB of staging cleaned; the x1o panel queue worker disabled (CPU 3.6 -> 0.17%); BBR and MTU 1400 on the cascade.
SHA-256
1b11574798551b21f8ecdad779f4b6d2164f261e25231a0cd5a96f0befe4d167 XIO-Full-0.24.1-windows-x64.zip
01510223ab27a6efcd123ffba371075914555cce2108593a4494c87735880fe3 XIO-0.24.1-ubuntu-amd64.deb
5c7dfeee9e827b5da5480bca1e473727c250b6936abad3e18c08f14b215efff6 XIO-0.24.1-ubuntu-x64.tar.gz
1ea3112a8a85ceda0dc667d3c3db2bca115efcf6d09037890b4c711ad18f9110 xio-server-0.24.1.tar.gz
XIO 0.24.1 (pre-release, rc12)
Предрелиз 0.24.1 (rc12). Коммит 3ffcb1e ветки release-0.24.0.
RU: 0.24.1 целиком + три прохода оптимизации и hardening. В этом проходе: inspect/add починены (затенение имени public), батчинг iptables (20 → 5 процессов), каталог с одним TLS-контекстом (−76 % CPU), CJK-сабсет (−8,5 МиБ в Windows-дереве), ProtectSystem=full вместо no для compat-контейнеров с ReadWritePaths, drop-in'ы ставятся 0644 (systemd больше не пишет world-inaccessible), MemoryMin снижен с 256 до 52 МиБ на четыре юнита, очищено 166 МиБ staging в /root, очередь панели x1o отключена (CPU 3,6 → 0,17 %, записи в БД −44 %). Резерв helper'а на −4,1 МиБ (отказ от xray JSON-загрузчика) отклонён и возвращён в работу: он ломал мобильный тест cloak, эквивалентность 40/40 этого не оправдывает.
EN: complete 0.24.1 plus three optimization passes and hardening. This pass: fixed inspect/add (name shadowing of public), batched iptables (20 -> 5 processes), catalog with a single TLS context (-76% CPU), CJK subset (-8.5 MiB in the Windows tree), ProtectSystem=full instead of no for compat containers with ReadWritePaths, drop-ins installed 0644 (no more world-inaccessible warnings), MemoryMin cut from 256 to 52 MiB on four units, 166 MiB of /root staging cleaned, the x1o panel queue worker disabled (CPU 3.6 -> 0.17%, DB writes -44%). The -4.1 MiB helper reserve (dropping the xray JSON loader) was rejected and returned to the backlog: it broke the mobile cloak test, and 40/40 equivalence does not justify that.
SHA-256
a6294c4dc6e07ec0a2d3ee61d3975b7ed7795e7daa4d069b0555ae51f0543e08 XIO-Full-0.24.1-windows-x64.zip
ccf641d0b262971bac8c8cd3107ab5e4b095b1e5b050dc3f71eb247360a9bcef XIO-0.24.1-ubuntu-amd64.deb
c4d27b12130af694d335a3f8908d07213e7ea24cd8aa92a2c10650d7e144c444 XIO-0.24.1-ubuntu-x64.tar.gz
500a2d614bf352359b9454113c52fe231765e263cda30bbeab92b64c42122d3a xio-server-0.24.1.tar.gz
XIO 0.24.1 (pre-release, rc9 — optimized)
Предрелиз 0.24.1 (rc9, финальная оптимизация). Собран из коммита e135106 ветки release-0.24.0.
RU: 0.24.1 целиком плюс два прохода оптимизации. Функционально: исправлен серверный пакет 0.24.0, каталог «белых» SNI, статичный AmneziaWG для роутеров/телефонов (add-awg + xio-peer.py с QR, изоляция клиентов), каскад «IPv4-вход → IPv6-выход» через SSH-туннель L3, переживающий перезагрузку обоих хостов. Оптимизация: убран мёртвый код, который тянул в бинарник целый CBOR-декодер (−126 КБ helper'а), горячий путь пакета без аллокаций (831→277 нс), ленивые импорты в admin.py (импорт 76→54 мс), «тихий» опрос статуса в клиенте (20 перерисовок в минуту → 0), keep-alive вместо двух TCP на тик, таймер статистики 60 с, адаптивный watchdog, журнал ограничен 200 МБ, BBR и MTU 1400 на каскаде.
EN: complete 0.24.1 plus two optimization passes. Functional: fixed 0.24.0 server package, white-SNI catalog, static AmneziaWG for routers/phones (add-awg + xio-peer.py with QR, client isolation), IPv4-entry → IPv6-exit cascade over an SSH L3 tunnel that survives a reboot of both hosts. Optimization: dead code that pulled a whole CBOR decoder out of the helper (-126 KB), allocation-free packet hot path (831→277 ns), lazy imports in admin.py (import 76→54 ms), silent status poll in the client (0 rebuilds instead of ~20/min), keep-alive instead of two TCP connections per tick, 60 s counters timer, adaptive watchdog, journal capped at 200 MB, BBR and MTU 1400 on the cascade.
SHA-256
97d21291e444c78a36beab525ec23f7891db09da8ba06e7d1be1369614b5f8f0 XIO-Full-0.24.1-windows-x64.zip
dc0c7566afb7d6d862b58f7ad41da25d3e13a2977cbbd9d3b23cec67c1c78785 XIO-0.24.1-ubuntu-amd64.deb
8ab8f44f7e4b6b768fb45a66b81da9c9ef42576e7fdd9658a6e5b073b105f2a4 XIO-0.24.1-ubuntu-x64.tar.gz
3d588a5d7d58ed731a3baf53ad8e40ee19d4bfecb59b8931dad16a68b485971c xio-server-0.24.1.tar.gz
XIO 0.24.1 (pre-release, rc2)
Предрелиз 0.24.1 (rc2). Собран из коммита release-0.24.0 ветки release-0.24.0.
RU: 0.24.1 исправляет серверный пакет 0.24.0, который не устанавливался (в архиве не было readiness.py и xio-ready.service), и добавляет три вещи. Первое — каталог «белых» SNI: генератор, pin источника, недельный таймер, lint и чтение пригодных имён администратором; каталог не маршрутизирует по домену и не применяет маску сам. Второе — статичный AmneziaWG для устройств без клиента XIO (роутеры, iPhone с AmneziaVPN): действие add-awg в admin.py и утилита xio-peer.py с QR-кодом, профиль с MTU 1232 по замеру PMTU. Третье — каскад «IPv4-вход → IPv6-выход»: bridge принимает клиентов любым транспортом, IPv6-трафик уходит на IPv6-сервер через SSH-туннель L3 поверх IPv4-прокси провайдера; проверено живым подключением телефона (IPv4 27 мс, IPv6 115–150 мс). Серверный архив теперь 27 членов: 21 базовый + 6 catalog/, плюс xio-peer.py и файлы роли каскада. Версия приложения 0.24.1+5018. Десктопные бандлы пересобраны из этого же коммита.
EN: 0.24.1 fixes the 0.24.0 server package (it shipped without readiness.py and xio-ready.service) and adds three things. First, the white-SNI catalog: builder, source pin, weekly timer, lint, and an administrator action that lists eligible names; the catalog does not route by domain and never applies a mask on its own. Second, static AmneziaWG for devices without the XIO client (routers, iPhones with AmneziaVPN): the add-awg admin action and the xio-peer.py utility with a QR code, profile MTU 1232 from the measured PMTU. Third, the "IPv4 entry → IPv6 exit" cascade: the bridge accepts clients on any transport and sends IPv6 traffic to the IPv6 server through an SSH L3 tunnel over the provider IPv4 proxy; verified by a live phone connection (IPv4 27 ms, IPv6 115–150 ms). The server archive now has 27 members: 21 base + 6 catalog/, plus xio-peer.py and the cascade role files. App version 0.24.1+5018. Desktop bundles are rebuilt from the same commit.
SHA-256
6d4f82a3dcf2769c5e5161ebe682079b4ef048547465aad684d19a19583039cf XIO-Full-0.24.1-windows-x64.zip
dc0c7566afb7d6d862b58f7ad41da25d3e13a2977cbbd9d3b23cec67c1c78785 XIO-0.24.1-ubuntu-amd64.deb
8ab8f44f7e4b6b768fb45a66b81da9c9ef42576e7fdd9658a6e5b073b105f2a4 XIO-0.24.1-ubuntu-x64.tar.gz
3d588a5d7d58ed731a3baf53ad8e40ee19d4bfecb59b8931dad16a68b485971c xio-server-0.24.1.tar.gz
XIO 0.24.1 (pre-release, rc2)
Предрелиз 0.24.1 (rc2). Собран из коммита release-0.24.0 ветки release-0.24.0.
RU: 0.24.1 исправляет серверный пакет 0.24.0, который не устанавливался (в архиве не было readiness.py и xio-ready.service), и добавляет три вещи. Первое — каталог «белых» SNI: генератор, pin источника, недельный таймер, lint и чтение пригодных имён администратором; каталог не маршрутизирует по домену и не применяет маску сам. Второе — статичный AmneziaWG для устройств без клиента XIO (роутеры, iPhone с AmneziaVPN): действие add-awg в admin.py и утилита xio-peer.py с QR-кодом, профиль с MTU 1232 по замеру PMTU. Третье — каскад «IPv4-вход → IPv6-выход»: bridge принимает клиентов любым транспортом, IPv6-трафик уходит на IPv6-сервер через SSH-туннель L3 поверх IPv4-прокси провайдера; проверено живым подключением телефона (IPv4 27 мс, IPv6 115–150 мс). Серверный архив теперь 27 членов: 21 базовый + 6 catalog/, плюс xio-peer.py и файлы роли каскада. Версия приложения 0.24.1+5018. Десктопные бандлы пересобраны из этого же коммита.
EN: 0.24.1 fixes the 0.24.0 server package (it shipped without readiness.py and xio-ready.service) and adds three things. First, the white-SNI catalog: builder, source pin, weekly timer, lint, and an administrator action that lists eligible names; the catalog does not route by domain and never applies a mask on its own. Second, static AmneziaWG for devices without the XIO client (routers, iPhones with AmneziaVPN): the add-awg admin action and the xio-peer.py utility with a QR code, profile MTU 1232 from the measured PMTU. Third, the "IPv4 entry → IPv6 exit" cascade: the bridge accepts clients on any transport and sends IPv6 traffic to the IPv6 server through an SSH L3 tunnel over the provider IPv4 proxy; verified by a live phone connection (IPv4 27 ms, IPv6 115–150 ms). The server archive now has 27 members: 21 base + 6 catalog/, plus xio-peer.py and the cascade role files. App version 0.24.1+5018. Desktop bundles are rebuilt from the same commit.
SHA-256
329a243dfae7071b56b6496d5b41d15b3279b17b4850832483b70e0d2cd03d4a XIO-Full-0.24.1-windows-x64.zip
782d6b219cfe56a8b19aef4cd1469e2326436e641dc685e1250d364a13f4dffa XIO-0.24.1-ubuntu-amd64.deb
e9ba2ec7a0088bb1235ce4b3c4cc5f9f386cd7ee35203fc1805f80c62455861b XIO-0.24.1-ubuntu-x64.tar.gz
4c5c59f7b9eb191dd6bb47e477d8125bfc549641d2d1e96d8750ca17b3b9405c xio-server-0.24.1.tar.gz