Skip to content

v0.14

Latest

Choose a tag to compare

@dgruss dgruss released this 25 Nov 00:15
· 10 commits to main since this release

Highlights

  • Autonomous playlist automation that drives UltraStar Deluxe end-to-end: SmartMicrophone now queues entries, confirms players, tracks decoder events from Error.log, and keeps audiences synced with phase-specific countdowns.
  • Transparent countdown overlay (countdown_overlay.py) that uses Tkinter (or PyQt5 fallback) to project fullscreen timers on the hosting PC during playlist phases.
  • Hardened Control tab with optional password protection, per-channel capacity sliders, and a control-only server mode for remote FOH operators.
  • Stickier room assignments & mic health UI ensuring phones remain in their assigned channels and get instant feedback when audio capture drops out.

New Features & Enhancements

  • Playlist automation service inside server.py monitors USDX logs, maintains per-phase state, and exposes /playlist/status, /playlist/toggle, and /playlist/next endpoints for the Control tab.
  • Added countdown_overlay.py to render countdowns locally; the server automatically launches/terminates it as playlist phases change.
  • Expanded CLI options:
    • --usdx-log-file to point directly at the UltraStar Error.log for decoder monitoring.
    • --countdown to change the default countdown length for every playlist phase.
    • --control-password to require authentication before acquiring the Control tab or issuing automation actions.
    • --control-only to disable WebRTC/audio flows when acting purely as a remote controller.
    • --max-name-length to cap player display names.
    • --enable-forwarding gate so iptables rules are only applied when explicitly requested.
  • Room capacity persistence (data/room_capacity.json) with REST APIs and UI slider so hosts can cap attendance per mic channel.
  • Added sticky room tracking, server-side session metadata, and improved join logic to keep players in their assigned mic when reconnecting or when SSE updates arrive out-of-order.
  • Control tab now mirrors the playlist state (current/next songs, countdown remaining, auto-added entries) and synchronizes typed text via incremental keystroke diffs.
  • Web UI shows lock-screen player-specific videos per mic slot to indicate color and player number, plus a per-user microphone health card that detects silent inputs and recommends reloads.

Reliability & Quality Improvements

  • Lock screen animation assets refreshed for smoother transitions.
  • Improved pw-link handling in webrtc_microphone.py, including fallbacks that link by port name when PipeWire does not expose numeric IDs.
  • Server skips PulseWire setup and microphone scans whenever --control-only is set, reducing CPU load for control-only deployments.
  • Safer handling of network automation: --enable-forwarding now guards all iptables calls so accidental firewall changes don't occur when only one interface is provided.
  • Additional safeguards around hotspot IP detection and nmcli automation to avoid races when the interface needs extra time.