chore: format files using prettier (pre-commit)

This commit is contained in:
jo 2022-11-23 22:42:32 +01:00
parent df7b1763a3
commit 6d7dc2f1b5
No known key found for this signature in database
GPG Key ID: B2FEC9B22722B984
87 changed files with 4496 additions and 5178 deletions

View File

@ -1,4 +1,4 @@
version: '3' version: "3"
services: services:
postgres: postgres:

63
.vscode/launch.json vendored
View File

@ -1,31 +1,36 @@
{ {
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{ {
"name": "Attach python debugger", "name": "Attach python debugger",
"type": "python", "type": "python",
"request": "attach", "request": "attach",
"connect": { "connect": {
"host": "localhost", "host": "localhost",
"port": 5678 "port": 5678
}, },
"django": true "django": true
}, },
{ {
"name": "Debug python", "name": "Debug python",
"type": "python", "type": "python",
"request": "launch", "request": "launch",
"module": "uvicorn", "module": "uvicorn",
"cwd": "${workspaceFolder}/api", "cwd": "${workspaceFolder}/api",
"envFile": "${workspaceFolder}/.gitpod/.env", "envFile": "${workspaceFolder}/.gitpod/.env",
"args": [ "args": [
"--reload", "config.asgi:application", "--reload",
"--host", "0.0.0.0", "config.asgi:application",
"--port", "5000", "--host",
"--reload-dir", "config/", "0.0.0.0",
"--reload-dir", "funkwhale_api/" "--port",
], "5000",
"django": true "--reload-dir",
} "config/",
] "--reload-dir",
"funkwhale_api/"
],
"django": true
}
]
} }

19
.vscode/settings.json vendored
View File

