dev → main: collage center-crop, server DRY, CI durability-off #80
Reference in New Issue
Block a user
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Three commits on top of the prior PR #79 merge.
Changes
edd198cd—fix(server): collage drawScaled uses center-crop instead of stretchThe collage cell scaler was nearest-neighbor stretching non-square album covers to fill a 300×300 cell. Operator saw it on the
new_for_yousystem playlist because album-coherent variants pull fewer unique covers per cell, amplifying the warping. Replaced with cover-fit (preserve aspect, center-crop) matching every other UI surface. Existing collages won't re-render until the next 03:00 system-playlist rebuild.024493f2—refactor(server): unify stream URL builders + MIME tables + cover-path helperCloses Scribe #614, #615, server half of #616 from the 2026-06-04 divergent-provider audit.
streamURLhelper used everywhere/api/tracks/{id}/streamis built (was inline concat inplaylists.goandcast_token.go). NewstreamURLWithExtfor the.extcast variant.audioContentTypeinmedia.gois the canonicalfile_format → MIMElookup.mimeForFormatincast_token.gois a thin wrapper that overrides the unknown-format fallback toaudio/mpeg(Sonos rejects octet-stream). Addsmpeg/vorbis/wavealiases. Subsonic'scontentTypeForFormatstays frozen.coverart.ResolveAlbumPathextracted;api/media.goandsubsonic/stream.goboth delegate (was byte-identical duplicate).28300e19—perf(ci): turn off Postgres durability in integration testsALTER SYSTEM SET fsync = off / synchronous_commit = off / full_page_writes = offon the throwaway CI Postgres before migrations. Non-fatal so a perms surprise degrades to slow, never red.Measured before/after on CI runs 474 vs 486:
go testportioninternal/apiinternal/recommendationinternal/playlistsinternal/coverartTest plan
dev(already verified at28300e19)TrackDurationfrom Sonos (server change from PR #79; doubles down here)/api/playlists/system/{kind}/refresh)🤖 Generated with Claude Code