diff --git a/CHANGELOG.md b/CHANGELOG.md index 97a7234382..b3af469bb3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,28 @@ All notable changes to this project will be documented in this file. +## [4.4.3] - 2025-08-05 + +### Security + +- Update dependencies +- Fix incorrect rate-limit handling [GHSA-84ch-6436-c7mg](https://github.com/mastodon/mastodon/security/advisories/GHSA-84ch-6436-c7mg) + +### Fixed + +- Fix race condition caused by ActiveRecord query cache in `Create` critical path (#35662 by @ClearlyClaire) +- Fix race condition caused by quote post processing (#35657 by @ClearlyClaire) +- Fix WebUI crashing for accounts with `null` URL (#35651 by @ClearlyClaire) +- Fix friends-of-friends recommendations suggesting already-requested accounts (#35604 by @ClearlyClaire) +- Fix synchronous recursive fetching of deeply-nested quoted posts (#35600 by @ClearlyClaire) +- Fix “Expand this post” link including user `@undefined` (#35478 by @ClearlyClaire) + +### Changed + +- Change `StatusReachFinder` to consider quotes as well as reblogs (#35601 by @ClearlyClaire) +- Add restrictions on which quote posts can trend (#35507 by @ClearlyClaire) +- Change quote verification to not bypass authorization flow for mentions (#35528 by @ClearlyClaire) + ## [4.4.2] - 2025-07-23 ### Security diff --git a/Gemfile.lock b/Gemfile.lock index 2b6ba0d485..475172934a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -144,7 +144,7 @@ GEM rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) - capybara-playwright-driver (0.5.6) + capybara-playwright-driver (0.5.7) addressable capybara playwright-ruby-client (>= 1.16.0) @@ -438,7 +438,7 @@ GEM mime-types (3.7.0) logger mime-types-data (~> 3.2025, >= 3.2025.0507) - mime-types-data (3.2025.0722) + mime-types-data (3.2025.0729) mini_mime (1.1.5) mini_portile2 (2.8.9) minitest (5.25.5) @@ -610,7 +610,7 @@ GEM pg (1.6.1) pghero (3.7.0) activerecord (>= 7.1) - playwright-ruby-client (1.54.0) + playwright-ruby-client (1.54.1) concurrent-ruby (>= 1.1.6) mime-types (>= 3.0) pp (0.6.2) diff --git a/app/controllers/api/v1/statuses/quotes_controller.rb b/app/controllers/api/v1/statuses/quotes_controller.rb index 7dd91e9a2e..962855884e 100644 --- a/app/controllers/api/v1/statuses/quotes_controller.rb +++ b/app/controllers/api/v1/statuses/quotes_controller.rb @@ -19,7 +19,7 @@ class Api::V1::Statuses::QuotesController < Api::V1::Statuses::BaseController RevokeQuoteService.new.call(@quote) - render_empty # TODO: do we want to return something? an updated status? + render json: @quote.status, serializer: REST::StatusSerializer end private diff --git a/app/controllers/api/v2/search_controller.rb b/app/controllers/api/v2/search_controller.rb index 3ca13cc427..c00ddf92cc 100644 --- a/app/controllers/api/v2/search_controller.rb +++ b/app/controllers/api/v2/search_controller.rb @@ -20,7 +20,7 @@ class Api::V2::SearchController < Api::BaseController @search = Search.new(search_results) render json: @search, serializer: REST::SearchSerializer rescue Mastodon::SyntaxError - unprocessable_entity + unprocessable_content rescue ActiveRecord::RecordNotFound not_found end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index d4f0ffba81..f785874e1c 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -29,7 +29,7 @@ class ApplicationController < ActionController::Base rescue_from Mastodon::NotPermittedError, with: :forbidden rescue_from ActionController::RoutingError, ActiveRecord::RecordNotFound, with: :not_found rescue_from ActionController::UnknownFormat, with: :not_acceptable - rescue_from ActionController::InvalidAuthenticityToken, with: :unprocessable_entity + rescue_from ActionController::InvalidAuthenticityToken, with: :unprocessable_content rescue_from Mastodon::RateLimitExceededError, with: :too_many_requests rescue_from(*Mastodon::HTTP_CONNECTION_ERRORS, with: :internal_server_error) @@ -124,7 +124,7 @@ class ApplicationController < ActionController::Base respond_with_error(410) end - def unprocessable_entity + def unprocessable_content respond_with_error(422) end diff --git a/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb b/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb index b01f08ed8f..83dedb411d 100644 --- a/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb +++ b/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb @@ -52,7 +52,7 @@ module Settings end else flash[:error] = I18n.t('webauthn_credentials.create.error') - status = :unprocessable_entity + status = :unprocessable_content end else flash[:error] = t('webauthn_credentials.create.error') diff --git a/app/javascript/mastodon/actions/notification_groups.ts b/app/javascript/mastodon/actions/notification_groups.ts index 4386325481..19d8750fa7 100644 --- a/app/javascript/mastodon/actions/notification_groups.ts +++ b/app/javascript/mastodon/actions/notification_groups.ts @@ -161,7 +161,9 @@ export const processNewNotificationForGroups = createAppAsyncThunk( if (!showInColumn) return; if ( - (notification.type === 'mention' || notification.type === 'update') && + (notification.type === 'mention' || + notification.type === 'update' || + notification.type === 'quote') && notification.status?.filtered ) { const filters = notification.status.filtered.filter((result) => diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index 2499b8da1d..cbfddc750f 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -31,7 +31,7 @@ export function updateNotifications(notification, intlMessages, intlLocale) { let filtered = false; - if (['mention', 'status'].includes(notification.type) && notification.status.filtered) { + if (['mention', 'status', 'quote'].includes(notification.type) && notification.status.filtered) { const filters = notification.status.filtered.filter(result => result.filter.context.includes('notifications')); if (filters.some(result => result.filter.filter_action === 'hide')) { diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.jsx b/app/javascript/mastodon/features/notifications/components/column_settings.jsx index 9616adcb93..b1f4e59818 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.jsx +++ b/app/javascript/mastodon/features/notifications/components/column_settings.jsx @@ -143,6 +143,17 @@ class ColumnSettings extends PureComponent { +
+

