LxBox v2.25.1 发布

已发布 v2.25.1,以下为官方变更日志。

官方变更日志

L×Box v2.25.1

Three fixes on top of v2.25.0.
That release is the main body of changes: one parsing engine with
singbox-launcher 2.0.0
(contract 1.1.46), and the Start insurance when the core refuses a server
(#147). Read it first — this
patch does not repeat it.

This patch: Stats → Memory breakdown shows PSS figures again; XHTTP extra keeps
sessionIDPlacement / sessionIDKey; a hop chain on Servers stays between the
rows you drop it among.

Три правки поверх v2.25.0.
Основной корпус изменений — там: один движок разбора с
лаунчером 2.0.0
(контракт 1.1.46) и страховка кнопки Start, когда ядро отказывается от
сервера (#147). Сначала читайте
2.25.0 — этот патч его не повторяет.

В этом патче: в Stats → Memory разбивка PSS снова с цифрами; XHTTP extra
сохраняет sessionIDPlacement / sessionIDKey; цепочка на Servers остаётся
между строками, куда её поставили.

🇬🇧 English

🩹 Fixes

  • §:Before:Now
  • 507:After v2.25.0 the Stats → Memory sheet still showed RSS and native-heap malloc counters, but the Breakdown section (Java / Native / Graphics / Code / Stack / System / Other) was all 0 B. Debug.getMemoryInfo no longer fills summary. PSS categories on Android 10+:The snapshot comes from ActivityManager.getProcessMemoryInfo. If AMS is empty, the old call is the fallback; empty summary. categories fall back to dalvikPss / nativePss / otherPss / totalPss
  • 508:A live vless+xhttp link parsed, and seqPlacement from extra arrived, but Xray proto names sessionIDPlacement / sessionIDKey were dropped. The core then put the session id in the path (its default), while the server looked for a cookie with a custom key:Those aliases map to sessionplacement / sessionkey (in extra and as flat query params). Canonical names still win. sessionIDLength / sessionIDTable are not mapped — "0" without a table means unset. Overlay until the launcher registry takes the alias (launcher #131)
  • 509:Servers draws subscriptions, servers, folders and hop chains in one list, but a drop wrote two blocks: chains were saved at the tail of sources[] and jumped back down:A mixed drag writes the array as shown. Chain records keep their slots among the other kinds. The “a hop may only point at a chain above” rule is unchanged — it is computed over the chains’ mutual order

🧪 Tests

CI checks (analyze, the full test suite, four l10n checkers, docs parity) is
the release gate. Locally: xhttptest for the proto aliases, chainsstorage_test
and lxbackuptest for mixed sources[] order.

🇷🇺 Русский

🩹 Исправления

  • §:Было:Стало
  • 507:После v2.25.0 шторка Stats → Memory по-прежнему показывала RSS и malloc-счётчики native heap, а секция Breakdown (Java / Native / Graphics / Code / Stack / System / Other) была сплошными 0 B. Debug.getMemoryInfo на Android 10+ больше не заполняет категории PSS summary.:Снимок берётся у ActivityManager.getProcessMemoryInfo. Если AMS пуст — запасной прежний вызов; пустые summary. подставляют dalvikPss / nativePss / otherPss / totalPss
  • 508:Живая vless+xhttp ссылка разбиралась, seqPlacement из extra доезжал, а proto-имена Xray sessionIDPlacement / sessionIDKey терялись. Ядро клало session id в path (свой дефолт), сервер искал cookie с кастомным ключом:Алиасы мапятся в sessionplacement / sessionkey (в extra и в плоском query). Канон сильнее proto-имени. sessionIDLength / sessionIDTable не мапятся: "0" без таблицы — «не задано». Оверлей, пока реестр лаунчера не заберёт алиас (лаунчер #131)
  • 509:Servers рисует подписки, серверы, папки и цепочки одним списком, но drop писал два блока: цепочки сохранялись хвостом sources[] и возвращались вниз:Смешанный drag пишет массив как на экране. Записи цепочек держат свои слоты среди остальных родов. Инвариант «хоп ссылается только на цепочку выше» не менялся — он считается по взаимному порядку цепочек

🧪 Тесты

Релизный гейт — CI checks (analyze, полный набор тестов, четыре l10n-чекера,
паритет доков). Локально: xhttptest на proto-алиасы, chainsstorage_test и
lxbackuptest на смешанный порядок sources[].

Install / Установка

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

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

Previous release / Предыдущий релиз: v2.25.0.
The main body of changes is there / Основной корпус изменений — там:
GitHub Release v2.25.0.