github Leadaxe/LxBox v2.20.6
LxBox v2.20.6

latest releases: v2.25.20, v2.25.19, v2.25.19-rc.3...
3 months ago

L×Box v2.20.6

A core update, nothing else. A group with automatic node selection no longer
keeps sending traffic through a node that stopped answering — it moves to a
working one on the spot, instead of waiting for its next scheduled check. And
REALITY nodes on freshly updated Xray servers connect again.

Релиз целиком про ядро. Группа с автовыбором узла больше не продолжает слать
трафик через переставший отвечать узел — она сразу уходит на рабочий, а не ждёт
своей следующей плановой проверки. И REALITY-узлы на свежеобновлённых серверах
Xray снова подключаются.

🇬🇧 English

🔌 Core

A group with automatic selection stayed on a node that had stopped working.
Groups in automatic mode picked their node from the last health check and only
reconsidered at the end of the next scheduled run — up to three minutes later,
longer with passive checking on. A failed connection changed nothing. So when a
node died, traffic kept being aimed at it: since the previous release the user
got an error every fifteen seconds instead of a two-minute hang, but still
through the same dead node.

Now a failure that means "this path is dead" — a connect timeout, an
unreachable network — marks the node and immediately retries the same request
through the next best one. Two attempts at most; if the retry succeeds, the
group moves its selection there without disturbing connections that are already
running. A connection refused or reset by the destination does not count: the
node delivered the packet and the site answered, so another node would be
refused too. Neither does a request the app itself cancelled.

If the node that was fastest collects three such marks, the group changes how it
ranks: fewest marks first, then speed among those tied — and those tied are
usually all the healthy ones, which compete on speed exactly as before. A mark
is only ever cleared by proof of life: a successful connection or an answered
health-check probe, never by time passing. If every candidate ends up marked —
meaning the network itself is down, not the nodes — the group forces a fresh
round of checks, at most once every two minutes. None of this runs on a timer,
so device sleep and system-level app freezing cannot throw it off. Groups in
round-robin mode are unaffected. (core SPEC 054)

REALITY nodes were rejected by updated Xray servers. Xray v26.7.11 began
requiring a minimum client version by default, and the core still announced a
version from 2023 — below the new threshold. The failure is invisible by design:
instead of refusing, the server quietly serves its cover website, so the node
looks broken with a clean log, indistinguishable from a wrong key or a clock
skew. The announced version now matches the required minimum; older servers are
unaffected. (core SPEC 053)

📦 Version

Core pin: v1.14.0-lx.21 → v1.14.0-lx.22. The AAR's Java surface is unchanged
— 226 classes on both, a javap diff of every signature comes out at zero
lines — so the bump required no client-side changes. No app code was touched in
this release.

🧪 Tests

flutter analyze and the full test suite are green, as are the four l10n
checkers. Both core fixes ship without a field run: SPEC 054 has six unit tests
and a bench run behind it, SPEC 053 was verified line by line against the XTLS
sources but never against a live Xray ≥ v26.7.11 server — there is no such
server to test against here. Reports welcome.

🇷🇺 Русский

🔌 Ядро

Группа с автовыбором оставалась на переставшем работать узле. Группы в
автоматическом режиме брали узел из последней проверки здоровья и пересматривали
выбор только в конце следующего планового прогона — до трёх минут спустя, а с
включённой пассивной проверкой и дольше. Неудачное соединение не меняло ничего.
Поэтому когда узел умирал, трафик продолжал идти в него: с прошлого релиза
пользователь получал ошибку каждые пятнадцать секунд вместо двухминутного
зависания, но всё через тот же мёртвый узел.

Теперь отказ, означающий «этот путь мёртв» — таймаут соединения, недоступная
сеть, — помечает узел и тут же повторяет тот же запрос через следующий по
качеству. Попыток не больше двух; если повтор удался, группа переносит туда свой
выбор, не трогая уже работающие соединения. Отказ или сброс со стороны
назначения не считается: узел донёс пакет и сайт ответил, значит через другой
узел будет тот же отказ. Не считается и запрос, который отменило само
приложение.

Если самый быстрый узел набирает три такие пометки, группа меняет правило
выбора: сначала меньше пометок, затем скорость среди равных — а равных обычно
все здоровые, и они соревнуются по скорости ровно как раньше. Пометка снимается
только доказательством жизни: успешным соединением или ответом на пробу, но
никогда — просто по времени. Если помеченными оказались все кандидаты (значит,
умерла сама сеть, а не узлы) — группа принудительно запускает новый круг
проверок, не чаще раза в две минуты. Ничего из этого не работает на таймерах,
поэтому ни сон устройства, ни системная заморозка приложения не собьют логику.
Групп в режиме round-robin изменения не касаются. (SPEC 054 ядра)

REALITY-узлы отвергались обновлёнными серверами Xray. Xray v26.7.11 стал по
умолчанию требовать минимальную версию клиента, а ядро всё ещё объявляло версию
2023 года — ниже нового порога. Отказ невидим по задумке: вместо отказа сервер
тихо отдаёт свой камуфляжный сайт, поэтому узел выглядит сломанным при чистом
логе и неотличим от неверного ключа или разъехавшихся часов. Объявляемая версия
теперь совпадает с требуемым минимумом; на старые серверы это не влияет.
(SPEC 053 ядра)

📦 Версия

Пин ядра: v1.14.0-lx.21 → v1.14.0-lx.22. Java-поверхность AAR не изменилась
— 226 классов в обеих версиях, javap-diff всех сигнатур даёт ноль строк
расхождений, — поэтому клиентских правок бамп не потребовал. Кода приложения
релиз не касается.

🧪 Тесты

flutter analyze и полный набор тестов зелёные, четыре l10n-чекера тоже. Обе
правки ядра выходят без полевого прогона: за SPEC 054 стоят шесть юнит-тестов и
стенд, SPEC 053 сверена с исходниками XTLS построчно, но против живого сервера
Xray ≥ v26.7.11 не проверялась — такого стенда нет. Отчёты приветствуются.


Install / Установка

adb install -r LxBox-v2.20.6-arm64-v8a.apk

Без uninstall! Поверх существующей установки. Настройки и подписки сохранятся.

No uninstall needed — install over the existing one. Settings and
subscriptions are preserved.


Previous release / Предыдущий релиз: v2.20.5.

Don't miss a new LxBox release

NewReleases is sending notifications on new releases.