<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rsplayer/src/main.rs, branch main</title>
<subtitle>Daemon focused CLI music player
</subtitle>
<id>https://git.2137697.xyz/rsplayer/atom?h=main</id>
<link rel='self' href='https://git.2137697.xyz/rsplayer/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/'/>
<updated>2026-11-02T12:35:56Z</updated>
<entry>
<title>ctl: interactive shell with history, editing and completion</title>
<updated>2026-11-02T12:35:56Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-02T12:35:56Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=5dfb5b4ce521a44eb4e9173d20c58e665c78e979'/>
<id>urn:sha1:5dfb5b4ce521a44eb4e9173d20c58e665c78e979</id>
<content type='text'>
`rsp ctl` opens a prompt in the spirit of bluetoothctl. Lines are parsed with
the same clap definitions as the one-shot CLI, so every command and flag works
exactly as it does from a terminal, `help &lt;command&gt;` included.

Tab completes subcommands, and track/album/artist paths for `play` through
`db-complete` (run out of process, keeping its 100 ms timeout away from the
input loop). History lives in the state directory. Piped input falls back to a
plain line loop, so `rsp ctl &lt; commands` works without a terminal.
</content>
</entry>
<entry>
<title>state: persist the queue and pick up where playback stopped</title>
<updated>2026-11-02T12:12:48Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-02T12:12:48Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=863b4017714130f042f993e7c9d0f3f8adee22bf'/>
<id>urn:sha1:863b4017714130f042f993e7c9d0f3f8adee22bf</id>
<content type='text'>
The queue, its shuffle order and whether playback was running are written to
~/.local/state/rsplayer/state.json whenever they change, and on shutdown, then
restored at daemon start. Tracks that disappeared from disk are dropped
instead of failing on play.

`rsp resume`/`rsp toggle` now start the restored track when nothing is loaded
into the engine yet, which is the state right after a restart with a queue
that was paused.
</content>
</entry>
<entry>
<title>add MPRIS support and non-blocking notifs</title>
<updated>2026-07-06T13:49:27Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-07-06T13:49:27Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=547e7ac5218327216704e1fb72004a3de6992940'/>
<id>urn:sha1:547e7ac5218327216704e1fb72004a3de6992940</id>
<content type='text'>
</content>
</entry>
<entry>
<title>add licensing</title>
<updated>2026-05-26T14:54:47Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-05-26T14:54:47Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=337a0ec8a55692f44031b00391a48a7b4b8c71b6'/>
<id>urn:sha1:337a0ec8a55692f44031b00391a48a7b4b8c71b6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix for new symphony API and less debug info in release</title>
<updated>2026-05-18T19:46:26Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-05-18T19:46:26Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=6cceb3cbfacb6f4416e49321a9b63b4ce7a9f036'/>
<id>urn:sha1:6cceb3cbfacb6f4416e49321a9b63b4ce7a9f036</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add desktop notifications for track changes, queue end, and errors</title>
<updated>2026-05-07T22:55:52Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-05-07T22:55:52Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=c88f056289040533b692fdf0e7cd06d2988e5c92'/>
<id>urn:sha1:c88f056289040533b692fdf0e7cd06d2988e5c92</id>
<content type='text'>
Uses notify-rust to send D-Bus desktop notifications from the daemon
when tracks change, the queue empties, or audio errors occur.
</content>
</entry>
<entry>
<title>Extract queue module, add comprehensive tests, fix queue/play bugs</title>
<updated>2026-05-07T22:40:40Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-05-07T22:40:40Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=cfd0781ebae76447cc8072fd60883aabf8158d32'/>
<id>urn:sha1:cfd0781ebae76447cc8072fd60883aabf8158d32</id>
<content type='text'>
• Moved Queue, Track, ShuffleMode, AudioMetadata from daemon.rs into new src/queue.rs module with public API\n• Fixed rsp play &lt;file&gt; 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
</content>
</entry>
<entry>
<title>fix(daemon): robust auto-advance; ensure next track starts even if playback fails</title>
<updated>2026-05-05T19:12:32Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-05-05T19:12:32Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=bd29978b2a0d0d6def486fcdaa63bc8934d68045'/>
<id>urn:sha1:bd29978b2a0d0d6def486fcdaa63bc8934d68045</id>
<content type='text'>
</content>
</entry>
</feed>
