github Leadaxe/LxBox v1.3.1
LxBox v1.3.1

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

L×Box v1.3.1

Android VPN client powered by sing-box.

Патч-релиз: UX полировка + критические фиксы.

🐛 Critical fixes

  • UserServer после рестарта показывал спиннер навсегда — toJson хранил только rawBody, fromJson не парсил его обратно, NodeSettingsScreen._load() видел пустой nodes → _originalTag не сетился → спиннер. Теперь fromJson реконструирует nodes через parseAll(decode(rawBody)). rawBody — источник истины, nodes derivable.
  • Detour dropdown в Node Settings не сохранялся — писал detour в JSON ноды, но parseSingboxEntry это поле не восстанавливает → на save → reparse detour терялся. Теперь persist через entry.detourPolicy.overrideDetour (которое builder уже умеет применять), сразу при выборе в dropdown'е.
  • XHTTP warning перекрывался TLS-insecure — node.warnings.first бралось безусловно, InsecureTlsWarning (parse-time) затмевал UnsupportedTransportWarning('xhttp') (emit-time). Теперь _NodeWarningRow сортирует по severity (error → warning → info).
  • TLS-insecure severity → info (grey) — провайдеры часто намеренно ставят флаг (REALITY, IP-литералы, self-signed), не должен кричать. Banner вверху detail-экрана теперь считает только actionable warning'и.

✨ UI polish

NodeRow новый layout

┌────────────────────────────────────────────────────┐
│ Tag                                                │
│ [ACTIVE✓]  PROTOCOL                          50MS  │
└────────────────────────────────────────────────────┘
                                                ^right-aligned
  • ACTIVE — зелёный pill (раньше текстовое "ACTIVE · 50MS")
  • Протокол — серым: VLESS, Hy2, WG, TUIC, SS. Для auto-proxy-out (urltest) показывает proto выбранной ноды: → BL: Frankfurt VLESS. TLS-суффикс убран — у большинства протоколов дефолт, метить = шум.
  • Ping — right-aligned, цвет по latency (<200ms зелёный, <500 оранжевый, >500/err красный)

Long-press → Copy URI

Новый пункт в popup-меню — оригинальный vless:// / wireguard:// / etc через node.toUri() (round-trip parser v2). Copy server переименован в Copy server (JSON) для ясности. Для control-узлов — snackbar No source URI for this node.

NodeSettingsScreen

  • Editable Tag field — отдельный TextField под Server (раньше тег правился через JSON-редактор). AppBar title обновляется live.
  • Mark as detour server switch — добавляет/убирает префикс ⚙ к tag'у. Хранится прямо в tag (никаких отдельных флагов в JSON), визуально выделяет detour-серверы в node list и в Override-detour picker'е.

Smart add flow

  • Empty input + tap + = paste from clipboard — если поле ввода пустое, + открывает поток paste (анализ типа + диалог подтверждения). Один тап вместо двух.
  • Auto-regenerate config после addFromInput — после paste/QR/file автоматом generateConfig + saveParsedConfig + snackbar. Раньше нужно было жать ⟳ вручную.

Subscription row subtitle

  • Единообразный формат для UserServer: <PROTOCOL> server (например WIREGUARD server, VLESS server). Раньше был разный текст в зависимости от формы импорта (WireGuard config / Direct link / JSON outbound) — описывало форму копипасты, не суть. После рестарта (когда entry.status терялся) показывало бессмысленное "1 node" для single-node entries.

♻️ Rename: UserServers → UserServer

Исторически во множественном, но всегда ровно 1 node (paste/QR/file/manual). Переименовано в singular для ясности. Затронуто 10 файлов (1 модель, 2 контроллера, 4 экрана, 4 теста, 1 миграция). JSON discriminator 'type': 'user' сохранён — миграции не нужны.

📝 Docs

Обновлены спеки 003 (§4.1 NodeRow layout, §5 Copy URI), 006 (§2.1 subtitle, §6 paste-on-empty-+), 017 (editable Tag, Mark as detour, detour persistence через overrideDetour), 026 (§1 UserServer rename + rehydrate invariant).

📦 Install

Скачай APK ниже, установи на Android (8.0+). 128/128 тестов проходят. Release APK ~71 MB.

Don't miss a new LxBox release

NewReleases is sending notifications on new releases.