@ -1,13 +1,10 @@
{ {
"python.defaultInterpreterPath": "/workspace/funkwhale/api/.venv/bin/python", "python.defaultInterpreterPath": "/workspace/funkwhale/api/.venv/bin/python",
"python.testing.cwd": "/workspace/funkwhale/api", "python.testing.cwd": "/workspace/funkwhale/api",
"python.envFile": "/workspace/funkwhale/.gitpod/.env", "python.envFile": "/workspace/funkwhale/.gitpod/.env",
"python.testing.pytestArgs": [ "python.testing.pytestArgs": ["--cov=funkwhale_api", "tests/"],
"--cov=funkwhale_api", "python.testing.unittestEnabled": false,
"tests/" "python.testing.pytestEnabled": true,
], "vitest.enable": true,
"python.testing.unittestEnabled": false, "vitest.commandLine": "yarn vitest"
"python.testing.pytestEnabled": true,
"vitest.enable": true,
"vitest.commandLine": "yarn vitest"
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
### Gentoo init scripts ### Gentoo init scripts
Copy the files to `/etc/init.d/` Copy the files to `/etc/init.d/`
``` ```
# cp /path/to/scripts/funkwhale_* /etc/init.d/ # cp /path/to/scripts/funkwhale_* /etc/init.d/

View File

@ -87,7 +87,6 @@ services:
- "node2.funkwhale.test:172.17.0.1" - "node2.funkwhale.test:172.17.0.1"
- "node3.funkwhale.test:172.17.0.1" - "node3.funkwhale.test:172.17.0.1"
celeryworker: celeryworker:
env_file: env_file:
- .env.dev - .env.dev
@ -118,7 +117,6 @@ services:
- "node2.funkwhale.test:172.17.0.1" - "node2.funkwhale.test:172.17.0.1"
- "node3.funkwhale.test:172.17.0.1" - "node3.funkwhale.test:172.17.0.1"
nginx: nginx:
command: /entrypoint.sh command: /entrypoint.sh
env_file: env_file:
@ -193,10 +191,8 @@ services:
# - federation # - federation
# - internal # - internal
networks: networks:
? internal internal:
federation: federation:
external: external:
name: federation name: federation

View File

@ -1,4 +1,4 @@
version: '2.1' version: "2.1"
services: services:
traefik: traefik:
@ -9,13 +9,12 @@ services:
- ./ssl/test.key:/ssl/traefik.key - ./ssl/test.key:/ssl/traefik.key
- ./ssl/test.crt:/ssl/traefik.crt - ./ssl/test.crt:/ssl/traefik.crt
ports: ports:
- '80:80' - "80:80"
- '443:443' - "443:443"
- '8040:8040' - "8040:8040"
networks: networks:
federation: federation:
networks: networks:
federation: federation:
external: external:

View File

@ -9,18 +9,18 @@ You need to restart your Funkwhale services after changing your `.env` file.
:::{tab-item} Debian :::{tab-item} Debian
:sync: debian :sync: debian
```{code-block} sh ```{code-block} sh
sudo systemctl restart funkwhale.target sudo systemctl restart funkwhale.target
``` ```
::: :::
:::{tab-item} Docker :::{tab-item} Docker
:sync: docker :sync: docker
```{code-block} sh ```{code-block} sh
docker-compose restart docker-compose restart
``` ```
::: :::
:::: ::::

View File

@ -12,6 +12,7 @@ To find your instance settings:
1. Log in to your {term}`pod`. 1. Log in to your {term}`pod`.
2. Select the wrench icon ({fa}`wrench`) at the top of the sidebar to open the {guilabel}`Administration` menu. 2. Select the wrench icon ({fa}`wrench`) at the top of the sidebar to open the {guilabel}`Administration` menu.
3. Select {guilabel}`Settings`. The {guilabel}`Instance settings` page opens. 3. Select {guilabel}`Settings`. The {guilabel}`Instance settings` page opens.
::: :::
:::{tab-item} Mobile :::{tab-item} Mobile

View File

@ -84,123 +84,123 @@ To make the job of writing and debugging MRF policies easier, we provide a manag
- List registered MRF policies. - List registered MRF policies.
::::{tab-set} ::::{tab-set}
:::{tab-item} Debian :::{tab-item} Debian
:sync: debian :sync: debian
```{code-block} sh ```{code-block} sh
poetry run python manage.py mrf_check --list poetry run python manage.py mrf_check --list
``` ```
::: :::
:::{tab-item} Docker :::{tab-item} Docker
:sync: docker :sync: docker
```{code-block} sh ```{code-block} sh
docker-compose run --rm api python manage.py mrf_check --list docker-compose run --rm api python manage.py mrf_check --list
``` ```
::: :::
:::: ::::
- Check how your MRF policy handles a follow. - Check how your MRF policy handles a follow.
::::{tab-set} ::::{tab-set}
:::{tab-item} Debian :::{tab-item} Debian
:sync: debian :sync: debian
```{code-block} sh ```{code-block} sh
export MRF_MESSAGE='{"actor": "https://normal.domain/@alice", "type": "Create", "object": {"type": "Follow"}}' export MRF_MESSAGE='{"actor": "https://normal.domain/@alice", "type": "Create", "object": {"type": "Follow"}}'
echo $MRF_MESSAGE | poetry run python manage.py mrf_check inbox - -p blocked_follow_domains echo $MRF_MESSAGE | poetry run python manage.py mrf_check inbox - -p blocked_follow_domains
``` ```
::: :::
:::{tab-item} Docker :::{tab-item} Docker
:sync: docker :sync: docker
```{code-block} sh ```{code-block} sh
export MRF_MESSAGE='{"actor": "https://normal.domain/@alice", "type": "Create", "object": {"type": "Follow"}}' export MRF_MESSAGE='{"actor": "https://normal.domain/@alice", "type": "Create", "object": {"type": "Follow"}}'
echo $MRF_MESSAGE | docker-compose run --rm api python manage.py mrf_check inbox - -p blocked_follow_domains echo $MRF_MESSAGE | docker-compose run --rm api python manage.py mrf_check inbox - -p blocked_follow_domains
``` ```
:::: ::::
- Check how your MRF handles a problematic follow. - Check how your MRF handles a problematic follow.
::::{tab-set} ::::{tab-set}
:::{tab-item} Debian :::{tab-item} Debian
:sync: debian :sync: debian
```{code-block} sh ```{code-block} sh
export MRF_MESSAGE='{"actor": "https://botdomain.org/@bob", "type": "Create", "object": {"type": "Follow"}}' export MRF_MESSAGE='{"actor": "https://botdomain.org/@bob", "type": "Create", "object": {"type": "Follow"}}'
echo $MRF_MESSAGE | poetry run python manage.py mrf_check inbox - -p blocked_follow_domains echo $MRF_MESSAGE | poetry run python manage.py mrf_check inbox - -p blocked_follow_domains
``` ```
::: :::
:::{tab-item} Docker :::{tab-item} Docker
:sync: docker :sync: docker
```{code-block} sh ```{code-block} sh
export MRF_MESSAGE='{"actor": "https://botdomain.org/@bob", "type": "Create", "object": {"type": "Follow"}}' export MRF_MESSAGE='{"actor": "https://botdomain.org/@bob", "type": "Create", "object": {"type": "Follow"}}'
echo $MRF_MESSAGE | docker-compose run --rm api python manage.py mrf_check inbox - -p blocked_follow_domains echo $MRF_MESSAGE | docker-compose run --rm api python manage.py mrf_check inbox - -p blocked_follow_domains
``` ```
::: :::
:::: ::::
- Check a payload against activity already present in the database. You can find the UUID of an activity by visiting `/api/admin/federation/activity`. - Check a payload against activity already present in the database. You can find the UUID of an activity by visiting `/api/admin/federation/activity`.
::::{tab-set} ::::{tab-set}
:::{tab-item} Debian :::{tab-item} Debian
:sync: debian :sync: debian
```{code-block} sh ```{code-block} sh
export ACTIVITY_UUID="06208aea-c687-4e8b-aefd-22f1c3f76039" export ACTIVITY_UUID="06208aea-c687-4e8b-aefd-22f1c3f76039"
echo $MRF_MESSAGE | poetry run python manage.py mrf_check inbox $ACTIVITY_UUID -p blocked_follow_domains echo $MRF_MESSAGE | poetry run python manage.py mrf_check inbox $ACTIVITY_UUID -p blocked_follow_domains
``` ```
::: :::
:::{tab-item} Docker :::{tab-item} Docker
:sync: docker :sync: docker
```{code-block} sh ```{code-block} sh
export ACTIVITY_UUID="06208aea-c687-4e8b-aefd-22f1c3f76039" export ACTIVITY_UUID="06208aea-c687-4e8b-aefd-22f1c3f76039"
echo $MRF_MESSAGE | docker-compose run --rm api python manage.py mrf_check inbox $ACTIVITY_UUID -p blocked_follow_domains echo $MRF_MESSAGE | docker-compose run --rm api python manage.py mrf_check inbox $ACTIVITY_UUID -p blocked_follow_domains
``` ```
::: :::
:::: ::::
There are extra options for testing MRF policies. Check the command help for more options. There are extra options for testing MRF policies. Check the command help for more options.
::::{tab-set} ::::{tab-set}
:::{tab-item} Debian :::{tab-item} Debian
:sync: debian :sync: debian
```{code-block} sh ```{code-block} sh
poetry run python manage.py mrf_check --help poetry run python manage.py mrf_check --help
``` ```
::: :::
:::{tab-item} Docker :::{tab-item} Docker
:sync: docker :sync: docker
```{code-block} sh ```{code-block} sh
docker-compose run --rm api python manage.py mrf_check --help docker-compose run --rm api python manage.py mrf_check --help
``` ```
::: :::
:::: ::::

View File

@ -11,16 +11,16 @@ We support [Debian](https://debian.org) and Debian-based Linux distributions. Fo
- Set a `FUNKWHALE_VERSION` variable to the version you want to install. You will use this version for all commands in this guide. - Set a `FUNKWHALE_VERSION` variable to the version you want to install. You will use this version for all commands in this guide.
```{parsed-literal} ```{parsed-literal}
export FUNKWHALE_VERSION={sub-ref}`version` export FUNKWHALE_VERSION={sub-ref}`version`
``` ```
- Install `curl` - Install `curl`
```{code-block} sh ```{code-block} sh
sudo apt update # update apt cache sudo apt update # update apt cache
sudo apt install curl sudo apt install curl
``` ```
## 1. Install Funkwhale dependencies ## 1. Install Funkwhale dependencies
@ -169,18 +169,19 @@ The environment file contains options you can use to control your Funkwhale pod.
``` ```
5. Update the following settings: 5. Update the following settings:
- Paste the secret key in the `DJANGO_SECRET_KEY` field. - Paste the secret key in the `DJANGO_SECRET_KEY` field.
- Populate the `DATABASE_URL` field: - Populate the `DATABASE_URL` field:
```{code-block} text ```{code-block} text
DATABASE_URL=postgresql://funkwhale@:5432/funkwhale DATABASE_URL=postgresql://funkwhale@:5432/funkwhale
``` ```
- Populate the `CACHE_URL` field: - Populate the `CACHE_URL` field:
```{code-block} text ```{code-block} text
CACHE_URL=redis://127.0.0.1:6379/0 CACHE_URL=redis://127.0.0.1:6379/0
``` ```
- Populate the `FUNKWHALE_HOSTNAME` field with the domain name of your server. - Populate the `FUNKWHALE_HOSTNAME` field with the domain name of your server.

View File

@ -14,17 +14,17 @@ This guide assumes you are using a [Debian](https://debian.org)-based system.
- Set a `FUNKWHALE_VERSION` variable to the version you want to install. You will use this version for all commands in this guide. - Set a `FUNKWHALE_VERSION` variable to the version you want to install. You will use this version for all commands in this guide.
```{parsed-literal} ```{parsed-literal}
export FUNKWHALE_VERSION={sub-ref}`version` export FUNKWHALE_VERSION={sub-ref}`version`
``` ```
- Install [Docker](https://docs.docker.com/engine/install/) and [Docker Compose](https://docs.docker.com/compose/install/). - Install [Docker](https://docs.docker.com/engine/install/) and [Docker Compose](https://docs.docker.com/compose/install/).
- Install `curl`. - Install `curl`.
```{code-block} sh ```{code-block} sh
sudo apt update # update apt cache sudo apt update # update apt cache
sudo apt install curl sudo apt install curl
``` ```
## 1. Download the project files ## 1. Download the project files
@ -83,8 +83,9 @@ The environment file contains options you can use to control your Funkwhale pod.
``` ```
6. Update the following settings: 6. Update the following settings:
- Paste the secret key in the `DJANGO_SECRET_KEY` field.
- Populate the `FUNKWHALE_HOSTNAME` field with the URL of your server. - Paste the secret key in the `DJANGO_SECRET_KEY` field.
- Populate the `FUNKWHALE_HOSTNAME` field with the URL of your server.
7. Hit {kbd}`ctrl + x` then {kbd}`y` to save the file and close `nano`. 7. Hit {kbd}`ctrl + x` then {kbd}`y` to save the file and close `nano`.

View File

@ -4,8 +4,8 @@ Choose your installation method and follow the guides to set up your pod.
Funkwhale requires the following: Funkwhale requires the following:
- __A dedicated domain or subdomain__ you can't run Funkwhale in a subdirectory of a domain. You need to run it on a domain or a subdomain. For example: `https://mypod.io` or `https://funkwhale.mysite.io`. - **A dedicated domain or subdomain** you can't run Funkwhale in a subdirectory of a domain. You need to run it on a domain or a subdomain. For example: `https://mypod.io` or `https://funkwhale.mysite.io`.
- __Access to ports `80` and `443`__ Funkwhale uses these ports for federation. - **Access to ports `80` and `443`** Funkwhale uses these ports for federation.
```{toctree} ```{toctree}
--- ---

View File

@ -94,7 +94,7 @@ Created library default for user username1 with UUID 436da05b-8cb1-4a4d-b870-4a3
### Library with the same name already exists ### Library with the same name already exists
If a library with the same name already exists for the given user, the script will __not__ create a new library. If a library with the same name already exists for the given user, the script will **not** create a new library.
::::{tab-set} ::::{tab-set}

View File

@ -20,15 +20,15 @@ To add tags to untagged albums:
1. SSH into your Funkwhale server. 1. SSH into your Funkwhale server.
2. Navigate to the Funkwhale directory. 2. Navigate to the Funkwhale directory.
```{code-block} sh ```{code-block} sh
cd /srv/funkwhale cd /srv/funkwhale
``` ```
3. Run the `manage.py` script to generate tags for untagged albums. 3. Run the `manage.py` script to generate tags for untagged albums.
```{code-block} sh ```{code-block} sh
poetry run python manage.py fw albums add-tags-from-tracks poetry run python manage.py fw albums add-tags-from-tracks
``` ```
::: :::
@ -38,15 +38,15 @@ To add tags to untagged albums:
1. SSH into your Funkwhale server. 1. SSH into your Funkwhale server.
2. Navigate to the Funkwhale directory. 2. Navigate to the Funkwhale directory.
```{code-block} sh ```{code-block} sh
cd /srv/funkwhale cd /srv/funkwhale
``` ```
3. Run the `manage.py` script to generate tags for untagged albums. 3. Run the `manage.py` script to generate tags for untagged albums.
```{code-block} sh ```{code-block} sh
docker-compose run --rm api python manage.py fw albums add-tags-from-tracks docker-compose run --rm api python manage.py fw albums add-tags-from-tracks
``` ```
::: :::
:::: ::::
@ -63,15 +63,15 @@ To add tags to untagged artists:
1. SSH into your Funkwhale server. 1. SSH into your Funkwhale server.
2. Navigate to the Funkwhale directory. 2. Navigate to the Funkwhale directory.
```{code-block} sh ```{code-block} sh
cd /srv/funkwhale cd /srv/funkwhale
``` ```
3. Run the `manage.py` script to generate tags for untagged artists. 3. Run the `manage.py` script to generate tags for untagged artists.
```{code-block} sh ```{code-block} sh
poetry run python manage.py fw artists add-tags-from-tracks poetry run python manage.py fw artists add-tags-from-tracks
``` ```
::: :::
@ -81,15 +81,15 @@ To add tags to untagged artists:
1. SSH into your Funkwhale server. 1. SSH into your Funkwhale server.
2. Navigate to the Funkwhale directory. 2. Navigate to the Funkwhale directory.
```{code-block} sh ```{code-block} sh
cd /srv/funkwhale cd /srv/funkwhale
``` ```
3. Run the `manage.py` script to generate tags for untagged artists. 3. Run the `manage.py` script to generate tags for untagged artists.
```{code-block} sh ```{code-block} sh
docker-compose run --rm api python manage.py fw artists add-tags-from-tracks docker-compose run --rm api python manage.py fw artists add-tags-from-tracks
``` ```
::: :::
:::: ::::

View File

@ -16,21 +16,21 @@ To generate new thumbnails:
1. SSH into your Funkwhale server. 1. SSH into your Funkwhale server.
2. Navigate to your Funkwhale directory. 2. Navigate to your Funkwhale directory.
```{code-block} sh ```{code-block} sh
cd /srv/funkwhale cd /srv/funkwhale
``` ```
3. Delete the `__sized__` directory inside your `MEDIA_ROOT` directory. By default this is `/srv/funkwhale/data/media`. This directory contains the current thumbnails. 3. Delete the `__sized__` directory inside your `MEDIA_ROOT` directory. By default this is `/srv/funkwhale/data/media`. This directory contains the current thumbnails.
```{code-block} sh ```{code-block} sh
rm -r __sized__/ rm -r __sized__/
``` ```
4. Run the `manage.py` script to regenerate the thumbnails. 4. Run the `manage.py` script to regenerate the thumbnails.
```{code-block} sh ```{code-block} sh
poetry run python manage.py fw media generate-thumbnails poetry run python manage.py fw media generate-thumbnails
``` ```
::: :::
@ -40,21 +40,21 @@ To generate new thumbnails:
1. SSH into your Funkwhale server. 1. SSH into your Funkwhale server.
2. Navigate to your Funkwhale directory. 2. Navigate to your Funkwhale directory.
```{code-block} sh ```{code-block} sh
cd /srv/funkwhale/ cd /srv/funkwhale/
``` ```
3. Delete the `__sized__` directory inside your `MEDIA_ROOT` directory. By default this is `/srv/funkwhale/data/media`. This directory contains the current thumbnails. 3. Delete the `__sized__` directory inside your `MEDIA_ROOT` directory. By default this is `/srv/funkwhale/data/media`. This directory contains the current thumbnails.
```{code-block} sh ```{code-block} sh
rm -r data/media/__sized__/ rm -r data/media/__sized__/
``` ```
4. Run the `manage.py` script to regenerate the thumbnails. 4. Run the `manage.py` script to regenerate the thumbnails.
```{code-block} sh ```{code-block} sh
docker-compose run --rm api python manage.py fw media generate-thumbnails docker-compose run --rm api python manage.py fw media generate-thumbnails
``` ```
::: :::
:::: ::::

View File

@ -132,6 +132,6 @@ Check the file and remove any duplicated settings after copying.
Once you have imported your database and run migrations, you can start all containers. Once you have imported your database and run migrations, you can start all containers.
```{code-block} sh ```{code-block} sh
docker-compose up -d docker-compose up -d
``` ```

View File

@ -6,75 +6,75 @@ The Funkwhale backend is made up of lots of moving parts. This guide shows you h
If you have access to the Funkwhale backend, you can use logs to get more information about an issue. If you have access to the Funkwhale backend, you can use logs to get more information about an issue.
- __Reverse proxy logs__ check these logs if you have connectivity issues. - **Reverse proxy logs** check these logs if you have connectivity issues.
::::{tab-set} ::::{tab-set}
:::{tab-item} Nginx :::{tab-item} Nginx
:sync: nginx :sync: nginx
```{code-block} sh ```{code-block} sh
sudo tail -f /var/log/nginx/access.log # Follow the access log sudo tail -f /var/log/nginx/access.log # Follow the access log
sudo tail -f /var/log/nginx/error.log # Follow the error log sudo tail -f /var/log/nginx/error.log # Follow the error log
``` ```
::: :::
:::{tab-item} Apache2 :::{tab-item} Apache2
:sync: apache2 :sync: apache2
```{code-block} sh ```{code-block} sh
sudo tail -f /var/log/apache/access.log # Follow the access log sudo tail -f /var/log/apache/access.log # Follow the access log
sudo tail -f /var/log/apache/error.log # Follow the error log sudo tail -f /var/log/apache/error.log # Follow the error log
``` ```
```` ::::
- __API logs__ check these if you are having issues with the Funkwhale app, federation, or imports. - **API logs** check these if you are having issues with the Funkwhale app, federation, or imports.
::::{tab-set} ::::{tab-set}
:::{tab-item} Debian :::{tab-item} Debian
:sync: debian :sync: debian
```{code-block} sh ```{code-block} sh
journalctl -xn -u funkwhale-server journalctl -xn -u funkwhale-server
``` ```
::: :::
:::{tab-item} Docker :::{tab-item} Docker
:sync: docker :sync: docker
```{code-block} sh ```{code-block} sh
docker-compose logs -f --tail=50 api # Follow the last 50 messages docker-compose logs -f --tail=50 api # Follow the last 50 messages
``` ```
::: :::
:::: ::::
- __Celery logs__ check these if a federation or import task isn't working. - **Celery logs** check these if a federation or import task isn't working.
::::{tab-set} ::::{tab-set}
:::{tab-item} Debian :::{tab-item} Debian
:sync: debian :sync: debian
```{code-block} sh ```{code-block} sh
journalctl -xn -u funkwhale-worker journalctl -xn -u funkwhale-worker
``` ```
::: :::
:::{tab-item} Docker :::{tab-item} Docker
:sync: docker :sync: docker
```{code-block} sh ```{code-block} sh
docker-compose logs -f --tail=50 celery # Follow the last 50 messages docker-compose logs -f --tail=50 celery # Follow the last 50 messages
``` ```
::: :::
:::: ::::
## Troubleshoot issues ## Troubleshoot issues
@ -84,7 +84,7 @@ If the API isn't serving audio files, try the following:
- If youre using Docker, check you have commented out the `MEDIA_ROOT` variable in your `.env` file. - If youre using Docker, check you have commented out the `MEDIA_ROOT` variable in your `.env` file.
- Check the `_protected/media` block in your webserver points to your media path. This is `/srv/funkwhale/data/media` by default. - Check the `_protected/media` block in your webserver points to your media path. This is `/srv/funkwhale/data/media` by default.
- If youre using the in-place import, check you have configured your media paths. Check the `MUSIC_DIRECTORY_PATH`, `MUSIC_DIRECTORY_SERVE_PATH` and `REVERSE_PROXY_TYPE` variables in your `.env` file. Make sure the webserver can read these directories. - If youre using the in-place import, check you have configured your media paths. Check the `MUSIC_DIRECTORY_PATH`, `MUSIC_DIRECTORY_SERVE_PATH` and `REVERSE_PROXY_TYPE` variables in your `.env` file. Make sure the webserver can read these directories.
### Import issues ### Import issues

View File

@ -115,7 +115,7 @@ Once you have stopped the Funkwhale services, you can remove the Funkwhale datab
sudo -u postgres psql -c 'DROP USER funkwhale;' sudo -u postgres psql -c 'DROP USER funkwhale;'
``` ```
## Delete the Funkwhale account ## Delete the Funkwhale account
```{warning} ```{warning}
This action deletes the `/srv/funkwhale/` directory. Make sure you have [backed up any data](../upgrade_docs/backup.md) you want to keep. This action deletes the `/srv/funkwhale/` directory. Make sure you have [backed up any data](../upgrade_docs/backup.md) you want to keep.

View File

@ -115,7 +115,7 @@ Once you have stopped the Funkwhale services, you can remove the Funkwhale datab
sudo -u postgres psql -c 'DROP USER funkwhale;' sudo -u postgres psql -c 'DROP USER funkwhale;'
``` ```
## Delete the Funkwhale account ## Delete the Funkwhale account
```{warning} ```{warning}
This action deletes the `/srv/funkwhale/` directory. Make sure you have [backed up any data](../upgrade_docs/backup.md) you want to keep. This action deletes the `/srv/funkwhale/` directory. Make sure you have [backed up any data](../upgrade_docs/backup.md) you want to keep.

View File

@ -1,5 +1,3 @@
OAuthApplication: OAuthApplication:
type: "object" type: "object"
properties: properties:
@ -27,7 +25,6 @@ OAuthApplicationCreation:
format: "uri" format: "uri"
description: "Coma-separated list of redirect uris allowed for the app" description: "Coma-separated list of redirect uris allowed for the app"
ResultPage: ResultPage:
type: "object" type: "object"
properties: properties:
@ -481,7 +478,6 @@ AlbumTrack:
items: items:
$ref: "#/Upload" $ref: "#/Upload"
ListeningCreate: ListeningCreate:
type: "object" type: "object"
properties: properties:
@ -658,7 +654,6 @@ Playlist:
modification_date: modification_date:
$ref: "./properties.yml#/modification_date" $ref: "./properties.yml#/modification_date"
PlaylistCreate: PlaylistCreate:
type: "object" type: "object"
properties: properties:
@ -874,7 +869,7 @@ RadioSessionCreate:
related_object_id: related_object_id:
type: string type: string
default: null default: null
description: description: |
Value may be an integer depending of the `radio_type`. Value may be an integer depending of the `radio_type`.
Please refer to the `radio_type` documentation. Please refer to the `radio_type` documentation.

View File

@ -70,7 +70,6 @@ External:
default: null default: null
type: "boolean" type: "boolean"
Library: Library:
name: library name: library
in: query in: query
@ -136,7 +135,6 @@ Refresh:
default: false default: false
type: "boolean" type: "boolean"
Related: Related:
name: related name: related
in: query in: query
@ -145,7 +143,6 @@ Related:
type: integer type: integer
format: int64 format: int64
Scope: Scope:
name: "scope" name: "scope"
in: "query" in: "query"
@ -164,11 +161,11 @@ Scope:
default: "all" default: "all"
type: "string" type: "string"
enum: enum:
- "me" - "me"
- "all" - "all"
- "subscribed" - "subscribed"
- "actor:alice@example.com" - "actor:alice@example.com"
- "domain:example.com" - "domain:example.com"
ContentCategory: ContentCategory:
name: "content_category" name: "content_category"
@ -180,8 +177,8 @@ ContentCategory:
schema: schema:
type: "string" type: "string"
enum: enum:
- "podcast" - "podcast"
- "music" - "music"
Search: Search:
name: "q" name: "q"

View File

@ -1,4 +1,3 @@
description: description:
type: object type: object
description: Text content associated with another resource, like and artist or channel. description: Text content associated with another resource, like and artist or channel.

View File

@ -97,8 +97,8 @@ To fetch an authorization code, you need to send the user to their Funkwhale pod
To do this, call the `/authorize` endpoint with the following URL encoded query parameters: To do this, call the `/authorize` endpoint with the following URL encoded query parameters:
- `client_id`* - Your application's client ID - `client_id`\* - Your application's client ID
- `response_type`* - Must be set to `code`. - `response_type`\* - Must be set to `code`.
- `redirect_uri` - Your redirect URI - `redirect_uri` - Your redirect URI
- `scope` - A list of scopes - `scope` - A list of scopes
- `state` - Used to maintain state between the request and the callback to prevent cross-site request forgery. Typically corresponds with a location in the app (e.g. `/library`) - `state` - Used to maintain state between the request and the callback to prevent cross-site request forgery. Typically corresponds with a location in the app (e.g. `/library`)
@ -111,10 +111,10 @@ When the user authorizes your app, the server responds with an authorization cod
Once you receive your authorization code, you need to [request an access token](https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3). To request an access token, call the `/api/v1/oauth/token` endpoint with the following information: Once you receive your authorization code, you need to [request an access token](https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3). To request an access token, call the `/api/v1/oauth/token` endpoint with the following information:
- `grant_type`* - Must be set to `authorization_code` - `grant_type`\* - Must be set to `authorization_code`
- `code`* - Your application's authorization code - `code`\* - Your application's authorization code
- `redirect_uri`* - Your redirect URI - `redirect_uri`\* - Your redirect URI
- `client_id`* Your application's client ID - `client_id`\* Your application's client ID
The server responds with an [`access_token`](https://www.rfc-editor.org/rfc/rfc6749#section-1.4) and a [`refresh_token`](https://www.rfc-editor.org/rfc/rfc6749#section-1.5). See [the OAuth spec](https://www.rfc-editor.org/rfc/rfc6749#section-4.1.4) for more information about this response. The server responds with an [`access_token`](https://www.rfc-editor.org/rfc/rfc6749#section-1.4) and a [`refresh_token`](https://www.rfc-editor.org/rfc/rfc6749#section-1.5). See [the OAuth spec](https://www.rfc-editor.org/rfc/rfc6749#section-4.1.4) for more information about this response.
@ -130,8 +130,8 @@ By default, Funkwhale access tokens are valid for **10 hours**. Pod admins can c
After the access token expires, you must request a new access token by calling the `/api/v1/oauth/token` endpoint with the following information: After the access token expires, you must request a new access token by calling the `/api/v1/oauth/token` endpoint with the following information:
- `grant_type`* - Must be set to `refresh_token` - `grant_type`\* - Must be set to `refresh_token`
- `refresh_token`* - Your current refresh token - `refresh_token`\* - Your current refresh token
- `scope` - A list of scopes - `scope` - A list of scopes
See [the OAuth spec](https://www.rfc-editor.org/rfc/rfc6749#section-6) for more information about this response. See [the OAuth spec](https://www.rfc-editor.org/rfc/rfc6749#section-6) for more information about this response.

View File

@ -14,17 +14,17 @@ UI strings can be added to both the `<script>` and `<template>` part of a Vue fi
```json ```json
{ {
"components": { "components": {
"About": { "About": {
"title": "About", "title": "About",
"header": { "header": {
"funkwhale": "A social platform to enjoy and share music" "funkwhale": "A social platform to enjoy and share music"
}, },
"button": { "button": {
"cancel": "Cancel" "cancel": "Cancel"
}
} }
} }
}
} }
``` ```
@ -33,13 +33,13 @@ UI strings can be added to both the `<script>` and `<template>` part of a Vue fi
:::{tab-item} Script :::{tab-item} Script
```typescript ```typescript
import { useI18n } from 'vue-i18n' import { useI18n } from "vue-i18n";
//... //...
const { t } = useI18n() const { t } = useI18n();
//... //...
const labels = computed(() => ({ const labels = computed(() => ({
title: t('components.About.title') title: t("components.About.title"),
})) }));
``` ```
::: :::
@ -47,12 +47,8 @@ const labels = computed(() => ({
:::{tab-item} Template :::{tab-item} Template
```html ```html
<h2> <h2>{{ $t('components.About.header.funkwhale') }}</h2>
{{ $t('components.About.header.funkwhale') }} <button>{{ $t('components.About.button.cancel') }}</button>
</h2>
<button>
{{ $t('components.About.button.cancel') }}
</button>
``` ```
::: :::
@ -84,24 +80,24 @@ Some strings change depending on whether they are plural or not. You can create
```html ```html
<div class="description"> <div class="description">
<span <span
v-if="object.artist?.content_category === 'podcast'" v-if="object.artist?.content_category === 'podcast'"
class="meta ellipsis" class="meta ellipsis"
> >
{{ $t('components.audio.ChannelCard.meta.episodes', {episode_count: object.artist.tracks_count}) }} {{ $t('components.audio.ChannelCard.meta.episodes', {episode_count:
</span> object.artist.tracks_count}) }}
<span </span>
v-else <span v-else>
> {{ $t('components.audio.ChannelCard.meta.tracks', {tracks_count:
{{ $t('components.audio.ChannelCard.meta.tracks', {tracks_count: object.artist?.tracks_count}) }} object.artist?.tracks_count}) }}
</span> </span>
<tags-list <tags-list
label-classes="tiny" label-classes="tiny"
:truncate-size="20" :truncate-size="20"
:limit="2" :limit="2"
:show-more="false" :show-more="false"
:tags="object.artist?.tags ?? []" :tags="object.artist?.tags ?? []"
/> />
</div> </div>
``` ```

View File

@ -8,7 +8,7 @@ We currently use [Fomantic UI](https://fomantic-ui.com) as our UI framework. We
We apply changes to the Fomantic CSS files before we import them: We apply changes to the Fomantic CSS files before we import them:
1. We replace hardcoded color values with CSS variables to make themin easier. For example: ``color: orange`` is replaced by ``color: var(--vibrant-color)`` 1. We replace hardcoded color values with CSS variables to make themin easier. For example: `color: orange` is replaced by `color: var(--vibrant-color)`
2. We remove unused values from the CSS files to keep the size down 2. We remove unused values from the CSS files to keep the size down
These changes are applied when you run `yarn install` through a `postinstall` hook. If you want to modify these changes, check the `front/scripts/fix-fomantic-css.py` script. These changes are applied when you run `yarn install` through a `postinstall` hook. If you want to modify these changes, check the `front/scripts/fix-fomantic-css.py` script.

View File

@ -61,7 +61,6 @@ You can find the code for our routing logic here:
- [Routing logic for activities](https://dev.funkwhale.audio/funkwhale/funkwhale/blob/develop/api/funkwhale_api/federation/routes.py) - [Routing logic for activities](https://dev.funkwhale.audio/funkwhale/funkwhale/blob/develop/api/funkwhale_api/federation/routes.py)
- [Delivery logic for activities](https://dev.funkwhale.audio/funkwhale/funkwhale/blob/develop/api/funkwhale_api/federation/tasks.py) - [Delivery logic for activities](https://dev.funkwhale.audio/funkwhale/funkwhale/blob/develop/api/funkwhale_api/federation/tasks.py)
## Service actor ## Service actor
Funkwhale uses a dedicated service actor to send messages or authenticate fetches. This actor isn't associated to a user. Funkwhale uses a dedicated service actor to send messages or authenticate fetches. This actor isn't associated to a user.
@ -654,13 +653,17 @@ An `Audio` object is a custom object used to store upload information. It extend
::::{tab-set} ::::{tab-set}
:::{tab-item} Library :::{tab-item} Library
- Public libraries can be accessed by actors without restriction - Public libraries can be accessed by actors without restriction
- Restricted libraries can only be accessed if the HTTP request is signed by an actor who has an associated **approved** [`Follow` activity](#follow) - Restricted libraries can only be accessed if the HTTP request is signed by an actor who has an associated **approved** [`Follow` activity](#follow)
::: :::
:::{tab-item} Audio :::{tab-item} Audio
- Audio items in public libraries can be accessed by actors without restriction - Audio items in public libraries can be accessed by actors without restriction
- Audio items in restricted libraries can only be accessed if the HTTP request is signed by an actor who has an associated **approved** [`Follow` activity](#follow) - Audio items in restricted libraries can only be accessed if the HTTP request is signed by an actor who has an associated **approved** [`Follow` activity](#follow)
::: :::
:::: ::::

View File

@ -29,7 +29,7 @@ User-level plugins can also be used to import files from a third-party service,
### Hooks ### Hooks
**Hooks** are entrypoints that allow your plugin to listen to changes. You can create hooks to react to different events that occur in the Funkwhale application. **Hooks** are entrypoints that allow your plugin to listen to changes. You can create hooks to react to different events that occur in the Funkwhale application.
An example of this can be seen in our Scrobbler plugin. We register a `LISTENING_CREATED` hook to notify any registered callback function when a listening is recorded. When a user listens to a track, the `notfy_lastfm` function fires. An example of this can be seen in our Scrobbler plugin. We register a `LISTENING_CREATED` hook to notify any registered callback function when a listening is recorded. When a user listens to a track, the `notfy_lastfm` function fires.

View File

@ -6,27 +6,27 @@ Funkwhale can be run in Docker containers for local development. You can work on
2. [Install docker-compose](https://docs.docker.com/compose/install) 2. [Install docker-compose](https://docs.docker.com/compose/install)
3. Clone the Funkwhale repository to your system. The `develop` branch is checked out by default 3. Clone the Funkwhale repository to your system. The `develop` branch is checked out by default
::::{tab-set} ::::{tab-set}
:::{tab-item} SSH :::{tab-item} SSH
```sh ```sh
git clone git@dev.funkwhale.audio/funkwhale/funkwhale.git git clone git@dev.funkwhale.audio/funkwhale/funkwhale.git
cd funkwhale cd funkwhale
``` ```
::: :::
:::{tab-item} HTTPS :::{tab-item} HTTPS
```sh ```sh
git clone https://dev.funkwhale.audio/funkwhale/funkwhale.git git clone https://dev.funkwhale.audio/funkwhale/funkwhale.git
cd funkwhale cd funkwhale
``` ```
::: :::
:::: ::::
## Set up your Docker environment ## Set up your Docker environment
@ -44,22 +44,22 @@ To set up your Docker environment:
1. Create a `.env` file to enable customization of your setup. 1. Create a `.env` file to enable customization of your setup.
```sh ```sh
touch .env touch .env
``` ```
2. Add the following variables to load images and enable access to Django admin pages: 2. Add the following variables to load images and enable access to Django admin pages:
```text ```text
MEDIA_URL=http://localhost:8000/media/ MEDIA_URL=http://localhost:8000/media/
STATIC_URL=http://localhost:8000/staticfiles/ STATIC_URL=http://localhost:8000/staticfiles/
``` ```
3. Create a network for federation support 3. Create a network for federation support
```sh ```sh
docker network create federation docker network create federation
``` ```
Once you've set everything up, you need to build the containers. Run this command any time there are upstream changes or dependency changes to ensure you're up-to-date. Once you've set everything up, you need to build the containers. Run this command any time there are upstream changes or dependency changes to ensure you're up-to-date.
@ -83,17 +83,17 @@ You need to create some local data to mimic a production environment.
1. Create a superuser so you can log in to your local app: 1. Create a superuser so you can log in to your local app:
```sh ```sh
docker-compose -f dev.yml run --rm api pythong manage.py createsuperuser docker-compose -f dev.yml run --rm api pythong manage.py createsuperuser
``` ```
2. Add some fake data to populate the database. The following command creates 25 artists with random albums, tracks, and metadata. 2. Add some fake data to populate the database. The following command creates 25 artists with random albums, tracks, and metadata.
```sh ```sh
artists=25 # Adds 25 fake artists artists=25 # Adds 25 fake artists
command="from funkwhale_api.music import fake_data; fake_data.create_data($artists)" command="from funkwhale_api.music import fake_data; fake_data.create_data($artists)"
echo $command | docker-compose -f dev.yml run --rm -T api python manage.py shell -i python echo $command | docker-compose -f dev.yml run --rm -T api python manage.py shell -i python
``` ```
## Manage services ## Manage services
@ -101,15 +101,15 @@ Once you have set up your containers, bring them up to start working on them.
1. Compile the translations: 1. Compile the translations:
```sh ```sh
docker-compose -f dev.yml run --rm front yarn run i18n-compile docker-compose -f dev.yml run --rm front yarn run i18n-compile
``` ```
2. Launch all services: 2. Launch all services:
```sh ```sh
docker-compose -f dev.yml up front api nginx celeryworker docker-compose -f dev.yml up front api nginx celeryworker
``` ```
This gives you access to the following: This gives you access to the following:
@ -172,31 +172,31 @@ To run a reverse proxy for your app:
1. Add the following configuration to your `.env` file: 1. Add the following configuration to your `.env` file:
```text ```text
# Remove any port binding so you can specify this per-instance # Remove any port binding so you can specify this per-instance
VUE_PORT_BINDING= VUE_PORT_BINDING=
# Disable certificate validation # Disable certificate validation
EXTERNAL_REQUESTS_VERIFY_SSL=false EXTERNAL_REQUESTS_VERIFY_SSL=false
# Ensure all links use https # Ensure all links use https
FUNKWHALE_PROTOCOL=https FUNKWHALE_PROTOCOL=https
# Disable host ports binding for the nginx container so that traefik handles everything # Disable host ports binding for the nginx container so that traefik handles everything
NGINX_PORTS_MAPPING=80 NGINX_PORTS_MAPPING=80
``` ```
2. Launch traefik using the bundled configuration: 2. Launch traefik using the bundled configuration:
```sh ```sh
docker-compose -f docker/traefik.yml up -d docker-compose -f docker/traefik.yml up -d
``` ```
3. Set up as many different projects as you need. Make sure the `COMPOSE_PROJECT_NAME` and `VUE_PORT` variables are unique per instance 3. Set up as many different projects as you need. Make sure the `COMPOSE_PROJECT_NAME` and `VUE_PORT` variables are unique per instance
```sh ```sh
export COMPOSE_PROJECT_NAME=node2 export COMPOSE_PROJECT_NAME=node2
export VUE_PORT=1234 # this has to be unique for each instance export VUE_PORT=1234 # this has to be unique for each instance
docker-compose -f dev.yml run --rm api python manage.py migrate docker-compose -f dev.yml run --rm api python manage.py migrate
docker-compose -f dev.yml run --rm api python manage.py createsuperuser docker-compose -f dev.yml run --rm api python manage.py createsuperuser
docker-compose -f dev.yml up nginx api front nginx api celeryworker docker-compose -f dev.yml up nginx api front nginx api celeryworker
``` ```
You can access your project at `https://{COMPOSE_PROJECT_NAME}.funkwhale.test`. You can access your project at `https://{COMPOSE_PROJECT_NAME}.funkwhale.test`.

View File

@ -4,45 +4,45 @@ If you want to make changes to the frontend, you can use Vite to run a developme
1. Clone the repository: 1. Clone the repository:
::::{tab-set} ::::{tab-set}
:::{tab-item} SSH :::{tab-item} SSH
```sh ```sh
git clone git@dev.funkwhale.audio/funkwhale/funkwhale.git git clone git@dev.funkwhale.audio/funkwhale/funkwhale.git
cd funkwhale/front cd funkwhale/front
``` ```
::: :::
:::{tab-item} HTTPS :::{tab-item} HTTPS
```sh ```sh
git clone https://dev.funkwhale.audio/funkwhale/funkwhale.git git clone https://dev.funkwhale.audio/funkwhale/funkwhale.git
cd funkwhale/front cd funkwhale/front
``` ```
::: :::
:::: ::::
2. Install [Node.js](https://nodejs.org/en/download/package-manager/) and [Yarn](https://classic.yarnpkg.com/lang/en/docs/install/) 2. Install [Node.js](https://nodejs.org/en/download/package-manager/) and [Yarn](https://classic.yarnpkg.com/lang/en/docs/install/)
3. Install all dependencies: 3. Install all dependencies:
```sh ```sh
yarn install yarn install
``` ```
4. Compile the translations: 4. Compile the translations:
```sh ```sh
yarn i18n-compile yarn i18n-compile
``` ```
5. Launch the devlopment server: 5. Launch the devlopment server:
```sh ```sh
yarn dev yarn dev
``` ```
You can access the Funkwhale web app at `http://localhost:8000/front`. Connect this app to your pod by selecting {guilabel}`Switch instance` in the sidebar. You can access the Funkwhale web app at `http://localhost:8000/front`. Connect this app to your pod by selecting {guilabel}`Switch instance` in the sidebar.

View File

@ -10,29 +10,29 @@ Funkwhale uses GitLab's merge requests to manage changes. The workflow looks lik
6. Add a changelog fragment summarizing your changes 6. Add a changelog fragment summarizing your changes
7. Lint the codebase using the following command: 7. Lint the codebase using the following command:
::::{tab-set} ::::{tab-set}
:::{tab-item} API code :::{tab-item} API code
```sh ```sh
black --check --diff . # Run the black linter in the project root to highlight any new issues black --check --diff . # Run the black linter in the project root to highlight any new issues
``` ```
::: :::
:::{tab-item} Frontend code :::{tab-item} Frontend code
```sh ```sh
cd front cd front
yarn run eslint # Run eslint in the front directory yarn run eslint # Run eslint in the front directory
``` ```
::: :::
:::: ::::
8. Push your branch 8. Push your branch
9. Create a merge request in the GitLab frontend 9. Create a merge request in the GitLab frontend
10. We'll review your request and feed back 10. We'll review your request and feed back
```{mermaid} ```{mermaid}

View File

@ -4,75 +4,75 @@ Once we're ready to release a new version of the software, we can use the follow
1. Export the new release version 1. Export the new release version
```sh ```sh
export NEXT_RELEASE=1.3.0 export NEXT_RELEASE=1.3.0
``` ```
2. Export the previous release version 2. Export the previous release version
```sh ```sh
export PREVIOUS_RELEASE=1.2.9 export PREVIOUS_RELEASE=1.2.9
``` ```
3. Pull the latest version of the `develop` branch. Use `stable` if you're releasing a bugfix. 3. Pull the latest version of the `develop` branch. Use `stable` if you're releasing a bugfix.
::::{tab-set} ::::{tab-set}
:::{tab-item} Bugfix release :::{tab-item} Bugfix release
:sync: bugfix :sync: bugfix
```sh ```sh
git checkout stable git checkout stable
git pull git pull
``` ```
::: :::
:::{tab-item} Feature release :::{tab-item} Feature release
:sync: feature :sync: feature
```sh ```sh
git checkout develop git checkout develop
git pull git pull
``` ```
::: :::
:::: ::::
4. Compile the changelog 4. Compile the changelog
```sh ```sh
towncrier build --version $NEXT_RELEASE towncrier build --version $NEXT_RELEASE
``` ```
5. Check the output and fix typos and mistakes 5. Check the output and fix typos and mistakes
6. Add a list of contributors 6. Add a list of contributors
```sh ```sh
python3 scripts/get-contributions-stats.py $NEXT_RELEASE # Output a list of contributors python3 scripts/get-contributions-stats.py $NEXT_RELEASE # Output a list of contributors
git log $PREVIOUS_RELEASE.. --format="- %aN" --reverse | sort | uniq # Get a list of all commit authors git log $PREVIOUS_RELEASE.. --format="- %aN" --reverse | sort | uniq # Get a list of all commit authors
nano CHANGELOG # Add these lists to the CHANGELOG nano CHANGELOG # Add these lists to the CHANGELOG
``` ```
7. Update the `__version__` variable to the next release version 7. Update the `__version__` variable to the next release version
```sh ```sh
nano api/funkwhale_api/__init__.py nano api/funkwhale_api/__init__.py
``` ```
8. Commit all changes 8. Commit all changes
```sh ```sh
git add . git add .
git commit -m "Version bump and changelog for $NEXT_RELEASE" git commit -m "Version bump and changelog for $NEXT_RELEASE"
``` ```
9. Create a tag 9. Create a tag
```sh ```sh
git tag $NEXT_RELEASE git tag $NEXT_RELEASE
``` ```
10. Publish the new tag to GitLab 10. Publish the new tag to GitLab

View File

@ -121,7 +121,7 @@ changelog
:::{grid-item-card} :::{grid-item-card}
:text-align: center :text-align: center
{fa}`user` Users {fa}`user` Users
^^^ ^^^
Looking to use Funkwhale for your content? Read through our guides to master the app! Looking to use Funkwhale for your content? Read through our guides to master the app!

View File

@ -10,6 +10,7 @@ If you have allow-listing enabled, you need to add a domain to your allow-list t
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
## Add a new domain ## Add a new domain

View File

@ -1,6 +1,6 @@
# Allow-listing # Allow-listing
By default, Funkwhale communicates with all reachable pods on the {term}`Fediverse`. If you want to lock down which pods you interact with, your pod admin can enable __allow-listing__. With this enabled, only pods on your allow-list can interact with your pod. By default, Funkwhale communicates with all reachable pods on the {term}`Fediverse`. If you want to lock down which pods you interact with, your pod admin can enable **allow-listing**. With this enabled, only pods on your allow-list can interact with your pod.
If you didn't use allow-listing before, you can remove all content from pods not on your list. Check out our guide on [purging content](../domains/purge_domain.md) to remove this content. If you didn't use allow-listing before, you can remove all content from pods not on your list. Check out our guide on [purging content](../domains/purge_domain.md) to remove this content.

View File

@ -6,6 +6,7 @@ You can remove a domain from your {term}`pod's <Pod>` allow-list to stop communi
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
To remove a domain from your allow-list: To remove a domain from your allow-list:

View File

@ -11,6 +11,7 @@ Moderators can delete content from their {term}`pod` if required. Use this featu
- {guilabel}`Moderation` provides access to the administration menu. - {guilabel}`Moderation` provides access to the administration menu.
- {guilabel}`Library` provides access to the library menu. - {guilabel}`Library` provides access to the library menu.
::: :::
There are two ways to delete content: There are two ways to delete content:

View File

@ -4,13 +4,14 @@
Users can edit content in their own libraries. Moderators don't need to approve these edits. The edits appear in the __Edits__ queue to give admins and moderators a full timeline of changes. Users can edit content in their own libraries. Moderators don't need to approve these edits. The edits appear in the __Edits__ queue to give admins and moderators a full timeline of changes.
``` ```
Users can suggest metadata edits on objects they can access. When a user suggests an edit, it's sent to the __Edits__ queue for review. Moderators and pod admins can accept or reject these edits. Users can suggest metadata edits on objects they can access. When a user suggests an edit, it's sent to the **Edits** queue for review. Moderators and pod admins can accept or reject these edits.
:::{dropdown} Required permissions :::{dropdown} Required permissions
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration menu. - {guilabel}`Moderation` provides access to the administration menu.
- {guilabel}`Library` provides access to the library menu. - {guilabel}`Library` provides access to the library menu.
::: :::
Each edit object contains the following information: Each edit object contains the following information:

View File

@ -1,6 +1,6 @@
# Moderate content on your pod # Moderate content on your pod
If you have the __Library__ permission, you can change content on your pod. Use this permission to hide copyrighted content and remove offensive material. If you have the **Library** permission, you can change content on your pod. Use this permission to hide copyrighted content and remove offensive material.
```{toctree} ```{toctree}
--- ---

View File

@ -11,6 +11,7 @@ If a user has put copyrighted material in a public library, you can change the v
- {guilabel}`Moderation` provides access to the administration menu. - {guilabel}`Moderation` provides access to the administration menu.
- {guilabel}`Library` provides access to the library menu. - {guilabel}`Library` provides access to the library menu.
::: :::
To change the visibility of a library: To change the visibility of a library:

View File

@ -6,6 +6,7 @@ Funkwhale records the domains of other {term}`Fediverse` servers when users inte
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
You can also add domains to this list at any time to create rules before users interact with them. To do this: You can also add domains to this list at any time to create rules before users interact with them. To do this:

View File

@ -10,6 +10,7 @@ Add moderation rules to domains to control how they can interact with your {term
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
To add a moderation rule to a domain: To add a moderation rule to a domain:

View File

@ -6,6 +6,7 @@ If you no longer need a moderation rule, you can delete it completely. This allo
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
To delete an existing moderation rule: To delete an existing moderation rule:

View File

@ -10,6 +10,7 @@ You can change a moderation rule on a domain at any time.
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
To update an existing moderation rule: To update an existing moderation rule:
@ -25,10 +26,10 @@ To update an existing moderation rule:
4. Select {guilabel}`Domains` at the top of the page. The {guilabel}`Domains` page opens. You can see a list of known domains on this page. 4. Select {guilabel}`Domains` at the top of the page. The {guilabel}`Domains` page opens. You can see a list of known domains on this page.
5. Select the domain with the moderation rule you want to edit. The domain's moderation page opens. 5. Select the domain with the moderation rule you want to edit. The domain's moderation page opens.
6. Select {guilabel}`Edit` under the {guilabel}`This domain is subject to specific moderation rules` header. The moderation policy form opens. 6. Select {guilabel}`Edit` under the {guilabel}`This domain is subject to specific moderation rules` header. The moderation policy form opens.
7. __Optional__ Edit the following settings: 7. **Optional** Edit the following settings:
- {guilabel}`Enabled` toggle this switch to enable or disable the rule without deleting it. - {guilabel}`Enabled` toggle this switch to enable or disable the rule without deleting it.
- {guilabel}`Reason` update the reason for the moderation rule. - {guilabel}`Reason` update the reason for the moderation rule.
8. __Optional__ Update your moderation rule: 8. **Optional** Update your moderation rule:
- {guilabel}`Block everything` purge all content from this domain and block all content. - {guilabel}`Block everything` purge all content from this domain and block all content.
- {guilabel}`Reject media` only reject media files such as audio files, avatars, and album art. - {guilabel}`Reject media` only reject media files such as audio files, avatars, and album art.
9. Select {guilabel}`Update` to save your rule. 9. Select {guilabel}`Update` to save your rule.
@ -44,10 +45,10 @@ To update an existing moderation rule:
4. Select {guilabel}`Domains` at the top of the page. The {guilabel}`Domains` page opens. You can see a list of known domains on this page. 4. Select {guilabel}`Domains` at the top of the page. The {guilabel}`Domains` page opens. You can see a list of known domains on this page.
5. Select the domain with the moderation rule you want to edit. The domain's moderation page opens. 5. Select the domain with the moderation rule you want to edit. The domain's moderation page opens.
6. Select {guilabel}`Edit` under the {guilabel}`This domain is subject to specific moderation rules` header. The moderation policy form opens. 6. Select {guilabel}`Edit` under the {guilabel}`This domain is subject to specific moderation rules` header. The moderation policy form opens.
7. __Optional__ Edit the following settings: 7. **Optional** Edit the following settings:
- {guilabel}`Enabled` toggle this switch to enable or disable the rule without deleting it. - {guilabel}`Enabled` toggle this switch to enable or disable the rule without deleting it.
- {guilabel}`Reason` update the reason for the moderation rule. - {guilabel}`Reason` update the reason for the moderation rule.
8. __Optional__ Update your moderation rule: 8. **Optional** Update your moderation rule:
- {guilabel}`Block everything` purge all content from this domain and block all content. - {guilabel}`Block everything` purge all content from this domain and block all content.
- {guilabel}`Reject media` only reject media files such as audio files, avatars, and album art. - {guilabel}`Reject media` only reject media files such as audio files, avatars, and album art.
9. Select {guilabel}`Update` to save your rule. 9. Select {guilabel}`Update` to save your rule.

View File

@ -10,6 +10,7 @@ When users follow content from another domain that content is visible on your {t
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
To purge content from a domain: To purge content from a domain:

View File

@ -10,6 +10,7 @@ Add moderation rules to users to control how they can interact with your {term}`
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
To add a moderation rule to a user: To add a moderation rule to a user:

View File

@ -6,6 +6,7 @@ If you no longer need a moderation rule, you can delete it completely. This allo
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
To delete an existing moderation rule: To delete an existing moderation rule:

View File

@ -10,6 +10,7 @@ You can change a moderation rule on a user at any time.
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
To update an existing moderation rule: To update an existing moderation rule:
@ -25,10 +26,10 @@ To update an existing moderation rule:
4. Select {guilabel}`Users` at the top of the page. The {guilabel}`Users` page opens. You can see a list of known users on this page. 4. Select {guilabel}`Users` at the top of the page. The {guilabel}`Users` page opens. You can see a list of known users on this page.
5. Select the user with the moderation rule you want to edit. The user's moderation page opens. 5. Select the user with the moderation rule you want to edit. The user's moderation page opens.
6. Select {guilabel}`Edit` under the {guilabel}`This user is subject to specific moderation rules` header. The moderation policy form opens. 6. Select {guilabel}`Edit` under the {guilabel}`This user is subject to specific moderation rules` header. The moderation policy form opens.
7. __Optional__ Edit the following settings: 7. **Optional** Edit the following settings:
- {guilabel}`Enabled` toggle this switch to enable or disable the rule without deleting it. - {guilabel}`Enabled` toggle this switch to enable or disable the rule without deleting it.
- {guilabel}`Reason` update the reason for the moderation rule. - {guilabel}`Reason` update the reason for the moderation rule.
8. __Optional__ Update your moderation rule: 8. **Optional** Update your moderation rule:
- {guilabel}`Block everything` purge all content from this user and block all content. - {guilabel}`Block everything` purge all content from this user and block all content.
- {guilabel}`Reject media` only reject media files such as audio files, avatars, and album art. - {guilabel}`Reject media` only reject media files such as audio files, avatars, and album art.
9. Select {guilabel}`Update` to save your rule. 9. Select {guilabel}`Update` to save your rule.
@ -44,10 +45,10 @@ To update an existing moderation rule:
4. Select {guilabel}`Users` at the top of the page. The {guilabel}`Users` page opens. You can see a list of known users on this page. 4. Select {guilabel}`Users` at the top of the page. The {guilabel}`Users` page opens. You can see a list of known users on this page.
5. Select the user with the moderation rule you want to edit. The user's moderation page opens. 5. Select the user with the moderation rule you want to edit. The user's moderation page opens.
6. Select {guilabel}`Edit` under the {guilabel}`This user is subject to specific moderation rules` header. The moderation policy form opens. 6. Select {guilabel}`Edit` under the {guilabel}`This user is subject to specific moderation rules` header. The moderation policy form opens.
7. __Optional__ Edit the following settings: 7. **Optional** Edit the following settings:
- {guilabel}`Enabled` toggle this switch to enable or disable the rule without deleting it. - {guilabel}`Enabled` toggle this switch to enable or disable the rule without deleting it.
- {guilabel}`Reason` update the reason for the moderation rule. - {guilabel}`Reason` update the reason for the moderation rule.
8. __Optional__ Update your moderation rule: 8. **Optional** Update your moderation rule:
- {guilabel}`Block everything` purge all content from this user and block all content. - {guilabel}`Block everything` purge all content from this user and block all content.
- {guilabel}`Reject media` only reject media files such as audio files, avatars, and album art. - {guilabel}`Reject media` only reject media files such as audio files, avatars, and album art.
9. Select {guilabel}`Update` to save your rule. 9. Select {guilabel}`Update` to save your rule.

View File

@ -10,6 +10,7 @@ When users follow users from another domain their content is visible on your {te
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
To purge a user's content: To purge a user's content:

View File

@ -6,13 +6,14 @@
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
Requests appear in the {guilabel}`User Requests` list. Each request contains the following information: Requests appear in the {guilabel}`User Requests` list. Each request contains the following information:
- The user the request was {guilabel}`Submitted by` - The user the request was {guilabel}`Submitted by`
- The {guilabel}`Creation date` of the request. - The {guilabel}`Creation date` of the request.
- __Optional__ any responses the user left to fields in the sign-up form. - **Optional** any responses the user left to fields in the sign-up form.
- The {guilabel}`Status` of the request. - The {guilabel}`Status` of the request.
- Which moderator the request is {guilabel}`Assigned to`. - Which moderator the request is {guilabel}`Assigned to`.
- The {guilabel}`Resolution date` of the request. - The {guilabel}`Resolution date` of the request.

View File

@ -11,6 +11,7 @@ You can handle content reports from the {guilabel}`Reports` page or from the rep
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
- {guilabel}`Library` enables the moderator to delete objects. - {guilabel}`Library` enables the moderator to delete objects.
::: :::
```{contents} ```{contents}

View File

@ -6,6 +6,7 @@ If a user has reported another user on your pod, you can make changes to the rep
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
To open a user's moderation page: To open a user's moderation page:

View File

@ -6,11 +6,12 @@ Use internal notes to add information to a report. This can be a summary of your
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
## Add notes to a report ## Add notes to a report
You can add notes to __Unresolved__ and __Resolved__ reports. To add an internal note: You can add notes to **Unresolved** and **Resolved** reports. To add an internal note:
::::{tab-set} ::::{tab-set}
@ -45,7 +46,7 @@ You can add notes to __Unresolved__ and __Resolved__ reports. To add an internal
Deleting an internal note is irreversible. Make sure you are not deleting anything important. Deleting an internal note is irreversible. Make sure you are not deleting anything important.
``` ```
You can delete your own notes and the notes of other moderators. You can do this for both __Resolved__ and __Unresolved__ reports. To delete an internal note: You can delete your own notes and the notes of other moderators. You can do this for both **Resolved** and **Unresolved** reports. To delete an internal note:
::::{tab-set} ::::{tab-set}

View File

@ -6,6 +6,7 @@ The {guilabel}`Reports` page contains filters that enable you to search for repo
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
::::{tab-set} ::::{tab-set}

View File

@ -6,6 +6,7 @@ When a user reports an object on your {term}`pod`, the report gets sent to a mod
:icon: key :icon: key
- {guilabel}`Moderation` provides access to the administration and moderation menus. - {guilabel}`Moderation` provides access to the administration and moderation menus.
::: :::
## Check the Reports page ## Check the Reports page

View File

@ -1,10 +1,10 @@
# Change your activity visibility # Change your activity visibility
Your __activity visibility__ determines who can see your listening activity on Funkwhale. There are three visibility options: Your **activity visibility** determines who can see your listening activity on Funkwhale. There are three visibility options:
- __Nobody except me__ only you can see your listening activity. - **Nobody except me** only you can see your listening activity.
- __Everyone on this instance__ users who have an account on the same {term}`pod` as you can see your listening activity. - **Everyone on this instance** users who have an account on the same {term}`pod` as you can see your listening activity.
- __Everyone, across all instances__ anybody can see your listening activity. - **Everyone, across all instances** anybody can see your listening activity.
To change your activity visibility: To change your activity visibility:

View File

@ -1,6 +1,6 @@
# Check your upload quota # Check your upload quota
Your {term}`pod` admin can assign users an __upload quota__. This is the amount of storage you have access to. Pod admins can assign a default quota to all users. They can also increase or decrease quotas for individual users. Your upload quota applies to content in [libraries](../libraries/index.md) and [channels](../channels/index.md). Your {term}`pod` admin can assign users an **upload quota**. This is the amount of storage you have access to. Pod admins can assign a default quota to all users. They can also increase or decrease quotas for individual users. Your upload quota applies to content in [libraries](../libraries/index.md) and [channels](../channels/index.md).
If you run out of space, you can contact your pod admin to request more. If you run out of space, you can contact your pod admin to request more.

View File

@ -12,7 +12,7 @@ To use Funkwhale, you need to create an account on a {term}`Funkwhale pod <Pod>`
## Check your pod's policies ## Check your pod's policies
Before you sign up to a pod, you should check its __policies__. You can find these by navigating to the pod's {guilabel}`About this pod` page. Before you sign up to a pod, you should check its **policies**. You can find these by navigating to the pod's {guilabel}`About this pod` page.
1. Navigate to the pod. 1. Navigate to the pod.
2. Select the {guilabel}`About this pod` link in the sidebar. 2. Select the {guilabel}`About this pod` link in the sidebar.

View File

@ -14,7 +14,7 @@ You can create two types of channel:
## Artist discography ## Artist discography
To create an __Artist discography__ channel: To create an **Artist discography** channel:
::::{tab-set} ::::{tab-set}
@ -28,9 +28,9 @@ To create an __Artist discography__ channel:
5. Select {guilabel}`Artist discography` and select {guilabel}`Next step`. The {guilabel}`Artist channel` form appears. 5. Select {guilabel}`Artist discography` and select {guilabel}`Next step`. The {guilabel}`Artist channel` form appears.
6. Enter the {guilabel}`Name` of your channel. Users see this when they visit your channel page. 6. Enter the {guilabel}`Name` of your channel. Users see this when they visit your channel page.
7. Enter the {guilabel}`Fediverse handle` of your channel. This is how other Fediverse software identifies your channel. 7. Enter the {guilabel}`Fediverse handle` of your channel. This is how other Fediverse software identifies your channel.
8. __Optional__ upload a {guilabel}`Channel picture`. Users see this when they visit your channel page. Select {guilabel}`Browse…` to open a file picker. 8. **Optional** upload a {guilabel}`Channel picture`. Users see this when they visit your channel page. Select {guilabel}`Browse…` to open a file picker.
9. __Optional__ add {guilabel}`Tags` that describe your channel. Start typing in the {guilabel}`Search…` input box to find existing tags. You can also create new tags by typing them in and selecting them or hitting {kbd}`⏎ Return`. 9. **Optional** add {guilabel}`Tags` that describe your channel. Start typing in the {guilabel}`Search…` input box to find existing tags. You can also create new tags by typing them in and selecting them or hitting {kbd}`⏎ Return`.
10. __Optional__ enter a {guilabel}`Description` of your channel. You can {guilabel}`Write` using [Markdown](https://www.markdownguide.org/) syntax and {guilabel}`Preview` how it will look. Users see this when they visit your channel page. 10. **Optional** enter a {guilabel}`Description` of your channel. You can {guilabel}`Write` using [Markdown](https://www.markdownguide.org/) syntax and {guilabel}`Preview` how it will look. Users see this when they visit your channel page.
11. Select {guilabel}`Create channel` to create your channel. 11. Select {guilabel}`Create channel` to create your channel.
::: :::
@ -45,9 +45,9 @@ To create an __Artist discography__ channel:
5. Select {guilabel}`Artist discography` and select {guilabel}`Next step`. The {guilabel}`Artist channel` form appears. 5. Select {guilabel}`Artist discography` and select {guilabel}`Next step`. The {guilabel}`Artist channel` form appears.
6. Enter the {guilabel}`Name` of your channel. Users see this when they visit your channel page. 6. Enter the {guilabel}`Name` of your channel. Users see this when they visit your channel page.
7. Enter the {guilabel}`Fediverse handle` of your channel. This is how other Fediverse software identifies your channel. 7. Enter the {guilabel}`Fediverse handle` of your channel. This is how other Fediverse software identifies your channel.
8. __Optional__ upload a {guilabel}`Channel picture`. Users see this when they visit your channel page. Select {guilabel}`Browse…` to open a file picker. 8. **Optional** upload a {guilabel}`Channel picture`. Users see this when they visit your channel page. Select {guilabel}`Browse…` to open a file picker.
9. __Optional__ add {guilabel}`Tags` that describe your channel. Start typing in the {guilabel}`Search…` input box to find existing tags. You can also create new tags by typing them in and selecting them or hitting {kbd}`⏎ Return`. 9. **Optional** add {guilabel}`Tags` that describe your channel. Start typing in the {guilabel}`Search…` input box to find existing tags. You can also create new tags by typing them in and selecting them or hitting {kbd}`⏎ Return`.
10. __Optional__ enter a {guilabel}`Description` of your channel. You can {guilabel}`Write` using [Markdown](https://www.markdownguide.org/) syntax and {guilabel}`Preview` how it will look. Users see this when they visit your channel page. 10. **Optional** enter a {guilabel}`Description` of your channel. You can {guilabel}`Write` using [Markdown](https://www.markdownguide.org/) syntax and {guilabel}`Preview` how it will look. Users see this when they visit your channel page.
11. Select {guilabel}`Create channel` to create your channel. 11. Select {guilabel}`Create channel` to create your channel.
::: :::
@ -57,7 +57,7 @@ That's it! You've created your artist channel. You can now [add some music to it
## Podcast ## Podcast
To create a __Podcast__ channel: To create a **Podcast** channel:
::::{tab-set} ::::{tab-set}
@ -71,14 +71,14 @@ To create a __Podcast__ channel:
5. Select {guilabel}`Podcasts` and select {guilabel}`Next step`. The {guilabel}`Podcast channel` form appears. 5. Select {guilabel}`Podcasts` and select {guilabel}`Next step`. The {guilabel}`Podcast channel` form appears.
6. Enter the {guilabel}`Name` of your channel. Users see this when they visit your channel page. 6. Enter the {guilabel}`Name` of your channel. Users see this when they visit your channel page.
7. Enter the {guilabel}`Fediverse handle` of your channel. This is how other Fediverse software identifies your channel. 7. Enter the {guilabel}`Fediverse handle` of your channel. This is how other Fediverse software identifies your channel.
8. __Optional__ upload a {guilabel}`Channel picture`. Users see this when they visit your channel page. Select {guilabel}`Browse…` to open a file picker. 8. **Optional** upload a {guilabel}`Channel picture`. Users see this when they visit your channel page. Select {guilabel}`Browse…` to open a file picker.
9. __Optional__ add {guilabel}`Tags` that describe your channel. Start typing in the {guilabel}`Search…` input box to find existing tags. You can also create new tags by typing them in and selecting them or hitting {kbd}`⏎ Return`. 9. **Optional** add {guilabel}`Tags` that describe your channel. Start typing in the {guilabel}`Search…` input box to find existing tags. You can also create new tags by typing them in and selecting them or hitting {kbd}`⏎ Return`.
10. Choose the {guilabel}`Language` of your podcast. 10. Choose the {guilabel}`Language` of your podcast.
11. __Optional__ enter a {guilabel}`Description` of your channel. You can {guilabel}`Write` using [Markdown](https://www.markdownguide.org/) syntax and {guilabel}`Preview` how it will look. Users see this when they visit your channel page. 11. **Optional** enter a {guilabel}`Description` of your channel. You can {guilabel}`Write` using [Markdown](https://www.markdownguide.org/) syntax and {guilabel}`Preview` how it will look. Users see this when they visit your channel page.
12. Select the {guilabel}`Category` of your podcast. {term}`Podcatchers<Podcatcher>` use this information to sort your podcast content. 12. Select the {guilabel}`Category` of your podcast. {term}`Podcatchers<Podcatcher>` use this information to sort your podcast content.
13. __Optional__ select the {guilabel}`Subcategory` of your podcast. 13. **Optional** select the {guilabel}`Subcategory` of your podcast.
14. __Optional__ enter the {guilabel}`Owner e-mail address`. This populates the ``itunes:email`` field of your podcast's {abbr}`RSS (Really Simple Syndication)` feed. 14. **Optional** enter the {guilabel}`Owner e-mail address`. This populates the `itunes:email` field of your podcast's {abbr}`RSS (Really Simple Syndication)` feed.
15. __Optional__ enter the {guilabel}`Owner name`. This populates the ``itunes:name`` field of your podcast's {abbr}`RSS (Really Simple Syndication)` feed. 15. **Optional** enter the {guilabel}`Owner name`. This populates the `itunes:name` field of your podcast's {abbr}`RSS (Really Simple Syndication)` feed.
16. Select {guilabel}`Create channel` to create your channel. 16. Select {guilabel}`Create channel` to create your channel.
::: :::
@ -93,14 +93,14 @@ To create a __Podcast__ channel:
5. Select {guilabel}`Podcasts` and select {guilabel}`Next step`. The {guilabel}`Podcast channel` form appears. 5. Select {guilabel}`Podcasts` and select {guilabel}`Next step`. The {guilabel}`Podcast channel` form appears.
6. Enter the {guilabel}`Name` of your channel. Users see this when they visit your channel page. 6. Enter the {guilabel}`Name` of your channel. Users see this when they visit your channel page.
7. Enter the {guilabel}`Fediverse handle` of your channel. This is how other Fediverse software identifies your channel. 7. Enter the {guilabel}`Fediverse handle` of your channel. This is how other Fediverse software identifies your channel.
8. __Optional__ upload a {guilabel}`Channel picture`. Users see this when they visit your channel page. Select {guilabel}`Browse…` to open a file picker. 8. **Optional** upload a {guilabel}`Channel picture`. Users see this when they visit your channel page. Select {guilabel}`Browse…` to open a file picker.
9. __Optional__ add {guilabel}`Tags` that describe your channel. Start typing in the {guilabel}`Search…` input box to find existing tags. You can also create new tags by typing them in and selecting them or hitting {kbd}`⏎ Return`. 9. **Optional** add {guilabel}`Tags` that describe your channel. Start typing in the {guilabel}`Search…` input box to find existing tags. You can also create new tags by typing them in and selecting them or hitting {kbd}`⏎ Return`.
10. Choose the {guilabel}`Language` of your podcast. 10. Choose the {guilabel}`Language` of your podcast.
11. __Optional__ enter a {guilabel}`Description` of your channel. You can {guilabel}`Write` using [Markdown](https://www.markdownguide.org/) syntax and {guilabel}`Preview` how it will look. Users see this when they visit your channel page. 11. **Optional** enter a {guilabel}`Description` of your channel. You can {guilabel}`Write` using [Markdown](https://www.markdownguide.org/) syntax and {guilabel}`Preview` how it will look. Users see this when they visit your channel page.
12. Select the {guilabel}`Category` of your podcast. {term}`Podcatchers<Podcatcher>` use this information to sort your podcast content. 12. Select the {guilabel}`Category` of your podcast. {term}`Podcatchers<Podcatcher>` use this information to sort your podcast content.
13. __Optional__ select the {guilabel}`Subcategory` of your podcast. 13. **Optional** select the {guilabel}`Subcategory` of your podcast.
14. __Optional__ enter the {guilabel}`Owner e-mail address`. This populates the ``itunes:email`` field of your podcast's {abbr}`RSS (Really Simple Syndication)` feed. 14. **Optional** enter the {guilabel}`Owner e-mail address`. This populates the `itunes:email` field of your podcast's {abbr}`RSS (Really Simple Syndication)` feed.
15. __Optional__ enter the {guilabel}`Owner name`. This populates the ``itunes:name`` field of your podcast's {abbr}`RSS (Really Simple Syndication)` feed. 15. **Optional** enter the {guilabel}`Owner name`. This populates the `itunes:name` field of your podcast's {abbr}`RSS (Really Simple Syndication)` feed.
16. Select {guilabel}`Create channel` to create your channel. 16. Select {guilabel}`Create channel` to create your channel.
::: :::

View File

@ -14,7 +14,7 @@ You can change different details depending on what type of channel you are editi
## Edit an Artist channel ## Edit an Artist channel
To edit an __Artist channel__: To edit an **Artist channel**:
::::{tab-set} ::::{tab-set}
@ -59,7 +59,7 @@ That's it! You've updated your channel details. Users see the new details when t
## Edit a Podcast channel ## Edit a Podcast channel
To edit a __Podcast channel__: To edit a **Podcast channel**:
::::{tab-set} ::::{tab-set}

View File

@ -19,7 +19,7 @@ That's it! You've subscribed to the channel. You can see the channel in the {gui
## Follow a remote channel ## Follow a remote channel
To follow a channel located on another pod, you need its __Federation handle__. A __Federation handle__ uses the following format: ``@{username}@{domain}``. Once you have the channel's __Federation handle__, you can follow it from the {guilabel}`Channels` page. To do this: To follow a channel located on another pod, you need its **Federation handle**. A **Federation handle** uses the following format: `@{username}@{domain}`. Once you have the channel's **Federation handle**, you can follow it from the {guilabel}`Channels` page. To do this:
::::{tab-set} ::::{tab-set}
@ -29,7 +29,7 @@ To follow a channel located on another pod, you need its __Federation handle__.
1. Select {guilabel}`Channels` in the sidebar. The {guilabel}`Channels` page opens. 1. Select {guilabel}`Channels` in the sidebar. The {guilabel}`Channels` page opens.
2. Select {guilabel}`+ Add new` at the top of the page. The {guilabel}`Subscriptions` screen appears. 2. Select {guilabel}`+ Add new` at the top of the page. The {guilabel}`Subscriptions` screen appears.
3. Select {guilabel}`Fediverse`. 3. Select {guilabel}`Fediverse`.
4. Enter the channel's __Federation handle__ in the {guilabel}`Fediverse object` input. 4. Enter the channel's **Federation handle** in the {guilabel}`Fediverse object` input.
5. Select {guilabel}`Subscribe`. The channel details page appears. 5. Select {guilabel}`Subscribe`. The channel details page appears.
6. Select the {guilabel}`Subscribe}` button. The label changes to {guilabel}`Subscribed`. 6. Select the {guilabel}`Subscribe}` button. The label changes to {guilabel}`Subscribed`.
@ -42,7 +42,7 @@ To follow a channel located on another pod, you need its __Federation handle__.
2. Select {guilabel}`Channels`. The {guilabel}`Channels` page opens. 2. Select {guilabel}`Channels`. The {guilabel}`Channels` page opens.
3. Select {guilabel}`+ Add new` at the top of the page. The {guilabel}`Subscriptions` screen appears. 3. Select {guilabel}`+ Add new` at the top of the page. The {guilabel}`Subscriptions` screen appears.
4. Select {guilabel}`Fediverse`. 4. Select {guilabel}`Fediverse`.
5. Enter the channel's __Federation handle__ in the {guilabel}`Fediverse object` input. 5. Enter the channel's **Federation handle** in the {guilabel}`Fediverse object` input.
6. Select {guilabel}`Subscribe`. The channel details page appears. 6. Select {guilabel}`Subscribe`. The channel details page appears.
7. Select the {guilabel}`Subscribe}` button. The label changes to {guilabel}`Subscribed`. 7. Select the {guilabel}`Subscribe}` button. The label changes to {guilabel}`Subscribed`.

View File

@ -4,8 +4,8 @@ Use channels to publish your own audio content on Funkwhale. Channels enable you
Funkwhale supports two types of channel: Funkwhale supports two types of channel:
- __Podcasts__ broadcast your podcast over the Fediverse. Listeners can also use their favorite {term}`podcatcher` to listen to podcasts using {abbr}`RSS (Really Simple Syndication)`. - **Podcasts** broadcast your podcast over the Fediverse. Listeners can also use their favorite {term}`podcatcher` to listen to podcasts using {abbr}`RSS (Really Simple Syndication)`.
- __Artist Discography__ upload your own music and create a following. - **Artist Discography** upload your own music and create a following.
Follow the guides in this section to get started. Follow the guides in this section to get started.

View File

@ -52,7 +52,7 @@ Once you've created your album, you can add some details to it. To do this:
- {guilabel}`Release date` the release date of the album. - {guilabel}`Release date` the release date of the album.
- {guilabel}`Cover` the cover art of the album. - {guilabel}`Cover` the cover art of the album.
- {guilabel}`Tags` the genre of the album. - {guilabel}`Tags` the genre of the album.
5. __Optional__ enter a {guilabel}`Summary` of your changes. 5. **Optional** enter a {guilabel}`Summary` of your changes.
6. Select {guilabel}`Submit and apply edit` to save your changes. 6. Select {guilabel}`Submit and apply edit` to save your changes.
That's it! You can now add content to your album. That's it! You can now add content to your album.
@ -72,8 +72,8 @@ To add content to your channel:
4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens. 4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens.
5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears. 5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears.
6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default. 6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default.
7. __Optional__ choose which [{guilabel}`Album`](#create-an-album-optional) you want to publish the music in. 7. **Optional** choose which [{guilabel}`Album`](#create-an-album-optional) you want to publish the music in.
8. __Optional__ choose a {guilabel}`License` to apply to your music. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses. 8. **Optional** choose a {guilabel}`License` to apply to your music. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses.
9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears. 9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears.
10. Click on the section marked {guilabel}`Browse…` to open a file picker, or drag and drop your files on to it. 10. Click on the section marked {guilabel}`Browse…` to open a file picker, or drag and drop your files on to it.
- If you opened the file picker, select the files you want to upload and confirm. - If you opened the file picker, select the files you want to upload and confirm.
@ -90,8 +90,8 @@ To add content to your channel:
4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens. 4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens.
5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears. 5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears.
6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default. 6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default.
7. __Optional__ choose which [{guilabel}`Album`](#create-an-album-optional) you want to publish the music in. 7. **Optional** choose which [{guilabel}`Album`](#create-an-album-optional) you want to publish the music in.
8. __Optional__ choose a {guilabel}`License` to apply to your music. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses. 8. **Optional** choose a {guilabel}`License` to apply to your music. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses.
9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears. 9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears.
10. Click on the section marked {guilabel}`Browse…` to open a file picker. Select the files you want to upload and confirm. 10. Click on the section marked {guilabel}`Browse…` to open a file picker. Select the files you want to upload and confirm.
11. The files appear at the top when you upload them. Select {guilabel}`Remove` to remove them. 11. The files appear at the top when you upload them. Select {guilabel}`Remove` to remove them.
@ -131,8 +131,8 @@ If you selected {guilabel}`Finish later`, Funkwhale saves your files and edits.
4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens. 4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens.
5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears. 5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears.
6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default. 6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default.
7. __Optional__ choose which [{guilabel}`Album`](#create-an-album-optional) you want to publish the music in. 7. **Optional** choose which [{guilabel}`Album`](#create-an-album-optional) you want to publish the music in.
8. __Optional__ choose a {guilabel}`License` to apply to your music. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses. 8. **Optional** choose a {guilabel}`License` to apply to your music. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses.
9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears. 9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears.
10. If there are pending uploads, a {guilabel}`You have some draft uploads pending publication` note shows. Select {guilabel}`Resume` to resume your upload. 10. If there are pending uploads, a {guilabel}`You have some draft uploads pending publication` note shows. Select {guilabel}`Resume` to resume your upload.
11. [Add new files](#add-your-content) or [edit the pending files](#edit-your-uploads). 11. [Add new files](#add-your-content) or [edit the pending files](#edit-your-uploads).
@ -149,8 +149,8 @@ If you selected {guilabel}`Finish later`, Funkwhale saves your files and edits.
4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens. 4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens.
5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears. 5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears.
6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default. 6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default.
7. __Optional__ choose which [{guilabel}`Album`](#create-an-album-optional) you want to publish the music in. 7. **Optional** choose which [{guilabel}`Album`](#create-an-album-optional) you want to publish the music in.
8. __Optional__ choose a {guilabel}`License` to apply to your music. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses. 8. **Optional** choose a {guilabel}`License` to apply to your music. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses.
9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears. 9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears.
10. If there are pending uploads, a {guilabel}`You have some draft uploads pending publication` note shows. Select {guilabel}`Resume` to resume your upload. 10. If there are pending uploads, a {guilabel}`You have some draft uploads pending publication` note shows. Select {guilabel}`Resume` to resume your upload.
11. [Add new files](#add-your-content) or [edit the pending files](#edit-your-uploads). 11. [Add new files](#add-your-content) or [edit the pending files](#edit-your-uploads).

View File

@ -52,7 +52,7 @@ Once you've created your series, you can add some details to it. To do this:
- {guilabel}`Release date` the date on which the series aired. - {guilabel}`Release date` the date on which the series aired.
- {guilabel}`Cover` a cover image for the series. - {guilabel}`Cover` a cover image for the series.
- {guilabel}`Tags` tags relating to the series' content. - {guilabel}`Tags` tags relating to the series' content.
5. __Optional__ enter a {guilabel}`Summary` of your changes. 5. **Optional** enter a {guilabel}`Summary` of your changes.
6. Select {guilabel}`Submit and apply edit` to save your changes. 6. Select {guilabel}`Submit and apply edit` to save your changes.
That's it! Your series is ready to use. That's it! Your series is ready to use.
@ -72,8 +72,8 @@ To add content to your channel:
4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens. 4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens.
5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears. 5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears.
6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default. 6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default.
7. __Optional__ choose which [{guilabel}`Series`](#create-a-series-optional) you want to publish the content in. 7. **Optional** choose which [{guilabel}`Series`](#create-a-series-optional) you want to publish the content in.
8. __Optional__ choose a {guilabel}`License` to apply to your content. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses. 8. **Optional** choose a {guilabel}`License` to apply to your content. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses.
9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears. 9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears.
10. Click on the section marked {guilabel}`Browse…` to open a file picker, or drag and drop your files on to it. 10. Click on the section marked {guilabel}`Browse…` to open a file picker, or drag and drop your files on to it.
- If you opened the file picker, select the files you want to upload and confirm. - If you opened the file picker, select the files you want to upload and confirm.
@ -90,8 +90,8 @@ To add content to your channel:
4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens. 4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens.
5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears. 5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears.
6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default. 6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default.
7. __Optional__ choose which [{guilabel}`Series`](#create-a-series-optional) you want to publish the content in. 7. **Optional** choose which [{guilabel}`Series`](#create-a-series-optional) you want to publish the content in.
8. __Optional__ choose a {guilabel}`License` to apply to your content. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses. 8. **Optional** choose a {guilabel}`License` to apply to your content. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses.
9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears. 9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears.
10. Click on the section marked {guilabel}`Browse…` to open a file picker. Select the files you want to upload and confirm. 10. Click on the section marked {guilabel}`Browse…` to open a file picker. Select the files you want to upload and confirm.
11. The files appear at the top when you upload them. Select {guilabel}`Remove` to remove them. 11. The files appear at the top when you upload them. Select {guilabel}`Remove` to remove them.
@ -131,8 +131,8 @@ If you selected {guilabel}`Finish later`, Funkwhale saves your files and edits.
4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens. 4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens.
5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears. 5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears.
6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default. 6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default.
7. __Optional__ choose which [{guilabel}`Series`](#create-a-series-optional) you want to publish the content in. 7. **Optional** choose which [{guilabel}`Series`](#create-a-series-optional) you want to publish the content in.
8. __Optional__ choose a {guilabel}`License` to apply to your content. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses. 8. **Optional** choose a {guilabel}`License` to apply to your content. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses.
9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears. 9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears.
10. If there are pending uploads, a {guilabel}`You have some draft uploads pending publication` note shows. Select {guilabel}`Resume` to resume your upload. 10. If there are pending uploads, a {guilabel}`You have some draft uploads pending publication` note shows. Select {guilabel}`Resume` to resume your upload.
11. [Add new files](#add-your-content) or [edit the pending files](#edit-your-uploads). 11. [Add new files](#add-your-content) or [edit the pending files](#edit-your-uploads).
@ -149,8 +149,8 @@ If you selected {guilabel}`Finish later`, Funkwhale saves your files and edits.
4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens. 4. Select the channel you want to add content to under the {guilabel}`Channels` header. The channel's page opens.
5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears. 5. Select {guilabel}`⇧ Upload`. The {guilabel}`Publish audio` screen appears.
6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default. 6. Select the {guilabel}`Channel` you want to publish your audio in. This populates with the channel you selected by default.
7. __Optional__ choose which [{guilabel}`Series`](#create-a-series-optional) you want to publish the content in. 7. **Optional** choose which [{guilabel}`Series`](#create-a-series-optional) you want to publish the content in.
8. __Optional__ choose a {guilabel}`License` to apply to your content. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses. 8. **Optional** choose a {guilabel}`License` to apply to your content. Funkwhale supports [Creative Commons](https://creativecommons.org/) licenses.
9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears. 9. Select {guilabel}`Next step`. The {guilabel}`Files to upload` screen appears.
10. If there are pending uploads, a {guilabel}`You have some draft uploads pending publication` note shows. Select {guilabel}`Resume` to resume your upload. 10. If there are pending uploads, a {guilabel}`You have some draft uploads pending publication` note shows. Select {guilabel}`Resume` to resume your upload.
11. [Add new files](#add-your-content) or [edit the pending files](#edit-your-uploads). 11. [Add new files](#add-your-content) or [edit the pending files](#edit-your-uploads).

View File

@ -8,7 +8,7 @@ If you no longer want a track in your favorites list, you can remove it. There a
## Remove tracks from your favorites page ## Remove tracks from your favorites page
The easiest way to remove tracks from your favorites is using the __Favorites__ page. This page includes a list of all your favorites. To remove a track from this page: The easiest way to remove tracks from your favorites is using the **Favorites** page. This page includes a list of all your favorites. To remove a track from this page:
::::{tab-set} ::::{tab-set}

View File

@ -16,7 +16,7 @@ You can delete content from a library at any time. To do this:
3. Select {guilabel}`Get started` under {guilabel}`Upload third-party content in a library`. 3. Select {guilabel}`Get started` under {guilabel}`Upload third-party content in a library`.
4. A screen appears showing your upload quota and your libraries. 4. A screen appears showing your upload quota and your libraries.
5. Select {guilabel}`Library Details` under the library you want to edit. 5. Select {guilabel}`Library Details` under the library you want to edit.
6. Select the {guilabel}`✎ Edit` button at the top of the screen. 6. Select the {guilabel}`✎ Edit` button at the top of the screen.
7. Scroll down to the {guilabel}`Library contents` section. A list of tracks is shown. 7. Scroll down to the {guilabel}`Library contents` section. A list of tracks is shown.
8. Select the checkbox ({fa}`square`) next to the tracks you want to delete. Selected tracks show a tick ({fa}`check-square`). 8. Select the checkbox ({fa}`square`) next to the tracks you want to delete. Selected tracks show a tick ({fa}`check-square`).
9. Select {menuselection}`Actions --> Delete`. 9. Select {menuselection}`Actions --> Delete`.
@ -33,7 +33,7 @@ You can delete content from a library at any time. To do this:
3. Select {guilabel}`Get started` under {guilabel}`Upload third-party content in a library`. 3. Select {guilabel}`Get started` under {guilabel}`Upload third-party content in a library`.
4. A screen appears showing your upload quota and your libraries. 4. A screen appears showing your upload quota and your libraries.
5. Select {guilabel}`Library Details` under the library you want to edit. 5. Select {guilabel}`Library Details` under the library you want to edit.
6. Select the {guilabel}`✎ Edit` button at the top of the screen. 6. Select the {guilabel}`✎ Edit` button at the top of the screen.
7. Scroll down to the {guilabel}`Library contents` section. A list of tracks is shown. 7. Scroll down to the {guilabel}`Library contents` section. A list of tracks is shown.
8. Select the checkbox ({fa}`square`) next to the tracks you want to delete. Selected tracks show a tick ({fa}`check-square`). 8. Select the checkbox ({fa}`square`) next to the tracks you want to delete. Selected tracks show a tick ({fa}`check-square`).
9. Select {menuselection}`Actions --> Delete`. 9. Select {menuselection}`Actions --> Delete`.

View File

@ -28,7 +28,7 @@ To edit an artist:
- {guilabel}`Description` a description of the artist. This appears on the artist details page. - {guilabel}`Description` a description of the artist. This appears on the artist details page.
- {guilabel}`Cover` the cover image for the artist. This appears on the artist details page. - {guilabel}`Cover` the cover image for the artist. This appears on the artist details page.
- {guilabel}`Tags` the genre(s) the artist fits in. - {guilabel}`Tags` the genre(s) the artist fits in.
6. __Optional__ enter a {guilabel}`Summary` of your edits. 6. **Optional** enter a {guilabel}`Summary` of your edits.
7. Select {guilabel}`Submit and apply edit` to save your changes. 7. Select {guilabel}`Submit and apply edit` to save your changes.
::: :::
@ -46,7 +46,7 @@ To edit an artist:
- {guilabel}`Description` a description of the artist. This appears on the artist details page. - {guilabel}`Description` a description of the artist. This appears on the artist details page.
- {guilabel}`Cover` the cover image for the artist. This appears on the artist details page. - {guilabel}`Cover` the cover image for the artist. This appears on the artist details page.
- {guilabel}`Tags` the genre(s) the artist fits in. - {guilabel}`Tags` the genre(s) the artist fits in.
7. __Optional__ enter a {guilabel}`Summary` of your edits. 7. **Optional** enter a {guilabel}`Summary` of your edits.
8. Select {guilabel}`Submit and apply edit` to save your changes. 8. Select {guilabel}`Submit and apply edit` to save your changes.
::: :::
@ -73,7 +73,7 @@ To edit an album:
- {guilabel}`Release date` the release date of the album. - {guilabel}`Release date` the release date of the album.
- {guilabel}`Cover` the album cover art. - {guilabel}`Cover` the album cover art.
- {guilabel}`Tags` the genre(s) associated with the album. - {guilabel}`Tags` the genre(s) associated with the album.
6. __Optional__ enter a {guilabel}`Summary` of your edits. 6. **Optional** enter a {guilabel}`Summary` of your edits.
7. Select {guilabel}`Submit and apply edit` to save your changes. 7. Select {guilabel}`Submit and apply edit` to save your changes.
::: :::
@ -92,7 +92,7 @@ To edit an album:
- {guilabel}`Release date` the release date of the album. - {guilabel}`Release date` the release date of the album.
- {guilabel}`Cover` the album cover art. - {guilabel}`Cover` the album cover art.
- {guilabel}`Tags` the genre(s) associated with the album. - {guilabel}`Tags` the genre(s) associated with the album.
7. __Optional__ enter a {guilabel}`Summary` of your edits. 7. **Optional** enter a {guilabel}`Summary` of your edits.
8. Select {guilabel}`Submit and apply edit` to save your changes. 8. Select {guilabel}`Submit and apply edit` to save your changes.
::: :::
@ -121,7 +121,7 @@ To edit a track:
- {guilabel}`Copyright` the name of the copyright holder. - {guilabel}`Copyright` the name of the copyright holder.
- {guilabel}`License` the license of the track. Funkwhale supports [Creative Commons](https://creativecommons.org) licenses. Leave this blank if you aren't sure. - {guilabel}`License` the license of the track. Funkwhale supports [Creative Commons](https://creativecommons.org) licenses. Leave this blank if you aren't sure.
- {guilabel}`Tags` the genre(s) associated with the track. - {guilabel}`Tags` the genre(s) associated with the track.
6. __Optional__ enter a {guilabel}`Summary` of your edits. 6. **Optional** enter a {guilabel}`Summary` of your edits.
7. Select {guilabel}`Submit and apply edit` to save your changes. 7. Select {guilabel}`Submit and apply edit` to save your changes.
::: :::
@ -142,7 +142,7 @@ To edit a track:
- {guilabel}`Copyright` the name of the copyright holder. - {guilabel}`Copyright` the name of the copyright holder.
- {guilabel}`License` the license of the track. Funkwhale supports [Creative Commons](https://creativecommons.org) licenses. Leave this blank if you aren't sure. - {guilabel}`License` the license of the track. Funkwhale supports [Creative Commons](https://creativecommons.org) licenses. Leave this blank if you aren't sure.
- {guilabel}`Tags` the genre(s) associated with the track. - {guilabel}`Tags` the genre(s) associated with the track.
7. __Optional__ enter a {guilabel}`Summary` of your edits. 7. **Optional** enter a {guilabel}`Summary` of your edits.
8. Select {guilabel}`Submit and apply edit` to save your changes. 8. Select {guilabel}`Submit and apply edit` to save your changes.
::: :::

View File

@ -2,9 +2,9 @@
Libraries enable you to organize audio content you upload to your {term}`pod`. You can set the privacy level on libraries to control who can access them. Choose from the available privacy levels: Libraries enable you to organize audio content you upload to your {term}`pod`. You can set the privacy level on libraries to control who can access them. Choose from the available privacy levels:
- __Everyone, across all instances__ the library's content is available to everybody who interacts with your pod. This includes users of other pods. - **Everyone, across all instances** the library's content is available to everybody who interacts with your pod. This includes users of other pods.
- __Everyone on this instance__ the library's content is available to all users on your pod. This does not include users of other pods. - **Everyone on this instance** the library's content is available to all users on your pod. This does not include users of other pods.
- __Nobody except me__ the library's content is only available to you and people you share the library with. - **Nobody except me** the library's content is only available to you and people you share the library with.
Use libraries for private collections or freely licensed music you want to share. Use libraries for private collections or freely licensed music you want to share.

View File

@ -1,6 +1,6 @@
# ListenBrainz plugin # ListenBrainz plugin
The __ListenBrainz__ plugin enables you to submit ({term}`scrobble<Scrobbling>`) listens to your [ListenBrainz](https://listenbrainz.org) account. Scrobbling listens helps you build up a profile of your music tastes. It also enables you to keep a record of your listens. To set up the __ListenBrainz plugin__: The **ListenBrainz** plugin enables you to submit ({term}`scrobble<Scrobbling>`) listens to your [ListenBrainz](https://listenbrainz.org) account. Scrobbling listens helps you build up a profile of your music tastes. It also enables you to keep a record of your listens. To set up the **ListenBrainz plugin**:
::::{tab-set} ::::{tab-set}
@ -35,4 +35,4 @@ The __ListenBrainz__ plugin enables you to submit ({term}`scrobble<Scrobbling>`)
::: :::
:::: ::::
That's it! You've set up the __ListenBrainz__ plugin. When you listen to tracks, the plugin sends the information to ListenBrainz. That's it! You've set up the **ListenBrainz** plugin. When you listen to tracks, the plugin sends the information to ListenBrainz.

View File

@ -1,8 +1,8 @@
# Maloja plugin # Maloja plugin
The __Maloja__ plugin enables you to submit ({term}`scrobble <Scrobbling>`) listens to your Maloja server. [Maloja](https://github.com/krateng/maloja) is a self-hosted scrobbling service similar to [Last.fm](https://last.fm) and [ListenBrainz](https://listenbrainz.org). Check out [their documentation](https://github.com/krateng/maloja#how-to-install) to set up your own server. The **Maloja** plugin enables you to submit ({term}`scrobble <Scrobbling>`) listens to your Maloja server. [Maloja](https://github.com/krateng/maloja) is a self-hosted scrobbling service similar to [Last.fm](https://last.fm) and [ListenBrainz](https://listenbrainz.org). Check out [their documentation](https://github.com/krateng/maloja#how-to-install) to set up your own server.
Scrobbling listens helps you build up a profile of your music tastes. It also enables you to keep a record of your listens. To set up the __Maloja plugin__: Scrobbling listens helps you build up a profile of your music tastes. It also enables you to keep a record of your listens. To set up the **Maloja plugin**:
::::{tab-set} ::::{tab-set}
@ -39,4 +39,4 @@ Scrobbling listens helps you build up a profile of your music tastes. It also en
::: :::
:::: ::::
That's it! You've set up the __Maloja__ plugin. When you listen to tracks, the plugin sends the information to your Maloja server. That's it! You've set up the **Maloja** plugin. When you listen to tracks, the plugin sends the information to your Maloja server.

View File

@ -4,13 +4,13 @@
If you want to use [Last.fm](https://last.fm) to scrobble your listens, your pod admin needs to set up an API account. Contact your {term}`pod` admin if you have any questions. If you want to use [Last.fm](https://last.fm) to scrobble your listens, your pod admin needs to set up an API account. Contact your {term}`pod` admin if you have any questions.
``` ```
The __Scrobbler__ plugin enables you to submit ({term}`scrobble<Scrobbling>`) listens to a scrobbler service. Scrobbling listens helps you build up a profile of your music tastes. It also enables you to keep a record of your listens. The **Scrobbler** plugin enables you to submit ({term}`scrobble<Scrobbling>`) listens to a scrobbler service. Scrobbling listens helps you build up a profile of your music tastes. It also enables you to keep a record of your listens.
```{tip} ```{tip}
Using ListenBrainz or Maloja? Check out the [ListenBrainz](listenbrainz_plugin) and [Maloja](maloja_plugin) plugins! Using ListenBrainz or Maloja? Check out the [ListenBrainz](listenbrainz_plugin) and [Maloja](maloja_plugin) plugins!
``` ```
The __Scrobbler__ plugin supports any scrobbling service that uses the Audioscrobbler protocol. To set up the __Scrobbler plugin__: The **Scrobbler** plugin supports any scrobbling service that uses the Audioscrobbler protocol. To set up the **Scrobbler plugin**:
::::{tab-set} ::::{tab-set}
@ -24,7 +24,7 @@ The __Scrobbler__ plugin supports any scrobbling service that uses the Audioscro
5. Select {guilabel}`Manage plugins`. 5. Select {guilabel}`Manage plugins`.
6. Find the {guilabel}`Scrobbler` plugin. 6. Find the {guilabel}`Scrobbler` plugin.
7. Toggle the {guilabel}`Enabled` switch. 7. Toggle the {guilabel}`Enabled` switch.
8. Enter the {guilabel}`URL of the scrobbler service`. If you leave this field blank, the plugin defaults to __Last.fm__. 8. Enter the {guilabel}`URL of the scrobbler service`. If you leave this field blank, the plugin defaults to **Last.fm**.
9. Enter {guilabel}`Your scrobbler username`. You can set this up on your scrobbler service. 9. Enter {guilabel}`Your scrobbler username`. You can set this up on your scrobbler service.
10. Enter {guilabel}`Your scrobbler password`. You can set this up on your scrobbler service. 10. Enter {guilabel}`Your scrobbler password`. You can set this up on your scrobbler service.
11. Select {guilabel}`Save`. 11. Select {guilabel}`Save`.
@ -41,7 +41,7 @@ The __Scrobbler__ plugin supports any scrobbling service that uses the Audioscro
5. Select {guilabel}`Manage plugins`. 5. Select {guilabel}`Manage plugins`.
6. Find the {guilabel}`Scrobbler` plugin. 6. Find the {guilabel}`Scrobbler` plugin.
7. Toggle the {guilabel}`Enabled` switch. 7. Toggle the {guilabel}`Enabled` switch.
8. Enter the {guilabel}`URL of the scrobbler service`. If you leave this field blank, the plugin defaults to __Last.fm__. 8. Enter the {guilabel}`URL of the scrobbler service`. If you leave this field blank, the plugin defaults to **Last.fm**.
9. Enter {guilabel}`Your scrobbler username`. You can set this up on your scrobbler service. 9. Enter {guilabel}`Your scrobbler username`. You can set this up on your scrobbler service.
10. Enter {guilabel}`Your scrobbler password`. You can set this up on your scrobbler service. 10. Enter {guilabel}`Your scrobbler password`. You can set this up on your scrobbler service.
11. Select {guilabel}`Save`. 11. Select {guilabel}`Save`.
@ -49,4 +49,4 @@ The __Scrobbler__ plugin supports any scrobbling service that uses the Audioscro
::: :::
:::: ::::
That's it! You've set up the __Scrobbler__ plugin. When you listen to tracks, the plugin sends the information to your scrobbler service. That's it! You've set up the **Scrobbler** plugin. When you listen to tracks, the plugin sends the information to your scrobbler service.

View File

@ -1,11 +1,11 @@
# Add albums to your queue # Add albums to your queue
Add entire albums to your queue to start listening to them. Choose from the following __Play options__: Add entire albums to your queue to start listening to them. Choose from the following **Play options**:
- __Play__ remove all content from the queue and play the selected album. - **Play** remove all content from the queue and play the selected album.
- __Add to queue__ add the selected album to the end of the queue. - **Add to queue** add the selected album to the end of the queue.
- __Play next__ add the selected album to the next position in the queue. - **Play next** add the selected album to the next position in the queue.
- __Play now__ play the selected album immediately but do not clear the queue. - **Play now** play the selected album immediately but do not clear the queue.
You can add albums from the following places: You can add albums from the following places:
@ -18,7 +18,7 @@ You can add albums from the following places:
To add an album to the queue from the album details page: To add an album to the queue from the album details page:
1. Go to the album's details page. 1. Go to the album's details page.
2. Select the orange play button ({fa}`play`) to __Play__ the album. Select the dropdown icon ({fa}`caret-down`) to select a different __Play option__. 2. Select the orange play button ({fa}`play`) to **Play** the album. Select the dropdown icon ({fa}`caret-down`) to select a different **Play option**.
You're done! You've added the album to your queue. You're done! You've added the album to your queue.
@ -27,6 +27,6 @@ You're done! You've added the album to your queue.
To add an album from its album card: To add an album from its album card:
1. Find the album card in the interface. 1. Find the album card in the interface.
2. Select the orange play button ({fa}`play`) to __Play__ the album. Select the kebab menu ({fa}`ellipsis-v`) to select a different __Play option__. 2. Select the orange play button ({fa}`play`) to **Play** the album. Select the kebab menu ({fa}`ellipsis-v`) to select a different **Play option**.
That's it! You've added the album to your queue. That's it! You've added the album to your queue.

View File

@ -1,11 +1,11 @@
# Add artist discographies to your queue # Add artist discographies to your queue
Add an artist's entire discography to your queue to start listening to it. Choose from the following __Play options__: Add an artist's entire discography to your queue to start listening to it. Choose from the following **Play options**:
- __Play__ remove all content from the queue and play the artist's discography. - **Play** remove all content from the queue and play the artist's discography.
- __Add to queue__ add the selected artist's discography to the end of the queue. - **Add to queue** add the selected artist's discography to the end of the queue.
- __Play next__ add the selected artist's discography to the next position in the queue. - **Play next** add the selected artist's discography to the next position in the queue.
- __Play now__ play the artist's discography immediately but do not clear the queue. - **Play now** play the artist's discography immediately but do not clear the queue.
You can add an artist's discography from the following places: You can add an artist's discography from the following places:
@ -18,7 +18,7 @@ You can add an artist's discography from the following places:
To add an artist's discography to the queue from the artist details page: To add an artist's discography to the queue from the artist details page:
1. Go to the artist's details page. 1. Go to the artist's details page.
2. Select the orange play button ({fa}`play`) to __Play__ the album. Select the {guilabel}`More…` to select a different __Play option__. 2. Select the orange play button ({fa}`play`) to **Play** the album. Select the {guilabel}`More…` to select a different **Play option**.
You're done! You've added the artist's discography to your queue. You're done! You've added the artist's discography to your queue.
@ -27,6 +27,6 @@ You're done! You've added the artist's discography to your queue.
To add an artist's discography from their artist card: To add an artist's discography from their artist card:
1. Find the artist card in the interface. 1. Find the artist card in the interface.
2. Select the orange play button ({fa}`play`) to __Play__ the album. Select the kebab menu ({fa}`ellipsis-v`) to select a different __Play option__. 2. Select the orange play button ({fa}`play`) to **Play** the album. Select the kebab menu ({fa}`ellipsis-v`) to select a different **Play option**.
That's it! You've added the artist's discography to your queue. That's it! You've added the artist's discography to your queue.

View File

@ -1,11 +1,11 @@
# Add playlists to your queue # Add playlists to your queue
Add entire playlists to your queue to start listening to them. Choose from the following __Play options__: Add entire playlists to your queue to start listening to them. Choose from the following **Play options**:
- __Play__ remove all content from the queue and play the selected playlist. - **Play** remove all content from the queue and play the selected playlist.
- __Add to queue__ add the selected playlist to the end of the queue. - **Add to queue** add the selected playlist to the end of the queue.
- __Play next__ add the selected playlist to the next position in the queue. - **Play next** add the selected playlist to the next position in the queue.
- __Play now__ play the selected playlist immediately but do not clear the queue. - **Play now** play the selected playlist immediately but do not clear the queue.
You can add playlists from the following places: You can add playlists from the following places:
@ -18,7 +18,7 @@ You can add playlists from the following places:
To add an playlist to the queue from the playlist details page: To add an playlist to the queue from the playlist details page:
1. Go to the playlist's details page. 1. Go to the playlist's details page.
2. Select {guilabel}`Play all` to __Play__ the playlist. Select the dropdown icon ({fa}`caret-down`) to select a different __Play option__. 2. Select {guilabel}`Play all` to **Play** the playlist. Select the dropdown icon ({fa}`caret-down`) to select a different **Play option**.
You're done! You've added the playlist to your queue. You're done! You've added the playlist to your queue.
@ -27,6 +27,6 @@ You're done! You've added the playlist to your queue.
To add an playlist from its playlist card: To add an playlist from its playlist card:
1. Find the playlist card in the interface. 1. Find the playlist card in the interface.
2. Select the orange play button ({fa}`play`) to __Play__ the playlist. Select the kebab menu ({fa}`ellipsis-v`) to select a different __Play option__. 2. Select the orange play button ({fa}`play`) to **Play** the playlist. Select the kebab menu ({fa}`ellipsis-v`) to select a different **Play option**.
That's it! You've added the playlist to your queue. That's it! You've added the playlist to your queue.

View File

@ -1,15 +1,15 @@
# Add series to your queue # Add series to your queue
Add entire series to your queue to start listening to them. Choose from the following __Play options__: Add entire series to your queue to start listening to them. Choose from the following **Play options**:
- __Play__ remove all content from the queue and play the selected series. - **Play** remove all content from the queue and play the selected series.
- __Add to queue__ add the selected series to the end of the queue. - **Add to queue** add the selected series to the end of the queue.
- __Play next__ add the selected series to the next position in the queue. - **Play next** add the selected series to the next position in the queue.
- __Play now__ play the selected series immediately but do not clear the queue. - **Play now** play the selected series immediately but do not clear the queue.
To add a series to the queue from the album details page: To add a series to the queue from the album details page:
1. Go to the series' details page. 1. Go to the series' details page.
2. Select the orange play button ({fa}`play`) to __Play__ the series. Select the dropdown icon ({fa}`caret-down`) to select a different __Play option__. 2. Select the orange play button ({fa}`play`) to **Play** the series. Select the dropdown icon ({fa}`caret-down`) to select a different **Play option**.
You're done! You've added the series to your queue. You're done! You've added the series to your queue.

View File

@ -1,15 +1,15 @@
# Add tracks to your queue # Add tracks to your queue
Add tracks to your queue to start listening to them. Choose from the following __Play options__: Add tracks to your queue to start listening to them. Choose from the following **Play options**:
- __Play__ remove all content from the queue and play the selected track. - **Play** remove all content from the queue and play the selected track.
- __Add to queue__ add the selected track to the end of the queue. - **Add to queue** add the selected track to the end of the queue.
- __Play next__ add the selected track to the next position in the queue. - **Play next** add the selected track to the next position in the queue.
- __Play now__ play the selected track immediately but do not clear the queue. - **Play now** play the selected track immediately but do not clear the queue.
To add a track to the queue: To add a track to the queue:
1. Find your track in a track table. 1. Find your track in a track table.
2. Select the orange play button ({fa}`play`) to __Play__ the track. Select the kebab menu ({fa}`ellipsis-v`) to select a different __Play option__. 2. Select the orange play button ({fa}`play`) to **Play** the track. Select the kebab menu ({fa}`ellipsis-v`) to select a different **Play option**.
That's it! You've added the track to your queue. That's it! You've added the track to your queue.

View File

@ -4,7 +4,7 @@
If you add content from a __private__ library to a __public__ radio, users can see the tracks but can't play them. If you add content from a __private__ library to a __public__ radio, users can see the tracks but can't play them.
``` ```
Create a new radio to create a dynamic playlist of content based on filters. You can filter tracks by __Artist__ and __Tag__. Create a new radio to create a dynamic playlist of content based on filters. You can filter tracks by **Artist** and **Tag**.
To create a new radio: To create a new radio:
@ -16,13 +16,13 @@ To create a new radio:
1. Select {guilabel}`Radios` in the sidebar. The {guilabel}`Browsing radios` screen opens. 1. Select {guilabel}`Radios` in the sidebar. The {guilabel}`Browsing radios` screen opens.
2. Select {guilabel}`Create your own radio` under the {guilabel}`User radios` section. The {guilabel}`Builder` screen opens. 2. Select {guilabel}`Create your own radio` under the {guilabel}`User radios` section. The {guilabel}`Builder` screen opens.
3. Enter a {guilabel}`Radio name`. 3. Enter a {guilabel}`Radio name`.
4. __Optional__ enter a {guilabel}`Description` for your radio. 4. **Optional** enter a {guilabel}`Description` for your radio.
5. To make your radio available to other users on your {term}`pod`, enable the {guilabel}`Display publicly` switch. If you disable this switch, only you can see the radio. 5. To make your radio available to other users on your {term}`pod`, enable the {guilabel}`Display publicly` switch. If you disable this switch, only you can see the radio.
6. Select {guilabel}`Artist` or {guilabel}`Tag` from the {guilabel}`Select a filter` dropdown. 6. Select {guilabel}`Artist` or {guilabel}`Tag` from the {guilabel}`Select a filter` dropdown.
7. Select {guilabel}`Add filter` to add the filter to your radio. 7. Select {guilabel}`Add filter` to add the filter to your radio.
8. Configure your filter: 8. Configure your filter:
1. Enable the {guilabel}`Exclude` switch to exclude results from your selection in the radio. Disable this switch to include results from your selection in the radio. 1. Enable the {guilabel}`Exclude` switch to exclude results from your selection in the radio. Disable this switch to include results from your selection in the radio.
2. Choose your __Artists__ or __Tags__ in the {guilabel}`Config` dropdown menu. 2. Choose your **Artists** or **Tags** in the {guilabel}`Config` dropdown menu.
3. The {guilabel}`Candidates` column shows the number of tracks included. Select the {guilabel}`{count} tracks matching filter` option to view some of these tracks. 3. The {guilabel}`Candidates` column shows the number of tracks included. Select the {guilabel}`{count} tracks matching filter` option to view some of these tracks.
9. Check the tracks under the {guilabel}`{count} tracks matching combined filters` section. 9. Check the tracks under the {guilabel}`{count} tracks matching combined filters` section.
10. Select {guilabel}`Save` to save your radio. 10. Select {guilabel}`Save` to save your radio.
@ -36,13 +36,13 @@ To create a new radio:
2. Select {menuselection}`Explore --> Radios` or {menuselection}`My Library --> Radios`. The {guilabel}`Browsing radios` screen opens. 2. Select {menuselection}`Explore --> Radios` or {menuselection}`My Library --> Radios`. The {guilabel}`Browsing radios` screen opens.
3. Select {guilabel}`Create your own radio` under the {guilabel}`User radios` section. The {guilabel}`Builder` screen opens. 3. Select {guilabel}`Create your own radio` under the {guilabel}`User radios` section. The {guilabel}`Builder` screen opens.
4. Enter a {guilabel}`Radio name`. 4. Enter a {guilabel}`Radio name`.
5. __Optional__ enter a {guilabel}`Description` for your radio. 5. **Optional** enter a {guilabel}`Description` for your radio.
6. To make your radio available to other users on your {term}`pod`, enable the {guilabel}`Display publicly` switch. If you disable this switch, only you can see the radio. 6. To make your radio available to other users on your {term}`pod`, enable the {guilabel}`Display publicly` switch. If you disable this switch, only you can see the radio.
7. Select {guilabel}`Artist` or {guilabel}`Tag` from the {guilabel}`Select a filter` dropdown. 7. Select {guilabel}`Artist` or {guilabel}`Tag` from the {guilabel}`Select a filter` dropdown.
8. Select {guilabel}`Add filter` to add the filter to your radio. 8. Select {guilabel}`Add filter` to add the filter to your radio.
9. Configure your filter: 9. Configure your filter:
1. Enable the {guilabel}`Exclude` switch to exclude results from your selection in the radio. Disable this switch to include results from your selection in the radio. 1. Enable the {guilabel}`Exclude` switch to exclude results from your selection in the radio. Disable this switch to include results from your selection in the radio.
2. Choose your __Artists__ or __Tags__ in the {guilabel}`Config` dropdown menu. 2. Choose your **Artists** or **Tags** in the {guilabel}`Config` dropdown menu.
3. The {guilabel}`Candidates` column shows the number of tracks included. Select the {guilabel}`{count} tracks matching filter` option to view some of these tracks. 3. The {guilabel}`Candidates` column shows the number of tracks included. Select the {guilabel}`{count} tracks matching filter` option to view some of these tracks.
10. Check the tracks under the {guilabel}`{count} tracks matching combined filters` section. 10. Check the tracks under the {guilabel}`{count} tracks matching combined filters` section.
11. Select {guilabel}`Save` to save your radio. 11. Select {guilabel}`Save` to save your radio.

View File

@ -4,11 +4,11 @@ Radios are a great way to discover new music or rediscover old favorites. A radi
Funkwhale offers the following radios out of the box: Funkwhale offers the following radios out of the box:
- __Your content__ listen to content from [libraries](../libraries/index.md) you own. - **Your content** listen to content from [libraries](../libraries/index.md) you own.
- __Favorites__ listen to tracks from your [favorites](../favorites/index.md) list. - **Favorites** listen to tracks from your [favorites](../favorites/index.md) list.
- __Random__ discover something new by letting Funkwhale choose tracks at random. - **Random** discover something new by letting Funkwhale choose tracks at random.
- __Recently Added__ listen to the latest content added to your {term}`pod`. - **Recently Added** listen to the latest content added to your {term}`pod`.
- __Less listened__ check out tracks you've not heard, or things you haven't given as much attention. - **Less listened** check out tracks you've not heard, or things you haven't given as much attention.
```{toctree} ```{toctree}
--- ---

View File

@ -6,11 +6,11 @@ You can report a user account if the user is breaking the {term}`pod's <Pod>` ru
2. Select the kebab menu ({fa}`ellipsis-v`) to open the options menu. 2. Select the kebab menu ({fa}`ellipsis-v`) to open the options menu.
3. Select {guilabel}`Report {username}`. A {guilabel}`Do you want to report this object?` menu appears. 3. Select {guilabel}`Report {username}`. A {guilabel}`Do you want to report this object?` menu appears.
4. Select a {guilabel}`Category`. Choose one of the following: 4. Select a {guilabel}`Category`. Choose one of the following:
- __Takedown request__ request removal of copyrighted material. - **Takedown request** request removal of copyrighted material.
- __Illegal content__ report an account that features illegal content. - **Illegal content** report an account that features illegal content.
- __Offensive content__ report an account that features offensive or abusive content. - **Offensive content** report an account that features offensive or abusive content.
- __Other__ submit details of your report in the {guilabel}`Message` field. - **Other** submit details of your report in the {guilabel}`Message` field.
5. __If you are not logged in__ enter your {guilabel}`Email`. Pod moderators use this address to contact you. 5. **If you are not logged in** enter your {guilabel}`Email`. Pod moderators use this address to contact you.
6. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report. 6. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report.
7. Select {guilabel}`Submit report` to send your report to the pod moderators. 7. Select {guilabel}`Submit report` to send your report to the pod moderators.

View File

@ -6,12 +6,12 @@ If an album violates a {term}`pod's <Pod>` rules or the law, you can report it.
2. Select the kebab menu ({fa}`ellipsis-v`) to open the options menu. 2. Select the kebab menu ({fa}`ellipsis-v`) to open the options menu.
3. Select {guilabel}`Report this album`. A {guilabel}`Do you want to report this object?` menu appears. 3. Select {guilabel}`Report this album`. A {guilabel}`Do you want to report this object?` menu appears.
4. Select a {guilabel}`Category`. Choose one of the following: 4. Select a {guilabel}`Category`. Choose one of the following:
- __Takedown request__ request removal of copyrighted material. - **Takedown request** request removal of copyrighted material.
- __Illegal content__ report an album that features illegal content. - **Illegal content** report an album that features illegal content.
- __Offensive content__ report an album that features offensive or abusive content. - **Offensive content** report an album that features offensive or abusive content.
- __Invalid metadata__ report that an album features invalid metadata. - **Invalid metadata** report that an album features invalid metadata.
- __Other__ submit details of your report in the {guilabel}`Message` field. - **Other** submit details of your report in the {guilabel}`Message` field.
5. __If you are not logged in__ enter your {guilabel}`Email`. Pod moderators use this address to contact you. 5. **If you are not logged in** enter your {guilabel}`Email`. Pod moderators use this address to contact you.
6. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report. 6. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report.
7. Select {guilabel}`Submit report` to send your report to the pod moderators. 7. Select {guilabel}`Submit report` to send your report to the pod moderators.

View File

@ -6,12 +6,12 @@ If an artist's content violates a {term}`pod's <Pod>` rules or the law, you can
2. Select {guilabel}`More…` to open the options menu. 2. Select {guilabel}`More…` to open the options menu.
3. Select {guilabel}`Report this artist`. A {guilabel}`Do you want to report this object?` menu appears. 3. Select {guilabel}`Report this artist`. A {guilabel}`Do you want to report this object?` menu appears.
4. Select a {guilabel}`Category`. Choose one of the following: 4. Select a {guilabel}`Category`. Choose one of the following:
- __Takedown request__ request removal of copyrighted material. - **Takedown request** request removal of copyrighted material.
- __Illegal content__ report an artist that features illegal content. - **Illegal content** report an artist that features illegal content.
- __Offensive content__ report an artist that features offensive or abusive content. - **Offensive content** report an artist that features offensive or abusive content.
- __Invalid metadata__ report that an artist's content features invalid metadata. - **Invalid metadata** report that an artist's content features invalid metadata.
- __Other__ submit details of your report in the {guilabel}`Message` field. - **Other** submit details of your report in the {guilabel}`Message` field.
5. __If you are not logged in__ enter your {guilabel}`Email`. Pod moderators use this address to contact you. 5. **If you are not logged in** enter your {guilabel}`Email`. Pod moderators use this address to contact you.
6. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report. 6. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report.
7. Select {guilabel}`Submit report` to send your report to the pod moderators. 7. Select {guilabel}`Submit report` to send your report to the pod moderators.

View File

@ -6,12 +6,12 @@ If a channel's content violates a {term}`pod's <Pod>` rules or the law, you can
2. Select the kebab menu ({fa}`ellipsis-v`) to open the options menu. 2. Select the kebab menu ({fa}`ellipsis-v`) to open the options menu.
3. Select {guilabel}`Report this channel`. A {guilabel}`Do you want to report this object?` menu appears. 3. Select {guilabel}`Report this channel`. A {guilabel}`Do you want to report this object?` menu appears.
4. Select a {guilabel}`Category`. Choose one of the following: 4. Select a {guilabel}`Category`. Choose one of the following:
- __Takedown request__ request removal of copyrighted material. - **Takedown request** request removal of copyrighted material.
- __Illegal content__ report a channel that features illegal content. - **Illegal content** report a channel that features illegal content.
- __Offensive content__ report a channel that features offensive or abusive content. - **Offensive content** report a channel that features offensive or abusive content.
- __Invalid metadata__ report that a channel's content features invalid metadata. - **Invalid metadata** report that a channel's content features invalid metadata.
- __Other__ submit details of your report in the {guilabel}`Message` field. - **Other** submit details of your report in the {guilabel}`Message` field.
5. __If you are not logged in__ enter your {guilabel}`Email`. Pod moderators use this address to contact you. 5. **If you are not logged in** enter your {guilabel}`Email`. Pod moderators use this address to contact you.
6. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report. 6. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report.
7. Select {guilabel}`Submit report` to send your report to the pod moderators. 7. Select {guilabel}`Submit report` to send your report to the pod moderators.

View File

@ -6,12 +6,12 @@ If a channel's content violates a {term}`pod's <Pod>` rules or the law, you can
2. Select the kebab menu ({fa}`ellipsis-v`) to open the options menu. 2. Select the kebab menu ({fa}`ellipsis-v`) to open the options menu.
3. Select {guilabel}`Report this library`. A {guilabel}`Do you want to report this object?` menu appears. 3. Select {guilabel}`Report this library`. A {guilabel}`Do you want to report this object?` menu appears.
4. Select a {guilabel}`Category`. Choose one of the following: 4. Select a {guilabel}`Category`. Choose one of the following:
- __Takedown request__ request removal of copyrighted material. - **Takedown request** request removal of copyrighted material.
- __Illegal content__ report a library that features illegal content. - **Illegal content** report a library that features illegal content.
- __Offensive content__ report a library that features offensive or abusive content. - **Offensive content** report a library that features offensive or abusive content.
- __Invalid metadata__ report that a library's content features invalid metadata. - **Invalid metadata** report that a library's content features invalid metadata.
- __Other__ submit details of your report in the {guilabel}`Message` field. - **Other** submit details of your report in the {guilabel}`Message` field.
5. __If you are not logged in__ enter your {guilabel}`Email`. Pod moderators use this address to contact you. 5. **If you are not logged in** enter your {guilabel}`Email`. Pod moderators use this address to contact you.
6. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report. 6. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report.
7. Select {guilabel}`Submit report` to send your report to the pod moderators. 7. Select {guilabel}`Submit report` to send your report to the pod moderators.

View File

@ -12,12 +12,12 @@ If a playlist's content violates a {term}`pod's <Pod>` rules or the law, you can
3. Select the three dot menu ({fa}`ellipsis-h`) to open the options menu. 3. Select the three dot menu ({fa}`ellipsis-h`) to open the options menu.
4. Select {guilabel}`Report this playlist`. A {guilabel}`Do you want to report this object?` menu appears. 4. Select {guilabel}`Report this playlist`. A {guilabel}`Do you want to report this object?` menu appears.
5. Select a {guilabel}`Category`. Choose one of the following: 5. Select a {guilabel}`Category`. Choose one of the following:
- __Takedown request__ request removal of copyrighted material. - **Takedown request** request removal of copyrighted material.
- __Illegal content__ report a playlist that features illegal content. - **Illegal content** report a playlist that features illegal content.
- __Offensive content__ report a playlist that features offensive or abusive content. - **Offensive content** report a playlist that features offensive or abusive content.
- __Invalid metadata__ report that a playlist's content features invalid metadata. - **Invalid metadata** report that a playlist's content features invalid metadata.
- __Other__ submit details of your report in the {guilabel}`Message` field. - **Other** submit details of your report in the {guilabel}`Message` field.
6. __If you are not logged in__ enter your {guilabel}`Email`. Pod moderators use this address to contact you. 6. **If you are not logged in** enter your {guilabel}`Email`. Pod moderators use this address to contact you.
7. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report. 7. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report.
8. Select {guilabel}`Submit report` to send your report to the pod moderators. 8. Select {guilabel}`Submit report` to send your report to the pod moderators.
@ -32,12 +32,12 @@ If a playlist's content violates a {term}`pod's <Pod>` rules or the law, you can
4. Select the three dot menu ({fa}`ellipsis-h`) to open the options menu. 4. Select the three dot menu ({fa}`ellipsis-h`) to open the options menu.
5. Select {guilabel}`Report this playlist`. A {guilabel}`Do you want to report this object?` menu appears. 5. Select {guilabel}`Report this playlist`. A {guilabel}`Do you want to report this object?` menu appears.
6. Select a {guilabel}`Category`. Choose one of the following: 6. Select a {guilabel}`Category`. Choose one of the following:
- __Takedown request__ request removal of copyrighted material. - **Takedown request** request removal of copyrighted material.
- __Illegal content__ report a playlist that features illegal content. - **Illegal content** report a playlist that features illegal content.
- __Offensive content__ report a playlist that features offensive or abusive content. - **Offensive content** report a playlist that features offensive or abusive content.
- __Invalid metadata__ report that a playlist's content features invalid metadata. - **Invalid metadata** report that a playlist's content features invalid metadata.
- __Other__ submit details of your report in the {guilabel}`Message` field. - **Other** submit details of your report in the {guilabel}`Message` field.
7. __If you are not logged in__ enter your {guilabel}`Email`. Pod moderators use this address to contact you. 7. **If you are not logged in** enter your {guilabel}`Email`. Pod moderators use this address to contact you.
8. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report. 8. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report.
9. Select {guilabel}`Submit report` to send your report to the pod moderators. 9. Select {guilabel}`Submit report` to send your report to the pod moderators.

View File

@ -6,12 +6,12 @@ If a track violates a {term}`pod's <Pod>` rules or the law, you can report it. T
2. Select the kebab menu ({fa}`ellipsis-v`) to open the options menu. 2. Select the kebab menu ({fa}`ellipsis-v`) to open the options menu.
3. Select {guilabel}`Report this track`. A {guilabel}`Do you want to report this object?` menu appears. 3. Select {guilabel}`Report this track`. A {guilabel}`Do you want to report this object?` menu appears.
4. Select a {guilabel}`Category`. Choose one of the following: 4. Select a {guilabel}`Category`. Choose one of the following:
- __Takedown request__ request removal of copyrighted material. - **Takedown request** request removal of copyrighted material.
- __Illegal content__ report a track that features illegal content. - **Illegal content** report a track that features illegal content.
- __Offensive content__ report a track that features offensive or abusive content. - **Offensive content** report a track that features offensive or abusive content.
- __Invalid metadata__ report that a track features invalid metadata. - **Invalid metadata** report that a track features invalid metadata.
- __Other__ submit details of your report in the {guilabel}`Message` field. - **Other** submit details of your report in the {guilabel}`Message` field.
5. __If you are not logged in__ enter your {guilabel}`Email`. Pod moderators use this address to contact you. 5. **If you are not logged in** enter your {guilabel}`Email`. Pod moderators use this address to contact you.
6. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report. 6. Enter details of your report in the {guilabel}`Message` field. Provide as much detail as possible here to help the moderators action the report.
7. Select {guilabel}`Submit report` to send your report to the pod moderators. 7. Select {guilabel}`Submit report` to send your report to the pod moderators.

View File

@ -1,6 +1,4 @@
{ {
"additionalStylesheets": [ "additionalStylesheets": ["/front/custom.css"],
"/front/custom.css"
],
"defaultServerUrl": null "defaultServerUrl": null
} }

View File

@ -19,5 +19,11 @@
"~/*": ["src/*"] "~/*": ["src/*"]
} }
}, },
"include": ["src/**/*.d.ts", "src/**/*.ts", "src/**/*.vue", "vite.config.ts", "test/**/*.ts"] "include": [
"src/**/*.d.ts",
"src/**/*.ts",
"src/**/*.vue",
"vite.config.ts",
"test/**/*.ts"
]
} }