diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
index c6dcc4d46a..3aa0bbf7da 100644
--- a/.devcontainer/Dockerfile
+++ b/.devcontainer/Dockerfile
@@ -11,5 +11,8 @@ RUN apt-get update && \
export DEBIAN_FRONTEND=noninteractive && \
apt-get -y install --no-install-recommends libicu-dev libidn11-dev ffmpeg imagemagick libvips42 libpam-dev
+# Disable download prompt for Corepack
+ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0
+
# Move welcome message to where VS Code expects it
COPY .devcontainer/welcome-message.txt /usr/local/etc/vscode-dev-containers/first-run-notice.txt
diff --git a/.devcontainer/codespaces/devcontainer.json b/.devcontainer/codespaces/devcontainer.json
index 8acffec825..d2358657f6 100644
--- a/.devcontainer/codespaces/devcontainer.json
+++ b/.devcontainer/codespaces/devcontainer.json
@@ -39,7 +39,7 @@
},
"onCreateCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
- "postCreateCommand": "COREPACK_ENABLE_DOWNLOAD_PROMPT=0 bin/setup",
+ "postCreateCommand": "bin/setup",
"waitFor": "postCreateCommand",
"customizations": {
diff --git a/.ruby-version b/.ruby-version
index a0891f563f..fa7adc7ac7 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-3.3.4
+3.3.5
diff --git a/Gemfile.lock b/Gemfile.lock
index 461a2d43a2..a533b66241 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -100,17 +100,17 @@ GEM
attr_required (1.0.2)
awrence (1.2.1)
aws-eventstream (1.3.0)
- aws-partitions (1.969.0)
- aws-sdk-core (3.202.1)
+ aws-partitions (1.970.0)
+ aws-sdk-core (3.203.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.9)
jmespath (~> 1, >= 1.6.1)
- aws-sdk-kms (1.88.0)
- aws-sdk-core (~> 3, >= 3.201.0)
+ aws-sdk-kms (1.89.0)
+ aws-sdk-core (~> 3, >= 3.203.0)
aws-sigv4 (~> 1.5)
- aws-sdk-s3 (1.159.0)
- aws-sdk-core (~> 3, >= 3.201.0)
+ aws-sdk-s3 (1.160.0)
+ aws-sdk-core (~> 3, >= 3.203.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.9.1)
@@ -790,7 +790,7 @@ GEM
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
semantic_range (3.0.0)
- shoulda-matchers (6.3.1)
+ shoulda-matchers (6.4.0)
activesupport (>= 5.2.0)
sidekiq (6.5.12)
connection_pool (>= 2.2.5, < 3)
@@ -837,7 +837,7 @@ GEM
unicode-display_width (>= 1.1.1, < 3)
terrapin (1.0.1)
climate_control
- test-prof (1.4.1)
+ test-prof (1.4.2)
thor (1.3.2)
tilt (2.4.0)
timeout (0.4.1)
diff --git a/app/controllers/api/v2_alpha/notifications_controller.rb b/app/controllers/api/v2_alpha/notifications_controller.rb
index bd6979955a..e8aa0b9e49 100644
--- a/app/controllers/api/v2_alpha/notifications_controller.rb
+++ b/app/controllers/api/v2_alpha/notifications_controller.rb
@@ -77,6 +77,8 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
end
def load_grouped_notifications
+ return [] if @notifications.empty?
+
MastodonOTELTracer.in_span('Api::V2Alpha::NotificationsController#load_grouped_notifications') do
NotificationGroup.from_notifications(@notifications, pagination_range: (@notifications.last.id)..(@notifications.first.id), grouped_types: params[:grouped_types])
end
diff --git a/app/javascript/flavours/glitch/actions/notification_groups.ts b/app/javascript/flavours/glitch/actions/notification_groups.ts
index ba93ab776b..b0a54ad5b4 100644
--- a/app/javascript/flavours/glitch/actions/notification_groups.ts
+++ b/app/javascript/flavours/glitch/actions/notification_groups.ts
@@ -18,7 +18,7 @@ import {
selectSettingsNotificationsQuickFilterActive,
selectSettingsNotificationsShows,
} from 'flavours/glitch/selectors/settings';
-import type { AppDispatch } from 'flavours/glitch/store';
+import type { AppDispatch, RootState } from 'flavours/glitch/store';
import {
createAppAsyncThunk,
createDataLoadingThunk,
@@ -32,6 +32,14 @@ function excludeAllTypesExcept(filter: string) {
return allNotificationTypes.filter((item) => item !== filter);
}
+function getExcludedTypes(state: RootState) {
+ const activeFilter = selectSettingsNotificationsQuickFilterActive(state);
+
+ return activeFilter === 'all'
+ ? selectSettingsNotificationsExcludedTypes(state)
+ : excludeAllTypesExcept(activeFilter);
+}
+
function dispatchAssociatedRecords(
dispatch: AppDispatch,
notifications: ApiNotificationGroupJSON[] | ApiNotificationJSON[],
@@ -62,17 +70,8 @@ function dispatchAssociatedRecords(
export const fetchNotifications = createDataLoadingThunk(
'notificationGroups/fetch',
- async (_params, { getState }) => {
- const activeFilter =
- selectSettingsNotificationsQuickFilterActive(getState());
-
- return apiFetchNotifications({
- exclude_types:
- activeFilter === 'all'
- ? selectSettingsNotificationsExcludedTypes(getState())
- : excludeAllTypesExcept(activeFilter),
- });
- },
+ async (_params, { getState }) =>
+ apiFetchNotifications({ exclude_types: getExcludedTypes(getState()) }),
({ notifications, accounts, statuses }, { dispatch }) => {
dispatch(importFetchedAccounts(accounts));
dispatch(importFetchedStatuses(statuses));
@@ -92,9 +91,11 @@ export const fetchNotifications = createDataLoadingThunk(
export const fetchNotificationsGap = createDataLoadingThunk(
'notificationGroups/fetchGap',
- async (params: { gap: NotificationGap }) =>
- apiFetchNotifications({ max_id: params.gap.maxId }),
-
+ async (params: { gap: NotificationGap }, { getState }) =>
+ apiFetchNotifications({
+ max_id: params.gap.maxId,
+ exclude_types: getExcludedTypes(getState()),
+ }),
({ notifications, accounts, statuses }, { dispatch }) => {
dispatch(importFetchedAccounts(accounts));
dispatch(importFetchedStatuses(statuses));
@@ -109,6 +110,7 @@ export const pollRecentNotifications = createDataLoadingThunk(
async (_params, { getState }) => {
return apiFetchNotifications({
max_id: undefined,
+ exclude_types: getExcludedTypes(getState()),
// In slow mode, we don't want to include notifications that duplicate the already-displayed ones
since_id: usePendingItems
? getState().notificationGroups.groups.find(
@@ -183,7 +185,6 @@ export const setNotificationsFilter = createAppAsyncThunk(
path: ['notifications', 'quickFilter', 'active'],
value: filterType,
});
- // dispatch(expandNotifications({ forceLoad: true }));
void dispatch(fetchNotifications());
dispatch(saveSettings());
},
diff --git a/app/javascript/flavours/glitch/features/notifications_v2/components/notification_admin_report.tsx b/app/javascript/flavours/glitch/features/notifications_v2/components/notification_admin_report.tsx
index fc2d3149b3..3ab8729163 100644
--- a/app/javascript/flavours/glitch/features/notifications_v2/components/notification_admin_report.tsx
+++ b/app/javascript/flavours/glitch/features/notifications_v2/components/notification_admin_report.tsx
@@ -42,19 +42,11 @@ export const NotificationAdminReport: React.FC<{
if (!account || !targetAccount) return null;
+ const domain = account.acct.split('@')[1];
+
const values = {
- name: (
-
- ),
- target: (
-
- ),
+ name: {domain ?? `@${account.acct}`},
+ target: @{targetAccount.acct},
category: intl.formatMessage(messages[report.category]),
count: report.status_ids.length,
};
diff --git a/app/javascript/mastodon/actions/notification_groups.ts b/app/javascript/mastodon/actions/notification_groups.ts
index 51f83f1d24..2ee46500ab 100644
--- a/app/javascript/mastodon/actions/notification_groups.ts
+++ b/app/javascript/mastodon/actions/notification_groups.ts
@@ -18,7 +18,7 @@ import {
selectSettingsNotificationsQuickFilterActive,
selectSettingsNotificationsShows,
} from 'mastodon/selectors/settings';
-import type { AppDispatch } from 'mastodon/store';
+import type { AppDispatch, RootState } from 'mastodon/store';
import {
createAppAsyncThunk,
createDataLoadingThunk,
@@ -32,6 +32,14 @@ function excludeAllTypesExcept(filter: string) {
return allNotificationTypes.filter((item) => item !== filter);
}
+function getExcludedTypes(state: RootState) {
+ const activeFilter = selectSettingsNotificationsQuickFilterActive(state);
+
+ return activeFilter === 'all'
+ ? selectSettingsNotificationsExcludedTypes(state)
+ : excludeAllTypesExcept(activeFilter);
+}
+
function dispatchAssociatedRecords(
dispatch: AppDispatch,
notifications: ApiNotificationGroupJSON[] | ApiNotificationJSON[],
@@ -62,17 +70,8 @@ function dispatchAssociatedRecords(
export const fetchNotifications = createDataLoadingThunk(
'notificationGroups/fetch',
- async (_params, { getState }) => {
- const activeFilter =
- selectSettingsNotificationsQuickFilterActive(getState());
-
- return apiFetchNotifications({
- exclude_types:
- activeFilter === 'all'
- ? selectSettingsNotificationsExcludedTypes(getState())
- : excludeAllTypesExcept(activeFilter),
- });
- },
+ async (_params, { getState }) =>
+ apiFetchNotifications({ exclude_types: getExcludedTypes(getState()) }),
({ notifications, accounts, statuses }, { dispatch }) => {
dispatch(importFetchedAccounts(accounts));
dispatch(importFetchedStatuses(statuses));
@@ -92,9 +91,11 @@ export const fetchNotifications = createDataLoadingThunk(
export const fetchNotificationsGap = createDataLoadingThunk(
'notificationGroups/fetchGap',
- async (params: { gap: NotificationGap }) =>
- apiFetchNotifications({ max_id: params.gap.maxId }),
-
+ async (params: { gap: NotificationGap }, { getState }) =>
+ apiFetchNotifications({
+ max_id: params.gap.maxId,
+ exclude_types: getExcludedTypes(getState()),
+ }),
({ notifications, accounts, statuses }, { dispatch }) => {
dispatch(importFetchedAccounts(accounts));
dispatch(importFetchedStatuses(statuses));
@@ -109,6 +110,7 @@ export const pollRecentNotifications = createDataLoadingThunk(
async (_params, { getState }) => {
return apiFetchNotifications({
max_id: undefined,
+ exclude_types: getExcludedTypes(getState()),
// In slow mode, we don't want to include notifications that duplicate the already-displayed ones
since_id: usePendingItems
? getState().notificationGroups.groups.find(
@@ -183,7 +185,6 @@ export const setNotificationsFilter = createAppAsyncThunk(
path: ['notifications', 'quickFilter', 'active'],
value: filterType,
});
- // dispatch(expandNotifications({ forceLoad: true }));
void dispatch(fetchNotifications());
dispatch(saveSettings());
},
diff --git a/app/javascript/mastodon/features/notifications_v2/components/notification_admin_report.tsx b/app/javascript/mastodon/features/notifications_v2/components/notification_admin_report.tsx
index fda5798ae9..e41a6b2736 100644
--- a/app/javascript/mastodon/features/notifications_v2/components/notification_admin_report.tsx
+++ b/app/javascript/mastodon/features/notifications_v2/components/notification_admin_report.tsx
@@ -42,19 +42,11 @@ export const NotificationAdminReport: React.FC<{
if (!account || !targetAccount) return null;
+ const domain = account.acct.split('@')[1];
+
const values = {
- name: (
-
- ),
- target: (
-
- ),
+ name: {domain ?? `@${account.acct}`},
+ target: @{targetAccount.acct},
category: intl.formatMessage(messages[report.category]),
count: report.status_ids.length,
};
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index e925246bf7..aeff65485e 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -524,7 +524,9 @@
"notification.moderation_warning.action_silence": "Sua conta foi limitada.",
"notification.moderation_warning.action_suspend": "Sua conta foi suspensa.",
"notification.own_poll": "Sua enquete terminou",
+ "notification.poll": "Uma enquete que você votou terminou",
"notification.reblog": "{name} deu boost no teu toot",
+ "notification.reblog.name_and_others_with_link": "{name} e {count, plural, one {# outra} other {# outras}} impulsionaram a publicação",
"notification.relationships_severance_event": "Conexões perdidas com {name}",
"notification.relationships_severance_event.account_suspension": "Um administrador de {from} suspendeu {target}, o que significa que você não pode mais receber atualizações deles ou interagir com eles.",
"notification.relationships_severance_event.domain_block": "An admin from {from} has blocked {target}, including {followersCount} of your followers and {followingCount, plural, one {# account} other {# accounts}} you follow.",
@@ -533,16 +535,32 @@
"notification.status": "{name} acabou de tootar",
"notification.update": "{name} editou uma publicação",
"notification_requests.accept": "Aceitar",
+ "notification_requests.accept_multiple": "{count, plural, one {Aceite # pedido…} other {Aceite # pedidos…}}",
+ "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Aceite # pedido} other {Aceite # pedidos}}",
+ "notification_requests.confirm_accept_multiple.message": "Você está prestes a aceitar {count, plural, one {um pedido de notificação} other {# pedidos de notificação}}. Tem certeza de que deseja continuar?",
+ "notification_requests.confirm_accept_multiple.title": "Aceitar solicitações de notificação?",
+ "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Dispensar pedido} other {Dispensar pedidos}}",
+ "notification_requests.confirm_dismiss_multiple.message": "Você está prestes a descartar {count, plural, one {um pedido de notificação} other {# pedidos de notificação}}. Você não será capaz de acessar facilmente{count, plural, one {} other {}} novamente. Tem certeza de que deseja continuar?",
+ "notification_requests.confirm_dismiss_multiple.title": "Descartar solicitações de notificação?",
"notification_requests.dismiss": "Rejeitar",
+ "notification_requests.dismiss_multiple": "{count, plural, one {Dispensar # pedido…} other {Dispensar # pedidos…}}",
+ "notification_requests.edit_selection": "Editar",
+ "notification_requests.exit_selection": "Concluído",
+ "notification_requests.explainer_for_limited_account": "As notificações desta conta foram filtradas porque a conta foi limitada por um moderador.",
+ "notification_requests.explainer_for_limited_remote_account": "As notificações desta conta foram filtradas porque a conta ou o seu servidor foi limitado por um moderador.",
"notification_requests.maximize": "Maximizar",
+ "notification_requests.minimize_banner": "Minimizar banner de notificações filtradas",
"notification_requests.notifications_from": "Notificações de {name}",
"notification_requests.title": "Notificações filtradas",
+ "notification_requests.view": "Ver notificações",
"notifications.clear": "Limpar notificações",
"notifications.clear_confirmation": "Você tem certeza de que deseja limpar todas as suas notificações?",
"notifications.clear_title": "Limpar notificações?",
"notifications.column_settings.admin.report": "Novas denúncias:",
"notifications.column_settings.admin.sign_up": "Novas inscrições:",
"notifications.column_settings.alert": "Notificações no computador",
+ "notifications.column_settings.beta.category": "Recursos experimentais",
+ "notifications.column_settings.beta.grouping": "Agrupar notificações",
"notifications.column_settings.favourite": "Favoritos:",
"notifications.column_settings.filter_bar.advanced": "Exibir todas as categorias",
"notifications.column_settings.filter_bar.category": "Barra de filtro rápido",
@@ -574,6 +592,11 @@
"notifications.policy.accept": "Aceitar",
"notifications.policy.accept_hint": "Mostrar nas notificações",
"notifications.policy.drop": "Ignorar",
+ "notifications.policy.drop_hint": "Envie para o void, para nunca mais ser visto novamente",
+ "notifications.policy.filter": "Filtrar",
+ "notifications.policy.filter_hint": "Enviar para caixa de notificações filtradas",
+ "notifications.policy.filter_limited_accounts_hint": "Limitado pelos moderadores do servidor",
+ "notifications.policy.filter_limited_accounts_title": "Contas moderadas",
"notifications.policy.filter_new_accounts.hint": "Created within the past {days, plural, one {one day} other {# days}}",
"notifications.policy.filter_new_accounts_title": "Novas contas",
"notifications.policy.filter_not_followers_hint": "Including people who have been following you fewer than {days, plural, one {one day} other {# days}}",
@@ -582,6 +605,7 @@
"notifications.policy.filter_not_following_title": "Pessoas que você não segue",
"notifications.policy.filter_private_mentions_hint": "Filtrado, a menos que respondido em sua própria menção ou se você segue o remetente",
"notifications.policy.filter_private_mentions_title": "Menções privadas não solicitadas",
+ "notifications.policy.title": "Gerenciar notificações de…",
"notifications_permission_banner.enable": "Ativar notificações no computador",
"notifications_permission_banner.how_to_control": "Para receber notificações quando o Mastodon não estiver aberto, ative as notificações no computador. Você pode controlar precisamente quais tipos de interações geram notificações no computador através do botão {icon}.",
"notifications_permission_banner.title": "Nunca perca nada",
@@ -708,9 +732,13 @@
"report.unfollow_explanation": "Você está seguindo esta conta. Para não ver as publicações dela em sua página inicial, deixe de segui-la.",
"report_notification.attached_statuses": "{count, plural, one {{count} publicação anexada} other {{count} publicações anexadas}}",
"report_notification.categories.legal": "Legal",
+ "report_notification.categories.legal_sentence": "conteúdo ilegal",
"report_notification.categories.other": "Outro",
+ "report_notification.categories.other_sentence": "outro",
"report_notification.categories.spam": "Spam",
+ "report_notification.categories.spam_sentence": "spam",
"report_notification.categories.violation": "Violação de regra",
+ "report_notification.categories.violation_sentence": "violação de regra",
"report_notification.open": "Abrir denúncia",
"search.no_recent_searches": "Nenhuma busca recente",
"search.placeholder": "Pesquisar",
diff --git a/app/lib/annual_report/source.rb b/app/lib/annual_report/source.rb
index 1ccb622676..d56a1fcccf 100644
--- a/app/lib/annual_report/source.rb
+++ b/app/lib/annual_report/source.rb
@@ -11,6 +11,16 @@ class AnnualReport::Source
protected
def year_as_snowflake_range
- (Mastodon::Snowflake.id_at(DateTime.new(year, 1, 1))..Mastodon::Snowflake.id_at(DateTime.new(year, 12, 31)))
+ (beginning_snowflake_id..ending_snowflake_id)
+ end
+
+ private
+
+ def beginning_snowflake_id
+ Mastodon::Snowflake.id_at DateTime.new(year).beginning_of_year
+ end
+
+ def ending_snowflake_id
+ Mastodon::Snowflake.id_at DateTime.new(year).end_of_year
end
end
diff --git a/app/models/account_statuses_cleanup_policy.rb b/app/models/account_statuses_cleanup_policy.rb
index a102795446..e2c035284b 100644
--- a/app/models/account_statuses_cleanup_policy.rb
+++ b/app/models/account_statuses_cleanup_policy.rb
@@ -145,15 +145,15 @@ class AccountStatusesCleanupPolicy < ApplicationRecord
end
def without_self_fav_scope
- Status.where('NOT EXISTS (SELECT 1 FROM favourites fav WHERE fav.account_id = statuses.account_id AND fav.status_id = statuses.id)')
+ Status.where.not(self_status_reference_exists(Favourite))
end
def without_self_bookmark_scope
- Status.where('NOT EXISTS (SELECT 1 FROM bookmarks bookmark WHERE bookmark.account_id = statuses.account_id AND bookmark.status_id = statuses.id)')
+ Status.where.not(self_status_reference_exists(Bookmark))
end
def without_pinned_scope
- Status.where('NOT EXISTS (SELECT 1 FROM status_pins pin WHERE pin.account_id = statuses.account_id AND pin.status_id = statuses.id)')
+ Status.where.not(self_status_reference_exists(StatusPin))
end
def without_media_scope
@@ -174,4 +174,13 @@ class AccountStatusesCleanupPolicy < ApplicationRecord
def account_statuses
Status.where(account_id: account_id)
end
+
+ def self_status_reference_exists(model)
+ model
+ .where(model.arel_table[:account_id].eq Status.arel_table[:account_id])
+ .where(model.arel_table[:status_id].eq Status.arel_table[:id])
+ .select(1)
+ .arel
+ .exists
+ end
end
diff --git a/config/initializers/cors.rb b/config/initializers/cors.rb
index 37a818bf46..c530693a3f 100644
--- a/config/initializers/cors.rb
+++ b/config/initializers/cors.rb
@@ -22,6 +22,7 @@ Rails.application.config.middleware.insert_before 0, Rack::Cors do
expose: %w(Link X-RateLimit-Reset X-RateLimit-Limit X-RateLimit-Remaining X-Request-Id),
methods: %i(post put delete get patch options)
resource '/oauth/token', methods: [:post]
+ resource '/oauth/revoke', methods: [:post]
end
end
end
diff --git a/config/locales/activerecord.pt-BR.yml b/config/locales/activerecord.pt-BR.yml
index ae78026629..3199eb8e2d 100644
--- a/config/locales/activerecord.pt-BR.yml
+++ b/config/locales/activerecord.pt-BR.yml
@@ -32,7 +32,7 @@ pt-BR:
import:
attributes:
data:
- malformed: está incorreto
+ malformed: está malformado
status:
attributes:
reblog:
@@ -43,16 +43,16 @@ pt-BR:
blocked: usa provedor de e-mail não permitido
unreachable: parece não existir
role_id:
- elevated: não pode ser maior que seu cargo atual
+ elevated: não pode maior que sua função atual
user_role:
attributes:
permissions_as_keys:
- dangerous: incluir permissões que não são seguras para o cargo base
- elevated: não pode incluir permissões que o seu cargo atual não possui
- own_role: não pode ser alterado com seu cargo atual
+ dangerous: incluir permissões que não são seguras para a função base
+ elevated: não pode incluir permissões que a sua função atual não possui
+ own_role: não pode ser alterado com sua função atual
position:
- elevated: não pode ser maior do que seu cargo atual
- own_role: não pode ser alterado com seu cargo atual
+ elevated: não pode ser maior do que sua função atual
+ own_role: não pode ser alterado com sua função atual
webhook:
attributes:
events:
diff --git a/config/locales/devise.pt-BR.yml b/config/locales/devise.pt-BR.yml
index 4a7f346fab..8f504362de 100644
--- a/config/locales/devise.pt-BR.yml
+++ b/config/locales/devise.pt-BR.yml
@@ -14,7 +14,7 @@ pt-BR:
not_found_in_database: "%{authentication_keys} ou senha inválida."
omniauth_user_creation_failure: Erro ao criar uma conta para esta identidade.
pending: Sua conta está sendo revisada.
- timeout: Sua sessão expirou. Por favor, entre novamente para continuar.
+ timeout: Sua sessão expirou. Faça ‘login’ novamente para continuar.
unauthenticated: Você precisa entrar ou criar uma conta antes de continuar.
unconfirmed: Você precisa confirmar o seu endereço de e-mail antes de continuar.
mailer:
@@ -48,12 +48,12 @@ pt-BR:
subject: 'Mastodon: Instruções para alterar senha'
title: Redefinir senha
two_factor_disabled:
- explanation: O ‘login’ agora é possível usando apenas o endereço de e-mail e senha.
+ explanation: O ‘login’ agora é possível usando apenas o endereço eletrônico e senha.
subject: 'Mastodon: Autenticação de dois fatores desativada'
subtitle: A autenticação de dois fatores foi desativada.
title: 2FA desativada
two_factor_enabled:
- explanation: Será necessário um código gerado pelo aplicativo de autenticação para fazer login.
+ explanation: Será necessário um código gerado pelo aplicativo de autenticação TOTP para fazer login.
subject: 'Mastodon: Autenticação de dois fatores ativada'
subtitle: A autenticação de dois fatores foi ativada para sua conta.
title: 2FA ativada
@@ -75,11 +75,11 @@ pt-BR:
title: Uma das suas chaves de segurança foi excluída
webauthn_disabled:
explanation: A autenticação por chaves de segurança foi desativada para sua conta.
- extra: O login agora é possível usando o código gerado por um aplicativo de autenticação de dois fatores.
+ extra: Agora você pode fazer login usando apenas o código gerado pelo aplicativo de autenticação TOTP.
subject: 'Mastodon: Autenticação por chaves de segurança desativada'
title: Chaves de segurança desativadas
webauthn_enabled:
- explanation: Autenticação por chave de segurança foi ativada para sua conta.
+ explanation: A autenticação por chave de segurança foi ativada para sua conta.
extra: Sua chave de segurança agora pode ser usada para ‘login’.
subject: 'Mastodon: Autenticação por chaves de segurança ativada'
title: Chaves de segurança ativadas
diff --git a/config/locales/doorkeeper.pt-BR.yml b/config/locales/doorkeeper.pt-BR.yml
index 6b076e9081..c991850c68 100644
--- a/config/locales/doorkeeper.pt-BR.yml
+++ b/config/locales/doorkeeper.pt-BR.yml
@@ -60,8 +60,8 @@ pt-BR:
error:
title: Ocorreu um erro
new:
- prompt_html: O %{client_name} gostaria de ter permissão para acessar sua conta. É uma aplicação de terceiros. Se você não confia, então você não deve autorizá-lo.
- review_permissions: Revisar permissões
+ prompt_html: O %{client_name} gostaria de ter permissão para acessar sua conta. Trata-se de uma aplicação de terceiros. Se você não confia nesta aplicação, então você não deve autorizá-la.
+ review_permissions: Rever permissões
title: Autorização necessária
show:
title: Copie este código de autorização e cole no aplicativo.
@@ -72,8 +72,8 @@ pt-BR:
revoke: Você tem certeza?
index:
authorized_at: Autorizado em %{date}
- description_html: Estas são as aplicações que podem acessar sua conta usando a API. Se houver aplicativos que você não reconhece ou com mau funcionamento, você pode revogar seu acesso.
- last_used_at: Última vez usado em %{date}
+ description_html: Estas são as aplicações que podem acessar sua conta usando a API. Se houver aplicações que você não reconhece ou que não funcionem corretamente, você pode revogar os acessos.
+ last_used_at: Usado pela última vez em %{date}
never_used: Nunca usado
scopes: Permissões
superapp: Interno
@@ -83,6 +83,7 @@ pt-BR:
access_denied: O proprietário do recurso ou servidor de autorização recusou a solicitação.
credential_flow_not_configured: Fluxo das Credenciais de Senha do Proprietário do Recurso falhou porque Doorkeeper.configure.resource_owner_from_credentials não foi configurado.
invalid_client: Autenticação do cliente falhou por causa de um cliente desconhecido, nenhum cliente de autenticação foi incluído ou o método de autenticação não é suportado.
+ invalid_code_challenge_method: O método de desafio de código deve ser S256; o método 'plain' não é suportado.
invalid_grant: A garantia de autorização está inválida, expirou ou foi revogada, não é equivalente ao link de redirecionamento usado na solicitação de autorização ou foi emitido por outro cliente.
invalid_redirect_uri: O link de redirecionamento é inválido.
invalid_request:
@@ -114,23 +115,23 @@ pt-BR:
notice: Aplicativo revogado.
grouped_scopes:
access:
- read: Acesso somente para leitura
+ read: Acesso somente leitura
read/write: Acesso de leitura e escrita
- write: Acesso somente para escrita
+ write: Acesso somente escrita
title:
accounts: Contas
admin/accounts: Administração de contas
admin/all: Todas as funções administrativas
- admin/reports: Controle de denúncias
+ admin/reports: Administração de denúncias
all: Acesso total à sua conta Mastodon
blocks: Bloqueios
bookmarks: Salvos
conversations: Conversas
crypto: Criptografia de ponta a ponta
- favourites: Favoritas
+ favourites: Favoritos
filters: Filtros
- follow: Seguidores, Silenciados e Bloqueados
- follows: Seguidores
+ follow: Seguimentos, Silenciamentos e Bloqueios
+ follows: Seguidos
lists: Listas
media: Mídias anexadas
mutes: Silenciados
@@ -151,17 +152,17 @@ pt-BR:
admin:read: ler todos os dados no servidor
admin:read:accounts: ler informações sensíveis de todas as contas
admin:read:canonical_email_blocks: ler informações sensíveis de todos os blocos de e-mail canônicos
- admin:read:domain_allows: ler informações sensíveis de todos os domínios (URL) permitidos
- admin:read:domain_blocks: ler informações sensíveis de todos os domínios (URL) bloqueados
- admin:read:email_domain_blocks: ler informações sensíveis de todos os e-mails de domínios bloqueados
+ admin:read:domain_allows: ler informações sensíveis de todos os domínios permitidos
+ admin:read:domain_blocks: ler informações sensíveis de todos os domínios bloqueados
+ admin:read:email_domain_blocks: ler informações sensíveis de todos os domínios de e-mail bloqueados
admin:read:ip_blocks: ler informações sensíveis de todos os endereços de IP bloqueados
admin:read:reports: ler informações sensíveis de todas as denúncias e contas denunciadas
admin:write: alterar todos os dados no servidor
admin:write:accounts: executar ações de moderação em contas
admin:write:canonical_email_blocks: executar ações de moderação em blocos canônicos de e-mail
- admin:write:domain_allows: executar ações de moderação em domínios (URL) permitidos
- admin:write:domain_blocks: executar ações de moderação em domínios (URL) bloqueados
- admin:write:email_domain_blocks: executar ações de moderação em blocos de e-mail bloqueados
+ admin:write:domain_allows: executar ações de moderação em domínios permitidos
+ admin:write:domain_blocks: executar ações de moderação em domínios bloqueados
+ admin:write:email_domain_blocks: executar ações de moderação em domínios de e-mail bloqueados
admin:write:ip_blocks: executar ações de moderação em IPs bloqueados
admin:write:reports: executar ações de moderação em denúncias
crypto: usar criptografia de ponta-a-ponta
@@ -172,7 +173,7 @@ pt-BR:
read:accounts: ver informações das contas
read:blocks: ver seus bloqueados
read:bookmarks: ver seus salvos
- read:favourites: veja suas favoritas
+ read:favourites: veja seus favoritos
read:filters: ver seus filtros
read:follows: ver quem você segue
read:lists: ver suas listas
diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml
index 012d0d91ee..bcde9956c2 100644
--- a/config/locales/en-GB.yml
+++ b/config/locales/en-GB.yml
@@ -182,14 +182,17 @@ en-GB:
create_custom_emoji: Create Custom Emoji
create_domain_allow: Create Domain Allow
create_domain_block: Create Domain Block
+ create_email_domain_block: Create Email Domain Block
create_ip_block: Create IP rule
create_unavailable_domain: Create Unavailable Domain
create_user_role: Create Role
demote_user: Demote User
destroy_announcement: Delete Announcement
+ destroy_canonical_email_block: Delete Email Block
destroy_custom_emoji: Delete Custom Emoji
destroy_domain_allow: Delete Domain Allow
destroy_domain_block: Delete Domain Block
+ destroy_email_domain_block: Delete Email Domain Block
destroy_instance: Purge Domain
destroy_ip_block: Delete IP rule
destroy_status: Delete Post
@@ -197,8 +200,10 @@ en-GB:
destroy_user_role: Destroy Role
disable_2fa_user: Disable 2FA
disable_custom_emoji: Disable Custom Emoji
+ disable_sign_in_token_auth_user: Disable Email Token Authentication for User
disable_user: Disable User
enable_custom_emoji: Enable Custom Emoji
+ enable_sign_in_token_auth_user: Enable Email Token Authentication for User
enable_user: Enable User
memorialize_account: Memorialise Account
promote_user: Promote User
@@ -228,20 +233,26 @@ en-GB:
approve_appeal_html: "%{name} approved moderation decision appeal from %{target}"
approve_user_html: "%{name} approved sign-up from %{target}"
assigned_to_self_report_html: "%{name} assigned report %{target} to themselves"
+ change_email_user_html: "%{name} changed the email address of user %{target}"
change_role_user_html: "%{name} changed role of %{target}"
+ confirm_user_html: "%{name} confirmed email address of user %{target}"
create_account_warning_html: "%{name} sent a warning to %{target}"
create_announcement_html: "%{name} created new announcement %{target}"
+ create_canonical_email_block_html: "%{name} blocked email with the hash %{target}"
create_custom_emoji_html: "%{name} uploaded new emoji %{target}"
create_domain_allow_html: "%{name} allowed federation with domain %{target}"
create_domain_block_html: "%{name} blocked domain %{target}"
+ create_email_domain_block_html: "%{name} blocked email domain %{target}"
create_ip_block_html: "%{name} created rule for IP %{target}"
create_unavailable_domain_html: "%{name} stopped delivery to domain %{target}"
create_user_role_html: "%{name} created %{target} role"
demote_user_html: "%{name} demoted user %{target}"
destroy_announcement_html: "%{name} deleted announcement %{target}"
+ destroy_canonical_email_block_html: "%{name} unblocked email with the hash %{target}"
destroy_custom_emoji_html: "%{name} deleted emoji %{target}"
destroy_domain_allow_html: "%{name} disallowed federation with domain %{target}"
destroy_domain_block_html: "%{name} unblocked domain %{target}"
+ destroy_email_domain_block_html: "%{name} unblocked email domain %{target}"
destroy_instance_html: "%{name} purged domain %{target}"
destroy_ip_block_html: "%{name} deleted rule for IP %{target}"
destroy_status_html: "%{name} removed post by %{target}"
@@ -249,8 +260,10 @@ en-GB:
destroy_user_role_html: "%{name} deleted %{target} role"
disable_2fa_user_html: "%{name} disabled two factor requirement for user %{target}"
disable_custom_emoji_html: "%{name} disabled emoji %{target}"
+ disable_sign_in_token_auth_user_html: "%{name} disabled email token authentication for %{target}"
disable_user_html: "%{name} disabled login for user %{target}"
enable_custom_emoji_html: "%{name} enabled emoji %{target}"
+ enable_sign_in_token_auth_user_html: "%{name} enabled email token authentication for %{target}"
enable_user_html: "%{name} enabled login for user %{target}"
memorialize_account_html: "%{name} turned %{target}'s account into a memoriam page"
promote_user_html: "%{name} promoted user %{target}"
@@ -258,6 +271,7 @@ en-GB:
reject_user_html: "%{name} rejected sign-up from %{target}"
remove_avatar_user_html: "%{name} removed %{target}'s avatar"
reopen_report_html: "%{name} reopened report %{target}"
+ resend_user_html: "%{name} resent confirmation email for %{target}"
reset_password_user_html: "%{name} reset password of user %{target}"
resolve_report_html: "%{name} resolved report %{target}"
sensitive_account_html: "%{name} marked %{target}'s media as sensitive"
@@ -418,6 +432,7 @@ en-GB:
attempts_over_week:
one: "%{count} attempt over the last week"
other: "%{count} sign-up attempts over the last week"
+ created_msg: Successfully blocked email domain
delete: Delete
dns:
types:
@@ -426,8 +441,12 @@ en-GB:
new:
create: Add domain
resolve: Resolve domain
+ title: Block new email domain
+ no_email_domain_block_selected: No email domain blocks were changed as none were selected
not_permitted: Not permitted
+ resolved_dns_records_hint_html: The domain name resolves to the following MX domains, which are ultimately responsible for accepting email. Blocking an MX domain will block sign-ups from any email address which uses the same MX domain, even if the visible domain name is different. Be careful not to block major email providers.
resolved_through_html: Resolved through %{domain}
+ title: Blocked email domains
export_domain_allows:
new:
title: Import domain allows
@@ -581,6 +600,7 @@ en-GB:
resolve_description_html: No action will be taken against the reported account, no strike recorded, and the report will be closed.
silence_description_html: The account will be visible only to those who already follow it or manually look it up, severely limiting its reach. Can always be reverted. Closes all reports against this account.
suspend_description_html: The account and all its contents will be inaccessible and eventually deleted, and interacting with it will be impossible. Reversible within 30 days. Closes all reports against this account.
+ actions_description_html: Decide which action to take to resolve this report. If you take a punitive action against the reported account, an email notification will be sent to them, except when the Spam category is selected.
actions_description_remote_html: Decide which action to take to resolve this report. This will only affect how your server communicates with this remote account and handle its content.
add_to_report: Add more to report
already_suspended_badges:
@@ -645,6 +665,7 @@ en-GB:
delete_data_html: Delete @%{acct}'s profile and contents 30 days from now unless they get unsuspended in the meantime
preview_preamble_html: "@%{acct} will receive a warning with the following contents:"
record_strike_html: Record a strike against @%{acct} to help you escalate on future violations from this account
+ send_email_html: Send @%{acct} a warning email
warning_placeholder: Optional additional reasoning for the moderation action.
target_origin: Origin of reported account
title: Reports
@@ -684,6 +705,7 @@ en-GB:
manage_appeals: Manage Appeals
manage_appeals_description: Allows users to review appeals against moderation actions
manage_blocks: Manage Blocks
+ manage_blocks_description: Allows users to block email providers and IP addresses
manage_custom_emojis: Manage Custom Emojis
manage_custom_emojis_description: Allows users to manage custom emojis on the server
manage_federation: Manage Federation
diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml
index c38435c7fb..45c6baece9 100644
--- a/config/locales/fr-CA.yml
+++ b/config/locales/fr-CA.yml
@@ -58,6 +58,7 @@ fr-CA:
demote: Rétrograder
destroyed_msg: Les données de %{username} sont maintenant en file d’attente pour être supprimées imminemment
disable: Geler
+ disable_sign_in_token_auth: Désactiver le jeton d'authentification par e-mail
disable_two_factor_authentication: Désactiver l’authentification à deux facteurs
disabled: Gelé
display_name: Nom affiché
@@ -66,6 +67,7 @@ fr-CA:
email: Courriel
email_status: État du courriel
enable: Dégeler
+ enable_sign_in_token_auth: Activer le jeton d'authentification par e-mail
enabled: Activé
enabled_msg: Le compte de %{username} a été dégelé avec succès
followers: Abonné·e·s
@@ -195,8 +197,10 @@ fr-CA:
destroy_user_role: Détruire le rôle
disable_2fa_user: Désactiver l’A2F
disable_custom_emoji: Désactiver les émojis personnalisés
+ disable_sign_in_token_auth_user: Désactiver le jeton d'authentification par e-mail pour l'utilisateur
disable_user: Désactiver le compte
enable_custom_emoji: Activer les émojis personnalisées
+ enable_sign_in_token_auth_user: Activer le jeton d'authentification par e-mail pour l'utilisateur
enable_user: Activer l’utilisateur
memorialize_account: Ériger en mémorial
promote_user: Promouvoir l’utilisateur
@@ -219,18 +223,22 @@ fr-CA:
update_custom_emoji: Mettre à jour les émojis personnalisés
update_domain_block: Mettre à jour le blocage de domaine
update_ip_block: Mettre à jour la règle IP
+ update_report: Mettre à jour le rapport
update_status: Mettre à jour le message
update_user_role: Mettre à jour le rôle
actions:
approve_appeal_html: "%{name} a approuvé l'appel de la décision de modération émis par %{target}"
approve_user_html: "%{name} a approuvé l’inscription de %{target}"
assigned_to_self_report_html: "%{name} s’est assigné·e le signalement de %{target}"
+ change_email_user_html: "%{name} a changé l'adresse e-mail de l'utilisateur \n%{target}"
change_role_user_html: "%{name} a changé le rôle de %{target}"
+ confirm_user_html: "%{name} a confirmé l'adresse e-mail de l'utilisateur %{target}"
create_account_warning_html: "%{name} a envoyé un avertissement à %{target}"
create_announcement_html: "%{name} a créé une nouvelle annonce %{target}"
create_custom_emoji_html: "%{name} a téléversé un nouvel émoji %{target}"
create_domain_allow_html: "%{name} a autorisé la fédération avec le domaine %{target}"
create_domain_block_html: "%{name} a bloqué le domaine %{target}"
+ create_email_domain_block_html: "%{name} a bloqué le domaine d'e-mail %{target}"
create_ip_block_html: "%{name} a créé une règle pour l'IP %{target}"
create_unavailable_domain_html: "%{name} a arrêté la livraison vers le domaine %{target}"
create_user_role_html: "%{name} a créé le rôle %{target}"
@@ -239,6 +247,7 @@ fr-CA:
destroy_custom_emoji_html: "%{name} a supprimé l'émoji %{target}"
destroy_domain_allow_html: "%{name} a rejeté la fédération avec le domaine %{target}"
destroy_domain_block_html: "%{name} a débloqué le domaine %{target}"
+ destroy_email_domain_block_html: "%{name} a débloqué le domaine d'e-mail %{target}"
destroy_instance_html: "%{name} a purgé le domaine %{target}"
destroy_ip_block_html: "%{name} a supprimé la règle pour l'IP %{target}"
destroy_status_html: "%{name} a supprimé le message de %{target}"
@@ -276,6 +285,7 @@ fr-CA:
filter_by_action: Filtrer par action
filter_by_user: Filtrer par utilisateur·ice
title: Journal d’audit
+ unavailable_instance: "(nom de domaine indisponible)"
announcements:
destroyed_msg: Annonce supprimée avec succès !
edit:
@@ -413,6 +423,7 @@ fr-CA:
attempts_over_week:
one: "%{count} tentative au cours de la dernière semaine"
other: "%{count} tentatives au cours de la dernière semaine"
+ created_msg: Domaine d'e-mail bloqué avec succès
delete: Supprimer
dns:
types:
@@ -914,6 +925,10 @@ fr-CA:
statuses:
allow: Autoriser le message
allow_account: Autoriser l'auteur·rice
+ confirm_allow: Êtes-vous sûr de vouloir autoriser les statuts sélectionnés ?
+ confirm_allow_account: Êtes-vous sûr de vouloir autoriser les comptes sélectionnés ?
+ confirm_disallow: Êtes-vous sûr de vouloir rejeter les statuts sélectionnés ?
+ confirm_disallow_account: Êtes-vous sûr de vouloir rejeter les comptes sélectionnés ?
description_html: Voici les messages dont votre serveur a connaissance qui sont beaucoup partagés et mis en favoris en ce moment. Cela peut aider vos utilisateur⋅rice⋅s, néophytes comme aguerri⋅e⋅s, à trouver plus de comptes à suivre. Aucun message n'est publiquement affiché tant que vous n'en avez pas approuvé l'auteur⋅rice, et seulement si icellui permet que son compte soit suggéré aux autres. Vous pouvez également autoriser ou rejeter les messages individuellement.
disallow: Proscrire le message
disallow_account: Proscrire l'auteur·rice
@@ -1896,6 +1911,7 @@ fr-CA:
invalid_otp_token: Le code d’authentification à deux facteurs est invalide
otp_lost_help_html: Si vous perdez accès aux deux, vous pouvez contacter %{email}
rate_limited: Trop de tentatives d'authentification, réessayez plus tard.
+ seamless_external_login: Vous êtes connectés sur un service externe, de fait les paramètres de mot de passe et d'e-mail ne sont pas disponibles.
signed_in_as: 'Connecté·e en tant que :'
verification:
extra_instructions_html: Astuce: Le lien sur votre site Web peut être invisible. La partie importante est rel="me"
qui évite d’autres liens provenant de contenu générés par des utilisateurs tiers d'être pris en compte. Vous pouvez même utiliser une balise link
dans l’en-tête de la page au lieu de a
, mais le HTML doit être accessible sans avoir besoin d’exécuter du JavaScript.
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index c3fa237759..4434a16531 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -58,6 +58,7 @@ fr:
demote: Rétrograder
destroyed_msg: Les données de %{username} sont maintenant en file d’attente pour être supprimées imminemment
disable: Geler
+ disable_sign_in_token_auth: Désactiver le jeton d'authentification par e-mail
disable_two_factor_authentication: Désactiver l’authentification à deux facteurs
disabled: Gelé
display_name: Nom affiché
@@ -66,6 +67,7 @@ fr:
email: Adresse de courriel
email_status: État du courriel
enable: Dégeler
+ enable_sign_in_token_auth: Activer le jeton d'authentification par e-mail
enabled: Activé
enabled_msg: Le compte de %{username} a été dégelé avec succès
followers: Abonné·e·s
@@ -195,8 +197,10 @@ fr:
destroy_user_role: Détruire le rôle
disable_2fa_user: Désactiver l’A2F
disable_custom_emoji: Désactiver les émojis personnalisés
+ disable_sign_in_token_auth_user: Désactiver le jeton d'authentification par e-mail pour l'utilisateur
disable_user: Désactiver le compte
enable_custom_emoji: Activer les émojis personnalisées
+ enable_sign_in_token_auth_user: Activer le jeton d'authentification par e-mail pour l'utilisateur
enable_user: Activer le compte
memorialize_account: Ériger en mémorial
promote_user: Promouvoir le compte
@@ -219,18 +223,22 @@ fr:
update_custom_emoji: Mettre à jour les émojis personnalisés
update_domain_block: Mettre à jour le blocage de domaine
update_ip_block: Mettre à jour la règle IP
+ update_report: Mettre à jour le rapport
update_status: Mettre à jour le message
update_user_role: Mettre à jour le rôle
actions:
approve_appeal_html: "%{name} a approuvé l'appel de la décision de modération émis par %{target}"
approve_user_html: "%{name} a approuvé l’inscription de %{target}"
assigned_to_self_report_html: "%{name} s’est assigné·e le signalement de %{target}"
+ change_email_user_html: "%{name} a changé l'adresse e-mail de l'utilisateur \n%{target}"
change_role_user_html: "%{name} a changé le rôle de %{target}"
+ confirm_user_html: "%{name} a confirmé l'adresse e-mail de l'utilisateur %{target}"
create_account_warning_html: "%{name} a envoyé un avertissement à %{target}"
create_announcement_html: "%{name} a créé une nouvelle annonce %{target}"
create_custom_emoji_html: "%{name} a téléversé un nouvel émoji %{target}"
create_domain_allow_html: "%{name} a autorisé la fédération avec le domaine %{target}"
create_domain_block_html: "%{name} a bloqué le domaine %{target}"
+ create_email_domain_block_html: "%{name} a bloqué le domaine d'e-mail %{target}"
create_ip_block_html: "%{name} a créé une règle pour l'IP %{target}"
create_unavailable_domain_html: "%{name} a arrêté la livraison vers le domaine %{target}"
create_user_role_html: "%{name} a créé le rôle %{target}"
@@ -239,6 +247,7 @@ fr:
destroy_custom_emoji_html: "%{name} a supprimé l'émoji %{target}"
destroy_domain_allow_html: "%{name} a rejeté la fédération avec le domaine %{target}"
destroy_domain_block_html: "%{name} a débloqué le domaine %{target}"
+ destroy_email_domain_block_html: "%{name} a débloqué le domaine d'e-mail %{target}"
destroy_instance_html: "%{name} a purgé le domaine %{target}"
destroy_ip_block_html: "%{name} a supprimé la règle pour l'IP %{target}"
destroy_status_html: "%{name} a supprimé le message de %{target}"
@@ -276,6 +285,7 @@ fr:
filter_by_action: Filtrer par action
filter_by_user: Filtrer par utilisateur·ice
title: Journal d’audit
+ unavailable_instance: "(nom de domaine indisponible)"
announcements:
destroyed_msg: Annonce supprimée avec succès !
edit:
@@ -413,6 +423,7 @@ fr:
attempts_over_week:
one: "%{count} tentative au cours de la dernière semaine"
other: "%{count} tentatives au cours de la dernière semaine"
+ created_msg: Domaine d'e-mail bloqué avec succès
delete: Supprimer
dns:
types:
@@ -914,6 +925,10 @@ fr:
statuses:
allow: Autoriser le message
allow_account: Autoriser l'auteur·rice
+ confirm_allow: Êtes-vous sûr de vouloir autoriser les statuts sélectionnés ?
+ confirm_allow_account: Êtes-vous sûr de vouloir autoriser les comptes sélectionnés ?
+ confirm_disallow: Êtes-vous sûr de vouloir rejeter les statuts sélectionnés ?
+ confirm_disallow_account: Êtes-vous sûr de vouloir rejeter les comptes sélectionnés ?
description_html: Voici les messages dont votre serveur a connaissance qui sont beaucoup partagés et mis en favoris en ce moment. Cela peut aider vos utilisateur⋅rice⋅s, néophytes comme aguerri⋅e⋅s, à trouver plus de comptes à suivre. Aucun message n'est publiquement affiché tant que vous n'en avez pas approuvé l'auteur⋅rice, et seulement si icellui permet que son compte soit suggéré aux autres. Vous pouvez également autoriser ou rejeter les messages individuellement.
disallow: Proscrire le message
disallow_account: Proscrire l'auteur·rice
@@ -1896,6 +1911,7 @@ fr:
invalid_otp_token: Le code d’authentification à deux facteurs est invalide
otp_lost_help_html: Si vous perdez accès aux deux, vous pouvez contacter %{email}
rate_limited: Trop de tentatives d'authentification, réessayez plus tard.
+ seamless_external_login: Vous êtes connectés sur un service externe, de fait les paramètres de mot de passe et d'e-mail ne sont pas disponibles.
signed_in_as: 'Connecté·e en tant que :'
verification:
extra_instructions_html: Astuce : Le lien sur votre site Web peut être invisible. La partie importante est rel="me"
qui évite que soient pris en compte d’autres liens provenant de contenu générés par des utilisateurs tiers. Vous pouvez même utiliser une balise link
dans l’en-tête de la page au lieu de a
, mais le HTML doit être accessible sans avoir besoin d’exécuter du JavaScript.
diff --git a/config/locales/he.yml b/config/locales/he.yml
index 72b4156dbf..47ec5cafbe 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -1506,6 +1506,7 @@ he:
media_attachments:
validations:
images_and_video: לא ניתן להוסיף וידאו להודעה שכבר מכילה תמונות
+ not_found: קובץ %{ids} לא נמצא, או שהוצמד כבר להודעה אחרת
not_ready: לא ניתן להצמיד קבצים שהעלאתם לא הסתיימה. נסה/י שוב בעוד רגע!
too_many: לא ניתן להוסיף יותר מארבעה קבצים
migrations:
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index cdddc79b0e..2bf138d9be 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -1454,6 +1454,7 @@ hu:
media_attachments:
validations:
images_and_video: Nem csatolhatsz videót olyan bejegyzéshez, amelyhez már csatoltál képet
+ not_found: A(z) %{ids} média nem található, vagy már egy másik bejegyzéshez lett csatolva
not_ready: Nem lehet olyan fájlt csatolni, melynek még nem fejeződött be a feldolgozása. Próbáld kicsit később!
too_many: Maximum négy fájlt csatolhatsz
migrations:
diff --git a/config/locales/is.yml b/config/locales/is.yml
index 41347d44bb..2c73dbae74 100644
--- a/config/locales/is.yml
+++ b/config/locales/is.yml
@@ -1458,6 +1458,7 @@ is:
media_attachments:
validations:
images_and_video: Ekki er hægt að hengja myndskeið við færslu sem þegar inniheldur myndir
+ not_found: Myndefnið %{ids} fannst ekki eða er þegar hengt við aðra færslu
not_ready: Ekki er hægt að hengja við skrár sem ekki er búið að vinna til fulls. Prófaðu aftur eftir augnablik!
too_many: Ekki er hægt að hengja við fleiri en 4 skrár
migrations:
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 9632a3027b..ef3775d4df 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -830,7 +830,7 @@ ko:
sensitive: "%{name} 님이 %{target}의 계정을 민감함으로 표시했습니다"
silence: "%{name} 님이 %{target}의 계정을 제한시켰습니다"
suspend: "%{name} 님이 %{target}의 계정을 정지시켰습니다"
- appeal_approved: 이의제기됨
+ appeal_approved: 이의 받아들여짐
appeal_pending: 이의제기 대기중
appeal_rejected: 이의 제기 거절됨
system_checks:
diff --git a/config/locales/nn.yml b/config/locales/nn.yml
index 90b3d216c3..f301b8ca98 100644
--- a/config/locales/nn.yml
+++ b/config/locales/nn.yml
@@ -1454,6 +1454,7 @@ nn:
media_attachments:
validations:
images_and_video: Kan ikkje leggja ved video til status som allereie inneheld bilete
+ not_found: Media %{ids} vart ikkje funne eller er allereie kopla til eit anna innlegg
not_ready: Kan ikke legge til filer som ikke er ferdigbehandlet. Prøv igjen om et øyeblikk!
too_many: Kan ikkje leggja til meir enn 4 filer
migrations:
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 418d3d059e..579dbd967f 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -4,7 +4,7 @@ pt-BR:
about_mastodon_html: 'A rede social do futuro: Sem anúncios, sem vigilância corporativa, com design ético e muita descentralização! Possua seus próprios dados com o Mastodon!'
contact_missing: Não definido
contact_unavailable: Não disponível
- hosted_on: Servidor Mastodon em %{domain}
+ hosted_on: Mastodon hospedado em %{domain}
title: Sobre
accounts:
follow: Seguir
@@ -31,6 +31,7 @@ pt-BR:
created_msg: Nota de moderação criada!
destroyed_msg: Nota de moderação excluída!
accounts:
+ add_email_domain_block: Bloquear domínio de email
approve: Aprovar
approved_msg: O registro de %{username} foi aprovado
are_you_sure: Você tem certeza?
@@ -44,10 +45,10 @@ pt-BR:
submit: Alterar e-mail
title: Alterar e-mail para %{username}
change_role:
- changed_msg: Cargo alterado!
- label: Alterar cargo
- no_role: Sem cargo
- title: Alterar cargo para %{username}
+ changed_msg: Função alterada com sucesso!
+ label: Alterar função
+ no_role: Nenhuma função
+ title: Alterar função para %{username}
confirm: Confirmar
confirmed: Confirmado
confirming: Confirmando
@@ -57,6 +58,7 @@ pt-BR:
demote: Rebaixar
destroyed_msg: Os dados de %{username} estão na fila para serem excluídos em breve
disable: Congelar
+ disable_sign_in_token_auth: Desativar autenticação via token por email
disable_two_factor_authentication: Desativar autenticação de dois fatores
disabled: Congelada
display_name: Nome de exibição
@@ -65,6 +67,7 @@ pt-BR:
email: E-mail
email_status: Estado do e-mail
enable: Descongelar
+ enable_sign_in_token_auth: Ativar autenticação via token por email
enabled: Ativada
enabled_msg: A conta de %{username} foi descongelada
followers: Seguidores
@@ -129,6 +132,7 @@ pt-BR:
resubscribe: Reinscrever-se
role: Cargo
search: Buscar
+ search_same_email_domain: Outros usuários com o mesmo domínio de e-mail
search_same_ip: Outros usuários com o mesmo IP
security: Segurança
security_measures:
@@ -169,21 +173,26 @@ pt-BR:
approve_appeal: Aprovar revisão
approve_user: Aprovar usuário
assigned_to_self_report: Atribuir denúncia
+ change_email_user: Alterar o Email para o usuário
change_role_user: Alterar cargo do usuário
confirm_user: Confirmar usuário
create_account_warning: Criar aviso
create_announcement: Criar anúncio
+ create_canonical_email_block: Criar bloqueio de Email
create_custom_emoji: Criar emoji personalizado
create_domain_allow: Permitir domínio
create_domain_block: Bloquear domínio
+ create_email_domain_block: Criar Bloqueio de Domínio de Email
create_ip_block: Criar regra de IP
create_unavailable_domain: Criar domínio indisponível
create_user_role: Criar cargo
demote_user: Rebaixar usuário
destroy_announcement: Excluir anúncio
+ destroy_canonical_email_block: Deletar bloqueio de Email
destroy_custom_emoji: Excluir emoji personalizado
destroy_domain_allow: Excluir domínio permitido
destroy_domain_block: Desbloquear domínio
+ destroy_email_domain_block: Deletar bloqueio de domínio Email
destroy_instance: Limpar domínio
destroy_ip_block: Excluir regra de IP
destroy_status: Excluir publicação
@@ -191,8 +200,10 @@ pt-BR:
destroy_user_role: Destruir cargo
disable_2fa_user: Desativar autenticação de dois fatores
disable_custom_emoji: Desativar emoji personalizado
+ disable_sign_in_token_auth_user: Desativar autenticação via Token de Email para Usuário
disable_user: Desativar usuário
enable_custom_emoji: Ativar emoji personalizado
+ enable_sign_in_token_auth_user: Desativar autenticação via token por e-mail para o usuário
enable_user: Ativar usuário
memorialize_account: Converter conta em memorial
promote_user: Promover usuário
@@ -215,6 +226,7 @@ pt-BR:
update_custom_emoji: Editar Emoji Personalizado
update_domain_block: Atualizar bloqueio de domínio
update_ip_block: Atualizar regra de IP
+ update_report: Atualizar Relatório
update_status: Editar Status
update_user_role: Atualizar cargo
actions:
@@ -223,19 +235,24 @@ pt-BR:
assigned_to_self_report_html: "%{name} atribuiu a denúncia %{target} para si"
change_email_user_html: "%{name} alterou o endereço de e-mail do usuário %{target}"
change_role_user_html: "%{name} alterou o cargo de %{target}"
+ confirm_user_html: "%{name} confirmou o endereço de e-mail do usuário %{target}"
create_account_warning_html: "%{name} enviou um aviso para %{target}"
create_announcement_html: "%{name} criou o novo anúncio %{target}"
+ create_canonical_email_block_html: "%{name} bloqueou o endereço de e-mail com o hash %{target}"
create_custom_emoji_html: "%{name} enviou o novo emoji %{target}"
create_domain_allow_html: "%{name} permitiu federação com domínio %{target}"
create_domain_block_html: "%{name} bloqueou o domínio %{target}"
+ create_email_domain_block_html: "%{name} bloqueou o domínio de e-mail %{target}"
create_ip_block_html: "%{name} criou a regra para o IP %{target}"
create_unavailable_domain_html: "%{name} parou a entrega ao domínio %{target}"
create_user_role_html: "%{name} criou o cargo %{target}"
demote_user_html: "%{name} rebaixou o usuário %{target}"
destroy_announcement_html: "%{name} excluiu o anúncio %{target}"
+ destroy_canonical_email_block_html: "%{name} desbloqueou o endereço e-mail com o hash %{target}"
destroy_custom_emoji_html: "%{name} apagou o emoji %{target}"
destroy_domain_allow_html: "%{name} bloqueou federação com domínio %{target}"
destroy_domain_block_html: "%{name} desbloqueou o domínio %{target}"
+ destroy_email_domain_block_html: "%{name} desbloqueou o domínio de e-mail %{target}"
destroy_instance_html: "%{name} limpou o domínio %{target}"
destroy_ip_block_html: "%{name} excluiu a regra para o IP %{target}"
destroy_status_html: "%{name} removeu a publicação de %{target}"
@@ -243,8 +260,10 @@ pt-BR:
destroy_user_role_html: "%{name} excluiu o cargo %{target}"
disable_2fa_user_html: "%{name} desativou a exigência da autenticação de dois fatores para o usuário %{target}"
disable_custom_emoji_html: "%{name} desativou o emoji %{target}"
+ disable_sign_in_token_auth_user_html: "%{name} desativou a autenticação via token por e-mail para %{target}"
disable_user_html: "%{name} desativou o login para %{target}"
enable_custom_emoji_html: "%{name} ativou o emoji %{target}"
+ enable_sign_in_token_auth_user_html: "%{name} ativou a autenticação via token por e-mail para %{target}"
enable_user_html: "%{name} ativou o login para %{target}"
memorialize_account_html: "%{name} transformou a conta de %{target} em um memorial"
promote_user_html: "%{name} promoveu o usuário %{target}"
@@ -252,6 +271,7 @@ pt-BR:
reject_user_html: "%{name} rejeitou a inscrição de %{target}"
remove_avatar_user_html: "%{name} removeu a imagem de perfil de %{target}"
reopen_report_html: "%{name} reabriu a denúncia %{target}"
+ resend_user_html: "%{name} reenviou um e-mail de confirmação para %{target}"
reset_password_user_html: "%{name} redefiniu a senha de %{target}"
resolve_report_html: "%{name} resolveu a denúncia %{target}"
sensitive_account_html: "%{name} marcou a mídia de %{target} como sensível"
@@ -412,6 +432,7 @@ pt-BR:
attempts_over_week:
one: "%{count} tentativa na última semana"
other: "%{count} tentativas de inscrição na última semana"
+ created_msg: Domínio de e-mail bloqueado com sucesso
delete: Excluir
dns:
types:
@@ -420,8 +441,11 @@ pt-BR:
new:
create: Adicionar domínio
resolve: Resolver domínio
+ title: Bloquear novo domínio de e-mail
not_permitted: Não permitido
+ resolved_dns_records_hint_html: O nome de domínio é associado aos seguintes domínios MX, que são responsáveis por aceitar e-mails. Ao bloquear um domínio MX, você bloqueará as inscrições de qualquer endereço de e-mail que use o mesmo domínio MX, mesmo que o nome de domínio visível seja diferente. Tenha cuidado para não bloquear os principais provedores de e-mail.
resolved_through_html: Resolvido através de %{domain}
+ title: Domínios de e-mail bloqueados
export_domain_allows:
new:
title: Importar domínios permitidos
@@ -446,6 +470,9 @@ pt-BR:
title: Recomendações de contas
unsuppress: Restaurar recomendação de contas
instances:
+ audit_log:
+ title: Logs de auditoria recentes
+ view_all: Ver todos os logs de auditoria
availability:
description_html:
one: Se a entrega ao domínio falhar em %{count} dia sem sucesso, nenhuma tentativa de entrega será feita a menos que uma entrega do domínio seja recebida.
@@ -572,6 +599,7 @@ pt-BR:
resolve_description_html: Nenhuma ação será tomada contra a conta denunciada, nenhuma violação será guardada e a denúncia será encerrada.
silence_description_html: A conta ficará visível apenas para aqueles que já a seguem ou que a procuram manualmente, limitando severamente seu alcance. Pode ser revertido a qualquer momento. Fecha todas as denúncias desta conta.
suspend_description_html: A conta e todo o seu conteúdo ficará inacessível e, eventualmente, excluído e interagir com ela será impossível. Reversível dentro de 30 dias. Encerra todas as denúncias contra esta conta.
+ actions_description_html: Decida qual ação tomar para responder a essa denúncia. Se você tomar uma ação punitiva contra a conta denunciada, uma notificação por e-mail será enviada ao usuário, exceto quando a categoria Spam for selecionada.
actions_description_remote_html: Decida quais medidas tomará para resolver esta denúncia. Isso só afetará como seu servidor se comunica com esta conta remota e manipula seu conteúdo.
add_to_report: Adicionar mais à denúncia
already_suspended_badges:
@@ -613,6 +641,7 @@ pt-BR:
report: 'Denúncia #%{id}'
reported_account: Conta denunciada
reported_by: Denunciada por
+ reported_with_application: Denunciado pelo aplicativo
resolved: Resolvido
resolved_msg: Denúncia resolvida!
skip_to_actions: Pular para ações
@@ -635,6 +664,7 @@ pt-BR:
delete_data_html: Exclua o perfil e o conteúdo de @%{acct} daqui a 30 dias, a menos que a suspensão seja desfeita nesse meio tempo
preview_preamble_html: "@%{acct} receberá um aviso com o seguinte conteúdo:"
record_strike_html: Registre uma ação contra @%{acct} para te ajudar em futuras violações desta conta
+ send_email_html: Enviar @%{acct} um e-mail de alerta
warning_placeholder: Argumentos adicionais para a ação de moderação.
target_origin: Origem da conta denunciada
title: Denúncias
@@ -674,6 +704,7 @@ pt-BR:
manage_appeals: Gerenciar revisões
manage_appeals_description: Permite aos usuários visualizar as revisões das decisões da moderação
manage_blocks: Gerenciar Bloqueios
+ manage_blocks_description: Permite aos usuários bloquear provedores de e-mail e endereços IP
manage_custom_emojis: Gerenciar Emojis Personalizados
manage_custom_emojis_description: Permite aos usuários gerenciar emojis personalizados no servidor
manage_federation: Gerenciar Federação
@@ -691,6 +722,7 @@ pt-BR:
manage_taxonomies: Gerenciar taxonomias
manage_taxonomies_description: Permite aos usuários rever o conteúdo em alta e atualizar as configurações de hashtag
manage_user_access: Gerenciar Acesso de Usuário
+ manage_user_access_description: Permite aos usuários desativar a autenticação de dois fatores de outros usuários, alterar seu endereço de e-mail e redefinir sua senha
manage_users: Gerenciar usuários
manage_users_description: Permite aos usuários ver os detalhes de outros usuários e executar ações de moderação contra eles
manage_webhooks: Gerenciar Webhooks
@@ -765,6 +797,7 @@ pt-BR:
destroyed_msg: Upload do site excluído com sucesso!
software_updates:
critical_update: Crítico — por favor, atualize rapidamente
+ description: É recomendável que você mantenha a instalação do Mastodon atualizada para se beneficiar das correções e das novas funcionalidades. Além disso, às vezes é imprescindível atualizar o Mastodon rapidamente para evitar problemas de segurança. Por esses motivos, o Mastodon verifica se há atualizações a cada 30 minutos e notificará você de acordo com as suas preferências de notificação por e-mail.
documentation_link: Saiba mais
release_notes: Notas de lançamento
title: Atualizações disponíveis
@@ -851,16 +884,39 @@ pt-BR:
action: Confira aqui para mais informações
message_html: "Seu armazenamento de objetos está mal configurado. A privacidade de seus usuários está em risco."
tags:
+ moderation:
+ not_trendable: Fora de moda
+ not_usable: Não utilizável
+ pending_review: Revisão pendente
+ review_requested: Revisão solicitada
+ reviewed: Revisado
+ title: Status
+ trendable: Tendências
+ unreviewed: Não revisado
+ usable: Utilizável
+ name: Nome
+ newest: Mais recente
+ oldest: Mais antigos
+ open: Visualizar Publicamente
+ reset: Reinicializar
review: Status da revisão
+ search: Buscar
+ title: Hashtags
updated_msg: Configurações de hashtag atualizadas
title: Administração
trends:
allow: Permitir
approved: Aprovado
+ confirm_allow: Você tem certeza que deseja permitir as tags selecionadas?
+ confirm_disallow: Você tem certeza de que deseja vetar as tags selecionadas?
disallow: Impedir
links:
allow: Permitir link
allow_provider: Permitir editor
+ confirm_allow: Tem certeza que deseja permitir os links selecionados?
+ confirm_allow_provider: Tem certeza que deseja permitir os provedores selecionados?
+ confirm_disallow: Tem certeza que deseja vetar os links selecionados?
+ confirm_disallow_provider: Tem certeza que deseja vetar os provedores selecionados?
description_html: Estes são links que estão sendo compartilhados por contas que seu servidor vê. Você pode ajudar seus usuários a descobrir o que está acontecendo no mundo. Nenhum link é exibido publicamente até que você aprove o editor. Você também pode permitir ou rejeitar links individuais.
disallow: Proibir link
disallow_provider: Proibir autor
@@ -884,6 +940,10 @@ pt-BR:
statuses:
allow: Permitir publicação
allow_account: Permitir autor
+ confirm_allow: Tem certeza que deseja permitir os status selecionados?
+ confirm_allow_account: Tem certeza que deseja permitir as contas selecionadas?
+ confirm_disallow: Tem certeza que deseja vetar os status selecionados?
+ confirm_disallow_account: Tem certeza que deseja vetar as contas selecionadas?
description_html: Estes são as publicações que seu servidor sabe que estão sendo muito compartilhadas e favorecidas no momento. Isso pode ajudar seus usuários, novos e atuais, a encontrar mais pessoas para seguir. Nenhuma publicação é exibida publicamente até que você aprove o autor e o autor permitir que sua conta seja sugerida a outros. Você também pode permitir ou rejeitar publicações individuais.
disallow: Proibir publicação
disallow_account: Proibir autor
@@ -916,6 +976,7 @@ pt-BR:
used_by_over_week:
one: Usado por uma pessoa na última semana
other: Usado por %{count} pessoas na última semana
+ title: Recomendações e tendências
trending: Em alta
warning_presets:
add_new: Adicionar novo
@@ -1000,7 +1061,9 @@ pt-BR:
guide_link_text: Todos podem contribuir.
sensitive_content: Conteúdo sensível
application_mailer:
+ notification_preferences: Alterar preferências de e-mail
salutation: "%{name},"
+ settings: 'Alterar preferências de e-mail: %{link}'
unsubscribe: Desinscrever
view: 'Ver:'
view_profile: Ver perfil
@@ -1020,6 +1083,7 @@ pt-BR:
hint_html: Só mais uma coisa! Precisamos confirmar que você é um humano (isso é para que possamos evitar o spam!). Resolva o CAPTCHA abaixo e clique em "Continuar".
title: Verificação de segurança
confirmations:
+ awaiting_review: Seu endereço de e-mail está confirmado! A equipe %{domain} está agora revisando a sua inscrição. Você receberá um e-mail se a sua conta for aprovada!
awaiting_review_title: Seu cadastro está sendo analisado
clicking_this_link: clicar este link
login_link: entrar
@@ -1027,6 +1091,7 @@ pt-BR:
redirect_to_app_html: Você deveria ter sido redirecionado para o aplicativo %{app_name}. Se isso não aconteceu, tente %{clicking_this_link} ou volte manualmente para o aplicativo.
registration_complete: Seu cadastro no %{domain} foi concluído!
welcome_title: Boas vindas, %{name}!
+ wrong_email_hint: Se esse endereço de e-mail não estiver correto, você pode alterá-lo nas configurações da conta.
delete_account: Excluir conta
delete_account_html: Se você deseja excluir sua conta, você pode fazer isso aqui. Uma confirmação será solicitada.
description:
@@ -1047,6 +1112,7 @@ pt-BR:
or_log_in_with: Ou entre com
privacy_policy_agreement_html: Eu li e concordo com a política de privacidade
progress:
+ confirm: Confirmar e-mail
details: Suas informações
review: Nossa avaliação
rules: Aceitar regras
@@ -1068,8 +1134,10 @@ pt-BR:
security: Segurança
set_new_password: Definir uma nova senha
setup:
+ email_below_hint_html: Verifique a sua pasta de spam, ou solicite outra. Você pode corrigir o seu endereço de e-mail se estiver errado.
email_settings_hint_html: Clique no link que te enviamos para verificar %{email}. Esperaremos aqui.
link_not_received: Não recebeu um link?
+ new_confirmation_instructions_sent: Você receberá um novo e-mail com o link de confirmação em alguns minutos!
title: Verifique sua caixa de entrada
sign_in:
preamble_html: Entre com suas credenciais de domínios ( %{domain} ) . Se sua conta estiver hospedada em um servidor diferente, você não deve conseguir acessar este conteúdo.
@@ -1080,7 +1148,9 @@ pt-BR:
title: Então vamos lá criar uma conta em %{domain}.
status:
account_status: Status da conta
+ confirming: Confirmação por e-mail pendente.
functional: Sua conta está totalmente operacional.
+ pending: Sua inscrição está aguardando revisão pela nossa equipe. Isto pode levar algum tempo. Você receberá um e-mail se sua inscrição for aprovada.
redirecting_to: Sua conta está inativa porque atualmente está redirecionando para %{acct}.
self_destruct: Como %{domain} está se encerrando, você só terá acesso limitado à sua conta.
view_strikes: Veja os avisos anteriores em relação à sua conta
@@ -1123,6 +1193,9 @@ pt-BR:
before: 'Antes de prosseguir, leia com cuidado:'
caches: Conteúdo que foi armazenado em cache por outros servidores pode continuar a existir
data_removal: Suas publicações e outros dados serão removidos permanentemente
+ email_change_html: Você pode alterar seu endereço de e-mail sem excluir sua conta
+ email_contact_html: Se ainda não chegar, você pode enviar um e-mail para %{email} para obter ajuda
+ email_reconfirmation_html: Se você não recebeu o e-mail de confirmação, você pode solicitá-lo novamente
irreversible: Você não conseguirá restaurar ou reativar a sua conta
more_details_html: Para mais detalhes, consulte a Política de Privacidade.
username_available: Seu nome de usuário ficará disponível novamente
@@ -1355,6 +1428,7 @@ pt-BR:
authentication_methods:
otp: autenticação de dois fatores
password: senha
+ sign_in_token: código de segurança do e-mail
webauthn: chaves de segurança
description_html: Se você vir atividades suspeitas ou não reconhecidas, considere alterar sua senha e ativar a autenticação de dois fatores.
empty: Sem histórico de autenticação disponível
@@ -1365,10 +1439,14 @@ pt-BR:
unsubscribe:
action: Sim, cancelar subscrição
complete: Desinscrito
+ confirmation_html: Tem certeza que deseja cancelar a assinatura de %{type} para Mastodon no %{domain} para o seu endereço de e-mail %{email}? Você sempre pode se inscrever novamente nas configurações de notificação de email.
+ resubscribe_html: Se você cancelou sua inscrição por engano, você pode se inscrever novamente em suas configurações de notificações por e-mail.
+ success_html: Você não mais receberá %{type} no Mastodon em %{domain} ao seu endereço de e-mail %{email}.
title: Cancelar inscrição
media_attachments:
validations:
images_and_video: Não foi possível anexar um vídeo a uma publicação que já contém imagens
+ not_found: Mídia %{ids} não encontrada ou já anexada a outra publicação
not_ready: Não é possível anexar arquivos que não terminaram de ser processados. Tente novamente daqui a pouco!
too_many: Não foi possível anexar mais de 4 imagens
migrations:
@@ -1445,6 +1523,8 @@ pt-BR:
update:
subject: "%{name} editou uma publicação"
notifications:
+ administration_emails: Notificações de e-mail do administrador
+ email_events: Eventos para notificações por e-mail
email_events_hint: 'Selecione os eventos que deseja receber notificações:'
number:
human:
@@ -1603,6 +1683,7 @@ pt-BR:
import: Importar
import_and_export: Importar e exportar
migrate: Migração de conta
+ notifications: Notificações por e-mail
preferences: Preferências
profile: Perfil
relationships: Seguindo e seguidores
@@ -1849,6 +1930,7 @@ pt-BR:
invalid_otp_token: Código de dois fatores inválido
otp_lost_help_html: Se você perder o acesso à ambos, você pode entrar em contato com %{email}
rate_limited: Muitas tentativas de autenticação; tente novamente mais tarde.
+ seamless_external_login: Você está logado através de um serviço externo, portanto as configurações de senha e e-mail não estão disponíveis.
signed_in_as: 'Entrou como:'
verification:
extra_instructions_html: Dica: O link do seu site não precisa ser visível. O importante é a parte rel="me"
, que impede a personificação em sites com conteúdo gerado pelo usuário. Você pode até usar uma tag link
no cabeçalho da página ao invés de uma tag a
, mas é importante que o HTML esteja acessível sem executar JavaScript.
diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml
index fc3c09cf1d..65d3883690 100644
--- a/config/locales/simple_form.pt-BR.yml
+++ b/config/locales/simple_form.pt-BR.yml
@@ -211,6 +211,7 @@ pt-BR:
setting_default_privacy: Privacidade dos toots
setting_default_sensitive: Sempre marcar mídia como sensível
setting_delete_modal: Solicitar confirmação antes de excluir toot
+ setting_disable_hover_cards: Desativar visualização de perfil ao passar o mouse por cima
setting_disable_swiping: Desabilitar movimentos deslizantes
setting_display_media: Exibição das mídias
setting_display_media_default: Padrão
@@ -242,11 +243,13 @@ pt-BR:
warn: Ocultar com um aviso
form_admin_settings:
activity_api_enabled: Publicar estatísticas agregadas sobre atividade de usuários na API
+ app_icon: Ícone do aplicativo
backups_retention_period: Período de retenção do arquivo de usuário
bootstrap_timeline_accounts: Sempre recomendar essas contas para novos usuários
closed_registrations_message: Mensagem personalizada quando inscrições não estão disponíveis
content_cache_retention_period: Período de retenção de conteúdo remoto
custom_css: CSS personalizável
+ favicon: Favicon
mascot: Mascote personalizado (legado)
media_cache_retention_period: Período de retenção do cachê de mídia
peers_api_enabled: Publicar lista de instâncias de servidor descobertas na API
@@ -311,6 +314,7 @@ pt-BR:
listable: Permitir que esta hashtag apareça em pesquisas e sugestões
name: Hashtag
trendable: Permitir que esta hashtag fique em alta
+ usable: Permitir que as publicações usem esta hashtag localmente
user:
role: Cargo
time_zone: Fuso horário
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index fc9fde3615..4318f4eac4 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -1454,6 +1454,7 @@ tr:
media_attachments:
validations:
images_and_video: Zaten resim içeren bir duruma video eklenemez
+ not_found: "%{ids} medya dosyaları bulunamadı veya başka bir gönderiye zaten eklenmiş"
not_ready: İşlemi tamamlanmamış dosyalar eklenemez. Birazdan tekrar deneyin!
too_many: 4'ten fazla dosya eklenemiyor
migrations:
diff --git a/lib/mastodon/redis_configuration.rb b/lib/mastodon/redis_configuration.rb
index 3cd121e4ac..9139d87583 100644
--- a/lib/mastodon/redis_configuration.rb
+++ b/lib/mastodon/redis_configuration.rb
@@ -1,34 +1,33 @@
# frozen_string_literal: true
class Mastodon::RedisConfiguration
+ DEFAULTS = {
+ host: 'localhost',
+ port: 6379,
+ db: 0,
+ }.freeze
+
def base
- @base ||= {
- url: setup_base_redis_url,
- driver: driver,
- namespace: base_namespace,
- }
+ @base ||= setup_config(prefix: nil, defaults: DEFAULTS)
+ .merge(namespace: base_namespace)
end
def sidekiq
- @sidekiq ||= {
- url: setup_prefixed_redis_url(:sidekiq),
- driver: driver,
- namespace: sidekiq_namespace,
- }
+ @sidekiq ||= setup_config(prefix: 'SIDEKIQ_')
+ .merge(namespace: sidekiq_namespace)
end
def cache
- @cache ||= {
- url: setup_prefixed_redis_url(:cache),
- driver: driver,
- namespace: cache_namespace,
- expires_in: 10.minutes,
- connect_timeout: 5,
- pool: {
- size: Sidekiq.server? ? Sidekiq[:concurrency] : Integer(ENV['MAX_THREADS'] || 5),
- timeout: 5,
- },
- }
+ @cache ||= setup_config(prefix: 'CACHE_')
+ .merge({
+ namespace: cache_namespace,
+ expires_in: 10.minutes,
+ connect_timeout: 5,
+ pool: {
+ size: Sidekiq.server? ? Sidekiq[:concurrency] : Integer(ENV['MAX_THREADS'] || 5),
+ timeout: 5,
+ },
+ })
end
private
@@ -55,42 +54,53 @@ class Mastodon::RedisConfiguration
namespace ? "#{namespace}_cache" : 'cache'
end
- def setup_base_redis_url
- url = ENV.fetch('REDIS_URL', nil)
- return url if url.present?
+ def setup_config(prefix: nil, defaults: {})
+ prefix = "#{prefix}REDIS_"
- user = ENV.fetch('REDIS_USER', '')
- password = ENV.fetch('REDIS_PASSWORD', '')
- host = ENV.fetch('REDIS_HOST', 'localhost')
- port = ENV.fetch('REDIS_PORT', 6379)
- db = ENV.fetch('REDIS_DB', 0)
+ url = ENV.fetch("#{prefix}URL", nil)
+ user = ENV.fetch("#{prefix}USER", nil)
+ password = ENV.fetch("#{prefix}PASSWORD", nil)
+ host = ENV.fetch("#{prefix}HOST", defaults[:host])
+ port = ENV.fetch("#{prefix}PORT", defaults[:port])
+ db = ENV.fetch("#{prefix}DB", defaults[:db])
+ name = ENV.fetch("#{prefix}SENTINEL_MASTER", nil)
+ sentinels = parse_sentinels(ENV.fetch("#{prefix}SENTINELS", nil))
- construct_uri(host, port, db, user, password)
- end
+ return { url:, driver: } if url
- def setup_prefixed_redis_url(prefix)
- prefix = "#{prefix.to_s.upcase}_"
- url = ENV.fetch("#{prefix}REDIS_URL", nil)
-
- return url if url.present?
-
- user = ENV.fetch("#{prefix}REDIS_USER", nil)
- password = ENV.fetch("#{prefix}REDIS_PASSWORD", nil)
- host = ENV.fetch("#{prefix}REDIS_HOST", nil)
- port = ENV.fetch("#{prefix}REDIS_PORT", nil)
- db = ENV.fetch("#{prefix}REDIS_DB", nil)
-
- if host.nil?
- base[:url]
+ if name.present? && sentinels.present?
+ host = name
+ port = nil
+ db ||= 0
else
- construct_uri(host, port, db, user, password)
+ sentinels = nil
+ end
+
+ url = construct_uri(host, port, db, user, password)
+
+ if url.present?
+ { url:, driver:, name:, sentinels: }
+ else
+ # Fall back to base config. This has defaults for the URL
+ # so this cannot lead to an endless loop.
+ base
end
end
def construct_uri(host, port, db, user, password)
+ return nil if host.blank?
+
Addressable::URI.parse("redis://#{host}:#{port}/#{db}").tap do |uri|
uri.user = user if user.present?
uri.password = password if password.present?
end.normalize.to_str
end
+
+ def parse_sentinels(sentinels_string)
+ (sentinels_string || '').split(',').map do |sentinel|
+ host, port = sentinel.split(':')
+ port = port.present? ? port.to_i : 26_379
+ { host: host, port: port }
+ end.presence
+ end
end
diff --git a/package.json b/package.json
index 02444a3def..4c7af5c16d 100644
--- a/package.json
+++ b/package.json
@@ -178,9 +178,9 @@
"eslint-define-config": "^2.0.0",
"eslint-import-resolver-typescript": "^3.5.5",
"eslint-plugin-formatjs": "^4.10.1",
- "eslint-plugin-import": "~2.29.0",
+ "eslint-plugin-import": "~2.30.0",
"eslint-plugin-jsdoc": "^50.0.0",
- "eslint-plugin-jsx-a11y": "~6.9.0",
+ "eslint-plugin-jsx-a11y": "~6.10.0",
"eslint-plugin-promise": "~7.1.0",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^4.6.0",
diff --git a/spec/chewy/accounts_index_spec.rb b/spec/chewy/accounts_index_spec.rb
index f9c5922c76..f7b5b2e249 100644
--- a/spec/chewy/accounts_index_spec.rb
+++ b/spec/chewy/accounts_index_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe AccountsIndex do
+RSpec.describe AccountsIndex do
describe 'Searching the index' do
before do
mock_elasticsearch_response(described_class, raw_response)
diff --git a/spec/chewy/public_statuses_index_spec.rb b/spec/chewy/public_statuses_index_spec.rb
index 2f93d0ff02..6bc08832f3 100644
--- a/spec/chewy/public_statuses_index_spec.rb
+++ b/spec/chewy/public_statuses_index_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe PublicStatusesIndex do
+RSpec.describe PublicStatusesIndex do
describe 'Searching the index' do
before do
mock_elasticsearch_response(described_class, raw_response)
diff --git a/spec/chewy/statuses_index_spec.rb b/spec/chewy/statuses_index_spec.rb
index 768e9415fc..e3899f3a17 100644
--- a/spec/chewy/statuses_index_spec.rb
+++ b/spec/chewy/statuses_index_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe StatusesIndex do
+RSpec.describe StatusesIndex do
describe 'Searching the index' do
before do
mock_elasticsearch_response(described_class, raw_response)
diff --git a/spec/chewy/tags_index_spec.rb b/spec/chewy/tags_index_spec.rb
index 054589bdfb..6b57da65e4 100644
--- a/spec/chewy/tags_index_spec.rb
+++ b/spec/chewy/tags_index_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe TagsIndex do
+RSpec.describe TagsIndex do
describe 'Searching the index' do
before do
mock_elasticsearch_response(described_class, raw_response)
diff --git a/spec/config/initializers/rack/attack_spec.rb b/spec/config/initializers/rack/attack_spec.rb
index 19de480898..c7af11bea7 100644
--- a/spec/config/initializers/rack/attack_spec.rb
+++ b/spec/config/initializers/rack/attack_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Rack::Attack, type: :request do
+RSpec.describe Rack::Attack, type: :request do
def app
Rails.application
end
diff --git a/spec/controllers/activitypub/claims_controller_spec.rb b/spec/controllers/activitypub/claims_controller_spec.rb
index f00eeb732a..e887be2cbe 100644
--- a/spec/controllers/activitypub/claims_controller_spec.rb
+++ b/spec/controllers/activitypub/claims_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe ActivityPub::ClaimsController do
+RSpec.describe ActivityPub::ClaimsController do
let(:account) { Fabricate(:account) }
describe 'POST #create' do
diff --git a/spec/controllers/admin/account_actions_controller_spec.rb b/spec/controllers/admin/account_actions_controller_spec.rb
index b8dae79939..d513b3d4a0 100644
--- a/spec/controllers/admin/account_actions_controller_spec.rb
+++ b/spec/controllers/admin/account_actions_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::AccountActionsController do
+RSpec.describe Admin::AccountActionsController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/action_logs_controller_spec.rb b/spec/controllers/admin/action_logs_controller_spec.rb
index be4222df08..3daf260672 100644
--- a/spec/controllers/admin/action_logs_controller_spec.rb
+++ b/spec/controllers/admin/action_logs_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::ActionLogsController do
+RSpec.describe Admin::ActionLogsController do
render_views
# Action logs typically cause issues when their targets are not in the database
diff --git a/spec/controllers/admin/base_controller_spec.rb b/spec/controllers/admin/base_controller_spec.rb
index 1f1fa8441a..8b8b7fe63d 100644
--- a/spec/controllers/admin/base_controller_spec.rb
+++ b/spec/controllers/admin/base_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::BaseController do
+RSpec.describe Admin::BaseController do
controller do
def success
authorize :dashboard, :index?
diff --git a/spec/controllers/admin/custom_emojis_controller_spec.rb b/spec/controllers/admin/custom_emojis_controller_spec.rb
index 9e732200dd..57c2a6d21b 100644
--- a/spec/controllers/admin/custom_emojis_controller_spec.rb
+++ b/spec/controllers/admin/custom_emojis_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::CustomEmojisController do
+RSpec.describe Admin::CustomEmojisController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/dashboard_controller_spec.rb b/spec/controllers/admin/dashboard_controller_spec.rb
index 3e29ce1278..9177be4b6d 100644
--- a/spec/controllers/admin/dashboard_controller_spec.rb
+++ b/spec/controllers/admin/dashboard_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::DashboardController do
+RSpec.describe Admin::DashboardController do
render_views
describe 'GET #index' do
diff --git a/spec/controllers/admin/follow_recommendations_controller_spec.rb b/spec/controllers/admin/follow_recommendations_controller_spec.rb
index f62aa6e4b2..d614f2ef43 100644
--- a/spec/controllers/admin/follow_recommendations_controller_spec.rb
+++ b/spec/controllers/admin/follow_recommendations_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::FollowRecommendationsController do
+RSpec.describe Admin::FollowRecommendationsController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/invites_controller_spec.rb b/spec/controllers/admin/invites_controller_spec.rb
index 8638f8e214..b6471e80b2 100644
--- a/spec/controllers/admin/invites_controller_spec.rb
+++ b/spec/controllers/admin/invites_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::InvitesController do
+RSpec.describe Admin::InvitesController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/ip_blocks_controller_spec.rb b/spec/controllers/admin/ip_blocks_controller_spec.rb
index 05190f1340..2e32db5a01 100644
--- a/spec/controllers/admin/ip_blocks_controller_spec.rb
+++ b/spec/controllers/admin/ip_blocks_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::IpBlocksController do
+RSpec.describe Admin::IpBlocksController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/relationships_controller_spec.rb b/spec/controllers/admin/relationships_controller_spec.rb
index 1099a37a3b..214be7c7cd 100644
--- a/spec/controllers/admin/relationships_controller_spec.rb
+++ b/spec/controllers/admin/relationships_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::RelationshipsController do
+RSpec.describe Admin::RelationshipsController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/relays_controller_spec.rb b/spec/controllers/admin/relays_controller_spec.rb
index ca351c39b2..c6251a6d76 100644
--- a/spec/controllers/admin/relays_controller_spec.rb
+++ b/spec/controllers/admin/relays_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::RelaysController do
+RSpec.describe Admin::RelaysController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/report_notes_controller_spec.rb b/spec/controllers/admin/report_notes_controller_spec.rb
index 8d5b5c7aec..423a64ebc4 100644
--- a/spec/controllers/admin/report_notes_controller_spec.rb
+++ b/spec/controllers/admin/report_notes_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::ReportNotesController do
+RSpec.describe Admin::ReportNotesController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/reports/actions_controller_spec.rb b/spec/controllers/admin/reports/actions_controller_spec.rb
index 06d4b31f54..6185702c30 100644
--- a/spec/controllers/admin/reports/actions_controller_spec.rb
+++ b/spec/controllers/admin/reports/actions_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Reports::ActionsController do
+RSpec.describe Admin::Reports::ActionsController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/reports_controller_spec.rb b/spec/controllers/admin/reports_controller_spec.rb
index 67fb28e7a5..d07468a37b 100644
--- a/spec/controllers/admin/reports_controller_spec.rb
+++ b/spec/controllers/admin/reports_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::ReportsController do
+RSpec.describe Admin::ReportsController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/roles_controller_spec.rb b/spec/controllers/admin/roles_controller_spec.rb
index 223d0a472a..2c43a0ca87 100644
--- a/spec/controllers/admin/roles_controller_spec.rb
+++ b/spec/controllers/admin/roles_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::RolesController do
+RSpec.describe Admin::RolesController do
render_views
let(:permissions) { UserRole::Flags::NONE }
diff --git a/spec/controllers/admin/rules_controller_spec.rb b/spec/controllers/admin/rules_controller_spec.rb
index 92ffb41567..1b2a2010d0 100644
--- a/spec/controllers/admin/rules_controller_spec.rb
+++ b/spec/controllers/admin/rules_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::RulesController do
+RSpec.describe Admin::RulesController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/site_uploads_controller_spec.rb b/spec/controllers/admin/site_uploads_controller_spec.rb
index 4ea37f396a..9c65c63b78 100644
--- a/spec/controllers/admin/site_uploads_controller_spec.rb
+++ b/spec/controllers/admin/site_uploads_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::SiteUploadsController do
+RSpec.describe Admin::SiteUploadsController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/statuses_controller_spec.rb b/spec/controllers/admin/statuses_controller_spec.rb
index 4ab6d109ef..e6053a6e8a 100644
--- a/spec/controllers/admin/statuses_controller_spec.rb
+++ b/spec/controllers/admin/statuses_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::StatusesController do
+RSpec.describe Admin::StatusesController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/trends/links/preview_card_providers_controller_spec.rb b/spec/controllers/admin/trends/links/preview_card_providers_controller_spec.rb
index 95ed38d6b1..ce62a13db6 100644
--- a/spec/controllers/admin/trends/links/preview_card_providers_controller_spec.rb
+++ b/spec/controllers/admin/trends/links/preview_card_providers_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Trends::Links::PreviewCardProvidersController do
+RSpec.describe Admin::Trends::Links::PreviewCardProvidersController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/trends/links_controller_spec.rb b/spec/controllers/admin/trends/links_controller_spec.rb
index 7c67f5e5aa..984f3007c2 100644
--- a/spec/controllers/admin/trends/links_controller_spec.rb
+++ b/spec/controllers/admin/trends/links_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Trends::LinksController do
+RSpec.describe Admin::Trends::LinksController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/trends/statuses_controller_spec.rb b/spec/controllers/admin/trends/statuses_controller_spec.rb
index b752234d3c..eecf4ab4f2 100644
--- a/spec/controllers/admin/trends/statuses_controller_spec.rb
+++ b/spec/controllers/admin/trends/statuses_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Trends::StatusesController do
+RSpec.describe Admin::Trends::StatusesController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/trends/tags_controller_spec.rb b/spec/controllers/admin/trends/tags_controller_spec.rb
index 4f74a55455..51ad1860c8 100644
--- a/spec/controllers/admin/trends/tags_controller_spec.rb
+++ b/spec/controllers/admin/trends/tags_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Trends::TagsController do
+RSpec.describe Admin::Trends::TagsController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/users/roles_controller_spec.rb b/spec/controllers/admin/users/roles_controller_spec.rb
index 97f69a0b0a..bfc2bb151f 100644
--- a/spec/controllers/admin/users/roles_controller_spec.rb
+++ b/spec/controllers/admin/users/roles_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Users::RolesController do
+RSpec.describe Admin::Users::RolesController do
render_views
let(:current_role) { UserRole.create(name: 'Foo', permissions: UserRole::FLAGS[:manage_roles], position: 10) }
diff --git a/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb b/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb
index eb10d47963..1f0a6ac34d 100644
--- a/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb
+++ b/spec/controllers/admin/users/two_factor_authentications_controller_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'webauthn/fake_client'
-describe Admin::Users::TwoFactorAuthenticationsController do
+RSpec.describe Admin::Users::TwoFactorAuthenticationsController do
render_views
let(:user) { Fabricate(:user) }
diff --git a/spec/controllers/admin/warning_presets_controller_spec.rb b/spec/controllers/admin/warning_presets_controller_spec.rb
index b32a58e990..4171bbad82 100644
--- a/spec/controllers/admin/warning_presets_controller_spec.rb
+++ b/spec/controllers/admin/warning_presets_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::WarningPresetsController do
+RSpec.describe Admin::WarningPresetsController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/webhooks/secrets_controller_spec.rb b/spec/controllers/admin/webhooks/secrets_controller_spec.rb
index 291a10fba5..61ae8cdaa5 100644
--- a/spec/controllers/admin/webhooks/secrets_controller_spec.rb
+++ b/spec/controllers/admin/webhooks/secrets_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Webhooks::SecretsController do
+RSpec.describe Admin::Webhooks::SecretsController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/admin/webhooks_controller_spec.rb b/spec/controllers/admin/webhooks_controller_spec.rb
index 17d8506025..4fe787c26c 100644
--- a/spec/controllers/admin/webhooks_controller_spec.rb
+++ b/spec/controllers/admin/webhooks_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::WebhooksController do
+RSpec.describe Admin::WebhooksController do
render_views
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
diff --git a/spec/controllers/api/base_controller_spec.rb b/spec/controllers/api/base_controller_spec.rb
index 659d55f801..1e0e7c8f4d 100644
--- a/spec/controllers/api/base_controller_spec.rb
+++ b/spec/controllers/api/base_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Api::BaseController do
+RSpec.describe Api::BaseController do
controller do
def success
head 200
diff --git a/spec/controllers/api/web/push_subscriptions_controller_spec.rb b/spec/controllers/api/web/push_subscriptions_controller_spec.rb
index 58677841ca..acc0312113 100644
--- a/spec/controllers/api/web/push_subscriptions_controller_spec.rb
+++ b/spec/controllers/api/web/push_subscriptions_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Api::Web::PushSubscriptionsController do
+RSpec.describe Api::Web::PushSubscriptionsController do
render_views
let(:user) { Fabricate(:user) }
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb
index 704cc1270e..52d92a2b6c 100644
--- a/spec/controllers/application_controller_spec.rb
+++ b/spec/controllers/application_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe ApplicationController do
+RSpec.describe ApplicationController do
controller do
def success
head 200
diff --git a/spec/controllers/auth/challenges_controller_spec.rb b/spec/controllers/auth/challenges_controller_spec.rb
index 32bbedde63..56fdfa61b5 100644
--- a/spec/controllers/auth/challenges_controller_spec.rb
+++ b/spec/controllers/auth/challenges_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Auth::ChallengesController do
+RSpec.describe Auth::ChallengesController do
render_views
let(:password) { 'foobar12345' }
diff --git a/spec/controllers/auth/confirmations_controller_spec.rb b/spec/controllers/auth/confirmations_controller_spec.rb
index 15403e8ea1..a5b212e660 100644
--- a/spec/controllers/auth/confirmations_controller_spec.rb
+++ b/spec/controllers/auth/confirmations_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Auth::ConfirmationsController do
+RSpec.describe Auth::ConfirmationsController do
render_views
describe 'GET #new' do
diff --git a/spec/controllers/auth/passwords_controller_spec.rb b/spec/controllers/auth/passwords_controller_spec.rb
index d70490abcf..9ccbb9e494 100644
--- a/spec/controllers/auth/passwords_controller_spec.rb
+++ b/spec/controllers/auth/passwords_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Auth::PasswordsController do
+RSpec.describe Auth::PasswordsController do
include Devise::Test::ControllerHelpers
describe 'GET #new' do
diff --git a/spec/controllers/auth/setup_controller_spec.rb b/spec/controllers/auth/setup_controller_spec.rb
index 75e42aaf96..28b07cb4b2 100644
--- a/spec/controllers/auth/setup_controller_spec.rb
+++ b/spec/controllers/auth/setup_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Auth::SetupController do
+RSpec.describe Auth::SetupController do
render_views
describe 'GET #show' do
diff --git a/spec/controllers/authorize_interactions_controller_spec.rb b/spec/controllers/authorize_interactions_controller_spec.rb
index ed55df08d9..2a0422efa9 100644
--- a/spec/controllers/authorize_interactions_controller_spec.rb
+++ b/spec/controllers/authorize_interactions_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe AuthorizeInteractionsController do
+RSpec.describe AuthorizeInteractionsController do
render_views
describe 'GET #show' do
diff --git a/spec/controllers/concerns/account_controller_concern_spec.rb b/spec/controllers/concerns/account_controller_concern_spec.rb
index 122ef21e93..3eee46d7b9 100644
--- a/spec/controllers/concerns/account_controller_concern_spec.rb
+++ b/spec/controllers/concerns/account_controller_concern_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe AccountControllerConcern do
+RSpec.describe AccountControllerConcern do
controller(ApplicationController) do
include AccountControllerConcern
diff --git a/spec/controllers/concerns/api/error_handling_spec.rb b/spec/controllers/concerns/api/error_handling_spec.rb
index 9b36fc20a3..eff01605d2 100644
--- a/spec/controllers/concerns/api/error_handling_spec.rb
+++ b/spec/controllers/concerns/api/error_handling_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Api::ErrorHandling do
+RSpec.describe Api::ErrorHandling do
before do
stub_const('FakeService', Class.new)
end
diff --git a/spec/controllers/concerns/api/rate_limit_headers_spec.rb b/spec/controllers/concerns/api/rate_limit_headers_spec.rb
index 2050de2aed..6372c94e6c 100644
--- a/spec/controllers/concerns/api/rate_limit_headers_spec.rb
+++ b/spec/controllers/concerns/api/rate_limit_headers_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Api::RateLimitHeaders do
+RSpec.describe Api::RateLimitHeaders do
controller(ApplicationController) do
include Api::RateLimitHeaders
diff --git a/spec/controllers/concerns/localized_spec.rb b/spec/controllers/concerns/localized_spec.rb
index ce31e786f0..b1f805ae50 100644
--- a/spec/controllers/concerns/localized_spec.rb
+++ b/spec/controllers/concerns/localized_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Localized do
+RSpec.describe Localized do
controller(ApplicationController) do
include Localized
diff --git a/spec/controllers/concerns/settings/export_controller_concern_spec.rb b/spec/controllers/concerns/settings/export_controller_concern_spec.rb
index a19af8689a..2c67991e3a 100644
--- a/spec/controllers/concerns/settings/export_controller_concern_spec.rb
+++ b/spec/controllers/concerns/settings/export_controller_concern_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::ExportControllerConcern do
+RSpec.describe Settings::ExportControllerConcern do
controller(ApplicationController) do
include Settings::ExportControllerConcern
diff --git a/spec/controllers/concerns/user_tracking_concern_spec.rb b/spec/controllers/concerns/user_tracking_concern_spec.rb
index f23d482f5f..cc61e285cc 100644
--- a/spec/controllers/concerns/user_tracking_concern_spec.rb
+++ b/spec/controllers/concerns/user_tracking_concern_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe UserTrackingConcern do
+RSpec.describe UserTrackingConcern do
controller(ApplicationController) do
include UserTrackingConcern
diff --git a/spec/controllers/filters/statuses_controller_spec.rb b/spec/controllers/filters/statuses_controller_spec.rb
index 2c80613302..f1fed76fca 100644
--- a/spec/controllers/filters/statuses_controller_spec.rb
+++ b/spec/controllers/filters/statuses_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Filters::StatusesController do
+RSpec.describe Filters::StatusesController do
render_views
describe 'GET #index' do
diff --git a/spec/controllers/filters_controller_spec.rb b/spec/controllers/filters_controller_spec.rb
index 091f714bb3..de043e8ae3 100644
--- a/spec/controllers/filters_controller_spec.rb
+++ b/spec/controllers/filters_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe FiltersController do
+RSpec.describe FiltersController do
render_views
describe 'GET #index' do
diff --git a/spec/controllers/follower_accounts_controller_spec.rb b/spec/controllers/follower_accounts_controller_spec.rb
index dd78c96c05..e84528d13e 100644
--- a/spec/controllers/follower_accounts_controller_spec.rb
+++ b/spec/controllers/follower_accounts_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe FollowerAccountsController do
+RSpec.describe FollowerAccountsController do
render_views
let(:alice) { Fabricate(:account, username: 'alice') }
diff --git a/spec/controllers/following_accounts_controller_spec.rb b/spec/controllers/following_accounts_controller_spec.rb
index 7bb78fb420..1e01b9f494 100644
--- a/spec/controllers/following_accounts_controller_spec.rb
+++ b/spec/controllers/following_accounts_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe FollowingAccountsController do
+RSpec.describe FollowingAccountsController do
render_views
let(:alice) { Fabricate(:account, username: 'alice') }
diff --git a/spec/controllers/invites_controller_spec.rb b/spec/controllers/invites_controller_spec.rb
index 5221941267..192c5b00ba 100644
--- a/spec/controllers/invites_controller_spec.rb
+++ b/spec/controllers/invites_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe InvitesController do
+RSpec.describe InvitesController do
render_views
let(:user) { Fabricate(:user) }
diff --git a/spec/controllers/oauth/authorized_applications_controller_spec.rb b/spec/controllers/oauth/authorized_applications_controller_spec.rb
index 3fd9f9499f..52d3dbde83 100644
--- a/spec/controllers/oauth/authorized_applications_controller_spec.rb
+++ b/spec/controllers/oauth/authorized_applications_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Oauth::AuthorizedApplicationsController do
+RSpec.describe Oauth::AuthorizedApplicationsController do
render_views
describe 'GET #index' do
diff --git a/spec/controllers/relationships_controller_spec.rb b/spec/controllers/relationships_controller_spec.rb
index 9495fc214f..323fcc995d 100644
--- a/spec/controllers/relationships_controller_spec.rb
+++ b/spec/controllers/relationships_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe RelationshipsController do
+RSpec.describe RelationshipsController do
render_views
let(:user) { Fabricate(:user) }
diff --git a/spec/controllers/settings/aliases_controller_spec.rb b/spec/controllers/settings/aliases_controller_spec.rb
index 18e568be0b..4858c15298 100644
--- a/spec/controllers/settings/aliases_controller_spec.rb
+++ b/spec/controllers/settings/aliases_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::AliasesController do
+RSpec.describe Settings::AliasesController do
render_views
let!(:user) { Fabricate(:user) }
diff --git a/spec/controllers/settings/applications_controller_spec.rb b/spec/controllers/settings/applications_controller_spec.rb
index ce2e0749a7..721741bacb 100644
--- a/spec/controllers/settings/applications_controller_spec.rb
+++ b/spec/controllers/settings/applications_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::ApplicationsController do
+RSpec.describe Settings::ApplicationsController do
render_views
let!(:user) { Fabricate(:user) }
diff --git a/spec/controllers/settings/deletes_controller_spec.rb b/spec/controllers/settings/deletes_controller_spec.rb
index 3342599bc1..98104b8454 100644
--- a/spec/controllers/settings/deletes_controller_spec.rb
+++ b/spec/controllers/settings/deletes_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::DeletesController do
+RSpec.describe Settings::DeletesController do
render_views
describe 'GET #show' do
diff --git a/spec/controllers/settings/exports_controller_spec.rb b/spec/controllers/settings/exports_controller_spec.rb
index 3399f78ac5..1eafabc7e5 100644
--- a/spec/controllers/settings/exports_controller_spec.rb
+++ b/spec/controllers/settings/exports_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::ExportsController do
+RSpec.describe Settings::ExportsController do
render_views
describe 'GET #show' do
diff --git a/spec/controllers/settings/featured_tags_controller_spec.rb b/spec/controllers/settings/featured_tags_controller_spec.rb
index 4e1dd52945..a56ae1c498 100644
--- a/spec/controllers/settings/featured_tags_controller_spec.rb
+++ b/spec/controllers/settings/featured_tags_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::FeaturedTagsController do
+RSpec.describe Settings::FeaturedTagsController do
render_views
shared_examples 'authenticate user' do
diff --git a/spec/controllers/settings/login_activities_controller_spec.rb b/spec/controllers/settings/login_activities_controller_spec.rb
index 294bf85c97..3447620abb 100644
--- a/spec/controllers/settings/login_activities_controller_spec.rb
+++ b/spec/controllers/settings/login_activities_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::LoginActivitiesController do
+RSpec.describe Settings::LoginActivitiesController do
render_views
let!(:user) { Fabricate(:user) }
diff --git a/spec/controllers/settings/migration/redirects_controller_spec.rb b/spec/controllers/settings/migration/redirects_controller_spec.rb
index b909a02668..d853fe8ae6 100644
--- a/spec/controllers/settings/migration/redirects_controller_spec.rb
+++ b/spec/controllers/settings/migration/redirects_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::Migration::RedirectsController do
+RSpec.describe Settings::Migration::RedirectsController do
render_views
let!(:user) { Fabricate(:user, password: 'testtest') }
diff --git a/spec/controllers/settings/migrations_controller_spec.rb b/spec/controllers/settings/migrations_controller_spec.rb
index f3340574d0..93c5de0899 100644
--- a/spec/controllers/settings/migrations_controller_spec.rb
+++ b/spec/controllers/settings/migrations_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::MigrationsController do
+RSpec.describe Settings::MigrationsController do
render_views
shared_examples 'authenticate user' do
diff --git a/spec/controllers/settings/pictures_controller_spec.rb b/spec/controllers/settings/pictures_controller_spec.rb
index 705878f03d..683d231ed1 100644
--- a/spec/controllers/settings/pictures_controller_spec.rb
+++ b/spec/controllers/settings/pictures_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::PicturesController do
+RSpec.describe Settings::PicturesController do
render_views
let!(:user) { Fabricate(:user) }
diff --git a/spec/controllers/settings/preferences/appearance_controller_spec.rb b/spec/controllers/settings/preferences/appearance_controller_spec.rb
index c59d315104..ede00699a2 100644
--- a/spec/controllers/settings/preferences/appearance_controller_spec.rb
+++ b/spec/controllers/settings/preferences/appearance_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::Preferences::AppearanceController do
+RSpec.describe Settings::Preferences::AppearanceController do
render_views
let!(:user) { Fabricate(:user) }
diff --git a/spec/controllers/settings/preferences/base_controller_spec.rb b/spec/controllers/settings/preferences/base_controller_spec.rb
index 53b3a461ed..75fc999a48 100644
--- a/spec/controllers/settings/preferences/base_controller_spec.rb
+++ b/spec/controllers/settings/preferences/base_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::Preferences::BaseController do
+RSpec.describe Settings::Preferences::BaseController do
describe 'after_update_redirect_path' do
it 'raises error when called' do
expect { described_class.new.send(:after_update_redirect_path) }.to raise_error(/Override/)
diff --git a/spec/controllers/settings/preferences/notifications_controller_spec.rb b/spec/controllers/settings/preferences/notifications_controller_spec.rb
index e0f0bc55a7..edfdea50e0 100644
--- a/spec/controllers/settings/preferences/notifications_controller_spec.rb
+++ b/spec/controllers/settings/preferences/notifications_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::Preferences::NotificationsController do
+RSpec.describe Settings::Preferences::NotificationsController do
render_views
let(:user) { Fabricate(:user) }
diff --git a/spec/controllers/settings/preferences/other_controller_spec.rb b/spec/controllers/settings/preferences/other_controller_spec.rb
index 61a94a4142..117fdeea7c 100644
--- a/spec/controllers/settings/preferences/other_controller_spec.rb
+++ b/spec/controllers/settings/preferences/other_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::Preferences::OtherController do
+RSpec.describe Settings::Preferences::OtherController do
render_views
let(:user) { Fabricate(:user, chosen_languages: []) }
diff --git a/spec/controllers/settings/sessions_controller_spec.rb b/spec/controllers/settings/sessions_controller_spec.rb
index a4248e1bde..c098af7485 100644
--- a/spec/controllers/settings/sessions_controller_spec.rb
+++ b/spec/controllers/settings/sessions_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::SessionsController do
+RSpec.describe Settings::SessionsController do
render_views
let(:user) { Fabricate(:user) }
diff --git a/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb b/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb
index 1c8b483a0a..34eaacdf49 100644
--- a/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb
+++ b/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::TwoFactorAuthentication::ConfirmationsController do
+RSpec.describe Settings::TwoFactorAuthentication::ConfirmationsController do
render_views
shared_examples 'renders :new' do
diff --git a/spec/controllers/settings/two_factor_authentication/otp_authentication_controller_spec.rb b/spec/controllers/settings/two_factor_authentication/otp_authentication_controller_spec.rb
index 007df87d95..a03c4a4adb 100644
--- a/spec/controllers/settings/two_factor_authentication/otp_authentication_controller_spec.rb
+++ b/spec/controllers/settings/two_factor_authentication/otp_authentication_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::TwoFactorAuthentication::OtpAuthenticationController do
+RSpec.describe Settings::TwoFactorAuthentication::OtpAuthenticationController do
render_views
let(:user) { Fabricate(:user) }
diff --git a/spec/controllers/settings/two_factor_authentication/recovery_codes_controller_spec.rb b/spec/controllers/settings/two_factor_authentication/recovery_codes_controller_spec.rb
index dbc2e3059c..0defc52cde 100644
--- a/spec/controllers/settings/two_factor_authentication/recovery_codes_controller_spec.rb
+++ b/spec/controllers/settings/two_factor_authentication/recovery_codes_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::TwoFactorAuthentication::RecoveryCodesController do
+RSpec.describe Settings::TwoFactorAuthentication::RecoveryCodesController do
render_views
describe 'POST #create' do
diff --git a/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb b/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb
index 41a3ba5eb5..cccf3c51d3 100644
--- a/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb
+++ b/spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'webauthn/fake_client'
-describe Settings::TwoFactorAuthentication::WebauthnCredentialsController do
+RSpec.describe Settings::TwoFactorAuthentication::WebauthnCredentialsController do
render_views
let(:user) { Fabricate(:user) }
diff --git a/spec/controllers/settings/two_factor_authentication_methods_controller_spec.rb b/spec/controllers/settings/two_factor_authentication_methods_controller_spec.rb
index de0d28463b..c55f113d4d 100644
--- a/spec/controllers/settings/two_factor_authentication_methods_controller_spec.rb
+++ b/spec/controllers/settings/two_factor_authentication_methods_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Settings::TwoFactorAuthenticationMethodsController do
+RSpec.describe Settings::TwoFactorAuthenticationMethodsController do
render_views
context 'when not signed in' do
diff --git a/spec/controllers/statuses_controller_spec.rb b/spec/controllers/statuses_controller_spec.rb
index 084dcfaa75..289109a1fa 100644
--- a/spec/controllers/statuses_controller_spec.rb
+++ b/spec/controllers/statuses_controller_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe StatusesController do
+RSpec.describe StatusesController do
render_views
describe 'GET #show' do
diff --git a/spec/fabrication/fabricators_spec.rb b/spec/fabrication/fabricators_spec.rb
index 2cf45041a4..f7bb504543 100644
--- a/spec/fabrication/fabricators_spec.rb
+++ b/spec/fabrication/fabricators_spec.rb
@@ -5,7 +5,7 @@ require 'rails_helper'
Fabrication.manager.load_definitions if Fabrication.manager.empty?
Fabrication.manager.schematics.map(&:first).each do |factory_name|
- describe "The #{factory_name} factory" do
+ RSpec.describe "The #{factory_name} factory" do
it 'is able to create valid records' do
records = Fabricate.times(2, factory_name) # Create multiple of each to uncover uniqueness issues
expect(records).to all(be_valid)
diff --git a/spec/generators/post_deployment_migration_generator_spec.rb b/spec/generators/post_deployment_migration_generator_spec.rb
index 55e70a7917..1aa8e0915c 100644
--- a/spec/generators/post_deployment_migration_generator_spec.rb
+++ b/spec/generators/post_deployment_migration_generator_spec.rb
@@ -6,7 +6,7 @@ require 'rails/generators/testing/assertions'
require 'generators/post_deployment_migration/post_deployment_migration_generator'
-describe PostDeploymentMigrationGenerator, type: :generator do
+RSpec.describe PostDeploymentMigrationGenerator, type: :generator do
include Rails::Generators::Testing::Behavior
include Rails::Generators::Testing::Assertions
include FileUtils
diff --git a/spec/helpers/admin/dashboard_helper_spec.rb b/spec/helpers/admin/dashboard_helper_spec.rb
index 59062e4839..9c674fb4b9 100644
--- a/spec/helpers/admin/dashboard_helper_spec.rb
+++ b/spec/helpers/admin/dashboard_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::DashboardHelper do
+RSpec.describe Admin::DashboardHelper do
describe 'relevant_account_timestamp' do
context 'with an account with older sign in' do
let(:account) { Fabricate(:account) }
diff --git a/spec/helpers/admin/disputes_helper_spec.rb b/spec/helpers/admin/disputes_helper_spec.rb
index 5f9a85df86..a6ac021bd4 100644
--- a/spec/helpers/admin/disputes_helper_spec.rb
+++ b/spec/helpers/admin/disputes_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::DisputesHelper do
+RSpec.describe Admin::DisputesHelper do
describe 'strike_action_label' do
it 'returns html describing the appeal' do
adam = Account.new(username: 'Adam')
diff --git a/spec/helpers/admin/filter_helper_spec.rb b/spec/helpers/admin/filter_helper_spec.rb
index 40ed63239f..d07a6e1bb7 100644
--- a/spec/helpers/admin/filter_helper_spec.rb
+++ b/spec/helpers/admin/filter_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::FilterHelper do
+RSpec.describe Admin::FilterHelper do
it 'Uses filter_link_to to create filter links' do
params = ActionController::Parameters.new(
{ test: 'test' }
diff --git a/spec/helpers/admin/trends/statuses_helper_spec.rb b/spec/helpers/admin/trends/statuses_helper_spec.rb
index 92caae6909..fa5c337e97 100644
--- a/spec/helpers/admin/trends/statuses_helper_spec.rb
+++ b/spec/helpers/admin/trends/statuses_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Trends::StatusesHelper do
+RSpec.describe Admin::Trends::StatusesHelper do
describe '.one_line_preview' do
before do
allow(helper).to receive(:current_user).and_return(Fabricate.build(:user))
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index f37dc480c4..1ea5b573c9 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe ApplicationHelper do
+RSpec.describe ApplicationHelper do
describe 'body_classes' do
context 'with a body class string from a controller' do
before { helper.extend controller_helpers }
diff --git a/spec/helpers/flashes_helper_spec.rb b/spec/helpers/flashes_helper_spec.rb
index a6a3b062d7..aaef7ab144 100644
--- a/spec/helpers/flashes_helper_spec.rb
+++ b/spec/helpers/flashes_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe FlashesHelper do
+RSpec.describe FlashesHelper do
describe 'user_facing_flashes' do
before do
# rubocop:disable Rails/I18nLocaleTexts
diff --git a/spec/helpers/formatting_helper_spec.rb b/spec/helpers/formatting_helper_spec.rb
index d6e7631f66..136a609b1c 100644
--- a/spec/helpers/formatting_helper_spec.rb
+++ b/spec/helpers/formatting_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe FormattingHelper do
+RSpec.describe FormattingHelper do
include Devise::Test::ControllerHelpers
describe '#rss_status_content_format' do
diff --git a/spec/helpers/instance_helper_spec.rb b/spec/helpers/instance_helper_spec.rb
index 9a2d884158..e7b15e6513 100644
--- a/spec/helpers/instance_helper_spec.rb
+++ b/spec/helpers/instance_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe InstanceHelper do
+RSpec.describe InstanceHelper do
describe 'site_title' do
it 'Uses the Setting.site_title value when it exists' do
Setting.site_title = 'New site title'
diff --git a/spec/helpers/json_ld_helper_spec.rb b/spec/helpers/json_ld_helper_spec.rb
index f4b849d7a1..d76c5167a7 100644
--- a/spec/helpers/json_ld_helper_spec.rb
+++ b/spec/helpers/json_ld_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe JsonLdHelper do
+RSpec.describe JsonLdHelper do
describe '#equals_or_includes?' do
it 'returns true when value equals' do
expect(helper.equals_or_includes?('foo', 'foo')).to be true
diff --git a/spec/helpers/languages_helper_spec.rb b/spec/helpers/languages_helper_spec.rb
index 99461b293b..dd9b6004d1 100644
--- a/spec/helpers/languages_helper_spec.rb
+++ b/spec/helpers/languages_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe LanguagesHelper do
+RSpec.describe LanguagesHelper do
describe 'the SUPPORTED_LOCALES constant' do
it 'includes all i18n locales' do
expect(Set.new(described_class::SUPPORTED_LOCALES.keys + described_class::REGIONAL_LOCALE_NAMES.keys)).to include(*I18n.available_locales)
diff --git a/spec/helpers/media_component_helper_spec.rb b/spec/helpers/media_component_helper_spec.rb
index af5d92769c..ec87a707cb 100644
--- a/spec/helpers/media_component_helper_spec.rb
+++ b/spec/helpers/media_component_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe MediaComponentHelper do
+RSpec.describe MediaComponentHelper do
before { helper.extend controller_helpers }
describe 'render_video_component' do
diff --git a/spec/helpers/react_component_helper_spec.rb b/spec/helpers/react_component_helper_spec.rb
index 28208b619b..202694fbe4 100644
--- a/spec/helpers/react_component_helper_spec.rb
+++ b/spec/helpers/react_component_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe ReactComponentHelper do
+RSpec.describe ReactComponentHelper do
describe 'react_component' do
context 'with no block passed in' do
let(:result) { helper.react_component('name', { one: :two }) }
diff --git a/spec/helpers/settings_helper_spec.rb b/spec/helpers/settings_helper_spec.rb
index ca447d8ce1..ecff2edbfa 100644
--- a/spec/helpers/settings_helper_spec.rb
+++ b/spec/helpers/settings_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe SettingsHelper do
+RSpec.describe SettingsHelper do
describe 'session_device_icon' do
context 'with a mobile device' do
let(:session) { SessionActivation.new(user_agent: 'Mozilla/5.0 (iPhone)') }
diff --git a/spec/helpers/statuses_helper_spec.rb b/spec/helpers/statuses_helper_spec.rb
index 66eb996f99..8809d0afae 100644
--- a/spec/helpers/statuses_helper_spec.rb
+++ b/spec/helpers/statuses_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe StatusesHelper do
+RSpec.describe StatusesHelper do
describe 'status_text_summary' do
context 'with blank text' do
let(:status) { Status.new(spoiler_text: '') }
diff --git a/spec/helpers/theme_helper_spec.rb b/spec/helpers/theme_helper_spec.rb
index aae1ae2a3b..83a68f4739 100644
--- a/spec/helpers/theme_helper_spec.rb
+++ b/spec/helpers/theme_helper_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe ThemeHelper do
+RSpec.describe ThemeHelper do
describe 'theme_style_tags' do
let(:result) { helper.theme_style_tags(theme) }
diff --git a/spec/lib/admin/metrics/dimension/instance_accounts_dimension_spec.rb b/spec/lib/admin/metrics/dimension/instance_accounts_dimension_spec.rb
index 2b14e6956c..c8683afda9 100644
--- a/spec/lib/admin/metrics/dimension/instance_accounts_dimension_spec.rb
+++ b/spec/lib/admin/metrics/dimension/instance_accounts_dimension_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Dimension::InstanceAccountsDimension do
+RSpec.describe Admin::Metrics::Dimension::InstanceAccountsDimension do
subject { described_class.new(start_at, end_at, limit, params) }
let(:start_at) { 2.days.ago }
diff --git a/spec/lib/admin/metrics/dimension/instance_languages_dimension_spec.rb b/spec/lib/admin/metrics/dimension/instance_languages_dimension_spec.rb
index e4e9fbe2b7..c633041f9d 100644
--- a/spec/lib/admin/metrics/dimension/instance_languages_dimension_spec.rb
+++ b/spec/lib/admin/metrics/dimension/instance_languages_dimension_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Dimension::InstanceLanguagesDimension do
+RSpec.describe Admin::Metrics::Dimension::InstanceLanguagesDimension do
subject { described_class.new(start_at, end_at, limit, params) }
let(:start_at) { 2.days.ago }
diff --git a/spec/lib/admin/metrics/dimension/languages_dimension_spec.rb b/spec/lib/admin/metrics/dimension/languages_dimension_spec.rb
index 9d80970693..801b3d84df 100644
--- a/spec/lib/admin/metrics/dimension/languages_dimension_spec.rb
+++ b/spec/lib/admin/metrics/dimension/languages_dimension_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Dimension::LanguagesDimension do
+RSpec.describe Admin::Metrics::Dimension::LanguagesDimension do
subject { described_class.new(start_at, end_at, limit, params) }
let(:start_at) { 2.days.ago }
diff --git a/spec/lib/admin/metrics/dimension/servers_dimension_spec.rb b/spec/lib/admin/metrics/dimension/servers_dimension_spec.rb
index 5661441d5d..d86ccd099a 100644
--- a/spec/lib/admin/metrics/dimension/servers_dimension_spec.rb
+++ b/spec/lib/admin/metrics/dimension/servers_dimension_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Dimension::ServersDimension do
+RSpec.describe Admin::Metrics::Dimension::ServersDimension do
subject { described_class.new(start_at, end_at, limit, params) }
let(:start_at) { 2.days.ago }
diff --git a/spec/lib/admin/metrics/dimension/software_versions_dimension_spec.rb b/spec/lib/admin/metrics/dimension/software_versions_dimension_spec.rb
index 5d31121ab3..5b0fb902e0 100644
--- a/spec/lib/admin/metrics/dimension/software_versions_dimension_spec.rb
+++ b/spec/lib/admin/metrics/dimension/software_versions_dimension_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Dimension::SoftwareVersionsDimension do
+RSpec.describe Admin::Metrics::Dimension::SoftwareVersionsDimension do
subject { described_class.new(start_at, end_at, limit, params) }
let(:start_at) { 2.days.ago }
diff --git a/spec/lib/admin/metrics/dimension/sources_dimension_spec.rb b/spec/lib/admin/metrics/dimension/sources_dimension_spec.rb
index 5fa5aa8af5..ca7f716afd 100644
--- a/spec/lib/admin/metrics/dimension/sources_dimension_spec.rb
+++ b/spec/lib/admin/metrics/dimension/sources_dimension_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Dimension::SourcesDimension do
+RSpec.describe Admin::Metrics::Dimension::SourcesDimension do
subject { described_class.new(start_at, end_at, limit, params) }
let(:start_at) { 2.days.ago }
diff --git a/spec/lib/admin/metrics/dimension/space_usage_dimension_spec.rb b/spec/lib/admin/metrics/dimension/space_usage_dimension_spec.rb
index 96ff9c66dc..4be5ed30ee 100644
--- a/spec/lib/admin/metrics/dimension/space_usage_dimension_spec.rb
+++ b/spec/lib/admin/metrics/dimension/space_usage_dimension_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Dimension::SpaceUsageDimension do
+RSpec.describe Admin::Metrics::Dimension::SpaceUsageDimension do
subject { described_class.new(start_at, end_at, limit, params) }
let(:start_at) { 2.days.ago }
diff --git a/spec/lib/admin/metrics/dimension/tag_languages_dimension_spec.rb b/spec/lib/admin/metrics/dimension/tag_languages_dimension_spec.rb
index c1dfd0eaf4..166edf92b0 100644
--- a/spec/lib/admin/metrics/dimension/tag_languages_dimension_spec.rb
+++ b/spec/lib/admin/metrics/dimension/tag_languages_dimension_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Dimension::TagLanguagesDimension do
+RSpec.describe Admin::Metrics::Dimension::TagLanguagesDimension do
subject { described_class.new(start_at, end_at, limit, params) }
let(:start_at) { 2.days.ago }
diff --git a/spec/lib/admin/metrics/dimension/tag_servers_dimension_spec.rb b/spec/lib/admin/metrics/dimension/tag_servers_dimension_spec.rb
index 025cf1b7ec..7391b55456 100644
--- a/spec/lib/admin/metrics/dimension/tag_servers_dimension_spec.rb
+++ b/spec/lib/admin/metrics/dimension/tag_servers_dimension_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Dimension::TagServersDimension do
+RSpec.describe Admin::Metrics::Dimension::TagServersDimension do
subject { described_class.new(start_at, end_at, limit, params) }
let(:start_at) { 2.days.ago }
diff --git a/spec/lib/admin/metrics/dimension_spec.rb b/spec/lib/admin/metrics/dimension_spec.rb
index 109250b72b..0a52d442be 100644
--- a/spec/lib/admin/metrics/dimension_spec.rb
+++ b/spec/lib/admin/metrics/dimension_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Dimension do
+RSpec.describe Admin::Metrics::Dimension do
describe '.retrieve' do
subject { described_class.retrieve(reports, start_at, end_at, 5, params) }
diff --git a/spec/lib/admin/metrics/measure/active_users_measure_spec.rb b/spec/lib/admin/metrics/measure/active_users_measure_spec.rb
index 38ee14075b..653e677354 100644
--- a/spec/lib/admin/metrics/measure/active_users_measure_spec.rb
+++ b/spec/lib/admin/metrics/measure/active_users_measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure::ActiveUsersMeasure do
+RSpec.describe Admin::Metrics::Measure::ActiveUsersMeasure do
subject { described_class.new(start_at, end_at, params) }
let(:start_at) { 2.days.ago }
diff --git a/spec/lib/admin/metrics/measure/instance_accounts_measure_spec.rb b/spec/lib/admin/metrics/measure/instance_accounts_measure_spec.rb
index 0d2ad31c39..f974f2ca46 100644
--- a/spec/lib/admin/metrics/measure/instance_accounts_measure_spec.rb
+++ b/spec/lib/admin/metrics/measure/instance_accounts_measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure::InstanceAccountsMeasure do
+RSpec.describe Admin::Metrics::Measure::InstanceAccountsMeasure do
subject { described_class.new(start_at, end_at, params) }
let(:domain) { 'example.com' }
diff --git a/spec/lib/admin/metrics/measure/instance_followers_measure_spec.rb b/spec/lib/admin/metrics/measure/instance_followers_measure_spec.rb
index 27bf30d17d..643249fa4e 100644
--- a/spec/lib/admin/metrics/measure/instance_followers_measure_spec.rb
+++ b/spec/lib/admin/metrics/measure/instance_followers_measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure::InstanceFollowersMeasure do
+RSpec.describe Admin::Metrics::Measure::InstanceFollowersMeasure do
subject { described_class.new(start_at, end_at, params) }
let(:domain) { 'example.com' }
diff --git a/spec/lib/admin/metrics/measure/instance_follows_measure_spec.rb b/spec/lib/admin/metrics/measure/instance_follows_measure_spec.rb
index 9961ea56c4..70f5004fef 100644
--- a/spec/lib/admin/metrics/measure/instance_follows_measure_spec.rb
+++ b/spec/lib/admin/metrics/measure/instance_follows_measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure::InstanceFollowsMeasure do
+RSpec.describe Admin::Metrics::Measure::InstanceFollowsMeasure do
subject { described_class.new(start_at, end_at, params) }
let(:domain) { 'example.com' }
diff --git a/spec/lib/admin/metrics/measure/instance_media_attachments_measure_spec.rb b/spec/lib/admin/metrics/measure/instance_media_attachments_measure_spec.rb
index 3634450930..11f13b85bc 100644
--- a/spec/lib/admin/metrics/measure/instance_media_attachments_measure_spec.rb
+++ b/spec/lib/admin/metrics/measure/instance_media_attachments_measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure::InstanceMediaAttachmentsMeasure do
+RSpec.describe Admin::Metrics::Measure::InstanceMediaAttachmentsMeasure do
subject { described_class.new(start_at, end_at, params) }
let(:domain) { 'example.com' }
diff --git a/spec/lib/admin/metrics/measure/instance_reports_measure_spec.rb b/spec/lib/admin/metrics/measure/instance_reports_measure_spec.rb
index ca64049d92..62c9dec464 100644
--- a/spec/lib/admin/metrics/measure/instance_reports_measure_spec.rb
+++ b/spec/lib/admin/metrics/measure/instance_reports_measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure::InstanceReportsMeasure do
+RSpec.describe Admin::Metrics::Measure::InstanceReportsMeasure do
subject { described_class.new(start_at, end_at, params) }
let(:domain) { 'example.com' }
diff --git a/spec/lib/admin/metrics/measure/instance_statuses_measure_spec.rb b/spec/lib/admin/metrics/measure/instance_statuses_measure_spec.rb
index ac28658ea0..0fc903a2a8 100644
--- a/spec/lib/admin/metrics/measure/instance_statuses_measure_spec.rb
+++ b/spec/lib/admin/metrics/measure/instance_statuses_measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure::InstanceStatusesMeasure do
+RSpec.describe Admin::Metrics::Measure::InstanceStatusesMeasure do
subject { described_class.new(start_at, end_at, params) }
let(:domain) { 'example.com' }
diff --git a/spec/lib/admin/metrics/measure/interactions_measure_spec.rb b/spec/lib/admin/metrics/measure/interactions_measure_spec.rb
index ed333380cf..edbec2eabf 100644
--- a/spec/lib/admin/metrics/measure/interactions_measure_spec.rb
+++ b/spec/lib/admin/metrics/measure/interactions_measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure::InteractionsMeasure do
+RSpec.describe Admin::Metrics::Measure::InteractionsMeasure do
subject { described_class.new(start_at, end_at, params) }
let(:start_at) { 2.days.ago }
diff --git a/spec/lib/admin/metrics/measure/new_users_measure_spec.rb b/spec/lib/admin/metrics/measure/new_users_measure_spec.rb
index 085acbcede..5c03b67a18 100644
--- a/spec/lib/admin/metrics/measure/new_users_measure_spec.rb
+++ b/spec/lib/admin/metrics/measure/new_users_measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure::NewUsersMeasure do
+RSpec.describe Admin::Metrics::Measure::NewUsersMeasure do
subject { described_class.new(start_at, end_at, params) }
let(:start_at) { 2.days.ago }
diff --git a/spec/lib/admin/metrics/measure/opened_reports_measure_spec.rb b/spec/lib/admin/metrics/measure/opened_reports_measure_spec.rb
index d5ba78527e..f4d3a66454 100644
--- a/spec/lib/admin/metrics/measure/opened_reports_measure_spec.rb
+++ b/spec/lib/admin/metrics/measure/opened_reports_measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure::OpenedReportsMeasure do
+RSpec.describe Admin::Metrics::Measure::OpenedReportsMeasure do
subject { described_class.new(start_at, end_at, params) }
let(:start_at) { 2.days.ago }
diff --git a/spec/lib/admin/metrics/measure/resolved_reports_measure_spec.rb b/spec/lib/admin/metrics/measure/resolved_reports_measure_spec.rb
index f7b497590d..432dbbe796 100644
--- a/spec/lib/admin/metrics/measure/resolved_reports_measure_spec.rb
+++ b/spec/lib/admin/metrics/measure/resolved_reports_measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure::ResolvedReportsMeasure do
+RSpec.describe Admin::Metrics::Measure::ResolvedReportsMeasure do
subject { described_class.new(start_at, end_at, params) }
let(:start_at) { 2.days.ago }
diff --git a/spec/lib/admin/metrics/measure/tag_accounts_measure_spec.rb b/spec/lib/admin/metrics/measure/tag_accounts_measure_spec.rb
index b33ae7bb71..577b1260ff 100644
--- a/spec/lib/admin/metrics/measure/tag_accounts_measure_spec.rb
+++ b/spec/lib/admin/metrics/measure/tag_accounts_measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure::TagAccountsMeasure do
+RSpec.describe Admin::Metrics::Measure::TagAccountsMeasure do
subject { described_class.new(start_at, end_at, params) }
let!(:tag) { Fabricate(:tag) }
diff --git a/spec/lib/admin/metrics/measure/tag_servers_measure_spec.rb b/spec/lib/admin/metrics/measure/tag_servers_measure_spec.rb
index e1e2ced43a..42715e5adc 100644
--- a/spec/lib/admin/metrics/measure/tag_servers_measure_spec.rb
+++ b/spec/lib/admin/metrics/measure/tag_servers_measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure::TagServersMeasure do
+RSpec.describe Admin::Metrics::Measure::TagServersMeasure do
subject { described_class.new(start_at, end_at, params) }
let!(:tag) { Fabricate(:tag) }
diff --git a/spec/lib/admin/metrics/measure/tag_uses_measure_spec.rb b/spec/lib/admin/metrics/measure/tag_uses_measure_spec.rb
index dd66f00de0..b258455dab 100644
--- a/spec/lib/admin/metrics/measure/tag_uses_measure_spec.rb
+++ b/spec/lib/admin/metrics/measure/tag_uses_measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure::TagUsesMeasure do
+RSpec.describe Admin::Metrics::Measure::TagUsesMeasure do
subject { described_class.new(start_at, end_at, params) }
let!(:tag) { Fabricate(:tag) }
diff --git a/spec/lib/admin/metrics/measure_spec.rb b/spec/lib/admin/metrics/measure_spec.rb
index c9809b0f79..49a5aecc61 100644
--- a/spec/lib/admin/metrics/measure_spec.rb
+++ b/spec/lib/admin/metrics/measure_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::Metrics::Measure do
+RSpec.describe Admin::Metrics::Measure do
describe '.retrieve' do
subject { described_class.retrieve(reports, start_at, end_at, params) }
diff --git a/spec/lib/admin/system_check/base_check_spec.rb b/spec/lib/admin/system_check/base_check_spec.rb
index fdd9f6b6c4..769e0e1d18 100644
--- a/spec/lib/admin/system_check/base_check_spec.rb
+++ b/spec/lib/admin/system_check/base_check_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::SystemCheck::BaseCheck do
+RSpec.describe Admin::SystemCheck::BaseCheck do
subject(:check) { described_class.new(user) }
let(:user) { Fabricate(:user) }
diff --git a/spec/lib/admin/system_check/database_schema_check_spec.rb b/spec/lib/admin/system_check/database_schema_check_spec.rb
index db1dcb52fa..311d524956 100644
--- a/spec/lib/admin/system_check/database_schema_check_spec.rb
+++ b/spec/lib/admin/system_check/database_schema_check_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::SystemCheck::DatabaseSchemaCheck do
+RSpec.describe Admin::SystemCheck::DatabaseSchemaCheck do
subject(:check) { described_class.new(user) }
let(:user) { Fabricate(:user) }
diff --git a/spec/lib/admin/system_check/elasticsearch_check_spec.rb b/spec/lib/admin/system_check/elasticsearch_check_spec.rb
index 8f210579d0..05d204c453 100644
--- a/spec/lib/admin/system_check/elasticsearch_check_spec.rb
+++ b/spec/lib/admin/system_check/elasticsearch_check_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::SystemCheck::ElasticsearchCheck do
+RSpec.describe Admin::SystemCheck::ElasticsearchCheck do
subject(:check) { described_class.new(user) }
let(:user) { Fabricate(:user) }
diff --git a/spec/lib/admin/system_check/media_privacy_check_spec.rb b/spec/lib/admin/system_check/media_privacy_check_spec.rb
index 316bf12156..0d5bcdb3e8 100644
--- a/spec/lib/admin/system_check/media_privacy_check_spec.rb
+++ b/spec/lib/admin/system_check/media_privacy_check_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::SystemCheck::MediaPrivacyCheck do
+RSpec.describe Admin::SystemCheck::MediaPrivacyCheck do
subject(:check) { described_class.new(user) }
let(:user) { Fabricate(:user) }
diff --git a/spec/lib/admin/system_check/message_spec.rb b/spec/lib/admin/system_check/message_spec.rb
index c0671f3452..81ef4f2f09 100644
--- a/spec/lib/admin/system_check/message_spec.rb
+++ b/spec/lib/admin/system_check/message_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::SystemCheck::Message do
+RSpec.describe Admin::SystemCheck::Message do
subject(:check) { described_class.new(:key_value, :value_value, :action_value, :critical_value) }
it 'providers readers when initialized' do
diff --git a/spec/lib/admin/system_check/rules_check_spec.rb b/spec/lib/admin/system_check/rules_check_spec.rb
index fb3293fb2d..32650d9cd8 100644
--- a/spec/lib/admin/system_check/rules_check_spec.rb
+++ b/spec/lib/admin/system_check/rules_check_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::SystemCheck::RulesCheck do
+RSpec.describe Admin::SystemCheck::RulesCheck do
subject(:check) { described_class.new(user) }
let(:user) { Fabricate(:user) }
diff --git a/spec/lib/admin/system_check/sidekiq_process_check_spec.rb b/spec/lib/admin/system_check/sidekiq_process_check_spec.rb
index 9bd9daddf6..992fd7aee0 100644
--- a/spec/lib/admin/system_check/sidekiq_process_check_spec.rb
+++ b/spec/lib/admin/system_check/sidekiq_process_check_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::SystemCheck::SidekiqProcessCheck do
+RSpec.describe Admin::SystemCheck::SidekiqProcessCheck do
subject(:check) { described_class.new(user) }
let(:user) { Fabricate(:user) }
diff --git a/spec/lib/admin/system_check/software_version_check_spec.rb b/spec/lib/admin/system_check/software_version_check_spec.rb
index de4335fc51..1affaa3a96 100644
--- a/spec/lib/admin/system_check/software_version_check_spec.rb
+++ b/spec/lib/admin/system_check/software_version_check_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::SystemCheck::SoftwareVersionCheck do
+RSpec.describe Admin::SystemCheck::SoftwareVersionCheck do
include RoutingHelper
subject(:check) { described_class.new(user) }
diff --git a/spec/lib/admin/system_check_spec.rb b/spec/lib/admin/system_check_spec.rb
index 30048fd3ad..92852ab025 100644
--- a/spec/lib/admin/system_check_spec.rb
+++ b/spec/lib/admin/system_check_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Admin::SystemCheck do
+RSpec.describe Admin::SystemCheck do
let(:user) { Fabricate(:user) }
describe 'perform' do
diff --git a/spec/lib/annual_report_spec.rb b/spec/lib/annual_report_spec.rb
index ffb742697b..bd4d0f3387 100644
--- a/spec/lib/annual_report_spec.rb
+++ b/spec/lib/annual_report_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe AnnualReport do
+RSpec.describe AnnualReport do
describe '#generate' do
subject { described_class.new(account, Time.zone.now.year) }
diff --git a/spec/lib/cache_buster_spec.rb b/spec/lib/cache_buster_spec.rb
index 84085608e8..f7cff9c1c3 100644
--- a/spec/lib/cache_buster_spec.rb
+++ b/spec/lib/cache_buster_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe CacheBuster do
+RSpec.describe CacheBuster do
subject { described_class.new(secret_header: secret_header, secret: secret, http_method: http_method) }
let(:secret_header) { nil }
diff --git a/spec/lib/connection_pool/shared_connection_pool_spec.rb b/spec/lib/connection_pool/shared_connection_pool_spec.rb
index a2fe75f742..2352703b5a 100644
--- a/spec/lib/connection_pool/shared_connection_pool_spec.rb
+++ b/spec/lib/connection_pool/shared_connection_pool_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe ConnectionPool::SharedConnectionPool do
+RSpec.describe ConnectionPool::SharedConnectionPool do
subject { described_class.new(size: 5, timeout: 5) { |site| mini_connection_class.new(site) } }
let(:mini_connection_class) do
diff --git a/spec/lib/connection_pool/shared_timed_stack_spec.rb b/spec/lib/connection_pool/shared_timed_stack_spec.rb
index 04d550eec5..7469664ea0 100644
--- a/spec/lib/connection_pool/shared_timed_stack_spec.rb
+++ b/spec/lib/connection_pool/shared_timed_stack_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe ConnectionPool::SharedTimedStack do
+RSpec.describe ConnectionPool::SharedTimedStack do
subject { described_class.new(5) { |site| mini_connection_class.new(site) } }
let(:mini_connection_class) do
diff --git a/spec/lib/content_security_policy_spec.rb b/spec/lib/content_security_policy_spec.rb
index 27a3e80257..5ecea60543 100644
--- a/spec/lib/content_security_policy_spec.rb
+++ b/spec/lib/content_security_policy_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe ContentSecurityPolicy do
+RSpec.describe ContentSecurityPolicy do
subject { described_class.new }
around do |example|
diff --git a/spec/lib/delivery_failure_tracker_spec.rb b/spec/lib/delivery_failure_tracker_spec.rb
index c8179ebd91..40c8adc4c8 100644
--- a/spec/lib/delivery_failure_tracker_spec.rb
+++ b/spec/lib/delivery_failure_tracker_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe DeliveryFailureTracker do
+RSpec.describe DeliveryFailureTracker do
subject { described_class.new('http://example.com/inbox') }
describe '#track_success!' do
diff --git a/spec/lib/extractor_spec.rb b/spec/lib/extractor_spec.rb
index af5c62d4c8..bc3ee8ac49 100644
--- a/spec/lib/extractor_spec.rb
+++ b/spec/lib/extractor_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Extractor do
+RSpec.describe Extractor do
describe 'extract_mentions_or_lists_with_indices' do
it 'returns an empty array if the given string does not have at signs' do
text = 'a string without at signs'
diff --git a/spec/lib/fast_ip_map_spec.rb b/spec/lib/fast_ip_map_spec.rb
index 78b3ddb054..a3a647e3e3 100644
--- a/spec/lib/fast_ip_map_spec.rb
+++ b/spec/lib/fast_ip_map_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe FastIpMap do
+RSpec.describe FastIpMap do
describe '#include?' do
subject { described_class.new([IPAddr.new('20.4.0.0/16'), IPAddr.new('145.22.30.0/24'), IPAddr.new('189.45.86.3')]) }
diff --git a/spec/lib/hashtag_normalizer_spec.rb b/spec/lib/hashtag_normalizer_spec.rb
index fbb9f37c07..796445043a 100644
--- a/spec/lib/hashtag_normalizer_spec.rb
+++ b/spec/lib/hashtag_normalizer_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe HashtagNormalizer do
+RSpec.describe HashtagNormalizer do
subject { described_class.new }
describe '#normalize' do
diff --git a/spec/lib/importer/accounts_index_importer_spec.rb b/spec/lib/importer/accounts_index_importer_spec.rb
index 73f9bce399..a5d11c747a 100644
--- a/spec/lib/importer/accounts_index_importer_spec.rb
+++ b/spec/lib/importer/accounts_index_importer_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Importer::AccountsIndexImporter do
+RSpec.describe Importer::AccountsIndexImporter do
describe 'import!' do
let(:pool) { Concurrent::FixedThreadPool.new(5) }
let(:importer) { described_class.new(batch_size: 123, executor: pool) }
diff --git a/spec/lib/importer/base_importer_spec.rb b/spec/lib/importer/base_importer_spec.rb
index 78e9a869b8..0d12f975aa 100644
--- a/spec/lib/importer/base_importer_spec.rb
+++ b/spec/lib/importer/base_importer_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Importer::BaseImporter do
+RSpec.describe Importer::BaseImporter do
describe 'import!' do
let(:pool) { Concurrent::FixedThreadPool.new(5) }
let(:importer) { described_class.new(batch_size: 123, executor: pool) }
diff --git a/spec/lib/importer/public_statuses_index_importer_spec.rb b/spec/lib/importer/public_statuses_index_importer_spec.rb
index bc7c038a97..2407717409 100644
--- a/spec/lib/importer/public_statuses_index_importer_spec.rb
+++ b/spec/lib/importer/public_statuses_index_importer_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Importer::PublicStatusesIndexImporter do
+RSpec.describe Importer::PublicStatusesIndexImporter do
describe 'import!' do
let(:pool) { Concurrent::FixedThreadPool.new(5) }
let(:importer) { described_class.new(batch_size: 123, executor: pool) }
diff --git a/spec/lib/importer/statuses_index_importer_spec.rb b/spec/lib/importer/statuses_index_importer_spec.rb
index d5e1c9f2cb..f6fac3bd67 100644
--- a/spec/lib/importer/statuses_index_importer_spec.rb
+++ b/spec/lib/importer/statuses_index_importer_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Importer::StatusesIndexImporter do
+RSpec.describe Importer::StatusesIndexImporter do
describe 'import!' do
let(:pool) { Concurrent::FixedThreadPool.new(5) }
let(:importer) { described_class.new(batch_size: 123, executor: pool) }
diff --git a/spec/lib/importer/tags_index_importer_spec.rb b/spec/lib/importer/tags_index_importer_spec.rb
index 348990c01e..44de9e7c34 100644
--- a/spec/lib/importer/tags_index_importer_spec.rb
+++ b/spec/lib/importer/tags_index_importer_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Importer::TagsIndexImporter do
+RSpec.describe Importer::TagsIndexImporter do
describe 'import!' do
let(:pool) { Concurrent::FixedThreadPool.new(5) }
let(:importer) { described_class.new(batch_size: 123, executor: pool) }
diff --git a/spec/lib/mastodon/cli/accounts_spec.rb b/spec/lib/mastodon/cli/accounts_spec.rb
index 3988e0b027..f6cc28297a 100644
--- a/spec/lib/mastodon/cli/accounts_spec.rb
+++ b/spec/lib/mastodon/cli/accounts_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/accounts'
-describe Mastodon::CLI::Accounts do
+RSpec.describe Mastodon::CLI::Accounts do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/cli/cache_spec.rb b/spec/lib/mastodon/cli/cache_spec.rb
index 247a14f9e2..dc571238d2 100644
--- a/spec/lib/mastodon/cli/cache_spec.rb
+++ b/spec/lib/mastodon/cli/cache_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/cache'
-describe Mastodon::CLI::Cache do
+RSpec.describe Mastodon::CLI::Cache do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/cli/canonical_email_blocks_spec.rb b/spec/lib/mastodon/cli/canonical_email_blocks_spec.rb
index 1745ea01bf..faa5ec7cb8 100644
--- a/spec/lib/mastodon/cli/canonical_email_blocks_spec.rb
+++ b/spec/lib/mastodon/cli/canonical_email_blocks_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/canonical_email_blocks'
-describe Mastodon::CLI::CanonicalEmailBlocks do
+RSpec.describe Mastodon::CLI::CanonicalEmailBlocks do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/cli/domains_spec.rb b/spec/lib/mastodon/cli/domains_spec.rb
index 448e6fe42b..d1c26546f0 100644
--- a/spec/lib/mastodon/cli/domains_spec.rb
+++ b/spec/lib/mastodon/cli/domains_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/domains'
-describe Mastodon::CLI::Domains do
+RSpec.describe Mastodon::CLI::Domains do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/cli/email_domain_blocks_spec.rb b/spec/lib/mastodon/cli/email_domain_blocks_spec.rb
index 55e3da0bb8..a5fbd23e65 100644
--- a/spec/lib/mastodon/cli/email_domain_blocks_spec.rb
+++ b/spec/lib/mastodon/cli/email_domain_blocks_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/email_domain_blocks'
-describe Mastodon::CLI::EmailDomainBlocks do
+RSpec.describe Mastodon::CLI::EmailDomainBlocks do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/cli/emoji_spec.rb b/spec/lib/mastodon/cli/emoji_spec.rb
index d05e972e77..4336db17d3 100644
--- a/spec/lib/mastodon/cli/emoji_spec.rb
+++ b/spec/lib/mastodon/cli/emoji_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/emoji'
-describe Mastodon::CLI::Emoji do
+RSpec.describe Mastodon::CLI::Emoji do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/cli/feeds_spec.rb b/spec/lib/mastodon/cli/feeds_spec.rb
index 420cb3d587..75a8cb3ebc 100644
--- a/spec/lib/mastodon/cli/feeds_spec.rb
+++ b/spec/lib/mastodon/cli/feeds_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/feeds'
-describe Mastodon::CLI::Feeds do
+RSpec.describe Mastodon::CLI::Feeds do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/cli/ip_blocks_spec.rb b/spec/lib/mastodon/cli/ip_blocks_spec.rb
index d44b1b9fe4..68d6b19859 100644
--- a/spec/lib/mastodon/cli/ip_blocks_spec.rb
+++ b/spec/lib/mastodon/cli/ip_blocks_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/ip_blocks'
-describe Mastodon::CLI::IpBlocks do
+RSpec.describe Mastodon::CLI::IpBlocks do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/cli/main_spec.rb b/spec/lib/mastodon/cli/main_spec.rb
index 99d770a81d..a63b798683 100644
--- a/spec/lib/mastodon/cli/main_spec.rb
+++ b/spec/lib/mastodon/cli/main_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/main'
-describe Mastodon::CLI::Main do
+RSpec.describe Mastodon::CLI::Main do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/cli/maintenance_spec.rb b/spec/lib/mastodon/cli/maintenance_spec.rb
index cde25d39ed..6a15677f43 100644
--- a/spec/lib/mastodon/cli/maintenance_spec.rb
+++ b/spec/lib/mastodon/cli/maintenance_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/maintenance'
-describe Mastodon::CLI::Maintenance do
+RSpec.describe Mastodon::CLI::Maintenance do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/cli/media_spec.rb b/spec/lib/mastodon/cli/media_spec.rb
index ecc7101b6c..fa7a3161d0 100644
--- a/spec/lib/mastodon/cli/media_spec.rb
+++ b/spec/lib/mastodon/cli/media_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/media'
-describe Mastodon::CLI::Media do
+RSpec.describe Mastodon::CLI::Media do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/cli/preview_cards_spec.rb b/spec/lib/mastodon/cli/preview_cards_spec.rb
index 951ae3758f..949787a759 100644
--- a/spec/lib/mastodon/cli/preview_cards_spec.rb
+++ b/spec/lib/mastodon/cli/preview_cards_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/preview_cards'
-describe Mastodon::CLI::PreviewCards do
+RSpec.describe Mastodon::CLI::PreviewCards do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/cli/search_spec.rb b/spec/lib/mastodon/cli/search_spec.rb
index ed3789c3e7..8a6c2492aa 100644
--- a/spec/lib/mastodon/cli/search_spec.rb
+++ b/spec/lib/mastodon/cli/search_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/search'
-describe Mastodon::CLI::Search do
+RSpec.describe Mastodon::CLI::Search do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/cli/settings_spec.rb b/spec/lib/mastodon/cli/settings_spec.rb
index e1b353eb90..5565b798ef 100644
--- a/spec/lib/mastodon/cli/settings_spec.rb
+++ b/spec/lib/mastodon/cli/settings_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/settings'
-describe Mastodon::CLI::Settings do
+RSpec.describe Mastodon::CLI::Settings do
it_behaves_like 'CLI Command'
describe 'subcommand "registrations"' do
diff --git a/spec/lib/mastodon/cli/statuses_spec.rb b/spec/lib/mastodon/cli/statuses_spec.rb
index 161b7c02bb..2597ad7f27 100644
--- a/spec/lib/mastodon/cli/statuses_spec.rb
+++ b/spec/lib/mastodon/cli/statuses_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/statuses'
-describe Mastodon::CLI::Statuses do
+RSpec.describe Mastodon::CLI::Statuses do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/cli/upgrade_spec.rb b/spec/lib/mastodon/cli/upgrade_spec.rb
index 6861e04887..6861e1a068 100644
--- a/spec/lib/mastodon/cli/upgrade_spec.rb
+++ b/spec/lib/mastodon/cli/upgrade_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/cli/upgrade'
-describe Mastodon::CLI::Upgrade do
+RSpec.describe Mastodon::CLI::Upgrade do
subject { cli.invoke(action, arguments, options) }
let(:cli) { described_class.new }
diff --git a/spec/lib/mastodon/migration_warning_spec.rb b/spec/lib/mastodon/migration_warning_spec.rb
index 4adf0837ab..d796d1e902 100644
--- a/spec/lib/mastodon/migration_warning_spec.rb
+++ b/spec/lib/mastodon/migration_warning_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'mastodon/migration_warning'
-describe Mastodon::MigrationWarning do
+RSpec.describe Mastodon::MigrationWarning do
describe 'migration_duration_warning' do
before do
allow(migration).to receive(:valid_environment?).and_return(true)
diff --git a/spec/lib/mastodon/redis_configuration_spec.rb b/spec/lib/mastodon/redis_configuration_spec.rb
index c7326fd411..a48ffc80e6 100644
--- a/spec/lib/mastodon/redis_configuration_spec.rb
+++ b/spec/lib/mastodon/redis_configuration_spec.rb
@@ -45,6 +45,20 @@ RSpec.describe Mastodon::RedisConfiguration do
it 'uses the url from the base config' do
expect(subject[:url]).to eq 'redis://localhost:6379/0'
end
+
+ context 'when the base config uses sentinel' do
+ around do |example|
+ ClimateControl.modify REDIS_SENTINELS: '192.168.0.1:3000,192.168.0.2:4000', REDIS_SENTINEL_MASTER: 'mainsentinel' do
+ example.run
+ end
+ end
+
+ it 'uses the sentinel configuration from base config' do
+ expect(subject[:url]).to eq 'redis://mainsentinel/0'
+ expect(subject[:name]).to eq 'mainsentinel'
+ expect(subject[:sentinels]).to contain_exactly({ host: '192.168.0.1', port: 3000 }, { host: '192.168.0.2', port: 4000 })
+ end
+ end
end
context "when the `#{prefix}_REDIS_URL` environment variable is present" do
@@ -72,6 +86,39 @@ RSpec.describe Mastodon::RedisConfiguration do
end
end
+ shared_examples 'sentinel support' do |prefix = nil|
+ prefix = prefix ? "#{prefix}_" : ''
+
+ context 'when configuring sentinel support' do
+ around do |example|
+ ClimateControl.modify "#{prefix}REDIS_PASSWORD": 'testpass1', "#{prefix}REDIS_HOST": 'redis2.example.com', "#{prefix}REDIS_SENTINELS": '192.168.0.1:3000,192.168.0.2:4000', "#{prefix}REDIS_SENTINEL_MASTER": 'mainsentinel' do
+ example.run
+ end
+ end
+
+ it 'constructs the url using the sentinel master name' do
+ expect(subject[:url]).to eq 'redis://:testpass1@mainsentinel/0'
+ end
+
+ it 'includes the sentinel master name and list of sentinels' do
+ expect(subject[:name]).to eq 'mainsentinel'
+ expect(subject[:sentinels]).to contain_exactly({ host: '192.168.0.1', port: 3000 }, { host: '192.168.0.2', port: 4000 })
+ end
+ end
+
+ context 'when giving sentinels without port numbers' do
+ around do |example|
+ ClimateControl.modify "#{prefix}REDIS_SENTINELS": '192.168.0.1,192.168.0.2', "#{prefix}REDIS_SENTINEL_MASTER": 'mainsentinel' do
+ example.run
+ end
+ end
+
+ it 'uses the default sentinel port' do
+ expect(subject[:sentinels]).to contain_exactly({ host: '192.168.0.1', port: 26_379 }, { host: '192.168.0.2', port: 26_379 })
+ end
+ end
+ end
+
describe '#base' do
subject { redis_environment.base }
@@ -81,6 +128,8 @@ RSpec.describe Mastodon::RedisConfiguration do
url: 'redis://localhost:6379/0',
driver: :hiredis,
namespace: nil,
+ name: nil,
+ sentinels: nil,
})
end
end
@@ -113,12 +162,15 @@ RSpec.describe Mastodon::RedisConfiguration do
url: 'redis://:testpass@redis.example.com:3333/3',
driver: :hiredis,
namespace: nil,
+ name: nil,
+ sentinels: nil,
})
end
end
include_examples 'setting a different driver'
include_examples 'setting a namespace'
+ include_examples 'sentinel support'
end
describe '#sidekiq' do
@@ -127,6 +179,7 @@ RSpec.describe Mastodon::RedisConfiguration do
include_examples 'secondary configuration', 'SIDEKIQ'
include_examples 'setting a different driver'
include_examples 'setting a namespace'
+ include_examples 'sentinel support', 'SIDEKIQ'
end
describe '#cache' do
@@ -139,6 +192,8 @@ RSpec.describe Mastodon::RedisConfiguration do
namespace: 'cache',
expires_in: 10.minutes,
connect_timeout: 5,
+ name: nil,
+ sentinels: nil,
pool: {
size: 5,
timeout: 5,
@@ -166,5 +221,6 @@ RSpec.describe Mastodon::RedisConfiguration do
include_examples 'secondary configuration', 'CACHE'
include_examples 'setting a different driver'
+ include_examples 'sentinel support', 'CACHE'
end
end
diff --git a/spec/lib/ostatus/tag_manager_spec.rb b/spec/lib/ostatus/tag_manager_spec.rb
index 0e20f26c7c..f808b96289 100644
--- a/spec/lib/ostatus/tag_manager_spec.rb
+++ b/spec/lib/ostatus/tag_manager_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe OStatus::TagManager do
+RSpec.describe OStatus::TagManager do
describe '#unique_tag' do
it 'returns a unique tag' do
expect(described_class.instance.unique_tag(Time.utc(2000), 12, 'Status')).to eq 'tag:cb6e6126.ngrok.io,2000-01-01:objectId=12:objectType=Status'
diff --git a/spec/lib/paperclip/response_with_limit_adapter_spec.rb b/spec/lib/paperclip/response_with_limit_adapter_spec.rb
index baf8bf5bb7..3db52ffa0d 100644
--- a/spec/lib/paperclip/response_with_limit_adapter_spec.rb
+++ b/spec/lib/paperclip/response_with_limit_adapter_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Paperclip::ResponseWithLimitAdapter do
+RSpec.describe Paperclip::ResponseWithLimitAdapter do
subject { described_class.new(response_with_limit) }
before { stub_request(:get, url).to_return(headers: headers, body: body) }
diff --git a/spec/lib/permalink_redirector_spec.rb b/spec/lib/permalink_redirector_spec.rb
index a009136561..3f77d7665a 100644
--- a/spec/lib/permalink_redirector_spec.rb
+++ b/spec/lib/permalink_redirector_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe PermalinkRedirector do
+RSpec.describe PermalinkRedirector do
let(:remote_account) { Fabricate(:account, username: 'alice', domain: 'example.com', url: 'https://example.com/@alice', id: 2) }
describe '#redirect_url' do
diff --git a/spec/lib/request_pool_spec.rb b/spec/lib/request_pool_spec.rb
index a82eb5a188..2e8c785de8 100644
--- a/spec/lib/request_pool_spec.rb
+++ b/spec/lib/request_pool_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe RequestPool do
+RSpec.describe RequestPool do
subject { described_class.new }
describe '#with' do
diff --git a/spec/lib/request_spec.rb b/spec/lib/request_spec.rb
index c99f18838b..c600a48ee2 100644
--- a/spec/lib/request_spec.rb
+++ b/spec/lib/request_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require 'securerandom'
-describe Request do
+RSpec.describe Request do
subject { described_class.new(:get, 'http://example.com') }
describe '#headers' do
diff --git a/spec/lib/sanitize/config_spec.rb b/spec/lib/sanitize/config_spec.rb
index a1e39153e6..c2008544f5 100644
--- a/spec/lib/sanitize/config_spec.rb
+++ b/spec/lib/sanitize/config_spec.rb
@@ -2,7 +2,7 @@
require 'rails_helper'
-describe Sanitize::Config do
+RSpec.describe Sanitize::Config do
shared_examples 'common HTML sanitization' do
it 'keeps h1' do
expect(Sanitize.fragment('