PeerTube Versions Save

ActivityPub-federated video streaming platform using P2P directly in your web browser

v6.0.3

2 months ago

IMPORTANT NOTES

  • If you upgrade from PeerTube < v6.0.0, please follow v6.0.0 IMPORTANT NOTES
  • If you upgrade from PeerTube v6.0.0, please follow v6.0.1 IMPORTANT NOTES

SECURITY

  • Prevent nginx from serving private/internal/password protected HLS video static files
    • You must update your nginx configuration like in this commit (line 202 replace location ~ ^(/static/(webseed|web-videos|streaming-playlists)/private/)|^/download { by location ~ ^(/static/(webseed|web-videos|streaming-playlists/hls)/private/)|^/download {)

Bug fixes

  • Fix HTML meta tags with attributes that contain quotes
  • Fix time parsing resulting in broken video start time in some cases
  • Fix WebTorrent video import crash
  • Reload Discover page on logout
  • Fix privacy error when updating a live, even if the privacy has not changed
  • Fix invalid remote live state change notification that causes the player to reload
  • Don't apply big play button skin to settings menu
  • Fix downloading video files from object storage with some video names (that include emojis, quotes etc)
  • Fix thumbnail generation when ffmpeg cannot seek the input
  • Fix theme colors on stats page
  • Fix input mask (used for chapters, playlist timecodes...) with 10h+ videos
  • Fix chapter position width consistency
  • Fix player ratio with audio only videos
  • Also update video playlist URLs when using update-host script
  • Fix upload/import/update of videos that contain multiple chapters with the same timecode

v6.0.2

3 months ago

IMPORTANT NOTES

  • If you upgrade from PeerTube < v6.0.0, please follow v6.0.0 IMPORTANT NOTES
  • If you upgrade from PeerTube v6.0.0, please follow v6.0.1 IMPORTANT NOTES

Bug fixes

  • Fix upgrade.sh when Peertube is installed outside the standard path #6064
  • Fix importing videos with too long chapter name
  • Don't create chapters from description if there is only one
  • Ensure user is owned by the auth plugin before updating its attributes
  • Improve channels and accounts SEO by fixing structured JSON-LD data and canonical URLs
  • Originally published and reupload date format consistency in watch page
  • Fix cpu count when cpu info not available
  • Fix embed when waiting for a live
  • Fix updating already started live if live attributes don't change
  • Fix displaying many countries in video stats

v6.0.1

3 months ago

IMPORTANT NOTES

  • If you upgrade from PeerTube < v6.0.0, please follow v6.0.0 IMPORTANT NOTES
  • We've made some modifications in v6.0.0 IMPORTANT NOTES, so if you upgrade from PeerTube v6.0.0:
    • Ensure location = /api/v1/videos/upload-resumable { has been replaced by location ~ ^/api/v1/videos/(upload-resumable|([^/]+/source/replace-resumable))$ { in your nginx configuration
    • Ensure you updated storage.web_videos configuration value to use web-videos/ directory name
    • Ensure your directory name on filesystem is the same as storage.web_videos configuration value: directory on filesystem must be renamed from videos/ to web-videos/ to represent the value of storage.web_videos

Bug fixes

  • Fix CPU going to 100% on odd cpu count
  • Increase storyboard generation job TTL
  • Add missing generate-video-storyboard job type in admin jobs list
  • Regenerate storyboard after studio job

v6.0.0

4 months ago

PeerTube is developed by a not-for profit: Framasoft

As such, our main source of fundings are donations, usually from the French-speaking FOSS community.

Dear PeerTube admins, please help us spread the word that Framasoft is raising donations until the end of the year to fund and secure its 2024 budget, on our support page : https://soutenir.framasoft.org

IMPORTANT NOTES

We have many important notes in this release. We know it's a pain for sysadmin, but consider each one as a major step forward for PeerTube quality!

Sysadmins important notes

Developers important notes

  • REST API breaking changes:

    • Removed webtorrentEnabled from user response (deprecated since 4.1 in favour of p2pEnabled)
    • Removed avatar and banner fields from account/channel responses (deprecated since 4.2 in favour of avatars and banners)
    • Removed filter query when listing videos (deprecated since 4.0 in favour of isLocal and include)
    • Deprecate /api/v1/videos/:id/webtorrent video file routes in favour of /api/v1/videos/:id/web-videos routes
    • Deprecate hasWebtorrentFiles body video filter in favour of hasWebVideoFiles when listing videos
    • Deprecate webtorrent transcodingType in favour of web-video in /api/v1/videos/{id}/transcoding route
    • currentTime is now required to notify the user is watching the video using /api/v1/videos/{id}/views (introduced in 4.2)
  • Static server paths breaking changes:

    • /static/webseed/... is deprecated in favour of /static/web-videos/...
    • /object-storage-proxy/webseed/... is deprecated in favour of /object-storage-proxy/web-videos/...
    • /static/thumbnails/... is deprecated in favour of /static/lazy-thumbnails/...
  • Plugin API breaking changes:

    • Deprecated webtorrent key in getFiles() helper result. Use webVideo instead

CLI tools

Features

  • :tada: Add "Password protected" video privacy #5836 :tada:
    • A single password can be set using the web interface at video upload/import/update
    • The REST API can store as many passwords as you want, allowing developers to use this feature to easily give or revoke access to a video on the fly
    • Developers that use PeerTube embeds can set the video password using the embed API
  • :tada: Add video storyboard support :tada:
    • PeerTube automatically generates a storyboard on video upload/import
    • Viewers can see the image around the targeted timecode when hovering the progress bar
    • Storyboard of videos uploaded/imported before v6 can be generated by the admin using npm run create-generate-storyboard-job command: https://docs.joinpeertube.org/maintain/tools#generate-storyboard
  • :tada: Add ability for users to replace their video file :tada:
    • Has to be enabled by the PeerTube instance administrator
    • The user can replace the video file in the Update Video page
    • The re-upload date is displayed under the video player
  • :tada: Add video chapters support :tada:
    • Add chapters in the upload/import/update video page or let PeerTube automatically imports them from the video container/youtube-dl
    • Markers are displayed in the player progress bar to symbolize a chapter
    • Chapter title is displayed when hovering/touching the player progress bar
  • Better video player:
    • More efficient as we don't rebuild the player every time the played video changes
    • The player keeps the current player settings (playback speed, fullscreen...) when the played video changes
    • Automatically adjust the player size to match video ratio
  • Improve SEO and video link sharing:
    • Use short video/channel/account URLs in sitemap and for canonical tags
    • Add JSON-LD tag in embed page
    • Embed page does not forbid indexation anymore: we use a canonical tag instead that targets the watch page
    • Forbid indexation of remote videos, accounts and channels (instead of providing an invalid canonical tag)
    • Truncate OpenGraph/Twitter card link description
  • Fix client accessibility and keyboard navigation:
    • Fix links in bootstrap alerts color
    • Better input placeholder contrast
    • Fix video miniature link label
    • Add ability to disable hotkeys
    • Improve table overall accessibility
    • Wrap icons that can lead to an action inside buttons
    • Fix left menu admin/my-library menu accessibility
    • And many more improvements!
  • Improve remote runner management:
    • Add ability to remove runner jobs
    • Add runner job state quick filter
    • Merge registration tokens and runners tables in same page
    • Add copy button to copy registration token
  • Add ability for admins to force transcoding on a specific video even if it's in broken state (stuck in To Transcode for example)
  • Add an option to sign federated fetches (ActivityPub based software such as Mastodon may require it to access content)
  • Download video file directly from S3 using pre signed URLs
  • Lazy download remote video thumbnails to reduce storage
  • Improve recommended videos when the watched video doesn't have tags set
  • Add more rate limits in configuration (plugins, well-known, feeds, activity_pub and client endpoints)
  • Add ability to reset video Originally published at attribute
  • Add ability for admins to set the default user channel name #6000
  • Server now uses ESM modules
  • Add worker threads Prometheus metrics
  • Performance:
    • Process unicast HTTP job in worker threads
    • Sign ActivityPub requests in worker threads
    • Optimize recommended videos HTTP request
    • Optimize videos SQL queries when filtering on lives or tags
    • Optimize /videos/{id}/views endpoint with many viewers
    • Add ability to disable PeerTube HTTP logs
    • Optimize homepage videos HTTP queries

Bug fixes

  • Don't cache upload response if the video has been deleted
  • Fix broken upgrade script when using custom database port
  • Prevent duplicate runner names
  • Avoid runner job update error
  • Notify remote runners there are available jobs when a job is aborted/errored
  • Fix updating P2P settings in left menu
  • Fix 500 HTTP error on invalid short UUID conversion
  • Don't display admin email in security.txt well-known endpoint
  • Optimize update-host script to fix out of memory error
  • Fix error log when using an unconventional distribution of FFmpeg with a non-standard version string #5917
  • Fix live replay REST API breaking change: replaySettings.privacy is not required anymore
  • Fix broken live replay when updating replay privacy
  • More robust About page when getting category from server
  • Fix ERR_HTTP_HEADERS_SENT crash
  • Avoid illegal characters in torrent filename
  • Avoid federation error log with remote Like on Note
  • Fix atom feed with Science & Technology category
  • Support empty value returned by filter:api.video.get.result hook
  • Prevent remote subscribe on accounts (not yet supported by PeerTube)
  • Fix feed audio file mimetype
  • Fix video quality on high video resolution/fps
  • Fix disabling Object Storage ACL using Docker env PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PUBLIC and PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PRIVATE in .env
  • Correctly end live session on ffprobe error
  • Fix video stats X axis with old videos
  • Fix empty master playlist upload on s3
  • Correctly generate production.yaml.new that should merge your current production.yaml with new keys defined by PeerTube
  • Fix card font color theme
  • Respect "transcode original resolution" setting when using remote runners
  • Prevent player mobile buttons flickering
  • Fix graph zooming end date

v6.0.0-rc.2

4 months ago

Since v6.0.0-rc.1

Bug fixes

  • Correctly generate production.yaml.new that should merge your current production.yaml with new keys defined by PeerTube
  • Don't break scripts/upgrade.sh path. If you upgraded to v6.0.0-rc.1 you can find the upgrade script in dist/scripts/upgrade.sh
  • Fix notification scrolling
  • Add ability to customize frames to analyze in configuration (fix too long upload on low-power hardware)
  • Fix player ratio on mobile with portrait videos
  • Update page title and description on video change
  • Adapt storyboard sprite ratio
  • Fix card font color theme
  • Optimize homepage videos query
  • Respect "transcode original resolution" setting when using remote runners
  • Prevent player mobile buttons flickering

v6.0.0-rc.1

4 months ago

IMPORTANT NOTES

We have many important notes in this release. We know it's a pain for sysadmin, but consider each one as a major step forward for PeerTube quality!

Sysadmins important notes

Developers important notes

  • REST API breaking changes:

    • Removed webtorrentEnabled from user response (deprecated since 4.1 in favour of p2pEnabled)
    • Removed avatar and banner fields from account/channel responses (deprecated since 4.2 in favour of avatars and banners)
    • Removed filter query when listing videos (deprecated since 4.0 in favour of isLocal and include)
    • Deprecate /api/v1/videos/:id/webtorrent video file routes in favour of /api/v1/videos/:id/web-videos routes
    • Deprecate hasWebtorrentFiles body video filter in favour of hasWebVideoFiles when listing videos
    • Deprecate webtorrent transcodingType in favour of web-video in /api/v1/videos/{id}/transcoding route
    • currentTime is now required to notify the user is watching the video using /api/v1/videos/{id}/views (introduced in 4.2)
  • Static server paths breaking changes:

    • /static/webseed/... is deprecated in favour of /static/web-videos/...
    • /object-storage-proxy/webseed/... is deprecated in favour of /object-storage-proxy/web-videos/...
    • /static/thumbnails/... is deprecated in favour of /static/lazy-thumbnails/...
  • Plugin API breaking changes:

    • Deprecated webtorrent key in getFiles() helper result. Use webVideo instead

CLI tools

Features

  • :tada: Add "Password protected" video privacy #5836 :tada:
    • A single password can be set using the web interface at video upload/import/update
    • The REST API can store as many passwords as you want, allowing developers to use this feature to easily give or revoke access to a video on the fly
  • :tada: Add video storyboard support :tada:
    • PeerTube automatically generates a storyboard on video upload/import
    • Viewers can see the image around the targeted timecode when hovering the progress bar
    • Storyboard of videos uploaded/imported before v6 can be generated by the admin using npm run create-generate-storyboard-job command
  • :tada: Add ability for users to replace their video file :tada:
    • Has to be enabled by the PeerTube instance administrator
    • The user can replace the video file in the Update Video page
    • The re-upload date is displayed under the video player
  • :tada: Add video chapters support :tada:
    • Add chapters in the upload/import/update video page or let PeerTube automatically imports them from the video container/youtube-dl
    • Markers are displayed in the player progress bar to symbolize a chapter
    • Chapter title is displayed when hovering/touching the player progress bar
  • Better video player:
    • More efficient as we don't rebuild the player every time the played video changes
    • The player keeps the current player settings (playback speed, fullscreen...) when the played video changes
    • Automatically adjust the player size to match video ratio
  • Improve SEO and video link sharing:
    • Use short video/channel/account URLs in sitemap and for canonical tags
    • Add JSON-LD tag in embed page
    • Embed page does not forbid indexation anymore: we use a canonical tag instead that targets the watch page
    • Forbid indexation of remote videos, accounts and channels (instead of providing an invalid canonical tag)
    • Truncate OpenGraph/Twitter card link description
  • Fix client accessibility and keyboard navigation:
    • Fix links in bootstrap alerts color
    • Better input placeholder contrast
    • Fix video miniature link label
    • Add ability to disable hotkeys
    • Improve table overall accessibility
    • Wrap icons that can lead to an action inside buttons
    • Fix left menu admin/my-library menu accessibility
    • And many more improvements!
  • Improve remote runner management:
    • Add ability to remove runner jobs
    • Add runner job state quick filter
    • Merge registration tokens and runners tables in same page
    • Add copy button to copy registration token
  • Add ability for admins to force transcoding on a specific video even if it's in broken state (stuck in To Transcode for example)
  • Add an option to sign federated fetches (ActivityPub based software such as Mastodon may require it to access content)
  • Download video file directly from S3 using pre signed URLs
  • Lazy download remote video thumbnails to reduce storage
  • Improve recommended videos when the watched video doesn't have tags set
  • Add more rate limits in configuration (plugins, well-known, feeds, activity_pub and client endpoints)
  • Add ability to reset video Originally published at attribute
  • Add ability for admins to set the default user channel name #6000
  • Server now uses ESM modules
  • Add worker threads Prometheus metrics
  • Performance:
    • Process unicast HTTP job in worker threads
    • Sign ActivityPub requests in worker threads
    • Optimize recommended videos HTTP request
    • Optimize videos SQL queries when filtering on lives or tags
    • Optimize /videos/{id}/views endpoint with many viewers
    • Add ability to disable PeerTube HTTP logs

Bug fixes

  • Don't cache upload response if the video has been deleted
  • Fix broken upgrade script when using custom database port
  • Prevent duplicate runner names
  • Avoid runner job update error
  • Notify remote runners there are available jobs when a job is aborted/errored
  • Fix updating P2P settings in left menu
  • Fix 500 HTTP error on invalid short UUID conversion
  • Don't display admin email in security.txt well-known endpoint
  • Optimize update-host script to fix out of memory error
  • Fix error log when using an unconventional distribution of FFmpeg with a non-standard version string #5917
  • Fix live replay REST API breaking change: replaySettings.privacy is not required anymore
  • Fix broken live replay when updating replay privacy
  • More robust About page when getting category from server
  • Fix ERR_HTTP_HEADERS_SENT crash
  • Avoid illegal characters in torrent filename
  • Avoid federation error log with remote Like on Note
  • Fix atom feed with Science & Technology category
  • Support empty value returned by filter:api.video.get.result hook
  • Prevent remote subscribe on accounts (not yet supported by PeerTube)
  • Fix feed audio file mimetype
  • Fix video quality on high video resolution/fps
  • Fix disabling Object Storage ACL using Docker env PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PUBLIC and PEERTUBE_OBJECT_STORAGE_UPLOAD_ACL_PRIVATE in .env
  • Correctly end live session on ffprobe error
  • Fix video stats X axis with old videos
  • Fix empty master playlist upload on s3

v5.2.1

6 months ago

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

9 months ago

IMPORTANT NOTES

Maintenance

  • Remove npm run create-transcoding-job and npm 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 current production.yaml. After a review you can replace your old config/production.yaml with this new file so you don't have to add new keys manually
    • Add ls option compatibility with FreeBSD #5785

Docker

  • Make database name configurable using env variable #5734

Plugins/Themes/Embed API

  • Add filter:html.client.json-ld.result hook

Features

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 using script/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

9 months ago

IMPORTANT NOTES

Maintenance

  • Remove npm run create-transcoding-job and npm 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 current production.yaml. After a review you can replace your old config/production.yaml with this new file so you don't have to add new keys manually
    • Add ls option compatibility with FreeBSD #5785

Docker

  • Make database name configurable using env variable #5734

Plugins/Themes/Embed API

  • Add filter:html.client.json-ld.result hook

Features

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 using script/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

1 year ago

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

Plugins/Themes/Embed API

  • Add ability to set playbackRate in URL (watch page and embed) #5486
  • Auth plugins:
  • 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 update Video ActivityPub JSON-LD object
    • Add action:activity-pub.remote-video.created & action:activity-pub.remote-video.updated to react on remote video creation/update
  • 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 a updateForm attribute in options that you can use to update video upload/import/live/update form values
  • Add server plugin helpers:
    • getServerListeningConfig to get PeerTube listening configuration
  • Convert some colors to PeerTube CSS variables to improve theme compatibility

Features

  • :tada: 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 of 99 when having more than 99 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
  • 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