Version bump and changelog for 0.14
This commit is contained in:
parent
87edc6ee38
commit
73bde2fc9e
204
CHANGELOG
204
CHANGELOG
|
@ -10,6 +10,210 @@ This changelog is viewable on the web at https://docs.funkwhale.audio/changelog.
|
||||||
|
|
||||||
.. towncrier
|
.. 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)
|
0.13 (2018-05-19)
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- 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('.')])
|
__version_info__ = tuple([int(num) if num.isdigit() else num for num in __version__.replace('-', '.', 1).split('.')])
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
File-upload importer should now work properly, assuming files are tagged (#106)
|
|
|
@ -1,2 +0,0 @@
|
||||||
Can now import a whole remote library at once thanks to new Action Table
|
|
||||||
component (#164)
|
|
|
@ -1 +0,0 @@
|
||||||
Fixed broken ordering in front-end lists (#179)
|
|
|
@ -1 +0,0 @@
|
||||||
Consistent constraints/checks for URL size (#207)
|
|
|
@ -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.
|
|
|
@ -1 +0,0 @@
|
||||||
Do not crash on flac import if musicbrainz tags are missing (#214)
|
|
|
@ -1 +0,0 @@
|
||||||
Added Support for OggTheora in import.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Ensure inactive users cannot get auth tokens (#218)
|
|
||||||
This was already the case bug we missed some checks
|
|
|
@ -1 +0,0 @@
|
||||||
Can now use album covers from flac/mp3 metadata and separate file in track directory (#219)
|
|
|
@ -1 +0,0 @@
|
||||||
Read ID3Tag Tracknumber from TRCK (#220)
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -1 +0,0 @@
|
||||||
Display proper total number of tracks on radio detail (#225)
|
|
|
@ -1 +0,0 @@
|
||||||
Empty save button in radio builder (#226)
|
|
|
@ -1 +0,0 @@
|
||||||
Fixed a few broken translations strings (#227)
|
|
|
@ -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.
|
|
|
@ -1 +0,0 @@
|
||||||
Ensure anonymous users can use the app if the instance is configured accordingly (#229)
|
|
|
@ -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.
|
|
|
@ -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.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Admins can now configure default permissions that will be granted to all
|
|
||||||
registered users (#236)
|
|
|
@ -1 +0,0 @@
|
||||||
Fixed ignored page_size paremeter on artist and favorites list (#240)
|
|
|
@ -1 +0,0 @@
|
||||||
Autoremove media files on model instance deletion (#241)
|
|
|
@ -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>
|
|
|
@ -1 +0,0 @@
|
||||||
Moved upgrade doc under install doc in TOC (#251)
|
|
|
@ -1 +0,0 @@
|
||||||
Implemented getCovertArt in Subsonic API to serve album covers (#258)
|
|
|
@ -1,2 +0,0 @@
|
||||||
Implemented scrobble endpoint of subsonic API, listenings are now tracked
|
|
||||||
correctly from third party apps that use this endpoint (#260)
|
|
|
@ -1 +0,0 @@
|
||||||
Removed acoustid support, as the integration was buggy and error-prone (#106)
|
|
Loading…
Reference in New Issue