Skip to content

Releases: suzcuaru/ZPUI

ZPUI v1.8.1

Choose a tag to compare

@github-actions github-actions released this 31 Aug 13:01

Добавлено

  • «Что нового» по конкретной версии. Клик по номеру версии в карточках
    обновлений открывает release notes именно этой версии (а не последней,
    как раньше): клик по 1.7 показывает изменения 1.7. Для Запрета текст
    адаптируется под приложение: заголовки, списки с вложенностью, жирный
    текст, код и ссылки («Full Changelog» становится кликабельным).
    По-версионные запросы кэшируются на 5 минут.

Исправлено

  • Подсказка игрового фильтра обрезалась слева — тултип теперь раскрывается
    вправо от подписи.
  • Вкладка «Монитор»: панель устройств снова тянется до самого низа вкладки,
    а карточка «отключена» (экономный режим) центрируется по видимой области,
    а не по высоте контента.
  • Запрос release notes версии Zapret с GitHub: теги Flowseal хранятся без
    префикса «v» — из-за принудительного «v» запрос мог отдавать 404
    (затрагивало и откат версий с GitHub-источника).
  • Выключение прокси из боковой панели могло «зависать» анимацией: остановка
    Telegram-моста ждала активные клиентские соединения, которые не закрывались.
    Теперь Stop закрывает их принудительно — кнопка всегда возвращается из
    состояния загрузки.
  • Отчёт: добавлена секция «Known Operators» — все известные операторы из базы
    (не только текущий), с датами первой/последней активности и отметкой
    активного.

ZPUI v1.8.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 07:32

Добавлено

  • Выбор версии Запрета (откат). В карточке Zapret в разделе «Обновления»
    появилась кнопка «Версии»: список доступных версий с Яндекс.Диска и GitHub
    (версия, источник, дата, отметка текущей). Любую версию можно скачать и
    установить вручную — инструмент отката на нужную версию. Установка идёт
    через стандартный механизм (бэкап списков и стратегии, восстановление при
    сбое).
  • Экономный режим. Новый блок в «Настройках»: главный тумблер «Экономный
    режим» — пока он выключен, экономия не активируется ни при каких условиях.
    Внутри — два ползунка:
    — Степень экономии: Низкая (фоновые интервалы ×5: трафик 2с→10с,
    ISP 60с→300с, устройства 60с→300с, sync-маяк 15с→75с, снапшоты БД
    5с→25с; проверка доступности раз в 30 минут; опрос интерфейса 2с→5с;
    отключение декоративных анимаций) → Средняя (+ пауза мониторинга трафика
    и записи статистики) → Максимальная (+ пауза списка устройств,
    определения оператора и синхронизации);
    — Срабатывать при заряде (только на ноутбуках, по умолчанию «От АКБ»):
    режим активен всё время работы от батареи и выключается на зарядке;
    «Всегда» — активен постоянно; либо порог 10–50% с шагом 5% — включается
    при падении заряда до порога. На ПК без батареи ползунка нет, а включение
    режима активирует его сразу. Степень экономии по умолчанию — «Низкая».
    Автозапуск Xbox DNS теперь включён по умолчанию у новых установок и одноразово включается после обновления со старых версий (дальше тумблер полностью в распоряжении пользователя).
  • Автоподбор чинит DNS-подмену YouTube. После применения лучшей
    стратегии (кроме проверки одной стратегии по ПКМ) приложение проверяет
    YouTube на уровне DNS: при обнаружении подмены адресов автоматически
    включается Xbox DNS, сбрасывается DNS-кеш и проверка повторяется —
    в ходе подбора видна разница «без DNS» / «с Xbox DNS».
    Замер на ноутбуке: фоновая нагрузка CPU приложения снижается в ~3,5 раза
    (2,5% → 0,7% ядра). Работа Запрета, прокси и DNS не затрагивается; всё
    восстанавливается автоматически при выходе из режима.
  • Индикатор экономного режима в боковой панели (значок батареи): виден
    всегда, пока режим активен — в том числе после закрытия и повторного
    открытия окна; состояние вычисляет бэкенд (/api/status), подсказка
    показывает, приостановлены ли фоновые сервисы. Клик открывает настройки.
  • Индикация YouTube и подсказка Xbox DNS. Отдельная проверка
    YouTube-доменов на уровне DNS: системный резолвер сравнивается с DoH, а
    полученные адреса проверяются TLS-рукопожатием. При обнаружении подмены
    (системный DNS отдаёт нерабочие адреса youtube/googlevideo — типично для
    новых версий Запрета) на дашборде появляется баннер с кнопкой «Включить
    Xbox DNS» и приходит уведомление. В общий % доступности и автоподбор
    проверка не вмешивается.
  • Потребление ресурсов приложения в отчёте. При каждом запуске
    приложение самоизмеряется в течение 30 секунд (CPU, рабочая память,
    потоки, дескрипторы, число процессов-помощников) и пишет результат в БД.
    В диагностическом отчёте — секция «Application Resource Usage» со
    средней загрузкой CPU, пиком памяти и таблицей последних запусков
    (машиночитаемый агрегат — в JSON-снапшоте). Хранение данных — 7 дней.
  • Проверка конкретного сайта — лупа в боковой панели (уже была) и баннер
    YouTube на дашборде
    при обнаружении DNS-подмены: «Включить Xbox DNS».
  • Кнопка «Версии» у карточки запрета и модалка списка версий доступны в обеих
    локализациях (ru/en).

