# Обновление 2026.09.26.3 Накопительный пакет изменённых файлов для существующего проекта `hockey(9).zip` (2026.09.24.4) и обновлений 2026.09.26.1 / 2026.09.26.2. Это обновление, а не самостоятельная установка. Оно включает оба предыдущих этапа. Для текущей версии эта инструкция имеет приоритет над историческими документами второго этапа. ## Что исправлено **Новое время удаления в vMix.** При первом запуске, новом удалении на том же Input, смене назначенного удаления и восстановлении привязки после перезагрузки отправляется `SetCountdown → StopCountdown → StartCountdown`. Установка длительности теперь сопровождается сбросом текущего положения счётчика: старый остаток не должен переноситься в новое удаление. Пауза — `SuspendCountdown`, продолжение — только `StartCountdown`, без повторной установки времени. При ручной правке остановленного удаления — `SetCountdown → StopCountdown`; при правке работающего — дополнительно `StartCountdown`. Основной игровой таймер сохраняет прежний протокол. Посекундных команд в vMix не добавлено. Неудачная отправка удаляет локальную отметку успешного назначения Input, чтобы следующая попытка снова передала время. Запоздалый ответ старого запроса не стирает более новое назначение. По [документации vMix](https://www.vmix.com/help29/ShortcutFunctionReference.html), SetCountdown задаёт длительность, StopCountdown останавливает и сбрасывает счётчик, SuspendCountdown только ставит его на паузу. **Появление удаления при выданном титре.** Когда выбран игрок/команда, нарушение и длительность, плашка показывается сразу, если основной титр уже в эфире. Сначала передаётся новое остановленное время, затем Overlay In. Отсчёт начинается только по «Старт»/пробелу. Неполный черновик не показывается. Проверка эфира учитывает данные Agent, в том числе после перезагрузки страницы или выдачи титра непосредственно в vMix. При повторной выдаче основного титра плашка может появиться снова без перезапуска её счётчика. Сохраняется правило одной плашки численного преимущества с выбором ближайшего перехода. Равные встречные удаления без предшествующего преимущества не создают две плашки. Настройки Input, текстового поля Countdown и Overlay берутся из существующего включённого сценария синхронизации таймеров. Подготовка удаления не запускает таймер и не меняет расчёт фактического состава до старта. **Автоматическое открепление матча.** Сервер раз в 30 секунд проверяет аккаунты с привязанными матчами. Если с последнего действия аккаунта прошло 2 часа, освобождаются права управления, очищается выбранный матч в его персональных каналах и завершается его назначение Agent. Обычно это происходит между 2:00:00 и 2:00:30 бездействия; недоступность БД может задержать очистку. Проверка запускается также сразу после старта сервера и работает без браузера. Учитывается последняя активность среди всех входов этого же аккаунта. Фоновые запросы, обновление статистики, lease heartbeat и сообщения Agent не считаются действиями. Активность другого аккаунта не продлевает срок владельца. Движения мыши/клавиатура/клики в видимом интерфейсе учитываются прежним трекером второго этапа; он отправляет обновления не чаще раза в минуту и передаёт возраст последнего действия, а не принимает время запроса за время действия. Данные матча и подключения других операторов сохраняются. Постоянный адрес персонального канала и сопряжение Agent сохраняются; после нового входа нужно снова выбрать матч и при необходимости принять права. Отключённый Agent при переподключении получает актуальную пустую привязку. Новый вход/новое назначение, успевшие одновременно с очисткой, защищены от запоздалой отмены. Это правило использует серверные WFL web sessions; режим разработки с подставной авторизацией без таких сессий из фоновой очистки исключён. ## Установка 1. Сохраните резервную копию текущего кода. Если после второго этапа были свои изменения исходников, сравните заменяемые файлы с пакетом. 2. Остановите веб-панель и распакуйте архив в корень существующего проекта, где находится `app.py`, с заменой одноимённых файлов. 3. Запустите веб-панель и обновите страницу браузера. `/api/health` должен вернуть build `2026.09.26.3`. Agent.exe обновлять не требуется. Новых зависимостей и новых колонок БД именно в этом исправлении нет. Если первый/второй этап ещё не устанавливался, действуют их инструкции по зависимостям и автоматическому добавлению колонок. Архив не содержит пользовательских JSON настроек, `.env`, баз, журналов, секретов или бинарного Agent. Кнопки, шорткаты и настройки Mapping не заменяются. Файлы `settings/local/` и каталог `HOCKEY_UI_DATA_DIR`, если он настроен, нужно сохранять при будущих обновлениях так же, как после второго этапа. ## Проверка после установки - На одном Input последовательно назначить удаления 2 и 4 минуты: проверить новое значение и запуск, затем паузу/продолжение без скачка. - При выданном основном титре заполнить удаление: его плашка должна появиться с остановленным новым временем; «Старт»/пробел запускает отсчёт. - Открыть матч вторым аккаунтом: он получает данные, но не отправляет команды управления. Его активность не удерживает права неактивного владельца. Проверки разработки и их границы описаны в `VALIDATION_HOTFIX_RU.md`. Подробный разбор 40 прежних падений — `PREVIOUS_40_FAILURES_RU.md`.