aboutsummaryrefslogtreecommitdiff
path: root/tests/Jellyfin.Server.Implementations.Tests/Item
AgeCommit message (Collapse)Author
8 hoursMerge pull request #17762 from Shadowghost/fix-scan-memory-leakCody Robibero
Bound change batches during a scan; keep ffprobe and image saves from failing
4 daysavoid correlated item value name queriesFelix Förtsch
4 daystest legacy item value filter semanticsFelix Förtsch
4 daysPotential fix for pull request findingFelix Förtsch
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
5 daysTreat an item deleted mid-save as a no-op when saving its imagesShadowghost
5 daysavoid 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.
6 daysFix recursive handling for LinkedChildrenShadowghost
8 daysCount a season's episodes by the season they belong toShadowghost
12 daysMerge pull request #17715 from Shadowghost/fix-people-cleanupCody Robibero
Delete credits nothing maps to and bound item-by-name folder names
12 daysDelete a credit once no item maps to it any moreShadowghost
12 daysOrder 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-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-21Fix series merging leaking across libraries and under-counting merged childrenShadowghost
2026-08-17Fix SQLite variable limit in child count batchesmartin-77
2026-08-14Count alternate versions in the media filters and align filter conditionsShadowghost
2026-08-14Skip alternate version links when resolving link parentsShadowghost
2026-08-12Fix formattingShadowghost
2026-08-12Share the SQLite fixture across the item testsShadowghost
2026-08-11Optimize query helper memoryShadowghost
2026-08-07Merge pull request #17541 from vdatanet/fix/byname-total-record-countCody Robibero
Fix by-name endpoints reporting TotalRecordCount=0 next to a populated Items array
2026-08-06Move the deletion of old related info to just before the saveMarc Brooks
This makes the deletion of BaseItemProviders, BaseItemImageInfos, and BaseItemMetadataFields happen in batch as a contiguous block so the lock isn't held across items, just before the bulk SaveChanges.
2026-08-05Project the lowered person credit values once when updating peopleShadowghost
2026-08-05Fix by-name endpoints reporting TotalRecordCount=0 next to a populated Items ↵vdatanet
array `GetItemValues` -- the shared path behind `/Artists`, `/AlbumArtists`, `/Genres`, `/MusicGenres` and `/Studios` -- disabled the total record count whenever the query carried no `Limit`: if (!filter.Limit.HasValue) { filter.EnableTotalRecordCount = false; } A request without an explicit limit therefore came back with N entries in `Items` and `TotalRecordCount = 0`. Clients that page on the reported total -- the documented contract every other list endpoint honours -- read that as an empty library. `/Items` and `/Persons` do not share this path and report the count correctly, which is what makes the inconsistency visible from the outside. Measured against master with a 62-track music library: GET /Artists?UserId=... -> TotalRecordCount=0 Items=5 GET /Artists?UserId=...&limit=100 -> TotalRecordCount=5 Items=5 Dropping the block costs nothing: `representativeIds` is materialised into a `List<Guid>` a few lines below regardless, so `.Count` was already available and the count is now reported from it. Callers that genuinely want to skip the count still can -- `EnableTotalRecordCount = false` is honoured as before. The block also mutated the caller's own query object, so a query instance reused across calls silently lost its total after the first limitless one. That is covered by a test as well.
2026-07-16Fix tie-breaker performanceShadowghost
2026-07-02Fix review commentsShadowghost
2026-06-19Surface the played version for resumeShadowghost
2026-06-12Fix performanceShadowghost
2026-06-09Coalesce alternate-version progress onto primary in resume filterShadowghost
2026-06-07Collapse version groups to the primary version in queriesShadowghost
2026-01-05fix: Handle unknown item types gracefully in DeserializeBaseItemZeusCraft10
When querying items with recursive=true, items with types from removed plugins would cause a 500 error. Now these items are skipped with a warning log instead of throwing an exception. Fixes #15945
2025-11-17Backport pull request #15413 from jellyfin/release-10.11.zJPVenson
Fixed missing sort argument Original-merge: 91c3b1617e06283c88f36bc63046b99c993cb774 Merged-by: crobibero <cody@robibe.ro> Backported-by: Bond_009 <bond.009@outlook.com>
2025-03-27Fix merged namespace errorCody Robibero
2025-03-27Fix Sort by Year Bug (#12101) (#13733)Jacob Warren