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.