Skip to content

Releases: waveplate/spotifm

v3.2.0-beta

v3.2.0-beta Pre-release
Pre-release

Choose a tag to compare

@waveplate waveplate released this 30 Oct 19:40

Spotifm 3.2.0-beta

Search and catalogue fallback

  • Automatically fall back to anonymous Spotify web-player search when the Web
    API is rate limited, rejects authorization, or encounters a temporary failure.
  • Support track, album, artist, and playlist search, with playback-session
    metadata fallback for playback, queueing, and playlist operations.
  • Respect Retry-After, cache repeated requests, and identify the search source
    through X-Spotify-Source without changing successful response arrays.
  • Improve cached Web API token validation, refresh handling, and diagnostics.

See anonymous search fallback for behavior and the
standalone diagnostic probe. The anonymous Spotify endpoints are undocumented
and can change independently of Spotifm.

Static player demo

  • Add player/demo.html, a standalone preview player with synced lyrics,
    Milkdrop visuals, and NTSC/VHS effects. No Spotifm server or Spotify login is
    needed to try the demo.
  • Add a song builder for selecting recordings, preview offsets, and lyric
    records, with an exported track manifest and prefetched lyric bundle.
  • Include ten curated previews and their timed lyric bundle for static hosting,
    including GitHub Pages. Preview audio and optional fonts use external services.

See demo setup. Host player/demo.html and
player/demo-lyrics.jsonl together. GitHub Pages deployment is configured
separately.

Lyrics and release packaging

  • Fall back to LRCLIB when Spotify synced lyrics are unavailable, persist
    successful results in the local cache, and display the lyric source.
  • Cancel stale lyric lookups when tracks change so late results cannot replace
    the current song's lyrics.
  • Exclude local lyric caches, credentials, and runtime artifacts from Git and
    Docker build contexts; omit lyric caches and Python artifacts from archives.
  • Include OpenSSL in the runtime images so fresh containers can generate their
    HTTPS certificates.

Install the beta

curl -fsSL https://raw.githubusercontent.com/waveplate/spotifm/v3.2.0-beta/install.sh | bash -s -- --version 3.2.0-beta

The release includes an x86-64 Linux static Musl archive and SHA-256 checksums.

docker pull waveplate/spotifm:3.2.0-beta

Docker tags 3.2.0-beta and beta select this beta. The latest image and the
installer's default latest release continue to select the stable release.
To use the beta with the bundled Compose configuration:

SPOTIFM_IMAGE=waveplate/spotifm:3.2.0-beta docker compose up -d spotifm

Validation: all 45 Rust tests passed; generated player JavaScript and JSON were checked; the demo and song builder passed a Chromium smoke test under a project subdirectory; the anonymous-search probe returned the expected track. The static archive, rootless installer, and fresh Docker OAuth gateway also passed smoke tests.

v3.1.0

Choose a tag to compare

@waveplate waveplate released this 30 Aug 15:25

v3.1.0 release notes

the third major version release of spotifm represents a complete rewrite and major architectural overhaul. spotifm is now a fully standalone streaming server with integrated audio encoding, web player, milkdrop visualizers, rest/websocket apis, and scopes.

highlights

standalone audio pipeline

spotifm no longer requires icecast, liquidsoap, ices, or pulseaudio.

audio streaming and encoding are now handled internally using gstreamer, with support for:

  • spotify ogg passthrough (default, recommended)
  • vorbis
  • opus
  • mp3

bitrate, buffering, silence intervals, and custom audio pipelines are configurable.

rest and websocket apis

spotifm now includes apis for:

  • playback control
  • spotify search
  • playlist management
  • lyrics
  • scopes/access control
  • live telemetry

openapi yaml and json definitions are included, along with interactive redoc documentation.

built-in http and https listeners allow browser features requiring a secure context to work without a separate web server. spotify account linking is handled through a built-in oauth pkce flow.

web player

the web player has been substantially expanded with:

  • milkdrop visualizers powered by butterchurn
  • crt, ntsc, and vhs shaders
  • synchronized lyrics using web audio worklets and ogg granule position tracking
  • live audio telemetry
  • track and artist search
  • playlist management
  • playback controls

standalone static binary

the spotifm binary is distributed as a static musl build, i.e., the spotifm binary will work on any x64 linux operating system.

release files

this release contains

  • spotifm-v3.1.0-x86_64-unknown-linux-musl.tar.gz
    • spotifm
    • player/
    • player/spotifm-player-sw.js
    • player/spotifm-audio-worklet.js
    • player/minimal.html
    • player/index.html
    • player/defaults.json
    • player/build.sh
    • player/vendor/
    • player/vendor/ogg-vorbis-decoder.min.js
    • player/vendor/butterchurn.js
    • player/vendor/butterchurn-presets.js
    • player/src/
    • player/src/minimal.html
    • player/src/index.html
    • player/src/js/
    • player/src/js/000-player.js
    • player/src/css/
    • player/src/css/000-player.css
    • config.toml
    • README.md
    • LICENSE

if you need to manually install spotifm for some reason

sudo cp spotifm /usr/local/bin
sudo mkdir /usr/local/share/spotifm
sudo cp -r player /usr/local/share/spotifm

otherwise, just use the installer (which fetches this exact release anyway)

curl -fsSL https://raw.githubusercontent.com/waveplate/spotifm/v3.1.0/install.sh | bash

v2.0.0

Choose a tag to compare

@waveplate waveplate released this 23 Sep 20:01
  • replace darkice with liquidsoap
  • remove mixer and fade functionality
  • upgrade rust and ubuntu versions

v1.3.0

Choose a tag to compare

@waveplate waveplate released this 04 Jun 09:04
  • add discord bot
  • elevenlabs tts capability
  • api calls for making espeak or elevenlabs tts announcements
  • separated music and announcements pulseaudio sinks
  • api calls for fading music in or out
  • api call for adjusting announcement volume
  • api calls for getting the next and previous track

v1.1.0-beta

Choose a tag to compare

@waveplate waveplate released this 26 Apr 09:20
  • configs now in json
  • added announcements
  • added rest api calls for announcements

v1.0.7-beta

Choose a tag to compare

@waveplate waveplate released this 18 Apr 17:51
  • session keepalive, no longer dies after 48-72 hours
  • added irc bot

v1.0.6-alpha

Choose a tag to compare

@waveplate waveplate released this 11 Feb 22:37

in testing, no known bugs