Изменено

  • Новая лицензия и установщик. ZPUI переходит с MIT на проприетарную
    лицензию (EULA)
    : свободное личное использование, строгие правила —
    запрещены распространение, модификация, декомпиляция и перепродажа;
    полный отказ Правообладателя от гарантий и любой ответственности.
    Установщик требует доскроллить текст соглашения до конца (кнопка «Далее»
    листает его постранично, проскочить нельзя) и поставить галочку согласия.
    Автор — SuzucaRU (github.com/suzcuaru).

  • Справка обновлена: новая вкладка «Дашборд», вкладка «О приложении»
    (версия, автор, все ссылки из боковой панели справки, условия лицензии) —
    боковая панель справки стала компактнее.

  • Настройки уведомлений убраны — все уведомления теперь всегда включены.
    Ранее выключенные в конфиге флаги игнорируются. Блок «Уведомления Windows»
    (включая кнопку тест-уведомления) удалён из настроек.

  • Панель настроек скомпонована без прокрутки под фиксированное окно:
    настройки объединены в парные ряды — «Автозапуск с Windows» + «Запуск
    свёрнутым», «Сворачивать в трей» + «Проверка обновлений», «Автозапуск
    прокси» + «Автозапуск Xbox DNS», «Экономный режим» + «Авто при батарее».

  • Оптимизация энергопотребления — нативные API вместо процессов.
    Мониторинг трафика больше не спавнит PowerShell каждые 2 секунды (было
    ~30 процессов/мин в фоне 24/7): счётчики читаются через iphlpapi
    (GetIfEntry2Ex) в процессе. Статус службы Запрета опрашивается напрямую
    через SCM вместо sc query, PID winws находится через Toolhelp32Snapshot
    вместо tasklist, стратегия службы — через registry вместо reg query,
    имя хоста — через os.Hostname вместо процесса hostname. Фоновый расход
    CPU/батареи снижен на порядок.

  • Опрос ISP-оператора растянут с 30 до 60 секунд, HTTP-клиент использует
    keep-alive (раньше каждые 30с выполнялся полный TCP+TLS-handshake к
    внешнему серверу).

  • Диагностический отчёт: таблица ресурсов по умолчанию показывает только
    10 худших ресурсов (полный список — report.exe -full); добавлены секции
    «Findings (auto)» (автоматически найденные аномалии), «Application
    Resource Usage» (потребление ресурсов приложением) и машиночитаемый
    JSON-снапшот — отчёт одинаково удобен людям и ИИ.

  • Карточка Запрета на дашборде подписана латиницей — «Zapret»; справка
    в разделе «Решение проблем» дополнена сценарием «Сайты открываются, а
    видео YouTube — нет» (включение Xbox DNS).

