Stash v0.9.25
Stash v0.9.25 — loudness normalization + Save-to-Playlist fixes
Merge branch 'loudness-normalization' into master.
Loudness normalization
Every track now plays at a consistent perceived volume — no more
volume-knob fiddling between a quiet acoustic recording and a
maximally-mastered pop single. On by default; tracks in your existing
library get measured in the background while charging.
- New DSP stages in the audio chain (LoudnessGain + SoftClipLimiter)
alongside the existing EQ. - ReplayGain-style measurement via the bundled ffmpeg's ebur128
filter; runs once per track at download time. - Backfill scanner measures your pre-existing library while the
device is charging + idle (batches of 20, capped at 10 min/run). - New "Loudness Normalization" card in the EQ screen with a toggle
and a "Library measured: X of Y tracks" progress block. - First-run notice on the EQ screen so you know it's on.
Save-to-Playlist fixes
- The picker is now scrollable (was a static Column with no scroll
modifier — overflowed the sheet height when many playlists were
listed and the Create row at the bottom was unreachable). - "Create New Playlist" pinned at the top of the list so it's always
one tap away. - Picker visibility now matches the rest of the app: a playlist is
pickable if sync is on, OR it has at least one downloaded track,
OR it's a Stash-native custom. Sync-disabled imports with no
downloaded content no longer pollute the list.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
Install
Download the .apk below and open it on your Android device. If you've got a previous Stash release installed, this upgrades in place — your library, sync history, and settings are preserved.
Requires: Android 8.0 (API 26) or newer.
See the README for first-time setup.
Full Changelog: v0.9.24...v0.9.25