zapretgui/tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
loop-uh 8f26c94958
All checks were successful
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