* Add source as parameter to beolink join service
* Add beolink join source and responses
* Improve comment
Add translation
* Remove result from beolink join custom action
* Cleanup
* Use options selector instead of string for source ID
Fix test docstring
* Update options
* Use translation dict for source ids
Add input validation
Add tests for invalid sources
Improve source id description
* Use list instead of translation dict
Remove platform prefixes
Add test for Beolink Converter source
* Fix source_id naming and order
* Add diagnostics
* Add tests for diagnostics
* Add media_player diagnostics
* Use media_player entity's state instead of registryentry
* Update tests
* Reorganize code
Remove context from media_player state
* Fix dict being read only
Simplify naming
Update test snapshot
* Update test snapshot
* Add Beolink custom services
Add support for media player grouping via beolink
Give media player entity name
* Fix progress not being set to None as Beolink listener
Revert naming changes
* Update API
simplify Beolink attributes
* Improve beolink custom services
* Fix Beolink expandable source check
Add unexpand return value
Set entity name on initialization
* Handle entity naming as intended
* Fix "null" Beolink self friendly name
* Add regex service input validation
Add all_discovered to beolink_expand service
Improve beolink_expand response
* Add service icons
* Fix merge
Remove unnecessary assignment
* Remove invalid typing
Update response typing for updated API
* Revert to old typed response dict method
Remove mypy ignore line
Fix jid possibly used before assignment
* Re add debugging logging
* Fix coroutine
Fix formatting
* Remove unnecessary update control
* Make tests pass
Fix remote leader media position bug
Improve remote leader BangOlufsenSource comparison
* Fix naming and add callback decorators
* Move regex service check to variable
Suppress KeyError
Update tests
* Re-add hass running check
* Improve comments, naming and type hinting
* Remove old temporary fix
* Convert logged warning to raised exception for invalid media_player
Simplify code using walrus operator
* Fix test for invalid media_player grouping
* Improve method naming
* Improve _beolink_sources explanation
* Improve _beolink_sources explanation
* Fix tests
* Remove service responses
Fix and add tests
* Change service to action where applicable
* Show playback progress for listeners
* Fix testing
* Remove useless initialization
* Fix allstandby name
* Fix various casts with assertions
Fix comment placement
Fix group leader group_members rebase error
Replace entity_id method call with attribute
* Add syrupy snapshots for Beolink tests, checking entity states
Use test JIDs 3 and 4 instead of 2 and 3 to avoid invalid attributes in testing
* Add sections for fields using Beolink JIDs directly
* Fix typo
* FIx rebase mistake
* Sort actions alphabetically
* Add seeking for sources other than Deezer
* Add is_seekable attribute to fallback sources and BangOlufsenSource
Add testing
* Update comment
* Use support flags instead of raising errors when seeking on incompatible source
* Add Beolink custom services
Add support for media player grouping via beolink
Give media player entity name
* Fix progress not being set to None as Beolink listener
Revert naming changes
* Update API
simplify Beolink attributes
* Improve beolink custom services
* Fix Beolink expandable source check
Add unexpand return value
Set entity name on initialization
* Handle entity naming as intended
* Fix "null" Beolink self friendly name
* Add regex service input validation
Add all_discovered to beolink_expand service
Improve beolink_expand response
* Add service icons
* Fix merge
Remove unnecessary assignment
* Remove invalid typing
Update response typing for updated API
* Revert to old typed response dict method
Remove mypy ignore line
Fix jid possibly used before assignment
* Re add debugging logging
* Fix coroutine
Fix formatting
* Remove unnecessary update control
* Make tests pass
Fix remote leader media position bug
Improve remote leader BangOlufsenSource comparison
* Fix naming and add callback decorators
* Move regex service check to variable
Suppress KeyError
Update tests
* Re-add hass running check
* Improve comments, naming and type hinting
* Remove old temporary fix
* Convert logged warning to raised exception for invalid media_player
Simplify code using walrus operator
* Fix test for invalid media_player grouping
* Improve method naming
* Improve _beolink_sources explanation
* Improve _beolink_sources explanation
* Add initial media_player grouping
* Convert custom service methods to media_player methods
Fix testing
* Remove beolink JID extra state attribute
* Modify custom services to only work as expected for media_player grouping
Fix tests
* Remove unused dispatch
* Remove wrong comment
* Remove commented out code
* Add config entry mock typing
* Fix beolink listener playback progress
Fix formatting
Add and use get_serial_number_from_jid function
* Fix testing
* Clarify beolink WebSocket notifications
* Further clarify beolink WebSocket notifications
* Convert notification value to enum value
* Improve comments for touch to join
* Fix None being cast to str if leader is not in HA
* Add error messages to devices in Beolink session and not Home Assistant
Rework _get_beolink_jid
* Replace redundant function call
* Show friendly name for unavailable remote leader instead of JID
* Update homeassistant/components/bang_olufsen/media_player.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Remove unneeded typing
* Rework _get_beolink_jid entity check
Clarify invalid entity error message
* Remove redundant "entity" from string
* Fix invalid typing
fix state assertions
* Fix raised error type
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>