Skip to content

v0.4.0 — companion server grows up

Choose a tag to compare

@dotjarden dotjarden released this 11 Jun 02:34

The companion-app server reaches feature parity with the TUI, gets first-class tunnels, and the recommendation engine now powers clients end to end.

Server / companion API

  • Play reporting — clients record plays into the shared history.jsonl and scrobble through the server (POST /api/played, POST /api/nowplaying), so phone listening feeds Recently Played, stats, recommendations, and Last.fm/ListenBrainz exactly like TUI plays
  • Shared history & statsGET /api/history (cross-device Recently Played, covers stored with each listen) and GET /api/stats (plays, uniques, time listened, top artists/tracks over any window)
  • Daily mixesGET /api/mixes: up to 4 engine-built mixes from your last 90 days, grouped by dominant Last.fm tag, rebuilt daily
  • Multi-seed recommendations/api/recommend accepts repeated seed=Artist|Track params (the TUI's blended-station behavior); exclude= mutes artists on radio and recommendations
  • Live sync — the server watches the library files, so edits made in the TUI broadcast to connected clients over SSE
  • Resilient addressing/api/sources lists every address the server answers on (tunnel + LAN) so paired clients can follow address changes; /health reports the server version
  • Official album art for library tracks that never stored a cover; album pages fall back to the first track's art; transient lyrics failures are no longer cached for a day

Tunnels

  • pixeltui serve --tunnel cloudflare|ngrok|tailscale — auto-publish with the public URL baked into the pairing QR; child tunnels torn down with the server
  • New server config block (addr, name, public_url, tunnel) plus a "Companion server" step in pixeltui setup and PIXELTUI_SERVE_* env overrides
  • Startup banner shows public and LAN addresses with remote-access hints

CLI

  • pixeltui update [version] — install a specific tagged release (also your rollback path)