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

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

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

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

📝 Hosts: при переключении иконка сервиса покачивается и светится — цветом сервиса при включении, серым при выключении

👤 Автор: loop-uh
📅 Дата: 30.09.2026 00:34:51 MSK
🔗 SHA: 5105051

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

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

✏️ src/hosts/ui/services_tiles.py
✏️ tests/test_hosts_page_draft.py

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

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

📝 Пресеты: файл пишется безопасно (временный файл + подмена с повторами на Windows, «только чтение» не обходится), cp1251 читается без порчи и «Старт» на нём не падает, правки редактора не теряются при закрытии окна, комментарии профиля переживают правку текстом, пропавший с диска активный пресет не подменяет работающий, --debug=@logs\ тоже переносится, папки пресетов пишутся под блокировкой

👤 Автор: loop-uh
📅 Дата: 30.09.2026 01:48:06 MSK
🔗 SHA: ce1158f

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

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

🆕 tests/test_atomic_text.py
✏️ src/core/runtime/preset_runtime_coordinator.py
✏️ src/presets/commands.py
✏️ src/presets/file_store.py
✏️ src/presets/folders.py
✏️ src/presets/mode_coordinator.py
✏️ src/presets/preset_contract.py
✏️ src/presets/preset_file_ops.py
✏️ src/presets/remote_sync.py
✏️ src/presets/ui/common/preset_subpage_base.py
✏️ src/profile/serializer.py
✏️ src/ui/page_deps/presets.py
✏️ src/utils/atomic_text.py
✏️ src/winws_runtime/flow/start_preparation.py
✏️ src/winws_runtime/runtime/preset_launch_service.py
✏️ tests/test_preset_import_validation.py
✏️ tests/test_preset_runtime_coordinator.py
✏️ tests/test_preset_subpage_ui_guards.py
✏️ tests/test_profile_raw_editor.py

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

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

📝 Обновление: одно большое окно для любого пути — изменения всех пропущенных версий, «Что нового», кнопки «Обновить / Позже / Пропустить версию / Открыть в браузере / Telegram», загрузка прямо в окне: логотип бежит и покачивается по переливающейся полосе, шутки как в BlockCheck; «Скрыть» не останавливает загрузку; «Что нового» один раз после обновления и кнопкой в «О программе»; маленький вопрос при запуске и карточка с обрезанным текстом убраны

👤 Автор: loop-uh
📅 Дата: 30.09.2026 01:51:43 MSK
🔗 SHA: 5dab135

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

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

🆕 src/ui/widgets/fun/runway.py
🆕 src/updater/release/history.py
🆕 src/updater/ui/fun_texts.py
🆕 src/updater/ui/update_dialog.py
🆕 src/updater/ui/update_flow.py
🆕 src/updater/whats_new.py
🆕 tests/test_forgejo_release_history.py
🆕 tests/test_post_startup_host_whats_new.py
🆕 tests/test_update_dialog.py
🆕 tests/test_whats_new.py
🗑️ src/updater/ui/changelog_card.py
🗑️ tests/test_post_startup_host_accessibility.py
🗑️ tests/test_updater_changelog_accessibility.py
✏️ src/app/feature_facades/updater.py
✏️ src/app/ui_texts.py
✏️ src/core/runtime/update_check_coordinator.py
✏️ src/main/post_startup_host.py
✏️ src/main/post_startup_update.py
✏️ src/settings/normalize.py
✏️ src/settings/schema.py
... и ещё 24 файлов

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

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

📝 Окно обновления не всплывает само по себе, пока программа в трее или свёрнута: ждёт, пока окно откроют (до 20 минут, потом обновление остаётся на карточке «Подробнее»); «Что нового» тоже ждёт до 20 минут; повтор открытия идёт таймером страницы и не падает, если страницу уже закрыли

👤 Автор: loop-uh
📅 Дата: 30.09.2026 01:53:35 MSK
🔗 SHA: 8feb850

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

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

