✨ New Features
List Network Clients (#92)
Discover all Sendspin clients on your network:
sendspin --list-clients
# Example output:
Found 3 client(s):
home-assistant-voice-091d81
URL: ws://192.168.1.218:8927/sendspin
Host: 192.168.1.218:8927
esp32-s3-box-3-5ab1b8
URL: ws://192.168.1.164:8927/sendspin
Host: 192.168.1.164:8927
Living Room
URL: cast://192.168.1.240:8009
Host: 192.168.1.240:8009Chromecast Support (#96)
Stream audio directly to Chromecast devices. Chromecast devices are now discovered alongside Sendspin clients and can be targeted using cast:// URLs.
sendspin serve --demo --client cast://192.168.1.240:8009Stream Event Hooks (#95)
Run external commands when audio streams start or stop - perfect for automating amplifier control, lighting, or notifications.
# Turn amplifier on/off with stream
sendspin --hook-start "./turn_on_amp.sh" --hook-stop "./turn_off_amp.sh"
# Unmute audio on stream start
sendspin daemon --hook-start "amixer set Master unmute"Hooks can also be configured in settings file using hook_start and hook_stop keys.
Environment variables passed to hooks:
SENDSPIN_EVENT- "start" or "stop"SENDSPIN_SERVER_ID- Connected server identifierSENDSPIN_SERVER_NAME- Connected server friendly nameSENDSPIN_SERVER_URL- Connected server URL (only if client initiated the connection)SENDSPIN_CLIENT_ID- Client identifierSENDSPIN_CLIENT_NAME- Client friendly name
🔧 Improvements
Systemd Installation Refactor (#93)
- Uses
settings-daemon.jsonexclusively (systemd unit now simply runssendspin daemon) - Creates dedicated
sendspinuser for proper daemon operation - Handles both fresh installs and upgrades (including from previous install scripts)
- Fixed audio device detection for daemon users (resolves #77)
🐛 Bug Fixes
Fixed Handshake Timeout (#84)
Resolved spurious "Handshake with server timed out" warnings when two servers connect simultaneously. Connection handling is now properly serialized with graceful handoff between servers.