Skip to content

Releases: iv-org/invidious

Release v2.20250913.0

13 Sep 17:56
v2.20250913.0
cf019e3
Compare
Choose a tag to compare

Wrap-up

This release primarily marks Invidious companion's ascend out of beta and its stable integration thereof into Invidious!

For those unaware Invidious companion is the successor to the inv-sig-helper tool, designed to securely pass YouTube's attestation checks and allow for the efficient retrieval and playback of video streams reliably.

Companion delivers YouTube fixes faster since it’s built on the community-driven YouTube.js project, used by many open source projects such as FreeTube.

For more information see https://github.com/iv-org/invidious-companion and https://docs.invidious.io/installation/

But companion isn't the only new thing in this release!

Invidious will no longer error out completely as soon as a single item failed to parse in search results, channel pages, etc. Instead it now handles it gracefully by substituting those problematic items with an error card and rendering the page normally.

The player has gained some quality of life features such as being able to choose a default playlist for videos to be added to, or persisting caption appearance settings across the session.

Base Invidious video retrieval without Invidious companion has also been made more stable.

And finally a significant amount of bugs were fixed alongside many other minor improvements.

New features & important changes

For Users

  • DASH is now enabled by default due to YouTube's removal of the 720p non-dash streams
  • Javascript licencing info has been added to all of Invidious' scripts, restoring full compatibility with LibreJS
  • There is no longer an option for a text captcha during registration due to the shutdown (presumably) of the upstream service
  • Parse errors in feeds will no longer render the entire feed unusable and instead will substitute only the broken items with error cards
  • Keyboard shortcuts have been added to configure caption styles:
    • -,= can be used to change the font size
    • o can be used to cycle the opacity of the caption text
    • w can be used to cycle the opacity of the caption box
  • Caption styles changed through the VideoJS menu will now persist
  • You can now choose a default playlist to add videos to instead of needing to manually select one each time

For instance owners

  • Invidious companion support has been added to replace the deprecated inv-sig-helper
  • DASH is now the default resolution! Please ensure that your instances can withstand the significantly higher bandwidth usage or manually configure your instance to use non-dash streams by default
  • Invidious will now warn when it is unable to connect to the database instead of failing silently
  • The text captcha during registration has been removed due to the shutdown (presumably) of the upstream service

For developers

  • Dependabot has been added to keep Github Actions and Docker dependencies up-to-date.

  • CI version matrix has been bumped to the latest patch release for each minor version

  • The versions of Crystal that we test in CI/CD are now: 1.12.2, 1.13.3, 1.14.1, 1.15.1, 1.16.3

  • Kilt is no longer a dependency of Invidious

  • The ARM64 docker image builds (and the test CI) has been changed to use Github's ARM64 runner instead of QEMU

  • An "error" JSON object can now be returned in various API responses in-place of an item that has failed to parse:

      {
        "type": "parse-error",
        "errorMessage": "...",
        "errorBacktrace": "..."
      }

Bugs fixed

User-side

  • Livestream will now be properly proxied again allowing playback from the UI
  • The proxy video preference for logged-in users will no longer get ignored when a default value is set by the instance
  • Fixes the missing label key error on select search results and other feeds
  • Invidious will no longer strip out spaces from search queries when navigating back from the preferences page
  • Restores functionality to the subscriptions:true search keyword
  • The channel RSS feeds will no longer have an empty title
  • Individual community posts can be viewed again
  • The playlists tab of channels can be viewed again
  • Fix incorrect dates, region, etc of videos
  • Various minor fixes were made to how video info is extracted in setups without Invidious companion to improve resiliency and chances of success
  • Fix issue where the notification count becomes TRUE rather than an actual number

For instance owners

  • Fixed a minor typo in config.example.yml (effet -> effect)

For developers

  • The docker image test CI will now properly check whether Invidious has started

Full list of pull requests merged since the last release (newest first)

Read more

Release v2.20250517.0

17 May 20:30
Compare
Choose a tag to compare

