navidrome/server/jellyfin/dto
Deluan 817baa5c1a fix(jellyfin): omit the blurhash when no current hash exists, never fabricate
Upstream Jellyfin omits ImageBlurHashes entries when no hash was computed, and
clients are built around that: redesign Finamp uses the blurhash as immutable
cover identity (year-long cache pins, download dedup) and falls back to id-keyed
caching with a short TTL when it is absent. Emitting a rotating fake seeded by
id+version fed a fabricated identity into those caches and churned them on every
version bump, and a fake accepted under an imprecise artwork version could pin a
wrong value for a year. Absence is strictly safer: no LQIP during the first-serve
gap, self-healing within the fallback TTL.

The staleness gate is kept, its job now being to suppress a stale stored hash
rather than to choose between real and fake. Songs no longer carry a fabricated
per-album value either; art resolution uses AlbumPrimaryImageTag alone.
2026-07-17 23:28:01 -04:00
..
blurhash.go fix(jellyfin): omit the blurhash when no current hash exists, never fabricate 2026-07-17 23:28:01 -04:00
blurhash_test.go fix(jellyfin): omit the blurhash when no current hash exists, never fabricate 2026-07-17 23:28:01 -04:00
dto.go feat(jellyfin): lyrics endpoint and Lyric stream advertising (#5791) 2026-07-16 14:39:11 -04:00
dto_suite_test.go feat(jellyfin): experimental Jellyfin Music API support (#5730) 2026-07-14 11:46:37 -04:00
fields.go feat(jellyfin): experimental Jellyfin Music API support (#5730) 2026-07-14 11:46:37 -04:00
ids.go feat(jellyfin): experimental Jellyfin Music API support (#5730) 2026-07-14 11:46:37 -04:00
ids_test.go feat(jellyfin): experimental Jellyfin Music API support (#5730) 2026-07-14 11:46:37 -04:00
mappers.go fix(jellyfin): omit the blurhash when no current hash exists, never fabricate 2026-07-17 23:28:01 -04:00
mappers_test.go fix(jellyfin): omit the blurhash when no current hash exists, never fabricate 2026-07-17 23:28:01 -04:00