Zapret | Дорожная карта
2.32K subscribers
28 photos
24 files
2.95K links
Дорожная карта обновлений.

Узнайте что я буду редактировать в Запрет для обхода блокировок Дискорда и Ютуба в первую очередь

И ужаснуться моим техническим непонятным запискам без контекста.
Download Telegram
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Исправить замену верхней панели окна

👤 Автор: loop-uh
📅 Дата: 24.07.2026 15:02:14
🔗 SHA: 7885568

📊 Статистика:
➕ Добавлено: 28 строк
➖ Удалено: 0 строк
📝 Всего изменений: 28

📁 Изменено файлов: 2

✏️ src/ui/fluent_app_window.py
+14 -0

Добавилось:
def setTitleBar(self, title_bar) -> None:  # noqa: N802 (qfluentwidgets API)

"""Безопасно заменяет верхнюю панель окна.

qframelesswindow регистрирует каждую TitleBar как фильтр событий окна,

но при замене только откладывает её удаление. На Python 3.14 / PyQt6

6.11 старая панель иногда успевает получить WindowStateChange уже во

время очистки Python-объекта, когда maxBtn в нём больше нет.

"""

previous_title_bar = getattr(self, "titleBar", None)

if previous_title_bar is not None and previous_title_bar is not title_bar:

self.removeEventFilter(previous_title_bar)

... и еще 1 строк

✏️ tests/test_fluent_app_window_chrome.py
+14 -0

Добавилось:
def test_replaced_titlebar_is_removed_from_window_event_filters(self) -> None:

class EventFilterTrackingWindow(ZapretFluentWindow):

def removeEventFilter(self, event_filter) -> None:  # noqa: N802

detached = self.__dict__.setdefault("_detached_event_filters", [])

detached.append(event_filter)

super().removeEventFilter(event_filter)

window = EventFilterTrackingWindow()

detached = window.__dict__.get("_detached_event_filters", [])

self.assertGreaterEqual(len(detached), 1)

self.assertNotIn(window.titleBar, detached)

... и еще 1 строк

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Закрепить актуальные версии библиотек

👤 Автор: loop-uh
📅 Дата: 24.07.2026 15:19:28
🔗 SHA: 4982868

📊 Статистика:
➕ Добавлено: 124 строк
➖ Удалено: 61 строк
📝 Всего изменений: 185

📁 Изменено файлов: 9

✏️ .github/workflows/windows-release.yml
+1 -1

Удалилось:
python -m pip install nuitka pyinstaller PyQt6 PyQt6-Qt6 PyQt6-sip pywin32 psutil requests urllib...


Добавилось:
python -m pip install --upgrade --upgrade-strategy eager -r requirements-build.txt


🆕 requirements-build.txt
+7 -0

Добавилось:
# Каноническое окружение сборки runtime.

# Этот файл устанавливает действующий GitHub Actions workflow.

-r requirements-runtime.txt

PyInstaller==6.21.0

Nuitka==4.1.3


🆕 requirements-dev.txt
+4 -0

Добавилось:
# Инструменты разработки, тестов и генерации ресурсов.

pytest==9.1.1

simplepycons==1!16.27.0


🆕 requirements-publish.txt
+6 -0

Добавилось:
# Инструменты публикации выпуска.

PyGithub==2.9.1

paramiko==5.0.0

Pyrogram==2.0.106

Telethon==1.44.0


🆕 requirements-runtime.txt
+26 -0

Добавилось:
# Библиотеки, которые использует приложение и которые попадают в runtime.

# Последняя сверка с PyPI: 2026-07-24.

# GUI

PyQt6==6.11.0

PyQt6-Qt6==6.11.1

PyQt6-sip==13.11.1

PyQt6-Fluent-Widgets==1.11.2

PyQt6-Frameless-Window==0.8.1

QtAwesome==1.4.2

# Сеть и HTTP

... и еще 12 строк

✏️ requirements.txt
+9 -56

Удалилось:
# requirements.txt — Zapret GUI

# "C:\Program Files\Python314\Scripts\pip.exe" install -r requirements.txt

# python.exe -m pip install --upgrade pip

# ════════════════════════════════════════════════════════════

# Runtime (попадает в exe — это же ставит CI в windows-release.yml)

# ════════════════════════════════════════════════════════════

# GUI Framework

PyQt6

PyQt6-Qt6

PyQt6-sip

... и еще 37 строк

