You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
New #admin/config view with per-section editors for server, transcode, mounts, relays, autodjs, and users. Saves go through PUT /api/config/<section>, round-trip via toml_edit to preserve comments and key order, write atomically, and apply through the same diff pipeline SIGHUP uses (sharing a write lock to avoid races).
Mounts / relays / autodjs / users use a collapsed list with one-at-a-time inline editing and an in-row confirm prompt for removal. Blank password fields resolve to the existing values server-side, so editing one entry doesn't require re-entering everyone else's secrets.
AutoDJ folders are picked via a server-side filesystem browser (BROWSE…); a browser file picker would point at the operator's machine, not the server.
apply_config now adds and removes mounts at runtime to match [[mounts]] — previously only metadata updates worked without a restart.
Role-based access
[[auth.users]] entries gain role = "admin" | "operator" (missing role defaults to admin, so existing configs upgrade cleanly). Operators can edit mounts, autodjs, and relays; admin-only sections are hidden from their sidebar, write attempts return 403, and GET /api/config strips those fields server-side.
The logged-in admin can't remove or demote themselves, and the user list is rejected if it contains no admins at all.
Fixed
Listener disconnects (broken pipe / connection reset) now log at debug instead of warn — that's normal player behavior, not a server problem.