+ +
+ + {showPushSettings && } + + +
+
+

diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 5bee7f604c..bb255756e6 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -497,6 +497,8 @@ "keyboard_shortcuts.translate": "per a traduir una publicació", "keyboard_shortcuts.unfocus": "Descentra l'àrea de composició de text/cerca", "keyboard_shortcuts.up": "Apuja a la llista", + "learn_more_link.got_it": "Entesos", + "learn_more_link.learn_more": "Per a saber-ne més", "lightbox.close": "Tanca", "lightbox.next": "Següent", "lightbox.previous": "Anterior", @@ -597,6 +599,7 @@ "notification.label.mention": "Menció", "notification.label.private_mention": "Menció privada", "notification.label.private_reply": "Resposta en privat", + "notification.label.quote": "{name} ha citat la vostra publicació", "notification.label.reply": "Resposta", "notification.mention": "Menció", "notification.mentioned_you": "{name} us ha mencionat", @@ -872,6 +875,11 @@ "status.open": "Amplia el tut", "status.pin": "Fixa en el perfil", "status.quote_error.filtered": "No es mostra a causa d'un dels vostres filtres", + "status.quote_error.not_available": "Publicació no disponible", + "status.quote_error.pending_approval": "Publicació pendent", + "status.quote_error.pending_approval_popout.body": "Les citacions compartides a través del Fediverse poden trigar en aparèixer, perquè diferents servidors tenen diferents protocols.", + "status.quote_error.pending_approval_popout.title": "Publicació pendent? Mantinguem la calma", + "status.quote_post_author": "S'ha citat una publicació de @{name}", "status.read_more": "Més informació", "status.reblog": "Impulsa", "status.reblog_private": "Impulsa amb la visibilitat original", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index ff3ba99e8d..645808695f 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -600,6 +600,7 @@ "notification.label.mention": "Omtale", "notification.label.private_mention": "Privat omtale", "notification.label.private_reply": "Privat svar", + "notification.label.quote": "{name} citerede dit indlæg", "notification.label.reply": "Svar", "notification.mention": "Omtale", "notification.mentioned_you": "{name} omtalte dig", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 79aa5874b5..a2dfbb8bd3 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -600,6 +600,7 @@ "notification.label.mention": "Επισήμανση", "notification.label.private_mention": "Ιδιωτική επισήμανση", "notification.label.private_reply": "Ιδιωτική απάντηση", + "notification.label.quote": "Ο/Η {name} έκανε παράθεση της ανάρτησής σου", "notification.label.reply": "Απάντηση", "notification.mention": "Επισήμανση", "notification.mentioned_you": "Ο χρήστης {name} σε επισήμανε", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index c91516695b..aa18fc39ce 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -658,6 +658,7 @@ "notifications.column_settings.mention": "Mentions:", "notifications.column_settings.poll": "Poll results:", "notifications.column_settings.push": "Push notifications", + "notifications.column_settings.quote": "Quotes:", "notifications.column_settings.reblog": "Boosts:", "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 84536740b2..75460017da 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -600,6 +600,7 @@ "notification.label.mention": "Mención", "notification.label.private_mention": "Mención privada", "notification.label.private_reply": "Respuesta privada", + "notification.label.quote": "{name} citó tu mensaje", "notification.label.reply": "Respuesta", "notification.mention": "Mención", "notification.mentioned_you": "{name} te mencionó", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 834c1f33bf..d0c2290717 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -600,6 +600,7 @@ "notification.label.mention": "Mención", "notification.label.private_mention": "Mención privada", "notification.label.private_reply": "Respuesta privada", + "notification.label.quote": "{name} citó tu publicación", "notification.label.reply": "Respuesta", "notification.mention": "Mención", "notification.mentioned_you": "{name} te mencionó", @@ -877,7 +878,7 @@ "status.quote_error.filtered": "Oculto debido a uno de tus filtros", "status.quote_error.not_available": "Publicación no disponible", "status.quote_error.pending_approval": "Publicación pendiente", - "status.quote_error.pending_approval_popout.body": "Las citas compartidas a través del Fediverso pueden tardar en mostrarse, ya que los diferentes servidores tienen diferentes protocolos.", + "status.quote_error.pending_approval_popout.body": "Las citas compartidas en el Fediverso pueden tardar en mostrarse, ya que cada servidor tiene un protocolo diferente.", "status.quote_error.pending_approval_popout.title": "¿Cita pendiente? Mantén la calma", "status.quote_post_author": "Ha citado una publicación de @{name}", "status.read_more": "Leer más", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 475f4ca706..62c296ad52 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -600,6 +600,7 @@ "notification.label.mention": "Mención", "notification.label.private_mention": "Mención privada", "notification.label.private_reply": "Respuesta privada", + "notification.label.quote": "{name} citó tu publicación", "notification.label.reply": "Respuesta", "notification.mention": "Mención", "notification.mentioned_you": "{name} te ha mencionado", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 8f93fab6d4..397c9d14c5 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -600,6 +600,7 @@ "notification.label.mention": "Említés", "notification.label.private_mention": "Privát említés", "notification.label.private_reply": "Privát válasz", + "notification.label.quote": "{name} idézte a bejegyzésedet", "notification.label.reply": "Válasz", "notification.mention": "Említés", "notification.mentioned_you": "{name} megemlített", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 5168665f6a..9edc9ae567 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -600,6 +600,7 @@ "notification.label.mention": "Menziona", "notification.label.private_mention": "Menzione privata", "notification.label.private_reply": "Rispondi in privato", + "notification.label.quote": "{name} ha citato il tuo post", "notification.label.reply": "Rispondi", "notification.mention": "Menziona", "notification.mentioned_you": "{name} ti ha menzionato", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 54a1eac1ba..22cae4b455 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -600,6 +600,7 @@ "notification.label.mention": "Vermelding", "notification.label.private_mention": "Privébericht", "notification.label.private_reply": "Privéreactie", + "notification.label.quote": "{name} heeft jouw bericht geciteerd", "notification.label.reply": "Reactie", "notification.mention": "Vermelding", "notification.mentioned_you": "Je bent vermeld door {name}", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index a7fa70a28a..27d5f72c9c 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -600,6 +600,7 @@ "notification.label.mention": "Bahsetme", "notification.label.private_mention": "Özel bahsetme", "notification.label.private_reply": "Özel yanıt", + "notification.label.quote": "{name} gönderini yeniden paylaştı", "notification.label.reply": "Yanıt", "notification.mention": "Bahsetme", "notification.mentioned_you": "{name} sizden söz etti", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 5062434ab9..fc67e1d7ae 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -600,6 +600,7 @@ "notification.label.mention": "Lượt nhắc", "notification.label.private_mention": "Nhắn riêng", "notification.label.private_reply": "Trả lời riêng", + "notification.label.quote": "{name} đã trích dẫn tút của bạn", "notification.label.reply": "Trả lời", "notification.mention": "Nhắc đến bạn", "notification.mentioned_you": "{name} nhắc đến bạn", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index b086b55b83..cafd061818 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -600,6 +600,7 @@ "notification.label.mention": "提及", "notification.label.private_mention": "私訊", "notification.label.private_reply": "私訊回嘟", + "notification.label.quote": "{name} 已引用您的嘟文", "notification.label.reply": "回嘟", "notification.mention": "提及", "notification.mentioned_you": "{name} 已提及您", diff --git a/app/javascript/mastodon/reducers/settings.js b/app/javascript/mastodon/reducers/settings.js index 9e2ee5f55a..cea8949f23 100644 --- a/app/javascript/mastodon/reducers/settings.js +++ b/app/javascript/mastodon/reducers/settings.js @@ -36,6 +36,7 @@ const initialState = ImmutableMap({ follow_request: false, favourite: false, reblog: false, + quote: false, mention: false, poll: false, status: false, @@ -59,6 +60,7 @@ const initialState = ImmutableMap({ follow_request: false, favourite: true, reblog: true, + quote: true, mention: true, poll: true, status: true, @@ -72,6 +74,7 @@ const initialState = ImmutableMap({ follow_request: false, favourite: true, reblog: true, + quote: true, mention: true, poll: true, status: true, diff --git a/app/models/username_block.rb b/app/models/username_block.rb index 18db4ca34e..33169a47f8 100644 --- a/app/models/username_block.rb +++ b/app/models/username_block.rb @@ -29,10 +29,12 @@ class UsernameBlock < ApplicationRecord validates :username, presence: true, uniqueness: true scope :matches_exactly, ->(str) { where(exact: true).where(normalized_username: str) } - scope :matches_partially, ->(str) { where(exact: false).where(Arel::Nodes.build_quoted(str).matches(Arel::Nodes.build_quoted('%').concat(arel_table[:normalized_username]).concat(Arel::Nodes.build_quoted('%')))) } + scope :matches_partially, ->(str) { where(exact: false).where(Arel::Nodes.build_quoted(normalize_value_for(:normalized_username, str)).matches(Arel::Nodes.build_quoted('%').concat(arel_table[:normalized_username]).concat(Arel::Nodes.build_quoted('%')))) } before_save :set_normalized_username + normalizes :normalized_username, with: ->(value) { value.downcase.gsub(Regexp.union(HOMOGLYPHS.keys), HOMOGLYPHS) } + def comparison exact? ? 'equals' : 'contains' end @@ -42,8 +44,7 @@ class UsernameBlock < ApplicationRecord end def self.matches?(str, allow_with_approval: false) - normalized_str = str.downcase.gsub(Regexp.union(HOMOGLYPHS.keys), HOMOGLYPHS) - matches_exactly(normalized_str).or(matches_partially(normalized_str)).where(allow_with_approval: allow_with_approval).any? + matches_exactly(str).or(matches_partially(str)).where(allow_with_approval: allow_with_approval).any? end def to_log_human_identifier @@ -53,10 +54,6 @@ class UsernameBlock < ApplicationRecord private def set_normalized_username - self.normalized_username = normalize(username) - end - - def normalize(str) - str.downcase.gsub(Regexp.union(HOMOGLYPHS.keys), HOMOGLYPHS) + self.normalized_username = username end end diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb index f558ee5fe0..853b99d32f 100644 --- a/config/initializers/rack_attack.rb +++ b/config/initializers/rack_attack.rb @@ -126,7 +126,7 @@ class Rack::Attack end throttle('throttle_email_confirmations/email', limit: 5, period: 30.minutes) do |req| - if req.post? && req.path_matches?('/auth/password') + if req.post? && req.path_matches?('/auth/confirmation') req.params.dig('user', 'email').presence elsif req.post? && req.path == '/api/v1/emails/confirmations' req.authenticated_user_id diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 2057e4cc3d..7dfa928f57 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1660,6 +1660,10 @@ ca: title: Nova menció poll: subject: Ha finalitzat l'enquesta de %{name} + quote: + body: 'La vostra publicació ha estat citada per %{name}:' + subject: "%{name} ha citat la vostra publicació" + title: Nova citació reblog: body: "%{name} ha impulsat el teu estat:" subject: "%{name} ha impulsat el teu estat" diff --git a/config/locales/cs.yml b/config/locales/cs.yml index e4ebcd744c..5582a02740 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -1765,6 +1765,10 @@ cs: title: Nová zmínka poll: subject: Anketa od %{name} skončila + quote: + body: 'Váš příspěvek citoval účet %{name}:' + subject: "%{name} citovali váš příspěvek" + title: Nová citace reblog: body: 'Uživatel %{name} boostnul váš příspěvek:' subject: Uživatel %{name} boostnul váš příspěvek diff --git a/config/locales/da.yml b/config/locales/da.yml index 1b56425ee2..85de82443e 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -1687,6 +1687,10 @@ da: title: Ny omtale poll: subject: En afstemning fra %{name} er afsluttet + quote: + body: 'Dit indlæg blev citeret af %{name}:' + subject: "%{name} citerede dit indlæg" + title: Nyt citat reblog: body: 'Dit indlæg blev fremhævet af %{name}:' subject: "%{name} fremhævede dit indlæg" @@ -1905,7 +1909,7 @@ da: ownership: Andres indlæg kan ikke fastgøres reblog: En fremhævelse kan ikke fastgøres quote_policies: - followers: Kun egne følgere + followers: Kun dine følgere nobody: Ingen public: Alle title: '%{name}: "%{quote}"' diff --git a/config/locales/de.yml b/config/locales/de.yml index adef04dfa8..69ff2ac545 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1687,6 +1687,10 @@ de: title: Neue Erwähnung poll: subject: Eine Umfrage von %{name} ist beendet + quote: + body: 'Dein Beitrag wurde von %{name} zitiert:' + subject: "%{name} zitierte deinen Beitrag" + title: Neuer zitierter Beitrag reblog: body: 'Dein Beitrag wurde von %{name} geteilt:' subject: "%{name} teilte deinen Beitrag" diff --git a/config/locales/el.yml b/config/locales/el.yml index 2ad8bc6899..cddba5cdfb 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -1687,6 +1687,10 @@ el: title: Νέα επισήμανση poll: subject: Μια δημοσκόπηση του %{name} έληξε + quote: + body: 'Η ανάρτησή σου παρατέθηκε από %{name}:' + subject: Ο/Η %{name} έκανε παράθεση της ανάρτησής σου + title: Νέα παράθεση reblog: body: 'Η ανάρτησή σου ενισχύθηκε από τον/την %{name}:' subject: Ο/Η %{name} ενίσχυσε την ανάρτηση σου diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index f01db94590..04578632ac 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -1687,6 +1687,10 @@ es-AR: title: Nueva mención poll: subject: Terminó una encuesta de %{name} + quote: + body: 'Tu mensaje fue citado por %{name}:' + subject: "%{name} citó tu mensaje" + title: Nueva cita reblog: body: "%{name} adhirió a tu mensaje:" subject: "%{name} adhirió a tu mensaje" diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index e7a6e3df62..10186de91e 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -1687,6 +1687,10 @@ es-MX: title: Nueva mención poll: subject: Una encuesta de %{name} ha terminado + quote: + body: 'Tu publicación fue citada por %{name}:' + subject: "%{name} citó tu publicación" + title: Nueva cita reblog: body: 'Tu publicación fue impulsada por %{name}:' subject: "%{name} ha impulsado tu publicación" diff --git a/config/locales/es.yml b/config/locales/es.yml index 2f7721a0ff..8b2d86911a 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1687,6 +1687,10 @@ es: title: Nueva mención poll: subject: Una encuesta de %{name} ha terminado + quote: + body: 'Tu publicación ha sido citada por %{name}:' + subject: "%{name} citó tu publicación" + title: Nueva cita reblog: body: 'Tu publicación fue impulsada por %{name}:' subject: "%{name} impulsó tu publicación" diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 6d7773a1f6..190a58b8ee 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -1685,6 +1685,10 @@ fi: title: Uusi maininta poll: subject: Äänestys käyttäjältä %{name} on päättynyt + quote: + body: "%{name} lainasi julkaisuasi:" + subject: "%{name} lainasi julkaisuasi" + title: Uusi lainaus reblog: body: "%{name} tehosti julkaisuasi:" subject: "%{name} tehosti julkaisuasi" diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml index 38de6ee861..c7da245c4a 100644 --- a/config/locales/fr-CA.yml +++ b/config/locales/fr-CA.yml @@ -1852,6 +1852,10 @@ fr-CA: limit: Vous avez déjà épinglé le nombre maximum de messages ownership: Vous ne pouvez pas épingler un message ne vous appartenant pas reblog: Un partage ne peut pas être épinglé + quote_policies: + followers: Vos abonné·es seulement + nobody: Personne + public: Tout le monde title: "%{name} : « %{quote} »" visibilities: direct: Direct diff --git a/config/locales/fr.yml b/config/locales/fr.yml index da5224fcf5..918812a807 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -1852,6 +1852,10 @@ fr: limit: Vous avez déjà épinglé le nombre maximum de messages ownership: Vous ne pouvez pas épingler un message ne vous appartenant pas reblog: Un partage ne peut pas être épinglé + quote_policies: + followers: Vos abonné·es seulement + nobody: Personne + public: Tout le monde title: "%{name} : « %{quote} »" visibilities: direct: Direct diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 4a2f593d09..45d0e62b6a 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -1687,6 +1687,10 @@ gl: title: Nova mención poll: subject: A enquisa de %{name} rematou + quote: + body: 'A túa publicación foi citada por %{name}:' + subject: "%{name} citou a túa publicación" + title: Nova cita reblog: body: 'A túa publicación promovida por %{name}:' subject: "%{name} promoveu a túa publicación" diff --git a/config/locales/he.yml b/config/locales/he.yml index 53f42bfa3b..46be493307 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -1765,6 +1765,10 @@ he: title: אזכור חדש poll: subject: סקר מאת %{name} הסתיים + quote: + body: 'הודעתך צוטטה על ידי %{name}:' + subject: "%{name} ציטט.ה את הודעתך" + title: ציטוט חדש reblog: body: 'הודעתך הודהדה על ידי %{name}:' subject: הודעתך הודהדה על ידי%{name} diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 4e8f9e8051..454f5ce017 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -1687,6 +1687,10 @@ hu: title: Új említés poll: subject: "%{name} szavazása véget ért" + quote: + body: 'A bejegyzésedet %{name} idézte:' + subject: "%{name} idézte a bejegyzésedet" + title: Új idézet reblog: body: 'A bejegyzésedet %{name} megtolta:' subject: "%{name} megtolta a bejegyzésedet" @@ -1905,6 +1909,8 @@ hu: ownership: Nem tűzheted ki valaki más bejegyzését reblog: Megtolt bejegyzést nem tudsz kitűzni quote_policies: + followers: Csak a követőid + nobody: Senki public: Mindenki title: "%{name}: „%{quote}”" visibilities: diff --git a/config/locales/ia.yml b/config/locales/ia.yml index f2b00a0e55..1c7de3f382 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -1042,6 +1042,16 @@ ia: other: Usate per %{count} personas in le ultime septimana title: Recommendationes e tendentias trending: In tendentia + username_blocks: + edit: + title: Modificar regula de nomine de usator + new: + create: Crear regula + title: Crear nove regula de nomine de usator + no_username_block_selected: Necun regula de usator ha essite cambiate perque necun ha essite seligite + not_permitted: Non permittite + title: Regulas de nomine de usator + updated_msg: Regula de nomine de usator actualisate con successo warning_presets: add_new: Adder nove delete: Deler diff --git a/config/locales/is.yml b/config/locales/is.yml index 5feccdc9bd..9126062915 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1691,6 +1691,10 @@ is: title: Ný tilvísun poll: subject: Könnun frá %{name} er lokið + quote: + body: "%{name} vitnaði í færsluna þína:" + subject: "%{name} vitnaði í færsluna þína" + title: Ný tilvitnun reblog: body: "%{name} endurbirti færsluna þína:" subject: "%{name} endurbirti færsluna þína" diff --git a/config/locales/it.yml b/config/locales/it.yml index cef3224f63..669947d5e8 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1689,6 +1689,10 @@ it: title: Nuova menzione poll: subject: Un sondaggio da %{name} è terminato + quote: + body: 'Il tuo post è stato citato da %{name}:' + subject: "%{name} ha citato il tuo post" + title: Nuova citazione reblog: body: 'Il tuo status è stato condiviso da %{name}:' subject: "%{name} ha condiviso il tuo status" @@ -1907,6 +1911,8 @@ it: ownership: Non puoi fissare in cima un post di qualcun altro reblog: Un toot condiviso non può essere fissato in cima quote_policies: + followers: Solo i tuoi seguaci + nobody: Nessuno public: Tutti title: '%{name}: "%{quote}"' visibilities: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 85fe706c44..206992ec8c 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1687,6 +1687,10 @@ nl: title: Nieuwe vermelding poll: subject: Een peiling van %{name} is beëindigd + quote: + body: 'Jouw bericht werd door %{name} geciteerd:' + subject: "%{name} heeft jouw bericht geciteerd" + title: Nieuw citaat reblog: body: 'Jouw bericht werd door %{name} geboost:' subject: "%{name} boostte jouw bericht" diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 64958711da..f979e68323 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -323,6 +323,7 @@ ca: follow_request: Algú sol·licita seguir-te mention: Algú et menciona pending_account: Un nou compte necessita revisió + quote: Algú us ha citat reblog: Algú comparteix el teu estat report: S'ha enviat l'informe nou software_updates: diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 5ca0de9dc8..b318f15709 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -331,6 +331,7 @@ cs: follow_request: Někdo požádal o možnost vás sledovat mention: Někdo vás zmínil pending_account: Je třeba posoudit nový účet + quote: Někdo vás citoval reblog: Někdo boostnul váš příspěvek report: Je odesláno nové hlášení software_updates: diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index c5a436c2e2..58f6a129bb 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -329,6 +329,7 @@ da: follow_request: Nogen anmodede om at følge dig mention: Nogen omtalte dig pending_account: Ny konto kræver gennemgang + quote: Nogle citerede dig reblog: Nogen fremhævede dit indlæg report: Ny anmeldelse indsendt software_updates: diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 998befb111..62185c80f0 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -329,6 +329,7 @@ de: follow_request: Jemand möchte mir folgen mention: Ich wurde erwähnt pending_account: Ein neues Konto muss überprüft werden + quote: Jemand zitierte dich reblog: Mein Beitrag wurde geteilt report: Eine neue Meldung wurde eingereicht software_updates: diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index b3c3c2c6d9..fcbe7dc32d 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -329,6 +329,7 @@ el: follow_request: Κάποιος ζήτησε να σε ακολουθήσει mention: Κάποιος σε επισήμανε pending_account: Νέος λογαριασμός χρειάζεται αναθεώρηση + quote: Κάποιος σε παρέθεσε reblog: Κάποιος ενίσχυσε την ανάρτηση σου report: Υποβλήθηκε νέα αναφορά software_updates: diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 0b7dde5cb8..f3972d01a9 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -329,6 +329,7 @@ es-AR: follow_request: Una cuenta solicita seguirte mention: Una cuenta te menciona pending_account: Una nueva cuenta necesita revisión + quote: Alguien te citó reblog: Una cuenta adhiere a tu mensaje report: Se envió una nueva denuncia software_updates: diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 0aee8fab9d..6b20f6e6ae 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -56,7 +56,7 @@ es-MX: scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionas el alcance de nivel mas alto, no necesitas seleccionar las individuales. setting_aggregate_reblogs: No mostrar nuevos impulsos para las publicaciones que han sido recientemente impulsadas (sólo afecta a las publicaciones recibidas recientemente) setting_always_send_emails: Normalmente las notificaciones por correo electrónico no se enviarán cuando estés usando Mastodon activamente - setting_default_quote_policy: Este ajuste solo tendrá efecto en publicaciones creadas con la próxima versión de Mastodon, pero puedes configurarlo previamente. + setting_default_quote_policy: Esta configuración solo tendrá efecto en las publicaciones creadas con la próxima versión de Mastodon, pero puedes seleccionar tu preferencia como preparación. setting_default_sensitive: El contenido multimedia sensible está oculto por defecto y puede ser mostrado con un clic setting_display_media_default: Ocultar contenido multimedia marcado como sensible setting_display_media_hide_all: Siempre ocultar todo el contenido multimedia @@ -329,6 +329,7 @@ es-MX: follow_request: Enviar correo electrónico cuando alguien solicita seguirte mention: Enviar correo electrónico cuando alguien te mencione pending_account: Enviar correo electrónico cuando una nueva cuenta necesita revisión + quote: Alguien te citó reblog: Enviar correo electrónico cuando alguien comparta su publicación report: Nuevo reporte enviado software_updates: diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index ce2a74c3e1..53115056f4 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -329,6 +329,7 @@ es: follow_request: Enviar correo electrónico cuando alguien solicita seguirte mention: Enviar correo electrónico cuando alguien te mencione pending_account: Enviar correo electrónico cuando una nueva cuenta necesita revisión + quote: Alguien te ha citado reblog: Enviar correo electrónico cuando alguien comparta su publicación report: Nuevo informe enviado software_updates: diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index 5edb75cdb9..7ccf8ab5f7 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -328,6 +328,7 @@ fi: follow_request: Joku pyysi lupaa seurata sinua mention: Joku mainitsi sinut pending_account: Uusi tili tarvitsee tarkastuksen + quote: Joku lainasi sinua reblog: Joku tehosti julkaisuasi report: Uusi raportti lähetettiin software_updates: diff --git a/config/locales/simple_form.fr-CA.yml b/config/locales/simple_form.fr-CA.yml index 8856c8906c..51a5b432a3 100644 --- a/config/locales/simple_form.fr-CA.yml +++ b/config/locales/simple_form.fr-CA.yml @@ -56,6 +56,7 @@ fr-CA: scopes: À quelles APIs l’application sera autorisée à accéder. Si vous sélectionnez une permission générale, vous n’avez pas besoin de sélectionner les permissions plus précises. setting_aggregate_reblogs: Ne pas afficher les nouveaux partages pour les messages déjà récemment partagés (n’affecte que les partages futurs) setting_always_send_emails: Normalement, les notifications par courriel ne seront pas envoyées lorsque vous utilisez Mastodon activement + setting_default_quote_policy: Ce paramètre ne prendra effet que pour les messages créés avec la prochaine version de Mastodon, mais vous pouvez sélectionner votre préférence en avance. setting_default_sensitive: Les médias sensibles sont cachés par défaut et peuvent être révélés d’un simple clic setting_display_media_default: Masquer les médias marqués comme sensibles setting_display_media_hide_all: Toujours masquer les médias @@ -228,6 +229,7 @@ fr-CA: setting_boost_modal: Demander confirmation avant de partager un message setting_default_language: Langue de publication setting_default_privacy: Confidentialité des messages + setting_default_quote_policy: Autoriser les citations pour setting_default_sensitive: Toujours marquer les médias comme sensibles setting_delete_modal: Demander confirmation avant de supprimer un message setting_disable_hover_cards: Désactiver l'aperçu du profil au survol diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 53c4fbfba7..90218f8b8e 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -56,6 +56,7 @@ fr: scopes: À quelles APIs l’application sera autorisée à accéder. Si vous sélectionnez une permission générale, vous n’avez pas besoin de sélectionner les permissions plus précises. setting_aggregate_reblogs: Ne pas afficher les nouveaux partages pour les messages déjà récemment partagés (n’affecte que les partages futurs) setting_always_send_emails: Normalement, les notifications par courriel ne seront pas envoyées lorsque vous utilisez Mastodon activement + setting_default_quote_policy: Ce paramètre ne prendra effet que pour les messages créés avec la prochaine version de Mastodon, mais vous pouvez sélectionner votre préférence en avance. setting_default_sensitive: Les médias sensibles sont cachés par défaut et peuvent être révélés d’un simple clic setting_display_media_default: Masquer les médias marqués comme sensibles setting_display_media_hide_all: Toujours masquer les médias @@ -228,6 +229,7 @@ fr: setting_boost_modal: Demander confirmation avant de partager un message setting_default_language: Langue de publication setting_default_privacy: Confidentialité des messages + setting_default_quote_policy: Autoriser les citations pour setting_default_sensitive: Toujours marquer les médias comme sensibles setting_delete_modal: Demander confirmation avant de supprimer un message setting_disable_hover_cards: Désactiver l'aperçu du profil au survol diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 18c259f22c..1225e67b73 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -329,6 +329,7 @@ gl: follow_request: Enviar un correo cando alguén solicita seguirte mention: Enviar un correo cando alguén te menciona pending_account: Enviar un correo cando unha nova conta precisa revisión + quote: Citoute alguén reblog: Enviar un correo cando alguén promociona a tua mensaxe report: Enviouse unha nova denuncia software_updates: diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml index 78c168f6fd..69c9f00cc5 100644 --- a/config/locales/simple_form.he.yml +++ b/config/locales/simple_form.he.yml @@ -331,6 +331,7 @@ he: follow_request: מישהו.י ביקש.ה לעקוב אחריך mention: שליחת דוא"ל כשפונים אלייך pending_account: נדרשת סקירה של חשבון חדש + quote: שליחת דוא"ל כשמצטטים הודעה שלך reblog: שליחת דוא"ל כשמהדהדים הודעה שלך report: דו"ח חדש הוגש software_updates: diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index 7e148d706c..f34d9a5232 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -56,6 +56,7 @@ hu: scopes: Mely API-kat érheti el az alkalmazás. Ha felső szintű hatáskört választasz, nem kell egyesével kiválasztanod az alatta lévőeket. setting_aggregate_reblogs: Ne mutassunk megtolásokat olyan bejegyzésekhez, melyeket nemrég toltak meg (csak új megtolásokra lép életbe) setting_always_send_emails: Alapesetben nem küldünk e-mail-értesítéseket, ha aktívan használod a Mastodont + setting_default_quote_policy: A beállítás csak a Mastodon következő verziójával készült bejegyzésekre lesz hatással, de előre kiválaszthatod az előnyben részesített beállítást. setting_default_sensitive: A kényes médiatartalmat alapesetben elrejtjük, de egyetlen kattintással előhozható setting_display_media_default: Kényes tartalomnak jelölt média elrejtése setting_display_media_hide_all: Média elrejtése mindig @@ -328,6 +329,7 @@ hu: follow_request: E-mail küldése, amikor valaki követni szeretne téged mention: E-mail küldése, amikor valaki megemlít téged pending_account: E-mail küldése, ha új fiókot kell engedélyezni + quote: E-mail küldése, amikor valaki idéz téged reblog: Valaki megtolta a bejegyzésedet report: Új bejelentést küldtek be software_updates: diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index 49b3d6da35..fc559af7ba 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -329,6 +329,7 @@ is: follow_request: Einhver hefur beðið um að fylgjast með þér mention: Einhver minntist á þig pending_account: Nýr notandaaðgangur þarfnast yfirferðar + quote: Einhver vitnaði í þig reblog: Einhver endurbirti færsluna þína report: Ný kæra hefur verið send inn software_updates: diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 0dc781c74e..f349680a36 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -56,6 +56,7 @@ it: scopes: A quali API l'applicazione potrà avere accesso. Se selezionate un ambito di alto livello, non c'è bisogno di selezionare quelle singole. setting_aggregate_reblogs: Non mostrare nuove condivisioni per toot che sono stati condivisi di recente (ha effetto solo sulle nuove condivisioni) setting_always_send_emails: Normalmente le notifiche e-mail non vengono inviate quando si utilizza attivamente Mastodon + setting_default_quote_policy: Questa impostazione avrà effetto solo per i post creati con la prossima versione di Mastodon, ma puoi selezionare le tue preferenze in fase di preparazione. setting_default_sensitive: Media con contenuti sensibili sono nascosti in modo predefinito e possono essere rivelati con un click setting_display_media_default: Nascondi media segnati come sensibili setting_display_media_hide_all: Nascondi sempre tutti i media @@ -328,6 +329,7 @@ it: follow_request: Invia email quando qualcuno chiede di seguirti mention: Invia email quando qualcuno ti menziona pending_account: Invia e-mail quando un nuovo account richiede l'approvazione + quote: Qualcuno ti ha citato reblog: Qualcuno ha condiviso il tuo post report: Una nuova segnalazione è stata inviata software_updates: diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index 1f0a4de912..53307d7e11 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -329,6 +329,7 @@ nl: follow_request: Wanneer iemand jou wil volgen mention: Je bent door iemand vermeld pending_account: Wanneer een nieuw account moet worden beoordeeld + quote: Iemand heeft jou geciteerd reblog: Wanneer iemand jouw bericht heeft geboost report: Nieuwe rapportage is ingediend software_updates: diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index 2dffa39805..e403d34e60 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -329,6 +329,7 @@ tr: follow_request: Biri seni takip etmek istedi mention: Birisi senden bahsetti pending_account: Yeni hesabın incelenmesi gerekiyor + quote: Birisi senden alıntı yaptı reblog: Birisi gönderini boostladı report: Yeni rapor gönderildi software_updates: diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index 8a0e901281..1fb1c542f1 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -317,6 +317,7 @@ uk: follow_request: Коли хтось запитує дозвіл підписатися mention: Коли хтось згадує вас pending_account: Надсилати електронного листа, коли новий обліковий запис потребує розгляду + quote: Хтось процитував вас reblog: Коли хтось поширює ваш допис report: Нову скаргу надіслано software_updates: diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index b33c5f4ccc..b2e79420e8 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -328,6 +328,7 @@ vi: follow_request: Ai đó yêu cầu theo dõi bạn mention: Ai đó nhắc đến bạn pending_account: Phê duyệt tài khoản mới + quote: Ai đó trích dẫn bạn reblog: Ai đó đăng lại tút của bạn report: Ai đó gửi báo cáo software_updates: diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index 2b57647f9e..8fc48dfa98 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -328,6 +328,7 @@ zh-TW: follow_request: 當有使用者請求跟隨您時,傳送電子郵件通知 mention: 當有使用者於嘟文提及您時,傳送電子郵件通知 pending_account: 有新的帳號需要審核 + quote: 當有使用者引用您的嘟文時 reblog: 當有使用者轉嘟您的嘟文時,傳送電子郵件通知 report: 新回報已遞交 software_updates: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 595e4bfcbf..5b8dd33720 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -1596,7 +1596,7 @@ tr: password: parola sign_in_token: e-posta güvenlik kodu webauthn: güvenlik anahtarları - description_html: Eğer tanımadığınız bir faaliyet görüyorsanız, parolanızı değiştirmeyi ve iki aşamalı kimlik doğrulamayı etkinleştirmeyi düşünün. + description_html: Eğer tanımadığınız bir faaliyet görürseniz, parolanızı değiştirmeyi ve iki aşamalı kimlik doğrulamayı etkinleştirmeyi değerlendirin. empty: Kimlik doğrulama geçmişi yok failed_sign_in_html: "%{method} yöntemiyle %{ip} (%{browser}) adresinden başarısız oturum açma girişimi" successful_sign_in_html: "%{method} yöntemiyle %{ip} (%{browser}) adresinden başarılı oturum açma" @@ -1687,6 +1687,10 @@ tr: title: Yeni bahsetme poll: subject: Anket %{name} tarafından sonlandırıldı + quote: + body: "%{name} durumunuzu yeniden paylaştı:" + subject: "%{name} gönderini yeniden paylaştı" + title: Yeni alıntı reblog: body: "%{name} durumunuzu yeniden paylaştı:" subject: "%{name} durumunuzu yeniden paylaştı" diff --git a/config/locales/uk.yml b/config/locales/uk.yml index ad3926fbeb..ed0ce8d7b5 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -1633,6 +1633,8 @@ uk: title: Нова згадка poll: subject: Опитування від %{name} завершено + quote: + body: 'Ваш пост був процитований %{name}:' reblog: body: "%{name} поширює ваш допис:" subject: "%{name} поширив ваш статус" diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 32625d4657..aa2b47a890 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -1648,6 +1648,10 @@ vi: title: Lượt nhắc mới poll: subject: Vốt của %{name} đã kết thúc + quote: + body: 'Tút của bạn được trích dẫn bởi %{name}:' + subject: "%{name} vừa trích dẫn tút của bạn" + title: Trích dẫn mới reblog: body: Tút của bạn vừa được %{name} đăng lại subject: "%{name} vừa đăng lại tút của bạn" diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index fc29a3b531..dbc9c6b8a2 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1650,6 +1650,10 @@ zh-TW: title: 新的提及 poll: subject: 由 %{name} 發起的投票已結束 + quote: + body: 您的嘟文被 %{name} 引用: + subject: "%{name} 已引用您的嘟文" + title: 新引用 reblog: body: 您的嘟文被 %{name} 轉嘟: subject: "%{name} 已轉嘟您的嘟文" diff --git a/docker-compose.yml b/docker-compose.yml index 8fe42fa0c9..39823fc812 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -59,7 +59,7 @@ services: web: # You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes # build: . - image: ghcr.io/mastodon/mastodon:v4.4.2 + image: ghcr.io/mastodon/mastodon:v4.4.3 restart: always env_file: .env.production command: bundle exec puma -C config/puma.rb @@ -83,7 +83,7 @@ services: # build: # dockerfile: ./streaming/Dockerfile # context: . - image: ghcr.io/mastodon/mastodon-streaming:v4.4.2 + image: ghcr.io/mastodon/mastodon-streaming:v4.4.3 restart: always env_file: .env.production command: node ./streaming/index.js @@ -102,7 +102,7 @@ services: sidekiq: # You can uncomment the following line if you want to not use the prebuilt image, for example if you have local code changes # build: . - image: ghcr.io/mastodon/mastodon:v4.4.2 + image: ghcr.io/mastodon/mastodon:v4.4.3 restart: always env_file: .env.production command: bundle exec sidekiq diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 7cb5dec677..cb8ff3f462 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -17,7 +17,7 @@ module Mastodon end def default_prerelease - 'alpha.1' + 'alpha.2' end def prerelease diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index cd4181a00d..ea182a047f 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -219,16 +219,16 @@ RSpec.describe ApplicationController do it_behaves_like 'error response', 410 end - describe 'unprocessable_entity' do + describe 'unprocessable_content' do controller do - def route_unprocessable_entity - unprocessable_entity + def route_unprocessable_content + unprocessable_content end end subject do - routes.draw { get 'route_unprocessable_entity' => 'anonymous#route_unprocessable_entity' } - get 'route_unprocessable_entity' + routes.draw { get 'route_unprocessable_content' => 'anonymous#route_unprocessable_content' } + get 'route_unprocessable_content' end it_behaves_like 'error response', 422 diff --git a/spec/requests/api/v1/statuses/quotes_spec.rb b/spec/requests/api/v1/statuses/quotes_spec.rb index bbf697ce32..9456556ce9 100644 --- a/spec/requests/api/v1/statuses/quotes_spec.rb +++ b/spec/requests/api/v1/statuses/quotes_spec.rb @@ -108,6 +108,12 @@ RSpec.describe 'API V1 Statuses Quotes' do expect(response) .to have_http_status(200) + expect(response.content_type) + .to start_with('application/json') + expect(response.parsed_body) + .to match( + a_hash_including(id: quote.status.id.to_s, quote: a_hash_including(state: 'revoked')) + ) end end diff --git a/spec/requests/api/v2/search_spec.rb b/spec/requests/api/v2/search_spec.rb index 9c9f37e098..6beab4c8c7 100644 --- a/spec/requests/api/v2/search_spec.rb +++ b/spec/requests/api/v2/search_spec.rb @@ -98,7 +98,7 @@ RSpec.describe 'Search API' do context 'when search raises syntax error' do before { allow(Search).to receive(:new).and_raise(Mastodon::SyntaxError) } - it 'returns http unprocessable_entity' do + it 'returns http unprocessable_content' do get '/api/v2/search', headers: headers, params: params expect(response).to have_http_status(422)