- Global Recomposition Risk:
MusicyaNavGraph.ktcollectscurrentSongat the top level. Every time the song changes, the entireScaffoldand Navigation structure might recompose. This Logic should be pushed down into theConnectedMiniPlayeror a separate isolation wrapper. - Hardcoded Title Logic: The
currentTitlevariable manually maps routes to strings. This is brittle. Title logic should be part of theScreensealed class or a centralized resource map.
- SettingsScreen:
- Anti-Pattern: Manually checks
isSystemInDarkTheme()to decidecontentColor. This bypasses the MaterialTheme system and may fail if the app adds more themes (e.g., "OLED Black"). - Magic Numbers: Uses
32.dp,16.dp,48.dpSpacers and24.dppadding. These should match theNeoDimenssystem (SpacingXL,ScreenPadding). - Button Size: Uses
56.dpfor the Back button, whereasNeoDimens.ButtonHeightMediumis usually48.dpor52.dpin other headers.
- Anti-Pattern: Manually checks
- QueueScreen:
- Hardcoded Colors: Uses
NeoCoralandSlate50directly. While this matches the brand, it should be tokenized (e.g.,MaterialTheme.colorScheme.tertiaryor specific semantic names) to allow re-theming. - Item Padding: Uses
12.dpinside items, differing from16.dp(SpacingL) used in Library items.
- Hardcoded Colors: Uses
- MiniPlayer Padding:
MusicyaNavGraphappliespadding(horizontal = 24.dp)to the MiniPlayer. This hardcoded value should utilizeNeoDimens.ScreenPadding. - Hardcoded Z-Ordering: The MiniPlayer is placed in a
Columnwithalign(BottomCenter). Ensure this doesn't overlap excessively with theLazyColumncontent padding (currently160.dpseems safe, but implicit).
- Settings Content Descriptions: Some icons in
SettingsScreenhavecontentDescription = nullor general generic names. - Hit Targets:
ArtisticCardgenerally has good hit targets, but the "Clear Queue" button inQueueScreenis close to the "Back" button.
- Refactor SettingsScreen: Remove manual theme checks, use
MaterialThemecolors, and replace magic numbers withNeoDimens. - Optimize NavGraph: Move
currentSongcollection into a localized wrapper for the MiniPlayer to prevent root recomposition. - Standardize QueueScreen: Update item padding to
16.dpto match Library screens. - Tokenize Colors: Replace direct
NeoCoralusage in screens with a Semantic Theme Color if possible.