Добавилось:
# Полное окружение разработки и выпуска ZapretGUI.

# Версии пакетов находятся только в профильных файлах ниже.

#

# Установка на Windows:

#   py -3.14 -m pip install --upgrade --upgrade-strategy eager -r requirements.txt

-r requirements-build.txt

-r requirements-publish.txt

-r requirements-dev.txt


✏️ tests/test_build_resource_layout.py
+5 -0

Добавилось:
self.assertIn(

"python -m pip install --upgrade --upgrade-strategy eager -r requirements-build.txt",

workflow,

)

self.assertNotIn("pip install nuitka pyinstaller", workflow.lower())


✏️ tests/test_crypto_dependency_trim.py
+5 -4

Удалилось:
checked_paths = [ROOT / "requirements.txt", ROOT / ".github" / "workflows" / "windows-release.yml"]

requirements = (ROOT / "requirements.txt").read_text(encoding="utf-8")

self.assertIn("tgcrypto", requirements)

self.assertIn("tgcrypto", workflow)


Добавилось:
checked_paths = list(ROOT.glob("requirements*.txt"))

checked_paths.append(ROOT / ".github" / "workflows" / "windows-release.yml")

runtime_requirements = (ROOT / "requirements-runtime.txt").read_text(encoding="utf-8")

self.assertIn("TgCrypto==1.2.5", runtime_requirements)

self.assertIn("-r requirements-build.txt", workflow)


... и еще 1 файлов

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Исправить публичную Windows-сборку без закрытого значка

👤 Автор: loop-uh
📅 Дата: 24.07.2026 15:23:47
🔗 SHA: e485607

📊 Статистика:
➕ Добавлено: 2 строк
➖ Удалено: 2 строк
📝 Всего изменений: 4

📁 Изменено файлов: 2

✏️ .github/workflows/windows-release.yml
+0 -2

Удалилось:
"--windows-icon-from-ico=src\ico\Zapret2.ico",

"--icon", "src\ico\Zapret2.ico",


✏️ tests/test_build_resource_layout.py
+2 -0

Добавилось:
self.assertNotIn(r"src\ico", workflow)

self.assertNotIn("--windows-icon-from-ico", workflow)


🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Исправить жизненный цикл fluent-диалогов

👤 Автор: loop-uh
📅 Дата: 24.07.2026 16:10:05
🔗 SHA: e73221d

📊 Статистика:
➕ Добавлено: 180 строк
➖ Удалено: 21 строк
📝 Всего изменений: 201

📁 Изменено файлов: 21

✏️ src/dns/ui/custom_dns_dialog.py
+2 -1

Удалилось:
from qfluentwidgets import BodyLabel, CaptionLabel, LineEdit, MessageBoxBase, SubtitleLabel


Добавилось:
from qfluentwidgets import BodyLabel, CaptionLabel, LineEdit, SubtitleLabel

from ui.fluent_dialog import MessageBoxBase


✏️ src/dns/ui/page.py
+2 -1

Удалилось:
InfoBarPosition, LineEdit, MessageBox, PushButton, RoundMenu, SettingCardGroup, StrongBodyLabel,


Добавилось:
InfoBarPosition, LineEdit, PushButton, RoundMenu, SettingCardGroup, StrongBodyLabel,

from ui.fluent_dialog import MessageBox


✏️ src/donater/ui/page.py
+2 -1

Удалилось:
from qfluentwidgets import BodyLabel, InfoBar, MessageBox, SubtitleLabel


Добавилось:
from qfluentwidgets import BodyLabel, InfoBar, SubtitleLabel

from ui.fluent_dialog import MessageBox


✏️ src/hosts/ui/page.py
+2 -1

Удалилось:
BodyLabel, CaptionLabel, ComboBox, InfoBar, MessageBox, PushButton,


Добавилось:
BodyLabel, CaptionLabel, ComboBox, InfoBar, PushButton,

from ui.fluent_dialog import MessageBox


✏️ src/main/post_startup_host.py
+1 -1

Удалилось:
from qfluentwidgets import MessageBox


Добавилось:
from ui.fluent_dialog import MessageBox


✏️ src/orchestra/ui/blocked_page.py
+1 -1

Удалилось:
MessageBox,


Добавилось:
from ui.fluent_dialog import MessageBox


✏️ src/orchestra/ui/locked_page.py
+1 -1

Удалилось:
MessageBox,


