Skip to content

feat: Comprehensive UI redesign, Android Auto, Stream Caching, and Performance Optimizations - #9

Open
wiwek13 wants to merge 65 commits into
Clash-Projects:mainfrom
wiwek13:feat/ui-redesign-android-auto-and-performance-optimizations
Open

feat: Comprehensive UI redesign, Android Auto, Stream Caching, and Performance Optimizations#9
wiwek13 wants to merge 65 commits into
Clash-Projects:mainfrom
wiwek13:feat/ui-redesign-android-auto-and-performance-optimizations

Conversation

@wiwek13

@wiwek13 wiwek13 commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Comprehensive major feature release bringing full Android Auto & Automotive OS integration, a complete Home, Generator & Playlists UI overhaul, YouTube Music Speed Dial & Liked Songs sync, persistent Native Stream Caching, and Deep Performance Optimizations (including a dedicated Low-End Device Performance Mode, state-hoisted Wavy SeekBar, and GPU draw reductions).


Playback & UI Screenshots

Home, QuickPlay & MiniPlayer Full Screen Player & Wavy SeekBar

Key Features & Implementations

🚗 1. Android Auto & Automotive OS Media Integration

  • Full MediaBrowserServiceCompat Implementation: Registered MusicPlaybackService with complete Automotive OS descriptors and IPC binding support.
  • 6 Root Media Categories:
    • 🕒 Recent Listening: Scrobbles & history
    • ❤️ Liked Songs: Synchronized favorites
    • 📁 Playlists: Custom and generated collections
    • 💾 Downloaded Music: Offline cached songs
    • 🌟 Top Tracks: Overall most played
    • Discover Mix: Personalized algorithmic recommendations
  • In-Car Dashboard Controls: Transport controls (Play/Pause, Skip, Seek, Shuffle, Repeat) and a dedicated 1-tap Favorite custom action (ic_auto_favorite).
  • Voice Search & Google Assistant: Hands-free voice querying ("Play my liked songs on LastWave", "Play Discover Mix on LastWave").
  • Audio Focus & Lifecycle: Seamless handling of audio ducking, transient pause/loss, and automatic resume on regain.

🎨 2. UI Redesign & Multi-Tab Pixel Alignment

  • 1:1 Visual Parity Across Tabs: Enforced identical Material 3 color palettes (surfaceContainer, surfaceContainerHigh), typography hierarchies (labelMedium, bodyMedium, bodySmall), card corner radiuses (22.dp), item badges (52.dp / 14.dp corners), and outer container elevation across Home, Generator, and Playlists.
  • Fixed Header Height & Baseline: Standardized ExpressiveHeader with .heightIn(min = 48.dp) across all screens to ensure zero layout shift during horizontal tab switching regardless of action icon count.
  • Uniform Solid Theme Background: Explicitly unified .background(MaterialTheme.colorScheme.background) across all tab containers to prevent gradient bleed and maintain solid Monet/AMOLED depth.
  • Floating Nav Dock: Equal 3-tab distribution, expressive selection pills with animated width expansion, smooth spring motion, and clean breathing margin above the dock.
  • Last.fm Mini Stats Widget: Live scrobble tracker showing real-time listening counts and top artists.

⚡ 3. Quick Play & YouTube Music Speed Dial Integration

  • Seamless Source Switcher: Pill toggle supporting Last.fm top tracks and YouTube Music Speed Dial / Quick picks with subtle pill highlighting.
  • YouTube Music Speed Dial: Live ingestion from InnerTube browseRoot(YT_HOME_BROWSE_ID, authenticated = true) prioritizing personalized home feed tracks, recently played, and liked songs.
  • 3×3 Horizontal Pager: Compact 3-row grid with subtle bottom gradient overlays, fused track titles, spring press feedback, and snapping physics.

🎵 4. MiniPlayer & Full Screen Player Refinements

  • Symmetrical MiniPlayer:
    • Full-height edge-to-edge album artwork with 14.dp rounded corners.
    • Symmetrical play/pause and like buttons with centered alignment.
    • Inline live waveform / seekbar indicators and thin subtitle typography.
    • Clear touch isolation to block underlying touches.
  • Full Screen Player:
    • Multi-chromatic neon glowing wave hills derived from album art palette with frosted glass translucency.
    • Ambient cover-art glow and dynamic palette extraction.
    • Synchronized and unsynchronized LyricsView with smooth auto-scroll.
    • High-res audio badges (FLAC 24/96, FLAC 24/48, etc.).
    • Compact, sleek 3-dots track context menu bottom sheet.

🚀 5. Performance Optimizations & Low-End Device Mode

  • WavySeekBar State Hoisting & Recomposition Isolation:
    • Hoisted reactive playback state (positionState, durationState) using derivedStateOf.
    • Confined 1-second/sub-second progress updates strictly to the drawing layer, eliminating tree-wide recomposition while a track is actively playing.
    • Optimized touch input with awaitEachGesture for eager drag-to-seek without parent scroll slop competition.
  • LiquidGlass GPU Draw Optimization:
    • Replaced expensive CPU/GPU clipPath operations with direct drawPath.
    • Increased sampling step size to halve drawing passes while preserving glass aesthetic.
  • HomeScreen Scroll Optimization:
    • Replaced unique string allocations for contentType in LazyColumn with lightweight numeric literals (0, 1, 2), significantly easing garbage collection overhead during rapid scrolls.
  • New Performance Mode Setting (Settings > Experimental):
    • Master toggle tailored for lower-end devices or battery saving.
    • State-Synced Profile Override: Automatically disables Liquid Glass translucency and swaps fluid Wavy SeekBar for a flat progress bar.
    • Non-Destructive Restoration: Disables dependent toggles with informative status text while active; seamlessly restores original user preferences when turned off.

