Donations are appreciated. There is now a PayPal option.
Changes from 2.8.1 to 2.8.2:
Updates:
Updated LAV Filters to version 0.83-5-gd65a9
Updated MPC Video Renderer to version 0.10.8.2587
Changes/additions:
Added ReplayGain support. Options can be found in audio switcher.
Improvements for exclusive mode seekbar when using MPCVR.
Improvements for opening a selection of files from Explorer. Now supports DropTarget interface.
Playback rate can now be shown in statusbar for audio files.
Keyboard shortcuts can now be edited without a mouse. Press Space or Enter to start editing a selected command. Press Enter or Tab to apply a pressed key combination. Enter/Tab can only be set as hotkey when combined with Alt/Ctrl/Shift.
Improvements for ATSC/DVB channel scanning.
Fixes:
Lots of small fixes and improvements.
Full changelog
Full list of all changes since start of this project.
OpenSubtitles download error 406
Subtitle downloads from OpenSubtitles may fail depending on time of day. This is due to our daily download quota being exceeded. Current amount of donations is barely enough to pay for the existing quota. So it is unlikely that quota can be increased and situation will get worse over time.
If you create an OpenSubtitles account and configure it in MPC-HC settings then you may be able to bypass the quota.
Options > Subtitles > Misc > Right-click on OpenSubtitles.com > Setup > Fill in username/password
Overview of features
A lot of people seem to be unaware of some of the awesome features that have been added to MPC-HC in the past years. Here is a list of useful options and features that everyone should know about:
Play HDR video
This requires using either MPC Video Renderer (MPCVR) or madVR.
These renderers can be selected here:
Options > Playback > Output
With other video renderers, the colors will be wrong!
MPCVR is included and is the recommended and default renderer for modern systems. MadVR needs to be installed separately. MPCVR also supports Dolby Vision. MadVR does not.
For optimal performance you should change the hardware decoder to D3D11 in LAV Video Decoder settings when using MPCVR on Windows 10/11, because this renderer uses DirectX11.
The installer of MPC-HC is very basic (and that will not change).
I therefore recommend using K-Lite Codec Pack. That includes MPC-HC and other essential components. It has a very advanced installation that can automatically create file associations, and helps you with easy configuration of important MPC-HC settings, such as preferred subtitle language(s). It also does automatic configuration of renderer and hardware decoding, for best performance and HDR support.
The Standard version should be sufficient for most people. Use Full version of you like to use MadVR.
Modern GUI Theme (Dark or Light) or the old classic theme
Options > Player > User Interface
It is also possible to change the height of the seekbar and size of the toolbar buttons.
Plus there are options to show audio/video details in the statusbar, such as codec and resolution.
Customizable toolbar buttons
You can add/remove/re-order the player buttons.
There are also several different toolbar designs to choose from.
Video preview on the seekbar
Options > Player > User Interface > Hover type
Ability to search for subtitles
Press D for manual search.
Or enable automatic search in: Options > Subtitles > Misc
Adjust playback speed
Menu > Play > Playback rate
The buttons in the player that control playback rate take a 2x step by default. This can be customized to smaller values (like 10%):
Options > Playback > Speed step
If you have 1000 IQ you can even do smart stuff like setting playback rate change to mouse right-click + scrollwheel:
Options > Player > Mouse
Adjusting playback speed works best with MPC Audio Renderer or SaneAR. These audio renderers have automatic pitch correction, while DirectSound does not.
Options > Playback > Output > Audio Renderer
MPC-HC can remember recently played files and also their playback position, so you can resume playback from when you left
Options > Player > History
You can quickly seek through a video with Ctrl + Mouse Scrollwheel.
You can jump to next/previous file in a folder by pressing PageUp/PageDown.
You can right-click on the framestep button to step backwards. Some other buttons also have right-click actions, such as closing file by right-clicking stop.
You can perform automatic actions at end of file. For example to go to next file or close player.
Options > Playback > After Playback (permanent setting)
Menu > Play > After Playback (for current file only)
A-B repeat
You can loop a segment of a video. Press [ and ] to set start and stop markers.
You can rotate/flip/mirror/stretch/zoom the video
Menu > View > Pan&Scan
This is also easily done with hotkeys (see below).
There are lots of keyboard hotkeys and mouse actions to control the player. They can be customized as well.
Options > Player > Keys
Tip: there is a search box above the table.
You can hide GUI elements even in windowed mode
Options > User Interface > Hide Windowed Controls
That hides most GUI elements during playback. To show them simply move your mouse to bottom of window.
You can even hide everything except the video by pressing 1 (restore normal view with 3).
You can seek inside the playlist by simply typing text (when playlist window has the mouse focus).
MPC-HC also supports Blu-ray playback.
Only limitation is that you need to use a decrypting tool.
And it also does not support Blu-ray menus, but you can use the navigate menu in the player to select the content to play.
You can stream videos directly from Youtube and many other video websites
Put yt-dlp.exe in the MPC-HC installation folder.
Then you can open website URLs in the player: Menu > File > Open File/URL
You can even download those videos: Menu > File > Save a copy
Tip: to be able to download in best quality with yt-dlp, it is recommended to also put ffmpeg.exe in the MPC-HC folder.
Several YDL configuration options are found here: Options > Advanced
This includes an option to specify the location of yt-dlp.exe in case you don't want to put it in MPC-HC folder.
Note 1: You also need to install Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)
Note 2: For optimal Youtube support you may also need to put deno.exe in same folder as yt-dlp.
Note 3: yt-dlp nightly build (very latest version made daily)
Note 4: yt-dlp windows7 compatible build
Besides all these (new) features, there have also been many bugfixes and internal improvements in the player in the past years that give better performance and stability. It also has updated internal codecs. Support was added for CUE sheets, WebVTT subtitles, etc.
You should really take a few minutes to look through all the options pages if you are a new user or if you are upgrading from a very old version. Don't forget the advanced options page.
The DevTools team has made it possible to inspect and edit stylesheets from within the JavaScript Debugger pane.
The feature can also be enabled from the experimental section in the devtools settings panel, or by setting devtools.debugger.features.stylesheets-in-debugger to true in about:config.
Restyled the Extensions panel empty states to match the Figma specs, including a new illustration for the disabled add-ons and private browsing states β Bug 2058450
Fixed a jiggle effect when scrolling through theme previews in about:addons β Bug 2059917
Added spacing between message bars and their sibling elements in the about:addons page (empty state promo, theme appearance mode control) β Bug 2066436
Set focus on the extension permissions prompt dialog so keyboard users can reach it β Bug 2059855
Removed activeAddons/activeTheme/activeGMPlugins from the legacy telemetry environment, now collected only through Glean β Bug 2055613
DevTools
Nicolas Chevobbe [:nchevobbe] fixed an issue in the inspector to stop showing the HTML editor for nodes (e.g text or whitespace nodes) which should not be editable when F2 is pressed. (#2064213)
Sebastian Zartner [:sebo] updated the documentation for the Rules view to include details around theΒ @media emulation panel added some weeks back. (#2063851)
Chris Van Linden fixed an styling issue in debugger editor file search bar where the button hover background overlapped the focus outline (#2063466)
Nicolas Chevobbe [:nchevobbe]Β fixed an a11y issue where the keyboard focused sliders in the fonts panel did not have the correct contrast against the background. This allows keyboard users to easily see which control currently has focus. (#2062576)
There is no automation for the core type updates yet.
However, several areas have been working on support, hence the promotion to tier 2.
Until we get the automation in place, we will not be ready for wider roll-out, as it will be more likely that core patches will break the TypeScript reporting.
New Tab Page
Developer experience improvement: itβs no longer necessary to create the WebPack bundles when updating New Tab JSX / SCSS files. This occurs automatically during the ./mach build [faster] step. Thanks to Nathan Barrett for his work there!
Mike Kaply made it so that New Tab Settings honor Locked Preferences in policy by making the New Tab settings UI read and respect policy-locked preferences and disabling corresponding controls so managed/enterprise users cannot override locked prefs from the settings surface.
Nina Pypchenko [:nina-py] added a small size to the Stocks New Tab widget, introducing a compact 1Γ1 Stocks tile in the Firefox New Tab Page layout so users on narrow windows or dense NTP configurations can keep Stocks visible without consuming medium/large slots.
Nina Pypchenko [:nina-py] added ticker search to find and add individual stocks, adding a search/lookup UI and add flow that calls the ticker lookup API and updates widget state/local storage so users can search, add, and immediately see new symbols on their New Tab Page.
Bryan Olsson added a plural selector to the Fluent string newtab-stocks-watchlist-full in the New Tab Page localization so the Stocks widget shows correct singular/plural wording for watchlist sizes across locales, fixing grammar that could confuse users when their watchlist count changes and touching the NTP stocks string bundle used by all localized builds.
Weβve also started rolling out an experimental Privacy widget
Reem Hamoui changed the Privacy widget copy color to grey in the New Tab Page so the βNightly blocks trackers as you browse. You will see them here.β text displays with correct muted contrast (2063205).
Reem Hamoui restored the ETP OFF state rendering in the New Tab Page privacy widget so the widget shows the actual ETP OFF status instead of misleading βblocks trackersβ copy for users who disable ETP (2063525).
Reem Hamoui applied UX fixes to the New Tab Page privacy widget to correct alignment, labels, and click-targets so users see and interact with the widget reliably and accessibility attributes behave as expected.
Weβve also started tinkering with some new layout variants
Hereβs one such layout (widget column on left):
Irene Ni updated SectionsLayoutFeedβs 7-double-row-2-ad fallback to match Remote Settings so feed layout and ad fallback counts align with remote config, reducing layout mismatches and incorrect ad placements in feeds using the fallback (2063684).
Irene Ni implemented a carousel card type for the New Tab feed, adding slide-based card rendering and navigation hooks so users get swipeable/rotating cards in the carousel component.
Dre cleaned up orphaned wallpapers in the wallpaper service to remove broken entries and reduce wasted storage so users no longer see missing background tiles.
Nina Pypchenko [:nina-py] fixed wallpaper attribution rendering in the Nova New Tab flow by adjusting the Nova-specific NTP componentβs conditional rendering (CSS/JS) so the attribution node is not skipped when the nova feature is enabled, restoring photographer/credit metadata on New Tab pages for users on Nova-enabled desktop builds and preventing missing attribution UX.
Weβre in early days in building out the infrastructure for a Recent Searches widget
Nina Pypchenko [:nina-py] added a blank widget scaffold to the New Tab Page widget registry for the Search team (bug 2065011), creating a no-op/placeholder widget registration hook so the Search team can iterate on experiments without changing current NTP visuals β no immediate visible impact for end-users until the widget is populated.
Drew fixed alignment of the explanation text on various result types. Bug 2063460
Drew enabled more providers (like Wikipedia) for DE, FR, IT regions. Bug 2064557
Drew updated important dates suggestions for 2027 in DE, FR, GB, IT and US regions. Bug 2064437
Dao fixed a regression with the result menu being empty on certain results. Bug 2066758
Adaptive autofill
James is analyzing results of experiments and working with Product to let the feature ride to Release in the near future.
Quick actions
Dale improved the Open Firefox Labs action. Bug 2063849
Dale improved styling of disabled actions. Bug 2056488
Multi Context Address Bar
Dao and Moritz made great progress with having the urlbar code work in different contexts, including across processes.
Dao migrated some text input context menus (address bar, search bar, Thunderbird compose subject) onto a single shared menu with a new custom-item API, allowing removal of the legacy moz-input-box component.See EditContextMenu for documentation and usage. Bug 2064369.
Dharma started refactoring the urlbar code to use extended classes. Bug 2064728
New tab search bar has been enabled in Nightly! Bug 2062212
We are excited that the 1.61 update for Euro Truck Simulator 2 is now officially released and available on Steam! We hope you will enjoy all the new features, which you can read about in more detail below.
We would like to thank everyone who took part in the open beta phase and reported possible issues or any kind of feedback on our forum, as it helped us fine-tune everything for a smooth transition to the full update!
We'd also like to thank everyone who participated in the 1.61 Experimental Beta, especially those who shared their thoughts on the Multi-Function Display (MFD) and the In-Game Menu. These additions will be introduced in a future update, giving us more time to refine and polish these features and ensure they deliver the best possible experience when they are ready.
Now without further ado, let's take a look at what this update includes!
Proximity Exploration
In the 1.61 update, we are introducing a new feature designed to assist players with exploring the world map and discovering more along their journey. Introducing Proximity Exploration, a new quality-of-life feature that makes map discovery a little more intuitive, while still keeping the enjoyment of exploring the world for yourself.
When enabled, Proximity Exploration automatically reveals a small area around your vehicle as you travel. This means you will no longer need to drive over every tiny section of road to mark it as explored, which should be especially useful for those of you chasing that elusive 100% map discovery! It can also help reveal nearby accessible roads and areas around locations such as rest stops, toll gates, border crossings, gas stations, and other places where multiple road segments may sit closely together.
And don't worry, secret roads will still have secrets to uncover! Proximity Exploration can reveal the first segment of a secret road when you get close enough, giving you a small hint that there might be somewhere new to explore. From there, however, the rest is up to you, as the remaining route will only be discovered by actually driving along it.
Whether you use Proximity Exploration to help hunt down those final percentages or simply make exploring the map a little smoother, the choice is yours! Volvo Special Edition
We are very excited to join Volvo Trucks in the celebrations of their 100th anniversary by welcoming the Volvo FH Series 6 100 Year Edition to Euro Truck Simulator 2.Β
The Volvo FH Series 6 100 Year Edition will bring a new look for both the interior and exterior, reflecting Volvo's century of innovation with driver-centric features. These additions will be reflected in the base game of ETS2 with new accessories and paint jobs available for the Aero XL cabin of the Volvo FH Series 6.
On the exterior, this update introduces two new paint jobs: 100 Year Edition β Night and 100 Year Edition β Day. The two designs feature distinctive dark or light exterior colour striping, complemented by two additional Centennial logos on either side of the truck. You will also be able to choose from two different light boxes: one with the 100 Year logo and another one with the FH16 logo.
We are also adding a brand new interior option featuring black leather door panels with unique stitching, carpets, a rear wall decoration featuring the 100 Year Edition logo, and a decorative dashboard ambient LED lighting available in red or blue colour options.
To complete the interior, you will also have the option to customize it with a range of exclusive accessories. These include a black leather steering wheel and new two-tone seats combining a black leather base with a grey textile upper section and the 100 Year logo.
You can read more about this special edition at our dedicated blogpost! Improved Material System
The Improved Material System significantly improves the lighting and visual quality of vehicle interiors in selected trucks. Its main focus is to enhance how interior materials react to light, which results in a more readable, detailed, and visually pleasing cabin environment.
One of the most significant changes was a redesign of the materials used in vehicle interiors. As a result, it makes differences between materials such as leather, fabric, plastic, and metal far more apparent, even in low-light conditions. The new solution uses multiple variants of dynamic cubemaps, allowing all materials to reflect their surroundings more naturally and respond to ambient light in a more realistic way.
The entire system was designed from the start with the interiors of trucks in both games in mind, so the base games and their existing fleets will gradually benefit from these improvements as well. In this update, we're excited to bring the Improved Material System update to the Volvo FH Series 6, Volvo FH Series 5 and Volvo FH Series 4 alongside the already updated DAF NGD and MAN TG3 TGX models.
With future updates, we will gradually add this technology for other trucks across both games. You can read more about this feature here.
Livestock Trailer Rework
Weβre excited to introduce a complete rework of the Livestock Trailer, which our vehicle team has done so from the ground up.
Inspired by modern European livestock trailers, our vehicle team rebuilt the trailer entirely from scratch, replacing the previous older model with a brand-new one. One of the biggest changes drivers will notice is the removal of the older belly axle variant, which has been replaced with a lowered chassis configuration featuring dual wheels.
For those who own their own Livestock trailers, the updated trailer will offer multiple customization options, including two chassis variants, a Straight 3 Axle and a Lowered 3 Axle configuration. Drivers will also be able to choose between an Aluminium body or a fully paintable body.
A wide range of accessories have also been included to customize your trailer. Weβre also introducing newly configurable paint jobs for owned trailers, allowing you to customize up to four different colour sections across specific parts of the trailer for even greater customization. Freight Market and AI traffic variants have also been reworked based on the new owned trailer model, with company paint jobs completely reworked to better reflect more realistic transport operations.
Weβre excited to begin updating theΒ SchwarzmΓΌller Trailer Pack DLC to better reflect their new modern trailer designs, starting with a complete rework of one of its low loader trailers and accessories. Letβs take a closer look!
Leading this update is the redesigned low loader trailer, which has been rebuilt to closely match SchwarzmΓΌllerβs latest real-world model.
Alongside the trailer itself, its available accessories have also been updated with refreshed designs to better represent the equipment and styling SchwarzmΓΌller offers today. While the available cargo options remain the same, this update marks the beginning of a larger goal for us, to rework the entire SchwarzmΓΌller Trailer Pack.
We look forward to seeing you on the road with this newly updated trailer! You can read more about this update at our dedicated blog.
Map Changes for Coaches With the upcoming Coaches DLC, our map and asset teams have also been making a number of changes across Euro Truck Simulator 2 to prepare the world for passenger transport. The biggest of these can be found in Nuremberg, where we have added a brand-new bus station alongside several remade and newly created landmarks in the surrounding area. Our teams have put a lot of work into bringing this part of the city to life and making sure it is ready to welcome coaches.
We have also updated the bus stations in Karlstad, Aarhus, and Thessaloniki so they are now functional with our upcoming Coaches DLC. We've also made other smaller changes, including updates to navigation, access, and layouts.Β
The coach station at Karlstad has received a brand-new station building, while Thessaloniki now features new signage and other updates. In Heraklion, we have also opened up a previously inaccessible street to make room for the new bus station.
Weβve also made a number of changes to border crossings to ensure they work correctly with coaches. This included introducing vehicle-specific navigation, as well as opening up parts of border areas that were previously inaccessible to players. Border crossings across the map have also received smaller layout adjustments to help coaches follow the correct routes while keeping navigation working as expected.
Alongside these changes, we have made plenty of smaller tweaks to bus stops and their surroundings across the map. While many of these may go unnoticed, they all help make sure the existing world is ready for the arrival of Coaches.
Changelog
Map
Proximity ExplorationΒ
Map changes for the upcoming Coaches DLCΒ
Vehicles
Addition of the Volvo FH Series 6 100 Year Edition
Livestock Trailer ReworkΒ
SchwarzmΓΌller Trailer Pack UpdateΒ
Visual
Improved Material System added for the Volvo FH Series 6, Volvo FH Series 5 and Volvo FH Series 4
Fixed payment errors from non-Zed model providers incorrectly prompting users to upgrade to Zed Pro instead of displaying the original provider error message. (#64354)
Fixed different snippet extensions for the same language cancel each other (#64314)
The Stable channel has been updated to 154.0.8037.44/.45 for Windows. as part of our early stable release to a small percentage of users. A full list of changes in this build is available in thelog.
You can find more details about early Stable releases here.
Interested in switching release channels? Β Find out how here. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.
If your instance has many videos (local or federated) in the database, automatic migrations at next startup can take several minutes to finish. Plan for a short period of downtime during this upgrade
You need to manually execute a migration script after upgrading, while PeerTube is running and the database migration is complete (Migrations finished. New migration version schema: 1125 in PeerTube startup logs):
Comment API change: GET /api/v1/videos/{id}/comment-threads/{threadId} no longer returns the full comment tree
It now returns at most 10 direct replies per comment, down to 5 levels of nesting, by default
Each node in the returned tree now has a totalChildren field: compare it against children.length to know if replies were cut off
To fetch the rest, call the new endpoint: GET /api/v1/videos/{id}/comments/{commentId}/replies
If you're a plugin author: filter:api.video-thread-comments.list.result now sees only the truncated tree. Two new hooks, filter:api.video-comment-replies.list.params / .result, cover the new replies endpoint
v8.3.0-rc.1 introduced a bug in the upgrade script: the database backup step fails, which stops the upgrade. To upgrade from v8.3.0-rc.1 (classic installation):
Replace the upgrade script with the fixed one: cd /var/www/peertube/peertube-latest && sudo -H -u peertube curl -fsSL -o dist/scripts/upgrade.sh https://raw.githubusercontent.com/Chocobozzz/PeerTube/13c16ec0e80a16f3d98b6d0e2c2942c1c22513dc/server/scripts/upgrade.sh and then run the upgrade script as usual
Prevent a moderator to change user role. Thanks to Infinit3i for reporting it
Security hardening:
Time safe comparison when checking email verification strings
Prevent replaying an email check request
Don't leak account existence in the login endpoint
Introduce per-account rate limiting for abuse creation and comment creation
Add specific rate limit for "Confirm token" endpoints (reset password, verify email, confirm 2FA)
Introduce account login lockout, disabled by default, when there are too many failed attempts for a specific account across multiple IPs. An email is sent to the account owner when the account login is locked
filter:api.video-comment-replies.list.params and filter:api.video-comment-replies.list.result for the new /api/v1/videos/{id}/comments/{commentId}/replies comment endpoint
filter:api.video-watch.video-comment-replies.list.params and filter:api.video-watch.video-comment-replies.list.result when loading more replies of a comment
Add server plugin helpers:
peertubeHelpers.email.createJob({ ... }) to send an email
peertubeHelpers.videos.updateVideo({ ... }) to update video metadata
peertubeHelpers.videos.withFile({ ... }) to fetch a video file
Add server registration features to add automatic tags to videos or comments:
Add support for externalId when returning the user from an auth plugin, so it no longer needs to rely on the user's email to map the auth provider user to a PeerTube user
Add support for language when returning the user from an auth plugin
Expose req.cookies in the onLogout hook of the registerExternalAuth plugin helper
Features
π Add ability to subscribe to a remote blocklist to automatically mute/unmute accounts and servers π
New Moderation β Blocklist β Subscriptions admin page to add/remove blocklist subscriptions and see their sync state
Subscriptions are periodically refreshed, automatically muting/unmuting accounts and servers to match the remote list
Add a notification when a subscription sync mutes or unmutes accounts/servers
Expose your own instance's blocklist as a public log (blocklist.public_log.enabled configuration) so other admins can subscribe to it
π Add ability to subscribe to a remote watched words list, at both the platform and account level π
New Moderation β Watched words β Subscriptions admin page (instance-wide lists) and a matching subscriptions page in My library (per-account lists) to add/remove subscriptions and see their sync state and imported word count
Subscribed lists are periodically fetched and synchronized, automatically adding/removing words
Existing videos and comments are automatically re-tagged in the background when a subscribed list changes
π Admins can configure automatic tag policies to automatically block videos with a specific label π
Add ability for moderators to set an internal note on blocked videos
Send an email notification on account login from a new device #7737
Add bulk actions to add/remove videos in a playlist in My Videos
Add ability to bulk update some video metadata in My Videos and Admin Videos Overview
Add ability for users to retry video imports and filter them by State
Users can specify the default privacy for imported videos of a channel synchronization
Admins/moderators have a special channel picker when updating a video, so they can easily move any local video to another user's channel
Admins can cancel a local transcoding job
Allow users to choose the stats interval when listing their channels #7750
Add "Nobody can embed this video" setting to videos #7716
Improve local video search by allowing search through the first 1000 characters of descriptions #7612
Various SEO improvements, including a lastmod field in sitemap entries #7738
Support the host-meta well-known endpoint for remote subscriptions
Transcription widget:
Make the transcription widget header sticky to ensure the search function remains easily accessible
Don't auto-scroll transcription to the current segment after a manual user scroll
Add a "Sync with video" button after a manual user scroll to restore auto scroll
Restore transcription widget when refreshing the page
Improve podcast UX for channels:
Add a new "Podcast" page when managing a channel to display podcast URLs and information
The channel now accepts a "Public email" configuration so that the user's email address is not used
UI & accessibility:
Improve video stats styling and add quick date filters
Fade player when video is paused and user becomes inactive #7725
Underline badges that are filters or links
Improve video miniature accessibility when listing videos
Add ... suffix to actions that lead to another step
Improve notifier error message when server returns a 502 HTTP status
Hide non-existing metadata in the video watch page
Performance:
Faster comment rendering in the web browser
Limit the number of replies when fetching replies of a thread
Reduce number of rows returned by the user SQL query
Reduce server CPU usage when handling multiple lives with a large DVR window
Bug fixes
Stick live to 1x playback rate
Correctly cleanup lives on error
Prevent memory leak in the live segment sha store
Use correct CSS variable for big play button color #7733
Fix juddery video with variable fps input
Abort ffmpeg and HTTP requests on job timeout
Fix broken byte range request support for video download endpoints when throttling is enabled
Owner/admin can bypass the download enabled setting
Fix S3 base url with forced path style
Prevent duplicated thumbnails
Support federation to other fediverse platforms that do not support the shared inbox
More robust channel sync: don't miss videos on the next sync when the previous one was aborted because of a sync error
Fix videos feed sort for playlists and respect originallyPublishedAt for videos
Fix broken views on an instance if the GeoIP request is stuck
Don't notify again when a video is re-published
Allow admin to update the default "Prevent email from being sent to the user" behaviour when processing a registration request
Add all user attributes to audit logs on create/update #7695
Correctly hide the mobile message if disabled by the admin
If your instance has many videos (local or federated) in the database, automatic migrations at next startup can take several minutes to finish. Plan for a short period of downtime during this upgrade
You need to manually execute a migration script after upgrading, while PeerTube is running and the database migration is complete (Migrations finished. New migration version schema: 1125 in PeerTube startup logs):
Comment API change: GET /api/v1/videos/{id}/comment-threads/{threadId} no longer returns the full comment tree
It now returns at most 10 direct replies per comment, down to 5 levels of nesting, by default
Each node in the returned tree now has a totalChildren field: compare it against children.length to know if replies were cut off
To fetch the rest, call the new endpoint: GET /api/v1/videos/{id}/comments/{commentId}/replies
If you're a plugin author: filter:api.video-thread-comments.list.result now sees only the truncated tree. Two new hooks, filter:api.video-comment-replies.list.params / .result, cover the new replies endpoint
SECURITY
Security hardening:
Time safe comparison when checking email verification strings
Prevent replaying an email check request
Don't leak account existence in the login endpoint
Introduce per-account rate limiting for abuse creation and comment creation
Add specific rate limit for "Confirm token" endpoints (reset password, verify email, confirm 2FA)
Introduce account login lockout, disabled by default, when there are too many failed attempts for a specific account across multiple IPs. An email is sent to the account owner when the account login is locked
filter:api.video-comment-replies.list.params and filter:api.video-comment-replies.list.result for the new /api/v1/videos/{id}/comments/{commentId}/replies comment endpoint
filter:api.video-watch.video-comment-replies.list.params and filter:api.video-watch.video-comment-replies.list.result when loading more replies of a comment
Add server plugin helpers:
peertubeHelpers.email.createJob({ ... }) to send an email
peertubeHelpers.videos.updateVideo({ ... }) to update video metadata
peertubeHelpers.videos.withFile({ ... }) to fetch a video file
Add server registration features to add automatic tags to videos or comments:
Add support for externalId when returning the user from an auth plugin, so it no longer needs to rely on the user's email to map the auth provider user to a PeerTube user
Add support for language when returning the user from an auth plugin
Expose req.cookies in the onLogout hook of the registerExternalAuth plugin helper
Features
π Add ability to subscribe to a remote blocklist to automatically mute/unmute accounts and servers π
New Moderation β Blocklist β Subscriptions admin page to add/remove blocklist subscriptions and see their sync state
Subscriptions are periodically refreshed, automatically muting/unmuting accounts and servers to match the remote list
Add a notification when a subscription sync mutes or unmutes accounts/servers
Expose your own instance's blocklist as a public log (blocklist.public_log.enabled configuration) so other admins can subscribe to it
π Add ability to subscribe to a remote watched words list, at both the platform and account level π
New Moderation β Watched words β Subscriptions admin page (instance-wide lists) and a matching subscriptions page in My library (per-account lists) to add/remove subscriptions and see their sync state and imported word count
Subscribed lists are periodically fetched and synchronized, automatically adding/removing words
Existing videos and comments are automatically re-tagged in the background when a subscribed list changes
π Admins can configure automatic tag policies to automatically block videos with a specific label π
Add ability for moderators to set an internal note on blocked videos
Send an email notification on account login from a new device #7737
Add bulk actions to add/remove videos in a playlist in My Videos
Add ability to bulk update some video metadata in My Videos and Admin Videos Overview
Add ability for users to retry video imports and filter them by State
Users can specify the default privacy for imported videos of a channel synchronization
Admins/moderators have a special channel picker when updating a video, so they can easily move any local video to another user's channel
Admins can cancel a local transcoding job
Allow users to choose the stats interval when listing their channels #7750
Add "Nobody can embed this video" setting to videos #7716
Improve local video search by allowing search through the first 1000 characters of descriptions #7612
Various SEO improvements, including a lastmod field in sitemap entries #7738
Support the host-meta well-known endpoint for remote subscriptions
Transcription widget:
Make the transcription widget header sticky to ensure the search function remains easily accessible
Don't auto-scroll transcription to the current segment after a manual user scroll
Add a "Sync with video" button after a manual user scroll to restore auto scroll
Restore transcription widget when refreshing the page
Improve podcast UX for channels:
Add a new "Podcast" page when managing a channel to display podcast URLs and information
The channel now accepts a "Public email" configuration so that the user's email address is not used
UI & accessibility:
Improve video stats styling and add quick date filters
Fade player when video is paused and user becomes inactive #7725
Underline badges that are filters or links
Improve video miniature accessibility when listing videos
Add ... suffix to actions that lead to another step
Improve notifier error message when server returns a 502 HTTP status
Hide non-existing metadata in the video watch page
Performance:
Faster comment rendering in the web browser
Limit the number of replies when fetching replies of a thread
Reduce number of rows returned by the user SQL query
Reduce server CPU usage when handling multiple lives with a large DVR window
Bug fixes
Stick live to 1x playback rate
Correctly cleanup lives on error
Prevent memory leak in the live segment sha store
Use correct CSS variable for big play button color #7733
Fix juddery video with variable fps input
Abort ffmpeg and HTTP requests on job timeout
Fix broken byte range request support for video download endpoints when throttling is enabled
Owner/admin can bypass the download enabled setting
Fix S3 base url with forced path style
Prevent duplicated thumbnails
Support federation to other fediverse platforms that do not support the shared inbox
More robust channel sync: don't miss videos on the next sync when the previous one was aborted because of a sync error
Fix videos feed sort for playlists and respect originallyPublishedAt for videos
Fix broken views on an instance if the GeoIP request is stuck
Don't notify again when a video is re-published
Allow admin to update the default "Prevent email from being sent to the user" behaviour when processing a registration request
Add all user attributes to audit logs on create/update #7695
Correctly hide the mobile message if disabled by the admin
This release addresses vulnerabilities ranging from medium to high severity affecting PeerTube <= 8.2.3. Security hardening is also included.
critical Unauthenticated ActivityPub Actor URL/key rebinding enables local playlist takeover in PeerTube GHSA-37jf-59fg-9hpr. Thanks to D0HY30N for the report
medium Email-verification bypass via client-controlled isPendingEmail parameter GHSA-wp9f-cmff-p8r2. Thanks to Felipe Faria from BluckerTV for the report
Add more security checks and receiving remote views/downloads
Refuse to display channel stats using withStats query parameter to other users/anonymous
Remove NodeJS 20 support. Please upgrade to NodeJS 22 (>= 22.12) before upgrading PeerTube
The public access of /api/v1/accounts API endpoint is deprecated for privacy reasons and will be behind an admin/moderator auth access in PeerTube v9, planned for the end of 2027
iOS versions < 15.4 are not supported anymore
NGINX
Fix an important NGINX I/O issue when users download a video: 5fa456e
Please upgrade your NGINX configuration
Add video privacy tag for peertube_videos_total OTEL metric
Configuration
This section is not exhaustive
Add download.max_total_bytes_per_second and download.max_bytes_per_ip_per_second configuration keys to throttle video downloads.
These new keys help prevent instability when botnets download the entire PeerTube catalog
Increase the default refresh token lifetime oauth2.token_lifetime.refresh_token to 4 weeks (instead of 2 weeks)
Allow admins to configure the default state of the Automatically publish a replay when your live ends option #7414
Docker
The entire PeerTube configuration can be set using environment variables.
Keep in mind that environment variable configuration keys override web admin configuration
Introduce a new table filter component that is simpler to use
Default runner job route is the page that lists runner jobs
Clicking on a type/state tag automatically filters data for local/runner job states and types, follow states, registration states, and user roles
Add video tag information and filter when listing my videos
Add ability to bulk accept/reject registration requests
Add ability to filter users by role in users overview
Improve comments UI on mobile
Display subscribe button when subscription state is loaded
Add g p hotkeys to go to My playlists page
Improve videos overview for admins:
Add ability to filter videos by state
Add a mute badge if the video owner is muted by the instance
Add ability to filter out videos from muted accounts
Improve video blocks overview for admins:
Add video privacy column
Add bulk actions to unblock, switch to manual block or delete the selected videos
Add a mute badge if the video owner is muted by the instance
Improve abuses overview for admins:
Add bulk action to update internal note, mark as accepted/rejected, delete report, mute reporter/reportee, block/unblock the video, delete the video/comment
Add a mute badge if the reporter/reportee is muted by the instance
Improve comments overview for admins and users:
Clicking on account name filters comments
Add a mute badge if the account that commented the video is muted by the instance
Add ability to filter out comments from muted accounts
Performance:
Reduce SQL joins when loading a video from the database
Faster video SQL query to retrieve my videos
Faster video comments SQL queries for users that list comments on their videos
Faster video redundancies SQL queries
Reduce number of rows returned by video SQL queries
Reduce number of rows returned by comments SQL queries
Faster loading of My channels page
Add /about endpoint caching in the client to reduce unnecessary API calls
Process ActivityPub View and Download activities in parallel
Forward ActivityPub View using parallel broadcast
Support ActivityPub indexable field for actors
Expose runner and runner job queue OpenTelemetry metrics #7469
Prevent stale follows by periodically re-sending Follow ActivityPub requests to remote instances
Improve follows reliability algorithm to reject followers that have been consistently down for ~7 days
Add .m4b audio file support
Bug fixes
Fix plugin settings to display default values when not configured in the DB #7484
Fix actor host link in miniature instance dropdown if search index is disabled
Fix missing stream error handling in web video object storage proxy #7535
Fix caption filename overflow
Fix setting a thumbnail from a video that is stored in object storage
Fix instance redundancies pagination
Filter out non-text languages for captions
Increase lazy static files cache time (thumbnails, captions, actor avatars/banners, etc.) to 1 year
Correctly log uncaught exceptions or unhandled promise rejections in file logger
Prevent page scrolling when applying filters while browsing instance/account/channel videos
Fix infinite scroll when listing my followers
Handle errors when updating a video playlist
Fix download filename if the video contains non-Latin characters
Fix font colors in emails by only injecting custom admin colors when the default theme is light-beige or dark-brown, to prevent accessibility issues
Fix broken audio stream P2P for lives
Fix broke HLS transcoding on concurrent video privacy change
Don't unpause the player when clicking on a transcription segment
Fix table page navigation on registration action
More robust playlist thumbnails updater
Fix concurrency issue when writing live sha segments
Fix concurrency issue when uploading the same torrent filename
We have learned that the SQL injection vulnerability fixed in v8.1.6 has been exploited at scale since at least May 18, 2026 and so before the v8.1.6 release.
According to our investigation, the attacker exploited this SQL injection to generate a token for the root user and install the peertube-plugin-google-analytics-js plugin. This plugin imports a client script from hxxps://www.googie-anaiytics.com/jquery.ui.js that currently only logs a line in the web browser.
Actions taken by this release:
Automatically remove peertube-plugin-google-analytics-js in v8.1.8
Invalidate OAuth tokens in v8.1.8 (all users must log in again)
Add a new user.disable_root_auth config key to disable root token usage
Remove the plugin from the plugin registry
Actions taken by Framasoft:
Report googie-anaiytics.com to the registrar
Send a contact-form message to public PeerTube instances
Release additional versions if we observe other attack vectors
A CVE is being requested for the SQL injection
Actions admins must take:
Upgrade to v8.1.8 as soon as possible
Review newly created users and videos
Review your instance configuration, especially Configuration -> Customization -> JavaScript/CSS
Review installed plugins
Generate new tokens for your runners
If you cannot upgrade to v8.1.8:
Remove actor follows that contain the 20.240.202.159 URL:
Find them: SELECT * FROM "actorFollow" WHERE "url" LIKE '%20.240.202.159%'
Delete them: DELETE FROM "actorFollow" WHERE "id" = ...
Remove actors that contain a ' character in inboxUrl:
Find them: SELECT * FROM "actor" WHERE "inboxUrl" LIKE '%''%'
Delete them: DELETE FROM "actor" WHERE "id" = ...
Invalidate OAuth tokens: UPDATE "oAuthToken" SET "accessTokenExpiresAt" = NOW(), "refreshTokenExpiresAt" = NOW() WHERE "accessTokenExpiresAt" > NOW() OR "refreshTokenExpiresAt" > NOW()
Remove peertube-plugin-google-analytics-js from instance plugins
Disable federation in production.yaml by setting federation.enabled to false
A few weeks ago, we shared a blog from our research trip to Iceland, where the map designers who took part in the journey shared their impressions. Today, we're excited to bring you a big episode of SCS On The Road, where you can experience the research trip in more detail, complete with stunning shots of Iceland's breathtaking landscapes and even some comparisons with the in-game map!
Part of our marketing team set out on this journey alongside our map designers to document the unforgettable trip. Iceland is undoubtedly one of the most beautiful countries in the world, and during their time there, the map team had the chance to visit some truly stunning locations that they are now recreating for this upcoming map expansion.
To bring these places to life in our game and do them justice, the team needed to gather plenty of visual references, helping them recreate the landscapes and landmarks as accurately and faithfully to reality as possible.Β
In this video, our map designers also shared some interesting insights into the map creation process, along with information about some of the places we are bringing directly into the map - keep an eye out for an upcoming hidden road, crossing a narrow bridge on its way to Γingvellir National Park!
We would also like to send a huge thank you to Volvo Trucks and SkΓΊli, a real truck driver from Iceland, who made it possible for the map designers to take a ride in the 780-horsepower Volvo FH16 XXL and experience Iceland from a completely different perspective - from the cabin of a truck. So, without further ado, let's watch this episode together!
Stay tuned for more, because on this trip we also collaborated with Volvo to shoot one of their videos. While we cannot reveal what it was about right now, you can look forward to a behind-the-scenes SCS On The Road episode from that as well!
This week's release includes an optional cursor movement animation, a setting to open Markdown files directly in the rendered preview, Emmet wrap with abbreviation support, and configurable window title formatting.
Shipped by the Zed Guild π‘οΈ
Added the on_new_window setting to choose whether new windows show the Launchpad (launchpad, the default) or an empty untitled buffer (empty_tab). (#63522; thanks albertbogusz)
Fixed ctrl-tab jumping to random documents when the mouse moved during a quick tab switch. (#52671; thanks OmChillure)
Fixed a crash in editor: rotate selections forward and editor: rotate selections backward when using cursors on nonconsecutive lines. (#63937; thanks timvermeulen)
Fixed language servers from other projects appearing in the LSP Logs view and their statuses showing in unrelated windows' status bars. (#61221; thanks aviatesk)
Fixed layout issues in the Settings UI for recently created GitHub accounts. (#63630; thanks tidely)
Fixed "View File History" when run from a diff view. (#63539; thanks albertbogusz)
Added Gemini 3.8 Flash to the Google AI models. (#63643; thanks macayu17)
Improved recovery when OpenAI temporarily returns HTTP 404 errors. (#63705)
Git
Improved repository cloning by showing live progress in the activity indicator. (#63239; thanks itsfuad)
Improved Git Graph commit details to show the same full commit timestamp as the Date column. (#62679; thanks dem1tris)
Languages
Added Emmet's wrap with abbreviation support (editor: wrap with abbreviation). (#63383)
Added syntax highlighting for the C23 constexpr keyword. (#63833; thanks Jesse-Cooper)
Improved language server request routing to respect dynamically registered document selectors. (#59243; thanks aviatesk)
Improved Go syntax highlighting by distinguishing control-flow keywords from other keywords. (#63769; thanks Gami13)
macOS
Improved detection of worktree root path changes to use fewer file descriptors. (#63863)
Other
Added configurable window title formatting with the window_title_format and window_title_separator settings. (#54379; thanks jknlsn)
Currently supported variables are ${projectName}, ${fileName}, ${filePath}, ${relativePath}, ${branch}, ${remoteName}, ${remoteHost}, ${appName}, and ${separator}.
These settings will be populated when importing from VS Code's settings, if window.title and window.titleSeparator are set.
Added the markdown_preview.open_markdown_files_in_preview setting to open Markdown files directly in the rendered preview. (#63462; thanks joshkent94)
Added an optional cursor movement animation, enabled by setting cursor_animation.enabled to true. (#63195; thanks tiny-paris)
Added a status bar countdown for pending multi-stroke key bindings. (#63343)
Added a tooltip showing the file path when hovering over files and folders in the Project Panel. (#63299; thanks skmanoj322)
The tooltip can be disabled, or its delay configured, by changing the project_panel.title_tooltip_delay setting.
Added dev: Debug Filesystem Watching to inspect local watcher events, watch roots, and scan exclusions, and export diagnostic captures as JSON. (#64186)
Added the command_palette.use_command_history setting to disable history-based command palette ranking without erasing history. (#64181)
Improved installed size on macOS and Linux by stripping debug symbols from release binaries, making them roughly 25% smaller. (#63429)
Improved recent commands in the command palette with history indicators, a wider layout, and controls to remove individual commands from history using shift-backspace or the remove button. (#64181)
Raised the default open file descriptor soft limit at startup on Unix/macOS to prevent EMFILE (Too many open files) errors in large workspaces. (#64188)
Bug Fixes
Fixed private files being shared with collaborators through project search. (#63860; thanks 39ali)
Fixed a settings key containing a quote or a backslash corrupting settings.json. (#62949; thanks interkelstar)
Fixed the Git Panel's History tab, commit search, branch diff, and opening a commit by ref failing when a branch name matched a path in the working tree. (#63666; thanks itsfuad)
Fixed Git Panel keybindings matching the Changes tab while the History tab was active. (#63689; thanks shindgew)
Fixed diagnostics from the previous language server staying on a file after changing its language. (#63460; thanks kjanat)
Fixed syntax highlighting for injected languages in strings containing interpolations. (#49265; thanks jeffbrennan)
Fixed a BasedPyright memory leak caused by incorrect workspace diagnostics polling. (#63336)
Fixed projects leaking via the Agent Panel. (#63765)
Fixed IME staying enabled in the Project Panel on Wayland when no text input was focused. (#63776; thanks Sha1rholder)
Fixed the debugger's "Copy Value" copying the truncated preview instead of the full value. (#63902; thanks 39ali)
Fixed the Keymap Editor's "Search by Keystrokes" shortcut, cmd-alt-f (macOS) and ctrl-alt-f (Linux/Windows), being shadowed by the file finder. (#63376; thanks dcdeniz)
Fixed valid multibyte Agent Skill descriptions being rejected for exceeding a byte-based length limit. (#63766; thanks cmdr-chara)
Fixed the Agent Panel appearing in the "View" menu when AI was disabled. (#63580; thanks shxmbles)
Fixed agent: manage skills appearing in the command palette when AI was disabled. (#63598; thanks kai-xlr)
Fixed case conversion commands deleting the line break when the selection ended at the start of the next line. (#63463; thanks 39ali)
Fixed ChatGPT subscription usage limits being reported as temporary OpenAI request throttling. (#63738)
Fixed collab language server requests cancelling each other. (#63736)
Fixed the deleted git-gutter marker becoming nearly invisible when git_gutter_width was set to a small custom pixel value. (#63434; thanks somtri)
Fixed double-clicking the title bar ignoring the macOS "Tiled windows have margins" setting when "Double-click a window's title bar" was set to "Fill". (#63759; thanks RomainDW)
Fixed hints for branch and worktree deletion, keybinding conflicts, and edit predictions referring to Alt instead of Option on macOS. (#63807; thanks humdrum00001010)
Fixed long ask_user options being truncated instead of wrapping in the Agent Panel. (#63656; thanks cmdr-chara)
Fixed Markdown preview headings not rendering at their configured weight. (#63465; thanks archcorsair)
Fixed Node tool installations failing or completing partially when packages listed native bindings as optional dependencies. (#52451; thanks KuSh)
Fixed the "Organization" section rendering empty in the title bar menu when signed out. (#63728; thanks RadhiRasho)
Fixed the preview_tabs.enable_preview_from_project_panel setting being ignored when opening files from the Project Panel with the keyboard. (#63758; thanks cmdr-chara)
Fixed the remote projects picker not closing when opening a folder on a remote server. (#63628; thanks mateioprea)
Fixed unintended whole-canvas selection when long-pressing in GPUI web applications on iOS. (#63877)
Fixed Vim's o not continuing the comment prefix inside C-style multiline comments. (#63751; thanks IbrahimKhan12)
Fixed an issue in SSH remote mode where reopening a newly created file at a path that was previously renamed could incorrectly reuse the buffer for the renamed file. (#64028)
Fixed CRLF line breaks not normalized in completion labels. (#63984)
Fixed diagnostics batches stopping at paths without a worktree. (#64073)
Fixed Linux mailto: URI handling when using Help β Email Us.... (#64090)
Fixed Project Panel reveal in Git diff multi-buffers. (#64154)
Breaking Changes and Notices
Changed the Agent Panel to copy plain text with cmd-c (macOS) and ctrl-c (Linux/Windows) instead of Markdown. Copying as Markdown moved to the context menu, and the markdown::CopyAsMarkdown action can still be bound. (#63884)
Moved the Markdown Preview font settings under the markdown_preview key as font_size, font_family and code_font_family. Existing settings are migrated automatically. (#63462; thanks joshkent94)