Commit Graph

618 Commits

Author SHA1 Message Date
Shadowghost 50f08d41a4 Find dead people and artists by id, not by name 2026-09-01 19:49:25 +02:00
Shadowghost 792ce4a391 Fix people validator not creating missing people 2026-09-01 07:36:53 +02:00
Shadowghost 27d898e59e Count a season's episodes by the season they belong to 2026-08-29 21:39:14 +02:00
Shadowghost 6978dfc294 Delete a credit once no item maps to it any more 2026-08-25 20:31:30 +02:00
Cody Robibero 2a8d168796 Merge pull request #17579 from Shadowghost/fix-removal-notification
Fix missing ItemRemoved events and search fallback after access filtering
2026-08-10 18:28:22 -04:00
brandon 10d108a1f4 Address review on MediaSourceCount batching
Rename GetItemsWithAlternateVersions to GetItemIdsWithAlternateVersions
across the interfaces and implementations since it returns ids. Return
the hashset straight from the query instead of materializing an array
first. Rename the DtoService guard to mayHaveAlternateVersions and
invert it so the computed path is the explicit case. Assert the media
source count value in the batch skip test and add a test covering an
item that is in the returned set still resolving to the correct count.
2026-08-08 12:33:11 -04:00
Shadowghost e63c05137a Fix missing ItemRemoved events and search fallback after access filtering 2026-08-08 10:59:37 +02:00
brandon c091ffdc6b Batch alternate version detection in DtoService to remove MediaSourceCount N+1
Browsing a page of videos with the MediaSourceCount field ran one alternate
version query per item, each opening a fresh DbContext. On a large library that
turned a single page into hundreds of sequential round trips and made the Items
endpoint take tens of seconds while holding a request thread the whole time.

Detect which videos own alternate versions once per page with a single query,
mirroring the existing people batch. Videos absent from that set have a single
media source, so the per item lookups are skipped for the common case. Behavior
is unchanged: a video with no alternates already resolved to a count of one.

Adds a regression test asserting the count resolves from the batch and the per
item lookups are never called.
2026-08-07 22:51:45 -04:00
brandon d6da6906a4 Batch people lookups when building item DTOs
GetBaseItemDtos already batch fetches user data, child counts, played counts
and artists before its per item loop, but AttachPeople still ran one GetPeople
query per item. Rendering a page of items (for example a large playlist) fired
one extra query per row.

Add GetPeopleByItems to IPeopleRepository, which reads every requested item in a
single query over the people mapping table and returns full PersonInfo (role,
type and sort order) grouped by item id. GetBaseItemDtos prefetches this once
when the People field is requested and passes it into AttachPeople, which reads
from the batch instead of querying per item. The single item GetBaseItemDto path
keeps its existing per item behaviour when no batch is supplied.

