github rawnaldclark/Stash v0.8.1
Stash v0.8.1

latest releases: v0.9.94, v0.9.93, v0.9.92...
3 months ago

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.adaptGains now treats an empty legacy gain list as flat zeros, the same as missing legacy data.
  • LegacyEqualizerStoreImpl.parseGainsJson now 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

Don't miss a new Stash release

NewReleases is sending notifications on new releases.