Files
sublime-music/CHANGELOG.rst
2020-10-15 00:16:05 -06:00

588 lines
20 KiB
ReStructuredText

v0.11.11-devel
==============
**Infrastructure**
* Convert entirely over to ``poetry`` from ``setuptools`` for building.
* Add a custom check to ensure that the version in ``pyproject.toml`` matches
with the other instances of the version.
v0.11.10
========
* Added the ability to use Salt Authentication. Thanks to @acompagno for the
contribution!
* Fixed issue where the Flatpak couldn't respond to media keys due to a DBus
name mismatch.
* Fixed bug where song titles were escaped incorrectly in the album songs view.
Thanks to @edwargix for the contribution!
**Infrastructure**
* Added a ``shell.nix`` file
* Use the built-in Nix shell handling in direnv for making the development
environment more deterministic.
* The Flatpak is saved on as an asset on each sourcehut build.
v0.11.9
=======
**The wait is over!** Thanks to help from jlanda_, the **Flatpak** is back! The
Flatpak requires ``org.gnome.SDK//3.38`` and ``org.gnome.Platform//3.38`` to be
installed on your system.
.. _jlanda: https://gitlab.com/jlanda
**Bug Fixes**
* Fixed regressions with Chromecast playback.
**Infrastructure**
* Switched from Pipenv to Poetry because Poetry is so much faster.
* Added a ``.envrc`` file for direnv users.
* Started migrating from GitLab to sr.ht due to usability regressions in GitLab.
* **Package name change:** The package name is now ``sublime_music`` instead of
``sublime``.
v0.11.8
=======
**Bug Fixes**
* Fixed regression where you couldn't delete playlists.
* Added loading indicator to the play queue when using the load play queue
button. (#130)
v0.11.7
=======
**Bug Fixes**
* Fixed issue where songs in the playlist list would stay selected even after
their downloads were deleted when in Offline Mode. (#221)
* Fixed issue where the playlist image would continually load if the playlist
refresh failed.
**Distro Packages**
* Sublime Music is now in Debian Testing:
https://packages.debian.org/bullseye/sublime-music
* Sublime Music is in NixOS Unstable:
https://nixos.org/nixos/packages.html?attr=sublime-music&channel=nixpkgs-unstable&query=sublime-music
(thanks to @albakham)
* Package maintainers now have the option to move the following directories to
``/usr/share/sublime-music``: ``adapters/icons``, ``adapters/images``,
``adapters/subsonic/icons``, ``dbus/mpris_specs/``, ``ui/icons/``, and
``ui/images/``. Sublime Music will look first in the directory where the
``sublime/__init__.py`` file is installed for those files, and then fall back
to ``/usr/share/sublime-music`` for finding those files. (#179)
v0.11.6
=======
**Bug Fixes**
* Fixes more bugs with search not working in certain situations. (#253)
v0.11.5
=======
**Bug Fixes**
* Fixes more bugs with search not working in certain situations. (#253)
v0.11.4
=======
Improved the way that the version is retrieved for building the documentation to
make it easier to package for the AUR.
v0.11.2
=======
**Bug Fixes**
* Fixes bug where search didn't work in certain situations. (#253)
* Fixed bug when you deleted a song and then re-downloaded it.
* Fixed issue where all of the next N songs started downloading at once instead
of one at a time when prefetching songs for the play queue.
* Improved performance of the searching for songs in the playlist list. (#28)
v0.11.1
=======
**Feature Improvements**
* Albums are sorted by year on the Artists detail view. (Contributed by
@sentriz.)
* If the server doesn't support it, the Load Play Queue button on the Play Queue
popup is now hidden. (#203)
* If the server doesn't support them, the "by year" and "by genre" sort options
on the Albums tab are disabled. (#203)
* The app ID has been changed from ``com.sumnerevans.SublimeMusic`` to
``app.sublimemusic.SublimeMusic``. (#170)
* Better errors are shown on the Configure Provider dialog when there are SSL
errors connecting to the Subsonic server. (#236)
* Playlists are prefetched on server connect to avoid lots of cache miss errors
on the DBus diffing.
**Bug Fixes**
* Fixed issue where users couldn't log in to LMS due to Sublime Music always
sending version number "1.15.0" instead of figuring out what version of the
API the server actually reports.
* Fixed issue where edits to the music provider configurations were applied even
if ESC was pressed. (#247)
* Fixed issue where pressing next/previous would start playing even if the
player was paused. (#131)
* Fixed issue where using DBUS to go next/previous ignored when no song was
playing. (#185)
**Under the Hood**
* Improved the API for getting song URIs from the adapters.
v0.11.0
=======
.. TODO in next release:
.. * A man page has been added. Contributed by @baldurmen.
.. note::
This version does not have a Flatpak due to issues getting Python 3.8 working
within the Flatpak environment. See `Issue #218
<https://gitlab.com/sumner/sublime-music/-/issues/218_>`_
**New Website:** Sublime Music has a website! https://sublimemusic.app
**Distro Packages**
* Sublime Music is now available in Debian Unstable, and hopefully soon in
Debian Testing.
* *For package maintainers:*
The following dependencies were added:
* ``semver``
The following dependencies were removed:
* ``pyyaml``
The following dependencies are now optional:
* ``pychromecast``
* ``bottle``
**Feature Improvements**
* Player settings now get applied immediately, rather than after restarting
Sublime Music.
* Getting the list of Chromecasts for the Device popup now happens much faster.
**Bug Fixes**
* Loading the play queue from the server is now more reliable and works properly
with Gonic. (Contributed by @sentriz.)
* *Fixed Regression*: The load play queue button in the play queue popup works
again.
* Caching behavior has been greatly improved.
* The Subsonic adapter disables saving and loading the play queue if the server
doesn't implement the Subsonic API v1.12.0.
**Under the Hood**
* The API for players has been greatly improved and is now actually documented
which will enable more player types in the future. Additionally, a Player
Manager has been put in between the core logic of the app and the player logic
which will help facilitate easier API transitions in the future.
v0.10.3
=======
This is a hotfix release. I forgot to add the Subsonic logo resources to
``setup.py``. All of the interesting updates happened in `v0.10.2`_.
.. _v0.10.2: https://gitlab.com/sublime-music/sublime-music/-/releases/v0.10.2
v0.10.2
=======
.. note::
This version does not have a Flatpak due to issues getting Python 3.8 working
within the Flatpak environment. See `Issue #218
<https://gitlab.com/sublime-music/sublime-music/-/issues/218_>`_
.. warning::
This version is not compatible with any previous versions. If you have run a
previous version of Sublime Music, please delete your cache (likely in
``~/.local/share/sublime-music``) and your existing configuration (likely in
``~/.config/sublime-music``) and re-run Sublime Music to restart the
configuration process.
Features
--------
**Improvements to configuring Music Sources**
* The mechanism for adding new *Music Sources* (the *Server* nomenclature has)
been dropped in favor of the more generic *Music Source*) has been totally
revamped. It now is a multi-stage dialog that will (in the future) allow you
to connect to more than just Subsonic-compatible servers.
* The configuration form for Subsonic is no longer just a massive list of
options. Instead, there is an "Advanced Settings" section that is collapsed by
default.
* The configuration dialog automatically checks if you can connect to the server
and shows you any errors which means there is no need to click "Test
Connection to Server" any more!
* Adding and removing music sources is now done directly in the server popup
(see below for details).
**Offline Mode**
* You can enable *Offline Mode* from the server menu.
* Features that require network access are disabled in offline mode.
* You can still browse anything that is already cached offline.
**Albums Tab Improvements**
* The Albums tab is now paginated with configurable page sizes.
* You can sort the Albums tab ascending or descending.
* Opening an closing an album on the Albums tab now has a nice animation and the
album details panel is visually inset.
* The "Go to Album" functionality from the context menu is much more reliable.
* The album results can now be served from the cache much more often meaning
less latency when trying to load albums (this is a byproduct of the Offline
Mode work).
**Player Controls**
* The amount of the song that is cached is now shown while streaming a song.
* The notification for resuming a play queue is now a non-modal notification
that pops up right above the player controls.
**New Icons**
* The Devices button now uses the Chromecast logo. It uses a different icon
depending on whether or not you are playing on a Chromecast.
* Custom icons for "Add to play queue", and "Play next" buttons. Thanks to
`@samsartor`_ for contributing the SVGs!
* A new icon for indicating the connection state to the Subsonic server.
Contributed by `@samsartor`_.
* A new icon for that data wasn't able to be loaded due to being offline.
Contributed by `@samsartor`_.
.. _@samsartor: https://gitlab.com/samsartor
**Application Menus**
* **Settings**
* Settings are now in the popup under the gear icon rather than in a separate
popup window.
* **Downloads**
* A new Downloads popup shows the currently downloading songs.
* You can now cancel song downloads and retry failed downloads.
* You can now clear the cache (either the entire cache or just the song files)
via options in the Downloads popup.
* **Server**
* A new Server popup shows the connection state to the server in both the icon
and the popup.
* You can enable *Offline Mode* from this menu.
* You can edit the current music source's configuration, switch to a different
music source, or add a whole new music source via this menu.
**Other Features**
* You can now collapse the Artist details and the Playlist details so that you
have more room to view the actual content.
Under The Hood
--------------
This release has a ton of under-the-hood changes to make things more robust
and performant.
* The cache is now stored in a SQLite database.
* The cache and configuration no longer get corrupted when Sublime Music fails
to write to disk due to errors.
* A generic `Adapter API`_ has been created which means that Sublime Music is no
longer reliant on Subsonic. This means that in the future, more backends can
be added.
.. _Adapter API: https://sublime-music.gitlab.io/sublime-music/adapter-api.html
v0.9.2
======
* **Flatpak support is back!** After resolving a build error that's been
plaguing us since **v0.8.9**, we once again have a Flatpak build!
The Flatpak now also exports a ``.desktop`` file and an AppStream manifest
file.
* The ``keyring`` dependency is now optional.
* The ``.desktop`` file doesn't hard-code the exec path anymore.
v0.9.1
======
* **macOS Support Alpha:** support for macOS is now in alpha. There is very
little documentation, and quite a few hacks, but core functionality works.
* Sublime Music is more resilient to certain libraries or functionalities not
existing on the system. (Namely libnotify, NetworkManager, and DBus)
* Sublime Music now prompts you to confirm you actually want to delete the
playlist. (#81)
* Playlist and Artist info now scroll with the rest of the content which makes
Sublime Music usable on smaller screens. (#152)
* Worked with deluan_ to support the Navidrome_ server.
* **Bug Fixes**
* Sublime Music no longer explodes when you say "don't save password" in your
keyring notification popup.
* The ``NM`` library is used instead of the deprecated ``NetworkManager`` and
``NMClient``. (Contributed by @anarcat.)
* Sublime Music will crash less often due to missing dependencies.
* Fixed some bugs where the state of the application wouldn't update when you
deleted/downloaded songs from certain parts of the application.
.. _deluan: https://www.deluan.com/
.. _Navidrome: https://www.navidrome.org/
v0.9.0
======
This is the first ``v0.9.*`` release. I've decided to bump the minor version,
since this is the first release where I feel that all core functionality works.
All of the releases in the ``v0.9.*`` series will build towards the ``v1.0.0``
release.
* New logo that isn't total garbage. By mountdesign_ on Fiverr_. (#110)
* Cover art for a given album is now only stored once at high resolution and
scaled whenever used.
* The shuffle and repeat buttons are now toggle buttons, and no longer rely on
the icon theme to provide context as to whether they are activated or not.
(#125)
* Added support for Replay Gain option which is available from the Application
Settings dialog. (#137)
* All of the buttons that are only icons now have tooltips describing what they
do.
* **Bug Fixes**
* The year inputs on the Albums tab no longer allow for non-numeric inputs,
and are generally way less janky. (#123)
* When dealing with track covers, the ``song.coverArt`` property is used
instead of the ``song.id``. (Contributed by @sentriz.)
* The Albums tab no longer loads infinitely when there are more than 500
albums in the results. (Contributed by @sentriz.)
* The Albums tab doesn't flicker every single time an ``update`` is called
from the top level. (#114)
* Fixed issue with setting the title of the "Edit/Add Server" dialog.
* **Infrastructure**
* Enabled a bunch of flake8 linter extensions including:
* Enforcing using type hints on all function declarations.
* Enforcing no ``print`` statements via flake8 instead of my janky script.
* Enforcing no use of ``%`` style string formatting.
These changes resulted in a *lot* of code cleanup.
.. _mountdesign: https://www.fiverr.com/mountdesign
.. _Fiverr: https://www.fiverr.com
v0.8.13
=======
**Hotfix Release**: the previous release had a few major bugs which are
show-stoppers. This release fixes them.
* **Bug Fixes**
* Fixed issue where Browse didn't work the first time you opened the app to
that tab.
* Fixed issue where refresh didn't work on the Artists tab.
* Fixed issue displaying with incorrectly sized cover art in the player
controls.
* **Infrastructure**
* All TODOs in the code must now have corresponding issues.
v0.8.12
=======
:Milestone: Beta 3
* When album cover art is not provided by the server, a default album art image
is used (Contributed by @sentriz.)
* **New Setting**: *Serve locally cached files over the LAN to Chromecast
devices*: If checked, a local server will be started on your computer which
will serve your locally cached music files to the Chromecast. If not checked,
the Chromecast will always stream from the server.
* When serving local files, the internal server now only exposes one song at a
time via a token and the song's token is randomized.
* The *Sync enabled* setting was renamed to *Play queue sync enabled*.
* **Bug Fixes**
* Fixed issue where the UI was still in a "Playing" state after removing all
songs from the play queue.
* Fixed a multitude of problems where the wrong data would load if you quickly
move around between cached and un-cached information.
* When you use the Google Home app to cause the device that Sublime is using
to "Stop Casting", Sublime now shows as paused.
* The Chromecast device list are only requested after the first time you click
on the Devices button.
* Seeking now works with the mouse and keyboard.
* **Documentation**
* Updated the CONTRIBUTING document to the current state of the Sublime Music
codebase.
* Added documentation for all of the settings available in Sublime Music.
* **Infrastructure**
* Fixed logo build step.
* Moved ``player`` module to root instead of being under ``ui.common``.
v0.8.11
=======
* Added a logo. It's pretty bad, but it's something.
* Added a ``.desktop`` file for the app.
* Standardized the way that command line parameters are handled to use Python's
``argparse`` instead of the GTK argument parsing.
* **Infrastructure**
* Added build step for logo at various different sizes.
v0.8.10
=======
* Converted to use use ``logging`` instead of ``print`` statements. Log file and
level configurable using the ``-l|--logfile`` and ``-m|--loglevel``
parameters.
* Added busy-wait on Chromecast retrieval when already getting Chromecasts.
* **Bug Fix:** Sublime Music no longer crashes when selecting a server for the
first time.
* **Documentation**
* Added automated documentation of the ``sublime`` Python module using Sphinx
and automated parameter documentation using ``sphinx-autodoc-typehints``.
* Started documenting more of the classes including type hints.
* Added some screenshots.
* **Infrastructure**
* Auto-deploy of documentation to GitLab Pages:
https://sublime-music.gitlab.io/sublime-music.
* Code coverage report now available for latest ``master`` at
https://sublime-music.gitlab.io/sublime-music/htmlcov.
* Lint step also disallows ``print()`` statements in code.
v0.8.9
======
**Note:** this release does not have Flatpak support due to a dependency issue
that I haven't been able to crack. Please install from PyPi or the AUR. (If you
are a Flatpak expert, I would greatly appreciate help fixing the issue. See
#79.)
* Global Search
* Search for and go to Songs, Artists, Albums, and Playlists.
* Works online and offline (when online, the search results from the server
are included).
* Uses a fuzzy matching algorithm for ranking results.
* Browse by filesystem structure via the "Browse" tab.
* Passwords are now stored in the system keyring rather than in plain text.
**Note:** You will have to re-enter your password in the *Configure Servers*
dialog to make Sublime Music successfully connect to your server again.
* The play queue now behaves properly when there are many instances of the same
song in the play queue.
* The play queue can now be reordered, and songs can be added and removed from
it. Right click also works on the play queue.
* The Local Network SSID and Local Network Address settings now actually work.
It only checks the SSID on startup or new server connect for now.
* ``CacheManager`` now returns RAM results immediately instead of using a
future. This means it returns data faster to the UI if it's already cached.
* **Bug Fixes:**
* Pressing ESC on the Playlist edit dialog no longer deletes the playlist.
* DBus functions no longer block on `CacheManager` results which was causing
long startup times.
* **Infrastructure**:
* Added a ``Pipfile`` and made the CI/CD build use it for testing.
* Upgraded the Flatpak dependencies on ``org.gnome.Platform`` and
``org.gnome.Sdk`` to ``3.34`` which allows us to have much faster Flatpak
build times.
* Added ``mypy`` tests to the build process.
v0.8.8
======
* Removed the ``gobject`` dependency from ``setup.py`` which hopefully fixes the
issue with AUR installs.
* Don't scrobble songs until 5 seconds into the song.
* Added "Play All" and "Shuffle All" to the Artists view.
* Don't load the device list every single time the Devices button is pressed.
* Indicator for the currently active device in the Devices list.
* **Bug Fixes:**
* Fixed a few of the icons.
v0.8.7
======
* **Flatpak support!** Everything works with Flatpak now, and the Flatpak is
configured to use the local ``XDG`` directories.
* Switch between multiple Subsonic API compliant servers.
* Fixed a few of the icons to make them use the ``-symbolic`` version.
* Infrastructure:
* Automatically cut a release when a ``v*`` tag is present. (This creates a
PyPi release and a new release in the Releases tab.)
* Protected the ``v*`` tag so that only maintainers can deploy releases.
v0.8.6
======
* Pre-beta release
* First release to be released to the AUR
* Everything is more or less working. Most of the main user flows are fully
supported.
* Browse songs using Album, Artist, and Playlist views.
* Connect to a Subsonic API compliant server.
* Play music through Chromecasts on the same LAN.
* DBus MPRIS interface integration for controlling Sublime Music via
``playerctl``, ``i3status-rust``, KDE Connect, and other DBus MPRIS clients.
* Play queue.
* Create/delete/edit Playlists.
* Cache songs for offline listening.