Skip to content

Releases: Sendspin/sendspin-python-cli

4.2.2

Choose a tag to compare

@github-actions github-actions released this 22 Jan 21:21
0aec4b6

What’s Changed

🐛 Bugfixes

4.2.1

Choose a tag to compare

@github-actions github-actions released this 19 Jan 05:05
256f00d

What’s Changed

🐛 Bugfixes

  • #97 - Run Chromecast disconnect in executor to avoid blocking event loop (@balloob)

⬆️ Dependencies and CI

4.2.0

Choose a tag to compare

@github-actions github-actions released this 18 Jan 04:28
946736e

✨ 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:8009

Chromecast 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:8009

Stream 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 identifier
  • SENDSPIN_SERVER_NAME - Connected server friendly name
  • SENDSPIN_SERVER_URL - Connected server URL (only if client initiated the connection)
  • SENDSPIN_CLIENT_ID - Client identifier
  • SENDSPIN_CLIENT_NAME - Client friendly name

🔧 Improvements

Systemd Installation Refactor (#93)

  • Uses settings-daemon.json exclusively (systemd unit now simply runs sendspin daemon)
  • Creates dedicated sendspin user 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.

4.1.1

Choose a tag to compare

@github-actions github-actions released this 17 Jan 10:40
2f68091

What’s Changed

🐛 Bugfixes

  • #91 - Update cast link to use full server URL (@balloob)

4.1.0

Choose a tag to compare

@github-actions github-actions released this 17 Jan 04:24
fb465c5

What’s Changed

Major playback improvement for the Sendspin Party website, especially on iPhone, thanks to Sendspin JS 1.0 🎉

  • #89 - Upgrade embedded web player to sendspin-js 1.0 (@balloob)
  • #88 - Use comma/period for delay adjustment shortcuts instead of brackets (@copilot-swe-agent[bot])
  • #90 - Remove iOS mute switch warning as it is no longer needed (@balloob)

🐛 Bugfixes

  • #86 - TUI: Fix server selector showing wrong labels and duplicates (@balloob)
  • #85 - TUI: Cancel in-progress connection when switching servers (@balloob)

4.0.0

Choose a tag to compare

@github-actions github-actions released this 16 Jan 03:25
71ad5fa

Breaking change

The default port of the daemon is now port 8928 instead of 8927. This should not impact functionality as the daemon is automatically discovered by a sendspin server regardless of the port.

New features

What’s Changed

  • #83 - Bump aiosendspin 3 (@balloob)
  • #82 - Change default client port from 8927 to 8928 (@balloob)
  • #81 - Document update procedure for preserving configuration (@copilot-swe-agent[bot])
  • #78 - Upgrade sendspin installation command (@balloob)
  • #73 - Extend settings configuration (@balloob)
  • #72 - Allow connecting to passive clients in serve mode (@balloob). Add extra clients with sendspin serve --demo --client http://localhost:8928/sendspin

🐛 Bugfixes

  • #67 - Improve systemd script, refactor logic, fix issues (@trisweb)
  • #71 - Daemon mode: Send GoodByeMessage when disconnecting a server (@balloob). This will better handle multiple sendspin servers in your network.

⬆️ Dependencies and CI

3.0.0

Choose a tag to compare

@github-actions github-actions released this 13 Jan 04:15
45cb87a

What’s Changed

  • #65 - Persist player settings to disk (@balloob)
  • #66 - Fix issues with accepting input when run from pipe (@trisweb)
  • #61 - Add MPRIS support using aiosendspin-mpris (@abmantis)

⚠ Breaking Changes

  • #50 - Daemon to default to accept connections, not connect itself (@balloob)

When no server URL is given, the daemon will become discoverable on the network for Sendspin servers to connect to. In 2.0 it would discover servers and connect to the first one. This impacts the systemd daemon script. Passing a url remains unchanged.

2.1.2

Choose a tag to compare

@github-actions github-actions released this 07 Jan 01:10
32965f2

🐛 Bugfixes

2.1.1

Choose a tag to compare

@github-actions github-actions released this 05 Jan 15:51
7f97180

What’s Changed

🐛 Bugfixes

  • #49 - Update aiosendspin to fix connection issues with Music Assistant (@maximmaxim345)

2.1.0

Choose a tag to compare

@github-actions github-actions released this 05 Jan 13:37
92dbd58

What’s Changed

🐛 Bugfixes

  • #37 - Raspberry Pi 0 fix - Extending usage of "Thread-safe snapshot" (@Joldiges)