New Features
- library: Add bit depth quality label mode
- metadata: Show explicit badges in track titles
- library: Support multiple storage folders
- metadata: Add download attribution to comments
- metadata: Edit release tags and render UPC barcodes
- tagging: Write release identity tags
- extensions: Preserve provider metadata
- filename: Add provider traceability tags
- metadata: Show embedded cover resolution (#510)
- playlists: Add play actions (#506) by @Padma-Dev-E
- library: Add combined quality label #511
- metadata: Review batch tag enrichment #511
- logs: Copy selected entries #511
- search: Save max-quality cover on long press #511
- metadata: Show cover dimensions and size #511
- download: Add automatic lossy conversion
Bug Fixes
- ios: Handle library scan count output
- player: Smooth timed lyrics highlighting
- library: Show complete quality labels
- analysis: Reject false low spectral cutoffs
- ui: Align explicit badges with track titles
- metadata: Avoid duplicate explicit indicator
- metadata: Preserve explicit advisory across conversions
- home: Clear recent activity permanently
- library: Restore live folder scan progress
- library: Open folder actions on row tap
- metadata: Show readable SAF file locations
- analysis: Bound spectrogram memory for large files
- metadata: Preserve source release fields across providers
- download: Unblock queue after verification cancel
- download: Accept matching tracks across releases
- ui: Align metadata and wrap track badges
- ui: Update tutorial copy and library play button
- library: Preserve retained files during duplicate cleanup
- metadata: Keep collaboration albums grouped
- download: Normalize MP4 audio extension by codec (#512)
- lyrics: Use normalized Genius response (#517)
- download: Treat a short clean EOF as resumable, not complete by @A831ARD0
- playlists: Thread the source provider id through to recent playlists by @A831ARD0
- ios: Stop dropping the security-scoped download folder bookmark by @A831ARD0
- download: Recover queue after worker timeout (#524)
- playlist: Ignore container title during album verification #519
- metadata: Match by primary artist and review results #511
- lyrics: Respect extension provider selection #511
- metadata: Honor provider priority in autofill #511
- metadata: Prompt verification during autofill #511
- queue: Restore user-paused downloads #511
- cover: Preserve best max-quality candidate #511
- download: Preserve SAF and defer background starts
- db: Prevent concurrent startup locks
- a11y: Label interactive controls
Performance
- library: Stream scans and optimize queue queries
- history: Batch SAF orphan inspection #511
Refactoring
- metadata: Move cover resolution to extensions
- extensions: Prioritize configurable settings
Testing
- audio: Verify tagged PCM playback compatibility
Dependencies
- deps: Bump locked Flutter dependencies
- deps: Update Flutter and Go dependencies
Chores
- Update AltStore source to v4.8.5 by @github-actions[bot]
- analyzer: Exclude platform folders from analysis
- release: Bump version to 4.9.0
New Contributors
- @Padma-Dev-E made their first contribution
Full Changelog: v4.8.5...v4.9.0
Downloads
Android
- arm64:
SpotiFLAC-v4.9.0-arm64.apk(recommended for modern devices) - arm32:
SpotiFLAC-v4.9.0-arm32.apk(older devices)
iOS
- iOS:
SpotiFLAC-v4.9.0-ios-unsigned.ipa(sideload required)
Installation
Android: Enable "Install from unknown sources" and install the APK
iOS: Use AltStore, Sideloadly, or similar tools to sideload the IPA