Skip to content

Harden lyrics sheet state across automatic track changes#605

Merged
theovilardo merged 3 commits intomasterfrom
codex/fix-lyrics-handling-on-song-change
Dec 22, 2025
Merged

Harden lyrics sheet state across automatic track changes#605
theovilardo merged 3 commits intomasterfrom
codex/fix-lyrics-handling-on-song-change

Conversation

@theovilardo
Copy link
Owner

Summary

  • cancel and guard lyrics loading when tracks transition, ensuring stale results are discarded
  • clear lyrics/loading state immediately on song changes or playback stop so the lyrics sheet resets cleanly
  • keep lyrics fetching scoped to the active song to avoid ghost UI states during shuffle, repeat, crossfade, or cast

Testing

  • ./gradlew :app:testDebugUnitTest --tests com.theveloper.pixelplay.presentation.components.LyricsSheetLogicTest (fails: Android SDK not configured in CI environment)

Codex Task

Overhauls the `FetchLyricsDialog` to be more expressive, state-driven, and user-friendly, refactoring it into smaller, more manageable components.

- **State-based Sub-composables**: Divides the dialog logic into distinct `IdleContent`, `LoadingContent`, `PickResultContent`, and `ErrorContent` composables, improving code organization and readability.
- **Improved Visual Design**:
    - Implements a modern, expressive layout with larger decorative icons, "squircle" shapes, and increased spacing.
    - Updates button styles to be more prominent, using vertical arrangement for better touch targets and clarity (`Search`, `Import File`, `Cancel`).
    - Redesigns the results list into distinct `ResultItemCard`s for better visual separation and tappability.
- **Enhanced UX & Animations**:
    - Adds `animateContentSize` for smooth transitions between different UI states (e.g., Idle to Loading).
    - Replaces the top-right 'X' close button with an explicit "Cancel" `TextButton` for better usability.
    - Uses a `LazyColumn` in `PickResultContent` for optimized performance with long lists of search results.
- **Technical Improvements**:
    - Sets dialog properties to not use the platform default width, allowing for a full-width, modern appearance.
    - Refines styling across all states, ensuring consistency with the Material 3 design system (e.g., using `surfaceContainerHighest`, `errorContainer`).
@theovilardo theovilardo merged commit 6e99a9f into master Dec 22, 2025
@lostf1sh lostf1sh deleted the codex/fix-lyrics-handling-on-song-change branch January 16, 2026 20:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1 participant