Skip to content
Release v2.20240825

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).

[inv_sig_helper]: https://github.com/iv-org/inv_sig_helper

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"

[ameba]: https://github.com/crystal-ameba/ameba
[#4256]: https://github.com/iv-org/invidious/issues/4256

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

['rel']: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel

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.