From f92507b15215a713aaebac79934427d19413d078 Mon Sep 17 00:00:00 2001 From: Deluan Date: Thu, 23 Jul 2026 10:40:31 -0400 Subject: [PATCH] fix(artwork): preserve the drive when normalizing Windows file:// library paths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit url.Parse puts the volume of file://C:/Music in Host, not Path, so localOSRoot dropped it and returned /Music — os.Open/os.Stat then failed and folder/embedded art on Windows looped as dangling. Rejoin the host volume, matching core/storage/local's newLocalStorage. --- core/artwork/library_fs.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/artwork/library_fs.go b/core/artwork/library_fs.go index fab4b1f8c..6e6099325 100644 --- a/core/artwork/library_fs.go +++ b/core/artwork/library_fs.go @@ -55,5 +55,10 @@ func localOSRoot(libPath string) string { if err != nil || u.Scheme != storage.LocalSchemaID { return libPath } + // Windows drive URLs (file://C:/Music) put the volume in Host; rejoin it, matching + // core/storage/local's newLocalStorage so os.Open/os.Stat get a valid path. + if filepath.VolumeName(u.Host) != "" { + return filepath.Join(u.Host, u.Path) + } return u.Path }