| English | Русский |
Browser extension (Chrome MV3 + Firefox MV3) that adds an always-visible row of speed buttons, a fine-grained slider, and customizable keyboard shortcuts to the HDRezka video player.
Bilingual interface (English / Russian). No ads, no telemetry.
Ctrl+C +0.1 / Ctrl+V −0.1). Supports
multiple combos per action (keyboard + remote).hdrezka.ag, rezka.ag,
hdrezka.me, hdrezka.co, hdrezka.website, hdrezka.cm,
hdrezka-home.tv, rezkify.com, rezkery.com, kinopub.me,
standby-rezka.tv.When HDRezka ships a layout change, the panel recovers automatically through a five-strategy discovery chain (cached selector → exact match → substring match → walk up from the video element → geometric heuristic). A built-in watchdog detects broken state, purges bad cache entries, and re-attaches the panel. Plyr’s playback rate persistence is intercepted so the player can’t race the extension’s restore on every episode change.
browser.storage.local.data_collection_permissions disclosure: none.See PRIVACY.md.
Manual install from a build (Chrome, until the CWS listing is approved):
git clone https://github.com/danscMax/HDRezkaSpeeds.git
cd HDRezkaSpeeds
npm install
npm run build # → .output/chrome-mv3/
npm run build:firefox # → .output/firefox-mv3/
Then in Chrome → chrome://extensions → enable Developer mode → “Load
unpacked” → point at .output/chrome-mv3/. Firefox → about:debugging
→ “This Firefox” → “Load Temporary Add-on…” → pick
.output/firefox-mv3/manifest.json.
npm run dev # Chrome MV3 with hot reload
npm run dev:firefox # Firefox MV3 with hot reload
npm run typecheck # tsc --noEmit
npm run test # vitest unit tests
npm run test:smoke # Playwright extension smoke (needs `npx wxt build` first)
This project shares most of src/ with the sibling
VideoSpeeds extension
(YouTube + RuTube) by copy-paste. Before each release:
npm run drift — compares the shared core against the sibling
checkout (../VideoSpeeds by default) and lists drifted files.discovery/, storage/, speed/,
health/, ui/, i18n/ framework) to the twin unless site-specific.npm run typecheck && npm test in BOTH repos.src/sites/ — HDRezka site bootstrap, Plyr localStorage patch, URL
allow-list (/films/*.html, /series/*.html, etc.).src/discovery/ — multi-strategy DOM resolver for the player and
info containers.src/ui/ — panel, slider, settings modal, theme detection.src/storage/ — settings + speed stores backed by
browser.storage.local.src/health/ — watchdog + structured diagnostic report.src/i18n/ — bilingual dictionary (EN/RU).src/entrypoints/ — content script, background SW, popup, welcome page.tests/store-screenshots/ — Playwright script that renders the
store-listing screenshots into dist-store-assets/screenshots/.VideoSpeeds — the same
controller for YouTube + RuTube. Two extensions are kept separate
so each can declare narrow host_permissions in its manifest, which
makes Chrome Web Store and AMO review faster.
GPL-3.0-or-later. See LICENSE.
| English | Русский ↑ к началу |
Расширение для браузера (Chrome MV3 + Firefox MV3), которое добавляет всегда видимую панель кнопок скорости, точный ползунок и настраиваемые горячие клавиши в плеер HDRezka.
Двуязычный интерфейс (English / Русский). Без рекламы, без телеметрии.
Ctrl+C +0.1 /
Ctrl+V −0.1). Можно назначить несколько комбинаций на одно
действие (клавиатура + пульт).hdrezka.ag,
rezka.ag, hdrezka.me, hdrezka.co, hdrezka.website,
hdrezka.cm, hdrezka-home.tv, rezkify.com, rezkery.com,
kinopub.me, standby-rezka.tv.Когда HDRezka меняет вёрстку, панель восстанавливается автоматически
через цепочку из пяти стратегий поиска (кеш → точное совпадение →
подстрока → подъём от <video> → геометрическая эвристика).
Встроенный watchdog обнаруживает поломки, очищает плохой кеш и
переустанавливает панель. Сохранение скорости Plyr перехватывается,
поэтому плеер не сбрасывает выбранную скорость на каждой смене
серии.
browser.storage.local.data_collection_permissions: none.См. PRIVACY.md.
Ручная установка из исходников (для Chrome — пока листинг не одобрен):
git clone https://github.com/danscMax/HDRezkaSpeeds.git
cd HDRezkaSpeeds
npm install
npm run build # → .output/chrome-mv3/
npm run build:firefox # → .output/firefox-mv3/
Затем в Chrome → chrome://extensions → включить «Режим
разработчика» → «Загрузить распакованное расширение» → указать на
.output/chrome-mv3/. В Firefox → about:debugging → «Этот
Firefox» → «Загрузить временное дополнение…» → выбрать
.output/firefox-mv3/manifest.json.
npm run dev # Chrome MV3 с горячей перезагрузкой
npm run dev:firefox # Firefox MV3 с горячей перезагрузкой
npm run typecheck # tsc --noEmit
npm run test # vitest unit-тесты
src/sites/ — bootstrap для HDRezka, патч localStorage Plyr, allow-
list URL (/films/*.html, /series/*.html и т.д.).src/discovery/ — многострочный resolver DOM-элементов плеера и
info-блоков.src/ui/ — панель, ползунок, меню настроек, детекция темы.src/storage/ — хранилища настроек и скорости поверх
browser.storage.local.src/health/ — watchdog + структурированный отчёт диагностики.src/i18n/ — двуязычный словарь (EN/RU).src/entrypoints/ — content script, background SW, popup, welcome.tests/store-screenshots/ — Playwright-скрипт, который генерирует
скриншоты для листингов в dist-store-assets/screenshots/.VideoSpeeds — тот же
контроллер для YouTube + RuTube. Два расширения сделаны
отдельно, чтобы каждое могло объявлять узкие host_permissions в
манифесте — это ускоряет ревью в Chrome Web Store и AMO.
GPL-3.0-or-later. См. LICENSE.