💾 6. Native Audio Pipeline & Stream Caching

  • Persistent Stream Cache: Multi-tier audio cache using ExoPlayer SimpleCache with LRU eviction and memory bounds.
  • Direct YouTube Music Liked Songs Sync: Fast background sync of user liked tracks directly into local database with pagination.
  • Native Audio Pipeline: Low-latency audio decoders and buffer handling with gapless playback transitions.

Walkthrough of Settings & Experimental Features

Setting Description
Performance Mode Master toggle to maximize FPS on low-end devices by disabling glass shaders & wavy seekbar.
Liquid Glass Translucent frosted glass materials and dynamic ambient glows across app cards & headers.
Wavy Seekbar Multi-layer fluid wavy progress slider with album-art dynamic gradients.
Studio Master Clarity Tone-shaping curve for airy detail and clean instrument separation.
Equalizer 15-band graphic equalizer with customizable presets.
Lyrics Animation Experimental fluid lyric transition styles (Apple Fluid, Karas, etc.).
Stream Cache Configurable LRU stream cache size (25, 50, 100, 200, 500 tracks).
Auto-Sync Liked Songs Automatic two-way sync of favorited songs with YouTube Music account.

Verification & Testing

  • Build & Compilation: Verified ./gradlew assembleDebug and ./gradlew testDebugUnitTest compile with zero errors.
  • Android Auto: Verified MediaBrowserServiceCompat tree hierarchy and playback controls via Android Auto / Automotive emulator & device IPC.
  • UI Alignment: Verified 1:1 layout parity and zero header shift across Home, Generator, and Playlists.
  • Playback & Seeking: Verified gapless playback, background audio focus transitions, and accurate WavySeekBar drag-to-seek.
  • Performance Mode: Verified toggle synchronization in Settings and confirmed elimination of glass draw overhead when enabled.

wiwek13 added 30 commits August 26, 2026 12:45
… crisp crest highlights and elevated amplitudes
…c theme and delicate frosted glass translucency
…tegration

- Implement AndroidAutoMediaSource exposing 6 root browse categories (Recents, Liked Songs, Playlists, Downloads, Top Tracks, Discover Mix)
- Support voice search and query matching for Google Assistant in car dashboards
- Register MediaBrowserServiceCompat in AndroidManifest with Automotive OS descriptors
- Enable transport controls (play, pause, skip, seek, shuffle, repeat) and 1-tap in-car Favorite action
…astFmMiniWidget

- Redesign Home screen with header profile greeting, QuickPlay grid, and dynamic recommendations
- Integrate LastFmMiniWidget displaying live recent scrobble count and weekly charts
- Implement subtle glassmorphism theme tokens and cohesive dark mode aesthetics
- Refine Navigation graph and transitions between Home, Artist, and Album views
…ynchronized lyrics

- Implement awaitEachGesture eager touch consumption in MiniPlayer seekbar for seamless tap & drag seeking
- Redesign MiniPlayer with responsive album art, smooth sliding gestures, and compact layout
- Enhance synchronized lyrics display with clean typography and auto-scrolling
- Add unit tests validating waveform mathematics and gesture boundary calculations
… YouTube Music Liked Songs sync

- Integrate official YouTube Music like/unlike endpoints in InnerTubeMusicApi for real-time Liked Music library synchronization
- Redesign TrackContextMenuSheet with sleek compact bottom sheet, action grids, and quick actions
- Refactor Settings screen with modernized card hierarchies, cache meters, and YouTube Music connection flows
- Add unit tests for Favorites repository and YouTube Liked Songs sync verification
…d configuration

- Enhance native Oboe/OpenSL C++ audio engine with low-latency ringbuffers and sinc resampling
- Implement DynamicLruStreamCacheEvictor and LeastFrequentlyUsedCacheEvictor for audio stream caching
- Support Vorbis/Opus metadata tagging and WebM audio extraction in TrackDownloadManager
- Update build toolchains, Gradle dependencies, CI workflows, and developer skills documentation
wiwek13 added 18 commits August 29, 2026 19:39
…order with blended frosted glass in LiquidGlass
Combine upstream security obfuscation, Kugou lyrics provider, multi-account pool, and workflow enhancements with feature branch's UI redesign, WavySeekBar, stream caching, and Android Auto foundations.
feat: Comprehensive UI redesign, Android Auto and playback enhancements
@wiwek13 wiwek13 added enhancement New feature or request do not merge yet labels Aug 30, 2026
@wiwek13 wiwek13 closed this Aug 30, 2026
@wiwek13 wiwek13 reopened this Aug 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant