Releases: Serial-ATA/lofty-rs
0.24.0
What's Changed
- APE: Properly handle multi-value text items by @Serial-ATA in #633
- Improve documentation with fixes, comments, and examples by @thedavidweng in #636
- FLAC: Fix corruption of shrinking metadata by @Serial-ATA in #641
New Contributors
- @thedavidweng made their first contribution in #636
Full Changelog: https://github.com/Serial-ATA/lofty-rs/blob/main/CHANGELOG.md#0240---2026-04-12
0.23.3
What's Changed
- ID3v2: fallback when BOM is not present in UTF-16 data by @aschey in #614
- Tag: only enforce valid year in strict mode by @aschey in #616
- docs: Add note on AI usage in CONTRIBUTING.md by @Serial-ATA in #618
- FLAC: Simplify tag writes by @Serial-ATA in #617
- OGG: Fix infinite loop by @Serial-ATA in #622
- ID3v2: Add back missing supported ItemKeys by @Serial-ATA in #623
- ItemKey: Add
ItemKey::MusicBrainzReleaseTypeby @matteron in #626 - IFF: Support invalid chunk padding by @Serial-ATA in #627
- ID3v2: remove support for
ItemKey::Lyricsby @Serial-ATA in #628
New Contributors
Full Changelog: https://github.com/Serial-ATA/lofty-rs/blob/main/CHANGELOG.md#0233---2026-03-14
0.23.2
What's Changed
- FLAC: Fix duplicate
Last-metadata-blockflags by @Serial-ATA in #609
Full Changelog: https://github.com/Serial-ATA/lofty-rs/blob/main/CHANGELOG.md#0232---2026-02-14
0.23.0
0.23.0 is finally here! The biggest release in years 🎉
The breaking changes most likely to affect existing projects are:
- The removal of
ItemKey::Unknown(PR) Accessor::year()was replaced withAccessor::date()(PR)- Generic support for popularimeters (user star ratings) (PR)
- See the docs, it can be a bit complicated!
What's Changed
- ItemKey: Add
ItemKey::AlbumArtistsby @Serial-ATA in #523 - ItemKey: Remove
ItemKey::Unknownby @Serial-ATA in #526 - Add optional serde support for *Type enums by @Lepidopteran in #534
- ID3v2: Support single-BOM COMM/USLT frames by @Serial-ATA in #535
- ID3v2: Fix panic on empty UTF-16 strings with no BOM by @Serial-ATA in #538
- VorbisComments: Parse
TRACKNUMBERwith respect toimplicit_conversionby @Methapon2001 in #542 - VorbisComments: Handle disc number field with current/total format by @Methapon2001 in #544
- fix: incorrect disc number handling in ape tag writer by @AyaseFile in #546
- ogg_pager: Fix panic on nil packet by @WorkingRobot in #547
- Probe: Add
read_bound()by @Serial-ATA in #557 - FileType: Distinguish read-only tag support by @Serial-ATA in #566
- Picture: Remove
Picture::new_unchecked()by @Serial-ATA in #569 - ItemKey: Add ItemKey::UnsyncLyrics by @Serial-ATA in #568
- Adding list of extensions by @kdeng00 in #558
- Add country release by @UnknownSuperficialNight in #573
- Accessor: Replace
*_year()with*_date()by @Serial-ATA in #574 - ItemKey: Add variants for AcoustID by @Serial-ATA in #575
- ID3v2: Unify generic conversions by @Serial-ATA in #576
- ID3v2: Fix single-value item conversions by @Serial-ATA in #579
- ItemKey: Add
ItemKey::Descriptionmapping for Vorbis Comments by @Serial-ATA in #587 - AAC: Fix frame header search by @Serial-ATA in #586
- ID3v2: Fix parsing WFED as UrlLinkFrame by @NikkoFox in #590
- WriteOptions: Add
lossy_text_encodingoption by @Serial-ATA in #594 - FLAC: Fix writing in files with no metadata by @Serial-ATA in #583
- Tag: Add support for generic popularimeters by @Serial-ATA in #597
- OGG: Improve page search performance by @Serial-ATA in #600
- MP4: Fix freeform atom size validation by @M0Rf30 in #599
New Contributors
- @Methapon2001 made their first contribution in #542
- @AyaseFile made their first contribution in #546
- @WorkingRobot made their first contribution in #547
- @kdeng00 made their first contribution in #558
- @UnknownSuperficialNight made their first contribution in #573
- @NikkoFox made their first contribution in #590
- @M0Rf30 made their first contribution in #599
Full Changelog: https://github.com/Serial-ATA/lofty-rs/blob/main/CHANGELOG.md#0230---2026-02-08
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