💥 ВСЕ НАШИ ССЫЛКИ: https://t.me/runetvpnyoutubediscord
🔔 Новый коммит в zapretdiscordyoutube/zapret
📝 Hosts: при переключении иконка сервиса покачивается и светится — цветом сервиса при включении, серым при выключении
👤 Автор: loop-uh
📅 Дата: 30.09.2026 00:34:51 MSK
🔗 SHA:
📊 Статистика:
➕ Добавлено: 51 строк
➖ Удалено: 1 строк
📝 Всего изменений: 52
📁 Изменено файлов: 2
✏️
✏️
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 503 строк
➖ Удалено: 36 строк
📝 Всего изменений: 539
📁 Изменено файлов: 19
🆕
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 3258 строк
➖ Удалено: 1059 строк
📝 Всего изменений: 4317
📁 Изменено файлов: 44
🆕
🆕
🆕
🆕
🆕
🆕
🆕
🆕
🆕
🆕
🗑️
🗑️
🗑️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
... и ещё 24 файлов
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 50 строк
➖ Удалено: 9 строк
📝 Всего изменений: 59
📁 Изменено файлов: 4
✏️
✏️
✏️
✏️
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 871 строк
➖ Удалено: 66 строк
📝 Всего изменений: 937
📁 Изменено файлов: 17
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
🆕
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 20 строк
➖ Удалено: 816 строк
📝 Всего изменений: 836
📁 Изменено файлов: 21
🗑️
🗑️
🗑️
🗑️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
... и ещё 1 файлов
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 410 строк
➖ Удалено: 114 строк
📝 Всего изменений: 524
📁 Изменено файлов: 24
🆕
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
... и ещё 4 файлов
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 1512 строк
➖ Удалено: 18 строк
📝 Всего изменений: 1530
📁 Изменено файлов: 24
🆕
🆕
🆕
🆕
🆕
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
... и ещё 4 файлов
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 226 строк
➖ Удалено: 91 строк
📝 Всего изменений: 317
📁 Изменено файлов: 4
✏️
✏️
✏️
✏️
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 6 строк
➖ Удалено: 1 строк
📝 Всего изменений: 7
📁 Изменено файлов: 1
✏️
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 53 строк
➖ Удалено: 4 строк
📝 Всего изменений: 57
📁 Изменено файлов: 3
✏️
✏️
🆕
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 365 строк
➖ Удалено: 28 строк
📝 Всего изменений: 393
📁 Изменено файлов: 12
🆕
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 2988 строк
➖ Удалено: 1238 строк
📝 Всего изменений: 4226
📁 Изменено файлов: 36
🆕
🆕
🆕
🆕
🆕
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
... и ещё 16 файлов
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 862 строк
➖ Удалено: 150 строк
📝 Всего изменений: 1012
📁 Изменено файлов: 25
🆕
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
... и ещё 5 файлов
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 66 строк
➖ Удалено: 9 строк
📝 Всего изменений: 75
📁 Изменено файлов: 6
✏️
✏️
✏️
✏️
✏️
✏️
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 102 строк
➖ Удалено: 7 строк
📝 Всего изменений: 109
📁 Изменено файлов: 5
✏️
✏️
✏️
✏️
✏️
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 353 строк
➖ Удалено: 291 строк
📝 Всего изменений: 644
📁 Изменено файлов: 13
🆕
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
✏️
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 246 строк
➖ Удалено: 35 строк
📝 Всего изменений: 281
📁 Изменено файлов: 4
🆕
🆕
✏️
✏️
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 318 строк
➖ Удалено: 193 строк
📝 Всего изменений: 511
📁 Изменено файлов: 7
🆕
✏️
✏️
✏️
✏️
✏️
✏️
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 138 строк
➖ Удалено: 16 строк
📝 Всего изменений: 154
📁 Изменено файлов: 7
✏️
✏️
✏️
✏️
✏️
✏️
✏️
🔗 Открыть в Forgejo
🔔 Новый коммит в 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:
📊 Статистика:
➕ Добавлено: 82 строк
➖ Удалено: 10 строк
📝 Всего изменений: 92
📁 Изменено файлов: 5
✏️
✏️
✏️
✏️
✏️
🔗 Открыть в Forgejo
🔔 Новый коммит в 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