diff options
| author | salmonik <raisersoft@proton.me> | 2026-05-05 21:12:32 +0200 |
|---|---|---|
| committer | salmonik <raisersoft@proton.me> | 2026-05-05 21:12:32 +0200 |
| commit | bd29978b2a0d0d6def486fcdaa63bc8934d68045 (patch) | |
| tree | 5df0efb17d350ae7f095eb9c0940b1bbf568de96 /TODO.md | |
| download | rsplayer-bd29978b2a0d0d6def486fcdaa63bc8934d68045.tar.gz rsplayer-bd29978b2a0d0d6def486fcdaa63bc8934d68045.zip | |
fix(daemon): robust auto-advance; ensure next track starts even if playback fails
Diffstat (limited to '')
| -rw-r--r-- | TODO.md | 51 |
1 files changed, 51 insertions, 0 deletions
| @@ -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. | ||
