Fix webplayer hide from UI by default
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Tue, 17 Feb 2026 20:20:51 +0000 (21:20 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Tue, 17 Feb 2026 20:20:51 +0000 (21:20 +0100)
music_assistant/controllers/config.py
music_assistant/providers/sendspin/player.py
music_assistant/providers/universal_player/player.py

index 4a3c818a6e9b45fb7c0bedfd4a574652db5d7d00..d9a2f88a6ee9178a0af32ccf5573490047680315 100644 (file)
@@ -1870,6 +1870,7 @@ class ConfigController:
                 options=options,
                 category="protocol_general",
                 requires_reload=False,
+                hidden=len(output_protocols) <= 1,
             )
         )
 
index 864a931cbfb135b87c92eb233157514274aa83e9..91987a35498768a9efc6157aabb5cf781c755c0a 100644 (file)
@@ -230,7 +230,6 @@ class SendspinPlayer(Player):
         )
         self._attr_expose_to_ha_by_default = not self.is_web_player
         self._attr_hidden_by_default = self.is_web_player
-        self._attr_type = PlayerType.PLAYER if self.is_web_player else PlayerType.PROTOCOL
 
     def event_cb(self, client: SendspinClient, event: ClientEvent) -> None:
         """Event callback registered to the sendspin server."""
index 1e131ef10b9a29efde83fa6ca4d7721d92516819..9c825dee636fcf306895a4d646ced489d0728d3d 100644 (file)
@@ -61,6 +61,28 @@ class UniversalPlayer(Player):
         # it delegates to protocol players
         self._attr_supported_features = set()
 
+    @property
+    def hidden_by_default(self) -> bool:
+        """Return if the player should be hidden in the UI by default."""
+        if len(self.linked_output_protocols) == 0:
+            # If we have no linked protocols, hide by default
+            return True
+        if self.device_info.model.lower() == "web browser":  # noqa: SIM103
+            # hide web players by default
+            return True
+        return False
+
+    @property
+    def expose_to_ha_by_default(self) -> bool:
+        """Return if the player should be exposed to Home Assistant by default."""
+        if len(self.linked_output_protocols) == 0:
+            # If we have no linked protocols, hide by default
+            return False
+        if self.device_info.model.lower() == "web browser":  # noqa: SIM103
+            # hide web players by default
+            return False
+        return True
+
     def _get_control_target(
         self, required_feature: PlayerFeature, require_active: bool = False
     ) -> Player | None: