L×Box v2.16.0
Крупный релиз. Появился русский язык с выбором в настройках, сканер
WARP-эндпоинтов, гибкое управление узлами внутри подписок (отдельное отключение
узлов + своя идентичность фетча на подписку) и заметная чистка стабильности —
остановка VPN больше не виснет, пинг корректно глохнет при отключении. Ядро
обновлено до v1.14.0-lx.15 (плюс фикс XHTTP за reverse-proxy).
Quick links:
🆕 Что нового ·
🔧 Под капотом ·
📲 Install
🆕 Что нового
🌍 Русский язык + выбор языка
App Settings → General → Language: System default / English / Русский.
По умолчанию — язык системы, с откатом на английский. Переведено всё
пользовательское наполнение: экраны и диалоги, тексты мастера конфигурации
(названия и подсказки настроек и пресетов), предупреждения и сообщения об
ошибках, а также нативные поверхности Android — шторка-уведомление с кнопками
Stop / Reconnect, тайл Quick Settings, ярлыки лаунчера, Tasker-активити.
| Язык интерфейса | |
|---|---|
| Было | только английский, жёстко |
| Стало | System / English / Русский; переключение мгновенное, без перезапуска приложения и VPN |
Уже показанные ошибки и статусы перерисовываются на новом языке на лету. На
Android 13+ язык синхронизирован с системной настройкой «Языки приложений».
Технические поверхности (логи, Debug API, automation-события) остаются
английскими намеренно.
📡 Сканер WARP-эндпоинтов
Новая папка-эксперимент SCAN WARP: перебирает диапазоны IP и портов
Cloudflare WARP и оставляет живые эндпоинты. Пинг идёт штатным urltest прямо по
IP (без DNS), полностью на стороне приложения — ядро не трогается.
| Поиск рабочего WARP-эндпоинта | |
|---|---|
| Было | вручную подбирать IP/порт |
| Стало | папка SCAN сама находит живые эндпоинты; недостижимые отключаются, «Make experiment» собирает пул MASQUE-вариантов |
🗂 Подписки: гибкость на уровне узла
-
Отключение отдельных узлов подписки. Ненужный узел можно выключить, не
трогая остальную подписку; выбор переживает обновление подписки (привязка по
устойчивому хешу узла), а мусор со временем подчищается автоматически.
Переключатель узла переехал в начало строки — единообразно с папками. -
Своя идентичность фетча на подписку. У каждой подписки в её настройках
(«Fetch identity») — переключатель Default / Custom.Идентичность фетча (User-Agent, HWID x-hwid, device-заголовки)Было одна глобальная на всё приложение — один HWID уходил во все подписки Стало Default (глобальная, как раньше) или Custom — свой полный набор на подписку, со своей кнопкой Regenerate для HWID Custom удобен, когда подписок несколько на разных панелях, и у каждой свой
HWID-лимит или формат ответа по User-Agent. Глобальный экран идентичности
остаётся значением по умолчанию для Default-подписок.
🔌 Больше рабочих узлов из подписок
- Битый uTLS-fingerprint больше не роняет весь конфиг. Раньше один
неизвестный отпечаток в импортируемой подписке ронял всю конфигурацию —
теперь такой узел нормализуется, остальные живут. - QUIC-узлы (Hysteria2 / TUIC) с uTLS/reality больше не мёртвые. Для QUIC
эти поля неприменимы и глушили узел — теперь срезаются на импорте, узел
оживает. - VLESS + XHTTP за reverse-proxy больше не падает «301». Конфигурации с
mode:packet-up, путём со слэшем на конце (/upload/) и
session_placement:headerчерез nginx/CDN раньше срывались на редиректе —
исправлено в ядре.
🔧 Под капотом
Стабильность
-
§287 — остановка VPN больше не виснет. При большом числе WG/AWG-эндпоинтов
(особенно во время массового пинга) нажатие «Стоп» могло висеть 10+ секунд.Остановка туннеля при многих WG/AWG-эндпоинтах Было «Стоп» висит 10+ секунд Стало останавливается за ~3 секунды Ядровая половина (SPEC 030): глушение idle/urltest-тика, upfront-закрытие
WG-UDP-сокетов, abort in-flight ping-wake при старте close, конкурентный close
эндпоинтов — ни один шаг teardown не пропущен. Плюс app-таймаут снижен 10с→3с. -
§286 — пинг детерминированно глохнет при остановке. Раньше фоновый пинг
узлов/папок мог продолжать молотить после Stop / pause туннеля. Теперь весь
пинг привязан к жизненному циклу (реестр ProbeLifecycle) и гарантированно
останавливается на stop / revoke / pause; обновления UI батчатся (~120 мс). -
§290 — automation
SWITCH_NODEна уже активную ноду больше не рвёт
соединения. Команда переключения на ту ноду, что уже активна, при включённом
«Interrupt connections on switch» (§143) обрывала соединения группы на ровном
месте. Теперь такой запрос — no-op; вместо ложногоACTIVE_NODE_CHANGED
шлётся событиеNODE_ALREADY_ACTIVE, чтобы Tasker/MacroDroid-сценарии с Wait
Event получали подтверждение, а не уходили в timeout. Тот же гейт для UI: тап
по уже активной ноде тоже не дёргает сеть. -
§236 — тест папки при активном VPN. Проверка узлов папки во время
активного VPN теперь предлагает сперва остановить VPN, вместо тихого отказа. -
§291 — подписки досматриваются при возврате из фона. Часовой авто-таймер
тикает только пока процесс жив; при свёрнутом приложении с выключенным VPN
Android со временем замораживает процесс — и к вечеру подписки «обновлены 14
часов назад». Теперь возврат приложения из фона тоже проверяет, не пора ли
обновить.Подписки при свёрнутом приложении (VPN выключен) Было таймер засыпал с процессом → к вечеру всё устаревало Стало разворачивание приложения досматривает подписки, которым пора Проверка бесплатна по батарее (приложение уже на переднем плане) и чтит всё,
что и раньше: глобальный тумблер авто-обновления, интервал каждой подписки,
15-минутный анти-спам. Полноценное обновление при полностью выгруженном
приложении (в фоне, без открытия) по-прежнему вне скопа. -
§301 — regex-фильтры узлов теперь регистронезависимы. Один и тот же
паттерн в поиске главного окна и в фильтре канала матчил по-разному: в главном
окне — без учёта регистра, в фильтре канала (и в сборке конфига) — с учётом.
Приходилось писатьwarp|Warp|WARP.Regex-фильтр узлов по имени/тегу Было главное окно без учёта регистра, фильтр канала — с учётом Стало везде без учёта регистра; warpматчитWARP-01,Warp-tokyo,warp-xПереход только расширяет совпадение. Если у вас фильтр канала намеренно
отсекал узел регистром (напримерWARP, но неwarp) — теперь он захватит
оба; уточните паттерн, если нужен точный набор.
Чистка
-
§288 — из статистики убрана вкладка «App» (per-app trace). Разбор трафика
конкретного приложения полностью доступен на вкладке Profiler через фильтр
по приложениям. Статистика теперь показывает три вкладки: Stats, Conns,
Profiler. Вместе с вкладкой снят весь per-app слой профилирования (запись
именованных сессий с выбором target-приложения, secondary-пакеты, verbose core
logs); system-wide Profiler не затронут. В Debug API убраны per-app маршруты
/profiler/{start,stop,active,sessions,session/…,stream,secondary-packages};
/profiler/live*остаются. -
§285 — локализация переведена на natural-key движок. Внутренняя
инфраструктура текстов ушла с искусственных ARB-ключей наgetLocalTextс
английским текстом в роли ключа; словари переехали вassets/l10n/<tag>/.
Пользователю не видно — упрощает добавление новых языков.
Ядро
Пин libbox обновлён v1.14.0-lx.9 → v1.14.0-lx.15
(device-verified на CPH2411, SHA256 AAR сверен):
- lx.15 — фикс XHTTP за reverse-proxy (SPEC 002): VLESS+XHTTP через
nginx/CDN сmode:packet-up, trailing-slash path (/upload/) и
session_placement:headerраньше падал «301 Moved Permanently» — клиент
безусловно срезал trailing slash для всех mode; теперь только для bare-path
stream-one. Дефолтные конфиги (session id в path) не затрагивались. Плюс
merge upstream testing: async DNS refactor, WG detour fix (SPEC 029),
OpenConnect auth-challenge и прочие фиксы. - lx.14 — SPEC 030 (stop-latency, ядровая половина §287, см. выше).
- lx.11 — снят guard AmneziaWG-over-WireGuard (§130): первопричина устранена
на текущем графте (SPEC 025/026 + re-graft AWG2), AWG поверх WG снова разрешён.
📲 Install
adb install -r LxBox-v2.16.0-arm64-v8a.apkБез uninstall! Поверх существующей установки. Настройки и подписки сохранятся.
Предыдущий релиз: v2.15.11.