kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
972 wiersze
30 KiB
Plaintext
972 wiersze
30 KiB
Plaintext
Changelog
|
||
=========
|
||
|
||
You can subscribe to release announcements by:
|
||
|
||
- Following `funkwhale@mastodon.eliotberriot.com <https://mastodon.eliotberriot.com/@funkwhale>`_ on Mastodon
|
||
- Subscribing to the following Atom feed: https://code.eliotberriot.com/funkwhale/funkwhale/commits/develop?format=atom&search=tag
|
||
|
||
This changelog is viewable on the web at https://docs.funkwhale.audio/changelog.html.
|
||
|
||
.. towncrier
|
||
|
||
0.13 (2018-05-19)
|
||
-----------------
|
||
|
||
Upgrade instructions are available at
|
||
https://docs.funkwhale.audio/upgrading.html
|
||
|
||
Features:
|
||
|
||
- Can now import and play flac files (#157)
|
||
- Simpler permission system (#152)
|
||
- Store file length, size and bitrate (#195)
|
||
- We now have a brand new instance settings interface in the front-end (#206)
|
||
|
||
|
||
Enhancements:
|
||
|
||
- Disabled browsable HTML API in production (#205)
|
||
- Instances can now indicate on the nodeinfo endpoint if they want to remain
|
||
private (#200)
|
||
|
||
|
||
Bugfixes:
|
||
|
||
- .well-known/nodeinfo endpoint can now answer to request with Accept:
|
||
application/json (#197)
|
||
- Fixed escaping issue of track name in playlist modal (#201)
|
||
- Fixed missing dot when downloading file (#204)
|
||
- In-place imported tracks with non-ascii characters don't break reverse-proxy
|
||
serving (#196)
|
||
- Removed Python 3.6 dependency (secrets module) (#198)
|
||
- Uplayable tracks are now properly disabled in the interface (#199)
|
||
|
||
|
||
Instance settings interface
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Prior to this release, the only way to update instance settings (such as
|
||
instance description, signup policy, federation configuration, etc.) was using
|
||
the admin interface provided by Django (the back-end framework which power the API).
|
||
|
||
This interface worked, but was not really-user friendly and intuitive.
|
||
|
||
Starting from this release, we now offer a dedicated interface directly
|
||
in the front-end. You can view and edit all your instance settings from here,
|
||
assuming you have the required permissions.
|
||
|
||
This interface is available at ``/manage/settings` and via link in the sidebar.
|
||
|
||
|
||
Storage of bitrate, size and length in database
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Starting with this release, when importing files, Funkwhale will store
|
||
additional information about audio files:
|
||
|
||
- Bitrate
|
||
- Size (in bytes)
|
||
- Duration
|
||
|
||
This change is not retroactive, meaning already imported files will lack those
|
||
informations. The interface and API should work as before in such case, however,
|
||
we offer a command to deal with legacy files and populate the missing values.
|
||
|
||
On docker setups:
|
||
|
||
.. code-block:: shell
|
||
|
||
docker-compose run --rm api python manage.py fix_track_files
|
||
|
||
|
||
On non-docker setups:
|
||
|
||
.. code-block:: shell
|
||
|
||
# from your activated virtualenv
|
||
python manage.py fix_track_files
|
||
|
||
.. note::
|
||
|
||
The execution time for this command is proportional to the number of
|
||
audio files stored on your instance. This is because we need to read the
|
||
files from disk to fetch the data. You can run it in the background
|
||
while Funkwhale is up.
|
||
|
||
It's also safe to interrupt this command and rerun it at a later point, or run
|
||
it multiple times.
|
||
|
||
Use the --dry-run flag to check how many files would be impacted.
|
||
|
||
|
||
Simpler permission system
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Starting from this release, the permission system is much simpler. Up until now,
|
||
we were using Django's built-in permission system, which was working, but also
|
||
quite complex to deal with.
|
||
|
||
The new implementation relies on simpler logic, which will make integration
|
||
on the front-end in upcoming releases faster and easier.
|
||
|
||
If you have manually given permissions to users on your instance,
|
||
you can migrate those to the new system.
|
||
|
||
On docker setups:
|
||
|
||
.. code-block:: shell
|
||
|
||
docker-compose run --rm api python manage.py script django_permissions_to_user_permissions --no-input
|
||
|
||
On non-docker setups:
|
||
|
||
.. code-block:: shell
|
||
|
||
# in your virtualenv
|
||
python api/manage.py script django_permissions_to_user_permissions --no-input
|
||
|
||
There is still no dedicated interface to manage user permissions, but you
|
||
can use the admin interface at ``/api/admin/users/user/`` for that purpose in
|
||
the meantime.
|
||
|
||
|
||
0.12 (2018-05-09)
|
||
-----------------
|
||
|
||
Upgrade instructions are available at
|
||
https://docs.funkwhale.audio/upgrading.html
|
||
|
||
Features:
|
||
|
||
- Subsonic API implementation to offer compatibility with existing clients such
|
||
as DSub (#75)
|
||
- Use nodeinfo standard for publishing instance information (#192)
|
||
|
||
|
||
Enhancements:
|
||
|
||
- Play button now play tracks immediately instead of appending them to the
|
||
queue (#99, #156)
|
||
|
||
|
||
Bugfixes:
|
||
|
||
- Fix broken federated import (#193)
|
||
|
||
|
||
Documentation:
|
||
|
||
- Up-to-date documentation for upgrading front-end files on docker setup (#132)
|
||
|
||
|
||
Subsonic API
|
||
^^^^^^^^^^^^
|
||
|
||
This release implements some core parts of the Subsonic API, which is widely
|
||
deployed in various projects and supported by numerous clients.
|
||
|
||
By offering this API in Funkwhale, we make it possible to access the instance
|
||
library and listen to the music without from existing Subsonic clients, and
|
||
without developping our own alternative clients for each and every platform.
|
||
|
||
Most advanced Subsonic clients support offline caching of music files,
|
||
playlist management and search, which makes them well-suited for nomadic use.
|
||
|
||
Please head over :doc:`users/apps` for more informations about supported clients
|
||
and user instructions.
|
||
|
||
At the instance-level, the Subsonic API is enabled by default, but require
|
||
and additional endpoint to be added in you reverse-proxy configuration.
|
||
|
||
On nginx, add the following block::
|
||
|
||
location /rest/ {
|
||
include /etc/nginx/funkwhale_proxy.conf;
|
||
proxy_pass http://funkwhale-api/api/subsonic/rest/;
|
||
}
|
||
|
||
On Apache, add the following block::
|
||
|
||
<Location "/rest">
|
||
ProxyPass ${funkwhale-api}/api/subsonic/rest
|
||
ProxyPassReverse ${funkwhale-api}/api/subsonic/rest
|
||
</Location>
|
||
|
||
The Subsonic can be disabled at the instance level from the django admin.
|
||
|
||
.. note::
|
||
|
||
Because of Subsonic's API design which assumes cleartext storing of
|
||
user passwords, we chose to have a dedicated, separate password
|
||
for that purpose. Users can generate this password from their
|
||
settings page in the web client.
|
||
|
||
|
||
Nodeinfo standard for instance information and stats
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. warning::
|
||
|
||
The ``/api/v1/instance/stats/`` endpoint which was used to display
|
||
instance data in the about page is removed in favor of the new
|
||
``/api/v1/instance/nodeinfo/2.0/`` endpoint.
|
||
|
||
In earlier version, we where using a custom endpoint and format for
|
||
our instance information and statistics. While this was working,
|
||
this was not compatible with anything else on the fediverse.
|
||
|
||
We now offer a nodeinfo 2.0 endpoint which provides, in a single place,
|
||
all the instance information such as library and user activity statistics,
|
||
public instance settings (description, registration and federation status, etc.).
|
||
|
||
We offer two settings to manage nodeinfo in your Funkwhale instance:
|
||
|
||
1. One setting to completely disable nodeinfo, but this is not recommended
|
||
as the exposed data may be needed to make some parts of the front-end
|
||
work (especially the about page).
|
||
2. One setting to disable only usage and library statistics in the nodeinfo
|
||
endpoint. This is useful if you want the nodeinfo endpoint to work,
|
||
but don't feel comfortable sharing aggregated statistics about your library
|
||
and user activity.
|
||
|
||
To make your instance fully compatible with the nodeinfo protocol, you need to
|
||
to edit your nginx configuration file::
|
||
|
||
# before
|
||
...
|
||
location /.well-known/webfinger {
|
||
include /etc/nginx/funkwhale_proxy.conf;
|
||
proxy_pass http://funkwhale-api/.well-known/webfinger;
|
||
}
|
||
...
|
||
|
||
# after
|
||
...
|
||
location /.well-known/ {
|
||
include /etc/nginx/funkwhale_proxy.conf;
|
||
proxy_pass http://funkwhale-api/.well-known/;
|
||
}
|
||
...
|
||
|
||
You can do the same if you use apache::
|
||
|
||
# before
|
||
...
|
||
<Location "/.well-known/webfinger">
|
||
ProxyPass ${funkwhale-api}/.well-known/webfinger
|
||
ProxyPassReverse ${funkwhale-api}/.well-known/webfinger
|
||
</Location>
|
||
...
|
||
|
||
# after
|
||
...
|
||
<Location "/.well-known/">
|
||
ProxyPass ${funkwhale-api}/.well-known/
|
||
ProxyPassReverse ${funkwhale-api}/.well-known/
|
||
</Location>
|
||
...
|
||
|
||
This will ensure all well-known endpoints are proxied to funkwhale, and
|
||
not just webfinger one.
|
||
|
||
Links:
|
||
|
||
- About nodeinfo: https://github.com/jhass/nodeinfo
|
||
|
||
|
||
0.11 (2018-05-06)
|
||
-----------------
|
||
|
||
Upgrade instructions are available at https://docs.funkwhale.audio/upgrading.html
|
||
|
||
Special thanks for this release go to @renon:matrix.org (@Hazmo on Gitlab)
|
||
for bringing Apache2 support to Funkwhale and contributing on other issues.
|
||
Thank you!
|
||
|
||
Features:
|
||
|
||
- Funkwhale now works behind an Apache2 reverse proxy (!165)
|
||
check out the brand new documentation at https://docs.funkwhale.audio/installation/index.html#apache2
|
||
if you want to try it!
|
||
- Users can now request password reset by email, assuming a SMTP server was
|
||
correctly configured (#187)
|
||
|
||
Enhancements:
|
||
|
||
- Added a fix_track_files command to run checks and fixes against library
|
||
(#183)
|
||
- Avoid fetching Actor object on every request authentication
|
||
- Can now relaunch errored jobs and batches (#176)
|
||
- List pending requests by default, added a status filter for requests (#109)
|
||
- More structured menus in sidebar, added labels with notifications
|
||
- Sample virtual-host file for Apache2 reverse-proxy (!165)
|
||
- Store high-level settings (such as federation or auth-related ones) in
|
||
database (#186)
|
||
|
||
|
||
Bugfixes:
|
||
|
||
- Ensure in place imported files get a proper mimetype (#183)
|
||
- Federation cache suppression is now simpler and also deletes orphaned files
|
||
(#189)
|
||
- Fixed small UI glitches/bugs in federation tabs (#184)
|
||
- X-sendfile not working with in place import (#182)
|
||
|
||
|
||
Documentation:
|
||
|
||
- Added a documentation area for third-party projects (#180)
|
||
- Added documentation for optimizing Funkwhale and reduce its memory footprint.
|
||
- Document that the database should use an utf-8 encoding (#185)
|
||
- Foundations for API documentation with Swagger (#178)
|
||
|
||
|
||
Database storage for high-level settings
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Due to the work done in #186, the following environment variables have been
|
||
deprecated:
|
||
|
||
- FEDERATION_ENABLED
|
||
- FEDERATION_COLLECTION_PAGE_SIZE
|
||
- FEDERATION_MUSIC_NEEDS_APPROVAL
|
||
- FEDERATION_ACTOR_FETCH_DELAY
|
||
- PLAYLISTS_MAX_TRACKS
|
||
- API_AUTHENTICATION_REQUIRED
|
||
|
||
Configuration for this settings has been moved to database, as it will provide
|
||
a better user-experience, by allowing you to edit these values on-the-fly,
|
||
without restarting Funkwhale processes.
|
||
|
||
You can leave those environment variables in your .env file for now, as the
|
||
values will be used to populate the database entries. We'll make a proper
|
||
announcement when the variables won't be used anymore.
|
||
|
||
Please browse https://docs.funkwhale.audio/configuration.html#instance-settings
|
||
for more information about instance configuration using the web interface.
|
||
|
||
|
||
System emails
|
||
^^^^^^^^^^^^^
|
||
|
||
Starting from this release, Funkwhale will send two types
|
||
of emails:
|
||
|
||
- Email confirmation emails, to ensure a user's email is valid
|
||
- Password reset emails, enabling user to reset their password without an admin's intervention
|
||
|
||
Email sending is disabled by default, as it requires additional configuration.
|
||
In this mode, emails are simply outputed on stdout.
|
||
|
||
If you want to actually send those emails to your users, you should edit your
|
||
.env file and tweak the EMAIL_CONFIG variable. See :ref:`setting-EMAIL_CONFIG`
|
||
for more details.
|
||
|
||
.. note::
|
||
|
||
As a result of these changes, the DJANGO_EMAIL_BACKEND variable,
|
||
which was not documented, has no effect anymore. You can safely remove it from
|
||
your .env file if it is set.
|
||
|
||
|
||
Proxy headers for non-docker deployments
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
For non-docker deployments, add ``--proxy-headers`` at the end of the ``daphne``
|
||
command in :file:`/etc/systemd/system/funkwhale-server.service`.
|
||
|
||
This will ensure the application receive the correct IP address from the client
|
||
and not the proxy's one.
|
||
|
||
|
||
0.10 (2018-04-23)
|
||
-----------------
|
||
|
||
Features:
|
||
|
||
- Can now import files in-place from the CLI importer (#155)
|
||
|
||
|
||
Enhancements:
|
||
|
||
- Avoid downloading audio files multiple times from remote libraries (#163)
|
||
- Better file import performance and error handling (#144)
|
||
- Import job and batch API and front-end have been improved with better
|
||
performance, pagination and additional filters (#171)
|
||
- Increased max_length on TrackFile.source, this will help when importing files
|
||
with a really long path (#142)
|
||
- Player is back in Queue tab (#150)
|
||
|
||
|
||
Bugfixes:
|
||
|
||
- Fail graciously when AP representation includes a null_value for mediaType
|
||
- Fix sidebar tabs not showing under small resolution under Chrome (#173)
|
||
- Fixed broken login due to badly configured Axios (#172)
|
||
- Fixed broken playlist modal after login (#155)
|
||
- Fixed queue reorder or track deletion restarting currently playing track
|
||
(#151)
|
||
- Radio will now append new track if you delete the last track in queue (#145)
|
||
- Reset all sensitive front-end data on logout (#124)
|
||
- Typos/not showing text due to i18n work (#175)
|
||
|
||
|
||
Documentation:
|
||
|
||
- Better documentation for hardware requirements and memory usage (#165)
|
||
|
||
|
||
In-place import
|
||
^^^^^^^^^^^^^^^
|
||
|
||
This release includes in-place imports for the CLI import. This means you can
|
||
load gigabytes of music into funkwhale without worrying about about Funkwhale
|
||
copying those music files in its internal storage and eating your disk space.
|
||
|
||
`This new feature is documented here <https://docs.funkwhale.audio/importing-music.html#in-place-import>`_
|
||
and require additional configuration to ensure funkwhale and your webserver can
|
||
serve those files properly.
|
||
|
||
**Non-docker users:**
|
||
|
||
Assuming your music is stored in ``/srv/funkwhale/data/music``, add the following
|
||
block to your nginx configuration::
|
||
|
||
location /_protected/music {
|
||
internal;
|
||
alias /srv/funkwhale/data/music;
|
||
}
|
||
|
||
And the following to your .env file::
|
||
|
||
MUSIC_DIRECTORY_PATH=/srv/funkwhale/data/music
|
||
|
||
**Docker users:**
|
||
|
||
Assuming your music is stored in ``/srv/funkwhale/data/music``, add the following
|
||
block to your nginx configuration::
|
||
|
||
location /_protected/music {
|
||
internal;
|
||
alias /srv/funkwhale/data/music;
|
||
}
|
||
|
||
Assuming you have the following volume directive in your ``docker-compose.yml``
|
||
(it's the default): ``/srv/funkwhale/data/music:/music:ro``, then add
|
||
the following to your .env file::
|
||
|
||
# this is the path in the container
|
||
MUSIC_DIRECTORY_PATH=/music
|
||
# this is the path on the host
|
||
MUSIC_DIRECTORY_SERVE_PATH=/srv/funkwhale/data/music
|
||
|
||
|
||
0.9.1 (2018-04-17)
|
||
------------------
|
||
|
||
Bugfixes:
|
||
|
||
- Allow null values for musicbrainz_id in Audio ActivityPub representation
|
||
- Fixed broken permission check on library scanning and too aggressive page
|
||
validation
|
||
|
||
|
||
0.9 (2018-04-17)
|
||
----------------
|
||
|
||
Features:
|
||
|
||
- Add internationalization support (#5)
|
||
- Can now follow and import music from remote libraries (#136, #137)
|
||
|
||
|
||
Enhancements:
|
||
|
||
- Added a i18n-extract yarn script to extract strings to PO files (#162)
|
||
- User admin now includes signup and last login dates (#148)
|
||
- We now use a proper user agent including instance version and url during
|
||
outgoing requests
|
||
|
||
|
||
Federation is here!
|
||
^^^^^^^^^^^^^^^^^^^
|
||
|
||
This is for real this time, and includes:
|
||
|
||
- Following other Funkwhale libraries
|
||
- Importing tracks from remote libraries (tracks are hotlinked, and only cached for a short amount of time)
|
||
- Searching accross federated catalogs
|
||
|
||
Note that by default, federation is opt-in, on a per-instance basis:
|
||
instances will request access to your catalog, and you can accept or refuse
|
||
those requests. You can also revoke the access at any time.
|
||
|
||
Documentation was updated with relevant instructions to use and benefit
|
||
from this new feature: https://docs.funkwhale.audio/federation.html
|
||
|
||
Preparing internationalization
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Funkwhale's front-end as always been english-only, and this is a barrier
|
||
to new users. The work make Funkwhale's interface translatable was started
|
||
in this release by Baptiste. Although nothing is translated yet,
|
||
this release includes behind the stage changes that will make it possible in
|
||
the near future.
|
||
|
||
Many thank to Baptiste for the hard work and for figuring out a proper solution
|
||
to this difficult problem.
|
||
|
||
Upgrade path
|
||
^^^^^^^^^^^^
|
||
|
||
In addition to the usual instructions from
|
||
https://docs.funkwhale.audio/upgrading.html, non-docker users will have
|
||
to setup an additional systemd unit file for recurrent tasks.
|
||
|
||
This was forgotten in the deployment documentation, but recurrent tasks,
|
||
managed by the celery beat process, will be needed more and more in subsequent
|
||
releases. Right now, we'll be using to clear the cache for federated music files
|
||
and keep disk usage to a minimum.
|
||
|
||
In the future, they will also be needed to refetch music metadata or federated
|
||
information periodically.
|
||
|
||
Celery beat can be enabled easily::
|
||
|
||
curl -L -o "/etc/systemd/system/funkwhale-beat.service" "https://code.eliotberriot.com/funkwhale/funkwhale/raw/develop/deploy/funkwhale-beat.service"
|
||
# Also edit /etc/systemd/system/funkwhale.target
|
||
# and ensure the Wants= line contains the following:
|
||
# Wants=funkwhale-server.service funkwhale-worker.service funkwhale-beat.service
|
||
nano /etc/systemd/system/funkwhale.target
|
||
# reload configuration
|
||
systemctl daemon-reload
|
||
|
||
Docker users already have celerybeat enabled.
|
||
|
||
|
||
0.8 (2018-04-02)
|
||
----------------
|
||
|
||
Features:
|
||
|
||
- Add a detail page for radios (#64)
|
||
- Implemented page title binding (#1)
|
||
- Previous Track button restart playback after 3 seconds (#146)
|
||
|
||
|
||
Enhancements:
|
||
|
||
- Added credits to Francis Gading for the logotype (#101)
|
||
- API endpoint for fetching instance activity and updated timeline to use this
|
||
new endpoint (#141)
|
||
- Better error messages in case of missing environment variables (#140)
|
||
- Implemented a @test@yourfunkwhaledomain bot to ensure federation works
|
||
properly. Send it "/ping" and it will answer back :)
|
||
- Queue shuffle now apply only to tracks after the current one (#97)
|
||
- Removed player from queue tab and consistently show current track in queue
|
||
(#131)
|
||
- We now restrict some usernames from being used during signup (#139)
|
||
|
||
|
||
Bugfixes:
|
||
|
||
- Better error handling during file import (#120)
|
||
- Better handling of utf-8 filenames during file import (#138)
|
||
- Converted favicon from .ico to .png (#130)
|
||
- Upgraded to Python 3.6 to fix weird but harmless weakref error on django task
|
||
(#121)
|
||
|
||
|
||
Documentation:
|
||
|
||
- Documented the upgrade process (#127)
|
||
|
||
|
||
Preparing for federation
|
||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Federation of music libraries is one of the most asked feature.
|
||
While there is still a lot of work to do, this version includes
|
||
the foundation that will enable funkwhale servers to communicate
|
||
between each others, and with other federated software, such as
|
||
Mastodon.
|
||
|
||
Funkwhale will use ActivityPub as it's federation protocol.
|
||
|
||
In order to prepare for federation (see #136 and #137), new API endpoints
|
||
have been added under /federation and /.well-known/webfinger.
|
||
|
||
For these endpoints to work, you will need to update your nginx configuration,
|
||
and add the following snippets::
|
||
|
||
location /federation/ {
|
||
include /etc/nginx/funkwhale_proxy.conf;
|
||
proxy_pass http://funkwhale-api/federation/;
|
||
}
|
||
|
||
location /.well-known/webfinger {
|
||
include /etc/nginx/funkwhale_proxy.conf;
|
||
proxy_pass http://funkwhale-api/.well-known/webfinger;
|
||
}
|
||
|
||
This will ensure federation endpoints will be reachable in the future.
|
||
You can of course skip this part if you know you will not federate your instance.
|
||
|
||
A new ``FEDERATION_ENABLED`` env var have also been added to control whether
|
||
federation is enabled or not on the application side. This settings defaults
|
||
to True, which should have no consequences at the moment, since actual
|
||
federation is not implemented and the only available endpoints are for
|
||
testing purposes.
|
||
|
||
Add ``FEDERATION_ENABLED=false`` to your .env file to disable federation
|
||
on the application side.
|
||
|
||
To test and troubleshoot federation, we've added a bot account. This bot is available at @test@yourinstancedomain,
|
||
and sending it "/ping", for example, via Mastodon, should trigger
|
||
a response.
|
||
|
||
|
||
|
||
0.7 (2018-03-21)
|
||
----------------
|
||
|
||
Features:
|
||
|
||
- Can now filter artists and albums with no listenable tracks (#114)
|
||
- Improve the style of the sidebar to make it easier to understand which tab is
|
||
selected (#118)
|
||
- On artist page, albums are not sorted by release date, if any (#116)
|
||
- Playlists are here \o/ :tada: (#3, #93, #94)
|
||
- Use django-cacheops to cache common ORM requests (#117)
|
||
|
||
|
||
Bugfixes:
|
||
|
||
- Fixed broken import request admin (#115)
|
||
- Fixed forced redirection to login event with
|
||
API_AUTHENTICATION_REQUIRED=False (#119)
|
||
- Fixed position not being reseted properly when playing the same track
|
||
multiple times in a row
|
||
- Fixed synchronized start/stop radio buttons for all custom radios (#103)
|
||
- Fixed typo and missing icon on homepage (#96)
|
||
|
||
|
||
Documentation:
|
||
|
||
- Up-to-date and complete development and contribution instructions in
|
||
README.rst (#123)
|
||
|
||
|
||
0.6.1 (2018-03-06)
|
||
------------------
|
||
|
||
Features:
|
||
|
||
- Can now skip acoustid on file import with the --no-acoustid flag (#111)
|
||
|
||
|
||
Bugfixes:
|
||
|
||
- Added missing batch id in output during import (#112)
|
||
- Added some feedback on the play button (#100)
|
||
- Smarter pagination which takes a fixed size (#84)
|
||
|
||
|
||
Other:
|
||
|
||
- Completely removed django-cachalot from the codebase (#110). You can safely
|
||
remove the CACHALOT_ENABLED setting from your .env file
|
||
|
||
|
||
0.6 (2018-03-04)
|
||
----------------
|
||
|
||
Features:
|
||
|
||
- Basic activity stream for listening and favorites (#23)
|
||
- Switched to django-channels and daphne for serving HTTP and websocket (#34)
|
||
|
||
Upgrades notes
|
||
**************
|
||
|
||
This version contains breaking changes in the way funkwhale is deployed,
|
||
please read the notes carefully.
|
||
|
||
Instance timeline
|
||
^^^^^^^^^^^^^^^^^
|
||
|
||
A new "Activity" page is now available from the sidebar, where you can
|
||
browse your instance activity. At the moment, this includes other users
|
||
favorites and listening, but more activity types will be implemented in the
|
||
future.
|
||
|
||
Internally, we implemented those events by following the Activity Stream
|
||
specification, which will help us to be compatible with other networks
|
||
in the long-term.
|
||
|
||
A new settings page has been added to control the visibility of your activity.
|
||
By default, your activity will be browsable by anyone on your instance,
|
||
but you can switch to a full private mode where nothing is shared.
|
||
|
||
The setting form is available in your profile.
|
||
|
||
Switch from gunicorn to daphne
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
This release include an important change in the way we serve the HTTP API.
|
||
To prepare for new realtime features and enable websocket support in Funkwhale,
|
||
we are now using django-channels and daphne to serve HTTP and websocket traffic.
|
||
|
||
This replaces gunicorn and the switch should be easy assuming you
|
||
follow the upgrade process described bellow.
|
||
|
||
If you are using docker, please remove the command instruction inside the
|
||
api service, as the up-to-date command is now included directly in the image
|
||
as the default entry point:
|
||
|
||
.. code-block:: yaml
|
||
|
||
api:
|
||
restart: unless-stopped
|
||
image: funkwhale/funkwhale:${FUNKWHALE_VERSION:-latest}
|
||
command: ./compose/django/gunicorn.sh # You can remove this line
|
||
|
||
On non docker setups, you'll have to update the [Service] block of your
|
||
funkwhale-server systemd unit file to launch the application server using daphne instead of gunicorn.
|
||
|
||
The new configuration should be similar to this:
|
||
|
||
.. code-block:: ini
|
||
|
||
[Service]
|
||
User=funkwhale
|
||
# adapt this depending on the path of your funkwhale installation
|
||
WorkingDirectory=/srv/funkwhale/api
|
||
EnvironmentFile=/srv/funkwhale/config/.env
|
||
ExecStart=/usr/local/bin/daphne -b ${FUNKWHALE_API_IP} -p ${FUNKWHALE_API_PORT} config.asgi:application
|
||
|
||
Ensure you update funkwhale's dependencies as usual to install the required
|
||
packages.
|
||
|
||
On both docker and non-docker setup, you'll also have to update your nginx
|
||
configuration for websocket support. Ensure you have the following blocks
|
||
included in your virtualhost file:
|
||
|
||
.. code-block:: txt
|
||
|
||
map $http_upgrade $connection_upgrade {
|
||
default upgrade;
|
||
'' close;
|
||
}
|
||
|
||
server {
|
||
...
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection $connection_upgrade;
|
||
}
|
||
|
||
Remember to reload your nginx server after the edit.
|
||
|
||
|
||
0.5.4 (2018-02-28)
|
||
------------------
|
||
|
||
Features:
|
||
|
||
- Now stop running radio when clearing queue (#98)
|
||
|
||
Bugfixes:
|
||
|
||
- Fixed queue skipping tracks (#91)
|
||
- Now loop properly on queue when we only have one track (#95)
|
||
|
||
|
||
0.5.3 (2018-02-27)
|
||
------------------
|
||
|
||
Features:
|
||
|
||
- Added admin interface for radios, track files, favorites and import requests (#80)
|
||
- Added basic instance stats on /about (#82)
|
||
- Search now unaccent letters for queries like "The Dø" or "Björk" yielding more results (#81)
|
||
|
||
|
||
Bugfixes:
|
||
|
||
- Always use username in sidebar (#89)
|
||
- Click event outside of player icons (#83)
|
||
- Fixed broken import because of missing transaction
|
||
- Now always load next radio track on last queue track ended (#87)
|
||
- Now exclude tracks without file from radio candidates (#88)
|
||
- skip to next track properly on 40X errors (#86)
|
||
|
||
|
||
Other:
|
||
|
||
- Switched to towncrier for changelog management and compilation
|
||
|
||
|
||
0.5.2 (2018-02-26)
|
||
------------------
|
||
|
||
- Fixed broken file import due to wrong url (#73)
|
||
- More accurate mimetype detection
|
||
- Fixed really small size on small screens
|
||
- Added masonry layout for artists, requests and radios (#68)
|
||
- We now have a favicon!
|
||
- Fixed truncated play icon (#65)
|
||
|
||
|
||
0.5.1 (2018-02-24)
|
||
------------------
|
||
|
||
- Front: Fixed broken ajax call on radio builder (#69)
|
||
- Front: Shuffle now restart next track from beginning (#70)
|
||
- Front: volume slider should now have the same style everywhere (#72)
|
||
|
||
|
||
0.5 (2018-02-24)
|
||
----------------
|
||
|
||
- Front: Now reset player colors when track has no cover (#46)
|
||
- Front: play button now disabled for unplayable tracks
|
||
- API: You can now enable or disable registration on the fly, via a preference (#58)
|
||
- Front: can now signup via the web interface (#35)
|
||
- Front: Fixed broken redirection on login
|
||
- Front: Fixed broken error handling on settings and login form
|
||
|
||
About page:
|
||
|
||
There is a brand new about page on instances (/about), and instance
|
||
owner can now provide a name, a short and a long description for their instance via the admin (/api/admin/dynamic_preferences/globalpreferencemodel/).
|
||
|
||
Transcoding:
|
||
|
||
Basic transcoding is now available to/from the following formats : ogg and mp3.
|
||
|
||
*This is still an alpha feature at the moment, please report any bug.*
|
||
|
||
This relies internally on FFMPEG and can put some load on your server.
|
||
It's definitely recommended you setup some caching for the transcoded files
|
||
at your webserver level. Check the the exemple nginx file at deploy/nginx.conf
|
||
for an implementation.
|
||
|
||
On the frontend, usage of transcoding should be transparent in the player.
|
||
|
||
Music Requests:
|
||
|
||
This release includes a new feature, music requests, which allows users
|
||
to request music they'd like to see imported.
|
||
Admins can browse those requests and mark them as completed when
|
||
an import is made.
|
||
|
||
0.4 (2018-02-18)
|
||
----------------
|
||
|
||
- Front: ambiant colors in player based on current track cover (#59)
|
||
- Front: simplified front dev setup thanks to webpack proxy (#59)
|
||
- Front: added some unittests for the store (#55)
|
||
- Front: fixed broken login redirection when 401
|
||
- Front: Removed autoplay on page reload
|
||
- API: Added a /instance/settings endpoint
|
||
- Front: load /instance/settings on page load
|
||
- Added settings to report JS and Python error to a Sentry instance
|
||
This is disabled by default, but feel free to enable it if you want
|
||
to help us by sending your error reports :) (#8)
|
||
|
||
|
||
0.3.5 (2018-01-07)
|
||
------------------
|
||
|
||
- Smarter BACKEND_URL in frontend
|
||
|
||
|
||
0.3.4 (2018-01-07)
|
||
------------------
|
||
|
||
- Fixed wrong URL construction in ajax call
|
||
|
||
|
||
0.3.3 (2018-01-07)
|
||
------------------
|
||
|
||
- Users can now create their own dynamic radios (#51)
|
||
|
||
|
||
0.3.2
|
||
------------------
|
||
|
||
- Fixed an issue in the main dockerfile
|
||
|
||
|
||
0.3.1
|
||
------------------
|
||
|
||
- Revamped all import logic, everything is more tested and consistend
|
||
- Can now use Acoustid in file imports to automatically grab metadata from musicbrainz
|
||
- Brand new file import wizard
|
||
|
||
|
||
0.2.7
|
||
------------------
|
||
|
||
- Shortcuts: can now use the ``f`` shortcut to toggle the currently playing track
|
||
as a favorite (#53)
|
||
- Shortcuts: avoid collisions between shortcuts by using the exact modifier (#53)
|
||
- Player: Added looping controls and shortcuts (#52)
|
||
- Player: Added shuffling controls and shortcuts (#52)
|
||
- Favorites: can now modify the ordering of track list (#50)
|
||
- Library: can now search/reorder results on artist browsing view (#50)
|
||
- Upgraded celery to 4.1, added endpoint logic for fingerprinting audio files
|
||
- Fixed #56: invalidate tokens on password change, also added change password form
|
||
- Fixed #57: now refresh jwt token on page refresh
|
||
- removed ugly dividers in batch import list
|
||
- Fixed a few padding issues
|
||
- Now persist/restore queue/radio/player state automatically
|
||
- Removed old broken imports
|
||
- Now force tests paths
|
||
- Fixed #54: Now use pytest everywhere \o/
|
||
- Now use vuex to manage state for favorites
|
||
- Now use vuex to manage state for authentication
|
||
- Now use vuex to manage state for player/queue/radios
|
||
|
||
|
||
0.2.6 (2017-12-15)
|
||
------------------
|
||
|
||
- Fixed broken Dockerfile
|
||
|
||
|
||
0.2.5 (2017-12-15)
|
||
------------------
|
||
|
||
Features:
|
||
|
||
- Import: can now specify search template when querying import sources (#45)
|
||
- Login form: now redirect to previous page after login (#2)
|
||
- 404: a decent 404 template, at least (#48)
|
||
|
||
Bugfixes:
|
||
|
||
- Player: better handling of errors when fetching the audio file (#46)
|
||
- Csrf: default CSRF_TRUSTED_ORIGINS to ALLOWED_HOSTS to avoid Csrf issues on admin (#49)
|
||
|
||
Tech:
|
||
|
||
- Django 2 compatibility, lot of packages upgrades (#47)
|
||
|
||
|
||
0.2.4 (2017-12-14)
|
||
------------------
|
||
|
||
Features:
|
||
|
||
- Models: now store relese group mbid on Album model (#7)
|
||
- Models: now bind import job to track files (#44)
|
||
|
||
Bugfixes:
|
||
|
||
- Library: fixen broken "play all albums" button on artist cards in Artist browsing view (#43)
|