From d51a7a44ad91d2fa7d1330970a15a0d8f365f250 Mon Sep 17 00:00:00 2001 From: Kiril Isakov Date: Fri, 23 Jan 2026 13:18:41 +0100 Subject: [PATCH 1/6] Fix commit command in README instructions, as per #5606 (#5607) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 97d2109b..5b789a50 100644 --- a/README.md +++ b/README.md @@ -129,7 +129,7 @@ You can read more here: https://docs.invidious.io/applications/ 1. Fork it ( https://github.com/iv-org/invidious/fork ). 1. Create your feature branch (`git checkout -b my-new-feature`). 1. Stage your files (`git add .`). -1. Commit your changes (`git commit -am 'Add some feature'`). +1. Commit your changes (`git commit -m 'Add some feature'`). 1. Push to the branch (`git push origin my-new-feature`). 1. Create a new pull request ( https://github.com/iv-org/invidious/compare ). From abb0aa436ce9dd31d96601c14a352a98de0e3469 Mon Sep 17 00:00:00 2001 From: Fijxu Date: Fri, 30 Jan 2026 18:01:04 -0300 Subject: [PATCH 2/6] Fix thin_mode preference for channel community page (#5567) thin_mode only took in account the query param because env.get("preferences").as(Preferences).thin_mode returned a boolean and not a string to be able to compare it with the string `"true"` --- src/invidious/routes/channels.cr | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/invidious/routes/channels.cr b/src/invidious/routes/channels.cr index f785de18..968d38dc 100644 --- a/src/invidious/routes/channels.cr +++ b/src/invidious/routes/channels.cr @@ -231,8 +231,10 @@ module Invidious::Routes::Channels env.redirect "/post/#{URI.encode_www_form(lb)}?ucid=#{URI.encode_www_form(ucid)}" end - thin_mode = env.params.query["thin_mode"]? || env.get("preferences").as(Preferences).thin_mode - thin_mode = thin_mode == "true" + preferences = env.get("preferences").as(Preferences) + + thin_mode = env.params.query["thin_mode"]? + thin_mode = (thin_mode == "true") || preferences.thin_mode continuation = env.params.query["continuation"]? From b521e3be6c0d925a96a97ce6a233aa8a55a7edc3 Mon Sep 17 00:00:00 2001 From: Fijxu Date: Fri, 30 Jan 2026 18:01:16 -0300 Subject: [PATCH 3/6] chore: Do not convert thin_mode preference to string to compare it (#5568) --- src/invidious/routes/before_all.cr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/invidious/routes/before_all.cr b/src/invidious/routes/before_all.cr index 63b935ec..06746a12 100644 --- a/src/invidious/routes/before_all.cr +++ b/src/invidious/routes/before_all.cr @@ -94,8 +94,8 @@ module Invidious::Routes::BeforeAll end dark_mode = convert_theme(env.params.query["dark_mode"]?) || preferences.dark_mode.to_s - thin_mode = env.params.query["thin_mode"]? || preferences.thin_mode.to_s - thin_mode = thin_mode == "true" + thin_mode = env.params.query["thin_mode"]? + thin_mode = (thin_mode == "true") || preferences.thin_mode locale = env.params.query["hl"]? || preferences.locale preferences.dark_mode = dark_mode From 48be830544313ac6ccd2fe257526b5607f3c5fe4 Mon Sep 17 00:00:00 2001 From: Harm133 Date: Fri, 30 Jan 2026 23:39:07 +0100 Subject: [PATCH 4/6] Update shard.yml to include target (#5608) [shard.yml] - Include a target for LSPs to use as an entrypoint: (https://github.com/elbywan/crystalline?tab=readme-ov-file#entry-point) --- shard.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/shard.yml b/shard.yml index bc6c4bf4..dde1851e 100644 --- a/shard.yml +++ b/shard.yml @@ -5,6 +5,10 @@ authors: - Invidious team - Contributors! +targets: + invidious: + main: src/invidious.cr + description: | Invidious is an alternative front-end to YouTube From a9f812799c2aa2541e13fc291522fb2fb03d47b2 Mon Sep 17 00:00:00 2001 From: Fijxu Date: Tue, 3 Feb 2026 16:18:15 -0300 Subject: [PATCH 5/6] fix: add missing embedded protobuf message in continuation token for channel videos (#5614) * fix: add missing embedded protobuf message in continuation token for channel videos * fix: add missing embedded protobuf message in continuation token for channel shorts * fix: add missing embedded protobuf message in continuation token for channel livestreams --- src/invidious/channels/videos.cr | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/invidious/channels/videos.cr b/src/invidious/channels/videos.cr index 96400f47..e2cc8305 100644 --- a/src/invidious/channels/videos.cr +++ b/src/invidious/channels/videos.cr @@ -114,7 +114,11 @@ module Invidious::Channel::Tabs "2:embedded" => { "1:string" => "00000000-0000-0000-0000-000000000000", }, - "4:varint" => sort_options_videos_short(sort_by), + "4:varint" => sort_options_videos_short(sort_by), + "8:embedded" => { + "1:string" => "00000000-0000-0000-0000-000000000000", + "3:varint" => sort_options_videos_short(sort_by), + }, }, } @@ -130,7 +134,11 @@ module Invidious::Channel::Tabs "2:embedded" => { "1:string" => "00000000-0000-0000-0000-000000000000", }, - "4:varint" => sort_options_videos_short(sort_by), + "4:varint" => sort_options_videos_short(sort_by), + "7:embedded" => { + "1:string" => "00000000-0000-0000-0000-000000000000", + "3:varint" => sort_options_videos_short(sort_by), + }, }, } @@ -154,7 +162,11 @@ module Invidious::Channel::Tabs "2:embedded" => { "1:string" => "00000000-0000-0000-0000-000000000000", }, - "5:varint" => sort_by_numerical, + "5:varint" => sort_by_numerical, + "8:embedded" => { + "1:string" => "00000000-0000-0000-0000-000000000000", + "3:varint" => sort_by_numerical, + }, }, } From ecbc21b0678eac4a0c8f745de5cc78eef4841221 Mon Sep 17 00:00:00 2001 From: Cameron Radmore Date: Wed, 4 Feb 2026 10:57:16 -0500 Subject: [PATCH 6/6] playlist: parse playlist thumbnails for topic autogenerated playlists (#5616) --- src/invidious/playlists.cr | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/invidious/playlists.cr b/src/invidious/playlists.cr index 7c584d15..ec64bee4 100644 --- a/src/invidious/playlists.cr +++ b/src/invidious/playlists.cr @@ -359,6 +359,9 @@ def fetch_playlist(plid : String) thumbnail = playlist_info.dig?( "thumbnailRenderer", "playlistVideoThumbnailRenderer", "thumbnail", "thumbnails", 0, "url" + ).try &.as_s || playlist_info.dig?( + "thumbnailRenderer", "playlistCustomThumbnailRenderer", + "thumbnail", "thumbnails", 0, "url" ).try &.as_s views = 0_i64