From 0f00616dca071750381234b5c59c8ec1e71b28ed Mon Sep 17 00:00:00 2001 From: salmonik Date: Fri, 8 May 2026 01:12:31 +0200 Subject: Fix shuffle first song not being shuffled update_shuffle_indices now shuffles all indices when position is 0 (no tracks have been played yet), so the first track played is random instead of always being tracks[0]. Directory playback now uses q.current() to pick the first track, resolving through shuffled indices when shuffle is active. Also pins notify-rust version in Cargo.toml and removes PLAN.md (superseded by TODO.md). --- src/queue.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/queue.rs') diff --git a/src/queue.rs b/src/queue.rs index 53b104f..dca8e3d 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -171,7 +171,9 @@ impl Queue { if let ShuffleMode::All = self.shuffle { let mut rng = rand::rng(); let pos = self.position.min(len.saturating_sub(1)); - if pos + 1 < len { + if pos == 0 && len > 1 { + self.shuffled_indices.shuffle(&mut rng); + } else if pos + 1 < len { self.shuffled_indices[pos + 1..].shuffle(&mut rng); } } -- cgit v1.2.3