loop-uh
8f26c94958
Zapret source guards / validate (push) Successful in 13s
Windows-сборка / Dev Dev 21.1.7.205 опубликован
Test: accept the builder's current spelling of the builtin presets source
...
release_pipeline.py now takes the sources through a parameter (public_src) instead of
the PUBLIC_SRC constant, so test_inno_reads_all_required_resources_only_from_prepared_stage
failed on a stale string. It now accepts either spelling; the builder still has to stage
presets/builtin/winws2 and winws1 into the installer, which is what the test is for.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 19:35:02 -04:00
..
e2e_windows
Мягкая остановка движка и перечитывание списков без перезапуска
2026-10-07 17:47:04 +03:00
fixtures
Откат QUIC: браузер открывает сайт с QUIC и без него — видна цена отката на TCP
2026-10-20 13:03:29 -04:00
blockcheck_words.py
BlockCheck: запасной расчёт слов для старых отчётов убран — источник слов один, отчёт проверки; старый отчёт открывается без слова итога и меток; пример экскурсии и образцы тестов несут готовые слова
2026-10-09 23:11:13 +03:00
conftest.py
Перевести настройки ZapretGUI на SQLite
2026-08-14 20:32:33 +03:00
test_about_actions_architecture.py
fix
2026-06-17 23:47:29 +03:00
test_about_help_accessibility.py
Ссылки на git и вики: открытое имя сайта выбирается один раз и для обновления, и для кнопок
2026-10-21 06:17:57 -04:00
test_about_kvn_accessibility.py
Страница «О программе» оживает: карточки вкладок выплывают по очереди, глобус KVN поворачивается, звезда Premium поблёскивает; дыра на вкладке KVN убрана
2026-09-28 20:19:09 +03:00
test_about_motion_widgets.py
Страницы собираются блоками: сначала видимое, остальное позже; появление блока рисуется одной картинкой и стоит процессору вдвое меньше
2026-10-08 15:15:07 +03:00
test_about_page_accessibility.py
Страница Premium: зачем нужен код, инструкция из 4 шагов и кнопка «Как это работает»
2026-10-14 21:03:39 +03:00
test_about_tabs_height.py
О программе: высота вкладок — по открытой вкладке, под «Zapret KVN» больше нет пустоты высотой со «Справку»
2026-09-30 13:46:38 +03:00
test_accessibility_helpers.py
Память: окно, скрытое в трей или свёрнутое дольше 2 минут, собирает мусор, чистит кэш картинок Qt и отдаёт Windows лишние страницы (пока окно открыто — ничего не выгружается); история оркестратора ограничена 3000 целей (давние UDP-адреса вытесняются, закреплённые остаются), счётчики успехов и «последняя стратегия» тоже ограничены; анализатор журналов winws хранит начало и конец соединения (200 пакетов) и не больше 200 тыс. пакетов на журнал; подсказки удаляются вместе со своим виджетом; реестр тем забывает удалённые виджеты сразу; повторное применение той же темы не перекрашивает все виджеты; предупреждение проверки прокси Telegram заменяет прежнее, а не копится
2026-09-30 23:35:31 +03:00
test_accessibility_static_guards.py
Hosts меняется только по кнопке «Применить»: щелчки копят черновик с предпросмотром строк, видно всё, что лежит в hosts; Telegram Proxy больше не пишет в hosts сам при открытии
2026-09-29 17:07:30 +03:00
test_active_preset_single_source.py
Вернувшийся выбранный файл всегда применяется к работающему DPI: пока файла не было, DPI мог перезапуститься на запасном пресете, и сравнение с последним переключением ошибочно считало возврат «тем же пресетом»
2026-09-30 14:33:28 +03:00
test_active_row_motion.py
Preset click: no full-list repaint at the start or end of the marker slide
2026-10-23 16:57:17 -04:00
test_active_server_icon.py
Серверы: активный сервер обновлений помечен векторным значком — залитый кружок с галочкой в цвете акцента вместо жёлтой эмодзи-звезды, в таблице и в подписи «активный» над ней; значок перекрашивается при смене темы и акцента
2026-10-06 23:16:13 +03:00
test_address_kinds.py
Проверки сети: общая основа для запросов DNS — у каждого способа связи своя функция (обычный DNS по UDP и по TCP, шифрованный DoT на порту 853 и DoH на порту 443), запрос можно снять кнопкой «Стоп», а вместо текста ошибки возвращается вид сбоя: сервер молчит, порт закрыт, соединение оборвано, чужой сертификат, ошибка HTTP; эталонных серверов для сравнения ответов теперь четыре вместо двух и список один на BlockCheck и «Проверку домена» — если провайдер закрыл один из них (как 8.8.8.8), BlockCheck и «DNS подмена» называют его с причиной и советуют не выбирать для защищённого DNS; перехват DNS по контрольному адресу, виды адресов-заглушек и отмена запросов сведены в одно место вместо двух-трёх копий с разной логикой; адрес внутренней сети провайдера (100.64.0.0/10) в ответе DNS считается подменой; удалена старая проверка, которую никто не вызывал (preflight, isp_page_detector, ping_tester) вместе с её настройками и моделями
2026-10-07 19:59:00 +03:00
test_aligned_switch.py
Hosts переписан: страница не прокручивается целиком — крутится только список сервисов; в меню «☰» открывается «Файл hosts» с раскраской строк по владельцам и кнопкой «Сохранить»
2026-09-29 18:16:40 +03:00
test_app_package_lazy_imports.py
Reduce Zapret2 control import cost
2026-05-29 19:23:12 +03:00
test_appearance_accessibility.py
Прозрачность окна выбирается из выпадающего списка вместо ползунка: прокрутка страницы колесом больше не меняет её случайно
2026-09-28 17:05:19 +03:00
test_appearance_page_construction.py
Сборка страниц ещё на треть быстрее: убраны перехватчики событий на каждом элементе, «Оформление» достраивает нижние разделы позже
2026-10-08 16:31:34 +03:00
test_appearance_page_ui_guards.py
Accent colour dialog: restyle only when the colour changed; drop dead style refresh
2026-10-23 16:53:17 -04:00
test_appearance_worker_queue.py
fix
2026-06-22 22:17:22 +03:00
test_application_log_service.py
Replace legacy logging with bounded async pipeline
2026-07-21 02:02:52 +03:00
test_architecture_cleanup_contract.py
Проверки: фоновые задачи берут замер времени из app, проверка тем ищет названия, а не слова в комментариях
2026-10-12 21:11:16 +03:00
test_atomic_text.py
Пресеты и профили — доработки после самопроверки: один битый байт больше не переводит UTF-8 файл в cp1251, запуск winws, описание в списке и привязанный файл читаются по общему правилу кодировки; комментарий над первым профилем больше не даёт ложную «ошибку сохранения»; папки пресетов и профилей пишутся под одним замком; при закрытии синхронная запись пропускается, если зависшую запись пришлось прервать; результат для ранее открытого профиля не переключает страницу обратно и обновляет строку в списке, ожидающая стратегия другого профиля не отбрасывает результат, переключатель чужого профиля идёт в очередь, записи при закрытии идут в порядке щелчков; при чужом владельце быстрые щелчки по пресетам снова склеиваются; «DPI не запущен» больше не пишется WARNING на каждый щелчок; убраны осиротевшие строки диалога имени пресета
2026-09-30 02:26:03 +03:00
test_backend_page_data_warmup.py
Запуск: скрытые страницы собираются про запас только когда этого некому заметить; точный таймер Windows удалён
2026-10-08 01:57:48 +03:00
test_background_code_widget_check.py
Архитектура потоков: элементы окна создаются только в потоке окна. Страж в единой точке создания плашек InfoBar переносит вызов из фонового потока в поток окна; службы с подписчиками (настройки программы, проверка обновлений) зовут страницы только в потоке окна; общие объекты Qt (шина событий пресетов, менеджер Telegram Proxy, гейт воркеров) живут в потоке окна, кто бы их ни создал; проверка для CI запрещает фоновым модулям плашки, диалоги и виджеты
2026-10-06 22:06:37 +03:00
test_background_worker_gate.py
Проверять целостность поставки и чинить её самостоятельно
2026-07-28 15:07:14 +03:00
test_base_page_accessibility.py
Page show: find the first focusable control lazily
2026-10-23 16:18:18 -04:00
test_base_page_layout.py
Исправить перенос описаний страниц
2026-07-27 21:31:44 +03:00
test_base_page_layout_contract.py
fix
2026-06-18 18:46:40 +03:00
test_blobs_feature_removed.py
Remove obsolete blobs feature
2026-06-07 01:17:50 +03:00
test_block_build.py
Тяжёлые страницы открываются по частям: Telegram Proxy и его продвинутые настройки собираются блоками, первый экран достраивается после первого кадра
2026-10-08 22:34:33 +03:00
test_block_cause.py
BlockCheck: разбор причины — только у сайтов, которые не открылись, и смысл «почерка браузера» развёрнут под Chrome-проверку: строка «Как Chrome» берётся из основного запроса, простые TLS 1.2/1.3 и HTTP шлются лишь закрытому сайту, и если Chrome режут, а простое приветствие к тому же адресу проходит — это блокировка по почерку браузера (раньше наоборот: «проверка открывает, а Chrome не проходит»). Набор объёма идёт по одному соединению «как Chrome» (HTTP/2, сжатие, заголовки Chrome на Windows с русским языком) вместо 60 запросов Python; исправлено падение libcurl на повторных запросах по одному соединению (curl_cffi освобождал списки заголовков и адресов после каждого запроса)
2026-10-16 18:30:20 +03:00
test_block_float_in.py
Тяжёлые страницы открываются по частям: Telegram Proxy и его продвинутые настройки собираются блоками, первый экран достраивается после первого кадра
2026-10-08 22:34:33 +03:00
test_block_kind.py
BlockCheck: вывод «по имени» требует повторного обрыва; три «разрешённых» имени; белый список назван по прямым пробам
2026-10-08 02:03:06 +03:00
test_block_view.py
Единый источник слов для всех проверок, маскирование внешнего адреса, видеоузлы YouTube вашей сети
2026-10-20 11:02:18 -04:00
test_blockcheck_brand_cards.py
BlockCheck: логика итога вынесена из файла виджетов в модуль без Qt (summary_model)
2026-10-13 00:19:38 +03:00
test_blockcheck_domain_actions.py
Pass BlockCheck page actions to workers
2026-05-30 00:54:04 +03:00
test_blockcheck_googlevideo_bare_host.py
Заменять голый googlevideo.com на rr-хост и запрещать его в доменах
2026-08-11 17:35:03 +03:00
test_blockcheck_googlevideo_discovery.py
Видео YouTube: объём и скорость по настоящему адресу замера плеера, страница ролика dQw4w9WgXcQ
2026-10-20 11:52:10 -04:00
test_blockcheck_page_accessibility.py
BlockCheck: кнопка «С обходом и без» — две проверки подряд с переключением Zapret
2026-10-20 12:44:25 -04:00
test_blockcheck_past_checks.py
Навигация окна устроена заново: «назад» и «вперёд» помнят вкладки, открытый пресет, свой DNS-сервер и прошлые проверки, строка пути и «закрыть» больше не ходят по кругу, удалённое само уходит из истории
2026-10-15 20:29:29 +03:00
test_blockcheck_report_levels.py
BlockCheck: логика итога вынесена из файла виджетов в модуль без Qt (summary_model)
2026-10-13 00:19:38 +03:00
test_blockcheck_requests_transport.py
Проверки сети: общая основа для запросов DNS — у каждого способа связи своя функция (обычный DNS по UDP и по TCP, шифрованный DoT на порту 853 и DoH на порту 443), запрос можно снять кнопкой «Стоп», а вместо текста ошибки возвращается вид сбоя: сервер молчит, порт закрыт, соединение оборвано, чужой сертификат, ошибка HTTP; эталонных серверов для сравнения ответов теперь четыре вместо двух и список один на BlockCheck и «Проверку домена» — если провайдер закрыл один из них (как 8.8.8.8), BlockCheck и «DNS подмена» называют его с причиной и советуют не выбирать для защищённого DNS; перехват DNS по контрольному адресу, виды адресов-заглушек и отмена запросов сведены в одно место вместо двух-трёх копий с разной логикой; адрес внутренней сети провайдера (100.64.0.0/10) в ответе DNS считается подменой; удалена старая проверка, которую никто не вызывал (preflight, isp_page_detector, ping_tester) вместе с её настройками и моделями
2026-10-07 19:59:00 +03:00
test_blockcheck_result_cards.py
BlockCheck по умолчанию проверяет сайты так, как их открыл бы браузер, а шумное — по выбору: режим «Полная проверка» стал «Глубокой диагностикой» и стоит последним, в нём одном идут серия UDP-пакетов, проверка отправки и самопроверка перехвата на 192.0.2.1; прошлые «Полные проверки» сравниваются с новыми как тот же режим; поиск разрешённых имён делает случайные паузы вместо ровного ритма; экскурсия обновлена
2026-10-16 18:39:00 +03:00
test_blockcheck_run_runtime_architecture.py
Let BlockCheck runtime own run workers
2026-06-02 00:07:24 +03:00
test_blockcheck_scan_runtime_state_thread_contract.py
BlockCheck: кнопка «С обходом и без» — две проверки подряд с переключением Zapret
2026-10-20 12:44:25 -04:00
test_blockcheck_support_prepare_queue.py
Use latest state for BlockCheck support prepare
2026-06-08 21:24:41 +03:00
test_blockcheck_tabs_uniform.py
BlockCheck: подложка только у самих карточек — группы, сетка результатов и прошлые проверки лежат без своей; небольшие группы проблем стоят столбцами; «свои домены» вернулись в шапку под кнопку «Проверить»
2026-10-08 14:39:47 +03:00
test_blockcheck_targets.py
Находить GoogleVideo CDN в сети пользователя
2026-08-06 14:15:17 +03:00
test_blockcheck_user_domain_googlevideo.py
Заменять голый googlevideo.com на rr-хост и запрещать его в доменах
2026-08-11 17:35:03 +03:00
test_blockcheck_user_domain_runtime_architecture.py
Use queued state for BlockCheck user domains
2026-06-11 14:54:45 +03:00
test_blockcheck_worker_architecture.py
BlockCheck: убран мёртвый код, «Остановить» в очереди не теряется, отметка реестра не дописывается в уже показанный отчёт, «С прошлой проверки» сохраняется в файл
2026-10-12 21:23:04 +03:00
test_browser_check.py
После «Применить» сайт открывает и настоящий браузер: Edge (или Chrome) без окна с пустым временным профилем, своим DNS и без QUIC; не открылся в браузере, хотя проба через пресет открыла, — отдельное предупреждение с причиной (ERR_…); нет браузера — остаётся итог пробы
2026-10-16 18:03:39 +03:00
test_browser_hello.py
BlockCheck: разбор причины — только у сайтов, которые не открылись, и смысл «почерка браузера» развёрнут под Chrome-проверку: строка «Как Chrome» берётся из основного запроса, простые TLS 1.2/1.3 и HTTP шлются лишь закрытому сайту, и если Chrome режут, а простое приветствие к тому же адресу проходит — это блокировка по почерку браузера (раньше наоборот: «проверка открывает, а Chrome не проходит»). Набор объёма идёт по одному соединению «как Chrome» (HTTP/2, сжатие, заголовки Chrome на Windows с русским языком) вместо 60 запросов Python; исправлено падение libcurl на повторных запросах по одному соединению (curl_cffi освобождал списки заголовков и адресов после каждого запроса)
2026-10-16 18:30:20 +03:00
test_build_resource_layout.py
Test: accept the builder's current spelling of the builtin presets source
2026-10-24 19:35:02 -04:00
test_builtin_preset_override_refresh.py
Уведомления: центр уведомлений теперь можно вызывать из любого потока — из фонового потока показ переправляется в поток окна. В 21.1.7.19 именно уведомление «Встроенные пресеты обновлены», созданное в фоновом потоке, подвешивало программу; замена устаревших копий встроенных пресетов при запуске возвращена
2026-10-06 21:41:09 +03:00
test_builtin_profile_catalog.py
Профиль zapret.moe вместо git.zapret.moe: список lists/zapret-moe.txt охватывает все сайты проекта
2026-10-16 20:55:37 +03:00
test_button_motion.py
Тест жестов кнопок больше не роняет интерпретатор: подмена drawIcon не удерживает QPainter после отрисовки
2026-10-06 00:01:33 +03:00
test_bypass_tools.py
BlockCheck называет способ блокировки: если сайт обрывается на шифровании, программа тут же пробует тот же адрес с посторонним именем и вовсе без имени — отвечает, значит режут по имени сайта (в отчёте «Блокировка по имени сайта: с именем … соединение обрывается, а с посторонним именем тот же сервер отвечает»), не отвечает ни с каким — закрыт сам адрес или его сеть; на порту 80 распознаётся страница провайдера о блокировке (код 451, переход на страницу оператора, ссылка на реестр), при этом защита сайта от ботов (403, 429, «вы не робот») за блокировку не принимается; адрес, который отвечает на пинг, но не принимает соединения, называется закрытым для соединений; причина показана в подробностях строки, в подсказке и первой строкой совета; в режиме «Все сайты» добавлены российские контрольные сайты (Яндекс, ВКонтакте): если открываются только они, а зарубежные контрольные нет — это названо режимом «белых списков» с пояснением, что Zapret в нём не помогает; BlockCheck и вкладка «DNS-серверы» предупреждают, если во время проверки работали другие программы обхода или VPN (Xray, sing-box, Clash, WARP, GoodbyeDPI и другие) — результат тогда показывает сеть вместе с ними
2026-10-07 20:36:30 +03:00
test_cards_grid_lazy_fill.py
Страницы собираются блоками: сначала видимое, остальное позже; появление блока рисуется одной картинкой и стоит процессору вдвое меньше
2026-10-08 15:15:07 +03:00
test_censor_scenarios.py
Тесты BlockCheck: каталог сценариев цензора — правила фильтра на входе, вид блокировки на выходе
2026-10-13 00:14:33 +03:00
test_cert_names.py
BlockCheck: новая вкладка «Проверка домена» слева от «DNS подмена» — для введённого домена или IP показывает пинг через Windows API без ping.exe (IPv4 и IPv6: отправлено/получено, потери, мин/средн/макс, TTL) и подключение к порту 443; адреса домена от двух с лишним десятков DNS-серверов (системные, список программы, свои, дополнительные независимые и шифрованные DoH как эталон) с пометками заглушек провайдера и предупреждением, если обычные DNS-запросы перехватываются по пути; владельца сети, ASN и подсеть адреса; домены на том же адресе — обратное имя, сертификат сайта, базы ip.thc.org и Shodan, HackerTarget как запасной; внешние сервисы отключаются галочкой, локальные адреса наружу не отправляются
2026-10-01 23:06:28 +03:00
test_cert_owner.py
BlockCheck: чужой сертификат — называем, кто ответил вместо сайта; устаревшая запись в hosts стала проблемой, а не меткой
2026-10-09 00:50:36 +03:00
test_check_history.py
BlockCheck и подбор стратегий: не терять отчёт, не засчитывать остановленную стратегию
2026-10-20 06:18:06 -04:00
test_chrome_https.py
YouTube проверяется целиком и по настоящему видеосерверу: подбор по трём именам, чтение страницы распаковывается, общий googlevideo.com больше не проверяется
2026-10-20 11:41:05 -04:00
test_chunked_read_only_fill.py
Настройка профиля: вкладки переделаны и названы по содержимому — «Готовые стратегии», «Список сайтов» (для ipset «Список адресов») и «Текст профиля» вместо «Редактор» и «Когда применяется». Оценка выбранной стратегии («Работает», «Не работает», «В избранное») стоит под списком стратегий рядом с её названием; повторное нажатие снимает оценку, отдельная кнопка «Убрать оценку» убрана. В списке сайтов свои записи стоят первыми и на широком окне рядом со встроенными. На вкладке текста остался только редактор на всю высоту: сводка с условиями и аргументами, повторявшая шапку и сам текст, удалена вместе с кодом, который её готовил. Три части страницы вынесены в отдельные модули
2026-10-07 00:48:32 +03:00
test_clickable_card_accessibility.py
Главная: значки плиток нарисованы заново единым набором — ровные линии со скруглёнными концами и мягкой заливкой, чёткие на любом масштабе и заметные в светлой теме
2026-10-03 19:38:28 +03:00
test_close_dialog_accessibility.py
Fix close dialog DPI running state
2026-06-13 16:15:45 +03:00
test_code_editor_dependency_boundaries.py
Сделать редактор пресета полноценным: поиск, замена, номера строк
2026-08-14 23:32:14 +03:00
test_code_editor_find_controller.py
Сделать редактор пресета полноценным: поиск, замена, номера строк
2026-08-14 23:32:14 +03:00
test_code_editor_find_engine.py
Сделать редактор пресета полноценным: поиск, замена, номера строк
2026-08-14 23:32:14 +03:00
test_code_editor_language.py
Ошибка запуска про несуществующую Lua-функцию подсказывает, какую функцию вы имели в виду; длинный текст в строке статуса пресета больше не обрезается
2026-09-28 19:10:33 +03:00
test_code_editor_line_ops.py
Сделать редактор пресета полноценным: поиск, замена, номера строк
2026-08-14 23:32:14 +03:00
test_code_editor_match_ruler.py
Показывать карту совпадений поиска на полосе справа
2026-08-15 00:41:15 +03:00
test_code_editor_widget.py
Подключить редактор кода к профилям и взять цвета из темы
2026-08-15 00:06:23 +03:00
test_combo_popup_guard.py
Сборка страниц ещё на треть быстрее: убраны перехватчики событий на каждом элементе, «Оформление» достраивает нижние разделы позже
2026-10-08 16:31:34 +03:00
test_commands_ui_boundary.py
Move preset service creation out of commands
2026-06-05 14:28:56 +03:00
test_compare_runs.py
Единый источник слов для всех проверок, маскирование внешнего адреса, видеоузлы YouTube вашей сети
2026-10-20 11:02:18 -04:00
test_control_accessibility.py
Site links: never send the browser to a blocked site name
2026-10-24 16:45:06 -04:00
test_control_additional_settings_load_queue.py
very update
2026-07-06 23:23:23 +03:00
test_control_additional_settings_save_queue.py
Use queued state for control additional settings save
2026-06-09 01:47:39 +03:00
test_control_animations.py
Нагрузка в покое: неподвижные части живых анимаций рисуются один раз
2026-10-07 05:22:19 +03:00
test_control_defender_admin_check_queue.py
Use latest state for defender admin check
2026-06-08 22:50:59 +03:00
test_control_external_open_url_queue.py
Быстрые действия: вместо «Тест соединения» — плитка «Исходный код» (git.zapret.moe) рядом с «Документацией»
2026-10-09 23:44:07 +03:00
test_control_internet_cleanup_button.py
Сброс сети Windows переписан на чистом WinAPI: мгновенно, без netsh и без перезагрузки
2026-10-08 02:29:17 +03:00
test_control_page_dependency_boundaries.py
Быстрые действия: вместо «Тест соединения» — плитка «Исходный код» (git.zapret.moe) рядом с «Документацией»
2026-10-09 23:44:07 +03:00
test_control_profile_icons.py
Главная: сводка стала плитками — пресет, профили и Premium подсвечиваются под мышью и показывают стрелку, а в плитке профилей видны значки включённых сервисов
2026-10-03 18:47:59 +03:00
test_control_program_settings_load_queue.py
Use latest state for control program settings load
2026-06-09 00:51:53 +03:00
test_control_program_settings_save_queue.py
feat: add tray close mode setting
2026-06-12 19:09:52 +03:00
test_control_push_setting_card_icons.py
Значок карточки «Фейки» того же размера, что у строк-переключателей
2026-10-03 15:51:48 +03:00
test_control_quick_actions.py
Site links: never send the browser to a blocked site name
2026-10-24 16:45:06 -04:00
test_control_settings_block.py
Страницы собираются блоками: сначала видимое, остальное позже; появление блока рисуется одной картинкой и стоит процессору вдвое меньше
2026-10-08 15:15:07 +03:00
test_control_start_conflict_stop.py
Тест «ручной запуск ждёт остановки проверки блокировок» приведён к единому пульту пуска: проверяет цепочку страница управления → пульт окна → команда BlockCheck, а не старые поля страницы
2026-10-06 20:55:54 +03:00
test_control_status_dot_pulse.py
Главная: блок статуса стал сценой — пакеты разбиваются о стену блокировки или проходят сквозь неё, фон в цвет состояния, волна при включении и талисман с настроением
2026-10-03 18:32:48 +03:00
test_control_top_summary_plan.py
Главная: значки плиток оживают по очереди — папка приоткрывается, строки профилей пробегают, галочка рисуется заново, дуги Wi‑Fi загораются, стрелка сброса делает оборот, у книги листается страница; один жест раз в 2,6 с, между жестами кадров нет
2026-10-03 20:06:06 +03:00
test_control_top_summary_refresh_guards.py
Показывать «Проверка...» вместо Free, пока сервер не ответил о подписке
2026-09-27 18:31:38 +03:00
test_control_top_summary_worker_architecture.py
Use shared state for control preset refresh timers
2026-06-11 01:02:49 +03:00
test_control_top_summary_worker_queue.py
very update
2026-07-06 23:23:23 +03:00
test_control_uptime.py
Главная: время работы обхода — плашка с часиками ровно по центру заголовка, в первую минуту считает секунды вместо «меньше минуты»
2026-10-03 20:00:40 +03:00
test_crowd_probe.py
Единый источник слов для всех проверок, маскирование внешнего адреса, видеоузлы YouTube вашей сети
2026-10-20 11:02:18 -04:00
test_crypto_dependency_trim.py
Обновление: установщик ставится только по подписанному списку выпуска
2026-10-14 19:46:06 +03:00
test_custom_dns_server_page.py
Навигация: шаг вглубь отчёта карточки BlockCheck и Esc в нём — шаги истории, отчёты и подробности серверов при возврате показывают свежие данные, экскурсия возвращает туда, откуда начали, другой профиль открывается со стратегий, подписи истории на текущем языке, «Добавить» не стирает черновик своего DNS
2026-10-15 20:58:23 +03:00
test_custom_dns_settings.py
Свой DNS: отдельная страница вместо окна, сервер можно добавить одной строкой DoH — IP-адреса программа находит и проверяет сама; «Автоматически» стала плиткой, кнопка «Сбросить кэш DNS» больше не прокручивает страницу
2026-10-08 00:47:55 +03:00
test_dataclass_json.py
Проверка домена: прошлая проверка открывается теми же карточками, а не сырым текстом
2026-10-08 16:10:13 +03:00
test_diagnostics_layers.py
Проверки сайтов идут как настоящий Chrome: BlockCheck, подбор стратегий и проверка «есть ли интернет» открывают сайт через curl_cffi — рукопожатие BoringSSL с отпечатком Chrome 150 (постквантовый ключ, перемешанные расширения, ALPS) и HTTP/2 с его настройками и заголовками, вместо короткого приветствия Python; стратегия проверяется на том же пакете, что пошлёт браузер. Исход различается по коду ошибки системы; прежний запрос через ssl Python убран. Сверка с сервером снаружи вынесена из движка в sections
2026-10-16 17:56:57 +03:00
test_diagnostics_levels.py
BlockCheck: у каждого вывода один владелец — общее окно обрыва, одно правило уровней, строки итога ссылаются на сайт и раздел данными, версия формата отчёта
2026-10-12 21:40:21 +03:00
test_diagnostics_verdict.py
Скорость: доля повторных передач TCP за загрузку показывает потери на линии
2026-10-20 12:54:21 -04:00
test_dialog_action_buttons_accessibility.py
Expose dialog action button states to screen readers
2026-06-12 13:59:13 +03:00
test_dialog_static_shadow.py
Отзывчивость: всплывающие окна программы больше не нагружают процессор — тень вокруг них рисуется один раз, а не размывается заново на каждый кадр анимации внутри окна (замер на Windows: 47 % ядра → около нуля, вид тот же); системная база списка на сто тысяч строк в настройке профиля дописывается порциями и не подвешивает окно (686 мс → 15 мс); списки адресов, которые не менялись, не перечитываются при запуске и перед пуском обхода, а число строк для журнала считается без разбора адресов; путь к базе настроек не вычисляется при каждом чтении
2026-10-06 22:01:41 +03:00
test_discord_manager.py
Refactor Discord restart manager
2026-06-14 19:19:12 +03:00
test_dns_adapters.py
DNS переписан на чистом WinAPI: только настоящие адаптеры, виртуалки и VPN не трогаются; добавлены AstraCat и GeoHide
2026-09-29 23:43:52 +03:00
test_dns_answering.py
Настройка DNS: «Отвечает: Cloudflare (AS13335)» и предупреждение о перехвате
2026-10-13 02:21:19 +03:00
test_dns_check_page_accessibility.py
BlockCheck: все пять вкладок начинаются одинаково — панель с талисманом, главной фразой и кнопками под ней
2026-10-08 02:11:33 +03:00
test_dns_check_plans.py
DNS подмена: чужой сертификат проверяется контролем на настоящем адресе, итог один для панели, строки состояния и истории
2026-10-13 00:01:21 +03:00
test_dns_check_reference_note.py
DNS подмена: чужой сертификат проверяется контролем на настоящем адресе, итог один для панели, строки состояния и истории
2026-10-13 00:01:21 +03:00
test_dns_check_widgets.py
DNS подмена: чужой сертификат проверяется контролем на настоящем адресе, итог один для панели, строки состояния и истории
2026-10-13 00:01:21 +03:00
test_dns_custom_servers.py
Свой DNS: обычная страница настроек во всю ширину — шапка с итогом введённого и ходом проверки, поля стандартными строками, тексты короче
2026-10-08 01:23:23 +03:00
test_dns_doh_lookup.py
Починены четыре устаревших проверки: резолв DoH с дедлайном, заглушки в тестах
2026-10-20 10:29:28 -04:00
test_dns_interception.py
Проверки сети: общая основа для запросов DNS — у каждого способа связи своя функция (обычный DNS по UDP и по TCP, шифрованный DoT на порту 853 и DoH на порту 443), запрос можно снять кнопкой «Стоп», а вместо текста ошибки возвращается вид сбоя: сервер молчит, порт закрыт, соединение оборвано, чужой сертификат, ошибка HTTP; эталонных серверов для сравнения ответов теперь четыре вместо двух и список один на BlockCheck и «Проверку домена» — если провайдер закрыл один из них (как 8.8.8.8), BlockCheck и «DNS подмена» называют его с причиной и советуют не выбирать для защищённого DNS; перехват DNS по контрольному адресу, виды адресов-заглушек и отмена запросов сведены в одно место вместо двух-трёх копий с разной логикой; адрес внутренней сети провайдера (100.64.0.0/10) в ответе DNS считается подменой; удалена старая проверка, которую никто не вызывал (preflight, isp_page_detector, ping_tester) вместе с её настройками и моделями
2026-10-07 19:59:00 +03:00
test_dns_ipv6_provider_apply.py
DNS переписан на чистом WinAPI: только настоящие адаптеры, виртуалки и VPN не трогаются; добавлены AstraCat и GeoHide
2026-09-29 23:43:52 +03:00
test_dns_latency.py
Проверки сети: общая основа для запросов DNS — у каждого способа связи своя функция (обычный DNS по UDP и по TCP, шифрованный DoT на порту 853 и DoH на порту 443), запрос можно снять кнопкой «Стоп», а вместо текста ошибки возвращается вид сбоя: сервер молчит, порт закрыт, соединение оборвано, чужой сертификат, ошибка HTTP; эталонных серверов для сравнения ответов теперь четыре вместо двух и список один на BlockCheck и «Проверку домена» — если провайдер закрыл один из них (как 8.8.8.8), BlockCheck и «DNS подмена» называют его с причиной и советуют не выбирать для защищённого DNS; перехват DNS по контрольному адресу, виды адресов-заглушек и отмена запросов сведены в одно место вместо двух-трёх копий с разной логикой; адрес внутренней сети провайдера (100.64.0.0/10) в ответе DNS считается подменой; удалена старая проверка, которую никто не вызывал (preflight, isp_page_detector, ping_tester) вместе с её настройками и моделями
2026-10-07 19:59:00 +03:00
test_dns_line_check.py
Настройки DNS: плитки серверов учитывают свою проверку на линии
2026-10-13 01:59:39 +03:00
test_dns_local_proxy.py
Настройка DNS: плитка сама выбирает, как шифровать запросы, — и в Windows 10
2026-10-13 17:43:12 +03:00
test_dns_manual_mode.py
DNS переписан на чистом WinAPI: только настоящие адаптеры, виртуалки и VPN не трогаются; добавлены AstraCat и GeoHide
2026-09-29 23:43:52 +03:00
test_dns_page.py
Настройка DNS: видно, какие DNS остались мимо выбранного сервера
2026-10-13 17:55:35 +03:00
test_dns_place.py
BlockCheck, «Место фильтра»: место каждого механизма отдельно, поиск места перехвата DNS, исправлен способ через TCP
2026-10-08 16:34:09 +03:00
test_dns_provider_grid.py
Настройка DNS: рекламная плитка своего сервера Zapret DNS рядом с «Автоматически»
2026-10-09 23:03:36 +03:00
test_dns_provider_icons.py
Zapret DNS: свой сервер проекта — плитка в «Настройке DNS» и профиль в «Редакторе hosts» (каталог 2026.10.09.2)
2026-10-09 00:51:56 +03:00
test_dns_providers_catalog.py
DNS: GeoHide EU и US, Malw.link (новые адреса), Bezmezhau в группе «Для ИИ»
2026-10-20 12:53:54 -04:00
test_dns_reachability.py
Настройка DNS: предупреждать, что Windows поставила DNS без шифрования
2026-10-13 01:55:36 +03:00
test_dns_runtime.py
DNS: GeoHide EU и US, Malw.link (новые адреса), Bezmezhau в группе «Для ИИ»
2026-10-20 12:53:54 -04:00
test_dns_server_check.py
DNS-серверы: обычный TCP не выдаётся за шифрованный путь, недопроверенное не выдаётся за «всё в порядке», «Стоп» доходит до поиска владельцев сетей
2026-10-12 23:58:33 +03:00
test_dns_server_check_page.py
BlockCheck: отчёты и логи открываются страницей-редактором с подсветкой, подробности DNS-сервера — в строгом виде
2026-10-07 22:45:25 +03:00
test_dns_winapi.py
DNS переписан на чистом WinAPI: только настоящие адаптеры, виртуалки и VPN не трогаются; добавлены AstraCat и GeoHide
2026-09-29 23:43:52 +03:00
test_dns_wire.py
Проверка домена: подставной ответ DNS назван прямо, с сайтом проверяются адреса его сервиса
2026-10-13 14:49:08 +03:00
test_dns_worker_architecture.py
Свой DNS: отдельная страница вместо окна, сервер можно добавить одной строкой DoH — IP-адреса программа находит и проверяет сама; «Автоматически» стала плиткой, кнопка «Сбросить кэш DNS» больше не прокручивает страницу
2026-10-08 00:47:55 +03:00
test_domain_chip_accessibility.py
Enable domain chip removal with Enter
2026-06-12 22:15:54 +03:00
test_domain_lookup.py
Отчёт youtube.com: узел без QUIC не «мешает», адреса с разным исходом видны, адресный блок идёт по адресу, где сайт открылся
2026-10-21 13:20:37 -04:00
test_domain_lookup_page.py
Починены три контрактных теста: перечень процессов не в потоке окна, защита от устаревших завершений, страница DNS без urllib
2026-10-20 13:12:53 -04:00
test_dpi_settings_accessibility.py
Enable nested radio option arrow navigation
2026-06-12 22:04:05 +03:00
test_dpi_settings_worker_queue.py
Prevent duplicate DPI mode reapply
2026-06-12 18:54:05 +03:00
test_drawn_badger.py
Нагрузка в покое: неподвижные части живых анимаций рисуются один раз
2026-10-07 05:22:19 +03:00
test_early_windows_version_guard.py
Переписать проверку запуска: одна проверка перед стартом и понятное окно для любой причины, по которой Zapret не может запуститься
2026-09-27 16:29:31 +03:00
test_engine_adoption.py
Обновление не рвёт обход: движок переживает обновление, новая версия перенимает его
2026-10-15 16:12:13 +03:00
test_engine_driver.py
Драйвер WinDivert и запуск winws: служба Monkey больше не зависает — программа сама держала её незакрытым хэндлом (CloseServiceHandle без argtypes падал с «int too long to convert»); новый слой winws_runtime/engine на типизированном WinAPI: запуск подтверждается строкой windivert initialized из вывода winws, остановка — сигналом Windows о выходе процесса, без пауз «на глаз»; кнопка «Стоп», выход и обновление выгружают драйвер и убирают его службу, когда им никто не пользуется (кроме Kaspersky), перезапуск и смена пресета драйвер не трогают; останавливаются только winws из папки программы, чужая копия запрета не убивается; реестр службы, DeleteFlag и тип запуска больше не правятся, штатное «отключена и помечена на удаление» у работающего драйвера не считается поломкой; застрявшая служба называется пользователю с причиной; оркестратор переведён на те же подтверждения; вывод winws первой версии пишется в файл; сквозные проверки на живой Windows в tests/e2e_windows
2026-10-02 02:34:45 +03:00
test_engine_process_control.py
Подбор стратегий: «Применить» проверяет сайт через пресет, winws2 пробы не переживает программу, «Стоп» сразу
2026-10-15 21:32:53 +03:00
test_exit_screen.py
Закрытие программы: прощальный экран с медоедом и лёгкой строкой, окно плавно гаснет
2026-10-08 02:25:03 +03:00
test_exit_steps.py
Выход из программы: у каждого шага один владелец
2026-10-07 23:36:52 +03:00
test_exit_watch_autorestart.py
Меньше лишней работы процессора: выплывание карточек без перерисовки каждый кадр, один снимок процессов, без полной записи истории оркестратора на каждую строку
2026-10-03 16:41:39 +03:00
test_external_actions_architecture.py
Move external open URL action to commands
2026-05-31 18:09:43 +03:00
test_external_page_action_worker_boundaries.py
Кнопки со ссылками не ждут пробу: имя для браузера берётся мгновенно, проба — только для запросов самой программы
2026-10-21 14:35:57 -04:00
test_external_worker_architecture.py
Move external open URL action to commands
2026-05-31 18:09:43 +03:00
test_fakes_catalog.py
Реестр фейков winws2: читатель готовой базы fakes_catalog.sqlite3, общие имена встроенных blob-ов и проверки согласованности с пресетами и каталогами
2026-09-27 18:38:29 +03:00
test_fakes_page.py
Навигация окна устроена заново: «назад» и «вперёд» помнят вкладки, открытый пресет, свой DNS-сервер и прошлые проверки, строка пути и «закрыть» больше не ходят по кругу, удалённое само уходит из истории
2026-10-15 20:29:29 +03:00
test_fakes_registry_integrity.py
Реестр фейков winws2: читатель готовой базы fakes_catalog.sqlite3, общие имена встроенных blob-ов и проверки согласованности с пресетами и каталогами
2026-09-27 18:38:29 +03:00
test_feature_assembly_imports.py
Fix logs feature facade builder import
2026-05-30 22:30:36 +03:00
test_feature_facades_lazy_imports.py
Guard feature assembly facade imports
2026-05-30 22:32:54 +03:00
test_filter_habits.py
Единый источник слов для всех проверок, маскирование внешнего адреса, видеоузлы YouTube вашей сети
2026-10-20 11:02:18 -04:00
test_filter_place.py
Единый источник слов для всех проверок, маскирование внешнего адреса, видеоузлы YouTube вашей сети
2026-10-20 11:02:18 -04:00
test_flowseal_1103_winws1_presets.py
Профили: понятные названия по схеме «Сервис · роль» — «YouTube · видео (googlevideo.com)», «Discord · обновления», «GitHub · файлы и картинки», «WhatsApp · звонки (UDP)», «Roblox · игра» — во всех встроенных пресетах Zapret 2 и Zapret 1; плитка группы прячет повтор названия сервиса («Видео» под шапкой «YouTube»), полное имя остаётся в подсказке, поиске и тексте пресета
2026-10-06 20:39:28 +03:00
test_flowseal_1103_winws2_presets.py
Профиль zapret.moe вместо git.zapret.moe: список lists/zapret-moe.txt охватывает все сайты проекта
2026-10-16 20:55:37 +03:00
test_fluent_app_window_chrome.py
Окно не перерисовывается целиком при входе и уходе курсора
2026-10-03 17:47:33 +03:00
test_fluent_button_contract.py
Improve refresh button accessibility
2026-06-16 18:35:10 +03:00
test_fluent_dialog_lifecycle.py
Память: закрытые диалоги и всплывающие меню (включая меню трея) удаляются, а не копятся до выхода; страница журнала не держит мосты с копией текста после каждого захода; журнал прокси Telegram для «Копировать всё» хранит только последние 3000 строк; просмотр старого журнала оркестратора читает только последний 1 МБ; история SUCCESS/FAIL оркестратора пишется в базу пачкой раз в 10 с вместо полной перезаписи настроек на каждое событие; плитки Hosts и фон «РКН Тян» не копят картинки при изменении размера окна
2026-09-30 23:23:40 +03:00
test_fluent_item_tooltip.py
Skip duplicate fluent tooltip updates
2026-05-31 01:05:17 +03:00
test_fluent_scrollbar.py
Skip fluent scrollbar arrows in tab order
2026-06-12 20:42:57 +03:00
test_fluent_translator.py
Перевести встроенные строки qfluentwidgets на язык интерфейса
2026-08-15 01:01:17 +03:00
test_fluent_widgets_accessibility.py
Read premium badges for screen readers
2026-06-15 20:33:06 +03:00
test_folder_context_menu_architecture.py
Skip folder dialog clear button in tab order
2026-06-12 19:41:35 +03:00
test_folder_header_widget.py
Make folder headers keyboard accessible
2026-06-06 22:38:08 +03:00
test_folders_library.py
Профили пресета: у Telegram и WhatsApp теперь свои группы вместо общей «Мессенджеры»; у тех, кто не раскладывал её вручную, профили переедут сами
2026-10-06 14:55:14 +03:00
test_folders_ordering_plan.py
very update
2026-07-06 23:23:23 +03:00
test_forgejo_release_history.py
«Что нового» и окно обновления: в Stable показываются 3 выпуска вместо 10 (текст выпуска Stable — большая статья), в Dev по-прежнему 10; пропущенные версии видны все
2026-10-02 01:23:49 +03:00
test_frame_clock.py
Живые анимации рисуются в общем такте и не рисуются, когда экран никто не видит
2026-10-03 19:38:53 +03:00
test_freeze_recheck.py
BlockCheck: свои записи hosts — не замечание; VPN — только когда через него идёт интернет; причина — по главному адресу
2026-10-08 01:40:48 +03:00
test_fun_phrases.py
Шутки в новых местах: запуск и остановка обхода, смена пресета, поиск адресов сайта, разбор журнала движка и надписи «Загрузка…»
2026-10-08 02:07:44 +03:00
test_fun_widgets.py
Медоед продолжает покачиваться после оборота по клику
2026-10-07 01:57:28 +03:00
test_geo_sites_warning.py
Тест предупреждения по геосайтам: заглушка пробы повторяет поля настоящей
2026-10-20 08:50:02 -04:00
test_global_search_index.py
Все ссылки собраны на «Справке» в три группы: Научиться, Спросить, Следить за новостями; дубли убраны, добавлены папка со всеми чатами и канал со всеми ссылками
2026-09-28 17:33:34 +03:00
test_global_smooth_scroll_policy.py
very update
2026-07-06 23:23:23 +03:00
test_google_backend_profile.py
Профили: понятные названия по схеме «Сервис · роль» — «YouTube · видео (googlevideo.com)», «Discord · обновления», «GitHub · файлы и картинки», «WhatsApp · звонки (UDP)», «Roblox · игра» — во всех встроенных пресетах Zapret 2 и Zapret 1; плитка группы прячет повтор названия сервиса («Видео» под шапкой «YouTube»), полное имя остаётся в подсказке, поиске и тексте пресета
2026-10-06 20:39:28 +03:00
test_gui_autostart_contract.py
Страницы собираются блоками: сначала видимое, остальное позже; появление блока рисуется одной картинкой и стоит процессору вдвое меньше
2026-10-08 15:15:07 +03:00
test_gui_direct_work_contract.py
Hosts переписан: страница не прокручивается целиком — крутится только список сервисов; в меню «☰» открывается «Файл hosts» с раскраской строк по владельцам и кнопкой «Сохранить»
2026-09-29 18:16:40 +03:00
test_gui_thread_priority.py
Возврат окна из долгого фона не виснет: один «присутствующий» наблюдатель вместо двух, он ловит команду Windows «развернуть» из панели задач (и показ из трея) раньше, чем Qt начнёт рисовать, включает приоритет окна и в отдельном потоке подтягивает нужные страницы памяти большими пачками, а не по одной с диска; при уходе в фон окно один раз запоминает, какие страницы нужны. Сборка мусора скрытого окна убрана совсем: она собирала единицы объектов, но обходила всю кучу и сама тянула выгруженную память обратно. В журнал пишется «Окно вернулось из фона…» с числом подкачек. Замер на win10 (холодный возврат): окно отвечает через ~240 мс вместо ~390, худший провал отклика 47 мс вместо 150
2026-10-17 17:41:47 +03:00
test_holiday_effects_performance.py
Тяжёлые страницы открываются по частям: Telegram Proxy и его продвинутые настройки собираются блоками, первый экран достраивается после первого кадра
2026-10-08 22:34:33 +03:00
test_hosts_address_engine.py
Шлюз проб: одна дверь для проверок сети. Проверки по кнопке берут пропуск на прогон, и фоновые в это время ждут; плановая проверка адресов hosts идёт не чаще раза в 6 часов даже через перезапуск и трогает только первый записанный адрес каждого имени — поиск замены (DNS, запас, обход соседних подсетей) только когда первый адрес не ответил и только у этого сервиса
2026-10-16 17:20:07 +03:00
test_hosts_catalog_sqlite.py
Tests: hosts catalog 2026.10.21.1, new Comss DNS relays
2026-10-21 07:16:40 -04:00
test_hosts_file_manager.py
Шлюз проб: одна дверь для проверок сети. Проверки по кнопке берут пропуск на прогон, и фоновые в это время ждут; плановая проверка адресов hosts идёт не чаще раза в 6 часов даже через перезапуск и трогает только первый записанный адрес каждого имени — поиск замены (DNS, запас, обход соседних подсетей) только когда первый адрес не ответил и только у этого сервиса
2026-10-16 17:20:07 +03:00
test_hosts_ipv6_gating.py
Hosts меняется только по кнопке «Применить»: щелчки копят черновик с предпросмотром строк, видно всё, что лежит в hosts; Telegram Proxy больше не пишет в hosts сам при открытии
2026-09-29 17:07:30 +03:00
test_hosts_page_draft.py
Hosts: тумблер снова записывает сразу — проверка адресов идёт следом, а не перед записью
2026-10-13 19:50:15 +03:00
test_hosts_relay_check.py
Tests: hosts catalog 2026.10.21.1, new Comss DNS relays
2026-10-21 07:16:40 -04:00
test_hosts_tile_caption_wrap.py
Значки: широкие значки (геймпад, сеть, Discord) больше не срезаются по краям — уменьшаются так, чтобы уместиться в свой квадрат; плитки Hosts рисуют фирменные логотипы сервисов из общего набора Simple Icons
2026-10-01 21:40:57 +03:00
test_hot_action_timing.py
Скорость: переключение пресета, сохранение пресета, применение стратегии, включение profile, настройки profile, активация, старт и остановка DPI пишут своё время в журнал (UiMetric) — по нему видно, сколько они длятся у пользователя; определение папки profile по тексту запоминается — повторная сборка списка из ~100 profile ускорилась с ~12 до ~2 мс
2026-09-30 14:27:19 +03:00
test_http2_post.py
BlockCheck: новая вкладка «DNS-серверы» — таблица как в DNS Jumper, но по каждому адресу каждого сервера отдельно: пинг, обычный DNS по UDP и по TCP, шифрованный DoT (порт 853) и DoH (порт 443) со временем ответа или причиной отказа (молчит, порт закрыт, обрыв, чужой сертификат); проверяется и запасной адрес — 8.8.8.8 и 8.8.4.4 показаны разными строками; перехват обычных DNS-запросов по дороге определяется по трём признакам: ответил адрес, где сервера нет; запросы к серверам разных владельцев на самом деле выполняет одна чужая сеть (спрашиваем у сервера «кто ты» обычным и шифрованным путём и сравниваем владельцев сетей); сервер по обычному пути отвечает «сайта нет» или заглушкой, а по шифрованному даёт настоящий адрес; если DoH не отвечает по имени сервера, но отвечает по адресу — пишется, что закрыто именно имя; способ, закрытый у всех серверов сразу, называется одной строкой, а не списком; в итоге — лучший сервер для защищённого DNS и полный текстовый отчёт для отправки; DoH теперь работает и с серверами, которые отвечают только по HTTP/2 (Quad9); в каталоге серверов появились имена для DoT — только у тех, кто по нему действительно отвечает; «Настройка DNS»: замер скорости идёт по всем адресам сервера, время запасного видно в подсказке плитки
2026-10-07 20:21:41 +03:00
test_https_dns_fallback.py
Тесты: без адреса нашего сервера в данных
2026-10-17 15:02:08 +03:00
test_icon_loop.py
Быстрые действия: вместо «Тест соединения» — плитка «Исходный код» (git.zapret.moe) рядом с «Документацией»
2026-10-09 23:44:07 +03:00
test_import_warmup.py
Запуск: окно появляется один раз и сразу готовым, первые секунды без рывков
2026-10-08 01:41:53 +03:00
test_infobar_duration.py
Сделать плашки импорта заметными
2026-08-08 19:46:56 +03:00
test_infobar_layout.py
very update
2026-07-06 23:23:23 +03:00
test_infobar_thread_guard.py
Архитектура потоков: элементы окна создаются только в потоке окна. Страж в единой точке создания плашек InfoBar переносит вызов из фонового потока в поток окна; службы с подписчиками (настройки программы, проверка обновлений) зовут страницы только в потоке окна; общие объекты Qt (шина событий пресетов, менеджер Telegram Proxy, гейт воркеров) живут в потоке окна, кто бы их ни создал; проверка для CI запрещает фоновым модулям плашки, диалоги и виджеты
2026-10-06 22:06:37 +03:00
test_install_integrity.py
Проверять целостность поставки и чинить её самостоятельно
2026-07-28 15:07:14 +03:00
test_installation_self_repair.py
Переписать страницу обновлений на сервисы: DPI не остаётся выключенным, скачивание без склейки
2026-09-27 17:51:48 +03:00
test_installer_runtime_swap.py
Наблюдатель установки возвращает прежнюю версию из _internal.old
2026-10-15 23:08:06 +03:00
test_internet_cleanup.py
Сброс сети Windows: возвращён полный сброс каталога Winsock
2026-10-08 14:14:29 +03:00
test_ipsets_effective_entry_check.py
Отзывчивость: интерфейс в 8 раз меньше ждёт фоновые задачи — пока окно на экране, включён точный системный таймер Windows; боковое меню не читает настройки на каждый пункт, а разбор списков адресов сам уступает интерфейсу
2026-10-06 19:59:57 +03:00
test_ipv6_check.py
BlockCheck: повторная перепроверка выводов — ещё восемь мест, где вывод делался по одной попытке
2026-10-08 01:14:26 +03:00
test_kaspersky_safe_windivert_cleanup.py
Драйвер WinDivert и запуск winws: служба Monkey больше не зависает — программа сама держала её незакрытым хэндлом (CloseServiceHandle без argtypes падал с «int too long to convert»); новый слой winws_runtime/engine на типизированном WinAPI: запуск подтверждается строкой windivert initialized из вывода winws, остановка — сигналом Windows о выходе процесса, без пауз «на глаз»; кнопка «Стоп», выход и обновление выгружают драйвер и убирают его службу, когда им никто не пользуется (кроме Kaspersky), перезапуск и смена пресета драйвер не трогают; останавливаются только winws из папки программы, чужая копия запрета не убивается; реестр службы, DeleteFlag и тип запуска больше не правятся, штатное «отключена и помечена на удаление» у работающего драйвера не считается поломкой; застрявшая служба называется пользователю с причиной; оркестратор переведён на те же подтверждения; вывод winws первой версии пишется в файл; сквозные проверки на живой Windows в tests/e2e_windows
2026-10-02 02:34:45 +03:00
test_keyboard_list_accessibility_guards.py
Список готовых стратегий написан заново: советуемые из готовых пресетов, перебор «следующая», поиск и отборы
2026-10-07 23:08:35 +03:00
test_latest_worker_lane.py
Настройка DNS: страница переписана с нуля — панель «Сейчас», плитки серверов и замер скорости
2026-09-29 21:42:54 +03:00
test_launch_conflicting_processes.py
Исправить изоляцию Qt-тестов и Linux-пропуски
2026-07-25 20:16:12 +03:00
test_launch_control.py
Выход из программы: у каждого шага один владелец
2026-10-07 23:36:52 +03:00
test_launch_failure_publication.py
Драйвер WinDivert и запуск winws: служба Monkey больше не зависает — программа сама держала её незакрытым хэндлом (CloseServiceHandle без argtypes падал с «int too long to convert»); новый слой winws_runtime/engine на типизированном WinAPI: запуск подтверждается строкой windivert initialized из вывода winws, остановка — сигналом Windows о выходе процесса, без пауз «на глаз»; кнопка «Стоп», выход и обновление выгружают драйвер и убирают его службу, когда им никто не пользуется (кроме Kaspersky), перезапуск и смена пресета драйвер не трогают; останавливаются только winws из папки программы, чужая копия запрета не убивается; реестр службы, DeleteFlag и тип запуска больше не правятся, штатное «отключена и помечена на удаление» у работающего драйвера не считается поломкой; застрявшая служба называется пользователю с причиной; оркестратор переведён на те же подтверждения; вывод winws первой версии пишется в файл; сквозные проверки на живой Windows в tests/e2e_windows
2026-10-02 02:34:45 +03:00
test_launch_gate.py
Переписать проверку запуска: одна проверка перед стартом и понятное окно для любой причины, по которой Zapret не может запуститься
2026-09-27 16:29:31 +03:00
test_launch_title_badge.py
Между значками «PREMIUM» и «Работает» в заголовке окна промежуток 8 px — значки больше не слипаются
2026-09-30 14:35:45 +03:00
test_layered_files_ownership.py
обновление
2026-07-15 21:05:58 +03:00
test_layered_files_unchanged_skip.py
Отзывчивость: всплывающие окна программы больше не нагружают процессор — тень вокруг них рисуется один раз, а не размывается заново на каждый кадр анимации внутри окна (замер на Windows: 47 % ядра → около нуля, вид тот же); системная база списка на сто тысяч строк в настройке профиля дописывается порциями и не подвешивает окно (686 мс → 15 мс); списки адресов, которые не менялись, не перечитываются при запуске и перед пуском обхода, а число строк для журнала считается без разбора адресов; путь к базе настроек не вычисляется при каждом чтении
2026-10-06 22:01:41 +03:00
test_legacy_async_workers_architecture.py
Remove legacy async workers
2026-05-31 18:16:38 +03:00
test_legacy_log_viewer_runtime.py
Replace legacy logging with bounded async pipeline
2026-07-21 02:02:52 +03:00
test_line_edit_icons_accessibility.py
Expose line edit clear action state to screen readers
2026-06-12 16:24:05 +03:00
test_line_icons.py
Главная: значки плиток нарисованы заново единым набором — ровные линии со скруглёнными концами и мягкой заливкой, чёткие на любом масштабе и заметные в светлой теме
2026-10-03 19:38:28 +03:00
test_list_accessibility_models.py
Починить перемещение preset-ов и профилей
2026-08-19 23:37:37 +03:00
test_lists_core_files.py
very update
2026-07-06 23:23:23 +03:00
test_lists_startup_contract.py
Встроенный ipset-all заменён полным списком Flowseal (33 048 сетей), тесты закрепляют его состав и решения по спискам доменов
2026-09-27 19:49:05 +03:00
test_live_services.py
BlockCheck: отчёт по ходу проверки собирает только завершившийся сервис
2026-10-13 02:05:59 +03:00
test_log_kinds.py
Журналы: журнал winws снова попадает в обращение в поддержку, в счётчик страницы журналов и в очистку
2026-10-12 23:54:14 +03:00
test_log_page_runtime.py
Память: закрытые диалоги и всплывающие меню (включая меню трея) удаляются, а не копятся до выхода; страница журнала не держит мосты с копией текста после каждого захода; журнал прокси Telegram для «Копировать всё» хранит только последние 3000 строк; просмотр старого журнала оркестратора читает только последний 1 МБ; история SUCCESS/FAIL оркестратора пишется в базу пачкой раз в 10 с вместо полной перезаписи настроек на каждое событие; плитки Hosts и фон «РКН Тян» не копят картинки при изменении размера окна
2026-09-30 23:23:40 +03:00
test_log_refresh_icon_contract.py
very update
2026-07-06 23:23:23 +03:00
test_log_report_view.py
BlockCheck: отчёты и логи открываются страницей-редактором с подсветкой, подробности DNS-сервера — в строгом виде
2026-10-07 22:45:25 +03:00
test_logs_accessibility.py
Отзывчивость: первое открытие «Логов» не подвешивает окно — журнал вставляется порциями по 500 строк с передышкой для интерфейса между ними, а найденные ошибки уходят в нижнюю панель одной пачкой с одним пересчётом счётчика и высоты
2026-10-06 20:28:26 +03:00
test_logs_runtime_helpers.py
Avoid reading log error text for height
2026-06-07 16:25:48 +03:00
test_logs_tail_worker_runtime.py
Replace legacy logging with bounded async pipeline
2026-07-21 02:02:52 +03:00
test_logs_worker_architecture.py
Отзывчивость: первое открытие «Логов» не подвешивает окно — журнал вставляется порциями по 500 строк с передышкой для интерфейса между ними, а найденные ошибки уходят в нижнюю панель одной пачкой с одним пересчётом счётчика и высоты
2026-10-06 20:28:26 +03:00
test_main_startup_contract.py
Возврат окна из долгого фона не виснет: один «присутствующий» наблюдатель вместо двух, он ловит команду Windows «развернуть» из панели задач (и показ из трея) раньше, чем Qt начнёт рисовать, включает приоритет окна и в отдельном потоке подтягивает нужные страницы памяти большими пачками, а не по одной с диска; при уходе в фон окно один раз запоминает, какие страницы нужны. Сборка мусора скрытого окна убрана совсем: она собирала единицы объектов, но обходила всю кучу и сама тянула выгруженную память обратно. В журнал пишется «Окно вернулось из фона…» с числом подкачек. Замер на win10 (холодный возврат): окно отвечает через ~240 мс вместо ~390, худший провал отклика 47 мс вместо 150
2026-10-17 17:41:47 +03:00
test_match_filters_l7.py
Предупреждать о пропущенных и повторяющихся готовых стратегиях, выбирать каталог по L7-протоколу, различать HostFakeSplit и проверять имена lua, blob и bin
2026-09-27 16:37:05 +03:00
test_message_box_accessibility.py
Name message boxes for screen readers
2026-06-13 23:25:19 +03:00
test_my_network.py
Единый источник слов для всех проверок, маскирование внешнего адреса, видеоузлы YouTube вашей сети
2026-10-20 11:02:18 -04:00
test_name_speed.py
Единый источник слов для всех проверок, маскирование внешнего адреса, видеоузлы YouTube вашей сети
2026-10-20 11:02:18 -04:00
test_native_dir_watcher.py
very update
2026-07-06 23:23:23 +03:00
test_native_tooltip_guard.py
Подсказки: чёрное пустое окошко при наведении больше не появляется нигде — на значках DNS-профилей в «Редакторе hosts», на плитках DNS-провайдеров, в таблицах фейков, результатов BlockCheck и «Проверки домена», в точках шагов обучения и других местах подсказка теперь рисуется в стиле программы; общая защита на всё приложение (ui/native_tooltip_guard) перехватывает обычную подсказку Qt до показа и выводит её текст fluent-подсказкой у курсора, а случайно появившееся системное окошко сразу закрывает; подсказки строк в таблицах BlockCheck и «Проверки домена» раньше не показывались вовсе — исправлено
2026-10-03 14:46:42 +03:00
test_navigation_architecture.py
Навигация: шаг вглубь отчёта карточки BlockCheck и Esc в нём — шаги истории, отчёты и подробности серверов при возврате показывают свежие данные, экскурсия возвращает туда, откуда начали, другой профиль открывается со стратегий, подписи истории на текущем языке, «Добавить» не стирает черновик своего DNS
2026-10-15 20:58:23 +03:00
test_navigation_history.py
Стрелка «назад» скрывается, когда шагать некуда, а не стоит серой; место под ней остаётся, и боковое меню не прыгает
2026-10-16 01:32:04 +03:00
test_net_failure.py
Проверки сети: одна отменяемая пауза вместо пяти копий, общий TLS-контекст без приватного импорта
2026-10-12 23:50:36 +03:00
test_net_resolve_deadline.py
Проверки сети: общая основа для запросов DNS — у каждого способа связи своя функция (обычный DNS по UDP и по TCP, шифрованный DoT на порту 853 и DoH на порту 443), запрос можно снять кнопкой «Стоп», а вместо текста ошибки возвращается вид сбоя: сервер молчит, порт закрыт, соединение оборвано, чужой сертификат, ошибка HTTP; эталонных серверов для сравнения ответов теперь четыре вместо двух и список один на BlockCheck и «Проверку домена» — если провайдер закрыл один из них (как 8.8.8.8), BlockCheck и «DNS подмена» называют его с причиной и советуют не выбирать для защищённого DNS; перехват DNS по контрольному адресу, виды адресов-заглушек и отмена запросов сведены в одно место вместо двух-трёх копий с разной логикой; адрес внутренней сети провайдера (100.64.0.0/10) в ответе DNS считается подменой; удалена старая проверка, которую никто не вызывал (preflight, isp_page_detector, ping_tester) вместе с её настройками и моделями
2026-10-07 19:59:00 +03:00
test_notification_banner_accessibility.py
Read notification icon state for accessibility
2026-06-16 19:12:37 +03:00
test_notification_center_threads.py
Уведомления: центр уведомлений теперь можно вызывать из любого потока — из фонового потока показ переправляется в поток окна. В 21.1.7.19 именно уведомление «Встроенные пресеты обновлены», созданное в фоновом потоке, подвешивало программу; замена устаревших копий встроенных пресетов при запуске возвращена
2026-10-06 21:41:09 +03:00
test_notification_dedupe.py
Запуск winws2: конфликт фильтров WinDivert от прошлого запуска лечится повторами, а код ошибки показывается верный
2026-10-07 22:28:49 +03:00
test_onboarding_tour.py
Экскурсия «Как пользоваться программой» ведёт по всей программе и показывает примеры: фейки, режимы, DNS, hosts, Telegram Proxy, BlockCheck со всеми вкладками, разбор лога, оформление, логи и обновления; вместо точек — строка глав; подсказка сама держит на экране то, о чём рассказывает
2026-10-08 02:13:52 +03:00
test_onboarding_tour_drift.py
Экскурсия проверяется целиком: каждый шаг подсвечивает именно тот блок, о котором говорит
2026-10-08 14:12:35 +03:00
test_onboarding_tour_pages.py
BlockCheck: логика итога вынесена из файла виджетов в модуль без Qt (summary_model)
2026-10-13 00:19:38 +03:00
test_onboarding_tour_targets.py
Настройка DNS: рекламная плитка своего сервера Zapret DNS рядом с «Автоматически»
2026-10-09 23:03:36 +03:00
test_one_shot_worker_runtime.py
Ignore stale one-shot worker finishes
2026-06-03 22:20:26 +03:00
test_opaque_scroll.py
Presets list: scroll without redrawing every tile, only over a flat background
2026-10-24 18:46:18 -04:00
test_orchestra_accessibility.py
Стрелка «назад» снова работает: подписки снимаются по квитанции, а не по обработчику
2026-10-15 22:41:30 +03:00
test_orchestra_history_flush.py
Меньше лишней работы процессора: выплывание карточек без перерисовки каждый кадр, один снимок процессов, без полной записи истории оркестратора на каждую строку
2026-10-03 16:41:39 +03:00
test_orchestra_ignored_targets_lazy.py
Speed up startup: ExeToPython metric, lazy imports, qtawesome warmup
2026-07-06 12:32:29 +03:00
test_orchestra_ipset_files.py
fix
2026-06-22 22:17:22 +03:00
test_orchestra_log_view_tail.py
Память: закрытые диалоги и всплывающие меню (включая меню трея) удаляются, а не копятся до выхода; страница журнала не держит мосты с копией текста после каждого захода; журнал прокси Telegram для «Копировать всё» хранит только последние 3000 строк; просмотр старого журнала оркестратора читает только последний 1 МБ; история SUCCESS/FAIL оркестратора пишется в базу пачкой раз в 10 с вместо полной перезаписи настроек на каждое событие; плитки Hosts и фон «РКН Тян» не копят картинки при изменении размера окна
2026-09-30 23:23:40 +03:00
test_orchestra_rows_window.py
Оркестратор: списки закреплённых и заблокированных стратегий строят только первые 100 подходящих под поиск строк, остальные открываются кнопкой «Показать ещё»; поиск фильтрует данные с небольшой задержкой на набор, а не прячет тысячи заранее созданных строк — при тысячах закреплённых UDP-адресов страница больше не держит в памяти виджет на каждый адрес
2026-09-30 23:41:06 +03:00
test_orchestra_runtime_config.py
Мягкая остановка движка и перечитывание списков без перезапуска
2026-10-07 17:47:04 +03:00
test_orchestra_settings_accessibility.py
Expose orchestra settings tabs to screen readers
2026-06-10 19:47:53 +03:00
test_orchestra_settings_worker_architecture.py
Pass orchestra settings action to worker
2026-05-30 17:43:00 +03:00
test_orchestra_worker_architecture.py
Убрать блокировки интерфейса из DPI runtime
2026-07-25 20:43:11 +03:00
test_outside_check.py
BlockCheck: «сайт не работает сам», если он не открывается и из-за рубежа
2026-10-13 02:37:07 +03:00
test_page_blocks_contract.py
Тяжёлые страницы открываются по частям: Telegram Proxy и его продвинутые настройки собираются блоками, первый экран достраивается после первого кадра
2026-10-08 22:34:33 +03:00
test_page_build_no_stray_windows.py
Убрать мигающее окно при запуске: подпись на странице Telegram Proxy показывается только после вставки в страницу; тест проверяет, что ни одна страница при сборке не показывает отдельных окон
2026-09-27 19:21:56 +03:00
test_page_factory_startup_metrics.py
Add page factory startup metrics
2026-05-29 13:55:20 +03:00
test_page_float_in_contract.py
Страницы собираются блоками: сначала видимое, остальное позже; появление блока рисуется одной картинкой и стоит процессору вдвое меньше
2026-10-08 15:15:07 +03:00
test_page_host_keyboard_focus.py
Refocus pages after keyboard navigation
2026-06-16 23:08:52 +03:00
test_page_host_switch_diagnostics.py
Use stock page animations across navigation
2026-07-21 01:47:35 +03:00
test_paint_layer_cache.py
Нагрузка в покое: неподвижные части живых анимаций рисуются один раз
2026-10-07 05:22:19 +03:00
test_paired_run.py
Видеоузел сети находится и при закрытом YouTube: шифрованный редиректор, адрес как у браузера
2026-10-20 12:40:13 -04:00
test_paired_run_page.py
BlockCheck: кнопка «С обходом и без» — две проверки подряд с переключением Zapret
2026-10-20 12:44:25 -04:00
test_path_report.py
Единый источник слов отчёта по сайту: карточки и текст берут строки из одного модуля
2026-10-20 10:29:28 -04:00
test_path_trace.py
BlockCheck, «Место фильтра»: место каждого механизма отдельно, поиск места перехвата DNS, исправлен способ через TCP
2026-10-08 16:34:09 +03:00
test_popup_menu_lifecycle.py
Память: закрытые диалоги и всплывающие меню (включая меню трея) удаляются, а не копятся до выхода; страница журнала не держит мосты с копией текста после каждого захода; журнал прокси Telegram для «Копировать всё» хранит только последние 3000 строк; просмотр старого журнала оркестратора читает только последний 1 МБ; история SUCCESS/FAIL оркестратора пишется в базу пачкой раз в 10 с вместо полной перезаписи настроек на каждое событие; плитки Hosts и фон «РКН Тян» не копят картинки при изменении размера окна
2026-09-30 23:23:40 +03:00
test_popup_menu_style.py
very update
2026-07-06 23:23:23 +03:00
test_portable_preset_archive.py
Переносить пользовательские списки вместе с пресетом
2026-08-14 20:38:37 +03:00
test_post_mortem_diagnosis.py
Диагностировать молчаливое завершение winws по фактам
2026-07-28 15:02:12 +03:00
test_post_startup_host_whats_new.py
Обновление: одно большое окно для любого пути — изменения всех пропущенных версий, «Что нового», кнопки «Обновить / Позже / Пропустить версию / Открыть в браузере / Telegram», загрузка прямо в окне: логотип бежит и покачивается по переливающейся полосе, шутки как в BlockCheck; «Скрыть» не останавливает загрузку; «Что нового» один раз после обновления и кнопкой в «О программе»; маленький вопрос при запуске и карточка с обрезанным текстом убраны
2026-09-30 01:51:43 +03:00
test_post_startup_idle_tasks.py
Запуск в трей: страницы про запас собираются и при скрытом окне, один раз и тихо
2026-10-19 18:14:42 -04:00
test_post_startup_remote_presets.py
Добавить удалённые пресеты: импорт по ссылке и автообновление
2026-08-14 22:01:52 +03:00
test_post_startup_update_contract.py
Обновление не мешает игре: игры без рамки, память об игре, быстрее после неё
2026-10-15 15:46:04 +03:00
test_premium_controls_accessibility.py
Страница Premium: зачем нужен код, инструкция из 4 шагов и кнопка «Как это работает»
2026-10-14 21:03:39 +03:00
test_premium_days_label_theme.py
Premium: надпись «Осталось дней» читается в светлой теме — цвет берётся из читаемых success_text/warning_text/error_text и задаётся сразу для обеих тем через setTextColor, поэтому при смене темы надпись перекрашивается сама и её стиль больше не затирается библиотекой; тесты на цвета в светлой и тёмной теме и на перекраску при смене темы
2026-10-02 19:35:59 +03:00
test_premium_direct_network.py
Premium: подписка больше не «пропадает» после перезапуска и обновления — статус сам сверяется с сервером при запуске и дальше по расписанию, а привязка по коду подхватывается без кнопки «Обновить статус»
2026-10-06 15:01:24 +03:00
test_premium_display.py
Досохранить FREE/PREMIUM-метку и единые правила Premium-статуса
2026-09-23 14:11:44 +03:00
test_premium_sqlite_lifecycle.py
Перевести настройки ZapretGUI на SQLite
2026-08-14 20:32:33 +03:00
test_premium_status_card_theme.py
Сделать карточку статуса Premium читаемой в светлой теме
2026-09-23 14:19:00 +03:00
test_premium_status_consistency.py
Premium: подписка больше не «пропадает» после перезапуска и обновления — статус сам сверяется с сервером при запуске и дальше по расписанию, а привязка по коду подхватывается без кнопки «Обновить статус»
2026-10-06 15:01:24 +03:00
test_premium_status_runtime.py
Premium: подписка больше не «пропадает» после перезапуска и обновления — статус сам сверяется с сервером при запуске и дальше по расписанию, а привязка по коду подхватывается без кнопки «Обновить статус»
2026-10-06 15:01:24 +03:00
test_premium_status_source.py
Автоматически завершать привязку Premium
2026-08-14 19:49:51 +03:00
test_premium_worker_architecture.py
Страница Premium: зачем нужен код, инструкция из 4 шагов и кнопка «Как это работает»
2026-10-14 21:03:39 +03:00
test_preset_actions_menu.py
Use preset hashes for builtin reset visibility
2026-06-22 23:35:49 +03:00
test_preset_blob_declarations.py
Подбор стратегии переписан с нуля: не выдаёт ложных «работает» и «не работает» и проверяет стратегию втрое быстрее
2026-09-28 20:50:59 +03:00
test_preset_builtin_reset_hash.py
Отзывчивость: правый клик по пресету в «Моих пресетах» больше не читает файлы в потоке интерфейса — признак «можно вернуть встроенный» считает фоновая загрузка списка (по размеру, содержимое только у пары одинакового размера и один раз на версию файлов), а меню берёт готовое значение из кэша
2026-10-06 20:22:58 +03:00
test_preset_contract_architecture_checks.py
Пресет — точка истины: полный блок --lua-init во всех winws2-пресетах, единый договор нормализации, редактор показывает сохранённый текст, проверки сохранения и запуска
2026-09-27 18:11:07 +03:00
test_preset_data_safety_guards.py
Список готовых стратегий написан заново: советуемые из готовых пресетов, перебор «следующая», поиск и отборы
2026-10-07 23:08:35 +03:00
test_preset_delete_dialog_accessibility.py
Name preset delete dialog buttons
2026-06-11 18:08:09 +03:00
test_preset_drag_indicator.py
Preset list: highlight the clicked tile at once
2026-10-23 16:41:30 -04:00
test_preset_editor_invariants.py
Активный пресет знает свой режим: store общий для zapret1 и zapret2, поэтому вместе с именем (теперь в исходном регистре) публикуется режим; список profile сравнивает имя только со своим режимом — переключение пресета в другом режиме больше не перезагружает чужой список и не блокирует действия над profile (регрессия предыдущего коммита после смены режима)
2026-09-30 14:11:42 +03:00
test_preset_file_service_guards.py
Skip unchanged preset source saves
2026-05-31 15:41:38 +03:00
test_preset_file_store_guards.py
Skip unchanged preset file writes
2026-05-31 15:52:23 +03:00
test_preset_folder_actions.py
Добавить встроенные пресеты winws1 Flowseal 1.10.3 (22 файла) и папку «1.10.3»
2026-09-27 16:33:26 +03:00
test_preset_folder_rows.py
Use preset hashes for builtin reset visibility
2026-06-22 23:35:49 +03:00
test_preset_import_dialog.py
Меньше лишней работы процессора: выплывание карточек без перерисовки каждый кадр, один снимок процессов, без полной записи истории оркестратора на каждую строку
2026-10-03 16:41:39 +03:00
test_preset_import_validation.py
Пресеты: файл пишется безопасно (временный файл + подмена с повторами на Windows, «только чтение» не обходится), cp1251 читается без порчи и «Старт» на нём не падает, правки редактора не теряются при закрытии окна, комментарии профиля переживают правку текстом, пропавший с диска активный пресет не подменяет работающий, --debug=@logs\ тоже переносится, папки пресетов пишутся под блокировкой
2026-09-30 01:48:06 +03:00
test_preset_launch_args_bom.py
Оркестратор: предзагрузка и --debug внутри рабочего конфига, файл поставки не переписывается; снятие BOM в аргументах запуска; удалены мёртвые инжекторы аргументов
2026-09-27 17:46:04 +03:00
test_preset_launch_identity.py
Пресет — точка истины: полный блок --lua-init во всех winws2-пресетах, единый договор нормализации, редактор показывает сохранённый текст, проверки сохранения и запуска
2026-09-27 18:11:07 +03:00
test_preset_launch_service.py
Обновление не рвёт обход: движок переживает обновление, новая версия перенимает его
2026-10-15 16:12:13 +03:00
test_preset_list_columns.py
Preset click: no full-list repaint at the start or end of the marker slide
2026-10-23 16:57:17 -04:00
test_preset_list_model_guards.py
Починить перемещение preset-ов и профилей
2026-08-19 23:37:37 +03:00
test_preset_profile_async_architecture.py
Навигация окна устроена заново: «назад» и «вперёд» помнят вкладки, открытый пресет, свой DNS-сервер и прошлые проверки, строка пути и «закрыть» больше не ходят по кругу, удалённое само уходит из истории
2026-10-15 20:29:29 +03:00
test_preset_profile_diagnostics.py
Use stock page animations across navigation
2026-07-21 01:47:35 +03:00
test_preset_raw_editor_navigation.py
Навигация окна устроена заново: «назад» и «вперёд» помнят вкладки, открытый пресет, свой DNS-сервер и прошлые проверки, строка пути и «закрыть» больше не ходят по кругу, удалённое само уходит из истории
2026-10-15 20:29:29 +03:00
test_preset_reset_remote_binding.py
Починить перемещение preset-ов и профилей
2026-08-19 23:37:37 +03:00
test_preset_row_quiet_actions.py
Наведение на плитки и строки списков: быстрый ровный отклик вместо блика и наклона значка
2026-10-08 13:27:58 +03:00
test_preset_runtime_coordinator.py
Запуск: программа меньше «подлагивает» в первые секунды — скрытые страницы, окно «Что нового» и окно обновления строятся только в паузах пользователя, а не по таймеру посреди его действий; окно появляется раньше, потому что версию Windows больше не спрашивают через WMI
2026-10-06 19:11:32 +03:00
test_preset_runtime_mode_ownership.py
Fix preset switch runtime ownership
2026-08-08 18:35:45 +03:00
test_preset_selection_defaults.py
Пресеты: автосинк не затирает правку, сделанную во время загрузки, и не возвращает отвязанную привязку или выключенное автообновление; пропавший выбранный пресет подменяется пресетом по умолчанию только для запуска — выбор не затирается и вернётся вместе с файлом; чтение выбора больше ничего не пишет в настройки; один заблокированный файл или папка *.txt не роняют список пресетов; упавшая проверка пресета не останавливает работающий DPI; действия над профилями не уходят в другой пресет после переключения; воркеры списка профилей и фильтра стратегий больше не роняют программу при пересоздании виджета
2026-09-30 13:49:29 +03:00
test_preset_sidebar_navigation.py
Страницы собираются блоками: сначала видимое, остальное позже; появление блока рисуется одной картинкой и стоит процессору вдвое меньше
2026-10-08 15:15:07 +03:00
test_preset_source_of_truth_contract.py
Профиль zapret.moe вместо git.zapret.moe: список lists/zapret-moe.txt охватывает все сайты проекта
2026-10-16 20:55:37 +03:00
test_preset_status_bar.py
Убрать блокировки интерфейса из DPI runtime
2026-07-25 20:43:11 +03:00
test_preset_status_bar_accessibility.py
Expose preset status to screen readers
2026-06-10 23:04:46 +03:00
test_preset_subpage_accessibility.py
Use preset hashes for builtin reset visibility
2026-06-22 23:35:49 +03:00
test_preset_subpage_ui_guards.py
Страница текста пресета: значки в строке сведений
2026-10-08 02:02:01 +03:00
test_preset_summary_refresh_runtime.py
very update
2026-07-06 23:23:23 +03:00
test_preset_switch_pending_progress.py
Исправить зависание и ускорить перезапуск при смене пресета
2026-08-08 20:19:16 +03:00
test_preset_switch_runtime.py
Драйвер WinDivert и запуск winws: служба Monkey больше не зависает — программа сама держала её незакрытым хэндлом (CloseServiceHandle без argtypes падал с «int too long to convert»); новый слой winws_runtime/engine на типизированном WinAPI: запуск подтверждается строкой windivert initialized из вывода winws, остановка — сигналом Windows о выходе процесса, без пауз «на глаз»; кнопка «Стоп», выход и обновление выгружают драйвер и убирают его службу, когда им никто не пользуется (кроме Kaspersky), перезапуск и смена пресета драйвер не трогают; останавливаются только winws из папки программы, чужая копия запрета не убивается; реестр службы, DeleteFlag и тип запуска больше не правятся, штатное «отключена и помечена на удаление» у работающего драйвера не считается поломкой; застрявшая служба называется пользователю с причиной; оркестратор переведён на те же подтверждения; вывод winws первой версии пишется в файл; сквозные проверки на живой Windows в tests/e2e_windows
2026-10-02 02:34:45 +03:00
test_preset_text_outline.py
Тур: стрелки работают на любом шаге, текст карточки не съезжает, пресет разбирается по частям прямо в редакторе по открытому тексту, а полоска прогресса сверху и точки шагов ожили — комета с бликом и перетекающая таблетка, по точкам можно переходить
2026-09-28 21:37:57 +03:00
test_preset_tile_paint_cost.py
Preset tiles: fewer round-trips and repeated lookups per repaint
2026-10-24 17:46:41 -04:00
test_preset_ui_store_guards.py
Активный пресет после подмены: координатор помнит пресет, на котором реально работает DPI, а запасной только показывается — щелчок по запасному теперь переводит на него работающий DPI (раньше считался «уже выбран»); вернувшийся файл доходит до страниц и runtime, даже если его имя совпадает с последним отправленным, и лишнего перезапуска не вызывает
2026-09-30 14:29:11 +03:00
test_preset_url_import.py
Добавить удалённые пресеты: импорт по ссылке и автообновление
2026-08-14 22:01:52 +03:00
test_preset_url_import_dedup.py
Помнить URL пресета после отвязки и не терять привязку
2026-08-15 01:42:51 +03:00
test_presets_profiles_accuracy.py
Список готовых стратегий написан заново: советуемые из готовых пресетов, перебор «следующая», поиск и отборы
2026-10-07 23:08:35 +03:00
test_privacy_mask.py
Единый источник слов для всех проверок, маскирование внешнего адреса, видеоузлы YouTube вашей сети
2026-10-20 11:02:18 -04:00
test_probe_gate.py
Шлюз проб: одна дверь для проверок сети. Проверки по кнопке берут пропуск на прогон, и фоновые в это время ждут; плановая проверка адресов hosts идёт не чаще раза в 6 часов даже через перезапуск и трогает только первый записанный адрес каждого имени — поиск замены (DNS, запас, обход соседних подсетей) только когда первый адрес не ответил и только у этого сервиса
2026-10-16 17:20:07 +03:00
test_process_exit.py
Закрытие программы: прощальный экран с медоедом и лёгкой строкой, окно плавно гаснет
2026-10-08 02:25:03 +03:00
test_process_monitor_nonblocking.py
Возврат из трея: удержание памяти растёт вместе с программой, фон ждёт после показа
2026-10-19 18:08:42 -04:00
test_process_probe_ctypes_isolation.py
Исправить изоляцию Qt-тестов и Linux-пропуски
2026-07-25 20:16:12 +03:00
test_process_probe_paths.py
Готово, цель закрыл. Бюджет цели: 2689 секунд. Что доделал по ускорению: - profile-список теперь строит сначала папки, а карточки внутри папок создаёт лениво, когда папка раскрыта. - Страница настройки одного profile больше не создаёт сразу вкладки «Редактор» и «Когда применяется». - Файл hostlist/ipset для вкладки «Редактор» больше не читается в основном payload-е profile; он грузится отдельным worker-ом только при открытии вкладки. - Отдельные страницы редакторов списков (custom domains, custom ipset, netrogat) больше не строят большой текстовый редактор в конструкторе. - HostlistPage больше не строит даже первую вкладку до первого показа страницы. - Настройки оркестратора внутри DPI-настроек строятся только когда реально нужен режим оркестратора. - Вкладки настроек orchestra больше не создают первую внутреннюю страницу прямо в конструкторе. - Таймер логов Telegram Proxy теперь не тикает, пока вкладка логов не построена и не открыта. Проверки прошли: ``text 259 tests OK Architecture boundary check passed compileall OK git diff --check OK ` Ещё важное: в дереве есть параллельные изменения по preset-файлам и process_probe, я их не откатывал. Из-за уже переименованного Default v5.txt я обновил один тест на текущий файл Default v5 (game filter).txt`, чтобы полный набор тестов снова проходил.
2026-05-21 21:55:05 +03:00
test_process_start_time.py
Speed up startup: ExeToPython metric, lazy imports, qtawesome warmup
2026-07-06 12:32:29 +03:00
test_profile_compact_display_combo.py
Skip duplicate compact combo text updates
2026-05-31 01:29:36 +03:00
test_profile_conditions_panel.py
Страница профиля: условия вынесены во всплывающую панель
2026-10-07 22:27:39 +03:00
test_profile_context_action_queue.py
Update profile context queue worker fixture
2026-06-11 16:26:30 +03:00
test_profile_context_menu_architecture.py
Add screen reader text for profile menu actions
2026-06-12 18:11:41 +03:00
test_profile_display_items.py
Переименовать профиль Discord UDP во всех пресетах
2026-07-15 21:30:37 +03:00
test_profile_display_order_hint.py
Профили пресета: пояснение «порядок в пресете не изменился» показывается только при самом первом перетаскивании профиля. Показано ли оно, программа запоминает в настройках (warnings.profile_display_order_hint_shown) и проверяет в фоновом потоке; подсказка у курсора остаётся при каждом перетаскивании
2026-10-07 01:31:56 +03:00
test_profile_drag_indicator.py
Починить перемещение preset-ов и профилей
2026-08-19 23:37:37 +03:00
test_profile_editable_settings.py
fix
2026-06-22 21:09:22 +03:00
test_profile_enabled_save_queue.py
Track profile setup workers by request id
2026-06-10 23:46:54 +03:00
test_profile_filter_kind_switch.py
Перевести настройки ZapretGUI на SQLite
2026-08-14 20:32:33 +03:00
test_profile_folder_actions.py
Профили пресета: у Telegram и WhatsApp теперь свои группы вместо общей «Мессенджеры»; у тех, кто не раскладывал её вручную, профили переедут сами
2026-10-06 14:55:14 +03:00
test_profile_geo_notice.py
Экскурсия «Как пользоваться программой» ведёт по всей программе и показывает примеры: фейки, режимы, DNS, hosts, Telegram Proxy, BlockCheck со всеми вкладками, разбор лога, оформление, логи и обновления; вместо точек — строка глав; подсказка сама держит на экране то, о чём рассказывает
2026-10-08 02:13:52 +03:00
test_profile_icon_bundle.py
Профили: настоящие значки вместо букв у Apple, Claude, Gemini, Notion, LinkedIn, ChatGPT, git.zapret.moe, LordFilm, Akamai, Railway и Google Cloud; для значков, которых нет в Simple Icons, заведён свой файл SVG
2026-10-06 15:02:08 +03:00
test_profile_icons.py
Профиль zapret.moe вместо git.zapret.moe: список lists/zapret-moe.txt охватывает все сайты проекта
2026-10-16 20:55:37 +03:00
test_profile_identity.py
Профили пресета: общий профиль голосовых звонков (STUN) вынесен из Discord в свою группу «Голосовые звонки (Discord, Telegram)»; у тех, кто не раскладывал Discord вручную, он переезжает туда сам
2026-10-06 14:07:07 +03:00
test_profile_key_architecture.py
Починить перемещение preset-ов и профилей
2026-08-19 23:37:37 +03:00
test_profile_list_accessibility.py
Fix keyboard navigation for accessible lists
2026-06-16 16:53:56 +03:00
test_profile_list_delegate_layout.py
Ветки --payload одного профиля — одна составная готовая стратегия: одно имя, оценка и значок типов пакетов, выбор на странице и в blockcheck применяет её целиком, обычная стратегия поверх составной пишет один общий --payload
2026-09-27 19:33:52 +03:00
test_profile_list_file_editor.py
fix(profile): allow top-level hostlist suffixes
2026-07-25 16:40:14 +03:00
test_profile_list_file_load_queue.py
Improve HostsManager & classify GitHub/Amazon
2026-06-23 19:34:23 +03:00
test_profile_list_interpreter.py
Профиль zapret.moe вместо git.zapret.moe: список lists/zapret-moe.txt охватывает все сайты проекта
2026-10-16 20:55:37 +03:00
test_profile_list_model_identity_update.py
upstrea,
2026-07-16 16:06:03 +03:00
test_profile_list_payload.py
Готовые стратегии: на широком окне список показан плитками в два–четыре столбца — название и под ним уточнение («из Steam») со способом обхода; в узком окне остаётся один столбец строк. Большие группы разделены подзаголовками серий (General, Flowseal и т. д.) с числом стратегий. Над длинным списком появился переключатель «Группировать»: по способу обхода, по серии или по источнику; выбор запоминается в настройках. Стрелки на клавиатуре ходят по сетке плиток, полоска выбранной стратегии переезжает и между столбцами
2026-10-07 00:23:28 +03:00
test_profile_list_view_accessibility.py
Make profile list space-key selectable
2026-06-12 17:10:15 +03:00
test_profile_list_view_state_worker.py
Мягкая остановка движка и перечитывание списков без перезапуска
2026-10-07 17:47:04 +03:00
test_profile_move_queue.py
Починить перемещение preset-ов и профилей
2026-08-19 23:37:37 +03:00
test_profile_names_in_tiles.py
Профили: понятные названия по схеме «Сервис · роль» — «YouTube · видео (googlevideo.com)», «Discord · обновления», «GitHub · файлы и картинки», «WhatsApp · звонки (UDP)», «Roblox · игра» — во всех встроенных пресетах Zapret 2 и Zapret 1; плитка группы прячет повтор названия сервиса («Видео» под шапкой «YouTube»), полное имя остаётся в подсказке, поиске и тексте пресета
2026-10-06 20:39:28 +03:00
test_profile_order_page.py
Починить перемещение preset-ов и профилей
2026-08-19 23:37:37 +03:00
test_profile_order_worker_architecture.py
Use shared finish guard for profile order loads
2026-06-12 15:20:05 +03:00
test_profile_ordering.py
Профили пресета: общий профиль голосовых звонков (STUN) вынесен из Discord в свою группу «Голосовые звонки (Discord, Telegram)»; у тех, кто не раскладывал Discord вручную, он переезжает туда сам
2026-10-06 14:07:07 +03:00
test_profile_preset_source_of_truth.py
Профиль zapret.moe вместо git.zapret.moe: список lists/zapret-moe.txt охватывает все сайты проекта
2026-10-16 20:55:37 +03:00
test_profile_preset_write_serialization.py
обновление
2026-07-15 21:05:58 +03:00
test_profile_raw_editor.py
Профили: отложенные стратегия, переключатель и настройки пишутся в профиль, открытый при щелчке (а не в тот, что открыт к моменту записи), записи разных профилей не замещают друг друга, быстрые щелчки по стратегиям не теряют последний выбор, ждущие записи сохраняются при закрытии окна; смена пресета или стратегии во время запуска DPI применяется после старта; перемещение профилей больше не дописывает «--new=TCP 443» и не сдвигает их ключи; тот же профиль, открытый заново после правки пресета, показывает файл; переименование своего профиля сохраняет его папку и оценки
2026-09-30 02:06:39 +03:00
test_profile_row_tooltip.py
Расшифровывать в тултипе профиля протокол, список и стратегию
2026-08-11 17:33:41 +03:00
test_profile_service_apply_strategy_guards.py
Ветки --payload одного профиля — одна составная готовая стратегия: одно имя, оценка и значок типов пакетов, выбор на странице и в blockcheck применяет её целиком, обычная стратегия поверх составной пишет один общий --payload
2026-09-27 19:33:52 +03:00
test_profile_setup_accessibility.py
Ссылки на git и вики: открытое имя сайта выбирается один раз и для обновления, и для кнопок
2026-10-21 06:17:57 -04:00
test_profile_setup_change_old_key_contract.py
upstrea,
2026-07-16 16:06:03 +03:00
test_profile_setup_cleanup_source_contract.py
Stop profile read workers without blocking GUI
2026-06-07 00:34:12 +03:00
test_profile_setup_code_editor.py
Настройка профиля: вкладки переделаны и названы по содержимому — «Готовые стратегии», «Список сайтов» (для ipset «Список адресов») и «Текст профиля» вместо «Редактор» и «Когда применяется». Оценка выбранной стратегии («Работает», «Не работает», «В избранное») стоит под списком стратегий рядом с её названием; повторное нажатие снимает оценку, отдельная кнопка «Убрать оценку» убрана. В списке сайтов свои записи стоят первыми и на широком окне рядом со встроенными. На вкладке текста остался только редактор на всю высоту: сводка с условиями и аргументами, повторявшая шапку и сам текст, удалена вместе с кодом, который её готовил. Три части страницы вынесены в отдельные модули
2026-10-07 00:48:32 +03:00
test_profile_setup_controls.py
Skip duplicate profile range control updates
2026-05-29 23:48:00 +03:00
test_profile_setup_delete_queue.py
Queue user profile writes while scheduled
2026-06-01 13:49:51 +03:00
test_profile_setup_editor_read_defer.py
very update
2026-07-06 23:23:23 +03:00
test_profile_setup_io_worker_architecture.py
обновление
2026-07-15 21:05:58 +03:00
test_profile_setup_list_editor_paste.py
very update
2026-07-06 23:23:23 +03:00
test_profile_setup_page_contract.py
Страница профиля: вкладки заменены шагом строки пути, поиск стратегий открывается по Ctrl+F
2026-10-08 00:10:04 +03:00
test_profile_setup_tabs.py
Навигация: шаг вглубь отчёта карточки BlockCheck и Esc в нём — шаги истории, отчёты и подробности серверов при возврате показывают свежие данные, экскурсия возвращает туда, откуда начали, другой профиль открывается со стратегий, подписи истории на текущем языке, «Добавить» не стирает черновик своего DNS
2026-10-15 20:58:23 +03:00
test_profile_setup_ui_guards.py
Страница профиля: вкладки заменены шагом строки пути, поиск стратегий открывается по Ctrl+F
2026-10-08 00:10:04 +03:00
test_profile_setup_worker_architecture.py
Готовые стратегии: на широком окне список показан плитками в два–четыре столбца — название и под ним уточнение («из Steam») со способом обхода; в узком окне остаётся один столбец строк. Большие группы разделены подзаголовками серий (General, Flowseal и т. д.) с числом стратегий. Над длинным списком появился переключатель «Группировать»: по способу обхода, по серии или по источнику; выбор запоминается в настройках. Стрелки на клавиатуре ходят по сетке плиток, полоска выбранной стратегии переезжает и между столбцами
2026-10-07 00:23:28 +03:00
test_profile_setup_worker_runtime_architecture.py
обновление
2026-07-15 21:05:58 +03:00
test_profile_setup_write_identity.py
Пресеты и профили — доработки после самопроверки: один битый байт больше не переводит UTF-8 файл в cp1251, запуск winws, описание в списке и привязанный файл читаются по общему правилу кодировки; комментарий над первым профилем больше не даёт ложную «ошибку сохранения»; папки пресетов и профилей пишутся под одним замком; при закрытии синхронная запись пропускается, если зависшую запись пришлось прервать; результат для ранее открытого профиля не переключает страницу обратно и обновляет строку в списке, ожидающая стратегия другого профиля не отбрасывает результат, переключатель чужого профиля идёт в очередь, записи при закрытии идут в порядке щелчков; при чужом владельце быстрые щелчки по пресетам снова склеиваются; «DPI не запущен» больше не пишется WARNING на каждый щелчок; убраны осиротевшие строки диалога имени пресета
2026-09-30 02:26:03 +03:00
test_profile_setup_write_serialization.py
Оценка стратегии — в меню по правой кнопке вместо кнопок под списком
2026-10-07 15:49:00 +03:00
test_profile_shell_accessibility.py
Перевести ZapretGUI с GitHub на Forgejo
2026-08-07 02:36:48 +03:00
test_profile_status_wording.py
very update
2026-07-06 23:23:23 +03:00
test_profile_strategy_open_group_save.py
Схема приёма: пакеты останавливаются у ТСПУ; Esc — шаг назад по журналу экранов
2026-10-08 01:44:55 +03:00
test_profile_strategy_resolution.py
Профиль zapret.moe вместо git.zapret.moe: список lists/zapret-moe.txt охватывает все сайты проекта
2026-10-16 20:55:37 +03:00
test_profile_strategy_state_guards.py
Готовые стратегии: в длинном списке открыта одна группа — открыл другую, прежняя закрылась сама; заголовок открытой группы остаётся у верха списка, пока листаешь её стратегии; открытая группа запоминается для каждого профиля; стрелки влево и вправо сворачивают и раскрывают группу
2026-10-06 19:03:33 +03:00
test_profile_strategy_visuals.py
Предупреждать о пропущенных и повторяющихся готовых стратегиях, выбирать каталог по L7-протоколу, различать HostFakeSplit и проверять имена lua, blob и bin
2026-09-27 16:37:05 +03:00
test_profile_tiles_view.py
Профили пресета: у каждого элемента плитки своя подсказка при наведении, а экскурсия «Как пользоваться программой» объясняет счётчик «3 из 5» и что включать все профили не нужно; короткое название стратегии в строке плитки больше не пропадает
2026-10-06 14:52:10 +03:00
test_profile_toolbar_contract.py
Мои пресеты: плотная сетка плиток и шапка в одну строку
2026-10-08 01:15:59 +03:00
test_profile_type_selector.py
Вернуть подсказки к фильтрам типов трафика
2026-08-11 17:06:27 +03:00
test_profiles_list_filter_intent_race.py
upstrea,
2026-07-16 16:06:03 +03:00
test_profiles_list_scroll_position.py
upstrea,
2026-07-16 16:06:03 +03:00
test_program_settings_fast_snapshot.py
Перевести настройки ZapretGUI на SQLite
2026-08-14 20:32:33 +03:00
test_program_settings_worker_architecture.py
Use stock page animations across navigation
2026-07-21 01:47:35 +03:00
test_protocol_probe.py
BlockCheck: разбор причины — только у сайтов, которые не открылись, и смысл «почерка браузера» развёрнут под Chrome-проверку: строка «Как Chrome» берётся из основного запроса, простые TLS 1.2/1.3 и HTTP шлются лишь закрытому сайту, и если Chrome режут, а простое приветствие к тому же адресу проходит — это блокировка по почерку браузера (раньше наоборот: «проверка открывает, а Chrome не проходит»). Набор объёма идёт по одному соединению «как Chrome» (HTTP/2, сжатие, заголовки Chrome на Windows с русским языком) вместо 60 запросов Python; исправлено падение libcurl на повторных запросах по одному соединению (curl_cffi освобождал списки заголовков и адресов после каждого запроса)
2026-10-16 18:30:20 +03:00
test_pyinstaller_archive_import_lock.py
Быстрее появление окна: фильтр перетаскивания на всё приложение не ставится на Windows, подсказка перетаскивания создаётся при первом показе, asyncio/requests/psutil греются после готовности окна; метка StartupFirstPaint в журнале
2026-09-27 20:17:42 +03:00
test_python_dependency_sources.py
Перевести ZapretGUI с GitHub на Forgejo
2026-08-07 02:36:48 +03:00
test_qfluent_icon_cache.py
Значки qfluentwidgets не разбираются заново на каждую перерисовку
2026-10-03 17:56:18 +03:00
test_qfluent_signal_guards.py
Страницы собираются блоками: сначала видимое, остальное позже; появление блока рисуется одной картинкой и стоит процессору вдвое меньше
2026-10-08 15:15:07 +03:00
test_qfluent_style_cache.py
Сборка страниц ещё на треть быстрее: убраны перехватчики событий на каждом элементе, «Оформление» достраивает нижние разделы позже
2026-10-08 16:31:34 +03:00
test_qt_signal_links.py
Стрелка «назад» снова работает: подписки снимаются по квитанции, а не по обработчику
2026-10-15 22:41:30 +03:00
test_quic_fallback.py
Откат QUIC: браузер открывает сайт с QUIC и без него — видна цена отката на TCP
2026-10-20 13:03:29 -04:00
test_quic_probe.py
BlockCheck не устраивает веер соединений: сайты идут по 4, а не по 10, стартуют со случайной паузой 0,2–0,9 с и каждый раз в новом порядке (отчёт — в прежнем); QUIC к отвечающему сайту — один пакет с его именем, как у браузера, а пакеты с посторонним именем и без имени уходят только если сервер промолчал
2026-10-16 18:11:16 +03:00
test_quick_actions_bar_layout.py
Мои пресеты: плотная сетка плиток и шапка в одну строку
2026-10-08 01:15:59 +03:00
test_quick_service_cards.py
YouTube проверяется целиком и по настоящему видеосерверу: подбор по трём именам, чтение страницы распаковывается, общий googlevideo.com больше не проверяется
2026-10-20 11:41:05 -04:00
test_raw_preset_action_queue.py
Track raw preset workers by request id
2026-06-11 17:46:46 +03:00
test_raw_preset_activation_queue.py
Ignore pending raw preset activation results
2026-06-05 16:58:48 +03:00
test_raw_preset_editor_dependency_boundaries.py
Move raw preset text read to commands
2026-06-07 22:25:38 +03:00
test_raw_preset_editor_read_defer.py
Cache raw preset text before save worker
2026-06-08 19:58:03 +03:00
test_raw_preset_editor_shows_saved_text.py
Пресет — точка истины: полный блок --lua-init во всех winws2-пресетах, единый договор нормализации, редактор показывает сохранённый текст, проверки сохранения и запуска
2026-09-27 18:11:07 +03:00
test_raw_preset_editor_worker_architecture.py
обновление
2026-07-15 21:05:58 +03:00
test_raw_preset_text_editor.py
Страница текста пресета: компактная шапка, поиск по Ctrl+F
2026-10-08 01:57:26 +03:00
test_raw_preset_write_serialization.py
Track raw preset workers by request id
2026-06-11 17:46:46 +03:00
test_reach_recheck.py
Видеоузел сети находится и при закрытом YouTube: шифрованный редиректор, адрес как у браузера
2026-10-20 12:40:13 -04:00
test_registry.py
Единый источник слов для всех проверок, маскирование внешнего адреса, видеоузлы YouTube вашей сети
2026-10-20 11:02:18 -04:00
test_remote_preset_bindings.py
Пресеты и профили: убран неиспользуемый код (~560 строк: модули public.py, диалог имени пресета zapret2, мёртвые функции в preset_text_ops, profile.folders, привязках к источнику, фасаде запуска и страницах), переключение пресета больше не ждёт лишние 0,5 с — быстрые щелчки склеивает один debounce в switch pipeline
2026-09-30 02:11:03 +03:00
test_remote_preset_sync.py
Пресеты: автосинк не затирает правку, сделанную во время загрузки, и не возвращает отвязанную привязку или выключенное автообновление; пропавший выбранный пресет подменяется пресетом по умолчанию только для запуска — выбор не затирается и вернётся вместе с файлом; чтение выбора больше ничего не пишет в настройки; один заблокированный файл или папка *.txt не роняют список пресетов; упавшая проверка пресета не останавливает работающий DPI; действия над профилями не уходят в другой пресет после переключения; воркеры списка профилей и фильтра стратегий больше не роняют программу при пересоздании виджета
2026-09-30 13:49:29 +03:00
test_report_contract.py
BlockCheck: договор об отчёте с тестами-сторожами, карточка «Ход проверки» и время шагов на экране
2026-10-08 15:52:25 +03:00
test_report_upgrade.py
Отчёт версии 3: внешний адрес скрыт и в сохранённых отчётах
2026-10-20 12:27:27 -04:00
test_restart_splash.py
Окно обновления можно свернуть: кнопка в углу и Esc
2026-10-15 21:26:18 +03:00
test_restart_splash_windows.py
Окно обновления можно свернуть: кнопка в углу и Esc
2026-10-15 21:26:18 +03:00
test_reveal.py
BlockCheck: плитки, строки отчёта и значки дорог на карточке сайта проявляются по очереди при появлении — один раз, без постоянной нагрузки
2026-10-08 15:45:09 +03:00
test_row_hover_motion.py
Наведение на плитки и строки списков: быстрый ровный отклик вместо блика и наклона значка
2026-10-08 13:27:58 +03:00
test_rule_passports.py
BlockCheck: паспорт у каждого вида блокировки — что вывод утверждает, на чём держится, когда врёт и чем это отсечено
2026-10-13 00:13:18 +03:00
test_run_lane.py
BlockCheck: разбор причины — только у сайтов, которые не открылись, и смысл «почерка браузера» развёрнут под Chrome-проверку: строка «Как Chrome» берётся из основного запроса, простые TLS 1.2/1.3 и HTTP шлются лишь закрытому сайту, и если Chrome режут, а простое приветствие к тому же адресу проходит — это блокировка по почерку браузера (раньше наоборот: «проверка открывает, а Chrome не проходит»). Набор объёма идёт по одному соединению «как Chrome» (HTTP/2, сжатие, заголовки Chrome на Windows с русским языком) вместо 60 запросов Python; исправлено падение libcurl на повторных запросах по одному соединению (curl_cffi освобождал списки заголовков и адресов после каждого запроса)
2026-10-16 18:30:20 +03:00
test_run_stop.py
BlockCheck не устраивает веер соединений: сайты идут по 4, а не по 10, стартуют со случайной паузой 0,2–0,9 с и каждый раз в новом порядке (отчёт — в прежнем); QUIC к отвечающему сайту — один пакет с его именем, как у браузера, а пакеты с посторонним именем и без имени уходят только если сервер промолчал
2026-10-16 18:11:16 +03:00
test_runtime_events_dispatcher.py
Исправить подключение событий запуска DPI
2026-07-28 18:37:16 +03:00
test_runtime_layout.py
Раскладка: каталог user/winws2 для файлов, которые пишет сам движок (память подбора стратегий), описан в общем списке папок
2026-10-07 20:27:33 +03:00
test_runtime_presence_return_settle.py
Возврат из трея: удержание памяти растёт вместе с программой, фон ждёт после показа
2026-10-19 18:08:42 -04:00
test_runtime_process_pid.py
Убрать блокировки интерфейса из DPI runtime
2026-07-25 20:43:11 +03:00
test_runtime_startup_import_contract.py
Lazy load runtime startup helpers
2026-05-30 20:08:10 +03:00
test_scrollbar_style_skip.py
Не подменять QStyle ради уже постоянных скроллбаров
2026-07-28 17:36:29 +03:00
test_secondary_page_warmup.py
Запуск: скрытые страницы собираются про запас только когда этого некому заметить; точный таймер Windows удалён
2026-10-08 01:57:48 +03:00
test_selectivity.py
Таблица избирательности в тексте: по строке на адрес
2026-10-21 17:22:50 -04:00
test_self_check.py
BlockCheck: самопроверка перехвата и осторожный вывод QUIC «по имени»
2026-10-13 01:53:01 +03:00
test_server_status_worker_contract.py
Проверка обновлений не ждёт молчащие источники
2026-10-07 18:00:23 +03:00
test_service_view.py
Отчёт youtube.com: узел без QUIC не «мешает», адреса с разным исходом видны, адресный блок идёт по адресу, где сайт открылся
2026-10-21 13:20:37 -04:00
test_settings_folders.py
Перевести настройки ZapretGUI на SQLite
2026-08-14 20:32:33 +03:00
test_settings_read_cost.py
Свой DNS: отдельная страница вместо окна, сервер можно добавить одной строкой DoH — IP-адреса программа находит и проверяет сама; «Автоматически» стала плиткой, кнопка «Сбросить кэш DNS» больше не прокручивает страницу
2026-10-08 00:47:55 +03:00
test_settings_sqlite_store.py
Меньше лишней работы процессора: выплывание карточек без перерисовки каждый кадр, один снимок процессов, без полной записи истории оркестратора на каждую строку
2026-10-03 16:41:39 +03:00
test_shimmer_label.py
Девиз на «Справке» оживает: строки по очереди выплывают снизу вверх, потом по ним ходит лёгкий зацикленный блик
2026-09-28 17:19:26 +03:00
test_shipped_lists_invariant.py
Встроенный ipset-all заменён полным списком Flowseal (33 048 сетей), тесты закрепляют его состав и решения по спискам доменов
2026-09-27 19:49:05 +03:00
test_show_window_bridge.py
upstrea,
2026-07-16 16:06:03 +03:00
test_sidebar_icon_style.py
Тесты: два устаревших теста приведены к текущему коду — подставные зависимости окна получили пульт пуска и остановки launch_control, а поиск значков боковой панели проверяется в system/ico, куда их кладёт установщик; старая папка ico в корне теперь явно проверяется как неиспользуемая
2026-10-06 19:31:09 +03:00
test_sidebar_intent_persistence.py
Архитектурно связать состояние сайдбара с действием пользователя
2026-07-25 20:18:14 +03:00
test_sidebar_startup_delays.py
Запуск: окно появляется один раз и сразу готовым, первые секунды без рывков
2026-10-08 01:41:53 +03:00
test_sidebar_state_settings.py
Remember sidebar expanded state
2026-05-24 23:11:59 +03:00
test_sidebar_state_worker_boundary.py
Use latest state for sidebar save
2026-06-08 23:29:41 +03:00
test_single_instance.py
Выход из программы: у каждого шага один владелец
2026-10-07 23:36:52 +03:00
test_site_links.py
Кнопки со ссылками не ждут пробу: имя для браузера берётся мгновенно, проба — только для запросов самой программы
2026-10-21 14:35:57 -04:00
test_smooth_scroll_frame_skipping.py
Smooth scroll: skip frames when a repaint is late instead of dragging on
2026-10-24 17:46:41 -04:00
test_sni_discovery.py
BlockCheck по умолчанию проверяет сайты так, как их открыл бы браузер, а шумное — по выбору: режим «Полная проверка» стал «Глубокой диагностикой» и стоит последним, в нём одном идут серия UDP-пакетов, проверка отправки и самопроверка перехвата на 192.0.2.1; прошлые «Полные проверки» сравниваются с новыми как тот же режим; поиск разрешённых имён делает случайные паузы вместо ровного ритма; экскурсия обновлена
2026-10-16 18:39:00 +03:00
test_speed_check.py
BlockCheck: повторная перепроверка выводов — ещё восемь мест, где вывод делался по одной попытке
2026-10-08 01:14:26 +03:00
test_spinning_logo_and_sync_icon.py
Списки пресетов и стратегий: при выборе акцентная полоска переезжает к новой строке, значок подпрыгивает; логотип крутится и с клавиатуры
2026-09-27 23:00:26 +03:00
test_stable_center.py
Presets list: scroll without redrawing every tile, only over a flat background
2026-10-24 18:46:18 -04:00
test_startup_address_refresh.py
Шлюз проб: одна дверь для проверок сети. Проверки по кнопке берут пропуск на прогон, и фоновые в это время ждут; плановая проверка адресов hosts идёт не чаще раза в 6 часов даже через перезапуск и трогает только первый записанный адрес каждого имени — поиск замены (DNS, запас, обход соседних подсетей) только когда первый адрес не ответил и только у этого сервиса
2026-10-16 17:20:07 +03:00
test_startup_autostart.py
Починены три контрактных теста: перечень процессов не в потоке окна, защита от устаревших завершений, страница DNS без urllib
2026-10-20 13:12:53 -04:00
test_startup_autostart_order.py
Запуск: окно появляется один раз и сразу готовым, первые секунды без рывков
2026-10-08 01:41:53 +03:00
test_startup_background_lane.py
Запуск: окно появляется один раз и сразу готовым, первые секунды без рывков
2026-10-08 01:41:53 +03:00
test_startup_bootstrap_metrics.py
Перевести настройки ZapretGUI на SQLite
2026-08-14 20:32:33 +03:00
test_startup_install_path_checks.py
Мягкая остановка движка и перечитывание списков без перезапуска
2026-10-07 17:47:04 +03:00
test_startup_post_init_autostart.py
Убрать блокировки интерфейса из DPI runtime
2026-07-25 20:43:11 +03:00
test_startup_settings_cache.py
Перевести настройки ZapretGUI на SQLite
2026-08-14 20:32:33 +03:00
test_startup_wmi_free_version_checks.py
Запуск: программа меньше «подлагивает» в первые секунды — скрытые страницы, окно «Что нового» и окно обновления строятся только в паузах пользователя, а не по таймеру посреди его действий; окно появляется раньше, потому что версию Windows больше не спрашивают через WMI
2026-10-06 19:11:32 +03:00
test_state_media_blocker.py
upstrea,
2026-07-16 16:06:03 +03:00
test_status_message_contract.py
Use shared state for window open folder queue
2026-06-11 14:39:16 +03:00
test_strategy_apply_check.py
После «Применить» сайт проверяется вместе с остальными именами сервиса
2026-10-20 12:26:37 -04:00
test_strategy_catalog_integrity.py
Предупреждать о пропущенных и повторяющихся готовых стратегиях, выбирать каталог по L7-протоколу, различать HostFakeSplit и проверять имена lua, blob и bin
2026-09-27 16:37:05 +03:00
test_strategy_catalog_names.py
Список готовых стратегий написан заново: советуемые из готовых пресетов, перебор «следующая», поиск и отборы
2026-10-07 23:08:35 +03:00
test_strategy_catalog_runtime_names.py
Реестр фейков winws2: читатель готовой базы fakes_catalog.sqlite3, общие имена встроенных blob-ов и проверки согласованности с пресетами и каталогами
2026-09-27 18:38:29 +03:00
test_strategy_context_menu.py
Стратегии: страница подробностей по кнопке-метке и обучение на отметках человека
2026-10-07 23:37:34 +03:00
test_strategy_families.py
Список готовых стратегий написан заново: советуемые из готовых пресетов, перебор «следующая», поиск и отборы
2026-10-07 23:08:35 +03:00
test_strategy_list_plan.py
Схема приёма: ТСПУ не «проверяет», когда у него никого нет; места разреза — короткими метками
2026-10-08 20:21:03 +03:00
test_strategy_list_widget.py
Схема приёма: ТСПУ не «проверяет», когда у него никого нет; места разреза — короткими метками
2026-10-08 20:21:03 +03:00
test_strategy_scan_apply.py
Подбор стратегий оценивает честнее: стратегия на всё соединение (tlsrec) пишется в профиль с тем фильтром пакетов, на котором её проверяли; проба не уходит, пока перехват winws2 не готов (до 15 с); обрыв тела на сайте без HTTPS — блокировка; одна тишина QUIC/UDP после успеха прощается; провал при пропавшей сети не попадает в историю; «Стоп» больше не выдаёт себя за «нет интернета» или «адрес закрыт целиком»
2026-10-16 17:08:34 +03:00
test_strategy_scan_apply_runtime_architecture.py
После «Применить» сайт проверяется вместе с остальными именами сервиса
2026-10-20 12:26:37 -04:00
test_strategy_scan_companions.py
YouTube проверяется целиком и по настоящему видеосерверу: подбор по трём именам, чтение страницы распаковывается, общий googlevideo.com больше не проверяется
2026-10-20 11:41:05 -04:00
test_strategy_scan_fatal_error_plan.py
Подбор стратегий: останавливается на первой надёжной и сам продолжает, если пачка пустая; сначала рекомендованные; «Применить» запускает Zapret
2026-10-13 01:43:31 +03:00
test_strategy_scan_finalize_runtime_architecture.py
Use shared state for strategy scan queues
2026-06-11 00:46:44 +03:00
test_strategy_scan_googlevideo_target.py
BlockCheck: убран мёртвый код, «Остановить» в очереди не теряется, отметка реестра не дописывается в уже показанный отчёт, «С прошлой проверки» сохраняется в файл
2026-10-12 21:23:04 +03:00
test_strategy_scan_page_accessibility.py
Подбор стратегий: честнее на экране — сколько осталось, что делать, если ничего не нашлось, старый итог не путается с новой целью
2026-10-15 21:39:29 +03:00
test_strategy_scan_quick_targets_runtime_architecture.py
Use shared state for strategy quick targets
2026-06-11 00:38:33 +03:00
test_strategy_scan_resume_choice.py
Подбор стратегии: при повторном запуске выбор — продолжить или начать заново
2026-09-29 20:35:40 +03:00
test_strategy_scan_run_runtime_architecture.py
Let BlockCheck runtime own run workers
2026-06-02 00:07:24 +03:00
test_strategy_scan_support_runtime_architecture.py
Use latest state for strategy scan support prepare
2026-06-08 21:24:42 +03:00
test_strategy_scan_widgets.py
Подбор стратегий: честнее на экране — сколько осталось, что делать, если ничего не нашлось, старый итог не путается с новой целью
2026-10-15 21:39:29 +03:00
test_strategy_search_engine.py
После «Применить» сайт проверяется вместе с остальными именами сервиса
2026-10-20 12:26:37 -04:00
test_strategy_search_rules.py
Проверки сайтов идут как настоящий Chrome: BlockCheck, подбор стратегий и проверка «есть ли интернет» открывают сайт через curl_cffi — рукопожатие BoringSSL с отпечатком Chrome 150 (постквантовый ключ, перемешанные расширения, ALPS) и HTTP/2 с его настройками и заголовками, вместо короткого приветствия Python; стратегия проверяется на том же пакете, что пошлёт браузер. Исход различается по коду ошибки системы; прежний запрос через ssl Python убран. Сверка с сервером снаружи вынесена из движка в sections
2026-10-16 17:56:57 +03:00
test_strategy_search_runtime.py
Подбор стратегий оценивает честнее: стратегия на всё соединение (tlsrec) пишется в профиль с тем фильтром пакетов, на котором её проверяли; проба не уходит, пока перехват winws2 не готов (до 15 с); обрыв тела на сайте без HTTPS — блокировка; одна тишина QUIC/UDP после успеха прощается; провал при пропавшей сети не попадает в историю; «Стоп» больше не выдаёт себя за «нет интернета» или «адрес закрыт целиком»
2026-10-16 17:08:34 +03:00
test_strategy_search_transfer.py
Подбор стратегий: медленный сервер не принимают за стратегию и говорят об этом
2026-10-20 08:21:56 -04:00
test_subnet_whitelist.py
BlockCheck: «белые списки» подтверждаются или снимаются проверкой подсетей
2026-10-13 02:29:07 +03:00
test_subscriber_services_ui_thread.py
Архитектура потоков: элементы окна создаются только в потоке окна. Страж в единой точке создания плашек InfoBar переносит вызов из фонового потока в поток окна; службы с подписчиками (настройки программы, проверка обновлений) зовут страницы только в потоке окна; общие объекты Qt (шина событий пресетов, менеджер Telegram Proxy, гейт воркеров) живут в потоке окна, кто бы их ни создал; проверка для CI запрещает фоновым модулям плашки, диалоги и виджеты
2026-10-06 22:06:37 +03:00
test_subscription_badge_shine.py
Живые анимации рисуются в общем такте и не рисуются, когда экран никто не видит
2026-10-03 19:38:53 +03:00
test_subscription_title_badge.py
Досохранить FREE/PREMIUM-метку и единые правила Premium-статуса
2026-09-23 14:11:44 +03:00
test_support_about_open_worker_queue.py
Ignore stale support open worker finishes
2026-06-05 01:38:19 +03:00
test_support_page_accessibility.py
Перевести ZapretGUI с GitHub на Forgejo
2026-08-07 02:36:48 +03:00
test_support_request_clipboard_boundary.py
Обращение из BlockCheck: в архив больше не попадает давно устаревший текстовый журнал проверки; кладутся отчёты двух последних проверок
2026-10-08 21:23:02 +03:00
test_sync_shutdown_prelaunch.py
Драйвер WinDivert и запуск winws: служба Monkey больше не зависает — программа сама держала её незакрытым хэндлом (CloseServiceHandle без argtypes падал с «int too long to convert»); новый слой winws_runtime/engine на типизированном WinAPI: запуск подтверждается строкой windivert initialized из вывода winws, остановка — сигналом Windows о выходе процесса, без пауз «на глаз»; кнопка «Стоп», выход и обновление выгружают драйвер и убирают его службу, когда им никто не пользуется (кроме Kaspersky), перезапуск и смена пресета драйвер не трогают; останавливаются только winws из папки программы, чужая копия запрета не убивается; реестр службы, DeleteFlag и тип запуска больше не правятся, штатное «отключена и помечена на удаление» у работающего драйвера не считается поломкой; застрявшая служба называется пользователю с причиной; оркестратор переведён на те же подтверждения; вывод winws первой версии пишется в файл; сквозные проверки на живой Windows в tests/e2e_windows
2026-10-02 02:34:45 +03:00
test_system_state.py
BlockCheck: свои записи hosts — не замечание; VPN — только когда через него идёт интернет; причина — по главному адресу
2026-10-08 01:40:48 +03:00
test_tab_history.py
Прошлые проверки DNS-вкладок: файлы любой известной версии читаются, выводы «DNS-серверов» пересчитываются по нынешним правилам
2026-10-13 00:12:06 +03:00
test_table_accessibility.py
Подбор стратегии стал понятным и живым: плитки «что починить», шаги с галочками, выдра-талисман, весёлые подписи и салют, когда стратегия найдена
2026-09-28 21:19:19 +03:00
test_tcp_stats.py
Скорость: доля повторных передач TCP за загрузку показывает потери на линии
2026-10-20 12:54:21 -04:00
test_telegram_bot_start_labels.py
Ссылки на бота @zapretvpns_bot несут рекламную метку start (gui_premium_buy, gui_about_kvn, gui_readme_badge, gui_readme_vpn)
2026-10-15 15:07:53 +03:00
test_telegram_check.py
BlockCheck: блок «Ваша сеть», дата-центры Telegram и обновлённый список хостингов
2026-10-07 23:00:09 +03:00
test_telegram_hosts.py
Telegram Proxy: в hosts прописываются ещё пять имён (oauth.telegram.org, oauth.tg.dev, cdn.telesco.pe, cdn5 и cdn6.telesco.pe); тесты каталога hosts 2026.10.08.1
2026-10-08 01:07:18 +03:00
test_telegram_proxy_accessibility.py
Тяжёлые страницы открываются по частям: Telegram Proxy и его продвинутые настройки собираются блоками, первый экран достраивается после первого кадра
2026-10-08 22:34:33 +03:00
test_telegram_proxy_actions_architecture.py
Site links: never send the browser to a blocked site name
2026-10-24 16:45:06 -04:00
test_telegram_proxy_advanced_page.py
Стрелка «назад» снова работает: подписки снимаются по квитанции, а не по обработчику
2026-10-15 22:41:30 +03:00
test_telegram_proxy_auto_deeplink.py
Авто-настройка Telegram открывает ссылку только если Telegram установлен (есть обработчик tg://), иначе ждёт его установки без системного окна выбора приложения
2026-09-27 20:57:57 +03:00
test_telegram_proxy_cloudflare_runtime.py
Переписать сетевое ядро Telegram Proxy по образцу ZaStoGram: WSS главный путь, фронты Cloudflare и туннель, незаметная смена молчащего маршрута
2026-09-28 00:35:00 +03:00
test_telegram_proxy_diagnostics.py
Improve Telegram upstream media fallback
2026-06-11 22:44:56 +03:00
test_telegram_proxy_main_page.py
Переделать страницу Telegram Proxy: всё в карточках, редкие настройки на вложенной странице с хлебными крошками, запуск ждёт сохранения настроек и читает их из хранилища, авто-настройка Telegram снова работает
2026-09-27 20:48:27 +03:00
test_telegram_proxy_mtproxy_core.py
Переписать сетевое ядро Telegram Proxy по образцу ZaStoGram: WSS главный путь, фронты Cloudflare и туннель, незаметная смена молчащего маршрута
2026-09-28 00:35:00 +03:00
test_telegram_proxy_obfs.py
Telegram Proxy: картинки и видео больше не пропадают на секунды при смене пути — прокси помнит, на каком кластере дата-центра живёт ключ медиа-сессии, и на ответ «ключ не найден» молча переходит на путь нужного кластера вместо того, чтобы заставлять Telegram создавать ключ заново; в режиме MTProxy с dd-секретом ответ «ключ не найден» теперь доходит до Telegram
2026-10-15 23:40:26 +03:00
test_telegram_proxy_page_worker_state.py
Use shared latest worker state in Telegram proxy
2026-06-10 20:20:14 +03:00
test_telegram_proxy_proxy_logger.py
Не создавать пустой лог Telegram Proxy
2026-07-24 02:02:50 +03:00
test_telegram_proxy_relay_warning.py
Память: окно, скрытое в трей или свёрнутое дольше 2 минут, собирает мусор, чистит кэш картинок Qt и отдаёт Windows лишние страницы (пока окно открыто — ничего не выгружается); история оркестратора ограничена 3000 целей (давние UDP-адреса вытесняются, закреплённые остаются), счётчики успехов и «последняя стратегия» тоже ограничены; анализатор журналов winws хранит начало и конец соединения (200 пакетов) и не больше 200 тыс. пакетов на журнал; подсказки удаляются вместе со своим виджетом; реестр тем забывает удалённые виджеты сразу; повторное применение той же темы не перекрашивает все виджеты; предупреждение проверки прокси Telegram заменяет прежнее, а не копится
2026-09-30 23:35:31 +03:00
test_telegram_proxy_route_catalog.py
Telegram Proxy: релеи DC1–DC5 по своим адресам входа, у DC2/DC4 два адреса
2026-10-16 18:17:00 +03:00
test_telegram_proxy_route_plan.py
Telegram Proxy: прямой TCP — последняя ступень с паузой, перед фронтами без учёта паузы
2026-10-16 21:39:52 +03:00
test_telegram_proxy_session.py
Telegram Proxy: прямой TCP — последняя ступень с паузой, перед фронтами без учёта паузы
2026-10-16 21:39:52 +03:00
test_telegram_proxy_settings_save_queue.py
Hosts меняется только по кнопке «Применить»: щелчки копят черновик с предпросмотром строк, видно всё, что лежит в hosts; Telegram Proxy больше не пишет в hosts сам при открытии
2026-09-29 17:07:30 +03:00
test_telegram_proxy_socks5.py
Add experimental Telegram SOCKS5 UDP relay
2026-06-14 18:55:15 +03:00
test_telegram_proxy_ui_texts.py
Telegram Proxy: понятно, что это, когда включать и какой режим выбрать
2026-10-13 02:16:41 +03:00
test_telegram_proxy_upstream_catalog.py
Telegram Proxy: переключатель «Использовать внешний прокси» запоминается и в режиме MTProxy
2026-10-03 18:10:00 +03:00
test_telegram_proxy_upstream_controller.py
Смягчить переключение Telegram SOCKS
2026-07-22 22:37:28 +03:00
test_telegram_proxy_upstream_switch.py
Переделать страницу Telegram Proxy: всё в карточках, редкие настройки на вложенной странице с хлебными крошками, запуск ждёт сохранения настроек и читает их из хранилища, авто-настройка Telegram снова работает
2026-09-27 20:48:27 +03:00
test_telegram_proxy_worker_architecture.py
Стрелка «назад» снова работает: подписки снимаются по квитанции, а не по обработчику
2026-10-15 22:41:30 +03:00
test_telegram_proxy_worker_queue.py
Hosts меняется только по кнопке «Применить»: щелчки копят черновик с предпросмотром строк, видно всё, что лежит в hosts; Telegram Proxy больше не пишет в hosts сам при открытии
2026-09-29 17:07:30 +03:00
test_telegram_proxy_ws.py
Переписать сетевое ядро Telegram Proxy по образцу ZaStoGram: WSS главный путь, фронты Cloudflare и туннель, незаметная смена молчащего маршрута
2026-09-28 00:35:00 +03:00
test_theme_manager_persistence.py
Remove the theme code nothing calls: async CSS build and theme saving
2026-10-24 19:25:19 -04:00
test_theme_paint_caches.py
Список стратегий: вдвое легче отрисовка, значки нарисованы заново, перебор идёт по всему каталогу
2026-10-07 23:28:25 +03:00
test_theme_refresh.py
Flush pending theme refreshes on tray show
2026-06-11 16:48:00 +03:00
test_thread_dump.py
Свести наблюдение за зависаниями интерфейса к одному watchdog
2026-07-28 15:13:03 +03:00
test_tile_grid.py
Главная: плитки и кнопка в сцене больше не остаются подсвеченными после щелчка — фокус от мыши не светится, а «курсор на плитке» сверяется с настоящим положением курсора, если окно подтверждения съело событие ухода
2026-10-06 13:21:29 +03:00
test_tile_layout.py
Профили пресета: группы стоят плитками в несколько столбцов — в шапке плитки значок сайта, счётчик «3 из 5» и полоска по профилям, в строках точка состояния, имя и способ обхода
2026-10-06 14:00:35 +03:00
test_tinted_appearance_settings.py
Fix tinted background settings
2026-06-12 18:12:25 +03:00
test_title_badge_paint.py
Нагрузка в покое: неподвижные части живых анимаций рисуются один раз
2026-10-07 05:22:19 +03:00
test_tools_in_path.py
BlockCheck: VPN-адаптер, прокси и программа, меняющая пакеты, различаются — на дороге проверки стоит только то, что её реально задевает
2026-10-08 21:32:13 +03:00
test_tooltip_keyboard_accessibility.py
Make tooltip actions keyboard accessible
2026-06-16 23:33:32 +03:00
test_tooltip_lifetime.py
Память: окно, скрытое в трей или свёрнутое дольше 2 минут, собирает мусор, чистит кэш картинок Qt и отдаёт Windows лишние страницы (пока окно открыто — ничего не выгружается); история оркестратора ограничена 3000 целей (давние UDP-адреса вытесняются, закреплённые остаются), счётчики успехов и «последняя стратегия» тоже ограничены; анализатор журналов winws хранит начало и конец соединения (200 пакетов) и не больше 200 тыс. пакетов на журнал; подсказки удаляются вместе со своим виджетом; реестр тем забывает удалённые виджеты сразу; повторное применение той же темы не перекрашивает все виджеты; предупреждение проверки прокси Telegram заменяет прежнее, а не копится
2026-09-30 23:35:31 +03:00
test_transfer_integration.py
BlockCheck: паузы и скорость ответа сайта видны в отчёте, на карточке и в экскурсии
2026-10-20 08:19:17 -04:00
test_transfer_probe.py
Проверки: замер времени до первого байта и вывод о паузах в передаче
2026-10-20 08:13:06 -04:00
test_tray_accessibility.py
Name tray confirmation buttons for screen readers
2026-06-11 18:55:54 +03:00
test_tray_close_mode_ui.py
Страницы собираются блоками: сначала видимое, остальное позже; появление блока рисуется одной картинкой и стоит процессору вдвое меньше
2026-10-08 15:15:07 +03:00
test_tray_menu_contract.py
Возврат окна из фона: защита памяти берётся до того, как Windows сожмёт набор свёрнутого окна
2026-10-19 16:41:24 -04:00
test_tray_opacity_worker.py
Убрать устаревшую поддержку GitHub API
2026-08-07 17:07:51 +03:00
test_type_checking_runtime_names.py
Ограничить по времени разрешение имён во всех сетевых проверках
2026-07-28 00:45:28 +03:00
test_udp_burst.py
BlockCheck: проверка «не замирает ли UDP после первых пакетов»; честнее формулировки про звонки и Telegram
2026-10-08 02:24:33 +03:00
test_ui_cleanup_nonblocking_contract.py
Make UI cleanup worker stops nonblocking
2026-06-07 02:06:04 +03:00
test_ui_freeze_watchdog.py
Сторож зависаний: в конце блокировки пишет, где поток окна стоял чаще всего
2026-10-08 14:02:42 +03:00
test_ui_freeze_watchdog_dump.py
Свести наблюдение за зависаниями интерфейса к одному watchdog
2026-07-28 15:13:03 +03:00
test_ui_jitter_watchdog_mode.py
Запуск: программа меньше «подлагивает» в первые секунды — скрытые страницы, окно «Что нового» и окно обновления строятся только в паузах пользователя, а не по таймеру посреди его действий; окно появляется раньше, потому что версию Windows больше не спрашивают через WMI
2026-10-06 19:11:32 +03:00
test_ui_log_limits.py
Сделал. Ветка осталась main, чужие уже существовавшие изменения не трогал. Что изменил: - Добавил общий ограничитель строк: [src/ui/log_limits.py](/mnt/g/Privacy/zapretgui/public_zapretgui/src/ui/log_limits.py:7). - Поставил лимиты на поля логов: обычные логи, ошибки, вывод winws, диагностика, BlockCheck, Telegram Proxy, Orchestra. - Ограничил очередь логов Telegram Proxy: [proxy_logger.py](/mnt/g/Privacy/zapretgui/public_zapretgui/src/telegram_proxy/proxy_logger.py:81). - Ограничил очередь логов Orchestra до обработки интерфейсом: [page.py](/mnt/g/Privacy/zapretgui/public_zapretgui/src/orchestra/ui/page.py:414). - Добавил тесты: [test_ui_log_limits.py](/mnt/g/Privacy/zapretgui/public_zapretgui/tests/test_ui_log_limits.py:1). Проверил: - PYTHONPATH=src python -m unittest discover -s tests — 28 тестов прошли. - PYTHONPATH=src python -m app.architecture_checks — проверка архитектуры прошла. - py_compile по изменённым файлам — без ошибок. Теперь старые строки в логовых окнах будут автоматически выкидываться, а в памяти останется только последний ограниченный хвост.
2026-05-17 17:35:03 +03:00
test_ui_performance_metrics.py
Довести полный набор тестов до зелёного состояния
2026-07-25 20:43:59 +03:00
test_ui_root_startup_launch_method.py
Тесты: два устаревших теста приведены к текущему коду — подставные зависимости окна получили пульт пуска и остановки launch_control, а поиск значков боковой панели проверяется в system/ico, куда их кладёт установщик; старая папка ico в корне теперь явно проверяется как неиспользуемая
2026-10-06 19:31:09 +03:00
test_ui_state_store_thread_marshalling.py
Доставлять колбэки state-store в GUI-поток
2026-07-28 00:45:02 +03:00
test_ui_worker_thread_contract.py
Не блокировать интерфейс при переключении пресета
2026-08-05 21:48:31 +03:00
test_update_check_coordinator.py
Автообновление: новая версия открывается в трее, если человек не в программе
2026-10-10 01:28:49 +03:00
test_update_core_apply.py
Обновление больше не может «удалить» программу: неудачный откат не стирается
2026-10-15 21:21:53 +03:00
test_update_core_bsdiff.py
Хранилище: без лишних заплаток zstd и с уборкой реестра Forgejo
2026-10-15 13:51:08 +03:00
test_update_core_fetch.py
Общее ядро обновления: скачивание по файлам, пробное дерево, замена с откатом
2026-10-15 01:48:38 +03:00
test_update_core_identity.py
Обновление: распаковщик проверяется до скачивания, zstandard — запасной
2026-10-15 02:49:45 +03:00
test_update_core_publish.py
Хранилище: без лишних заплаток zstd и с уборкой реестра Forgejo
2026-10-15 13:51:08 +03:00
test_update_core_release_notes.py
Ядро: одно правило шутки «Удалена буква «О»» для Zapret 2 GUI и KVN
2026-10-15 13:12:54 +03:00
test_update_core_rescue.py
Страховка замены файлов: откат доводится при входе в систему, даже без exe
2026-10-15 22:57:38 +03:00
test_update_core_store.py
Общее ядро обновления: хранилище файлов и заплатки zstd
2026-10-15 01:42:02 +03:00
test_update_core_swap.py
Обновление больше не может «удалить» программу: неудачный откат не стирается
2026-10-15 21:21:53 +03:00
test_update_dialog.py
Шутки в проверках и окне обновления: в каждом блоке не меньше 50 своих фраз на русском и английском, с отсылками к РКН-тян, ТСПУ и мемам про блокировки
2026-10-08 01:10:43 +03:00
test_update_mirrors.py
Mirrors: reader_host, the site name for links people read
2026-10-24 16:48:15 -04:00
test_updater_busy.py
Ядро: определение игры на экране — одно на Zapret 2 GUI и KVN
2026-10-15 15:49:37 +03:00
test_updater_changelog_link_queue.py
Use shared state for updater changelog links
2026-06-11 14:00:55 +03:00
test_updater_changelog_progress_plan.py
Переписать страницу обновлений на сервисы: DPI не остаётся выключенным, скачивание без склейки
2026-09-27 17:51:48 +03:00
test_updater_download_contract.py
Обновление качается сразу со всех источников: быстрый сервер забирает большую часть файла, застрявший кусок перехватывает свободное соединение, обрыв не теряет полученное, мёртвое зеркало никого не ждёт; среди зеркал берётся самая новая версия, а не первый ответ
2026-10-08 23:21:12 +03:00
test_updater_file_update.py
Страховка замены — сразу с первого обновления на новую версию
2026-10-15 23:32:36 +03:00
test_updater_forgejo_release.py
Обновление: обмен с Forgejo идёт под первым открытым именем сервера (git, git2, git3, …)
2026-10-19 18:52:15 -04:00
test_updater_handoff_state.py
Переписать установку обновления: наблюдатель больше не зависает и не ставит старую версию
2026-09-27 16:49:28 +03:00
test_updater_install_runtime_architecture.py
Закрытие программы: прощальный экран с медоедом и лёгкой строкой, окно плавно гаснет
2026-10-08 02:25:03 +03:00
test_updater_interrupted_update.py
Отчёт об обновлении: путь, объём скачанного и кто держал файл
2026-10-15 14:01:00 +03:00
test_updater_language_accessibility.py
Автообновление: программа ставит новую версию сама, по разрешению сервера с очередью
2026-10-09 20:35:14 +03:00
test_updater_release_contract.py
Обновление по файлам: Zapret 2 GUI качает только изменившееся и ставит себя сама
2026-10-15 02:10:13 +03:00
test_updater_release_outcome.py
Отчёт об обновлении: путь, объём скачанного и кто держал файл
2026-10-15 14:01:00 +03:00
test_updater_release_resolver.py
Обновление качается сразу со всех источников: быстрый сервер забирает большую часть файла, застрявший кусок перехватывает свободное соединение, обрыв не теряет полученное, мёртвое зеркало никого не ждёт; среди зеркал берётся самая новая версия, а не первый ответ
2026-10-08 23:21:12 +03:00
test_updater_release_watch.py
Ссылки на git и вики: открытое имя сайта выбирается один раз и для обновления, и для кнопок
2026-10-21 06:17:57 -04:00
test_updater_servers_breadcrumb.py
very update
2026-07-06 23:23:23 +03:00
test_updater_servers_page_assembly.py
Автообновление: программа ставит новую версию сама, по разрешению сервера с очередью
2026-10-09 20:35:14 +03:00
test_updater_settings_build.py
Автообновление: программа ставит новую версию сама, по разрешению сервера с очередью
2026-10-09 20:35:14 +03:00
test_updater_signed_release.py
Обновление по файлам: Zapret 2 GUI качает только изменившееся и ставит себя сама
2026-10-15 02:10:13 +03:00
test_updater_startup_update_check.py
Автообновление: не посреди дела и с отчётом серверу об исходе
2026-10-09 23:04:11 +03:00
test_updater_state_paths.py
Обновление без пустого экрана: пока старая версия закрывается, ставится и открывается новая, на месте окна обновления стоит окно-продолжение (отдельный PowerShell, переживает замену Zapret.exe) — этапы с галочками, логотип бежит по переливающейся полосе, шутки; гаснет, когда новая версия открылась, при неудаче или отмене уходит сразу; своя полоска установщика скрыта (/VERYSILENT, ошибки по-прежнему видны); в «Что нового» и окне обновления заголовок стоит вровень с логотипом
2026-09-30 13:29:25 +03:00
test_updater_update_card_accessibility.py
Обновления: у кнопки «Проверить снова» появился значок со стрелками — он покачивается при наведении, пружинит при нажатии, а после завершения проверки делает плавный оборот
2026-10-06 15:10:22 +03:00
test_updater_update_services.py
Автообновление: программа называет серверу причину неудачи
2026-10-14 19:21:11 +03:00
test_updater_watchdog_launch.py
Переписать установку обновления: наблюдатель больше не зависает и не ставит старую версию
2026-09-27 16:49:28 +03:00
test_updater_watchdog_windows.py
Наблюдатель установки возвращает прежнюю версию из _internal.old
2026-10-15 23:08:06 +03:00
test_upload_probe.py
Проверки сети: одна отменяемая пауза вместо пяти копий, общий TLS-контекст без приватного импорта
2026-10-12 23:50:36 +03:00
test_user_fakes.py
Страница «Фейки» в управлении Zapret 2: таблица встроенных фейков winws2 с числом стратегий, свои .bin-фейки в user/fakes с проверкой имени, удаление своих и общий реестр фейков для явного выбора стратегии
2026-09-27 20:06:50 +03:00
test_user_preset_activation_guard.py
Пресеты и профили — точность: проверка запуска не считает флаги в комментариях, строки делятся только по переводу строки (как у парсера); при смене стратегии сохраняется действующий (последний) --payload; новый пользовательский profile не делит файлы списков с переименованным, битая запись не роняет шаблоны; кэш профиля учитывает имя и файлы списков; «v1.5» ищется как v1.5.txt, имя возвращается как на диске; занятое имя при создании/копии/переименовании/импорте становится «X (2)» и в файле, и в списке; импорт ZIP переписывает ссылки в строке с несколькими опциями и отвергает имена CON, a.txt:поток и т.п.; смена стратегии не сбрасывает папку и порядок профиля; результат и ошибка импорта показываются всегда, повторный импорт по ссылке не теряет источник, папка сворачивается сразу; шаги перемещения папок не схлопываются; устаревший план фильтра стратегий не затирает строки; сбои обновления меты пишутся в лог. Доработки волны 1: запасной пресет нельзя удалить, щелчок по нему закрепляет выбор, действия над профилями не принимаются, пока список показывает прежний пресет, результат сканирования с заблокированным файлом не кэшируется
2026-09-30 14:08:38 +03:00
test_user_preset_bulk_action_queue.py
Добавить удалённые пресеты: импорт по ссылке и автообновление
2026-08-14 22:01:52 +03:00
test_user_preset_contract_migration.py
Разовый перевод пресетов winws2 пользователя в полный блок --lua-init при запуске: запись только при изменении текста, перезапуск только если изменились аргументы активного пресета, привязка к источнику сохраняется
2026-09-27 20:03:01 +03:00
test_user_preset_edit_action_queue.py
Fix user preset queue worker test freshness
2026-06-11 15:48:30 +03:00
test_user_preset_item_action_queue.py
Fix user preset queue worker test freshness
2026-06-11 15:48:30 +03:00
test_user_preset_pin_hit_area.py
Мои пресеты: плотная сетка плиток и шапка в одну строку
2026-10-08 01:15:59 +03:00
test_user_preset_storage_queue.py
Apply preset step moves locally
2026-06-11 16:15:22 +03:00
test_user_preset_write_serialization.py
Пресеты и профили — точность: проверка запуска не считает флаги в комментариях, строки делятся только по переводу строки (как у парсера); при смене стратегии сохраняется действующий (последний) --payload; новый пользовательский profile не делит файлы списков с переименованным, битая запись не роняет шаблоны; кэш профиля учитывает имя и файлы списков; «v1.5» ищется как v1.5.txt, имя возвращается как на диске; занятое имя при создании/копии/переименовании/импорте становится «X (2)» и в файле, и в списке; импорт ZIP переписывает ссылки в строке с несколькими опциями и отвергает имена CON, a.txt:поток и т.п.; смена стратегии не сбрасывает папку и порядок профиля; результат и ошибка импорта показываются всегда, повторный импорт по ссылке не теряет источник, папка сворачивается сразу; шаги перемещения папок не схлопываются; устаревший план фильтра стратегий не затирает строки; сбои обновления меты пишутся в лог. Доработки волны 1: запасной пресет нельзя удалить, щелчок по нему закрепляет выбор, действия над профилями не принимаются, пока список показывает прежний пресет, результат сканирования с заблокированным файлом не кэшируется
2026-09-30 14:08:38 +03:00
test_user_presets_accessibility.py
Ссылки на git и вики: открытое имя сайта выбирается один раз и для обновления, и для кнопок
2026-10-21 06:17:57 -04:00
test_user_presets_dependency_boundaries.py
Пресеты и профили — точность: проверка запуска не считает флаги в комментариях, строки делятся только по переводу строки (как у парсера); при смене стратегии сохраняется действующий (последний) --payload; новый пользовательский profile не делит файлы списков с переименованным, битая запись не роняет шаблоны; кэш профиля учитывает имя и файлы списков; «v1.5» ищется как v1.5.txt, имя возвращается как на диске; занятое имя при создании/копии/переименовании/импорте становится «X (2)» и в файле, и в списке; импорт ZIP переписывает ссылки в строке с несколькими опциями и отвергает имена CON, a.txt:поток и т.п.; смена стратегии не сбрасывает папку и порядок профиля; результат и ошибка импорта показываются всегда, повторный импорт по ссылке не теряет источник, папка сворачивается сразу; шаги перемещения папок не схлопываются; устаревший план фильтра стратегий не затирает строки; сбои обновления меты пишутся в лог. Доработки волны 1: запасной пресет нельзя удалить, щелчок по нему закрепляет выбор, действия над профилями не принимаются, пока список показывает прежний пресет, результат сканирования с заблокированным файлом не кэшируется
2026-09-30 14:08:38 +03:00
test_user_presets_lifecycle_guards.py
Пресеты и профили: убран неиспользуемый код (~560 строк: модули public.py, диалог имени пресета zapret2, мёртвые функции в preset_text_ops, profile.folders, привязках к источнику, фасаде запуска и страницах), переключение пресета больше не ждёт лишние 0,5 с — быстрые щелчки склеивает один debounce в switch pipeline
2026-09-30 02:11:03 +03:00
test_user_presets_metadata_load_queue.py
very update
2026-07-06 23:23:23 +03:00
test_user_presets_reset_result.py
Skip duplicate reset result button updates
2026-05-30 19:07:15 +03:00
test_user_presets_rows_worker_architecture.py
very update
2026-07-06 23:23:23 +03:00
test_user_profile_dialog_accessibility.py
fix
2026-06-17 23:47:29 +03:00
test_user_profile_operation_queue.py
Track preset setup workers by request id
2026-06-10 23:56:20 +03:00
test_user_profiles.py
Профили: отложенные стратегия, переключатель и настройки пишутся в профиль, открытый при щелчке (а не в тот, что открыт к моменту записи), записи разных профилей не замещают друг друга, быстрые щелчки по стратегиям не теряют последний выбор, ждущие записи сохраняются при закрытии окна; смена пресета или стратегии во время запуска DPI применяется после старта; перемещение профилей больше не дописывает «--new=TCP 443» и не сдвигает их ключи; тот же профиль, открытый заново после правки пресета, показывает файл; переименование своего профиля сохраняет его папку и оценки
2026-09-30 02:06:39 +03:00
test_video_nodes.py
Сроки проверки: страница ролика по нескольким адресам сразу, редиректор параллельно, таблица избирательности раньше замера потока
2026-10-21 17:21:28 -04:00
test_volume_probe.py
Проба объёма: один повтор, если подключиться не вышло с первого раза
2026-10-20 12:24:55 -04:00
test_whats_new.py
«Что нового»: если сохранённый перед установкой текст короткий (старые версии записывали только пропущенные выпуски), раздел «Ранее» добирается из списка выпусков Forgejo до 10; без сети показывается сохранённое как есть
2026-09-30 23:10:02 +03:00
test_win10_tinted_background.py
Починить падение «Оформления» и сделать одного хозяина Premium-правил темы
2026-09-27 17:42:33 +03:00
test_win11_row_fit.py
Главная: свой нарисованный медоед — моргает, смотрит на стену и машет лапами; в узком окне сцена встаёт отдельной строкой, плитки не уходят в один столбец, а длинные подписи настроек обрезаются многоточием с подсказкой
2026-10-03 19:59:07 +03:00
test_win11_spinner.py
Запускать кольцо после показа страницы
2026-08-05 21:16:47 +03:00
test_win11_toggle_row.py
Localize Win11 toggle state text
2026-06-13 23:15:23 +03:00
test_win32_shellcon_compat.py
Быстрее появление окна: фильтр перетаскивания на всё приложение не ставится на Windows, подсказка перетаскивания создаётся при первом показе, asyncio/requests/psutil греются после готовности окна; метка StartupFirstPaint в журнале
2026-09-27 20:17:42 +03:00
test_windivert_conflict_detection.py
Драйвер WinDivert и запуск winws: служба Monkey больше не зависает — программа сама держала её незакрытым хэндлом (CloseServiceHandle без argtypes падал с «int too long to convert»); новый слой winws_runtime/engine на типизированном WinAPI: запуск подтверждается строкой windivert initialized из вывода winws, остановка — сигналом Windows о выходе процесса, без пауз «на глаз»; кнопка «Стоп», выход и обновление выгружают драйвер и убирают его службу, когда им никто не пользуется (кроме Kaspersky), перезапуск и смена пресета драйвер не трогают; останавливаются только winws из папки программы, чужая копия запрета не убивается; реестр службы, DeleteFlag и тип запуска больше не правятся, штатное «отключена и помечена на удаление» у работающего драйвера не считается поломкой; застрявшая служба называется пользователю с причиной; оркестратор переведён на те же подтверждения; вывод winws первой версии пишется в файл; сквозные проверки на живой Windows в tests/e2e_windows
2026-10-02 02:34:45 +03:00
test_windivert_diagnostics.py
Запуск winws2: конфликт фильтров WinDivert от прошлого запуска лечится повторами, а код ошибки показывается верный
2026-10-07 22:28:49 +03:00
test_windivert_runtime_policy.py
Мягкая остановка движка и перечитывание списков без перезапуска
2026-10-07 17:47:04 +03:00
test_windivert_service_recovery.py
Драйвер WinDivert и запуск winws: служба Monkey больше не зависает — программа сама держала её незакрытым хэндлом (CloseServiceHandle без argtypes падал с «int too long to convert»); новый слой winws_runtime/engine на типизированном WinAPI: запуск подтверждается строкой windivert initialized из вывода winws, остановка — сигналом Windows о выходе процесса, без пауз «на глаз»; кнопка «Стоп», выход и обновление выгружают драйвер и убирают его службу, когда им никто не пользуется (кроме Kaspersky), перезапуск и смена пресета драйвер не трогают; останавливаются только winws из папки программы, чужая копия запрета не убивается; реестр службы, DeleteFlag и тип запуска больше не правятся, штатное «отключена и помечена на удаление» у работающего драйвера не считается поломкой; застрявшая служба называется пользователю с причиной; оркестратор переведён на те же подтверждения; вывод winws первой версии пишется в файл; сквозные проверки на живой Windows в tests/e2e_windows
2026-10-02 02:34:45 +03:00
test_window_first_frame.py
Окно из трея открывается сразу готовым, без белого кадра и без лишней подкачки памяти
2026-10-16 01:10:31 +03:00
test_window_geometry_persist_hidden.py
Отзывчивость: сворачивание в трей больше не пишет положение окна в базу настроек в потоке интерфейса — снимок берётся сразу, запись делает фоновый поток (и не делается вовсе, если окно не двигали); синхронная запись осталась только для выхода из программы
2026-10-06 20:31:07 +03:00
test_window_geometry_worker.py
very update
2026-07-06 23:23:23 +03:00
test_window_metrics.py
Unify startup window geometry ownership
2026-05-25 16:25:33 +03:00
test_window_notification_actions_contract.py
very update
2026-07-06 23:23:23 +03:00
test_window_premium_appearance.py
Починить падение «Оформления» и сделать одного хозяина Premium-правил темы
2026-09-27 17:42:33 +03:00
test_window_presence.py
Возврат из трея: удержание памяти растёт вместе с программой, фон ждёт после показа
2026-10-19 18:08:42 -04:00
test_window_preset_file_drop.py
Быстрее появление окна: фильтр перетаскивания на всё приложение не ставится на Windows, подсказка перетаскивания создаётся при первом показе, asyncio/requests/psutil греются после готовности окна; метка StartupFirstPaint в журнале
2026-09-27 20:17:42 +03:00
test_window_show_from_hidden.py
very update
2026-07-06 23:23:23 +03:00
test_window_startup_continue_delay.py
Continue startup immediately after interactive
2026-05-30 20:14:47 +03:00
test_window_state_single_owner.py
обновление
2026-07-15 21:05:58 +03:00
test_window_thread_affinity.py
Архитектура потоков: элементы окна создаются только в потоке окна. Страж в единой точке создания плашек InfoBar переносит вызов из фонового потока в поток окна; службы с подписчиками (настройки программы, проверка обновлений) зовут страницы только в потоке окна; общие объекты Qt (шина событий пресетов, менеджер Telegram Proxy, гейт воркеров) живут в потоке окна, кто бы их ни создал; проверка для CI запрещает фоновым модулям плашки, диалоги и виджеты
2026-10-06 22:06:37 +03:00
test_window_ui_facade_lazy_imports.py
Reset global search accessibility state on clear
2026-06-13 15:34:36 +03:00
test_windows_drag_hover_detector.py
Возврат окна из фона: защита памяти берётся до того, как Windows сожмёт набор свёрнутого окна
2026-10-19 16:41:24 -04:00
test_windows_file_drop.py
Исправить импорт перетаскиванием в повышенное окно
2026-08-08 19:12:02 +03:00
test_windows_system_theme.py
Fix Windows system theme event filter
2026-06-14 21:18:31 +03:00
test_windows_working_set.py
Возврат окна из фона: защита памяти берётся до того, как Windows сожмёт набор свёрнутого окна
2026-10-19 16:41:24 -04:00
test_winws1_launch_dry_run_retry.py
Fix Zapret 1 launch retry after dry-run
2026-05-31 14:20:19 +03:00
test_winws1_profile_boundaries.py
Профили: отложенные стратегия, переключатель и настройки пишутся в профиль, открытый при щелчке (а не в тот, что открыт к моменту записи), записи разных профилей не замещают друг друга, быстрые щелчки по стратегиям не теряют последний выбор, ждущие записи сохраняются при закрытии окна; смена пресета или стратегии во время запуска DPI применяется после старта; перемещение профилей больше не дописывает «--new=TCP 443» и не сдвигает их ключи; тот же профиль, открытый заново после правки пресета, показывает файл; переименование своего профиля сохраняет его папку и оценки
2026-09-30 02:06:39 +03:00
test_winws2_language_completion.py
Редактор пресета Zapret 2 подсказывает опции и Lua-функции, подчёркивает ошибки и предлагает быстрые исправления
2026-09-28 17:49:56 +03:00
test_winws2_language_diagnostics.py
Редактор пресета Zapret 2 подсказывает опции и Lua-функции, подчёркивает ошибки и предлагает быстрые исправления
2026-09-28 17:49:56 +03:00
test_winws2_language_lua_coverage.py
Редактор пресета Zapret 2 подсказывает опции и Lua-функции, подчёркивает ошибки и предлагает быстрые исправления
2026-09-28 17:49:56 +03:00
test_winws2_language_option_coverage.py
Редактор пресета Zapret 2 подсказывает опции и Lua-функции, подчёркивает ошибки и предлагает быстрые исправления
2026-09-28 17:49:56 +03:00
test_winws2_language_tokens.py
Редактор пресета Zapret 2 подсказывает опции и Lua-функции, подчёркивает ошибки и предлагает быстрые исправления
2026-09-28 17:49:56 +03:00
test_winws2_launch_preset_validation.py
Запуск winws2: конфликт фильтров WinDivert от прошлого запуска лечится повторами, а код ошибки показывается верный
2026-10-07 22:28:49 +03:00
test_winws2_payload_strategy_branches.py
Настройка профиля: вкладки переделаны и названы по содержимому — «Готовые стратегии», «Список сайтов» (для ipset «Список адресов») и «Текст профиля» вместо «Редактор» и «Когда применяется». Оценка выбранной стратегии («Работает», «Не работает», «В избранное») стоит под списком стратегий рядом с её названием; повторное нажатие снимает оценку, отдельная кнопка «Убрать оценку» убрана. В списке сайтов свои записи стоят первыми и на широком окне рядом со встроенными. На вкладке текста остался только редактор на всю высоту: сводка с условиями и аргументами, повторявшая шапку и сам текст, удалена вместе с кодом, который её готовил. Три части страницы вынесены в отдельные модули
2026-10-07 00:48:32 +03:00
test_winws_log_analyzer_page.py
Экскурсия «Как пользоваться программой» ведёт по всей программе и показывает примеры: фейки, режимы, DNS, hosts, Telegram Proxy, BlockCheck со всеми вкладками, разбор лога, оформление, логи и обновления; вместо точек — строка глав; подсказка сама держит на экране то, о чём рассказывает
2026-10-08 02:13:52 +03:00
test_winws_log_parser.py
Память: окно, скрытое в трей или свёрнутое дольше 2 минут, собирает мусор, чистит кэш картинок Qt и отдаёт Windows лишние страницы (пока окно открыто — ничего не выгружается); история оркестратора ограничена 3000 целей (давние UDP-адреса вытесняются, закреплённые остаются), счётчики успехов и «последняя стратегия» тоже ограничены; анализатор журналов winws хранит начало и конец соединения (200 пакетов) и не больше 200 тыс. пакетов на журнал; подсказки удаляются вместе со своим виджетом; реестр тем забывает удалённые виджеты сразу; повторное применение той же темы не перекрашивает все виджеты; предупреждение проверки прокси Telegram заменяет прежнее, а не копится
2026-09-30 23:35:31 +03:00
test_winws_missing_lua_function.py
Ошибка запуска про несуществующую Lua-функцию подсказывает, какую функцию вы имели в виду; длинный текст в строке статуса пресета больше не обрезается
2026-09-28 19:10:33 +03:00
test_winws_runtime_thread_runtime.py
Не блокировать интерфейс при переключении пресета
2026-08-05 21:48:31 +03:00
test_winws_runtime_ui_thread_contract.py
Убрать блокировки интерфейса из DPI runtime
2026-07-25 20:43:11 +03:00
test_winws_silent_exit.py
Драйвер WinDivert и запуск winws: служба Monkey больше не зависает — программа сама держала её незакрытым хэндлом (CloseServiceHandle без argtypes падал с «int too long to convert»); новый слой winws_runtime/engine на типизированном WinAPI: запуск подтверждается строкой windivert initialized из вывода winws, остановка — сигналом Windows о выходе процесса, без пауз «на глаз»; кнопка «Стоп», выход и обновление выгружают драйвер и убирают его службу, когда им никто не пользуется (кроме Kaspersky), перезапуск и смена пресета драйвер не трогают; останавливаются только winws из папки программы, чужая копия запрета не убивается; реестр службы, DeleteFlag и тип запуска больше не правятся, штатное «отключена и помечена на удаление» у работающего драйвера не считается поломкой; застрявшая служба называется пользователю с причиной; оркестратор переведён на те же подтверждения; вывод winws первой версии пишется в файл; сквозные проверки на живой Windows в tests/e2e_windows
2026-10-02 02:34:45 +03:00
test_winws_system_dependencies.py
Hide service exception profile from UI
2026-06-13 23:17:55 +03:00
test_worker_finished_pending_guard_contract.py
Use queued finish guard for profile writes
2026-06-11 22:51:52 +03:00
test_worker_ui_boundary.py
Перестроить BlockCheck на единый планировщик проб
2026-07-28 15:46:08 +03:00
test_zapret2_control_lazy_startup.py
Страницы собираются блоками: сначала видимое, остальное позже; появление блока рисуется одной картинкой и стоит процессору вдвое меньше
2026-10-08 15:15:07 +03:00