github igrigorik/videospeed v0.10.2

13 hours ago

What's Changed

Keyboard shortcuts now work with virtual input tools (wtype, AutoHotkey) and non-QWERTY layouts. The speed state machine was overhauled: per-site speed rules now always win on fresh page load (global remembered speed no longer leaks across sites), the Reset key properly sticks on sites with custom speed rules, and lifecycle events like tab backgrounding can no longer corrupt your remembered speed. The controller visibility system was rewritten so "hide by default" is a hard preference that never flashes, while normal mode correctly follows YouTube's autohide and flashes on speed changes. Saving options no longer reinitializes every open tab. CSS positioning on YouTube was fixed for the paid promotion overlay, and a performance regression on Gemini (caused by style attribute selectors forcing global invalidation) was resolved. x.com is no longer blocked by default.


  • fix(css): handle both controller insertion points on YouTube (fe003f9)
  • fix(speed): null semantics for lastSpeed, per-site rules win on load (12a4fcd)
  • fix: lifecycle restore must not corrupt remembered speed (#1494) (15d575c)
  • fix(bridge): scope lifecycle events to popup toggle (0761e06)
  • fix(visibility): rewrite flash guards, remove autohide override (d96ea5a)
  • fix(youtube): prevent player crash (04232b1)
  • fix(css): sibling-aware controller positioning, strip dead domain rules (8305f56)
  • fix(css): separate default/custom CSS, fix Gemini (054b4a0)
  • fix: stop swallowing ratechange events in passive observer paths (f876652)
  • remove migration warning (f338993)
  • fix(keyboard): restore event.code matching, fix layout display with getLayoutMap() (6762e2e)
  • remove x.com from default blocked sites (a6630cb)
  • fix: ignore legacy blacklist when siteRules exists (daf53da)

Don't miss a new videospeed release

NewReleases is sending notifications on new releases.