v6.5.3
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: 429that 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 ofToken request for spotcast failed (unknown): unknown_errorfollowed by a raw503, 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 Endpointcheck reports real reachability instead of alwaysunreachable.
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 amedia_playerentity (#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_medianow 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/categoriesWebSocket 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