Исправлено

  • Модуль мониторинга трафика показывал терабайты и «скорость в гигабайтах».
    Причина: суммировались накопленные с момента загрузки Windows счётчики всех
    подряд интерфейсов (включая WAN-miniports и vSwitch-ы WSL/Hyper-V), а при
    сбросе счётчиков интерфейса (сон, VPN, перезапуск WSL) разность уходила в
    астрономию. Теперь трафик считается по per-interface дельтам за сессию
    приложения, считаются только активные адаптеры с физическим адресом, сброс
    счётчиков не даёт ложных скачков.
  • Автоподбор теперь не теряет результаты. Результат каждой стратегии
    пишется в БД сразу после её проверки, включая неуспешные попытки
    (таймаут применения, служба не запустилась, «стратегия не применилась»,
    таймаут проверки ресурсов) — раньше такие стратегии вообще не попадали
    в базу. Если оператор связи ещё не определён (нет сети), результаты
    сохраняются под fallback-оператором и автоматически мигрируют реальному
    оператору, когда тот определится.
  • «Пропустить» в первом запуске теперь отменяет автоподбор и на бэкенде.
    Раньше кнопка лишь скрывала прогресс в UI, а приложение продолжало
    перебирать все стратегии до 15 минут и в конце применяло лучшую.
    Устранена также гонка отмены, из-за которой два подбора могли идти
    одновременно, а второй нельзя было отменить.
  • Кнопка «Скачать» в обновлениях сбрасывается после установки. После
    успешной установки Запрета закэшированное состояние «доступно обновление»
    сбрасывается и инициируется свежая проверка — кнопка больше не висит при
    уже новой версии.
  • Диагностический отчёт: версии из правильных источников. Версия ZPUI в
    шапке берётся из config.json (versions.json протухал и показывал старую
    версию); версия Запрета читается из service.bat (LOCAL_VERSION) — раньше
    шапка всегда писала «not found».
  • Таблица версий компонентов больше не «замораживается»: при неудачной
    проверке обновляется установленная версия и сбрасывается удалённая
    (раньше строка zpui навсегда оставалась со старыми значениями). Удалённые
    из продукта модули (например, security) вычищаются из таблицы при старте.
  • GitHub-проверка обновлений Запрета кэшируется: повторные проверки не
    тратят лимит API, при 403 (rate limit) используется последний успешный
    результат — в логах больше нет шквала «github вернул статус 403».
  • VACUUM логов выполняется только если при чистке реально удалялись записи —
    ежечасное переписывание файла БД впустую прекращено.

Техническое

  • Новые пакеты: internal/power (состояние экономного режима,
    GetSystemPowerStatus), internal/ytcheck (детект DNS-подмены YouTube).
  • blockcheck.BulkCheckCtx — проверка ресурсов учитывает отмену контекста.
  • Примитивы updater для списка/отката версий: YandexListZapretVersions,
    YandexZapretZipForVersion, ListZapretGitHubReleases,
    FetchZapretGitHubReleaseByTag; в БД — UpsertComponentInstalled,
    InvalidateComponentRemote, DeleteComponentVersion,
    MigrateUnknownOperatorStrategies.
  • API: GET /api/updates/zapret-available-versions,
    POST /api/updates/download-zapret-version, GET /api/youtube/status,
    POST /api/xbox-dns/toggle.

ZPUI v1.7.0

Choose a tag to compare

@github-actions github-actions released this 28 Aug 17:49

Добавлено

  • Новая система обновлений — без «Центра обновлений». Отдельный модуль
    selfupdate.exe (Центр обновлений) удалён: проверка, скачивание и
    установка обновлений теперь целиком внутри основного приложения.
  • Обновление ZPUI через установщик. Приложение скачивает только
    NSIS-установщик ZPUI-Setup-<версия>-win32.exe (исключительно с
    Яндекс.Диска, с проверкой SHA-256): после нажатия «Установить» приложение
    закрывается и запускается установщик — самый простой и надёжный способ,
    без подмен файлов «на живую».
  • Zapret обновляется с двух источников. Версия проверяется и на
    Яндекс.Диске, и на GitHub (Flowseal/zapret-discord-youtube); скачивание
    идёт оттуда, где версия новее (при равенстве — Яндекс.Диск). Если скачать
    с основного источника не удалось — автоматический фолбэк на Яндекс.Диск.
    Источник отображается в модалке скачивания.
  • Пункты обновлений в трее. При наличии новой версии в меню трея
    появляются «Обновление ZPUI — скачать» и «Обновление запрета — скачать»;
    клик открывает окно приложения с модалкой обновления и сразу начинает
    скачивание.
  • Модалка обновления с прогрессом. Скачивание и установка идут в
    модальном окне, которое нельзя закрыть до завершения операции (без
    крестика, Escape и клика по фону): прогресс-бар, объём, этапы установки.
    После скачивания появляется кнопка «Установить» — модалку можно закрыть и
    вернуться к установке позже из карточек в настройках.
  • Уведомление о новой версии в интерфейсе теперь предлагает кнопку
    «Установить», которая сразу открывает модалку обновления и начинает
    скачивание.
  • Выбор режима при ручном автоподборе. Если запустить автоподбор из
    бокового меню, а по каким-то стратегиям уже есть результаты прошлых
    проверок, приложение спросит: выполнить полный подбор или проверить
    только непроверенные стратегии. Если данных ещё нет — полный подбор
    запускается сразу.

