You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Race condition: a same-position or backwards seek could leave isSkipping stuck true until manually seeking again.
Race condition: the yt-player-state-change "playing" event could fire while video.paused was still true, so the timeupdate listener would fail to re-attach and segments would stop getting skipped for the rest of the video
Fixed sponsorblock colored overlays sometimes disappearing and not reattaching after exiting a sponsorblock segment
Fixed SponsorBlock colored segment overlay not functioning properly if the video was restarted from the endscreen
ui.js / SponsorBlock-UI.js
Fixed a typo in ui.js - window.sponsorblock?.buildOverlay() -> window.sponsorblock?.drawOverlay()
UI.js, SponsorBlock-UI.js: Load icons locally
Babel
Reverted targets: {} so that it properly reads the .browserslistrc file
index.ts
Fixed resolveCommand allocating an array on every call
adblock.js
Converted RESPONSE_NEEDLE_RE to a simple data.x check as it eliminates a regex scan when the data is already parsed at this point
(Debugging) Moved console log for "Resolving" to debug flag, preventing pile up of console logs
Consolidated all small polyfills into polyfills.js - previously some overlap between userScript.js, utils.js, ui.js, and SponsorBlock.js.
Removed ~350 lines of dead and duplicated code. Shared helpers for element lookups, caching and polyfills now live in one place instead of being reimplemented per file
SponsorBlock
Moved sponsorblock colored segment overlays to a sibling of the progress bar, preventing the app from constantly removing the css rules and redrawing
json-stringify.js
Use a breadth-first search with max depth of 6
Remove deep cloning (structuredClone) in favor of Boolean mutation (NoAd false to true)
Remove fallback clone method which can corrupt non-serializable data. New version operates on the original object itself, so it doesn't require a clone
Optimizations
SponsorBlock.js
Reduced MutationObserver coverage. Replaced the single attributes + subtree: true observer with two narrower observers: a childList-only subtree observer (detects the progress bar being destroyed/recreated) and an attribute observer pinned directly to the tracked bar element. Eliminates per-animation-frame mutation callbacks caused by YouTube's own style writes on playhead/buffer descendants.
Eliminated redundant reflows in overlay positioning (_syncOverlayPosition) when nothing changed.
Build segment description strings (toFixed) only when a skipchain is identified instead of anticipating the next skip to be a chainskip (also on every seeked event).
SponsorBlock binds to the video as soon as it appears instead of polling for it, so segments are ready sooner
Compile constant arrays for 'categories' and 'actionTypes' once globally instead of on every video load
Convert div.style.backgroundColor, div.style.width, div.style.top to div.style.cssText
executeChainSkip: break loop whenever we find the next segment past the current time instead of looping through the entire array
Return YouTube Dislike
Return Dislike no longer polls in the background for the entire video. It now checks for ~10 seconds after load and when you interact with the panel, then goes idle - noticeably less CPU during playback on older TVs
Shorts Screensaver
Fixed a slow memory leak in the Shorts screensaver keep-alive that grew for as long as Shorts stayed open
ui.js
Shortcut buttons respond faster - a redundant full-page element search was running on every keypress
Refactor play/pause logic to eliminate unnecessary code execution
Event hander: move input/text area fast-fail check towards the top of the function to eliminate unnecessary code from running
Skip Chapter: Eliminate double looping of chapter calculation
Toggle comments: Replace || operator with a comma to do one query selector DOM pass instead of two
Eliminate redundant traversals in green button menu logic
Added
buffer-limit.js
Testing fix for #157 where memory on older TVs is very scarce
Added buffer-limit.js to src/hooks
Caps video buffer playback to 30 seconds on webOS 3 and webOS 4 by trimming playback range behind playhead
Omitted buffer-limit.js from modern build
Thumbnail Quality
Added support for Max Thumbnail Quality on search pages