Skip to content
Switch branches/tags
Go to file
Cannot retrieve contributors at this time


This changelog is used to track all major changes to Mopidy.

For older releases, see :ref:`history`.

v3.2.0 (2021-07-08)

v3.1.1 (2020-12-26)

  • Fix crash when extracting tags using gst-python >= 1.18. (PR: :issue:`1948`)

v3.1.0 (2020-12-16)

  • Add Python 3.9 to our test matrix.
  • Add :meth:`mopidy.backend.PlaybackProvider.should_download` which can be implemented by playback providers that want to use GStreamer's download buffering strategy for their URIs. (PR: :issue:`1888`)
  • Audio: Fix memory leak when converting GStreamer sample type tags. (Fixes: :issue:`1827`, PR: :issue:`1929`)
  • Turn off strict parsing of *.pls playlist files. This was a regression that happened during the migration to Python 3. (PR: :issue:`1923`)
  • Make the systemd unit that ships with Mopidy wait for an Internet connection before starting Mopidy. When used by distribution packages, this can help avoid that extensions try to connect to cloud services before the machine's Internet connection is ready for use. (PR: :issue:`1946`)

v3.0.2 (2020-04-02)

Bugfix release.

v3.0.1 (2019-12-22)

Bugfix release.

v3.0.0 (2019-12-22)

The long-awaited Mopidy 3.0 is finally here, just in time for the Mopidy project's 10th anniversary on December 23rd!

Mopidy 3.0 is a backward-incompatible release in a pretty significant way: Mopidy no longer runs on Python 2.

Mopidy 3.0 requires Python 3.7 or newer.

While extensions have been able to continue working without changes throughout the 1.x and 2.x series of Mopidy, this time is different:

  • All extensions must be updated to work on Python 3.7 and newer.
  • Some extensions need to replace their use of a few long-deprecated APIs that we've removed. See below for details.
  • Extension maintainers are also encouraged to update their project's setup to match our refreshed extension cookiecutter.

In parallel with the development of Mopidy 3.0, we've coordinated with a few extension maintainers and upgraded almost 20 of the most popular extensions. These will all be published shortly after the release of Mopidy 3.0.

We've also built a new extension registry, where you can quickly track what extensions are ready for Python 3.

In other news, the Mopidy-MPD and Mopidy-Local extensions have grown up and moved out to flourish as independent extension projects. After the move, Mopidy-Local merged with Mopidy-Local-SQLite and Mopidy-Local-Images, which are now both a part of the Mopidy-Local extension.


  • Python >= 3.7 is now required. Python 2.7 is no longer supported.
  • GStreamer >= 1.14.0 is now required.
  • Pykka >= 2.0.1 is now required.
  • Tornado >= 4.4 is now required. The upper boundary (< 6) has been removed.
  • We now use a number of constants and functions from GLib instead of their deprecated equivalents in GObject. The exact version of PyGObject and GLib that makes these constants and functions available in the new location is not known, but is believed to have been released in 2015 or earlier.


Core API

  • Removed properties, methods, and arguments that have been deprecated since 1.0, released in 2015. Everything removed already has a replacement, that should be used instead. See below for a full list of removals and replacements. (Fixes: :issue:`1083`, :issue:`1461`, PR: :issue:`1768`, :issue:`1769`)

Root object

Library controller

Playback controller

Playlist controller

Tracklist controller

Backend API


Extension support

HTTP frontend

  • Stop bundling Mopidy.js and serving it at /mopidy/mopidy.js and /mopidy/mopidy.min.js. All Mopidy web clients must use Mopidy.js from npm or vendor their own copy of the library. (Fixes: :issue:`1083`, :issue:`1460`, PR: :issue:`1708`)
  • Remove support for serving arbitrary files over HTTP through the use of :confval:`http/static_dir`, which has been deprecated since 1.0. (Fixes: :issue:`1463`, PR: :issue:`1706`)
  • Add option :confval:`http/default_app` to redirect from web server root to a specific app instead of Mopidy's web app list. (PR: :issue:`1791`)
  • Add cookie secret to Tornado web server, allowing Tornado request handlers to call get_secure_cookie(), in an implementation of get_current_user(). (PR: :issue:`1801`)

MPD frontend

  • The Mopidy-MPD frontend is no longer bundled with Mopidy, and has been moved to its own Git repo and PyPI project.

Local backend