diff --git a/docs/changelog.rst b/docs/changelog.rst index 27b634bf..1c5f5332 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -7,21 +7,52 @@ This changelog is used to track all major changes to Mopidy. v1.1.0 (UNRELEASED) =================== +Mopidy 1.1 is here! + +Since the release of 1.0, we've closed or merged approximately 55 issues and +pull requests through about 400 commits by a record high 20 extraordinary +people, including 14 newcomers. That's less issues and commits than in the 1.0 +release, but even more contributors, and a doubling of the number of newcomers. +Thanks to :ref:`everyone ` who has :ref:`contributed `! + +As we promised with the release of Mopidy 1.0, any extension working with +Mopidy 1.0 should continue working with all Mopidy 1.x releases. However, this +release brings a lot stronger enforcement of our documented APIs. If an +extension doesn't use the APIs properly, it may no longer work. The advantage +of this change is that Mopidy is now more robust against errors in extensions, +and also provides vastly better error messages when extensions misbehave. This +should make it easier to create quality extensions. + +The major features of Mopidy 1.1 are: + +- Validation of the arguments to all core API methods, as well as all responses + from backends and all data model attributes. + +- New bundled backend, Mopidy-File. It is similar to Mopidy-Local, but allows + you to browse and play music from local disk without running a scan to index + the music first. The drawback is that it doesn't support searching. + +- The Mopidy-MPD server should now be up to date with the 0.19 version of the + MPD protocol. + Dependencies ------------ - Mopidy now requires Requests. +- Heads up: Porting from GStreamer 0.10 to 1.x and support for running Mopidy + with Python 3.4+ is not far off on our roadmap. + Core API -------- -- Calling the following methods with ``kwargs`` is being deprecated. - (PR: :issue:`1090`) +- **Deprecated:** Calling the following methods with ``kwargs`` is being + deprecated. (PR: :issue:`1090`) - - :meth:`mopidy.core.library.LibraryController.search` - - :meth:`mopidy.core.library.PlaylistsController.filter` - - :meth:`mopidy.core.library.TracklistController.filter` - - :meth:`mopidy.core.library.TracklistController.remove` + - :meth:`mopidy.core.LibraryController.search` + - :meth:`mopidy.core.PlaylistsController.filter` + - :meth:`mopidy.core.TracklistController.filter` + - :meth:`mopidy.core.TracklistController.remove` - Updated core controllers to handle backend exceptions in all calls that rely on multiple backends. (Issue: :issue:`667`) @@ -33,13 +64,13 @@ Core API ``tl_track`` versions of the calls. (Fixes: :issue:`1131` PR: :issue:`1136`, :issue:`1140`) -- Add :meth:`mopidy.core.playback.PlaybackController.get_current_tlid`. +- Add :meth:`mopidy.core.PlaybackController.get_current_tlid`. (Part of: :issue:`1137`) - Update core to handle backend crashes and bad data. (Fixes: :issue:`1161`) -- Add `max_tracklist_length` config and limitation. (Fixes: :issue:`997` - PR: :issue:`1225`) +- Add :confval:`core/max_tracklist_length` config and limitation. (Fixes: + :issue:`997` PR: :issue:`1225`) - Added ``playlist_deleted`` event. (Fixes: :issue:`996`) @@ -52,7 +83,7 @@ Models - Memory usage for models has been greatly improved. We now have a lower overhead per instance by using slots, intern identifiers and automatically reuse instances. For the test data set this was developed against, a library - of ~14000 tracks, went from needing ~75MB to ~17MB. (Fixes: :issue:`348`) + of ~14.000 tracks, went from needing ~75MB to ~17MB. (Fixes: :issue:`348`) - Added :attr:`mopidy.models.Artist.sortname` field that is mapped to ``musicbrainz-sortname`` tag. (Fixes: :issue:`940`) @@ -68,7 +99,7 @@ Extension support ----------------- - Add new methods to :class:`~mopidy.ext.Extension` class for getting cache, - config and data dirs specific to your extension: + config and data directories specific to your extension: - :meth:`mopidy.ext.Extension.get_cache_dir` - :meth:`mopidy.ext.Extension.get_config_dir` @@ -78,6 +109,58 @@ Extension support both when Mopidy is run by a regular user and when run as a system service. (Fixes: :issue:`843`, PR: :issue:`1232`) +- Add :func:`mopidy.httpclient.format_proxy` and + :func:`mopidy.httpclient.format_user_agent`. (Part of: :issue:`1156`) + +- It is now possible to import :mod:`mopidy.backends` without having GObject or + GStreamer installed. In other words, a lot of backend extensions should now + be able to run tests in a virtualenv with global site-packages disabled. This + removes a lot of potential error sources. (Fixes: :issue:`1068`, PR: + :issue:`1115`) + +Local backend +------------- + +- Filter out :class:`None` from + :meth:`~mopidy.backend.LibraryProvider.get_distinct` results. All returned + results should be strings. (Fixes: :issue:`1202`) + +Stream backend +-------------- + +- Move stream playlist parsing from GStreamer to the stream backend. (Fixes: + :issue:`671`) + +File backend +------------ + +The :ref:`Mopidy-File ` backend is a new bundled backend. It is +similar to Mopidy-Local since it works with local files, but it differs in a +few key ways: + +- Mopidy-File lets you browse your media files by their file hierarchy. + +- It supports multiple media directories, all exposed under the "Files" + directory when you browse your library with e.g. an MPD client. + +- There is no index of the media files, like the JSON or SQLite files used by + Mopidy-Local. Thus no need to scan the music collection before starting + Mopidy. Everything is read from the file system when needed and changes to + the file system is thus immediately visible in Mopidy clients. + +- Because there is no index, there is no support for search. + +Our long term plan is to keep this very simple file backend in Mopidy, as it +has a well defined and limited scope, while splitting the more feature rich +Mopidy-Local extension out to an independent project. (Fixes: :issue:`1004`, +PR: :issue:`1207`) + +M3U backend +----------- + +- Support loading UTF-8 encoded M3U files with the ``.m3u8`` file extension. + (PR: :issue:`1193`) + MPD frontend ------------ @@ -120,74 +203,19 @@ MPD frontend outputting track data to clients. (PR: :issue:`1230`) - The MPD commands ``lsinfo`` and ``listplaylists`` are now implemented using - the :meth:`~mopidy.core.PlaylistsProvider.as_list` method, which retrieves a - lot less data and is thus much faster than the deprecated - :meth:`~mopidy.core.PlaylistsProvider.get_playlists`. The drawback is that + the :meth:`~mopidy.core.PlaylistsController.as_list` method, which retrieves + a lot less data and is thus much faster than the deprecated + :meth:`~mopidy.core.PlaylistsController.get_playlists`. The drawback is that the ``Last-Modified`` timestamp is not available through this method, and the timestamps in the MPD command responses are now always set to the current time. -Stream backend --------------- - -- Move stream playlist parsing from GStreamer to the stream backend. (Fixes: - :issue:`671`) - -Local backend -------------- - -- Filter out :class:`None` from - :meth:`~mopidy.backend.LibraryProvider.get_distinct` results. All returned - results should be strings. (Fixes: :issue:`1202`) - -File backend ------------- - -The :ref:`Mopidy-File ` backend is a new bundled backend. It is -similar to Mopidy-Local since it works with local files, but it differs in a -few key ways: - -- Mopidy-File lets you browse your media files by their file hierarchy. - -- It supports multiple media directories, all exposed under the "Files" - directory when you browse your library with e.g. an MPD client. - -- There is no index of the media files, like the JSON or SQLite files used by - Mopidy-Local. Thus no need to scan the music collection before starting - Mopidy. Everything is read from the file system when needed and changes to - the file system is thus immediately visible in Mopidy clients. - -- Because there is no index, there is no support for search. - -Our long term plan is to keep this very simple file backend in Mopidy, as it -has a well defined and limited scope, while splitting the more feature rich -Mopidy-Local extension out to an independent project. (Fixes: :issue:`1004`, -PR: :issue:`1207`) - -M3U backend ------------ - -- Support loading UTF-8 encoded M3U files with the ``.m3u8`` file extension. - (PR: :issue:`1193`) - -Utils ------ - -- Add :func:`mopidy.httpclient.format_proxy` and - :func:`mopidy.httpclient.format_user_agent`. (Part of: :issue:`1156`) - Internal changes ---------------- - Tests have been cleaned up to stop using deprecated APIs where feasible. (Partial fix: :issue:`1083`, PR: :issue:`1090`) -- It is now possible to import :mod:`mopidy.backends` without having GObject or - GStreamer installed. In other words, a lot of backend extensions should now - be able to run tests in a virtualenv with global site-packages disabled. This - removes a lot of potential error sources. (Fixes: :issue:`1068`, PR: - :issue:`1115`) - v1.0.8 (2015-07-22) ===================