haudiotagger 1.1.2
haudiotagger: ^1.1.2 copied to clipboard
Read and write audio metadata in Flutter. Supports MP3, FLAC, OGG, MP4, WAV, AIFF, and more. Powered by Rust for fast, reliable performance.
1.1.2 #
- Added partial-tag editing that preserves existing metadata:
Haudiotagger.update(path, TagChanges(...))applies only the fields you specify, leaving the rest untouched (plusupdateFromBytesfor web/native).Haudiotagger.remove(path, [TagField.lyrics, TagField.comment, ...])clears specific fields while keeping the rest (plusremoveFromBytes).Haudiotagger.clear(path)removes all metadata (plusclearFromBytes).
- Added
commentfield toTag(read/write supported).
1.1.1 #
- Added read-only
AudioPropertiesmodel exposing technical audio properties (duration, bitrate, sample rate, channels, bits per sample, codec, container format, lossless flag, bitrate mode, file size). Available viaHaudiotagger.readProperties(path)(native) andHaudiotagger.readPropertiesFromBytes(bytes)(web + native). Does not affect existing read/write behavior.
1.1.0 #
- Pointed every platform's prebuilt download at the fixed release. The Android, Linux and Windows
CMakeLists.txtand the iOS/macOS podspecs all hardcodedv1.0.1, so every version still shipped the old buggy native binary. All now download fromv1.1.0. Also fixed the macOS podscript condition so it actually re-downloads (it previously skipped the download because the committed framework already existed). - MP3 write fix (byte-level ID3v2 path, robust
.mp3/ID3 detection) and MP3 lyrics fix included.
1.0.9 #
- Fixed Android never picking up native fixes:
android/CMakeLists.txtpinned the prebuilt.sodownload tov1.0.1, so every version still shipped the old buggy binary. Pointed it at thev1.0.8release (which contains the fixedandroid.tar.gz). NOTE: the CMakeVersionmust be bumped alongside future releases, or Android will keep using an outdated prebuilt.
1.0.8 #
- Hardened MP3 write detection.
writepreviously gated the byte-level ID3v2 path on lofty's content probe (file.file_type() == Mpeg), which mis-identifies some real MP3s and routed them through lofty's writer, producingFileEncodingError { format: None }. Detection now keys off the.mp3extension and a leadingID3marker (matchingwrite_to_bytes), so MP3s never reach lofty'ssave_to_path/remove_from. Added a regression test for an unsniffable-but-.mp3file.
1.0.7 #
- Fixed
writecrashing on MP3/ID3v2 files withFileEncodingError { format: None }. lofty'sTagType::remove_fromre-probes the file on write and fails for any file it cannot content-sniff (common on Android). MP3 writes now strip the existing tag at the byte level (ID3v2/ID3v1/APE markers) and prepend a freshly serialized ID3v2, so the new tag fully replaces the old one. Other formats replace the in-memory primary tag and letsave_to_pathrewrite the file (also stripping it when the new tag is empty). Addpictures: []toTagwhen clearing all fields.
1.0.6 #
- Fixed lyrics not persisting for MP3 (ID3v2) files.
ItemKey::Lyricsis unsupported by ID3v2 (lyrics live in theUSLTframe, addressed byItemKey::UnsyncLyrics).writenow uses the ID3v2-correct key andreadfalls back to both keys, so lyrics round-trip on MP3 as well as MP4.
1.0.5 #
- Fixed Android build failure (
Inconsistent JVM Target Compatibility): replaced the removed legacykotlinOptionswith a Kotlin JVM toolchain (jvmToolchain(17)), aligning the Kotlin and Java compile targets soflutter build apksucceeds.
1.0.4 #
- Added Swift Package Manager support for iOS and macOS: committed
ios/haudiotagger/Package.swift,macos/haudiotagger/Package.swift, and the prebuilthaudiotagger.xcframework, clearing the pub.dev SPM warning. - Removed the legacy
kotlinOptions { jvmTarget = '17' }block fromandroid/build.gradle, clearing the pub.dev legacy Kotlin configuration warning.
1.0.3 #
- Declared
webplatform support inpubspec.yaml(added theweb:entry underflutter.plugin.platformsandlib/haudiotagger_web.dartregistration shim). pub.dev now lists Web support for the package.
1.0.2 #
- Fixed
write()failing to replace/remove existing tags (lofty'sremove_from_pathopened a probe without guessing the file type and aborted withformat: None). Tags are now properly removed from disk before the new tag is written, and clearing a tag fully strips it. - Fixed reading/writing files by path regardless of file extension — format is now detected from file content instead of the path extension.
- Fixed
writeToBytes()now correctly removes existing tags before applying the new ones (byte-based I/O on all platforms including web). - Tests now run against isolated per-test scratch copies of the samples, eliminating the parallel-execution race on shared fixture files.
- Added the
samples/directory to.gitignore/.pubignore.
1.0.1 #
- Add web/WASM support — read and write metadata in the browser
- Add
readFromBytes()andwriteToBytes()for byte-based I/O (works on all platforms including web) - Fixed BPM and tag field unwrap panics in Rust
- Fixed Dart init race condition (concurrent
RustLib.init()calls) - Improved error messages (human-readable
HaudiotaggerErrordisplay) - Added
Clonederive toPictureTypeandMimeType - Example app rewritten as cross-platform metadata editor
1.0.0 #
- Initial release
- Read audio metadata (title, artist, album, year, genre, cover art, lyrics, BPM, and more)
- Write audio metadata back to files
- Support for MP3, FLAC, OGG, MP4/M4A, WAV, AIFF, APE, WavPack, Musepack, AAC
- Cross-platform: Android, iOS, Linux, macOS, Windows
- Powered by Rust (lofty) via flutter_rust_bridge