aboutsummaryrefslogtreecommitdiffstats
path: root/TODO.md
diff options
context:
space:
mode:
authorsalmonik <raisersoft@proton.me>2026-05-10 00:37:43 +0200
committersalmonik <raisersoft@proton.me>2026-05-10 00:37:43 +0200
commitadd0ace8f7b3de69679436aba80b1c7c7546633f (patch)
treee11ee1569f83673eb70efd988450996bbbdd7845 /TODO.md
parentFix queue display returning nothing - removed daemon pager, return full outpu... (diff)
downloadrsplayer-add0ace8f7b3de69679436aba80b1c7c7546633f.tar.gz
rsplayer-add0ace8f7b3de69679436aba80b1c7c7546633f.zip
Add shuffle restore tests, remove debug prints, update TODO
Diffstat (limited to 'TODO.md')
-rw-r--r--TODO.md36
1 files changed, 7 insertions, 29 deletions
diff --git a/TODO.md b/TODO.md
index 59ba564..e06d624 100644
--- a/TODO.md
+++ b/TODO.md
@@ -62,35 +62,13 @@
62 62
63## Remaining Work 63## Remaining Work
64 64
65### Phase 1: Play Command Rewrite 65### Phase 1-3: Completed ✓
66 66
67- [ ] **Rewrite `rsp play` behavior** 67- [x] **Play command rewrite** - No args queues to end (play if queue empty + not playing), -i inserts and plays, -n inserts without playing, removed -l flag
68 - No options: Add to end of queue. If queue is empty AND player is in PLAY state, play immediately 68- [x] **Queue display rewrite** - Returns full output (client can pipe to pager), removed daemon-side pager (fails without TTY)
69 - `-i` / `--now`: Add after current track, then skip to it (insert + play) 69- [x] **Shuffle rewrite** - Always remembers original queue, shuffle none keeps played tracks in place, album shuffle groups by album
70 - `-n` / `--next`: Add after current track, don't skip 70
71 - Remove `-l` / `--last` flag (redundant, it's default behavior) 71### Optional Features
72 - Update CLI definitions in `src/cli.rs`
73 - Update daemon handler in `src/daemon.rs`
74
75### Phase 2: Queue Display Rewrite
76
77- [ ] **Rewrite `rsp queue` behavior**
78 - If queue rows <= terminal rows, display as-is (no pager needed)
79 - If queue rows > terminal rows, pipe to pager (e.g., `less -R`)
80 - Get terminal size using `terminal_size` crate or `ansi_term` / `crossterm`
81 - Update queue display logic in `src/daemon.rs`
82
83### Phase 3: Shuffle Rewrite
84
85- [ ] **Rewrite shuffle mode**
86 - Always remember original queue (add `original_tracks: Vec<Track>` field)
87 - `rsp shuffle all`: Shuffle tracks after current position once, store original queue
88 - `rsp shuffle none`: Restore from original queue - keep already-played tracks in place, insert unplayed tracks in original order after current position
89 - `rsp shuffle album`: Shuffle tracks within each album's range separately (don't mix albums)
90 - Update `Queue` struct in `src/queue.rs` with original queue storage
91 - Update shuffle logic in `src/queue.rs` and daemon handlers in `src/daemon.rs`
92
93### Phase 4: Optional Features
94 72
95- [ ] **Persist queue state** - Save queue to disk so it survives daemon restarts. 73- [ ] **Persist queue state** - Save queue to disk so it survives daemon restarts.
96 74