✏️ src/main/post_startup_update.py
✏️ src/updater/ui/page.py
✏️ tests/test_update_check_coordinator.py
✏️ tests/test_updater_servers_page_assembly.py

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

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

📝 Профили: отложенные стратегия, переключатель и настройки пишутся в профиль, открытый при щелчке (а не в тот, что открыт к моменту записи), записи разных профилей не замещают друг друга, быстрые щелчки по стратегиям не теряют последний выбор, ждущие записи сохраняются при закрытии окна; смена пресета или стратегии во время запуска DPI применяется после старта; перемещение профилей больше не дописывает «--new=TCP 443» и не сдвигает их ключи; тот же профиль, открытый заново после правки пресета, показывает файл; переименование своего профиля сохраняет его папку и оценки

👤 Автор: loop-uh
📅 Дата: 30.09.2026 02:06:39 MSK
🔗 SHA: 3cdda6e

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

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

✏️ src/profile/serializer.py
✏️ src/profile/service.py
✏️ src/profile/ui/profile_setup_page.py
✏️ src/profile/ui/profile_setup_save_controllers.py
✏️ src/profile/ui/profile_strategy_controller.py
✏️ src/ui/page_composition.py
✏️ src/ui/page_deps/presets.py
✏️ src/winws_runtime/flow/apply_policy.py
✏️ src/winws_runtime/flow/preset_switch_policy.py
✏️ src/winws_runtime/runtime/restart_flow.py
✏️ tests/test_preset_runtime_coordinator.py
✏️ tests/test_profile_raw_editor.py
✏️ tests/test_profile_setup_ui_guards.py
✏️ tests/test_profile_setup_write_serialization.py
✏️ tests/test_user_profiles.py
✏️ tests/test_winws1_profile_boundaries.py
🆕 tests/test_profile_setup_write_identity.py

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

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

📝 Пресеты и профили: убран неиспользуемый код (~560 строк: модули public.py, диалог имени пресета zapret2, мёртвые функции в preset_text_ops, profile.folders, привязках к источнику, фасаде запуска и страницах), переключение пресета больше не ждёт лишние 0,5 с — быстрые щелчки склеивает один debounce в switch pipeline

👤 Автор: loop-uh
📅 Дата: 30.09.2026 02:11:03 MSK
🔗 SHA: 53bea21

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

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

🗑️ src/presets/public.py
🗑️ src/presets/ui/zapret2/preset_dialogs.py
🗑️ src/profile/public.py
🗑️ tests/test_zapret2_preset_dialog_accessibility.py
✏️ src/app/feature_facades/runtime.py
✏️ src/app/feature_facades/runtime_parts.py
✏️ src/core/runtime/preset_runtime_coordinator.py
✏️ src/presets/preset_text_ops.py
✏️ src/presets/raw_preset_editor_workflow.py
✏️ src/presets/remote_bindings.py
✏️ src/presets/selection_service.py
✏️ src/presets/ui/common/preset_subpage_base.py
✏️ src/presets/ui/common/user_presets_page.py
✏️ src/presets/ui/control/control_runtime.py
✏️ src/profile/folders.py
✏️ src/settings/store.py
✏️ tests/test_preset_runtime_coordinator.py
✏️ tests/test_profile_folder_actions.py
✏️ tests/test_profile_list_payload.py
✏️ tests/test_remote_preset_bindings.py
... и ещё 1 файлов

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

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

📝 Пресеты и профили — доработки после самопроверки: один битый байт больше не переводит UTF-8 файл в cp1251, запуск winws, описание в списке и привязанный файл читаются по общему правилу кодировки; комментарий над первым профилем больше не даёт ложную «ошибку сохранения»; папки пресетов и профилей пишутся под одним замком; при закрытии синхронная запись пропускается, если зависшую запись пришлось прервать; результат для ранее открытого профиля не переключает страницу обратно и обновляет строку в списке, ожидающая стратегия другого профиля не отбрасывает результат, переключатель чужого профиля идёт в очередь, записи при закрытии идут в порядке щелчков; при чужом владельце быстрые щелчки по пресетам снова склеиваются; «DPI не запущен» больше не пишется WARNING на каждый щелчок; убраны осиротевшие строки диалога имени пресета

