Skip to content

2.0.0 Stable Realese

Choose a tag to compare

@MartinDawgor MartinDawgor released this 22 Aug 03:07
· 7 commits to main since this release
ef24d8c

Вторая глобальная стабильная версия

Changelog

  • Добавлен Plyr как основной видеоплеер вместо Valve VideoJS (VideoJS сохранён как legacy-режим)
  • Создана абстракция ReviewPlayerPort — единый интерфейс плеера, не зависящий от реализации
  • Создан ValvePlayerHost — подмена Valve-видео на собственный контейнер с Plyr
  • Добавлена динамическая индикация триггера античита: обратный отсчёт, подсветка момента, маркер на прогресс-баре
  • Добавлена настройка «Закрепить контролы плеера» (keepControlsVisible)
  • Добавлен генерационный контроль загрузки видео для отмены устаревших операций
  • Создан webm-parser.ts — парсинг EBML-заголовков для извлечения даты матча и длительности видео
  • Добавлены поля matchTimestamp и webmDuration в данные клипа
  • readValveClip и parseValvePage стали асинхронными — ожидают метаданные WebM
  • Централизованная валидация URL (url-policy.ts) — проверка origin для WebM и Valve-страниц
  • Санитизация HTML при подстановке фрагментов Valve-страницы
  • Rollback при ошибке синхронизации страницы после submit
  • Проверка form.action через getAllowedValvePageUrl — защита от open redirect
  • Добавлена система миграции истории с поддержкой legacy-форматов
  • Все мутации хранилища версионированы и координируются через последовательную очередь в background
  • Изменён порядок эвристики для дубликатов — статус same-match-different-clip заменён на new-clip
  • Авто-применение предыдущих вердиктов теперь только для exact-duplicate
  • Панель деталей клипа показывает дату матча и статус дедупликации для всех состояний
  • Импорт истории валидирует размер файла (лимит 10 MiB), добавлено подтверждение при очистке
  • Timer hijacker: добавлен markPlayerReplacement(), singleton, кэширование, откат при ошибке
  • Убрана привязка к конкретным значениям timeout — фильтрация по содержимому функции
  • Проверки isActive() после каждой асинхронной операции — защита от race condition
  • try/catch вокруг runtime.start() — при ошибке старта вызывается dispose()
  • Exhaustive-проверка (assertNever) во всех обработчиках событий

📦 Для установки скачайте .zip архив ниже, распакуйте и загрузите в Chrome через "Режим разработчика".
MD5: d993783d5c0a43611a028f576036e533
SHA1: 6fb282eae4a1984e3afd13a5a654647a3c1e3059

image image