Skip to content

Conversation

photovoltex
Copy link
Member

  • adds a method to invoke the transfer endpoint of spclient
  • adds a method to spirc to easily transfer the playback to ourselves
  • prevent commands of spirc to be executed before connection establishment

During checkups at the end I also encountered a warning for big-num, which might be a problem sometimes in the future.

For context I did run `cargo report future-incompatibilities --id 1` after cargo suggested it: The following warnings were discovered during the build. These warnings are an indication that the packages contain code that will become an error in a future release of Rust. These warnings typically cover changes to close soundness problems, unintended or undocumented behavior, or critical problems that cannot be fixed in a backwards-compatible fashion, and are not expected to be in wide use.

Each warning should contain a link for more information on what the warning
means and how to resolve it.

To solve this problem, you can try the following approaches:

The package num-bigint-dig v0.8.4 currently triggers the following future incompatibility lints:

warning: macro vec is private
--> /home/photovoltex/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/biguint.rs:490:22
|
490 | BigUint::new(vec![1])
| ^^^
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #120192 rust-lang/rust#120192

warning: macro vec is private
--> /home/photovoltex/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/biguint.rs:2005:9
|
2005 | vec![0]
| ^^^
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #120192 rust-lang/rust#120192

warning: macro vec is private
--> /home/photovoltex/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/biguint.rs:2027:16
|
2027 | return vec![b'0'];
| ^^^
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #120192 rust-lang/rust#120192

warning: macro vec is private
--> /home/photovoltex/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/biguint.rs:2313:13
|
2313 | vec![0]
| ^^^
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #120192 rust-lang/rust#120192

warning: macro vec is private
--> /home/photovoltex/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/prime.rs:138:22
|
138 | let mut moduli = vec![BigUint::zero(); prime_limit];
| ^^^
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #120192 rust-lang/rust#120192

warning: macro vec is private
--> /home/photovoltex/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/num-bigint-dig-0.8.4/src/bigrand.rs:319:25
|
319 | let mut bytes = vec![0u8; bytes_len];
| ^^^
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #120192 rust-lang/rust#120192

Resolves #1519

@Copilot Copilot AI review requested due to automatic review settings August 9, 2025 19:58
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements functionality to transfer Spotify playback control to the current device using the spclient transfer API. It adds methods to initiate playback transfers and ensures commands are only executed after connection establishment.

  • Adds a transfer method to SpClient that calls the Connect transfer endpoint
  • Adds a transfer method to Spirc for convenient playback transfer to the current device
  • Prevents spirc commands from executing before connection is established

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 5 comments.

File Description
core/src/spclient.rs Implements transfer method to call spclient transfer API endpoint
core/src/dealer/protocol/request.rs Updates TransferOptions to use Option<String> fields and adds serialization support
connect/src/spirc.rs Adds connection state tracking, Transfer command, and prevents command execution before connection
CHANGELOG.md Documents the new transfer method addition

@roderickvd
Copy link
Member

You want to include this into the any-day-to-be-released-now v0.7.0 or wait until after?

@photovoltex
Copy link
Member Author

Let's wait with merging this. I think it's a nice addition but not necessary to get the release out.

And btw. thanks for the opinionated work the last days. That made some decisions that were standing out for a while finally resolved :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add option to transfer playback to librespot
2 participants