👤 Автор: loop-uh
📅 Дата: 30.09.2026 02:26:03 MSK
🔗 SHA: dd110d9

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

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

🆕 src/folders/state_lock.py
✏️ src/app/feature_facades/presets.py
✏️ src/app/ui_texts.py
✏️ src/lists/file_manager.py
✏️ src/presets/folders.py
✏️ src/presets/list_metadata.py
✏️ src/presets/ui/common/preset_subpage_base.py
✏️ src/profile/folders.py
✏️ src/profile/service.py
✏️ src/profile/ui/profile_setup_page.py
✏️ src/profile/ui/profile_setup_save_controllers.py
✏️ src/profile/ui/profile_strategy_controller.py
✏️ src/ui/one_shot_worker_runtime.py
✏️ src/utils/atomic_text.py
✏️ src/winws_runtime/flow/preset_switch_policy.py
✏️ src/winws_runtime/runners/zapret1_runner.py
✏️ src/winws_runtime/runners/zapret2_runner.py
✏️ src/winws_runtime/runtime/restart_flow.py
✏️ tests/test_atomic_text.py
✏️ tests/test_preset_runtime_coordinator.py
... и ещё 4 файлов

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

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

📝 Обновление без пустого экрана: пока старая версия закрывается, ставится и открывается новая, на месте окна обновления стоит окно-продолжение (отдельный PowerShell, переживает замену Zapret.exe) — этапы с галочками, логотип бежит по переливающейся полосе, шутки; гаснет, когда новая версия открылась, при неудаче или отмене уходит сразу; своя полоска установщика скрыта (/VERYSILENT, ошибки по-прежнему видны); в «Что нового» и окне обновления заголовок стоит вровень с логотипом

👤 Автор: loop-uh
📅 Дата: 30.09.2026 13:29:25 MSK
🔗 SHA: b400f4c

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

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

🆕 src/updater/install/splash.py
🆕 src/updater/install/splash_script.py
🆕 src/updater/ui/restart_splash_spec.py
🆕 tests/test_restart_splash.py
🆕 tests/test_restart_splash_windows.py
✏️ src/app/feature_facades/updater.py
✏️ src/app/ui_texts.py
✏️ src/main/post_startup_update.py
✏️ src/ui/widgets/fun/mascot.py
✏️ src/updater/commands.py
✏️ src/updater/download/flow.py
✏️ src/updater/download/service.py
✏️ src/updater/install/launcher.py
✏️ src/updater/install/paths.py
✏️ src/updater/public.py
✏️ src/updater/ui/fun_texts.py
✏️ src/updater/ui/page.py
✏️ src/updater/ui/update_dialog.py
✏️ tests/test_build_resource_layout.py
✏️ tests/test_post_startup_update_contract.py
... и ещё 4 файлов

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

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

📝 Настройка DNS: вместо короткой дуги — комета, которая всегда замыкает круг

👤 Автор: loop-uh
📅 Дата: 30.09.2026 13:39:50 MSK
🔗 SHA: feb1a36

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

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

✏️ src/dns/ui/now_panel.py
✏️ src/dns/ui/provider_grid.py
✏️ tests/test_dns_page.py
✏️ tests/test_dns_provider_grid.py

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

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

📝 Тест каталога hosts: версия 2026.09.30.1, ни у одного сервиса нет запасного глобуса

👤 Автор: loop-uh
📅 Дата: 30.09.2026 13:40:48 MSK
🔗 SHA: b8a1ca5

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

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

✏️ tests/test_hosts_catalog_sqlite.py

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

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

📝 О программе: высота вкладок — по открытой вкладке, под «Zapret KVN» больше нет пустоты высотой со «Справку»

👤 Автор: loop-uh
📅 Дата: 30.09.2026 13:46:38 MSK
🔗 SHA: 704e68e

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

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

