github spotiflacapp/SpotiFLAC-Mobile v3.5.1
SpotiFLAC v3.5.1

latest releases: v4.7.1, v4.7.0, v4.6.0...
5 months ago

What's New

Performance

  • Removed PaletteService (palette_generator) from all screens for faster navigation and reduced memory usage
  • Album, Playlist, Downloaded Album, Local Album, and Track Metadata screens now use blurred cover art as header background instead of dominant color extraction
  • Removed palette_generator dependency
  • App startup now renders immediately (runApp) while service initialization runs asynchronously in eager init
  • Main shell provider subscriptions now use field-level select(...) to reduce unnecessary rebuilds
  • Settings persistence now uses single-flight + queued save coalescing to avoid redundant disk writes
  • Progress polling cadence adjusted to 800ms for download queue, local library scan progress, and Go log polling
  • Android foreground download service progress updates are throttled (change-based updates + 5s heartbeat)
  • SAF history repair is now batched (20 items per batch) and capped per launch (60) to reduce startup I/O spikes
  • Incremental library scan now builds final item list in-memory instead of reloading from database
  • Local cover images in queue/library use direct Image.file with errorBuilder instead of FutureBuilder existence check
  • CSV parser _parseLine rewritten: correct escaped-quote handling, no quote characters in output
  • Removed unused legacy screen files (home_screen.dart, queue_screen.dart, settings_screen.dart, settings_tab.dart)
  • Incremental local library scan now merges delta results in-memory and sorts once, avoiding full-state reload churn
  • Queue local cover rendering now uses direct Image.file + errorBuilder (removed repeated async file-exists checks)

Added

  • Auto-cleanup orphaned downloads on history load (files that no longer exist are automatically removed from history)

Changed

  • Removed legacy screen files that were no longer used after the tab/part refactor:
    • lib/screens/home_screen.dart
    • lib/screens/queue_screen.dart
    • lib/screens/settings_screen.dart
    • lib/screens/settings_tab.dart
  • Concurrent download limit increased from 3 to 5 (settings clamp + Options UI chips now support 1..5)
  • Download queue now uses a single parallel scheduler path; 1 concurrency is handled as parallel-with-limit-1 (no separate sequential engine)
  • Download queue now listens to settings updates in real-time so concurrency/output settings stay in sync while queue is active

Fixed

  • CSV parser now correctly handles escaped quotes ("") inside quoted fields during import
  • Fixed dynamic concurrency update during active downloads: changing limit (e.g. 1 -> 3) now schedules additional queued items without waiting current active item to finish
  • Queue scheduler now re-checks capacity/queued items on short intervals to avoid blocking on long-running single active download

Dependencies

Flutter

  • flutter_local_notifications 19.x → 20.0.0 (breaking: all positional params converted to named params)
  • connectivity_plus 6.x → 7.0.0
  • flutter_secure_storage 9.x → 10.0.0
  • Removed palette_generator dependency

Go

  • go-flac/go-flac v1.0.0 → v2.0.4
  • go-flac/flacvorbis v0.2.0 → v2.0.2
  • go-flac/flacpicture v0.3.0 → v2.0.2
  • Go toolchain 1.24 → 1.25.7

Android

  • Android Gradle Plugin 8.x → 9.0.0
  • Kotlin 2.1.x → 2.3.10
  • desugar_jdk_libs → 2.1.5
  • kotlinx-coroutines-android → 1.10.2
  • lifecycle-runtime-ktx → 2.10.0
  • activity-ktx → 1.12.3

CI/CD

  • actions/cache v4 → v5
  • actions/checkout v4 → v6
  • actions/setup-go v5 → v6
  • actions/setup-java v4 → v5
  • softprops/action-gh-release v1 → v2
  • GitHub artifact actions updated

Downloads

Android

  • arm64: SpotiFLAC-v3.5.1-arm64.apk (recommended for modern devices)
  • arm32: SpotiFLAC-v3.5.1-arm32.apk (older devices)

iOS

  • iOS: SpotiFLAC-v3.5.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

arm64 arm32 iOS

Don't miss a new SpotiFLAC-Mobile release

NewReleases is sending notifications on new releases.