Spotify changed their API in Feb 2026 - playlists now require anonymous
tokens via the Partner API. The default anonymous token endpoint is
blocked from server IPs. Added a custom Dockerfile for spotify-tokener
with Chromium installed, and configured LavaSrc to use Partner API with
the tokener endpoint. Playlists now load successfully.
- spotify URL resolution was broken (500 NPE): preferPartnerApi +
customTokenEndpoint depended on dead spotify-tokener (-32000)
- remove tokener service from compose, remove dead SPOTIFY_* env from
bot container (bot code never used them)
- spotify metadata now resolves via standard client credentials,
playback is mirrored to SoundCloud via scsearch providers (ISRC/QUERY)
- COPY build/libs/*.jar instead of hardcoded discord-bot-1.0.0.jar (breaks on version bump)
- lavalink: add /v4/info healthcheck; bot waits for service_healthy before start;
lavalink now depends on spotify-tokener
- lavalink host port bound to 127.0.0.1 (bot talks over docker network; no internet exposure)
- .dockerignore: exclude .github + lavalink/ from build context
- Add spotify-tokener service (ghcr.io/topi314/spotify-tokener:master)
- Configure lavasrc to use it via customTokenEndpoint
- Enable preferPartnerApi for playlist loading via Partner API
- spotify-tokener handles the TOTP token generation properly