Inverse fallback for the YouTube client from TVHTML then MWEB. Fixes #5273

Release v2.20250504.0

04 May 10:09
Compare
Choose a tag to compare

Small release with quick workaround fix for issue #4251 (Nil assertion failed).

PR: #5262

Release v2.20250314.0

14 Mar 02:40
e23d0d1
Compare
Choose a tag to compare

Wrap-up

This release brings the long awaited feature of supporting multiple audio tracks in a video, some bug fixes and UX improvements, and many other things primarily oriented to self-hosting instances, and developers using the API.

The Community channel tab has been replaced by Posts in light of YouTube changes, but the URL remains the same.

Tamil is now available as an interface language

Automatic instance redirects will no longer have the chance to annoyingly redirect to the same instance you're on.

Due to their requirements for video playback, Invidious will now log warning messages when either inv-sig-helper, po_token or visitor_data is not configured

Invidious is now able to listen through a UNIX socket

User notifications are now batched for each channel

The minimum Crystal version supported by Invidious now 1.12.0

New features & important changes

For users

  • Invidious now supports videos with multiple audio tracks allowing you to select which one you want to hear with!
  • Channel pages now have a proper previous page button
  • RSS feeds for channels will no longer contain the channel's profile picture
  • Support for channel courses page has been added
  • Community tabs has been replaced with Posts to comply with YouTube changes
  • Tamil is now an available interface language.

For instance owners

  • Invidious is now able to listen on a UNIX socket
  • User notifications are now batched by channels, significantly reducing database load.
  • 1.12.0 is now the oldest Crystal version that Invidious supports
  • The example config will no longer force an http proxy to be configured
  • Invidious will now warn when any top-level config option must be set to a custom value, instead of just HMAC_KEY
  • Due to their requirements for video playback, Invidious will log warning messages when either inv-sig-helper, po_token or visitor_data is not configured

For developers

  • Invidious is now compliant to Crystal 1.15 formatting rules, which are incompatible with earlier versions.
  • /api/v1/transcripts/{id} has been added to the API to allow for fetching the transcripts for a video. The arguments are the same as the captions endpoint.
  • author_thumbnail field has been added to videos in the various paged api endpoints
  • published field has been added to the API response for a video's related videos.
  • Docker builds now uses the Crystal compiler cache, reducing build times on repeated builds significantly.
  • Invidious ajax action handlers has undergone a clean up and may face compatibility issues with code that depends on these endpoints.
  • The versions of Crystal that we test in CI/CD are now: 1.12.1, 1.13.2, 1.14.0, 1.15.0

Bugs fixed

User-side

  • Local video listen mode is now preserved when clicking on a video in the sidebar playlist widget
  • Automatic instance redirects will no longer redirect to the same instance the user is on
  • Fix some thumbnails responses returning 404
  • Videos: Fix missing host parameter on playback URLs when local=true
  • Fix HLS being used for non-livestream videos
  • Fix timeupdate event errors when required elements are missing
  • User: Ensure IO is properly closed when importing NewPipe subscriptions

For instance owners

  • Fix http proxy configuration being forced by the standard example config

API

  • /api/v1/videos/{id} will no longer return an occasional empty JSON response

