Releases: Chocobozzz/PeerTube
Releases · Chocobozzz/PeerTube
v8.1.0-rc.1
IMPORTANT NOTES
- 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: 1000in PeerTube startup logs):- Classic installation:
cd /var/www/peertube/peertube-latest && sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production node dist/scripts/migrations/peertube-8.1.js - Docker installation:
cd /var/www/peertube-docker && docker compose exec -u peertube peertube node dist/scripts/migrations/peertube-8.1.js
- Classic installation:
- Running regenerate-thumbnails and prune-storage scripts after the upgrade and migration script is highly recommended
Maintenance
- Migrate to the
sharpNodeJS dependency to process images. This is a native dependency that provides prebuilt binaries, but some systems (like FreeBSD) may require an additional step after PeerTube dependencies installation:- Install
sharpdependencies: https://sharp.pixelplumbing.com/install/#building-from-source - Run
npm explore sharp -- npm run buildinpeertube-latestdirectory
- Install
- Merge the
previewsdirectory into thethumbnailsdirectory. The migration script will automatically move files
Thepreviewsdirectory and configuration are kept for compatibility reasons - The
cachedirectory is no longer deleted at PeerTube startup, to keep files cached from the previous run
Configuration
This section is not exhaustive
- Important Generate more thumbnail sizes for videos in
thumbnails.sizes. We recommend admins apply the same settings - Update default object storage configuration to use different
prefixvalues with the samebucket_namefor each object type (web_videos,user_exports, etc.), so it is easier to add more object types in the future - Use the
lucideplayer theme by default import.videos.http.force_ipv4is nowtrueby default to reduce rate limiting on some platforms- Add On Primary color configuration (
theme.customization.on_primary_color) to choose the foreground color when the background color is Primary
Docker
- Add
va-driver-allto the PeerTube Docker image #7346
Plugins/Themes/Embed/REST APIs
- REST API:
- Deprecate
previewfilewhen publishing a video. Usethumbnailfileinstead - Deprecate
thumbnailPathandpreviewPathVideofields. Use thethumbnailsarray instead - Deprecate the
thumbnailPathVideoPlaylistfield. Use thethumbnailsarray instead - Remove unused
fileUrlfromUserExportandVideoSource - Deprecate
/lazy-static/previews/:filename. Use/lazy-static/thumbnails/:filenameinstead
- Deprecate
- Server plugin hooks (https://docs.joinpeertube.org/api/plugins):
- Add
filter:feed.videos.list.result#7355 - Replace
torrentPathwithtorrentFilenameandtorrentStreamfor remote torrents infilter:api.download.torrent.allowed.resultcontext
- Add
Features
- 🎉 Allow uploaders to restrict domains where their video can be embedded 🎉
- Add an admin config to ensure an optimized podcast audio file is transcoded
- Support 3.0x playback speed for non-premium users 😁
- Optimize transcoding job queue:
- Do not wait for all transcoding tasks to publish the video
- Do not wait for all transcoding tasks to move video files in object storage
- Lower priority on low video resolutions to avoid blocking video publication during bursts of uploads
- More transcoding job parallelization
- More reliable channel sync:
- Reduce youtube-dl calls to reduce rate limiting
- Handle cases where the video is not available/doesn't exist
- Handle lives that are still being post-processed
- Stop sync on get video info failure to retry at the same point next time
- UX:
- Support raw hex colors in color picker input #7337
- Group notifications by date
- Display blocked video information on the video manage page
- Add a loading icon when updating the video
- Improve the error message when the user password is too long
- Add
g lhotkey to go to the login page - Add ability to display video language on the
My Videospage (column is hidden by default)
- Improve video SEO
- Support
pngandwebpvideo thumbnails - Support
svglogos for admins - Better email notification when a subscribed channel published a video #7395
- Add compatibility with ActivityPub FEP-1b12 (used by Lemmy, PieFed, Mbin...)
- Introduce a new cache system for remote thumbnails, storyboards, captions, and actor avatars/banners
- Support Redis TLS connections #7404
- Support PostgreSQL TLS connections #7366
- Support path style requests for object storage
- Improve channel collaboration:
- An editor can now move a video they can manage to a channel they can manage (owner/editor)
- An editor can send a change ownership request for a video they can manage
- Editors can add videos to playlists of collaborated channels
- Add quick actions (Manage, Remove) to the video dropdown for editors too
- Performance:
- Create video file torrents in a worker thread
- Optimize videos list SQL query with complex sort (trending, hot, etc.)
- When possible, send raw files directly instead of muxing when downloading a video
- Improve podcast feed images compatibility with Apple Podcast
Bug fixes
- Fix videos list inconsistencies when going back to that page
- Do not display an empty details block in embed on error
- Prevent incomplete segment reads for live streams #7333
- Fix video download filename on Safari
- Fix broken P2P when updating object storage base URL
- Fix Redis sentinel support #7365
- Correctly use header colors defined by the admin
- Fix broken transcoding on remote runner when split video/audio is enabled
- Fix server config not refreshing after admin settings save #7413
- Prevent exception when the account is not loaded yet in the user moderation dropdown
- Prevent black borders when embedding a video
- Fix default scope defined by the admin when browsing videos
- Force transcoding even if the video state is not compatible
- Fix broken video studio task when updating video privacy at the same time
- Reset selected rows when loading data in tables
- Take into account channel owner video quota when an editor publishes a video to a collaborated channel
- Fix watching a password protected video as an editor
- Fix video metadata in
filter:api.video.upload.accept.resultcontext - Correctly take into account the user language filter when browsing videos
- Fix
.tsvideo file upload #7458 - Fix
.mkvvideo file upload on latest Chrome - Fix deleting all instance logo when deleting a specific logo
- Fix getting unsupported Node.js from PATH with yt-dlp #7468
v8.0.2
IMPORTANT NOTES
- Follow v8.0.0 IMPORTANT NOTES if you upgrade from PeerTube <= v7.3.0
Bug fixes
- Fix PostgreSQL CPU usage and broken PeerTube instance on instances with a many subscriptions or big federation
- Fix login URL in registration email
- Remove the trailing comma in the plugins
package.jsonfiles that broke the update/installation process - Fix broken channel sync if private privacy is removed by a plugin
- Fix restoring My Videos sort after a search
v8.0.1
IMPORTANT NOTES
- Follow v8.0.0 IMPORTANT NOTES if you upgrade from PeerTube <= v7.3.0
NGINX
- Fix HTTP3 compatibility issue in nginx template: 412df6c
Bug fixes
- Prevent transcription error when the video has been deleted
- Fix select button style for redundancy
- Fix invalid form after admin configuration update
- Fix alert styling in watch page
- Fix left menu collapse when accessing admin configuration
- Fix config wizard not applying config
- Correctly do not open again welcome modal
- Fix decaching node modules paths of plugins
- Send 401 HTTP code instead of 404 when fetching the HTML page of a password protected video
- More precise date interval (x min ago, x months ago, etc.)
- Reorder account management dropdown entries
- Fix youtube playlist detection for channel synchronization
- Fix filtering on privacy when listing my videos
v8.0.0
IMPORTANT NOTES
- Database migrations of this version can take a long time (up to 30 minutes on an instance with many users/federation actors and a slow database disk)
- You need to manually execute a migration script after your upgrade while PeerTube is running and the database migration is complete (
Migrations finished. New migration version schema: 970in PeerTube startup logs):- Classic installation:
cd /var/www/peertube/peertube-latest && sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production node dist/scripts/migrations/peertube-8.0.js - Docker installation:
cd /var/www/peertube-docker && docker compose exec -u peertube peertube node dist/scripts/migrations/peertube-8.0.js
- Classic installation:
yarnNodeJS packages manager has been removed in favor ofpnpm. Follow the dependencies guide to installpnpmon your system before the upgrade- Ensure
storage.uploadsdirectory is set in your production.yaml - Supported NodeJS versions are
>= 20.19 and < 21or>= 22.12 and <23 - For Docker users, please read the Docker section below
Configuration
- Remove
http_serverunused section from.yamlconfiguration files - Introduce
views.videos.local.max_ageconfiguration to cleanup old views from local videos - Add more STUN Servers to
webrtc.stun_serversto improve P2P robustness - Add ability to increase video transcription timeout in
video_transcription.timeout - Add
client.new_features_infoconfiguration to disable popups explaining new features to users - Add
user.password_constraints.min_lengthconfig to specify user password minimum length #6945
Docker
- PeerTube Dockerfile is now based on Debian Trixie.
chocobozzz/peertube:productioncan be used instead ofchocobozzz/peertube:production-trixie(Debian suffix version is deprecated) - PostgreSQL version has been upgraded in Docker Compose. Please follow this guide if you want to upgrade PostgreSQL in your Docker Compose
- Redis version has been upgraded in Docker Compose. No maintenance task is required if you upgrade Redis in your Docker Compose
Plugins/Themes/Embed/REST APIs
- REST API:
- Remove deprecated
filenamefield fromVideoSourceobject - Remove deprecated
commentsEnabledfield fromVideoobject - Remove deprecated
redundancies.filesfield fromVideoRedundancyobject - Deprecate
captionPathfield fromVideoCaptionobject. UsefileUrlinstead - Deprecate
storyboardPathfromStoryboardobject. UsefileUrlinstead - Deprecate
pathfromActorImageobject (avatars, banners). UsefileUrlinstead - The HTTP response code for password-protected videos can be either 401 or 403, depending on the request headers
- Remove deprecated
- Theme:
- Rename
--input-placeholderCSS variables into--input-placeholder-color - Introduce
--input-placeholder-font-sizeCSS variable
- Rename
Features
- 🎉 Add channel collaboration 🎉
- Channel owners can invite users of their instance to become editors of their channel
- Editors can accept or reject the invitation
- Editors can manage videos, playlists & comments of the channel
- An Activity page has been added to list actions performed within a channel
- 🎉 Video player redesign 🎉
- Introduce a new clean and modern theme named Lucide
- Original theme is still used by default, and has been renamed to Galaxy
- The player theme can be changed by the admin for the entire instance or by the channel for all its videos. It can also be changed for individual videos.
- Use vertical audio volume control for Galaxy player theme
- Improve video imports UX
- Introduce an Import failed state to clearly identify failed imports
- Display import state in video manage page and watch page
- Add ability to retry video imports
- Channel synchronization automatically retry failed imports
- Redesign notifications popup and page
- Replace
yarnpackage manager bypnpmto provide faster PeerTube installation/upgrade and faster plugin installation/upgrade - Add admin options to customize default Browse videos behaviour #7193
- Add ability to handle storyboard generation job by runners #7191
- Add Resend verification email button to admin users list #7272
- Improve video manage and admin config forms accessibility
- Add ability to insert a new playlist at first position in the channel
- Add ability to copy codecs, if possible, for HLS transcoding
- Also search by account name when searching for channels
- Faster start time seek on HLS videos
Bug fixes
- Fix avatar max size information
- Fix scroll issue when navigating from homepage
- Fix viewers stats date filter label after a reset
- Fix select languages component label
- Correctly load user video language settings in video filters
- Accept non-HTTPS URLs for the search index
- Fix admin abuse URL in emails
- Show videos to owners even if they are muted on the instance
- Correctly sort scheduled videos when listing my videos
- Fix account mention redirection
- Display all countries/regions labels in viewer stats graph
- Keep videos order after user import
- Fix HTML headings hierarchy to improve SEO
- Users logged-in by an external auth plugin can choose to display their email publicly (required by Apple for the podcast feed)
- Fix podcast feed video bitrate attribute that can be refused by some podcast applications
- Fix video quota information estimation
- Translate RSS feeds title
- Fix transcription CORS issue if the caption file is stored externally
- Do no uppercase video tags
- Fix resetting instance categories/languages
- Fix black screen when updating web video resolution in player
- Fix displaying more than 100 live sessions
- Reload page after login to respect user lang
- Do not run storyboard/transcription jobs without the appropriate stream
v8.0.0-rc.1
IMPORTANT NOTES
- Database migrations of this version can take a long time (up to 30 minutes on an instance with many users/federation actors)
- You need to manually execute a migration script after your upgrade while PeerTube is running and the database migration is complete (
Migrations finished. New migration version schema: 965in PeerTube startup logs):- Classic installation:
cd /var/www/peertube/peertube-latest && sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production node dist/scripts/migrations/peertube-8.0.js - Docker installation:
cd /var/www/peertube-docker && docker compose exec -u peertube peertube node dist/scripts/migrations/peertube-8.0.js
- Classic installation:
yarnNodeJS packages manager has been removed in favor ofpnpm. Follow the dependencies guide to installpnpmon your system before the upgrade- For Docker users, please read the Docker section below
- Supported NodeJS versions are
>= 20.19 and < 21or>= 22.12 and <23
Configuration
- Remove
http_serverunused section from.yamlconfiguration files - Introduce
views.videos.local.max_ageconfiguration to cleanup old views from local videos - Add more STUN Servers to
webrtc.stun_serversto improve P2P robustness - Add ability to increase video transcription timeout in
video_transcription.timeout - Add
client.new_features_infoconfiguration to disable popups explaining new features to users - Add
user.password_constraints.min_lengthconfig to specify user password minimum length #6945
Docker
- PeerTube Dockerfile is now based on Debian Trixie.
chocobozzz/peertube:productioncan be used instead ofchocobozzz/peertube:production-bookworm(Debian suffix version is deprecated) - PostgreSQL version has been upgraded in Docker Compose. Please follow this guide if you want to upgrade PostgreSQL in your Docker Compose
- Redis version has been upgraded in Docker Compose. No maintenance task is required if you upgrade Redis in your Docker Compose
Plugins/Themes/Embed/REST APIs
- REST API:
- Remove deprecated
filenamefield fromVideoSourceobject - Remove deprecated
commentsEnabledfield fromVideoobject - Remove deprecated
redundancies.filesfield fromVideoRedundancyobject - Deprecate
captionPathfield fromVideoCaptionobject - Deprecate
storyboardPathfromStoryboardobject - The HTTP response code for password-protected videos can be either 401 or 403, depending on the request headers
- Remove deprecated
- Theme:
- Rename
--input-placeholderCSS variables into--input-placeholder-color - Introduce
--input-placeholder-font-sizeCSS variable
- Rename
Features
- 🎉 Add channel collaboration 🎉
- Channel owners can invite users of their instance to become editors of their channel
- Editors can accept or reject the invitation
- Editors can manage videos, playlists & comments of the channel
- An Activity page has been added to list actions performed within a channel
- 🎉 Video player redesign 🎉
- Introduce a new clean and modern theme named Lucide
- Original theme is still used by default, and has been renamed to Galaxy
- The player theme can be changed by the admin for the entire instance or by the channel for all its videos. It can also be changed for individual videos.
- Use vertical audio volume control for Galaxy player theme
- Improve video imports UX
- Introduce an Import failed state to clearly identify failed imports
- Display import state in video manage page and watch page
- Add ability to retry video imports
- Channel synchronization automatically retry failed imports
- Redesign notifications popup and page
- Replace
yarnpackage manager bypnpmto provide faster PeerTube installation/upgrade and faster plugin installation/upgrade - Add admin options to customize default Browse videos behaviour #7193
- Add ability to handle storyboard generation job by runners #7191
- Add Resend verification email button to admin users list #7272
- Improve video manage and admin config forms accessibility
- Add ability to insert a new playlist at first position in the channel
- Add ability to copy codecs, if possible, for HLS transcoding
- Also search by account name when searching for channels
- Faster start time seek on HLS videos
Bug fixes
- Fix avatar max size information
- Fix scroll issue when navigating from homepage
- Fix viewers stats date filter label after a reset
- Fix select languages component label
- Correctly load user video language settings in video filters
- Accept non-HTTPS URLs for the search index
- Fix admin abuse URL in emails
- Show videos to owners even if they are muted on the instance
- Correctly sort scheduled videos when listing my videos
- Fix account mention redirection
- Display all countries/regions labels in viewer stats graph
- Keep videos order after user import
- Fix HTML headings hierarchy to improve SEO
- Users logged-in by an external auth plugin can choose to display their email publicly (required by Apple for the podcast feed)
- Fix podcast feed video bitrate attribute that can be refused by some podcast applications
- Fix video quota information estimation
- Translate RSS feeds title
- Fix transcription CORS issue if the caption file is stored externally
v7.3.0
IMPORTANT NOTES
- Minimum supported NodeJS version is
20.19
NGINX
- Disable request buffering on upload endpoints to fix HTTP request timeouts: d1a35e8
Plugins/Themes/Embed API
- Breaking change Plugin and themes must use
:rootCSS selector instead ofbodyto inject CSS variables - Add server API (https://docs.joinpeertube.org/api/plugins):
- Support
externalRedirectUriforregisterExternalAuthso PeerTube redirects users on another URL set by the plugin - If your plugin uses
filter:email.template-path.resultserver hook: emails now use Handlebars template engine instead of Pug template engine
- Support
Features
- 🎉 Emails can now be translated 🎉 Check the translation documentation to help us translate emails in your language!
- 🎉 Introduce a web configuration wizard to help administrators to configure their instance automatically 🎉
- The wizard appears once the administrators have logged in following the installation of the PeerTube instance
- Admins can also run the wizard via a button in the web admin config
- The main instance information (e.g. name, short description, logo, primary colour) can be entered using the wizard.
- It also helps the admin to apply a configuration depending on the instance type (community-based, institutional, private)
- 🎉 Redesign the admin config to use a lateral menu for navigating between subsections 🎉
- Add a new Customization page to easily change the main colors and shape of the client interface
- Add a new Logo page where admins can upload logos/favicon and social media images for their instances
- Add an option to set the default licence, privacy and comments policy when publishing videos
- The email prefix and body can now be changed in the web admin config. These configurations also support the
{{instanceName}}template variable, which is replaced by the instance name
- Improve admin federation control:
- Add the ability for admins to completely disable remote subscriptions to local channels
- Admins can also set up automatic rejection of video comments from remote instances
- Add 2FA column information in admin users overview table
- Display remote runner version in admin
- Add ability for users to set the planned date of a live. These lives are displayed when browsing videos #7144
- Improve data tables UX/UI
- Improve account/channel playlists management:
- Use a data table to manage account and channel playlists
- Allow to manually set the order of the public playlists displayed in a channel
- Improve sensitive content warning in embed player
- Improve audio transcoding quality, especially with FLAC input
- Support Creole French languages in video language metadata
- Add ability for users to list and revoke token sessions
- Support Free of known copyright restrictions and Copyrighted - All Rights Reserved video licence metadata
- Play/pause the video player using
kkey
Bug fixes
- Fix ActivityPub audience for unlisted videos
- Use an array of URL in
attributedToActivityPub field - Prefer
og:imageinstead ofog:image:url - Better thumbnail blur for sensitive content #7105
- Prefer
allow="fullscreen"for video embediframe#7043 - Respect the sensitive content policy, even for videos owned by the user
- Fix the issue of the scroll position not being restored when pages load slowly #7143
- Fix remote actor follow counter after a local subscription
- Fix reloading videos in Browser videos when the link only changes query parameters
- Add stall job check for remote studio and transcription runner jobs
- Prevent metric warning for redundancy gauge
- Fix disabling Wait transcoding checkbox
- Correctly import new elements of a playlist in channel synchronization
- Fix overflow in discover page
- Fix restoring scroll position when going back in the web browser on the homepage set by the admin
- Fill video support on channel sync
- Respect instance default privacy setting when publishing imports and lives
- Remove useless help for live transcoding
- Fix RTL margins on some components
v7.3.0-rc.1
IMPORTANT NOTES
- Minimum supported NodeJS version is
20.17
NGINX
- Disable request buffering on upload endpoints to fix HTTP request timeouts: d1a35e8
Plugins/Themes/Embed API
- Add server API (https://docs.joinpeertube.org/api/plugins):
- Support
externalRedirectUriforregisterExternalAuthso PeerTube redirects users on another URL set by the plugin - If your plugin uses
filter:email.template-path.resultserver hook: emails now use Handlebars template engine instead of Pug template engine
- Support
Features
- 🎉 Emails can now be translated 🎉 Check the translation documentation to help us translate emails in your language!
- 🎉 Introduce a web configuration wizard to help administrators to configure their instance automatically 🎉
- The wizard appears once the administrators have logged in following the installation of the PeerTube instance
- Admins can also run the wizard via a button in the web admin config
- The main instance information (e.g. name, short description, logo, primary colour) can be entered using the wizard.
- It also helps the admin to apply a configuration depending on the instance type (community-based, institutional, private)
- 🎉 Redesign the admin config to use a lateral menu for navigating between subsections 🎉
- Add a new Customization page to easily change the main colors and shape of the client interface
- Add a new Logo page where admins can upload logos/favicon and social media images for their instances
- Add an option to set the default licence, privacy and comments policy when publishing videos
- The email prefix and body can now be changed in the web admin config. These configurations also support the
{{instanceName}}template variable, which is replaced by the instance name
- Improve admin federation control:
- Add the ability for admins to completely disable remote subscriptions to local channels
- Admins can also set up automatic rejection of video comments from remote instances
- Add 2FA column information in admin users overview table
- Display remote runner version in admin
- Add ability for users to set the planned date of a live. These lives are displayed when browsing videos #7144
- Improve data tables UX/UI
- Improve account/channel playlists management:
- Use a data table to manage account and channel playlists
- Allow to manually set the order of the public playlists displayed in a channel
- Improve sensitive content warning in embed player
- Improve audio transcoding quality, especially with FLAC input
- Support Creole French languages in video language metadata
- Add ability for users to list and revoke token sessions
- Support Free of known copyright restrictions and Copyrighted - All Rights Reserved video licence metadata
- Play/pause the video player using
kkey
Bug fixes
- Fix ActivityPub audience for unlisted videos
- Use an array of URL in
attributedToActivityPub field - Prefer
og:imageinstead ofog:image:url - Better thumbnail blur for sensitive content #7105
- Prefer
allow="fullscreen"for video embediframe#7043 - Respect the sensitive content policy, even for videos owned by the user
- Fix the issue of the scroll position not being restored when pages load slowly #7143
- Fix remote actor follow counter after a local subscription
- Fix reloading videos in Browser videos when the link only changes query parameters
- Add stall job check for remote studio and transcription runner jobs
- Prevent metric warning for redundancy gauge
- Fix disabling Wait transcoding checkbox
- Correctly import new elements of a playlist in channel synchronization
v7.2.3
SECURITY
- Upgrade
multerdependency to prevent Denial of Service with a malformed request
Bug fixes
- Fix channel synchronization that duplicates video imports
v7.2.2
SECURITY
- Prevent ReDOS from
useragentpackage by removing deprecated Do Not Track feature. Thanks to Patrick Bohn Matthiesen and Leonora from IT University of Copenhagen for reporting this vulnerability!
Bug fixes
- Correctly display bulk actions button in "My videos"
- Keep playlist name original casing in "My videos"
- Fix PIP button z-index on Firefox
- More robust S3 upload and ACL error handler
- Fix broken video state on S3 move failure
- Reset filters when loading query params in "Browse videos"
- Fix upload tab title when the file is uploaded
- Fix follow card overflow in about page
- Convert to full UUID request param
idinfilter:html.embed.video.allowed.resultandfilter:html.embed.video-playlist.allowed.resultplugin hooks - Fix HLS playback issue on Chrome 138
- Fix selecting frame on Safari
- Fix input search with multiple prefix tokens
- Fix channel sync duplicate after video deletion
- Fix caption raw edition when editing segment
- Fix accessibility issues:
- Fix embed title/avatar accessibility
- Add player P2P up/down info aria label
- Support escape key in the player settings menu
- Support arrow left/right navigation in the settings menu
- Fix entry focus when navigating in the settings menu
- Add aria controls attribute to settings button
- Thanks to Woebin from Access Lab and HowlRound Theatre Commons for conducting the player accessibility audit!
v7.2.1
Bug fixes
- Fix federation of sensitive videos with previous PeerTube versions
- Do not uppercase video tags to prevent accessibility issues
- Fix support field not automatically filled from channel data when publishing a video
- Fix "Add new playlist" broken style
- Fix browse videos page title on web browser "History Back"
- Fix parent menu highlighting in About Platform pages
- Don't display description/terms titles if these blocks are empty
- Correctly load count and rows per page when listing My videos