aboutsummaryrefslogtreecommitdiffstats
path: root/TODO.md
diff options
context:
space:
mode:
authorsalmonik <raisersoft@proton.me>2026-05-05 21:12:32 +0200
committersalmonik <raisersoft@proton.me>2026-05-05 21:12:32 +0200
commitbd29978b2a0d0d6def486fcdaa63bc8934d68045 (patch)
tree5df0efb17d350ae7f095eb9c0940b1bbf568de96 /TODO.md
downloadrsplayer-bd29978b2a0d0d6def486fcdaa63bc8934d68045.tar.gz
rsplayer-bd29978b2a0d0d6def486fcdaa63bc8934d68045.zip
fix(daemon): robust auto-advance; ensure next track starts even if playback fails
Diffstat (limited to 'TODO.md')
-rw-r--r--TODO.md51
1 files changed, 51 insertions, 0 deletions
diff --git a/TODO.md b/TODO.md
new file mode 100644
index 0000000..376841e
--- /dev/null
+++ b/TODO.md
@@ -0,0 +1,51 @@
1# TODO
2
3## Completed ✓
4
5- [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.
6
7- [x] **Implement previous track logic** (`src/playback.rs:99`) - Implemented basic previous() that restarts current track if playing/paused.
8
9- [x] **Remove unused std::thread import** (`src/playback.rs:2`) - Removed commented out import.
10
11- [x] **Run clippy** - All linting checks pass.
12
13- [x] **Run tests** - All tests pass (no tests exist yet).
14
15- [x] **Check formatting** - Code formatting is correct.
16
17- [x] **Implement resume functionality** - Implemented pause/resume using cpal stream pause()/play() methods.
18
19- [x] **Fix audio playback speed and buffer underrun** - Implemented proper sample buffering between callbacks to prevent audio skipping and buffer underrun errors.
20
21- [x] **Add Resume CLI subcommand** - Added `Resume` subcommand to CLI so users can resume playback after pause.
22
23- [x] **Implement shuffle mode** - Added shuffle on/off/album functionality with queue management in daemon. Supports `rsplayer shuffle on/off/album` commands.
24
25- [x] **Implement next/previous commands** - Next and previous track commands now work with the queue system.
26
27- [x] **Queue entire directory** - When playing a folder, all audio files are now queued instead of just the first one.
28
29- [x] **Auto-play next track** - Daemon automatically plays next track when current one ends (using `poll_track_ended()`).
30
31- [x] **Queue display with pager** - `rsplayer queue` shows all queued tracks with pager support for long lists.
32
33- [x] **Album shuffle mode structure** - `ShuffleMode::Album` added to enum and queue logic (behaves like `All` until database ready).
34
35## Potential Improvements
36
37- [ ] **Add error handling for audio playback** - Consider more robust error handling in the audio thread.
38
39- [ ] **Add unit tests for Player struct** - The `Player` struct in `playback.rs` has no corresponding tests.
40
41- [ ] **Persist queue state** - Save queue to disk so it survives daemon restarts.
42
43- [ ] **Album shuffle mode (database)** - Implement proper `ShuffleMode::Album` when database is ready (shuffle tracks within same album/folder).
44
45- [ ] **Scrobbling (Last.fm/ListenBrainz)** - Add scrobbling support via configured credentials.
46
47- [ ] **Database integration** - Scan music paths, populate SQLite database, use for metadata.
48
49- [ ] **Shell completion scripts** - Generate bash/zsh/fish completions using clap.
50
51- [ ] **Systemd service unit** - Create systemd service file for auto-start.