Cody Robibero
24022092ad
Merge pull request #17456 from Shadowghost/fix-extras
...
Fix extras naming and version assignment
2026-08-02 14:25:00 -04:00
Cody Robibero
e816870f67
Merge pull request #17416 from Shadowghost/enable-duplicate-playlist-children
...
Allow duplicate LinkedChildren for Playlists
2026-08-01 08:06:02 -04:00
Shadowghost
8293eb26b9
Fix playlist entries being lost on migration and library scans
2026-07-29 14:40:49 +02:00
Shadowghost
79a55327dc
Fix extras naming and version assignment
2026-07-27 12:12:17 +02:00
Cody Robibero
dbc796b0b0
Merge pull request #16409 from elio42/fix/create_library_thumbs_on_first_scan
...
CodeQL / Analyze (push) Has been cancelled
Format / format-check (push) Has been cancelled
Tests / run-tests (macos-latest) (push) Has been cancelled
Tests / run-tests (ubuntu-latest) (push) Has been cancelled
Tests / run-tests (windows-latest) (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Artifact (push) Has been cancelled
Project Automation / Project board (push) Has been cancelled
Merge Conflict Labeler / main (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Unstable Spec (push) Has been cancelled
OpenAPI Publish / OpenAPI - Publish Stable Spec (push) Has been cancelled
Fix missing collection folder posters after initial scans.
2026-07-26 16:19:25 -04:00
Cody Robibero
7f26bd1091
Merge pull request #17399 from Shadowghost/fix-extra-year
...
Fix incorrect year on local trailers
2026-07-25 12:52:51 -04:00
Cody Robibero
86ac1aaa6b
Merge branch 'master' into fix/create_library_thumbs_on_first_scan
2026-07-25 12:52:11 -04:00
Cody Robibero
ebb66f6ca3
Merge pull request #17395 from paoloantinori/fix/userdata-null-user-nre-master
...
Avoid NRE when sorting by user-dependent keys without a user
2026-07-25 08:38:43 -04:00
Paolo Antinori
8b70582561
Remove added comments ( #17395 review)
2026-07-25 12:50:32 +02:00
Shadowghost
6382563440
Prefer null checks over HasValue everywhere
2026-07-22 08:09:33 +02:00
Paolo Antinori
5d580abb08
fix: avoid NRE when sorting by user-dependent keys without a user
...
A query sorted by a user-dependent key (PlayCount, IsFavoriteOrLiked,
DatePlayed, IsPlayed, IsUnplayed) but carrying no User caused a
NullReferenceException inside UserDataManager.GetUserData, surfacing as
"Failed to compare two elements in the array" (InvalidOperationException
wrapping the NRE from the LINQ sort) and 500-ing the /Items request.
Root cause: LibraryManager.GetComparer assigned comparer.User = user
without a null guard, so PlayCountComparer.GetValue called
UserDataManager.GetUserData(null, item), dereferencing user.Id.
Two-part fix:
- LibraryManager.GetComparer: when user is null and the sort key requires a
user (IUserBaseItemComparer), substitute the SortName comparer so the
result stays deterministic instead of 500-ing. SortName is the project's
canonical tiebreaker (ItemsController injects it for album-by-artist).
- UserDataManager.GetUserData: ArgumentNullException.ThrowIfNull(user) as
defense in depth (matches the existing guards on the SaveUserData
overloads in the same file). On master this overload was rewritten to use
ResolveUserDataRow, so the NRE dereferences user.Id rather than
user.InternalId as on the release branch — same bug, different line.
Also fixes DateLastMediaAddedComparer being statically mis-tagged as
IUserBaseItemComparer: its GetDate is static and never reads User, so it
does not need one. Without this, the SortName fallback above would wrongly
engage for DateLastContentAdded on anonymous queries (returning SortName
order instead of date order). Re-tagged to IBaseItemComparer and dropped the
unused User/UserManager/UserDataManager properties.
Tests:
- UserDataManagerTests.GetUserData_NullUser_ThrowsArgumentNullException:
reproduces the crash (NRE -> now ArgumentNullException). Added to master's
existing UserDataManagerTests.
- LibraryManagerSortTests.Sort_UserDependentKey_NullUser_FallsBackToSortNameWithoutThrowing:
Sort with a user-dependent key + null user no longer throws and returns
items ordered by the SortName fallback (direction preserved).
- LibraryManagerSortTests.Sort_DateLastContentAdded_NullUser_OrdersByDateNotSortName:
guards that DateLastContentAdded still sorts by date with no user (fixture
chosen so date-desc and SortName-desc disagree, so a revert is caught).
Full Jellyfin.Server.Implementations.Tests suite: 642 passed, 0 failed.
Fixes #17393
2026-07-22 07:43:58 +02:00
Cody Robibero
526f4051e9
Merge pull request #16980 from TheMelmacian/feature/library_specific_language_filter_values
...
Improve language filters to only fetch language codes that match the requested items/libraries (follow up to #9787 )
2026-07-21 20:43:31 -04:00
Shadowghost
ca1f7af445
Fix incorrect year on local trailers
2026-07-21 20:27:04 +02:00
Shadowghost
b99703301f
Merge remote-tracking branch 'upstream/master' into security-path-traversal-fixes
...
# Conflicts:
# Jellyfin.Api/Controllers/HlsSegmentController.cs
# Jellyfin.Api/Controllers/PluginsController.cs
2026-07-21 07:14:47 +02:00
Cody Robibero
bea016c962
Merge pull request #17320 from TaterTechStudios/fix/item-correct-selector
...
Fix: Fetch the correct row matching the most up to date file
2026-07-20 19:57:28 -04:00
Cody Robibero
191be0931e
Merge pull request #17254 from sjakub/attribute_aliases
...
Add additional attribute aliases and improve attribute detection
2026-07-20 19:45:06 -04:00
theguymadmax
ffe075650c
Add TVDB provider ID support for movies ( #17255 )
...
CodeQL / Analyze (push) Waiting to run
Format / format-check (push) Waiting to run
Tests / run-tests (macos-latest) (push) Waiting to run
Tests / run-tests (ubuntu-latest) (push) Waiting to run
Tests / run-tests (windows-latest) (push) Waiting to run
OpenAPI Publish / OpenAPI - Publish Artifact (push) Waiting to run
OpenAPI Publish / OpenAPI - Publish Unstable Spec (push) Blocked by required conditions
OpenAPI Publish / OpenAPI - Publish Stable Spec (push) Blocked by required conditions
Project Automation / Project board (push) Waiting to run
Merge Conflict Labeler / main (push) Waiting to run
Add TVDB provider ID support for movies
2026-07-20 12:23:20 +02:00
Bond-009
236db6d2f6
Merge pull request #17365 from Shadowghost/fix-resume-perf
...
Fix Resume query performance
2026-07-20 08:17:38 +02:00
Bond-009
96727072c8
Merge pull request #17327 from Shadowghost/remove-playbackpositionticks-mediasourceinfo
...
Remove PlaybackPositionTicks from MediaSourceInfo
2026-07-17 22:21:21 +02:00
Shadowghost
1a45fc82b5
Sanitize media attachment and lyric paths against traversal
2026-07-17 17:07:27 +02:00
Shadowghost
cdf7ce0fc4
Fix user data batch query perf
2026-07-16 14:21:03 +02:00
Jordan Rushing
3f96790904
Move GetUserDataBatch to use ResolveUserDataRow when item.UserData isn't preloaded
2026-07-15 16:21:42 -05:00
Shadowghost
c6545a8b68
Limit similar items to user accessible libraries
2026-07-15 11:47:59 +02:00
Shadowghost
b8bac71270
remove PlaybackPositionTicks from MediaSourceInfo
2026-07-14 10:05:32 +02:00
Jordan Rushing
fcce108948
Fix: Fetch the correct row matching the most up to date file
2026-07-13 15:40:40 -05:00
Jakub Schmidtke
08f6627a24
Replaced string.Empty with ReadOnlySpan<char>.Empty
2026-07-08 01:40:26 +02:00
Jakub Schmidtke
1294990f4f
Added more aliases for attributes
...
Adds tvdb alias for tvdbid and imdb alias for imdbid.
It also fixes an issue where tmdb alias was being ignored
if it was followed by something like "tmdbidfoo".
The same issue prevented imdb pattern matching from
working, if it was followed by something like "imdbidfoo".
It also allows for detecting the first matching occurence,
whether it was an alias or not.
Finally, it ignores attributes with values consisting of only whitespaces.
2026-07-07 15:39:09 +02:00
Cody Robibero
6e728b009f
Merge pull request #17044 from Shadowghost/version-model-and-handling
...
Fixes for multi version handling
2026-07-05 16:21:02 -04:00
theguymadmax
43a152359e
Fix ghost entries when deleting library paths
2026-07-03 14:12:56 -04:00
Shadowghost
38f1d9749e
Fix review comments
2026-07-02 08:49:11 +02:00
Bond-009
3741d71965
Merge pull request #17116 from theguymadmax/fix-root-folder-parsing
CodeQL / Analyze (push) Waiting to run
Format / format-check (push) Waiting to run
Tests / run-tests (macos-latest) (push) Waiting to run
Tests / run-tests (ubuntu-latest) (push) Waiting to run
Tests / run-tests (windows-latest) (push) Waiting to run
OpenAPI Publish / OpenAPI - Publish Artifact (push) Waiting to run
OpenAPI Publish / OpenAPI - Publish Unstable Spec (push) Blocked by required conditions
OpenAPI Publish / OpenAPI - Publish Stable Spec (push) Blocked by required conditions
Project Automation / Project board (push) Waiting to run
Merge Conflict Labeler / main (push) Waiting to run
2026-06-21 00:10:26 +02:00
Shadowghost
0fb042b740
Surface the played version for resume
2026-06-19 21:51:57 +02:00
Bond-009
bebb7ce803
Merge pull request #17112 from theguymadmax/add-year-to-series-resolver
...
Fix series year lost during name parsing
2026-06-18 17:46:23 +02:00
theguymadmax
b9271eb199
Skip parsing root-level folders in SeriesResolver
2026-06-15 19:37:39 -04:00
theguymadmax
068bbb7981
Fix series year lost during parsing
2026-06-15 11:42:17 -04:00
dkanada
f4bab458a2
improve book resolution from filename
2026-06-15 11:31:49 +09:00
Shadowghost
0aeee8233b
Fix performance
2026-06-12 08:35:30 +02:00
Shadowghost
95de28cdda
Merge remote-tracking branch 'upstream/master' into version-model-and-handling
2026-06-10 08:05:03 +02:00
Shadowghost
0874a26131
Coalesce alternate-version progress onto primary in resume filter
2026-06-09 23:23:03 +02:00
Elio Kuster
1bfbad2420
Fix missing collection folder posters after initial scans.
...
Fixes #1200
2026-06-09 20:34:24 +02:00
Bond-009
1a786f26c1
Merge pull request #17041 from Shadowghost/media-source-handling-fixes
...
Media source handling fixes
2026-06-08 19:41:21 +02:00
Bond-009
007515eb73
Merge pull request #10841 from Bond-009/LiveTvImageFix
...
Refresh live TV channel image when remapped (alt #7843 ) (fixes #7834 )
2026-06-08 19:40:08 +02:00
Shadowghost
e71914e993
Keep the queried item's media source as the playback default in MediaSourceManager
2026-06-07 23:06:48 +02:00
Shadowghost
2392e32779
Filter inaccessible alternative versions
2026-06-07 23:06:48 +02:00
Shadowghost
c242533f4e
Add version-aware playback tracking
2026-06-07 23:06:14 +02:00
Bond-009
4459147788
Merge pull request #16121 from Shadowghost/search-rebased
...
CodeQL / Analyze (push) Waiting to run
Format / format-check (push) Waiting to run
Tests / run-tests (macos-latest) (push) Waiting to run
Tests / run-tests (ubuntu-latest) (push) Waiting to run
Tests / run-tests (windows-latest) (push) Waiting to run
OpenAPI Publish / OpenAPI - Publish Artifact (push) Waiting to run
OpenAPI Publish / OpenAPI - Publish Unstable Spec (push) Blocked by required conditions
OpenAPI Publish / OpenAPI - Publish Stable Spec (push) Blocked by required conditions
Project Automation / Project board (push) Waiting to run
Merge Conflict Labeler / main (push) Waiting to run
Implement search providers
2026-06-07 22:56:51 +02:00
Tim Eisele
d8d386e88a
Apply suggestions from code review
...
Co-authored-by: Bond-009 <bond.009@outlook.com>
2026-06-07 22:07:35 +02:00
Bond-009
ec43ea156e
Merge pull request #16941 from Shadowghost/fix-external-data-pruning
...
Fix external data pruning on item deletion
2026-06-07 20:28:34 +02:00
Shadowghost
8aaea6ea52
Omit external trickplay directory if itme has no path
2026-06-07 14:56:31 +02:00
Shadowghost
1b80da0c3d
Do not set topParentId if OwnerIds are empty
2026-06-03 19:47:35 +02:00