From d845a8a28951e1ca91a4f541e7bef3319f7af721 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 2 Mar 2026 03:47:45 -0500 Subject: [PATCH 01/14] Fix violations to existing cops from rubocop v1.85.0 (#38015) --- app/lib/webhooks/payload_renderer.rb | 2 +- app/workers/move_worker.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/lib/webhooks/payload_renderer.rb b/app/lib/webhooks/payload_renderer.rb index 3d2731f6dc..73ae30b572 100644 --- a/app/lib/webhooks/payload_renderer.rb +++ b/app/lib/webhooks/payload_renderer.rb @@ -39,7 +39,7 @@ class Webhooks::PayloadRenderer rule(:digit) { match('[0-9]') } rule(:property_name) { match('[a-z_]').repeat(1) } rule(:array_index) { digit.repeat(1) } - rule(:segment) { (property_name | array_index) } + rule(:segment) { property_name | array_index } rule(:path) { property_name >> (dot >> segment).repeat } rule(:variable) { (str('}}').absent? >> path).repeat.as(:variable) } rule(:expression) { str('{{') >> variable >> str('}}') } diff --git a/app/workers/move_worker.rb b/app/workers/move_worker.rb index 76d3765c1c..8133a4de07 100644 --- a/app/workers/move_worker.rb +++ b/app/workers/move_worker.rb @@ -53,7 +53,7 @@ class MoveWorker rescue ActiveRecord::RecordInvalid nil end - end + end # Finally, handle the common case of accounts not following the new account source_local_followers @@ -72,7 +72,7 @@ class MoveWorker ['relationships', @target_account.id, follow.account_id], ] end) - end + end num_moved end From 786fcac4a1a1a1b5e4e5122faf5d9bcef1199acd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 08:50:50 +0000 Subject: [PATCH 02/14] Update dependency ioredis to v5.10.0 (#38010) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index e09e2aa1cb..54a14ebc38 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2662,10 +2662,10 @@ __metadata: languageName: node linkType: hard -"@ioredis/commands@npm:1.5.0": - version: 1.5.0 - resolution: "@ioredis/commands@npm:1.5.0" - checksum: 10c0/2d192d967a21f0192e17310d27ead02b0bdd504e834c782714abe641190ebfb548ad307fd89fd2d80db97c462afdc69ab4a4383831ab64ce61fe92f130d8b466 +"@ioredis/commands@npm:1.5.1": + version: 1.5.1 + resolution: "@ioredis/commands@npm:1.5.1" + checksum: 10c0/cb8f6d13cff0753e3e7ef001fb895491985d9a623248192538f13bc2fd9bfdfde3c18cf2ba6f20ec8ceaa681b0771070d3a09b82eed044c798bcfef5e3ae54b3 languageName: node linkType: hard @@ -8660,10 +8660,10 @@ __metadata: linkType: hard "ioredis@npm:^5.3.2": - version: 5.9.3 - resolution: "ioredis@npm:5.9.3" + version: 5.10.0 + resolution: "ioredis@npm:5.10.0" dependencies: - "@ioredis/commands": "npm:1.5.0" + "@ioredis/commands": "npm:1.5.1" cluster-key-slot: "npm:^1.1.0" debug: "npm:^4.3.4" denque: "npm:^2.1.0" @@ -8672,7 +8672,7 @@ __metadata: redis-errors: "npm:^1.2.0" redis-parser: "npm:^3.0.0" standard-as-callback: "npm:^2.1.0" - checksum: 10c0/f3d5c811bc1f320236f488ee6bd8a4857c7c0e8e5de1154b064afc03eb35aafbf24156e430025061b6939c58a5a6b424d86814d726439f5811b2e9c56c710dd4 + checksum: 10c0/294e8cdef963f922b04ad023d4165f1d399b27279b9890f3e1311da57fb2a082c8dca52d18bd14a54acd6fb82853783641a0c47ff18661a8756221049f807e88 languageName: node linkType: hard From db241b5c2c98fa60f7e4ee9914c834cd51da912a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 09:50:54 +0100 Subject: [PATCH 03/14] Update dependency axios to v1.13.6 (#38009) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 54a14ebc38..5d13c3e405 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5635,13 +5635,13 @@ __metadata: linkType: hard "axios@npm:^1.4.0": - version: 1.13.5 - resolution: "axios@npm:1.13.5" + version: 1.13.6 + resolution: "axios@npm:1.13.6" dependencies: follow-redirects: "npm:^1.15.11" form-data: "npm:^4.0.5" proxy-from-env: "npm:^1.1.0" - checksum: 10c0/abf468c34f2d145f3dc7dbc0f1be67e520630624307bda69a41bbe8d386bd672d87b4405c4ee77f9ff54b235ab02f96a9968fb00e75b13ce64706e352a3068fd + checksum: 10c0/51fb5af055c3b85662fa97df17d986ae2c37d13bf86d50b6bb36b6b3a2dec6966a1d3a14ab3774b71707b155ae3597ed9b7babdf1a1a863d1a31840cb8e7ec71 languageName: node linkType: hard From 5fd1235ba2e27638309c8806d32f6051b70819d4 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 2 Mar 2026 03:51:09 -0500 Subject: [PATCH 04/14] Update `binding_of_caller` to version 2.0.0 (#38017) --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index a294fb7206..4c47b0861c 100644 --- a/Gemfile +++ b/Gemfile @@ -180,7 +180,7 @@ group :development do # Enhanced error message pages for development gem 'better_errors', '~> 2.9' - gem 'binding_of_caller', '~> 1.0' + gem 'binding_of_caller' # Preview mail in the browser gem 'letter_opener', '~> 1.8' diff --git a/Gemfile.lock b/Gemfile.lock index 1d94c3ec05..74a5404a93 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -129,7 +129,7 @@ GEM rouge (>= 1.0.0) bigdecimal (3.3.1) bindata (2.5.1) - binding_of_caller (1.0.1) + binding_of_caller (2.0.0) debug_inspector (>= 1.2.0) blurhash (0.1.8) bootsnap (1.23.0) @@ -953,7 +953,7 @@ DEPENDENCIES aws-sdk-core aws-sdk-s3 (~> 1.123) better_errors (~> 2.9) - binding_of_caller (~> 1.0) + binding_of_caller blurhash (~> 0.1) bootsnap brakeman (~> 8.0) From 7444c8f82ecaf0cfbebf7692cfc949cd997e3718 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 09:51:13 +0100 Subject: [PATCH 05/14] New Crowdin Translations (automated) (#38018) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/da.json | 10 ++++ app/javascript/mastodon/locales/de.json | 11 +++- app/javascript/mastodon/locales/el.json | 9 ++++ app/javascript/mastodon/locales/en-GB.json | 9 ++++ app/javascript/mastodon/locales/es-AR.json | 9 ++++ app/javascript/mastodon/locales/es-MX.json | 9 ++++ app/javascript/mastodon/locales/es.json | 11 +++- app/javascript/mastodon/locales/fi.json | 17 ++++++ app/javascript/mastodon/locales/fo.json | 11 +++- app/javascript/mastodon/locales/fr-CA.json | 17 ++++++ app/javascript/mastodon/locales/fr.json | 17 ++++++ app/javascript/mastodon/locales/ga.json | 9 ++++ app/javascript/mastodon/locales/gl.json | 16 ++++++ app/javascript/mastodon/locales/he.json | 17 ++++++ app/javascript/mastodon/locales/is.json | 11 +++- app/javascript/mastodon/locales/it.json | 13 ++++- app/javascript/mastodon/locales/nan-TW.json | 33 ++++++++++++ app/javascript/mastodon/locales/sq.json | 9 ++++ app/javascript/mastodon/locales/sv.json | 10 ++++ app/javascript/mastodon/locales/tr.json | 9 ++++ app/javascript/mastodon/locales/uk.json | 58 ++++++++++++++++++++- app/javascript/mastodon/locales/vi.json | 19 ++++++- app/javascript/mastodon/locales/zh-CN.json | 9 ++++ app/javascript/mastodon/locales/zh-TW.json | 9 ++++ config/locales/doorkeeper.sv.yml | 4 ++ config/locales/nan-TW.yml | 17 ++++++ config/locales/simple_form.sv.yml | 3 ++ config/locales/sv.yml | 14 +++++ config/locales/uk.yml | 15 +++++- 29 files changed, 396 insertions(+), 9 deletions(-) diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 4fcb4cc5e2..108a450c8a 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Fremhævede hashtags", "account_edit.name_modal.add_title": "Tilføj visningsnavn", "account_edit.name_modal.edit_title": "Rediger visningsnavn", + "account_edit.profile_tab.button_label": "Tilpas", + "account_edit.profile_tab.hint.description": "Disse indstillinger tilpasser hvad brugere ser på {server} i de officielle apps, men de gælder muligvis ikke for brugere på andre servere og tredjeparts apps.", + "account_edit.profile_tab.hint.title": "Visninger vil stadig variere", + "account_edit.profile_tab.show_featured.description": "‘Fremhævet‘ er en valgfri fane, hvor du kan fremvise andre konti.", + "account_edit.profile_tab.show_featured.title": "Vis fanebladet ‘Fremhævet‘", + "account_edit.profile_tab.show_media.description": "‘Medier’ er en valgfri fane, der viser dine indlæg, der indeholder billeder eller videoer.", + "account_edit.profile_tab.show_media.title": "Vis fanebladet ‘Medier‘", + "account_edit.profile_tab.show_media_replies.description": "Når aktiveret, viser fanen Medier både dine indlæg og svar på andres indlæg.", + "account_edit.profile_tab.show_media_replies.title": "Inkludér svar på fanen 'Medier'", "account_edit.profile_tab.subtitle": "Tilpas fanerne på din profil og det, de viser.", "account_edit.profile_tab.title": "Indstillinger for profil-fane", "account_edit.save": "Gem", @@ -272,6 +281,7 @@ "closed_registrations_modal.preamble": "Mastodon er decentraliseret, så uanset hvor du opretter din konto, vil du være i stand til at følge og interagere med hvem som helst på denne server. Du kan endda selv være vært for den!", "closed_registrations_modal.title": "Oprettelse på Mastodon", "collection.share_modal.share_link_label": "Invitationlink til deling", + "collection.share_modal.share_via_post": "Del på Mastodon", "collection.share_modal.share_via_system": "Del med…", "collection.share_modal.title": "Del samling", "collection.share_modal.title_new": "Del din nye samling!", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index ce49025b5a..65418f851e 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -161,11 +161,20 @@ "account_edit.featured_hashtags.title": "Vorgestellte Hashtags", "account_edit.name_modal.add_title": "Anzeigenamen hinzufügen", "account_edit.name_modal.edit_title": "Anzeigenamen bearbeiten", + "account_edit.profile_tab.button_label": "Anpassen", + "account_edit.profile_tab.hint.description": "Diese Einstellungen legen fest, was andere in den offiziellen Apps auf {server} sehen können. Möglicherweise werden sie nicht von anderen Servern oder Apps von Dritten berücksichtigt.", + "account_edit.profile_tab.hint.title": "Darstellung kann abweichen", + "account_edit.profile_tab.show_featured.description": "„Vorgestellt“ ist ein optionaler Tab, der von dir ausgewählte Profile hervorhebt.", + "account_edit.profile_tab.show_featured.title": "„Vorgestellt“-Tab anzeigen", + "account_edit.profile_tab.show_media.description": "„Medien“ ist ein optionaler Tab, der deine Beiträge mit Bildern oder Videos anzeigt.", + "account_edit.profile_tab.show_media.title": "„Medien“-Tab anzeigen", + "account_edit.profile_tab.show_media_replies.description": "Durch das Aktivieren werden sowohl deine Beiträge als auch deine Antworten auf Beiträge anderer im „Medien“-Tab angezeigt.", + "account_edit.profile_tab.show_media_replies.title": "Antworten im „Medien“-Tab anzeigen", "account_edit.profile_tab.subtitle": "Passe die Tabs deines Profils und deren Inhalte an.", "account_edit.profile_tab.title": "Profil-Tab-Einstellungen", "account_edit.save": "Speichern", "account_edit_tags.column_title": "Vorgestellte Hashtags bearbeiten", - "account_edit_tags.help_text": "Vorgestellte Hashtags können dabei helfen, dein Profil zu entdecken und besser mit dir zu interagieren. Sie erscheinen in der Aktivitätenübersicht deines Profils und dienen als Filter.", + "account_edit_tags.help_text": "Vorgestellte Hashtags können dabei helfen, dein Profil zu entdecken und besser mit dir zu interagieren. Sie dienen als Filter in der Aktivitätenübersicht deines Profils.", "account_edit_tags.search_placeholder": "Gib einen Hashtag ein …", "account_edit_tags.suggestions": "Vorschläge:", "account_edit_tags.tag_status_count": "{count, plural, one {# Beitrag} other {# Beiträge}}", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 68de788149..a649feef70 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Αναδεδειγμένες ετικέτες", "account_edit.name_modal.add_title": "Προσθήκη εμφανιζόμενου ονόματος", "account_edit.name_modal.edit_title": "Επεξεργασία εμφανιζόμενου ονόματος", + "account_edit.profile_tab.button_label": "Προσαρμογή", + "account_edit.profile_tab.hint.description": "Αυτές οι ρυθμίσεις προσαρμόζουν τι βλέπουν οι χρήστες στο {server} στις επίσημες εφαρμογές, αλλά δεν μπορούν να εφαρμοστούν για χρήστες σε άλλους διακομιστές και εφαρμογές τρίτων.", + "account_edit.profile_tab.hint.title": "Οι εμφανίσεις εξακολουθούν να ποικίλλουν", + "account_edit.profile_tab.show_featured.description": "«Αναδεδειγμένα» είναι μια προαιρετική καρτέλα όπου μπορείτε να αναδείξετε άλλους λογαριασμούς.", + "account_edit.profile_tab.show_featured.title": "Εμφάνιση καρτέλας «Αναδεδειγμένα»", + "account_edit.profile_tab.show_media.description": "«Πολυμέσα» είναι μια προαιρετική καρτέλα που δείχνει τις αναρτήσεις σας που περιέχουν εικόνες ή βίντεο.", + "account_edit.profile_tab.show_media.title": "Εμφάνιση καρτέλας «Πολυμέσα»", + "account_edit.profile_tab.show_media_replies.description": "Όταν ενεργοποιηθεί, η καρτέλα Πολυμέσα εμφανίζει τόσο τις αναρτήσεις σας όσο και τις απαντήσεις σας σε αναρτήσεις άλλων ατόμων.", + "account_edit.profile_tab.show_media_replies.title": "Συμπερίληψη απαντήσεων στην καρτέλα «Πολυμέσα»", "account_edit.profile_tab.subtitle": "Προσαρμόστε τις καρτέλες στο προφίλ σας και τι εμφανίζουν.", "account_edit.profile_tab.title": "Ρυθμίσεις καρτέλας προφίλ", "account_edit.save": "Αποθήκευση", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index cac4cf72e0..49e1177249 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Featured hashtags", "account_edit.name_modal.add_title": "Add display name", "account_edit.name_modal.edit_title": "Edit display name", + "account_edit.profile_tab.button_label": "Customise", + "account_edit.profile_tab.hint.description": "These settings customise what users see on {server} in the official apps, but they may not apply to users on other servers and 3rd party apps.", + "account_edit.profile_tab.hint.title": "Displays still vary", + "account_edit.profile_tab.show_featured.description": "‘Featured’ is an optional tab where you can showcase other accounts.", + "account_edit.profile_tab.show_featured.title": "Show ‘Featured’ tab", + "account_edit.profile_tab.show_media.description": "‘Media’ is an optional tab that shows your posts containing images or videos.", + "account_edit.profile_tab.show_media.title": "Show ‘Media’ tab", + "account_edit.profile_tab.show_media_replies.description": "When enabled, Media tab shows both your posts and replies to other people’s posts.", + "account_edit.profile_tab.show_media_replies.title": "Include replies on ‘Media’ tab", "account_edit.profile_tab.subtitle": "Customise the tabs on your profile and what they display.", "account_edit.profile_tab.title": "Profile tab settings", "account_edit.save": "Save", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 3e81941bc8..6ecc2c1c38 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Etiquetas destacadas", "account_edit.name_modal.add_title": "Agregar nombre a mostrar", "account_edit.name_modal.edit_title": "Editar nombre a mostrar", + "account_edit.profile_tab.button_label": "Personalizar", + "account_edit.profile_tab.hint.description": "Esta configuración personaliza lo que los usuarios ven en {server} en las aplicaciones oficiales, pero es posible que no se apliquen a los usuarios en otros servidores y aplicaciones de terceros.", + "account_edit.profile_tab.hint.title": "Las pantallas pueden variar", + "account_edit.profile_tab.show_featured.description": "«Destacados» es una pestaña opcional en donde podés mostrar otras cuentas.", + "account_edit.profile_tab.show_featured.title": "Mostrar pestaña «Destacados»", + "account_edit.profile_tab.show_media.description": "«Medios» es una pestaña opcional que muestra tus mensajes conteniendo imágenes, videos o audios.", + "account_edit.profile_tab.show_media.title": "Mostrar pestaña «Medios»", + "account_edit.profile_tab.show_media_replies.description": "Cuando está habilitada, la pestaña «Medios» muestra tanto tus mensajes como tus respuestas a otras cuentas.", + "account_edit.profile_tab.show_media_replies.title": "Incluir respuestas en la pestaña «Medios»", "account_edit.profile_tab.subtitle": "Personalizá las pestañas en tu perfil y qué van a mostrar.", "account_edit.profile_tab.title": "Configuración de pestaña de perfil", "account_edit.save": "Guardar", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 51c9882261..a884b94a58 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Etiquetas destacadas", "account_edit.name_modal.add_title": "Añadir nombre para mostrar", "account_edit.name_modal.edit_title": "Editar nombre para mostrar", + "account_edit.profile_tab.button_label": "Personalizar", + "account_edit.profile_tab.hint.description": "Esta configuración personaliza lo que los usuarios ven en {server} en las aplicaciones oficiales, pero es posible que no se aplique a los usuarios de otros servidores y aplicaciones de terceros.", + "account_edit.profile_tab.hint.title": "Las pantallas todavía varían", + "account_edit.profile_tab.show_featured.description": "«Destacados» es una pestaña opcional en la que puedes mostrar otras cuentas.", + "account_edit.profile_tab.show_featured.title": "Mostrar la pestaña «Destacados»", + "account_edit.profile_tab.show_media.description": "«Multimedia» es una pestaña opcional que muestra tus publicaciones que contienen imágenes o videos.", + "account_edit.profile_tab.show_media.title": "Mostrar pestaña «Multimedia»", + "account_edit.profile_tab.show_media_replies.description": "Cuando está habilitada, la pestaña Multimedia muestra tanto tus publicaciones como tus respuestas a las publicaciones de otras personas.", + "account_edit.profile_tab.show_media_replies.title": "Incluir respuestas en la pestaña «Multimedia»", "account_edit.profile_tab.subtitle": "Personaliza las pestañas de tu perfil y lo que muestran.", "account_edit.profile_tab.title": "Configuración de la pestaña de perfil", "account_edit.save": "Guardar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 62abafc4bc..cafd141937 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Etiquetas destacadas", "account_edit.name_modal.add_title": "Añadir nombre para mostrar", "account_edit.name_modal.edit_title": "Editar nombre para mostrar", + "account_edit.profile_tab.button_label": "Personalizar", + "account_edit.profile_tab.hint.description": "Estos ajustes personalizan lo que los usuarios ven en {server} en las aplicaciones oficiales, pero es posible que no se apliquen a los usuarios en otros servidores y aplicaciones de terceros.", + "account_edit.profile_tab.hint.title": "La disposición puede variar", + "account_edit.profile_tab.show_featured.description": "«Destacado» es una pestaña opcional donde puedes mostrar otras cuentas.", + "account_edit.profile_tab.show_featured.title": "Mostrar pestaña «Destacado»", + "account_edit.profile_tab.show_media.description": "«Multimedia» es una pestaña opcional que muestra tus publicaciones que contienen imágenes o videos.", + "account_edit.profile_tab.show_media.title": "Mostrar pestaña «Multimedia»", + "account_edit.profile_tab.show_media_replies.description": "Cuando está activado, la pestaña Multimedia muestra tanto tus publicaciones como tus respuestas a las publicaciones de otras personas.", + "account_edit.profile_tab.show_media_replies.title": "Incluir respuestas en la pestaña «Multimedia»", "account_edit.profile_tab.subtitle": "Personaliza las pestañas de tu perfil y lo que muestran.", "account_edit.profile_tab.title": "Configuración de la pestaña de perfil", "account_edit.save": "Guardar", @@ -313,7 +322,7 @@ "collections.new_collection": "Nueva colección", "collections.no_collections_yet": "Aún no hay colecciones.", "collections.old_last_post_note": "Última publicación hace más de una semana", - "collections.remove_account": "Borrar esta cuenta", + "collections.remove_account": "Quitar esta cuenta", "collections.report_collection": "Informar de esta colección", "collections.search_accounts_label": "Buscar cuentas para añadir…", "collections.search_accounts_max_reached": "Has añadido el número máximo de cuentas", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index d9c7ee97a1..4b95f2ff94 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Esiteltävät aihetunnisteet", "account_edit.name_modal.add_title": "Lisää näyttönimi", "account_edit.name_modal.edit_title": "Muokkaa näyttönimeä", + "account_edit.profile_tab.button_label": "Mukauta", + "account_edit.profile_tab.hint.description": "Nämä asetukset mukauttavat sitä, mitä käyttäjät näkevät palvelimella {server} virallisissa sovelluksissa, mutta ne eivät välttämättä vaikuta muiden palvelinten tai kolmannen osapuolen sovellusten käyttäjiin.", + "account_edit.profile_tab.hint.title": "Näkymät vaihtelevat edelleen", + "account_edit.profile_tab.show_featured.description": "”Esittelyssä” on valinnainen välilehti, jossa voit esitellä muita tilejä.", + "account_edit.profile_tab.show_featured.title": "Näytä Esittelyssä-välilehti", + "account_edit.profile_tab.show_media.description": "”Media” on valinnainen välilehti, joka näyttää kuvia tai videoita sisältävät julkaisusi.", + "account_edit.profile_tab.show_media.title": "Näytä Media-välilehti", + "account_edit.profile_tab.show_media_replies.description": "Kun käytössä, Media-välilehti näyttää sekä julkaisusi että vastauksesi muiden julkaisuihin.", + "account_edit.profile_tab.show_media_replies.title": "Sisällytä vastaukset Media-välilehdelle", "account_edit.profile_tab.subtitle": "Mukauta profiilisi välilehtiä ja sitä, mitä niissä näkyy.", "account_edit.profile_tab.title": "Profiilin välilehtien asetukset", "account_edit.save": "Tallenna", @@ -271,6 +280,13 @@ "closed_registrations_modal.find_another_server": "Etsi toinen palvelin", "closed_registrations_modal.preamble": "Mastodon on hajautettu, joten riippumatta siitä, missä luot tilisi, voit seurata ja olla vuorovaikutuksessa kenen tahansa kanssa tällä palvelimella. Voit jopa isännöidä palvelinta!", "closed_registrations_modal.title": "Rekisteröityminen Mastodoniin", + "collection.share_modal.share_link_label": "Kutsun jakolinkki", + "collection.share_modal.share_via_post": "Jaa Mastodonissa", + "collection.share_modal.share_via_system": "Jaa kohteeseen…", + "collection.share_modal.title": "Jaa kokoelma", + "collection.share_modal.title_new": "Jaa uusi kokoelmasi!", + "collection.share_template_other": "Katso tämä siisti kokoelma: {link}", + "collection.share_template_own": "Katso uusi kokoelmani: {link}", "collections.account_count": "{count, plural, one {# tili} other {# tiliä}}", "collections.accounts.empty_description": "Lisää enintään {count} seuraamaasi tiliä", "collections.accounts.empty_title": "Tämä kokoelma on tyhjä", @@ -448,6 +464,7 @@ "conversation.open": "Näytä keskustelu", "conversation.with": "{names} kanssa", "copy_icon_button.copied": "Kopioitu leikepöydälle", + "copy_icon_button.copy_this_text": "Kopioi linkki leikepöydälle", "copypaste.copied": "Kopioitu", "copypaste.copy_to_clipboard": "Kopioi leikepöydälle", "directory.federated": "Tunnetusta fediversumista", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 417947a25b..10f727109e 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -42,7 +42,7 @@ "account.familiar_followers_many": "{name1}, {name2} og {othersCount, plural, one {ein annar/onnur tú kennir} other {# onnur tú kennir}} fylgja", "account.familiar_followers_one": "{name1} fylgir", "account.familiar_followers_two": "{name1} og {name2} fylgja", - "account.featured": "Tikin fram", + "account.featured": "Sermerkt", "account.featured.accounts": "Vangar", "account.featured.collections": "Søvn", "account.featured.hashtags": "Frámerki", @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Sermerkt frámerki", "account_edit.name_modal.add_title": "Legg víst navn afturat", "account_edit.name_modal.edit_title": "Rætta víst navn", + "account_edit.profile_tab.button_label": "Tillaga", + "account_edit.profile_tab.hint.description": "Hesi stillingarnar tillaga tað, sum brúkarar síggja á {server} í almennu appunum, men tær eru kanska ikki galdandi fyri brúkarar á øðrum servarum og appum hjá triðjapørtum.", + "account_edit.profile_tab.hint.title": "Vísingar eru framvegis ymiskar", + "account_edit.profile_tab.show_featured.description": "'Sermerkt' er eitt valfrítt spjaldur, har tú kanst sýna aðrar kontur fram.", + "account_edit.profile_tab.show_featured.title": "Vís 'Sermerkt\" spjaldur", + "account_edit.profile_tab.show_media.description": "'Miðlar' er eitt valfrítt spjaldur, sum vísur tínar postar, sum innihalda myndir ella sjónfílur.", + "account_edit.profile_tab.show_media.title": "Vís 'Miðlar' spjaldur", + "account_edit.profile_tab.show_media_replies.description": "Tá tað er virkið, vísir Miðlar spjaldrið bæði tínar postar og svar til postar hjá øðrum.", + "account_edit.profile_tab.show_media_replies.title": "Írokna svar á 'Miðlar' spjaldrinum", "account_edit.profile_tab.subtitle": "Tillaga spjøldrini á vanganum hjá tær og tað, tey vísa.", "account_edit.profile_tab.title": "Stillingar fyri spjøldur á vanga", "account_edit.save": "Goym", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index 54036c953f..ac99eb7ba8 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Hashtags mis en avant", "account_edit.name_modal.add_title": "Ajouter un nom public", "account_edit.name_modal.edit_title": "Modifier le nom public", + "account_edit.profile_tab.button_label": "Personnaliser", + "account_edit.profile_tab.hint.description": "Ces paramètres personnalisent ce que les personnes voient sur {server} dans les applications officielles, mais ils peuvent ne pas s'appliquer aux personnes sur d'autres serveurs ou utilisant une application tiers.", + "account_edit.profile_tab.hint.title": "L'affichage peut varier", + "account_edit.profile_tab.show_featured.description": "« En vedette » est un onglet facultatif où vous pouvez mettre en avant d'autres comptes.", + "account_edit.profile_tab.show_featured.title": "Afficher l'onglet « En vedette »", + "account_edit.profile_tab.show_media.description": "« Média » est un onglet facultatif qui affiche vos messages contenant des images ou des vidéos.", + "account_edit.profile_tab.show_media.title": "Afficher l'onglet « Média »", + "account_edit.profile_tab.show_media_replies.description": "En activant cette option l'onglet « Média » affiche à la fois vos messages et vos réponses aux messages d'autres personnes.", + "account_edit.profile_tab.show_media_replies.title": "Inclure les réponses dans l'onglet « Média »", "account_edit.profile_tab.subtitle": "Personnaliser les onglets de votre profil et leur contenu.", "account_edit.profile_tab.title": "Paramètres de l'onglet du profil", "account_edit.save": "Enregistrer", @@ -271,6 +280,13 @@ "closed_registrations_modal.find_another_server": "Trouver un autre serveur", "closed_registrations_modal.preamble": "Mastodon est décentralisé, donc peu importe où vous créez votre compte, vous serez en mesure de suivre et d'interagir avec quiconque sur ce serveur. Vous pouvez même l'héberger vous-même!", "closed_registrations_modal.title": "S'inscrire sur Mastodon", + "collection.share_modal.share_link_label": "Lien à partager", + "collection.share_modal.share_via_post": "Publier sur Mastodon", + "collection.share_modal.share_via_system": "Partager avec…", + "collection.share_modal.title": "Partager la collection", + "collection.share_modal.title_new": "Partager votre nouvelle collection !", + "collection.share_template_other": "Découvrez cette collection incroyable : {link}", + "collection.share_template_own": "Découvrez ma nouvelle collection : {link}", "collections.account_count": "{count, plural, one {# compte} other {# comptes}}", "collections.accounts.empty_description": "Ajouter jusqu'à {count} comptes que vous suivez", "collections.accounts.empty_title": "Cette collection est vide", @@ -448,6 +464,7 @@ "conversation.open": "Afficher cette conversation", "conversation.with": "Avec {names}", "copy_icon_button.copied": "Copié dans le presse-papier", + "copy_icon_button.copy_this_text": "Copier le lien dans le presse-papier", "copypaste.copied": "Copié", "copypaste.copy_to_clipboard": "Copier dans le presse-papiers", "directory.federated": "D'un fediverse connu", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 18daca7893..2c6f4be00a 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Hashtags mis en avant", "account_edit.name_modal.add_title": "Ajouter un nom public", "account_edit.name_modal.edit_title": "Modifier le nom public", + "account_edit.profile_tab.button_label": "Personnaliser", + "account_edit.profile_tab.hint.description": "Ces paramètres personnalisent ce que les personnes voient sur {server} dans les applications officielles, mais ils peuvent ne pas s'appliquer aux personnes sur d'autres serveurs ou utilisant une application tiers.", + "account_edit.profile_tab.hint.title": "L'affichage peut varier", + "account_edit.profile_tab.show_featured.description": "« En vedette » est un onglet facultatif où vous pouvez mettre en avant d'autres comptes.", + "account_edit.profile_tab.show_featured.title": "Afficher l'onglet « En vedette »", + "account_edit.profile_tab.show_media.description": "« Média » est un onglet facultatif qui affiche vos messages contenant des images ou des vidéos.", + "account_edit.profile_tab.show_media.title": "Afficher l'onglet « Média »", + "account_edit.profile_tab.show_media_replies.description": "En activant cette option l'onglet « Média » affiche à la fois vos messages et vos réponses aux messages d'autres personnes.", + "account_edit.profile_tab.show_media_replies.title": "Inclure les réponses dans l'onglet « Média »", "account_edit.profile_tab.subtitle": "Personnaliser les onglets de votre profil et leur contenu.", "account_edit.profile_tab.title": "Paramètres de l'onglet du profil", "account_edit.save": "Enregistrer", @@ -271,6 +280,13 @@ "closed_registrations_modal.find_another_server": "Trouver un autre serveur", "closed_registrations_modal.preamble": "Mastodon est décentralisé : peu importe où vous créez votre compte, vous serez en mesure de suivre et d'interagir avec quiconque sur ce serveur. Vous pouvez même l'héberger !", "closed_registrations_modal.title": "Inscription sur Mastodon", + "collection.share_modal.share_link_label": "Lien à partager", + "collection.share_modal.share_via_post": "Publier sur Mastodon", + "collection.share_modal.share_via_system": "Partager avec…", + "collection.share_modal.title": "Partager la collection", + "collection.share_modal.title_new": "Partager votre nouvelle collection !", + "collection.share_template_other": "Découvrez cette collection incroyable : {link}", + "collection.share_template_own": "Découvrez ma nouvelle collection : {link}", "collections.account_count": "{count, plural, one {# compte} other {# comptes}}", "collections.accounts.empty_description": "Ajouter jusqu'à {count} comptes que vous suivez", "collections.accounts.empty_title": "Cette collection est vide", @@ -448,6 +464,7 @@ "conversation.open": "Afficher la conversation", "conversation.with": "Avec {names}", "copy_icon_button.copied": "Copié dans le presse-papier", + "copy_icon_button.copy_this_text": "Copier le lien dans le presse-papier", "copypaste.copied": "Copié", "copypaste.copy_to_clipboard": "Copier dans le presse-papiers", "directory.federated": "Du fédivers connu", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 5ae8d75fce..776df2db7b 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Haischlibeanna Réadmhaoine", "account_edit.name_modal.add_title": "Cuir ainm taispeána leis", "account_edit.name_modal.edit_title": "Cuir ainm taispeána in eagar", + "account_edit.profile_tab.button_label": "Saincheap", + "account_edit.profile_tab.hint.description": "Saincheapann na socruithe seo a bhfeiceann úsáideoirí ar {server} sna haipeanna oifigiúla, ach ní fhéadfaidh siad a bheith infheidhme maidir le húsáideoirí ar fhreastalaithe eile agus ar aipeanna tríú páirtí.", + "account_edit.profile_tab.hint.title": "Bíonn taispeántais fós éagsúil", + "account_edit.profile_tab.show_featured.description": "Is cluaisín roghnach é ‘Molta’ inar féidir leat cuntais eile a thaispeáint.", + "account_edit.profile_tab.show_featured.title": "Taispeáin an cluaisín 'Molta'", + "account_edit.profile_tab.show_media.description": "Is cluaisín roghnach é ‘Meáin’ a thaispeánann do phoist ina bhfuil íomhánna nó físeáin.", + "account_edit.profile_tab.show_media.title": "Taispeáin an cluaisín ‘Meáin’", + "account_edit.profile_tab.show_media_replies.description": "Nuair a bhíonn sé cumasaithe, taispeánann an cluaisín Meáin do phoist agus freagraí ar phoist daoine eile araon.", + "account_edit.profile_tab.show_media_replies.title": "Cuir freagraí san áireamh ar an táb ‘Meáin’", "account_edit.profile_tab.subtitle": "Saincheap na cluaisíní ar do phróifíl agus a bhfuil á thaispeáint iontu.", "account_edit.profile_tab.title": "Socruithe an chluaisín próifíle", "account_edit.save": "Sábháil", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 1a49f6ba36..4301834a08 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -161,6 +161,14 @@ "account_edit.featured_hashtags.title": "Cancelos destacados", "account_edit.name_modal.add_title": "Engadir nome público", "account_edit.name_modal.edit_title": "Editar o nome público", + "account_edit.profile_tab.button_label": "Personalizar", + "account_edit.profile_tab.hint.description": "Estes axustes personalizan o que ven as usuarias de {server} nas apps oficiais, pero non se aplica ás usuarias de outros servidores nin apps alleas.", + "account_edit.profile_tab.show_featured.description": "'Destacado' é unha pestana optativa na que podes mostrar outras contas.", + "account_edit.profile_tab.show_featured.title": "Mostrar pestana 'Destacado'", + "account_edit.profile_tab.show_media.description": "'Multimedia' é unha pestana optativa na que aparecen as túas publicacións con fotos e vídeos.", + "account_edit.profile_tab.show_media.title": "Mostrar pestana 'Multimedia'", + "account_edit.profile_tab.show_media_replies.description": "Ao activala, a pestana Multimedia mostra tanto as túas publicacións como as respostas a outras persoas.", + "account_edit.profile_tab.show_media_replies.title": "Incluír respostas na pestana 'Multimedia'", "account_edit.profile_tab.subtitle": "Personaliza as pestanas e o seu contido no teu perfil.", "account_edit.profile_tab.title": "Perfil e axustes das pestanas", "account_edit.save": "Gardar", @@ -271,6 +279,13 @@ "closed_registrations_modal.find_another_server": "Atopa outro servidor", "closed_registrations_modal.preamble": "Mastodon é descentralizado, así que non importa onde crees a conta, poderás seguir e interactuar con calquera conta deste servidor. Incluso podes ter o teu servidor!", "closed_registrations_modal.title": "Crear conta en Mastodon", + "collection.share_modal.share_link_label": "Ligazón para compartir", + "collection.share_modal.share_via_post": "Publicar en Mastodon", + "collection.share_modal.share_via_system": "Compartir con…", + "collection.share_modal.title": "Compartir colección", + "collection.share_modal.title_new": "Comparte a túa nova colección!", + "collection.share_template_other": "Mira que colección máis boa: {link}", + "collection.share_template_own": "Mira a miña nova colección: {link}", "collections.account_count": "{count, plural, one {# conta} other {# contas}}", "collections.accounts.empty_description": "Engade ata {count} contas que segues", "collections.accounts.empty_title": "A colección está baleira", @@ -448,6 +463,7 @@ "conversation.open": "Ver conversa", "conversation.with": "Con {names}", "copy_icon_button.copied": "Copiada ao portapapeis", + "copy_icon_button.copy_this_text": "Copiar a ligazón ao portapapeis", "copypaste.copied": "Copiado", "copypaste.copy_to_clipboard": "Copiar ao portapapeis", "directory.federated": "Do fediverso coñecido", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index abe3687f89..7bea5cac0f 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "תגיות נבחרות", "account_edit.name_modal.add_title": "הוספת שם תצוגה", "account_edit.name_modal.edit_title": "עריכת שם תצוגה", + "account_edit.profile_tab.button_label": "התאמה אישית", + "account_edit.profile_tab.hint.description": "הגדרות אלו משנות מה משתמשים יראו על {server} ביישומונים הרשמיים, אבל הן לא בהכרח רלוונטיות למשתמשים על שרתים אחרים ועל יישומונים צד ג'.", + "account_edit.profile_tab.hint.title": "התצוגה עשויה להיות שונה", + "account_edit.profile_tab.show_featured.description": "\"נבחרים\" הוא טאב לבחירה שבו תוכלו להציג חשבונות אחרים.", + "account_edit.profile_tab.show_featured.title": "הצגת טאב \"נבחרים\"", + "account_edit.profile_tab.show_media.description": "\"מדיה\" הוא טאב לבחירה שבוא יוצגו הודעות שלך שמכילות תמונות או וידאו.", + "account_edit.profile_tab.show_media.title": "הצגת טאב \"מדיה\"", + "account_edit.profile_tab.show_media_replies.description": "כשמאופשר, טאב המדיה מציג גם הודעות מקוריות וגם תשובות להודעות של אחרים.", + "account_edit.profile_tab.show_media_replies.title": "לכלול תגובות בטאב המדיה", "account_edit.profile_tab.subtitle": "התאימו את הטאבים בפרופיל שלכם ומה שהם יציגו.", "account_edit.profile_tab.title": "הגדרות טאבים לפרופיל", "account_edit.save": "שמירה", @@ -271,6 +280,13 @@ "closed_registrations_modal.find_another_server": "חיפוש שרת אחר", "closed_registrations_modal.preamble": "מסטודון הוא רשת מבוזרת, כך שלא משנה היכן החשבון שלך, קיימת האפשרות לעקוב ולתקשר עם משתמשים בשרת הזה. אפשר אפילו להריץ שרת בעצמך!", "closed_registrations_modal.title": "להרשם למסטודון", + "collection.share_modal.share_link_label": "קישור להזמנה לשיתוף", + "collection.share_modal.share_via_post": "לפרסם במסטודון", + "collection.share_modal.share_via_system": "לשתף אל…", + "collection.share_modal.title": "שיתוף אוסף", + "collection.share_modal.title_new": "שתפו את האוסף החדש שלכם!", + "collection.share_template_other": "הציצו על האוסף המעניין הזה: {link}", + "collection.share_template_own": "הציצו על האוסף החדש שלי: {link}", "collections.account_count": "{count, plural, one {חשבון אחד} other {# חשבונות}}", "collections.accounts.empty_description": "להוסיף עד ל־{count} חשבונות שאתם עוקבים אחריהם", "collections.accounts.empty_title": "האוסף הזה ריק", @@ -448,6 +464,7 @@ "conversation.open": "צפו בשיחה", "conversation.with": "עם {names}", "copy_icon_button.copied": "הועתק ללוח", + "copy_icon_button.copy_this_text": "העתקת הקישור", "copypaste.copied": "הועתק", "copypaste.copy_to_clipboard": "העתקה ללוח הגזירים", "directory.federated": "מהפדרציה הידועה", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index ee31fcac5d..ced1cb70f8 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -78,7 +78,7 @@ "account.languages": "Breyta tungumálum í áskrift", "account.link_verified_on": "Eignarhald á þessum tengli var athugað þann {date}", "account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.", - "account.media": "Myndskrár", + "account.media": "Myndefni", "account.mention": "Minnast á @{name}", "account.menu.add_to_list": "Bæta á lista…", "account.menu.block": "Útiloka notandaaðgang", @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Myllumerki með aukið vægi", "account_edit.name_modal.add_title": "Bættu við birtingarnafni", "account_edit.name_modal.edit_title": "Breyta birtingarnafni", + "account_edit.profile_tab.button_label": "Sérsníða", + "account_edit.profile_tab.hint.description": "Þessar stillingar sérsníða hvað notendur sjá á {server} í opinberu forritunum, en ekki er víst hvernig þetta virkar fyrir notendur á öðrum netþjónum og utanaðkomandi forritum.", + "account_edit.profile_tab.hint.title": "Birting er ennþá breytileg", + "account_edit.profile_tab.show_featured.description": "'Með aukið vægi' er valkvæður flipi þar sem þú getur kynnt aðra notendaaðganga.", + "account_edit.profile_tab.show_featured.title": "Birta 'Með aukið vægi' flipa", + "account_edit.profile_tab.show_media.description": "‘Myndefni’ er valkvæður flipi þar sem birtast þær færslur þínar sem innihalda myndir eða myndskeið.", + "account_edit.profile_tab.show_media.title": "Birta 'Myndefni' flipa", + "account_edit.profile_tab.show_media_replies.description": "Þegar þetta er virkt, sýnir myndefnisflipinn bæði færslurnar þínar og svör þín við færslum annarra.", + "account_edit.profile_tab.show_media_replies.title": "Hafa með svör á flipanum ‘Myndefni’", "account_edit.profile_tab.subtitle": "Sérsníddu flipana á notandasniðinu þínu og hvað þeir birta.", "account_edit.profile_tab.title": "Stillingar notandasniðsflipa", "account_edit.save": "Vista", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 9746153961..226314eba1 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -42,7 +42,7 @@ "account.familiar_followers_many": "Seguito da {name1}, {name2}, e {othersCount, plural, one {un altro che conosci} other {altri # che conosci}}", "account.familiar_followers_one": "Seguito da {name1}", "account.familiar_followers_two": "Seguito da {name1} e {name2}", - "account.featured": "In primo piano", + "account.featured": "In evidenza", "account.featured.accounts": "Profili", "account.featured.collections": "Collezioni", "account.featured.hashtags": "Hashtag", @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Hashtag in evidenza", "account_edit.name_modal.add_title": "Aggiungi il nome mostrato", "account_edit.name_modal.edit_title": "Modifica il nome mostrato", + "account_edit.profile_tab.button_label": "Personalizza", + "account_edit.profile_tab.hint.description": "Queste impostazioni personalizzano ciò che gli utenti vedono su {server} nelle app ufficiali, ma potrebbero non applicarsi agli utenti su altri server e app di terze parti.", + "account_edit.profile_tab.hint.title": "La visualizzazione può variare", + "account_edit.profile_tab.show_featured.description": "\"In evidenza\" è una scheda opzionale in cui puoi mostrare altri account.", + "account_edit.profile_tab.show_featured.title": "Mostra la scheda \"In evidenza\"", + "account_edit.profile_tab.show_media.description": "\"Media\" è una scheda opzionale che mostra i tuoi post contenenti immagini o video.", + "account_edit.profile_tab.show_media.title": "Mostra la scheda \"Media\"", + "account_edit.profile_tab.show_media_replies.description": "Quando abilitata, la scheda Media mostra sia i tuoi post che le risposte ai post di altre persone.", + "account_edit.profile_tab.show_media_replies.title": "Includi le risposte nella scheda \"Media\"", "account_edit.profile_tab.subtitle": "Personalizza le schede del tuo profilo e ciò che mostrano.", "account_edit.profile_tab.title": "Impostazioni della scheda del profilo", "account_edit.save": "Salva", @@ -509,7 +518,7 @@ "emoji_button.travel": "Viaggi & Luoghi", "empty_column.account_featured.me": "Non hai ancora messo in evidenza nulla. Sapevi che puoi mettere in evidenza gli hashtag che usi più spesso e persino gli account dei tuoi amici sul tuo profilo?", "empty_column.account_featured.other": "{acct} non ha ancora messo in evidenza nulla. Sapevi che puoi mettere in evidenza gli hashtag che usi più spesso e persino gli account dei tuoi amici sul tuo profilo?", - "empty_column.account_featured_other.unknown": "Questo account non ha ancora pubblicato nulla.", + "empty_column.account_featured_other.unknown": "Questo account non ha ancora messo nulla in evidenza.", "empty_column.account_hides_collections": "Questo utente ha scelto di non rendere disponibili queste informazioni", "empty_column.account_suspended": "Profilo sospeso", "empty_column.account_timeline": "Nessun post qui!", diff --git a/app/javascript/mastodon/locales/nan-TW.json b/app/javascript/mastodon/locales/nan-TW.json index 60639f9756..634ea4e248 100644 --- a/app/javascript/mastodon/locales/nan-TW.json +++ b/app/javascript/mastodon/locales/nan-TW.json @@ -44,9 +44,11 @@ "account.familiar_followers_two": "Hōo {name1} kap {name2} 跟tuè", "account.featured": "精選ê", "account.featured.accounts": "個人資料", + "account.featured.collections": "收藏", "account.featured.hashtags": "Hashtag", "account.featured_tags.last_status_at": "頂kái tī {date} Po文", "account.featured_tags.last_status_never": "無PO文", + "account.field_overflow": "展示規篇內容", "account.filters.all": "逐ē活動", "account.filters.boosts_toggle": "顯示轉PO", "account.filters.posts_boosts": "PO文kap轉PO", @@ -144,6 +146,9 @@ "account_edit.bio.title": "個人紹介", "account_edit.bio_modal.add_title": "加添個人紹介", "account_edit.bio_modal.edit_title": "編個人紹介", + "account_edit.button.add": "加 {item}", + "account_edit.button.delete": "Thâi {item}", + "account_edit.button.edit": "編 {item}", "account_edit.char_counter": "{currentLength}/{maxLength} ê字", "account_edit.column_button": "做好ah", "account_edit.column_title": "編輯個人資料", @@ -151,13 +156,28 @@ "account_edit.custom_fields.title": "自訂欄", "account_edit.display_name.placeholder": "Lí ê顯示ê名是lí ê名佇lí ê個人資料kap時間線出現ê方式。", "account_edit.display_name.title": "顯示ê名", + "account_edit.featured_hashtags.item": "hashtag", "account_edit.featured_hashtags.placeholder": "幫tsān別lâng認捌,kap緊緊接近使用lí收藏ê主題。", "account_edit.featured_hashtags.title": "特色ê hashtag", "account_edit.name_modal.add_title": "加添顯示ê名", "account_edit.name_modal.edit_title": "編顯示ê名", + "account_edit.profile_tab.button_label": "自訂", + "account_edit.profile_tab.hint.description": "Tsiah ê設定自訂用官方應用程式佇 {server} 所看著ê內容,毋kú in可能無用佇別ê服侍器或者用第三方應用程式ê用者。", + "account_edit.profile_tab.hint.title": "展示結果uân-á可能無kâng款", + "account_edit.profile_tab.show_featured.description": "「精選ê」是通揀ê分頁,其中lí ē當展示別ê口座。", + "account_edit.profile_tab.show_featured.title": "顯示「精選ê」分頁", + "account_edit.profile_tab.show_media.description": "「媒體」是通揀ê分頁,展示lí包含影像kap影片ê PO文。", + "account_edit.profile_tab.show_media.title": "展示「媒體」分頁", + "account_edit.profile_tab.show_media_replies.description": "若是啟用,媒體分頁展示lí ê PO文kap對別lâng ê PO文ê回應。", + "account_edit.profile_tab.show_media_replies.title": "佇媒體分頁內包含回應", "account_edit.profile_tab.subtitle": "自訂lí ê個人資料ê分頁kap顯示ê內容。", "account_edit.profile_tab.title": "個人資料分頁設定", "account_edit.save": "儲存", + "account_edit_tags.column_title": "編收藏ê hashtag", + "account_edit_tags.help_text": "收藏ê hashtag幫tsān用者發現kap hām lí ê個人資料互動。In會成做過濾器,佇lí ê個人資料頁ê活動內底出現。", + "account_edit_tags.search_placeholder": "編輯hashtag……", + "account_edit_tags.suggestions": "建議:", + "account_edit_tags.tag_status_count": "{count, plural, other {# 篇PO文}}", "account_note.placeholder": "Tshi̍h tse加註kha", "admin.dashboard.daily_retention": "註冊以後ê用者維持率(用kang計算)", "admin.dashboard.monthly_retention": "註冊以後ê用者維持率", @@ -260,6 +280,13 @@ "closed_registrations_modal.find_another_server": "Tshuē別ê服侍器", "closed_registrations_modal.preamble": "因為Mastodon非中心化,所以bô論tī tá tsi̍t ê服侍器建立口座,lí lóng ē當跟tuè tsi̍t ê服侍器ê逐ê lâng,kap hām in交流。Lí iā ē當ka-tī起tsi̍t ê站!", "closed_registrations_modal.title": "註冊 Mastodon ê口座", + "collection.share_modal.share_link_label": "邀請分享ê連結", + "collection.share_modal.share_via_post": "PO佇Mastodon頂", + "collection.share_modal.share_via_system": "分享kàu……", + "collection.share_modal.title": "分享收藏", + "collection.share_modal.title_new": "分享lí ê新收藏!", + "collection.share_template_other": "緊看覓chit ê時行ê收藏:{link}", + "collection.share_template_own": "緊看覓我ê收藏:{link}", "collections.account_count": "{count, plural, other {# ê口座}}", "collections.accounts.empty_description": "加lí跟tuè ê口座,上tsē {count} ê", "collections.accounts.empty_title": "收藏內底無半項", @@ -296,11 +323,13 @@ "collections.no_collections_yet": "Iáu無收藏。", "collections.old_last_post_note": "頂改佇超過一禮拜進前PO文", "collections.remove_account": "Suá掉tsit ê口座", + "collections.report_collection": "檢舉tsit ê收藏", "collections.search_accounts_label": "Tshuē口座來加添……", "collections.search_accounts_max_reached": "Lí已經加kàu口座數ê盡磅ah。", "collections.sensitive": "敏感ê", "collections.topic_hint": "加 hashtag,幫tsān別lâng了解tsit ê收藏ê主題。", "collections.view_collection": "看收藏", + "collections.view_other_collections_by_user": "看tsit ê用者ê別ê收藏", "collections.visibility_public": "公共ê", "collections.visibility_public_hint": "佇tshiau-tshuē結果kap別位有推薦ê所在通發現。", "collections.visibility_title": "通看ê程度", @@ -435,6 +464,7 @@ "conversation.open": "顯示會話", "conversation.with": "Kap {names}", "copy_icon_button.copied": "有khóo-pih kàu tsián貼pang", + "copy_icon_button.copy_this_text": "Khóo-pih連結kàu tsián貼pang", "copypaste.copied": "有khóo-pih", "copypaste.copy_to_clipboard": "Khóo-pih kàu tsián貼pang", "directory.federated": "Uì知影ê Fediverse", @@ -964,6 +994,7 @@ "report.category.title_account": "個人資料", "report.category.title_status": "PO文", "report.close": "完成", + "report.collection_comment": "Lí是án-tsuánn beh檢舉tsit ê收藏?", "report.comment.title": "Lí敢有別ê想beh hōo guán知ê?", "report.forward": "轉送kàu {target}", "report.forward_hint": "Tsit ê口座是別ê服侍器ê。Kám iā beh送bô落名ê檢舉ê khóo-pih?", @@ -985,6 +1016,8 @@ "report.rules.title": "違反siánn-mih規則?", "report.statuses.subtitle": "請揀所有符合ê選項", "report.statuses.title": "Kám有任何PO文證明tsit ê檢舉?", + "report.submission_error": "檢舉bē當送", + "report.submission_error_details": "請檢查lí ê網路連線,等leh koh試。", "report.submit": "送出", "report.target": "檢舉 {target}", "report.thanks.take_action": "下kha是你控制所beh 佇Mastodon看ê內容ê選項:", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 4fd73e3cea..e3a698cd20 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Hashtag-ë të zgjedhur", "account_edit.name_modal.add_title": "Shtoni emër në ekran", "account_edit.name_modal.edit_title": "Përpunoni emër në ekran", + "account_edit.profile_tab.button_label": "Përshtateni", + "account_edit.profile_tab.hint.description": "Këto rregullime përshtasin ç’shohin përdoruesit në {server} te aplikacionet zyrtare, por mund të mos kenë vend për përdorues në shërbyes të tjerë dhe aplikacione nga palë të treta.", + "account_edit.profile_tab.hint.title": "Ç’duket, ende varion", + "account_edit.profile_tab.show_featured.description": "“Të zgjedhura” është një skedë opsionale ku mund të shpalosni llogari të tjera.", + "account_edit.profile_tab.show_featured.title": "Shfaq skedë “Të zgjedhura”", + "account_edit.profile_tab.show_media.description": "“Media” është një skedë opsionale që shfaq postime tuajat që përmbajnë figura ose video.", + "account_edit.profile_tab.show_media.title": "Shfaq skedë “Media”", + "account_edit.profile_tab.show_media_replies.description": "Kur aktivizohet, skeda Media shfaq si postimet tuaja, ashtu edhe përgjigje te postime nga persona të tjerë.", + "account_edit.profile_tab.show_media_replies.title": "Përfshi te skeda “Media” përgjigje", "account_edit.profile_tab.subtitle": "Përshtatni skedat në profilin tuaj dhe ato çka shfaqet në to.", "account_edit.profile_tab.title": "Rregullime skede profili", "account_edit.save": "Ruaje", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 17f254a1e0..78b511735f 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -14,9 +14,16 @@ "about.powered_by": "En decentraliserad plattform for sociala medier, drivet av {mastodon}", "about.rules": "Serverregler", "account.account_note_header": "Personlig anteckning", + "account.activity": "Aktivitet", + "account.add_note": "Lägg till en personlig anteckning", "account.add_or_remove_from_list": "Lägg till i eller ta bort från listor", + "account.badges.admin": "Administratör", + "account.badges.blocked": "Blockerad", "account.badges.bot": "Bot", + "account.badges.domain_blocked": "Blockerad domän", "account.badges.group": "Grupp", + "account.badges.muted": "Tystad", + "account.badges.muted_until": "Tystade till {until}", "account.block": "Blockera @{name}", "account.block_domain": "Blockera domänen {domain}", "account.block_short": "Blockera", @@ -27,6 +34,7 @@ "account.direct": "Nämn @{name} privat", "account.disable_notifications": "Sluta meddela mig när @{name} skriver ett inlägg", "account.domain_blocking": "Blockerad domän", + "account.edit_note": "Redigera personlig anteckning", "account.edit_profile": "Redigera profil", "account.edit_profile_short": "Redigera", "account.enable_notifications": "Notifiera mig när @{name} gör inlägg", @@ -36,6 +44,7 @@ "account.familiar_followers_two": "Följs av {name1} och {name2}", "account.featured": "Utvalda", "account.featured.accounts": "Profiler", + "account.featured.collections": "Samlingar", "account.featured.hashtags": "Fyrkantstaggar", "account.featured_tags.last_status_at": "Senaste inlägg den {date}", "account.featured_tags.last_status_never": "Inga inlägg", @@ -93,6 +102,7 @@ "account.unmute_short": "Avtysta", "account_edit.column_button": "Klar", "account_edit.column_title": "Redigera profil", + "account_edit.profile_tab.button_label": "Anpassa", "account_note.placeholder": "Klicka för att lägga till anteckning", "admin.dashboard.daily_retention": "Användarlojalitet per dag efter registrering", "admin.dashboard.monthly_retention": "Användarlojalitet per månad efter registrering", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 270f130cad..2ad5a23d50 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Öne çıkan etiketler", "account_edit.name_modal.add_title": "Görünen ad ekle", "account_edit.name_modal.edit_title": "Görünen adı düzenle", + "account_edit.profile_tab.button_label": "Özelleştir", + "account_edit.profile_tab.hint.description": "Bu ayarlar kullanıcıların resmi uygulamalarda {server} üzerinde gördüklerini özelleştirir, ancak diğer sunuculardaki ve üçüncü taraf uygulamalardaki kullanıcılar için geçerli olmayabilir.", + "account_edit.profile_tab.hint.title": "Görünümler yine de farklı olabilir", + "account_edit.profile_tab.show_featured.description": "\"Öne Çıkanlar\" diğer hesapları sergileyebileceğiniz isteğe bağlı bir sekmedir.", + "account_edit.profile_tab.show_featured.title": "\"Öne Çıkanlar\" sekmesini göster", + "account_edit.profile_tab.show_media.description": "\"Medya\" resim veya video içeren gönderilerinizi gösteren isteğe bağlı bir sekmedir.", + "account_edit.profile_tab.show_media.title": "\"Medya\" sekmesini göster", + "account_edit.profile_tab.show_media_replies.description": "Etkinleştirildiğinde Medya sekmesi hem kendi gönderilerinizi hem de diğer kişilerin gönderilerine verdiğiniz yanıtları gösterir.", + "account_edit.profile_tab.show_media_replies.title": "\"Medya\" sekmesinde yanıtları göster", "account_edit.profile_tab.subtitle": "Profilinizdeki sekmeleri ve bunların görüntülediği bilgileri özelleştirin.", "account_edit.profile_tab.title": "Profil sekme ayarları", "account_edit.save": "Kaydet", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 5a62060560..3aa940e952 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -14,8 +14,13 @@ "about.powered_by": "Децентралізовані соціальні мережі від {mastodon}", "about.rules": "Правила сервера", "account.account_note_header": "Особиста нотатка", + "account.activity": "Дії", + "account.add_note": "Додати особисту нотатку", "account.add_or_remove_from_list": "Додати або видалити зі списків", + "account.badges.admin": "Адміністрація", + "account.badges.blocked": "Заблоковано", "account.badges.bot": "Бот", + "account.badges.domain_blocked": "Блокований домен", "account.badges.group": "Група", "account.block": "Заблокувати @{name}", "account.block_domain": "Заблокувати домен {domain}", @@ -25,6 +30,7 @@ "account.copy": "Копіювати посилання на профіль", "account.direct": "Особиста згадка @{name}", "account.disable_notifications": "Не повідомляти мене про дописи @{name}", + "account.edit_note": "Редагувати особисту нотатку", "account.edit_profile": "Редагувати профіль", "account.edit_profile_short": "Редагувати", "account.enable_notifications": "Повідомляти мене про дописи @{name}", @@ -37,6 +43,13 @@ "account.featured.hashtags": "Хештеги", "account.featured_tags.last_status_at": "Останній допис {date}", "account.featured_tags.last_status_never": "Немає дописів", + "account.field_overflow": "Показати повністю", + "account.filters.all": "Усі дії", + "account.filters.boosts_toggle": "Показати поширення", + "account.filters.posts_boosts": "Дописи й поширення", + "account.filters.posts_only": "Дописи", + "account.filters.posts_replies": "Дописи й відповіді", + "account.filters.replies_toggle": "Показати відповіді", "account.follow": "Підписатися", "account.follow_back": "Стежити також", "account.follow_back_short": "Підписатись навзаєм", @@ -55,12 +68,27 @@ "account.go_to_profile": "Перейти до профілю", "account.hide_reblogs": "Сховати поширення від @{name}", "account.in_memoriam": "Пам'ятник.", + "account.joined_long": "Долучилися {date}", "account.joined_short": "Дата приєднання", "account.languages": "Змінити обрані мови", "account.link_verified_on": "Права власності на це посилання були перевірені {date}", "account.locked_info": "Це закритий обліковий запис. Власник вручну обирає, хто може на нього підписуватися.", "account.media": "Медіа", "account.mention": "Згадати @{name}", + "account.menu.add_to_list": "Додати до списку…", + "account.menu.block": "Блокувати обліковий запис", + "account.menu.block_domain": "Блокувати {domain}", + "account.menu.copied": "Посилання на обліковий запис скопійовано до буферу обміну", + "account.menu.copy": "Копіювати посилання", + "account.menu.direct": "Особиста згадка", + "account.menu.mention": "Згадка", + "account.menu.note.description": "Видно лише вам", + "account.menu.open_original_page": "Переглянути на {domain}", + "account.menu.remove_follower": "Вилучити підписника", + "account.menu.report": "Скарга на обліковий запис", + "account.menu.share": "Поділитися…", + "account.menu.unblock": "Розблокувати обліковий запис", + "account.menu.unblock_domain": "Розблокувати {domain}", "account.moved_to": "{name} вказує, що їхній новий обліковий запис тепер:", "account.mute": "Приховати @{name}", "account.mute_notifications_short": "Не сповіщати", @@ -68,6 +96,7 @@ "account.muted": "Приховується", "account.mutual": "Підписані навзаєм", "account.no_bio": "Немає опису.", + "account.node_modal.save": "Зберегти", "account.open_original_page": "Відкрити оригінальну сторінку", "account.posts": "Дописи", "account.posts_with_replies": "Дописи й відповіді", @@ -87,6 +116,9 @@ "account.unmute": "Не приховувати @{name}", "account.unmute_notifications_short": "Сповіщати", "account.unmute_short": "Не приховувати", + "account_edit.save": "Зберегти", + "account_edit_tags.suggestions": "Пропозиції:", + "account_edit_tags.tag_status_count": "{count, plural, one {# допис} few {# дописи} many {# дописів} other {# допису}}", "account_note.placeholder": "Натисніть, щоб додати примітку", "admin.dashboard.daily_retention": "Щоденний показник утримання користувачів після реєстрації", "admin.dashboard.monthly_retention": "Щомісячний показник утримання користувачів після реєстрації", @@ -110,6 +142,23 @@ "alt_text_modal.describe_for_people_with_visual_impairments": "Опишіть цю ідею для людей із порушеннями зору…", "alt_text_modal.done": "Готово", "announcement.announcement": "Оголошення", + "annual_report.announcement.action_dismiss": "Ні, дякую", + "annual_report.nav_item.badge": "Нове", + "annual_report.shared_page.donate": "Підтримати", + "annual_report.summary.archetype.booster.name": "Лучник", + "annual_report.summary.archetype.lurker.name": "Стоїк", + "annual_report.summary.archetype.oracle.name": "Провидець", + "annual_report.summary.archetype.pollster.name": "Допитливий", + "annual_report.summary.archetype.replier.name": "Метелик", + "annual_report.summary.archetype.title_public": "Архетип {name}", + "annual_report.summary.archetype.title_self": "Ваш архетип", + "annual_report.summary.close": "Закрити", + "annual_report.summary.copy_link": "Копіювати посилання", + "annual_report.summary.followers.new_followers": "{count, plural, one {новий підписник} few {нові підписники} many {нових підписників} other {нового підписника}}", + "annual_report.summary.highlighted_post.boost_count": "Допис поширено {count, plural, one {# раз} few {# рази} many {# разів} other {# раза}}.", + "annual_report.summary.highlighted_post.favourite_count": "Допис уподобано {count, plural, one {# раз} few {# рази} many {# разів} other {# раза}}.", + "annual_report.summary.highlighted_post.reply_count": "Допис отримав {count, plural, one {# відповідь} few {# відповіді} many {# відповідей} other {# відповіді}}.", + "annual_report.summary.highlighted_post.title": "Найпопулярніший допис", "annual_report.summary.most_used_app.most_used_app": "найчастіше використовуваний застосунок", "annual_report.summary.most_used_hashtag.most_used_hashtag": "найчастіший хештег", "annual_report.summary.new_posts.new_posts": "нові дописи", @@ -145,6 +194,9 @@ "closed_registrations_modal.find_another_server": "Знайти інший сервер", "closed_registrations_modal.preamble": "Mastodon децентралізований, тож незалежно від того, де ви створюєте свій обліковий запис, ви зможете слідкувати та взаємодіяти з будь-ким на цьому сервері. Ви навіть можете розмістити його самостійно!", "closed_registrations_modal.title": "Реєстрація на Mastodon", + "collections.detail.accounts_heading": "Облікові записи", + "collections.edit_details": "Редагувати подробиці", + "collections.remove_account": "Вилучити обліковий запис", "column.about": "Про застосунок", "column.blocks": "Заблоковані користувачі", "column.bookmarks": "Закладки", @@ -205,6 +257,7 @@ "confirmations.delete.confirm": "Видалити", "confirmations.delete.message": "Ви впевнені, що хочете видалити цей допис?", "confirmations.delete.title": "Видалити допис?", + "confirmations.delete_collection.confirm": "Видалити", "confirmations.delete_list.confirm": "Видалити", "confirmations.delete_list.message": "Ви впевнені, що хочете видалити цей список назавжди?", "confirmations.delete_list.title": "Видалити список?", @@ -381,6 +434,8 @@ "follow_suggestions.who_to_follow": "На кого підписатися", "followed_tags": "Відстежувані хештеґи", "footer.about": "Про проєкт", + "footer.about_mastodon": "Про Mastodon", + "footer.about_server": "Про {domain}", "footer.about_this_server": "Про сервер", "footer.directory": "Каталог профілів", "footer.get_app": "Завантажити застосунок", @@ -825,7 +880,7 @@ "search_results.no_results": "Жодних результатів.", "search_results.no_search_yet": "Спробуйте пошукати дописи, профілі або хештеґи.", "search_results.see_all": "Показати все", - "search_results.statuses": "Дописів", + "search_results.statuses": "Дописи", "search_results.title": "Пошук «{q}»", "server_banner.about_active_users": "Люди, які використовують цей сервер протягом останніх 30 днів (Щомісячні Активні Користувачі)", "server_banner.active_users": "активні користувачі", @@ -938,6 +993,7 @@ "tabs_bar.notifications": "Сповіщення", "tabs_bar.publish": "Новий допис", "tabs_bar.search": "Пошук", + "tag.remove": "Вилучити", "terms_of_service.effective_as_of": "Ефективний на {date}", "terms_of_service.title": "Умови використання", "terms_of_service.upcoming_changes_on": "Майбутні зміни {date}", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index ad14df1a1a..711ae4dd35 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -78,7 +78,7 @@ "account.languages": "Đổi ngôn ngữ mong muốn", "account.link_verified_on": "Liên kết này đã được xác minh vào {date}", "account.locked_info": "Đây là tài khoản riêng tư. Chủ tài khoản tự mình xét duyệt các yêu cầu theo dõi.", - "account.media": "Media", + "account.media": "Phương tiện", "account.mention": "Nhắc đến @{name}", "account.menu.add_to_list": "Thêm vào danh sách…", "account.menu.block": "Chặn người này", @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "Hashtag thường dùng", "account_edit.name_modal.add_title": "Thêm tên gọi", "account_edit.name_modal.edit_title": "Sửa tên gọi", + "account_edit.profile_tab.button_label": "Tùy chỉnh", + "account_edit.profile_tab.hint.description": "Những thiết lập này tùy chỉnh những gì người dùng thấy trên {server} trong ứng dụng chính thức, nhưng có thể sẽ không thấy trên các máy chủ khác hoặc các ứng dụng thứ ba.", + "account_edit.profile_tab.hint.title": "Hiển thị vẫn đa dạng", + "account_edit.profile_tab.show_featured.description": "‘Nêu bật’ là một tab tùy chọn, giúp bạn nêu bật các tài khoản khác.", + "account_edit.profile_tab.show_featured.title": "Hiện tab ‘Nêu bật’", + "account_edit.profile_tab.show_media.description": "‘Phương tiện’ là một tab tùy chọn, hiển thị những tút có chứa hình ảnh hoặc video của bạn.", + "account_edit.profile_tab.show_media.title": "Hiện tab ‘Phương tiện’", + "account_edit.profile_tab.show_media_replies.description": "Nếu bật, tab Phương tiện sẽ hiện cả những tút của bạn lẫn những trả lời tới tút của người khác.", + "account_edit.profile_tab.show_media_replies.title": "Bao gồm tút dạng trả lời trong tab ‘Phương tiện’", "account_edit.profile_tab.subtitle": "Tùy chỉnh tab trên hồ sơ của bạn và những gì chúng hiển thị.", "account_edit.profile_tab.title": "Thiết lập tab hồ sơ", "account_edit.save": "Lưu", @@ -271,6 +280,13 @@ "closed_registrations_modal.find_another_server": "Tìm máy chủ khác", "closed_registrations_modal.preamble": "Mastodon liên hợp nên bất kể bạn tạo tài khoản ở đâu, bạn cũng sẽ có thể theo dõi và tương tác với tài khoản trên máy chủ này. Bạn thậm chí có thể tự mở máy chủ!", "closed_registrations_modal.title": "Đăng ký Mastodon", + "collection.share_modal.share_link_label": "Mời chia sẻ liên kết", + "collection.share_modal.share_via_post": "Đăng lên Mastodon", + "collection.share_modal.share_via_system": "Chia sẻ qua…", + "collection.share_modal.title": "Chia sẻ collection", + "collection.share_modal.title_new": "Chia sẻ collection mới của bạn!", + "collection.share_template_other": "Xem ngay collection tuyệt vời này: {link}", + "collection.share_template_own": "Xem ngay collection mới của tôi: {link}", "collections.account_count": "{count, plural, other {# tài khoản}}", "collections.accounts.empty_description": "Thêm tối đa {count} tài khoản mà bạn theo dõi", "collections.accounts.empty_title": "Collection này trống", @@ -448,6 +464,7 @@ "conversation.open": "Xem toàn bộ tin nhắn", "conversation.with": "Với {names}", "copy_icon_button.copied": "Đã sao chép vào bộ nhớ tạm", + "copy_icon_button.copy_this_text": "Sao chép liên kết vào clipboard", "copypaste.copied": "Đã sao chép", "copypaste.copy_to_clipboard": "Sao chép vào bộ nhớ tạm", "directory.federated": "Ở mạng liên hợp", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 6295ca9b50..be8a700c03 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "精选话题标签", "account_edit.name_modal.add_title": "添加显示名称", "account_edit.name_modal.edit_title": "编辑显示名称", + "account_edit.profile_tab.button_label": "自定义", + "account_edit.profile_tab.hint.description": "这些设置可以自定义用户使用官方应用程序时在 {server} 上可以看到的内容,但可能不适用于外站及第三方应用程序上的用户。", + "account_edit.profile_tab.hint.title": "实际的显示情况可能不同", + "account_edit.profile_tab.show_featured.description": "你可以使用可选的“精选”选项卡来展示其他账号。", + "account_edit.profile_tab.show_featured.title": "显示“精选”选项卡", + "account_edit.profile_tab.show_media.description": "可选的“媒体”选项卡可以显示你发布的包含图片或视频的嘟文。", + "account_edit.profile_tab.show_media.title": "显示“媒体”选项卡", + "account_edit.profile_tab.show_media_replies.description": "如果启用,媒体选项卡将同时显示你的嘟文及你对其他人嘟文的回复。", + "account_edit.profile_tab.show_media_replies.title": "在“媒体”选项卡中包括回复", "account_edit.profile_tab.subtitle": "自定义你个人资料的标签页及其显示的内容。", "account_edit.profile_tab.title": "个人资料标签页设置", "account_edit.save": "保存", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 31443295bb..20cad7639f 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -161,6 +161,15 @@ "account_edit.featured_hashtags.title": "推薦主題標籤", "account_edit.name_modal.add_title": "新增顯示名稱", "account_edit.name_modal.edit_title": "編輯顯示名稱", + "account_edit.profile_tab.button_label": "自訂", + "account_edit.profile_tab.hint.description": "這些設定能自訂使用者在官方應用程式中於 {server} 所見之內容,但可能不適用於其他伺服器或第三方應用程式的使用者。", + "account_edit.profile_tab.hint.title": "檢視結果仍可能有所不同", + "account_edit.profile_tab.show_featured.description": "「精選內容」為您能展現其他帳號之可選分頁。", + "account_edit.profile_tab.show_featured.title": "顯示「精選內容」分頁", + "account_edit.profile_tab.show_media.description": "「媒體」為顯示您包含圖片或影片嘟文之可選分頁。", + "account_edit.profile_tab.show_media.title": "顯示「媒體」分頁", + "account_edit.profile_tab.show_media_replies.description": "當啟用時,媒體分頁將顯示您的嘟文與對其他人嘟文之回嘟。", + "account_edit.profile_tab.show_media_replies.title": "於「媒體」分頁中包含回嘟", "account_edit.profile_tab.subtitle": "自訂您個人檔案之分頁與內容。", "account_edit.profile_tab.title": "個人檔案分頁設定", "account_edit.save": "儲存", diff --git a/config/locales/doorkeeper.sv.yml b/config/locales/doorkeeper.sv.yml index 01a441b556..9b8d428b39 100644 --- a/config/locales/doorkeeper.sv.yml +++ b/config/locales/doorkeeper.sv.yml @@ -83,6 +83,10 @@ sv: access_denied: Resursägaren eller behörighetsservern nekade begäran. credential_flow_not_configured: Resurs Ägare Lösenord Credentials flöde misslyckades på grund av att Doorkeeper.configure.resource_owner_from_credentials är okonfigurerad. invalid_client: Klientautentisering misslyckades på grund av okänd klient, ingen klientautentisering inkluderad eller icke godkänd autentiseringsmetod. + invalid_code_challenge_method: + one: code_challenge_method måste vara %{challenge_methods}. + other: code_challenge_method måste vara en av %{challenge_methods}. + zero: Auktoriseringsservern stöder inte PKCE eftersom det inte finns några accepterade code_challenge_metod-värden. invalid_grant: Det beviljade godkännandetillskottet är ogiltigt, upphört, återkallat, matchar inte den omdirigering URI som användes i auktorisationsförfrågan eller har utfärdats till en annan klient. invalid_redirect_uri: Den omdirigerade uri är inte giltig. invalid_request: diff --git a/config/locales/nan-TW.yml b/config/locales/nan-TW.yml index 5d15b9685d..3b89a02707 100644 --- a/config/locales/nan-TW.yml +++ b/config/locales/nan-TW.yml @@ -263,6 +263,7 @@ nan-TW: demote_user_html: "%{name} kā用者 %{target} 降級" destroy_announcement_html: "%{name} kā公告 %{target} thâi掉ah" destroy_canonical_email_block_html: "%{name} kā hash是 %{target} ê電子phue取消封鎖ah" + destroy_collection_html: "%{name} kā %{target} ê收藏thâi掉" destroy_custom_emoji_html: "%{name} kā 新ê emoji %{target} thâi掉ah" destroy_domain_allow_html: "%{name} 無允准 %{target} 域名加入聯邦" destroy_domain_block_html: "%{name} 取消封鎖域名 %{target}" @@ -302,6 +303,7 @@ nan-TW: unsilence_account_html: "%{name} 取消限制 %{target} ê口座" unsuspend_account_html: "%{name} kā %{target} ê口座恢復權限ah" update_announcement_html: "%{name} kā公告 %{target} 更新ah" + update_collection_html: "%{name} kā %{target} ê收藏更新" update_custom_emoji_html: "%{name} kā 新ê emoji %{target} 更新ah" update_domain_block_html: "%{name} kā %{target} ê域名封鎖更新ah" update_ip_block_html: "%{name} 改變 IP %{target} ê規則" @@ -675,6 +677,7 @@ nan-TW: cancel: 取消 category: 類別 category_description_html: Tsit ê 受檢舉ê口座kap/á是內容,ē佇kap tsit ê口座ê聯絡內底引用。 + collections: 收藏 (%{count}) comment: none: 無 comment_description_html: 為著提供其他資訊,%{name} 寫: @@ -710,6 +713,7 @@ nan-TW: resolved_msg: 檢舉成功解決ah! skip_to_actions: 跳kàu行動 status: 狀態 + statuses: PO文 (%{count}) statuses_description_html: 冒犯ê內容ē引用tī kap受檢舉口座ê聯絡 summary: action_preambles: @@ -1815,6 +1819,19 @@ nan-TW: activity: 上尾ê活動 browser: 瀏覽器 browsers: + alipay: Alipay + blackberry: BlackBerry + chrome: Chrome + edge: Microsoft Edge + electron: Electron + firefox: Firefox + generic: 毋知影ê瀏覽器 + huawei_browser: 華為ê瀏覽器 + ie: Internet Explorer + micro_messenger: 微信 + nokia: Nokia S40 Ovi 瀏覽器 + opera: Opera + otter: Otter qq: QQ 瀏覽器 safari: Safari uc_browser: UC 瀏覽器 diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index a2839293fe..66b6ab26ea 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -164,6 +164,7 @@ sv: name: Offentligt namn på rollen, om rollen är inställd på att visas som ett emblem permissions_as_keys: Användare med denna roll kommer ha tillgång till... position: Högre roll avgör konfliktlösning i vissa situationer. Vissa åtgärder kan endast utföras på roller med lägre prioritet + require_2fa: Användare med denna roll kommer att krävas för att ställa in tvåfaktorsautentisering för att använda Mastodon username_block: allow_with_approval: I stället för att förhindra direkt registrering kräver matchning av registreringar ditt godkännande comparison: Var uppmärksam på Scunthorpe Problem vid blockering av partiella matcher @@ -223,6 +224,7 @@ sv: email: E-postadress expires_in: Utgår efter fields: Profil-metadata + filter_action: Filtrera åtgärd header: Sidhuvud honeypot: "%{label} (fyll inte i)" inbox_url: Webbadress för ombudsinkorg @@ -387,6 +389,7 @@ sv: name: Namn permissions_as_keys: Behörigheter position: Prioritet + require_2fa: Kräv tvåfaktorsautentisering username_block: allow_with_approval: Tillåt registreringar med godkännande comparison: Jämförelsesätt diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 8311e29d66..72a8b4cdbb 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -53,6 +53,7 @@ sv: label: Ändra roll no_role: Ingen roll title: Ändra roll för %{username} + collections: Samlingar confirm: Bekräfta confirmed: Bekräftad confirming: Bekräftande @@ -263,6 +264,7 @@ sv: demote_user_html: "%{name} nedgraderade användare %{target}" destroy_announcement_html: "%{name} raderade kungörelsen %{target}" destroy_canonical_email_block_html: "%{name} avblockerade e-post med hash%{target}" + destroy_collection_html: "%{name} tog bort samlingen av %{target}" destroy_custom_emoji_html: "%{name} raderade emoji %{target}" destroy_domain_allow_html: "%{name} raderade domän %{target} från vitlistan" destroy_domain_block_html: "%{name} avblockerade domänen %{target}" @@ -302,6 +304,7 @@ sv: unsilence_account_html: "%{name} tog bort begränsning av %{target}s konto" unsuspend_account_html: "%{name} ångrade avstängningen av %{target}s konto" update_announcement_html: "%{name} uppdaterade kungörelsen %{target}" + update_collection_html: "%{name} uppdaterade samlingen av %{target}" update_custom_emoji_html: "%{name} uppdaterade emoji %{target}" update_domain_block_html: "%{name} uppdaterade domän-block för %{target}" update_ip_block_html: "%{name} ändrade regel för IP %{target}" @@ -339,9 +342,13 @@ sv: updated_msg: Kungörelsen uppdaterades! collections: accounts: Konton + collection_title: Samling av %{name} + contents: Innehåll number_of_accounts: one: 1 konto other: "%{count} konton" + open: Öppna + view_publicly: Visa offentligt critical_update_pending: Kritisk uppdatering väntar custom_emojis: assign_category: Tilldela kategori @@ -681,6 +688,7 @@ sv: cancel: Avbryt category: Kategori category_description_html: Anledningen till att kontot och/eller innehållet rapporterades kommer att visas i kommunikation med det rapporterade kontot + collections: Samlingar (%{count}) comment: none: Ingen comment_description_html: 'För att ge mer information, skrev %{name}:' @@ -716,6 +724,7 @@ sv: resolved_msg: Anmälan har lösts framgångsrikt! skip_to_actions: Hoppa till åtgärder status: Status + statuses: Inlägg (%{count}) statuses_description_html: Stötande innehåll kommer att citeras i kommunikationen med det rapporterade kontot summary: action_preambles: @@ -804,6 +813,7 @@ sv: view_devops_description: Ger användare tillgång till instrumentpanelerna Sidekiq och pgHero view_feeds: Visa live- och ämnesflöden view_feeds_description: Ger användare tillgång till live-och ämnesflöden oavsett serverinställningar + requires_2fa: Kräver tvåfaktorsautentisering title: Roller rules: add_new: Lägg till regel @@ -2022,6 +2032,8 @@ sv: past_preamble_html: Vi har ändrat våra användarvillkor sedan ditt senaste besök. Vi uppmanar dig att granska de uppdaterade villkoren. review_link: Granska villkoren för tjänsten title: Villkoren för tjänsten i %{domain} ändras + themes: + default: Mastodon time: formats: default: "%d %b %Y, %H:%M" @@ -2046,6 +2058,8 @@ sv: recovery_codes: Backup återställningskod recovery_codes_regenerated: Återställningskoder genererades på nytt recovery_instructions_html: Om du någonsin tappar åtkomst till din telefon kan du använda någon av återställningskoderna nedan för att återställa åtkomst till ditt konto. Håll återställningskoderna säkra . Du kan till exempel skriva ut dem och lagra dem med andra viktiga dokument. + resume_app_authorization: Fortsätt app-autentisering + role_requirement: "%{domain} kräver att du ställer in tvåfaktorsautentisering innan du kan använda Mastodon." webauthn: Säkerhetsnycklar user_mailer: announcement_published: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index e6ff166392..11dcf51c6e 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -23,7 +23,7 @@ uk: many: Дописів one: Допис other: Дописів - posts_tab_heading: Дописів + posts_tab_heading: Дописи self_follow_error: Ви не можете стежити за власним обліковим записом admin: account_actions: @@ -335,6 +335,8 @@ uk: unpublish: Скасувати публікацію unpublished_msg: Оголошення успішно приховано! updated_msg: Оголошення успішно оновлено! + collections: + open: Відкрити critical_update_pending: Очікується критичне оновлення custom_emojis: assign_category: Призначити категорію @@ -498,6 +500,7 @@ uk: fasp: debug: callbacks: + created_at: Створено delete: Видалити providers: delete: Видалити @@ -701,6 +704,7 @@ uk: resolved_msg: Скаргу успішно вирішено! skip_to_actions: Перейти до дій status: Стан + statuses: Дописи (%{count}) statuses_description_html: Замінений вміст буде цитований у спілкуванні з обліковим записом, на який поскаржилися summary: action_preambles: @@ -794,11 +798,16 @@ uk: title: Ролі rules: add_new: Додати правило + add_translation: Додати переклад delete: Видалити description_html: Хоча більшість заявляє про прочитання та погодження з умовами обслуговування, як правило, люди не читають їх до появи проблеми. Спростіть перегляд правил вашого сервера, зробивши їх у вигляді маркованого списку. Спробуйте створити короткі та просі правила, але не розділяйте їх на багато окремих частин. edit: Змінити правило empty: Жодних правил сервера ще не визначено. + move_down: Посунути вниз + move_up: Посунути вгору title: Правила сервера + translation: Переклад + translations: Переклади settings: about: manage_rules: Керувати правилами сервера @@ -1278,6 +1287,10 @@ uk: hint_html: "Підказка: ми не будемо запитувати ваш пароль впродовж наступної години." invalid_password: Невірний пароль prompt: Підтвердіть пароль для продовження + color_scheme: + auto: Авто + dark: Темна + light: Світла crypto: errors: invalid_key: не є припустимим ключем Ed25519 або Curve25519 From c9282d980d9cce4a3d57dc6b80a8e4bc1c55edde Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 10:04:53 +0100 Subject: [PATCH 06/14] Update dependency addressable to v2.8.9 (#38013) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 74a5404a93..360ee4a43d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -89,7 +89,7 @@ GEM securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) uri (>= 0.13.1) - addressable (2.8.8) + addressable (2.8.9) public_suffix (>= 2.0.2, < 8.0) aes_key_wrap (1.1.0) android_key_attestation (0.3.0) From 68163e59756c3131f0451f87f80d5418e8898985 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 09:06:15 +0000 Subject: [PATCH 07/14] Update dependency brakeman to v8.0.4 (#38002) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 360ee4a43d..7f9f82cb39 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -134,7 +134,7 @@ GEM blurhash (0.1.8) bootsnap (1.23.0) msgpack (~> 1.2) - brakeman (8.0.2) + brakeman (8.0.4) racc browser (6.2.0) builder (3.3.0) From 74f7a5e8e92f6ddfd8af046752743a434ceb6174 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 2 Mar 2026 04:07:50 -0500 Subject: [PATCH 08/14] Remove unneeded `stylelint-config-prettier-scss` package (#37973) --- package.json | 1 - stylelint.config.js | 2 +- yarn.lock | 13 ------------- 3 files changed, 1 insertion(+), 15 deletions(-) diff --git a/package.json b/package.json index 4bed416daf..2aa2ecd1cb 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,6 @@ "react-test-renderer": "^18.2.0", "storybook": "^10.0.5", "stylelint": "^17.0.0", - "stylelint-config-prettier-scss": "^1.0.0", "stylelint-config-standard-scss": "^17.0.0", "typescript": "~5.9.0", "typescript-eslint": "^8.55.0", diff --git a/stylelint.config.js b/stylelint.config.js index ff47848a3e..1db58de646 100644 --- a/stylelint.config.js +++ b/stylelint.config.js @@ -1,5 +1,5 @@ module.exports = { - extends: ['stylelint-config-standard-scss', 'stylelint-config-prettier-scss'], + extends: ['stylelint-config-standard-scss'], ignoreFiles: [ 'app/javascript/styles/mastodon/reset.scss', 'coverage/**/*', diff --git a/yarn.lock b/yarn.lock index 5d13c3e405..066cb3144e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2930,7 +2930,6 @@ __metadata: storybook: "npm:^10.0.5" stringz: "npm:^2.1.0" stylelint: "npm:^17.0.0" - stylelint-config-prettier-scss: "npm:^1.0.0" stylelint-config-standard-scss: "npm:^17.0.0" substring-trie: "npm:^1.0.2" tesseract.js: "npm:^7.0.0" @@ -13332,18 +13331,6 @@ __metadata: languageName: node linkType: hard -"stylelint-config-prettier-scss@npm:^1.0.0": - version: 1.0.0 - resolution: "stylelint-config-prettier-scss@npm:1.0.0" - peerDependencies: - stylelint: ">=15.0.0" - bin: - stylelint-config-prettier-scss: bin/check.js - stylelint-config-prettier-scss-check: bin/check.js - checksum: 10c0/4d5e1d1c200d4611b5b7bd2d2528cc9e301f26645802a2774aec192c4c2949cbf5a0147eba8b2e6e4ff14a071b03024f3034bb1b4fda37a8ed5a0081a9597d4d - languageName: node - linkType: hard - "stylelint-config-recommended-scss@npm:^17.0.0": version: 17.0.0 resolution: "stylelint-config-recommended-scss@npm:17.0.0" From e3a53b6f5ac805e7f608ce34bff603425773cb74 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 09:08:04 +0000 Subject: [PATCH 09/14] Update Node.js to 24.14 (#37971) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .nvmrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nvmrc b/.nvmrc index 12fd1fc277..fd655f8a35 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -24.13 +24.14 From c86a8f879862097b844838efc8e8b443b5953554 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Mon, 2 Mar 2026 04:27:04 -0500 Subject: [PATCH 10/14] Use `file_field` support for array to `accept` attribute (#37844) --- app/models/form/admin_settings.rb | 2 ++ app/views/admin/custom_emojis/new.html.haml | 2 +- app/views/admin/settings/branding/show.html.haml | 4 ++-- app/views/settings/profiles/show.html.haml | 4 ++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb index 77f23ae5a4..29523be542 100644 --- a/app/models/form/admin_settings.rb +++ b/app/models/form/admin_settings.rb @@ -85,6 +85,8 @@ class Form::AdminSettings authorized_fetch: :authorized_fetch_mode?, }.freeze + UPLOAD_MIME_TYPES = %w(image/jpeg image/png image/gif image/webp).freeze + DESCRIPTION_LIMIT = 200 DOMAIN_BLOCK_AUDIENCES = %w(disabled users all).freeze REGISTRATION_MODES = %w(open approved none).freeze diff --git a/app/views/admin/custom_emojis/new.html.haml b/app/views/admin/custom_emojis/new.html.haml index acf2231b8e..99f5aa06d8 100644 --- a/app/views/admin/custom_emojis/new.html.haml +++ b/app/views/admin/custom_emojis/new.html.haml @@ -12,7 +12,7 @@ .fields-group = f.input :image, wrapper: :with_label, - input_html: { accept: CustomEmoji::IMAGE_MIME_TYPES.join(',') }, + input_html: { accept: CustomEmoji::IMAGE_MIME_TYPES }, hint: t('admin.custom_emojis.image_hint', size: number_to_human_size(CustomEmoji::LIMIT)) .actions diff --git a/app/views/admin/settings/branding/show.html.haml b/app/views/admin/settings/branding/show.html.haml index 22116167eb..02da7b2c8f 100644 --- a/app/views/admin/settings/branding/show.html.haml +++ b/app/views/admin/settings/branding/show.html.haml @@ -44,7 +44,7 @@ .fields-row__column.fields-row__column-6.fields-group = f.input :favicon, as: :file, - input_html: { accept: ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].join(',') }, + input_html: { accept: f.object.class::UPLOAD_MIME_TYPES }, wrapper: :with_block_label .fields-row__column.fields-row__column-6.fields-group @@ -58,7 +58,7 @@ .fields-row__column.fields-row__column-6.fields-group = f.input :app_icon, as: :file, - input_html: { accept: ['image/jpeg', 'image/png', 'image/gif', 'image/webp'].join(',') }, + input_html: { accept: f.object.class::UPLOAD_MIME_TYPES }, wrapper: :with_block_label .fields-row__column.fields-row__column-6.fields-group diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml index 3815eb7fc2..8df50a5a8c 100644 --- a/app/views/settings/profiles/show.html.haml +++ b/app/views/settings/profiles/show.html.haml @@ -35,7 +35,7 @@ .fields-group = f.input :avatar, hint: t('simple_form.hints.defaults.avatar', dimensions: Account::Avatar::AVATAR_GEOMETRY, size: number_to_human_size(Account::Avatar::AVATAR_LIMIT)), - input_html: { accept: Account::Avatar::AVATAR_IMAGE_MIME_TYPES.join(',') }, + input_html: { accept: Account::Avatar::AVATAR_IMAGE_MIME_TYPES }, wrapper: :with_block_label .fields-row__column.fields-row__column-6 @@ -51,7 +51,7 @@ .fields-group = f.input :header, hint: t('simple_form.hints.defaults.header', dimensions: Account::Header::HEADER_GEOMETRY, size: number_to_human_size(Account::Header::HEADER_LIMIT)), - input_html: { accept: Account::Header::HEADER_IMAGE_MIME_TYPES.join(',') }, + input_html: { accept: Account::Header::HEADER_IMAGE_MIME_TYPES }, wrapper: :with_block_label .fields-row__column.fields-row__column-6 From 178e8c23b10a08a13210fc3a22ec7607bcbc30b6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 09:30:17 +0000 Subject: [PATCH 11/14] Update dependency eslint-plugin-jsdoc to v62 (#37433) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 99 ++++++++++++++++++++++++++++------------------------ 2 files changed, 54 insertions(+), 47 deletions(-) diff --git a/package.json b/package.json index 2aa2ecd1cb..9428c0e08f 100644 --- a/package.json +++ b/package.json @@ -168,7 +168,7 @@ "eslint-import-resolver-typescript": "^4.2.5", "eslint-plugin-formatjs": "^5.3.1", "eslint-plugin-import": "~2.32.0", - "eslint-plugin-jsdoc": "^61.7.1", + "eslint-plugin-jsdoc": "^62.0.0", "eslint-plugin-jsx-a11y": "~6.10.2", "eslint-plugin-promise": "~7.2.1", "eslint-plugin-react": "^7.37.4", diff --git a/yarn.lock b/yarn.lock index 066cb3144e..0d5cf787bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2093,16 +2093,16 @@ __metadata: languageName: node linkType: hard -"@es-joy/jsdoccomment@npm:~0.78.0": - version: 0.78.0 - resolution: "@es-joy/jsdoccomment@npm:0.78.0" +"@es-joy/jsdoccomment@npm:~0.84.0": + version: 0.84.0 + resolution: "@es-joy/jsdoccomment@npm:0.84.0" dependencies: "@types/estree": "npm:^1.0.8" - "@typescript-eslint/types": "npm:^8.46.4" - comment-parser: "npm:1.4.1" - esquery: "npm:^1.6.0" - jsdoc-type-pratt-parser: "npm:~7.0.0" - checksum: 10c0/be18b8149303e8e7c9414b0b0453a0fa959c1c8db6f721b75178336e01b65a9f251db98ecfedfb1b3cfa5e717f3e2abdb06a0f8dbe45d3330a62262c5331c327 + "@typescript-eslint/types": "npm:^8.54.0" + comment-parser: "npm:1.4.5" + esquery: "npm:^1.7.0" + jsdoc-type-pratt-parser: "npm:~7.1.1" + checksum: 10c0/b5562c176dde36cd2956bb115b79229d2253b27d6d7e52820eb55c509f75a72048ae8ea8d57193b33be42728c1aa7a5ee20937b4967175291cb4ae60fdda318d languageName: node linkType: hard @@ -2873,7 +2873,7 @@ __metadata: eslint-import-resolver-typescript: "npm:^4.2.5" eslint-plugin-formatjs: "npm:^5.3.1" eslint-plugin-import: "npm:~2.32.0" - eslint-plugin-jsdoc: "npm:^61.7.1" + eslint-plugin-jsdoc: "npm:^62.0.0" eslint-plugin-jsx-a11y: "npm:~6.10.2" eslint-plugin-promise: "npm:~7.2.1" eslint-plugin-react: "npm:^7.37.4" @@ -4815,13 +4815,20 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.55.0, @typescript-eslint/types@npm:^8.46.4, @typescript-eslint/types@npm:^8.55.0": +"@typescript-eslint/types@npm:8.55.0": version: 8.55.0 resolution: "@typescript-eslint/types@npm:8.55.0" checksum: 10c0/dc572f55966e2f0fee149e5d5e42a91cedcdeac451bff29704eb701f9336f123bbc7d7abcfbda717f9e1ef6b402fa24679908bc6032e67513287403037ef345f languageName: node linkType: hard +"@typescript-eslint/types@npm:^8.54.0, @typescript-eslint/types@npm:^8.55.0": + version: 8.56.1 + resolution: "@typescript-eslint/types@npm:8.56.1" + checksum: 10c0/e5a0318abddf0c4f98da3039cb10b3c0601c8601f7a9f7043630f0d622dabfe83a4cd833545ad3531fc846e46ca2874377277b392c2490dffec279d9242d827b + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:8.55.0": version: 8.55.0 resolution: "@typescript-eslint/typescript-estree@npm:8.55.0" @@ -5283,12 +5290,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.15.0, acorn@npm:^8.8.2": - version: 8.15.0 - resolution: "acorn@npm:8.15.0" +"acorn@npm:^8.15.0, acorn@npm:^8.16.0, acorn@npm:^8.8.2": + version: 8.16.0 + resolution: "acorn@npm:8.16.0" bin: acorn: bin/acorn - checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec + checksum: 10c0/c9c52697227661b68d0debaf972222d4f622aa06b185824164e153438afa7b08273432ca43ea792cadb24dada1d46f6f6bb1ef8de9956979288cc1b96bf9914e languageName: node linkType: hard @@ -6176,10 +6183,10 @@ __metadata: languageName: node linkType: hard -"comment-parser@npm:1.4.1": - version: 1.4.1 - resolution: "comment-parser@npm:1.4.1" - checksum: 10c0/d6c4be3f5be058f98b24f2d557f745d8fe1cc9eb75bebbdccabd404a0e1ed41563171b16285f593011f8b6a5ec81f564fb1f2121418ac5cbf0f49255bf0840dd +"comment-parser@npm:1.4.5": + version: 1.4.5 + resolution: "comment-parser@npm:1.4.5" + checksum: 10c0/6a6a74697c79927e3bd42bde9608a471f1a9d4995affbc22fa3364cc42b4017f82ef477431a1558b0b6bef959f9bb6964c01c1bbfc06a58ba1730dec9c423b44 languageName: node linkType: hard @@ -7311,27 +7318,27 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jsdoc@npm:^61.7.1": - version: 61.7.1 - resolution: "eslint-plugin-jsdoc@npm:61.7.1" +"eslint-plugin-jsdoc@npm:^62.0.0": + version: 62.7.1 + resolution: "eslint-plugin-jsdoc@npm:62.7.1" dependencies: - "@es-joy/jsdoccomment": "npm:~0.78.0" + "@es-joy/jsdoccomment": "npm:~0.84.0" "@es-joy/resolve.exports": "npm:1.2.0" are-docs-informative: "npm:^0.0.2" - comment-parser: "npm:1.4.1" + comment-parser: "npm:1.4.5" debug: "npm:^4.4.3" escape-string-regexp: "npm:^4.0.0" - espree: "npm:^11.0.0" + espree: "npm:^11.1.0" esquery: "npm:^1.7.0" html-entities: "npm:^2.6.0" object-deep-merge: "npm:^2.0.0" parse-imports-exports: "npm:^0.2.4" - semver: "npm:^7.7.3" + semver: "npm:^7.7.4" spdx-expression-parse: "npm:^4.0.0" to-valid-identifier: "npm:^1.0.0" peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/d0904b923f68a4e9e6da156316a4e2a972445bf79118bde9618ad80b4ef5927fc2c9dd597b22b776742ef548d65914e75fca190ab3be942385f268a3b83c1087 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 + checksum: 10c0/949c1f11ed86ddac0903ffe65e5e30d36766badea2e42ceeaf85168ec6f540f94a9974896600410ce1fcbbf34809b39236cc9614411c15d05b93be166c21ec3c languageName: node linkType: hard @@ -7450,10 +7457,10 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^5.0.0": - version: 5.0.0 - resolution: "eslint-visitor-keys@npm:5.0.0" - checksum: 10c0/5ec68b7ae350f6e7813a9ab469f8c64e01e5a954e6e6ee6dc441cc24d315eb342e5fb81ab5fc21f352cf0125096ab4ed93ca892f602a1576ad1eedce591fe64a +"eslint-visitor-keys@npm:^5.0.1": + version: 5.0.1 + resolution: "eslint-visitor-keys@npm:5.0.1" + checksum: 10c0/16190bdf2cbae40a1109384c94450c526a79b0b9c3cb21e544256ed85ac48a4b84db66b74a6561d20fe6ab77447f150d711c2ad5ad74df4fcc133736bce99678 languageName: node linkType: hard @@ -7517,14 +7524,14 @@ __metadata: languageName: node linkType: hard -"espree@npm:^11.0.0": - version: 11.1.0 - resolution: "espree@npm:11.1.0" +"espree@npm:^11.1.0": + version: 11.1.1 + resolution: "espree@npm:11.1.1" dependencies: - acorn: "npm:^8.15.0" + acorn: "npm:^8.16.0" acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^5.0.0" - checksum: 10c0/32228d12896f5aa09f59fad8bf5df228d73310e436c21389876cdd21513b620c087d24b40646cdcff848540d11b078653db0e37ea67ac9c7012a12595d86630c + eslint-visitor-keys: "npm:^5.0.1" + checksum: 10c0/2feae74efdfb037b9e9fcb30506799845cf20900de5e441ed03e5c51aaa249f85ea5818ff177682acc0c9bfb4ac97e1965c238ee44ac7c305aab8747177bab69 languageName: node linkType: hard @@ -7538,7 +7545,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.5.0, esquery@npm:^1.6.0, esquery@npm:^1.7.0": +"esquery@npm:^1.5.0, esquery@npm:^1.7.0": version: 1.7.0 resolution: "esquery@npm:1.7.0" dependencies: @@ -9219,10 +9226,10 @@ __metadata: languageName: node linkType: hard -"jsdoc-type-pratt-parser@npm:~7.0.0": - version: 7.0.0 - resolution: "jsdoc-type-pratt-parser@npm:7.0.0" - checksum: 10c0/3ede53c80dddf940a51dcdc79e3923537650f6fb6e9001fc76023c2d5cb0195cc8b24b7eebf9b3f20a7bc00d5e6b7f70318f0b8cb5972f6aff884152e6698014 +"jsdoc-type-pratt-parser@npm:~7.1.1": + version: 7.1.1 + resolution: "jsdoc-type-pratt-parser@npm:7.1.1" + checksum: 10c0/5a5216a75962b3a8a3a1e7e09a19b31b5a373c06c726a00b081480daee00196250d4acc8dfbecc0a7846d439a5bcf4a326df6348b879cf95f60c62ce5818dadb languageName: node linkType: hard @@ -12629,12 +12636,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.7.1, semver@npm:^7.7.3": - version: 7.7.3 - resolution: "semver@npm:7.7.3" +"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.7.1, semver@npm:^7.7.3, semver@npm:^7.7.4": + version: 7.7.4 + resolution: "semver@npm:7.7.4" bin: semver: bin/semver.js - checksum: 10c0/4afe5c986567db82f44c8c6faef8fe9df2a9b1d98098fc1721f57c696c4c21cebd572f297fc21002f81889492345b8470473bc6f4aff5fb032a6ea59ea2bc45e + checksum: 10c0/5215ad0234e2845d4ea5bb9d836d42b03499546ddafb12075566899fc617f68794bb6f146076b6881d755de17d6c6cc73372555879ec7dce2c2feee947866ad2 languageName: node linkType: hard From ba8e495631e5cf79568b7cedefc793038c023c3f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 09:30:52 +0000 Subject: [PATCH 12/14] Update dependency pg to v8.19.0 (#37978) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/yarn.lock b/yarn.lock index 0d5cf787bd..18796b7247 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10712,19 +10712,19 @@ __metadata: languageName: node linkType: hard -"pg-pool@npm:^3.11.0": - version: 3.11.0 - resolution: "pg-pool@npm:3.11.0" +"pg-pool@npm:^3.12.0": + version: 3.12.0 + resolution: "pg-pool@npm:3.12.0" peerDependencies: pg: ">=8.0" - checksum: 10c0/4b104b48a47257a0edad0c62e5ea1908b72cb79386270264b452e69895e9e4c589d00cdbf6e46d4e9c05bc7e7d191656b66814b5282d65f33b12648a21df3c7f + checksum: 10c0/b09da392ae2d0dae7bdf62b8557d3643bb7d84335894bc536f16ddd0da116b44c2f2770c88ff71a80252988ca115ec95a480cc047a75df34fbbbb2432b3a75da languageName: node linkType: hard -"pg-protocol@npm:*, pg-protocol@npm:^1.11.0": - version: 1.11.0 - resolution: "pg-protocol@npm:1.11.0" - checksum: 10c0/93e83581781418c9173eba4e4545f73392cfe66b78dd1d3624d7339fbd37e7f4abebaf2615e68e0701a9bf0edf5b81a4ad533836f388f775fe25fa24a691c464 +"pg-protocol@npm:*, pg-protocol@npm:^1.12.0": + version: 1.12.0 + resolution: "pg-protocol@npm:1.12.0" + checksum: 10c0/577f33c756f6503682d9ac17fd813f9edbe4a1716e497f17d36b6edaf9bf8383accaf8cd7422c49e2fbe4eb28ef275bc52fbd8287e154d4510f50b9ccefe4165 languageName: node linkType: hard @@ -10742,13 +10742,13 @@ __metadata: linkType: hard "pg@npm:^8.5.0": - version: 8.18.0 - resolution: "pg@npm:8.18.0" + version: 8.19.0 + resolution: "pg@npm:8.19.0" dependencies: pg-cloudflare: "npm:^1.3.0" pg-connection-string: "npm:^2.11.0" - pg-pool: "npm:^3.11.0" - pg-protocol: "npm:^1.11.0" + pg-pool: "npm:^3.12.0" + pg-protocol: "npm:^1.12.0" pg-types: "npm:2.2.0" pgpass: "npm:1.0.5" peerDependencies: @@ -10759,7 +10759,7 @@ __metadata: peerDependenciesMeta: pg-native: optional: true - checksum: 10c0/9525e34d603ee5d715b8952269b2fa9fdd350a55fc5a3360104e7613724441858e57d52eed435fb16e993d028b45d8175dc277d270d31f69e5746987a549f772 + checksum: 10c0/7713d6ef9f32746370f2bd599ebfa54d22bbdbb3a256a64b76997dd8a7279a5734dde260d6a1da22047171604fba88bd273d570c77b16f08ebe32a47ffbe2aba languageName: node linkType: hard From 6ab24de659a02797afef54fc0e401290081db536 Mon Sep 17 00:00:00 2001 From: Shlee Date: Mon, 2 Mar 2026 20:33:21 +1030 Subject: [PATCH 13/14] trustworthy_attribution - Bounce bad URIs (#37372) --- app/services/activitypub/fetch_remote_status_service.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/services/activitypub/fetch_remote_status_service.rb b/app/services/activitypub/fetch_remote_status_service.rb index e08f82f7d9..4ef5a6571e 100644 --- a/app/services/activitypub/fetch_remote_status_service.rb +++ b/app/services/activitypub/fetch_remote_status_service.rb @@ -60,6 +60,7 @@ class ActivityPub::FetchRemoteStatusService < BaseService def trustworthy_attribution?(uri, attributed_to) return false if uri.nil? || attributed_to.nil? + return false if unsupported_uri_scheme?(uri) || unsupported_uri_scheme?(attributed_to) Addressable::URI.parse(uri).normalized_host.casecmp(Addressable::URI.parse(attributed_to).normalized_host).zero? end From 2f657019201d73c9d86d1ece339e66e72954f0eb Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Mon, 2 Mar 2026 11:16:41 +0100 Subject: [PATCH 14/14] Add service to revoke inclusion in a Collection (#38026) --- app/models/collection_item.rb | 4 +++ ...delete_feature_authorization_serializer.rb | 25 +++++++++++++++++ .../revoke_collection_item_service.rb | 24 +++++++++++++++++ ...e_feature_authorization_serializer_spec.rb | 27 +++++++++++++++++++ .../revoke_collection_item_service_spec.rb | 25 +++++++++++++++++ 5 files changed, 105 insertions(+) create mode 100644 app/serializers/activitypub/delete_feature_authorization_serializer.rb create mode 100644 app/services/revoke_collection_item_service.rb create mode 100644 spec/serializers/activitypub/delete_feature_authorization_serializer_spec.rb create mode 100644 spec/services/revoke_collection_item_service_spec.rb diff --git a/app/models/collection_item.rb b/app/models/collection_item.rb index c5c9ebc16e..e113b3b522 100644 --- a/app/models/collection_item.rb +++ b/app/models/collection_item.rb @@ -42,6 +42,10 @@ class CollectionItem < ApplicationRecord scope :not_blocked_by, ->(account) { where.not(accounts: { id: account.blocking }) } scope :local, -> { joins(:collection).merge(Collection.local) } + def revoke! + update!(state: :revoked) + end + def local_item_with_remote_account? local? && account&.remote? end diff --git a/app/serializers/activitypub/delete_feature_authorization_serializer.rb b/app/serializers/activitypub/delete_feature_authorization_serializer.rb new file mode 100644 index 0000000000..eb9f39fb4b --- /dev/null +++ b/app/serializers/activitypub/delete_feature_authorization_serializer.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class ActivityPub::DeleteFeatureAuthorizationSerializer < ActivityPub::Serializer + include RoutingHelper + + attributes :id, :type, :actor, :to + + has_one :object, serializer: ActivityPub::FeatureAuthorizationSerializer + + def id + [ap_account_feature_authorization_url(object.account_id, object), '#delete'].join + end + + def type + 'Delete' + end + + def actor + ActivityPub::TagManager.instance.uri_for(object.account) + end + + def to + [ActivityPub::TagManager::COLLECTIONS[:public]] + end +end diff --git a/app/services/revoke_collection_item_service.rb b/app/services/revoke_collection_item_service.rb new file mode 100644 index 0000000000..d299b567f2 --- /dev/null +++ b/app/services/revoke_collection_item_service.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class RevokeCollectionItemService < BaseService + include Payloadable + + def call(collection_item) + @collection_item = collection_item + @account = collection_item.account + + @collection_item.revoke! + + distribute_stamp_deletion! if Mastodon::Feature.collections_federation_enabled? && @collection_item.remote? + end + + private + + def distribute_stamp_deletion! + ActivityPub::AccountRawDistributionWorker.perform_async(signed_activity_json, @collection_item.collection.account_id) + end + + def signed_activity_json + @signed_activity_json ||= Oj.dump(serialize_payload(@collection_item, ActivityPub::DeleteFeatureAuthorizationSerializer, signer: @account, always_sign: true)) + end +end diff --git a/spec/serializers/activitypub/delete_feature_authorization_serializer_spec.rb b/spec/serializers/activitypub/delete_feature_authorization_serializer_spec.rb new file mode 100644 index 0000000000..a1b2de7966 --- /dev/null +++ b/spec/serializers/activitypub/delete_feature_authorization_serializer_spec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe ActivityPub::DeleteFeatureAuthorizationSerializer do + include RoutingHelper + + subject { serialized_record_json(collection_item, described_class, adapter: ActivityPub::Adapter) } + + describe 'serializing an object' do + let(:collection) { Fabricate(:remote_collection) } + let(:collection_item) { Fabricate(:collection_item, collection:, uri: 'https://example.com') } + + it 'returns expected json structure' do + expect(subject) + .to include({ + 'type' => 'Delete', + 'to' => ['https://www.w3.org/ns/activitystreams#Public'], + 'actor' => ActivityPub::TagManager.instance.uri_for(collection_item.account), + 'object' => a_hash_including({ + 'type' => 'FeatureAuthorization', + 'id' => ap_account_feature_authorization_url(collection_item.account_id, collection_item), + }), + }) + end + end +end diff --git a/spec/services/revoke_collection_item_service_spec.rb b/spec/services/revoke_collection_item_service_spec.rb new file mode 100644 index 0000000000..8ea753dcc5 --- /dev/null +++ b/spec/services/revoke_collection_item_service_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe RevokeCollectionItemService do + subject { described_class.new } + + let(:collection_item) { Fabricate(:collection_item) } + + it 'revokes the collection item and sends a Delete activity' do + expect { subject.call(collection_item) } + .to change { collection_item.reload.state }.from('accepted').to('revoked') + end + + context 'when the collection is remote', feature: :collections_federation do + let(:collection) { Fabricate(:remote_collection) } + let(:collection_item) { Fabricate(:collection_item, collection:, uri: 'https://example.com') } + + it 'federates a `Delete` activity' do + subject.call(collection_item) + + expect(ActivityPub::AccountRawDistributionWorker).to have_enqueued_sidekiq_job + end + end +end