Mopiqtt 2.0.0
This is the biggest update since the initial release, focusing on reliability, compatibility, and long-term maintainability.
✨ Highlights
- Full compatibility with Mopidy 3.4.x and Mopidy 4.0.x
- Official support for Python 3.13+
- Non-destructive playlist and stream loading
- Improved MQTT error handling and runtime robustness
- Modernized packaging and build configuration
- Comprehensive GitHub Actions CI
🚀 What's New
Compatibility
- Added compatibility with Mopidy 4 while maintaining support for Mopidy 3.
- Official support for Python 3.13+.
- Modernized packaging with PEP 517/518 support via
pyproject.toml.
Reliability
- Playlist (
pload,ploadshfl) and stream (pstream) commands now validate content before replacing the current queue. - The existing queue is preserved if playlist or stream loading fails.
- Improved handling of asynchronous Mopidy
Futureobjects. - MQTT connection failures are now reported instead of being silently ignored.
- MQTT callbacks are resilient to unexpected exceptions.
Playback and Metadata
- Improved handling of
SearchResult. - More robust artwork fallback.
- Better handling of incomplete track metadata.
- Correct handling when track indexes are unavailable.
Testing and Continuous Integration
- Expanded unit test coverage.
- Added automated GitHub Actions workflows covering:
- Mopidy 3.4 + Python 3.13
- Mopidy 4.0 + Python 3.13
- Mopidy 4.0 + Python 3.14
- Automatic execution of:
pytestruffcompileallpy_compile
📦 Upgrade Notes
- The MQTT protocol and topics remain fully backward compatible.
- Users running Mopidy 3 should keep Setuptools < 82, since newer versions removed
pkg_resources, which Mopidy 3 still imports. - New installations are encouraged to use Mopidy 4.
🛣️ Roadmap
Support for Mopidy 3 will continue throughout the 2.x series.
A future major release is expected to require Mopidy 4 and simplify the compatibility layer.
Thanks to everyone who reported issues, tested new features, and helped improve Mopiqtt!