All notable changes to this project will be documented in this file.
## [v3.1.4] - 2020-05-14
### Added
- Add `vi` to available locales ([taicv](https://github.com/tootsuite/mastodon/pull/13542))
- Add ability to remove identity proofs from account ([Gargron](https://github.com/tootsuite/mastodon/pull/13682))
- Add ability to exclude local content from federated timeline ([noellabo](https://github.com/tootsuite/mastodon/pull/13504), [noellabo](https://github.com/tootsuite/mastodon/pull/13745))
- Add `remote` param to `GET /api/v1/timelines/public` REST API
- Add `public/remote` / `public:remote` variants to streaming API
- "Remote only" option in federated timeline column settings in web UI
- Add ability to exclude remote content from hashtag timelines in web UI ([noellabo](https://github.com/tootsuite/mastodon/pull/13502))
- No changes to REST API
- "Local only" option in hashtag column settings in web UI
- Add Capistrano tasks that reload the services after deploying ([berkes](https://github.com/tootsuite/mastodon/pull/12642))
- Add `invites_enabled` attribute to `GET /api/v1/instance` in REST API ([ThibG](https://github.com/tootsuite/mastodon/pull/13501))
- Add separate cache directory for non-local uploads ([Gargron](https://github.com/tootsuite/mastodon/pull/12821), [Hanage999](https://github.com/tootsuite/mastodon/pull/13593), [mayaeh](https://github.com/tootsuite/mastodon/pull/13551))
- Add `tootctl upgrade storage-schema` command to move old non-local uploads to the cache directory
- Add buttons to delete header and avatar from profile settings ([sternenseemann](https://github.com/tootsuite/mastodon/pull/13234))
- Add emoji graphics and shortcodes from Twemoji 12.1.5 ([DeeUnderscore](https://github.com/tootsuite/mastodon/pull/13021))
### Changed
- Change error message when trying to migrate to an account that does not have current account set as an alias to be more clear ([TheEvilSkeleton](https://github.com/tootsuite/mastodon/pull/13746))
- Change delivery failure tracking to work with hostnames instead of URLs ([Gargron](https://github.com/tootsuite/mastodon/pull/13437), [noellabo](https://github.com/tootsuite/mastodon/pull/13481), [noellabo](https://github.com/tootsuite/mastodon/pull/13482), [noellabo](https://github.com/tootsuite/mastodon/pull/13535))
- Change Content-Security-Policy to not need unsafe-inline style-src ([ThibG](https://github.com/tootsuite/mastodon/pull/13679), [ThibG](https://github.com/tootsuite/mastodon/pull/13692), [ThibG](https://github.com/tootsuite/mastodon/pull/13576), [ThibG](https://github.com/tootsuite/mastodon/pull/13575), [ThibG](https://github.com/tootsuite/mastodon/pull/13438))
- Change how RSS items are titled and formatted ([ThibG](https://github.com/tootsuite/mastodon/pull/13592), [ykzts](https://github.com/tootsuite/mastodon/pull/13591))
### Fixed
- Fix dropdown of muted and followed accounts offering option to hide boosts in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13748))
- Fix "You are already signed in" alert being shown at wrong times ([ThibG](https://github.com/tootsuite/mastodon/pull/13547))
- Fix retrying of failed-to-download media files not actually working ([noellabo](https://github.com/tootsuite/mastodon/pull/13741))
- Fix first poll option not being focused when adding a poll in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13740))
- Fix `sr` locale being selected over `sr-Latn` ([ThibG](https://github.com/tootsuite/mastodon/pull/13693))
- Fix error within error when limiting backtrace to 3 lines ([Gargron](https://github.com/tootsuite/mastodon/pull/13120))
- Fix `tootctl media remove-orphans` crashing on "Import" files ([ThibG](https://github.com/tootsuite/mastodon/pull/13685))
- Fix regression in `tootctl media remove-orphans` ([Gargron](https://github.com/tootsuite/mastodon/pull/13405))
- Fix old unique jobs digests not having been cleaned up ([Gargron](https://github.com/tootsuite/mastodon/pull/13683))
- Fix own following/followers not showing muted users ([ThibG](https://github.com/tootsuite/mastodon/pull/13614))
- Fix list of followed people ignoring sorting on Follows & Followers page ([taras2358](https://github.com/tootsuite/mastodon/pull/13676))
- Fix wrong pgHero Content-Security-Policy when `CDN_HOST` is set ([ThibG](https://github.com/tootsuite/mastodon/pull/13595))
- Fix needlessly deduplicating usernames on collisions with remote accounts when signing-up through SAML/CAS ([kaiyou](https://github.com/tootsuite/mastodon/pull/13581))
- Fix page incorrectly scrolling when bringing up dropdown menus in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13574))
- Fix messed up z-index when NoScript blocks media/previews in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13449))
- Fix "See what's happening" page showing public instead of local timeline for logged-in users ([ThibG](https://github.com/tootsuite/mastodon/pull/13499))
- Fix not being able to resolve public resources in development environment ([Gargron](https://github.com/tootsuite/mastodon/pull/13505))
- Fix expanded video player issues in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13541), [eai04191](https://github.com/tootsuite/mastodon/pull/13533))
- Fix and refactor keyboard navigation in dropdown menus in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13528))
- Fix uploaded image orientation being messed up in some browsers in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13493))
- Fix actions log crash when displaying updates of deleted announcements in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13489))
- Fix search not working due to proxy settings when using hidden services ([Gargron](https://github.com/tootsuite/mastodon/pull/13488))
- Fix poll refresh button not being debounced in web UI ([rasjonell](https://github.com/tootsuite/mastodon/pull/13485), [ThibG](https://github.com/tootsuite/mastodon/pull/13490))
- Fix confusing error when failing to add an alias to an unknown account ([ThibG](https://github.com/tootsuite/mastodon/pull/13480))
- Fix "Email changed" notification sometimes having wrong e-mail ([ThibG](https://github.com/tootsuite/mastodon/pull/13475))
- Fix varioues issues on the account aliases page ([ThibG](https://github.com/tootsuite/mastodon/pull/13452))
- Fix API footer link in web UI ([bubblineyuri](https://github.com/tootsuite/mastodon/pull/13441))
- Fix pagination of following, followers, follow requests, blocks and mutes lists in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13445))
- Fix styling of polls in JS-less fallback on public pages ([ThibG](https://github.com/tootsuite/mastodon/pull/13436))
- Fix trying to delete already deleted file when post-processing ([Gargron](https://github.com/tootsuite/mastodon/pull/13406))
### Security
- Fix Doorkeeper vulnerability that exposed app secret to users who authorized the app and reset secret of the web UI that could have been exposed ([dependabot-preview[bot]](https://github.com/tootsuite/mastodon/pull/13613), [Gargron](https://github.com/tootsuite/mastodon/pull/13688))
- For apps that self-register on behalf of every individual user (such as most mobile apps), this is a non-issue
- The issue only affects developers of apps who are shared between multiple users, such as server-side apps like cross-posters
"compose_form.hashtag_warning":"هذا التبويق لن يُدرَج تحت أي وسم كان بما أنه غير مُدرَج. لا يُسمح بالبحث إلّا عن التبويقات العمومية عن طريق الوسوم.",
...
...
@@ -164,6 +166,7 @@
"errors.unexpected_crash.report_issue":"الإبلاغ عن خلل",
"follow_request.authorize":"ترخيص",
"follow_request.reject":"رفض",
"follow_requests.unlocked_explanation":"Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"follow_requests.unlocked_explanation":"Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers":"Desendolcadores",
"getting_started.directory":"Direutoriu de perfiles",
"follow_requests.unlocked_explanation":"Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"compose_form.hashtag_warning":"কোনো হ্যাশট্যাগের ভেতরে এই টুটটি থাকবেনা কারণ এটি তালিকাবহির্ভূত। শুধুমাত্র প্রকাশ্য ঠোটগুলো হ্যাশট্যাগের ভেতরে খুঁজে পাওয়া যাবে।",
"follow_requests.unlocked_explanation":"Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"compose_form.hashtag_warning":"Ne vo ket lakaet an toud-mañ er rolloù gerioù-klik dre mard eo anlistennet. N'eus nemet an toudoù foran a c'hall bezañ klasket dre c'her-klik.",
...
...
@@ -164,6 +166,7 @@
"errors.unexpected_crash.report_issue":"Danevellañ ur fazi",
"follow_request.authorize":"Aotren",
"follow_request.reject":"Nac'hañ",
"follow_requests.unlocked_explanation":"Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"compose_form.hashtag_warning":"Aquesta tut no es mostrarà en cap etiqueta ja que no està llistat. Només els tuts públics poden ser cercats per etiqueta.",
...
...
@@ -164,6 +166,7 @@
"errors.unexpected_crash.report_issue":"Informa d'un problema",
"follow_request.authorize":"Autoritzar",
"follow_request.reject":"Rebutjar",
"follow_requests.unlocked_explanation":"Tot i que el teu compte no està bloquejat, el personal de {domain} ha pensat que és possible que vulguis revisar les sol·licituds de seguiment d’aquests comptes de forma manual.",
"getting_started.developers":"Desenvolupadors",
"getting_started.directory":"Directori de perfils",
"compose_form.direct_message_warning":"Solu l'utilizatori mintuvati puderenu vede stu statutu.",
"compose_form.direct_message_warning_learn_more":"Amparà di più",
"compose_form.hashtag_warning":"Stu statutu ùn hè \"Micca listatu\" è ùn sarà micca listatu indè e circate da hashtag. Per esse vistu in quesse, u statutu deve esse \"Pubblicu\".",
...
...
@@ -100,15 +102,15 @@
"confirmations.block.confirm":"Bluccà",
"confirmations.block.message":"Site sicuru·a che vulete bluccà @{name}?",
"confirmations.delete.confirm":"Toglie",
"confirmations.delete.message":"Site sicuru·a che vulete supprime stu statutu?",
"confirmations.delete.message":"Site sicuru·a che vulete sguassà stu statutu?",
"confirmations.delete_list.confirm":"Toglie",
"confirmations.delete_list.message":"Site sicuru·a che vulete supprime sta lista?",
"confirmations.delete_list.message":"Site sicuru·a che vulete toglie sta lista?",
"confirmations.domain_block.confirm":"Piattà tuttu u duminiu",
"confirmations.domain_block.message":"Site sicuru·a che vulete piattà tuttu à {domain}? Saria forse abbastanza di bluccà ò piattà alcuni conti da quallà. Ùn viderete più nunda da quallà indè e linee pubbliche o e nutificazione. I vostri abbunati da stu duminiu saranu tolti.",
"confirmations.domain_block.message":"Site veramente sicuru·a che vulete piattà tuttu à {domain}? Saria forse abbastanza di bluccà ò piattà alcuni conti da quallà. Ùn viderete più nunda da quallà indè e linee pubbliche o e nutificazione. I vostri abbunati da stu duminiu saranu tolti.",
"confirmations.logout.confirm":"Scunnettassi",
"confirmations.logout.message":"Site sicuru·a che vulete scunnettà vi?",
"confirmations.mute.confirm":"Piattà",
"confirmations.mute.explanation":"Quessu hà da piattà i statuti da sta persona è i posti chì a mintuvanu, mà ellu·a puderà sempre vede i vostri statuti è siguità vi.",
"confirmations.mute.explanation":"Quessu hà da piattà i statuti da sta persona è i posti chì a mintuvanu, ma ellu·a puderà sempre vede i vostri statuti è siguità vi.",
"confirmations.mute.message":"Site sicuru·a che vulete piattà @{name}?",
"confirmations.redraft.confirm":"Sguassà è riscrive",
"confirmations.redraft.message":"Site sicuru·a chè vulete sguassà stu statutu è riscrivelu? I favuriti è spartere saranu persi, è e risposte diventeranu orfane.",
"follow_requests.unlocked_explanation":"U vostru contu ùn hè micca privatu, ma a squadra d'amministrazione di {domain} pensa chì e dumande d'abbunamentu di questi conti anu bisognu d'esse verificate manualmente.",
"getting_started.developers":"Sviluppatori",
"getting_started.directory":"Annuariu di i prufili",
"getting_started.documentation":"Ducumentazione",
...
...
@@ -205,7 +208,7 @@
"introduction.interactions.reply.text":"Pudete risponde à d'altre persone o a i vostri propii statuti, cio chì i ligarà indè una cunversazione.",
"introduction.welcome.action":"Andemu!",
"introduction.welcome.headline":"Primi passi",
"introduction.welcome.text":"Benvenutu·a indè u fediverse! In qualchi minuta, puderete diffonde missaghji è parlà à i vostri amichi nant'à una varietà maiò di servori. Mà quess'istanza, {domain}, hè speciale—ghjè induve hè uspitatu u vostru prufile, allora ricurdatevi di u so nome.",
"introduction.welcome.text":"Benvenutu·a indè u fediverse! In qualchi minuta, puderete diffonde missaghji è parlà à i vostri amichi nant'à una varietà maiò di servori. Ma quess'istanza, {domain}, hè speciale—ghjè induve hè uspitatu u vostru prufile, allora ricurdatevi di u so nome.",
"keyboard_shortcuts.back":"rivultà",
"keyboard_shortcuts.blocked":"per apre una lista d'utilizatori bluccati",
"keyboard_shortcuts.boost":"sparte",
...
...
@@ -245,7 +248,7 @@
"lightbox.view_context":"Vede u cuntestu",
"lists.account.add":"Aghjunghje à a lista",
"lists.account.remove":"Toglie di a lista",
"lists.delete":"Supprime a lista",
"lists.delete":"Toglie a lista",
"lists.edit":"Mudificà a lista",
"lists.edit.submit":"Cambià u titulu",
"lists.new.create":"Aghjunghje",
...
...
@@ -413,7 +416,7 @@
"trends.trending_now":"Tindenze d'avà",
"ui.beforeunload":"A bruttacopia sarà persa s'ellu hè chjosu Mastodon.",
"upload_area.title":"Drag & drop per caricà un fugliale",
"upload_button.label":"Aghjunghje un media (JPEG, PNG, GIF, WebM, MP4, MOV)",
"upload_button.label":"Aghjunghje un media ({formats})",
"upload_error.limit":"Limita di caricamentu di fugliali trapassata.",
"upload_error.poll":"Ùn si pò micca caricà fugliali cù i scandagli.",
"upload_form.audio_description":"Discrizzione per i ciochi",
"compose_form.hashtag_warning":"Tento toot nebude zobrazen pod žádným hashtagem, neboť je neuvedený. Pouze veřejné tooty mohou být vyhledány podle hashtagu.",
"follow_requests.unlocked_explanation":"Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"compose_form.hashtag_warning":"Ni fydd y tŵt hwn wedi ei restru o dan unrhyw hashnod gan ei fod heb ei restru. Dim ond tŵtiau cyhoeddus gellid chwilota amdanynt drwy hashnod.",
...
...
@@ -164,6 +166,7 @@
"errors.unexpected_crash.report_issue":"Rhoi gwybod am broblem",
"follow_request.authorize":"Caniatau",
"follow_request.reject":"Gwrthod",
"follow_requests.unlocked_explanation":"Er nid yw eich cyfrif wedi'i gloi, oedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.",
"compose_form.hashtag_warning":"Dette trut vil ikke blive vist under noget hashtag da det ikke er listet. Kun offentlige trut kan blive vist under søgninger med hashtags.",
"follow_requests.unlocked_explanation":"Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"getting_started.developers":"Udviklere",
"getting_started.directory":"Profilliste",
"getting_started.documentation":"Dokumentation",
...
...
@@ -335,7 +338,7 @@
"relative_time.just_now":"nu",
"relative_time.minutes":"{number}m",
"relative_time.seconds":"{number}s",
"relative_time.today":"today",
"relative_time.today":"i dag",
"reply_indicator.cancel":"Annuller",
"report.forward":"Videresend til {target}",
"report.forward_hint":"Kontoen er fra en anden server. Vil du også sende en anonym kopi af anmeldelsen dertil?",
"compose_form.hashtag_warning":"Dieser Beitrag wird nicht durch Hashtags entdeckbar sein, weil er ungelistet ist. Nur öffentliche Beiträge tauchen in Hashtag-Zeitleisten auf.",
"follow_requests.unlocked_explanation":"Auch wenn dein Konto nicht gesperrt ist, haben die Mitarbeiter von {domain} gedacht, dass es besser wäre den Follow manuell zu bestätigen.",
"compose_form.hashtag_warning":"Αυτό το τουτ δεν θα εμφανίζεται κάτω από κανένα hashtag καθώς είναι αφανές. Μόνο τα δημόσια τουτ μπορούν να αναζητηθούν ανά hashtag.",
"follow_requests.unlocked_explanation":"Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, οι διαχειριστές του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.",
"compose_form.hashtag_warning":"Ĉi tiu mesaĝo ne estos listigita per ajna kradvorto. Nur publikaj mesaĝoj estas serĉeblaj per kradvortoj.",
...
...
@@ -158,12 +160,13 @@
"empty_column.mutes":"Vi ne ankoraŭ silentigis iun uzanton.",
"empty_column.notifications":"Vi ankoraŭ ne havas sciigojn. Interagu kun aliaj por komenci konversacion.",
"empty_column.public":"Estas nenio ĉi tie! Publike skribu ion, aŭ mane sekvu uzantojn de aliaj serviloj por plenigi la publikan tempolinion",
"error.unexpected_crash.explanation":"Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.next_steps":"Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"error.unexpected_crash.explanation":"Pro eraro en nia kodo, aŭ problemo de kongruo en via retumilo, ĉi tiu paĝo ne povis esti montrata ĝuste.",
"error.unexpected_crash.next_steps":"Provu refreŝigi la paĝon. Se tio ne helpas, vi ankoraŭ povus uzi Mastodon per malsama retumilo aŭ operaciuma aplikajo.",
"errors.unexpected_crash.copy_stacktrace":"Kopii stakspuron en tondujo",
"follow_requests.unlocked_explanation":"137/5000\nKvankam via konto ne estas ŝlosita, la dungitaro de {domain} opiniis, ke vi eble volus revizii petojn de sekvadon el ĉi tiuj kontoj permane.",
"getting_started.developers":"Programistoj",
"getting_started.directory":"Profilujo",
"getting_started.documentation":"Dokumentado",
...
...
@@ -206,39 +209,39 @@
"introduction.welcome.action":"Ek!",
"introduction.welcome.headline":"Unuaj paŝoj",
"introduction.welcome.text":"Bonvenon en Fediverse! Tre baldaŭ, vi povos disdoni mesaĝojn kaj paroli al viaj amikoj tra granda servila diverseco. Sed ĉi tiu servilo, {domain}, estas speciala: ĝi enhavas vian profilon, do memoru ĝian nomon.",
"keyboard_shortcuts.back":"por reveni",
"keyboard_shortcuts.blocked":"por malfermi la liston de blokitaj uzantoj",
"keyboard_shortcuts.boost":"por diskonigi",
"keyboard_shortcuts.column":"por fokusigi mesaĝon en unu el la kolumnoj",
"keyboard_shortcuts.compose":"por fokusigi la tekstujon",
"keyboard_shortcuts.back":"reveni",
"keyboard_shortcuts.blocked":"malfermi la liston de blokitaj uzantoj",
"keyboard_shortcuts.boost":"diskonigi",
"keyboard_shortcuts.column":"fokusi mesaĝon en unu el la kolumnoj",
"keyboard_shortcuts.compose":"enfokusigi la tekstujon",
"keyboard_shortcuts.description":"Priskribo",
"keyboard_shortcuts.direct":"por malfermi la kolumnon de rektaj mesaĝoj",
"keyboard_shortcuts.down":"por iri suben en la listo",
"follow_requests.unlocked_explanation":"A pesar de que tu cuenta no está bloqueada, el equipo de {domain} pensó que podrías querer revisar manualmente las solicitudes de seguimiento de estas cuentas.",
"getting_started.developers":"Desarrolladores",
"getting_started.directory":"Directorio de perfiles",
"compose_form.hashtag_warning":"Este toot no se mostrará bajo hashtags porque no es público. Sólo los toots públicos se pueden buscar por hashtag.",
...
...
@@ -164,6 +166,7 @@
"errors.unexpected_crash.report_issue":"Informar de un problema/error",
"follow_request.authorize":"Autorizar",
"follow_request.reject":"Rechazar",
"follow_requests.unlocked_explanation":"A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.",
"getting_started.developers":"Desarrolladores",
"getting_started.directory":"Directorio de perfil",