Stash v0.8.1
fix: 0.8.1 — playback crash regression in 0.8.0
Sorry about this one. v0.8.0 crashed for many users the first time they tapped play, with no obvious recovery — the app would kill itself before producing audio, every single time. v0.8.1 fixes the regression. Update and you're back.
What broke
The new equalizer's first-launch migration (EqMigration) runs once per install to translate the legacy EQ preferences into the v0.8.0 format. For users whose legacy preferences contained an empty gain array — eq_custom_gains = "[]", a state the old code occasionally produced — the migration's gain-resampler called coerceIn(0, -1) on an empty list's index range and threw IllegalArgumentException.
The throw happened inside EqController's constructor, called synchronously from StashPlaybackService.onCreate, so the playback service couldn't start. Every play attempt — Play All, tap a track, resume — recreated the service and re-hit the migration and re-threw, in a loop the user couldn't escape.
What's fixed
EqMigration.adaptGainsnow treats an empty legacy gain list as flat zeros, the same as missing legacy data.LegacyEqualizerStoreImpl.parseGainsJsonnow falls back to defaults when the parsed JSON array is empty, in addition to the existing fallback for null/malformed input.- New regression tests cover both the empty-list and non-five-element-list paths so this can't sneak back in.
After updating
The app will run the migration successfully on next launch and start the playback service normally. Your library, sync state, playlists, downloaded files, and Last.fm connection are all preserved. Equalizer state resets to "off / flat" — re-enable from Settings if you want it.
Thanks to lucabugg (#24) for the report and to everyone who hit this.
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.8.0...v0.8.1