* fix(deps): bump librespot to 0.7.0
* Bumps librespot to 0.7.0
* Changes worker authentication to use login5
* Solves minor API changes
* Adds alsa-lib to nix shell
* fix(ci): add libasound2 build dependency
* docs: updates changelog
* fix: Don't build with Rodio backend by default
Allow users to explicitly specify Librespot audio backend. This way we can also
drop the ALSA dependencies again.
---------
Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
I think this worked before but must have regressed. The value `is_playable` was
not taken into account and instead overshadowed by a dummy method.
Fixes#1552
As this is a breaking change, it should definitely be represented in the
changelog, which is the primary source of information about any
user-facing changes.
* Add Seeked signal to Mpris interface
The Mpris2 spec includes a `Seeked` signal which should be fired when
the track position changes in an unexpected way i.e. when the user
seeks to a different part of the track.
This PR implements this signal on seek events and also when a new track
begins. The latter is not strictly required but has been observed in
other players (e.g. VLC).
Closes#1492
* chore: Use `send_mpris()` and `Duration` for conversion
* doc: Update CHANGELOG
---------
Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
* docs: Rename `ap-port` option as `ap_port`
The option is named `ap-port` in librespot.
The option is named [`ap_port` in ConfigValues](9624c03264/src/config.rs (L105)).
In ncspot/config.toml
`ap-port = 443` does nothing, librespot uses port 4070
`ap_port = 443` librespot uses HTTPS
* chore(docs): Rename `ap_port` option in CHANGELOG
Remove implementation details from the changelog as they are provided by
the link in the version title for each release. Also rephrase some
changes to make them more clear.
Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
The Snapcraft installation method was removed in the past as the package
disappeared from Snapcraft. It seems to be back and maintained, so it
should be back in the documentation.
* chore(deps): bump rspotify to 0.13.1
* Use native TLS only, don't mix it with rustls
reqwest uses native TLS, but rspotify with ureq currently uses rustls,
i.e. ncspot bundles rustls and is linked with system TLS library at the
same time.
This has already been fixed in 80da5a877a,
but this commit has been reverted in
aeff120e67 due to a bug in rspotify that
was fixed in 0.13.1 (https://github.com/ramsayleung/rspotify/pull/471).
* added support for ap-port conf
* chore: Reindent table
* feat: Only set `ap_port` in session config if supplied by user
* docs: Update CHANGELOG
---------
Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
* ci: Run tests in CI
Thanks to contributors test coverage is becoming a thing, thus it makes sense to
run tests in CI workflows.
Additionally, switch back to `cargo build` instead of `cargo check`, as the
tests need compilation anyway.
* ci: Enable build for `macos-aarch64`
* fix: Streamline build target names
* fix: Set toolchain target correctly
* ci: Switch to `rustup` over 3rd party action
* fix a panic when token update fails
sometimes we get an `Err` from `token_rx.recv()`, shouldn't panic in such cases
* chore(docs): Update Changelog
---------
Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
Instead of crashing on Termux, no IPC socket is created. This is a
temporary solution until a suitable runtime directory for the Termux
platform can be found.
Cleans up the error messages generated when errors are encountered in
the configuration file. Instead of showing the raw error message, give
clear information about the problem.
* feat: add `info` command line subcommand
Adding an info command allows the documentation to refer to it when
mentioning platform specific information. This gives users a nicer
experience since they don't need to think about how `ncspot` will behave
on their system, but can run `ncspot info` to get that information.
* fix: info command don't create runtime directory
* fix: don't print runtime path on Windows
Windows doesn't use the runtime path so it shouldn't be printed there.
* fix: make `info` command easier to parse
* docs: add back the default configuration directory
Each user has their own runtime directory at `/run/user/<uid>`. Creating
the IPC socket in there makes sure it is cleaned up regardless of
whether `ncspot` exits normally.
BREAKING CHANGE: move IPC socket location
* docs: add changelog
* Add PR template
* docs: tweak PR template changelog info
* docs: extend the changelog and update it
The changelog was missing some of the unreleased changes. Some more
information was also added from previous versions.
---------
Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>