2.10.0 NIGHTLY 2026072403
Pre-release
Pre-release
📦 Nightly Release
Changes since 2.10.0.dev2026072304
🚀 Features and enhancements
- Load Discover recommendation rows on demand and improve Recently Played (by @chrisuthe in #4487)
- Cast dashboards to display devices (by @MarvinSchenkel in #4887)
- Make max_concurrent_tasks configurable (by @kiwipaulrob in #4914)
- Add announcement support for ESPHome-based Sendspin players (by @marcelveldt in #4916)
- Prevent importing Home Assistant players that are natively supported (by @marcelveldt in #4917)
- Keep player settings when a universal player is replaced by a native player (by @marcelveldt in #4921)
- Smart fades: stop stranding the listener in silence on energy-drop transitions (by @MarvinSchenkel in #4926)
- Remote access: migrate WebRTC backend to libdatachannel (aiolibdatachannel) (by @MarvinSchenkel in #4930)
- Add start_from_beginning option for podcast playback (by @chrisuthe in #4934)
- Instant AirPlay seek, next-track and resume (by @marcelveldt in #4939)
- Start AirPlay groups after all players are ready (by @marcelveldt in #4942)
- Recommendations follow-ups: unload cleanup and Mood/Activity mix subtitles (by @marcelveldt in #4946)
- Support commanded AirPlay starts (by @marcelveldt in #4949)
- Keep all AirPlay groups connected while paused (by @marcelveldt in #4951)
- Add setup flow engine for interactive provider and player setup (by @marcelveldt in #4952)
- Improve grouped AirPlay pause fallback (by @marcelveldt in #4953)
🐛 Bugfixes
- Fix flow mode not switching sample rate between tracks on wrapped players (by @MarvinSchenkel in #4685)
- Fix AirPlay Receiver losing audio after quick reconnects (by @MarvinSchenkel in #4785)
- Fix squeezelite power control (by @allmazz in #4829)
- Send progress metadata on Sendspin playback-state transitions (by @chrisuthe in #4876)
- Upgrade SiriusXM stream artwork URLs to https (by @OzGav in #4891)
- Recover Sendspin bridge clients stuck in a stale disabled state (by @OzGav in #4899)
- Fix ffmpeg stderr log flood on corrupted/malformed audio streams (by @chrisuthe in #4908)
- Raise API throttler to measured safe rate (by @jozefKruszynski in #4923)
- Fix spontaneous pairing prompts on Apple TVs (by @marcelveldt in #4927)
- Fix player settings being ignored when audio plays via a linked protocol (by @marcelveldt in #4928)
- Keep settings and group memberships when universal players merge or get replaced (by @marcelveldt in #4929)
- Clean up leftover universal player settings after a native player takes over (by @marcelveldt in #4931)
- Fix ghost players created by the server's own AirPlay receivers (by @marcelveldt in #4935)
- Release the active output protocol when a wrapped player's session ends (by @marcelveldt in #4937)
- Fix controls for bridged AirPlay groups (by @marcelveldt in #4950)
- Stop recurring Apple TV pairing prompts from control-channel flapping (by @marcelveldt in #4954)
- Setup flow callback: keep params as plain strings (by @marcelveldt in #4955)
- Drop the AirPlay --ptp-follow clock-follow path (by @marcelveldt in #4956)
- Keep AirPlay warm playback reliable (by @marcelveldt in #4957)
- AirPlay companion control follow-ups (by @marcelveldt in #4959)
- Preserve AirPlay cleanup cancellation (by @marcelveldt in #4960)
🎨 Frontend Changes
- Refactor recommendations to be lazy loaded (by @chrisuthe in #2141)
- Cast party & now-playing dashboards to display devices (by @MarvinSchenkel in #2176)
- Skeleton placeholders for loading and hidden Discover rows (by @marcelveldt in #2182)
- Party: return in-library tracks when a guest drills into an artist (by @MarvinSchenkel in #2181)
- Remove output limiter from audio chain details (by @OzGav in #2177)
- Remote access: reassemble chunked HTTP-proxy responses (by @MarvinSchenkel in #2183)
Other Changes
- Make remote-access ma-api bridge tests deterministic (no real WebRTC handshake) (by @MarvinSchenkel in #4938)
🧰 Maintenance and dependency bumps
13 changes
- Add descriptive error body to imageproxy 400 rejections (by @OzGav in #4897)
- AirPlay: use one clock identity for multi-room timing (by @marcelveldt in #4915)
- Remove unused get_device_by_connection from Home Assistant provider (by @marcelveldt in #4920)
- ⬆️ Update music-assistant-models to 1.1.168 (by @music-assistant-machine in #4924)
- Update airplay-cli to v0.2.0 (by @music-assistant-machine in #4925)
- ⬆️ Update music-assistant-frontend to 2.17.231 (by @music-assistant-machine in #4932)
- Move base image to Debian trixie (by @marcelveldt in #4933)
- Bump docker/login-action from 4.4.0 to 4.5.0 (by @dependabot[bot] in #4936)
- Update airplay-cli to v0.3.0 (by @music-assistant-machine in #4941)
- ⬆️ Update music-assistant-models to 1.1.169 (by @music-assistant-machine in #4943)
- Update airplay-cli to v0.3.1 (by @music-assistant-machine in #4945)
- Restore provider method ordering (by @marcelveldt in #4948)
- ⬆️ Update music-assistant-frontend to 2.17.232 (by @music-assistant-machine in #4958)
🙇 Thanks to our contributors
Special thanks to the following contributors who helped with this release:
@MarvinSchenkel, @OzGav, @allmazz, @chrisuthe, @jozefKruszynski, @kiwipaulrob, @marcelveldt