SpotiFLAC v4.5.0
New Features
- Improve library grid, image loading, and metadata filters
- Add experimental Android native download worker
- Show extension service health
- Add deduplicateDownloads setting & fix build errors by @Amonoman
- settings: Reorganize settings into focused pages by @Amonoman
- Add Favorite Artists collection
- Retire built-in download providers, add isolated extension runtimes, Google Sans Flex font, and monochrome icon support
- Improve extension metadata UI
- Expose audio duration in metadata API and fix home empty-state race
- Add generic extension provider resolution, progress phases, and instrumental lyrics heuristic
- Remove Tidal built-in provider, add extension download dedup/ISRC/Lyrics APIs, and expand l10n/a11y
- Add skip_fallback capability for extension availability results
- Propagate download cancellation through entire pipeline, add MusicBrainz album artist fallback, and allow disabling home feed
Bug Fixes
- Guard security scoped bookmark options on iOS
- Preserve source cover metadata embeds
- Show lossy audio bitrate in quality labels
- Distinguish preparing from downloading in native worker progress
- Sync NativeDownloadFinalizer history schema to v8
- Truncate SAF filenames and directory segments safely at UTF-8 boundaries
- Improve native worker metadata embedding and notification progress
- Sync download progress notification states
- Persist probed audio duration
- Constrain artist album covers
- Avoid disk resizing cover cache by default
- Clean up settings merge regressions
- Map missing Crowdin locale variants
- ios: Use security-scoped bookmarks for download directory persistence
- Fallback unsupported locales to English
Performance
- Unify queue tab with DB-backed pagination and cross-database queries
- Optimize native worker snapshot writes with delta mode
- Reduce library and queue update overhead
- Reduce bridge and UI churn
- Improve download queue resilience
Refactoring
- Migrate local library from in-memory list to database-backed pagination
- Remove built-in provider registry in favor of extensions
- settings: Split download/options into focused pages by @Amonoman
- Split large screen files into part files and DRY platform bridge
- Rename skipBuiltInFallback to stopProviderFallback, unify service/search provider grid layout, and retire useExtensionProviders toggle
- Remove Qobuz built-in provider and delete qobuz.go
- Remove Qobuz from built-in provider registry, add retired provider detection
- Abstract built-in providers into generic registry and unify platform bridge API
Testing
- Add comprehensive Go backend and Dart model test suites
Chores
- Remove dead code, fix error casing, and add lint rules
- Remove redundant comments and boilerplate across codebase
- Update default lyrics providers and about links
- Update app dependency versions
- Enable Ukrainian locale on main
- Import l10n updates from l10n_dev into main
- Update AltStore source to v4.3.1 by @github-actions[bot]
I18n
- Add missing optionsDefaultSearchTabAlbums/Tracks keys to all locales by @Amonoman
- Sync missing EN strings to all locales & fix DE consistency by @Amonoman
Revert
- Release.yml to normal by @Amonoman
Full Changelog: v4.3.1...v4.5.0
Downloads
Android
- arm64:
SpotiFLAC-v4.5.0-arm64.apk(recommended for modern devices) - arm32:
SpotiFLAC-v4.5.0-arm32.apk(older devices)
iOS
- iOS:
SpotiFLAC-v4.5.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