Marvin Schenkel [Mon, 19 Jan 2026 10:42:02 +0000 (11:42 +0100)]
Merge branch 'dev' of https://github.com/music-assistant/server into dev
Marvin Schenkel [Mon, 19 Jan 2026 10:41:57 +0000 (11:41 +0100)]
Apply explicit permissions to pr-labels workflow
Valentin Lacour [Mon, 19 Jan 2026 10:35:31 +0000 (11:35 +0100)]
fix(alexa): Fix issue with language on alexa skills for french and germany (#2982)
Co-authored-by: Valentin Lacour <vlacour@sweeek.com>
David McClosky [Mon, 19 Jan 2026 08:21:59 +0000 (03:21 -0500)]
Update old template references + other cleanups (#2928)
* Update old template references + other cleanups
(also some reformatting and a note about how to run a separate development server)
* Update instructions around setting server port
* Remove notes on setting a custom port
Garrett Mace [Mon, 19 Jan 2026 08:07:52 +0000 (00:07 -0800)]
Add SomaFM Radio provider (#2981)
* SomaFM provider initial release
* Polish playlist parsing per PR points (and remove MP3 format config)
Marvin Schenkel [Mon, 19 Jan 2026 06:46:37 +0000 (07:46 +0100)]
Use bind ip of the stream server for Sendspin url (#2930)
kdkavanagh [Sat, 17 Jan 2026 16:17:11 +0000 (10:17 -0600)]
Prevent duplicate airplay player creation leaving player in invalid state (#2955)
Marvin Schenkel [Sat, 17 Jan 2026 16:04:21 +0000 (17:04 +0100)]
Maintenance for security related fixes (#2983)
music-assistant-machine [Sat, 17 Jan 2026 03:00:42 +0000 (04:00 +0100)]
⬆️ Update music-assistant-frontend to 2.17.70 (#2987)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Fabian Munkes [Fri, 16 Jan 2026 14:35:01 +0000 (15:35 +0100)]
use instance_id instead of domain on provider level logging (#2943)
* use instance id instead of domain in logging
* feedback
Fabian Munkes [Fri, 16 Jan 2026 11:38:09 +0000 (12:38 +0100)]
Do not report progress on ffmpeg streaming error (#2973)
* do not report progress if there was a streaming error
* Update music_assistant/controllers/player_queues.py
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
---------
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
Marvin Schenkel [Thu, 15 Jan 2026 12:33:40 +0000 (13:33 +0100)]
Fix backport pipeline
Marvin Schenkel [Thu, 15 Jan 2026 12:15:54 +0000 (13:15 +0100)]
Add SECURITY.MD
Alexey ALERT Rubashёff [Thu, 15 Jan 2026 08:03:13 +0000 (10:03 +0200)]
Make pre-commit configuration cross-platform compatible using uv (#2971)
chore: update pre-commit hooks and enforce LF line endings
- Add configuration to enforce LF line endings for all text files.
- Update pre-commit hooks to use `uv run` instead of `scripts/run-in-env.sh` and reorder `gen_requirements_all` to run first.
- Uses LF line endings in gen_requirements_all.
Alexey ALERT Rubashёff [Thu, 15 Jan 2026 07:55:06 +0000 (09:55 +0200)]
Add Bandcamp Music Provider (#2871)
* bandcamp
* mypy, ruff
* fix provider stream details tests
* fix eol for icons
* final touch
* bump bandcamp-async-api to 0.0.3
* add BandcampMustBeLoggedInError support
- bump bandcamp-async-api to 0.0.4
* fix: PR review
- is_streaming_provider is now True
- catching and raising exceptions revamp
- remove redundant stream content type
* requirements_all.txt line endings
* fix: Add error handling for missing streaming links in BandcampProvider.
- Add error handling for missing streaming links in BandcampProvider.
- Enhance error handling and update test assertions for Bandcamp provider.
* fix: typing
* minor: specify the exact cookie name
* PR review fixes
- Remove search limit configuration.
- CONF_TOP_TRACKS_LIMIT moved to advanced config category
- Update test to use `DEFAULT_TOP_TRACKS_LIMIT` constant.
* PR review: reintroduced search limit, set it to 50
Marvin Schenkel [Thu, 15 Jan 2026 06:53:43 +0000 (07:53 +0100)]
Fallback to stream.url if url_resolved is missing (#2972)
Updated the RadioBrowserProvider to use stream.url as a fallback for the path if stream.url_resolved is not available. This ensures that a valid stream path is always provided.
music-assistant-machine [Thu, 15 Jan 2026 03:07:58 +0000 (04:07 +0100)]
⬆️ Update music-assistant-frontend to 2.17.69 (#2975)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
OzGav [Wed, 14 Jan 2026 12:54:43 +0000 (21:54 +0900)]
Add RET507 mypy rule (#2961)
OzGav [Wed, 14 Jan 2026 12:06:47 +0000 (21:06 +0900)]
Add metadata support to HLS streams (#2867)
* Add metadata support to HLS streams
* Use callback
* Remove unnecessary parameter
Ztripez [Wed, 14 Jan 2026 08:25:14 +0000 (09:25 +0100)]
Audible: Add podcast support and browse by author/series/narrator (#2881)
* Fix Audible authentication for new API token format
- Add compatible token refresh handling for new actor_access_token format
- Validate signing auth availability (preferred, stable auth method)
- Accept multiple authorization code parameter names in callback URL
- Improve error handling and diagnostic messages
* Add podcast support to Audible provider
Implement podcast library sync and playback for Audible Plus content:
- Add LIBRARY_PODCASTS to supported features
- Implement get_library_podcasts() to fetch podcast series
- Implement get_podcast() for full podcast details
- Implement get_podcast_episodes() and get_podcast_episode()
- Add podcast and episode parsing functions
- Update get_stream() to handle podcast episodes (Mpeg drm_type)
Podcasts in Audible use "PodcastParent" content_delivery_type for series.
Episodes are fetched via the parent_asin relationship.
Podcast episodes use non-DRM MP3 streaming (drm_type: "Mpeg").
* Add browse support for authors, series, narrators, genres, publishers
Implement custom browse functionality to navigate audiobooks by:
- Authors: Browse all authors, see audiobooks sorted by release date (newest first)
- Series: Browse all series, see books in order (by sequence number)
- Narrators: Browse all narrators, see audiobooks sorted by release date
- Genres: Browse all genres, see audiobooks sorted by release date
- Publishers: Browse all publishers, see audiobooks sorted by release date
The base audiobooks/podcasts paths fall back to the parent implementation.
Data is extracted from the library API response.
* Clean up Audible helper comments and docstrings
* Address review comments for Audible PR #2881
- Refactor pagination into _fetch_library_items
- Implement ACR caching to optimize position reporting
- Fix podcast parent fallback
- Handle special characters in browse paths
- Add unit tests for new logic
---------
Co-authored-by: Ztripez von Matérn <ztripez@bobby.se>
dependabot[bot] [Wed, 14 Jan 2026 07:28:36 +0000 (08:28 +0100)]
Chore(deps): Bump pillow from 12.0.0 to 12.1.0 (#2937)
Bumps [pillow](https://github.com/python-pillow/Pillow) from 12.0.0 to 12.1.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/12.0.0...12.1.0)
---
updated-dependencies:
- dependency-name: pillow
dependency-version: 12.1.0
dependency-type: direct:production
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>
music-assistant-machine [Wed, 14 Jan 2026 03:13:51 +0000 (04:13 +0100)]
⬆️ Update music-assistant-frontend to 2.17.68 (#2970)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Marvin Schenkel [Tue, 13 Jan 2026 18:22:19 +0000 (19:22 +0100)]
Fix content type for Sqeezelite multiclient streams (#2967)
dependabot[bot] [Tue, 13 Jan 2026 14:58:16 +0000 (14:58 +0000)]
Chore(deps): Bump alexapy from 1.29.10 to 1.29.14 (#2938)
* Chore(deps): Bump alexapy from 1.29.10 to 1.29.14
Bumps [alexapy](https://gitlab.com/keatontaylor/alexapy) from 1.29.10 to 1.29.14.
- [Release notes](https://gitlab.com/keatontaylor/alexapy/tags)
- [Changelog](https://gitlab.com/keatontaylor/alexapy/blob/dev/CHANGELOG.md)
- [Commits](https://gitlab.com/keatontaylor/alexapy/compare/v1.29.10...v1.29.14)
---
updated-dependencies:
- dependency-name: alexapy
dependency-version: 1.29.14
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
* Also bump provider manfiest
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marvin Schenkel <marvinschenkel@gmail.com>
dependabot[bot] [Tue, 13 Jan 2026 14:34:00 +0000 (14:34 +0000)]
Chore(deps): Bump async-upnp-client from 0.46.0 to 0.46.2 (#2960)
* Chore(deps): Bump async-upnp-client from 0.46.0 to 0.46.2
Bumps [async-upnp-client](https://github.com/StevenLooman/async_upnp_client) from 0.46.0 to 0.46.2.
- [Release notes](https://github.com/StevenLooman/async_upnp_client/releases)
- [Changelog](https://github.com/StevenLooman/async_upnp_client/blob/development/CHANGES.rst)
- [Commits](https://github.com/StevenLooman/async_upnp_client/compare/0.46.0...0.46.2)
---
updated-dependencies:
- dependency-name: async-upnp-client
dependency-version: 0.46.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
* Also bump provider manifests
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marvin Schenkel <marvinschenkel@gmail.com>
Marvin Schenkel [Tue, 13 Jan 2026 14:18:31 +0000 (15:18 +0100)]
Fix issues with progress bar jumps and time overflow (#2959)
* Progress
* Progress
* Fix duplicate playlog entries on stream restart
* Use model for queuetimeupdate
* Cleanup
* Update music_assistant/controllers/streams/streams_controller.py
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
* Feedback
* Feedback
---------
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
Marvin Schenkel [Tue, 13 Jan 2026 09:40:44 +0000 (10:40 +0100)]
Bump base image for beta and stable
Maxim Raznatovski [Tue, 13 Jan 2026 09:34:57 +0000 (10:34 +0100)]
Pin `av` to 16.1.0 for sendspin provider (#2966)
chore(deps): pin `av` to 16.1.0 for sendspin provider
Marvin Schenkel [Tue, 13 Jan 2026 08:02:11 +0000 (09:02 +0100)]
Bump base image for nightly
music-assistant-machine [Tue, 13 Jan 2026 03:06:39 +0000 (04:06 +0100)]
⬆️ Update music-assistant-frontend to 2.17.67 (#2964)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Bart [Mon, 12 Jan 2026 16:25:43 +0000 (17:25 +0100)]
Add method to move item to end of queue (#2929)
Marvin Schenkel [Mon, 12 Jan 2026 15:01:57 +0000 (16:01 +0100)]
Add option to add backport label after the PR has been merged
Eric Munson [Mon, 12 Jan 2026 14:25:23 +0000 (09:25 -0500)]
Subsonic Scrobble: Fix Subsonic interactions after the async change (#2953)
The Subsonic provider is now using aiohttp making it unnecessary for us
to wrap calls to is in a new thread. Fix the scrobble plugin to use the
async library as well.
Signed-off-by: Eric B Munson <eric@munsonfam.org>
OzGav [Mon, 12 Jan 2026 13:39:28 +0000 (23:39 +1000)]
Add PTH202 mypy rule (#2932)
OzGav [Mon, 12 Jan 2026 13:37:04 +0000 (23:37 +1000)]
Add PTH107 mypy rule (#2933)
Maxim Raznatovski [Mon, 12 Jan 2026 12:22:42 +0000 (13:22 +0100)]
Sendspin web player race condition losing `client/hello` (#2946)
fix: Sendspin DataChannel race condition losing `client/hello`
Register message/close handlers before ws_connect() to ensure early
messages are queued. Change condition to also queue when task is None
(during setup), not just when running.
OzGav [Mon, 12 Jan 2026 12:13:22 +0000 (22:13 +1000)]
Fix Pandora only showing five stations (#2956)
Rob Sonke [Mon, 12 Jan 2026 12:04:04 +0000 (13:04 +0100)]
fix: Ensure playlist ID is a string in Soundcloud provider (#2957)
Convert playlist ID to string to prevent an error on startsWith
OzGav [Thu, 8 Jan 2026 16:09:08 +0000 (02:09 +1000)]
Add and update provider icons (#2950)
* Add updated cast icon
* Switch to AirPlay audio icons
* Add local filesystem icon
* Add smb provider icon
* Add universal group icon
* Clean up icon_monochrome.svg by removing comments
Removed unused comments and metadata from SVG.
* Add colour version
* Add colour version
* Add colour version
* Add monochrome universal group icon
* Add monochrome smb icon
* Add monochrome local provider icon
music-assistant-machine [Thu, 8 Jan 2026 03:06:27 +0000 (04:06 +0100)]
⬆️ Update music-assistant-frontend to 2.17.66 (#2952)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
music-assistant-machine [Wed, 7 Jan 2026 03:06:48 +0000 (04:06 +0100)]
⬆️ Update music-assistant-frontend to 2.17.65 (#2948)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
OzGav [Tue, 6 Jan 2026 13:43:56 +0000 (23:43 +1000)]
Add ISC001 PYI036 SIM113 mypy rules (#2936)
* Add ISC001 PYI036 SIM113 mypy rules
* Add multiple mypy rules
* revert one line
Fabian Munkes [Tue, 6 Jan 2026 11:55:00 +0000 (12:55 +0100)]
fix: MusicCast: Handle a failed poll more gracefully (#2944)
* be more generic in musiccast update
* generic exception at all polling places
dependabot[bot] [Tue, 6 Jan 2026 08:21:27 +0000 (09:21 +0100)]
Chore(deps-dev): Bump pytest from 8.4.2 to 9.0.2 (#2939)
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.4.2 to 9.0.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.2)
---
updated-dependencies:
- dependency-name: pytest
dependency-version: 9.0.2
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
OzGav [Tue, 6 Jan 2026 08:10:23 +0000 (18:10 +1000)]
Fix Music Assistant playlist not being removed (#2931)
* Fix playlist recreation issue after removal
When a Music Assistant playlist was removed from the library, the config entry
was correctly removed but the physical playlist file in the playlists/ directory
was not deleted. This orphaned file could cause the playlist to be recreated
during synchronization.
This fix ensures that when a playlist is removed via library_remove(), both the
config entry and the physical playlist file are deleted.
Fixes the issue where playlists would reappear after sync with a new ID.
* Add LIBRARY_PLAYLISTS_EDIT feature to builtin provider
The builtin provider was missing ProviderFeature.LIBRARY_PLAYLISTS_EDIT,
which prevented library_remove() from being called when playlists were
removed from the library. This meant the playlist file cleanup code was
never executed.
Adding this feature ensures that:
1. library_edit_supported() returns True for playlists
2. library_remove() is called during playlist removal
3. The playlist file is properly deleted
* Use playlist lock for file deletion to prevent race conditions
When deleting a playlist file, we now acquire the _playlist_lock to prevent
race conditions with concurrent read/write operations, consistent with
_read_playlist_file_items() and _write_playlist_file_items().
---------
Co-authored-by: Claude <noreply@anthropic.com>
music-assistant-machine [Tue, 6 Jan 2026 03:06:44 +0000 (04:06 +0100)]
⬆️ Update music-assistant-frontend to 2.17.64 (#2942)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
dependabot[bot] [Mon, 5 Jan 2026 17:31:24 +0000 (18:31 +0100)]
Chore(deps): Bump aiohttp from 3.13.2 to 3.13.3 (#2940)
---
updated-dependencies:
- dependency-name: aiohttp
dependency-version: 3.13.3
dependency-type: direct:production
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 [Mon, 5 Jan 2026 17:31:09 +0000 (18:31 +0100)]
Fix webserver base url not persisting (#2935)
* Fix webserver base url not persisting
* Cleanup
Anatosun [Mon, 5 Jan 2026 12:02:43 +0000 (13:02 +0100)]
Plex Connect: Ungroup player before starting playback (#2877)
* Plex Connect: Ungroup player before starting playback
When a user selects a specific player for playback in Plex, automatically
remove it from any sync groups or permanent groups. This improves UX by
ensuring playback only happens on the selected player, not all grouped players.
- Added _ungroup_player_if_needed() helper method
- Calls set_members directly to bypass static member restrictions
- Applied to handle_play_media (new playback) and handle_play (resume)
- Works with temporary syncs, permanent groups, and dynamic groups
* Plex Connect: Add error handling and feature checks to player ungrouping
* Plex Connect: implemented corrections
Paulus Schoutsen [Mon, 5 Jan 2026 08:33:36 +0000 (03:33 -0500)]
Bump aiosendspin to 2.0.0 (#2925)
## Summary
- Bump aiosendspin from 1.1.4 to 2.0.0
- Fix compatibility with sendspin-cli 2.0.0+ by accepting spec-compliant field names in the client/hello support object
- Update `start_server()` API call: `advertise_host` → `advertise_addresses` (breaking change from Sendspin/aiosendspin#117)
music-assistant-machine [Mon, 5 Jan 2026 03:19:06 +0000 (04:19 +0100)]
⬆️ Update music-assistant-models to 1.1.88 (#2927)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Fabian Munkes [Sun, 4 Jan 2026 11:51:56 +0000 (12:51 +0100)]
abs: parse "date added" into the MA library (#2923)
* Parse date_added into the library database
* Process date_added in sync
* Add date_added to filesystem provider
* add date_added for abs
---------
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
Marcel van der Veldt [Sun, 4 Jan 2026 11:12:50 +0000 (12:12 +0100)]
Allow music providers to provide the "date_added" field to library items (#2920)
* Parse date_added into the library database
* Process date_added in sync
* Add date_added to filesystem provider
* fix for mashumaro
---------
Co-authored-by: Fabian Munkes <105975993+fmunkes@users.noreply.github.com>
music-assistant-machine [Sun, 4 Jan 2026 03:17:55 +0000 (04:17 +0100)]
⬆️ Update music-assistant-frontend to 2.17.63 (#2921)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Marcel van der Veldt [Sun, 4 Jan 2026 01:00:30 +0000 (02:00 +0100)]
Fix sql injection vulnerability (#2916)
music-assistant-machine [Sun, 4 Jan 2026 00:57:03 +0000 (01:57 +0100)]
⬆️ Update music-assistant-models to 1.1.87 (#2919)
* ⬆️ Update music-assistant-models to 1.1.87
* fix snapshots
---------
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
OzGav [Sun, 4 Jan 2026 00:51:10 +0000 (10:51 +1000)]
Add Pandora provider (#2503)
OzGav [Sun, 4 Jan 2026 00:46:48 +0000 (10:46 +1000)]
Change radio items order to play count descending (#2918)
dependabot[bot] [Sun, 4 Jan 2026 00:09:39 +0000 (01:09 +0100)]
Chore(deps): Bump aiosqlite from 0.21.0 to 0.22.1 (#2898)
Bumps [aiosqlite](https://github.com/omnilib/aiosqlite) from 0.21.0 to 0.22.1.
- [Changelog](https://github.com/omnilib/aiosqlite/blob/main/CHANGELOG.md)
- [Commits](https://github.com/omnilib/aiosqlite/compare/v0.21.0...v0.22.1)
---
updated-dependencies:
- dependency-name: aiosqlite
dependency-version: 0.22.1
dependency-type: direct:production
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>
Eric Munson [Sat, 3 Jan 2026 23:57:28 +0000 (18:57 -0500)]
Subsonic: Update Subsonic library and use new AsyncConnection (#2910)
Martin Weinelt [Sat, 3 Jan 2026 23:53:54 +0000 (00:53 +0100)]
Bump get-mac 0.9.2 to getmac 0.9.5 (#2912)
Bart [Sat, 3 Jan 2026 23:20:42 +0000 (00:20 +0100)]
Enhanced Skip previous behavior (#2915)
Fabian Munkes [Sat, 3 Jan 2026 23:17:35 +0000 (00:17 +0100)]
ABS/ iTunes podcasts: allow translation of folders (#2913)
mtdcr [Sat, 3 Jan 2026 18:26:41 +0000 (19:26 +0100)]
Fix invalid timeout value for TLS connections (#2908)
Marvin Schenkel [Fri, 2 Jan 2026 18:30:43 +0000 (19:30 +0100)]
Bump aioslimproto to 3.1.4 (#2909)
Fabian Munkes [Fri, 2 Jan 2026 15:08:43 +0000 (16:08 +0100)]
fix: MusicCast Pause (#2907)
* let MA handle pause in MusicCast
* handle pause for MA control as stop
OzGav [Fri, 2 Jan 2026 14:38:25 +0000 (00:38 +1000)]
Fix track name stripping too agressive (#2901)
* Fix track name stripping too agressive
* Preserve capitalisation
* Optimise
* Adjust comment
* Simplify WITH_TITLE_WORDS
* Add tests
* Test for version words in song title
Marvin Schenkel [Fri, 2 Jan 2026 12:58:09 +0000 (13:58 +0100)]
Bump aioslimproto to 3.1.3 (#2906)
dependabot[bot] [Fri, 2 Jan 2026 12:29:45 +0000 (13:29 +0100)]
Chore(deps): Bump pillow from 11.3.0 to 12.0.0 (#2869)
Bumps [pillow](https://github.com/python-pillow/Pillow) from 11.3.0 to 12.0.0.
- [Release notes](https://github.com/python-pillow/Pillow/releases)
- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst)
- [Commits](https://github.com/python-pillow/Pillow/compare/11.3.0...12.0.0)
---
updated-dependencies:
- dependency-name: pillow
dependency-version: 12.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
dependabot[bot] [Fri, 2 Jan 2026 12:25:52 +0000 (13:25 +0100)]
Chore(deps-dev): Bump mypy from 1.19.0 to 1.19.1 (#2897)
Bumps [mypy](https://github.com/python/mypy) from 1.19.0 to 1.19.1.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.19.0...v1.19.1)
---
updated-dependencies:
- dependency-name: mypy
dependency-version: 1.19.1
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>
Simon Vos [Fri, 2 Jan 2026 12:09:21 +0000 (13:09 +0100)]
Add configuration for Zeroconf discovery interfaces (#2880)
feat(core): Add configuration for Zeroconf discovery interfaces
- Add `zeroconf_interfaces` setting to allow choosing between 'default' and 'all' network interfaces for mDNS discovery.
- Move ConfigController setup before AsyncZeroconf initialization in `MusicAssistant` to ensure config is available.
- Initialize `AsyncZeroconf` based on the configured interface choice (`InterfaceChoice.All` vs `InterfaceChoice.Default`).
Paulus Schoutsen [Fri, 2 Jan 2026 12:07:21 +0000 (13:07 +0100)]
Prevent cache with media_item=None (#2886)
Klaas Neirinck [Fri, 2 Jan 2026 11:52:43 +0000 (12:52 +0100)]
Fix multiple spotify connect instances reporting to the latest registered webservice callback (#2905)
os.environ was used to communicate the callback url to the librespot
binary.
When multiple instances are started simultaneously the env variable gets
overwritten and only the last value was used.
Now every librespot instance gets its own env variables instead of using
the shared os.environ.
Paulus Schoutsen [Fri, 2 Jan 2026 10:30:48 +0000 (11:30 +0100)]
Disconnect sendspin clients to allow clean shutdown (#2887)
I was unable to do a clean shutdown in development when a Sendspin client was connected to the Sendspin server. This PR fixes it.
STR
- Start MA
- Connect sendspin client (I was using sendspin-js)
- Shut down MA using ctrl+C
- Hangs
With this PR: shuts down cleanly
music-assistant-machine [Thu, 1 Jan 2026 03:16:21 +0000 (04:16 +0100)]
⬆️ Update music-assistant-frontend to 2.17.62 (#2904)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
music-assistant-machine [Wed, 31 Dec 2025 03:04:12 +0000 (04:04 +0100)]
⬆️ Update music-assistant-frontend to 2.17.61 (#2902)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
OzGav [Tue, 30 Dec 2025 14:23:25 +0000 (00:23 +1000)]
Improve single artist detection when splitting (#2899)
Marvin Schenkel [Tue, 30 Dec 2025 09:28:54 +0000 (10:28 +0100)]
Fix base queries to work with provider mapping filters (#2900)
Eric Munson [Mon, 29 Dec 2025 22:43:25 +0000 (17:43 -0500)]
Update OpenSubsonic Library (#2895)
Update to include bugfix for get_playlists endpoint.
Signed-off-by: Eric B Munson <eric@munsonfam.org>
Ztripez [Mon, 29 Dec 2025 12:18:22 +0000 (13:18 +0100)]
Audible: Fix authentication for new API token format (#2875)
* Fix Audible authentication for new API token format
- Add compatible token refresh handling for new actor_access_token format
- Validate signing auth availability (preferred, stable auth method)
- Accept multiple authorization code parameter names in callback URL
- Improve error handling and diagnostic messages
* Use shared http_session instead of creating new client
- Modify refresh_access_token_compat to accept http_session parameter
- Update to use aiohttp ClientSession (from mass.http_session)
- Remove unnecessary httpx.AsyncClient creation
---------
Co-authored-by: Ztripez von Matérn <ztripez@bobby.se>
OzGav [Mon, 29 Dec 2025 09:57:20 +0000 (19:57 +1000)]
Fix spotify podcast thumb image quality (#2885)
* Fix Spotify podcast thumbnail image quality
* Remove debug line
* Simplify
Ztripez [Sun, 28 Dec 2025 09:15:28 +0000 (10:15 +0100)]
Enable multi-instance support for Audible provider (#2879)
Allow users to add multiple Audible provider instances with separate
logins. The provider implementation already supports this - just needed
to add the multi_instance flag to the manifest.
Fixes: music-assistant/discussions#862
dependabot[bot] [Sun, 28 Dec 2025 09:04:41 +0000 (10:04 +0100)]
Chore(deps): Bump websocket-client from 1.8.0 to 1.9.0 (#2811)
* Chore(deps): Bump websocket-client from 1.8.0 to 1.9.0
Bumps [websocket-client](https://github.com/websocket-client/websocket-client) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/websocket-client/websocket-client/releases)
- [Changelog](https://github.com/websocket-client/websocket-client/blob/master/ChangeLog)
- [Commits](https://github.com/websocket-client/websocket-client/compare/v1.8.0...v1.9.0)
---
updated-dependencies:
- dependency-name: websocket-client
dependency-version: 1.9.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
* Also bump provider manifest
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marvin Schenkel <marvinschenkel@gmail.com>
dependabot[bot] [Sun, 28 Dec 2025 09:01:11 +0000 (10:01 +0100)]
Chore(deps): Bump deno from 2.5.6 to 2.6.3 (#2870)
* Chore(deps): Bump deno from 2.5.6 to 2.6.3
Bumps deno from 2.5.6 to 2.6.3.
---
updated-dependencies:
- dependency-name: deno
dependency-version: 2.6.3
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
* Also bump provider manifest
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marvin Schenkel <marvinschenkel@gmail.com>
Anatosun [Sun, 28 Dec 2025 08:48:47 +0000 (09:48 +0100)]
Plex Connect: Fix Plex Connect timeline reporting (#2876)
Fix Plex Connect timeline reporting
Use queue.corrected_elapsed_time instead of player.corrected_elapsed_time
to accurately track current track position. This fixes issues where:
- Timeline reported incorrect elapsed time when playing multiple tracks
- Huge time values were sent after track transitions
- Step forward/back commands used wrong elapsed time reference
The queue tracks per-track elapsed time while player tracks total session time.
OzGav [Sun, 28 Dec 2025 08:36:26 +0000 (16:36 +0800)]
Fix link in Roku manifest (#2866)
Fix link
Jan Feil [Sun, 28 Dec 2025 08:34:53 +0000 (09:34 +0100)]
Fix issue with remote_progress if user not logged in (#2882)
Paulus Schoutsen [Sun, 28 Dec 2025 08:31:09 +0000 (09:31 +0100)]
Add 2 guards for queue missing after client disconnect (#2884)
OzGav [Sun, 28 Dec 2025 08:27:25 +0000 (16:27 +0800)]
Fix OpenSubsonic ReplayGain loudness calculation (#2893)
* Fix OpenSubsonic ReplayGain loudness calculation
The OpenSubsonic provider was passing raw ReplayGain gain values
(in dB) directly to set_loudness(), but set_loudness() expects
integrated loudness values (in LUFS).
This caused tracks with ReplayGain tags to show incorrect loudness
values when accessed via OpenSubsonic/Navidrome. For example, a
quiet track with +0.39 dB gain was being stored as 0.39 LUFS
instead of -18.39 LUFS, resulting in massive gain reduction
(-17.39 dB) instead of a small boost.
Fixed by converting ReplayGain values to loudness before storing:
Loudness (LUFS) = -18 - Gain (dB)
This matches the ReplayGain 2.0 specification and how the
filesystem provider handles ReplayGain tags.
Only affects users connecting to Navidrome/Subsonic servers.
Users with local filesystem music were not affected.
* Remove unnecessary comment
---------
Co-authored-by: Claude <noreply@anthropic.com>
music-assistant-machine [Fri, 26 Dec 2025 03:02:18 +0000 (04:02 +0100)]
⬆️ Update music-assistant-frontend to 2.17.60 (#2890)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
music-assistant-machine [Thu, 25 Dec 2025 03:04:53 +0000 (04:04 +0100)]
⬆️ Update music-assistant-frontend to 2.17.59 (#2888)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
music-assistant-machine [Wed, 24 Dec 2025 03:01:00 +0000 (04:01 +0100)]
⬆️ Update music-assistant-frontend to 2.17.58 (#2883)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Artur Pragacz [Tue, 23 Dec 2025 16:08:58 +0000 (17:08 +0100)]
Fix items not showing up in the library (filtering still not right) (#2873)
Reverts (partially)
1b60a3c.
Marvin Schenkel [Tue, 23 Dec 2025 15:44:10 +0000 (16:44 +0100)]
Fix Sonos S1 not reconnecting after having gone offline. (#2874)
Marvin Schenkel [Tue, 23 Dec 2025 07:19:23 +0000 (08:19 +0100)]
Skip unavailable providers when setting favourites
music-assistant-machine [Tue, 23 Dec 2025 03:04:05 +0000 (04:04 +0100)]
⬆️ Update music-assistant-frontend to 2.17.57 (#2872)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
music-assistant-machine [Sun, 21 Dec 2025 02:04:03 +0000 (03:04 +0100)]
⬆️ Update music-assistant-frontend to 2.17.56 (#2865)
Co-authored-by: marcelveldt <6389780+marcelveldt@users.noreply.github.com>
Marcel van der Veldt [Sun, 21 Dec 2025 01:09:18 +0000 (02:09 +0100)]
Fix one more test
Marcel van der Veldt [Sun, 21 Dec 2025 01:04:14 +0000 (02:04 +0100)]
Merge branch 'dev' of https://github.com/music-assistant/server into dev
Marcel van der Veldt [Sun, 21 Dec 2025 01:04:06 +0000 (02:04 +0100)]
fix tests