diff --git a/.codespellignore b/.codespellignore index e69de29bb..2d8cce628 100644 --- a/.codespellignore +++ b/.codespellignore @@ -0,0 +1,12 @@ +followings +inforce +keypair +nam +nd +readby +serie +upto + +# Names +nin +noe diff --git a/CHANGELOG b/CHANGELOG index fcf398559..a5f7cf23f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -401,7 +401,7 @@ Due to a bug in our CI Pipeline frontend artifacts are not available at https://dev.funkwhale.audio/funkwhale/funkwhale/builds/artifacts/1.2.0/download?job=build_front as they would usually. Please use this URL to get your frontend build: https://dev.funkwhale.audio/funkwhale/funkwhale/-/jobs/81069/artifacts/download -If you are running the All-in-One-Container since a longer time, you probably need to manually migrate your database information. If thats the case, you will get a message like this: +If you are running the All-in-One-Container since a longer time, you probably need to manually migrate your database information. If that's the case, you will get a message like this: `DETAIL: The data directory was initialized by PostgreSQL version 11, which is not compatible with this version 13.5.` @@ -409,7 +409,7 @@ Make sure the Funkwhale version is set to `1.1.4` in `docker-compose.yml`. Now y `docker-compose exec -T funkwhale pg_dump -c -U funkwhale > "db.dump"` -Now you can update the Funkwhale version in `docker-compose.yml` to `1.2.0`. Additionally you should save your `data` directory, eg by running `mv data data.bak && mkdir data`. Stop Funkwhale and start it again with the new version, by using `docker-compose down && docker-compose up -d`. This will initialize a fresh DB and applies all migrations. Now you can restore your database with the following command: `cat db.dump | docker-compose exec -T funkwhale psql -U funkwhale`. Thats it, enjoy! +Now you can update the Funkwhale version in `docker-compose.yml` to `1.2.0`. Additionally you should save your `data` directory, eg by running `mv data data.bak && mkdir data`. Stop Funkwhale and start it again with the new version, by using `docker-compose down && docker-compose up -d`. This will initialize a fresh DB and applies all migrations. Now you can restore your database with the following command: `cat db.dump | docker-compose exec -T funkwhale psql -U funkwhale`. That's it, enjoy! Features: @@ -446,7 +446,7 @@ Bugfixes: - Fix showing too long radio descriptions (#1556) - Fix X-Frame-Options HTTP header for embed and force it to SAMEORIGIN value for other pages (fix #1022) - Fix before last track starts playing when last track removed (#1485) -- Fix delete account button is not disalbed when missing password (#1591) +- Fix delete account button is not disabled when missing password (#1591) - Fix omputed properties already defined in components data (#1649) - Fix the all in one docker image building process, related to #1503 - Fix crash in album moderation interface when missing cover (#1474) @@ -458,7 +458,7 @@ Bugfixes: - Sanitize remote tracks' saving locations with slashes on their names (#1435) - Show embed option for channel tracks (#1278) - Store volume in logarithmic scale and convert when setting it to audio (fixes #1543) -- Use global Howler volume instead of setting it separatly for each track (fixes #1542) +- Use global Howler volume instead of setting it separately for each track (fixes #1542) Documentation: @@ -916,7 +916,7 @@ Features: - Allow users to hide compilation artists on the artist search page (#1053) - Can now launch server import from the UI (#1105) - Dedicated, advanced search page (#370) -- Persist theme and language settings accross sessions (#996) +- Persist theme and language settings across sessions (#996) Enhancements: @@ -1008,13 +1008,13 @@ Enhancements: Bugfixes: -- Fix embedded player not working on channel serie/album (#1175) +- Fix embedded player not working on channel series/album (#1175) - Fixed broken mimetype detection during import (#1165) - Fixed crash when loading recent albums via Subsonic (#1158) - Fixed crash with null help text in admin (#1161) - Fixed invalid metadata when importing multi-artists tracks/albums (#1104) - Fixed player crash when using Funkwhale as a PWA (#1157) -- Fixed wrong covert art displaying in some situations (#1138) +- Fixed wrong convert art displaying in some situations (#1138) - Make channel card updated times more humanly readable, add internationalization (#1089) Contributors to this release (development, documentation, reviews): @@ -1041,7 +1041,7 @@ Enhancements: - Fix HTML not including instance name in some situations (#1107) - Make URL-building logic more resilient against reverse proxy misconfiguration (#1085) - Removed unused masonry dependency (#1112) -- Support for specifying itunes:email and itunes:name in channels for compatibiliy with third-party platforms (#1154) +- Support for specifying itunes:email and itunes:name in channels for compatibility with third-party platforms (#1154) - Updated the /api/v1/libraries endpoint to support listing public libraries from other users/pods (#1151) @@ -1234,7 +1234,7 @@ Upgrade from Postgres 10 to 11 [manual action required, docker all-in-one only] With our upgrade to Alpine 3.10, the ``funkwhale/all-in-one`` image now includes PostgreSQL 11. -In order to update to Funkwhale 0.21, you will first need to uprade Funkwhale's PostgreSQL database, following the steps below:: +In order to update to Funkwhale 0.21, you will first need to upgrade Funkwhale's PostgreSQL database, following the steps below:: # open a shell as the Funkwhale user sudo -u funkwhale -H bash @@ -1611,7 +1611,7 @@ Then reload the configuration change with ``sudo systemctl daemon-reload`` and ` Content-Security-Policy and additional security headers [manual action suggested] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -To improve the security and reduce the attack surface in case of a successfull exploit, we suggest +To improve the security and reduce the attack surface in case of a successful exploit, we suggest you add the following Content-Security-Policy to your nginx configuration. ..note:: @@ -1664,7 +1664,7 @@ Then reload nginx with ``systemctl reload nginx``. # Simply copy-paste the /front/ location, but replace the following lines: location /front/embed.html { add_header X-Frame-Options "ALLOW"; - alias /frontent/embed.html; + alias /frontend/embed.html; } } @@ -1676,7 +1676,7 @@ Rate limiting With this release, rate-limiting on the API is enabled by default, with high enough limits to ensure regular users of the app aren't affected. Requests beyond allowed limits are answered with a 429 HTTP error. -For anonymous requests, the limit is applied to the IP adress of the client, and for authenticated requests, the limit +For anonymous requests, the limit is applied to the IP address of the client, and for authenticated requests, the limit is applied to the corresponding user account. By default, anonymous requests get a lower limit than authenticated requests. You can disable the rate-limiting feature by adding `THROTTLING_ENABLED=false` to your ``.env`` file and restarting the @@ -1825,7 +1825,7 @@ Bugfixes: - Use ASCII filename before upload to S3 to avoid playback issues (#847) -Contributors to this release (commiters and reviewers): +Contributors to this release (committers and reviewers): - Ciarán Ainsworth - Creak @@ -1986,7 +1986,7 @@ Enhancements: - Expose an instance-level actor (service@domain) in nodeinfo endpoint (#689) - Improved readability of logo (#385) - Keep persistent connections to the database instead of recreating a new one for each request -- Labels for privacy levels are now consistently grabbed from a common source instead of being hardcoded everytime they are needed. +- Labels for privacy levels are now consistently grabbed from a common source instead of being hardcoded every time they are needed. - Merged artist/album buttons with title text on artist and album pages (#725) - Now honor maxBitrate parameter in Subsonic API (#802) - Preload next track in queue (#572) @@ -2008,7 +2008,7 @@ Bugfixes: - Do not consider tracks as duplicates during import if they have different positions (#740) - Ensure all our ActivityPub fetches are authenticated (#758) - Ensure correct track duration and playable status when browsing radios (#812) -- Fixed alignement/size issue with some buttons (#702) +- Fixed alignment/size issue with some buttons (#702) - Fixed an encoding issue with instance name on about page (#828) - Fixed cover not showing in queue/player when playing tracks from "albums" tab (#795) - Fixed crashing upload processing on invalid date format (#718) @@ -2028,7 +2028,7 @@ Documentation: - Document how to use Redis over unix sockets (#770) -Contributors to this release (commiters and translators): +Contributors to this release (committers and translators): - Ale London - Alexander @@ -2090,7 +2090,7 @@ Enhancements: Bugfixes: - Avoid mixed content when deploying mono-container behind HTTPS proxy (thetarkus/docker-funkwhale#19) -- Display new notifications immediatly on notifications page (#729) +- Display new notifications immediately on notifications page (#729) - Ensure cover art from uploaded files is picked up properly on existing albums (#757) - Fixed a crash when federating a track with unspecified position - Fixed broken Activity and Actor modules in django admin (#767) @@ -2232,7 +2232,7 @@ Bugfixes: - Fix transcoding of in-place imported tracks (#688) - Fixed celery worker defaulting to development settings instead of production - Fixed crashing Django admin when loading track detail page (#666) -- Fixed list icon alignement on landing page (#668) +- Fixed list icon alignment on landing page (#668) - Fixed overescaping issue in notifications and album page (#676) - Fixed wrong number of affected elements in bulk action modal (#683) - Fixed wrong URL in documentation for funkwhale_proxy.conf file when deploying using Docker @@ -2257,7 +2257,7 @@ Many thanks to the dozens of people that contributed to this release: translator bug hunters, admins and backers. You made it possible! Upgrade instructions are available at -https://docs.funkwhale.audio/admin/upgrading.html, ensure you also execute the intructions +https://docs.funkwhale.audio/admin/upgrading.html, ensure you also execute the instructions marked with ``[manual action required]`` and ``[manual action suggested]``. See ``Full changelog`` below for an exhaustive list of changes! @@ -2477,7 +2477,7 @@ Enhancements: - Load env file in config/.env automatically to avoid sourcing it by hand (#626) - More resilient date parsing during audio import, will not crash anymore on invalid dates (#622) -- Now start radios immediatly, skipping any existing tracks in queue (#585) +- Now start radios immediately, skipping any existing tracks in queue (#585) - Officially support connecting to a password protected redis server, with the redis://:password@localhost:6379/0 scheme (#640) - Performance improvement when fetching favorites, down to a single, small http request @@ -2505,11 +2505,11 @@ Bugfixes: - Allow opus file upload (#598) - Do not display "view on MusicBrainz" button if we miss the mbid (#422) - Do not try to create unaccent extension if it's already present (#663) -- Ensure admin links in sidebar are displayed for users with relavant permissions, and only them (#597) -- Fix broken websocket connexion under Chrome browser (#589) +- Ensure admin links in sidebar are displayed for users with relevant permissions, and only them (#597) +- Fix broken websocket connection under Chrome browser (#589) - Fix play button not starting playback with empty queue (#632) - Fixed a styling inconsistency on about page when instance description was missing (#659) -- Fixed a UI discrepency in playlist tracks count (#647) +- Fixed a UI discrepancy in playlist tracks count (#647) - Fixed greyed tracks in radio builder and detail page (#637) - Fixed inconsistencies in subsonic error responses (#616) - Fixed incorrect icon for "next track" in player control (#613) @@ -2517,7 +2517,7 @@ Bugfixes: - Fixed missing track count on various library cards (#581) - Fixed skipped track when appending multiple tracks to the queue under certain conditions (#209) - Fixed wrong album/track count on artist page (#599) -- Hide unplayable/emtpy playlists in "Browse playlist" pages (#424) +- Hide unplayable/empty playlists in "Browse playlist" pages (#424) - Initial UI render using correct language from browser (#644) - Invalid URI for reverse proxy websocket with apache (#617) - Properly encode Wikipedia and lyrics search urls (#470) @@ -2566,7 +2566,7 @@ Bugfixes: or adding tracks to queue (#464) - Fix broken icons in playlist editor (#515) - Fixed a few untranslated strings (#559) -- Fixed splitted album when importing from federation (#346) +- Fixed split album when importing from federation (#346) - Fixed toggle mute in volume bar does not restore previous volume level (#514) - Fixed wrong env file URL and display bugs in deployment documentation (#520) - Fixed wrong title in PlayButton (#435) @@ -2841,7 +2841,7 @@ Features: - Complete redesign of the library home and playlist pages (#284) - Expose ActivityPub actors for users (#317) -- Implemented a basic but functionnal Github-like search on federated tracks +- Implemented a basic but functional Github-like search on federated tracks list (#344) - Internationalized interface as well as translations for Arabic, French, Esperanto, Italian, Occitan, Polish, Portuguese and Swedish (#161, #167) @@ -3002,7 +3002,7 @@ This is the type of query you can run: - ``artist:"System of a Down" domain:instance.funkwhale`` search for results where artist name equals "System of a Down" and inside "instance.funkwhale" library -Ensure MEDIA_ROOT, STATIC_ROOT and MUSIC_DIRECTORY_* are set explicitely [Manual action required] +Ensure MEDIA_ROOT, STATIC_ROOT and MUSIC_DIRECTORY_* are set explicitly [Manual action required] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ In our default .env file, MEDIA_ROOT and STATIC_ROOT were commented by default, causing @@ -3122,10 +3122,10 @@ Invitations generation and management requires the "settings" permission. Removed front-end and back-end coupling ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Eventhough Funkwhale's front-end has always been a Single Page Application, +Even though Funkwhale's front-end has always been a Single Page Application, talking to an API, it was only able to talk to an API on the same domain. -There was no real technical justification behind this (only lazyness), and it was +There was no real technical justification behind this (only laziness), and it was also blocking interesting use cases: - Use multiple customized versions of the front-end with the same instance @@ -3168,7 +3168,7 @@ Bugfixes: - Ensure radios can only be edited and deleted by their owners (#311) - Fixed admin menu not showing after login (#245) - Fixed broken pagination in Subsonic API (#295) -- Fixed duplicated websocket connexion on timeline (#287) +- Fixed duplicated websocket connection on timeline (#287) Documentation: @@ -3404,7 +3404,7 @@ Bugfixes: (#106) - Fixed a few broken translations strings (#227) - Fixed broken ordering in front-end lists (#179) -- Fixed ignored page_size paremeter on artist and favorites list (#240) +- Fixed ignored page_size parameter on artist and favorites list (#240) - Read ID3Tag Tracknumber from TRCK (#220) - We now fetch album covers regardless of the import methods (#231) @@ -3426,7 +3426,7 @@ This is the first bit of an ongoing work that will span several releases, to bring more powerful library management features to Funkwhale. This iteration includes a basic file management interface where users with the "library" permission can list and search available files, order them using -various criterias (size, bitrate, duration...) and delete them. +various criteria (size, bitrate, duration...) and delete them. New "upload" permission ^^^^^^^^^^^^^^^^^^^^^^^ @@ -3534,10 +3534,10 @@ tend to be a lot bigger than other files, you may want to increase the ``client_max_body_size`` value in your Nginx configuration if you plan to upload flac files. -Missing subsonic configuration bloc in vhost files +Missing subsonic configuration block in vhost files ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Because of a missing bloc in the sample Nginx and Apache configurations, +Because of a missing block in the sample Nginx and Apache configurations, instances that were deployed after the 0.13 release are likely to be unable to answer to Subsonic clients (the missing bits were properly documented in the changelog). @@ -3620,7 +3620,7 @@ additional information about audio files: - Duration This change is not retroactive, meaning already imported files will lack those -informations. The interface and API should work as before in such case, however, +information. The interface and API should work as before in such case, however, we offer a command to deal with legacy files and populate the missing values. On docker setups: @@ -3724,7 +3724,7 @@ Most advanced Subsonic clients support offline caching of music files, playlist management and search, which makes them well-suited for nomadic use. Please see `our list of supported apps <https://funkwhale.audio/en_US/apps>`_ -for more informations about supported clients and user instructions. +for more information about supported clients and user instructions. At the instance-level, the Subsonic API is enabled by default, but require and additional endpoint to be added in you reverse-proxy configuration. @@ -3907,7 +3907,7 @@ of emails: - Password reset emails, enabling user to reset their password without an admin's intervention Email sending is disabled by default, as it requires additional configuration. -In this mode, emails are simply outputed on stdout. +In this mode, emails are simply outputted on stdout. If you want to actually send those emails to your users, you should edit your .env file and tweak the ``EMAIL_CONFIG`` variable. See :data:`EMAIL_CONFIG <config.settings.common.EMAIL_CONFIG>` @@ -4046,7 +4046,7 @@ This is for real this time, and includes: - Following other Funkwhale libraries - Importing tracks from remote libraries (tracks are hotlinked, and only cached for a short amount of time) -- Searching accross federated catalogs +- Searching across federated catalogs Note that by default, federation is opt-in, on a per-instance basis: instances will request access to your catalog, and you can accept or refuse @@ -4196,7 +4196,7 @@ Bugfixes: - Fixed broken import request admin (#115) - Fixed forced redirection to login event with API_AUTHENTICATION_REQUIRED=False (#119) -- Fixed position not being reseted properly when playing the same track +- Fixed position not being reset properly when playing the same track multiple times in a row - Fixed synchronized start/stop radio buttons for all custom radios (#103) - Fixed typo and missing icon on homepage (#96) @@ -4269,7 +4269,7 @@ To prepare for new realtime features and enable websocket support in Funkwhale, we are now using django-channels and daphne to serve HTTP and websocket traffic. This replaces gunicorn and the switch should be easy assuming you -follow the upgrade process described bellow. +follow the upgrade process described below. If you are using docker, please remove the command instruction inside the api service, as the up-to-date command is now included directly in the image @@ -4400,7 +4400,7 @@ Basic transcoding is now available to/from the following formats : ogg and mp3. This relies internally on FFMPEG and can put some load on your server. It's definitely recommended you setup some caching for the transcoded files -at your webserver level. Check the the exemple nginx file at deploy/nginx.conf +at your webserver level. Check the the example nginx file at deploy/nginx.conf for an implementation. On the frontend, usage of transcoding should be transparent in the player. @@ -4454,7 +4454,7 @@ an import is made. 0.3.1 ------------------ -- Revamped all import logic, everything is more tested and consistend +- Revamped all import logic, everything is more tested and consistent - Can now use Acoustid in file imports to automatically grab metadata from musicbrainz - Brand new file import wizard @@ -4513,7 +4513,7 @@ Tech: Features: -- Models: now store relese group mbid on Album model (#7) +- Models: now store release group mbid on Album model (#7) - Models: now bind import job to track files (#44) Bugfixes: diff --git a/api/compose/django/entrypoint.sh b/api/compose/django/entrypoint.sh index ed3725419..df6f83374 100755 --- a/api/compose/django/entrypoint.sh +++ b/api/compose/django/entrypoint.sh @@ -5,7 +5,7 @@ set -e # environment variables just to support cookiecutter out of the box. That makes no sense, so this little entrypoint # does all this for us. if [ -z "$DATABASE_URL" ]; then - # the official postgres image uses 'postgres' as default user if not set explictly. + # the official postgres image uses 'postgres' as default user if not set explicitly. if [ -z "$POSTGRES_ENV_POSTGRES_USER" ]; then export POSTGRES_ENV_POSTGRES_USER=postgres fi diff --git a/api/config/settings/common.py b/api/config/settings/common.py index 075520a59..9b05d82e5 100644 --- a/api/config/settings/common.py +++ b/api/config/settings/common.py @@ -81,7 +81,7 @@ Path to a .env file to load """ if env_file: logger.info("Loading specified env file at %s", env_file) - # we have an explicitely specified env file + # we have an explicitly specified env file # so we try to load and it fail loudly if it does not exist env.read_env(env_file) else: @@ -493,7 +493,7 @@ bucket. ACLs and bucket policies are distinct concepts, and some storage providers (ie Linode, Scaleway) will always apply the most restrictive between -a bucket's ACL and policy, meaning a default private ACL will supercede +a bucket's ACL and policy, meaning a default private ACL will supersede a relaxed bucket policy. If present, the value should be a valid canned ACL. @@ -1258,7 +1258,7 @@ able to read this directory. Don’t insert a slash at the end of this path. """ -# When this is set to default=True, we need to reenable migration music/0042 +# When this is set to default=True, we need to re-enable migration music/0042 # to ensure data is populated correctly on existing pods MUSIC_USE_DENORMALIZATION = env.bool("MUSIC_USE_DENORMALIZATION", default=True) diff --git a/api/funkwhale_api/common/search.py b/api/funkwhale_api/common/search.py index 4664db462..a56ec89d3 100644 --- a/api/funkwhale_api/common/search.py +++ b/api/funkwhale_api/common/search.py @@ -11,7 +11,7 @@ QUERY_REGEX = re.compile(r'(((?P<key>\w+):)?(?P<value>"[^"]+"|[\S]+))') def parse_query(query): """ Given a search query such as "hello is:issue status:opened", - returns a list of dictionnaries discribing each query token + returns a list of dictionaries describing each query token """ matches = [m.groupdict() for m in QUERY_REGEX.finditer(query.lower())] for m in matches: @@ -25,7 +25,7 @@ def normalize_query( findterms=re.compile(r'"([^"]+)"|(\S+)').findall, normspace=re.compile(r"\s{2,}").sub, ): - """Splits the query string in invidual keywords, getting rid of unecessary spaces + """Splits the query string in individual keywords, getting rid of unnecessary spaces and grouping quoted words together. Example: diff --git a/api/funkwhale_api/common/utils.py b/api/funkwhale_api/common/utils.py index 63be15464..0863488f5 100644 --- a/api/funkwhale_api/common/utils.py +++ b/api/funkwhale_api/common/utils.py @@ -138,7 +138,7 @@ def chunk_queryset(source_qs, chunk_size): def join_url(start, end): if end.startswith("http://") or end.startswith("https://"): - # alread a full URL, joining makes no sense + # already a full URL, joining makes no sense return end if start.endswith("/") and end.startswith("/"): return start + end[1:] diff --git a/api/funkwhale_api/common/validators.py b/api/funkwhale_api/common/validators.py index 93a22075e..ee69391e4 100644 --- a/api/funkwhale_api/common/validators.py +++ b/api/funkwhale_api/common/validators.py @@ -97,7 +97,7 @@ class FileValidator: "MIME type '%(mimetype)s' is not valid. Allowed types are: %(allowed_mimetypes)s." ) min_size_message = _( - "The current file %(size)s, which is too small. The minumum file size is %(allowed_size)s." + "The current file %(size)s, which is too small. The minimum file size is %(allowed_size)s." ) max_size_message = _( "The current file %(size)s, which is too large. The maximum file size is %(allowed_size)s." diff --git a/api/funkwhale_api/contrib/scrobbler/scrobbler.py b/api/funkwhale_api/contrib/scrobbler/scrobbler.py index 38a6477ff..3eb220a2b 100644 --- a/api/funkwhale_api/contrib/scrobbler/scrobbler.py +++ b/api/funkwhale_api/contrib/scrobbler/scrobbler.py @@ -59,7 +59,7 @@ def submit_scrobble_v1(session, scrobble_time, track, session_key, scrobble_url) else: raise ScrobblerException(response.text) - PLUGIN["logger"].debug("Scrobble successfull!") + PLUGIN["logger"].debug("Scrobble successful!") def submit_now_playing_v1(session, track, session_key, now_playing_url): @@ -75,7 +75,7 @@ def submit_now_playing_v1(session, track, session_key, now_playing_url): else: raise ScrobblerException(response.text) - PLUGIN["logger"].debug("Now playing successfull!") + PLUGIN["logger"].debug("Now playing successful!") def get_scrobble_payload(track, date, suffix="[0]"): diff --git a/api/funkwhale_api/federation/activity.py b/api/funkwhale_api/federation/activity.py index 2a41d4b89..e76c82a5d 100644 --- a/api/funkwhale_api/federation/activity.py +++ b/api/funkwhale_api/federation/activity.py @@ -424,7 +424,7 @@ def is_allowed_url(url, allowed_domains): def prepare_deliveries_and_inbox_items(recipient_list, type, allowed_domains=None): """ Given a list of recipients ( - either actor instances, public adresses, a dictionnary with a "type" and "target" + either actor instances, public addresses, a dictionary with a "type" and "target" keys for followers collections) returns a list of deliveries, alist of inbox_items and a list of urls to persist in the activity in place of the initial recipient list. diff --git a/api/funkwhale_api/federation/jsonld.py b/api/funkwhale_api/federation/jsonld.py index 44d4035f2..26020b9dd 100644 --- a/api/funkwhale_api/federation/jsonld.py +++ b/api/funkwhale_api/federation/jsonld.py @@ -96,7 +96,7 @@ async def fetch_many(*ids, references=None): """ Given a list of object ids, will fetch the remote representations for those objects, expand them - and return a dictionnary with id as the key and expanded document as the values + and return a dictionary with id as the key and expanded document as the values """ ids = set(ids) results = references if references is not None else {} @@ -122,7 +122,7 @@ DEFAULT_PREPARE_CONFIG = { def dereference(value, references): """ - Given a payload and a dictonary containing ids and objects, will replace + Given a payload and a dictionary containing ids and objects, will replace all the matching objects in the payload by the one in the references dictionary. """ @@ -166,10 +166,10 @@ def get_value(value, keep=None, attr=None): def prepare_for_serializer(payload, config, fallbacks={}): """ Json-ld payloads, as returned by expand are quite complex to handle, because - every attr is basically a list of dictionnaries. To make code simpler, + every attr is basically a list of dictionaries. To make code simpler, we use this function to clean the payload a little bit, base on the config object. - Config is a dictionnary, with keys being serializer field names, and values + Config is a dictionary, with keys being serializer field names, and values being dictionaries describing how to handle this field. """ final_payload = {} diff --git a/api/funkwhale_api/federation/management/commands/fix_federation_ids.py b/api/funkwhale_api/federation/management/commands/fix_federation_ids.py index 77bd5c299..2ee2eb8a1 100644 --- a/api/funkwhale_api/federation/management/commands/fix_federation_ids.py +++ b/api/funkwhale_api/federation/management/commands/fix_federation_ids.py @@ -30,7 +30,7 @@ MODELS = [ class Command(BaseCommand): help = """ - Find and replace wrong protocal/domain in local federation ids. + Find and replace wrong protocol/domain in local federation ids. Use with caution and only if you know what you are doing. """ diff --git a/api/funkwhale_api/federation/tasks.py b/api/funkwhale_api/federation/tasks.py index b7799ab28..9a80eef13 100644 --- a/api/funkwhale_api/federation/tasks.py +++ b/api/funkwhale_api/federation/tasks.py @@ -328,7 +328,7 @@ def fetch(fetch_obj): auth = None try: if url.startswith("webfinger://"): - # we first grab the correpsonding webfinger representation + # we first grab the corresponding webfinger representation # to get the ActivityPub actor ID webfinger_data = webfinger.get_resource( "acct:" + url.replace("webfinger://", "") @@ -552,8 +552,8 @@ def fetch_collection(url, max_pages, channel, is_page=False): "total": 0, } if is_page: - # starting immediatly from a page, no need to fetch the wrapping collection - logger.debug("Fetch collection page immediatly at %s", url) + # starting immediately from a page, no need to fetch the wrapping collection + logger.debug("Fetch collection page immediately at %s", url) results["next_page"] = url else: logger.debug("Fetching collection object at %s", url) @@ -644,7 +644,7 @@ def check_single_remote_instance_availability(domain): except Exception as e: logger.info( f"Domain {domain.name} could not be reached because of the following error : {e}. \ - Setting domain as unreacheable." + Setting domain as unreachable." ) domain.reachable = False domain.save() @@ -657,7 +657,7 @@ def check_single_remote_instance_availability(domain): return domain.reachable else: logger.info( - f"Domain {domain.name} is not reacheable at the moment. Setting domain as unreacheable." + f"Domain {domain.name} is not reachable at the moment. Setting domain as unreachable." ) domain.reachable = False domain.save() diff --git a/api/funkwhale_api/moderation/dynamic_preferences_registry.py b/api/funkwhale_api/moderation/dynamic_preferences_registry.py index 8d982653c..fbbcd6a61 100644 --- a/api/funkwhale_api/moderation/dynamic_preferences_registry.py +++ b/api/funkwhale_api/moderation/dynamic_preferences_registry.py @@ -16,7 +16,7 @@ class AllowListEnabled(types.BooleanPreference): section = moderation name = "allow_list_enabled" verbose_name = "Enable allow-listing" - help_text = "If enabled, only interactions with explicitely allowed domains will be authorized." + help_text = "If enabled, only interactions with explicitly allowed domains will be authorized." default = False diff --git a/api/funkwhale_api/music/management/commands/fix_uploads.py b/api/funkwhale_api/music/management/commands/fix_uploads.py index 68661a446..bd87328d6 100644 --- a/api/funkwhale_api/music/management/commands/fix_uploads.py +++ b/api/funkwhale_api/music/management/commands/fix_uploads.py @@ -84,7 +84,7 @@ class Command(BaseCommand): ) ) if not dry_run: - self.stdout.write("[mimetypes] commiting...") + self.stdout.write("[mimetypes] committing...") qs.update(mimetype=mimetype) def fix_file_data(self, dry_run, **kwargs): diff --git a/api/funkwhale_api/music/management/commands/rebuild_music_permissions.py b/api/funkwhale_api/music/management/commands/rebuild_music_permissions.py index 3cf1b7fe4..96b7e61cb 100644 --- a/api/funkwhale_api/music/management/commands/rebuild_music_permissions.py +++ b/api/funkwhale_api/music/management/commands/rebuild_music_permissions.py @@ -63,5 +63,5 @@ class Command(BaseCommand): actor_ids=actor_ids, upload_and_track_ids=[], ) - print("Commiting changes…") + print("Committing changes…") TrackActor.objects.bulk_create(objs, batch_size=5000, ignore_conflicts=True) diff --git a/api/funkwhale_api/music/models.py b/api/funkwhale_api/music/models.py index 9543d743a..81e5ab685 100644 --- a/api/funkwhale_api/music/models.py +++ b/api/funkwhale_api/music/models.py @@ -742,7 +742,7 @@ class Upload(models.Model): default=empty_dict, max_length=50000, encoder=DjangoJSONEncoder, blank=True ) import_date = models.DateTimeField(null=True, blank=True) - # optionnal metadata provided during import + # optional metadata provided during import import_metadata = JSONField( default=empty_dict, max_length=50000, encoder=DjangoJSONEncoder, blank=True ) @@ -754,7 +754,7 @@ class Upload(models.Model): # in the same import import_reference = models.CharField(max_length=50, default=get_import_reference) - # optionnal metadata about import results (error messages, etc.) + # optional metadata about import results (error messages, etc.) import_details = JSONField( default=empty_dict, max_length=50000, encoder=DjangoJSONEncoder, blank=True ) diff --git a/api/funkwhale_api/music/tasks.py b/api/funkwhale_api/music/tasks.py index 89fc7fa5e..705c98e3d 100644 --- a/api/funkwhale_api/music/tasks.py +++ b/api/funkwhale_api/music/tasks.py @@ -811,7 +811,7 @@ def albums_set_tags_from_tracks(ids=None, dry_run=False): ) logger.info("Found automatic tags for %s albums…", len(data)) if dry_run: - logger.info("Running in dry-run mode, not commiting") + logger.info("Running in dry-run mode, not committing") return tags_tasks.add_tags_batch( @@ -836,7 +836,7 @@ def artists_set_tags_from_tracks(ids=None, dry_run=False): ) logger.info("Found automatic tags for %s artists…", len(data)) if dry_run: - logger.info("Running in dry-run mode, not commiting") + logger.info("Running in dry-run mode, not committing") return tags_tasks.add_tags_batch( diff --git a/api/funkwhale_api/music/views.py b/api/funkwhale_api/music/views.py index 20a1956ff..461ec50d5 100644 --- a/api/funkwhale_api/music/views.py +++ b/api/funkwhale_api/music/views.py @@ -517,7 +517,7 @@ def should_transcode(upload, format, max_bitrate=None): # upload should have a mimetype, otherwise we cannot transcode format_need_transcoding = False elif upload.mimetype == utils.EXTENSION_TO_MIMETYPE[format]: - # requested format sould be different than upload mimetype, otherwise + # requested format should be different than upload mimetype, otherwise # there is no need to transcode format_need_transcoding = False diff --git a/api/funkwhale_api/users/mutations.py b/api/funkwhale_api/users/mutations.py index 603cc203d..deec6ae77 100644 --- a/api/funkwhale_api/users/mutations.py +++ b/api/funkwhale_api/users/mutations.py @@ -15,7 +15,7 @@ class DeleteAccountMutationSerializer(mutations.MutationSerializer): if not obj.is_local or not obj.user: raise mutations.serializers.ValidationError("Cannot delete this account") - # delete oauth apps / reset all passwords immediatly + # delete oauth apps / reset all passwords immediately obj.user.set_unusable_password() obj.user.subsonic_api_token = None # force logout diff --git a/api/install_os_dependencies.sh b/api/install_os_dependencies.sh index 77ebc4a79..fb0363de4 100755 --- a/api/install_os_dependencies.sh +++ b/api/install_os_dependencies.sh @@ -20,7 +20,7 @@ function usage_message() echo -e "\thelp\t\tPrint this help" echo -e "\n\tCommands that require superuser permission:" echo -e "\tinstall\t\tInstall packages defined on ${OS_REQUIREMENTS_FILENAME} file. Note: This\n\t\t\t does not upgrade the packages already installed for new\n\t\t\t versions, even if new version is available in the repository." - echo -e "\tupgrade\t\tSame that install, but upgrate the already installed packages,\n\t\t\t if new version is available." + echo -e "\tupgrade\t\tSame that install, but upgrade the already installed packages,\n\t\t\t if new version is available." } diff --git a/api/manage.py b/api/manage.py index fbc0f7575..eb8514aa6 100755 --- a/api/manage.py +++ b/api/manage.py @@ -13,7 +13,7 @@ if __name__ == "__main__": # we're doing this here since otherwise, missing environment # files in settings result in AttributeError being raised, generating # a cryptic django.core.exceptions.AppRegistryNotReady error. - # To prevent that, we explicitely load settings here before anything + # To prevent that, we explicitly load settings here before anything # else, so we fail fast with a relevant error. See #140 for more details. django.setup() diff --git a/api/tests/conftest.py b/api/tests/conftest.py index 7371bc9a2..d241db5a7 100644 --- a/api/tests/conftest.py +++ b/api/tests/conftest.py @@ -100,7 +100,7 @@ def local_cache(): @pytest.fixture def factories(db): """ - Returns a dictionnary containing all registered factories with keys such as + Returns a dictionary containing all registered factories with keys such as users.User or music.Track """ from funkwhale_api import factories @@ -117,7 +117,7 @@ def factories(db): @pytest.fixture def nodb_factories(): """ - Returns a dictionnary containing all registered factories with a build strategy + Returns a dictionary containing all registered factories with a build strategy that does not require access to the database """ from funkwhale_api import factories diff --git a/api/tests/music/test_models.py b/api/tests/music/test_models.py index ecccb2c62..93d95922e 100644 --- a/api/tests/music/test_models.py +++ b/api/tests/music/test_models.py @@ -153,11 +153,11 @@ def test_import_track_with_different_artist_than_release(factories, mocker): @pytest.mark.parametrize( - "extention,mimetype", [("ogg", "audio/ogg"), ("mp3", "audio/mpeg")] + "extension,mimetype", [("ogg", "audio/ogg"), ("mp3", "audio/mpeg")] ) -def test_audio_track_mime_type(extention, mimetype, factories): +def test_audio_track_mime_type(extension, mimetype, factories): - name = ".".join(["test", extention]) + name = ".".join(["test", extension]) path = os.path.join(DATA_DIR, name) upload = factories["music.Upload"](audio_file__from_path=path, mimetype=None) diff --git a/api/tests/radios/test_radios.py b/api/tests/radios/test_radios.py index c45c17177..46cd5e2b6 100644 --- a/api/tests/radios/test_radios.py +++ b/api/tests/radios/test_radios.py @@ -140,7 +140,7 @@ def test_can_use_radio_session_to_filter_choices(factories): for i in range(10): radio.pick(filter_playable=False) - # ensure 10 differents tracks have been suggested + # ensure 10 different tracks have been suggested tracks_id = [ session_track.track.pk for session_track in session.session_tracks.all() ] diff --git a/changes/changelog.d/1738.bugfix b/changes/changelog.d/1738.bugfix index ab3417101..cd6ad4b04 100644 --- a/changes/changelog.d/1738.bugfix +++ b/changes/changelog.d/1738.bugfix @@ -1 +1 @@ -Fixed upload form VUE erros (#1738) (1738) +Fixed upload form VUE errors (#1738) (1738) diff --git a/changes/changelog.d/1787.enhancement b/changes/changelog.d/1787.enhancement index 7b66240db..6a96abb82 100644 --- a/changes/changelog.d/1787.enhancement +++ b/changes/changelog.d/1787.enhancement @@ -1 +1 @@ -Allow arbritrary length names for artists, albums and tracks +Allow arbitrary length names for artists, albums and tracks diff --git a/changes/changelog.d/1822.update b/changes/changelog.d/1822.update index b952e6521..691ae10a2 100644 --- a/changes/changelog.d/1822.update +++ b/changes/changelog.d/1822.update @@ -16,7 +16,7 @@ curl -L -o /srv/funkwhale/docker-compose.yml "https://dev.funkwhale.audio/funkwh Docker's resolver <https://docs.funkwhale.audio/admin/external-storages.html#no-resolver-found>`_, you can mount your custom nginx configuration into the container. Uncomment the commented volumes in the `nginx` section of your `docker-compose.yml`. Additionally you need to update the paths in `nginx/funkwhale.template`. - Replace all occurances of `/funkwhale` by `/usr/share/nginx/html`. + Replace all occurrences of `/funkwhale` by `/usr/share/nginx/html`. This loads the templates from your `nginx` folder and overrides the template files in the Docker container. ``` diff --git a/changes/changelog.d/1924-focus.bugfix b/changes/changelog.d/1924-focus.bugfix index 65255f13a..603b82233 100644 --- a/changes/changelog.d/1924-focus.bugfix +++ b/changes/changelog.d/1924-focus.bugfix @@ -1 +1 @@ -Fix conent form autofocus despite `autofocus` prop being set to `false` (#1924) +Fix content form autofocus despite `autofocus` prop being set to `false` (#1924) diff --git a/demo/README.md b/demo/README.md index 0577b44f1..c42d86291 100644 --- a/demo/README.md +++ b/demo/README.md @@ -48,7 +48,7 @@ sudo ENV_FILE=/srv/funkwhale-demo/.env ./setup.sh ## Automate -You'll probaby want to reset the demo every now and then. You can do that +You'll probably want to reset the demo every now and then. You can do that using a cronjob: ``` diff --git a/docs/administrator_documentation/configuration_docs/ldap.md b/docs/administrator_documentation/configuration_docs/ldap.md index f3585b2fd..6c4b156ec 100644 --- a/docs/administrator_documentation/configuration_docs/ldap.md +++ b/docs/administrator_documentation/configuration_docs/ldap.md @@ -55,7 +55,7 @@ type: String value: cn=admin,dc=domain,dc=com --- -LDAP user {abbr}`DN (Distinguised Name)` to bind on so you can perform searches. +LDAP user {abbr}`DN (Distinguished Name)` to bind on so you can perform searches. ``` ```{py:data} LDAP_BIND_PASSWORD @@ -64,7 +64,7 @@ type: String value: bindpassword --- -LDAP user password for bind {abbr}`DN (Distinguised Name)`. +LDAP user password for bind {abbr}`DN (Distinguished Name)`. ``` ```{py:data} LDAP_SEARCH_FILTER @@ -91,7 +91,7 @@ type: String value: dc=domain,dc=com --- -The LDAP search root {abbr}`DN (Distinguised Name)`. Supports several entries in a comma-delimited list. +The LDAP search root {abbr}`DN (Distinguished Name)`. Supports several entries in a comma-delimited list. ``` ```{py:data} LDAP_USER_ATTR_MAP @@ -126,7 +126,7 @@ type: String value: ou=groups,dc=domain,dc=com --- -The LDAP group search root {abbr}`DN (Distinguised Name)`. This needs to be set to `True` to enable group features. +The LDAP group search root {abbr}`DN (Distinguished Name)`. This needs to be set to `True` to enable group features. ``` ```{py:data} LDAP_GROUP_FILTER diff --git a/docs/administrator_documentation/installation_docs/migrate.md b/docs/administrator_documentation/installation_docs/migrate.md index ca9a26d1b..6a4815a6a 100644 --- a/docs/administrator_documentation/installation_docs/migrate.md +++ b/docs/administrator_documentation/installation_docs/migrate.md @@ -177,7 +177,7 @@ You need to initialize the postgres container on your {term}`destination server` ## 5. Check your DNS settings -Before you start Funkwhale on your {term}`destination server`, check your DNS changes have propogated. Once your hostname is pointing to your {term}`destination server's <destination server>` IP address, proceed to the next step. +Before you start Funkwhale on your {term}`destination server`, check your DNS changes have propagated. Once your hostname is pointing to your {term}`destination server's <destination server>` IP address, proceed to the next step. ## 6. Start your new Funkwhale installation diff --git a/docs/administrator_documentation/manage_script/create_library.md b/docs/administrator_documentation/manage_script/create_library.md index 7d94ff42c..ed2ea0486 100644 --- a/docs/administrator_documentation/manage_script/create_library.md +++ b/docs/administrator_documentation/manage_script/create_library.md @@ -60,7 +60,7 @@ docker-compose run --rm api python manage.py create_library username1 --name="Li Created library Library 1 for user username1 with UUID 436da05b-8cb1-4a4d-b870-4a3b235d8517 ``` -### Create a new library wth no name or privacy level +### Create a new library with no name or privacy level You can create a library using only a username. The script substitutes default values for the library name and privacy level. diff --git a/docs/api/definitions.yml b/docs/api/definitions.yml index 0fda61b22..afd510dd6 100644 --- a/docs/api/definitions.yml +++ b/docs/api/definitions.yml @@ -77,7 +77,7 @@ Actor: fid: type: string format: uri - description: "The actor Federation ID (unique accross federation)" + description: "The actor Federation ID (unique across federation)" uuid: type: string format: uuid @@ -131,7 +131,7 @@ BaseArtist: fid: type: string format: uri - description: "The artist Federation ID (unique accross federation)" + description: "The artist Federation ID (unique across federation)" name: type: "string" example: "System of a Down" @@ -140,7 +140,7 @@ BaseArtist: format: "date-time" is_local: type: "boolean" - description: "Indicates if the object was initally created locally or on another server" + description: "Indicates if the object was initially created locally or on another server" Artist: type: "object" @@ -177,7 +177,7 @@ BaseAlbum: fid: type: string format: uri - description: "The album Federation ID (unique accross federation)" + description: "The album Federation ID (unique across federation)" artist: type: "integer" format: "int64" @@ -198,7 +198,7 @@ BaseAlbum: $ref: "#/Attachment" is_local: type: "boolean" - description: "Indicates if the object was initally created locally or on another server" + description: "Indicates if the object was initially created locally or on another server" Album: type: "object" @@ -332,7 +332,7 @@ Library: fid: type: string format: uri - description: "The library Federation ID (unique accross federation)" + description: "The library Federation ID (unique across federation)" uuid: type: string format: uuid @@ -427,7 +427,7 @@ BaseTrack: fid: type: string format: uri - description: "The track Federation ID (unique accross federation)" + description: "The track Federation ID (unique across federation)" artist: type: "integer" format: "int64" @@ -462,7 +462,7 @@ BaseTrack: example: "cc-by-nc-nd-4.0" is_local: type: "boolean" - description: "Indicates if the object was initally created locally or on another server" + description: "Indicates if the object was initially created locally or on another server" AlbumTrack: type: "object" @@ -557,7 +557,7 @@ Upload: description: "URL to stream the upload" is_local: type: "boolean" - description: "Indicates if the object was initally created locally or on another server" + description: "Indicates if the object was initially created locally or on another server" OwnedLibraryCreate: type: "object" diff --git a/docs/api/properties.yml b/docs/api/properties.yml index fe750315c..efaf0d403 100644 --- a/docs/api/properties.yml +++ b/docs/api/properties.yml @@ -92,7 +92,7 @@ tags: content_category: type: "string" - description: Used to what kind of content is published in a chanel + description: Used to what kind of content is published in a channel enum: - music - podcast diff --git a/docs/developer_documentation/api/authentication.md b/docs/developer_documentation/api/authentication.md index b408d4bcc..0629ad4d5 100644 --- a/docs/developer_documentation/api/authentication.md +++ b/docs/developer_documentation/api/authentication.md @@ -38,7 +38,7 @@ When creating an application you need to define the [**scopes**](https://www.rfc - `read:<scope>`: grants read-only access to the resource - `write:<scope>`: grants write-only access to the resource -`read` rights are required to fetch information using a `GET` request. All other actions (`POST`, `PATCH`, `PUT`, and `DELETE`) require `write` priviliges. You may give an application **both** `read` and `write` access to any scope. +`read` rights are required to fetch information using a `GET` request. All other actions (`POST`, `PATCH`, `PUT`, and `DELETE`) require `write` privileges. You may give an application **both** `read` and `write` access to any scope. ```{list-table} :header-rows: 1 diff --git a/docs/developer_documentation/setup/vite.md b/docs/developer_documentation/setup/vite.md index 4e3f2682d..c56e803e7 100644 --- a/docs/developer_documentation/setup/vite.md +++ b/docs/developer_documentation/setup/vite.md @@ -39,7 +39,7 @@ If you want to make changes to the frontend, you can use Vite to run a developme yarn i18n-compile ``` -5. Launch the devlopment server: +5. Launch the development server: ```sh yarn dev diff --git a/docs/locales/en_GB/LC_MESSAGES/changelog.po b/docs/locales/en_GB/LC_MESSAGES/changelog.po index 7f5df3119..dae679c79 100644 --- a/docs/locales/en_GB/LC_MESSAGES/changelog.po +++ b/docs/locales/en_GB/LC_MESSAGES/changelog.po @@ -6228,7 +6228,7 @@ msgid "" "This new permission is helpful if you want to give upload/import rights " "to some users, but don't want them to be able to manage the library as a " "whole: although there are no controls yet for managing library in the " -"fron-end, subsequent release will introduce management interfaces for " +"front-end, subsequent release will introduce management interfaces for " "artists, files, etc." msgstr "" diff --git a/docs/locales/en_US/LC_MESSAGES/changelog.po b/docs/locales/en_US/LC_MESSAGES/changelog.po index 88ae52210..fde73b68a 100644 --- a/docs/locales/en_US/LC_MESSAGES/changelog.po +++ b/docs/locales/en_US/LC_MESSAGES/changelog.po @@ -6225,7 +6225,7 @@ msgid "" "This new permission is helpful if you want to give upload/import rights " "to some users, but don't want them to be able to manage the library as a " "whole: although there are no controls yet for managing library in the " -"fron-end, subsequent release will introduce management interfaces for " +"front-end, subsequent release will introduce management interfaces for " "artists, files, etc." msgstr "" diff --git a/docs/locales/fr/LC_MESSAGES/changelog.po b/docs/locales/fr/LC_MESSAGES/changelog.po index 88ae52210..fde73b68a 100644 --- a/docs/locales/fr/LC_MESSAGES/changelog.po +++ b/docs/locales/fr/LC_MESSAGES/changelog.po @@ -6225,7 +6225,7 @@ msgid "" "This new permission is helpful if you want to give upload/import rights " "to some users, but don't want them to be able to manage the library as a " "whole: although there are no controls yet for managing library in the " -"fron-end, subsequent release will introduce management interfaces for " +"front-end, subsequent release will introduce management interfaces for " "artists, files, etc." msgstr "" diff --git a/docs/locales/gettext/changelog.pot b/docs/locales/gettext/changelog.pot index d2cc1d9e9..03e88ae16 100644 --- a/docs/locales/gettext/changelog.pot +++ b/docs/locales/gettext/changelog.pot @@ -5406,7 +5406,7 @@ msgid "New \"upload\" permission" msgstr "" #: ../../../CHANGELOG:3375 -msgid "This new permission is helpful if you want to give upload/import rights to some users, but don't want them to be able to manage the library as a whole: although there are no controls yet for managing library in the fron-end, subsequent release will introduce management interfaces for artists, files, etc." +msgid "This new permission is helpful if you want to give upload/import rights to some users, but don't want them to be able to manage the library as a whole: although there are no controls yet for managing library in the front-end, subsequent release will introduce management interfaces for artists, files, etc." msgstr "" #: ../../../CHANGELOG:3381 diff --git a/docs/swagger.yml b/docs/swagger.yml index c1bc859b1..decf97951 100644 --- a/docs/swagger.yml +++ b/docs/swagger.yml @@ -257,9 +257,9 @@ paths: $ref: "#/components/responses/200" /api/v1/users/me/: get: - summary: Retrive profile information + summary: Retrieve profile information description: | - Retrieve profile informations of the current user + Retrieve profile information of the current user tags: - "Auth and security" @@ -322,7 +322,7 @@ paths: /api/v1/rate-limit/: get: - summary: Retrive rate-limit information and current usage status + summary: Retrieve rate-limit information and current usage status tags: - "Auth and security" @@ -1658,7 +1658,7 @@ paths: type: boolean default: false description: | - Wether to raise an error when the same track is added + Whether to raise an error when the same track is added multiple time in the playlist responses: 201: diff --git a/docs/user_documentation/libraries/tag_music.md b/docs/user_documentation/libraries/tag_music.md index 30f47f5d7..c5142188d 100644 --- a/docs/user_documentation/libraries/tag_music.md +++ b/docs/user_documentation/libraries/tag_music.md @@ -53,7 +53,7 @@ This guide shows you how to tag your content with MusicBrainz Picard. Used if no license found in the `License` tag. - `CC-BY 3.0: http://creativecommons.org/licenses/cc-by/3.0/` * - `Pictures` - - The first embeded picture found is used as the album cover. + - The first embedded picture found is used as the album cover. - * - `MusicBrainz Recording ID` - The MusicBrainz ID for the recording. diff --git a/front/locales/app.pot b/front/locales/app.pot index 837619aba..05f5da311 100644 --- a/front/locales/app.pot +++ b/front/locales/app.pot @@ -7930,7 +7930,7 @@ msgstr "" #: src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/ar/LC_MESSAGES/app.po b/front/locales/ar/LC_MESSAGES/app.po index a392bf17f..ef5adcb8c 100644 --- a/front/locales/ar/LC_MESSAGES/app.po +++ b/front/locales/ar/LC_MESSAGES/app.po @@ -8502,7 +8502,7 @@ msgstr "" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/ca/LC_MESSAGES/app.po b/front/locales/ca/LC_MESSAGES/app.po index c988e8d58..66dab31e4 100644 --- a/front/locales/ca/LC_MESSAGES/app.po +++ b/front/locales/ca/LC_MESSAGES/app.po @@ -8221,7 +8221,7 @@ msgstr "Es tancarà la sessió d’aquest compte i hauràs d’iniciar sessió a #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 #, fuzzy -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "Es redirigirà a <strong>%{ url }</strong>" diff --git a/front/locales/cs/LC_MESSAGES/app.po b/front/locales/cs/LC_MESSAGES/app.po index 72c8bb79a..fd346c71c 100644 --- a/front/locales/cs/LC_MESSAGES/app.po +++ b/front/locales/cs/LC_MESSAGES/app.po @@ -8391,7 +8391,7 @@ msgstr "Budete odhlášeni z tohoto sezení a musíte se přihlásit znovu" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 #, fuzzy -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "Budete přesměrováni na <strong>%{ url }</strong>" diff --git a/front/locales/de/LC_MESSAGES/app.po b/front/locales/de/LC_MESSAGES/app.po index bc3aaa33d..8dcd54add 100644 --- a/front/locales/de/LC_MESSAGES/app.po +++ b/front/locales/de/LC_MESSAGES/app.po @@ -8098,7 +8098,7 @@ msgstr "Du wirst von dieser Sitzung abgemeldet und du musst dich mit deinem neue #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "Du wirst zur Authentifizierung zu %{ url } weitergeleitet." diff --git a/front/locales/el/LC_MESSAGES/app.po b/front/locales/el/LC_MESSAGES/app.po index eaa8961fa..470147889 100644 --- a/front/locales/el/LC_MESSAGES/app.po +++ b/front/locales/el/LC_MESSAGES/app.po @@ -8105,7 +8105,7 @@ msgstr "" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/en_GB/LC_MESSAGES/app.po b/front/locales/en_GB/LC_MESSAGES/app.po index 440d7eb08..98bd89a2a 100644 --- a/front/locales/en_GB/LC_MESSAGES/app.po +++ b/front/locales/en_GB/LC_MESSAGES/app.po @@ -8254,7 +8254,7 @@ msgstr "" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "You will be redirected to %{ domain } to authenticate." diff --git a/front/locales/eo/LC_MESSAGES/app.po b/front/locales/eo/LC_MESSAGES/app.po index a1c27a28a..f944807a7 100644 --- a/front/locales/eo/LC_MESSAGES/app.po +++ b/front/locales/eo/LC_MESSAGES/app.po @@ -8407,7 +8407,7 @@ msgstr "Vi estos elŝaluta el tiu seanco kaj devus ensaluti denove" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/es/LC_MESSAGES/app.po b/front/locales/es/LC_MESSAGES/app.po index 71c8e3599..55ea22365 100644 --- a/front/locales/es/LC_MESSAGES/app.po +++ b/front/locales/es/LC_MESSAGES/app.po @@ -8376,7 +8376,7 @@ msgstr "Se cerrará esta sesión y tendrás que reiniciar sesión con la nueva c #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/eu/LC_MESSAGES/app.po b/front/locales/eu/LC_MESSAGES/app.po index cae819bee..c969509f2 100644 --- a/front/locales/eu/LC_MESSAGES/app.po +++ b/front/locales/eu/LC_MESSAGES/app.po @@ -8068,7 +8068,7 @@ msgstr "Saio hau amaituko zaizu eta berriarekin hasi beharko duzu" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "%{ domain } domeinura birbideratua izango zara baimentzeko." diff --git a/front/locales/fa_IR/LC_MESSAGES/app.po b/front/locales/fa_IR/LC_MESSAGES/app.po index e6cd12f44..b4310a75d 100644 --- a/front/locales/fa_IR/LC_MESSAGES/app.po +++ b/front/locales/fa_IR/LC_MESSAGES/app.po @@ -8065,7 +8065,7 @@ msgstr "" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/fr_FR/LC_MESSAGES/app.po b/front/locales/fr_FR/LC_MESSAGES/app.po index 6f64180bc..2068b310a 100644 --- a/front/locales/fr_FR/LC_MESSAGES/app.po +++ b/front/locales/fr_FR/LC_MESSAGES/app.po @@ -8135,7 +8135,7 @@ msgstr "Vous allez être déconnecté⋅e de cette session et vous devrez vous c #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "Vous allez être redirigé·e vers %{ domain } pour vous authentifier." diff --git a/front/locales/ga/LC_MESSAGES/app.po b/front/locales/ga/LC_MESSAGES/app.po index c71468362..360fe3433 100644 --- a/front/locales/ga/LC_MESSAGES/app.po +++ b/front/locales/ga/LC_MESSAGES/app.po @@ -7904,7 +7904,7 @@ msgid "You will be logged out from this session and have to log in with the new msgstr "" #: front/src/components/auth/LoginForm.vue:49 src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/gl/LC_MESSAGES/app.po b/front/locales/gl/LC_MESSAGES/app.po index dd572a91b..ac5013f67 100644 --- a/front/locales/gl/LC_MESSAGES/app.po +++ b/front/locales/gl/LC_MESSAGES/app.po @@ -8098,7 +8098,7 @@ msgstr "Pecharemos esta sesión e deberás acceder co novo" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "Ímoste redirixir a %{ domain } para autenticarte." diff --git a/front/locales/hu/LC_MESSAGES/app.po b/front/locales/hu/LC_MESSAGES/app.po index 28896f1ad..44201d1d5 100644 --- a/front/locales/hu/LC_MESSAGES/app.po +++ b/front/locales/hu/LC_MESSAGES/app.po @@ -8119,7 +8119,7 @@ msgstr "" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/id/LC_MESSAGES/app.po b/front/locales/id/LC_MESSAGES/app.po index f1d192958..e524bcec7 100644 --- a/front/locales/id/LC_MESSAGES/app.po +++ b/front/locales/id/LC_MESSAGES/app.po @@ -7903,7 +7903,7 @@ msgid "You will be logged out from this session and have to log in with the new msgstr "" #: front/src/components/auth/LoginForm.vue:49 src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/it/LC_MESSAGES/app.po b/front/locales/it/LC_MESSAGES/app.po index 559fedb7c..f5e170980 100644 --- a/front/locales/it/LC_MESSAGES/app.po +++ b/front/locales/it/LC_MESSAGES/app.po @@ -8102,7 +8102,7 @@ msgstr "Sarai disconnesso da questa sessione e dovrai accedere con una nuova" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "Sarai reindirizzato su %{ domain } per autenticarti." diff --git a/front/locales/ja_JP/LC_MESSAGES/app.po b/front/locales/ja_JP/LC_MESSAGES/app.po index ff24d7f03..84380ef90 100644 --- a/front/locales/ja_JP/LC_MESSAGES/app.po +++ b/front/locales/ja_JP/LC_MESSAGES/app.po @@ -8075,7 +8075,7 @@ msgstr "このセッションからログアウトされ、新しくログイン #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "認証のために%{ domain }にリダイレクトされます。" diff --git a/front/locales/kab_DZ/LC_MESSAGES/app.po b/front/locales/kab_DZ/LC_MESSAGES/app.po index b7f476e33..d0c7e2c43 100644 --- a/front/locales/kab_DZ/LC_MESSAGES/app.po +++ b/front/locales/kab_DZ/LC_MESSAGES/app.po @@ -8144,7 +8144,7 @@ msgstr "" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/ko_KR/LC_MESSAGES/app.po b/front/locales/ko_KR/LC_MESSAGES/app.po index 476eb313c..725b536d9 100644 --- a/front/locales/ko_KR/LC_MESSAGES/app.po +++ b/front/locales/ko_KR/LC_MESSAGES/app.po @@ -8041,7 +8041,7 @@ msgstr "" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/ml/LC_MESSAGES/app.po b/front/locales/ml/LC_MESSAGES/app.po index 487597778..1090e578d 100644 --- a/front/locales/ml/LC_MESSAGES/app.po +++ b/front/locales/ml/LC_MESSAGES/app.po @@ -8094,7 +8094,7 @@ msgstr "" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/nb_NO/LC_MESSAGES/app.po b/front/locales/nb_NO/LC_MESSAGES/app.po index eb01fdeff..b5695c1ae 100644 --- a/front/locales/nb_NO/LC_MESSAGES/app.po +++ b/front/locales/nb_NO/LC_MESSAGES/app.po @@ -8565,7 +8565,7 @@ msgstr "Du vil bli logget ut av denne økta, og må logge inn i den nye" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/nl/LC_MESSAGES/app.po b/front/locales/nl/LC_MESSAGES/app.po index f13bb6d72..c8630ae22 100644 --- a/front/locales/nl/LC_MESSAGES/app.po +++ b/front/locales/nl/LC_MESSAGES/app.po @@ -8217,7 +8217,7 @@ msgstr "Je wordt uitgelogd uit deze sessie moet inloggen op de nieuwe" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "Je wordt doorgestuurd naar %{ domain } om te authenticeren." diff --git a/front/locales/nn_NO/LC_MESSAGES/app.po b/front/locales/nn_NO/LC_MESSAGES/app.po index fabc3666b..3403f4ebd 100644 --- a/front/locales/nn_NO/LC_MESSAGES/app.po +++ b/front/locales/nn_NO/LC_MESSAGES/app.po @@ -8060,7 +8060,7 @@ msgstr "" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/oc/LC_MESSAGES/app.po b/front/locales/oc/LC_MESSAGES/app.po index 03ffa615a..c93ecd690 100644 --- a/front/locales/oc/LC_MESSAGES/app.po +++ b/front/locales/oc/LC_MESSAGES/app.po @@ -8100,7 +8100,7 @@ msgstr "Sètz per èsser desconnectat d’aquesta session e vos caldrà vos conn #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "Seretz mandat a <strong>%{ url }</strong>." diff --git a/front/locales/pl/LC_MESSAGES/app.po b/front/locales/pl/LC_MESSAGES/app.po index 11f5324b5..af91e9998 100644 --- a/front/locales/pl/LC_MESSAGES/app.po +++ b/front/locales/pl/LC_MESSAGES/app.po @@ -8098,7 +8098,7 @@ msgstr "Zostaniesz wylogowany i będziesz musiał zalogować się nowym hasłem" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "Zostaniesz przekierowany do %{ domain } w celu uwierzytelnienia." diff --git a/front/locales/pt_BR/LC_MESSAGES/app.po b/front/locales/pt_BR/LC_MESSAGES/app.po index 1d2d6945f..b40aeaf43 100644 --- a/front/locales/pt_BR/LC_MESSAGES/app.po +++ b/front/locales/pt_BR/LC_MESSAGES/app.po @@ -8213,7 +8213,7 @@ msgstr "Você sairá desta conta e precisará entrar novamente" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 #, fuzzy -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "Você será redirecionado para <strong>%{ url }</strong>" diff --git a/front/locales/pt_PT/LC_MESSAGES/app.po b/front/locales/pt_PT/LC_MESSAGES/app.po index 8e87020b2..ef4e58841 100644 --- a/front/locales/pt_PT/LC_MESSAGES/app.po +++ b/front/locales/pt_PT/LC_MESSAGES/app.po @@ -8411,7 +8411,7 @@ msgstr "Você será desconectado desta sessão e precisará fazer login com o no #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/ru/LC_MESSAGES/app.po b/front/locales/ru/LC_MESSAGES/app.po index ed5a804d4..484a8ce4e 100644 --- a/front/locales/ru/LC_MESSAGES/app.po +++ b/front/locales/ru/LC_MESSAGES/app.po @@ -8097,7 +8097,7 @@ msgstr "Вы будете отключены от этого сеанса и В #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "Вы будете перенаправлены на %{ domain } для входа." diff --git a/front/locales/sq/LC_MESSAGES/app.po b/front/locales/sq/LC_MESSAGES/app.po index 893c4c090..d1d7ddfad 100644 --- a/front/locales/sq/LC_MESSAGES/app.po +++ b/front/locales/sq/LC_MESSAGES/app.po @@ -8060,7 +8060,7 @@ msgstr "" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/sv/LC_MESSAGES/app.po b/front/locales/sv/LC_MESSAGES/app.po index 44ef2e346..aa910e9bb 100644 --- a/front/locales/sv/LC_MESSAGES/app.po +++ b/front/locales/sv/LC_MESSAGES/app.po @@ -8749,7 +8749,7 @@ msgstr "Du kommer att loggas ut från den här sessionen och måste logga in med #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/tr/LC_MESSAGES/app.po b/front/locales/tr/LC_MESSAGES/app.po index b0f13bb04..34391e377 100644 --- a/front/locales/tr/LC_MESSAGES/app.po +++ b/front/locales/tr/LC_MESSAGES/app.po @@ -7904,7 +7904,7 @@ msgid "You will be logged out from this session and have to log in with the new msgstr "" #: front/src/components/auth/LoginForm.vue:49 src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/locales/zh_Hans/LC_MESSAGES/app.po b/front/locales/zh_Hans/LC_MESSAGES/app.po index a32676949..9f489cbae 100644 --- a/front/locales/zh_Hans/LC_MESSAGES/app.po +++ b/front/locales/zh_Hans/LC_MESSAGES/app.po @@ -8040,7 +8040,7 @@ msgstr "您将立刻被登出,需要重新登录" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "您将会被跳转到 %{ domain } 以授权登录。" diff --git a/front/locales/zh_Hant/LC_MESSAGES/app.po b/front/locales/zh_Hant/LC_MESSAGES/app.po index 80419a04b..590af48cb 100644 --- a/front/locales/zh_Hant/LC_MESSAGES/app.po +++ b/front/locales/zh_Hant/LC_MESSAGES/app.po @@ -8063,7 +8063,7 @@ msgstr "" #: front/src/components/auth/LoginForm.vue:49 #: src/components/auth/LoginForm.vue:2 -msgctxt "Contant/Auth/Paragraph" +msgctxt "Content/Auth/Paragraph" msgid "You will be redirected to %{ domain } to authenticate." msgstr "" diff --git a/front/public/embed.html b/front/public/embed.html index b02f6359f..6a3ee100f 100644 --- a/front/public/embed.html +++ b/front/public/embed.html @@ -62,7 +62,7 @@ // NOTE: Filter out repeating and unplayable media types .filter(({ mimetype }, index, array) => array.findIndex((upload) => upload.mimetype === mimetype) === index) .filter(({ mimetype }) => ['probably', 'maybe'].includes(audio.element?.canPlayType(mimetype))) - // NOTE: For backwards compatibilty, prepend the baseUrl if listen_url starts with a slash + // NOTE: For backwards compatibility, prepend the baseUrl if listen_url starts with a slash .map(source => ({ ...source, listen_url: source.listen_url[0] === '/' diff --git a/front/scripts/fix-fomantic-css.py b/front/scripts/fix-fomantic-css.py index 4e0a2e40a..9266931e8 100755 --- a/front/scripts/fix-fomantic-css.py +++ b/front/scripts/fix-fomantic-css.py @@ -217,7 +217,7 @@ Given the previous config, the following style sheet: .. code-block:: css - .unsed.variation { + .unused.variation { color: yellow; } @@ -837,7 +837,7 @@ def set_vars(component_name, rules): for rule in rules: if rule["lines"][0].startswith("@media"): - # manual handling of media queries, becaues our parser is really + # manual handling of media queries, because our parser is really # simplistic internal_rules = rules_from_media_query(rule) internal_rules = set_vars(component_name, internal_rules) diff --git a/front/src/components/audio/PlayButton.vue b/front/src/components/audio/PlayButton.vue index 4ef0ebd24..d66d0ac6b 100644 --- a/front/src/components/audio/PlayButton.vue +++ b/front/src/components/audio/PlayButton.vue @@ -103,7 +103,7 @@ onMounted(() => { const openMenu = () => { // little magic to ensure the menu is always visible in the viewport - // By default, try to diplay it on the right if there is enough room + // By default, try to display it on the right if there is enough room const menu = dropdown.value.find('.menu') const viewportOffset = menu.get(0)?.getBoundingClientRect() ?? { right: 0, left: 0 } const viewportWidth = document.documentElement.clientWidth diff --git a/front/src/components/audio/track/Table.vue b/front/src/components/audio/track/Table.vue index 071b44e93..884b7a169 100644 --- a/front/src/components/audio/track/Table.vue +++ b/front/src/components/audio/track/Table.vue @@ -115,7 +115,7 @@ const fetchData = async () => { try { const response = await axios.get('tracks/', { params }) - // TODO (wvffle): Fetch continously? + // TODO (wvffle): Fetch continuously? fetchDataUrl.value = response.data.next additionalTracks.value = response.data.results totalTracks.value = response.data.count diff --git a/front/src/components/auth/LoginForm.vue b/front/src/components/auth/LoginForm.vue index e791141c3..271a339b6 100644 --- a/front/src/components/auth/LoginForm.vue +++ b/front/src/components/auth/LoginForm.vue @@ -137,7 +137,7 @@ const submit = async () => { <template v-else> <p> <translate - translate-context="Contant/Auth/Paragraph" + translate-context="Content/Auth/Paragraph" :translate-params="{domain: $store.getters['instance/domain']}" > You will be redirected to %{ domain } to authenticate. diff --git a/front/src/components/auth/Settings.vue b/front/src/components/auth/Settings.vue index 3f1c6fbe8..873f906f9 100644 --- a/front/src/components/auth/Settings.vue +++ b/front/src/components/auth/Settings.vue @@ -961,7 +961,7 @@ fetchOwnedApps() <div> <p> <translate translate-context="Popup/Settings/Paragraph"> - This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out. + This is irreversible and will permanently remove your data from our servers. You will we immediately logged out. </translate> </p> </div> diff --git a/front/src/components/common/ActionTable.vue b/front/src/components/common/ActionTable.vue index 959ccd6ad..1358e205c 100644 --- a/front/src/components/common/ActionTable.vue +++ b/front/src/components/common/ActionTable.vue @@ -98,7 +98,7 @@ const toggleCheck = (event: MouseEvent, id: string, index: number) => { selectAll.value = false } - // Add inbetween ids to the list of affected ids + // Add in between ids to the list of affected ids if (event.shiftKey && lastCheckedIndex.value !== -1) { const boundaries = [index, lastCheckedIndex.value].sort((a, b) => a - b) for (const object of props.objectsData.results.slice(boundaries[0], boundaries[1] + 1)) { diff --git a/front/src/components/manage/library/EditsCardList.vue b/front/src/components/manage/library/EditsCardList.vue index b8b5035aa..e27af8d76 100644 --- a/front/src/components/manage/library/EditsCardList.vue +++ b/front/src/components/manage/library/EditsCardList.vue @@ -67,7 +67,7 @@ const targets = reactive({ const fetchTargets = async () => { // we request target data via the API so we can display previous state - // additionnal data next to the edit card + // additional data next to the edit card type Config = { url: string, ids: number[] } const typesAndIds: Record<Targets, Config> = { artist: { url: 'artists/', ids: [] }, diff --git a/front/src/composables/audio/player.ts b/front/src/composables/audio/player.ts index c01b6561e..3555e9e00 100644 --- a/front/src/composables/audio/player.ts +++ b/front/src/composables/audio/player.ts @@ -43,7 +43,7 @@ export const usePlayer = createGlobalState(() => { sound.pause() }) - // Create first track when we initalize the page + // Create first track when we initialize the page // NOTE: We want to have it called only once, hence we're using createGlobalState const initializeFirstTrack = createGlobalState(() => tryOnMounted(() => { const { initialize } = useTracks() diff --git a/front/src/composables/useErrorHandler.ts b/front/src/composables/useErrorHandler.ts index 1a3a833a8..1e9e12cc9 100644 --- a/front/src/composables/useErrorHandler.ts +++ b/front/src/composables/useErrorHandler.ts @@ -16,7 +16,7 @@ async function useErrorHandler (error: Error | BackendError, eventId?: string): ? 'Unexpected API error' : 'Unexpected error' - let content = $pgettext('App/Message/Paragraph', 'An unexpected error occured.') + let content = $pgettext('App/Message/Paragraph', 'An unexpected error occurred.') if ('backendErrors' in error) { logger.error(title, error, error.backendErrors) @@ -35,7 +35,7 @@ async function useErrorHandler (error: Error | BackendError, eventId?: string): const { get } = useCookies() if (get(COOKIE) === 'yes') { - content = $pgettext('App/Message/Paragraph', 'An unexpected error occured. <br><sub>To help us understand why it happened, please attach a detailed description of what you did that has triggered the error.</sub>') + content = $pgettext('App/Message/Paragraph', 'An unexpected error occurred. <br><sub>To help us understand why it happened, please attach a detailed description of what you did that has triggered the error.</sub>') const user = store.state.auth.authenticated ? { name: store.state.auth.username, diff --git a/front/src/style/_main.scss b/front/src/style/_main.scss index 217ee30ce..ddae53193 100644 --- a/front/src/style/_main.scss +++ b/front/src/style/_main.scss @@ -1,6 +1,6 @@ @use "./_vars" as *; -// not in vars because not meant to be overriden +// not in vars because not meant to be overridden $desktop-sidebar-width: 275px; $widedesktop-sidebar-width: 275px; $bottom-player-height: 4rem; diff --git a/front/src/views/admin/library/LibraryDetail.vue b/front/src/views/admin/library/LibraryDetail.vue index 2c81a6b5b..33a0846f2 100644 --- a/front/src/views/admin/library/LibraryDetail.vue +++ b/front/src/views/admin/library/LibraryDetail.vue @@ -85,7 +85,7 @@ const updateObj = async (attr: string) => { try { await axios.patch(`manage/library/libraries/${props.id}/`, params) - logger.info(`${attr} was updated succcessfully to ${params[attr]}`) + logger.info(`${attr} was updated successfully to ${params[attr]}`) } catch (error) { logger.error(`Error while setting ${attr} to ${params[attr]}`, error) // TODO (wvffle): Use error handler with custom msg diff --git a/front/src/views/admin/moderation/AccountsDetail.vue b/front/src/views/admin/moderation/AccountsDetail.vue index 1da76f245..78f5ea66b 100644 --- a/front/src/views/admin/moderation/AccountsDetail.vue +++ b/front/src/views/admin/moderation/AccountsDetail.vue @@ -127,7 +127,7 @@ const updateUser = async (attr: string, toNull = false) => { try { await axios.patch(`manage/users/users/${object.value.user.id}/`, params) - logger.info(`${attr} was updated succcessfully to ${newValue}`) + logger.info(`${attr} was updated successfully to ${newValue}`) } catch (error) { logger.error(`Error while setting ${attr} to ${newValue}`, error) // TODO: Use error handler diff --git a/pyproject.toml b/pyproject.toml index 43451f58e..e46d4f5e8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,3 +65,7 @@ force-exclude = "(api/.*/migrations/.*)" # pre-commit pass files as args profile = "black" extend_skip_glob = ["api/*/migrations/*"] known_first_party = ["funkwhale_api", "config"] + +[tool.codespell] +ignore-words = ".codespellignore" +skip = "*.po,*.pot,*.lock,api/funkwhale_api/common/locales.py" diff --git a/scripts/is-docker-latest.py b/scripts/is-docker-latest.py index f95e12bac..ea038d3e4 100755 --- a/scripts/is-docker-latest.py +++ b/scripts/is-docker-latest.py @@ -30,7 +30,7 @@ if __name__ == "__main__": parser = argparse.ArgumentParser( description=""" Exit with code 0 if the given version matches the latest one - fron the list of releases found in releases_json. Primary use + from the list of releases found in releases_json. Primary use is to check whether the current version can be safely pushed as the latest one on the docker Hub. """