Releases: Chocobozzz/PeerTube
Releases · Chocobozzz/PeerTube
v5.2.1
Bug fixes
- Fix loading spinner displayed forever on Chrome
- Fix broken replay with long live name
- Fix fps transcoding on remote runners
- Fix terms/code of conduct link toggle
v5.2.0
IMPORTANT NOTES
- Important Remove NodeJS 14 support
- Important You must update your nginx configuration to support remote runners: https://github.com/Chocobozzz/PeerTube/blob/develop/support/nginx/peertube#L101
- Add
storage.tmp_persistent
directory in configuration file. You must configure it in your production.yaml: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L128 - PeerTube requires Docker Compose >= v2 for Docker compose installation
Maintenance
- Remove
npm run create-transcoding-job
andnpm run print-transcode-command
unmaintained scripts - Add Redis sentinel support #5593
- Improve upgrade script (used when you will upgrade from PeerTube 5.2 to its next version) for classic installation:
- Automatically generate a
config/production.yaml.new
file after the upgrade, which is the fusion between the new PeerTube configuration keys and your currentproduction.yaml
. After a review you can replace your oldconfig/production.yaml
with this new file so you don't have to add new keys manually - Add
ls
option compatibility with FreeBSD #5785
- Automatically generate a
Docker
- Make database name configurable using env variable #5734
Plugins/Themes/Embed API
- Add
filter:html.client.json-ld.result
hook
Features
- 🎉 Implement remote transcoding for VOD videos, Live streams and Studio editions 🎉 #5769
- If enabled, remote PeerTube runners can process these high CPU jobs
- Admin documentation: https://docs.joinpeertube.org/admin/remote-runners
- PeerTube runner CLI documentation: https://docs.joinpeertube.org/maintain/tools#peertube-runner
- Demonstration video: https://peertube2.cpy.re/w/oJwHHYwt4oKjKhLNh2diAY
- Architecture documentation: https://docs.joinpeertube.org/contribute/architecture#remote-vod-live-transcoding
- Add Podcast RSS feed support: #5487
- Add ability to set custom privacy for live replays #5692
- Render images of markdown fields in About page #5732
- Admin can disable user video history by default #5728
- Improve global accessibility
Bug fixes
- Fix live stream object storage sync resulting in broken playback on iOS after a few minutes
- Correctly proxify HTTP 206 content-range header from object storage #5703
- Filter out already watched videos from recommended videos #5739
- Prevent exception when HTTP headers are already sent
- Fix remote instance following/followers links in about page
- Prevent error when updating a running live stream if the privacy hasn't changed
- Prevent crash on plugin websocket error
- Don't call
register
/unregister
plugin API when installing/uninstalling plugins usingscript/plugin
scripts (offline mode) - Fix error on missing plugin CSS file at PeerTube startup #5746
- Prevent "invalid end watch section" server log warnings
- Support remote subscribe with a handle starting with a
@
character - Actor preferred username (account/channel handle) is now case insensitive
- Fix RTL layout inconsistencies
- Prevent user video notification when the subscription is still in Pending state
- Correctly remove Pending subscription
- Fix PeerTube subtitles import
- Fix languages alphabetical order
- Fix registration notification error
- Correctly unload plugin paths
- Fix custom default route in instance logo link
- Fix video channels quick filter overflow
v5.2.0-rc.1
IMPORTANT NOTES
- Important Remove NodeJS 14 support
- Important You must update your nginx configuration to support remote runners: https://github.com/Chocobozzz/PeerTube/blob/develop/support/nginx/peertube#L101
- Add
storage.tmp_persistent
directory in configuration file. You must configure it in your production.yaml: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L128 - PeerTube requires Docker Compose >= v2 for Docker compose installation
Maintenance
- Remove
npm run create-transcoding-job
andnpm run print-transcode-command
unmaintained scripts - Add Redis sentinel support #5593
- Improve upgrade script (used when you will upgrade from PeerTube 5.2 to its next version) for classic installation:
- Automatically generate a
config/production.yaml.new
file after the upgrade, which is the fusion between the new PeerTube configuration keys and your currentproduction.yaml
. After a review you can replace your oldconfig/production.yaml
with this new file so you don't have to add new keys manually - Add
ls
option compatibility with FreeBSD #5785
- Automatically generate a
Docker
- Make database name configurable using env variable #5734
Plugins/Themes/Embed API
- Add
filter:html.client.json-ld.result
hook
Features
- 🎉 Implement remote transcoding for VOD videos, Live streams and Studio editions 🎉 #5769
- If enabled, remote PeerTube runners can process these high CPU jobs
- Admin documentation: https://docs.joinpeertube.org/admin/remote-runners
- PeerTube runner CLI documentation: https://docs.joinpeertube.org/maintain/tools#peertube-runner
- Demonstration video: https://peertube2.cpy.re/w/oJwHHYwt4oKjKhLNh2diAY
- Architecture documentation: https://docs.joinpeertube.org/contribute/architecture#remote-vod-live-transcoding
- Add Podcast RSS feed support: #5487
- Add ability to set custom privacy for live replays #5692
- Render images of markdown fields in About page #5732
- Admin can disable user video history by default #5728
- Improve global accessibility
Bug fixes
- Fix live stream object storage sync resulting in broken playback on iOS after a few minutes
- Correctly proxify HTTP 206 content-range header from object storage #5703
- Filter out already watched videos from recommended videos #5739
- Prevent exception when HTTP headers are already sent
- Fix remote instance following/followers links in about page
- Prevent error when updating a running live stream if the privacy hasn't changed
- Prevent crash on plugin websocket error
- Don't call
register
/unregister
plugin API when installing/uninstalling plugins usingscript/plugin
scripts (offline mode) - Fix error on missing plugin CSS file at PeerTube startup #5746
- Prevent "invalid end watch section" server log warnings
- Support remote subscribe with a handle starting with a
@
character - Actor preferred username (account/channel handle) is now case insensitive
- Fix RTL layout inconsistencies
- Prevent user video notification when the subscription is still in Pending state
- Correctly remove Pending subscription
- Fix PeerTube subtitles import
v5.1.0
IMPORTANT NOTES
- If your instance has signup enabled, user registration approval is automatically enabled by the default configuration of this release. You can change this setting in your
production.yaml
or in the configuration page in the web admin - Update web browsers support list:
- Drop support of Safari 11 on iOS
- Drop support of Safari 11 on desktop
- Drop support of Firefox 68 on desktop
- Minimum recommended Redis version is 6.2. Version 6.0 should still work: see this comment for more information
- Deprecate NodeJS 14: support will be removed in the next release (PeerTube 5.2)
Maintenance
- PeerTube OpenTelemetry
- Add BitTorrent tracker metrics
- Add ability to disable HTTP request duration metrics (can have a high tag cardinality)
- Add
x-powered-by
HTTP header in PeerTube response. Can be disabled in PeerTube configuration
Docker
- Add env variables to configure object storage
Documentation
- PeerTube documentation website now uses VitePress: https://docs.joinpeertube.org
- Add Server code documentation explaining the database model typing and how to add a new feature in PeerTube server: https://docs.joinpeertube.org/support/doc/development/server
Plugins/Themes/Embed API
- Add ability to set
playbackRate
in URL (watch page and embed) #5486 - Auth plugins:
- Can set default
adminFlags
,videoQuota
andvideoQuotaDaily
user attributes - Introduce
userUpdater
hook function so external auth plugins can update the user on user login: https://docs.joinpeertube.org/contribute/plugins#add-external-auth-methods - Automatically redirect to the default external auth on PeerTube refresh token expiration
- Can set default
- Server plugin hooks (https://docs.joinpeertube.org/api/plugins):
- Add
filter:api.user.me.subscription-videos.list.params
&filter:api.user.me.subscription-videos.list.result
#5648 - Add
filter:activity-pub.activity.context.build.result
to update ActivityPub JSON-LD context - Add
filter:activity-pub.video.json-ld.build.result
to updateVideo
ActivityPub JSON-LD object - Add
action:activity-pub.remote-video.created
&action:activity-pub.remote-video.updated
to react on remote video creation/update
- Add
- Client plugin hooks (https://docs.joinpeertube.org/api/plugins):
- Add
action:video-edit.form.updated
fired every time the video upload/import/live/update form values change - Add
filter:video-watch.video-plugin-metadata.result
to add custom video metadata in watch page - Existing
action:video-edit.init
hook now contains aupdateForm
attribute in options that you can use to update video upload/import/live/update form values
- Add
- Add server plugin helpers:
getServerListeningConfig
to get PeerTube listening configuration
- Convert some colors to PeerTube CSS variables to improve theme compatibility
Features
- 🎉 Implement user registration approval (https://docs.joinpeertube.org/admin/managing-users#registration-approval) #5544
- If enabled, the user has to fill a Registration reason input
- Moderators have to to accept/reject the registration with a Moderation response that will be sent by email to the user
- If the registration is accepted, the user and its channel are automatically created
- Add "back to live" button in player
- The Live button is red when the player is synced with the live
- It becomes grey when behind the live edge
- Clicking on the grey button re-sync the player with the live edge
- Add Icelandic & Ukrainian locales
- Add Global views default trending algorithm option in admin configuration #5471
- Performance:
- Blocked IPs by the tracker are now stored in NodeJS memory instead of Redis, reducing PeerTube load
- Optimize video comments SQL requests
- Optimize custom markup live rendering in admin
- UI/UX:
- Add option in video/playlist share modal to create a responsive embed #5690
- Use
99+
instead of99
when having more than99
notifications - Use channel display name instead of channel handle in My videos input filter #5575
- Display channel name in playlist element instead of account name
- Display channel as author in RSS feeds
- Improve/fix main pages keyboard navigation
- Custom markup:
- Support
mailto
links - Support short UUID to fetch a video
- Support
- Admins can customize access and refresh tokens lifetime
Bug fixes
- Fix object storage incompatibility with some S3 providers that don't support ACL
- Fix signup limit
- Prevent
500
on invalid short UUID parameter - Player:
- Fix live buffering with small latency setting
- More robust player "stats for nerds" popup if there is not stream available
- Don't display playback rate setting for lives
- Don't handle playback rate hotkeys for lives
- Fix clicking on PeerTube instance button
- Fix always resuming the end of the video
- Fix saving last video current time for anonymous users
- Fix player keyboard shortcuts for non latin keyboards #5684
- Process videos list requests in correct order
- Correctly fill the Support field when updating a video
- Fix Auto play video setting for anonymous users
- UI:
- Fix table columns max width
- Use Unknown instead of Misc when the video category is not set
- Prevent layout shift when listing videos
- Fix instance stats anchor link
- Fix menu content overlay on tablets
- Fix button overflows
- Handle
502
HTTP errors in client notifier - Fix resetting chart zoom in video stats page
- Fix search page not loading all available results
- Fix confirmation modal that contains 2 text inputs
- Display the update button when the stable release of beta/alpha plugin is available
- Always list NSFW videos in playlists (the frontend is in charge to blur the video element if the NSFW setting is Hide or Blur)
- Always list NSFW videos in admin
- Improve client log report:
- Don't send client error on 404
- Prevent sending invalid error/warn logs coming from HLS player #5484
- Fix out of sync audio when cutting a video in Studio
- Fix "unique viewers" inconsistency with countries
- Fix mention detection in comments
- Fix listing all my channels in My library
- Fix displaying remote avatars
- Fix 404 HTTP code in watch page when having
;threadId
param in URL - Correctly re-inject video file token in
.m3u8
resolution playlists to fetch private mp4 video file #5677 - Don't process live when moving videos to external storage
- Handle Redis disconnection gracefully #5599
v5.1.0-rc.1
IMPORTANT NOTES
- Update web browsers support list:
- Drop support of Safari 11 on iOS
- Drop support of Safari 11 on desktop
- Drop support of Firefox 68 on desktop
- Minimum recommended Redis version is 6.2. Version 6.0 should still work: see this comment for more information
Maintenance
- PeerTube OpenTelemetry
- Add BitTorrent tracker metrics
- Add ability to disable HTTP request duration metrics (can have a high tag cardinality)
- Add
x-powered-by
HTTP header in PeerTube response. Can be disabled in PeerTube configuration
Documentation
- PeerTube documentation website now uses VitePress: https://docs.joinpeertube.org
Plugins/Themes/Embed API
- Add ability to set
playbackRate
in URL (watch page and embed) #5486 - Auth plugins:
- Can set default
adminFlags
,videoQuota
andvideoQuotaDaily
user attributes - Introduce
userUpdater
hook function so external auth plugins can update the user on user login: https://docs.joinpeertube.org/contribute/plugins#add-external-auth-methods - Automatically redirect to the default external auth on PeerTube refresh token expiration
- Can set default
- Add server plugin hooks (https://docs.joinpeertube.org/api/plugins):
filter:api.user.me.subscription-videos.list.params
&filter:api.user.me.subscription-videos.list.result
#5648
- Add server plugin helpers:
getServerListeningConfig
to get PeerTube listening configuration
- Convert some colors to PeerTube CSS variables to improve theme compatibility
Features
- 🎉 Implement user registration approval (https://docs.joinpeertube.org/admin/managing-users#registration-approval) #5544
- If enabled, the user has to fill a Registration reason input
- Moderators have to to accept/reject the registration with a Moderation response that will be sent by email to the user
- If the registration is accepted, the user and its channel are automatically created
- Add "back to live" button in player
- The Live button is red when the player is synced with the live
- It becomes grey when behind the live edge
- Clicking on the grey button re-sync the player with the live edge
- Add Icelandic & Ukrainian locales
- Add Global views default trending algorithm option in admin configuration #5471
- Performance:
- Blocked IPs by the tracker are now stored in NodeJS memory instead of Redis, reducing PeerTube load
- Optimize video comments SQL requests
- Optimize custom markup live rendering in admin
- UI/UX:
- Use
99+
instead of99
when having more than99
notifications - Use channel display name instead of channel handle in My videos input filter #5575
- Display channel name in playlist element instead of account name
- Display channel as author in RSS feeds
- Use
- Custom markup:
- Support
mailto
links - Support short UUID to fetch a video
- Support
- Admins can customize access and refresh tokens lifetime
Bug fixes
- Fix object storage incompatibility with some S3 providers that don't support ACL
- Fix signup limit
- Prevent
500
on invalid short UUID parameter - Player:
- More robust player "stats for nerds" popup if there is not stream available
- Don't display playback rate setting for lives
- Don't handle playback rate hotkeys for lives
- Fix clicking on PeerTube instance button
- Fix always resuming the end of the video
- Process videos list requests in correct order
- Correctly fill the Support field when updating a video
- Fix Auto play video setting for anonymous users
- UI:
- Fix table columns max width
- Use Unknown instead of Misc when the video category is not set
- Prevent layout shift when listing videos
- Fix instance stats anchor link
- Fix menu content overlay on tablets
- Fix button overflows
- Handle
502
HTTP errors in client notifier - Fix resetting chart zoom in video stats page
- Fix search page not loading all available results
- Display the update button when the stable release of beta/alpha plugin is available
- Always list NSFW videos in playlists (the frontend is in charge to blur the video element if the NSFW setting is Hide or Blur)
- Always list NSFW videos in admin
- Improve client log report:
- Don't send client error on 404
- Prevent sending invalid error/warn logs coming from HLS player #5484
- Fix out of sync audio when cutting a video in Studio
- Fix "unique viewers" inconsistency with countries
- Fix mention detection in comments
v5.0.1
IMPORTANT NOTES
- If you upgrade from PeerTube < 5.0.0, please follow 5.0.0 IMPORTANT NOTES
Bug fixes
- Fix HLS player infinite loading when the live stream/video ends
- Do not autoplay live without autoplay setting
- Fix private/internal video playback from Cloudflare object storage
- Fix local channel stats/OpenTelemetry metric
- Also display dropdown for videos from the homepage
- Fix broken P2P with live stream coming from object storage
- Fix responsive of table pagination
v5.0.0
IMPORTANT NOTES
- Important Private and internal video files are now protected. See #5370 for more information, but see below for most important information:
- For private/internal videos on filesystem:
- These videos are now under a
private/
subdirectory invideos/
andstreaming-playlists/
directories - Nginx doesn't serve these private files anymore, the requests are forwarded to PeerTube that will check authentication
- These videos are now under a
- For private/internal videos in object storage:
- These videos have now a private ACL
- PeerTube proxifies requests to private object storage (using pre-signed URLs is not possible as explained in #5370)
- Torrent files and magnet URIs of private/internal videos don't contain a webseed URL anymore since they require authentication
- For private/internal videos on filesystem:
- Important You need to manually execute a migration script after your upgrade to migrate private/internal video files:
- 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-5.0.js
- Docker installation:
cd /var/www/peertube-docker && docker-compose exec -u peertube peertube node dist/scripts/migrations/peertube-5.0.js
- Classic installation:
- Configuration changes (
config/production.yaml
):- There is a new
secrets.peertube
configuration:- Classic install: fill it before running PeerTube v5: https://github.com/Chocobozzz/PeerTube/blob/v5.0.0/config/production.yaml.example#L14
- Docker install: fill it using an env variable before running the containers: https://github.com/Chocobozzz/PeerTube/blob/develop/support/docker/production/.env#L27
object_storage.upload_acl
is now a parent key that you must update: https://github.com/Chocobozzz/PeerTube/blob/v5.0.0/config/production.yaml.example#L153
- There is a new
- You must update your nginx configuration:
- We introduced a new
location
for plugin websocket routes: https://github.com/Chocobozzz/PeerTube/blob/v5.0.0/support/nginx/peertube#L135 - We introduced a new
location
for private videos files: https://github.com/Chocobozzz/PeerTube/blob/v5.0.0/support/nginx/peertube#L217
- We introduced a new
Documentation
- Add Monitoring/Observability documentation using PeerTube OpenTelemetry feature
Maintenance
- REST API breaking change:
role
is nowrole.id
androleLabel
isrole.label
in user response- We now store the complete remote video description:
- Deprecate
description
in favour oftruncatedDescription
when listing videos - Complete description is sent by the server in
description
when getting a specific video - Deprecate
/api/v1/videos/:id/description
endpoint
- Deprecate
search.disable_local_search
disables local search in client search bar only and doesn't disable it on server side anymore #5411
Plugins/Themes/Embed API
- Add server plugin hooks (https://docs.joinpeertube.org/api-plugins):
filter:activity-pub.remote-video-comment.create.accept.result
- Add server plugin helpers
socket.sendNotification
andsocket.sendVideoLiveNewState
#5239
- Add ability for plugins to register a websocket route using
registerWebSocketRoute
- Add client plugin hooks (https://docs.joinpeertube.org/api-plugins):
filter:internal.player.p2p-media-loader.options.result
#5318
CLI tools
- Add ability to install alpha/beta/rc plugin versions
Features
- 🎉 Support object storage for live streams 🎉
- 🎉 Support Two Factor authentication (OTP) 🎉
- UX:
- Add explanation on disk space used for user quota admin config #5305
- Display channel in my videos list
- Show which playlists videos are added to in my videos list
- Add Channels link in left menu
- Add
...
after the truncated video name in miniature - Add object storage info badge in videos admin overview
- Add links to video files in videos admin overview
- Better indicate the live ended in embed by displaying a message and the live preview
- Force live autoplay by muting the video if necessary when the user was waiting for the live
- Handle network issues in video player #5138
- Cache chunks to upload in server to resume upload later #5224
- Add ability to serve custom static files under
/.well-known
URL path #5214 - Use account/channel avatar in account/channel RSS feeds #5325
- Add filter to sort videos by name #5351
- Add ability to configure OpenTelemetry Prometheus exporter listening hostname
Bug fixes
- Hide all user email block if we can't change it (remote auth for example)
- Display an error if trying to reset password of user configured to use a remote authentication
- Fix peers info width in live
- Fix video job error when video has been deleted
- Fix user channels list with increased max counter
- More robust channel/playlist import/sync
- Hide useless Wait Transcoding input for lives
- Fix responsive in account channels list
- Fix slow page response when listing many videos
- Reload data when deleting a blocked video
- Prevent error with metrics in HTTP player if no P2P info is available
- Fix playlist overflow in account channels page
- Fix invalid date display for jobs
- Fix conflict with player hotkeys and
alt + number
web browser hotkey - Fix horizontal overflow on rtl languages
- Fix actor follow constraint error on remote videos when Allow users to do remote URI/handle search is disabled
- Fix running again transcoding on a video that doesn't contain audio or on a video that doesn't contain video
- Fix re-transcoding of video with odd resolution
- Fix embed API with playlists
- Fix not working P2P with permanent live
- Fix following/fetching remote Pleroma actor
- Prevent high Redis memory usage when having many jobs
- Fix overall viewers stats with start/end dates
- Remove limit of countries displayed in video/live stats
v5.0.0-rc.1
IMPORTANT NOTES
- Important Private and internal video files are now protected. See #5370 for more information, but see below for most important information:
- For private/internal videos on filesystem:
- These videos are now under a
private/
subdirectory invideos/
andstreaming-playlists/
directories - Nginx doesn't serve these private files anymore, the requests are forwarded to PeerTube that will check authentication
- These videos are now under a
- For private/internal videos in object storage:
- These videos have now a private ACL
- PeerTube proxifies requests to private object storage (using pre-signed URLs is not possible as explained in #5370)
- Torrent files and magnet URIs of private/internal videos don't contain a webseed URL anymore since they require authentication
- For private/internal videos on filesystem:
- Important You need to manually execute a migration script after your upgrade to migrate private/internal video files:
- 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-5.0.js
- Docker installation:
cd /var/www/peertube-docker && docker-compose exec -u peertube peertube node dist/scripts/migrations/peertube-5.0.js
- Classic installation:
- There is a new
secrets.peertube
configuration. You must fill it before running PeerTube v5 - You must update your nginx configuration:
- We introduced a new
location
for plugin websocket routes - We introduced a new
location
for private videos files
- We introduced a new
Documentation
- Add Monitoring/Observability documentation using PeerTube OpenTelemetry feature
Maintenance
- REST API breaking change:
role
is nowrole.id
androleLabel
isrole.label
in user response- We now store the complete remote video description:
- Deprecate
description
in favour oftruncatedDescription
when listing videos - Complete description is sent by the server in
description
when getting a specific video - Deprecate
/api/v1/videos/:id/description
endpoint
- Deprecate
search.disable_local_search
disables local search in client search bar only and doesn't disable it on server side anymore #5411
Plugins/Themes/Embed API
- Add server plugin hooks (https://docs.joinpeertube.org/api-plugins):
filter:activity-pub.remote-video-comment.create.accept.result
- Add server plugin helpers
socket.sendNotification
andsocket.sendVideoLiveNewState
#5239
- Add ability for plugins to register a websocket route using
registerWebSocketRoute
- Add client plugin hooks (https://docs.joinpeertube.org/api-plugins):
filter:internal.player.p2p-media-loader.options.result
#5318
CLI tools
- Add ability to install alpha/beta/rc plugin versions
Features
- 🎉 Support object storage for live streams 🎉
- 🎉 Support Two Factor authentication (OTP) 🎉
- UX:
- Add explanation on disk space used for user quota admin config #5305
- Display channel in my videos list
- Show which playlists videos are added to in my videos list
- Add Channels link in left menu
- Add
...
after the truncated video name in miniature - Add object storage info badge in videos admin overview
- Add links to video files in videos admin overview
- Better indicate the live ended in embed by displaying a message and the live preview
- Force live autoplay by muting the video if necessary when the user was waiting for the live
- Handle network issues in video player #5138
- Cache chunks to upload in server to resume upload later #5224
- Add ability to serve custom static files under
/.well-known
URL path #5214 - Use account/channel avatar in account/channel RSS feeds #5325
- Add filter to sort videos by name #5351
- Add ability to configure OpenTelemetry Prometheus exporter listening hostname
Bug fixes
- Hide all user email block if we can't change it (remote auth for example)
- Display an error if trying to reset password of user configured to use a remote authentication
- Fix peers info width in live
- Fix video job error when video has been deleted
- Fix user channels list with increased max counter
- More robust channel/playlist import/sync
- Hide useless Wait Transcoding input for lives
- Fix responsive in account channels list
- Fix slow page response when listing many videos
- Reload data when deleting a blocked video
- Prevent error with metrics in HTTP player if no P2P info is available
- Fix playlist overflow in account channels page
- Fix invalid date display for jobs
- Fix conflict with player hotkeys and
alt + number
web browser hotkey - Fix horizontal overflow on rtl languages
- Fix actor follow constraint error on remote videos when Allow users to do remote URI/handle search is disabled
- Fix running again transcoding on a video that doesn't contain audio or on a video that doesn't contain video
- Fix re-transcoding of video with odd resolution
- Fix embed API with playlists
- Fix not working P2P with permanent live
- Fix following/fetching remote Pleroma actor
- Prevent high Redis memory usage when having many jobs
- Fix overall viewers stats with start/end dates
v4.3.1
IMPORTANT NOTES
- If you upgrade from PeerTube < 4.3.0, please follow 4.3.0 IMPORTANT NOTES
SECURITY
- Prevent XSS in sort select on pages that list videos. Thanks to Anthony Roth who reported the vulnerability!
Bug fixes
- Fix broken embed player on live reload
- Fix channel follow when manually approve instance followers is enabled
- Fix input with number overflow on small screen
- Fix moderation dropdown overflow on mobile
- Clearer instance subscription page title in admin
- Prevent "Cannot use same state" video error
- Correctly handle RTMP streams without audio
- Correctly process broadcast parallel job in parallel
v4.3.0
IMPORTANT NOTES
- Redis < 5.x is not supported anymore
- FFmpeg < 4.3 is not supported anymore
Maintenance
- Use
yt-dlp
by default instead ofyoutube-dl
for new installations (because of much more dev activity) - Support NodeJS 18
- Improved PeerTube logs:
- Reduce amount of PeerTube error logs
- Introduce
log.log_tracker_unknown_infohash
setting to disable "Unknown infoHash" warnings - Web browsers send their error logs to the server that writes them in its own logs. Can be disabled by
log.accept_client_log
setting
- Introduce experimental support of OpenTelemetry
- Enable metrics export using a Prometheus exporter
- Enable tracing export using a Jaeger exporter
- Automatically rebuild native plugin modules on NodeJS ABI change
Docker
- Add ability to easily use the docker compose stack on localhost
Plugins/Themes/Embed API
- Theme:
- Removed unused
--secondaryColor
CSS variable
- Removed unused
- Add client plugin hooks (https://docs.joinpeertube.org/api-plugins):
filter:api.my-library.video-playlist-elements.list.params
&filter:api.my-library.video-playlist-elements.list.result
#5098action:video-channel-create.init
action:video-channel-update.init
&action:video-channel-update.video-channel.loaded
action:video-channel-videos.init
&action:video-channel-videos.video-channel.loaded
&action:video-channel-videos.videos.loaded
action:video-channel-playlists.init
&action:video-channel-playlists.video-channel.loaded
&action:video-channel-playlists.playlists.loaded
filter:share.video-embed-code.build.params
&filter:share.video-embed-code.build.result
&filter:share.video-playlist-embed-code.build.params
&filter:share.video-playlist-embed-code.build.result
filter:share.video-embed-url.build.params
&filter:share.video-embed-url.build.result
&filter:share.video-playlist-embed-url.build.params
&filter:share.video-playlist-embed-url.build.result
filter:share.video-url.build.params
&filter:share.video-url.build.result
&filter:share.video-playlist-url.build.params
&filter:share.video-playlist-url.build.result
action:modal.share.shown
- Add server plugin hooks (https://docs.joinpeertube.org/api-plugins):
filter:job-queue.process.params
&filter:job-queue.process.result
filter:transcoding.manual.resolutions-to-transcode.result
&filter:transcoding.auto.resolutions-to-transcode.result
action:api.video-channel.created
&action:api.video-channel.updated
&action:api.video-channel.deleted
action:notifier.notification.created
- Add HTML placeholder (https://docs.joinpeertube.org/contribute-plugins?id=html-placeholder-elements):
share-modal-playlist-settings
&share-modal-video-settings
Features
- 🎉 Add ability for users to synchronize a remote channel #5135 🎉
- Automatically import all videos of a remote channel in your PeerTube channel
- PeerTube will watch for new publications and automatically import these new videos
- UI:
- Redesigned Create an account steps
- Improved Login page
- Use a lighter font color
- Use a bigger font size
- Don't display form errors in red while typing but only when we unfocus the input
- Display an error message when the user is unauthorized to view a page #5097
- Display latest upload date for captions
- Add an information if the live will be saved as a replay when displaying live sessions
- Move search bar at the center of the header
- Add Toki Pona and Croatian locales in client
- Embed:
- Display a message and automatically start live streams in embed
- Use the instance name instead of "PeerTube" in embed control bar
- Reuse current watch page query parameters for embed when using OEmbed #5023
- Instance follows:
- Introduce a Rejected state for follow requests to not reprocess already rejected follow requests
- Add bulk actions on instance following/followers ()
- Admins:
- Add ability to disable original resolution transcoding of the uploaded video/live stream
- Add ability to delete a specific video file in videos overview
- Display Last Login column by default in users overview
- Remember last selected columns in users overview
- Add ability to set a custom video import timeout
- Add ability to set the default feed (Atom, RSS...) items count
- Admins and moderators now bypass API rate limits
- Add ability to list comments on local videos in comments overview
- Limit video import resolution depending on enabled VOD transcoding resolutions
- Store and display the uploaded video original filename #4885
- Add Total views in the my channels list #5007
- Add Original Publication Date video sort option #4959
- Performance:
- Optimized view/watching endpoint
- Optimized video feed SQL query
- Process images (resize, convert...) in a dedicated worker thread
- Optimized emoji markup list rendering in client
- Use a worker thread to send ActivityPub Broadcast requests
- Suffix external auth username/channel name on conflict instead of throwing an exception
Bug fixes
- Fix users overview Last login sort in admin
- More robust move to object storage job failure
- Fix comment add avatar with a unauthenticated user
- Fix fetching unlisted video in client
- Fix comments/download enabled attributes when importing a video
- Fix total instance views stats
- Fix HLS player infinite buffering on seek
- Reset table pagination on search
- Host search filter can also search into channels and playlists in global search
- Fix My videos invalid counter
- Prevent error on highlighted thread
- Fix Jobs, Account blocklist and Server blocklist hidden columns on Safari
- Fix live stream max bitrate
- Fix incompatibility with OpenSSL 3
- Don't crash on redis connection error
- Transcoding:
- Fix failed transcoding with a mp3 file that contains a cover image
- Prevent duplicated HLS playlist when running transcoding
- Regenerate video file names when running transcoding manually
- Prevent job failures resulting in broken videos on concurrent transcoding
- Fix transcoding of videos with quad audio channels
- ActivityPub
- Fix random invalid HTTP signature generation
- Use unique AP id for Accept/Reject activities
- Correctly handle remote actors that don't have follow counters
- Correctly handle unknown remote actor image size
- Add years in graph legend when grouping video views stats by month
- Prevent creating multiple lives when clicking multiple times on the "Go Live" button
- Fix *undefined" resolution in player Stats for nerds
- Fix not displayed error message in administrator web config
- More robust S3 upload #5231
- Fix broken saved live stream with only one resolution
- Fix
removeEventListener
player embed api - Progressively cleanup actor images without width from the database
- Fix broken dates on localized pages
- Prevent job queue to be started before plugins
- Fix old database enum names
- Don't display remove file icon in admin videos overviews if we can't delete the file