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

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

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

🔔 Новый коммит

📝 vault backup: 2026-04-07 13:47:31

👤 Автор: fuckyou
📅 Дата: 07.04.2026 10:47:31
🔗 SHA: 2a925b5

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

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

✏️ VLESS-localhost-protection-guide.md
+222 -13

Удалилось:
| **ClashMeta Android** 2.11.25 | mihomo | 7891 | ✅ Да (YAML). ⚠️ НО `skip-auth-prefixes` по дефо...

| **FlClash** | mihomo | 7891 | ✅ Да (YAML). ⚠️ Тот же дефолт `skip-auth-prefixes` | 🟡 Уязвим по ...

| **v2rayN** 7.19.5 | xray/sing-box | 10808 | ✅ Да (JSON + UI) | 🟢 Можно настроить | Включить aut...

| **Nekoray** | sing-box/xray | ? | ❌ Нет в UI | 🔴 **Заброшен (2026)** | Перейти на v2rayN / Clas...

| **Clash Verge Rev** | mihomo | 7890/7891 | ✅ Да (YAML). ⚠️ `skip-auth-prefixes` | 🟡 Уязвим по д...

| **ClashX Meta** (macOS) | mihomo | 7890/7891 | ✅ Да (YAML). ⚠️ `skip-auth-prefixes` | 🟡 Уязвим ...

| **Happ** | xray | ❌ + API без auth | 🔴 **УДАЛИТЬ** | Удалено из App Store, фикса не будет |

| **Shadowrocket** | — | ✅ **Не применимо** | 🟢 **Не уязвим** | Не создаёт SOCKS5-сервер на local...

"domain": ["geosite:category-gov-ru", "regexp:\\.ru$"],

## 16. Фаерволы на Android: что реально работает

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

Добавилось:
| **v2RayTun** 5.20.67 | xray | ? | ❌ Нет в UI. Разработчик обещал фикс (март 2026), пока нет | 🟡...

| **ClashMeta Android** 2.11.25 | mihomo | — | ✅ Да (YAML). По дефолту `socks-port` **выключен** ...

| **FlClash** | mihomo | — | ✅ Да (YAML). Аналогично — дефолт TUN-only | 🟢 **Безопасен по дефолту...

| **Incy** 2.0.8 | xray 26.3.27 | ? | ⚠️ Ядро поддерживает, UI-настройка auth не документирована ...

| **anet** 0.4.2 | Собственный (Rust/ASTP) | — | ✅ **Не применимо** | 🟢 **Не уязвим** | Нет SOCKS...

| **v2rayN** 7.20.2 | xray/sing-box | 10808 | ✅ Да (JSON + UI) | 🟢 Можно настроить | Включить aut...

| **Nekoray** | sing-box/xray | ? | ❌ Нет в UI | 🔴 **Заброшен (2026)** | Перейти на Throne / v2ra...

| **Throne** 1.1.1 (март 2026) | sing-box (основной) + xray (для VLESS) | 2080 | ⚠️ Дефолтный mix...

| **Karing** (Windows) | sing-box | 3067/3066 | ⚠️ Ядро поддерживает, UI-настройка не подтвержден...

| **Clash Verge Rev** | mihomo | — | ✅ Да (YAML). По дефолту TUN-only, `socks-port` выключен | 🟢 ...

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

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

🔔 Новый коммит

📝 vault backup: 2026-04-07 20:00:34

👤 Автор: fuckyou
📅 Дата: 07.04.2026 17:00:34
🔗 SHA: bd82042

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

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

✏️ VLESS-localhost-protection-guide.md
+48 -14

Удалилось:
| Клиент | Ядро | SOCKS5 auth | Статус | Что делать |

|--------|------|-------------|--------|------------|

| **Happ** | xray | ❌ + API без auth | 🔴 **УДАЛИТЬ** | Удалено из **российского** App Store; в др...

| **V2BOX** 5.3.4 | xray | ❌ Нет подтверждения | 🟡 Скорее уязвим | Нет решения |

| **RabbitHole** 1.3.0 | ? (closed-source) | ⚠️ Неизвестно | ❓ Нужна проверка | Closed-source, по...

