Back to Provenance

3280

.changelog/3280.md

3.3.11.8 KB
Original Source

Fixed

  • Spotlight thumbnail regressionUIImage(contentsOfFile:) was called with the path-component of an HTTPS URL when artwork wasn't cached locally; now guarded with isFileURL so inline thumbnailData is only set from real local files while thumbnailURL still allows Spotlight to fetch the remote image
  • Spotlight extension sync network requestIndexRequestHandler.fileURL(for:) could return a remote HTTPS URL after the artwork fallback change, causing Data(contentsOf:) to block the extension with a synchronous network request; it now only returns local file URLs
  • PVGameLibraryUpdatesController thumbnail blockingData(contentsOf:) for save-state Spotlight indexing now guards behind isFileURL to prevent accidental synchronous network requests when the game artwork URL is remote
  • SaveStateBrowserView missing artwork for legacy games — game artwork lookup fell back to originalArtworkFile?.url only, which is nil for games imported before the originalArtworkFile field existed; now also checks PVMediaCache via trueArtworkURL so pre-existing OpenVGDB-cached artwork is displayed
  • PVImageFile artwork cache key mismatchpathOfCachedImage was looking up url.lastPathComponent in PVMediaCache (double-hash), and fetchArtworkFromCache() used the full local path as a key; both now resolve directly from the file URL since PVImageFile already stores the local path

Changed

  • ArtworkLoader: shared local file URL resolver — Extracted artwork-file URL resolution (prefer originalArtworkFile.pathOfCachedImage, fall back to PVMediaCache keyed by trueArtworkURL) into ArtworkLoader.resolveLocalArtworkFileURL(forGameId:) with a process-wide memo cache; clearLocalURLCache() / clearLocalURLCache(forGameId:) are provided for invalidation after re-import