zapret-kvn/xray_fluent/ui
Repository files (latest commit first)
Filename Latest commit message Latest commit date
loop-uh d301e8a49a Hysteria: рабочий сервер не заменяется из-за случайной ошибки; подписки — гонка маршрутов
Инцидент 01.10.2026 (диагностика 0.8.4): простаивавшая QUIC-сессия Hysteria2
оборвалась («timeout: no recent network activity»), официальный клиент
переподключился в ту же секунду, но приложение по одной строке лога запустило
восстановление: остановило туннель, взяло первый по порядку сервер (он
отвечал «authentication error, HTTP 301») и осталось отключённым до ручного
подключения. Пользователь видел это как «интернет отваливается и не встаёт».

Hysteria
- Ошибка транспорта в логе работающего туннеля — повод для проверки, а не
  приговор (HysteriaManager._begin_tunnel_check). Сервер остаётся, если он
  снова авторизовал клиента («connected to server») или HTTPS-проба через
  relay прошла; failure публикуется только после двух проваленных волн.
  Ошибки безопасности (TLS/pin/auth/obfs) по-прежнему публикуются сразу.
- Если замена всё же понадобилась и резервный сервер отказал, он исключается
  (auth/TLS — на час, сеть — на 5 минут), а приложение возвращается на
  выбранный пользователем сервер вместо отключения. То же при отсутствии
  резервного сервера. Ручное действие отменяет отложенный возврат.
- Кандидат с is_alive=False в замену не берётся.

Подписки
- fetch_subscription: прямой маршрут и VPN-прокси идут гонкой (фора прямого
  1 с) под общим дедлайном 30 с вместо последовательных попыток со сложением
  таймаутов; чтение тела ограничено тем же сроком. Ответ сервера напрямую
  остаётся окончательным, отказ через прокси ждёт прямой маршрут 3 с.
- Статус «Обновление…» не зависает: любая ошибка применения результата
  завершает обновление; в колонке виден этап и секунды; обновления пишутся
  в лог; выход из приложения отменяет загрузку.

Потоки
- Пинг — долгоживущая служба PingService без QThread; короткие QThread-воркеры
  живут в корзине до своего finished (worker_keeper). Убирает вылет
  «QThread: Destroyed while thread is still running».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 19:20:34 +03:00
..
singbox Zapret: модуль и страница переписаны — проще, понятнее, строже 2026-09-28 20:53:25 +03:00
__init__.py UI: кружок переключателя всегда совпадает с состоянием 2026-09-26 12:19:36 +03:00
about_page.py Prepare v0.4.79: unified theming, responsive layout, real flags 2026-08-11 23:21:28 +03:00
adaptive_buttons.py Кнопки: подпись уходит в подсказку, когда ряду не хватает места 2026-09-26 18:25:16 +03:00
base_page.py Prepare v0.4.79: unified theming, responsive layout, real flags 2026-08-11 23:21:28 +03:00
bulk_edit_page.py feat: add subscriptions and core-native hot switching 2026-08-12 00:57:49 +03:00
configs_page.py Простое правило: регистр программ, слово без точки, защитные правила, «Применить» 2026-09-27 13:14:18 +03:00
connection_orb.py Панель: текст слева, сцена справа, подключение — только кнопкой питания 2026-09-26 21:51:54 +03:00
dashboard_page.py Главная: порты прокси — «SOCKS5: … · HTTP: …», режим mixed в подсказке 2026-09-28 21:38:21 +03:00
dashboard_widgets.py Панель: плитки VPN/Прокси показывают выбор, пока идёт переход 2026-09-26 19:13:57 +03:00
deferred_page.py feat: use official Amnezia transport and organize runtime modules 2026-09-06 00:14:08 +03:00
detail_page.py feat: add subscriptions and core-native hot switching 2026-08-12 00:57:49 +03:00
elided_label.py Маршрутизация: подпись активной копии в одну строку с многоточием 2026-09-26 20:55:59 +03:00
file_manager.py fix: unify transport transitions and restore direct Russian services 2026-09-06 01:10:35 +03:00
fluent_dialog.py Prepare v0.4.79: unified theming, responsive layout, real flags 2026-08-11 23:21:28 +03:00
fluent_fixes.py Кнопки: подпись уходит в подсказку, когда ряду не хватает места 2026-09-26 18:25:16 +03:00
history_page.py Панель: сфера подключения, плитки трафика, русские переключатели 2026-09-26 13:18:28 +03:00
lock_dialog.py Prepare v0.4.79: unified theming, responsive layout, real flags 2026-08-11 23:21:28 +03:00
logs_page.py Кнопки: подпись уходит в подсказку, когда ряду не хватает места 2026-09-26 18:25:16 +03:00
main_window.py Hysteria: рабочий сервер не заменяется из-за случайной ошибки; подписки — гонка маршрутов 2026-10-01 19:20:34 +03:00
motion.py Панель: новый главный экран, запоминание бокового меню, детерминированный выход 2026-09-26 16:17:42 +03:00
node_detail_widget.py fix: preserve interactive server table and bound DNS fallback readiness 2026-09-06 02:07:48 +03:00
node_edit_page.py fix: preserve interactive server table and bound DNS fallback readiness 2026-09-06 02:07:48 +03:00
nodes_page.py Смена сервера всегда называет источник: [select] в логе, «Следующий» без фокуса 2026-09-28 21:35:12 +03:00
nodes_table_model.py Тема: позитивные статусы в цвете акцента 2026-09-26 15:16:04 +03:00
nodes_view.py Смена сервера всегда называет источник: [select] в логе, «Следующий» без фокуса 2026-09-28 21:35:12 +03:00
pending_state.py Системный прокси: переключатель показывает выбор, а не старое состояние 2026-09-26 18:56:54 +03:00
preset_edit_widget.py Zapret: модуль и страница переписаны — проще, понятнее, строже 2026-09-28 20:53:25 +03:00
privacy.py feat: use official Amnezia transport and organize runtime modules 2026-09-06 00:14:08 +03:00
qt_lifecycle.py Маршрутизация: структурный редактор sing-box по схеме ядра 2026-09-26 20:30:17 +03:00
routing_page.py feat: use official Amnezia transport and organize runtime modules 2026-09-06 00:14:08 +03:00
settings_page.py Обновление приложения ставится само в фоне, без окна и без петли 2026-09-27 16:23:12 +03:00
subscriptions_page.py Hysteria: рабочий сервер не заменяется из-за случайной ошибки; подписки — гонка маршрутов 2026-10-01 19:20:34 +03:00
theme.py Тема: позитивные статусы в цвете акцента 2026-09-26 15:16:04 +03:00
traffic_graph.py Панель: новый главный экран, запоминание бокового меню, детерминированный выход 2026-09-26 16:17:42 +03:00
updates_page.py Тема: позитивные статусы в цвете акцента 2026-09-26 15:16:04 +03:00
window_geometry.py feat: use official Amnezia transport and organize runtime modules 2026-09-06 00:14:08 +03:00
zapret_browser.py Zapret: макет с нуля — список ↔ карточка вместо выпадающих списков 2026-09-28 21:28:46 +03:00
zapret_page.py Zapret: макет с нуля — список ↔ карточка вместо выпадающих списков 2026-09-28 21:28:46 +03:00