Изменено

  • Окно автоподбора. Индикатор проверки стратегии заменён на кольцо
    (как у тумблеров); после проверки стратегия показывает доступность в
    процентах с цветовой оценкой (зелёный/жёлтый/красный — как на карточках
    стратегий). Спиннер больше не зависает рядом с уже проверенной
    стратегией при применении лучшей.

  • Проверка/подбор стратегий переработан. Проверка одной стратегии (ПКМ)
    — отдельная модалка с этапами (применение → проверка), кнопкой отмены и
    результатом; тест отправляется строго один раз, данные пишутся в БД только
    по проверяемой стратегии, исходная возвращается. Автоподбор — live-список
    стратегий по ходу проверки, отмена возвращает исходную стратегию (не
    применяет лучшую из частично проверенных). Health-монитор и ISP-монитор
    не вмешиваются во время теста. Логи хранятся 7 дней (было 30).

  • Панель обновлений в настройках переделана. Карточки ZPUI и Zapret
    показывают версии с кнопками «Скачать»/«Установить» (открывают ту же
    модалку); кнопки «Открыть Центр обновлений» больше нет. Клик по версии
    по-прежнему открывает «что нового»; Telegram Proxy — «Обновляется с ZPUI».

  • Раскладка Яндекс.Диска упрощена. В корне публичной папки хранятся
    только установщики ZPUI-Setup-*-win32.exe (без папок версий и zip),
    checksums.sha256 (теперь включает и хеш установщика) и
    components/report/. Zapret хранится как раньше — папки
    «Zapret <версия>». Версия ZPUI определяется по именам файлов установщиков.

  • Проверка обновлений по-прежнему выполняется только при запуске
    (по тумблеру «проверка обновлений»), но её результат кэшируется — трей и
    карточки настроек читают состояние без повторных сетевых запросов.

Исправлено

  • Цикл трея больше не выполняет сетевой запрос каждые 5 секунд для проверки
    обновлений — состояние берётся из кэша стартовой проверки.

Техническое

  • Модуль cmd/selfupdate (Wails mini-app с собственным фронтендом) удалён
    из репозитория и из build.bat; ключ selfupdate убран из versions.txt
    и генерируемого versions.json.
  • Новый файл internal/updater/setup.go: CheckZPUISetupUpdate
    (разбор имён установщиков в публичной папке Яндекс.Диска) и
    DownloadZPUISetup (прогресс + сверка SHA-256 с checksums.sha256).
  • internal/zapret/updater.go: CheckForUpdates стал двух-источниковым
    (Яндекс + GitHub API, FetchZapretGitHubRelease), URL второго источника
    сохраняется в FallbackURLs для автоматического фолбэка при скачивании.
  • internal/app: update_checker.go (опрос через selfupdate.exe --check)
    заменён на update_state.go (кэш флагов + синхронизация версий в БД без
    selfupdate); app_api_updates.go переписан — DownloadZPUISetup,
    DownloadZapretUpdate, ApplyZPUISetup (детached-помощник PowerShell
    Wait-Process → запуск установщика после выхода приложения),
    ApplyZapretPackage, GetUpdateState; события update:download,
    update:download-done, update:install, update:install-done,
    update:open-modal.
  • Трей: интерфейс Controller — HasZPUIUpdateAvailable /
    HasZapretUpdateAvailable / StartTrayUpdate(component) вместо
    HasUpdateAvailable / OpenUpdateCenter.
  • build.bat: шаг сборки selfupdate удалён; хеш установщика добавляется в
    checksums.sha256; версия повышена до 1.7.0 (обновление механизма
    обновлений).

ZPUI v1.6.1

Choose a tag to compare

@github-actions github-actions released this 20 Aug 17:51