✏️ src/ui/pages/about_page_kvn_build.py
✏️ src/ui/pages/about_page_tabs_build.py
🆕 tests/test_about_tabs_height.py

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

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

📝 Пресеты: автосинк не затирает правку, сделанную во время загрузки, и не возвращает отвязанную привязку или выключенное автообновление; пропавший выбранный пресет подменяется пресетом по умолчанию только для запуска — выбор не затирается и вернётся вместе с файлом; чтение выбора больше ничего не пишет в настройки; один заблокированный файл или папка *.txt не роняют список пресетов; упавшая проверка пресета не останавливает работающий DPI; действия над профилями не уходят в другой пресет после переключения; воркеры списка профилей и фильтра стратегий больше не роняют программу при пересоздании виджета

👤 Автор: loop-uh
📅 Дата: 30.09.2026 13:49:29 MSK
🔗 SHA: ae70251

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

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

🆕 tests/test_preset_data_safety_guards.py
✏️ src/presets/file_store.py
✏️ src/presets/remote_sync.py
✏️ src/presets/remote_sync_workers.py
✏️ src/presets/selection_service.py
✏️ src/profile/ui/preset_setup_page.py
✏️ src/profile/ui/preset_write_queue.py
✏️ src/profile/ui/profile_strategy_list_widget.py
✏️ src/profile/ui/profiles_list.py
✏️ src/winws_runtime/runtime/preset_launch_service.py
✏️ tests/test_preset_selection_defaults.py
✏️ tests/test_remote_preset_sync.py

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

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

