From 37887107ee8b7207a5849de2c3d4d413c5adbd3d Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Sat, 30 May 2026 02:31:16 -0400 Subject: [PATCH] fix(android): pin Slider inactiveTrackColor to surfaceVariant (parity) Material3 changed the Slider's default inactiveTrackColor to colorScheme.secondaryContainer, which MinstrelTheme does not override -- so M3's baseline purple leaked into both the mini scrubber and the NowPlaying ScrubberRow. Flutter explicitly sets inactiveColor = fs.slate; mirror that by pinning inactiveTrackColor to surfaceVariant (which the theme already maps to slate). Co-Authored-By: Claude Opus 4.7 (1M context) --- .../java/com/fabledsword/minstrel/player/ui/MiniPlayer.kt | 4 ++++ .../com/fabledsword/minstrel/player/ui/NowPlayingScreen.kt | 3 +++ 2 files changed, 7 insertions(+) diff --git a/android/app/src/main/java/com/fabledsword/minstrel/player/ui/MiniPlayer.kt b/android/app/src/main/java/com/fabledsword/minstrel/player/ui/MiniPlayer.kt index 60e63e42..5296f338 100644 --- a/android/app/src/main/java/com/fabledsword/minstrel/player/ui/MiniPlayer.kt +++ b/android/app/src/main/java/com/fabledsword/minstrel/player/ui/MiniPlayer.kt @@ -190,6 +190,10 @@ private fun MiniSeekBar(positionMs: Long, durationMs: Long, onSeek: (Long) -> Un colors = SliderDefaults.colors( thumbColor = MaterialTheme.colorScheme.primary, activeTrackColor = MaterialTheme.colorScheme.primary, + // M3 default inactiveTrackColor is secondaryContainer, which the + // theme doesn't override — that's where the M3-baseline purple + // leaks in. Pin to surfaceVariant (= slate) for Flutter parity. + inactiveTrackColor = MaterialTheme.colorScheme.surfaceVariant, ), ) } diff --git a/android/app/src/main/java/com/fabledsword/minstrel/player/ui/NowPlayingScreen.kt b/android/app/src/main/java/com/fabledsword/minstrel/player/ui/NowPlayingScreen.kt index 42cbfa7c..23afd0ab 100644 --- a/android/app/src/main/java/com/fabledsword/minstrel/player/ui/NowPlayingScreen.kt +++ b/android/app/src/main/java/com/fabledsword/minstrel/player/ui/NowPlayingScreen.kt @@ -409,6 +409,9 @@ private fun ScrubberRow(positionMs: Long, durationMs: Long, onSeek: (Long) -> Un colors = SliderDefaults.colors( thumbColor = accent, activeTrackColor = accent, + // M3 inactive default is secondaryContainer (purple baseline); + // pin to surfaceVariant (= slate) for Flutter parity. + inactiveTrackColor = MaterialTheme.colorScheme.surfaceVariant, ), ) Row(