mirror of
https://github.com/mastodon/mastodon.git
synced 2025-09-05 09:21:11 +00:00
Merge branch 'main' into feature/require-mfa-by-admin
This commit is contained in:
commit
7af438159a
22
CHANGELOG.md
22
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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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) =>
|
||||
|
|
|
@ -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')) {
|
||||
|
|
|
@ -143,6 +143,17 @@ class ColumnSettings extends PureComponent {
|
|||
</div>
|
||||
</section>
|
||||
|
||||
<section role='group' aria-labelledby='notifications-quote'>
|
||||
<h3 id='notifications-quote'><FormattedMessage id='notifications.column_settings.quote' defaultMessage='Quotes:' /></h3>
|
||||
|
||||
<div className='column-settings__row'>
|
||||
<SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'quote']} onChange={onChange} label={alertStr} />
|
||||
{showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'quote']} onChange={this.onPushChange} label={pushStr} />}
|
||||
<SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'quote']} onChange={onChange} label={showStr} />
|
||||
<SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'quote']} onChange={onChange} label={soundStr} />
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section role='group' aria-labelledby='notifications-poll'>
|
||||
<h3 id='notifications-poll'><FormattedMessage id='notifications.column_settings.poll' defaultMessage='Poll results:' /></h3>
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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} σε επισήμανε",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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ó",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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}",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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} 已提及您",
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}"'
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -1687,6 +1687,10 @@ el:
|
|||
title: Νέα επισήμανση
|
||||
poll:
|
||||
subject: Μια δημοσκόπηση του %{name} έληξε
|
||||
quote:
|
||||
body: 'Η ανάρτησή σου παρατέθηκε από %{name}:'
|
||||
subject: Ο/Η %{name} έκανε παράθεση της ανάρτησής σου
|
||||
title: Νέα παράθεση
|
||||
reblog:
|
||||
body: 'Η ανάρτησή σου ενισχύθηκε από τον/την %{name}:'
|
||||
subject: Ο/Η %{name} ενίσχυσε την ανάρτηση σου
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -1765,6 +1765,10 @@ he:
|
|||
title: אזכור חדש
|
||||
poll:
|
||||
subject: סקר מאת %{name} הסתיים
|
||||
quote:
|
||||
body: 'הודעתך צוטטה על ידי %{name}:'
|
||||
subject: "%{name} ציטט.ה את הודעתך"
|
||||
title: ציטוט חדש
|
||||
reblog:
|
||||
body: 'הודעתך הודהדה על ידי %{name}:'
|
||||
subject: הודעתך הודהדה על ידי%{name}
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -329,6 +329,7 @@ el:
|
|||
follow_request: Κάποιος ζήτησε να σε ακολουθήσει
|
||||
mention: Κάποιος σε επισήμανε
|
||||
pending_account: Νέος λογαριασμός χρειάζεται αναθεώρηση
|
||||
quote: Κάποιος σε παρέθεσε
|
||||
reblog: Κάποιος ενίσχυσε την ανάρτηση σου
|
||||
report: Υποβλήθηκε νέα αναφορά
|
||||
software_updates:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -331,6 +331,7 @@ he:
|
|||
follow_request: מישהו.י ביקש.ה לעקוב אחריך
|
||||
mention: שליחת דוא"ל כשפונים אלייך
|
||||
pending_account: נדרשת סקירה של חשבון חדש
|
||||
quote: שליחת דוא"ל כשמצטטים הודעה שלך
|
||||
reblog: שליחת דוא"ל כשמהדהדים הודעה שלך
|
||||
report: דו"ח חדש הוגש
|
||||
software_updates:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -317,6 +317,7 @@ uk:
|
|||
follow_request: Коли хтось запитує дозвіл підписатися
|
||||
mention: Коли хтось згадує вас
|
||||
pending_account: Надсилати електронного листа, коли новий обліковий запис потребує розгляду
|
||||
quote: Хтось процитував вас
|
||||
reblog: Коли хтось поширює ваш допис
|
||||
report: Нову скаргу надіслано
|
||||
software_updates:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -328,6 +328,7 @@ zh-TW:
|
|||
follow_request: 當有使用者請求跟隨您時,傳送電子郵件通知
|
||||
mention: 當有使用者於嘟文提及您時,傳送電子郵件通知
|
||||
pending_account: 有新的帳號需要審核
|
||||
quote: 當有使用者引用您的嘟文時
|
||||
reblog: 當有使用者轉嘟您的嘟文時,傳送電子郵件通知
|
||||
report: 新回報已遞交
|
||||
software_updates:
|
||||
|
|
|
@ -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ı"
|
||||
|
|
|
@ -1633,6 +1633,8 @@ uk:
|
|||
title: Нова згадка
|
||||
poll:
|
||||
subject: Опитування від %{name} завершено
|
||||
quote:
|
||||
body: 'Ваш пост був процитований %{name}:'
|
||||
reblog:
|
||||
body: "%{name} поширює ваш допис:"
|
||||
subject: "%{name} поширив ваш статус"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -1650,6 +1650,10 @@ zh-TW:
|
|||
title: 新的提及
|
||||
poll:
|
||||
subject: 由 %{name} 發起的投票已結束
|
||||
quote:
|
||||
body: 您的嘟文被 %{name} 引用:
|
||||
subject: "%{name} 已引用您的嘟文"
|
||||
title: 新引用
|
||||
reblog:
|
||||
body: 您的嘟文被 %{name} 轉嘟:
|
||||
subject: "%{name} 已轉嘟您的嘟文"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -17,7 +17,7 @@ module Mastodon
|
|||
end
|
||||
|
||||
def default_prerelease
|
||||
'alpha.1'
|
||||
'alpha.2'
|
||||
end
|
||||
|
||||
def prerelease
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue
Block a user