Releases: Serial-ATA/lofty-rs
0.22.4
This release includes the nearly three year old #106 (previously #51), which adds the full test suite of TagLib to Lofty. With the exception of a few (currently) unsupported formats and certain behaviors I don't want to replicate, Lofty now matches TagLib's behavior test for test. 🎉
What's Changed
- MP4: Demote missing mdat atom error by @Serial-ATA in #515
 - MP4: Demote atom size mismatch error for 
freeby @Serial-ATA in #516 - WAV: Constrain writer to stream length not file length by @Serial-ATA in #517
 - Tests: Add tests from TagLib by @Serial-ATA in #106
 
Full Changelog: https://github.com/Serial-ATA/lofty-rs/blob/main/CHANGELOG.md#0224---2025-04-29
0.22.3
What's Changed
- Add ext functions to file types by @giraffekey in #510
 - Fix Rust Edition 2024 compatibility issues by @uklotzde in #512
 - Upgrade to Rust 1.85 / Edition 2024 by @uklotzde in #513
 - misc: clippy fixes by @Serial-ATA in #514
 
New Contributors
- @giraffekey made their first contribution in #510
 
Full Changelog: https://github.com/Serial-ATA/lofty-rs/blob/main/CHANGELOG.md#0223---2025-04-04
0.22.2
What's Changed
- update url in tag_reader example to correct url to ItemKey by @Lepidopteran in #501
 - Fix references to ItemValue, Picture, and PictureType in ApeTag by @Lepidopteran in #504
 - Fix File Type References in Supported File Types Section in Tag Documentation by @Lepidopteran in #506
 - Preserve multiple MusicBrainz artist, release artist, and work id tags when writing in Id3v2 by @Lepidopteran in #508
 
New Contributors
- @Lepidopteran made their first contribution in #501
 
Full Changelog: https://github.com/Serial-ATA/lofty-rs/blob/main/CHANGELOG.md#0222---2025-02-08
0.22.1
What's Changed
- VorbisComments: Support current/total TRACKNUMBER fields by @RocketRide9 in #500
 
New Contributors
- @RocketRide9 made their first contribution in #500
 
Full Changelog: https://github.com/Serial-ATA/lofty-rs/blob/main/CHANGELOG.md#0221---2025-01-11
0.22.0
This release mostly contains fixes. I had originally hoped to get Matroska/WebM support (#218) in here, but I don't have much time to work on Lofty at the moment.
This will likely be the last major release for awhile, but I'll still be around to respond to bugs or PRs.
What's Changed
- Timestamp: 
- Support parsing without separators by @Serial-ATA in #453
 - Allow short-circuiting on partially invalid inputs by @Serial-ATA in #463
 
 - ItemKey: Add 
ItemKey::TrackArtistsby @Serial-ATA in #454 - ID3v2: Restrict frame skipping to the bounds of the frame content by @Serial-ATA in #459
 - Fuzzing fixes by @Serial-ATA in:
 - Ilst: Change rules for 
gnreupgrades by @Serial-ATA in #485 - ogg_pager: Fix writing of perfectly divisible packets by @Serial-ATA in #475
 - Move some errors to strict mode by @Serial-ATA in #486
 
Full Changelog: https://github.com/Serial-ATA/lofty-rs/blob/main/CHANGELOG.md#0220---2025-01-05
0.21.1
What's Changed
- FLAC: Retain vendor strings on tag write by @Serial-ATA in #443
 - Fuzzing fixes by @Serial-ATA in #444
 - FLAC: Stop moving padding blocks by @Serial-ATA in #446
 
Full Changelog: https://github.com/Serial-ATA/lofty-rs/blob/main/CHANGELOG.md#0211---2024-08-28
0.21.0
What's Changed
- ParseOptions: Add 
ParseOptions::read_tagsby @Serial-ATA in #406 - ParseOptions: Add read_cover_art by @Serial-ATA in #415
 - ID3v2: Support writing ID3v2.3 tags by @Serial-ATA in #411
 - ID3v2: Ignore empty timestamp frames by @Serial-ATA in #416
 - Add Tag::take_filter() by @uklotzde in #414
 - MP4: Allow invalid atom sizes with 
ParsingMode::Relaxedby @Serial-ATA in #433 
Full Changelog: https://github.com/Serial-ATA/lofty-rs/blob/main/CHANGELOG.md#0210---2024-07-29
0.20.1
What's Changed
- MPEG: Improve duration calculation by @Serial-ATA & @naglis in #413
 
Full Changelog: https://github.com/Serial-ATA/lofty-rs/blob/main/CHANGELOG.md#0201---2024-07-02
0.20.0
What's Changed
- Vorbis/Ape: Verify 
FlagCompilationitem contents on merge by @Serial-ATA in #387 - Tag: Support 
ItemKey::ParentalAdvisoryfor Ilst and ID3v2 by @Serial-ATA in #388 - ID3v2: Parse timestamp frames by @Serial-ATA in #389
 - ID3v2: Turn 
Frameinto an enum by @Serial-ATA in #390 - GlobalOptions: Add 
preserve_format_specific_items()by @Serial-ATA in #391 - ID3v2: Allow for generic conversion of language frames by @Serial-ATA in #392
 - ID3v2: Disallow 4 character TXXX descriptions as 
ItemKeyby @Serial-ATA in #394 - MPEG: Improve duration estimation by @Serial-ATA in #395
 - MP4: Improve audio bitrate calculation by @Serial-ATA in #398
 - WAV: Improve audio bitrate calculation by @Serial-ATA in #399
 - Musepack: Improve audio properties by @Serial-ATA in #402
 - MP4: Dont discard tags on multiple 
udtaby @Serial-ATA in #405 - Add into_inner for BoundTaggedFile by @rakbladsvalsen in #404
 
New Contributors
- @rakbladsvalsen made their first contribution in #404
 
Full Changelog: https://github.com/Serial-ATA/lofty-rs/blob/main/CHANGELOG.md#0200---2024-06-06
0.19.2
io: Impl Length for mutable refs
Full Changelog: https://github.com/Serial-ATA/lofty-rs/blob/main/CHANGELOG.md#0192---2024-04-26