Alpha 0.2 TEST
Pre-release
Pre-release
New Feature: Lyric Cover Art Style
- PreferenceKeys.kt — Added LYRIC to ModularCoverArtStyle enum
- CoverArtComponent.kt — New LyricVariant composable: parses TTML/LRC/plain lyrics, tracks currentPosition at frame rate via withFrameNanos, shows current line with AnimatedContent (vertical slide + fade), shows next line faded below, falls back to "♪" when no synced lyrics available. Concise parseLyricsWithTimings() helper handles all three formats.
- AppearanceSettings.kt — Added "Lyric" option to Cover Art Style dropdown
- Also fixed the lyric animation — AnimatedContent with vertical slide transition so it actually moves between lines
New Feature: Slider Styles in Modular Player
- PlayerComponentRegistry.kt — Added LocalSliderStyle CompositionLocal
- PlayerGridEngine.kt — Reads SliderStyleKey preference, provides via LocalSliderStyle
- SeekBarComponent.kt — Replaced plain Material3 Slider with StyledPlaybackSlider (respects Standard/Wavy/Thick/Circular/Simple)
- Cleaned up unused state tracking (LaunchedEffect/mutableFloatStateOf for slider position)
New Feature: Canvas Artwork Component
- CanvasArtworkComponent.kt (new file) — Modular player component that fetches and plays Apple Music-style animated artwork via fetchCanvasArtworkForPlayback/CanvasArtworkPlayer
- ComponentInitializer.kt — Registered registerCanvasArtworkComponent()
- CanvasArtworkComponent.kt — Gated behind ArchiveTuneCanvasKey preference (default off)
New Feature: Player Menu Access
- ModularPlayer.kt — Added onMenuClick callback parameter
- Player.kt — Wired the callback to open PlayerMenu bottom sheet in modular mode
Preference Wiring (Original Player → Modular)
- PlayerComponentRegistry.kt — Added LocalPlayerButtonStyle and LocalThumbnailCornerRadius CompositionLocals
- PlayerGridEngine.kt — Reads PlayerButtonsStyleKey and ThumbnailCornerRadiusKey, provides them
- CoverArtComponent.kt — Reads HidePlayerThumbnailKey, CropThumbnailToSquareKey, uses LocalThumbnailCornerRadius for all three variants; Normal variant applies .aspectRatio(1f) when crop enabled
- PlaybackControlsComponent.kt — PlayPause/Next/Previous use secondary/secondaryContainer colors when button style is SECONDARY
- SecondaryControlsComponent.kt — All 8 buttons (Shuffle, Repeat, Like, Queue, Lyrics, Share, SleepTimer, MoreMenu) respect SECONDARY style
- CanvasArtworkComponent.kt — Registration checks ArchiveTuneCanvasKey
Modular Player Refinements
- ModularPlayer.kt — Reads ModularButtonShapeKey preference, removed unused Switch import and editingShowTimeOnSeekBar state (moved to standalone preference)
- PlayerGridEngine.kt — Added LocalPlayerButtonStyle and LocalThumbnailCornerRadius to CompositionLocalProvider
- TitleArtistComponent.kt — Added basicMarquee() to title/artist text so long text scrolls
- VolumeComponent.kt — Fixed volume slider state sync with LaunchedEffect (wasn't reflecting external volume changes)
- PlayerSettings.kt — Removed redundant modular layout editor entry (was duplicated)
- strings.xml — Added style_card and modular_cover_art_style string resources
Queue Sheet Fix
- Player.kt — Queue button in modular mode now properly opens the Queue sheet with dismiss tracking (modularQueueVisible state)
- Queue.kt — Added onDismiss callback parameter, wired to BottomSheet.onDismiss
Files touched: 19
Lines changed: +3,171 / -134
Commits: 2 (ed45efa, 56599d1)