Full list of pull requests merged since the last release

  • Make Invidious compliant to Crystal 1.15 formatting rules (#5014, by @syeopite)
  • Remove formatter check on container workflows (#5153, by @syeopite)
  • Videos: Fix missing host parameter on playback URLs when local=true (#4992, by @SamantazFox)
  • Remove stdlib override for proxy initialization (#5065, by @syeopite)
  • Add support for author thumbnails in search api for videos (#5072, thanks @ChunkyProgrammer)
  • Skip route if resp got closed by before handlers (#5073, by @syeopite)
  • Fix video thumbnails in mixes (#5116, thanks @iBicha)
  • CI: Drop support for versions prior to 1.12 and add 1.15.0 (#5148, by @syeopite)
  • [Continuing #5094] Set language info for dash audio streams and sort (#5149, thanks @giuliano-macedo)
  • Warn when any top-level config is "CHANGE_ME!!" (#5150, by @syeopite)
  • Comment out http_proxy in example config (#5151, by @syeopite)
  • API: Add a 'published' video parameter for related videos (#4149, thanks @RadoslavL)
  • Ensure IO is properly closed when importing NewPipe subscriptions (#4346, thanks @ChunkyProgrammer)
  • Carry over audio-only mode in playlist links (#4784, thanks @krystof1119)
  • Routes: Clean ajax actions handlers (#5036, by @SamantazFox)
  • Frontend: Add a first page and previous page buttons for channel navigation (#4123, thanks @RadoslavL)
  • RSS: Channel + Playlist improvements (#4298, thanks @ChunkyProgrammer)
  • Batch user notifications together (#4486, thanks @999eagle)
  • JS: Update timeupdate event making it more defensive to prevent errors (#4782, thanks @PMK)
  • Add API endpoint for fetching transcripts from YouTube by (#4788, by @syeopite)
  • Translations update from Hosted Weblate by (#4989, thanks to our many translators)
  • Add the ability to listen on UNIX sockets (#5112, thanks @Caian)
  • Pick a different instance upon redirect (#5154, thanks @epicsam123)
  • Add Courses to channel page and channel API (#5158, thanks @ChunkyProgrammer)
  • fix /api/v1/videos/:id returns 200 with no content (#5162, thanks @Drikanis)
  • Use Crystal compiler cache in docker builds (#5163, by @syeopite)
  • Channels: Fix community tab by (#5183, thanks @Fijxu)
  • Fix typo in src/invidious/routes/images.cr (#5184, by @syeopite)
  • Fix an issue with the HLS manifest check for livestream videos (#5189, thanks @alexmaras)
  • Warn when po_token, visitor_data and/or inv-sig-helper is not configured (#5202, by @syeopite)

Release v2.20241110.0

10 Nov 20:42
v2.20241110.0
5d2dd40
Compare
Choose a tag to compare

Wrap-up

This release is most importantly here to fix to the annoying "Youtube API returned error 400"
error that prevented all channel pages from loading.

If you're updating from the previous release, it provides no improvements on the ability to play
videos. If updating from a commit in-between release, it removes the "Please sign in" error caused
by a previous attempt at restoring video playback on large instances.

In the preferences, a new option allows for control of video preload. When enabled, this option
tells the browser to load the video as soon as the page is loaded (this used to be the default).
When disabled, the video starts loading only when the "play" button is pressed.

New interface languages available: Bulgarian, Welsh and Lombard

New dependency required: tzdata.

An HTTP proxy can be configured directly in Invidious, if needed.
NOTE: In that case, it is recommended to comment out force_resolve.

New features & important changes

For users

  • Channels: Fix "Youtube API returned error 400" error preventing channel pages from loading
  • Channels: Shorts can now be sorted by "newest", "oldest" and "popular"
  • Preferences: Addition of the new "preload" option
  • New interface languages available: Bulgarian, Welsh and Lombard
  • Added "Filipino (auto-generated)" to the list of caption languages available
  • Lots of new translations from Weblate

For instance owners

  • Allow the configuration of an HTTP proxy to talk to Youtube
  • Invidious tries to reconnect to inv_sig_helper if the socket is closed
  • The instance list is downloaded in the background to improve redirection speed
  • New colorize_logs option makes each log level a different color

For developpers

  • /api/v1/channels/{id}/shorts now supports the sort-by parameter with the following values:
    newest, oldest and popular
  • Older /api/v1/channels/xyz/{id} (tab name before UCID) were removed
  • API/Search: New video metadata available: isNew, is4k, is8k, isVr180, isVr360,
    is3d and hasCaptions

Bugs fixed

User-side

  • Channels: The second page of shorts now loads as expected
  • Channels: Fixed intermittent empty "playlists" tab
  • Search: Fixed youtu.be URLs not being properly redirected to the watch page
  • Fixed DB::MappingException error on the subscriptions feed (due to missing tzdata in docker)
  • Switching to another instance is much faster
  • Fixed an "invalid byte sequence" error when subscribing to a playlist
  • Videos: Playback URLs were sometimes broken when cached and inv_sig_helper was used

For instance owners

  • Fix force_resolve being ignored in some cases

API

  • API/Videos: Fixed live_now and premiere_timestamp sometimes not having the right values

Full list of pull requests merged since the last release (newest first)

  • API: Add "sort_by" parameter to channels/shorts endpoint (#5071, thanks @iBicha)
  • Docker: Install tzdata in Dockerfile (#5070, by @SamantazFox)
  • Videos: Stop using TVHTML5_SIMPLY_EMBEDDED_PLAYER (#5063, thanks @unixfox)
  • Routing: Deprecate old channel API routes (#5045, by @SamantazFox)
  • Videos: use WEB client instead of WEB CREATOR (#4984, thanks @unixfox)
  • Parsers: Fix parsing live_now and premiere_timestamp (#4934, thanks @absidue)
  • Stale bot updates (#5060, thanks @syeopite)
  • Channels: Fix "Youtube API returned error 400" (#5059, by @SamantazFox)
  • Channels: Fix for live videos (#5027, thanks @iBicha)
  • Locales: Add Bulgarian, Welsh and Lombard to the list (#5046, by @SamantazFox)
  • Shards: Update database dependencies (#5034, by @SamantazFox)
  • Logger: Add color support for different log levels (#4931, thanks @Fijxu)
  • Fix named arg syntax when passing force_resolve (#4754, thanks @syeopite)
  • Use make_client instead of calling HTTP::Client (#4709, thanks @syeopite)
  • Add "Filipino (auto-generated)" to the list of caption languages (#4995, by @SamantazFox)
  • Makefile: Add MT option to enable the 'preview_mt' flag (#4993, by @SamantazFox)
  • SigHelper: Reconnect to signature helper (#4991, thanks @Fijxu)
  • Fix player menus hiding onHover ready (#4750, thanks @giacomocerquone)
  • Use connection pools when requesting images from YouTube (#4326, thanks @syeopite)
  • Add support for using Invidious through a HTTP Proxy (#4270, thanks @syeopite)
  • Search: Fix 'youtu.be' URLs in sanitizer (#4894, by @SamantazFox)
  • Ameba: Disable Style/RedundantNext rule (#4888, thanks @syeopite)
  • Playlists: Fix 'invalid byte sequence' error when subscribing (#4887, thanks @DmitrySandalov)
  • Parse more metadata badges for SearchVideos (#4863, thanks @ChunkyProgrammer)
  • Translations update from Hosted Weblate (#4862, thanks to our many translators)
  • Videos: Convert URL before putting result into cache (#4850, by @SamantazFox)
  • HTML: Add error message to "search issues on GitHub" link (#4652, thanks @tracedgod)
  • Preferences: Add option to control preloading of video data (#4122, thanks @Nerdmind)
  • Performance: Improve speed of automatic instance redirection (#4193, thanks @syeopite)
  • Remove myself from CODEOWNERS on the config file (#4942, by @TheFrenchGhosty)
  • Update latest version WEB_CREATOR + fix comment web embed (#4930, thanks @unixfox)
  • use WEB_CREATOR when po_token with WEB_EMBED as a fallback (#4928, thanks @unixfox)
  • Revert "use web screen embed for fixing potoken functionality"
  • use web screen embed for fixing potoken functionality (#4923, thanks @unixfox)

Release v2.20240825.2

26 Aug 20:57
v2.20240825.2
4782a67
Compare
Choose a tag to compare

This releases fixes the container tags pushed on quay.io.
Previously, the ARM64 build was released under the latest tag, instead of latest-arm64.

Full list of pull requests merged since the last release (newest first)

CI: Fix docker container tags ([#4883], by @SamantazFox)

Release v2.20240825.1

25 Aug 20:32
v2.20240825.1
3e17d04
Compare
Choose a tag to compare

Add patch component to be semver compliant and make github actions happy.

Full list of pull requests merged since the last release (newest first)

Allow manual trigger of release-container build (#4877, thanks @syeopite)

Release v2.20240825.0

25 Aug 19:29
v2.20240825
ffc70a5
Compare
Choose a tag to compare

New features & important changes

For users

  • The search bar now has a button that you can click!
  • Youtube URLs can be pasted directly in the search bar. Prepend search query with a
    backslash (\) to disable that feature (useful if you need to search for a video whose
    title contains some youtube URL).
  • On the channel page the "streams" tab can be sorted by either: "newest", "oldest" or "popular"
  • Lots of translations have been updated (thanks to our contributors on Weblate!)
  • Videos embedded in local HTML files (e.g: a webpage saved from a blog) can now be played

For instance owners

  • Invidious now has the ability to provide a po_token and visitordata to Youtube in order to
    circumvent current Youtube restrictions.
  • Invidious can use an (optional) external signature server like inv_sig_helper. Please note that
    some videos can't be played without that signature server.
  • The Helm charts were moved to a separate repo: https://github.com/iv-org/invidious-helm-chart
  • We have changed how containers are released: the latest tag now tracks tagged releases, whereas
    the master tag tracks the most recent commits of the master branch ("nightly" builds).

For developpers

  • The versions of Crystal that we test in CI/CD are now: 1.9.2, 1.10.1, 1.11.2, 1.12.1.
    Please note that due to a bug in the libxml bindings (See #4256), versions prior to 1.10.0
    are not recommended to use.
  • Thanks to @syeopite, the code is now ameba compliant.
  • Ameba is part of our CI/CD pipeline, and its rules will be enforced in future PRs.
  • The transcript code has been rewritten to permit transcripts as a feature rather than being
    only a workaround for captions. Trancripts feature is coming soon!
  • Various fixes regarding the logic interacting with Youtube
  • The sort_by parameter can be used on the /api/v1/channels/{id}/streams endpoint. Accepted
    values are: "newest", "oldest" and "popular"

Bugs fixed

User-side

  • Channels: fixed broken "subscribers" and "views" counters
  • Watch page: playback position is reset at the end of a video, so that the next time this video
    is watched, it will start from the beginning rather than 15 seconds before the end
  • Watch page: the items in the "add to playlist" drop down are now sorted alphabetically
  • Videos: the "genre" URL is now always pointing to a valid webpage
  • Playlists: Fixed Could not parse N episodes error on podcast playlists
  • All external links should now have the rel attibute set to noreferrer noopener for
    increased privacy.
  • Preferences: Fixed the admin-only "modified source code" input being ignored
  • Watch/channel pages: use the full image URL in og:image and twitter:image meta tags

API

  • fixed the local parameter not applying to formatStreams on /api/v1/videos/{id}
  • fixed an Index out of bounds error hapenning when a playlist had no videos
  • fixed duplicated query parameters in proxied video URLs
  • Return actual video height/width/fps rather than hard coded values
  • Fixed the /api/v1/popular endpoint not returning a proper error code/message when the
    popular page/endpoint are disabled.

Full list of pull requests merged since the last release (newest first)

Release v2.20240427

26 Apr 22:48
v2.20240427
eda7444
Compare
Choose a tag to compare

Major bug fixes:

Minor bug fixes:

Other improvements:


Tagged releases are also back!
The format is as simple as <MAJOR><dot><YYYY><MM><DD>

Major releases break compatibility with a previous major release. Because the releases
tagging system was not used for a long time, we're starting back at 2 as the major version.
Zero being the previous tagged releases, and One being the "rolling release era".

Hotfix 0.20.1

19 Nov 01:50
05988c1
Compare
Choose a tag to compare

! IMPORTANT !

Releases are deprecated, build directly from master


This adds support for QUIC as a workaround to #811.

It is recommended to update to this version immediately.