Merge commit 'a1ddaa9ee96ab1d05f4e37f3472b0418e0d5628e' into glitch-soc/merge-upstream

This commit is contained in:
Claire 2024-08-14 21:17:43 +02:00
commit 169b35869f
69 changed files with 874 additions and 402 deletions

View file

@ -87,6 +87,7 @@
},
{
// Update devDependencies every week, with one grouped PR
matchManagers: ['npm'],
matchDepTypes: 'devDependencies',
matchUpdateTypes: ['patch', 'minor'],
groupName: 'devDependencies (non-major)',
@ -95,8 +96,7 @@
{
// Group all eslint-related packages with `eslint` in the same PR
matchManagers: ['npm'],
matchPackageNames: ['eslint'],
matchPackagePrefixes: ['eslint-', '@typescript-eslint/'],
matchPackageNames: ['eslint', 'eslint-*', '@typescript-eslint/*'],
matchUpdateTypes: ['patch', 'minor'],
groupName: 'eslint (non-major)',
},
@ -112,7 +112,8 @@
},
{
// Update @types/* packages every week, with one grouped PR
matchPackagePrefixes: '@types/',
matchManagers: ['npm'],
matchPackageNames: '@types/*',
matchUpdateTypes: ['patch', 'minor'],
groupName: 'DefinitelyTyped types (non-major)',
extends: ['schedule:weekly'],
@ -129,23 +130,21 @@
{
// Group all RuboCop packages with `rubocop` in the same PR
matchManagers: ['bundler'],
matchPackageNames: ['rubocop'],
matchPackagePrefixes: ['rubocop-'],
matchPackageNames: ['rubocop', 'rubocop-*'],
matchUpdateTypes: ['patch', 'minor'],
groupName: 'RuboCop (non-major)',
},
{
// Group all RSpec packages with `rspec` in the same PR
matchManagers: ['bundler'],
matchPackageNames: ['rspec'],
matchPackagePrefixes: ['rspec-'],
matchPackageNames: ['rspec', 'rspec-*'],
matchUpdateTypes: ['patch', 'minor'],
groupName: 'RSpec (non-major)',
},
{
// Group all opentelemetry-ruby packages in the same PR
matchManagers: ['bundler'],
matchPackagePrefixes: ['opentelemetry-'],
matchPackageNames: ['opentelemetry-*'],
matchUpdateTypes: ['patch', 'minor'],
groupName: 'opentelemetry-ruby (non-major)',
},

View file

@ -85,7 +85,7 @@ jobs:
tags: ${{ inputs.tags }}
labels: ${{ inputs.labels }}
- uses: docker/build-push-action@v5
- uses: docker/build-push-action@v6
with:
context: .
file: ${{ inputs.file_to_build }}

View file

@ -26,7 +26,7 @@ jobs:
# Download the translation files from Crowdin
- name: crowdin action
uses: crowdin/github-action@v1
uses: crowdin/github-action@v2
with:
config: crowdin-glitch.yml
upload_sources: false

View file

@ -26,7 +26,7 @@ jobs:
uses: actions/checkout@v4
- name: crowdin action
uses: crowdin/github-action@v1
uses: crowdin/github-action@v2
with:
config: crowdin-glitch.yml
upload_sources: true

View file

@ -10,6 +10,7 @@ permissions:
jobs:
label-rebase-needed:
runs-on: ubuntu-latest
if: github.repository == 'mastodon/mastodon'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}

View file

@ -40,7 +40,6 @@ Style/FetchEnvVar:
- 'config/environments/production.rb'
- 'config/initializers/2_limited_federation_mode.rb'
- 'config/initializers/3_omniauth.rb'
- 'config/initializers/blacklists.rb'
- 'config/initializers/cache_buster.rb'
- 'config/initializers/devise.rb'
- 'config/initializers/paperclip.rb'

View file

@ -191,7 +191,7 @@ FROM build AS libvips
# libvips version to compile, change with [--build-arg VIPS_VERSION="8.15.2"]
# renovate: datasource=github-releases depName=libvips packageName=libvips/libvips
ARG VIPS_VERSION=8.15.2
ARG VIPS_VERSION=8.15.3
# libvips download URL, change with [--build-arg VIPS_URL="https://github.com/libvips/libvips/releases/download"]
ARG VIPS_URL=https://github.com/libvips/libvips/releases/download

View file

@ -168,7 +168,7 @@ GEM
climate_control (1.2.0)
cocoon (1.2.15)
color_diff (0.1)
concurrent-ruby (1.3.3)
concurrent-ruby (1.3.4)
connection_pool (2.4.1)
cose (1.3.0)
cbor (~> 0.5.9)
@ -460,8 +460,9 @@ GEM
concurrent-ruby (~> 1.0, >= 1.0.2)
sidekiq (>= 3.5)
statsd-ruby (~> 1.4, >= 1.4.0)
oj (3.16.4)
oj (3.16.5)
bigdecimal (>= 3.0)
ostruct (>= 0.2)
omniauth (2.1.2)
hashie (>= 3.4.6)
rack (>= 2.2.3)
@ -582,6 +583,7 @@ GEM
opentelemetry-semantic_conventions (1.10.1)
opentelemetry-api (~> 1.0)
orm_adapter (0.5.0)
ostruct (0.6.0)
ox (2.14.18)
parallel (1.25.1)
parser (3.3.4.0)
@ -601,7 +603,7 @@ GEM
actionmailer (>= 3)
net-smtp
premailer (~> 1.7, >= 1.7.9)
propshaft (0.9.0)
propshaft (0.9.1)
actionpack (>= 7.0.0)
activesupport (>= 7.0.0)
rack
@ -904,7 +906,7 @@ GEM
xorcist (1.1.3)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.16)
zeitwerk (2.6.17)
PLATFORMS
ruby

View file

@ -187,4 +187,15 @@ class Auth::SessionsController < Devise::SessionsController
def second_factor_attempts_key(user)
"2fa_auth_attempts:#{user.id}:#{Time.now.utc.hour}"
end
def respond_to_on_destroy
respond_to do |format|
format.json do
render json: {
redirect_to: after_sign_out_path_for(resource_name),
}, status: 200
end
format.all { super }
end
end
end

View file

