From 73bde2fc9e5e21fa42ed3d5b47ad33be58718b5e Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Sat, 2 Jun 2018 18:11:15 +0200 Subject: [PATCH] Version bump and changelog for 0.14 --- CHANGELOG | 204 ++++++++++++++++++++++++++++ api/funkwhale_api/__init__.py | 2 +- changes/changelog.d/106.bugfix | 1 - changes/changelog.d/164.enhancement | 2 - changes/changelog.d/179.bugfix | 1 - changes/changelog.d/207.bugfix | 1 - changes/changelog.d/213.bugfix | 9 -- changes/changelog.d/214.bugfix | 1 - changes/changelog.d/216.enhancement | 1 - changes/changelog.d/218.bugfix | 2 - changes/changelog.d/219.enhancement | 1 - changes/changelog.d/220.bugfix | 1 - changes/changelog.d/223.feature | 10 -- changes/changelog.d/224.enhancement | 30 ---- changes/changelog.d/225.bugfix | 1 - changes/changelog.d/226.bugfix | 1 - changes/changelog.d/227.bugfix | 1 - changes/changelog.d/228.feature | 3 - changes/changelog.d/229.bugfix | 1 - changes/changelog.d/230.enhancement | 22 --- changes/changelog.d/231.bugfix | 50 ------- changes/changelog.d/236.feature | 2 - changes/changelog.d/240.bugfix | 1 - changes/changelog.d/241.enhancement | 1 - changes/changelog.d/249.doc | 26 ---- changes/changelog.d/251.doc | 1 - changes/changelog.d/258.enhancement | 1 - changes/changelog.d/260.enhancement | 2 - changes/changelog.d/acoustid.misc | 1 - 29 files changed, 205 insertions(+), 175 deletions(-) delete mode 100644 changes/changelog.d/106.bugfix delete mode 100644 changes/changelog.d/164.enhancement delete mode 100644 changes/changelog.d/179.bugfix delete mode 100644 changes/changelog.d/207.bugfix delete mode 100644 changes/changelog.d/213.bugfix delete mode 100644 changes/changelog.d/214.bugfix delete mode 100644 changes/changelog.d/216.enhancement delete mode 100644 changes/changelog.d/218.bugfix delete mode 100644 changes/changelog.d/219.enhancement delete mode 100644 changes/changelog.d/220.bugfix delete mode 100644 changes/changelog.d/223.feature delete mode 100644 changes/changelog.d/224.enhancement delete mode 100644 changes/changelog.d/225.bugfix delete mode 100644 changes/changelog.d/226.bugfix delete mode 100644 changes/changelog.d/227.bugfix delete mode 100644 changes/changelog.d/228.feature delete mode 100644 changes/changelog.d/229.bugfix delete mode 100644 changes/changelog.d/230.enhancement delete mode 100644 changes/changelog.d/231.bugfix delete mode 100644 changes/changelog.d/236.feature delete mode 100644 changes/changelog.d/240.bugfix delete mode 100644 changes/changelog.d/241.enhancement delete mode 100644 changes/changelog.d/249.doc delete mode 100644 changes/changelog.d/251.doc delete mode 100644 changes/changelog.d/258.enhancement delete mode 100644 changes/changelog.d/260.enhancement delete mode 100644 changes/changelog.d/acoustid.misc diff --git a/CHANGELOG b/CHANGELOG index c5371448..283bcfcf 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -10,6 +10,210 @@ This changelog is viewable on the web at https://docs.funkwhale.audio/changelog. .. towncrier +0.14 (2018-06-02) +----------------- + +Upgrade instructions are available at + https://docs.funkwhale.audio/upgrading.html + +Features: + +- Admins can now configure default permissions that will be granted to all + registered users (#236) +- Files management interface for users with "library" permission (#223) +- New action table component for quick and efficient batch actions (#228) This + is implemented on the federated tracks pages, but will be included in other + pages as well depending on the feedback. + + +Enhancements: + +- Added a new "upload" permission that allows user to launch import and view + their own imports (#230) +- Added Support for OggTheora in import. +- Autoremove media files on model instance deletion (#241) +- Can now import a whole remote library at once thanks to new Action Table + component (#164) +- Can now use album covers from flac/mp3 metadata and separate file in track + directory (#219) +- Implemented getCovertArt in Subsonic API to serve album covers (#258) +- Implemented scrobble endpoint of subsonic API, listenings are now tracked + correctly from third party apps that use this endpoint (#260) +- Retructured music API to increase performance and remove useless endpoints + (#224) + + +Bugfixes: + +- Consistent constraints/checks for URL size (#207) +- Display proper total number of tracks on radio detail (#225) +- Do not crash on flac import if musicbrainz tags are missing (#214) +- Empty save button in radio builder (#226) +- Ensure anonymous users can use the app if the instance is configured + accordingly (#229) +- Ensure inactive users cannot get auth tokens (#218) This was already the case + bug we missed some checks +- File-upload import now supports Flac files (#213) +- File-upload importer should now work properly, assuming files are tagged + (#106) +- Fixed a few broken translations strings (#227) +- Fixed broken ordering in front-end lists (#179) +- Fixed ignored page_size paremeter on artist and favorites list (#240) +- Read ID3Tag Tracknumber from TRCK (#220) +- We now fetch album covers regardless of the import methods (#231) + +Documentation: + +- Added missing subsonic configuration block in deployment vhost files (#249) +- Moved upgrade doc under install doc in TOC (#251) + + +Other: + +- Removed acoustid support, as the integration was buggy and error-prone (#106) + + +Files management interface +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +This is the first bit of an ongoing work that will span several releases, to +bring more powerful library management features to Funkwhale. This iteration +includes a basic file management interface where users with the "library" +permission can list and search available files, order them using +various criterias (size, bitrate, duration...) and delete them. + +New "upload" permission +^^^^^^^^^^^^^^^^^^^^^^^ + +This new permission is helpful if you want to give upload/import rights +to some users, but don't want them to be able to manage the library as a whole: +although there are no controls yet for managing library in the fron-end, +subsequent release will introduce management interfaces for artists, files, +etc. + +Because of that, users with the "library" permission will have much more power, +and will also be able to remove content from the platform. On the other hand, +users with the "upload" permission will only have the ability to add new +content. + +Also, this release also includes a new feature called "default permissions": +those are permissions that are granted to every users on the platform. +On public/open instances, this will play well with the "upload" permission +since everyone will be able to contribute to the instance library without +an admin giving the permission to every single user. + +Smarter album cover importer +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In earlier versions, covers where only imported when launching a YouTube import. +Starting from this release, covers will be imported regardless of the import mode +(file upload, youtube-dl, CLI, in-place...). Funkwhale will look for covers +in the following order: + +1. In the imported file itself (FLAC/MP3 only) +2. In a cover.jpg or cover.png in the file directory +3. By fetching cover art from Musibrainz, assuming the file is tagged correctly + +This will only work for newly imported tracks and albums though. In the future, +we may offer an option to refetch album covers from the interface, but in the +meantime, you can use the following snippet: + +.. code-block:: python + + # Store this in /tmp/update_albums.py + from funkwhale_api.music.models import Album, TrackFile + from funkwhale_api.music.tasks import update_album_cover + + albums_without_covers = Album.objects.filter(cover='') + total = albums_without_covers.count() + print('Found {} albums without cover'.format(total)) + for i, album in enumerate(albums_without_covers.iterator()): + print('[{}/{}] Fetching cover for {}...'.format(i+1, total, album.title)) + f = TrackFile.objects.filter(track__album=album).filter(source__startswith='file://').first() + update_album_cover(album, track_file=f) + +Then launch it:: + + # docker setups + cat /tmp/update_albums.py | docker-compose run --rm api python manage.py shell -i python + + # non-docker setups + source /srv/funkwhale/load_env + source /srv/funkwhale/virtualenv/bin/activate + cat /tmp/update_albums.py | python manage.py shell -i python + + # cleanup + rm /tmp/update_albums.py + +.. note:: + + Depending on your number of albums, the previous snippet may take some time + to execute. You can interrupt it at any time using ctrl-c and relaunch it later, + as it's idempotent. + +Music API changes +^^^^^^^^^^^^^^^^^ + +This release includes an API break. Even though the API is advertised +as unstable, and not documented, here is a brief explanation of the change in +case you are using the API in a client or in a script. Summary of the changes: + +- ``/api/v1/artists`` does not includes a list of tracks anymore. It was to heavy + to return all of this data all the time. You can get all tracks for an + artist using ``/api/v1/tracks?artist=artist_id`` +- Additionally, ``/api/v1/tracks`` now support an ``album`` filter to filter + tracks matching an album +- ``/api/v1/artists/search``, ``/api/v1/albums/search`` and ``/api/v1/tracks/search`` + endpoints are removed. Use ``/api/v1/{artists|albums|tracks}/?q=yourquery`` + instead. It's also more powerful, since you can combine search with other + filters and ordering options. +- ``/api/v1/requests/import-requests/search`` endpoint is removed as well. + Use ``/api/v1/requests/import-requests/?q=yourquery`` + instead. It's also more powerful, since you can combine search with other + filters and ordering options. + +Of course, the front-end was updated to work with the new API, so this should +not impact end-users in any way, apart from slight performance gains. + +.. note:: + + The API is still not stable and may evolve again in the future. API freeze + will come at a later point. + +Flac files imports via upload +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +You have nothing to do to benefit from this, however, since Flac files +tend to be a lot bigger than other files, you may want to increase the +``client_max_body_size`` value in your Nginx configuration if you plan +to upload flac files. + +Missing subsonic configuration bloc in vhost files +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Because of a missing bloc in the sample Nginx and Apache configurations, +instances that were deployed after the 0.13 release are likely to be unable +to answer to Subsonic clients (the missing bits were properly documented +in the changelog). + +Ensure you have the following snippets in your Nginx or Apache configuration +if you plan to use the Subsonic API. + +Nginx:: + + location /rest/ { + include /etc/nginx/funkwhale_proxy.conf; + proxy_pass http://funkwhale-api/api/subsonic/rest/; + } + +Apache2:: + + <Location "/rest"> + ProxyPass ${funkwhale-api}/api/subsonic/rest + ProxyPassReverse ${funkwhale-api}/api/subsonic/rest + </Location> + + 0.13 (2018-05-19) ----------------- diff --git a/api/funkwhale_api/__init__.py b/api/funkwhale_api/__init__.py index b0d7cc51..0896aba8 100644 --- a/api/funkwhale_api/__init__.py +++ b/api/funkwhale_api/__init__.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- -__version__ = '0.13' +__version__ = '0.14' __version_info__ = tuple([int(num) if num.isdigit() else num for num in __version__.replace('-', '.', 1).split('.')]) diff --git a/changes/changelog.d/106.bugfix b/changes/changelog.d/106.bugfix deleted file mode 100644 index ff0f6160..00000000 --- a/changes/changelog.d/106.bugfix +++ /dev/null @@ -1 +0,0 @@ -File-upload importer should now work properly, assuming files are tagged (#106) diff --git a/changes/changelog.d/164.enhancement b/changes/changelog.d/164.enhancement deleted file mode 100644 index ceea6c2b..00000000 --- a/changes/changelog.d/164.enhancement +++ /dev/null @@ -1,2 +0,0 @@ -Can now import a whole remote library at once thanks to new Action Table -component (#164) diff --git a/changes/changelog.d/179.bugfix b/changes/changelog.d/179.bugfix deleted file mode 100644 index ac6c489e..00000000 --- a/changes/changelog.d/179.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fixed broken ordering in front-end lists (#179) diff --git a/changes/changelog.d/207.bugfix b/changes/changelog.d/207.bugfix deleted file mode 100644 index edab45cd..00000000 --- a/changes/changelog.d/207.bugfix +++ /dev/null @@ -1 +0,0 @@ -Consistent constraints/checks for URL size (#207) diff --git a/changes/changelog.d/213.bugfix b/changes/changelog.d/213.bugfix deleted file mode 100644 index d6ff593b..00000000 --- a/changes/changelog.d/213.bugfix +++ /dev/null @@ -1,9 +0,0 @@ -File-upload import now supports Flac files (#213) - -Flac files imports via upload -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -You have nothing to do to benefit from this, however, since Flac files -tend to be a lot bigger than other files, you may want to increase the -``client_max_body_size`` value in your Nginx configuration if you plan -to upload flac files. diff --git a/changes/changelog.d/214.bugfix b/changes/changelog.d/214.bugfix deleted file mode 100644 index f2f36c4a..00000000 --- a/changes/changelog.d/214.bugfix +++ /dev/null @@ -1 +0,0 @@ -Do not crash on flac import if musicbrainz tags are missing (#214) diff --git a/changes/changelog.d/216.enhancement b/changes/changelog.d/216.enhancement deleted file mode 100644 index 0ed9dec4..00000000 --- a/changes/changelog.d/216.enhancement +++ /dev/null @@ -1 +0,0 @@ -Added Support for OggTheora in import. diff --git a/changes/changelog.d/218.bugfix b/changes/changelog.d/218.bugfix deleted file mode 100644 index f754d7ca..00000000 --- a/changes/changelog.d/218.bugfix +++ /dev/null @@ -1,2 +0,0 @@ -Ensure inactive users cannot get auth tokens (#218) -This was already the case bug we missed some checks diff --git a/changes/changelog.d/219.enhancement b/changes/changelog.d/219.enhancement deleted file mode 100644 index fec9a07a..00000000 --- a/changes/changelog.d/219.enhancement +++ /dev/null @@ -1 +0,0 @@ -Can now use album covers from flac/mp3 metadata and separate file in track directory (#219) diff --git a/changes/changelog.d/220.bugfix b/changes/changelog.d/220.bugfix deleted file mode 100644 index 1913df1b..00000000 --- a/changes/changelog.d/220.bugfix +++ /dev/null @@ -1 +0,0 @@ -Read ID3Tag Tracknumber from TRCK (#220) diff --git a/changes/changelog.d/223.feature b/changes/changelog.d/223.feature deleted file mode 100644 index c2f104ba..00000000 --- a/changes/changelog.d/223.feature +++ /dev/null @@ -1,10 +0,0 @@ -Files management interface for users with "library" permission (#223) - -Files management interface -^^^^^^^^^^^^^^^^^^^^^^^^^^ - -This is the first bit of an ongoing work that will span several releases, to -bring more powerful library management features to Funkwhale. This iteration -includes a basic file management interface where users with the "library" -permission can list and search available files, order them using -various criterias (size, bitrate, duration...) and delete them. diff --git a/changes/changelog.d/224.enhancement b/changes/changelog.d/224.enhancement deleted file mode 100644 index 43c2e88c..00000000 --- a/changes/changelog.d/224.enhancement +++ /dev/null @@ -1,30 +0,0 @@ -Retructured music API to increase performance and remove useless endpoints (#224) - -Music API changes -^^^^^^^^^^^^^^^^^ - -This release includes an API break. Even though the API is advertised -as unstable, and not documented, here is a brief explanation of the change in -case you are using the API in a client or in a script. Summary of the changes: - -- ``/api/v1/artists`` does not includes a list of tracks anymore. It was to heavy - to return all of this data all the time. You can get all tracks for an - artist using ``/api/v1/tracks?artist=artist_id`` -- Additionally, ``/api/v1/tracks`` now support an ``album`` filter to filter - tracks matching an album -- ``/api/v1/artists/search``, ``/api/v1/albums/search`` and ``/api/v1/tracks/search`` - endpoints are removed. Use ``/api/v1/{artists|albums|tracks}/?q=yourquery`` - instead. It's also more powerful, since you can combine search with other - filters and ordering options. -- ``/api/v1/requests/import-requests/search`` endpoint is removed as well. - Use ``/api/v1/requests/import-requests/?q=yourquery`` - instead. It's also more powerful, since you can combine search with other - filters and ordering options. - -Of course, the front-end was updated to work with the new API, so this should -not impact end-users in any way, apart from slight performance gains. - -.. note:: - - The API is still not stable and may evolve again in the future. API freeze - will come at a later point. diff --git a/changes/changelog.d/225.bugfix b/changes/changelog.d/225.bugfix deleted file mode 100644 index d14c7b9a..00000000 --- a/changes/changelog.d/225.bugfix +++ /dev/null @@ -1 +0,0 @@ -Display proper total number of tracks on radio detail (#225) diff --git a/changes/changelog.d/226.bugfix b/changes/changelog.d/226.bugfix deleted file mode 100644 index 18d448c2..00000000 --- a/changes/changelog.d/226.bugfix +++ /dev/null @@ -1 +0,0 @@ -Empty save button in radio builder (#226) diff --git a/changes/changelog.d/227.bugfix b/changes/changelog.d/227.bugfix deleted file mode 100644 index 5e67d186..00000000 --- a/changes/changelog.d/227.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fixed a few broken translations strings (#227) diff --git a/changes/changelog.d/228.feature b/changes/changelog.d/228.feature deleted file mode 100644 index 548c1927..00000000 --- a/changes/changelog.d/228.feature +++ /dev/null @@ -1,3 +0,0 @@ -New action table component for quick and efficient batch actions (#228) -This is implemented on the federated tracks pages, but will be included -in other pages as well depending on the feedback. diff --git a/changes/changelog.d/229.bugfix b/changes/changelog.d/229.bugfix deleted file mode 100644 index 118ed6af..00000000 --- a/changes/changelog.d/229.bugfix +++ /dev/null @@ -1 +0,0 @@ -Ensure anonymous users can use the app if the instance is configured accordingly (#229) diff --git a/changes/changelog.d/230.enhancement b/changes/changelog.d/230.enhancement deleted file mode 100644 index 3d8c4176..00000000 --- a/changes/changelog.d/230.enhancement +++ /dev/null @@ -1,22 +0,0 @@ -Added a new "upload" permission that allows user to launch import and view -their own imports (#230) - -New "upload" permission -^^^^^^^^^^^^^^^^^^^^^^^ - -This new permission is helpful if you want to give upload/import rights -to some users, but don't want them to be able to manage the library as a whole: -although there are no controls yet for managing library in the fron-end, -subsequent release will introduce management interfaces for artists, files, -etc. - -Because of that, users with the "library" permission will have much more power, -and will also be able to remove content from the platform. On the other hand, -users with the "upload" permission will only have the ability to add new -content. - -Also, this release also includes a new feature called "default permissions": -those are permissions that are granted to every users on the platform. -On public/open instances, this will play well with the "upload" permission -since everyone will be able to contribute to the instance library without -an admin giving the permission to every single user. diff --git a/changes/changelog.d/231.bugfix b/changes/changelog.d/231.bugfix deleted file mode 100644 index 0b37b627..00000000 --- a/changes/changelog.d/231.bugfix +++ /dev/null @@ -1,50 +0,0 @@ -We now fetch album covers regardless of the import methods (#231) - -Smarter album cover importer -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -In earlier versions, covers where only imported when launching a YouTube import. -Starting from this release, covers will be imported regardless of the import mode -(file upload, youtube-dl, CLI, in-place...). Funkwhale will look for covers -in the following order: - -1. In the imported file itself (FLAC/MP3 only) -2. In a cover.jpg or cover.png in the file directory -3. By fetching cover art from Musibrainz, assuming the file is tagged correctly - -This will only work for newly imported tracks and albums though. In the future, -we may offer an option to refetch album covers from the interface, but in the -meantime, you can use the following snippet: - -.. code-block:: python - - # Store this in /tmp/update_albums.py - from funkwhale_api.music.models import Album, TrackFile - from funkwhale_api.music.tasks import update_album_cover - - albums_without_covers = Album.objects.filter(cover='') - total = albums_without_covers.count() - print('Found {} albums without cover'.format(total)) - for i, album in enumerate(albums_without_covers.iterator()): - print('[{}/{}] Fetching cover for {}...'.format(i+1, total, album.title)) - f = TrackFile.objects.filter(track__album=album).filter(source__startswith='file://').first() - update_album_cover(album, track_file=f) - -Then launch it:: - - # docker setups - cat /tmp/update_albums.py | docker-compose run --rm api python manage.py shell -i python - - # non-docker setups - source /srv/funkwhale/load_env - source /srv/funkwhale/virtualenv/bin/activate - cat /tmp/update_albums.py | python manage.py shell -i python - - # cleanup - rm /tmp/update_albums.py - -.. note:: - - Depending on your number of albums, the previous snippet may take some time - to execute. You can interrupt it at any time using ctrl-c and relaunch it later, - as it's idempotent. diff --git a/changes/changelog.d/236.feature b/changes/changelog.d/236.feature deleted file mode 100644 index 379f9648..00000000 --- a/changes/changelog.d/236.feature +++ /dev/null @@ -1,2 +0,0 @@ -Admins can now configure default permissions that will be granted to all -registered users (#236) diff --git a/changes/changelog.d/240.bugfix b/changes/changelog.d/240.bugfix deleted file mode 100644 index 69e8048b..00000000 --- a/changes/changelog.d/240.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fixed ignored page_size paremeter on artist and favorites list (#240) diff --git a/changes/changelog.d/241.enhancement b/changes/changelog.d/241.enhancement deleted file mode 100644 index 00c84c49..00000000 --- a/changes/changelog.d/241.enhancement +++ /dev/null @@ -1 +0,0 @@ -Autoremove media files on model instance deletion (#241) diff --git a/changes/changelog.d/249.doc b/changes/changelog.d/249.doc deleted file mode 100644 index df0fbb7d..00000000 --- a/changes/changelog.d/249.doc +++ /dev/null @@ -1,26 +0,0 @@ -Added missing subsonic configuration block in deployment vhost files (#249) - -Missing subsonic configuration bloc in vhost files -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Because of a missing bloc in the sample Nginx and Apache configurations, -instances that were deployed after the 0.13 release are likely to be unable -to answer to Subsonic clients (the missing bits were properly documented -in the changelog). - -Ensure you have the following snippets in your Nginx or Apache configuration -if you plan to use the Subsonic API. - -Nginx:: - - location /rest/ { - include /etc/nginx/funkwhale_proxy.conf; - proxy_pass http://funkwhale-api/api/subsonic/rest/; - } - -Apache2:: - - <Location "/rest"> - ProxyPass ${funkwhale-api}/api/subsonic/rest - ProxyPassReverse ${funkwhale-api}/api/subsonic/rest - </Location> diff --git a/changes/changelog.d/251.doc b/changes/changelog.d/251.doc deleted file mode 100644 index d54b1137..00000000 --- a/changes/changelog.d/251.doc +++ /dev/null @@ -1 +0,0 @@ -Moved upgrade doc under install doc in TOC (#251) diff --git a/changes/changelog.d/258.enhancement b/changes/changelog.d/258.enhancement deleted file mode 100644 index 28f05c01..00000000 --- a/changes/changelog.d/258.enhancement +++ /dev/null @@ -1 +0,0 @@ -Implemented getCovertArt in Subsonic API to serve album covers (#258) \ No newline at end of file diff --git a/changes/changelog.d/260.enhancement b/changes/changelog.d/260.enhancement deleted file mode 100644 index 8d650347..00000000 --- a/changes/changelog.d/260.enhancement +++ /dev/null @@ -1,2 +0,0 @@ -Implemented scrobble endpoint of subsonic API, listenings are now tracked -correctly from third party apps that use this endpoint (#260) diff --git a/changes/changelog.d/acoustid.misc b/changes/changelog.d/acoustid.misc deleted file mode 100644 index 7fc34feb..00000000 --- a/changes/changelog.d/acoustid.misc +++ /dev/null @@ -1 +0,0 @@ -Removed acoustid support, as the integration was buggy and error-prone (#106) -- GitLab