- Add injectFlacTags() to write VORBIS_COMMENT block into FLAC files
- Add injectM4aTags() to write iTunes ilst text+integer atoms into M4A files
(trkn/disk use proper binary-packed iTunes integer format, not text)
- Add embedMetadata() dispatcher; call it in all download functions when
getMetadataEnable() is true (was wired in settings but never called)
- Extend fetchTrackData() to return discNumber, albumTitle, albumArtist
(preferring track.album?.artist?.name for compilations), year, isrc, copyright
- Fix cover art as separate file: coalesce cover fetch when both embed and
save are enabled; add cover.jpg to album/playlist ZIP; trigger cover.jpg
browser download for single tracks
- Fix library date sorting: Tidal favorites API uses 'created', not 'dateAdded'
— use i.created || i.dateAdded || "" for tracks, albums, and playlists
Co-authored-by: 19JVJeffery <94115228+19JVJeffery@users.noreply.github.com>
- Add fetchCoverArt() to download JPEG from Tidal CDN with proxy fallback
- Add injectFlacCover() to insert METADATA_BLOCK_PICTURE block into FLAC
- Add injectM4aCover() to insert/replace covr atom in M4A (MPEG-4) files
- Add embedCoverArt() dispatcher
- fetchTrackData() now returns coverHash from track.album.cover
- downloadTrack/Album/Playlist/Mix embed cover art when getMetadataCover() is true
- Album downloads fetch cover once; playlist/mix downloads use a per-hash cache
Co-authored-by: 19JVJeffery <94115228+19JVJeffery@users.noreply.github.com>