Releases: iv-org/invidious
Release v2.20240825.2
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
Release v2.20240825.0
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
andvisitordata
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
themaster
tag tracks the most recent commits of themaster
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 thelibxml
bindings (See #4256), versions prior to1.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 tonoreferrer 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
andtwitter:image
meta tags
API
- fixed the
local
parameter not applying toformatStreams
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)
- HTML: Sort playlists alphabetically in watch page drop down ([#4853], by @SamantazFox)
- Videos: Fix XSS vulnerability in description/comments ([#4852], thanks anonymous)
- YtAPI: Bump client versions ([#4849], by @SamantazFox)
- SigHelper: Fix inverted time comparison in 'check_update' ([#4845], by @SamantazFox)
- Storyboards: Various fixes and code cleaning ([#4153], by SamantazFox)
- Fix lint errors introduced in #4146 and #4295 ([#4876], thanks @syeopite)
- Search: Add support for Youtube URLs ([#4146], by @SamantazFox)
- Channel: Render age restricted channels ([#4295], thanks @ChunkyProgrammer)
- Ameba: Miscellaneous fixes ([#4807], thanks @syeopite)
- API: Proxy formatStreams URLs too ([#4859], thanks @colinleroy)
- UI: Add search button to search bar ([#4706], thanks @thansk)
- Add ability to set po_token and visitordata ID ([#4789], thanks @unixfox)
- Add support for an external signature server ([#4772], by @SamantazFox)
- Ameba: Fix Naming/VariableNames ([#4790], thanks @syeopite)
- Translations update from Hosted Weblate ([#4659])
- Ameba: Fix Lint/UselessAssign ([#4795], thanks @syeopite)
- HTML: Add rel="noreferrer noopener" to external links ([#4667], thanks @ulmemxpoc)
- Remove unused methods in Invidious::LogHandler ([#4812], thanks @syeopite)
- Ameba: Fix Lint/NotNilAfterNoBang ([#4796], thanks @syeopite)
- Ameba: Fix unused argument Lint warnings ([#4805], thanks @syeopite)
- Ameba: i18next.cr fixes ([#4806], thanks @syeopite)
- Ameba: Disable rules ([#4792], thanks @syeopite)
- Channel: parse subscriber count and channel banner ([#4785], thanks @ChunkyProgrammer)
- Player: Fix playback position of already watched videos ([#4731], thanks @Fijxu)
- Videos: Fix genre url being unusable ([#4717], thanks @meatball133)
- API: Fix out of bound error on empty playlists ([#4696], thanks @Fijxu)
- Handle playlists cataloged as Podcast ([#4695], thanks @Fijxu)
- API: Fix duplicated query parameters in proxied video URLs ([#4587], thanks @absidue)
- API: Return actual stream height, width and fps ([#4586], thanks @absidue)
- Preferences: Fix handling of modified source code URL ([#4437], thanks @nooptek)
- API: Fix URL for vtt subtitles ([#4221], thanks @karelrooted)
- Channels: Add sort options to streams ([#4224], thanks @src-tinkerer)
- API: Fix error code for disabled popular endpoint ([#4296], thanks @iBicha)
- Allow embedding videos in local HTML files ([#4450], thanks @tomasz1986)
- CI: Bump Crystal version matrix ([#4654], by @SamantazFox)
- YtAPI: Remove API keys like official clients ([#4655], by @SamantazFox)
- HTML: Use full URL in the og:image property ([#4675], thanks @Fijxu)
- Rewrite transcript logic to be more generic ([#4747], thanks @syeopite)
- CI: Run Ameba ([#4753], thanks @syeopite)
- CI: Add release based containers ([#4763], thanks @syeopite)
- move helm chart to a dedicated github repository ([#4711], thanks @unixfox)
Release v2.20240427
Major bug fixes:
- Videos: Use android test suite client (#4650, thanks @SamantazFox)
- Trending: Un-nest category if this is the only one (#4600, thanks @ChunkyProgrammer)
- Comments: Add support for new format (#4576, thanks @ChunkyProgrammer)
Minor bug fixes:
- API: Add bitrate to formatStreams too (#4590, thanks @absidue)
- API: Add 'authorVerified' field on recommended videos (#4562, thanks @ChunkyProgrammer)
- Videos: Add support for new likes format (#4462, thanks @ChunkyProgrammer)
- Proxy: Handle non-200 HTTP codes on DASH manifests (#4429, thanks @absidue)
Other improvements:
- Remove legacy proxy code (#4570, thanks @syeopite)
- API: convey info "is post live" from Youtube response (#4569, thanks @ChunkyProgrammer)
- API: Parse channel's tags (#4294, thanks @ChunkyProgrammer)
- Translations update from Hosted Weblate (#4164, thanks to our many translators)
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
! 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.
Version 0.20.0: Custom Playlists
It's been quite a while since the last release! There've been 198 commits from 27 contributors.
A couple smaller features have since been added. Channel pages and playlists in particular have received a bit of a face-lift, with both now displaying their descriptions as expected, and playlists providing video count and published information. Channels will also now provide video descriptions in their RSS feed.
Turkish (tr), Chinese (zh-TW, in addition to zh-CN), and Japanese (jp) are all now supported languages. Thank you as always to the hard work done by translators that makes this possible.
The feed menu and default home page are both now configurable for registered and unregistered users, and is quite a bit of an improvement for users looking to reduce distractions for their daily use.
For Administrators
feed_menu
and default_home
are now configurable by the user, and have therefore been moved into default_user_preferences
:
feed_menu: ["Popular", "Top"]
default_home: Top
# becomes:
default_user_preferences:
feed_menu: ["Popular", "Top"]
default_home: Top
Several new options have also been added, including the ability to set a support email for the instance using admin_email: EMAIL
, and forcing the use of a specific connection in the case of rate-limiting using force_resolve
(see below).
For Developers
Authenticated endpoints are now properly documented, as well how to generate and use API tokens. My hope is that this makes some of the more interesting endpoints more accessible for developers to use in their own applications.
API endpoints for interacting with custom playlists have also been added with documentation available here.
Custom playlists
This is probably the feature that has been the longest in the pipe and that I'm quite pleased is now implemented. It is now possible to create custom playlists, which can be played and edited through Invidious. API endpoints have also been added (documentation here).
Overall I'm quite pleased with how smoothly it has been rolled out and with the experience so far, and I'm exctited for how it can be extended and improved in future.
instances.invidio.us
It is now possible to view a list of public instances (as provided in the wiki) through an API or a pretty new interface here. It combines uptime information, statistics from each instance and basic information already provided in the wiki. I expect it should be much more user-friendly than compiling the information yourself, and is already used by Invidition to provide a list of instances for users to choose from.
The site itself is licensed under the AGPLv3 and the source is available here.
Video unavailable #811
Many users have likely noticed this error message if using Invidious directly or through another service, such as FreeTube. This issue is caused by rate-limiting by Google, and is not a new issuee for projects like Invidious (notably youtube-dl) and appears to be affecting smaller, private instances as well.
There is not a permanent fix for administrators currently, however there is some information available here that may provide a temporary solution. Unfortanately, in most cases the best option is to wait for the instance to be unbanned or to move the instance to a different IP. A more informative error message is also now provided, which should help an administrator more quickly diagnose the problem.
For those interested, I would recommend following #811 for any future progress on the issue.
BAT verified publisher
I'm quite late to this announcement, however I'm pleased to mention that Invidious is now a BAT verified publisher! I would recommend looking here or here for learning more about what it is and how it works. Overall I think it makes an interesting substitute for services like Liberapay, and a (hopefully) much less-intrusive alternative to direct advertising.
BAT is combined under other cryptocurrencies below. Currently there's a fairly significant delay in payout, which is the reason for the large fluctuation in crypto donations between September and October (and also the reason for the late announcement).
Release schedule
Currently I'm quite pleased with the current state of the project. There's plenty of things I'd still like to add, however at this point I expect the rate of most new additions will slow down a bit, with more focus on stabililty and any long-standing bugs.
Because of this, I'm planning on releasing a new version quarterly, with any necessary hotfixes being pushed as a new patch release as necessary. As always it will be possible to run Invidious directly from master if you'd still like to have the lastest version.
I'll plan on providing finances each release, with a similar monthly breakdown as below.
Finances for September 2019
Donations
Expenses
- invidious-lb1 (nyc1) : $10.00 (load balancer)
- invidious-update1 (s-1vcpu-1gb) : $5.00 (updates feeds)
- invidious-node1 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node2 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node3 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node4 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node5 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node6 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node7 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node8 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node9 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node10 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node11 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node12 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node13 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node14 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node15 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node16 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-db1 (s-4vcpu-8gb) : $40.00 (database)
- Total : $135.00
Finances for October 2019
- Liberapay : $134.40
- Crypto : ~$8.29 (converted from BAT, BCH, BTC)
- Total : $142.69
Expenses
- invidious-lb1 (nyc1) : $5.00 (load balancer)
- invidious-lb2 (nyc1) : $5.00 (load balancer)
- invidious-lb3 (nyc1) : $5.00 (load balancer)
- invidious-lb4 (nyc1) : $5.00 (load balancer)
- invidious-update1 (s-1vcpu-1gb) : $5.00 (updates feeds)
- invidious-node1 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node2 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node3 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node4 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node5 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node6 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node7 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node8 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node9 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node10 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node11 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node12 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node13 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node14 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node15 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node16 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node17 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node18 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-db1 (s-4vcpu-8gb) : $40.00 (database)
- Total : $155.00
Hotfix 0.19.1
Minor fix to video extractor after changes by YouTube.
It is recommended to update to this version immediately.
Version 0.19.0: Communities
Hello again everyone! Focus this month has mainly been on improving playback performance, along with a couple new features I'd like to announce. There have been 109 commits this past month from 10 contributors.
This past month has seen the addition of Chinese (zh-CN
) and Icelandic (is
) translations. I would like to give a huge thanks to their respective translators, and again an enormous thanks to everyone who helps translate the site.
I'm delighted to mention that FreeTube 0.6.0 now supports 1080p thanks to the Invidious API. I would very much recommend reading the relevant post for some more information on how it works, along with several other major improvements. Folks that are interested in adding similar functionality for their own projects should feel free to get in touch.
This past month there has been quite a bit of work on improving memory usage and improving download and playback speeds. As mentioned in the previous release, some extra hardware has been allocated which should also help with this. I'm still looking for ways to improve performance and feedback is always appreciated.
Along with performance, a couple quality of life improvements have been added, including author thumbnails and banners, clickable titles for embedded videos, and better styling for captions, among some other enhancements.
Communities
Support for YouTube's communities tab has been added. It's a very interesting but surprisingly unknown feature. Essentially, providing comments for a channel, rather than a video, where an author can post updates for their subscribers.
It's commonly used to promote interesting links and foster discussion. I hope this feature helps people find more interesting content that otherwise would have been overlooked.
For Developers
For accessing channel communities, an /api/v1/channels/comments/:ucid
endpoint has been added, with similar behavior and schema to /api/v1/comments/:id
, with an extra attachment
field for top-level comments. More info on usage and available data can be found in the wiki.
An /api/v1/auth/feeds
endpoint has been added for programmatically accessing a user's subscription feed, with options for displaying notifications and filtering an existing feed.
An /api/v1/search/suggestions
endpoint has been added for retrieving suggestions for a given query.
For Administrators
It is now possible to disable more resource intensive features, such as downloads and DASH functionality by adding disable_proxy
to your config. See #453 and the Wiki for more information and example usage. I expect this to be a big help for folks with limited bandwidth when hosting their own instances.
Finances
Donations
Expenses
- invidious-load1 (nyc1) : $10.00 (load balancer)
- invidious-update1 (s-1vcpu-1gb) : $5.00 (updates feeds)
- invidious-node1 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node2 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node3 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node4 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node5 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node6 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node7 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node8 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node9 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node10 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-db1 (s-4vcpu-8gb) : $40.00 (database)
- Total : $105.00
The goal on Patreon has been updated to reflect the above expenses. As mentioned above, the main reason for more hardware is to improve playback and download speeds, although I'm still looking into improving performance without allocating more hardware.
As always I'm grateful for everyone's support and feedback. I'll see you all next month.
Version 0.18.0: Native Notifications and Optimizations
Hope everyone has been doing well. This past month there have been 97 commits from 10 contributors. For the most part changes this month have been on optimizing various parts of the site, mainly subscription feeds and support for serving images and other assets.
I'm quite happy to mention that support for Greek (el
) has been added, which I hope will continue to make the site accessible for more users.
Subscription feeds will now only update when necessary, rather than periodically. This greatly lightens the load on DB as well as making the feeds generally more responsive when changing subscriptions, importing data, and when receiving new uploads.
Caching for images and other assets should be greatly improved with #456. JavaScript has been pulled out into separate files where possible to take advantage of this, which should result in lighter pages and faster load times.
This past month several people have encountered issues with downloads and watching high quality video through the site, see #532 and #562. For this coming month I've allocated some more hardware which should help with this, and I'm also looking into optimizing how videos are currently served.
For Developers
viewCount
is now available for /api/v1/popular
and all videos returned from /api/v1/auth/notifications
. Both also now provide "type"
for indicating available information for each object.
An /authorize_token
page is now available for more easily creating new tokens for use in applications, see this comment in #473 for more details.
A POST /api/v1/auth/notifications
endpoint is also now available for correctly returning notifications for 150+ channels.
For Administrators
There are two new schema changes for administrators: views
for adding view count to the popular page, and feed_needs_update
for tracking feed changes.
As always the relevant migration scripts are provided which should run when following instructions for updating. Otherwise, adding check_tables: true
to your config will automatically make the required changes.
Native Notifications
It is now possible to receive Web notifications from subscribed channels.
You can enable notifications by clicking "Enable web notifications" in your preferences. Generally they appear within 20-60 seconds of a new video being uploaded, and I've found them to be an enormous quality of life improvement.
Although it has been fairly stable, please feel free to report any issues you find here or emailing me directly at omarroth@protonmail.com.
Important to note for administrators is that instances require use_pubsub_feeds
and must be served over HTTPS in order to correctly send web notifications.
Finances
Donations
Expenses
- invidious-load1 (nyc1) : $10.00 (load balancer)
- invidious-update1 (s-1vcpu-1gb) : $5.00 (updates feeds)
- invidious-node1 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node2 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node3 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node4 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node5 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node6 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-db1 (s-4vcpu-8gb) : $40.00 (database)
- Total : $85.00
See you all next month!
Version 0.17.0: Player and Authentication API
Hello everyone! This past month there have been 130 commits from 11 contributors. Large focus has been on improving the player as well as adding API access for other projects to make use of Invidious.
There have also been significant changes in preparation of native notifications (see #195, #469, #473, and #502), and playlists. I expect to see both of these to be added in the next release.
I'm quite happy to mention that new translations have been added for Esperanto (eo
) and Ukranian (uk
). Support for pluralization has also been added, so it should now be possible to make a more native experience for speakers in other languages. The system currently in place is a bit cumbersome, so for any help using this feature please get in touch!
For Administrators
A check_tables
option has been added to automatically migrate without the use of custom scripts. This method will likely prove to be much more robust, and is currently enabled for the official instance. To prevent any unintended changes to the DB, check_tables
is disabled by default and will print commands before executing. Having this makes features that require schema changes much easier to implement, and also makes it easier to upgrade from older instances.
As part of #303, a cache_annotations
option has been added to speed up access from /api/v1/annotations/:id
. This vastly improves the experience for videos with annotations. Currently, only videos that contain legacy annotations will be cached, which should help keep down the size of the cache. cache_annotations
is disabled by default.
For Developers
An authorization API has been added which allows other applications to read and modify user subscriptions and preferences (see #473). Support for accessing user feeds and notifications is also planned. I believe this feature is a large step forward in supporting syncing subscriptions and preferences with other services, and I'm excited to see what other developers do with this functionality.
Support for server-to-client push notifications is currently underway. This allows Invidious users, as well as applications using the Invidious API, to receive notifications about uploads in near real-time (see #469). An /api/v1/auth/notifications
endpoint is currently available. I'm very excited for this to be integrated into the site, and to see how other developers use it in their own projects.
An /api/v1/storyboards/:id
endpoint has been added for accessing storyboard URLs, which allows developers to add video previews to their players (see below).
Player
Support for annotations has been merged into master with #303, thanks @glmdgrielson! Annotations can be enabled by default or only for subscribed channels, and can also be toggled per video. I'm extremely proud of the progress made here, and I'm so thankful to everyone that has made this possible. I expect this to be the last update with regards to supporting annotations, but I do plan on continuing to improve the experience as much as possible.
The Invidious player now supports video previews and a corresponding API endpoint /api/v1/storyboards/:id
has been added for developers looking to add similar functionality to their own players. Not much else to say here. Overall it's a very nice quality of life improvement and an attractive addition to the site.
It is now possible to select specific sources for videos provided using DASH (see #34). I would consider support largely feature complete, although there are still several issues to be fixed before I would consider it ready for larger rollout. You can watch videos in 1080p by setting Default quality
to dash
in your preferences, or by adding &quality=dash
to the end of video URLs.
Finances
Donations
Expenses
- invidious-load1 (nyc1) : $10.00 (load balancer)
- invidious-update1 (s-1vcpu-1gb) : $5.00 (updates feeds)
- invidious-node1 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node2 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node3 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node4 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-node5 (s-1vcpu-1gb) : $5.00 (web server)
- invidious-db1 (s-4vcpu-8gb) : $40.00 (database)
- Total : $80.00
That's all for now. Thanks!