Releases: M-Igashi/mp3rgain
v2.2.3
v2.2.2
What's Changed
Full Changelog: v2.2.1...v2.2.2
v2.2.1
What's Changed
- ci: bump the github-actions group with 4 updates by @dependabot[bot] in #111
Full Changelog: v2.2.0...v2.2.1
v2.2.0
Highlights
- Upgrade Symphonia v0.5 → v0.6.0-alpha.2 — Updated audio decoding library with improved API and performance (#109)
- Per-file progress indication during ReplayGain analysis — Large files now show individual progress bars during
-r/-aanalysis - PPA packaging for Ubuntu — New
ppa:m-igashi/mp3rgainrepository for Ubuntu noble (24.04 LTS) distribution via Launchpad
Other Changes
- Code cleanup: deduplicate bit operations between MP3 and AAC modules, extract shared MP4 box navigation, remove redundant derived state
- Fix: convert Cargo.lock v4 to v3 for Ubuntu noble (Rust 1.75) compatibility in PPA builds
- Fix: stub platform-specific vendor crates and use max xz compression for PPA orig tarballs
- Fix: update rand 0.9.2 → 0.9.4 to resolve RUSTSEC-2026-0097
- Add automatic PPA upload trigger after Release workflow
- Add weekly download stats collection workflow (#110)
- Improve GUI error message display on startup failure
- Update winget manifests to v2.1.0
- Limit GUI .deb support to Ubuntu 24.04+ / Debian trixie+
- Update documentation with full package manager installation options and PPA troubleshooting
What's Changed
Full Changelog: v2.1.0...v2.2.0
v2.1.0
v2.0.4
v2.0.3
Highlights
- Refactored tag display logic in
cmd_check_tags: Extracted ~120 lines of duplicated tag display code (AAC, ID3v2, APE paths) into a shareddisplay_tag_infohelper function, improving maintainability.
Other Changes
- Added SECURITY.md and improved Dependabot configuration
- Removed CLAUDE.md from version control
- Updated README installation section with package manager tables
- Updated winget manifests and AUR packages for v2.0.2
- CI dependency updates:
github/codeql-actionbumped (two updates)softprops/action-gh-release2.5.0 → 2.6.1actions/cache5.0.3 → 5.0.4
What's Changed
- chore(deps): bump github/codeql-action from 4.32.6 to 4.33.0 by @dependabot[bot] in #97
- chore(deps): bump softprops/action-gh-release from 2.5.0 to 2.6.1 by @dependabot[bot] in #96
- chore(deps): bump actions/cache from 5.0.3 to 5.0.4 by @dependabot[bot] in #95
- ci: bump github/codeql-action from 4.33.0 to 4.34.0 in the github-actions group by @dependabot[bot] in #98
Full Changelog: v2.0.2...v2.0.3
What's Changed
- chore(deps): bump github/codeql-action from 4.32.6 to 4.33.0 by @dependabot[bot] in #97
- chore(deps): bump softprops/action-gh-release from 2.5.0 to 2.6.1 by @dependabot[bot] in #96
- chore(deps): bump actions/cache from 5.0.3 to 5.0.4 by @dependabot[bot] in #95
- ci: bump github/codeql-action from 4.33.0 to 4.34.0 in the github-actions group by @dependabot[bot] in #98
Full Changelog: v2.0.2...v2.0.3
v2.0.2
What's Changed
- chore(deps): bump actions/download-artifact from 8.0.0 to 8.0.1 by @dependabot[bot] in #92
- chore(deps): bump github/codeql-action from dd677812177e0c29f9c970a6c58d8607ae1bfefd to 0d579ffd059c29b07949a3cce3983f0780820c98 by @dependabot[bot] in #93
- chore(deps): bump actions/cache from 4.3.0 to 5.0.3 by @dependabot[bot] in #94
Full Changelog: v2.0.1...v2.0.2
v2.0.1
What's Changed
- chore(deps): bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #84
- chore(deps): bump actions/checkout from 4 to 6 by @dependabot[bot] in #85
- chore(deps): bump actions/download-artifact from 4 to 8 by @dependabot[bot] in #86
- chore(deps): bump indicatif from 0.17.11 to 0.18.4 by @dependabot[bot] in #91
- chore(deps): bump softprops/action-gh-release from 2.2.1 to 2.5.0 by @dependabot[bot] in #90
- chore(deps): bump anyhow from 1.0.100 to 1.0.102 by @dependabot[bot] in #89
- chore(deps): bump github/codeql-action from 3 to 4 by @dependabot[bot] in #88
- chore(deps): bump colored from 2.2.0 to 3.1.1 by @dependabot[bot] in #87
Full Changelog: v2.0.0...v2.0.1
mp3rgain v2.0.0
A major release with full AAC/M4A lossless gain adjustment, ID3v2 ReplayGain tag support, a redesigned library API, and improved mp3gain compatibility.
Highlights
Full AAC/M4A Lossless Gain Adjustment
mp3rgain now supports true lossless volume adjustment for AAC/M4A files, just like MP3. By modifying the global_gain field directly in the AAC bitstream, audio quality is perfectly preserved with no re-encoding.
- Apply gain:
mp3rgain -r file.m4a/mp3rgain -g 3 file.m4a - Undo gain:
mp3rgain -u file.m4a(undo data stored in iTunes freeform tags) - HE-AAC/SBR support: Properly handles SBR extension data
- Multi-channel support: Works with 5.1 and other multi-channel layouts
- Multi-track awareness: Warns when multiple audio tracks are detected
ID3v2 ReplayGain Tag Storage (-s i)
The -s i option now fully writes and reads ReplayGain data using ID3v2 TXXX frames, matching the de facto standard used by foobar2000 and other players. Previously this option fell back to APEv2 tags with a warning.
- Track/album gain and peak values stored as TXXX frames
- Undo data stored in TXXX frames for
-s i -usupport - Full tag display (
-s i -s c) and deletion (-s i -s d)
Redesigned Library API (Breaking Changes)
The Rust library API has been redesigned for v2.0.0 with better ergonomics and type safety:
- Custom error types:
anyhow::Resultreplaced with typedmp3rgain::Errorenum — library users can now pattern-match on specific error variants GainOptionsbuilder pattern: Replaces 7 separateapply_gain_*functions with a single fluent API:GainOptions::new(3).wrap(true).undo(true).apply(&path)?;
- Type-safe enums:
MpegVersionandChannelModeare now proper enums instead of strings - Private struct fields with accessors:
Mp3Analysis,MaxAmplitudeResult,AacAnalysis, andReplayGainResultfields are now accessed via methods - Modular source structure: Library internals reorganized into
analysis,gain,ape,frame,id3v2,error, andreplaygainsubmodules
mp3gain Compatibility Improvements
- macOS resource fork files (
._*) are now automatically skipped in recursive mode (-R) - Default text output now includes ReplayGain analysis results for better compatibility
- TSV and text output include album summary lines
- Warning when using
-l(channel gain) on Joint Stereo files
Migration Guide (Library Users)
If you use mp3rgain as a Rust library, note these breaking changes:
| v1.x | v2.0 |
|---|---|
anyhow::Result<T> |
mp3rgain::Result<T> (with typed Error enum) |
analysis.frame_count |
analysis.frame_count() |
analysis.mpeg_version (String) |
analysis.mpeg_version() (MpegVersion enum) |
apply_gain_with_undo(path, steps) |
GainOptions::new(steps).undo(true).apply(path) |
apply_gain_wrap(path, steps) |
GainOptions::new(steps).wrap(true).apply(path) |
find_max_amplitude(path) → (f64, u8, u8) |
find_max_amplitude(path) → MaxAmplitudeResult |
Convenience functions apply_gain() and apply_gain_db() are retained for simple use cases.
What's Changed
- Implement AAC lossless bitstream gain adjustment (issue #64 phase 2) by @M-Igashi in #76
- Implement AAC undo support, validation, and extended support (issue #64 phases 3-5) by @M-Igashi in #77
- Implement Phase 5 breaking API changes for v2.0 (issue #68) by @M-Igashi in #78
- Implement Phase 6 API polish: GainOptions builder and submodules (issue #68) by @M-Igashi in #81
- Implement full ID3v2 ReplayGain tag storage
-s iby @M-Igashi in #82 - Fix mp3gain compatibility issues found in comprehensive testing (issue #79) by @M-Igashi in #83
Full Changelog: v1.7.0...v2.0.0