From 32b41303b0c61e0fcd8d402e219179dd6089a866 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Wed, 26 Nov 2025 10:05:06 -0500 Subject: [PATCH 1/5] Fix: Object not subscriptable --- custom_components/mass_queue/controller.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/custom_components/mass_queue/controller.py b/custom_components/mass_queue/controller.py index 3642545..7a13f55 100644 --- a/custom_components/mass_queue/controller.py +++ b/custom_components/mass_queue/controller.py @@ -192,7 +192,10 @@ async def player_queue( except IndexError: offset = 0 offset = max(offset, 0) - return queue[offset : offset + limit] + LOGGER.debug( + f"Returning queue (len {len(queue)}) with offset {offset}, limit {limit}", + ) + return queue[offset : offset + limit] if queue else [] async def update_queue_items(self, queue_id: str): """Update the queue items for a single queue.""" @@ -308,7 +311,7 @@ def __init__( def get(self, queue_id): """Returns cached queue records.""" - return self.queues[queue_id] + return self.queues.get(queue_id, []) def add(self, queue_id: str, queue_items: int): """Adds a single queue.""" From d9f475d3a53375c2f3021932b67cd1487d2be9f0 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Wed, 26 Nov 2025 16:36:02 -0500 Subject: [PATCH 2/5] 2025.12 Fix: `music_assistant_client` method change --- custom_components/mass_queue/controller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/mass_queue/controller.py b/custom_components/mass_queue/controller.py index 7a13f55..fa9f0df 100644 --- a/custom_components/mass_queue/controller.py +++ b/custom_components/mass_queue/controller.py @@ -216,7 +216,7 @@ async def get_queue( except IndexError: offset = 0 offset = max(offset, 0) - return await self._client.player_queues.get_player_queue_items( + return await self._client.player_queues.get_queue_items( queue_id=queue_id, limit=limit, offset=offset, From 8efe86c4237bc7d2fa78c2c2defa7a1c102945a5 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Wed, 26 Nov 2025 16:39:03 -0500 Subject: [PATCH 3/5] Remove logging --- custom_components/mass_queue/controller.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/custom_components/mass_queue/controller.py b/custom_components/mass_queue/controller.py index fa9f0df..032b786 100644 --- a/custom_components/mass_queue/controller.py +++ b/custom_components/mass_queue/controller.py @@ -192,9 +192,6 @@ async def player_queue( except IndexError: offset = 0 offset = max(offset, 0) - LOGGER.debug( - f"Returning queue (len {len(queue)}) with offset {offset}, limit {limit}", - ) return queue[offset : offset + limit] if queue else [] async def update_queue_items(self, queue_id: str): From 1f67522569f6d52269bb26b885376a14b8c558be Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Wed, 26 Nov 2025 16:39:56 -0500 Subject: [PATCH 4/5] 2025.12 Fix: `device_id` removed from `homeassistant.helpers.template` --- custom_components/mass_queue/utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/custom_components/mass_queue/utils.py b/custom_components/mass_queue/utils.py index e0dbea5..ed5a390 100644 --- a/custom_components/mass_queue/utils.py +++ b/custom_components/mass_queue/utils.py @@ -12,7 +12,6 @@ from homeassistant.helpers import aiohttp_client from homeassistant.helpers import device_registry as dr from homeassistant.helpers import entity_registry as er -from homeassistant.helpers.template import device_id if TYPE_CHECKING: from homeassistant.core import HomeAssistant @@ -299,9 +298,10 @@ def get_entity_info(hass: HomeAssistant, entity_id: str): """Gets the server and client info for a given player.""" client = get_mass_client(hass, entity_id) state = hass.states.get(entity_id) - registry = dr.async_get(hass) - dev_id = device_id(hass, entity_id) - dev = registry.async_get(dev_id) + device_registry = dr.async_get(hass) + entity_registry = er.async_get(hass) + dev_id = entity_registry.async_get(entity_id).device_id + dev = device_registry.async_get(dev_id) identifiers = dev.identifiers player_id = [_id[1] for _id in identifiers if _id[0] == "music_assistant"][0] From ab2624594a77ab195a7d04e7440c760877de5223 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Wed, 26 Nov 2025 16:42:15 -0500 Subject: [PATCH 5/5] Allow workaround for older versions --- custom_components/mass_queue/controller.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/custom_components/mass_queue/controller.py b/custom_components/mass_queue/controller.py index 032b786..088f490 100644 --- a/custom_components/mass_queue/controller.py +++ b/custom_components/mass_queue/controller.py @@ -213,11 +213,19 @@ async def get_queue( except IndexError: offset = 0 offset = max(offset, 0) - return await self._client.player_queues.get_queue_items( - queue_id=queue_id, - limit=limit, - offset=offset, - ) + # HA 2025.12 Fix: `get_player_queue_items` replaced with `get_queue_items` + try: + return await self._client.player_queues.get_queue_items( + queue_id=queue_id, + limit=limit, + offset=offset, + ) + except AttributeError: + return await self._client.player_queues.get_player_queue_items( + queue_id=queue_id, + limit=limit, + offset=offset, + ) async def get_active_queue(self, queue_id: str): """Get the active queue for a single queue."""