aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server.Implementations/Item
AgeCommit message (Collapse)Author
4 daysBackport pull request #18004 from jellyfin/release-12.zorut34iop
Avoid full people scans and writes for unchanged credits Original-merge: 63c81a9975c339a0757142cb69a318b50b85d216 Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
4 daysBackport pull request #18003 from jellyfin/release-12.zShadowghost
Check Live TV access for a single user instead of enumerating all users Original-merge: 2bcd3b1efb121ad661495570b43aace247ee0a27 Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
4 daysBackport pull request #17980 from jellyfin/release-12.zShadowghost
Drop dead item data and fix query ordering and bound parameters Original-merge: 3daa917de024dbb605e0686f632c17729dc9527c Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
4 daysBackport pull request #17898 from jellyfin/release-12.zShadowghost
Populate missing tags array in Filters2 Original-merge: 3d52fbe84e78d6447465bb831039dabb6142ca67 Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
4 daysBackport pull request #17897 from jellyfin/release-12.znintwentydo
Clean up orphaned people when deleting items Original-merge: f6cbafc36e66ca676a87f22b0faeaaf571d9af3f Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
4 daysBackport pull request #17884 from jellyfin/release-12.zShadowghost
Release a folder's children once its subtree has been scanned Original-merge: 2f2adae7d99537e53417f6d92aa3d40345a17b99 Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
4 daysBackport pull request #17881 from jellyfin/release-12.zShadowghost
Fix /UserViews exhausting memory and reporting random child counts Original-merge: a838a06aa51eac388a76e9e6421f1a80873c417b Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
4 daysBackport pull request #17873 from jellyfin/release-12.zShadowghost
Delete the full ownership closure when deleting items Original-merge: 705b69e93d7ea86346348b5ad2a97e0f54494f04 Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
4 daysBackport pull request #17842 from jellyfin/release-12.zShadowghost
Fix versions of a video still listing separately from their group and preserve manual merges Original-merge: cabec7ec28df671e3bb1c360c32db60b085f4084 Merged-by: crobibero <cody@robibe.ro> Backported-by: Cody Robibero <cody@robibe.ro>
12 daysMerge pull request #17821 from Shadowghost/more-countsCody Robibero
Expose optimized ItemCounts for byName items
12 daysCount distinct items for byName ItemCounts and batch every kindShadowghost
13 daysExpose optimized ItemCounts for byName itemsShadowghost
13 daysShare played state across alternate versionsShadowghost
14 daysMerge pull request #17762 from Shadowghost/fix-scan-memory-leakCody Robibero
Bound change batches during a scan; keep ffprobe and image saves from failing
2026-09-02avoid correlated item value name queriesFelix Förtsch
2026-09-01Treat an item deleted mid-save as a no-op when saving its imagesShadowghost
2026-09-01avoid correlated legacy item value filter queriesFelix Förtsch
The legacy filter queries projected ItemValue before grouping tags and genres. EF Core translated that shape into duplicated correlated aggregates, causing multi-minute requests for libraries with many distinct values and blocking unrelated SQLite-backed API calls. Join ItemValuesMap directly to ItemValues before grouping. This preserves type and item filtering, clean-value grouping, minimum-value selection and ordering while producing one aggregate query. Add an in-memory SQLite regression test for result semantics and both SQL shapes.
2026-08-31Merge pull request #17752 from Shadowghost/fix-linkedchildren-recursiveCody Robibero
Fix recursive handling for LinkedChildren
2026-08-31Merge pull request #17724 from Shadowghost/fix-by-name-item-countsCody Robibero
Fix item counts on the by-name endpoints
2026-08-31Fix recursive handling for LinkedChildrenShadowghost
2026-08-29Count a season's episodes by the season they belong toShadowghost
2026-08-27Fix By-Name item count handlingShadowghost
2026-08-25Merge pull request #17715 from Shadowghost/fix-people-cleanupCody Robibero
Delete credits nothing maps to and bound item-by-name folder names
2026-08-25Delete a credit once no item maps to it any moreShadowghost
2026-08-25Order IsPlayed and IsUnplayed by the played state the filter reportsPiotr Niełacny
Ordering mapped both keys to the item's own stored UserData row. Folders do not have one: a series, season or box set counts as played when no descendant is left unplayed, which is what the isPlayed filter and the DTO both report. A mixed library therefore sorted every series and box set into the unplayed group, and a query could filter and sort by two different notions of "played". Extract the filter's predicate into BuildIsPlayedFilter and route both sort keys through it so the two cannot drift apart again.
2026-08-22Merge remote-tracking branch 'upstream/master' into fix-series-mergingShadowghost
2026-08-22Merge pull request #17700 from Shadowghost/better-people-resolutionCody Robibero
Look up people by item via the credit map instead of a full scan
2026-08-22Merge pull request #17607 from Shadowghost/optimize-db-helper-memoryCody Robibero
Optimize query helper memory
2026-08-22Look up people by item via the credit map instead of a full scanShadowghost
2026-08-22Multiple fixes and improvementsShadowghost
Co-Authored-By: Cody Robibero <cody@robibe.ro>
2026-08-22Merge remote-tracking branch 'upstream/master' into optimize-db-helper-memoryShadowghost
# Conflicts: # src/Jellyfin.Database/Jellyfin.Database.Providers.Sqlite/Migrations/JellyfinDbModelSnapshot.cs
2026-08-21Use WhereOneOrManyShadowghost
2026-08-21Fix series merging leaking across libraries and under-counting merged childrenShadowghost
2026-08-19Fix latest items for mixed librariestheguymadmax
2026-08-17Merge pull request #17658 from martin-77/fix/child-count-sql-variable-limitCody Robibero
Fix SQLite variable limit in child count batches
2026-08-17Fix SQLite variable limit in child count batchesmartin-77
2026-08-16Fix large playlist persistencemartin-77
2026-08-14Count alternate versions in the media filters and align filter conditionsShadowghost
2026-08-11Fix FindArtiststheguymadmax
2026-08-10Fix master buildShadowghost
2026-08-10Merge pull request #17576 from obiwantoby/perf/batch-mediasourcecount-dtoCody Robibero
Bugfix: #17547 | Batching MediaSourceCount into one call
2026-08-10Merge pull request #17597 from theguymadmax/fix-people-filteringCody Robibero
Fix PersonTypes not applied when filtering by person
2026-08-10Merge pull request #17588 from TOomaAh/fix/is-airing-filterCody Robibero
fix: correct IsAiring negation to exclude airing items
2026-08-10Merge pull request #17563 from Shadowghost/cleanup-sql-helpersCody Robibero
Cleanup and simplify query helpers
2026-08-10Fix PersonTypes not applied when filtering by persontheguymadmax
2026-08-09fix: correct IsAiring negation to exclude airing itemsTOomaAh
2026-08-08Use WhereOneOrMany helper for the alternate version id filterbrandon
Filter the parent ids with the WhereOneOrMany query helper instead of a raw Contains so the id list is wrapped in EF.Parameter and EF Core reuses one compiled query plan across calls, matching how the rest of the item queries build their id filters.
2026-08-08Address review on MediaSourceCount batchingbrandon
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-07Batch alternate version detection in DtoService to remove MediaSourceCount N+1brandon
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-07Merge pull request #17571 from obiwantoby/perf/batch-people-dtoCody Robibero
Batch people lookups when building item DTOs