State updates for web UI
- Separate websocket implementation into trait
- This should allow the web version to work without being forced to use
tokiooractix. - Also moved client connection specifics into CLI because web version will use different methods to send HTTP requests.
- This should allow the web version to work without being forced to use
- Only create song player when we are playing. This allows remote TUI instances when no audio device exists.
- Make all operations on
PlayerStateManagerwork with immutable borrow.- This allows it to be held in an
Arcand not need external locking.
- This allows it to be held in an