Добавилось:
from ui.fluent_dialog import MessageBox


✏️ src/orchestra/ui/whitelist_page.py
+1 -1

Удалилось:
MessageBox,


Добавилось:
from ui.fluent_dialog import MessageBox


✏️ src/presets/ui/common/preset_subpage_base.py
+1 -2

Удалилось:
MessageBox,

MessageBoxBase,


Добавилось:
from ui.fluent_dialog import MessageBox, MessageBoxBase


✏️ src/presets/ui/common/user_presets_dialogs.py
+2 -1

Удалилось:
from qfluentwidgets import BodyLabel, CaptionLabel, LineEdit, MessageBoxBase, SubtitleLabel


Добавилось:
from qfluentwidgets import BodyLabel, CaptionLabel, LineEdit, SubtitleLabel

from ui.fluent_dialog import MessageBoxBase


... и еще 11 файлов

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 fix(profile): allow top-level hostlist suffixes

👤 Автор: loop-uh
📅 Дата: 25.07.2026 13:40:14
🔗 SHA: 5232c3c

📊 Статистика:
➕ Добавлено: 12 строк
➖ Удалено: 3 строк
📝 Всего изменений: 15

📁 Изменено файлов: 2

✏️ src/profile/list_file_editor.py
+4 -3

Удалилось:
if len(ascii_domain) > 253 or "." not in ascii_domain:

if len(labels) < 2:

return False


Добавилось:
if len(ascii_domain) > 253:

# Оригинальный nfqws2 ищет hostname по суффиксам:

# www.example.ru -> example.ru -> ru. Поэтому одиночная DNS-метка вроде

# ru или su — допустимая и осмысленная запись hostlist.


✏️ tests/test_profile_list_file_editor.py
+8 -0

Добавилось:
def test_hostlist_accepts_single_label_suffixes_supported_by_nfqws2(self) -> None:

invalid = validate_profile_list_file_text(

"hostlist",

"ru\nsu\n",

)

self.assertEqual(invalid, ())


🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Централизовать theme-подписки qfluentwidgets и укрепить сайдбар

👤 Автор: loop-uh
🔗 SHA: b3fc3fb

📊 Статистика: 15 files changed, 581 insertions(+), 33 deletions(-)

📁 Изменённые файлы:
✏️ src/blockcheck/dns_integrity.py
✏️ src/hosts/proxy_domains.py
✏️ src/main/qt_runtime.py
✏️ src/main/window_lifecycle_cleanup.py
✏️ src/startup/check_start.py
✏️ src/ui/navigation/sidebar_builder.py
✏️ src/ui/navigation/sidebar_intent.py
✏️ src/ui/presets_menu/common.py
🆕 src/ui/qfluent_signal_guards.py
✏️ src/ui/theme_refresh.py
✏️ src/updater/update.py
✏️ tests/test_build_resource_layout.py
✏️ tests/test_preset_sidebar_navigation.py
🆕 tests/test_qfluent_signal_guards.py
✏️ tests/test_sidebar_intent_persistence.py

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Централизовать theme-подписки qfluentwidgets и укрепить сайдбар

👤 Автор: loop-uh
📅 Дата: 25.07.2026 14:42:53
🔗 SHA: b3fc3fb

📊 Статистика:
➕ Добавлено: 581 строк
➖ Удалено: 33 строк
📝 Всего изменений: 614

📁 Изменено файлов: 15

✏️ src/blockcheck/dns_integrity.py
+2 -0

Добавилось:
from __future__ import annotations


✏️ src/hosts/proxy_domains.py
+2 -2

Удалилось:
_log(f"Не удалось разобрать {_CATALOG_FILE_NAME}: {exc}", "WARNING")

_log(f"{_CATALOG_FILE_NAME} должен содержать JSON-объект", "WARNING")


Добавилось:
_log(f"Не удалось разобрать hosts-каталог: {exc}", "WARNING")

_log("hosts-каталог должен содержать JSON-объект", "WARNING")


✏️ src/main/qt_runtime.py
+8 -0

Добавилось:
t_signal_guards = _time.perf_counter()

from ui.qfluent_signal_guards import install_qfluent_theme_signal_guards

install_qfluent_theme_signal_guards()

emit_startup_metric(

"StartupQtThemeSignalGuards",

f"{(_time.perf_counter() - t_signal_guards) * 1000:.0f}ms",

)


✏️ src/main/window_lifecycle_cleanup.py
+8 -4

