Skip to content

v1.0.3

Choose a tag to compare

@coflyn coflyn released this 26 Jul 13:20
feat : v1.0.3 Complete Feature Update & Enhancements

- Library Layout Density Selector: Added a "Library Density" setting (Standard vs Compact) allowing users to customize track row spacing, thumbnail sizing, and padding to fit up to 25% more songs on screen.
- Auto-Play on Headset Connect: Implemented an "Auto-play on Headset Connect" toggle under Audio & Playback. Flow listens to native AudioSession device change events and automatically resumes playback when headphones or Bluetooth audio devices connect.
- Playback Speed & Pitch Controls: Added dedicated Playback Speed (0.5x - 2.0x) and Pitch Lock configuration to Settings and audio engine with smooth ExoPlayer Sonic DSP handling.
- Custom Lyric Font Size Configurator: Added a "Lyric Font Size" setting with live preview slider (14sp to 30sp), dynamically scaling synced and plain text lyrics across player views.
- Android Mono Audio Integration: Re-architected native MainActivity.kt and settings_screen.dart Mono Audio toggle logic. Implemented multi-key fallback (master_mono and mono_audio across Settings.System and Settings.Global) and eliminated false-positive "not supported" toast errors and startup state resets.
- Robust Scoped Storage Deletion Fallback: Fixed an issue where deleting a track from device failed to present the "Permission Denied / Hide Track" dialog due to an unmounted BuildContext after closing the context menu. Captured parentContext to guarantee the fallback dialog is reliably displayed on Android 10+ devices.
- Auto-Check for Updates Toggle & Startup Check: Added an "Auto-check for updates" toggle switch in Settings. When enabled, Flow automatically performs a background release check on app launch and prompts the user with an update dialog if a new version is available on GitHub.
- Synced Last Played & Most Played Logic: Unified track recency and play-count tracking. All played tracks with playCount > 0 are automatically backfilled and synced into the Last Played smart playlist, ensuring Last Played count is always consistent with Most Played.
- Audio Ringtone Cutter & Editor: Integrated a dedicated Ringtone Trimmer accessible directly from any track's context menu. Features interactive dual-handle RangeSlider duration selection, real-time slice audio preview playback with timestamp display, dynamic segment length badges, and 1-tap ringtone saving to /Ringtones/.
- Sleep Timer Soft Fade-Out & Custom Minutes Input: Upgraded the Sleep Timer engine with a smooth volume fade-out mechanism during the final 20 seconds of countdown, preventing abrupt audio cutoffs. Added a custom duration dialog enabling users to input any custom time in minutes (e.g. 7, 25, 90, 120 mins) available across all timer entry points.
- Song Info Filename Truncation Fix: Truncated long file names in the Song Info modal with ellipsis (...) to prevent horizontal layout overflows and right-side screen leaks.
- Seamless Hero Morphing Artwork Animation: Implemented shared element Hero animation (heroTag: "mini_to_full_player_artwork") connecting the Mini Player and Full-Screen Song View. Tapping or dragging open the Mini Player causes the 48px artwork thumbnail to fluidly scale and morph into the 300px+ hero artwork with matching border radius transformations at 60 FPS.
- Expanded Mini Player & Gesture Inset Adaptation: Enhanced the Mini Player with a taller, roomier 68px container, larger 48px artwork thumbnail, elevated drop-shadow depth, and dynamic bottom gesture inset calculation (MediaQuery.of(context).padding.bottom), eliminating empty gaps under gesture navigation bars on modern smartphones.
- Sleek Rounded Modal Sheet Corners: Replaced sharp 90-degree rectangle corners on both Album View (Detail View) and Song View (Full-Screen Player) with modern 28px rounded top-left and top-right corners (ClipRRect(borderRadius: BorderRadius.vertical(top: Radius.circular(28)))), delivering an elegant, premium card aesthetic.
- Dynamic Sticky Top Navbar on Scroll: Designed and implemented a sleek, sticky top navigation bar for Album, Artist, and Playlist detail views. As the user scrolls down through the track list, the top navbar smoothly fades in with a glassmorphic background, displaying a dedicated back button on the left, truncated album title in selected font typography in the center, and context options on the right.
- High-Resolution Custom Artwork Engine: Fixed an issue where custom metadata artwork in Album, Artist, and Playlist detail views appeared blurry ("burik"). Upgraded CachedTrackArtwork to use un-downsampled full-resolution FileImage with FilterQuality.high for large views (size > 100), guaranteeing razor-sharp, crystal-clear artwork on 2K and 4K smartphone displays.
- Smooth 60 FPS Album View Transitions: Resolved UI micro-stutters when opening Album or Playlist detail views with custom artwork. Updated ArtworkCacheManager.preloadAllArtworks to preload full FileImage instances into Flutter's ImageCache in the background, ensuring instant, stutter-free 60 FPS page transitions.
- "Forgotten Gems" Smart Playlist: Introduced a dedicated 4th Smart Playlist ("Forgotten Gems" / "Lagu Terlupakan" / "隠れた名曲") that automatically aggregates all tracks in the user's music library that are rarely played (playCount <= 2). Features custom diamond branding, instant playback integration, and full i18n localization support across English, Indonesian, and Japanese.
- Complete Settings Modals Light Mode Polish: Comprehensive audit and refinement across all Settings bottom sheets (Sleep Timer, Play Count Threshold, Accent Selector, Player Background Selector, Language Selector). Resolved dark-background leaks under Light Mode by making all modal sheets dynamically adapt their background, drag handle, divider, and text colors based on isAppLight.
- Unlimited Last Played Playlist Capacity: Completely removed the legacy hardcoded history cap on the Last Played smart playlist. Because track IDs are automatically deduplicated upon every playback session, the list now dynamically retains 100% of the user's listened tracks in exact recency order up to their entire music library size.