Upgrade instructions are available at https://docs.funkwhale.audio/admin/upgrading.html

Due to a bug in our CI Pipeline frontend artifacts are not available at https://dev.funkwhale.audio/funkwhale/funkwhale/builds/artifacts/1.2.0/download?job=build_front as they would usually. Please use this URL to get your frontend build: https://dev.funkwhale.audio/funkwhale/funkwhale/-/jobs/81069/artifacts/download

If you are running the All-in-One-Container since a longer time, you probably need to manually migrate your database information. If thats the case, you will get a message like this:

DETAIL: The data directory was initialized by PostgreSQL version 11, which is not compatible with this version 13.5.

Make sure the Funkwhale version is set to 1.1.4 in docker-compose.yml. Now you can run this command to dump the database into a file:

docker-compose exec -T funkwhale pg_dump -c -U funkwhale > "db.dump"

Now you can update the Funkwhale version in docker-compose.yml to 1.2.0. Additionally you should save your data directory, eg by running mv data data.bak && mkdir data. Stop Funkwhale and start it again with the new version, by using docker-compose down && docker-compose up -d. This will initialize a fresh DB and applies all migrations. Now you can restore your database with the following command: cat db.dump | docker-compose exec -T funkwhale psql -U funkwhale. Thats it, enjoy!


  • Implemented awesome recently added radio (part of #1390)
  • Rework the instance about page (#1376)
  • Made changes to the track table to make it more visibly pleasing


  • Add linting for Frontend code (#1602)
  • Add xmlns:content to feed schemas fixes #1535
  • Add a Maloja plugin to submit listenings
  • Add artist cover art in subsonic API response (#1528)
  • Allow listen activities privacy level to be set public
  • Allow running multi-container setup on non-root user inside docker (!1375) (fixes #1334)
  • Change volume dynamic range from 60dB to 40dB (fixes #1544)
  • Change Start Radio to Play Radio (#1400)
  • Display toast when subsonic password is copied (#1496)
  • Expose more metadata in Subsonic's getAlbumList endpoint (#623)
  • ListenBrainz: Submit media player and submission client information
  • Make "play in list" the default when interacting with individual tracks (#1274)
  • Prevent an uncontrolled exception when uploading a file without tags, and prints user friendly message (1275)
  • Remove deprecated JWT Authentication (#1108) (1108)
  • Remove Raven SDK to report errors to Sentry (#1425) (1425)
  • Replace psycopg2-binary with psycopg2 (#1513)


  • Add worker-src to nginx header to prevent issues (#1489)
  • Enable stepless adjustment of the volume slider (!1294)
  • Fix an error in a Subsonic methods that return lists of numbers/strings like getUser
  • Fix showing too long radio descriptions (#1556)
  • Fix X-Frame-Options HTTP header for embed and force it to SAMEORIGIN value for other pages (fix #1022)
  • Fix before last track starts playing when last track removed (#1485)
  • Fix delete account button is not disalbed when missing password (#1591)
  • Fix omputed properties already defined in components data (#1649)
  • Fix the all in one docker image building process, related to #1503
  • Fix crash in album moderation interface when missing cover (#1474)
  • Fix subsonic scrobble not triggering plugin hook (#1416)
  • Improve formatting of RSS episode descriptions (#1405)
  • Only suggest typed tag once if it already exists
  • Partially fixed playing two tracks at same time (#1213)
  • Revert changes that break mobile browser playback (#1509)
  • Sanitize remote tracks' saving locations with slashes on their names (#1435)
  • Show embed option for channel tracks (#1278)
  • Store volume in logarithmic scale and convert when setting it to audio (fixes #1543)
  • Use global Howler volume instead of setting it separatly for each track (fixes #1542)


  • Add email configuration to the documentation (#1481)
  • Add server uninstallation documentation (!1314)
  • Document location of cli env file on macOS (!1354)
  • Fix broken backup documentation (#1345)
  • Refactore installation documentation and other small documentation adjustments (!1314)
  • Add User documentation for built-in plugins


  • Create stable branch, master is now deprecated and will be removed in 1.3 (#1476)


Alexandra Parker Alyssa Ross appzer0 Arthur Brugière Asier Iturralde Sarasola bittin Blopware Brian McMillen Christoph Pomaska Ciaran Ainsworth Ciarán Ainsworth Classified Connor Hay Damian Szetela David Marzal Deleted User Dignified Silence Dominik Danelski egon0 Erik Präntare Georg Abenthung Georgios B Georgios Brellas Georg Krause ghose greengekota heyarne ian Vatega Janek jovuit JuniorJPDJ Konstantinos G manuelviens Manuel Viens Marcos Marcos Peña Martin Giger Matthew J Micha Gläß-Stöcker petitminion Petitminion Philipp Wolfer Porrumentzio Quentin PAGÈS Raphael Lullis Riccardo Sacchetto Romain Failliot Rubén Cabrera Ryan Harg Sergio Varela SpcCw Stefano Pigozzi Thomas Tony Simoes Tony Wasserka vachan-maker Virgile Robles

Contributors to our Issues:

AMoonRabbit Agate Antoine POPINEAU Arthur Brugière Ciarán Ainsworth Connor Hay Creak David Marzal Georg Krause Gerhard Beck Greg Poole JuniorJPDJ Kuba Orlik Lunar Control Marcos Peña Mateusz Korzeniewski Mathieu Jourdan Micha Gläß-Stöcker Philipp Wolfer Porrumentzio Thomas Tony Wasserka Ville Ranki arkhi heyarne interfect jovuit mal petitminion vachan-maker

Contributors to our Merge Requests:

Agate Arthur Brugière Ciarán Ainsworth Connor Hay David Marzal Distopico Fanyx Georg Abenthung Georg Krause Janek JuniorJPDJ Kasper Seweryn Marcos Peña Mathieu Jourdan Matthew J. Micha Gläß-Stöcker Philipp Wolfer Thomas Tony Wasserka heyarne jovuit petitminion thanksd