thanks to the new contributors @michellegalindo @mvanhorn @kkk67-hub @HAKingDesign @w401002030 @nhatlong90 @hkzo @KunalTiwari-git @ayushi-wq @mmmm1402 @Jeetgajeraa @kalinco-glitch @pbcodesC @GHX5T-SOL @emulatronicGIT @Gilmoursa @Fileover @TrivCodez @jiangyj545 @puneetdixit200 @SaishWadnere @Pallavi-p-h @Muzzu8421 @amanbuilds-hub @ylzn567 @LearnAISubham7 @JoacoEsposito20 @titanniya542-spec @RegondaChandan @ImprovedTube2 @Antoniodeoliveirasegura @RadhaDintyala @lkuechler @Akanksha-H @neelavradutta @Vrindakr3300 @mirrana @andrianbalanesq @harshjainnn @chungus-big @viralion @Stiven-Gjekaj @communism420 @sakurakun999 @flujopy2025-beep @RaghavShubham @rayulumukku @Monu01123 @jamalkamaladdin @anupamme @imparable2022 @yu2971512385-ui @Masood-hue @akshar27 @DivyaRaval1909 @abhijeetnardele24-hash @Arslan-TR @aashish254 @pushkarsingh32 @titas-mahato @felipetmasiero @X0T1CK-LY @tejasvasingh2004 @wolfdate25 @jonasschulze-dev @waterWang @8rulerstar @tisankanj @CJWmort @Ishaan488 @onuracar-dev @00200200
What's Changed
- fix: persist playlist reversed state across navigation (#1836) by @li224242 in #3643
- Fix: prevent scroll propagation on playback speed button #3654 by @nguyentansinh123 in #3655
- fix(export): Safari export settings compatibility by @quantbitrealmSimon in #3652
- Add remove_subscriptions_most_relevant toggle by @Moglum in #3665
- Fix Next/Previous Video shortcuts breaking out of playlists by @LuciferDono in #3679
- Added feature to mute thumbnil previews by @pswitchy in #3681
- fix: update Join button CSS selectors for YouTube's new DOM by @majiayu000 in #3673
- fix: disable thumbnail hover playback on sidebar related videos by @majiayu000 in #3672
- fix: prevent time display hiding when remaining duration is enabled by @majiayu000 in #3671
- Fix: Resolves Firefox thumbnail not loading issue by @AryaXDG in #3691
- Fix portuguese translations by @drc-exe in #3698
- Add list layout option for Subscriptions page by @Harshil7875 in #3707
- Fix custom mini player covered by page content (z-index) by @Greal-dev in #3719
- Update messages.json for TH locale by @101plusmarco in #3715
- Bump flatted from 3.3.3 to 3.4.1 by @dependabot[bot] in #3703
- Fix YouTube Light and Dark theme switching in Themes panel Fix #3704 by @Saurabh-2607 in #3708
- feat(sidebar): add toggle to disable sidebar independent scroll by @Bingtagui404 in #3717
- Fix playlist up next autoplay by @HunterAP23 in #3721
- Bump flatted from 3.4.1 to 3.4.2 by @dependabot[bot] in #3720
- Bump minimatch from 3.1.2 to 3.1.5 by @dependabot[bot] in #3650
- Bump picomatch from 2.3.1 to 2.3.2 by @dependabot[bot] in #3732
- Fix play not working first time on autoplayDisabled by @dimon222 in #3730
- fix: YouTube playlist reverse reset on next page by @rajanarahul93 in #3742
- tidy #3551 ( @Abhiraj ) by @rajanarahul93 in #3743
- feat: fix and improve auto-selection for default dubbed audio language by @Pieko16 in #3748
- Fix #3745: autodubbing when miniplayer by @xingzihai in #3749
- Fix #3745: autodubbing when miniplayer by @xingzihai in #3750
- feat: add preferred dubbing language auto-selection by @wiliyam in #3752
- fix(locale): add English name for preferredDubbingLanguage in _locales/en/messages.json by @wiliyam in #3755
- Fix: Pause video immediately instead of after setTimeout delay by @TeapoyY in #3757
- fix: prevent autoplay playback before play() is called by @TeapoyY in #3758
- Fix custom theme not applying after YouTube CSS changes by @veerlakshay in #3791
- fix: add .editorconfig for consistent code style by @karthikeyansundaram2 in #3786
- fix: prevent thumbnail from zooming and cropping in theater mode by @sanjay-1458 in #3793
- fix: Safari page-world injection on YouTube by @alextyang in #3774
- fix: sync PT-BR localization with EN source by @michellegalindo in #3798
- Bump brace-expansion from 1.1.12 to 1.1.14 by @dependabot[bot] in #3796
- fix(player): skip redundant seekTo(0) when video is already at start by @mvanhorn in #3807
- Add Watch Later button option to thumbnails by @kkk67-hub in #3858
- Feat: Option to add a Grayscale filter to Thumbnails by @HAKingDesign in #3857
- Add squared thumbnails option by @w401002030 in #3855
- fix: resolve popup preview video links by @nhatlong90 in #3852
- fix: Correct metadata parsing for forced playback speed by @hkzo in #3836
- Fix: Add smart hardware check and network probe for HD thumbnails by @AryaXDG in #3770
- fix: Prevent forced playback speed interval leak by @hkzo in #3837
- fix: Prevent forced playback speed exception when DATA.title is false by @hkzo in #3835
- Feat/shorts progress bar color by @KunalTiwari-git in #3834
- fix: remove 1x speed button when disabling feature by @ayushi-wq in #3832
- Add squared thumbnails option by @mmmm1402 in #3850
- fix: Livechat visibility when foreced-theater mode is on by @Jeetgajeraa in #3843
- fix(player): remove 1x speed button when speed buttons are disabled by @Jeetgajeraa in #3831
- Migrate legacy classic description settings by @kalinco-glitch in #3871
- Hide sign out menu item using SVG selector by @pbcodesC in #3788
- fix: 💡A way to fix the most recent UI change by @karthikeyansundaram2 in #3873
- fix: hide member-only channel videos with current badges by @GHX5T-SOL in #3863
- fix: 🐞shots up next autoplay didn't works by @karthikeyansundaram2 in #3874
- Add subscription live stream filter by @emulatronicGIT in #3876
- feat: include channel name in screenshot filename by @Gilmoursa in #3878
- fix: correct Portuguese translations for push/pull sync settings by @Fileover in #3897
- Fix themes not covering entire page #3888 by @TrivCodez in #3891
- fix: 💡 by @karthikeyansundaram2 in #3877
- feat: restore CC (subtitles) indicator on channel Videos page (fixes #1522) by @jiangyj545 in #3902
- fix: keep transcript visible when hiding sidebar (#1530) by @jiangyj545 in #3884
- fix: keep transcript visible when hiding sidebar by @nhatlong90 in #3851
- Keep comments sidebar applied after refresh by @puneetdixit200 in #3881
- Fix: Restore black screen when video ends and endscreen is hidden (#3838) by @SaishWadnere in #3841
- fix: update thumbnail dot selectors to target button-view-model by @Pallavi-p-h in #3845
- Fix cinema mode overlay blocking video screen (#3765) & Playlist Reverse by @suryaprakash0010 in #3766
- fix: resolve black font color on Show more/less in YouTube Dark theme by @Muzzu8421 in #3833
- fix: use video size instead of player size to calculate new video siz… by @Hypragon in #3915
- Fix visibility of extra buttons in YouTube dark theme: #issue : 3907 by @amanbuilds-hub in #3910
- Fix: Add Watch Later button to more thumbnails (#3906) by @ylzn567 in #3917
- feat: add separate quality setting for playlist videos (#3924) by @LearnAISubham7 in #3928
- feat: automatically resume video when internet connection is restored… by @JoacoEsposito20 in #3923
- Fix forced Theater Mode after refresh by @titanniya542-spec in #3937
- fix: show "Comments are turned off." message when comments are hidden by @LearnAISubham7 in #3935
- fix: hide only "Most relevant" section, not Shorts on subscriptions page (#3927) by @LearnAISubham7 in #3931
- fix: resolve comment sidebar scroll freezing by @RegondaChandan in #3921
- Revert "fix: Livechat visibility when foreced-theater mode is on " by @ImprovedTube2 in #3939
- feat: hide auto-dubbed menu items when "Disable auto dubbing" is enabled by @LearnAISubham7 in #3944
- fix: place bn_BD locale under messages.json by @alextyang in #3990
- fix: prepare Safari App Store packaging by @alextyang in #3989
- fix: avoid Safari DOM fallback for page-world injection by @alextyang in #3991
- fix: stabilize day-of-week date tests by @alextyang in #3994
- fix: insert below-player buttons after subscribe renderer loads by @alextyang in #3992
- fix: recover keyboard shortcuts after a missed keyup (#3986) by @Antoniodeoliveirasegura in #3988
- feat: add dynamic timestamp to exported settings filename by @RadhaDintyala in #3996
- fix list layout on Subscriptions page by @lkuechler in #3971
- feat: add option to hide Top live games section on home page by @Akanksha-H in #3998
- Feat/auto accepting watching by @neelavradutta in #3999
- Fix #4016 - Shorts redirect now works on every navigation by @Vrindakr3300 in #4027
- fix: resolve player initialization issues with fallback observer by @hkzo in #4018
- Fix
TypeErrorwhen creating Fit-to-Window button multiple times by @hkzo in #4118 - Proposed fix for issue #1971 by @mirrana in #4117
- fix(test): align hide-sidebar transcript test with current CSS by @hkzo in #4029
- Fix #4020: Accordions for side panels by @andrianbalanesq in #4105
- Revert "Fix #4016 - Shorts redirect now works on every navigation" by @ImprovedTube2 in #4120
- Move contextMenus.onClicked listener out of updateContextMenu to the … by @harshjainnn in #4125
- fix: remove invalid background.scripts property from manifest.json by @harshjainnn in #4122
- fix: prevent tooltips from overflowing viewport by @hkzo in #4181
- Update Russian translation by @chungus-big in #4186
- fix(player): default Smart Speed to minimal speed when no heatmap data available (#3962) by @viralion in #4235
- fix: playlist quick delete failing silently after YouTube API change by @Stiven-Gjekaj in #4230
- fix: remove dead duplicate playerPlaybackSpeedButton in player.js by @mvanhorn in #3824
- Fix auto video recovery and auto-dubbed audio track handling by @communism420 in #4179
- fix: refine Japanese localization by @sakurakun999 in #4270
- fix: remove rounded corners for Shorts thumbnails and video previews by @chungus-big in #4258
- feat: add Volume Boost player button (addresses #4146) by @flujopy2025-beep in #4178
- style: remove trailing whitespace across codebase by @chungus-big in #4286
- fix(comments): let clicks through the thread hitbox when avatars are hidden by @RaghavShubham in #4292
- fix: remove duplicate playback speed button code and settings by @hkzo in #4166
- fix: resolve subtitles not enabled until reload race condition (#4192) by @harshjainnn in #4193
- fix: verify native click before marking Watch Later button as added by @harshjainnn in #4203
- fix(player): retry auto-fullscreen on play for Firefox by @neelavradutta in #4207
- fix: show player tooltips above video by @rayulumukku in #4295
- Fix: Show playback speed slider in settings menu by @hkzo in #4301
- feat: Support playback speed and volume shortcuts for shorts by @hkzo in #4312
- feat(player): add real-time video filters with presets and quick-toggle button (#4071) by @Monu01123 in #4112
- feat(locale): add Azerbaijani (az) translation by @jamalkamaladdin in #4323
- chore(locales): prune obsolete keys, remove duplicate in ja, and trim trailing whitespace by @chungus-big in #4316
- fix: upgrade brace-expansion to patched version (CVE-2026-13149) by @anupamme in #4344
- i18n: replace hard-coded menu labels with locale keys by @imparable2022 in #4336
- fix(livechat): collapse theatre full-bleed chat container when live chat is hidden (#3664) by @yu2971512385-ui in #4267
- Add 'about' message in ur_PK/messages.json by @Masood-hue in #4351
- Link Rate me to the Firefox listing on Firefox by @jamalkamaladdin in #4341
- fix: Improve music keyword detection for playback speed by @hkzo in #4352
- feat: overhaul Smart Speed engine with SponsorBlock, captions, and modular architecture (#4147) by @AryaXDG in #4355
- Fix Cinema Mode full-page blackout and Reverse Playlist not applying after refresh by @akshar27 in #4354
- Fix locales location error for #4351 by @dodieboy in #4359
- Fix: Play Video From Beginning doesn't override YouTube's async resume seek by @akshar27 in #4350
- Fix: clamp Smart Speed playback rate to 16x in _setRate by @AryaXDG in #4371
- feat: combine playback speed buttons A and B by @hkzo in #4369
- Remove duplicate messages in en locale by @hkzo in #4372
- fix: restore repeat button when player controls arrive late by @mvanhorn in #4367
- fix: collapse live chat shell instead of leaving a blank column by @mvanhorn in #4380
- fix: video filters button setting hidden when Screenshot is disabled by @hkzo in #4373
- fix: use a general Japanese label for playback speed by @hkzo in #4382
- Fix: resolve Video Filters CSP TrustedHTML violation and toggle deactivation by @DivyaRaval1909 in #4376
- Fix: avoid innerHTML to prevent CSP violations in Video Filters by @abhijeetnardele24-hash in #4375
- build: strip background.scripts for Chromium Manifest V3 support by @hkzo in #4384
- feat: emit an init_completed event when initialization is done by @Arslan-TR in #4385
- feat(player): add option to block the OPUS audio codec (#4363) by @aashish254 in #4364
- Add a Download Transcript button (.txt with timestamps) by @pushkarsingh32 in #4405
- Add per-channel permanent playback speed feature by @suryaprakash0010 in #4404
- fix(menu): include subheading names and sections in search (#4413) by @titas-mahato in #4414
- fix(transcript): support YouTube's new transcript panel in copy button by @felipetmasiero in #4396
- cinema-mode-bug by @X0T1CK-LY in #4387
- fix: retry subtitles language and auto-dubbing until the player is ready by @tejasvasingh2004 in #4415
- feat(comments): add option to hide images and GIFs in comments by @felipetmasiero in #4403
- feat: show HDR badge next to video title by @wolfdate25 in #4412
- fix(blocklist): support YouTube's new lockup thumbnails by @felipetmasiero in #4402
- fix: open Player > "Hide player controls bar buttons" sub-section (#4215) by @karthikeyansundaram2 in #4397
- fix(blocklist): guard against missing thumbnail for video previews by @felipetmasiero in #4394
- fix(appearance): stop like count animation instead of hiding it by @felipetmasiero in #4401
- feat(blocklist): add option to hide blocked videos completely by @felipetmasiero in #4392
- fix(blocklist): fall back to page header for channel title by @felipetmasiero in #4393
- i18n: complete missing German translations + remove duplicate English key by @jonasschulze-dev in #4345
- fix: prevent large playlist handler from interfering with YouTube queue autoplay (Fixes #4228) by @waterWang in #4263
- fix(player): reset playback speed to 1x at the live head by @8rulerstar in #4347
- fix(general): restore classic thumbnail metadata under renamed YouTube classes by @tisankanj in #4303
- fix: increase Key Scene button tooltip z-index to prevent overlap with video description (#4138) by @waterWang in #4256
- fix: prevent toggle switches from shrinking when set to 'on' (Fixes #4216) by @waterWang in #4253
- fix: include category chip bar in cursorLighting dimming rules (Fixes #4240) by @waterWang in #4255
- fix: apply thumbnail size setting to playlist video thumbnails in search results (Fixes #4248) [fj4WqyCCw3C5ShR1RfB7MoBPTpkRrBFYP1uT35g3MvT] by @waterWang in #4251
- fix: prevent #columns overflow:hidden from clipping playlist content when comments-sidebar is active (Fixes #4237) by @waterWang in #4252
- Show watched sections of a video on the seek bar by @Stiven-Gjekaj in #4262
- Fix "bulk delete videos by watch progress" feature by @CJWmort in #4320
- feat: add option to blur thumbnails by @Ishaan488 in #4218
- Fix: Ask (Gemini) panel placement with Comments in Sidebar enabled by @Ishaan488 in #4214
- fix(appearance): hdrBadge honors hdr_badge when invoked directly by @onuracar-dev in #4420
- Fix HDR badge appearing when disabled by @00200200 in #4419
- fix: add missing break in playerCinemaModeButton case in core.js by @hkzo in #4417
Full Changelog: 4.2026...v4.2400