diff options
Diffstat (limited to '')
| -rw-r--r-- | TODO.md | 36 |
1 files changed, 7 insertions, 29 deletions
| @@ -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 | ||
