From 9f28664f68100d3cb08a0b364860fb231048cf7f Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Thu, 24 Sep 2026 00:00:59 -0400 Subject: [PATCH] [frontend] Accept tl_track in track_playback_started Mopidy's CoreListener calls track_playback_started(tl_track=...), but the method took a positional `track`, so every playback start raised TypeError and the smart queue never refilled on track changes. Add a regression test. --- src/mopidy_smartplaylists/frontend.py | 5 ++++- tests/test_frontend.py | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/mopidy_smartplaylists/frontend.py b/src/mopidy_smartplaylists/frontend.py index 97004ea..e152e37 100644 --- a/src/mopidy_smartplaylists/frontend.py +++ b/src/mopidy_smartplaylists/frontend.py @@ -14,6 +14,8 @@ from mopidy_smartplaylists.generators import ( ) if TYPE_CHECKING: + from mopidy.models import TlTrack + from mopidy_smartplaylists.compat import Config, CoreProxy, Uri logger = logging.getLogger(__name__) @@ -63,7 +65,8 @@ class SmartPlaylistsFrontend(pykka.ThreadingActor, CoreListener): logger.info("Smart playlists loaded, running refresh...") refresh_smart_playlists(self.core, section) - def track_playback_started(self, track) -> None: + def track_playback_started(self, tl_track: TlTrack | None = None) -> None: + logger.debug("Track playback started: %s", tl_track) self._refill_queue() def tracklist_changed(self) -> None: diff --git a/tests/test_frontend.py b/tests/test_frontend.py index 0818728..b2be976 100644 --- a/tests/test_frontend.py +++ b/tests/test_frontend.py @@ -74,3 +74,16 @@ class TestSmartPlaylistsFrontend: frontend.playlists_loaded() core.library.search.assert_not_called() + + def test_track_playback_started_accepts_tl_track(self): + config = mock.Mock() + config.get.return_value = { + "playlist_prefix": "[Smart]", + "smart_queue_enabled": "false", + } + core = mock.Mock() + + frontend = SmartPlaylistsFrontend(config, core) + frontend.track_playback_started(tl_track=mock.Mock()) + + core.tracklist.add.assert_not_called()