aboutsummaryrefslogtreecommitdiffstats
path: root/TODO.md
diff options
context:
space:
mode:
authorsalmonik <raisersoft@proton.me>2026-05-07 16:16:01 +0200
committersalmonik <raisersoft@proton.me>2026-05-07 16:16:01 +0200
commit03f4585424d05dd50022759c7ad098fe06277f6e (patch)
tree8b6e8a829afbfa949f7a55eaf5620ea99b17bf40 /TODO.md
parentAdd toggle command to resume/pause playback and fix queue display bug (diff)
downloadrsplayer-03f4585424d05dd50022759c7ad098fe06277f6e.tar.gz
rsplayer-03f4585424d05dd50022759c7ad098fe06277f6e.zip
Fix queue bugs: play -i on empty queue, stale track replay after queue ends, shuffle preserving current position
- insert_after_current: guard against panic on empty queue - play -i (now): skip position increment when queue was empty so track plays - directory last: use audio.is_playing() instead of q.current() to avoid replaying finished track - shuffle: only randomize tracks after current position
Diffstat (limited to '')
-rw-r--r--TODO.md24
1 files changed, 12 insertions, 12 deletions
diff --git a/TODO.md b/TODO.md
index 8a3fca8..68a0cf0 100644
--- a/TODO.md
+++ b/TODO.md
@@ -4,7 +4,7 @@
4 4
5- [x] **Dev/release build config separation** - Store config next to binary in dev mode, use XDG in release mode. 5- [x] **Dev/release build config separation** - Store config next to binary in dev mode, use XDG in release mode.
6 6
7- [x] **Volume without argument returns current volume** - `rsplayer volume` now returns current level. 7- [x] **Volume without argument returns current volume** - `rsp volume` now returns current level.
8 8
9- [x] **Fix SampleRate access in audio.rs:104** - `config.sample_rate().0` is invalid because `cpal::SampleRate` is a type alias for `u32`, not a tuple struct. 9- [x] **Fix SampleRate access in audio.rs:104** - `config.sample_rate().0` is invalid because `cpal::SampleRate` is a type alias for `u32`, not a tuple struct.
10 10
@@ -14,7 +14,7 @@
14 14
15- [x] **Run clippy** - All linting checks pass. 15- [x] **Run clippy** - All linting checks pass.
16 16
17- [x] **Run tests** - All tests pass (no tests exist yet). 17- [x] **Run tests** - All tests pass.
18 18
19- [x] **Check formatting** - Code formatting is correct. 19- [x] **Check formatting** - Code formatting is correct.
20 20
@@ -24,7 +24,7 @@
24 24
25- [x] **Add Resume CLI subcommand** - Added `Resume` subcommand to CLI so users can resume playback after pause. 25- [x] **Add Resume CLI subcommand** - Added `Resume` subcommand to CLI so users can resume playback after pause.
26 26
27- [x] **Implement shuffle mode** - Added shuffle on/off/album functionality with queue management in daemon. Supports `rsplayer shuffle on/off/album` commands. 27- [x] **Implement shuffle mode** - Added shuffle on/off/album functionality with queue management in daemon. Supports `rsp shuffle on/off/album` commands.
28 28
29- [x] **Implement next/previous commands** - Next and previous track commands now work with the queue system. 29- [x] **Implement next/previous commands** - Next and previous track commands now work with the queue system.
30 30
@@ -32,7 +32,7 @@
32 32
33- [x] **Auto-play next track** - Daemon automatically plays next track when current one ends (using `poll_track_ended()`). 33- [x] **Auto-play next track** - Daemon automatically plays next track when current one ends (using `poll_track_ended()`).
34 34
35- [x] **Queue display with pager** - `rsplayer queue` shows all queued tracks with pager support for long lists. 35- [x] **Queue display with pager** - `rsp queue` shows all queued tracks with pager support for long lists.
36 36
37- [x] **Album shuffle mode structure** - `ShuffleMode::Album` added to enum and queue logic (behaves like `All` until database ready). 37- [x] **Album shuffle mode structure** - `ShuffleMode::Album` added to enum and queue logic (behaves like `All` until database ready).
38 38
@@ -40,20 +40,20 @@
40 40
41- [x] **Flexible play command** - Added `-i/--now`, `-n/--next`, `-l/--last` flags to play command: `play MUSIC` (default - add to end and play), `play -i MUSIC` (insert after current and skip to it), `play -n MUSIC` (insert after current, don't skip), `play -l MUSIC` (add to end of queue). Also fixed queue display to correctly show playing track. 41- [x] **Flexible play command** - Added `-i/--now`, `-n/--next`, `-l/--last` flags to play command: `play MUSIC` (default - add to end and play), `play -i MUSIC` (insert after current and skip to it), `play -n MUSIC` (insert after current, don't skip), `play -l MUSIC` (add to end of queue). Also fixed queue display to correctly show playing track.
42 42
43## Potential Improvements 43- [x] **Add unit tests for Player struct** - Tests added for Player, Track, PlaybackState, and ShuffleMode in `tests/playback.rs`.
44 44
45- [ ] **Add error handling for audio playback** - Consider more robust error handling in the audio thread. 45- [x] **Database scan command** - Implemented `rsp scan` with `--force` full rescan and `--paths` override options. Uses symphonia for metadata extraction.
46 46
47- [x] **Add unit tests for Player struct** - The `Player` struct in `playback.rs` has no corresponding tests. 47- [x] **Settings subcommands** - Implemented `rsp settings get/set/list/unset` for config management.
48 48
49- [ ] **Persist queue state** - Save queue to disk so it survives daemon restarts. 49- [x] **Shell completions** - Generate shell completions with `rsp completions bash|elvish|fish|powershell|zsh`.
50 50
51- [ ] **Album shuffle mode (database)** - Implement proper `ShuffleMode::Album` when database is ready (shuffle tracks within same album/folder). 51## Remaining Work
52 52
53- [ ] **Scrobbling (Last.fm/ListenBrainz)** - Add scrobbling support via configured credentials. 53- [ ] **Persist queue state** - Save queue to disk so it survives daemon restarts.
54 54
55- [ ] **Database integration** - Scan music paths, populate SQLite database, use for metadata. 55- [ ] **Scrobbling (Last.fm/ListenBrainz)** - Add scrobbling support via configured credentials.
56 56
57- [ ] **Shell completion scripts** - Generate bash/zsh/fish completions using clap. 57- [ ] **Shell completion scripts** - Generate bash/zsh/fish completions using clap.
58 58
59- [ ] **Systemd service unit** - Create systemd service file for auto-start. 59- [ ] **Systemd service unit** - Create systemd service file for auto-start. \ No newline at end of file