L×Box v2.1.0
Релиз про прозрачность и устойчивость: в шторке теперь видно, на какой сервер идёт трафик и куда указывает дефолтный маршрут (§123), а две полевые истории про DNS закрыты — выключенный пресет больше не оставляет битых DNS-хвостов (§121), и Allow-list с DNS перестаёт ломаться на MIUI (§119).
Quick links:
🔔 Имя сервера в шторке ·
🐛 Fixes ·
🔬 Verified ·
📲 Install ·
🇷🇺 На русском
🔔 Имя сервера в шторке (§123)
Task spec.
Раньше постоянное уведомление foreground-сервиса показывало только бренд и статус — L×Box / Connected. Из шторки нельзя было понять, на какой сервер/ноду сейчас идёт трафик и куда указывает дефолтный маршрут.
Теперь уведомление говорит за себя:
L×Box [final = vpn-1] ← title: бренд + сырое route.final
vpn-1: L: 🇫🇮⚡Финляндия-2 ← text: <селектор>: <выбранная нода>
- title =
L×Box [final = <route.final>]— сырое значениеroute.finalиз конфига (direct, имя группы/селектора, тег ноды). - text =
<селектор>: <выбранная нода>— активный селектор (HomeState.selectedGroup) и выбранная в нём нода.
Dart владеет обеими строками, native их не затирает (fallback «Connected»). Лейблы пересобираются на старте, при смене группы и при переключении ноды. Проверено на устройстве (CPH2411).
🐛 Fixes
- §121 — Выключенный пресет больше не роняет старт «server not found». Field report: «Yandex Safe DoT стал серым; ставлю основным резольвером — при запуске пишет "не найден"». Корень — при выключении routing-тоггла пресета (
cr.enabled=false) DNS-серверы пресета исчезали, а DNS-правило оставалось хвостом, и выбранный resolver-tag (dns.final/default_domain_resolver) указывал в пустоту → sing-box реджектил конфиг при старте. Теперь routing-тоггл — король: выключенный пресет мёртв целиком (ни серверов, ни DNS-правил, ни lock'ов), orphan-cleanup правил симметричен серверам, битый resolver-tag автоматически сбрасывается на безопасный дефолт, а новый fatal-валидатор ловит dangling-ссылку до отправки в ядро. Task spec. - §119 — Allow-list + DNS на MIUI снова работают без добавления самого L×Box в список. Field report (MIUI Android 13): при Allow-list трафик выбранных приложений не работал, пока в список не добавить сам L×Box. Корень — запрос на
defaultNetworkне требовалNOT_VPN, и на части прошивок система возвращала сам VPN как underlying-сеть → локальный DNS-резолвер слал запросы обратно в tun (loop), имена у allowed-приложений не резолвились. ДобавленNET_CAPABILITY_NOT_VPN→defaultNetworkвсегда физическая underlying-сеть. Плюс постоянный диаг-логLxBoxNet(adb logcat -s LxBoxNet) — следующий такой репорт диагностируется мгновенно. Где сеть уже была underlying (ColorOS/Pixel) — поведение не изменилось. Task spec.
🔬 Verified
flutter analyzeclean; 1045 тестов зелёные.- §123 — на устройстве (CPH2411): title
L×Box [final = vpn-1], textvpn-1: L: 🇫🇮⚡Финляндия-2. - §121 —
sing-box check(lx.6): выключение пресета не оставляет битых DNS-ссылок; 5 кейсов валидатораDanglingDnsServerRef. - §119 — фикс по root-cause-анализу + non-regression smoke на ColorOS/Pixel.
- Ядро без изменений —
1.13.13-lx.6.
📲 Install
adb install -r app-release.apkБез uninstall! Поверх существующей установки. Все настройки и подписки сохранятся.
🇷🇺 L×Box v2.1.0 на русском
- Имя сервера в шторке: уведомление теперь показывает куда идёт трафик —
L×Box [final = vpn-1]сверху иvpn-1: 🇫🇮⚡Финляндия-2снизу. Видно активный селектор и выбранную ноду, не открывая приложение. - Выключенный пресет больше не ломает запуск: раньше после отключения пресета мог остаться «хвост» DNS-правила со ссылкой на исчезнувший сервер, и VPN не стартовал («server not found»). Теперь routing-тоггл выключает пресет целиком, а битые ссылки чинятся автоматически.
- Allow-list + DNS на Xiaomi/MIUI: трафик выбранных приложений работает без добавления самого L×Box в список — DNS больше не зацикливается на VPN-интерфейсе.
Предыдущий релиз: v2.0.6.