New Features
- network: Delete SMB and WebDAV tracks from the library
- autoplay: Add opt-in on-device recommendation learning
- network: Enable audio and hi-res analysis for network tracks
- mornye: Animate squircle menus from their trigger
- lyrics: Customize text size and animate active lines
- appearance: Support imported TTF and OTF fonts
- lyrics: Use Apple Music as the default lyrics provider
- appearance: Make Mornye glass outlines optional
Bug Fixes
- mornye: Strengthen held navigation glass refraction
- notifications: Show indeterminate scans without false zero percent
- library: Retire deleted downloads and stale completion cards
- mornye: Unify held navigation glass contour
- mornye: Hide custom font setting icon
- ios: Preserve folder grants and surface picker failures
- mornye: Animate queue removal icon with swipe progress
- l10n: Use Indonesian wording for the built-in player
- ci: Locate Discord license notices inside the iOS plugin framework
- webdav: Retain tracks across equivalent parent URI encodings
- library: Collapse selection actions before dismissing
- mornye: Honor forced glass with increased system contrast
- automix: Ease effects into playback without cutting dry audio
- library: Exclude inactive NAS entries and file aliases from duplicates
- library: Allow choosing duplicate copies and clear stale indexes
- playlists: Preserve repeated tracks during imports
- playback: Reload audio sources when switching tracks
- ios: Restore lock screen controls across app transitions
- downloads: Preserve browser verification and queues across restarts
- setup: Recover folder permissions after Android restarts
- library: Bound path-key migration batches
- library: Sync local album play and pause controls
- metadata: Preserve original artwork resolution for SAF files
- ios: Audit Discord license in its framework bundle
Performance
- library: Prefetch network metadata with bounded concurrency
- network: Reuse HTTP connections for browsing and range reads
Documentation
- Move detailed build guidance to contributing guide
Testing
- android: Accept validated FLAC fallback across FFmpeg versions
- rust: Remove TCP timing dependence from chunked fixture
- player: Cover Previous audio selection and AutoMix handoff
- ui: Correct context menu and lyric spacing assertions
Chores
- Update AltStore source to v5.1.0 by @github-actions[bot]
- Ignore generated Discord plugin lockfiles
- ci: Refresh action pins and align Android build toolchains
- android: Update Gradle Kotlin NDK and native build dependencies
- rust: Update toolchain and dependencies with preserved vendor sources
- flutter: Update SDK and packages with glass and navigation compatibility
- release: Bump app to 5.1.1 build 161
Build
- android: Verify full APK integrity and publish checksums
Full Changelog: v5.1.0...v5.1.1
Downloads
Android
- arm64:
SpotiFLAC-v5.1.1-arm64.apk(recommended for modern devices) - arm32:
SpotiFLAC-v5.1.1-arm32.apk(older devices) *.apk.idsig: V4 signatures foradb install --incrementalonly; normal installs do not need them
iOS
- iOS:
SpotiFLAC-v5.1.1-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