5800 Commits

Author SHA1 Message Date
Harm133
1556a9429d
Merge 073396ce3387441155ec3270a1386e8a3b01229c into e7f8b15b215f86f10ee788bc716b559527d4b801 2026-02-17 15:25:52 +11:00
Jeroen Boersma
e7f8b15b21
Add title listen button time updates (#5625)
When switching between Listen and Watching the timestamp in the url of
the listen of watch button is now updated automatically.

This means if you switch between listening and viewing you keep in sync
with time.
2026-02-16 16:39:44 -03:00
Fijxu
60c31e3069
Remove sort by rating and date in video search filters (#5629)
* Remove sort by rating and date in video search filters

Closes https://github.com/iv-org/invidious/issues/5626

* Remove check of protobug generation of rating and date sort filters in Invidious spec
2026-02-16 14:06:06 -03:00
Emilien
11db343cfb Prepare for next release 2026-02-07 22:10:11 +01:00
Émilien (perso)
118d635650
Release v2.20260207.0 (#5621)
* Release v2.20260207.0

* Fix release notes for Crystal/OpenSSL

* fix comment about pr #5566, #5338

Co-authored-by: Fijxu <fijxu@nadeko.net>

* fix comment about memory leaks

Co-authored-by: Fijxu <fijxu@nadeko.net>

* Clarify release notes for proxy header stripping

---------

Co-authored-by: Fijxu <fijxu@nadeko.net>
v2.20260207.0
2026-02-07 21:47:19 +01:00
Fijxu
29c29f7c8d Update src/invidious/routes/routes.cr
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-06 18:50:36 +01:00
Fijxu
067a426235 refactor: Move top level constants to it's own modules 2026-02-06 18:50:36 +01:00
Samantaz Fox
ffd9f4b112 pages/watch: HTML escape 'action' in download widget
Caught in the review of PR 5224, but forgot to click on "send review" in time.
I realized that too late, after the PR was already merged.
2026-02-06 18:44:37 +01:00
Fijxu
cc7cb94095 Document use of unix sockets for db 2026-02-06 18:39:53 +01:00
Fijxu
0ee92e3298 Update src/invidious/routes/before_all.cr
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-06 18:35:20 +01:00
Fijxu
a3a97ccf07 Only generate companion CSP one time to reuse it 2026-02-06 18:35:20 +01:00
ThatMatrix
ce9494133d fix(user/imports.cr): double header removal caused first video to be skipped 2026-02-06 18:33:58 +01:00
ThatMatrix
e4beb00413 fix(user/imports.cr): splitting error fixed 2026-02-06 18:33:58 +01:00
ThatMatrix
050032b188 fix(docker-compose.yml): removed hmac_key (randomly generated) used for testing 2026-02-06 18:33:58 +01:00
ThatMatrix
471857ce8b Fix(user/importers): Fixed typos 2026-02-06 18:33:58 +01:00
ThatMatrix
7be6fbd75c Fix(user/importers): Fixed youtube csv playlist importer 2026-02-06 18:33:58 +01:00
Cameron Radmore
84a699f7b7
Playlist API: return empty author url if ucid is empty (#5618) 2026-02-05 11:59:27 -03:00
Cameron Radmore
864893f4c7
Channels: parse pronouns and display them on channel page (#5617) 2026-02-05 11:58:52 -03:00
Cameron Radmore
ecbc21b067
playlist: parse playlist thumbnails for topic autogenerated playlists (#5616) 2026-02-04 12:57:16 -03:00
Fijxu
a9f812799c
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
2026-02-03 16:18:15 -03:00
Harm133
48be830544
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)
2026-01-30 23:39:07 +01:00
Fijxu
b521e3be6c
chore: Do not convert thin_mode preference to string to compare it (#5568) 2026-01-30 18:01:16 -03:00
Fijxu
abb0aa436c
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"`
2026-01-30 18:01:04 -03:00
Harm
073396ce33 Don't assume the isShortsEligible is always availble 2026-01-24 23:00:18 +01:00
Harm
ea8e3b7d22 Formatting of src/invidious/users.cr 2026-01-24 22:22:40 +01:00
Harm133
7b48da6802
Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-24 22:19:49 +01:00
Harm
44e700c7ae Merge branch 'hide-shorts-and-livestreams' of github.com:Harm133/invidious into hide-shorts-and-livestreams 2026-01-24 16:10:12 +01:00
Harm
93724f8051 Update logic to process shorts/livestreams
[config/config.example.yml]
- Separate hide_shorts_and_live to hide_shorts and hide_livestreams

[config/sql/channel_videos.sql]
- Introduce enum video_type
- Include video_type as new column for channel_videos

[locales/en-US.json]
- Add labels for new settings

[src/invidious/channels/channels.cr]
- Add property video_type of type VideoType to ChannelVideo struct
- Add deserializer module for conversion from database entry to enum
- Add check if we already have a video in the database.
  If the video `updated` field has no been updated, only update views
- Add check whether a video is in the `videos` array. If this is not
  the case, fetch the individual video for `video_type` as well as
  `length_videos`

[src/invidious/config.cr]
- Separate hide_shorts_and_live property
  to hide_shorts and hide_livestreams properties

[src/invidious/database/channels.cr]
- Include video_type in database insert for ChannelVideo

[src/invidious/routes/preferences.cr]
- Separate hide_shorts_and_live setting to hide_shorts and hide_livestreams

[src/invidious/users.cr]
- Accumulate VideoTypes in an array and query on these types
- Remove paths for hide_shorts_and_live

[src/invidious/videos.cr]
- Add `Short` entry to VideoType enum

[src/invidious/videos/parser.cr]
- Add check whether a video is a short
2026-01-24 16:08:16 +01:00
Harm133
1fd5bd44f0
Update config/config.example.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-23 19:48:10 +01:00
Harm
b8e7202cbf Filter shorts/livestreams in SQL
[src/invidious/users.cr]
- Filter out shorts and livestreams in SQL rather than via an array
  selector. This way, in the relevant cases, we will query and return
  "limit" amount of videos, rather than a possible lower amount
2026-01-23 19:19:43 +01:00
Harm
0bce7311c2 Introduce ability to hide shorts/livestreams in subscription feed
[config/config.example.yml]
- Introduce new default value for hide_shorts_and_live

[locales/en-US.json]
- Add translation label for hide_shorts_and_live

[src/invidious/config.cr]
- Add default value for hide_shorts_and_live to ConfigPreferences

[src/invidious/users.cr]
- Add filtering for shorts and listreams if hide_shorts_and_live is active

[src/invidious/routes/preferences.cr]
- Retrieve and convert hide_shorts_and_live option from preferences page
  to preferences object

[src/invidious/user/preferences.cr]
- Add hide_shorts_and_live property

[src/invidious/views/user/preferences.ecr]
- Add div, label and input for new hide_shorts_and_live option
2026-01-23 18:45:50 +01:00
Kiril Isakov
d51a7a44ad
Fix commit command in README instructions, as per #5606 (#5607) 2026-01-23 13:18:41 +01:00
Émilien (perso)
7e36cfb667
Revert "Bump crystallang/crystal from 1.16.3-alpine to 1.19.0-alpine in /dock…" (#5604)
This reverts commit d25cc9570c9738f16e15437bcc69a12ab2095738.
2026-01-19 23:39:01 +01:00
dependabot[bot]
d25cc9570c
Bump crystallang/crystal from 1.16.3-alpine to 1.19.0-alpine in /docker (#5603)
Bumps crystallang/crystal from 1.16.3-alpine to 1.19.0-alpine.

---
updated-dependencies:
- dependency-name: crystallang/crystal
  dependency-version: 1.19.0-alpine
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-19 22:59:44 +01:00
Émilien (perso)
66c67f4c7a
doc: Update HTTP proxy configuration comments (#5586)
* doc: Update HTTP proxy configuration comments

Added information about proxy configuration for YouTube streams.

* Document supported proxy types in config.example.yml

Added note about supported proxy types in configuration.
2026-01-17 00:15:32 +01:00
Fijxu
344bc2d8e9
Strip unwanted headers from response headers in images and videoplayback (#5595)
Image responses contained the following unwanted headers that should not
be passed to the clients:

```
"Cross-Origin-Resource-Policy"
["cross-origin"]
"Cross-Origin-Opener-Policy-Report-Only"
["same-origin; report-to=\"youtube\""]
"Report-To"
["{\"group\":\"youtube\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/youtube\"}]}"]
"Timing-Allow-Origin"
["*"]
```
2026-01-16 19:39:44 -03:00
Fijxu
5f84a5b353
Generate companion check id one time and add missing companion check id on captions (#5575)
* Only generate companion check id one time

* Add missing check id for companion captions
2025-12-22 17:14:59 +01:00
Fijxu
9603f5151d
Downgrade Crystal to 1.16.3 in OCI (#5577)
* downgrade to 1.16.3

* Downgrade Alpine base image from 3.23 to 3.22

---------

Co-authored-by: Émilien (perso) <4016501+unixfox@users.noreply.github.com>
2025-12-22 11:19:13 +01:00
Fijxu
f7a31aa3de
fix lint 2025-12-21 00:50:37 -03:00
Jeroen Boersma
dbbaf51f1f
Allow downloading via companion (#5561)
* Allow downloading via companion

* post request where not proxied for the download companion which made
  it impossible to download with the companion enabled

* Re-apply Channel to Channels rename which was pulled in

* Update src/invidious/routes/companion.cr

* doc: better comments for each route

---------

Co-authored-by: Fijxu <fijxu@nadeko.net>
Co-authored-by: Émilien (perso) <4016501+unixfox@users.noreply.github.com>
2025-12-19 15:09:22 +01:00
Émilien (perso)
7a4b901846
chore: update crystal 1.18.2 + alpine 3.23 (#5574) 2025-12-19 15:08:07 +01:00
Fijxu
bf17d53068
Replace deprecated blocking property of Socket (#5538)
* Replace deprecated `blocking` property of `Socket`

This replaces the deprecated argument `blocking` and uses
`Socket.set_blocking(fd, value)` instead.

Fixes a warning in the compiler

https://github.com/crystal-lang/crystal/pull/16033

* Upgrade to upstream

* chore: only Socket.set_blocking for > 1.18

---------

Co-authored-by: Emilien <4016501+unixfox@users.noreply.github.com>
2025-12-19 14:59:42 +01:00
syeopite
1f5685ef92 Reduce indent in StaticAssetsHandler#serve_file 2025-12-19 12:35:00 +01:00
syeopite
21049518d6 Improve cache size check to be more performant
Summing the sizes of each cached file every time is very inefficient.
Instead we can simply store the cache size in an constant and increase
it everytime a file is added into the cache.
2025-12-19 12:35:00 +01:00
syeopite
7f9cfe1aa2 Refactor logic for updating temp files in tests 2025-12-19 12:35:00 +01:00
syeopite
89a0761a19 Fix Ameba Lint/UselessAssign 2025-12-19 12:35:00 +01:00
syeopite
7749ea1956 Isolate static assets handler spec from others
Running `crystal spec` without a file argument essentially produces one
big program that combines every single spec file, their imports, and
the files that those imports themselves depend on. Most of the types
within this combined program will get ignored by the compiler due to a
lack of any calls to them from the spec files.

But for some types, partially the HTTP module ones, using them within
the spec files will suddenly make the compiler enable a bunch of
previously ignored code. And those code will suddenly require the
presence of additional types, constants, etc. This not only make it
annoying for getting the specs working but also makes it difficult to
isolate behaviors for testing.

The `static_assets_handler_spec.cr` causes this issue and so will be
marked as an isolated spec for now. In the future all of the tests
should be organized into independent groupings similar to how the
Crystal compiler splits their tests into std, compiler, primitives and
interpreter.
2025-12-19 12:35:00 +01:00
syeopite
9e482b4807 Add specs for the new StaticAssetsHandler 2025-12-19 12:35:00 +01:00
syeopite
6fd1cb3585 Compare against 1.17.0-dev until full release 2025-12-19 12:35:00 +01:00
syeopite
ddfbed68f7 Simplify StaticAssetsHandler implementation
Overriding `#call` or patching out `serve_file_compressed` provides
only minimal benefits over the ease of maintenance granted by only
overriding what we need to for the caching behavior.
2025-12-19 12:35:00 +01:00