zapret-kvn/xray_fluent/engines
Repository files (latest commit first)
Filename Latest commit message Latest commit date
loop-uh 2a35bd050e
Some checks failed
Windows project source guards / test (push) Failing after 33s
Транзакция выбора сервера и единый итог перехода (архитектура вместо заплатки)
Корень ошибки из диагностики 31.10.2026 (0.8.51, Hysteria2 без UDP из МГТС) —
в механизме, а не в одном месте:

1. «Какой сервер» имел три протокола: родной пул писал selected_node_id до
   горячего свитча, Hysteria — до readiness нового sidecar, Amnezia держала
   выбор в pending. После отказа прежний runtime работал, а выбранным и
   сохранённым оставался отказавший сервер.
2. Каждый шаг перехода сам писал ошибку в статус — даже вытесненный новым
   кликом («Не удалось запустить sing-box proxy runtime»), а поздний общий
   текст затирал точную причину; фаза «error» ставилась при живом соединении.

Новые модули:
- application/server_selection.py — единственная транзакция выбора для всех
  протоколов и видов перехода: при живом подключении новый сервер — только
  цель (pending), выбранным становится в commit() готового runtime; неудача
  её сбрасывает (откатывать нечего), без подключения выбор фиксируется сразу.
- application/transition_outcome.py — шаги сообщают причину
  (_fail_transition), сильнейшая побеждает (SECURITY > CAUSE > CORE > STEP),
  публикует один раз _on_transition_runner_finished; вытесненный переход
  молчит; фаза выводится из того, что работает («Подключено» + «Соединение
  осталось на «…»»).
- diagnostics/transport_failure.py (из предыдущего коммита) даёт причину CAUSE.
- signature_service считает желаемый runtime по цели, а не по выбранному.

E2E tests/test_app_e2e_hysteria_udp_switch.py на win10: настоящие sing-box и
hysteria, рабочий сервер и UDP-«чёрная дыра». v0.8.51: 3/3 FAIL (выбран
отказавший сервер; ложная ошибка sing-box; нет причины). Новый код: 3/3 OK.
Полный набор Windows: 1831 OK.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 10:42:12 -04:00
..
amnezia Отказ сервера по UDP: понятная причина и выбор остаётся на рабочем сервере 2026-10-31 10:12:37 -04:00
hysteria Отказ сервера по UDP: понятная причина и выбор остаётся на рабочем сервере 2026-10-31 10:12:37 -04:00
sidecar Подключение и переключения быстрее: без лишних ожиданий и PowerShell 2026-10-14 22:41:18 +03:00
singbox Транзакция выбора сервера и единый итог перехода (архитектура вместо заплатки) 2026-10-31 10:42:12 -04:00
xray Xray: один несобираемый сервер больше не валит запуск всего пула 2026-10-18 20:06:09 +03:00
zapret Пинг через ядро, VPN без пресета Zapret, окно без консоли, прокси для локальной сети 2026-10-27 15:19:55 -04:00
__init__.py фикс открытого прокси 2026-04-07 20:49:48 +03:00
health_check.py fix: refresh managed DNS and cache server table rendering 2026-09-06 14:51:07 +03:00
runtime_security.py feat: use official Amnezia transport and organize runtime modules 2026-09-06 00:14:08 +03:00
socks_probe.py Отказ сервера по адресу назначения не рвёт рабочий туннель; проверка без DoH 2026-09-25 15:48:26 +03:00
tls_fingerprint.py Проверки не выдают серверы: рукопожатие Chrome, имя сервера не уходит в открытый DNS 2026-10-16 17:57:00 +03:00
xray_outbound_compat.py Xray: один несобираемый сервер больше не валит запуск всего пула 2026-10-18 20:06:09 +03:00