| **Shadowrocket** | iOS VPN framework | ⚠️ Вероятно не применимо (iOS sandbox) | 🟢/❓ **Скорее не...

> **Shadowrocket** — это VPN-клиент, который **подключается К** прокси-серверам. Он **не создаёт*...

> **Shadowrocket** — использует iOS Network Extension (VPN framework). Основной режим — TUN через...

> **Throne** ([github.com/throneproj/Throne](https://github.com/throneproj/Throne)) — **преемник ...

> ⚠️ **Критично:** убедитесь что Husi использует sing-box версии **1.4.5 или выше** — в более ран...

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

Добавилось:
| Клиент | Ядро | Порт | SOCKS5 auth | Статус | Что делать |

|--------|------|------|-------------|--------|------------|

| **Happ** | xray | ? | ❌ + API без auth | 🔴 **УДАЛИТЬ** | Удалено из **российского** App Store; ...

| **V2BOX** 5.3.4 | xray | ? | ❌ Нет подтверждения | 🟡 Скорее уязвим | Нет решения |

| **RabbitHole** 1.3.0 | ? (closed-source) | ? | ⚠️ Неизвестно | ❓ Нужна проверка | Closed-source...

| **Shadowrocket** | iOS VPN framework | — | ⚠️ Вероятно не применимо (iOS sandbox) | 🟢/❓ **Скоре...

> **Shadowrocket** — использует iOS Network Extension (VPN framework). Основной режим — TUN через...

> **Throne** ([github.com/throneproj/Throne](https://github.com/throneproj/Throne)) — **преемник ...

> ⚠️ **Критично:** убедитесь что Husi использует sing-box версии **1.4.5 или выше** — в более ран...

### «Но ведь пароль передаётся открытым текстом — шпион его перехватит?»

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

🆕 tunnel-detection-fix-split-ip.md
+484 -0

Добавилось:
# Фикс обнаружения и блокировки туннелей: разделение IP + маршрутизация sing-box

**Дата:** 7 апреля 2026

**Источник:** [Dreaght — ntc.party](https://ntc.party/t/фикс-обнаружения-и-блокировки-туннелей-si...

**Контекст:** Шпионские модули в РФ-приложениях сливают входной IP VPN-сервера → РКН блокирует се...

**Связанные заметки:**

- [Уязвимость VLESS-клиентов — SOCKS5 на localhost](VLESS-SOCKS5-vulnerability.md)

- [Защита VPN от localhost-атаки](VLESS-localhost-protection-guide.md)

- [Localhost-трекинг Meta/Яндекс](Localhost-tracking-Meta-Yandex-SOCKS5.md)

---

## Оглавление

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

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

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

📝 vault backup: 2026-04-07 20:00:34

👤 Автор: fuckyou
🔗 SHA: bd82042

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

📁 Изменённые файлы:
✏️ VLESS-localhost-protection-guide.md\n🆕 tunnel-detection-fix-split-ip.md\n
🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит

📝 vault backup: 2026-04-07 20:03:12

👤 Автор: fuckyou
📅 Дата: 07.04.2026 17:03:12
🔗 SHA: 54a656e

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

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

✏️ VLESS-localhost-protection-guide.md
+57 -5

Удалилось:
### О Karing

Поддержка аутентификации наследуется от sing-box, но **в UI Karing нет настройки SOCKS5 auth**. Т...

> ⚠️ **Важно:** Karing использует нестандартные порты (3066/3067), которых нет в методичке Минциф...

**A:** Скорее всего **да**. Karing использует ядро sing-box и создаёт mixed inbound на `127.0.0.1...

Порты 3066/3067 нестандартные (не в методичке Минцифры), но скан всех портов — секунды.


Добавилось:
### О Karing (sing-box)

Karing использует sing-box core с тремя mixed-inbound портами: 3065, 3066, 3067. По умолчанию — *...

**Защита**: в настройках каждого профиля необходимо отредактировать блок `inbounds` и добавить `u...

```json

"inbounds": [

{

"type": "mixed",

"tag": "mixed_in_direct",

"set_system_proxy": false,

"users": [

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

✏️ tunnel-detection-fix-split-ip.md
+91 -16

Удалилось:
9. [Шаг 6: SSH через туннель](#9-шаг-6-ssh-через-туннель)

10. [Шаг 7: DNS-разделение RU/Default](#10-шаг-7-dns-разделение-rudefault)

11. [Итоговая архитектура](#11-итоговая-архитектура)

12. [Рекомендация по транспорту](#12-рекомендация-по-транспорту)

13. [Чеклист](#13-чеклист)

## 9. Шаг 6: SSH через туннель

## 10. Шаг 7: DNS-разделение RU/Default

## 11. Итоговая архитектура

└─► SSH

→ к выходному IP Y.Y.Y.Y (через VLESS автоматически)

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

Добавилось:
9. [Шаг 6: I2P через VPS](#9-шаг-6-i2p-через-vps)

10. [Шаг 7: SSH через туннель](#10-шаг-7-ssh-через-туннель)

11. [Шаг 8: DNS-разделение RU/Default](#11-шаг-8-dns-разделение-rudefault)

12. [Итоговая архитектура](#12-итоговая-архитектура)

13. [Рекомендация по транспорту](#13-рекомендация-по-транспорту)

14. [Чеклист](#14-чеклист)

## 9. Шаг 6: I2P через VPS

Цепочка: `Me → VLESS → I2P`

I2P-роутер работает на самом VPS. Клиент не знает про I2P — просто гонит трафик через VLESS, а VP...

### Установка I2P на VPS

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

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

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

📝 vault backup: 2026-04-07 20:03:12

👤 Автор: fuckyou
🔗 SHA: 54a656e

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

📁 Изменённые файлы:
✏️ VLESS-localhost-protection-guide.md\n✏️ tunnel-detection-fix-split-ip.md\n
🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

🔔 Новый коммит

📝 vault backup: 2026-04-07 20:10:12

👤 Автор: fuckyou
📅 Дата: 07.04.2026 17:10:12
🔗 SHA: adaa125

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

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

✏️ VLESS-SOCKS5-vulnerability.md
+49 -0

Добавилось:
**Обновление (апрель 2026):** Зафиксированы случаи активного подавления VPN-соединений сервисами ...

### Метод /proc/net/route: IP VPN-сервера раскрыт через таблицу маршрутизации

Помимо сканирования портов, существует ещё более простой метод обнаружения IP VPN-сервера:

Когда VPN активен, Android создаёт **host route** (маска /32 = `255.255.255.255`) для IP VPN-серв...

```

$ cat /proc/net/route

Iface   Destination  Gateway     Flags  Mask

tun0    00000000     00000000    ...    00000000    ← default через VPN

wlan0   B9A5C041     0201A8C0    ...    FFFFFFFF   ← host route к 65.197.165.185 через WiFi

```

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

✏️ tunnel-detection-fix-split-ip.md
+82 -23

Удалилось:
4. [Шаг 1: Купить второй IPv4 на VPS](#4-шаг-1-купить-второй-ipv4-на-vps)

5. [Шаг 2: Разделить входной/выходной IP в sing-box](#5-шаг-2-разделить-входнойвыходной-ip-в-sing...

6. [Шаг 3: WARP для неизвестного трафика](#6-шаг-3-warp-для-неизвестного-трафика)

7. [Шаг 4: Direct для доверенных CIDR](#7-шаг-4-direct-для-доверенных-cidr)

8. [Шаг 5: Tor для геоблокированных сервисов](#8-шаг-5-tor-для-геоблокированных-сервисов)

9. [Шаг 6: I2P через VPS](#9-шаг-6-i2p-через-vps)

10. [Шаг 7: SSH через туннель](#10-шаг-7-ssh-через-туннель)

11. [Шаг 8: DNS-разделение RU/Default](#11-шаг-8-dns-разделение-rudefault)

12. [Итоговая архитектура](#12-итоговая-архитектура)

13. [Рекомендация по транспорту](#13-рекомендация-по-транспорту)

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

Добавилось:
4. [Установка sing-box на сервере](#4-установка-sing-box-на-сервере)

5. [Шаг 1: Купить второй IPv4 на VPS](#5-шаг-1-купить-второй-ipv4-на-vps)

6. [Шаг 2: Разделить входной/выходной IP в sing-box](#6-шаг-2-разделить-входнойвыходной-ip-в-sing...

7. [Шаг 3: WARP для неизвестного трафика](#7-шаг-3-warp-для-неизвестного-трафика)

8. [Шаг 4: Direct для доверенных CIDR](#8-шаг-4-direct-для-доверенных-cidr)

9. [Шаг 5: Tor для геоблокированных сервисов](#9-шаг-5-tor-для-геоблокированных-сервисов)

10. [Шаг 6: I2P через VPS](#10-шаг-6-i2p-через-vps)

11. [Шаг 7: SSH через туннель](#11-шаг-7-ssh-через-туннель)

12. [Шаг 8: DNS-разделение RU/Default](#12-шаг-8-dns-разделение-rudefault)

13. [Итоговая архитектура](#13-итоговая-архитектура)

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

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

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

📝 vault backup: 2026-04-07 20:10:12

👤 Автор: fuckyou
🔗 SHA: adaa125

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

📁 Изменённые файлы:
✏️ VLESS-SOCKS5-vulnerability.md\n✏️ tunnel-detection-fix-split-ip.md\n
🔗 Открыть на GitHub
💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord

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

📝 Исправил корневую причину в логике перезапуска Discord. Проблема была не в самом переключении пресета: по логу видно, что direct-switch проходил успешно, а ломался уже следующий шаг, когда dpi_controller после применения пресета вызывал DiscordManager. Дальше менеджер слишком грубо определял состояние Discord: он смотрел почти только на имя процесса и потом пытался заново найти Discord.exe по нескольким заранее известным путям. Из-за этого нестандартная установка, вроде вашей W:\Users\Privacy\AppData\Local\Discord\app- 1.0.9230\Discord.exe, могла не считаться “живым Discord”, и приложение делало ложный вывод: Discord не запущен, перезапуск не требуется.

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

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

📁 Изменённые файлы:
✏️ src/discord/discord.py
✏️ src/ui/main_window_pages.py
✏️ src/ui/pages/base_page.py
✏️ src/ui/pages/connection_page.py
✏️ src/ui/pages/dpi_settings_page.py
✏️ src/ui/pages/logs_page.py
✏️ src/ui/pages/orchestra/blocked_page.py
✏️ src/ui/pages/orchestra/locked_page.py
✏️ src/ui/pages/orchestra/ratings_page.py
✏️ src/ui/pages/orchestra/whitelist_page.py
✏️ src/ui/pages/telegram_proxy_page.py
✏️ src/ui/pages/zapret1/direct_zapret1_page.py
✏️ src/ui/pages/zapret2/direct_zapret2_page.py
✏️ src/ui/pages/zapret2/strategy_detail_page.py
✏️ src/ui/pages/zapret2_orchestra_strategies_page.py

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

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

📝 Продолжил cutover StrategyScanPage ещё глубже, уже не только по файлам и support-логике, но и по orchestration-слою старта/завершения сканирования. Теперь в контроллере strategy_scan_page_controller.py (line 17) живут уже три больших пласта: target/data-логика: нормализация цели, STUN/UDP-разбор, quick targets, поиск ipset, применение стратегии в пресет; persistence/log/support: resume-state, run log, support bundle; orchestration decisions: план старта plan_scan_start(...) и план завершения finalize_scan_report(...). А страница strategy_scan_page.py (line 139) теперь использует эти планы как экран: _on_start() больше не вычисляет вручную, сохранять ли старые результаты, с какого индекса возобновляться и какой стартовый статус показывать; _on_finished() больше не решает сама, когда очищать или сохранять resume-state, какой итоговый статус формировать и какой тип завершения считать результатом; эти решения теперь приходят из контроллера, а страница только применяет их к UI.

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

📊 Статистика: 25 files changed, 3590 insertions(+), 2719 deletions(-)

📁 Изменённые файлы:
🆕 src/blockcheck/page_controller.py
🆕 src/blockcheck/strategy_scan_page_controller.py
🆕 src/core/hostlist_page_controller.py
🆕 src/dns/network_page_controller.py
🆕 src/dpi/dpi_settings_page_controller.py
🆕 src/log/logs_page_controller.py
🆕 src/telegram_proxy/diagnostics_controller.py
🆕 src/telegram_proxy/page_settings_controller.py
✏️ src/ui/pages/base_page.py
✏️ src/ui/pages/blockcheck_page.py
✏️ src/ui/pages/connection_page.py
✏️ src/ui/pages/dpi_settings_page.py
✏️ src/ui/pages/hostlist_page.py
✏️ src/ui/pages/logs_page.py
✏️ src/ui/pages/network_page.py
✏️ src/ui/pages/orchestra/blocked_page.py
✏️ src/ui/pages/orchestra/locked_page.py
✏️ src/ui/pages/orchestra/ratings_page.py
✏️ src/ui/pages/orchestra/whitelist_page.py
✏️ src/ui/pages/strategy_scan_page.py
✏️ src/ui/pages/telegram_proxy_page.py
✏️ src/ui/pages/zapret1/direct_zapret1_page.py
✏️ src/ui/pages/zapret2/direct_zapret2_page.py
✏️ src/ui/pages/zapret2/strategy_detail_page.py
✏️ src/ui/pages/zapret2_orchestra_strategies_page.py

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

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

📝 Сделал ещё одну уже совсем тонкую добивку StrategyScanPage: вынес из страницы оставшийся слой локальных UI-сообщений и текста кнопки разворота лога в controller-планы. Что именно теперь ушло в strategy_scan_page_controller.py (line 1): build_log_expand_plan(...) теперь возвращает не только видимость карточек и размеры лога, но и текст кнопки Свернуть / Развернуть с учётом языка; build_apply_success_plan(...) и build_apply_error_plan(...) собирают текст для сообщений после применения стратегии; build_support_success_plan(...) и build_support_error_plan(...) собирают текст и status-label для подготовки обращения; появился StrategyScanUiMessagePlan, чтобы все такие сообщения были оформлены как отдельный план, а не как разрозненные строки в странице.

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

📊 Статистика: 3 files changed, 668 insertions(+), 355 deletions(-)

📁 Изменённые файлы:
✏️ src/blockcheck/strategy_scan_page_controller.py
🆕 src/blockcheck/strategy_scan_worker.py
✏️ src/ui/pages/strategy_scan_page.py

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

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

📝 HostsRuntimeState — нормализованное текущее состояние hosts: активные домены, доступность файла, активность Adobe, текст ошибки чтения; HostsOperationCompletionPlan — решение о том, что делать после завершения операции: нужно ли сбрасывать профили, нужно ли очищать ошибку, какой итоговый текст ошибки показать; read_runtime_state(...) — чтение состояния из hosts_manager; build_operation_completion_plan(...) — единое решение по завершению apply/clear/adobe операций.

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

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

📁 Изменённые файлы:
✏️ src/blockcheck/strategy_scan_page_controller.py
🆕 src/hosts/page_controller.py
✏️ src/ui/pages/hosts_page.py
✏️ src/ui/pages/strategy_scan_page.py

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

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

📝 PremiumPage теперь: больше не должна сама напрямую собирать checker/storage bundle; больше не должна сама напрямую создавать worker-thread для: pair_start check_device_activation test_connection

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

📊 Статистика: 5 files changed, 1099 insertions(+), 627 deletions(-)

📁 Изменённые файлы:
🆕 src/donater/premium_page_controller.py
🆕 src/donater/premium_worker.py
✏️ src/hosts/page_controller.py
✏️ src/ui/pages/hosts_page.py
✏️ src/ui/pages/premium_page.py

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

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

📝 добавлено в premium_page_controller.py (line 1): PremiumDeviceInfoPlan read_device_storage_snapshot(...) build_device_info_plan(...) Это значит, что controller теперь уже сам отвечает за то, как интерпретировать локальное Premium-storage состояние: есть ли device_token; есть ли ещё живой pair_code; не протух ли он; что показывать в строке device token / pair; как показывать last_check.

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

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

📁 Изменённые файлы:
✏️ src/donater/premium_page_controller.py
✏️ src/ui/pages/premium_page.py

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

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

📝 премиум

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

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

📁 Изменённые файлы:
✏️ src/donater/premium_page_controller.py
✏️ src/ui/pages/premium_page.py

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

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

📝 AutostartPage

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

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

📁 Изменённые файлы:
🆕 src/autostart/page_controller.py
✏️ src/ui/pages/autostart_page.py

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

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

📝 Сделан общий контур обновления локальных стилей темы по всему GUI, чтобы оформление больше не жило разными разрозненными путями. Базовый механизм теперь вынесен в theme_refresh.py, а BasePage переведён на один канонический hook: _apply_page_theme(tokens=None, force=False). Это значит, что теперь одна и та же схема покрывает: смену темы и акцентного цвета через qfluentwidgets StyleChange и PaletteChange от Qt позднюю сборку страницы через deferred-build повторный показ скрытого виджета или страницы Заодно я специально перевёл проблемный экран direct_control_page.py, где у вас затирался блок “Дополнительные настройки”, и старую страницу dpi_settings_page.py, чтобы у них больше не было разных локальных схем восстановления стилей.

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

📊 Статистика: 41 files changed, 1485 insertions(+), 1204 deletions(-)

📁 Изменённые файлы:
✏️ src/autostart/page_controller.py
🆕 src/orchestra/page_controller.py
✏️ src/strategy_menu/args_preview_dialog.py
✏️ src/strategy_menu/hover_tooltip.py
✏️ src/strategy_menu/widgets.py
✏️ src/strategy_menu/widgets_favorites.py
🆕 src/ui/appearance_page_controller.py
✏️ src/ui/main_window_pages.py
✏️ src/ui/pages/about_page.py
✏️ src/ui/pages/appearance_page.py
✏️ src/ui/pages/autostart_page.py
✏️ src/ui/pages/base_page.py
✏️ src/ui/pages/blobs_page.py
✏️ src/ui/pages/blockcheck_page.py
✏️ src/ui/pages/custom_domains_page.py
✏️ src/ui/pages/dns_check_page.py
✏️ src/ui/pages/dpi_settings_page.py
✏️ src/ui/pages/hostlist_page.py
✏️ src/ui/pages/hosts_page.py
✏️ src/ui/pages/ipset_page.py
✏️ src/ui/pages/logs_page.py
✏️ src/ui/pages/network_page.py
✏️ src/ui/pages/orchestra/blocked_page.py
✏️ src/ui/pages/orchestra/locked_page.py
✏️ src/ui/pages/orchestra/ratings_page.py
✏️ src/ui/pages/orchestra/whitelist_page.py
✏️ src/ui/pages/orchestra_page.py
✏️ src/ui/pages/servers_page.py
✏️ src/ui/pages/strategy_scan_page.py
✏️ src/ui/pages/support_page.py
✏️ src/ui/pages/zapret1/user_presets_page.py
✏️ src/ui/pages/zapret2/direct_control_page.py
✏️ src/ui/pages/zapret2/strategy_detail_page.py
✏️ src/ui/pages/zapret2/user_presets_page.py
🆕 src/ui/theme_refresh.py
✏️ src/ui/widgets/collapsible_group.py
✏️ src/ui/widgets/direct_zapret2_strategies_tree.py
✏️ src/ui/widgets/notification_banner.py
✏️ src/ui/widgets/strategy_radio_item.py
✏️ src/ui/widgets/win11_controls.py
✏️ src/widgets/progress_bar.py

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

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

📝 ереписал базовый виджет win11_controls.py так, чтобы Win11ToggleRow больше не был самодельной строкой на QHBoxLayout + QLabel + Win11ToggleSwitch, а стал совместимой обёрткой над stock fluent-компонентом SwitchSettingCard.

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

📊 Статистика: 40 files changed, 1036 insertions(+), 428 deletions(-)

📁 Изменённые файлы:
✏️ src/orchestra/page_controller.py
🆕 src/ui/about_page_controller.py
✏️ src/ui/main_window_pages.py
🆕 src/ui/page_performance.py
✏️ src/ui/page_registry.py
🆕 src/ui/page_runtime.py
✏️ src/ui/pages/about_page.py
✏️ src/ui/pages/autostart_page.py
✏️ src/ui/pages/base_page.py
✏️ src/ui/pages/blobs_page.py
✏️ src/ui/pages/control_page.py
✏️ src/ui/pages/custom_domains_page.py
✏️ src/ui/pages/custom_ipset_page.py
✏️ src/ui/pages/home_page.py
✏️ src/ui/pages/hostlist_page.py
✏️ src/ui/pages/hosts_page.py
✏️ src/ui/pages/ipset_page.py
✏️ src/ui/pages/logs_page.py
✏️ src/ui/pages/netrogat_page.py
✏️ src/ui/pages/network_page.py
✏️ src/ui/pages/orchestra/blocked_page.py
✏️ src/ui/pages/orchestra/locked_page.py
✏️ src/ui/pages/orchestra/orchestra_settings_page.py
✏️ src/ui/pages/orchestra/ratings_page.py
✏️ src/ui/pages/orchestra/whitelist_page.py
✏️ src/ui/pages/orchestra_page.py
✏️ src/ui/pages/orchestra_zapret2/strategy_detail_page.py
✏️ src/ui/pages/premium_page.py
✏️ src/ui/pages/servers_page.py
✏️ src/ui/pages/telegram_proxy_page.py
✏️ src/ui/pages/zapret1/direct_control_page.py
✏️ src/ui/pages/zapret1/direct_zapret1_page.py
✏️ src/ui/pages/zapret1/strategy_detail_page_v1.py
✏️ src/ui/pages/zapret1/user_presets_page.py
✏️ src/ui/pages/zapret2/direct_control_page.py
✏️ src/ui/pages/zapret2/direct_zapret2_page.py
✏️ src/ui/pages/zapret2/strategy_detail_page.py
✏️ src/ui/pages/zapret2/user_presets_page.py
✏️ src/ui/pages/zapret2_orchestra_strategies_page.py
✏️ src/ui/widgets/win11_controls.py

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

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

📝 оптимизация гуи

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

📊 Статистика: 44 files changed, 4536 insertions(+), 2386 deletions(-)

📁 Изменённые файлы:
✏️ src/config/reg.py
✏️ src/core/hostlist_page_controller.py
🆕 src/dns/dns_check_page_controller.py
🆕 src/dns/dns_check_worker.py
✏️ src/donater/premium_page_controller.py
✏️ src/orchestra/page_controller.py
✏️ src/strategy_menu/args_preview_dialog.py
✏️ src/ui/appearance_page_controller.py
✏️ src/ui/compat_widgets.py
🆕 src/ui/connection_page_controller.py
🆕 src/ui/control_page_controller.py
🆕 src/ui/home_autostart_worker.py
🆕 src/ui/home_page_controller.py
✏️ src/ui/main_window.py
✏️ src/ui/main_window_pages.py
✏️ src/ui/main_window_signals.py
✏️ src/ui/page_registry.py
✏️ src/ui/pages/about_page.py
✏️ src/ui/pages/appearance_page.py
✏️ src/ui/pages/base_page.py
✏️ src/ui/pages/blobs_page.py
✏️ src/ui/pages/connection_page.py
✏️ src/ui/pages/control_page.py
✏️ src/ui/pages/custom_domains_page.py
✏️ src/ui/pages/custom_ipset_page.py
✏️ src/ui/pages/dns_check_page.py
✏️ src/ui/pages/dpi_settings_page.py
✏️ src/ui/pages/home_page.py
✏️ src/ui/pages/netrogat_page.py
✏️ src/ui/pages/network_page.py
✏️ src/ui/pages/orchestra/ratings_page.py
✏️ src/ui/pages/orchestra_page.py
✏️ src/ui/pages/premium_page.py
✏️ src/ui/pages/preset_subpage_base.py
✏️ src/ui/pages/support_page.py
✏️ src/ui/pages/telegram_proxy_page.py
✏️ src/ui/pages/zapret1/direct_control_page.py
✏️ src/ui/pages/zapret1/strategy_detail_page_v1.py
✏️ src/ui/pages/zapret2/direct_control_page.py
✏️ src/ui/pages/zapret2/strategy_detail_page.py
🆕 src/ui/smooth_scroll.py
🆕 src/ui/support_page_controller.py
✏️ src/ui/text_catalog.py
✏️ src/ui/widgets/win11_controls.py

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

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

📝 перевёл telegram_proxy_page.py на один fluent-путь без старого слоя ActionButton и условных fallback-веток. Что сделал В этой странице раньше одновременно жили: stock fluent-карточки SettingCardGroup, PushSettingCard, PrimaryPushSettingCard старые ActionButton условные ветки _HAS_FLUENT и if SegmentedWidget is not None, из-за которых страница фактически строилась двумя разными способами

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

📊 Статистика: 32 files changed, 5238 insertions(+), 2717 deletions(-)

📁 Изменённые файлы:
✏️ src/autostart/page_controller.py
✏️ src/donater/premium_page_controller.py
✏️ src/log/logs_page_controller.py
🆕 src/log/winws_output_worker.py
🆕 src/telegram_proxy/page_actions_controller.py
🆕 src/telegram_proxy/page_runtime_controller.py
✏️ src/ui/compat_widgets.py
✏️ src/ui/pages/about_page.py
✏️ src/ui/pages/autostart_page.py
✏️ src/ui/pages/blobs_page.py
✏️ src/ui/pages/blockcheck_page.py
✏️ src/ui/pages/connection_page.py
✏️ src/ui/pages/control_page.py
✏️ src/ui/pages/custom_domains_page.py
✏️ src/ui/pages/custom_ipset_page.py
✏️ src/ui/pages/dns_check_page.py
✏️ src/ui/pages/dpi_settings_page.py
✏️ src/ui/pages/home_page.py
✏️ src/ui/pages/hostlist_page.py
✏️ src/ui/pages/ipset_page.py
✏️ src/ui/pages/logs_page.py
✏️ src/ui/pages/netrogat_page.py
✏️ src/ui/pages/network_page.py
✏️ src/ui/pages/premium_page.py
✏️ src/ui/pages/servers_page.py
✏️ src/ui/pages/strategy_scan_page.py
✏️ src/ui/pages/telegram_proxy_page.py
✏️ src/ui/pages/zapret1/direct_control_page.py
✏️ src/ui/pages/zapret1/direct_zapret1_page.py
✏️ src/ui/pages/zapret2/direct_control_page.py
✏️ src/ui/pages/zapret2/direct_zapret2_page.py
🆕 src/updater/update_page_view_controller.py

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

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

📝 home страница полностью удалена

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

📊 Статистика: 21 files changed, 777 insertions(+), 2306 deletions(-)

📁 Изменённые файлы:
✏️ docs/DIAGRAMS.md
✏️ docs/project.md
🗑️ src/ui/home_autostart_worker.py
🗑️ src/ui/home_page_controller.py
✏️ src/ui/main_window.py
✏️ src/ui/main_window_navigation_build.py
✏️ src/ui/main_window_pages.py
✏️ src/ui/mode_page_scope.py
✏️ src/ui/nav_mode_config.py
✏️ src/ui/page_names.py
✏️ src/ui/page_registry.py
✏️ src/ui/pages/__init__.py
🗑️ src/ui/pages/home_page.py
✏️ src/ui/pages/hostlist_page.py
✏️ src/ui/pages/orchestra/__init__.py
📝 src/ui/pages/orchestra_page.py src/ui/pages/orchestra/orchestra_page.py
✏️ src/ui/pages/zapret1/direct_zapret1_page.py
✏️ src/ui/pages/zapret2/direct_control_page.py
🆕 src/ui/pages/zapret2/direct_control_page_controller.py
✏️ src/ui/pages/zapret2/direct_zapret2_page.py
✏️ src/ui/text_catalog.py

🔗 Открыть на GitHub