v0.5.9
What's Changed
🚀 Features
- Music Discovery — more results & fresh picks on refresh: recommendations build from a larger candidate pool (more seeds, more similar/top tracks per seed) and return up to 60 tracks / 24 artists. The refresh button now rotates the listening window, shuffles seeds and uses score-weighted random sampling, so each refresh surfaces different — but still relevant — tracks instead of an identical list. (2e5311d)
- Admin-toggleable registration lock: enable/disable open registration at runtime, with a
REGISTRATION_ENABLEDenv kill-switch that overrides the admin toggle. (34965b2)
🐛 Fixed
- Subsonic / Symfonium sync: omit
nullfields from JSON responses (Symfonium's strict parser aborted sync on null) + resolvepl-prefixed cover-art IDs. (7160786) - Subsonic: drop file-based debug log spam, route through the logger only. (2a35daa)
- i18n: wire the recommendation/playlist UI to the app i18n system and fill locale gaps across en/pl/es/fr/de. (57f6227)
- Dev build: show a "Dev" badge in the sidebar footer next to the version. (94d4900)
- Dev environment: repair the Vite dev frontend —
node-ownednode_modulesso the dependency optimizer can write its cache (was EACCES → blank page),BACKEND_URL=http://backend:8000so the proxy reaches the backend, andallowedHostsso the dev server is reachable by hostname. (6ffe25b)
📦 Build
- Bump backend base image to the patched
python:3.14-slim-bookwormdigest. (a08dd6d)
🔧 CI
- Pin all third-party GitHub Actions to commit SHAs. (0883f13)
Full Changelog: v0.5.8...v0.5.9