aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Pad queue display numbers with leading zerossalmonik2026-05-083-9/+10
| | | | | | display_string now takes a total parameter to compute the zero-padding width. Queue positions are formatted as 01, 02, ..., 10 instead of 1, 2, ..., 10, keeping columns aligned.
* Fix shuffle first song not being shuffledsalmonik2026-05-086-37/+10
| | | | | | | | | | | update_shuffle_indices now shuffles all indices when position is 0 (no tracks have been played yet), so the first track played is random instead of always being tracks[0]. Directory playback now uses q.current() to pick the first track, resolving through shuffled indices when shuffle is active. Also pins notify-rust version in Cargo.toml and removes PLAN.md (superseded by TODO.md).
* Add desktop notifications for track changes, queue end, and errorssalmonik2026-05-089-32/+720
| | | | | Uses notify-rust to send D-Bus desktop notifications from the daemon when tracks change, the queue empties, or audio errors occur.
* Extract queue module, add comprehensive tests, fix queue/play bugssalmonik2026-05-086-306/+793
| | | | • Moved Queue, Track, ShuffleMode, AudioMetadata from daemon.rs into new src/queue.rs module with public API\n• Fixed rsp play <file> interrupting active playback (now checks is_playing)\n• Fixed directory play -n/-i inserting files in reverse order (now uses .iter().rev())\n• Removed dead duplicate shuffle handler in process_command\n• Fixed queue display showing (playing) when playback is stopped\n• Added 34 tests covering navigation, shuffle, insert ordering, edge cases, display
* Fix queue bugs: play -i on empty queue, stale track replay after queue ends, ↵salmonik2026-05-0710-121/+1755
| | | | | | | | | 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
* Add toggle command to resume/pause playback and fix queue display bugsalmonik2026-05-065-4/+22
| | | | | | - Add 'rsp toggle' command to toggle between play and pause - Fix queue display showing wrong track as playing when shuffle is enabled - Update shell completion scripts for new toggle command
* Add install script, shell completions, and systemd servicesalmonik2026-05-0610-3/+157
| | | | | | | | | - Add install.sh script that builds release, stops daemon, and installs binary - Add shell completions for bash, zsh, and fish - Add systemd user service unit file - Add public binary declaration in Cargo.toml - Add install command to CLI - Make current_track field public for MPRIS integration (placeholder)
* Mark unit tests as completed in TODO.mdsalmonik2026-05-051-1/+1
|
* Add unit tests in /tests directory for config, database, playback, and ↵salmonik2026-05-0511-27/+615
| | | | scrobbler modules
* Add dev/release config separation and volume query commandsalmonik2026-05-054-6/+29
|
* Add flexible play command with position flagssalmonik2026-05-053-18/+107
| | | | | | | | | | | | | - Add -i/--now, -n/--next, -l/--last flags to play command: - 'play MUSIC' (default) adds to end of queue and plays - 'play -i MUSIC' inserts after current and skips to it - 'play -n MUSIC' inserts after current, doesn't skip - 'play -l MUSIC' adds to end of queue (default behavior) - Add insert_after_current and track_at methods to Queue in daemon - Update play command handler to handle position arguments - Fix queue display to correctly show playing track (compare track_idx instead of display_idx with current_position)
* Add metadata extraction and display for folder playbacksalmonik2026-05-053-11/+129
| | | | | | Extract ID3/metadata tags from audio files using symphonia and display as 'INDEX. ARTIST - TITLE' format, falling back to filename. Only shows the track number before any slash (e.g., '15' from '15/19').
* fix(audio): resolve deadlock preventing auto-advance to next tracksalmonik2026-05-052-11/+50
| | | | | | | | The audio callback deadlocked when trying to lock audio_data twice, preventing track_ended from being set and breaking auto-advance. Also removed erroneous track_ended.store(true) calls from error paths that were causing incorrect queue advancement when playback failed.
* fix(daemon): robust auto-advance; ensure next track starts even if playback ↵salmonik2026-05-0514-0/+5128
fails