Jozef Kruszynski [Fri, 21 Nov 2025 14:12:30 +0000 (15:12 +0100)]
fix(tidal): auth refresh time diff (#2653)
* fix(tidal): auth refresh time diff
Auth expiration check was using only 60 seconds rather than the intended
60 minutes. Using timedelta to show full intention
Closes #4425
* fix(tidal): invert current logic, and use constant for buffer
Fabian Munkes [Fri, 21 Nov 2025 14:10:51 +0000 (15:10 +0100)]
Disable Zone Handling if needed for MusicCast players (#2650)
* disable zone handling if desired
* bump lib
* wording
---------
Co-authored-by: OzGav <gavnosp@hotmail.com>
OzGav [Fri, 21 Nov 2025 14:05:56 +0000 (00:05 +1000)]
Typing fixes for artists controller (#2625)
* Typing fixes for artists controller
* Fix circular import
* Minor type change
* Switch tracks method return type to list
* Remove db asserts
* fix albums() return type
Miguel Angel Nubla [Fri, 21 Nov 2025 12:52:52 +0000 (13:52 +0100)]
Add TLS options with fingerprint support to Fully Kiosk provider (#2649)
* feat(fully-kiosk): add TLS options with fingerprint support
* fix(fully_kiosk): satisfy linters
---------
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
OzGav [Fri, 21 Nov 2025 10:38:20 +0000 (20:38 +1000)]
Some typing fixes for the music controller (#2629)
* Some typing fixes for the music controller
* Make self.database a property
* Restore comment
Michael Ansel [Thu, 20 Nov 2025 18:24:05 +0000 (13:24 -0500)]
Update alexapy requirement to version 1.29.9 (#2647)
* Update alexapy requirement to version 1.29.9
Fix for login issues with Alexa Player Provider.
Changelog: https://gitlab.com/keatontaylor/alexapy/-/blob/dev/CHANGELOG.md#v1299-2025-11-08
Motivating discussion: https://github.com/orgs/music-assistant/discussions/431#discussioncomment-
14954976
* Update requirements_all.txt for alexapy 1.29.9
Generated using scripts/gen_requirements_all.py
---------
Co-authored-by: Marvin Schenkel <marvinschenkel@gmail.com>
sprocket-9 [Thu, 20 Nov 2025 13:06:19 +0000 (13:06 +0000)]
Add VBAN Receiver plugin provider (#2498)
OzGav [Thu, 20 Nov 2025 13:04:47 +0000 (23:04 +1000)]
Enable disabled lint rules (#2658)
Marvin Schenkel [Wed, 19 Nov 2025 08:27:01 +0000 (09:27 +0100)]
Undo yield to event loop
music-assistant-machine [Wed, 19 Nov 2025 02:46:23 +0000 (03:46 +0100)]
⬆️ Update music-assistant-frontend to 2.17.8 (#2655)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
dependabot[bot] [Tue, 18 Nov 2025 13:48:01 +0000 (14:48 +0100)]
Chore(deps-dev): Bump ruff from 0.14.3 to 0.14.4 (#2621)
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.14.3 to 0.14.4.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.14.3...0.14.4)
---
updated-dependencies:
- dependency-name: ruff
dependency-version: 0.14.4
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Marvin Schenkel [Tue, 18 Nov 2025 13:43:31 +0000 (14:43 +0100)]
YTM: Yield control to event loop during stream url resolution to prevent blocking the main thread.
Marvin Schenkel [Tue, 18 Nov 2025 13:42:01 +0000 (14:42 +0100)]
Refactor streams controller + smart fades (#2613)
* Refactor streamscontroller + smartfades
* Adjust log levels and add mixer property
* Define separate smart fades logger in the streamcontroller
* Define separate smart fades logger in the streamcontroller
* Remove leftover
* Rewrite loggers as instance attributes
OzGav [Tue, 18 Nov 2025 11:54:47 +0000 (21:54 +1000)]
Fix DLNA player showing external source instead of MA queue (#2648)
OzGav [Tue, 18 Nov 2025 11:27:42 +0000 (21:27 +1000)]
Fix Spotify audiobook instance routing (#2502)
OzGav [Tue, 18 Nov 2025 11:08:34 +0000 (21:08 +1000)]
Typing fixes for snapcast (#2624)
* Typing fix for SiriusXM
* Typing fixes for snapcast
* fix return types
* Remove erroneous commit
* Revert erroneous commit
* Fix minor errors
OzGav [Tue, 18 Nov 2025 09:53:26 +0000 (19:53 +1000)]
Typing fixes for the stream controller (#2540)
* work in progress
* mypy fixes for streams.py
* Fix typos
* Another typo
* PR review changes
* Fixes after merge conflicts
* Revert unnecessary change
* Remove unnecessary comments
* More changes post conflict resolve
* Remove exclude
* organise imports
* Updates post other commits
* Catch possible no stream details
* Updates for new commits
* Fix type error post conflict merge
* Simplify
* Simplify with type hints to config controller
* Typing adjustments
* Fix missing return type
* improve code clarity
* switch to assert for none check
* Fix return type mypy error
* Revert unnecessary bracket
* Use default parameter
OzGav [Tue, 18 Nov 2025 08:58:48 +0000 (18:58 +1000)]
Improve lyrics lookup failure visibility (#2651)
OzGav [Tue, 18 Nov 2025 08:52:28 +0000 (18:52 +1000)]
Typing fix for SiriusXM (#2623)
OzGav [Tue, 18 Nov 2025 07:37:55 +0000 (17:37 +1000)]
Typing fixes for the Cache controller (#2569)
* mypy fixes for cache.py
* Fix __init__ signature to match CoreController
* Adjust checksum typing
* Guarantee checksum is a str
* Apply suggestion from @marcelveldt
---------
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
Marcel van der Veldt [Mon, 17 Nov 2025 22:25:55 +0000 (23:25 +0100)]
Add default value argument to get_*_config_value
OzGav [Mon, 17 Nov 2025 14:05:38 +0000 (00:05 +1000)]
Minor AirPlay tweaks (#2646)
Marcel van der Veldt [Mon, 17 Nov 2025 11:20:30 +0000 (12:20 +0100)]
Add type hints to config controller functions (#2639)
Brad Keifer [Sun, 16 Nov 2025 19:26:09 +0000 (06:26 +1100)]
Add (initial) support for AirPlay 2 (#2571)
OzGav [Sun, 16 Nov 2025 19:15:09 +0000 (05:15 +1000)]
Handle non-UTF8 .lrc files gracefully to prevent playback blocking (#2640)
OzGav [Sun, 16 Nov 2025 19:13:40 +0000 (05:13 +1000)]
Fix squeezelite sync group source selection (#2642)
Fix squeezelite group playback
anatosun [Sun, 16 Nov 2025 09:16:15 +0000 (10:16 +0100)]
fix: tracks tab not being populated (#2637)
Fabian Munkes [Sun, 16 Nov 2025 08:46:28 +0000 (09:46 +0100)]
fix: abs progress (again!) (#2641)
* fix: another progress fix
* fix: forgot a not
Maxim Raznatovski [Fri, 14 Nov 2025 15:02:16 +0000 (16:02 +0100)]
Update Resonate provider with `MULTI_DEVICE_DSP` support and other improvements (#2616)
* Update `MediaStream` usage
* Support `MULTI_DEVICE_DSP` for resonate
* Rename `stream` to `channel` in `MediaStream`
* Initial working implementation for per player DSP support
* Refactors, fixes, and comments
* Rename `shared_buffer` to `chunk_buffer`
* Use `UUID` instead of `str`
* Use seconds in `multi_client_stream`
* Move attribute definitions to class level
* Remove dead code
* Refactor `_cleanup_old_chunks`
* Rename `MultiClientStream` to `TimedClientStream`
* Refactor `_read_chunk_from`
* Convert main channel to 16-bit PCM for aioresonate compatibility
* Use separate host and advertise_host
Pass bind_ip for socket binding and publish_ip for mDNS advertising to
correctly handle scenarios where the server binds to all interfaces
(0.0.0.0) but advertises a specific IP address to clients.
* Bump `aioresonate`
* Add safety check to `TimedClientStream` to avoid memory leaks
* Update `MIN_BUFFER_DURATION` comment with findings
* Update music_assistant/providers/resonate/timed_client_stream.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Clean up `timed_client_stream` reference after playback
* Bump `aioresonate`
* Update call to the now async friendly `set_media_art`
* Update `playback_state` when joining a new group
* Update `group_members` based on `aioresonate` events
Instead of optimistically setting them.
* Move `MusicAssistantMediaStream` outside a method
* Run audio cleanup immediately
* Remove redundant type annotation
* Use `anext()`
* Remove unused async from `_cleanup_old_chunks`
* Simplify method name and clarify lock requirement
* Move `_generate` to class-level method
* Refactor `MusicAssistantMediaStream` parameters
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Marvin Schenkel [Fri, 14 Nov 2025 14:04:30 +0000 (15:04 +0100)]
Delete and ignore uv.lock file
Maxim Raznatovski [Fri, 14 Nov 2025 13:32:45 +0000 (14:32 +0100)]
Fix CI by installing all provider's dependencies when linting (#2619)
Fix CI lint job by installing all provider dependencies
Dnny44 [Thu, 13 Nov 2025 17:35:14 +0000 (11:35 -0600)]
Added deno for YTMusic Provider (#2636)
* Added deno for YTMusic Provider
* Commiting uv lock
Maxim Raznatovski [Mon, 10 Nov 2025 13:39:59 +0000 (14:39 +0100)]
Fix UGP member detection in `get_stream` (#2617)
Maxim Raznatovski [Mon, 10 Nov 2025 13:38:57 +0000 (14:38 +0100)]
Use `get_stream` helper in builtin player (#2618)
OzGav [Mon, 10 Nov 2025 09:43:22 +0000 (19:43 +1000)]
Typing fixes for the Qobuz provider (#2610)
mtdcr [Sun, 9 Nov 2025 23:01:10 +0000 (00:01 +0100)]
Use secure connection to MusicBrainz API (#2615)
Marcel van der Veldt [Sun, 9 Nov 2025 08:34:19 +0000 (09:34 +0100)]
Update base image versions to 1.4.8
Marvin Schenkel [Sat, 8 Nov 2025 15:59:59 +0000 (16:59 +0100)]
Remove explicit lvvmlite and numpy dependencies now that we are using debian.
Marvin Schenkel [Sat, 8 Nov 2025 11:49:19 +0000 (12:49 +0100)]
Apple Music: Add remaining favourite parsing + custom music token config (#2609)
Marcel van der Veldt [Sat, 8 Nov 2025 11:39:37 +0000 (12:39 +0100)]
Add logging filter
Marcel van der Veldt [Fri, 7 Nov 2025 17:43:11 +0000 (18:43 +0100)]
Fix bugs in webserver
OzGav [Fri, 7 Nov 2025 16:18:39 +0000 (02:18 +1000)]
Typing fixes for the config controller (#2570)
Marvin Schenkel [Fri, 7 Nov 2025 16:16:53 +0000 (17:16 +0100)]
Refactor Smart fades (#2582)
OzGav [Fri, 7 Nov 2025 16:16:21 +0000 (02:16 +1000)]
Typing fixes for the squeezelite provider (#2589)
Marcel van der Veldt [Fri, 7 Nov 2025 16:12:35 +0000 (17:12 +0100)]
fix macos librespot binary
Marvin Schenkel [Fri, 7 Nov 2025 15:51:42 +0000 (16:51 +0100)]
Apple music improvements (#2607)
Marcel van der Veldt [Fri, 7 Nov 2025 14:47:30 +0000 (15:47 +0100)]
Remove sonos workaround
Marcel van der Veldt [Fri, 7 Nov 2025 14:47:18 +0000 (15:47 +0100)]
More crossfade tweaks
Marcel van der Veldt [Fri, 7 Nov 2025 11:48:43 +0000 (12:48 +0100)]
Merge branch 'dev' of https://github.com/music-assistant/server into dev
Marcel van der Veldt [Fri, 7 Nov 2025 11:48:38 +0000 (12:48 +0100)]
Add more debugging of stopped streams
Fabian Munkes [Fri, 7 Nov 2025 10:47:01 +0000 (11:47 +0100)]
fix: abs: another in progress fix (#2605)
Fabian Munkes [Fri, 7 Nov 2025 10:46:01 +0000 (11:46 +0100)]
fix: MusicCast - non-existing player in zone handling (#2606)
Marcel van der Veldt [Fri, 7 Nov 2025 10:38:49 +0000 (11:38 +0100)]
yield to loop tweaks
OzGav [Fri, 7 Nov 2025 08:06:25 +0000 (18:06 +1000)]
Typing fixes for the Webserver controller (#2586)
* Fix merge conflicts
* more mypy fixes
* Drafting post upstream changes
* fix run_handler
* PR review comment
* Merge conflict fixes
* Fix WebserverController __init__ signature to match CoreController
Marcel van der Veldt [Fri, 7 Nov 2025 00:54:55 +0000 (01:54 +0100)]
Ensure Spotify Connect is passive
Marcel van der Veldt [Fri, 7 Nov 2025 00:49:11 +0000 (01:49 +0100)]
Add some temporary debug info to stream controller
Marcel van der Veldt [Fri, 7 Nov 2025 00:04:14 +0000 (01:04 +0100)]
Add Airport Receiver Plugin provider (#2604)
Marcel van der Veldt [Thu, 6 Nov 2025 21:19:58 +0000 (22:19 +0100)]
Add logging to Spotify streaming
Marcel van der Veldt [Thu, 6 Nov 2025 20:33:51 +0000 (21:33 +0100)]
Fix Spotify streaming (#2603)
Marvin Schenkel [Thu, 6 Nov 2025 20:25:56 +0000 (21:25 +0100)]
Fix deadlock when trying to join a paused Airplay player to a group (#2602)
Marcel van der Veldt [Thu, 6 Nov 2025 13:06:40 +0000 (14:06 +0100)]
Add more error handling and logging to (different sample rate) crossfade actions
Marcel van der Veldt [Thu, 6 Nov 2025 11:44:27 +0000 (12:44 +0100)]
Fix: start stream as fast as possible
Dont wait until the buffer has the crossfade duration if we just started playback
Marcel van der Veldt [Thu, 6 Nov 2025 03:06:21 +0000 (04:06 +0100)]
try other values for readrate
Marcel van der Veldt [Thu, 6 Nov 2025 00:22:17 +0000 (01:22 +0100)]
Small fix for source switching
Brad Keifer [Wed, 5 Nov 2025 04:57:49 +0000 (15:57 +1100)]
debug log check_binary returncode and output
Marcel van der Veldt [Wed, 5 Nov 2025 20:37:38 +0000 (21:37 +0100)]
Merge branch 'dev' of https://github.com/music-assistant/server into dev
Marcel van der Veldt [Wed, 5 Nov 2025 20:37:34 +0000 (21:37 +0100)]
Fix AirPlay late join sync
Marcel van der Veldt [Wed, 5 Nov 2025 20:36:56 +0000 (21:36 +0100)]
Fix typo in active source property
Marcel van der Veldt [Wed, 5 Nov 2025 20:36:35 +0000 (21:36 +0100)]
Allow buffered named pipe writing
dependabot[bot] [Wed, 5 Nov 2025 15:27:44 +0000 (16:27 +0100)]
Chore(deps-dev): Bump ruff from 0.13.2 to 0.14.3 (#2591)
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.13.2 to 0.14.3.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.13.2...0.14.3)
---
updated-dependencies:
- dependency-name: ruff
dependency-version: 0.14.3
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
OzGav [Wed, 5 Nov 2025 15:27:17 +0000 (01:27 +1000)]
Fix CoreController init signature to match model (#2594)
OzGav [Wed, 5 Nov 2025 15:26:20 +0000 (01:26 +1000)]
Spotify: Refactor search method to reduce complexity (#2601)
Refactor search method to reduce complexity by extracting helper methods
Marvin Schenkel [Wed, 5 Nov 2025 15:23:33 +0000 (16:23 +0100)]
Don't stop the music improvements (#2597)
Marcel van der Veldt [Wed, 5 Nov 2025 01:52:45 +0000 (02:52 +0100)]
Fixed various issues with (plugin)sources (#2600)
Marvin Schenkel [Tue, 4 Nov 2025 22:21:18 +0000 (23:21 +0100)]
Enforce flow mode when player does not support enqueueing (#2595)
OzGav [Tue, 4 Nov 2025 22:18:47 +0000 (08:18 +1000)]
Phish.in Remove erroneous provider feature (#2596)
Marcel van der Veldt [Tue, 4 Nov 2025 22:14:08 +0000 (23:14 +0100)]
Merge branch 'dev' of https://github.com/music-assistant/server into dev
Marcel van der Veldt [Tue, 4 Nov 2025 22:14:04 +0000 (23:14 +0100)]
AirPlay: Issue the extra volume command on RAOP only
Fabian Munkes [Tue, 4 Nov 2025 22:07:39 +0000 (23:07 +0100)]
fix: abs - discarded progress (#2598)
Marvin Schenkel [Tue, 4 Nov 2025 22:03:47 +0000 (23:03 +0100)]
Fix japanese language code (#2599)
Fix japanese language code.
Marcel van der Veldt [Tue, 4 Nov 2025 18:48:59 +0000 (19:48 +0100)]
Prevent old streamdetails being reused when buffer still present
Marcel van der Veldt [Tue, 4 Nov 2025 18:37:54 +0000 (19:37 +0100)]
Fix AirPlay discovery info
Marcel van der Veldt [Tue, 4 Nov 2025 00:12:57 +0000 (01:12 +0100)]
Fix Sonos enqueue issues
Marcel van der Veldt [Mon, 3 Nov 2025 23:50:12 +0000 (00:50 +0100)]
Modify sonos queue items debug log
Marcel van der Veldt [Mon, 3 Nov 2025 23:26:28 +0000 (00:26 +0100)]
Merge branch 'dev' of https://github.com/music-assistant/server into dev
Marcel van der Veldt [Mon, 3 Nov 2025 23:26:25 +0000 (00:26 +0100)]
Fixed format conversion in crossfade discard calculation
Eric Munson [Mon, 3 Nov 2025 23:21:50 +0000 (18:21 -0500)]
Subsonic: Use loudness tags when present (#2580)
The Open Subsonic API supports tagging items with loudness values and
will report them, when present. If they are given to us, pass them onto
MA.
Signed-off-by: Eric B Munson <eric@munsonfam.org>
Marcel van der Veldt [Mon, 3 Nov 2025 22:35:53 +0000 (23:35 +0100)]
Better handling of errors during streaming
Try to recover from a failed stream while streaming queue tracks
Marcel van der Veldt [Mon, 3 Nov 2025 19:24:36 +0000 (20:24 +0100)]
Small tweaks
Marcel van der Veldt [Mon, 3 Nov 2025 18:36:19 +0000 (19:36 +0100)]
Correct Resonate flow pcm format
Marcel van der Veldt [Mon, 3 Nov 2025 18:31:43 +0000 (19:31 +0100)]
Use correct pcm format for airplay flow stream
Marcel van der Veldt [Mon, 3 Nov 2025 18:31:09 +0000 (19:31 +0100)]
use select source helper in squeezelite
Marcel van der Veldt [Mon, 3 Nov 2025 17:32:13 +0000 (18:32 +0100)]
Swap initialization order of AirPlay
only start streaming to airplay if we have received the first audio chunk
Marcel van der Veldt [Mon, 3 Nov 2025 17:29:39 +0000 (18:29 +0100)]
Fix race conditions in closing a (ffmpeg) process
Marcel van der Veldt [Mon, 3 Nov 2025 17:28:08 +0000 (18:28 +0100)]
remove radio workaround
Marcel van der Veldt [Mon, 3 Nov 2025 15:11:12 +0000 (16:11 +0100)]
Fix type hints on play_media function
Marcel van der Veldt [Mon, 3 Nov 2025 15:10:41 +0000 (16:10 +0100)]
Merge branch 'dev' of https://github.com/music-assistant/server into dev
Marcel van der Veldt [Mon, 3 Nov 2025 15:10:36 +0000 (16:10 +0100)]
API docs tweaks
Maxim Raznatovski [Mon, 3 Nov 2025 13:05:48 +0000 (14:05 +0100)]
Add missing enforced flow mode config entry for Resonate (#2587)
Marcel van der Veldt [Mon, 3 Nov 2025 01:13:06 +0000 (02:13 +0100)]
Workaround for slow starting radio streams