Удалилось:
"""Синхронно дозаписывает намерение сайдбара, не успевшее уйти через воркер.

воркеру и его reschedule-таймеру завершиться, поэтому pending-значение

пишется здесь напрямую — как и геометрия окна.

controller.mark_saved(bool(pending))


Добавилось:
"""Синхронно записывает намерение сайдбара при выходе.

воркеру и его reschedule-таймеру завершиться, поэтому значение пишется

здесь напрямую — как и геометрия окна. Запись выполняется даже если воркер

отчитался об успехе (его сигналу не доверяем — потеря стоила бы состояния

панели); повторные вызовы в той же цепочке выхода дедуплицируются через

mark_flushed.

controller.mark_flushed(bool(pending))

log(f"[SIDEBAR] flush при {context}: expanded={bool(pending)}", "INFO")


✏️ src/startup/check_start.py
+1 -0

Добавилось:
import ctypes


✏️ src/ui/navigation/sidebar_builder.py
+52 -9

Удалилось:
from ui.navigation.sidebar_intent import DEFAULT_EXPAND_THRESHOLD, SidebarIntentController

on_failed=lambda _request_id, error: log(f"Не удалось сохранить состояние сайдбара: {error}", "DE...

if _read_saved_sidebar_expanded():

if _window_width(window) < _sidebar_expand_threshold(window):

window_width=_window_width(window),

def reapply_sidebar_intent_on_resize(window) -> None:

return

return

return


Добавилось:
from ui.navigation.sidebar_intent import (

DEFAULT_EXPAND_THRESHOLD,

SidebarIntentController,

normalize_display_mode_name,

)

SIDEBAR_INTENT_RECHECK_AFTER_INIT_MS = 1500

on_failed=lambda _request_id, error: log(f"Не удалось сохранить состояние сайдбара: {error}", "WA...

log(f"[SIDEBAR] состояние сохранено воркером: expanded={bool(saved_expanded)}", "INFO")

saved = _read_saved_sidebar_expanded()

width = _window_width(window)

... и еще 39 строк

... и еще 9 файлов

... и еще 5 файлов

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Исправить программное сворачивание сайдбара и закрытие диалогов

👤 Автор: loop-uh
🔗 SHA: 8f1252e

📊 Статистика: 6 files changed, 233 insertions(+), 50 deletions(-)

📁 Изменённые файлы:
✏️ src/ui/fluent_dialog.py
✏️ src/ui/navigation/sidebar_builder.py
✏️ src/ui/navigation/sidebar_intent.py
✏️ tests/test_fluent_dialog_lifecycle.py
✏️ tests/test_preset_sidebar_navigation.py
✏️ tests/test_sidebar_intent_persistence.py

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Исправить изоляцию Qt-тестов и Linux-пропуски

👤 Автор: loop-uh
🔗 SHA: 7d3b2c5

📊 Статистика: 7 files changed, 125 insertions(+), 14 deletions(-)

📁 Изменённые файлы:
✏️ tests/conftest.py
✏️ tests/test_dns_adapter_filtering.py
✏️ tests/test_dns_core_winapi.py
✏️ tests/test_launch_conflicting_processes.py
✏️ tests/test_process_probe_ctypes_isolation.py
✏️ tests/test_startup_install_path_checks.py
✏️ tests/test_updater_installer_launch.py

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Архитектурно связать состояние сайдбара с действием пользователя

👤 Автор: loop-uh
🔗 SHA: 3f745fd

📊 Статистика: 7 files changed, 195 insertions(+), 37 deletions(-)

📁 Изменённые файлы:
✏️ src/ui/fluent_dialog.py
✏️ src/ui/navigation/sidebar_builder.py
✏️ src/ui/navigation/sidebar_intent.py
✏️ src/ui/window_ui_session.py
✏️ tests/test_fluent_dialog_lifecycle.py
✏️ tests/test_preset_sidebar_navigation.py
✏️ tests/test_sidebar_intent_persistence.py

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Перевести обновление на поэтапный конвейер

👤 Автор: loop-uh
🔗 SHA: 771322e

📊 Статистика: 22 files changed, 1441 insertions(+), 792 deletions(-)

📁 Изменённые файлы:
✏️ src/app/feature_facades/updater.py
✏️ src/ui/page_composition.py
✏️ src/ui/page_deps/system.py
✏️ src/ui/page_deps/types.py
✏️ src/updater/commands.py
✏️ src/updater/github_release.py
✏️ src/updater/public.py
✏️ src/updater/release_manager.py
✏️ src/updater/retry_workers.py
✏️ src/updater/startup_update_check.py
✏️ src/updater/update.py
✏️ src/updater/update_page_runtime.py
🆕 src/updater/update_pipeline.py
✏️ tests/test_preset_profile_async_architecture.py
✏️ tests/test_server_status_worker_contract.py
✏️ tests/test_update_check_coordinator.py
✏️ tests/test_updater_cleanup_source_contract.py
✏️ tests/test_updater_download_contract.py
✏️ tests/test_updater_download_threading_import.py
✏️ tests/test_updater_install_runtime_architecture.py
🆕 tests/test_updater_pipeline_runtime.py
✏️ tests/test_updater_settings_worker_architecture.py

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Убрать блокировки интерфейса из DPI runtime

👤 Автор: loop-uh
🔗 SHA: 11afa05

📊 Статистика: 46 files changed, 623 insertions(+), 888 deletions(-)

📁 Изменённые файлы:
✏️ src/app/feature_facades/runtime.py
✏️ src/app/feature_facades/runtime_parts.py
✏️ src/main/application_lifecycle.py
✏️ src/main/application_post_startup.py
✏️ src/main/post_startup.py
✏️ src/main/post_startup_profile_warmup.py
✏️ src/main/post_startup_user_presets_warmup.py
✏️ src/main/startup_coordinator.py
✏️ src/main/window_startup.py
✏️ src/orchestra/page_runtime.py
✏️ src/settings/dpi/page.py
✏️ src/settings/dpi/workers.py
✏️ src/telegram_proxy/ui/page_runtime.py
✏️ src/ui/page_deps/system.py
✏️ src/winws_runtime/monitoring/process_monitor_manager.py
✏️ src/winws_runtime/public.py
✏️ src/winws_runtime/runners/zapret1_runner.py
✏️ src/winws_runtime/runners/zapret2_runner.py
✏️ src/winws_runtime/runtime/autostart.py
✏️ src/winws_runtime/runtime/commands.py
✏️ src/winws_runtime/runtime/control_workers.py
✏️ src/winws_runtime/runtime/discord_restart_flow.py
✏️ src/winws_runtime/runtime/launch_runtime.py
✏️ src/winws_runtime/runtime/lifecycle_feedback.py
✏️ src/winws_runtime/runtime/method_switch_flow.py
✏️ src/winws_runtime/runtime/preset_launch_service.py
✏️ src/winws_runtime/runtime/restart_flow.py
✏️ src/winws_runtime/runtime/start_flow.py
✏️ src/winws_runtime/runtime/start_workers.py
✏️ src/winws_runtime/runtime/startup.py
✏️ src/winws_runtime/runtime/status_feedback.py
✏️ src/winws_runtime/runtime/status_flow.py
✏️ src/winws_runtime/runtime/stop_flow.py
✏️ src/winws_runtime/runtime/sync_shutdown.py
✏️ src/winws_runtime/state/launch_runtime_service.py
✏️ tests/test_exit_watch_autorestart.py
✏️ tests/test_main_startup_contract.py
✏️ tests/test_orchestra_worker_architecture.py
✏️ tests/test_preset_status_bar.py
✏️ tests/test_runtime_process_pid.py
✏️ tests/test_startup_autostart.py
✏️ tests/test_startup_autostart_order.py
✏️ tests/test_startup_bootstrap_metrics.py
✏️ tests/test_startup_post_init_autostart.py
✏️ tests/test_telegram_proxy_worker_architecture.py
🆕 tests/test_winws_runtime_ui_thread_contract.py

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Довести полный набор тестов до зелёного состояния

👤 Автор: loop-uh
🔗 SHA: 03afe9a

📊 Статистика: 11 files changed, 79 insertions(+), 53 deletions(-)

📁 Изменённые файлы:
✏️ src/profile/identity.py
✏️ src/profile/profile_setup_loader.py
✏️ src/profile/ui/simple_icons_bundle.py
✏️ src/updater/update_page_runtime.py
✏️ src/winws_log_analyzer/ui/build.py
✏️ src/winws_log_analyzer/ui/page.py
✏️ tests/test_build_resource_layout.py
✏️ tests/test_builtin_profile_catalog.py
✏️ tests/test_profile_setup_accessibility.py
✏️ tests/test_pyinstaller_archive_import_lock.py
✏️ tests/test_ui_performance_metrics.py

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Защитить кодировку описания выпуска

👤 Автор: loop-uh
🔗 SHA: 4c591dc

📊 Статистика: 1 file changed, 45 insertions(+)

📁 Изменённые файлы:
✏️ tests/test_build_resource_layout.py

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/todo

📝 Разбор контракта FakeTLS: что релей требует от ClientHello

👤 Автор: loop-uh
🔗 SHA: 0eb1abf

📊 Статистика: 3 files changed, 394 insertions(+)

📁 Изменённые файлы:
🆕 mtproxy/faketls-relay-diagnosis.md\n✏️ mtproxy/ja4-sni-client-side.md\n✏️ mtproxy/tdlib-obf-client-side-stealth.md\n
🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/todo

📝 Пробу запускать с той машины, где симптом

👤 Автор: loop-uh
🔗 SHA: 13d1d2c

📊 Статистика: 1 file changed, 26 insertions(+), 1 deletion(-)

📁 Изменённые файлы:
✏️ mtproxy/faketls-relay-diagnosis.md\n
🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Добавить Flowseal EXP 1.10.0 для Zapret 1

👤 Автор: loop-uh
🔗 SHA: 173a9bd

📊 Статистика: 4 files changed, 829 insertions(+), 1 deletion(-)

📁 Изменённые файлы:
✏️ src/folders/defaults.py
🆕 src/presets/builtin/winws1/general EXP 1.10.0 (game filter).txt
✏️ tests/test_builtin_profile_catalog.py
✏️ tests/test_folders_library.py

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Разделить общий hosts-ресурс по сервисам

👤 Автор: loop-uh
🔗 SHA: 23ca6e3

📊 Статистика: 2 files changed, 19 insertions(+), 4 deletions(-)

📁 Изменённые файлы:
✏️ src/hosts/proxy_domains.py
✏️ tests/test_hosts_catalog_json.py

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Добавить Flowseal EXP 1.10.0 для Zapret 2

👤 Автор: loop-uh
🔗 SHA: dad3c8c

📊 Статистика: 10 files changed, 1317 insertions(+), 6 deletions(-)

📁 Изменённые файлы:
✏️ src/folders/defaults.py
🆕 src/presets/builtin/winws2/general EXP 1.10.0 (game filter).txt
✏️ src/profile/strategy_catalogs/winws2/tcp.txt
✏️ src/profile/strategy_catalogs/winws2/udp.txt
✏️ src/profile/strategy_catalogs/winws2/voice.txt
✏️ src/winws_runtime/runners/zapret2_runner.py
✏️ tests/test_builtin_profile_catalog.py
✏️ tests/test_folders_library.py
✏️ tests/test_profile_strategy_resolution.py
✏️ tests/test_winws2_launch_preset_validation.py

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Исправить перенос описаний страниц

👤 Автор: loop-uh
🔗 SHA: a4a1b69

📊 Статистика: 2 files changed, 54 insertions(+)

📁 Изменённые файлы:
✏️ src/ui/pages/base_page.py
🆕 tests/test_base_page_layout.py

🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит в youtubediscord/zapret

📝 Ограничить по времени разрешение имён во всех сетевых проверках

👤 Автор: loop-uh
🔗 SHA: 273c281

📊 Статистика: 19 files changed, 1125 insertions(+), 181 deletions(-)

📁 Изменённые файлы:
✏️ src/blockcheck/blockcheck2.py
✏️ src/blockcheck/dns_integrity.py
✏️ src/blockcheck/isp_page_detector.py
✏️ src/blockcheck/ping_tester.py
✏️ src/blockcheck/preflight.py
✏️ src/blockcheck/runner.py
✏️ src/blockcheck/strategy_scanner.py
✏️ src/blockcheck/stun_tester.py
✏️ src/blockcheck/tls_tester.py
✏️ src/diagnostics/worker.py
✏️ src/dns/commands.py
✏️ src/dns_checker.py
✏️ src/telegram_proxy/diagnostics/runner.py
🆕 src/utils/concurrency.py
🆕 src/utils/net_resolve.py
✏️ src/utils/windows_icmp.py
🆕 tests/test_net_resolve_deadline.py
✏️ tests/test_preset_profile_async_architecture.py
🆕 tests/test_type_checking_runtime_names.py

🔗 Открыть на GitHub