funkwhale merge requestshttps://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests2020-06-15T07:10:42Zhttps://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1146Channels api docs2020-06-15T07:10:42ZAgateChannels api docsAll the endpoints should be covered nowAll the endpoints should be covered now0.21.2https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1145Update docker installation and upgrade documentation2020-06-21T11:12:24ZCreakUpdate docker installation and upgrade documentationRelated issue: N/A
This Merge Request includes:
- [x] A changelog fragment (cf https://docs.funkwhale.audio/contributing.html#changelog-management)Related issue: N/A
This Merge Request includes:
- [x] A changelog fragment (cf https://docs.funkwhale.audio/contributing.html#changelog-management)https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1144Resolve "Cover art display does not update correctly when navigating from tra...2020-06-14T12:47:07ZAgateResolve "Cover art display does not update correctly when navigating from track to track"Closes #1138Closes #1138https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1142Resolve "Subsonic integration: Error when loading list of albums"2020-06-11T16:11:49ZAgateResolve "Subsonic integration: Error when loading list of albums"Closes #1158Closes #11580.21.2https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1141Resolve "JS compilation error, specific variable is not defined"2020-06-11T15:59:24ZAgateResolve "JS compilation error, specific variable is not defined"Closes #1157Closes #11570.21.2https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1140Resolve "CLI import issue python3.5 related"2020-06-11T04:17:52ZAgateResolve "CLI import issue python3.5 related"Closes #1155Closes #11550.21.1https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1139Fix #1154: Support for specifying itunes:email and itunes:name in channels fo...2020-06-11T03:49:26ZAgateFix #1154: Support for specifying itunes:email and itunes:name in channels for...Fix #1154: Support for specifying itunes:email and itunes:name in channels for compatibiliy with third-party platforms
Closes #1154
We already supported thesse fields, only the frontend was missingFix #1154: Support for specifying itunes:email and itunes:name in channels for compatibiliy with third-party platforms
Closes #1154
We already supported thesse fields, only the frontend was missing0.21.1https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1138Resolve "403 on POST requests"2020-06-09T12:43:52ZAgateResolve "403 on POST requests"Closes #1153Closes #11531.0https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1137Docs - Reverse proxy - Caddy v2 installation notes2020-06-11T03:45:12ZgisforgabrielDocs - Reverse proxy - Caddy v2 installation notesRelated issue: n/a
This Merge Request includes:
- [ ] Tests
- [x] A changelog fragment (cf https://docs.funkwhale.audio/contributing.html#changelog-management)
Updated documentation to cover the configuration of Caddy v2, which...Related issue: n/a
This Merge Request includes:
- [ ] Tests
- [x] A changelog fragment (cf https://docs.funkwhale.audio/contributing.html#changelog-management)
Updated documentation to cover the configuration of Caddy v2, which was released in May. There are breaking changes in v2, including to the `proxy` directive mentioned in the documentation. See [Upgrade Guide - proxy](https://caddyserver.com/docs/v2-upgrade#proxy)
There are now two methods for deploying the configuration: Caddyfile and API. I thought that if people needed to follow a tutorial on Funkwhale for setting up Caddy then the API implementation is out of scope. But I guess there's no harm in adding it if people think it's useful.
The original configuration has been left as v1 will still receive fixes for [approximately 6 months](https://caddy.community/t/caddy-version-1-end-of-life-date/7835/4).https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1136Embededded player tweaks2020-06-06T02:50:47ZAgateEmbededded player tweaks
- [x] Untranslated "by artist" removed
- [x] Fixed layout issue on tracks with no albums
# Before
![Screenshot_20200606_044844](/uploads/300fa088ffb4d7d94fe823d641f81a8f/Screenshot_20200606_044844.png)
# After
![Screenshot...
- [x] Untranslated "by artist" removed
- [x] Fixed layout issue on tracks with no albums
# Before
![Screenshot_20200606_044844](/uploads/300fa088ffb4d7d94fe823d641f81a8f/Screenshot_20200606_044844.png)
# After
![Screenshot_20200606_044615](/uploads/55b70c17fd76ce529716c5d62a3c6ce0/Screenshot_20200606_044615.png)0.21.1https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1135Fix #1151: Updated the /api/v1/libraries endpoint to support listing public l...2020-06-05T09:26:56ZAgateFix #1151: Updated the /api/v1/libraries endpoint to support listing public libraries of a podCloses #1151Closes #11510.21.1https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1134Resolve "CLI in-place import impossible with virtualenv with python3.5"2020-06-05T08:42:57ZAgateResolve "CLI in-place import impossible with virtualenv with python3.5"Closes #1148
Also add a unit test that helped reproducing the errorCloses #1148
Also add a unit test that helped reproducing the error0.21.1https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1133Resolve "Firefox auto-fills your remembered username in the search box if you...2020-06-05T04:25:21ZAgateResolve "Firefox auto-fills your remembered username in the search box if you open the user settings page"Closes #1090, supersedes !1106
@interfect, I found out an easier solution, which was setting the "search" type on the search field ;) (via https://gist.github.com/runspired/b9fdf1fa74fc9fb4554418dea35718fe#gistcomment-2725790)Closes #1090, supersedes !1106
@interfect, I found out an easier solution, which was setting the "search" type on the search field ;) (via https://gist.github.com/runspired/b9fdf1fa74fc9fb4554418dea35718fe#gistcomment-2725790)0.21.1https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1132Revert "Merge branch 'fix-import-python-3-5' into 'develop'"2020-06-05T04:36:57ZAgateRevert "Merge branch 'fix-import-python-3-5' into 'develop'"This reverts merge request !1129. reopens #1147 and #1148
Unfortunately, this breaks on higher versions of Python with
```
Starting import of new files…
Traceback (most recent call last):
File "manage.py", line 27, in <module>...This reverts merge request !1129. reopens #1147 and #1148
Unfortunately, this breaks on higher versions of Python with
```
Starting import of new files…
Traceback (most recent call last):
File "manage.py", line 27, in <module>
execute_from_command_line(sys.argv)
File "/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/venv/lib/python3.7/site-packages/django/core/management/base.py", line 328, in run_from_argv
self.execute(*args, **cmd_options)
File "/venv/lib/python3.7/site-packages/django/core/management/base.py", line 369, in execute
output = self.handle(*args, **options)
File "/venv/lib/python3.7/site-packages/django/core/management/commands/shell.py", line 92, in handle
exec(sys.stdin.read())
File "<string>", line 28, in <module>
File "/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 168, in call_command
return command.execute(*args, **defaults)
File "/venv/lib/python3.7/site-packages/django/core/management/base.py", line 369, in execute
output = self.handle(*args, **options)
File "/app/funkwhale_api/music/management/commands/import_files.py", line 307, in handle
for i, entries in enumerate(batch(crawler, options["batch_size"])):
File "/app/funkwhale_api/music/management/commands/import_files.py", line 58, in batch
current.append(next(iterable))
File "/app/funkwhale_api/music/management/commands/import_files.py", line 46, in crawl_dir
yield from dir_scanner(scanner, extensions, recursive, ignored)
File "/app/funkwhale_api/music/management/commands/import_files.py", line 35, in dir_scanner
entry, extensions, recursive=recursive, ignored=ignored
File "/app/funkwhale_api/music/management/commands/import_files.py", line 27, in dir_scanner
for entry in scanner:
TypeError: 'posix.DirEntry' object is not iterable
```0.21.1https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1131Resolve "Add "New channels" widget on landing page"2020-06-05T08:38:38ZAgateResolve "Add "New channels" widget on landing page"Closes #1113
(don't mind the sidebar, my screenshot tool is confused by the fixed layout)
![image](/uploads/28a30c2b13e72c57b53df123f10924df/image.png)
cc @funkwhale/reviewers-frontCloses #1113
(don't mind the sidebar, my screenshot tool is confused by the fixed layout)
![image](/uploads/28a30c2b13e72c57b53df123f10924df/image.png)
cc @funkwhale/reviewers-front0.21.1https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1130Resolve "X episodes instead of X tracks on Artist channel page"2020-06-05T08:38:52ZAgateResolve "X episodes instead of X tracks on Artist channel page"Closes #1117
# Before
![Screenshot_20200605_052931](/uploads/fbda734c45615784f84b584e30fd3c87/Screenshot_20200605_052931.png)
# After
![Screenshot_20200605_052911](/uploads/7f53cc80cc425befc22b475a15209b61/Screenshot_2020060...Closes #1117
# Before
![Screenshot_20200605_052931](/uploads/fbda734c45615784f84b584e30fd3c87/Screenshot_20200605_052931.png)
# After
![Screenshot_20200605_052911](/uploads/7f53cc80cc425befc22b475a15209b61/Screenshot_20200605_052911.png)
cc @funkwhale/reviewers-front0.21.1https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1129Fix support for Python 3.5 in import script2020-06-05T04:09:47ZCiarán Ainsworthsporiff@funkwhale.audioFix support for Python 3.5 in import scriptFix #1148 and #1147 XXX <!-- it's okay to have no issue for small changes -->
This Merge Request includes:
- [x] A changelog fragment (cf https://docs.funkwhale.audio/contributing.html#changelog-management)
This MR fixes compati...Fix #1148 and #1147 XXX <!-- it's okay to have no issue for small changes -->
This Merge Request includes:
- [x] A changelog fragment (cf https://docs.funkwhale.audio/contributing.html#changelog-management)
This MR fixes compatibility with Python < 3.6. The `os.scandir()` method didn't receive context support until 3.6, so users of Debian 9 (mostly Yunohost users) cannot run the script as of version 0.21 as seen in the above issues. Since we are supporting 3.5 until version 1.0, this should probably be fixed for 0.21.1.
This has been tested on my Yunohost server running Debian 9, Python 3.5.
CC @funkwhale/reviewers-python0.21.1Ciarán Ainsworthsporiff@funkwhale.audioCiarán Ainsworthsporiff@funkwhale.audiohttps://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1128docker-compose: fix music dir being mounted in the wrong place for nginx2021-02-11T07:36:34Zcodldocker-compose: fix music dir being mounted in the wrong place for nginx1.1https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1127See #1108: support using OAuth instead of JWT in front when logging in to a d...2020-05-18T12:55:16ZAgateSee #1108: support using OAuth instead of JWT in front when logging in to a different domainSee #1108
When trying to login with the SPA on a different domain (typically happens in development when pointing the frontend to a different domain), use Oauth instead of JWT:
- [x] Create an OAuth app and redirect user to authorizat...See #1108
When trying to login with the SPA on a different domain (typically happens in development when pointing the frontend to a different domain), use Oauth instead of JWT:
- [x] Create an OAuth app and redirect user to authorization screen on the api domain
- [x] Handle redirection and store oauth app/credentials
- [x] Use oauth `Bearer` token instead of JWT for authentication when doing ajax requests
- [x] Refresh oauth token transparently when it is expired, via `axios-auth-refresh`1.0https://dev.funkwhale.audio/funkwhale/funkwhale/-/merge_requests/1126Support session/cookie based auth, see #11082020-05-18T10:03:32ZAgateSupport session/cookie based auth, see #1108Initially, I wanted to use oauth for the web app UI, but it's not possible: to validate an oauth login, you must be authenticated, so there is a loop here ;) See #1108.
Since in 99% of cases the webapp is on the same domain as the API...Initially, I wanted to use oauth for the web app UI, but it's not possible: to validate an oauth login, you must be authenticated, so there is a loop here ;) See #1108.
Since in 99% of cases the webapp is on the same domain as the API, it's way easier and more secure to use session/cookie based auth.
This MR does that by:
- [x] Adding the necessary logic for cookie based login/logout on the API
- [x] Update the front-end to use the new session-based auth
- [x] Implement CSRF checks and header passing (because cookie based auth is vulnerable to this kind of attacks)
- [x] (unrelated) more consistent URL schemes, everything that is auth/user related is now under `/api/v1/users`
For the remaining 1% cases, where we won't be able to use cookie based auth because the front-end is served on another domain, we can use OAuth (to be implemented): the front-end will be considered as a separate oauth app and use OAuth for everything.1.0