Adds a DtoService test asserting people resolve from the batch and the per item
GetPeople is never called.
2026-08-07 11:59:17 -04: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 38f1d9749e Fix review comments 2026-07-02 08:49:11 +02:00
Shadowghost 0fb042b740 Surface the played version for resume 2026-06-19 21:51:57 +02:00
Shadowghost 0874a26131 Coalesce alternate-version progress onto primary in resume filter 2026-06-09 23:23:03 +02:00
Shadowghost c242533f4e Add version-aware playback tracking 2026-06-07 23:06:14 +02:00
Shadowghost a2bab98c23 Merge remote-tracking branch 'upstream/master' into search-rebased 2026-05-31 18:24:26 +02:00
Tim Eisele 63d1af5fe7 Fix similarity (#16942)
Fix similarity
2026-05-31 17:21:15 +02:00
Shadowghost a479e145dc Merge remote-tracking branch 'upstream/master' into search-rebased
# Conflicts:
#	Emby.Server.Implementations/Library/LibraryManager.cs
#	Jellyfin.Server.Implementations/Item/PeopleRepository.cs
#	MediaBrowser.Controller/Library/ILibraryManager.cs
#	MediaBrowser.Controller/Persistence/IPeopleRepository.cs
2026-05-30 19:09:11 +02:00
TheMelmacian 7939f3b009 only fetch language codes for the requested library when generating filter values 2026-05-30 16:33:59 +02:00
Bond-009 2f17516d4b Merge pull request #16856 from Shadowghost/movie-recommendations
Fix movie recommendations
2026-05-27 20:59:18 +02:00
Shadowghost cb9d6e9884 Add batch method for people names 2026-05-24 18:26:21 +02:00
Shadowghost 1175846120 Merge remote-tracking branch 'upstream/master' into search-rebased 2026-05-24 18:25:12 +02:00
jakobkukla 37350282cc Run tree-wide dotnet format 2026-05-21 20:48:41 +02:00
Shadowghost 3655b4b094 Apply review and sonar suggestions 2026-05-16 16:14:18 +02:00
Shadowghost ea8f6c51fd Merge remote-tracking branch 'upstream/master' into search-rebased 2026-05-16 09:57:06 +02:00
Shadowghost 1fdf58e40f Address review comments 2026-05-16 09:44:36 +02:00
Bond-009 9d420271ad Merge pull request #9787 from TheMelmacian/feature/language_filters
New filters for audio and subtitle languages
2026-05-15 15:44:22 +02:00
Shadowghost 97c20e6ac5 Fix movie recommendations 2026-05-15 14:37:01 +02:00
Bond-009 8e602f982f Merge pull request #15970 from Shadowghost/similarity
Implement similarity providers
2026-05-15 10:00:53 +02:00
Shadowghost b1b4519944 Apply review suggestions 2026-05-13 00:58:33 +02:00
Shadowghost 8f7c54ee5e Merge remote-tracking branch 'upstream/master' into search-rebased 2026-05-12 22:50:16 +02:00
TheMelmacian 39049a726e move language filters from QueryFiltersLegacy to QueryFilters 2026-05-12 02:12:14 +02:00
JPVenson ec054f6a34 Backport changes from #15368 2026-05-05 17:57:27 +00:00
Niels van Velzen d359d2f7a8 Merge pull request #16166 from Shadowghost/ignore-caching
Implement ignore rule caching
2026-05-04 17:59:48 +02:00
Niels van Velzen dcba6c3659 Merge pull request #16616 from dkanada/fix-person-limit
fix person TotalRecordCount when limit is applied
2026-05-04 17:58:27 +02:00
dkanada ec990be12a fix person TotalRecordCount when limit is applied 2026-05-04 12:06:11 +09:00
Shadowghost 07a802d8fa Implement search providers 2026-05-04 01:55:07 +02:00
Shadowghost 4ebce39070 Implement Similarity providers 2026-05-03 23:43:01 +02:00
Shadowghost d20c775daf Implement ignore rule caching 2026-05-03 23:35:33 +02:00
Shadowghost a8a029de73 Fix DeleteItemsUnsafeFast usage 2026-03-11 09:16:35 +01:00
Shadowghost 2d0d497961 Update saved metadata on primary change 2026-02-25 21:03:46 +01:00
Shadowghost 3a090a5716 Optimize item count calculation for named items 2026-02-18 20:28:42 +01:00
Shadowghost 71594b4a9a Fix multiple version resolution 2026-02-08 17:22:52 +01:00
Shadowghost 2420ece5fe Fix version resolution and scan handling 2026-02-07 19:01:37 +01:00
Shadowghost 268d88a5fb Optimize Collection Grouping, NextUp and Latest queries 2026-02-07 01:38:06 +01:00
Shadowghost a0346fe5b7 Fix multiple version handling 2026-02-05 01:41:07 +01:00
Shadowghost 2789532aa8 Optimize Validator and Filter Performance 2026-01-31 19:22:04 +01:00
Shadowghost 694db80d4c Reroute on version removal 2026-01-31 19:21:36 +01:00
Shadowghost 5996c4afce Complete LinkedChildren integration and batch DTO optimizations
This commit integrates remaining performance changes:

- Add batch user data fetching in DtoService to reduce N+1 queries
- Add GetNextUpEpisodesBatch in TVSeriesManager for efficient batch retrieval
- Update Video/Movie/BoxSet to use LibraryManager for alternate versions
- Transition LinkedChild to use ItemId instead of Path (obsolete Path/LibraryItemId)
- Update providers and controllers for LinkedChildren-based references
- Add NextUpEpisodeBatchResult for batched episode queries
- Integrate IDescendantQueryProvider in SqliteDatabaseProvider
2026-01-18 19:48:46 +01:00
Shadowghost d3d4d37e82 Simplify UserDataManager and remove unused private methods
Removes unused private GetUserData and GetUserDataInternal methods.
Moves GetUserDataBatch to be an abstract interface method rather than
having a default implementation for clarity.
2026-01-18 19:45:39 +01:00
Collin-Swish afcaec0a89 Backport pull request #15965 from jellyfin/release-10.11.z
Add mblink creation logic to library update endpoint.

Original-merge: 22d593b8e9

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Bond_009 <bond.009@outlook.com>
2026-01-18 11:30:39 -05:00