<feed xmlns='http://www.w3.org/2005/Atom'>
<title>jellyfin/Jellyfin.Server.Implementations/Item/PeopleRepository.cs, branch v12.0-rc5</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.b0n.dev/jellyfin/atom?h=v12.0-rc5</id>
<link rel='self' href='https://git.b0n.dev/jellyfin/atom?h=v12.0-rc5'/>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/'/>
<updated>2026-08-07T15:59:17Z</updated>
<entry>
<title>Batch people lookups when building item DTOs</title>
<updated>2026-08-07T15:59:17Z</updated>
<author>
<name>brandon</name>
<email>brandon@clinger.dev</email>
</author>
<published>2026-08-07T15:59:17Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=d6da6906a4b3426f05c5bf4ffe8bab4b2bc78ce8'/>
<id>urn:sha1:d6da6906a4b3426f05c5bf4ffe8bab4b2bc78ce8</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Project the lowered person credit values once when updating people</title>
<updated>2026-08-05T11:21:57Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-08-05T10:22:55Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=61e75599b30cd346eab743529271ab3e002f0474'/>
<id>urn:sha1:61e75599b30cd346eab743529271ab3e002f0474</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix /Persons favourites timing out by removing the correlated favourites join</title>
<updated>2026-08-03T22:40:53Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-08-03T22:40:53Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=d3c7aa6bd21cfcac488fc5438c8fd34865862500'/>
<id>urn:sha1:d3c7aa6bd21cfcac488fc5438c8fd34865862500</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Preserve multiple roles per person type instead of deduping credits by name and type</title>
<updated>2026-08-01T18:35:27Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-08-01T18:35:27Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=cbc2c7c32345f670d928f7840e5fd7422241845d'/>
<id>urn:sha1:cbc2c7c32345f670d928f7840e5fd7422241845d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Restrict people, genres, studios and artists to names backed by an item the user can access</title>
<updated>2026-07-28T19:28:56Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-07-28T18:41:21Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=9a258c089dcbc68b12fe63479542fc7158ec7a10'/>
<id>urn:sha1:9a258c089dcbc68b12fe63479542fc7158ec7a10</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Make the /Persons de-duplication use an index instead of grouping the table</title>
<updated>2026-07-28T18:18:02Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-07-28T14:34:45Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=5f5c71ab7542d4dab088773b4ec4f75a369b83cc'/>
<id>urn:sha1:5f5c71ab7542d4dab088773b4ec4f75a369b83cc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Reduce correlated subqueries to improve performance</title>
<updated>2026-07-23T18:50:06Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-07-23T09:52:26Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=9aa79682bab9a18f87b0c13c776a19e3eb357335'/>
<id>urn:sha1:9aa79682bab9a18f87b0c13c776a19e3eb357335</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix similarity (#16942)</title>
<updated>2026-05-31T15:21:15Z</updated>
<author>
<name>Tim Eisele</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-05-31T15:21:15Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=63d1af5fe7ed67d0e2e56c79ef518a7a87da782f'/>
<id>urn:sha1:63d1af5fe7ed67d0e2e56c79ef518a7a87da782f</id>
<content type='text'>
Fix similarity</content>
</entry>
<entry>
<title>Merge pull request #16856 from Shadowghost/movie-recommendations</title>
<updated>2026-05-27T18:59:18Z</updated>
<author>
<name>Bond-009</name>
<email>bond.009@outlook.com</email>
</author>
<published>2026-05-27T18:59:18Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=2f17516d4bd8700e4a66f609b9c5fac835020407'/>
<id>urn:sha1:2f17516d4bd8700e4a66f609b9c5fac835020407</id>
<content type='text'>
Fix movie recommendations</content>
</entry>
<entry>
<title>Run tree-wide dotnet format</title>
<updated>2026-05-21T18:48:41Z</updated>
<author>
<name>jakobkukla</name>
<email>jakob.kukla@gmail.com</email>
</author>
<published>2026-04-16T09:38:01Z</published>
<link rel='alternate' type='text/html' href='https://git.b0n.dev/jellyfin/commit/?id=37350282cc18a977162dcf14fe9b6068d29d6edf'/>
<id>urn:sha1:37350282cc18a977162dcf14fe9b6068d29d6edf</id>
<content type='text'>
</content>
</entry>
</feed>
