From f3d24866b7f5b2f09966d6133ee3633947421482 Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Fri, 6 Mar 2026 03:43:10 +0100 Subject: [PATCH] fix: trust Plex stream selection for subtitle defaults --- lib/services/track_selection_service.dart | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/services/track_selection_service.dart b/lib/services/track_selection_service.dart index 3492186c..1c8c01cf 100644 --- a/lib/services/track_selection_service.dart +++ b/lib/services/track_selection_service.dart @@ -698,6 +698,7 @@ class TrackSelectionService { } // Priority 2: Check Plex-selected track from media info + // If a subtitle IS actively selected, the user manually chose it — respect that. if (plexMediaInfo != null && availableTracks.isNotEmpty) { final plexSelectedTrack = plexMediaInfo!.subtitleTracks.where((t) => t.selected).firstOrNull; @@ -710,7 +711,7 @@ class TrackSelectionService { } } - // Priority 3: Try per-media language/subtitle mode preference + // Priority 3: Try per-media language/subtitle mode preference (show/season/item-level) final hasSubtitleMode = metadata.subtitleMode != null && metadata.subtitleMode != -1; if (metadata.subtitleLanguage != null || hasSubtitleMode) { if (metadata.subtitleLanguage == 'none' || (metadata.subtitleLanguage?.isEmpty ?? false)) { @@ -751,7 +752,12 @@ class TrackSelectionService { } } - // Priority 4: Apply user profile preferences + // Priority 4: No subtitle selected by server — trust that decision + if (plexMediaInfo != null && plexMediaInfo!.subtitleTracks.isNotEmpty && availableTracks.isNotEmpty) { + return TrackSelectionResult(SubtitleTrack.off, TrackSelectionPriority.plexSelected); + } + + // Priority 5: Apply user profile preferences if (profileSettings != null && availableTracks.isNotEmpty) { subtitleToSelect = findSubtitleTrackByProfile( availableTracks, @@ -763,7 +769,7 @@ class TrackSelectionService { } } - // Priority 5: Check for default subtitle + // Priority 6: Check for default subtitle if (availableTracks.isNotEmpty) { final defaultTrack = availableTracks.firstWhere((t) => t.isDefault, orElse: () => availableTracks.first); if (defaultTrack.isDefault) { @@ -771,7 +777,7 @@ class TrackSelectionService { } } - // Priority 6: Turn off subtitles + // Priority 7: Turn off subtitles return TrackSelectionResult(SubtitleTrack.off, TrackSelectionPriority.off); }