L×Box v2.15.6
Detour-галка больше не отбирает канал у правил. Раньше «Use as detour»
работала как роль: разрешив каналу быть detour-мишенью, вы теряли его в выборе
route final и правил. Теперь это разрешение — канал доступен и правилам, и
detour одновременно. Плюс починен баг Debug API, из-за которого вылеченные
detour-ссылки могли вернуться на диск.
🆕 Изменения
§274 — detour-канал: роль → разрешение
| Было | Стало |
|---|---|
| Канал с галкой detour исчезал из выбора route final и правил | Канал доступен целям правил и detour одновременно |
| Установка галки переписывала существующие ссылки правил на vpn-1 | Ссылки правил не трогаются (heal только при снятии галки / выключении / удалении) |
detour × Include block — запрет (попап, валидатор, 409 в Debug API)
| Разрешены полностью, без предупреждений |
| Канал-detour без нод молча падал в direct | Fallback единый для всех — block; о таком канале сообщает уведомление на Home |
| Роль читалась по галке в редакторе | ⚙ — часть имени канала, видна во всех списках; снятие галки убирает префикс |
Взаимоисключение ролей было дешёвой профилактикой detour-циклов. Настоящий
замок — fatal-детектор циклов (§254) — давно на месте, страховка его пережила.
vpn-1 по-прежнему без detour-галки: главный канал — дефолтная мишень всего и
резерв при лечении ссылок.
§275 — POST /channels терял вылеченные detour-ссылки
Создание канала с полем enabled:false лечило stale detour-ссылки в storage
(сценарий: restore из backup оставил ссылку на канал, которого больше нет), но
не зеркалило лечение в память. Следующее сохранение — переименование источника,
переключение члена папки, авто-обновление подписки — возвращало вылеченную
ссылку на диск, а сборка конфига брала её вопреки показанному уведомлению.
PATCH и DELETE того же хендлера зеркалили правильно.
Затрагивало только Debug API; через интерфейс не воспроизводилось.
Мутации каналов теперь идут через единый ChannelMutations: лечение storage и
ресинк памяти — одна операция, разделить их вызывающий не может. Голые
SettingsStorage.addChannel/updateChannel/deleteChannel помечены
@visibleForTesting — вызов мимо сервиса стал ошибкой analyze. Раньше инвариант
держался на внимательности в шести местах и разъехался.
Debug API
/channels: снят 409 наdetour×include_blockи тихая нормализация
include_block;healed.rulesприdetour:true— всегда 0.
✅ Проверено
- 1887 тестов зелёные, analyze чист (весь проект, включая
test/). - Ядро:
v1.14.0-lx.5(stable, без изменений с v2.15.5). - Device-verified на CPH2411 (Android 15): §274 — вживую; §275 — полный цикл
через Debug API (создание stale-ссылки → re-create канала → сохранение
контроллера → ссылка не воскресает).
📲 Install
adb install -r LxBox-v2.15.6-arm64-v8a.apkБез uninstall! Поверх существующей установки. Настройки и подписки сохранятся.
Предыдущий релиз: v2.15.5.