<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rsplayer/Cargo.toml, 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>audio: http streaming, opus/mkv support and stream recovery</title>
<updated>2026-11-02T12:02:11Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-11-02T12:02:11Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=853b63e543bbc72081c59d7e10d7c968178ce0ae'/>
<id>urn:sha1:853b63e543bbc72081c59d7e10d7c968178ce0ae</id>
<content type='text'>
- read http(s) urls through a MediaSourceStream instead of failing
- register the libopus decoder and enable mkv/aac/isomp4 in symphonia
- resample to the device rate with linear interpolation
- rebuild the output stream when the backend dies instead of leaving
  playback silent while the daemon still reports "Playing"

A dead pcm makes cpal call the error callback hundreds of thousands of
times per second, so errors are only counted there and reported once when
the stream is dropped. The first failure of a healthy stream is retried
immediately, consecutive failures back off, and a stream that played long
enough clears the failure budget.
</content>
</entry>
<entry>
<title>Relative volume via prefixing/suffixing with +/-</title>
<updated>2026-07-30T17:28:23Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-07-30T17:28:23Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=cf0f408fb5d60d86c1141e859055f1decc3a1373'/>
<id>urn:sha1:cf0f408fb5d60d86c1141e859055f1decc3a1373</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix synchronous HTTP calls</title>
<updated>2026-07-30T16:37:52Z</updated>
<author>
<name>salmonik</name>
<email>salmonik@tuta.io</email>
</author>
<published>2026-07-30T16:37:52Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=da0251d55d3902c90967b36b7a5441404bdf24ef'/>
<id>urn:sha1:da0251d55d3902c90967b36b7a5441404bdf24ef</id>
<content type='text'>
</content>
</entry>
<entry>
<title>add track index to MPRIS</title>
<updated>2026-07-06T13:58:01Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-07-06T13:58:01Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=fdfe24213d70b5548fb09051a0e32b7224210231'/>
<id>urn:sha1:fdfe24213d70b5548fb09051a0e32b7224210231</id>
<content type='text'>
</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 shell path finding as a fallback.</title>
<updated>2026-06-23T12:52:27Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-06-23T12:52:27Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=1fd56ff980dd80a24a3d2c90b692dc7c9f346bdd'/>
<id>urn:sha1:1fd56ff980dd80a24a3d2c90b692dc7c9f346bdd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>change lrc lyrics display.</title>
<updated>2026-06-07T18:56:40Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-06-07T18:56:40Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=3aea522b0969e0d41cb3d0eec737563518dfe861'/>
<id>urn:sha1:3aea522b0969e0d41cb3d0eec737563518dfe861</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add lyrics support</title>
<updated>2026-06-07T18:19:46Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-06-07T18:19:46Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=45a1728ea4a3812120728562084fd416b35b074c'/>
<id>urn:sha1:45a1728ea4a3812120728562084fd416b35b074c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>correctly working auto completion for db</title>
<updated>2026-06-06T16:48:22Z</updated>
<author>
<name>salmonik</name>
<email>raisersoft@proton.me</email>
</author>
<published>2026-06-06T16:48:22Z</published>
<link rel='alternate' type='text/html' href='https://git.2137697.xyz/rsplayer/commit/?id=d347d89dfeef54d648ffdea054897617c0016509'/>
<id>urn:sha1:d347d89dfeef54d648ffdea054897617c0016509</id>
<content type='text'>
</content>
</entry>
</feed>