Добавлено

  • Telegram MTProto-прокси — новый встроенный модуль (Go-native, без
    внешних процессов) на вкладке «Прокси»:

    • Локальный MTProto-мост для Telegram Desktop через WebSocket (TLS) к
      Telegram DC — ускоряет загрузку Telegram и обходит проблемы соединения.
    • Жёстко привязан к SOCKS5: единая кнопка запуска, общий автозапуск и
      восстановление состояния — отдельно Telegram-мост не включается; в
      панели Telegram состояние отображается пилюлей.
    • Подключение одной кнопкой: ссылка tg://proxy?... (копирование) и
      кнопка «Подключить в Telegram» — открывает Telegram с предложением
      добавить прокси, с анимацией загрузки; активна только при работающем
      прокси. Секрет генерируется автоматически, есть регенерация.
    • Доступ из локальной сети: при привязке на 0.0.0.0 мост принимает
      устройства ЛВС (правило брандмауэра добавляется автоматически), ссылка
      для подключения строится по IP этого ПК.
    • Мини-веб-интерфейс на порту моста (http://<ip-пк>:1443): карточка
      с кнопкой «Подключить в Telegram», secret и живой статистикой
      (авто-обновление) — открывается с телефона/планшета в браузере; ссылка
      автоматически указывает на IP этого ПК.
    • Fake TLS (ee-ссылка): маскировка трафика под HTTPS к указанному
      домену; «чужие» клиенты прозрачно переправляются на домен маскировки.
    • Резервные каналы при блокировке прямого WS: Cloudflare Worker
      домены (пользовательские) → CF-проксированные домены (встроенный пул +
      ежечасное обновление с GitHub) → прямое TCP-подключение к DC; каналы
      получают cooldown (CF 10 мин, TCP 15 мин) — без шторма повторов.
    • Пул WSS-соединений на каждый DC (быстрое установление сессий) с
      авто-ротацией по возрасту и SNI-фронтингом при таймаутах.
    • PROXY protocol v1 для работы за nginx/haproxy.
    • Учёт подключений: активные сессии и трафик считаются по всем
      каналам (прямой WS, CF, TCP-fallback), per-device — на вкладке «Сеть»
      и во вкладке «Прокси» устройство показывается одной карточкой с
      числом SOCKS- и Telegram-подключений; карточка прокси на дашборде
      помечает активный TG-мост (· TG).
    • Логи в отдельном бакете «Telegram» просмотрщика логов; карточка
      «Telegram Proxy» в центре обновлений (обновляется вместе с ZPUI);
      данные (статус/порт/соединения/трафик + настройки) в отчёте.
  • Вкладка «Прокси» переработана под компактную вёрстку без прокрутки
    (рассчитана на окно 960×640): две панели — SOCKS5 (устройства + настройки
    сеткой 2×2) и Telegram (подключение + настройки + статистика); компактные
    шапки с тумблерами и живыми счётчиками; список устройств скроллится только
    внутри себя.

  • Синхронизация: перенос списков zapret и исключений мониторинга.
    Помимо оператора, стратегий и данных автоподбора теперь синхронизируются
    все списки (системные и пользовательские) и skip-resources.txt; при
    изменении стратегии/списков движок автоматически перезапускается.

  • Синхронизация всегда включена: тумблер выключения убран — модуль
    стартует при каждом запуске приложения.

  • Кнопка отчёта в меню логов: формирует MD-отчёт и сохраняет его в папку
    «Загрузки» с уведомлением о пути.

  • Заметки о релизе по клику на версию: в настройках версии ZPUI и Zapret
    в карточках обновлений кликабельны — открывают окно с описанием релиза
    (версия, дата, список изменений, ссылка на GitHub).

  • Подключение телефона к Telegram-прокси по QR. Кнопка «Подключить
    телефон» во вкладке «Прокси» открывает QR-код с адресом веб-страницы моста
    (http://<ip-пк>:<порт>): телефон сканирует код камерой — открывается
    страница с кнопкой «Подключить в Telegram», после нажатия Telegram
    открывается и добавляет MTProto-прокси с этого ПК. Если доступ из
    локальной сети выключен, модалка предложит включить его одной кнопкой
    (мост перезапускается на лету, правило брандмауэра добавляется
    автоматически).

  • Центр обновлений обновляется вместе с приложением. Архив обновления
    ZPUI содержит и selfupdate.exe: центр устанавливает новую версию себя,
    продолжая работать на старой, а после установки предлагает перезапустить
    себя одной кнопкой (приложение перезапускается автоматически).

  • Ссылки на Телеграм-канал и группу. На веб-странице Telegram-прокси
    (куда ведёт QR для телефона) появился блок с кнопками канала и группы
    приложения; адреса читаются из telegram_links.txt рядом с программой —
    правки подхватываются без перезапуска. Ссылки также добавлены в боковую
    панель вкладки «Справка».

  • Версия Telegram-прокси указывается в versions.txt (tgproxy=) и
    попадает в versions.json; сборка инжектит её в приложение.

  • Отчёт: детальный блок Telegram-прокси — состояние и версия, соединения
    и трафик, разбивка по каналам (прямые WS: успехи/отказы/ошибки рукопожатия,
    CF-proxy/worker, TCP-fallback, SNI-фронтинг, маскировка, пул WS) для
    трассировки отказов, снимок настроек моста и последние 30 записей логов
    модуля.

  • Окно «Отчёт готов» после формирования (вкладка «Отчёт» и кнопка отчёта
    в меню логов): путь к сохранённому файлу и кнопки «Открыть файл» и
    «Отправить в Телеграм» — файл отчёта копируется в буфер обмена (вставка
    Ctrl+V в чате прикрепляет его) и сразу открывается чат группы поддержки.

Изменено

  • Синхронизация: сопряжение стало взаимным. Раньше устройство сохранял
    только тот, кто вводил PIN: на втором ПК первое не отображалось в
    «Сопряжено». Теперь отдающая сторона тоже запоминает инициатора (маяк
    передаётся в заголовке запроса) — оба ПК видят друг друга сразу после
    первой синхронизации. Discovery дополнительно шлёт маяки направленными
    broadcast-адресами подсетей — надёжнее на роутерах, не ретранслирующих
    глобальный 255.255.255.255 между Wi-Fi и Ethernet.

  • Вкладка «Справка» полностью переписана: вместо инструкции по установке —
    полный путеводитель по приложению (главный экран, Запрет со стратегиями
    и службой, Прокси включая Telegram и подключение телефона по QR, Монитор,
    Xbox DNS, Синхронизация, Отчёты и логи, Настройки, решение проблем);
    в боковой панели — ссылки на Телеграм-канал и группу поддержки.

  • Стратегии Запрета блокируются, пока движок выключен (в т.ч. стартует
    или перезапускается) или идёт переключение стратегии — над сеткой
    показывается подсказка.

  • Восстановление Запрета — модальное окно по центру приложения (вместо
    тоста в углу), без возможности закрыть, с живым списком этапов. При неудаче
    приложение перезапускается (с сохранением настроек) и пробует ещё раз;
    если и после перезапуска не удалось — окно ошибки с отчётом и просьбой
    обратиться в поддержку.

  • Удалён модуль безопасности (security.exe): кнопка запуска и вкладка
    «Безопасность» в просмотрщике логов, обновление модуля, сборка и запись в
    установщике. Модуль не нёс пользовательской ценности и генерировал
    ложные срабатывания антивирусов.

  • Убрана концепция веток dev/stable. Приложение работает с одной линейкой
    версий: удалены DEV-бейджи и предупреждения в настройках, страница
    предупреждения в установщике, фильтрация источников обновлений по ветке.

  • Убраны «срезы ошибок» (файлы-слепки логов вокруг ошибки) и их просмотр
    в меню логов: дублировали сами логи, замедляя запись ERROR-сообщений.

  • Кнопка очистки логов: без всплывающей подсказки, при наведении подсвечивается
    красным (опасное действие).

  • Автозапуск без запроса прав администратора. Схема снова на задаче
    Планировщика заданий (ONLOGON + RunLevel HIGHEST): при входе в
    систему ZPUI стартует уже с правами администратора — UAC-запрос не
    появляется. Состояние тумблера читается только из системы
    (schtasks /Query /XML, языконезависимо) и больше не хранится в
    config.json; прежняя Run-key схема автоматически мигрируется на задачу.

  • Вкладка «Синхронизация» переработана в стиле приложения: hero с
    тумблером, секции «Сопряжено» (доверенные устройства — даже offline, с
    датой/временем последней синхронизации и мгновенной синхронизацией без
    PIN) и «Доступные устройства» (сопряжение с PIN).

  • Подсказки боковой панели: у верхних кнопок навигации убраны, у
    нижних сервисных кнопок отображаются сбоку.

  • Убрана подсказка у кнопки «Открыть центр обновлений» в настройках.

Исправлено

  • Окно не открывалось при ручном запуске/перезапуске. Настройка «Запускать
    свёрнутым» прятала окно при каждом запуске; теперь скрытый старт — только
    у автозапуска Windows, а сама настройка управляет аргументами задачи
    автозапуска (пересоздаётся сразу при переключении). Ручной запуск всегда
    открывает окно.

  • Экран первого запуска: прогресс-бар смещался текстом этапов. Появление
    служебных сообщений (этапы проверки службы, лог установки) меняло высоту
    блока и сдвигало название и прогресс-бар. Геометрия карточки зафиксирована:
    название и бар всегда на месте, текст живёт в отдельной прокручиваемой
    области под ними.

  • Мерцание окон консоли при формировании отчёта: системные команды
    (версия Windows, модель процессора) запускались в видимом окне — теперь
    скрыто.

  • Окно «Отчёт готов»: группа поддержки открывается сразу в приложении
    Telegram
    (tg://-протокол), а не в браузере.

  • Telegram не мог подключиться к встроенному прокси. Детектор HTTP-
    запросов (для мини-веб-интерфейса на порту моста) буферизовал первые байты
    MTProto-handshake, и мост вечно ждал «недостающие» байты, разрывая
    соединение по таймауту. Дополнительно выверены по оригиналу (tg-ws-proxy):
    прямые WSS-подключения идут только на WS-шлюз DC2/DC4 (остальные DC —
    сразу резервные каналы), снят 10-секундный deadline с клиентского
    соединения на время установки канала.

  • UPD-E001: обновление ZPUI не скачивалось с Яндекс.Диска. Скачивание
    искало несуществующий zpui-win64.zip; теперь скачивается папка версии
    целиком как zip (внутри ZPUI.exe, центр обновлений, отчёты, компоненты).
    Версии модулей ищутся в новой раскладке /<версия>/components/,
    целостность проверяется по checksums из самого архива (раньше нов...

Read more

ZPUI v1.6.0

Choose a tag to compare

@github-actions github-actions released this 18 Aug 21:51

Добавлено

  • Telegram MTProto-прокси — новый встроенный модуль (Go-native, без
    внешних процессов) на вкладке «Прокси»:

    • Локальный MTProto-мост для Telegram Desktop через WebSocket (TLS) к
      Telegram DC — ускоряет загрузку Telegram и обходит проблемы соединения.
    • Подключение одной кнопкой: ссылка tg://proxy?... (копирование) и
      кнопка «Подключить в Telegram» — открывает Telegram с предложением
      добавить прокси, с анимацией загрузки; активна только при работающем
      прокси. Секрет генерируется автоматически, есть регенерация.
    • Работает параллельно с SOCKS5-прокси на отдельном порту (по умолчанию
      1443), свой автозапуск.
    • Fake TLS (ee-ссылка): маскировка трафика под HTTPS к указанному
      домену; «чужие» клиенты прозрачно переправляются на домен маскировки.
    • Резервные каналы при блокировке прямого WS: Cloudflare Worker
      домены (пользовательские) → CF-проксированные домены (встроенный пул +
      ежечасное обновление с GitHub) → прямое TCP-подключение к DC.
    • Пул WSS-соединений на каждый DC (быстрое установление сессий) с
      авто-ротацией по возрасту и SNI-фронтингом при таймаутах.
    • PROXY protocol v1 для работы за nginx/haproxy.
    • Разбивка MTProto-потока на пакеты (abridged/intermediate/padded) для
      корректных WS-фреймов.
    • Живая статистика: соединения, трафик, WS успех/отказы, резервные
      каналы, попадания в пул.
    • Логи в отдельном бакете «Telegram» просмотрщика логов; карточка
      «Telegram Proxy» в центре обновлений (обновляется вместе с ZPUI);
      данные (статус/порт/соединения/трафик + настройки) в отчёте.
  • Вкладка «Прокси» переработана под компактную вёрстку без прокрутки
    (рассчитана на окно 960×640): две панели — SOCKS5 (устройства + настройки
    сеткой 2×2) и Telegram (подключение + настройки + статистика); компактные
    шапки с тумблерами и живыми счётчиками; список устройств скроллится только
    внутри себя.

  • Синхронизация: перенос списков zapret и исключений мониторинга.
    Помимо оператора, стратегий и данных автоподбора теперь синхронизируются
    все списки (системные и пользовательские) и skip-resources.txt; при
    изменении стратегии/списков движок автоматически перезапускается.

  • Кнопка отчёта в меню логов (правее кнопки безопасности): формирует
    MD-отчёт и сохраняет его в папку «Загрузки» с уведомлением о пути.

Изменено

  • Автозапуск без запроса прав администратора. Схема снова на задаче
    Планировщика заданий (ONLOGON + RunLevel HIGHEST): при входе в
    систему ZPUI стартует уже с правами администратора — UAC-запрос не
    появляется. Состояние тумблера читается только из системы
    (schtasks /Query /XML, языконезависимо) и больше не хранится в
    config.json; прежняя Run-key схема автоматически мигрируется на задачу.
  • Вкладка «Синхронизация» переработана в стиле приложения: hero с
    тумблером, секции «Сопряжено» (доверенные устройства — даже offline, с
    датой/временем последней синхронизации и мгновенной синхронизацией без
    PIN) и «Доступные устройства» (сопряжение с PIN).
  • Подсказки боковой панели: у верхних кнопок навигации убраны, у
    нижних сервисных кнопок отображаются сбоку.
  • Убрана подсказка у кнопки «Открыть центр обновлений» в настройках.

Исправлено

  • Модуль безопасности (и все модули с окном прогресса): окно появлялось
    и мгновенно закрывалось. Причина — функции CreateFontIndirectW и
    AddFontMemResourceEx были привязаны к неверным DLL (user32/kernel32);
    обе живут в gdi32. После фикса security.exe отрабатывает все проверки
    полностью. Дополнительно оконная горутина защищена recover.
  • Синхронизация «ничего не меняла»: применённые данные теперь реально
    влияют на систему (рестарт движка, запись списков), а момент последней
    синхронизации сохраняется и отображается.
  • Telegram отклонял ссылку прокси как некорректную: ссылка открывалась
    через cmd /c start, а cmd.exe без кавычек обрезал URL на первом & —
    Telegram получал адрес без порта и секрета. Ссылка теперь открывается
    через rundll32 url.dll,FileProtocolHandler (как и все внешние URL).
  • Все резервные CF-домены падали с «bad handshake»: WS-клиент не
    отправлял обязательный субпротокол Telegram Sec-WebSocket-Protocol: binary (приведён к оригинальному клиенту; TLS-верификация отключена,
    как в upstream — шифрование обеспечивает MTProto).
  • Шторм логов при недоступности Telegram: fallback-каналы получили
    cooldown (CF per-DC 10 мин, прямой TCP per-IP 15 мин) — вместо десятков
    WARN на каждое соединение выводится одна сводка; отдельные неудачи
    доменов перенесены на DEBUG.
  • Тумблеры прокси откликаются медленно: после клика спиннер держится
    до фактической смены состояния (быстрый опрос 0.7 с вместо ожидания
    общего 5-секундного поллинга) — одинаково быстро и включение, и
    выключение.
  • Вкладка «Telegram» уходила за экран в полосе выбора логов: полоса
    вкладок стала компактнее и получила горизонтальную прокрутку — колесом
    мыши (вертикальное вращение конвертируется в горизонталь) и тачпадом.

Техническое

  • Новый пакет internal/tgproxy (MTProto-obfuscation handshake AES-CTR,
    ре-шифрование, WSS-клиент, пул, fallback-цепочка, Fake TLS, статистика);
    биндинги app_api_tgproxy.go; конфиг TelegramProxyConfig
    (порт/bind/secret/fake_tls/fallback_cf/cf_worker_domains/pool_size).
  • Тумблер автозапуска: GetAutostartStatus без поля config, фронтенд
    использует только live-статус; syncAutostartSystem() — миграция.
  • Логи: новый бакет tgproxy_logs (+ вкладка «Telegram»).
  • Отчёт: RuntimeState/ConfigSnapshot расширены полями Telegram-прокси.
  • Из установщика/сборки удалена мёртвая папка mods/ (остатки
    нереализованной плагинной системы).
  • Модуль Telegram-прокси: версия 1.1.0 (обновляется вместе с ядром).
  • Обновлены AGENTS.md и документация в Документы/.