Skip to content

v6.5.3

Choose a tag to compare

@Mincka Mincka released this 16 Jul 13:47
· 8 commits to main since this release
1491016

Hardening against Spotify server instability, migration off the Web API endpoints removed by the February 2026 platform changes, and new device management options.

Fixes

  • The playlists and liked songs count lookups are cached (5 minutes at the default refresh rate) instead of hitting the Spotify API on every update cycle, cutting steady-state API calls per account by roughly 40% (#54).
  • When Spotify's API returns repeated server errors, the coordinator reports "Spotify API temporarily unavailable (server errors)" instead of the misleading http status: 429 that the spotipy library hard-codes on retry exhaustion (#54, spotipy-dev/spotipy#805). Genuine rate limits keep the previous message.
  • A server error (5xx) from Spotify's token endpoint (accounts.spotify.com) is treated as a temporary outage like any other Spotify 5xx: one clear error line and a 30 second refresh backoff, instead of Token request for spotcast failed (unknown): unknown_error followed by a raw 503, message='Service Unavailable' error on every cycle. Genuine token failures (4xx) now include the HTTP status in the log.
  • The device manager applies the same 30 second backoff after a failed device refresh instead of retrying every cycle during an outage.
  • A failed refresh logs one error instead of two: the profile malfunction binary sensor no longer duplicates the coordinator's error line (#54).
  • The stale-device purge survives Home Assistant restarts (unavailability timestamps are persisted) and also removes devices left over from previous Spotcast versions once they exceed the timeout (#56).
  • System health no longer leaks Spotify account ids or usernames into bug reports, and the Device Registration Endpoint check reports real reachability instead of always unreachable.

Changes

  • New per-account options: the number of days before unavailable devices are removed (default 7, 0 = immediately), and a device filter (deny or allow mode, with case-insensitive name patterns such as *Jam*) controlling which Spotify Connect devices get a media_player entity (#56). See the configuration guide.
  • Migrated off the Spotify Web API endpoints removed by the February 2026 platform changes, which are rejected for Spotify applications created after 2026-02-11 (#57): like_media/unlike_media now use /me/library, and playlist track listing uses /playlists/{id}/items. Both replacements also work for older applications.
  • Removed the unused artist top-tracks helper; its endpoint was removed by Spotify with no replacement.

Deprecations

  • The spotcast/categories WebSocket endpoint is deprecated: Spotify removed Browse categories with no replacement for applications created after 2026-02-11 (older applications are grandfathered for now). The endpoint returns an empty list with a warning instead of raising, and will be removed in a future release.

Housekeeping

  • The codebase is pylint-clean (10.00/10) and the dependency security alerts (PyJWT in the dev lock, CairoSVG in the dev requirements) are resolved.

Full changelog: v6.5.2...v6.5.3