@ -47,7 +47,7 @@ function dispatchAssociatedRecords(
fetchedAccounts.push(notification.moderation_warning.target_account);
}
if ('status' in notification) {
if ('status' in notification && notification.status) {
fetchedStatuses.push(notification.status);
}
});
@ -119,7 +119,7 @@ export const processNewNotificationForGroups = createAppAsyncThunk(
if (
(notification.type === 'mention' || notification.type === 'update') &&
notification.status.filtered
notification.status?.filtered
) {
const filters = notification.status.filtered.filter((result) =>
result.filter.context.includes('notifications'),

View file

@ -60,12 +60,12 @@ export interface BaseNotificationGroupJSON {
interface NotificationGroupWithStatusJSON extends BaseNotificationGroupJSON {
type: NotificationWithStatusType;
status_id: string;
status_id: string | null;
}
interface NotificationWithStatusJSON extends BaseNotificationJSON {
type: NotificationWithStatusType;
status: ApiStatusJSON;
status: ApiStatusJSON | null;
}
interface ReportNotificationGroupJSON extends BaseNotificationGroupJSON {

View file

@ -1,12 +1,15 @@
import { FormattedMessage } from 'react-intl';
import classNames from 'classnames';
interface Props {
resource: JSX.Element;
url: string;
className?: string;
}
export const TimelineHint: React.FC<Props> = ({ resource, url }) => (
<div className='timeline-hint'>
export const TimelineHint: React.FC<Props> = ({ className, resource, url }) => (
<div className={classNames('timeline-hint', className)}>
<strong>
<FormattedMessage
id='timeline_hint.remote_resource_not_displayed'

View file

@ -45,14 +45,18 @@ class ColumnSettings extends PureComponent {
return (
<div className='column-settings'>
{alertsEnabled && browserSupport && browserPermission === 'denied' && (
<span className='warning-hint'><FormattedMessage id='notifications.permission_denied' defaultMessage='Desktop notifications are unavailable due to previously denied browser permissions request' /></span>
)}
<section>
<ClearColumnButton onClick={onClear} />
</section>
{alertsEnabled && browserSupport && browserPermission === 'denied' && (
<section>
<span className='warning-hint'>
<FormattedMessage id='notifications.permission_denied' defaultMessage='Desktop notifications are unavailable due to previously denied browser permissions request' />
</span>
</section>
)}
{alertsEnabled && browserSupport && browserPermission === 'default' && (
<section>
<span className='warning-hint'>

View file

@ -37,7 +37,11 @@ export const NotificationMention: React.FC<{
unread: boolean;
}> = ({ notification, unread }) => {
const [isDirect, isReply] = useAppSelector((state) => {
const status = state.statuses.get(notification.statusId) as Status;
const status = state.statuses.get(notification.statusId) as
| Status
| undefined;
if (!status) return [false, false] as const;
return [
status.get('visibility') === 'direct',

View file

@ -23,7 +23,7 @@ export const NotificationWithStatus: React.FC<{
icon: IconProp;
iconId: string;
accountIds: string[];
statusId: string;
statusId: string | undefined;
count: number;
labelRenderer: LabelRenderer;
unread: boolean;
@ -76,6 +76,8 @@ export const NotificationWithStatus: React.FC<{
[dispatch, statusId],
);
if (!statusId) return null;
return (
<HotKeys handlers={handlers}>
<div

View file

@ -629,7 +629,7 @@ class Status extends ImmutablePureComponent {
const isIndexable = !status.getIn(['account', 'noindex']);
if (!isLocal) {
remoteHint = <TimelineHint url={status.get('url')} resource={<FormattedMessage id='timeline_hint.resources.replies' defaultMessage='Some replies' />} />;
remoteHint = <TimelineHint className={classNames(!!descendants && 'timeline-hint--with-descendants')} url={status.get('url')} resource={<FormattedMessage id='timeline_hint.resources.replies' defaultMessage='Some replies' />} />;
}
const handlers = {

View file

@ -25,7 +25,7 @@ export const ConfirmLogOutModal: React.FC<BaseConfirmationModalProps> = ({
const intl = useIntl();
const onConfirm = useCallback(() => {
logOut();
void logOut();
}, []);
return (

View file

@ -482,6 +482,8 @@
"notification.favourite": "{name} направи любима публикацията ви",
"notification.follow": "{name} ви последва",
"notification.follow_request": "{name} поиска да ви последва",
"notification.label.mention": "Споменаване",
"notification.mention": "Споменаване",
"notification.moderation-warning.learn_more": "Научете повече",
"notification.moderation_warning": "Получихте предупреждение за модериране",
"notification.moderation_warning.action_delete_statuses": "Някои от публикациите ви са премахнати.",
@ -503,12 +505,15 @@
"notification.update": "{name} промени публикация",
"notification_requests.accept": "Приемам",
"notification_requests.dismiss": "Отхвърлям",
"notification_requests.enter_selection_mode": "Изберете",
"notification_requests.exit_selection_mode": "Отказ",
"notification_requests.explainer_for_limited_account": "Известията от този акаунт са прецедени, защото акаунтът е ограничен от модератор.",
"notification_requests.explainer_for_limited_remote_account": "Известията от този акаунт са прецедени, защото акаунтът или сървърът му е ограничен от модератор.",
"notification_requests.maximize": "Максимизиране",
"notification_requests.minimize_banner": "Минимизиране на банера за филтрирани известия",
"notification_requests.notifications_from": "Известия от {name}",
"notification_requests.title": "Филтрирани известия",
"notification_requests.view": "Преглед на известията",
"notifications.clear": "Изчистване на известията",
"notifications.clear_confirmation": "Наистина ли искате да изчистите завинаги всичките си известия?",
"notifications.clear_title": "Изчиствате ли известията?",
@ -545,6 +550,9 @@
"notifications.permission_denied": "Известията на работния плот не са налични поради предварително отказана заявка за разрешение в браузъра",
"notifications.permission_denied_alert": "Известията на работния плот не могат да се включат, тъй като разрешението на браузъра е отказвано преди",
"notifications.permission_required": "Известията на работния плот ги няма, щото няма дадено нужното позволение.",
"notifications.policy.accept": "Приемам",
"notifications.policy.accept_hint": "Показване в известия",
"notifications.policy.filter": "Филтър",
"notifications.policy.filter_limited_accounts_hint": "Ограничено от модераторите на сървъра",
"notifications.policy.filter_limited_accounts_title": "Модерирани акаунти",
"notifications.policy.filter_new_accounts.hint": "Сътворено през {days, plural, one {последния ден} other {последните # дена}}",

View file

@ -11,6 +11,7 @@
"about.not_available": "Nid yw'r wybodaeth hon ar gael ar y gweinydd hwn.",
"about.powered_by": "Cyfrwng cymdeithasol datganoledig wedi ei yrru gan {mastodon}",
"about.rules": "Rheolau'r gweinydd",
"account.account_note_header": "Nodyn personol",
"account.add_or_remove_from_list": "Ychwanegu neu Ddileu o'r rhestrau",
"account.badges.bot": "Bot",
"account.badges.group": "Grŵp",
@ -299,6 +300,7 @@
"filter_modal.select_filter.subtitle": "Defnyddiwch gategori sy'n bodoli eisoes neu crëu un newydd",
"filter_modal.select_filter.title": "Hidlo'r postiad hwn",
"filter_modal.title.status": "Hidlo postiad",
"filtered_notifications_banner.pending_requests": "Gan {count, plural, =0 {no one} one {un person} two {# berson} few {# pherson} other {# person}} efallai eich bod yn eu hadnabod",
"filtered_notifications_banner.title": "Hysbysiadau wedi'u hidlo",
"firehose.all": "Popeth",
"firehose.local": "Gweinydd hwn",
@ -354,6 +356,17 @@
"home.pending_critical_update.link": "Gweld y diweddariadau",
"home.pending_critical_update.title": "Mae diweddariad diogelwch hanfodol ar gael!",
"home.show_announcements": "Dangos cyhoeddiadau",
"ignore_notifications_modal.disclaimer": "Ni all Mastodon hysbysu defnyddwyr eich bod wedi anwybyddu eu hysbysiadau. Ni fydd anwybyddu hysbysiadau yn atal y negeseuon eu hunain rhag cael eu hanfon.",
"ignore_notifications_modal.filter_instead": "Hidlo yn lle hynny",
"ignore_notifications_modal.filter_to_act_users": "Byddwch yn dal i allu derbyn, gwrthod neu adrodd ar ddefnyddwyr",
"ignore_notifications_modal.filter_to_avoid_confusion": "Mae hidlo yn helpu i osgoi dryswch posibl",
"ignore_notifications_modal.filter_to_review_separately": "Gallwch adolygu hysbysiadau wedi'u hidlo ar wahân",
"ignore_notifications_modal.ignore": "Anwybyddu hysbysiadau",
"ignore_notifications_modal.limited_accounts_title": "Anwybyddu hysbysiadau o gyfrifon wedi'u cymedroli?",
"ignore_notifications_modal.new_accounts_title": "Anwybyddu hysbysiadau o gyfrifon newydd?",
"ignore_notifications_modal.not_followers_title": "Anwybyddu hysbysiadau gan bobl nad ydynt yn eich dilyn?",
"ignore_notifications_modal.not_following_title": "Anwybyddu hysbysiadau gan bobl nad ydych yn eu dilyn?",
"ignore_notifications_modal.private_mentions_title": "Anwybyddu hysbysiadau o Grybwylliadau Preifat digymell?",
"interaction_modal.description.favourite": "Gyda chyfrif ar Mastodon, gallwch chi hoffi'r postiad hwn er mwyn roi gwybod i'r awdur eich bod chi'n ei werthfawrogi ac yn ei gadw ar gyfer nes ymlaen.",
"interaction_modal.description.follow": "Gyda chyfrif ar Mastodon, gallwch ddilyn {name} i dderbyn eu postiadau yn eich llif cartref.",
"interaction_modal.description.reblog": "Gyda chyfrif ar Mastodon, gallwch hybu'r postiad hwn i'w rannu â'ch dilynwyr.",
@ -472,6 +485,7 @@
"navigation_bar.security": "Diogelwch",
"not_signed_in_indicator.not_signed_in": "Rhaid i chi fewngofnodi i weld yr adnodd hwn.",
"notification.admin.report": "Adroddwyd ar {name} {target}",
"notification.admin.report_account": "{name} reported {count, plural, one {un post} other {# postsiadau}} from {target} for {category}",
"notification.admin.report_account_other": "Adroddodd {name} {count, plural, one {un post} two {# bost} few {# phost} other {# post}} gan {target}",
"notification.admin.report_statuses": "Adroddodd {name} {target} ar gyfer {category}",
"notification.admin.report_statuses_other": "Adroddodd {name} {target}",
@ -479,6 +493,11 @@
"notification.favourite": "Hoffodd {name} eich postiad",
"notification.follow": "Dilynodd {name} chi",
"notification.follow_request": "Mae {name} wedi gwneud cais i'ch dilyn",
"notification.label.mention": "Crybwyll",
"notification.label.private_mention": "Crybwyll preifat",
"notification.label.private_reply": "Ateb preifat",
"notification.label.reply": "Ateb",
"notification.mention": "Crybwyll",
"notification.moderation-warning.learn_more": "Dysgu mwy",
"notification.moderation_warning": "Rydych wedi derbyn rhybudd gan gymedrolwr",
"notification.moderation_warning.action_delete_statuses": "Mae rhai o'ch postiadau wedi'u dileu.",
@ -499,10 +518,26 @@
"notification.status": "{name} newydd ei bostio",
"notification.update": "Golygodd {name} bostiad",
"notification_requests.accept": "Derbyn",
"notification_requests.accept_all": "Derbyn y cyfan",
"notification_requests.accept_multiple": "{count, plural, one {Derbyn # cais} other {Derbyn # cais}}",
"notification_requests.confirm_accept_all.button": "Derbyn y cyfan",
"notification_requests.confirm_accept_all.message": "Rydych ar fin derbyn {count, plural, one {un cais hysbysu} other {# cais hysbysiad}}. A ydych yn siŵr eich bod am fwrw ymlaen?",
"notification_requests.confirm_accept_all.title": "Derbyn ceisiadau hysbysu?",
"notification_requests.confirm_dismiss_all.button": "Diystyru pob un",
"notification_requests.confirm_dismiss_all.message": "Rydych ar fin diystyru {count, plural, one {un cais hysbysu} other {# cais hysbysiad}}. Ni fyddwch yn gallu cyrchu {count, plural, one {it} other {them}} yn hawdd eto. A ydych yn siŵr eich bod am fwrw ymlaen?",
"notification_requests.confirm_dismiss_all.title": "Diystyru ceisiadau hysbysu?",
"notification_requests.dismiss": "Cau",
"notification_requests.dismiss_all": "Diystyru pob un",
"notification_requests.dismiss_multiple": "{count, plural, one {Diystyru # cais} other {Diystyru # cais}}",
"notification_requests.enter_selection_mode": "Dewis",
"notification_requests.exit_selection_mode": "Canslo",
"notification_requests.explainer_for_limited_account": "Mae hysbysiadau o'r cyfrif hwn wedi'u hidlo oherwydd bod y cyfrif wedi'i gyfyngu gan gymedrolwr.",
"notification_requests.explainer_for_limited_remote_account": "Mae hysbysiadau o'r cyfrif hwn wedi'u hidlo oherwydd bod y cyfrif neu ei weinydd wedi'i gyfyngu gan gymedrolwr.",
"notification_requests.maximize": "Mwyhau",
"notification_requests.minimize_banner": "Lleihau baner hysbysiadau wedi'u hidlo",
"notification_requests.notifications_from": "Hysbysiadau gan {name}",
"notification_requests.title": "Hysbysiadau wedi'u hidlo",
"notification_requests.view": "Gweld hysbysiadau",
"notifications.clear": "Clirio hysbysiadau",
"notifications.clear_confirmation": "Ydych chi'n siŵr eich bod am glirio'ch holl hysbysiadau am byth?",
"notifications.clear_title": "Clirio hysbysiadau?",
@ -539,6 +574,14 @@
"notifications.permission_denied": "Nid oes hysbysiadau bwrdd gwaith ar gael oherwydd cais am ganiatâd porwr a wrthodwyd yn flaenorol",
"notifications.permission_denied_alert": "Nid oes modd galluogi hysbysiadau bwrdd gwaith, gan fod caniatâd porwr wedi'i wrthod o'r blaen",
"notifications.permission_required": "Nid oes hysbysiadau bwrdd gwaith ar gael oherwydd na roddwyd y caniatâd gofynnol.",
"notifications.policy.accept": "Derbyn",
"notifications.policy.accept_hint": "Dangos mewn hysbysiadau",
"notifications.policy.drop": "Anwybyddu",
"notifications.policy.drop_hint": "Anfon i'r gwagle, byth i'w gweld eto",
"notifications.policy.filter": "Hidlo",
"notifications.policy.filter_hint": "Anfon i flwch derbyn hysbysiadau wedi'u hidlo",
"notifications.policy.filter_limited_accounts_hint": "Cyfyngedig gan gymedrolwyr gweinydd",
"notifications.policy.filter_limited_accounts_title": "Cyfrifon wedi'u cymedroli",
"notifications.policy.filter_new_accounts.hint": "Crëwyd o fewn {days, lluosog, un {yr un diwrnod} arall {y # diwrnod}} diwethaf",
"notifications.policy.filter_new_accounts_title": "Cyfrifon newydd",
"notifications.policy.filter_not_followers_hint": "Gan gynnwys pobl sydd wedi bod yn eich dilyn am llai {days, plural, un {nag un diwrnod} arall {na # diwrnod}}",
@ -547,19 +590,20 @@
"notifications.policy.filter_not_following_title": "Pobl nad ydych yn eu dilyn",
"notifications.policy.filter_private_mentions_hint": "Wedi'i hidlo oni bai ei fod mewn ymateb i'ch crybwylliad eich hun neu os ydych yn dilyn yr anfonwr",
"notifications.policy.filter_private_mentions_title": "Crybwylliadau preifat digymell",
"notifications.policy.title": "Rheoli hysbysiadau gan…",
"notifications_permission_banner.enable": "Galluogi hysbysiadau bwrdd gwaith",
"notifications_permission_banner.how_to_control": "I dderbyn hysbysiadau pan nad yw Mastodon ar agor, galluogwch hysbysiadau bwrdd gwaith. Gallwch reoli'n union pa fathau o ryngweithiadau sy'n cynhyrchu hysbysiadau bwrdd gwaith trwy'r botwm {icon} uchod unwaith y byddan nhw wedi'u galluogi.",
"notifications_permission_banner.title": "Peidiwch â cholli dim",
"onboarding.action.back": "Ewch â fi yn ôl",
"onboarding.actions.back": "Ewch â fi yn ôl",
"onboarding.actions.go_to_explore": "Gweld beth yw'r tuedd",
"onboarding.action.back": "Ewch â fi nôl",
"onboarding.actions.back": "Ewch â fi nôl",
"onboarding.actions.go_to_explore": "Gweld beth sy'n trendio",
"onboarding.actions.go_to_home": "Ewch i'ch ffrwd gartref",
"onboarding.compose.template": "Helo, #Mastodon!",
"onboarding.follows.empty": "Yn anffodus, nid oes modd dangos unrhyw ganlyniadau ar hyn o bryd. Gallwch geisio defnyddio chwilio neu bori'r dudalen archwilio i ddod o hyd i bobl i'w dilyn, neu ceisio eto yn nes ymlaen.",
"onboarding.follows.lead": "Rydych chi'n curadu eich ffrwd gartref eich hun. Po fwyaf o bobl y byddwch chi'n eu dilyn, y mwyaf egnïol a diddorol fydd hi. Gall y proffiliau hyn fod yn fan cychwyn da - gallwch chi bob amser eu dad-ddilyn yn nes ymlaen:",
"onboarding.follows.title": "Yn boblogaidd ar Mastodon",
"onboarding.profile.discoverable": "Gwnewch fy mhroffil yn un y gellir ei ddarganfod",
"onboarding.profile.discoverable_hint": "Pan fyddwch yn optio i mewn i ddarganfodadwyedd ar Mastodon, gall eich postiadau ymddangos mewn canlyniadau chwilio a thueddiadau, ac efallai y bydd eich proffil yn cael ei awgrymu i bobl sydd â diddordebau tebyg i chi.",
"onboarding.profile.discoverable_hint": "Pan fyddwch yn optio i mewn i ddarganfodadwyedd ar Mastodon, gall eich postiadau ymddangos mewn canlyniadau chwilio a threndiau, ac efallai y bydd eich proffil yn cael ei awgrymu i bobl sydd â diddordebau tebyg i chi.",
"onboarding.profile.display_name": "Enw dangos",
"onboarding.profile.display_name_hint": "Eich enw llawn neu'ch enw hwyl…",
"onboarding.profile.lead": "Gallwch chi bob amser gwblhau hyn yn ddiweddarach yn y gosodiadau, lle mae hyd yn oed mwy o ddewisiadau cyfaddasu ar gael.",
@ -787,6 +831,7 @@
"timeline_hint.remote_resource_not_displayed": "Nid yw {resource} o weinyddion eraill yn cael ei ddangos.",
"timeline_hint.resources.followers": "Dilynwyr",
"timeline_hint.resources.follows": "Yn dilyn",
"timeline_hint.resources.replies": "Rhai atebion",
"timeline_hint.resources.statuses": "Postiadau hŷn",
"trends.counter_by_accounts": "{count, plural, zero {neb} one {{counter} person} two {{counter} berson} few {{counter} pherson} other {{counter} o bobl}} yn y {days, plural, one {diwrnod diwethaf} two {ddeuddydd diwethaf} other {{days} diwrnod diwethaf}}",
"trends.trending_now": "Yn trendio nawr",

View file

@ -11,6 +11,7 @@
"about.not_available": "Zerbitzari honek ez du informazio hau eskuragarri jarri.",
"about.powered_by": "{mastodon} erabiltzen duen sare sozial deszentralizatua",
"about.rules": "Zerbitzariaren arauak",
"account.account_note_header": "Ohar pertsonala",
"account.add_or_remove_from_list": "Gehitu edo kendu zerrendetatik",
"account.badges.bot": "Bot-a",
"account.badges.group": "Taldea",
@ -34,7 +35,9 @@
"account.follow_back": "Jarraitu bueltan",
"account.followers": "Jarraitzaileak",
"account.followers.empty": "Ez du inork erabiltzaile hau jarraitzen oraindik.",
"account.followers_counter": "{count, plural, one {{counter} jarraitzaile} other {{counter} jarraitzaile}}",
"account.following": "Jarraitzen",
"account.following_counter": "{count, plural, one {{counter} jarraitzen} other {{counter} jarraitzen}}",
"account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.",
"account.go_to_profile": "Joan profilera",
"account.hide_reblogs": "Ezkutatu @{name} erabiltzailearen bultzadak",
@ -60,6 +63,7 @@
"account.requested_follow": "{name}-(e)k zu jarraitzeko eskaera egin du",
"account.share": "Partekatu @{name} erabiltzailearen profila",
"account.show_reblogs": "Erakutsi @{name} erabiltzailearen bultzadak",
"account.statuses_counter": "{count, plural, one {{counter} bidalketa} other {{counter} bidalketa}}",
"account.unblock": "Desblokeatu @{name}",
"account.unblock_domain": "Berriz erakutsi {domain}",
"account.unblock_short": "Desblokeatu",
@ -175,6 +179,7 @@
"confirmations.discard_edit_media.message": "Multimediaren deskribapen edo aurrebistan gorde gabeko aldaketak daude, baztertu nahi dituzu?",
"confirmations.edit.confirm": "Editatu",
"confirmations.edit.message": "Orain editatzen baduzu, une honetan idazten ari zaren mezua gainidatziko da. Ziur jarraitu nahi duzula?",
"confirmations.edit.title": "Gainidatzi bidalketa?",
"confirmations.logout.confirm": "Amaitu saioa",
"confirmations.logout.message": "Ziur saioa amaitu nahi duzula?",
"confirmations.logout.title": "Itxi saioa?",
@ -184,8 +189,10 @@
"confirmations.redraft.title": "Ezabatu eta berridatzi bidalketa?",
"confirmations.reply.confirm": "Erantzun",
"confirmations.reply.message": "Orain erantzuteak idazten ari zaren mezua gainidatziko du. Ziur jarraitu nahi duzula?",
"confirmations.reply.title": "Gainidatzi bidalketa?",
"confirmations.unfollow.confirm": "Utzi jarraitzeari",
"confirmations.unfollow.message": "Ziur {name} jarraitzeari utzi nahi diozula?",
"confirmations.unfollow.title": "Erabiltzailea jarraitzeari utzi?",
"conversation.delete": "Ezabatu elkarrizketa",
"conversation.mark_as_read": "Markatu irakurrita bezala",
"conversation.open": "Ikusi elkarrizketa",
@ -348,6 +355,12 @@
"home.pending_critical_update.link": "Ikusi eguneraketak",
"home.pending_critical_update.title": "Segurtasun eguneraketa kritikoa eskuragarri!",
"home.show_announcements": "Erakutsi iragarpenak",
"ignore_notifications_modal.filter_instead": "Iragazi ez ikusiarena egin beharrean",
"ignore_notifications_modal.ignore": "Ezikusi jakinarazpenak",
"ignore_notifications_modal.limited_accounts_title": "Moderatutako kontuen jakinarazpenei ez ikusiarena egin?",
"ignore_notifications_modal.new_accounts_title": "Kontu berrien jakinarazpenei ez ikusiarena egin?",
"ignore_notifications_modal.not_followers_title": "Jarraitzen ez zaituzten pertsonen jakinarazpenei ez ikusiarena egin?",
"ignore_notifications_modal.not_following_title": "Jarraitzen ez dituzun pertsonen jakinarazpenei ez ikusiarena egin?",
"interaction_modal.description.favourite": "Mastodon kontu batekin bidalketa hau gogoko egin dezakezu, egileari eskertzeko eta gerorako gordetzeko.",
"interaction_modal.description.follow": "Mastodon kontu batekin {name} jarraitu dezakezu bere bidalketak zure hasierako denbora lerroan jasotzeko.",
"interaction_modal.description.reblog": "Mastodon kontu batekin bidalketa hau bultzatu dezakezu, zure jarraitzaileekin partekatzeko.",
@ -466,6 +479,11 @@
"notification.favourite": "{name}(e)k zure bidalketa gogoko du",
"notification.follow": "{name}(e)k jarraitzen dizu",
"notification.follow_request": "{name}(e)k zu jarraitzeko eskaera egin du",
"notification.label.mention": "Aipamena",
"notification.label.private_mention": "Aipamen pribatua",
"notification.label.private_reply": "Erantzun pribatua",
"notification.label.reply": "Erantzuna",
"notification.mention": "Aipamena",
"notification.moderation-warning.learn_more": "Informazio gehiago",
"notification.moderation_warning": "Moderazio-abisu bat jaso duzu",
"notification.moderation_warning.action_delete_statuses": "Argitalpen batzuk kendu dira.",
@ -476,6 +494,7 @@
"notification.moderation_warning.action_silence": "Kontua murriztu egin da.",
"notification.moderation_warning.action_suspend": "Kontua itxi da.",
"notification.own_poll": "Zure inkesta amaitu da",
"notification.poll": "Zuk erantzun duzun inkesta bat bukatu da",
"notification.reblog": "{name}(e)k bultzada eman dio zure bidalketari",
"notification.relationships_severance_event": "{name} erabiltzailearekin galdutako konexioak",
"notification.relationships_severance_event.account_suspension": "{from} zerbitzariko administratzaile batek {target} bertan behera utzi du, hau da, ezin izango dituzu jaso hango eguneratzerik edo hangoekin elkarreragin.",
@ -483,9 +502,19 @@
"notification.status": "{name} erabiltzaileak bidalketa egin berri du",
"notification.update": "{name} erabiltzaileak bidalketa bat editatu du",
"notification_requests.accept": "Onartu",
"notification_requests.accept_all": "Onartu dena",
"notification_requests.confirm_accept_all.button": "Onartu dena",
"notification_requests.confirm_accept_all.title": "Onartu jakinarazpen-eskaerak?",
"notification_requests.confirm_dismiss_all.button": "Baztertu guztiak",
"notification_requests.confirm_dismiss_all.title": "Baztertu jakinarazpen-eskaerak?",
"notification_requests.dismiss": "Baztertu",
"notification_requests.dismiss_all": "Baztertu guztiak",
"notification_requests.enter_selection_mode": "Hautatu",
"notification_requests.exit_selection_mode": "Utzi",
"notification_requests.maximize": "Maximizatu",
"notification_requests.notifications_from": "{name} erabiltzailearen jakinarazpenak",
"notification_requests.title": "Iragazitako jakinarazpenak",
"notification_requests.view": "Ikusi jakinarazpenak",
"notifications.clear": "Garbitu jakinarazpenak",
"notifications.clear_confirmation": "Ziur zure jakinarazpen guztiak behin betirako garbitu nahi dituzula?",
"notifications.clear_title": "Garbitu jakinarazpenak?",
@ -522,6 +551,14 @@
"notifications.permission_denied": "Mahaigaineko jakinarazpenak ez daude erabilgarri, nabigatzaileari baimen eskaera ukatu zitzaiolako",
"notifications.permission_denied_alert": "Mahaigaineko jakinarazpenak ezin dira gaitu, nabigatzaileari baimena ukatu zitzaiolako",
"notifications.permission_required": "Mahaigaineko jakinarazpenak ez daude erabilgarri, horretarako behar den baimena ez delako eman.",
"notifications.policy.accept": "Onartu",
"notifications.policy.accept_hint": "Erakutsi jakinarazpenetan",
"notifications.policy.drop": "Ezikusi",
"notifications.policy.drop_hint": "Hutsera bidali, ez erakutsi inoiz gehiago",
"notifications.policy.filter": "Iragazi",
"notifications.policy.filter_hint": "Bidali filtratutako jakinarazpenen sarrerako ontzira",
"notifications.policy.filter_limited_accounts_hint": "Zerbitzariaren moderatzaileek mugatuta",
"notifications.policy.filter_limited_accounts_title": "Moderatutako kontuak",
"notifications.policy.filter_new_accounts.hint": "Azken {days, plural, one {egunean} other {# egunetan}} sortua",
"notifications.policy.filter_new_accounts_title": "Kontu berriak",
"notifications.policy.filter_not_followers_hint": "{days, plural, one {Egun batez} other {# egunez}} baino gutxiago jarraitu zaituen jendea barne",
@ -530,6 +567,7 @@
"notifications.policy.filter_not_following_title": "Jarraitzen ez duzun jendea",
"notifications.policy.filter_private_mentions_hint": "Iragazita, baldin eta zure aipamenaren erantzuna bada edo bidaltzailea jarraitzen baduzu",
"notifications.policy.filter_private_mentions_title": "Eskatu gabeko aipamen pribatuak",
"notifications.policy.title": "Kudeatu honen jakinarazpaenak…",
"notifications_permission_banner.enable": "Gaitu mahaigaineko jakinarazpenak",
"notifications_permission_banner.how_to_control": "Mastodon irekita ez dagoenean jakinarazpenak jasotzeko, gaitu mahaigaineko jakinarazpenak. Mahaigaineko jakinarazpenak ze elkarrekintzak eragingo dituzten zehazki kontrolatu dezakezu goiko {icon} botoia erabiliz, gaituta daudenean.",
"notifications_permission_banner.title": "Ez galdu ezer inoiz",
@ -656,6 +694,7 @@
"report.unfollow_explanation": "Kontu hau jarraitzen ari zara. Zure denbora-lerro nagusian bere bidalketak ez ikusteko, jarraitzeari utzi.",
"report_notification.attached_statuses": "{count, plural, one {Bidalketa {count}} other {{count} bidalketa}} erantsita",
"report_notification.categories.legal": "Legala",
"report_notification.categories.legal_sentence": "eduki ilegala",
"report_notification.categories.other": "Bestelakoak",
"report_notification.categories.other_sentence": "bestelakoak",
"report_notification.categories.spam": "Spam",
@ -691,6 +730,7 @@
"server_banner.administered_by": "Administratzailea(k):",
"server_banner.server_stats": "Zerbitzariaren estatistikak:",
"sign_in_banner.create_account": "Sortu kontua",
"sign_in_banner.mastodon_is": "Mastodon gertatzen ari denari buruz egunean egoteko modurik onena da.",
"sign_in_banner.sign_in": "Hasi saioa",
"sign_in_banner.sso_redirect": "Hasi saioa edo izena eman",
"status.admin_account": "Ireki @{name} erabiltzailearen moderazio interfazea",
@ -766,6 +806,7 @@
"timeline_hint.remote_resource_not_displayed": "Beste zerbitzarietako {resource} ez da bistaratzen.",
"timeline_hint.resources.followers": "Jarraitzaileak",
"timeline_hint.resources.follows": "Jarraitzen",
"timeline_hint.resources.replies": "Erantzun batzuk",
"timeline_hint.resources.statuses": "Bidalketa zaharragoak",
"trends.counter_by_accounts": "{count, plural, one {Pertsona {counter}} other {{counter} pertsona}} azken {days, plural, one {egunean} other {{days} egunetan}}",
"trends.trending_now": "Joera orain",

View file

@ -358,7 +358,7 @@
"home.show_announcements": "Vís kunngerðir",
"ignore_notifications_modal.disclaimer": "Mastodon kann ikki upplýsa brúkarar um, at tú hevur latið sum um, at tú ikki hevur sæð teirra fráboðanir. At lata sum um, at tú ikki sær fráboðanir, forðar ikki, at boðini sjálv verða send.",
"ignore_notifications_modal.filter_instead": "Filtrera ístaðin",
"ignore_notifications_modal.filter_to_act_users": "Tú kann framvegis góðtaka, avvísa og melda brúkarar",
"ignore_notifications_modal.filter_to_act_users": "Tú kanst framvegis góðtaka, avvísa og melda brúkarar",
"ignore_notifications_modal.filter_to_avoid_confusion": "Filtrering ger tað lættari at sleppa undan møguligum misskiljingum",
"ignore_notifications_modal.filter_to_review_separately": "Tú kanst kanna filtreraðar fráboðanir fyri seg",
"ignore_notifications_modal.ignore": "Lat sum um tú ikki sær fráboðanir",

View file

@ -11,6 +11,7 @@
"about.not_available": "Cette information n'a pas été rendue disponible sur ce serveur.",
"about.powered_by": "Réseau social décentralisé propulsé par {mastodon}",
"about.rules": "Règles du serveur",
"account.account_note_header": "Note personnelle",
"account.add_or_remove_from_list": "Ajouter ou enlever de listes",
"account.badges.bot": "Bot",
"account.badges.group": "Groupe",

View file

@ -11,6 +11,7 @@
"about.not_available": "Cette information n'a pas été rendue disponible sur ce serveur.",
"about.powered_by": "Réseau social décentralisé propulsé par {mastodon}",
"about.rules": "Règles du serveur",
"account.account_note_header": "Note personnelle",
"account.add_or_remove_from_list": "Ajouter ou retirer des listes",
"account.badges.bot": "Bot",
"account.badges.group": "Groupe",

View file

@ -284,15 +284,15 @@
"explore.trending_links": "חדשות",
"explore.trending_statuses": "הודעות",
"explore.trending_tags": "תגיות",
"filter_modal.added.context_mismatch_explanation": "קטגוריית הסנן הזאת לא חלה על ההקשר שממנו הגעת אל ההודעה הזו. אם תרצה/י שההודעה תסונן גם בהקשר זה, תצטרך/י לערוך את הסנן.",
"filter_modal.added.context_mismatch_explanation": "קטגוריית המסנן הזאת לא חלה על ההקשר שממנו הגעת אל ההודעה הזו. אם תרצה/י שההודעה תסונן גם בהקשר זה, תצטרך/י לערוך את הסנן.",
"filter_modal.added.context_mismatch_title": "אין התאמה להקשר!",
"filter_modal.added.expired_explanation": "פג תוקפה של קטגוריית הסינון הזו, יש צורך לשנות את תאריך התפוגה כדי שהסינון יוחל.",
"filter_modal.added.expired_title": "פג תוקף הפילטר!",
"filter_modal.added.expired_title": "פג תוקף המסנן!",
"filter_modal.added.review_and_configure": "לסקירה והתאמה מתקדמת של קטגוריית הסינון הזו, לכו ל{settings_link}.",
"filter_modal.added.review_and_configure_title": "אפשרויות סינון",
"filter_modal.added.settings_link": "דף הגדרות",
"filter_modal.added.short_explanation": "ההודעה הזו הוספה לקטגוריית הסינון הזו: {title}.",
"filter_modal.added.title": פילטר הוסף!",
"filter_modal.added.title": מסנן הוסף!",
"filter_modal.select_filter.context_mismatch": "לא חל בהקשר זה",
"filter_modal.select_filter.expired": "פג התוקף",
"filter_modal.select_filter.prompt_new": "קטגוריה חדשה {name}",
@ -356,8 +356,16 @@
"home.pending_critical_update.link": "צפיה בעדכונים",
"home.pending_critical_update.title": "יצא עדכון אבטחה חשוב!",
"home.show_announcements": "הצג הכרזות",
"ignore_notifications_modal.filter_instead": "לסנן במקום",
"ignore_notifications_modal.filter_to_act_users": "עדיין ביכולתך לקבל, לדחות ולדווח על משתמשים אחרים",
"ignore_notifications_modal.filter_to_avoid_confusion": "סינון מסייע למניעת בלבולים אפשריים",
"ignore_notifications_modal.filter_to_review_separately": "ניתן לסקור התראות מפולטרות בנפרד",
"ignore_notifications_modal.ignore": "להתעלם מהתראות",
"ignore_notifications_modal.limited_accounts_title": "להתעלם מהתראות מחשבונות תחת פיקוח?",
"ignore_notifications_modal.new_accounts_title": "להתעלם מהתראות מחשבונות חדשים?",
"ignore_notifications_modal.not_followers_title": "להתעלם מהתראות מא.נשים שאינם עוקביך?",
"ignore_notifications_modal.not_following_title": "להתעלם מהתראות מא.נשים שאינם נעקביך?",
"ignore_notifications_modal.private_mentions_title": "להתעלם מהתראות מאיזכורים פרטיים?",
"interaction_modal.description.favourite": "עם חשבון מסטודון, ניתן לחבב את ההודעה כדי לומר למחבר/ת שהערכת את תוכנו או כדי לשמור אותו לקריאה בעתיד.",
"interaction_modal.description.follow": "עם חשבון מסטודון, ניתן לעקוב אחרי {name} כדי לקבל את הפוסטים שלו/ה בפיד הבית.",
"interaction_modal.description.reblog": "עם חשבון מסטודון, ניתן להדהד את החצרוץ ולשתף עם עוקבים.",
@ -509,13 +517,26 @@
"notification.status": "{name} הרגע פרסמו",
"notification.update": "{name} ערכו הודעה",
"notification_requests.accept": "לקבל",
"notification_requests.accept_all": "לקבל את כל הבקשות",
"notification_requests.accept_multiple": "{count, plural,one {לאשר קבלת בקשה}other {לאשר קבלת # בקשות}}",
"notification_requests.confirm_accept_all.button": "לקבל את כל הבקשות",
"notification_requests.confirm_accept_all.message": "אתם עומדים לאשר {count, plural,one {בקשת התראה אחת}other {# בקשות התראה}}. להמשיך?",
"notification_requests.confirm_accept_all.title": "לקבל בקשות התראה?",
"notification_requests.confirm_dismiss_all.button": "דחיית כל הבקשות",
"notification_requests.confirm_dismiss_all.message": "אתם עומדים לדחות {count, plural,one {בקשת התראה}other {# בקשות התראה}}. לא תוכלו למצוא {count, plural,one {אותה}other {אותן}} בקלות אחר כך. להמשיך?",
"notification_requests.confirm_dismiss_all.title": "לדחות בקשות התראה?",
"notification_requests.dismiss": "לבטל",
"notification_requests.dismiss_all": "דחיית כל הבקשות",
"notification_requests.dismiss_multiple": "{count, plural,one {לדחות בקשה}other {לדחות # בקשות}} לקבלת התראה",
"notification_requests.enter_selection_mode": "בחירה",
"notification_requests.exit_selection_mode": "ביטול",
"notification_requests.explainer_for_limited_account": "התראות על פעולות חשבון זה סוננו כי חשבון זה הוגבל על ידי מנהלי הדיונים.",
"notification_requests.explainer_for_limited_remote_account": "התראות על פעולות חשבון זה סוננו כי חשבון זה או השרת שלו הוגבלו על ידי מנהלי הדיונים.",
"notification_requests.maximize": "הגדלה למקסימום",
"notification_requests.minimize_banner": "להקטין את כותרת ההודעות המפולטרות",
"notification_requests.minimize_banner": "להקטין את כותרת ההודעות המסוננות",
"notification_requests.notifications_from": "התראות מ־ {name}",
"notification_requests.title": "התראות מסוננות",
"notification_requests.view": "הצגת ההתראות",
"notifications.clear": "הסרת התראות",
"notifications.clear_confirmation": "להסיר את כל ההתראות לצמיתות ? ",
"notifications.clear_title": "לנקות התראות?",
@ -552,6 +573,12 @@
"notifications.permission_denied": "לא ניתן להציג התראות מסך כיוון כיוון שהרשאות דפדפן נשללו בעבר",
"notifications.permission_denied_alert": "לא ניתן לאפשר נוטיפיקציות מסך שכן הדפדפן סורב הרשאה בעבר",
"notifications.permission_required": "לא ניתן לאפשר נוטיפיקציות מסך כיוון שהרשאה דרושה לא ניתנה.",
"notifications.policy.accept": "אישור",
"notifications.policy.accept_hint": "הצגה בהתראות",
"notifications.policy.drop": "להתעלם",
"notifications.policy.drop_hint": "שליחה אל מצולות הנשיה, ולא יוודעו אודותיה לעולם",
"notifications.policy.filter": "מסנן",
"notifications.policy.filter_hint": "שליחה לתיבה נכנסת מסוננת",
"notifications.policy.filter_limited_accounts_hint": "הוגבל על ידי מנהלי הדיונים",
"notifications.policy.filter_limited_accounts_title": "חשבון מוגבל",
"notifications.policy.filter_new_accounts.hint": "נוצר {days, plural,one {ביום האחרון} two {ביומיים האחרונים} other {ב־# הימים האחרונים}}",
@ -562,6 +589,7 @@
"notifications.policy.filter_not_following_title": "משתמשים שאינך עוקב(ת) אחריהםן",
"notifications.policy.filter_private_mentions_hint": "מסונן אלא אם זו תשובה למינשון שלך או אם אתם עוקבים אחרי העונה",
"notifications.policy.filter_private_mentions_title": "מינשונים בפרטי שלא הוזמנו",
"notifications.policy.title": "ניהול התראות מ…",
"notifications_permission_banner.enable": "לאפשר נוטיפיקציות מסך",
"notifications_permission_banner.how_to_control": "כדי לקבל התראות גם כאשר מסטודון סגור יש לאפשר התראות מסך. ניתן לשלוט בדיוק איזה סוג של אינטראקציות יביא להתראות מסך דרך כפתור ה- {icon} מרגע שהן מאופשרות.",
"notifications_permission_banner.title": "לעולם אל תחמיץ דבר",
@ -802,6 +830,7 @@
"timeline_hint.remote_resource_not_displayed": "{resource} משרתים אחרים לא מוצגים.",
"timeline_hint.resources.followers": "עוקבים",
"timeline_hint.resources.follows": "נעקבים",
"timeline_hint.resources.replies": "מספר תשובות",
"timeline_hint.resources.statuses": "הודעות ישנות יותר",
"trends.counter_by_accounts": "{count, plural, one {אדם אחד} other {{count} א.נשים}} {days, plural, one {מאז אתמול} two {ביומיים האחרונים} other {במשך {days} הימים האחרונים}}",
"trends.trending_now": "נושאים חמים",

View file

@ -358,7 +358,7 @@
"home.show_announcements": "Közlemények megjelenítése",
"ignore_notifications_modal.disclaimer": "A Mastodon nem tudja értesíteni azokat a felhasználókat, akiknek figyelmen kívül hagytad az értesítéseit. Az értesítések figyelmen kívül hagyása nem állítja meg az üzenetek elküldését.",
"ignore_notifications_modal.filter_instead": "Inkább szűrés",
"ignore_notifications_modal.filter_to_act_users": "Továbbra is el tudja fogadni, el tudja utasítani vagy jelenteni tudja a felhasználókat",
"ignore_notifications_modal.filter_to_act_users": "Továbbra is el tudod fogadni, el tudod utasítani vagy tudod jelenteni a felhasználókat",
"ignore_notifications_modal.filter_to_avoid_confusion": "A szűrés segít elkerülni a lehetséges félreértéseket",
"ignore_notifications_modal.filter_to_review_separately": "A szűrt értesítések külön tekinthetők át",
"ignore_notifications_modal.ignore": "Értesítések figyelmen kívül hagyása",

View file

@ -358,7 +358,9 @@
"home.show_announcements": "Mostra annunci",
"ignore_notifications_modal.disclaimer": "Mastodon non può informare gli utenti che hai ignorato le loro notifiche. Ignorare le notifiche non impedirà l'invio dei messaggi stessi.",
"ignore_notifications_modal.filter_instead": "Filtra invece",
"ignore_notifications_modal.filter_to_act_users": "Potrai comunque accettare, rifiutare o segnalare gli utenti",
"ignore_notifications_modal.filter_to_avoid_confusion": "Il filtraggio aiuta a evitare potenziali confusioni",
"ignore_notifications_modal.filter_to_review_separately": "Puoi rivedere le notifiche filtrate separatamente",
"ignore_notifications_modal.ignore": "Ignora le notifiche",
"ignore_notifications_modal.limited_accounts_title": "Ignorare le notifiche dagli account moderati?",
"ignore_notifications_modal.new_accounts_title": "Ignorare le notifiche dai nuovi account?",
@ -575,6 +577,8 @@
"notifications.policy.accept": "Accetta",
"notifications.policy.accept_hint": "Mostra nelle notifiche",
"notifications.policy.drop": "Ignora",
"notifications.policy.drop_hint": "Scarta definitivamente, per non essere mai più visto",
"notifications.policy.filter": "Filtrare",
"notifications.policy.filter_hint": "Invia alla casella in arrivo delle notifiche filtrate",
"notifications.policy.filter_limited_accounts_hint": "Limitato dai moderatori del server",
"notifications.policy.filter_limited_accounts_title": "Account moderati",

View file

@ -486,7 +486,7 @@
"privacy.private.short": "Imeḍfaren",
"privacy.public.long": "Kra n win yellan deg Masṭudun neɣ berra-s",
"privacy.public.short": "Azayez",
"privacy.unlisted.long": "Kra kan n ilguritmen",
"privacy.unlisted.long": "Kra kan yiwarzimen",
"privacy_policy.last_updated": "Aleqqem aneggaru {date}",
"privacy_policy.title": "Tasertit tabaḍnit",
"recommended": "Yettuwelleh",
@ -629,6 +629,7 @@
"timeline_hint.remote_resource_not_displayed": "{resource} seg yiqeddacen-nniḍen ur d-ttwaskanent ara.",
"timeline_hint.resources.followers": "Imeḍfaṛen",
"timeline_hint.resources.follows": "T·Yeṭafaṛ",
"timeline_hint.resources.replies": "Kra tririyin",
"timeline_hint.resources.statuses": "Tisuffaɣ tiqdimin",
"trends.counter_by_accounts": "{count, plural, one {{counter} wemdan} other {{counter} medden}} deg {days, plural, one {ass} other {{days} wussan}} iɛeddan",
"trends.trending_now": "Ayen mucaɛen tura",

View file

@ -503,6 +503,8 @@
"notification.update": "{name} 님이 게시물을 수정했습니다",
"notification_requests.accept": "수락",
"notification_requests.dismiss": "지우기",
"notification_requests.enter_selection_mode": "선택",
"notification_requests.exit_selection_mode": "취소",
"notification_requests.maximize": "최대화",
"notification_requests.minimize_banner": "걸러진 알림 배너 최소화",
"notification_requests.notifications_from": "{name} 님으로부터의 알림",
@ -543,6 +545,9 @@
"notifications.permission_denied": "권한이 거부되었기 때문에 데스크탑 알림을 활성화할 수 없음",
"notifications.permission_denied_alert": "이전에 브라우저 권한이 거부되었기 때문에, 데스크탑 알림이 활성화 될 수 없습니다.",
"notifications.permission_required": "필요한 권한이 승인되지 않아 데스크탑 알림을 사용할 수 없습니다.",
"notifications.policy.accept": "허용",
"notifications.policy.drop": "무시",
"notifications.policy.filter": "필터",
"notifications.policy.filter_limited_accounts_hint": "서버 중재자에 의해 제한됨",
"notifications.policy.filter_limited_accounts_title": "중재된 계정",
"notifications.policy.filter_new_accounts.hint": "{days, plural, one {하루} other {#일}} 안에 만들어진",
@ -793,6 +798,7 @@
"timeline_hint.remote_resource_not_displayed": "다른 서버의 {resource} 표시는 할 수 없습니다.",
"timeline_hint.resources.followers": "팔로워",
"timeline_hint.resources.follows": "팔로우",
"timeline_hint.resources.replies": "몇몇 답글",
"timeline_hint.resources.statuses": "이전 게시물",
"trends.counter_by_accounts": "이전 {days}일 동안 {counter} 명의 사용자",
"trends.trending_now": "지금 유행 중",

View file

@ -40,7 +40,7 @@
"compose_form.direct_message_warning_learn_more": "Discere plura",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
"compose_form.lock_disclaimer": "Tua ratio non est {clausa}. Quisquis te sequi potest ut visum accipiat nuntios tuos tantum pro sectatoribus.",
"compose_form.lock_disclaimer": "Tua ratio non est {locked}. Quisquis te sequi potest ut visum accipiat nuntios tuos tantum pro sectatoribus.",
"compose_form.lock_disclaimer.lock": "clausum",
"compose_form.placeholder": "What is on your mind?",
"compose_form.publish_form": "Barrire",
@ -128,6 +128,7 @@
"lightbox.next": "Secundum",
"lists.account.add": "Adde ad tabellās",
"lists.new.create": "Addere tabella",
"lists.subheading": "Tuae tabulae",
"load_pending": "{count, plural, one {# novum item} other {# nova itema}}",
"media_gallery.toggle_visible": "{number, plural, one {Cēla imaginem} other {Cēla imagines}}",
"moved_to_account_banner.text": "Tua ratione {disabledAccount} interdum reposita est, quod ad {movedToAccount} migrāvisti.",
@ -146,7 +147,7 @@
"notification.moderation_warning.action_sensitive": "Tua nuntia hinc sensibiliter notabuntur.",
"notification.moderation_warning.action_silence": "Ratio tua est limitata.",
"notification.moderation_warning.action_suspend": "Ratio tua suspensus est.",
"notification.own_poll": "Suffragium tuum terminatum est.",
"notification.own_poll": "Suffragium tuum terminatum est",
"notification.reblog": "{name} tuum nuntium amplificavit.",
"notification.relationships_severance_event.account_suspension": "Admin ab {from} {target} suspendit, quod significat nōn iam posse tē novitātēs ab eīs accipere aut cum eīs interagere.",
"notification.relationships_severance_event.domain_block": "Admin ab {from} {target} obsēcāvit, includēns {followersCount} ex tuīs sectātōribus et {followingCount, plural, one {# ratione} other {# rationibus}} quās sequeris.",
@ -161,7 +162,7 @@
"onboarding.actions.go_to_home": "Go to your home feed",
"onboarding.follows.lead": "Tua domus feed est principalis via Mastodon experīrī. Quō plūrēs persōnas sequeris, eō actīvior et interessantior erit. Ad tē incipiendum, ecce quaedam suāsiones:",
"onboarding.follows.title": "Popular on Mastodon",
"onboarding.profile.display_name_hint": "Tuum nomen completum aut tuum nomen ludens...",
"onboarding.profile.display_name_hint": "Tuum nomen completum aut tuum nomen ludens",
"onboarding.start.lead": "Nunc pars es Mastodonis, singularis, socialis medii platformae decentralis ubi—non algorismus—tuam ipsius experientiam curas. Incipiāmus in nova hac socialis regione:",
"onboarding.start.skip": "Want to skip right ahead?",
"onboarding.start.title": "Perfecisti eam!",

View file

@ -358,7 +358,9 @@
"home.show_announcements": "Rodyti skelbimus",
"ignore_notifications_modal.disclaimer": "„Mastodon“ negali informuoti naudotojų, kad ignoravai jų pranešimus. Ignoravus pranešimus, pačių pranešimų siuntimas nebus sustabdytas.",
"ignore_notifications_modal.filter_instead": "Filtruoti vietoj to",
"ignore_notifications_modal.filter_to_act_users": "Vis dar galėsi priimti, atmesti arba pranešti naudotojus.",
"ignore_notifications_modal.filter_to_avoid_confusion": "Filtravimas padeda išvengti galimos painiavos.",
"ignore_notifications_modal.filter_to_review_separately": "Filtruotus pranešimus gali peržiūrėti atskirai.",
"ignore_notifications_modal.ignore": "Ignoruoti pranešimus",
"ignore_notifications_modal.limited_accounts_title": "Ignoruoti pranešimus iš prižiūrėmų paskyrų?",
"ignore_notifications_modal.new_accounts_title": "Ignoruoti pranešimus iš naujų paskyrų?",
@ -514,13 +516,26 @@
"notification.status": "{name} ką tik paskelbė",
"notification.update": "{name} redagavo įrašą",
"notification_requests.accept": "Priimti",
"notification_requests.accept_all": "Priimti visus",
"notification_requests.accept_multiple": "{count, plural, one {Priimti # prašymą} few {Priimti # prašymus} many {Priimti # prašymo} other {Priimti # prašymų}}",
"notification_requests.confirm_accept_all.button": "Priimti visus",
"notification_requests.confirm_accept_all.message": "Ketini priimti {count, plural, one {# pranešimo prašymą} few {# pranešimų prašymus} many {# pranešimo prašymo} other {# pranešimų prašymų}}. Ar tikrai nori tęsti?",
"notification_requests.confirm_accept_all.title": "Priimti pranešimų prašymus?",
"notification_requests.confirm_dismiss_all.button": "Atmesti visus",
"notification_requests.confirm_dismiss_all.message": "Ketini atmesti {count, plural, one {# pranešimo prašymą} few {# pranešimų prašymus} many {# pranešimo prašymo} other {# pranešimų prašymų}}. Daugiau negalėsi lengvai pasiekti {count, plural, one {jo} few {jų} many {juos} other {jų}}. Ar tikrai nori tęsti?",
"notification_requests.confirm_dismiss_all.title": "Atmesti pranešimų prašymus?",
"notification_requests.dismiss": "Atmesti",
"notification_requests.dismiss_all": "Atmesti visus",
"notification_requests.dismiss_multiple": "{count, plural, one {Atmesti # prašymą} few {Atmesti # prašymus} many {Atmesti # prašymo} other {Atmesti # prašymų}}",
"notification_requests.enter_selection_mode": "Pasirinkti",
"notification_requests.exit_selection_mode": "Atšaukti",
"notification_requests.explainer_for_limited_account": "Pranešimai iš šios paskyros buvo filtruojami, nes prižiūrėtojas (-a) apribojo paskyrą.",
"notification_requests.explainer_for_limited_remote_account": "Pranešimai iš šios paskyros buvo filtruojami, nes prižiūrėtojas (-a) apribojo paskyrą arba serverį.",
"notification_requests.maximize": "Padidinti",
"notification_requests.minimize_banner": "Mažinti filtruotų pranešimų reklamjuostę",
"notification_requests.notifications_from": "Pranešimai iš {name}",
"notification_requests.title": "Filtruojami pranešimai",
"notification_requests.view": "Peržiūrėti pranešimus",
"notifications.clear": "Išvalyti pranešimus",
"notifications.clear_confirmation": "Ar tikrai nori visam laikui išvalyti visus pranešimus?",
"notifications.clear_title": "Valyti pranešimus?",
@ -810,6 +825,7 @@
"timeline_hint.remote_resource_not_displayed": "{resource} iš kitų serverių nerodomi.",
"timeline_hint.resources.followers": "Sekėjai",
"timeline_hint.resources.follows": "Seka",
"timeline_hint.resources.replies": "Kai kurie atsakymai",
"timeline_hint.resources.statuses": "Senesni įrašai",
"trends.counter_by_accounts": "{count, plural, one {{counter} žmogus} few {{counter} žmonės} many {{counter} žmogus} other {{counter} žmonių}} per {days, plural, one {dieną} few {{days} dienas} many {{days} dienas} other {{days} dienų}}",
"trends.trending_now": "Tendencinga dabar",

View file

@ -358,7 +358,9 @@
"home.show_announcements": "Vis kunngjeringar",
"ignore_notifications_modal.disclaimer": "Mastodon kan ikkje informera brukarane at du overser varsla deira. Å oversjå varsel vil ikkje hindra at meldingane blir sende.",
"ignore_notifications_modal.filter_instead": "Filtrer i staden",
"ignore_notifications_modal.filter_to_act_users": "Du kan framleis godta, avvisa eller rapportera brukarar",
"ignore_notifications_modal.filter_to_avoid_confusion": "Å filtrera hjelper til å unngå mogleg forvirring",
"ignore_notifications_modal.filter_to_review_separately": "Du kan gå gjennom filtrerte varslingar for seg",
"ignore_notifications_modal.ignore": "Oversjå varsel",
"ignore_notifications_modal.limited_accounts_title": "Oversjå varsel frå modererte kontoar?",
"ignore_notifications_modal.new_accounts_title": "Oversjå varsel frå nye kontoar?",

View file

@ -21,7 +21,7 @@ interface BaseNotificationGroup
interface BaseNotificationWithStatus<Type extends NotificationWithStatusType>
extends BaseNotificationGroup {
type: Type;
statusId: string;
statusId: string | undefined;
}
interface BaseNotification<Type extends NotificationType>
@ -126,7 +126,7 @@ export function createNotificationGroupFromJSON(
case 'update': {
const { status_id: statusId, ...groupWithoutStatus } = group;
return {
statusId,
statusId: statusId ?? undefined,
sampleAccountIds,
...groupWithoutStatus,
};
@ -183,7 +183,7 @@ export function createNotificationGroupFromNotificationJSON(
case 'mention':
case 'poll':
case 'update':
return { ...group, statusId: notification.status.id };
return { ...group, statusId: notification.status?.id };
case 'admin.report':
return { ...group, report: createReportFromJSON(notification.report) };
case 'severed_relationships':

View file

@ -1,36 +1,20 @@
export const logOut = () => {
const form = document.createElement('form');
import api from 'mastodon/api';
const methodInput = document.createElement('input');
methodInput.setAttribute('name', '_method');
methodInput.setAttribute('value', 'delete');
methodInput.setAttribute('type', 'hidden');
form.appendChild(methodInput);
export async function logOut() {
try {
const response = await api(false).delete<{ redirect_to?: string }>(
'/auth/sign_out',
{ headers: { Accept: 'application/json' }, withCredentials: true },
);
const csrfToken = document.querySelector<HTMLMetaElement>(
'meta[name=csrf-token]',
);
const csrfParam = document.querySelector<HTMLMetaElement>(
'meta[name=csrf-param]',
);
if (csrfParam && csrfToken) {
const csrfInput = document.createElement('input');
csrfInput.setAttribute('name', csrfParam.content);
csrfInput.setAttribute('value', csrfToken.content);
csrfInput.setAttribute('type', 'hidden');
form.appendChild(csrfInput);
if (response.status === 200 && response.data.redirect_to)
window.location.href = response.data.redirect_to;
else
console.error(
'Failed to log out, got an unexpected non-redirect response from the server',
response,
);
} catch (error) {
console.error('Failed to log out, response was an error', error);
}
const submitButton = document.createElement('input');
submitButton.setAttribute('type', 'submit');
form.appendChild(submitButton);
form.method = 'post';
form.action = '/auth/sign_out';
form.style.display = 'none';
document.body.appendChild(form);
submitButton.click();
};
}

View file

@ -713,7 +713,7 @@ body,
top: 15px;
.avatar {
border-radius: 4px;
border-radius: var(--avatar-border-radius);
width: 40px;
height: 40px;
}
@ -764,7 +764,7 @@ body,
top: 15px;
.avatar {
border-radius: 4px;
border-radius: var(--avatar-border-radius);
width: 40px;
height: 40px;
}
@ -888,6 +888,7 @@ a.name-tag,
.account {
padding: 0;
border: none;
&__avatar-wrapper {
margin-inline-start: 0;
@ -1611,7 +1612,7 @@ a.sparkline {
position: absolute;
inset-inline-start: 15px;
top: 15px;
border-radius: 4px;
border-radius: var(--avatar-border-radius);
width: 40px;
height: 40px;
}

View file

@ -1808,6 +1808,7 @@ body > [data-popper-placement] {
.account {
padding: 16px;
border-bottom: 1px solid var(--background-border-color);
.account__display-name {
flex: 1 1 auto;
@ -1996,13 +1997,14 @@ body > [data-popper-placement] {
.account__avatar {
display: block;
position: relative;
border-radius: var(--avatar-border-radius);
img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 4px;
border-radius: var(--avatar-border-radius);
}
&-inline {
@ -2836,7 +2838,7 @@ $ui-header-logo-wordmark-width: 99px;
overflow: hidden;
}
@media screen and (width >= 631px) {
@media screen and (width > $mobile-breakpoint) {
.columns-area {
padding: 0;
}
@ -4248,6 +4250,10 @@ a.status-card {
}
}
.timeline-hint--with-descendants {
border-top: 1px solid var(--background-border-color);
}
.regeneration-indicator {
text-align: center;
font-size: 16px;
@ -4498,10 +4504,19 @@ a.status-card {
opacity: 1;
z-index: 1;
position: relative;
border-left: 1px solid var(--background-border-color);
border-right: 1px solid var(--background-border-color);
border-bottom: 1px solid var(--background-border-color);
@media screen and (max-width: $no-gap-breakpoint) {
border-left: 0;
border-right: 0;
}
&.collapsed {
max-height: 0;
opacity: 0.5;
border-bottom: 0;
}
&.animating {
@ -4518,13 +4533,7 @@ a.status-card {
}
.column-header__collapsible-inner {
border: 1px solid var(--background-border-color);
border-top: 0;
@media screen and (max-width: $no-gap-breakpoint) {
border-left: 0;
border-right: 0;
}
}
.column-header__setting-btn {
@ -5731,7 +5740,7 @@ a.status-card {
user-select: text;
display: flex;
@media screen and (width <= 630px) {
@media screen and (width <= $mobile-breakpoint) {
margin-top: auto;
}
}
@ -6090,7 +6099,7 @@ a.status-card {
border-radius: 0 0 16px 16px;
border-top: 0;
@media screen and (max-width: $no-gap-breakpoint) {
@media screen and (max-width: $mobile-breakpoint) {
border-radius: 0;
border-bottom: 0;
padding-bottom: 32px;
@ -7971,7 +7980,7 @@ noscript {
.account__avatar {
background: var(--background-color);
border: 1px solid var(--background-border-color);
border-radius: 4px;
border-radius: var(--avatar-border-radius);
}
}
}
@ -9092,8 +9101,9 @@ noscript {
backdrop-filter: var(--background-filter);
border: 1px solid var(--modal-border-color);
padding: 24px;
box-sizing: border-box;
@media screen and (max-width: $no-gap-breakpoint) {
@media screen and (max-width: $mobile-breakpoint) {
border-radius: 16px 16px 0 0;
border-bottom: 0;
padding-bottom: 32px;

View file

@ -81,7 +81,7 @@
height: 100%;
display: block;
margin: 0;
border-radius: 4px;
border-radius: var(--avatar-border-radius);
}
}

View file

@ -312,7 +312,7 @@ code {
margin-bottom: 10px;
max-width: 100%;
height: auto;
border-radius: 4px;
border-radius: var(--avatar-border-radius);
background: url('images/void.png');
&[src$='missing.png'] {

View file

@ -54,40 +54,21 @@ table {
}
html {
scrollbar-color: lighten($ui-base-color, 4%) rgba($base-overlay-background, 0.1);
scrollbar-color: var(--background-border-color);
}
::-webkit-scrollbar {
width: 12px;
height: 12px;
width: 4px;
height: 4px;
}
::-webkit-scrollbar-thumb {
background: lighten($ui-base-color, 4%);
border: 0px none $base-border-color;
border-radius: 50px;
}
::-webkit-scrollbar-thumb:hover {
background: lighten($ui-base-color, 6%);
}
::-webkit-scrollbar-thumb:active {
background: lighten($ui-base-color, 4%);
background-color: $ui-highlight-color;
opacity: .25;
}
::-webkit-scrollbar-track {
border: 0px none $base-border-color;
border-radius: 0;
background: rgba($base-overlay-background, 0.1);
}
::-webkit-scrollbar-track:hover {
background: $ui-base-color;
}
::-webkit-scrollbar-track:active {
background: $ui-base-color;
background-color: var(--background-border-color);
}
::-webkit-scrollbar-corner {

View file

@ -88,6 +88,7 @@ $media-modal-media-max-width: 100%;
$media-modal-media-max-height: 80%;
$no-gap-breakpoint: 1175px;
$mobile-breakpoint: 630px;
$font-sans-serif: 'mastodon-font-sans-serif' !default;
$font-display: 'mastodon-font-display' !default;
@ -108,4 +109,5 @@ $font-monospace: 'mastodon-font-monospace' !default;
--surface-background-color: #{darken($ui-base-color, 4%)};
--surface-variant-background-color: #{$ui-base-color};
--surface-variant-active-background-color: #{lighten($ui-base-color, 4%)};
--avatar-border-radius: 8px;
}

View file

@ -422,7 +422,7 @@ class MediaAttachment < ApplicationRecord
attachment = public_send(attachment_name)
styles = DEFAULT_STYLES | attachment.styles.keys
styles.map { |style| attachment.path(style) }
end
end.compact
rescue => e
# We really don't want any error here preventing media deletion
Rails.logger.warn "Error #{e.class} busting cache: #{e.message}"

View file

@ -100,7 +100,7 @@ class User < ApplicationRecord
validates :email, presence: true, email_address: true
validates_with BlacklistedEmailValidator, if: -> { ENV['EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION'] == 'true' || !confirmed? }
validates_with UserEmailValidator, if: -> { ENV['EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION'] == 'true' || !confirmed? }
validates_with EmailMxValidator, if: :validate_email_dns?
validates :agreement, acceptance: { allow_nil: false, accept: [true, 'true', '1'] }, on: :create

View file

@ -3,6 +3,7 @@
class AcceptNotificationRequestService < BaseService
def call(request)
NotificationPermission.create!(account: request.account, from_account: request.from_account)
UnfilterNotificationsWorker.perform_async(request.id)
UnfilterNotificationsWorker.perform_async(request.account_id, request.from_account_id)
request.destroy!
end
end

View file

@ -5,6 +5,7 @@ class NotifyService < BaseService
MAXIMUM_GROUP_SPAN_HOURS = 12
# TODO: the severed_relationships type probably warrants email notifications
NON_EMAIL_TYPES = %i(
admin.report
admin.sign_up
@ -12,7 +13,6 @@ class NotifyService < BaseService
poll
status
moderation_warning
# TODO: this probably warrants an email notification
severed_relationships
).freeze

View file

@ -15,7 +15,7 @@ class EmailMxValidator < ActiveModel::Validator
if resolved_ips.empty?
user.errors.add(:email, :unreachable)
elsif on_blacklist?(resolved_domains, user.sign_up_ip)
elsif email_domain_blocked?(resolved_domains, user.sign_up_ip)
user.errors.add(:email, :blocked)
end
end
@ -34,9 +34,9 @@ class EmailMxValidator < ActiveModel::Validator
end
def on_allowlist?(domain)
return false if Rails.configuration.x.email_domains_whitelist.blank?
return false if Rails.configuration.x.email_domains_allowlist.blank?
Rails.configuration.x.email_domains_whitelist.include?(domain)
Rails.configuration.x.email_domains_allowlist.include?(domain)
end
def resolve_mx(domain)
@ -58,7 +58,7 @@ class EmailMxValidator < ActiveModel::Validator
[ips, records]
end
def on_blacklist?(domains, attempt_ip)
def email_domain_blocked?(domains, attempt_ip)
EmailDomainBlock.block?(domains, attempt_ip: attempt_ip)
end
end

View file

@ -1,6 +1,6 @@
# frozen_string_literal: true
class BlacklistedEmailValidator < ActiveModel::Validator
class UserEmailValidator < ActiveModel::Validator
def validate(user)
return if user.valid_invitation? || user.email.blank?
@ -23,18 +23,18 @@ class BlacklistedEmailValidator < ActiveModel::Validator
end
def not_allowed_through_configuration?(email)
return false if Rails.configuration.x.email_domains_whitelist.blank?
return false if Rails.configuration.x.email_domains_allowlist.blank?
domains = Rails.configuration.x.email_domains_whitelist.gsub('.', '\.')
domains = Rails.configuration.x.email_domains_allowlist.gsub('.', '\.')
regexp = Regexp.new("@(.+\\.)?(#{domains})$", true)
email !~ regexp
end
def disallowed_through_configuration?(email)
return false if Rails.configuration.x.email_domains_blacklist.blank?
return false if Rails.configuration.x.email_domains_denylist.blank?
domains = Rails.configuration.x.email_domains_blacklist.gsub('.', '\.')
domains = Rails.configuration.x.email_domains_denylist.gsub('.', '\.')
regexp = Regexp.new("@(.+\\.)?(#{domains})", true)
regexp.match?(email)

View file

@ -11,7 +11,7 @@ class Scheduler::AutoCloseRegistrationsScheduler
OPEN_REGISTRATIONS_MODERATOR_THRESHOLD = 1.week + UserTrackingConcern::SIGN_IN_UPDATE_FREQUENCY
def perform
return if Rails.configuration.x.email_domains_whitelist.present? || ENV['DISABLE_AUTOMATIC_SWITCHING_TO_APPROVED_REGISTRATIONS'] == 'true'
return if Rails.configuration.x.email_domains_allowlist.present? || ENV['DISABLE_AUTOMATIC_SWITCHING_TO_APPROVED_REGISTRATIONS'] == 'true'
return unless Setting.registrations_mode == 'open'
switch_to_approval_mode! unless active_moderators?

View file

@ -3,8 +3,19 @@
class UnfilterNotificationsWorker
include Sidekiq::Worker
def perform(notification_request_id)
@notification_request = NotificationRequest.find(notification_request_id)
# Earlier versions of the feature passed a `notification_request` ID
# If `to_account_id` is passed, the first argument is an account ID
# TODO for after 4.3.0: drop the single-argument case
def perform(notification_request_or_account_id, from_account_id = nil)
if from_account_id.present?
@notification_request = nil
@from_account = Account.find(from_account_id)
@recipient = Account.find(notification_request_or_account_id)
else
@notification_request = NotificationRequest.find(notification_request_or_account_id)
@from_account = @notification_request.from_account
@recipient = @notification_request.account
end
push_to_conversations!
unfilter_notifications!
@ -16,7 +27,7 @@ class UnfilterNotificationsWorker
private
def push_to_conversations!
notifications_with_private_mentions.find_each { |notification| AccountConversation.add_status(@notification_request.account, notification.target_status) }
notifications_with_private_mentions.reorder(nil).find_each(order: :desc) { |notification| AccountConversation.add_status(@recipient, notification.target_status) }
end
def unfilter_notifications!
@ -24,11 +35,11 @@ class UnfilterNotificationsWorker
end
def remove_request!
@notification_request.destroy!
@notification_request&.destroy!
end
def filtered_notifications
Notification.where(account: @notification_request.account, from_account: @notification_request.from_account, filtered: true)
Notification.where(account: @recipient, from_account: @from_account, filtered: true)
end
def notifications_with_private_mentions

View file

@ -1,6 +0,0 @@
# frozen_string_literal: true
Rails.application.configure do
config.x.email_domains_blacklist = (ENV['EMAIL_DOMAIN_DENYLIST'] || ENV['EMAIL_DOMAIN_BLACKLIST']) || ''
config.x.email_domains_whitelist = (ENV['EMAIL_DOMAIN_ALLOWLIST'] || ENV['EMAIL_DOMAIN_WHITELIST']) || ''
end

View file

@ -147,7 +147,7 @@ Doorkeeper.configure do
force_ssl_in_redirect_uri false
# Specify what redirect URI's you want to block during Application creation.
# Any redirect URI is whitelisted by default.
# Any redirect URI is allowed by default.
#
# You can use this option in order to forbid URI's with 'javascript' scheme
# for example.

View file

@ -0,0 +1,6 @@
# frozen_string_literal: true
Rails.application.configure do
config.x.email_domains_denylist = ENV.fetch('EMAIL_DOMAIN_DENYLIST', nil) || ENV.fetch('EMAIL_DOMAIN_BLACKLIST', '')
config.x.email_domains_allowlist = ENV.fetch('EMAIL_DOMAIN_ALLOWLIST', nil) || ENV.fetch('EMAIL_DOMAIN_WHITELIST', '')
end

View file

@ -21,7 +21,7 @@ cy:
link_verified_on: Gwiriwyd perchnogaeth y ddolen yma ar %{date}
nothing_here: Does dim byd yma!
pin_errors:
following: Rhaid i chi fod yn dilyn y person rydych am ei gymeradwyo, yn barod.
following: Rhaid i chi fod yn dilyn y person rydych am ei gymeradwyo, yn barod
posts:
few: Postiadau
many: Postiadau
@ -39,6 +39,7 @@ cy:
created_msg: Crëwyd nodyn cymedroli'n llwyddiannus!
destroyed_msg: Dinistriwyd nodyn cymedroli yn llwyddiannus!
accounts:
add_email_domain_block: Rhwystro parth e-bost
approve: Cymeradwyo
approved_msg: Wedi llwyddo i gymeradwyo cais cofrestru %{username}
are_you_sure: Ydych chi'n siŵr?
@ -65,6 +66,7 @@ cy:
demote: Diraddio
destroyed_msg: Mae data %{username} bellach mewn ciw i gael ei ddileu yn fuan
disable: Rhewi
disable_sign_in_token_auth: Analluogi dilysu tocyn e-bost
disable_two_factor_authentication: Diffodd 2FA
disabled: Wedi rhewi
display_name: Enw sgrin
@ -73,6 +75,7 @@ cy:
email: E-bost
email_status: Statws e-bost
enable: Dadrewi
enable_sign_in_token_auth: Galluogi dilysu tocyn e-bost
enabled: Wedi ei alluogi
enabled_msg: Wedi dadrewi cyfrif %{username} yn llwyddiannus
followers: Dilynwyr
@ -141,6 +144,7 @@ cy:
resubscribe: Ail danysgrifio
role: Rôl
search: Chwilio
search_same_email_domain: Defnyddwyr eraill gyda'r un parth e-bost
search_same_ip: Defnyddwyr eraill gyda'r un IP
security: Diogelwch
security_measures:
@ -181,21 +185,26 @@ cy:
approve_appeal: Cymeradwyo'r Apêl
approve_user: Cymeradwyo Defnyddiwr
assigned_to_self_report: Neilltuo Adroddiad
change_email_user: Newid E-bost ar gyfer Defnyddiwr
change_role_user: Newid Rôl y Defnyddiwr
confirm_user: Cadarnhau Defnyddiwr
create_account_warning: Creu Rhybydd
create_announcement: Creu Cyhoeddiad
create_canonical_email_block: Creu Rhwystr E-bost
create_custom_emoji: Creu Emoji Addasedig
create_domain_allow: Creu Caniatáu Parth
create_domain_block: Creu Gwaharddiad Parth
create_email_domain_block: Creu Rhwystr Parth E-bost
create_ip_block: Creu rheol IP
create_unavailable_domain: Creu Parth Ddim ar Gael
create_user_role: Creu Rôl
demote_user: Diraddio Defnyddiwr
destroy_announcement: Dileu Cyhoeddiad
destroy_canonical_email_block: Dileu Rhwystr E-bost
destroy_custom_emoji: Dileu Emoji Addasedig
destroy_domain_allow: Dileu Caniatáu Parth
destroy_domain_block: Dileu Gwaharddiad Parth
destroy_email_domain_block: Dileu Rhwystr Parth E-bost
destroy_instance: Clirio Parth
destroy_ip_block: Dileu rheol IP
destroy_status: Dileu Postiad
@ -203,8 +212,10 @@ cy:
destroy_user_role: Dileu Rôl
disable_2fa_user: Diffodd 2FA
disable_custom_emoji: Analluogi Emoji Addasedig
disable_sign_in_token_auth_user: Analluogi Dilysu Tocyn E-bost Defnyddiwr
disable_user: Analluogi Defnyddiwr
enable_custom_emoji: Galluogi Emoji Addasedig
enable_sign_in_token_auth_user: Galluogi Dilysu Tocyn E-bost Defnyddiwr
enable_user: Galluogi Defnyddiwr
memorialize_account: Cofadeilio Cyfrif
promote_user: Dyrchafu Defnyddiwr
@ -234,20 +245,26 @@ cy:
approve_appeal_html: Mae %{name} wedi cymeradwyo penderfyniad cymedroli gan %{target}
approve_user_html: Mae %{name} wedi cymeradwyo cofrestru gan %{target}
assigned_to_self_report_html: Mae %{name} wedi neilltuo adroddiad %{target} iddyn nhw eu hunain
change_email_user_html: Mae %{name} wedi newid cyfeiriad e-bost defnyddiwr %{target}
change_role_user_html: Mae %{name} wedi newid rôl %{target}
confirm_user_html: Mae %{name} wedi cadarnhau cyfeiriad e-bost defnyddiwr %{target}
create_account_warning_html: Mae %{name} wedi anfon rhybudd at %{target}
create_announcement_html: Mae %{name} wedi creu cyhoeddiad newydd %{target}
create_canonical_email_block_html: Mae %{name} wedi'i rwystro e-bost gyda'r hash %{target}
create_custom_emoji_html: Mae %{name} wedi llwytho emoji newydd %{target}
create_domain_allow_html: Mae %{name} wedi caniatáu ffedereiddio â pharth %{target}
create_domain_block_html: Mae %{name} wedi rhwystro parth %{target}
create_email_domain_block_html: Mae %{name} wedi rhwystro parth e-bost %{target}
create_ip_block_html: Mae %{name} wedi creu rheol ar gyfer IP %{target}
create_unavailable_domain_html: Mae %{name} wedi stopio danfon i barth %{target}
create_user_role_html: Mae %{name} wedi creu rôl %{target}
demote_user_html: Mae %{name} wedi israddio defnyddiwr %{target}
destroy_announcement_html: Mae %{name} wedi dileu cyhoeddiad %{target}
destroy_canonical_email_block_html: Mae %{name} wedi dad-rwystro parth e-bost %{target}
destroy_custom_emoji_html: Mae %{name} wedi dileu emoji %{target}
destroy_domain_allow_html: Mae %{name} wedi gwrthod ffederasiwn gyda pharth %{target}
destroy_domain_block_html: Mae %{name} wedi dad rwystro parth %{target}
destroy_email_domain_block_html: Mae %{name} wedi dad-rwystro parth e-bost %{target}
destroy_instance_html: Mae %{name} wedi dileu parth %{target}
destroy_ip_block_html: Mae %{name} dileu rheol ar gyfer IP %{target}
destroy_status_html: Mae %{name} wedi tynnu postiad gan %{target}
@ -255,8 +272,10 @@ cy:
destroy_user_role_html: Mae %{name} wedi dileu rôl %{target}
disable_2fa_user_html: Mae %{name} wedi analluogi gofyniad dau ffactor ar gyfer defnyddiwr %{target}
disable_custom_emoji_html: Mae %{name} wedi analluogi emoji %{target}
disable_sign_in_token_auth_user_html: Mae %{name} wedi analluogi dilysiad tocyn e-bost %{target}
disable_user_html: Mae %{name} wedi analluogi mewngofnodi defnyddiwr %{target}
enable_custom_emoji_html: Mae %{name} wedi analluogi emoji %{target}
enable_sign_in_token_auth_user_html: Mae %{name} wedi galluogi dilysiad tocyn e-bost %{target}
enable_user_html: Mae %{name} wedi galluogi mewngofnodi defnyddiwr %{target}
memorialize_account_html: Newidiodd %{name} gyfrif %{target} i dudalen memoriam
promote_user_html: Mae %{name} wedi hyrwyddo defnyddiwr %{target}
@ -264,6 +283,7 @@ cy:
reject_user_html: Mae %{name} wedi gwrthod cofrestriad gan %{target}
remove_avatar_user_html: Mae %{name} wedi tynnu afatar %{target}
reopen_report_html: Mae %{name} wedi ailagor adroddiad %{target}
resend_user_html: Mae %{name} wedi ail anfon e-bost cadarnhau i%{target}
reset_password_user_html: Mae %{name} wedi ailosod cyfrinair defnyddiwr %{target}
resolve_report_html: Mae %{name} wedi datrys adroddiad %{target}
sensitive_account_html: Mae %{name} wedi marcio cyfrwng %{target} fel un sensitif
@ -444,6 +464,7 @@ cy:
other: "%{count} ymgais i gofrestru dros yr wythnos ddiwethaf"
two: "%{count} ymgais i gofrestru dros yr wythnos ddiwethaf"
zero: "%{count} o ymgeisiadau i gofrestru dros yr wythnos ddiwethaf"
created_msg: Parth e-bost wedi'i rwystro'n llwyddiannus
delete: Dileu
dns:
types:
@ -452,8 +473,12 @@ cy:
new:
create: Ychwanegu parth
resolve: Datrys parth
title: Rhwystro parth e-bost newydd
no_email_domain_block_selected: Ni newidiwyd unrhyw rwystro parth e-bost gan na ddewiswyd yr un ohonyn nhw
not_permitted: Dim caniatâd
resolved_dns_records_hint_html: Mae'r enw parth yn cyd-fynd â'r parthau MX canlynol, sy'n gyfrifol yn y pen draw am dderbyn e-bost. Bydd rhwystro parth MX yn rhwystro cofrestriadau o unrhyw gyfeiriad e-bost sy'n defnyddio'r un parth MX, hyd yn oed os yw'r enw parth gweladwy yn wahanol. <strong>Byddwch yn ofalus i beidio â rhwystro'r prif ddarparwyr e-bost.</strong>
resolved_through_html: Wedi'i ddatrys trwy %{domain}
title: Parthau e-bost wedi'u rhwystro
export_domain_allows:
new:
title: Mewnforio parth yn caniatáu
@ -623,6 +648,7 @@ cy:
resolve_description_html: Ni fydd unrhyw gamau yn cael eu cymryd yn erbyn y cyfrif a adroddwyd, ni chofnodwyd rhybudd, a bydd yr adroddiad yn cael ei gau.
silence_description_html: Bydd y cyfrif yn weladwy i'r rhai sydd eisoes yn ei ddilyn neu'n edrych arno â llaw, gan gyfyngu'n ddifrifol ar ei gyrhaeddiad. Mae modd ei ddychwelyd bob amser. Yn cau pob adroddiad yn erbyn y cyfrif hwn.
suspend_description_html: Bydd y cyfrif a'i holl gynnwys yn anhygyrch ac yn cael ei ddileu yn y pen draw, a bydd rhyngweithio ag ef yn amhosibl. Yn gildroadwy o fewn 30 diwrnod. Yn cau pob adroddiad yn erbyn y cyfrif hwn.
actions_description_html: Penderfynwch pa gamau i'w cymryd i delio gyda'r adroddiad hwn. Os cymerwch gamau cosbi yn erbyn y cyfrif a adroddwyd, bydd hysbysiad e-bost yn cael ei anfon atyn nhw, ac eithrio pan fydd y categori <strong>Sbam</strong> yn cael ei ddewis.
actions_description_remote_html: Penderfynwch pa gamau i'w cymryd i ddatrys yr adroddiad hwn. Bydd hyn ond yn effeithio ar sut <strong>mae'ch</strong> gweinydd yn cyfathrebu â'r cyfrif hwn o bell ac yn trin ei gynnwys.
add_to_report: Ychwanegu rhagor i adroddiad
already_suspended_badges:
@ -687,6 +713,7 @@ cy:
delete_data_html: Dileu proffil a chynnwys <strong>@%{acct}</strong> 30 diwrnod o nawr oni bai ei b/fod heb ei h/atal yn y cyfamser
preview_preamble_html: 'Bydd <strong>@%{acct}</strong> yn derbyn rhybudd gyda''r cynnwys canlynol:'
record_strike_html: Recordio rhybudd yn erbyn <strong>@%{acct}</strong> i'ch helpu i ddwysáu ar achosion o dorri rheolau yn y dyfodol o'r cyfrif hwn
send_email_html: Anfon e-bost rhybuddio <strong>at @%{acct}</strong>
warning_placeholder: Rhesymeg ychwanegol dewisol ar gyfer y cam cymedroli.
target_origin: Tarddiad y cyfrif a adroddwyd
title: Adroddiadau
@ -734,6 +761,7 @@ cy:
manage_appeals: Rheoli Apeliadau
manage_appeals_description: Yn caniatáu i ddefnyddwyr adolygu apeliadau yn erbyn camau cymedroli
manage_blocks: Rheoli Blociau
manage_blocks_description: Yn caniatáu i ddefnyddwyr rwystro darparwyr e-bost a chyfeiriadau IP
manage_custom_emojis: Rheoli Emojis Cyfaddas
manage_custom_emojis_description: Yn caniatáu i ddefnyddwyr reoli emojis cyfaddas ar y gweinydd
manage_federation: Rheoli Ffederasiwn
@ -751,6 +779,7 @@ cy:
manage_taxonomies: Rheoli Tacsonomeg
manage_taxonomies_description: Yn caniatáu i ddefnyddwyr adolygu cynnwys sy'n trendio a diweddaru gosodiadau hashnodau
manage_user_access: Rheoli Mynediad Defnyddwyr
manage_user_access_description: Yn caniatáu i ddefnyddwyr analluogi dilysiad dau ffactor defnyddwyr eraill, newid eu cyfeiriad e-bost, ac ailosod eu cyfrinair
manage_users: Rheoli Defnyddwyr
manage_users_description: Yn caniatáu i ddefnyddwyr weld manylion defnyddwyr eraill a chyflawni camau cymedroli yn eu herbyn
manage_webhooks: Rheoli Bachau Gwe
@ -825,6 +854,7 @@ cy:
destroyed_msg: Llwytho i fyny i'r wefan wedi'i dileu yn llwyddiannus!
software_updates:
critical_update: Hanfodol - diweddarwch yn fuan
description: Argymhellir cadw'ch gosodiad Mastodon yn gyfredol i elwa o'r atgyweiriadau a'r nodweddion diweddaraf. Hefyd, weithiau mae'n hanfodol diweddaru Mastodon mewn modd amserol er mwyn osgoi materion diogelwch. Am y rhesymau hyn, mae Mastodon yn gwirio am ddiweddariadau bob 30 munud, a bydd yn eich hysbysu yn unol â'ch dewisiadau hysbysu e-bost.
documentation_link: Dysgu rhagor
release_notes: Nodiadau ryddhau
title: Diweddariadau ar gael
@ -912,13 +942,13 @@ cy:
message_html: "<strong>Mae eich storfa gwrthrychau wedi'i cham ffurfweddu. Mae preifatrwydd eich defnyddwyr mewn perygl.</strong>"
tags:
moderation:
not_trendable: Ddim yn dueddol
not_trendable: Ddim yn trendio
not_usable: Ddim yn ddefnyddiadwy
pending_review: O dan ystyriaeth
review_requested: Gofynnwyd am adolygiad
reviewed: Adolygwyd
title: Statws
trendable: Tueddadwy
trendable: Trendadwy
unreviewed: Heb ei adolygu
usable: Defnyddiadwy
name: Enw
@ -933,10 +963,16 @@ cy:
trends:
allow: Caniatáu
approved: Cymeradwywyd
confirm_allow: Ydych chi'n siŵr eich bod am ganiatáu'r tagiau a ddewiswyd?
confirm_disallow: Ydych chi'n siŵr eich bod am wrthod y tagiau hyn?
disallow: Gwrthod
links:
allow: Caniatáu dolen
allow_provider: Caniatáu cyhoeddwr
confirm_allow: Ydych chi'n siŵr eich bod am ganiatáu'r dolenni hyn?
confirm_allow_provider: Ydych chi'n siŵr eich bod am ganiatáu'r darparwyr hyn?
confirm_disallow: Ydych chi'n siŵr eich bod am wrthod y dolenni hyn?
confirm_disallow_provider: A ydych yn siŵr eich bod am wrthod y darparwyr hyn?
description_html: Mae'r rhain yn ddolenni sy'n cael eu rhannu llawer ar hyn o bryd gan gyfrifon y mae eich gweinydd yn gweld postiadau ohonyn nhw. Gall helpu eich defnyddwyr i ddarganfod beth sy'n digwydd yn y byd. Ni chaiff unrhyw ddolenni eu dangos yn gyhoeddus nes i chi gymeradwyo'r cyhoeddwr. Gallwch hefyd ganiatáu neu wrthod dolenni unigol.
disallow: Gwrthod dolen
disallow_provider: Gwrthod y cyhoeddwr
@ -952,18 +988,22 @@ cy:
zero: Wedi'i rannu gan %{count} o bobl dros yr wythnos ddiwethaf
title: Dolenni sy'n trendio
usage_comparison: Wedi'i rannu %{today} gwaith heddiw, o'i gymharu â %{yesterday} ddoe
not_allowed_to_trend: Dim caniatâd i dueddu
not_allowed_to_trend: Dim caniatâd i trendio
only_allowed: Derbyniwyd yn unig
pending_review: Yn aros am adolygiad
preview_card_providers:
allowed: Gall dolenni gan y cyhoeddwr hwn greu tuedd
allowed: Gall dolenni gan y cyhoeddwr hwn greu trend
description_html: Mae'r rhain yn barthau lle mae dolenni'n cael eu rhannu'n aml ar eich gweinydd. Ni fydd dolenni'n trendio'n gyhoeddus oni bai bod parth y ddolen yn cael ei gymeradwyo. Mae eich cymeradwyaeth (neu eich gwrthodiad) yn ymestyn i is-barthau.
rejected: Ni fydd dolenni gan y cyhoeddwr hwn yn creu tuedd
rejected: Ni fydd dolenni gan y cyhoeddwr hwn yn creu trend
title: Cyhoeddwyr
rejected: Gwrthodwyd
statuses:
allow: Caniatáu postiad
allow_account: Caniatáu awdur
confirm_allow: Ydych chi'n siŵr eich bod am ganiatáu'r statws hyn?
confirm_allow_account: Ydych chi'n siŵr eich bod am ganiatáu'r cyfrifon hyn?
confirm_disallow: A ydych yn siŵr eich bod am wrthod y statws hyn?
confirm_disallow_account: A ydych yn siŵr eich bod am wrthod y cyfrifon hyn?
description_html: Mae'r rhain yn bostiadau y mae eich gweinydd yn gwybod amdanyn nhw sy'n cael eu rhannu a'u ffafrio llawer ar hyn o bryd. Gall helpu eich defnyddwyr newydd a'ch defnyddwyr sy'n dychwelyd i ddod o hyd i fwy o bobl i'w dilyn. Ni chaiff unrhyw bostiadau eu dangos yn gyhoeddus nes i chi gymeradwyo'r awdur, ac mae'r awdur yn caniatáu i'w cyfrif gael ei awgrymu i eraill. Gallwch hefyd ganiatáu neu wrthod postiadau unigol.
disallow: Gwrthod postiad
disallow_account: Gwrthod awdur
@ -1004,6 +1044,7 @@ cy:
other: Wedi'i ddefnyddio gan %{count} o bobl dros yr wythnos ddiwethaf
two: Wedi'i ddefnyddio gan %{count} o bobl dros yr wythnos ddiwethaf
zero: Wedi'i ddefnyddio gan %{count} o bobl dros yr wythnos ddiwethaf
title: Argymhellion a Threndiau
trending: Trendio
warning_presets:
add_new: Ychwanegu newydd
@ -1092,7 +1133,9 @@ cy:
guide_link_text: Gall pawb gyfrannu.
sensitive_content: Cynnwys sensitif
application_mailer:
notification_preferences: Newid dewisiadau e-bost
salutation: "%{name},"
settings: 'Newid dewisiadau e-bost: %{link}'
unsubscribe: Dad-danysgrifio
view: 'Gweld:'
view_profile: Gweld proffil
@ -1112,6 +1155,7 @@ cy:
hint_html: Un peth arall! Mae angen i ni gadarnhau eich bod yn ddynol (mae hyn er mwyn i ni allu cadw'r sbam allan!). Datryswch y CAPTCHA isod a chliciwch "Parhau".
title: Gwiriad diogelwch
confirmations:
awaiting_review: Mae eich cyfeiriad e-bost wedi'i gadarnhau! Mae aelod o staff %{domain} bellach yn adolygu'ch cofrestriad. Byddwch yn derbyn e-bost os ydyn nhw'n cymeradwyo eich cyfrif!
awaiting_review_title: Mae eich cofrestriad yn cael ei adolygu
clicking_this_link: clicio ar y ddolen hon
login_link: mewngofnodi
@ -1119,6 +1163,7 @@ cy:
redirect_to_app_html: Dylech fod wedi cael eich ailgyfeirio i ap <strong>%{app_name}</strong>. Os na ddigwyddodd hynny, rhowch gynnig ar %{clicking_this_link} neu ewch eich hun i'r ap.
registration_complete: Mae eich cofrestriad ar %{domain} bellach wedi'i gwblhau!
welcome_title: Croeso, %{name}!
wrong_email_hint: Os nad yw'r cyfeiriad e-bost hwnnw'n gywir, gallwch ei newid yng ngosodiadau'r cyfrif.
delete_account: Dileu cyfrif
delete_account_html: Os hoffech chi ddileu eich cyfrif, mae modd <a href="%{path}">parhau yma</a>. Bydd gofyn i chi gadarnhau.
description:
@ -1139,6 +1184,7 @@ cy:
or_log_in_with: Neu mewngofnodwch gyda
privacy_policy_agreement_html: Rwyf wedi darllen ac yn cytuno i'r <a href="%{privacy_policy_path}" target="_blank">polisi preifatrwydd</a>
progress:
confirm: Cadarnhau'r e-bost
details: Eich manylion
review: Ein hadolygiad
rules: Derbyn rheolau
@ -1160,8 +1206,10 @@ cy:
security: Diogelwch
set_new_password: Gosod cyfrinair newydd
setup:
email_below_hint_html: Gwiriwch eich ffolder sbam, neu gofynnwch am un arall. Gallwch gywiro eich cyfeiriad e-bost os yw'n anghywir.
email_settings_hint_html: Cliciwch ar y ddolen a anfonwyd atoch i wirio %{email}. Byddwn yn aros yma amdanoch.
link_not_received: Heb gael dolen?
new_confirmation_instructions_sent: Byddwch yn derbyn e-bost newydd gyda'r ddolen gadarnhau ymhen ychydig funudau!
title: Gwiriwch eich blwch derbyn
sign_in:
preamble_html: Mewngofnodwch gyda'ch manylion <strong>%{domain}</strong>. Os yw eich cyfrif yn cael ei gynnal ar weinydd gwahanol, ni fydd modd i chi fewngofnodi yma.
@ -1172,7 +1220,9 @@ cy:
title: Gadewch i ni eich gosod ar %{domain}.
status:
account_status: Statws cyfrif
confirming: Wrthi'n aros i gadarnhad e-bost gael ei gwblhau.
functional: Mae eich cyfrif nawr yn weithredol.
pending: Mae eich cais yn aros i gael ei adolygu gan ein staff. Gall hyn gymryd peth amser. Byddwch yn derbyn e-bost os caiff eich cais ei gymeradwyo.
redirecting_to: Mae eich cyfrif yn anweithredol oherwydd ei fod ar hyn o bryd yn ailgyfeirio i %{acct}.
self_destruct: Gab fod parth %{domain} yn cau, dim ond mynediad cyfyngedig fyddwch yn ei gael i'ch cyfrif.
view_strikes: Gweld rybuddion y gorffennol yn erbyn eich cyfrif
@ -1215,6 +1265,9 @@ cy:
before: 'Cyn bwrw ymlaen, darllenwch y nodiadau hyn yn ofalus:'
caches: Efallai bydd cynnwys sydd wedi'i storio dros dro gan weinyddion eraill yn parhau
data_removal: Bydd eich postiadau a data arall yn cael eu dileu'n barhaol
email_change_html: Gallwch <a href="%{path}">newid eich cyfeiriad e-bost</a> heb ddileu eich cyfrif
email_contact_html: Os nad yw byth wedi cyrraedd, gallwch anfon e-bost at <a href="mailto:%{email}">%{email}</a> am help
email_reconfirmation_html: Os nad ydych yn derbyn yr e-bost cadarnhau, gallwch <a href="%{path}">ofyn amdano eto</a>
irreversible: Fyddwch chi ddim yn gallu adfer nac ail-greu eich cyfrif
more_details_html: Am fwy o fanylion, darllenwch y <a href="%{terms_path}">polisi preifatrwydd</a>.
username_available: Bydd eich enw defnyddiwr ar gael eto
@ -1479,6 +1532,7 @@ cy:
authentication_methods:
otp: ap dilysu dau ffactor
password: cyfrinair
sign_in_token: cod diogelwch e-bost
webauthn: allweddi diogelwch
description_html: Os ydych yn gweld gweithgaredd nad ydych yn ei adnabod, ystyriwch newid eich cyfrinair a galluogi dilysu dau ffactor.
empty: Dim hanes dilysu ar gael
@ -1489,6 +1543,16 @@ cy:
unsubscribe:
action: Iawn, dad-danysgrifio
complete: Dad-danysgrifiwyd
confirmation_html: Ydych chi'n siŵr eich bod am ddad-danysgrifio rhag derbyn %{type} Mastodon ar %{domain} i'ch e-bost yn %{email}? Gallwch ail-danysgrifio o'ch <a href="%{settings_path}">gosodiadau hysbysu e-bost</a> rhywbryd eto .
emails:
notification_emails:
favourite: e-bost hysbysu hoffi
follow: e-byst hysbysu dilyn
follow_request: e-byst ceisiadau dilyn
mention: e-byst hysbysu crybwylliadau
reblog: e-byst hysbysiadau hybu
resubscribe_html: Os ydych wedi dad-danysgrifio trwy gamgymeriad, gallwch ail-danysgrifio drwy'ch <a href="%{settings_path}">gosodiadau hysbysu e-bost</a> .
success_html: Ni fyddwch bellach yn derbyn %{type} ar gyfer Mastodon ar %{domain} i'ch e-bost am %{email}.
title: Dad-danysgrifio
media_attachments:
validations:
@ -1569,6 +1633,8 @@ cy:
update:
subject: Golygodd %{name} bostiad
notifications:
administration_emails: E-byst hysbysiadau gweinyddol
email_events: Digwyddiadau ar gyfer hysbysiadau e-bost
email_events_hint: 'Dewiswch ddigwyddiadau yr ydych am dderbyn hysbysiadau ar eu cyfer:'
number:
human:
@ -1727,6 +1793,7 @@ cy:
import: Mewnforio
import_and_export: Mewnforio ac allforio
migrate: Mudo cyfrif
notifications: Hysbysiadau e-bost
preferences: Dewisiadau
profile: Proffil cyhoeddus
relationships: Yn dilyn a dilynwyr
@ -1983,9 +2050,9 @@ cy:
other: "%{people} o bobl yn y 2 ddiwrnod diwethaf"
two: "%{people} o bobl yn y 2 ddiwrnod diwethaf"
zero: "%{people} o bobl yn y 2 ddiwrnod diwethaf"
hashtags_subtitle: Gweld beth sy'n tueddu dros y 2 ddiwrnod diwethaf
hashtags_title: Hashnodau tuedd
hashtags_view_more: Gweld mwy o hashnodau tuedd
hashtags_subtitle: Gweld beth sy'n trendio dros y 2 ddiwrnod diwethaf
hashtags_title: Hashnodau trendio
hashtags_view_more: Gweld mwy o hashnodau trendio
post_action: Creu
post_step: Dywedwch helo wrth y byd gyda thestun, lluniau, fideos neu arolygon barn.
post_title: Creu'ch postiad cyntaf
@ -2001,6 +2068,7 @@ cy:
invalid_otp_token: Côd dau-ffactor annilys
otp_lost_help_html: Os colloch chi fynediad i'r ddau, mae modd i chi gysylltu a %{email}
rate_limited: Gormod o geisiadau dilysu, ceisiwch eto yn nes ymlaen.
seamless_external_login: Rydych chi wedi mewngofnodi trwy wasanaeth allanol, felly nid yw gosodiadau cyfrinair ac e-bost ar gael.
signed_in_as: 'Wedi mewngofnodi fel:'
verification:
extra_instructions_html: <strong>Awgrym:</strong> Gall y ddolen ar eich gwefan fod yn anweledig. Y rhan bwysig yw <code>rel="me"</code> sy'n atal dynwarediad ar wefannau gyda chynnwys sy'n cael ei gynyrchu gan ddefnyddwyr. Gallwch hyd yn oed ddefnyddio tag <code>link</code> ym mhennyn y dudalen yn lle <code>a</code>, ond rhaid i'r HTML fod yn hygyrch heb weithredu JavaScript.

View file

@ -686,7 +686,7 @@ da:
moderation: Moderering
special: Speciel
delete: Slet
description_html: Med <strong>brugerroller</strong>kan man tilpasse sine brugeres adgang til Mastodon-funktioner og -områder.
description_html: Med <strong>brugerroller</strong> kan man tilpasse sine brugeres adgang til Mastodon-funktioner og -områder.
edit: Redigér rolle for '%{name}
everyone: Standardtilladelser
everyone_full_description_html: Dette er <strong>basisrollen</strong> med indvirkning på <strong>alle brugere</strong>, selv dem uden rolletildeling. Alle øvrige rolletilladelser nedarves herfra.

View file

@ -31,6 +31,7 @@ fo:
created_msg: Umsjónarviðmerking stovnað!
destroyed_msg: Umsjónarviðmerking strikað!
accounts:
add_email_domain_block: Forða t-post økisnavni
approve: Vátta
approved_msg: Góðkent tilmeldingarumbøn hjá %{username}
are_you_sure: Ert tú vís/ur?
@ -129,6 +130,7 @@ fo:
resubscribe: Tegna teg umaftur
role: Leiklutur
search: Leita
search_same_email_domain: Aðrir brúkarar við sama t-post-økisnavni
search_same_ip: Aðrir brúkarar við somu IP
security: Trygd
security_measures:
@ -169,21 +171,26 @@ fo:
approve_appeal: Góðkenn kæru
approve_user: Góðkenn brúkara
assigned_to_self_report: Tilluta melding
change_email_user: Broyt t-post hjá brúkara
change_role_user: Broyt leiklut hjá brúkara
confirm_user: Vátta brúkara
create_account_warning: Stovna ávaring
create_announcement: Stovna kunngerð
create_canonical_email_block: Stovna t-post-blokk
create_custom_emoji: Stovna serligt kenslutekn
create_domain_allow: Stovna navnaøkjaloyvi
create_domain_block: Stovna navnaøkjablokering
create_email_domain_block: Stovna t-post-økisnavnablokk
create_ip_block: Stovna IP reglu
create_unavailable_domain: Stovna navnaøki, sum ikki er tøkt
create_user_role: Stovna leiklut
demote_user: Lækka brúkara í tign
destroy_announcement: Strika kunngerð
destroy_canonical_email_block: Strika t-postablokk
destroy_custom_emoji: Strika serligt kenslutekn
destroy_domain_allow: Strika navnaøkjaloyvi
destroy_domain_block: Strika navnaøkjablokering
destroy_email_domain_block: Strika t-posta-økisnavnablokk
destroy_instance: Reinsa navnaøki
destroy_ip_block: Strika IP reglu
destroy_status: Strika post
@ -222,7 +229,9 @@ fo:
approve_appeal_html: "%{name} góðkendi umsjónaráheitan frá %{target}"
approve_user_html: "%{name} góðtók umsókn frá %{target}"
assigned_to_self_report_html: "%{name} tillutaði frágreiðing %{target} til sín sjálvs"
change_email_user_html: "%{name} broytti t-postin hjá brúkara %{target}"
change_role_user_html: "%{name} broytti leiklutin hjá %{target}"
confirm_user_html: "%{name} váttaði t-post hjá brúkara %{target}"
create_account_warning_html: "%{name} sendi eina ávaring til %{target}"
create_announcement_html: "%{name} stovnaði eina fráboðan %{target}"
create_custom_emoji_html: "%{name} legði upp nýtt kenslutekn %{target}"

View file

@ -35,6 +35,7 @@ he:
created_msg: הודעת מנחה נוצרה בהצלחה!
destroyed_msg: הודעת מנחה נמחקה בהצלחה!
accounts:
add_email_domain_block: חסימת מתחם דוא"ל
approve: אשר
approved_msg: בקשת %{username} להירשם אושרה בהצלחה
are_you_sure: בטוח?
@ -905,10 +906,16 @@ he:
trends:
allow: לאפשר
approved: אישור
confirm_allow: 'וידוא: האם לאשר את התגיות שנבחרו?'
confirm_disallow: 'וידוא: האם לאסור את התגיות שנבחרו?'
disallow: לא לאשר
links:
allow: אישור קישורית
allow_provider: אישור מפרסם
confirm_allow: 'וידוא: האם לאשר את הקישורים שנבחרו?'
confirm_allow_provider: 'וידוא: האם לאשר את הספקים שנבחרו?'
confirm_disallow: 'וידוא: האם לאסור את הקישורים שנבחרו?'
confirm_disallow_provider: 'וידוא: האם לאסור את הספקים שנבחרו?'
description_html: בקישוריות אלה נעשה כרגע שימוש על ידי חשבונות רבים שהשרת שלך רואה הודעות מהם. זה עשוי לסייע למשתמשיך לברר מה קורה בעולם. שום קישוריות לא יוצגו עד שתאשרו את המפרסם. ניתן גם לאפשר או לדחות קישוריות ספציפיות.
disallow: לא לאשר קישורית
disallow_provider: לא לאשר מפרסם
@ -934,6 +941,10 @@ he:
statuses:
allow: הרשאת הודעה
allow_account: הרשאת מחבר/ת
confirm_allow: 'וידוא: האם לאשר את הסטטוסים שנבחרו?'
confirm_allow_account: 'וידוא: האם לאשר את החשבונות שנבחרו?'
confirm_disallow: 'וידוא: האם לאסור את הסטטוסים שנבחרו?'
confirm_disallow_account: 'וידוא: האם לאסור את החשבונות שנבחרו?'
description_html: אלו הן הודעות שהשרת שלך מכיר וזוכות להדהודים וחיבובים רבים כרגע. זה עשוי למשתמשיך החדשים והחוזרים למצוא עוד נעקבים. ההודעות לא מוצגות עד שיאושר המחבר/ת, והמחבר/ת יאשרו שחשבונים יומלץ לאחרים. ניתן לאשר או לדחות הודעות ספציפיות.
disallow: לדחות הודעה
disallow_account: לא לאשר מחבר/ת
@ -1301,7 +1312,7 @@ he:
statuses:
back_to_filter: חזרה לפילטר
batch:
remove: הסרה מפילטר
remove: הסרה ממסנן
index:
hint: סנן זה חל באופן של בחירת הודעות בודדות ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד הודעות לסנן זה ממנשק הווב.
title: הודעות שסוננו

View file

@ -907,16 +907,16 @@ it:
trends:
allow: Consenti
approved: Approvato
confirm_allow: Si è sicuri di voler consentire i tag selezionati?
confirm_disallow: Si è sicuri di non voler consentire i tag selezionati?
confirm_allow: Sei sicuro di voler consentire i tag selezionati?
confirm_disallow: Sei sicuro di non voler consentire i tag selezionati?
disallow: Non consentire
links:
allow: Consenti link
allow_provider: Consenti editore
confirm_allow: Si è sicuri di voler consentire i link selezionati?
confirm_allow_provider: Si è sicuri di voler consentire i provider selezionati?
confirm_disallow: Si è sicuri di non voler consentire i link selezionati?
confirm_disallow_provider: Si è sicuri di non voler consentire i provider selezionati?
confirm_allow: Sei sicuro di voler consentire i link selezionati?
confirm_allow_provider: Sei sicuro di voler consentire i provider selezionati?
confirm_disallow: Sei sicuro di non voler consentire i link selezionati?
confirm_disallow_provider: Sei sicuro di non voler consentire i provider selezionati?
description_html: Questi sono collegamenti che attualmente vengono molto condivisi dagli account di cui il server vede i post. Può aiutare i tuoi utenti a scoprire cosa sta succedendo nel mondo. Nessun link viene visualizzato pubblicamente finché non si approva chi lo pubblica. È anche possibile permettere o rifiutare i singoli collegamenti.
disallow: Non consentire link
disallow_provider: Non consentire editore
@ -940,10 +940,10 @@ it:
statuses:
allow: Consenti post
allow_account: Consenti autore
confirm_allow: Si è sicuri di voler consentire gli stati selezionati?
confirm_allow_account: Si è sicuri di voler consentire gli account selezionati?
confirm_disallow: Si è sicuri di non voler consentire gli stati selezionati?
confirm_disallow_account: Si è sicuri di non voler consentire gli account selezionati?
confirm_allow: Sei sicuro di voler consentire gli stati selezionati?
confirm_allow_account: Sei sicuro di voler consentire gli account selezionati?
confirm_disallow: Sei sicuro di non voler consentire gli stati selezionati?
confirm_disallow_account: Sei sicuro di non voler consentire gli account selezionati?
description_html: Questi sono post noti al tuo server che sono attualmente molto condivisi e preferiti. Può aiutare i tuoi utenti (nuovi e non) a trovare più persone da seguire. Nessun post viene visualizzato pubblicamente fino a quando si approva l'autore, e l'autore permette che il suo account sia suggerito ad altri. È anche possibile permettere o rifiutare singoli post.
disallow: Non consentire post
disallow_account: Non consentire autore
@ -976,7 +976,7 @@ it:
used_by_over_week:
one: Usato da una persona nell'ultima settimana
other: Usato da %{count} persone nell'ultima settimana
title: Raccomandazioni e Tendenze
title: Raccomandazioni & Tendenze
trending: Di tendenza
warning_presets:
add_new: Aggiungi nuovo

View file

@ -414,8 +414,10 @@ ko:
new:
create: 도메인 추가하기
resolve: 도메인 검사
title: 새 이메일 도메인 차단
not_permitted: 허용하지 않음
resolved_through_html: "%{domain}을 통해 리졸빙됨"
title: 차단된 이메일 도메인
export_domain_allows:
new:
title: 도메인 허용 목록 불러오기
@ -1004,7 +1006,9 @@ ko:
guide_link_text: 누구나 기여할 수 있습니다.
sensitive_content: 민감한 내용
application_mailer:
notification_preferences: 이메일 설정 변경
salutation: "%{name} 님,"
settings: '이메일 설정 변경: %{link}'
unsubscribe: 구독 해제
view: '보기:'
view_profile: 프로필 보기
@ -1024,6 +1028,7 @@ ko:
hint_html: 하나만 더! 당신이 사람인지 확인이 필요합니다 (스팸 계정을 거르기 위해서 필요한 과정입니다). 아래에 있는 CAPTCHA를 풀고 "계속"을 누르세요
title: 보안 체크
confirmations:
awaiting_review: 이메일 주소가 확인되었습니다! 이제 %{domain} 스태프가 가입을 검토할 것입니다. 계정이 승인되면 이메일을 받게 됩니다!
awaiting_review_title: 가입 신청을 검토 중입니다
clicking_this_link: 이 링크를 클릭
login_link: 로그인
@ -1051,6 +1056,7 @@ ko:
or_log_in_with: 다른 방법으로 로그인 하려면
privacy_policy_agreement_html: <a href="%{privacy_policy_path}" target="_blank">개인정보처리방침</a>을 읽고 동의합니다
progress:
confirm: 이메일 확인
details: 세부사항
review: 심사 결과
rules: 규정을 수락합니다.
@ -1072,6 +1078,7 @@ ko:
security: 보안
set_new_password: 새 암호 설정
setup:
email_below_hint_html: 스팸 폴더를 체크해보거나, 새로 요청할 수 있습니다. 이메일을 잘못 입력한 경우 수정할 수 있습니다.
email_settings_hint_html: "%{email}을 인증하기 위해 우리가 보낸 링크를 누르세요. 여기서 기다리겠습니다."
link_not_received: 링크를 못 받으셨나요?
title: 수신함 확인하기
@ -1351,6 +1358,7 @@ ko:
authentication_methods:
otp: 2단계 인증 앱
password: 암호
sign_in_token: 이메일 보안 코드
webauthn: 보안 키
description_html: 확인되지 않은 활동이 보인다면, 암호를 바꾸거나 2단계 인증을 활성화 하는 것을 고려해 보세요.
empty: 인증 이력이 존재하지 않습니다

View file

@ -669,6 +669,7 @@ lt:
title: Tendencingos saitažodžiai
trendable: Gali pasirodyti tendencijose
trending_rank: 'Tendencinga #%{rank}'
title: Rekomendacijos ir tendencijos
trending: Tendencinga
warning_presets:
add_new: Pridėti naują
@ -887,7 +888,7 @@ lt:
errors:
too_large: Failas per didelis.
modes:
merge: Sulieti
merge: Sujungti
merge_long: Išsaugoti esančius įrašus ir pridėti naujus
overwrite: Perrašyti
overwrite_long: Pakeisti senus įrašus naujais
@ -931,6 +932,9 @@ lt:
description_html: Jei pastebėjei neatpažįstamą veiklą, apsvarstyk galimybę pakeisti slaptažodį ir įjungti dvigubą tapatybės nustatymą.
empty: Tapatybės nustatymas istorijos nėra
title: Tapatybės nustatymo istorija
mail_subscriptions:
unsubscribe:
success_html: Daugiau negausi %{type} „Mastodon“ domene %{domain} į savo el. paštą %{email}.
media_attachments:
validations:
images_and_video: Negalima pridėti video prie statuso, kuris jau turi nuotrauką
@ -964,6 +968,8 @@ lt:
subject: "%{name} pakėlė tavo įrašą"
title: Naujas pakėlimas
notifications:
administration_emails: Administratoriaus el. laiško pranešimai
email_events: Įvykiai, skirti el. laiško pranešimams
email_events_hint: 'Pasirink įvykius, apie kuriuos nori gauti pranešimus:'
number:
human:
@ -1061,6 +1067,7 @@ lt:
featured_tags: Rodomi saitažodžiai
import: Importuoti
migrate: Paskyros migracija
notifications: El. laiško pranešimai
preferences: Nuostatos
profile: Viešas profilis
relationships: Sekimai ir sekėjai
@ -1205,6 +1212,7 @@ lt:
invalid_otp_token: Netinkamas dviejų veiksnių kodas
otp_lost_help_html: Jei praradai prieigą prie abiejų, gali susisiek su %{email}
rate_limited: Per daug tapatybės nustatymo bandymų. Bandyk dar kartą vėliau.
seamless_external_login: Esi prisijungęs (-usi) per išorinę paslaugą, todėl slaptažodžio ir el. pašto nustatymai nepasiekiami.
signed_in_as: 'Prisijungta kaip:'
verification:
extra_instructions_html: <strong>Patarimas:</strong> nuoroda tavo svetainėje gali būti nematoma. Svarbi dalis tai, kad <code>rel="me"</code> neleidžia apsimesti interneto svetainėse, kuriose yra naudotojų sukurto turinio. Vietoj to gali naudoti net <code>nuorodą</code> puslapio antraštėje esančią žymę <code>a</code>, tačiau HTML turi būti pasiekiamas nevykdant JavaScript.

View file

@ -1448,6 +1448,7 @@ nn:
mention: e-postar om omtaler
reblog: e-postar om framhevingar
resubscribe_html: Om du har avslutta abonnementet ved ein feil, kan du abonnera på nytt i <a href="%{settings_path}">innstillingar for e-postvarsling</a>.
success_html: Du vil ikkje lenger få %{type} frå Mastodon på %{domain} til e-posten på %{email}.
title: Meld av
media_attachments:
validations:
@ -1528,6 +1529,8 @@ nn:
update:
subject: "%{name} redigerte et innlegg"
notifications:
administration_emails: Epostvarsel for administrator
email_events: Hendingar for epostvarsel
email_events_hint: 'Velg hendelser som du vil motta varslinger for:'
number:
human:
@ -1686,6 +1689,7 @@ nn:
import: Hent inn
import_and_export: Importer og eksporter
migrate: Kontoflytting
notifications: Epostvarsel
preferences: Innstillingar
profile: Profil
relationships: Fylgjar og fylgjarar
@ -1932,6 +1936,7 @@ nn:
invalid_otp_token: Ugyldig tostegskode
otp_lost_help_html: Hvis du mistet tilgangen til begge deler, kan du komme i kontakt med %{email}
rate_limited: For mange autentiseringsforsøk, prøv igjen seinare.
seamless_external_login: Du er logga inn gjennom ei ekstern tenest, så passord- og epostinnstillingar er ikkje tilgjengelege.
signed_in_as: 'Logga inn som:'
verification:
extra_instructions_html: <strong>Tips:</strong> Linken på nettsida di kan vera usynleg. Den viktige delen er <code>rel="me"</code>, som på nettstader med brukargenerert innhald vil hindra at andre kan låst som dei er deg. Du kan til og med bruka <code>link</code> i staden for <code>a</code> i toppteksten til sida, men HTML-koden må vera tilgjengeleg utan å måtte køyra JavaScript.

View file

@ -73,8 +73,8 @@ he:
filters:
action: בחרו איזו פעולה לבצע כאשר הודעה מתאימה למסנן
actions:
hide: הסתר את התוכן המסונן, כאילו לא היה קיים
warn: הסתר את התוכן המסונן מאחורי אזהרה עם כותרת המסנן
hide: הסתרת התוכן המסונן, כאילו לא היה קיים
warn: הסתרת התוכן המסונן מאחורי אזהרה עם כותרת המסנן
form_admin_settings:
activity_api_enabled: מספר ההודעות שפורסמו מקומית, משתמשים פעילים, והרשמות חדשות בדליים שבועיים
app_icon: WEBP, PNG, GIF או JPG. גובר על אייקון ברירת המחדל ביישומון על מכשירים ניידים ומחליף אותו באייקון נבחר.

View file

@ -31,6 +31,7 @@ tr:
created_msg: Denetim notu başarıyla oluşturuldu!
destroyed_msg: Denetim notu başarıyla yok edildi!
accounts:
add_email_domain_block: E-posta alan adını engelle
approve: Onayla
approved_msg: "%{username} adlı kullanıcının kayıt başvurusu başarıyla onaylandı"
are_you_sure: Emin misin?
@ -57,6 +58,7 @@ tr:
demote: Düşür
destroyed_msg: "%{username} adlı kullanıcının verilerinin silinmesi sıraya alındı"
disable: Dondur
disable_sign_in_token_auth: E-posta token doğrulamayı devre dışı bırak
disable_two_factor_authentication: 2 aşamalı doğrulamayı kapat
disabled: Kapalı
display_name: Görünen isim
@ -65,6 +67,7 @@ tr:
email: E-posta
email_status: E-posta durumu
enable: Etkinleştir
enable_sign_in_token_auth: E-posta token doğrulamayı etkinleştir
enabled: Etkin
enabled_msg: "%{username} hesabı başarıyla çözüldü"
followers: Takipçi
@ -129,6 +132,7 @@ tr:
resubscribe: Yeniden abone ol
role: Rol
search: Ara
search_same_email_domain: Aynı e-posta alan adına sahip diğer kullanıcılar
search_same_ip: Aynı IP adresine sahip diğer kullanıcılar
security: Güvenlik
security_measures:
@ -169,21 +173,26 @@ tr:
approve_appeal: İtirazı Onayla
approve_user: Kullanıcıyı Onayla
assigned_to_self_report: Raporu Ata
change_email_user: Kullanıcı E-postasını Değiştir
change_role_user: Kullanıcının Rolünü Değiştir
confirm_user: Kullanıcıyı Onayla
create_account_warning: Uyarı Oluştur
create_announcement: Duyuru Oluştur
create_canonical_email_block: E-posta Engeli Oluştur
create_custom_emoji: Özel İfade Oluştur
create_domain_allow: İzin Verilen Alan Adı Oluştur
create_domain_block: Engellenen Alan Adı Oluştur
create_email_domain_block: E-Posta Alan Adı Engeli Oluştur
create_ip_block: IP kuralı oluştur
create_unavailable_domain: Mevcut Olmayan Alan Adı Oluştur
create_user_role: Rol Oluştur
demote_user: Kullanıcıyı Düşür
destroy_announcement: Duyuru Sil
destroy_canonical_email_block: E-Posta Engelini Sil
destroy_custom_emoji: Özel İfadeyi Sil
destroy_domain_allow: İzin Verilen Alan Adını Sil
destroy_domain_block: Engellenen Alan Adını Sil
destroy_email_domain_block: E-posta Alan Adı Engelini Sil
destroy_instance: Alan adını temizle
destroy_ip_block: IP kuralını sil
destroy_status: Durumu Sil
@ -191,8 +200,10 @@ tr:
destroy_user_role: Rolü Kaldır
disable_2fa_user: 2AD Kapat
disable_custom_emoji: Özel İfadeyi Devre Dışı Bırak
disable_sign_in_token_auth_user: Kullanıcı için E-posta Token Doğrulamayı Devre Dışı Bırak
disable_user: Kullanıcıyı Devre Dışı Bırak
enable_custom_emoji: Özel İfadeyi Etkinleştir
enable_sign_in_token_auth_user: Kullanıcı için E-posta Token Doğrulamayı Etkinleştir
enable_user: Kullanıcıyı Etkinleştir
memorialize_account: Hesabı Anıtlaştır
promote_user: Kullanıcıyı Yükselt
@ -222,20 +233,26 @@ tr:
approve_appeal_html: "%{name}, %{target} kullanıcısının yönetim kararına itirazını kabul etti"
approve_user_html: "%{name}, %{target} konumundan kaydı onayladı"
assigned_to_self_report_html: "%{name} kendilerine %{target} adlı raporu verdi"
change_email_user_html: "%{name}, %{target} kullanıcısının e-posta adresini değiştirdi"
change_role_user_html: "%{name}, %{target} kişisinin rolünü değiştirdi"
confirm_user_html: "%{name} %{target} kullanıcısının e-posta adresini onayladı"
create_account_warning_html: "%{name} %{target} 'a bir uyarı gönderdi"
create_announcement_html: "%{name}, yeni %{target} duyurusunu oluşturdu"
create_canonical_email_block_html: "%{name}, %{target} karmasıyla e-posta engelledi"
create_custom_emoji_html: "%{name} yeni %{target} ifadesini yükledi"
create_domain_allow_html: "%{name}, %{target} alan adıyla birliğe izin verdi"
create_domain_block_html: "%{name}, %{target} alan adını engelledi"
create_email_domain_block_html: "%{name}, %{target} e-posta alan adını engelledi"
create_ip_block_html: "%{name}, %{target} IP adresi için kural oluşturdu"
create_unavailable_domain_html: "%{name}, %{target} alan adına teslimatı durdurdu"
create_user_role_html: "%{name}, %{target} rolünü oluşturdu"
demote_user_html: "%{name}, %{target} kullanıcısını düşürdü"
destroy_announcement_html: "%{name}, %{target} duyurusunu sildi"
destroy_canonical_email_block_html: "%{name}, %{target} karmasıyla e-posta engelini kaldırdı"
destroy_custom_emoji_html: "%{name}, %{target} ifadesini sildi"
destroy_domain_allow_html: "%{name}, %{target} alan adıyla birlik iznini kaldırdı"
destroy_domain_block_html: "%{name}, %{target} alan adı engelini kaldırdı"
destroy_email_domain_block_html: "%{name}, %{target} e-posta alan adı engelini kaldırdı"
destroy_instance_html: "%{name}, %{target} alan adını temizledi"
destroy_ip_block_html: "%{name}, %{target} IP adresi kuralını sildi"
destroy_status_html: "%{name}, %{target} kullanıcısının gönderisini kaldırdı"
@ -243,8 +260,10 @@ tr:
destroy_user_role_html: "%{name}, %{target} rolünü sildi"
disable_2fa_user_html: "%{name}, %{target} kullanıcısının iki aşamalı doğrulama gereksinimini kapattı"
disable_custom_emoji_html: "%{name}, %{target} emojisini devre dışı bıraktı"
disable_sign_in_token_auth_user_html: "%{name}, %{target} için e-posta token doğrulamayı devre dışı bıraktı"
disable_user_html: "%{name}, %{target} kullanıcısı için oturum açmayı devre dışı bıraktı"
enable_custom_emoji_html: "%{name}, %{target} emojisini etkinleştirdi"
enable_sign_in_token_auth_user_html: "%{name}, %{target} için e-posta token doğrulamayı etkinleştirdi"
enable_user_html: "%{name}, %{target} kullanıcısı için oturum açmayı etkinleştirdi"
memorialize_account_html: "%{name}, %{target} kullanıcısının hesabını bir anıt sayfaya dönüştürdü"
promote_user_html: "%{name}, %{target} kullanıcısını yükseltti"
@ -252,6 +271,7 @@ tr:
reject_user_html: "%{name}, %{target} konumundan kaydı reddetti"
remove_avatar_user_html: "%{name}, %{target} kullanıcısının avatarını kaldırdı"
reopen_report_html: "%{name}, %{target} şikayetini yeniden açtı"
resend_user_html: "%{name}, %{target} için doğrulama e-postasını tekrar gönderdi"
reset_password_user_html: "%{name}, %{target} kullanıcısının parolasını sıfırladı"
resolve_report_html: "%{name}, %{target} şikayetini çözdü"
sensitive_account_html: "%{name}, %{target} kullanıcısının medyasını hassas olarak işaretledi"
@ -412,6 +432,7 @@ tr:
attempts_over_week:
one: Son haftada %{count} deneme
other: Son haftada %{count} kayıt denemesi
created_msg: E-posta alan adı kara listeye başarıyla eklendi
delete: Sil
dns:
types:
@ -420,8 +441,12 @@ tr:
new:
create: Alan adı ekle
resolve: Alan adı çözümleme
title: Yeni e-posta kara liste girişi
no_email_domain_block_selected: Seçim yapılmadığından hiç bir e-posta alan adı engeli değiştirilmedi
not_permitted: İzin verilmedi
resolved_dns_records_hint_html: Alan adı aşağıdaki MX alan adlarına çözümleniyor, ancak hiç biri nihayetinde e-posta kabulünden sorum değil. Bir MX alan adını engellemek, görünen alan adı farklı osa bile aynı MX alan adını kullanan e-posta adreslerinden gelen kayıtları engelleyecektir. <strong>Başlıca e-posta sağlayıcıları engellememek için dikkatli olun.</strong>
resolved_through_html: "%{domain} aracılığıyla çözümlendi"
title: Engelli e-posta alan adları
export_domain_allows:
new:
title: Alan adı engellerini içe aktar
@ -575,6 +600,7 @@ tr:
resolve_description_html: Bildirilen hesap için bir şey yapılmayacak, eylem kaydedilmeyecek ve bildirim kapatılacak.
silence_description_html: Bu hesap sadece halihazırda takip edenler ve elle bakanlarca görünecek, böylece erişimi ciddi bir şekilde kısıtlanacak. Her zaman geri alınabilir. Bu hesaba yönelik tüm bildirimleri kapatır.
suspend_description_html: Bu hesap ve tüm içeriği erişilmez olacak ve nihayetinde silinecek ve bu hesapla etkileşim mümkün olmayacaktır. 30 gün içinde geri alınabilir. Bu hesaba yönelik tüm bildiriimleri kapatır.
actions_description_html: Bu bildirimi çözmek için ne yapılması gerektiğine karar verin. Bildirilen hesap için ceza işlemi yaparsanız, <strong>İstenmeyen</strong> kategorisi seçilmemişse, onlara bir e-posta duyurusu gönderilecektir.
actions_description_remote_html: Bu bildirimi çözmek için hangi eylemi yapmak istediğinize karar verin. Bu yalnızca <strong>sizin</strong> sunucunuzun bu uzak hesapla nasıl etkileşeğini ve içeriğiyle ne yapacağını etkiler.
add_to_report: Bildirime daha fazlasını ekle
already_suspended_badges:
@ -639,6 +665,7 @@ tr:
delete_data_html: İlgili sürede askıdan alınması kaldırılmazsa <strong>@%{acct}</strong> hesabının profilini ve içeriğini şu andan itibaren 30 gün içinde sil
preview_preamble_html: "<strong>@%{acct}</strong> aşağıdaki içerikle bir uyarı alacaktır:"
record_strike_html: "<strong>@%{acct}</strong> hesabına karşı bir eylem kaydet, böylece bu hesabın gelecekteki ihlallerini üst makama taşımanıza yardımcı olacaktır"
send_email_html: "<strong>@%{acct}</strong> adlı kullanıcıya uyarı e-maili gönder"
warning_placeholder: İsteğe bağlı ek nedenden denetim eylemi.
target_origin: Şikayet edilen hesabın kökeni
title: Şikayetler
@ -678,6 +705,7 @@ tr:
manage_appeals: İtirazları Yönetme
manage_appeals_description: Kullanıcıların denetleme eylemlerine itirazları gözden geçirmesine izin verir
manage_blocks: Engelleri Yönetme
manage_blocks_description: Kullanıcıların e-posta sağlayıcıları ve IP adreslerini engellemesine izin verir
manage_custom_emojis: Özel İfadeleri Yönetme
manage_custom_emojis_description: Kullanıcıların sunucudaki özel ifadeleri yönetmesine izin verir
manage_federation: Birleştirme Yönetme
@ -695,6 +723,7 @@ tr:
manage_taxonomies: Kategorileri Yönetme
manage_taxonomies_description: Kullanıcıların öne çıkan içeriği incelemesine ve etiket ayarlarını güncellemesine izin verir
manage_user_access: Kullanıcı Erişimini Yönetme
manage_user_access_description: Kullanıcıların, diğer kullanıcıların iki aşamalı yetkilendirme, e-posta adreslerini değiştirme ve parolalarını sıfırlama eylemlerini etkisizleştirmesine izin verir
manage_users: Kullanıcıları Yönetme
manage_users_description: Kullanıcıların, diğer kullanıcıların ayrıntılarını görüntülemesine ve onlara karşı denetim eylemleri gerçekleştirmesine izin verir
manage_webhooks: Webhookları Yönetme
@ -769,6 +798,7 @@ tr:
destroyed_msg: Site yüklemesi başarıyla silindi!
software_updates:
critical_update: Kritik — lütfen hemen güncelleyin
description: Son düzeltme ve özelliklerden yararlanmak için Mastodon kurulumunu güncel tutmanızı öneriyoruz. Üstelik güvenlik sorunlarından kaçınmak için Mastodon'u zamanında güncellemek kritiktir. Bu nedenlerle Mastodon her 30 dakikada bir güncellemeleri denetler ve e-posta bildirim seçeneğinize göre size haber verir.
documentation_link: Daha fazlası
release_notes: Sürüm notları
title: Mevcut güncellemeler
@ -1031,7 +1061,9 @@ tr:
guide_link_text: Herkes katkıda bulunabilir.
sensitive_content: Hassas içerik
application_mailer:
notification_preferences: E-posta tercihlerini değiştir
salutation: "%{name},"
settings: 'E-posta tercihlerini değiştir: %{link}'
unsubscribe: Abonelikten çık
view: 'Görüntüle:'
view_profile: Profili görüntüle
@ -1051,6 +1083,7 @@ tr:
hint_html: Sadece bir şey daha! Sizin bir insan olduğunuzu doğrulamamız gerekiyor (bu, spam'i dışarıda tutabilmemiz içindir!). Aşağıdaki CAPTCHA'yı çözün ve "Devam Et" düğmesini tıklayın.
title: Güvenlik denetimi
confirmations:
awaiting_review: E-posta adresiniz doğrulandı! %{domain} çalışanları şimdi kaydınızı inceliyorlar. Hesabınızı onayladıklarında bir e-posta alacaksınız!
awaiting_review_title: Kaydınız inceleniyor
clicking_this_link: bu bağlantıyı tıklamayı
login_link: oturum aç
@ -1058,6 +1091,7 @@ tr:
redirect_to_app_html: "<strong>%{app_name}</strong> uygulamasına yönlendirileceksiniz. Eğer yönlendirme olmazsa, %{clicking_this_link} veya uygulamaya geri dönmeyi deneyin."
registration_complete: "%{domain} sunucusunda kaydınız şimdi tamamlandı!"
welcome_title: Hoşgeldin %{name}!
wrong_email_hint: Eğer bu e-posta adresi doğru değilse, hesap ayarlarında değiştirebilirsiniz.
delete_account: Hesabı sil
delete_account_html: Hesabını silmek istersen, <a href="%{path}">buradan devam edebilirsin</a>. Onay istenir.
description:
@ -1078,6 +1112,7 @@ tr:
or_log_in_with: 'Veya şununla oturum açın:'
privacy_policy_agreement_html: <a href="%{privacy_policy_path}" target="_blank">Gizlilik politikasını</a> okudum ve kabul ettim
progress:
confirm: E-postanızı onaylayın
details: Ayrıntılarınız
review: İncelememiz
rules: Kabul kuralları
@ -1099,8 +1134,10 @@ tr:
security: Güvenlik
set_new_password: Yeni parola belirle
setup:
email_below_hint_html: İstenmeyenler dizininize bakın veya başka bir onay bağlantısı isteyin. Eğer yanlışsa e-posta adresinizi de düzeltebilirsiniz.
email_settings_hint_html: "%{email} adresinizi doğrulamak için size gönderdiğimiz bağlantıya tıklayın. Biz burada bekliyoruz."
link_not_received: Bağlantı gelmedi mi?
new_confirmation_instructions_sent: Birkaç dakika içerisinde onaylama bağlantısını içeren yeni bir e-posta alacaksınız!
title: Gelen kutunuzu kontrol edin
sign_in:
preamble_html: "<strong>%{domain}</strong> kimlik bilgilerinizi kullanarak giriş yapın. Eğer hesabınız başka bir sunucuda barındırılıyorsa, burada giriş yapamazsınız."
@ -1111,7 +1148,9 @@ tr:
title: "%{domain} için kurulumunuzu yapalım."
status:
account_status: Hesap durumu
confirming: E-posta onaylamanın tamamlanması bekleniyor.
functional: Hesabınız tamamen kullanıma hazır.
pending: Başvurunuz personelimiz tarafından gözden geçirilmeyi beklemektedir. Bu biraz zaman alabilir. Başvurunuz onaylanırsa bir e-posta alacaksınız.
redirecting_to: Hesabınız aktif değil çünkü şu anda %{acct} adresine yönlendirilmektedir.
self_destruct: "%{domain} kapandığı için, hesabınıza sadece kısıtlı erişiminiz olacak."
view_strikes: Hesabınıza yönelik eski eylemleri görüntüleyin
@ -1154,6 +1193,9 @@ tr:
before: 'Devam etmeden önce, lütfen bu notları dikkatlice okuyun:'
caches: Diğer sunucular tarafından ön belleğe alınan içerik kalabilir
data_removal: Gönderileriniz ve diğer verileriniz kalıcı olarak silinecektir
email_change_html: Hesabınızı silmeden <a href="%{path}">e-posta adresinizi değiştirebilirsiniz</a>
email_contact_html: Eğer hala ulaşmazsa, yardım almak için <a href="mailto:%{email}">%{email}</a> adresine e-posta gönderebilirsiniz
email_reconfirmation_html: Eğer onaylama e-postası ulaşmıyorsa, <a href="%{path}">tekrar talep edebilirsiniz</a>
irreversible: Hesabınızı geri yükleyemeyecek ya da yeniden etkinleştiremeyeceksiniz
more_details_html: Daha fazla ayrıntı için, <a href="%{terms_path}">gizlilik politikası</a>na göz atın.
username_available: Kullanıcı adınız tekrar kullanılabilir olacaktır
@ -1386,6 +1428,7 @@ tr:
authentication_methods:
otp: iki aşamalı kimlik doğrulama uygulaması
password: parola
sign_in_token: e-posta güvenlik kodu
webauthn: güvenlik anahtarları
description_html: Eğer tanımadığınız bir faaliyet görüyorsanız, parolanızı değiştirmeyi ve iki aşamalı kimlik doğrulamayı etkinleştirmeyi düşünün.
empty: Kimlik doğrulama geçmişi yok
@ -1396,6 +1439,16 @@ tr:
unsubscribe:
action: Evet, abonelikten çık
complete: Abonelikten çık
confirmation_html: '%{domain} üzerindeki Mastodon için %{type} almayı durdurarak %{email} adresinize aboneliğinizi iptal etmek istediğinizden emin misiniz? <a href="%{settings_path}">e-posta bildirim ayarlarınızdan</a> her zaman yeniden abone olabilirsiniz.'
emails:
notification_emails:
favourite: favori bildirim e-postaları
follow: takip bildirim e-postaları
follow_request: takip isteği bildirim e-postaları
mention: bahsetme bildirim e-postaları
reblog: öne çıkanlar bildirim e-postaları
resubscribe_html: Abonelikten yanlışlıkla çıktıysanız, <a href="%{settings_path}">e-posta bildirim ayarlarınızdan</a> yeniden abone olabilirsiniz.
success_html: Artık %{email} adresindeki e-postanıza %{domain} üzerindeki Mastodon için %{type} almayacaksınız.
title: Abonelikten çık
media_attachments:
validations:
@ -1476,6 +1529,8 @@ tr:
update:
subject: "%{name} bir gönderiyi düzenledi"
notifications:
administration_emails: Yönetici e-posta bildirimleri
email_events: E-posta bildirimi etkinlikleri
email_events_hint: 'Bildirim almak istediğiniz olayları seçin:'
number:
human:
@ -1634,6 +1689,7 @@ tr:
import: İçe aktar
import_and_export: İçe ve dışa aktar
migrate: Hesap taşıma
notifications: E-posta bildirimleri
preferences: Tercihler
profile: Profil
relationships: Takip edilenler ve takipçiler
@ -1880,6 +1936,7 @@ tr:
invalid_otp_token: Geçersiz iki adımlı doğrulama kodu
otp_lost_help_html: Her ikisine de erişiminizi kaybettiyseniz, %{email} ile irtibata geçebilirsiniz
rate_limited: Çok fazla kimlik doğrulama denemesi. Daha sonra tekrar deneyin.
seamless_external_login: Harici bir servis aracılığıyla oturum açtınız, bu nedenle parola ve e-posta ayarları mevcut değildir.
signed_in_as: 'Oturum açtı:'
verification:
extra_instructions_html: <strong>İpucu:</strong> Web sitenizdeki bağlantı görünmez olabilir. Önemli olan, kullanıcı tarafından oluşturulan içeriğe sahip web sitelerinde kimliğe bürünmeyi önleyen <code>rel="me"</code>'dir. Sayfa başlığında <code>a</code> yerine bir <code>bağlantı</code> etiketi de kullanabilirsiniz, ancak HTML'ye JavaScript çalıştırılmadan erişilebilir olmalıdır.

View file

@ -302,12 +302,10 @@ RSpec.describe MediaAttachment, :attachment_processing do
it 'queues CacheBusterWorker jobs' do
original_path = media.file.path(:original)
small_path = media.file.path(:small)
thumbnail_path = media.thumbnail.path(:original)
expect { media.destroy }
.to enqueue_sidekiq_job(CacheBusterWorker).with(original_path)
.and enqueue_sidekiq_job(CacheBusterWorker).with(small_path)
.and enqueue_sidekiq_job(CacheBusterWorker).with(thumbnail_path)
end
end

View file

@ -182,30 +182,30 @@ RSpec.describe User do
end
end
describe 'blacklist' do
describe 'email domains denylist integration' do
around do |example|
old_blacklist = Rails.configuration.x.email_blacklist
original = Rails.configuration.x.email_domains_denylist
Rails.configuration.x.email_domains_blacklist = 'mvrht.com'
Rails.configuration.x.email_domains_denylist = 'mvrht.com'
example.run
Rails.configuration.x.email_domains_blacklist = old_blacklist
Rails.configuration.x.email_domains_denylist = original
end
it 'allows a non-blacklisted user to be created' do
it 'allows a user with an email domain that is not on the denylist to be created' do
user = described_class.new(email: 'foo@example.com', account: account, password: password, agreement: true)
expect(user).to be_valid
end
it 'does not allow a blacklisted user to be created' do
it 'does not allow a user with an email domain on the deylist to be created' do
user = described_class.new(email: 'foo@mvrht.com', account: account, password: password, agreement: true)
expect(user).to_not be_valid
end
it 'does not allow a subdomain blacklisted user to be created' do
it 'does not allow a user with an email where the subdomain is on the denylist to be created' do
user = described_class.new(email: 'foo@mvrht.com.topdomain.tld', account: account, password: password, agreement: true)
expect(user).to_not be_valid
@ -374,43 +374,43 @@ RSpec.describe User do
end
end
describe 'whitelist' do
describe 'allowlist integration' do
around do |example|
old_whitelist = Rails.configuration.x.email_domains_whitelist
original = Rails.configuration.x.email_domains_allowlist
Rails.configuration.x.email_domains_whitelist = 'mastodon.space'
Rails.configuration.x.email_domains_allowlist = 'mastodon.space'
example.run
Rails.configuration.x.email_domains_whitelist = old_whitelist
Rails.configuration.x.email_domains_allowlist = original
end
it 'does not allow a user to be created unless they are whitelisted' do
it 'does not allow a user to be created when their email is not on the allowlist' do
user = described_class.new(email: 'foo@example.com', account: account, password: password, agreement: true)
expect(user).to_not be_valid
end
it 'allows a user to be created if they are whitelisted' do
it 'allows a user to be created when their email is on the allowlist' do
user = described_class.new(email: 'foo@mastodon.space', account: account, password: password, agreement: true)
expect(user).to be_valid
end
it 'does not allow a user with a whitelisted top domain as subdomain in their email address to be created' do
it 'does not allow a user with an email subdomain included on the top level domain allowlist to be created' do
user = described_class.new(email: 'foo@mastodon.space.userdomain.com', account: account, password: password, agreement: true)
expect(user).to_not be_valid
end
context 'with a blacklisted subdomain' do
context 'with a subdomain on the denylist' do
around do |example|
old_blacklist = Rails.configuration.x.email_blacklist
original = Rails.configuration.x.email_domains_denylist
example.run
Rails.configuration.x.email_domains_blacklist = old_blacklist
Rails.configuration.x.email_domains_denylist = original
end
it 'does not allow a user to be created with a specific blacklisted subdomain even if the top domain is whitelisted' do
Rails.configuration.x.email_domains_blacklist = 'blacklisted.mastodon.space'
it 'does not allow a user to be created with an email subdomain on the denylist even if the top domain is on the allowlist' do
Rails.configuration.x.email_domains_denylist = 'denylisted.mastodon.space'
user = described_class.new(email: 'foo@blacklisted.mastodon.space', account: account, password: password)
user = described_class.new(email: 'foo@denylisted.mastodon.space', account: account, password: password)
expect(user).to_not be_valid
end
end

View file

@ -0,0 +1,30 @@
# frozen_string_literal: true
require 'rails_helper'
describe 'Log Out' do
include RoutingHelper
describe 'DELETE /auth/sign_out' do
let(:user) { Fabricate(:user) }
before do
sign_in user
end
it 'Logs out the user and redirect' do
delete '/auth/sign_out'
expect(response).to redirect_to('/auth/sign_in')
end
it 'Logs out the user and return a page to redirect to with a JSON request' do
delete '/auth/sign_out', headers: { 'HTTP_ACCEPT' => 'application/json' }
expect(response).to have_http_status(200)
expect(response.media_type).to eq 'application/json'
expect(body_as_json[:redirect_to]).to eq '/auth/sign_in'
end
end
end

View file

@ -0,0 +1,19 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe AcceptNotificationRequestService do
subject { described_class.new }
let(:notification_request) { Fabricate(:notification_request) }
describe '#call' do
it 'destroys the notification request, creates a permission, and queues a worker' do
expect { subject.call(notification_request) }
.to change { NotificationRequest.exists?(notification_request.id) }.to(false)
.and change { NotificationPermission.exists?(account_id: notification_request.account_id, from_account_id: notification_request.from_account_id) }.to(true)
expect(UnfilterNotificationsWorker).to have_enqueued_sidekiq_job(notification_request.account_id, notification_request.from_account_id)
end
end
end

View file

@ -0,0 +1,43 @@
# frozen_string_literal: true
require 'rails_helper'
describe 'Log out' do
include ProfileStories
before do
as_a_logged_in_user
end
describe 'Logging out from the preferences' do
it 'logs the user out' do
visit settings_path
within '.sidebar' do
click_on 'Logout'
end
expect(page).to have_title(I18n.t('auth.login'))
expect(page).to have_current_path('/auth/sign_in')
end
end
describe 'Logging out from the JS app', :js, :streaming do
it 'logs the user out' do
visit root_path
within '.navigation-bar' do
click_on 'Menu'
end
within '.dropdown-menu' do
click_on 'Logout'
end
click_on 'Log out'
expect(page).to have_title(I18n.t('auth.login'))
expect(page).to have_current_path('/auth/sign_in')
end
end
end

View file

@ -9,10 +9,10 @@ describe EmailMxValidator do
context 'with an e-mail domain that is explicitly allowed' do
around do |block|
tmp = Rails.configuration.x.email_domains_whitelist
Rails.configuration.x.email_domains_whitelist = 'example.com'
tmp = Rails.configuration.x.email_domains_allowlist
Rails.configuration.x.email_domains_allowlist = 'example.com'
block.call
Rails.configuration.x.email_domains_whitelist = tmp
Rails.configuration.x.email_domains_allowlist = tmp
end
it 'does not add errors if there are no DNS records' do
@ -69,7 +69,7 @@ describe EmailMxValidator do
expect(user.errors).to have_received(:add)
end
it 'adds an error if the MX record is blacklisted' do
it 'adds an error if the MX record has an email domain block' do
EmailDomainBlock.create!(domain: 'mail.example.com')
configure_resolver(

View file

@ -2,7 +2,7 @@
require 'rails_helper'
RSpec.describe BlacklistedEmailValidator do
RSpec.describe UserEmailValidator do
describe '#validate' do
subject { described_class.new.validate(user) }

View file

@ -0,0 +1,46 @@
# frozen_string_literal: true
require 'rails_helper'
describe UnfilterNotificationsWorker do
let(:recipient) { Fabricate(:account) }
let(:sender) { Fabricate(:account) }
before do
# Populate multiple kinds of filtered notifications
private_message = Fabricate(:status, account: sender, visibility: :direct)
mention = Fabricate(:mention, account: recipient, status: private_message)
Fabricate(:notification, filtered: true, from_account: sender, account: recipient, type: :mention, activity: mention)
follow_request = sender.request_follow!(recipient)
Fabricate(:notification, filtered: true, from_account: sender, account: recipient, type: :follow_request, activity: follow_request)
end
shared_examples 'shared behavior' do
it 'unfilters notifications and adds private messages to conversations' do
expect { subject }
.to change { recipient.notifications.where(from_account_id: sender.id).pluck(:filtered) }.from([true, true]).to([false, false])
.and change { recipient.conversations.exists?(last_status_id: sender.statuses.first.id) }.to(true)
end
end
describe '#perform' do
context 'with single argument (prerelease behavior)' do
subject { described_class.new.perform(notification_request.id) }
let(:notification_request) { Fabricate(:notification_request, from_account: sender, account: recipient) }
it_behaves_like 'shared behavior'
it 'destroys the notification request' do
expect { subject }
.to change { NotificationRequest.exists?(notification_request.id) }.to(false)
end
end
context 'with two arguments' do
subject { described_class.new.perform(recipient.id, sender.id) }
it_behaves_like 'shared behavior'
end
end
end

402
yarn.lock
View file

@ -1579,10 +1579,10 @@ __metadata:
languageName: node
linkType: hard
"@csstools/color-helpers@npm:^4.2.1":
version: 4.2.1
resolution: "@csstools/color-helpers@npm:4.2.1"
checksum: 10c0/72e11b186ad0f6019a9b4b3752e620fa798c2a40cf47e8cad565dff46e572c9342eb8cf804542d7886344a1e540555d77f20119ace6b2d8a45b6e5ef8a41685c
"@csstools/color-helpers@npm:^5.0.1":
version: 5.0.1
resolution: "@csstools/color-helpers@npm:5.0.1"
checksum: 10c0/77fa3b7236eaa3f36dea24708ac0d5e53168903624ac5aed54615752a0730cd20773fda50e742ce868012eca8c000cc39688e05869e79f34714230ab6968d1e6
languageName: node
linkType: hard
@ -1596,16 +1596,16 @@ __metadata:
languageName: node
linkType: hard
"@csstools/css-color-parser@npm:^3.0.0":
version: 3.0.0
resolution: "@csstools/css-color-parser@npm:3.0.0"
"@csstools/css-color-parser@npm:^3.0.1":
version: 3.0.1
resolution: "@csstools/css-color-parser@npm:3.0.1"
dependencies:
"@csstools/color-helpers": "npm:^4.2.1"
"@csstools/color-helpers": "npm:^5.0.1"
"@csstools/css-calc": "npm:^2.0.0"
peerDependencies:
"@csstools/css-parser-algorithms": ^3.0.0
"@csstools/css-tokenizer": ^3.0.0
checksum: 10c0/9b56ba3b56691d2133f1d9b881131bfd9745024a79f825284109adac05578e15ae3eed0e99c98db162932d69770fc970b5b005996c32cdf7167af3418da263c3
checksum: 10c0/8890a621f916cbbf49e749d4e85e934ce55c9f9c339abcc5f4a64bc165605a6e8dd3cad9d3bbc994d2419a3b38981dca84b93ae50aa91d492fb5f0f4c9d95969
languageName: node
linkType: hard
@ -1673,33 +1673,33 @@ __metadata:
languageName: node
linkType: hard
"@csstools/postcss-color-function@npm:^4.0.0":
version: 4.0.0
resolution: "@csstools/postcss-color-function@npm:4.0.0"
"@csstools/postcss-color-function@npm:^4.0.1":
version: 4.0.1
resolution: "@csstools/postcss-color-function@npm:4.0.1"
dependencies:
"@csstools/css-color-parser": "npm:^3.0.0"
"@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/ff0c0c44f5d17bc5e7ea287eff9c10ca334a84d086998a6b243a209f1795d32ba872357935f4176e5206b88dc8d2a204f452c13bc940540b7122e9e807511ac6
checksum: 10c0/f0d3dd0677d381df54987d13ea63a59e911816d98a22eda7a5e55ca2908f52afc42fbffb73a8d25a18632b936dc38f6ada9f3e2dd7911cf775ce3718657420f4
languageName: node
linkType: hard
"@csstools/postcss-color-mix-function@npm:^3.0.0":
version: 3.0.0
resolution: "@csstools/postcss-color-mix-function@npm:3.0.0"
"@csstools/postcss-color-mix-function@npm:^3.0.1":
version: 3.0.1
resolution: "@csstools/postcss-color-mix-function@npm:3.0.1"
dependencies:
"@csstools/css-color-parser": "npm:^3.0.0"
"@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/120e96581834b2363df1fb653959dc243d93c01bcd70bf2e34418c20cd418a75f8b4e2e81da6955345619dcbb246e7d023f395521522bacb455583c15f61c677
checksum: 10c0/ff76400d132c42d70f58b0908ab602b550b43720320288eb4ca1f185e7340c6f232b2a789ac94be255fc7bedc3c6125314d564297d23606fb2c91a1e2d79c40b
languageName: node
linkType: hard
@ -1742,46 +1742,46 @@ __metadata:
languageName: node
linkType: hard
"@csstools/postcss-gamut-mapping@npm:^2.0.0":
version: 2.0.0
resolution: "@csstools/postcss-gamut-mapping@npm:2.0.0"
"@csstools/postcss-gamut-mapping@npm:^2.0.1":
version: 2.0.1
resolution: "@csstools/postcss-gamut-mapping@npm:2.0.1"
dependencies:
"@csstools/css-color-parser": "npm:^3.0.0"
"@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/be1d7f4c96f3bbcb69ed4ccc2ff406a884ae7129e6542ab6800782fbfe4e077159352409961f2da8054ec9fabbf6ed211288f1004c96632a1f6b10bef332d880
checksum: 10c0/3415c420463dd481a3ddf5b104f15661492d9aa3613c109f9b7354b2664965a92036045e157945348cf2c06e075b89a0c0c4f49c8a00d41c827c5b61de297cd0
languageName: node
linkType: hard
"@csstools/postcss-gradients-interpolation-method@npm:^5.0.0":
version: 5.0.0
resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.0"
"@csstools/postcss-gradients-interpolation-method@npm:^5.0.1":
version: 5.0.1
resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.1"
dependencies:
"@csstools/css-color-parser": "npm:^3.0.0"
"@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/04e29fd877a499b9570665aea5b23cd70635b538dd903b9f9706ddd85a2d9c93445aea4b6b7dbcf8986ab58b45bb502ec5060044d945096d0af2eb6cebadb88e
checksum: 10c0/a1c5d6bf308ff9e1972cb39030859cd135246f8f697e5d1278ddd8ed27ce53eb76b3e628acc64145290006f45140d0a4a65e5df71f131d3e6447f0e5d3301088
languageName: node
linkType: hard
"@csstools/postcss-hwb-function@npm:^4.0.0":
version: 4.0.0
resolution: "@csstools/postcss-hwb-function@npm:4.0.0"
"@csstools/postcss-hwb-function@npm:^4.0.1":
version: 4.0.1
resolution: "@csstools/postcss-hwb-function@npm:4.0.1"
dependencies:
"@csstools/css-color-parser": "npm:^3.0.0"
"@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/1aff69ca364417ac2b7ef1c737f88567f441bfd54d93d7b635e0ad605c61edcc2282bc0e2df73c83d1c6a24487e0acec34a4585d27d5f6027402aaea71696190
checksum: 10c0/3247c3ab75d3cdb0ca80f7bb63d944ce933694ee9d7ee68aea11e727e883e0d35936b4a29e28700bda5eea2be26917a6c95c22a6b244e945cc558669f88b8a6e
languageName: node
linkType: hard
@ -1819,9 +1819,9 @@ __metadata:
languageName: node
linkType: hard
"@csstools/postcss-light-dark-function@npm:^2.0.0":
version: 2.0.0
resolution: "@csstools/postcss-light-dark-function@npm:2.0.0"
"@csstools/postcss-light-dark-function@npm:^2.0.1":
version: 2.0.1
resolution: "@csstools/postcss-light-dark-function@npm:2.0.1"
dependencies:
"@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0"
@ -1829,7 +1829,7 @@ __metadata:
"@csstools/utilities": "npm:^2.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/d0eb1e04854c4ae425c6aff51ce9d0db90e9457aea3307d3ed916f500d2b5a3314a25d3487ea893e7b006a34c0d155462566d6066c8c54baec33eb104891c6db
checksum: 10c0/4caf23781daa72f036a830b7fc2c07cde1122afd7bc7c6a291992b5264ea92c1fb22ec2ed684c5ce50e6e848f6d0ea39ef34a5679ea37a546b8db6eb555e3f80
languageName: node
linkType: hard
@ -1933,18 +1933,18 @@ __metadata:
languageName: node
linkType: hard
"@csstools/postcss-oklab-function@npm:^4.0.0":
version: 4.0.0
resolution: "@csstools/postcss-oklab-function@npm:4.0.0"
"@csstools/postcss-oklab-function@npm:^4.0.1":
version: 4.0.1
resolution: "@csstools/postcss-oklab-function@npm:4.0.1"
dependencies:
"@csstools/css-color-parser": "npm:^3.0.0"
"@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/9e228049645e6a6baa77d6e7e35b3862f3e2e4836fbf2de43fa246d91f0efa36e7f18eae3f2b224c61e72628aaf14d4bff86c555fb06378d5e05e71dca92f9ec
checksum: 10c0/b4450fb792c505936e1f9290e8df5420e98ccba78fa1badc9261ff99bebff8cc3b1f050e518728de791acadba08b5e8c213d97b479f551b72b4f8a5793625998
languageName: node
linkType: hard
@ -1959,18 +1959,18 @@ __metadata:
languageName: node
linkType: hard
"@csstools/postcss-relative-color-syntax@npm:^3.0.0":
version: 3.0.0
resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.0"
"@csstools/postcss-relative-color-syntax@npm:^3.0.1":
version: 3.0.1
resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.1"
dependencies:
"@csstools/css-color-parser": "npm:^3.0.0"
"@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/d7ae180d746bd9778d8b9f74f8d644f4c6a98b29659423d4ee2b48f461e90a3e30b44dcf44a181ade083b6c6d1b0346b7b3e62fe67fdeaba59a13f050a19c7d1
checksum: 10c0/95a0001549b0fcae6add7db6264d16183734a9dd94e54e9b606b0dcefbd96540d8917707eef2525a5024e4078ef039acfa05c2c1b309fe444a7fc1f1c05d6594
languageName: node
linkType: hard
@ -1998,15 +1998,15 @@ __metadata:
languageName: node
linkType: hard
"@csstools/postcss-text-decoration-shorthand@npm:^4.0.0":
version: 4.0.0
resolution: "@csstools/postcss-text-decoration-shorthand@npm:4.0.0"
"@csstools/postcss-text-decoration-shorthand@npm:^4.0.1":
version: 4.0.1
resolution: "@csstools/postcss-text-decoration-shorthand@npm:4.0.1"
dependencies:
"@csstools/color-helpers": "npm:^4.2.1"
"@csstools/color-helpers": "npm:^5.0.1"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/dedc98134648d5306e795e4176b2c39a578a237669562e7d934d0b0ac7411d37bab4065c8b0adfc075b57250daba62f045b86c79286b5f9be55502acef0d88c6
checksum: 10c0/81950e248d6019c0066353895e0fa2a5c684b754c9af349218cb919534f5ebf79e5e9c7a10b3af1e9c56de2f246968de3b87a00d8c4102e5f88e0f05c04f9889
languageName: node
linkType: hard
@ -4132,8 +4132,8 @@ __metadata:
linkType: hard
"@types/webpack@npm:^4.41.33":
version: 4.41.38
resolution: "@types/webpack@npm:4.41.38"
version: 4.41.39
resolution: "@types/webpack@npm:4.41.39"
dependencies:
"@types/node": "npm:*"
"@types/tapable": "npm:^1"
@ -4141,7 +4141,7 @@ __metadata:
"@types/webpack-sources": "npm:*"
anymatch: "npm:^3.0.0"
source-map: "npm:^0.6.0"
checksum: 10c0/5a0a7465d45a0e7701a8c863e88c6cba7660b37e4aeab851c71baf505dbab2e178be1cac82488c2e7d0ea11fb703ceddb53476daec3ec9a004e2fc1554233483
checksum: 10c0/740420d092abb80b70263b02609bde209801b060d8e6f3a399a129945cb09182c2ce63dc816908bfbcdb123b35dc4c4fb51367aac2b5974537694cac2631db21
languageName: node
linkType: hard
@ -5198,13 +5198,13 @@ __metadata:
linkType: hard
"axios@npm:^1.4.0":
version: 1.7.3
resolution: "axios@npm:1.7.3"
version: 1.7.4
resolution: "axios@npm:1.7.4"
dependencies:
follow-redirects: "npm:^1.15.6"
form-data: "npm:^4.0.0"
proxy-from-env: "npm:^1.1.0"
checksum: 10c0/a18cbe559203efa05fb1fec2d1898e23bf6329bd2575784ee32aa11b5bbe1d54b9f472c49a261294125519cf62aa4fe5ef6e647bb7482eafc15bffe15ab314ce
checksum: 10c0/5ea1a93140ca1d49db25ef8e1bd8cfc59da6f9220159a944168860ad15a2743ea21c5df2967795acb15cbe81362f5b157fdebbea39d53117ca27658bab9f7f17
languageName: node
linkType: hard
@ -5701,17 +5701,17 @@ __metadata:
languageName: node
linkType: hard
"browserslist@npm:^4.0.0, browserslist@npm:^4.23.0, browserslist@npm:^4.23.1":
version: 4.23.1
resolution: "browserslist@npm:4.23.1"
"browserslist@npm:^4.0.0, browserslist@npm:^4.23.0, browserslist@npm:^4.23.1, browserslist@npm:^4.23.3":
version: 4.23.3
resolution: "browserslist@npm:4.23.3"
dependencies:
caniuse-lite: "npm:^1.0.30001629"
electron-to-chromium: "npm:^1.4.796"
node-releases: "npm:^2.0.14"
update-browserslist-db: "npm:^1.0.16"
caniuse-lite: "npm:^1.0.30001646"
electron-to-chromium: "npm:^1.5.4"
node-releases: "npm:^2.0.18"
update-browserslist-db: "npm:^1.1.0"
bin:
browserslist: cli.js
checksum: 10c0/eb47c7ab9d60db25ce2faca70efeb278faa7282a2f62b7f2fa2f92e5f5251cf65144244566c86559419ff4f6d78f59ea50e39911321ad91f3b27788901f1f5e9
checksum: 10c0/3063bfdf812815346447f4796c8f04601bf5d62003374305fd323c2a463e42776475bcc5309264e39bcf9a8605851e53560695991a623be988138b3ff8c66642
languageName: node
linkType: hard
@ -5913,10 +5913,10 @@ __metadata:
languageName: node
linkType: hard
"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001599, caniuse-lite@npm:^1.0.30001629":
version: 1.0.30001636
resolution: "caniuse-lite@npm:1.0.30001636"
checksum: 10c0/e5f965b4da7bae1531fd9f93477d015729ff9e3fa12670ead39a9e6cdc4c43e62c272d47857c5cc332e7b02d697cb3f2f965a1030870ac7476da60c2fc81ee94
"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001599, caniuse-lite@npm:^1.0.30001646":
version: 1.0.30001651
resolution: "caniuse-lite@npm:1.0.30001651"
checksum: 10c0/7821278952a6dbd17358e5d08083d258f092e2a530f5bc1840657cb140fbbc5ec44293bc888258c44a18a9570cde149ed05819ac8320b9710cf22f699891e6ad
languageName: node
linkType: hard
@ -6781,43 +6781,43 @@ __metadata:
languageName: node
linkType: hard
"cssnano-preset-default@npm:^7.0.4":
version: 7.0.4
resolution: "cssnano-preset-default@npm:7.0.4"
"cssnano-preset-default@npm:^7.0.5":
version: 7.0.5
resolution: "cssnano-preset-default@npm:7.0.5"
dependencies:
browserslist: "npm:^4.23.1"
browserslist: "npm:^4.23.3"
css-declaration-sorter: "npm:^7.2.0"
cssnano-utils: "npm:^5.0.0"
postcss-calc: "npm:^10.0.0"
postcss-colormin: "npm:^7.0.1"
postcss-convert-values: "npm:^7.0.2"
postcss-discard-comments: "npm:^7.0.1"
postcss-discard-duplicates: "npm:^7.0.0"
postcss-calc: "npm:^10.0.1"
postcss-colormin: "npm:^7.0.2"
postcss-convert-values: "npm:^7.0.3"
postcss-discard-comments: "npm:^7.0.2"
postcss-discard-duplicates: "npm:^7.0.1"
postcss-discard-empty: "npm:^7.0.0"
postcss-discard-overridden: "npm:^7.0.0"
postcss-merge-longhand: "npm:^7.0.2"
postcss-merge-rules: "npm:^7.0.2"
postcss-merge-longhand: "npm:^7.0.3"
postcss-merge-rules: "npm:^7.0.3"
postcss-minify-font-values: "npm:^7.0.0"
postcss-minify-gradients: "npm:^7.0.0"
postcss-minify-params: "npm:^7.0.1"
postcss-minify-selectors: "npm:^7.0.2"
postcss-minify-params: "npm:^7.0.2"
postcss-minify-selectors: "npm:^7.0.3"
postcss-normalize-charset: "npm:^7.0.0"
postcss-normalize-display-values: "npm:^7.0.0"
postcss-normalize-positions: "npm:^7.0.0"
postcss-normalize-repeat-style: "npm:^7.0.0"
postcss-normalize-string: "npm:^7.0.0"
postcss-normalize-timing-functions: "npm:^7.0.0"
postcss-normalize-unicode: "npm:^7.0.1"
postcss-normalize-unicode: "npm:^7.0.2"
postcss-normalize-url: "npm:^7.0.0"
postcss-normalize-whitespace: "npm:^7.0.0"
postcss-ordered-values: "npm:^7.0.1"
postcss-reduce-initial: "npm:^7.0.1"
postcss-reduce-initial: "npm:^7.0.2"
postcss-reduce-transforms: "npm:^7.0.0"
postcss-svgo: "npm:^7.0.1"
postcss-unique-selectors: "npm:^7.0.1"
postcss-unique-selectors: "npm:^7.0.2"
peerDependencies:
postcss: ^8.4.31
checksum: 10c0/0083821e778bdf7b8aa9589408a01a717be730f73584e7b81756a6fcf87af05b8f17342025e666572a8d573cc30783f2d817b0f7ad63670398bc3135b017ccad
checksum: 10c0/ffa7c6fa16c6ad98b7732fc563de74d492e6ad6d243a9f00431c0cbdbc576bcd49226d2695d881465d32dea0a2916add40ac10e7560dd7b5de9fd0fa25ee081b
languageName: node
linkType: hard
@ -6831,14 +6831,14 @@ __metadata:
linkType: hard
"cssnano@npm:^7.0.0":
version: 7.0.4
resolution: "cssnano@npm:7.0.4"
version: 7.0.5
resolution: "cssnano@npm:7.0.5"
dependencies:
cssnano-preset-default: "npm:^7.0.4"
cssnano-preset-default: "npm:^7.0.5"
lilconfig: "npm:^3.1.2"
peerDependencies:
postcss: ^8.4.31
checksum: 10c0/3939a0b37b11cb4bae92f7916517c7ba21257551f92517b49a640d5df32e855fb7e73321f4be44d2c2de578309c05d711cdcb1976e95607b1b7f92bd4cbd1350
checksum: 10c0/cb43ed964787dca33efb44d8f4fea8a49c495db44d1d12940493f0dd5d63db78e01c5b140fe42b480b332733602a25f4c85186d00977eb3070b29f7422761985
languageName: node
linkType: hard
@ -7479,10 +7479,10 @@ __metadata:
languageName: node
linkType: hard
"electron-to-chromium@npm:^1.4.796":
version: 1.4.806
resolution: "electron-to-chromium@npm:1.4.806"
checksum: 10c0/44f925ba64bb623d0482cd2f14fcfb27017cec1f11ee642e0d49cb128cd714ba5e074c2cd8756dfc18010aa66d3c64039cdea891905f7c17160a8963db574fab
"electron-to-chromium@npm:^1.5.4":
version: 1.5.7
resolution: "electron-to-chromium@npm:1.5.7"
checksum: 10c0/be4460bbe3d2186a16d53a03da67fde6fd06ad41943553ce517a45d52e03424732a982f75528e8a2d5fb042d6afde64186aa482caec0fb925daa5a74cf5ef060
languageName: node
linkType: hard
@ -12402,10 +12402,10 @@ __metadata:
languageName: node
linkType: hard
"node-releases@npm:^2.0.14":
version: 2.0.14
resolution: "node-releases@npm:2.0.14"
checksum: 10c0/199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9
"node-releases@npm:^2.0.18":
version: 2.0.18
resolution: "node-releases@npm:2.0.18"
checksum: 10c0/786ac9db9d7226339e1dc84bbb42007cb054a346bd9257e6aa154d294f01bc6a6cddb1348fa099f079be6580acbb470e3c048effd5f719325abd0179e566fd27
languageName: node
linkType: hard
@ -13347,15 +13347,15 @@ __metadata:
languageName: node
linkType: hard
"postcss-calc@npm:^10.0.0":
version: 10.0.0
resolution: "postcss-calc@npm:10.0.0"
"postcss-calc@npm:^10.0.1":
version: 10.0.1
resolution: "postcss-calc@npm:10.0.1"
dependencies:
postcss-selector-parser: "npm:^6.0.16"
postcss-selector-parser: "npm:^6.1.1"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4.38
checksum: 10c0/d4d529f2f71b49f17441eed74a7564ccd2779c72ed8648d4bb2530261a27c0ca01fe6a07260e7bf57e55f46dd68dea07e52fd1a6b538db7bc13015124be258a5
checksum: 10c0/5e38cc6f082f87e82067497b41684410784223ecd3701bf52242ea9f2f467f1fad6b5a561f8aa3be307d89435b4060f58aeb27c4064003586daf653cc4d91fef
languageName: node
linkType: hard
@ -13370,18 +13370,18 @@ __metadata:
languageName: node
linkType: hard
"postcss-color-functional-notation@npm:^7.0.0":
version: 7.0.0
resolution: "postcss-color-functional-notation@npm:7.0.0"
"postcss-color-functional-notation@npm:^7.0.1":
version: 7.0.1
resolution: "postcss-color-functional-notation@npm:7.0.1"
dependencies:
"@csstools/css-color-parser": "npm:^3.0.0"
"@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/6afe7b681a16783a27fa9600db348f995dfdbc9c945f6cdcec94ee2419e09cfd1c6e533264b830207f130e19ae18ff689ad9b48bced338f27f898eaecd61f844
checksum: 10c0/0cdfae4d85cb34425c8363b699b5da6f0c8cc43e7ce3b7fdd1fd39429ee81a4af75f973cd5c8293b1072688064da17a0a633827f23667e8cc0ff16217f0004eb
languageName: node
linkType: hard
@ -13409,29 +13409,29 @@ __metadata:
languageName: node
linkType: hard
"postcss-colormin@npm:^7.0.1":
version: 7.0.1
resolution: "postcss-colormin@npm:7.0.1"
"postcss-colormin@npm:^7.0.2":
version: 7.0.2
resolution: "postcss-colormin@npm:7.0.2"
dependencies:
browserslist: "npm:^4.23.1"
browserslist: "npm:^4.23.3"
caniuse-api: "npm:^3.0.0"
colord: "npm:^2.9.3"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4.31
checksum: 10c0/e01e9e129ce39320cf10bb09ee2a3ab5b44b77805d3f7827eea07297644838b85c33b78996eeae0a1aba327ffd72a6ab1d24949ebc831523e310e916d5500371
checksum: 10c0/76d09fb7e0218698e622a7c2cfc9087985f48f3a7e44f2655d5eefac4ae9c04198ae9d408dc7ace15d3aa5bde80e7031e462b0cb9b5bd50cfa76bbb1503c755b
languageName: node
linkType: hard
"postcss-convert-values@npm:^7.0.2":
version: 7.0.2
resolution: "postcss-convert-values@npm:7.0.2"
"postcss-convert-values@npm:^7.0.3":
version: 7.0.3
resolution: "postcss-convert-values@npm:7.0.3"
dependencies:
browserslist: "npm:^4.23.1"
browserslist: "npm:^4.23.3"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4.31
checksum: 10c0/beb59faf6aae97e6d3c233c5e6ed06cc60d65c49eec576036e3d0da1a831a1e827e3d41f5e81d016440b4f0bdf1406268ae069c4d5b38a6667b310c3da079d22
checksum: 10c0/dbb6278bd8d8b11e448933d823426c883bff3f6abeaa23c7530cc4668b9da6f714e073840f280273f8a14022c3a99eb461ec732f7539e062b32f5281e1be6526
languageName: node
linkType: hard
@ -13489,23 +13489,23 @@ __metadata:
languageName: node
linkType: hard
"postcss-discard-comments@npm:^7.0.1":
version: 7.0.1
resolution: "postcss-discard-comments@npm:7.0.1"
"postcss-discard-comments@npm:^7.0.2":
version: 7.0.2
resolution: "postcss-discard-comments@npm:7.0.2"
dependencies:
postcss-selector-parser: "npm:^6.1.0"
postcss-selector-parser: "npm:^6.1.1"
peerDependencies:
postcss: ^8.4.31
checksum: 10c0/64de3fced7e0e49dfea6aede8a5ca495b81dcd01c3c47734a5fbc86a3cb2b1ae39e1958e34e9bea64ecabd5fb4d8c287ec1d6189cf175c2434c6b6582da79948
checksum: 10c0/c01632e643b6ec1f61ad59efe06a9e8dfc7fcedeb1551ae48fc33fa801353f6222e31954286cd97171c694f34c2b4c7f7a2213fd0f913e37c34d0353258ed234
languageName: node
linkType: hard
"postcss-discard-duplicates@npm:^7.0.0":
version: 7.0.0
resolution: "postcss-discard-duplicates@npm:7.0.0"
"postcss-discard-duplicates@npm:^7.0.1":
version: 7.0.1
resolution: "postcss-discard-duplicates@npm:7.0.1"
peerDependencies:
postcss: ^8.4.31
checksum: 10c0/37d568dc18d47b8b9f0fd6d5115b1faf96c2bf429fc4586508a773533479e18627d6260cad6a3ca7d3bfc2f220fd9448410aee40e07f2ec6c6f96bbe3595dbc8
checksum: 10c0/5cc2cac249f68004864865ea2ec38b7d5e28184f33e904e531ff57b533aacb73ec49e4a7d83219184001b8d167e5bcabc1673248134468d7ebaa0bfb9ff78f0a
languageName: node
linkType: hard
@ -13592,18 +13592,18 @@ __metadata:
languageName: node
linkType: hard
"postcss-lab-function@npm:^7.0.0":
version: 7.0.0
resolution: "postcss-lab-function@npm:7.0.0"
"postcss-lab-function@npm:^7.0.1":
version: 7.0.1
resolution: "postcss-lab-function@npm:7.0.1"
dependencies:
"@csstools/css-color-parser": "npm:^3.0.0"
"@csstools/css-color-parser": "npm:^3.0.1"
"@csstools/css-parser-algorithms": "npm:^3.0.0"
"@csstools/css-tokenizer": "npm:^3.0.0"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/utilities": "npm:^2.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/f3647bcdd8d6140631b97276ecf51f40df2c7564610262a20c608c37c8ab79bf6e02888419dc657afc4720a7378e3ad19f4fdf811a69363424160d548ac68daf
checksum: 10c0/8a6f3f465911c5c608650e3ebec01097d274109eea0fceb925f1ca52213c67a6496570ff2ba9af0a6c2153e208ef1d10cc43ad81f38405f5d39639680f7150a9
languageName: node
linkType: hard
@ -13641,29 +13641,29 @@ __metadata:
languageName: node
linkType: hard
"postcss-merge-longhand@npm:^7.0.2":
version: 7.0.2
resolution: "postcss-merge-longhand@npm:7.0.2"
"postcss-merge-longhand@npm:^7.0.3":
version: 7.0.3
resolution: "postcss-merge-longhand@npm:7.0.3"
dependencies:
postcss-value-parser: "npm:^4.2.0"
stylehacks: "npm:^7.0.2"
stylehacks: "npm:^7.0.3"
peerDependencies:
postcss: ^8.4.31
checksum: 10c0/71d22418e5850e134bfcf2038acb1c91eeb48d9b6f9e4c0252fee757e11dc4ae351097a855c327fbc38dc7658fa6edc7cc7f458c08bb4044b82c6005dc565fcb
checksum: 10c0/b968c3d16f3edc6075b20219a1165c089dc454a6a42951dcdfc94adb932fb96ef7bcd465c6cd21b0e5b55ac08921355ddbbbc7cdcf87a345e4bef8b3cdd2e7e9
languageName: node
linkType: hard
"postcss-merge-rules@npm:^7.0.2":
version: 7.0.2
resolution: "postcss-merge-rules@npm:7.0.2"
"postcss-merge-rules@npm:^7.0.3":
version: 7.0.3
resolution: "postcss-merge-rules@npm:7.0.3"
dependencies:
browserslist: "npm:^4.23.1"
browserslist: "npm:^4.23.3"
caniuse-api: "npm:^3.0.0"
cssnano-utils: "npm:^5.0.0"
postcss-selector-parser: "npm:^6.1.0"
postcss-selector-parser: "npm:^6.1.1"
peerDependencies:
postcss: ^8.4.31
checksum: 10c0/fbad20382ca45f1b3b5ff704c075f899cc9ba8418ae6effbdeb9e7c1f9b5c24996d1941ad36cd0936d60cbf127a72f235b2cbb0c44d9239a8a61042406d95b4a
checksum: 10c0/3cd20484ab6d15c62eded408248d5eeaba52a573935943f933865680e070a0e75b3a7447802c575bc86e1fae667cf51d9d5766537835d9b8c090337b5adf928e
languageName: node
linkType: hard
@ -13691,28 +13691,28 @@ __metadata:
languageName: node
linkType: hard
"postcss-minify-params@npm:^7.0.1":
version: 7.0.1
resolution: "postcss-minify-params@npm:7.0.1"
"postcss-minify-params@npm:^7.0.2":
version: 7.0.2
resolution: "postcss-minify-params@npm:7.0.2"
dependencies:
browserslist: "npm:^4.23.1"
browserslist: "npm:^4.23.3"
cssnano-utils: "npm:^5.0.0"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4.31
checksum: 10c0/84e1c4de5af47178c1f48e10ce16341560f32bb2becf5ec9b014103f6c706174bc70885e2e13ced4de9b4f1959fb970193261cbd4751c8b87d5159e859e8c5ec
checksum: 10c0/0e041f70554bae9d4a66c8ab2f2f3ed8bf73862c9d5ff9972ac7f1a596badd1544f093fa2362dd33e96c038af9e10287cdbfec9f480c49bffdcbaca9fdcb1e4e
languageName: node
linkType: hard
"postcss-minify-selectors@npm:^7.0.2":
version: 7.0.2
resolution: "postcss-minify-selectors@npm:7.0.2"
"postcss-minify-selectors@npm:^7.0.3":
version: 7.0.3
resolution: "postcss-minify-selectors@npm:7.0.3"
dependencies:
cssesc: "npm:^3.0.0"
postcss-selector-parser: "npm:^6.1.0"
postcss-selector-parser: "npm:^6.1.1"
peerDependencies:
postcss: ^8.4.31
checksum: 10c0/87e0c21a0135b6c61b58d62c4c1e0cbd3cfb516ff8105db714c6a33a5edc477846ae220399d368e4ef6518529c711aa2dee9ff49e9befd93e83d5c939f3084a1
checksum: 10c0/5211f63a1672f646a1bab57bd8eac0816d42adacb5e286ad5e6e342a795bb0d086bd6044a1b338311ca28f33f2c1833165ee611eaa671287379821ba3c5d68ad
languageName: node
linkType: hard
@ -13837,15 +13837,15 @@ __metadata:
languageName: node
linkType: hard
"postcss-normalize-unicode@npm:^7.0.1":
version: 7.0.1
resolution: "postcss-normalize-unicode@npm:7.0.1"
"postcss-normalize-unicode@npm:^7.0.2":
version: 7.0.2
resolution: "postcss-normalize-unicode@npm:7.0.2"
dependencies:
browserslist: "npm:^4.23.1"
browserslist: "npm:^4.23.3"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4.31
checksum: 10c0/fcabac738765f608cb211ac01a19f9a7d784f99d223ef6f31352f37b9bcf008e0ca7849414c9e77116be8660d78b01dba6fc4a87cee7c9a977d3c2741d6a222d
checksum: 10c0/0df1aac932cc2340715178fd024e0f6d872ea5a4bee1bc8357317a75a7b2c904d885f754cc162af001aa2a9ded7c54fac7cbcd701e21e995c1ace92dc08f2b9d
languageName: node
linkType: hard
@ -13924,22 +13924,22 @@ __metadata:
linkType: hard
"postcss-preset-env@npm:^10.0.0":
version: 10.0.0
resolution: "postcss-preset-env@npm:10.0.0"
version: 10.0.1
resolution: "postcss-preset-env@npm:10.0.1"
dependencies:
"@csstools/postcss-cascade-layers": "npm:^5.0.0"
"@csstools/postcss-color-function": "npm:^4.0.0"
"@csstools/postcss-color-mix-function": "npm:^3.0.0"
"@csstools/postcss-color-function": "npm:^4.0.1"
"@csstools/postcss-color-mix-function": "npm:^3.0.1"
"@csstools/postcss-content-alt-text": "npm:^2.0.0"
"@csstools/postcss-exponential-functions": "npm:^2.0.0"
"@csstools/postcss-font-format-keywords": "npm:^4.0.0"
"@csstools/postcss-gamut-mapping": "npm:^2.0.0"
"@csstools/postcss-gradients-interpolation-method": "npm:^5.0.0"
"@csstools/postcss-hwb-function": "npm:^4.0.0"
"@csstools/postcss-gamut-mapping": "npm:^2.0.1"
"@csstools/postcss-gradients-interpolation-method": "npm:^5.0.1"
"@csstools/postcss-hwb-function": "npm:^4.0.1"
"@csstools/postcss-ic-unit": "npm:^4.0.0"
"@csstools/postcss-initial": "npm:^2.0.0"
"@csstools/postcss-is-pseudo-class": "npm:^5.0.0"
"@csstools/postcss-light-dark-function": "npm:^2.0.0"
"@csstools/postcss-light-dark-function": "npm:^2.0.1"
"@csstools/postcss-logical-float-and-clear": "npm:^3.0.0"
"@csstools/postcss-logical-overflow": "npm:^2.0.0"
"@csstools/postcss-logical-overscroll-behavior": "npm:^2.0.0"
@ -13949,12 +13949,12 @@ __metadata:
"@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^3.0.0"
"@csstools/postcss-nested-calc": "npm:^4.0.0"
"@csstools/postcss-normalize-display-values": "npm:^4.0.0"
"@csstools/postcss-oklab-function": "npm:^4.0.0"
"@csstools/postcss-oklab-function": "npm:^4.0.1"
"@csstools/postcss-progressive-custom-properties": "npm:^4.0.0"
"@csstools/postcss-relative-color-syntax": "npm:^3.0.0"
"@csstools/postcss-relative-color-syntax": "npm:^3.0.1"
"@csstools/postcss-scope-pseudo-class": "npm:^4.0.0"
"@csstools/postcss-stepped-value-functions": "npm:^4.0.0"
"@csstools/postcss-text-decoration-shorthand": "npm:^4.0.0"
"@csstools/postcss-text-decoration-shorthand": "npm:^4.0.1"
"@csstools/postcss-trigonometric-functions": "npm:^4.0.0"
"@csstools/postcss-unset-value": "npm:^4.0.0"
autoprefixer: "npm:^10.4.19"
@ -13965,7 +13965,7 @@ __metadata:
cssdb: "npm:^8.1.0"
postcss-attribute-case-insensitive: "npm:^7.0.0"
postcss-clamp: "npm:^4.1.0"
postcss-color-functional-notation: "npm:^7.0.0"
postcss-color-functional-notation: "npm:^7.0.1"
postcss-color-hex-alpha: "npm:^10.0.0"
postcss-color-rebeccapurple: "npm:^10.0.0"
postcss-custom-media: "npm:^11.0.0"
@ -13978,7 +13978,7 @@ __metadata:
postcss-font-variant: "npm:^5.0.0"
postcss-gap-properties: "npm:^6.0.0"
postcss-image-set-function: "npm:^7.0.0"
postcss-lab-function: "npm:^7.0.0"
postcss-lab-function: "npm:^7.0.1"
postcss-logical: "npm:^8.0.0"
postcss-nesting: "npm:^13.0.0"
postcss-opacity-percentage: "npm:^2.0.0"
@ -13990,7 +13990,7 @@ __metadata:
postcss-selector-not: "npm:^8.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/0b61c44233ee7fd17e32912ce028edc19998f30183f1ff2186523c4f9eac4a2a36513af31670e13ceb05f2146c4549a0b870ba0de0e3a08e77a9d57d8de72654
checksum: 10c0/5849915d040413f68ab71b3489daaa5b6687b4d4710da47a0d1420df0890858f0b53c9ec6755d872dbe38a2695ab12584be654456e3d6ce311b88927209c02b2
languageName: node
linkType: hard
@ -14005,15 +14005,15 @@ __metadata:
languageName: node
linkType: hard
"postcss-reduce-initial@npm:^7.0.1":
version: 7.0.1
resolution: "postcss-reduce-initial@npm:7.0.1"
"postcss-reduce-initial@npm:^7.0.2":
version: 7.0.2
resolution: "postcss-reduce-initial@npm:7.0.2"
dependencies:
browserslist: "npm:^4.23.1"
browserslist: "npm:^4.23.3"
caniuse-api: "npm:^3.0.0"
peerDependencies:
postcss: ^8.4.31
checksum: 10c0/3e7c6c1d0cc4ace38f44971f02d0dd98131af678cf114aa05cfa0c066420019d5329c221ef8507644b8a79d0e76534303f747c97860ac777fe17f57110edefe1
checksum: 10c0/1e6fafaf5fac52b351c8de156ed62e4e1f48da7eb07f9ce90da54b45dca61da9af1e954b8a343271cb3e4ec99e0c5f18d7f9f96da0ca144511fca04498fac78c
languageName: node
linkType: hard
@ -14073,7 +14073,7 @@ __metadata:
languageName: node
linkType: hard
"postcss-selector-parser@npm:^6.0.13, postcss-selector-parser@npm:^6.0.16, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.1.0, postcss-selector-parser@npm:^6.1.1":
"postcss-selector-parser@npm:^6.0.13, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.1.0, postcss-selector-parser@npm:^6.1.1":
version: 6.1.1
resolution: "postcss-selector-parser@npm:6.1.1"
dependencies:
@ -14095,14 +14095,14 @@ __metadata:
languageName: node
linkType: hard
"postcss-unique-selectors@npm:^7.0.1":
version: 7.0.1
resolution: "postcss-unique-selectors@npm:7.0.1"
"postcss-unique-selectors@npm:^7.0.2":
version: 7.0.2
resolution: "postcss-unique-selectors@npm:7.0.2"
dependencies:
postcss-selector-parser: "npm:^6.1.0"
postcss-selector-parser: "npm:^6.1.1"
peerDependencies:
postcss: ^8.4.31
checksum: 10c0/6352d71ce2f65265f545831c2ce3686bd71961d08a2247c545d717d93d23b1eb08bb986efc11194d31970eea4cb42207b9aa9a3f4666d75492a6cbf1493cf466
checksum: 10c0/cc54c57cd1c5a6e3e166ec63cc036d9e2df80b05e508d9ce754ca4193bf8c1bfcc16b3c6f0d81b8352a3282201d249b90bb87abacfcfb9065c9e3705ea5d110e
languageName: node
linkType: hard
@ -14114,13 +14114,13 @@ __metadata:
linkType: hard
"postcss@npm:^8.2.15, postcss@npm:^8.4.24, postcss@npm:^8.4.40":
version: 8.4.40
resolution: "postcss@npm:8.4.40"
version: 8.4.41
resolution: "postcss@npm:8.4.41"
dependencies:
nanoid: "npm:^3.3.7"
picocolors: "npm:^1.0.1"
source-map-js: "npm:^1.2.0"
checksum: 10c0/65ed67573e5443beaeb582282ff27a6be7c7fe3b4d9fa15761157616f2b97510cb1c335023c26220b005909f007337026d6e3ff092f25010b484ad484e80ea7f
checksum: 10c0/c1828fc59e7ec1a3bf52b3a42f615dba53c67960ed82a81df6441b485fe43c20aba7f4e7c55425762fd99c594ecabbaaba8cf5b30fd79dfec5b52a9f63a2d690
languageName: node
linkType: hard
@ -16627,15 +16627,15 @@ __metadata:
languageName: node
linkType: hard
"stylehacks@npm:^7.0.2":
version: 7.0.2
resolution: "stylehacks@npm:7.0.2"
"stylehacks@npm:^7.0.3":
version: 7.0.3
resolution: "stylehacks@npm:7.0.3"
dependencies:
browserslist: "npm:^4.23.1"
postcss-selector-parser: "npm:^6.1.0"
browserslist: "npm:^4.23.3"
postcss-selector-parser: "npm:^6.1.1"
peerDependencies:
postcss: ^8.4.31
checksum: 10c0/552299e869ac430e1076c025ace6c80bdfd5b672632435625eb1bd45ff5611aad7f3ee810e72edc04dc0fc3761e08dec40d27b72c50b95690eea2de43238b8d8
checksum: 10c0/5030334b06ef705b5700444dab120b540b09159e935e75b60f25bd56db1d85f0d11755f0b0f64ce3f12c5a72ff1b6f57fea49c26d18eb0de2334d6a143b94f8d
languageName: node
linkType: hard
@ -17576,9 +17576,9 @@ __metadata:
languageName: node
linkType: hard
"update-browserslist-db@npm:^1.0.16":
version: 1.0.16
resolution: "update-browserslist-db@npm:1.0.16"
"update-browserslist-db@npm:^1.1.0":
version: 1.1.0
resolution: "update-browserslist-db@npm:1.1.0"
dependencies:
escalade: "npm:^3.1.2"
picocolors: "npm:^1.0.1"
@ -17586,7 +17586,7 @@ __metadata:
browserslist: ">= 4.21.0"
bin:
update-browserslist-db: cli.js
checksum: 10c0/5995399fc202adbb51567e4810e146cdf7af630a92cc969365a099150cb00597e425cc14987ca7080b09a4d0cfd2a3de53fbe72eebff171aed7f9bb81f9bf405
checksum: 10c0/a7452de47785842736fb71547651c5bbe5b4dc1e3722ccf48a704b7b34e4dcf633991eaa8e4a6a517ffb738b3252eede3773bef673ef9021baa26b056d63a5b9
languageName: node
linkType: hard
@ -18293,9 +18293,9 @@ __metadata:
linkType: hard
"wicg-inert@npm:^3.1.2":
version: 3.1.2
resolution: "wicg-inert@npm:3.1.2"
checksum: 10c0/5b20eaedcb30f1093fb6afd0480a059e40814da56c6052469c6fe95dd2d288b89c55ed1bdbfae4db70fd5ec8148dda8dd3b671a27a26870c8f77626b13cedd1b
version: 3.1.3
resolution: "wicg-inert@npm:3.1.3"
checksum: 10c0/160b981584e40d3a568af16a93b70dca847d9fce6d6704b40c60a9a1435f77406cc1abc56aa1bb5a63669c6cb819f09d51d7f27c16f3829cb86052e3fd27f2b0
languageName: node
linkType: hard