📝 Пуск и стоп Zapret отовсюду (#78): точка в «Статусе работы» стала выключателем (значок питания, подсветка при наведении, Enter/Пробел), секция из двух кнопок убрана — «Закрыть программу» тихой кнопкой в той же карточке; в заголовке окна рядом с PREMIUM метка «● Работает / Остановлен», видна в любом разделе и тоже переключает; трей переделан: шапка с режимом, состоянием и пресетом, первым пунктом «Запустить/Остановить Zapret», «Перезапустить», подменю пресетов с отметкой активного и быстрым переключением, меню собирается заново при каждом открытии; на иконке трея цветная точка (зелёная — работает, жёлтая — запуск/остановка), в подсказке режим и пресет, уведомления о запуске и остановке, когда окно скрыто; вся логика пуска в одном пульте ui/launch_control.py

👤 Автор: loop-uh
📅 Дата: 30.09.2026 14:07:07 MSK
🔗 SHA: de730e5

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

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

🆕 src/ui/launch_control.py
🆕 src/ui/launch_title_badge.py
🆕 src/ui/widgets/tray_status_header.py
🆕 tests/test_launch_control.py
🆕 tests/test_launch_title_badge.py
✏️ src/app/feature_assembly.py
✏️ src/app/feature_facades/tray.py
✏️ src/app/ui_texts.py
✏️ src/main/tray_window_port.py
✏️ src/main/window_page_deps_setup.py
✏️ src/presets/ui/control/control_page_runtime_shared.py
✏️ src/presets/ui/control/control_page_shared.py
✏️ src/presets/ui/control/control_runtime.py
✏️ src/presets/ui/control/shared_builders.py
✏️ src/presets/ui/control/zapret1/build.py
✏️ src/presets/ui/control/zapret1/page.py
✏️ src/presets/ui/control/zapret1/runtime_helpers.py
✏️ src/presets/ui/control/zapret2/build.py
✏️ src/presets/ui/control/zapret2/page.py
✏️ src/presets/ui/control/zapret2/page_runtime.py
... и ещё 16 файлов

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

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

📝 Пресеты и профили — точность: проверка запуска не считает флаги в комментариях, строки делятся только по переводу строки (как у парсера); при смене стратегии сохраняется действующий (последний) --payload; новый пользовательский profile не делит файлы списков с переименованным, битая запись не роняет шаблоны; кэш профиля учитывает имя и файлы списков; «v1.5» ищется как v1.5.txt, имя возвращается как на диске; занятое имя при создании/копии/переименовании/импорте становится «X (2)» и в файле, и в списке; импорт ZIP переписывает ссылки в строке с несколькими опциями и отвергает имена CON, a.txt:поток и т.п.; смена стратегии не сбрасывает папку и порядок профиля; результат и ошибка импорта показываются всегда, повторный импорт по ссылке не теряет источник, папка сворачивается сразу; шаги перемещения папок не схлопываются; устаревший план фильтра стратегий не затирает строки; сбои обновления меты пишутся в лог. Доработки волны 1: запасной пресет нельзя удалить, щелчок по нему закрепляет выбор, действия над профилями не принимаются, пока список показывает прежний пресет, результат сканирования с заблокированным файлом не кэшируется

👤 Автор: loop-uh
📅 Дата: 30.09.2026 14:08:38 MSK
🔗 SHA: 2982ebd

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

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

🆕 tests/test_presets_profiles_accuracy.py
✏️ src/app/feature_facades/presets.py
✏️ src/lists/core/layered_files.py
✏️ src/presets/file_service.py
✏️ src/presets/file_store.py
✏️ src/presets/portable_archive.py
✏️ src/presets/preset_file_ops.py
✏️ src/presets/preset_text_ops.py
✏️ src/presets/selection_service.py
✏️ src/presets/ui/common/user_presets_page.py
✏️ src/profile/derived_cache.py
✏️ src/profile/launch_validation.py
✏️ src/profile/serializer.py
✏️ src/profile/service.py
✏️ src/profile/ui/preset_write_queue.py
✏️ src/profile/ui/profile_folder_controller.py
✏️ src/profile/ui/profile_list_view.py
✏️ src/profile/ui/profile_strategy_list_widget.py
✏️ src/profile/user_profiles/service.py
✏️ src/ui/presets_menu/view.py
... и ещё 5 файлов

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

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

📝 Активный пресет знает свой режим: store общий для zapret1 и zapret2, поэтому вместе с именем (теперь в исходном регистре) публикуется режим; список profile сравнивает имя только со своим режимом — переключение пресета в другом режиме больше не перезагружает чужой список и не блокирует действия над profile (регрессия предыдущего коммита после смены режима)

👤 Автор: loop-uh
📅 Дата: 30.09.2026 14:11:42 MSK
🔗 SHA: 59e8b8a

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

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

✏️ src/app/state_store.py
✏️ src/core/runtime/preset_runtime_coordinator.py
✏️ src/profile/ui/preset_setup_page.py
✏️ src/profile/ui/preset_write_queue.py
✏️ tests/test_preset_editor_invariants.py
✏️ tests/test_presets_profiles_accuracy.py

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

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

📝 Пресеты: подбор свободного имени больше не зависает на имени длиннее 100 символов (основа укорачивается под « (2)»); скан с заблокированным файлом кэшируется на 2 с, а предупреждение о файле пишется один раз; сброс списка профилей забывает отпечаток папки списков; пользовательский profile с именем вроде «con» получает допустимые файлы списков

👤 Автор: loop-uh
📅 Дата: 30.09.2026 14:18:29 MSK
🔗 SHA: 48f3997

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

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

✏️ src/presets/file_store.py
✏️ src/profile/derived_cache.py
✏️ src/profile/service.py
✏️ src/profile/user_profiles/service.py
✏️ tests/test_presets_profiles_accuracy.py

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

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

📝 Один источник «активного пресета»: PresetSelectionService сам сообщает о каждой смене выбора — выбор пользователя, подмена пропавшего файла запасным и возврат файла; переименование выбранного пресета не считается сменой (без лишнего перезапуска DPI); о подмене пользователь видит сообщение «Пресет X не найден — используется Y», страницы показывают запасной активным, работающий DPI сам не переключается, а вернувшийся файл снова становится активным; шапка редактора пресета следует за выбором, сделанным в другом месте; убраны копии выбора (кэш выбранного манифеста, кэш метаданных в хранилище сигналов); архитектурная проверка: выбор пишет только PresetSelectionService

👤 Автор: loop-uh
📅 Дата: 30.09.2026 14:22:17 MSK
🔗 SHA: 15d4870

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

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

🆕 tests/test_active_preset_single_source.py
✏️ src/app/architecture_checks.py
✏️ src/core/runtime/preset_runtime_coordinator.py
✏️ src/presets/commands.py
✏️ src/presets/mode_coordinator.py
✏️ src/presets/preset_file_ops.py
✏️ src/presets/selection_service.py
✏️ src/presets/services_bundle.py
✏️ src/presets/ui/common/preset_subpage_base.py
✏️ src/presets/ui_bindings.py
✏️ src/presets/ui_store.py
✏️ tests/test_preset_ui_store_guards.py
✏️ tests/test_startup_autostart.py

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

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

📝 Значки в заголовке ровные, «Работает» заметно пульсирует: подложка со сглаженными углами, от зелёной точки расходится кольцо

👤 Автор: loop-uh
📅 Дата: 30.09.2026 14:24:13 MSK
🔗 SHA: bab8581

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

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

🆕 src/ui/title_badge_paint.py
🆕 tests/test_title_badge_paint.py
✏️ src/ui/launch_title_badge.py
✏️ src/ui/subscription_title_badge.py

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

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

📝 Скорость: переключение пресета, сохранение пресета, применение стратегии, включение profile, настройки profile, активация, старт и остановка DPI пишут своё время в журнал (UiMetric) — по нему видно, сколько они длятся у пользователя; определение папки profile по тексту запоминается — повторная сборка списка из ~100 profile ускорилась с ~12 до ~2 мс

👤 Автор: loop-uh
📅 Дата: 30.09.2026 14:27:19 MSK
🔗 SHA: 2e0cfa5

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

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

🆕 tests/test_hot_action_timing.py
✏️ src/folders/defaults.py
✏️ src/presets/raw_preset_loader.py
✏️ src/presets/user_presets_action_workers.py
✏️ src/profile/profile_setup_loader.py
✏️ src/winws_runtime/runtime/control_workers.py
✏️ src/winws_runtime/runtime/start_workers.py

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

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

📝 Окно-продолжение обновления больше не прячется за Zapret: программа разрешает ему выйти на передний план, пока старая версия на экране оно стоит поверх всех, потом — обычным окном (сообщения установщика видны); в журнал окна пишутся место и выход на передний план. Шапка «Что нового» и окна обновления: значок 44 px, заголовок с подписью центрируются по самому значку и не свисают. «Версий в списке: 2» → «Изменения за 2 версии»

👤 Автор: loop-uh
📅 Дата: 30.09.2026 14:27:30 MSK
🔗 SHA: f8194d1

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

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

✏️ src/app/ui_texts.py
✏️ src/updater/install/splash.py
✏️ src/updater/install/splash_script.py
✏️ src/updater/ui/plans.py
✏️ src/updater/ui/update_dialog.py
✏️ tests/test_restart_splash.py
✏️ tests/test_update_dialog.py

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

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

📝 Активный пресет после подмены: координатор помнит пресет, на котором реально работает DPI, а запасной только показывается — щелчок по запасному теперь переводит на него работающий DPI (раньше считался «уже выбран»); вернувшийся файл доходит до страниц и runtime, даже если его имя совпадает с последним отправленным, и лишнего перезапуска не вызывает

👤 Автор: loop-uh
📅 Дата: 30.09.2026 14:29:11 MSK
🔗 SHA: 86b4b27

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

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

✏️ src/core/runtime/preset_runtime_coordinator.py
✏️ src/presets/selection_service.py
✏️ src/presets/ui_store.py
✏️ tests/test_active_preset_single_source.py
✏️ tests/test_preset_ui_store_guards.py

🔗 Открыть в Forgejo