Merge remote-tracking branch 'parent/main' into upstream-20240403

This commit is contained in:
KMY 2024-04-03 12:12:09 +09:00
commit 479c4fecc1
63 changed files with 831 additions and 391 deletions

View file

@ -13,6 +13,6 @@ linters:
MiddleDot:
enabled: true
LineLength:
max: 320
max: 300
ViewLength:
max: 200 # Override default value of 100 inherited from rubocop

View file

@ -39,7 +39,7 @@ Layout/FirstHashElementIndentation:
# Reason: Currently disabled in .rubocop_todo.yml
# https://docs.rubocop.org/rubocop/cops_layout.html#layoutlinelength
Layout/LineLength:
Max: 320 # Default of 120 causes a duplicate entry in generated todo file
Max: 300 # Default of 120 causes a duplicate entry in generated todo file
## Disable most Metrics/*Length cops
# Reason: those are often triggered and force significant refactors when this happend
@ -154,11 +154,6 @@ RSpec/NamedSubject:
RSpec/NotToNot:
EnforcedStyle: to_not
# Reason: Prevailing style uses numeric status codes, matches Rails/HttpStatus
# https://docs.rubocop.org/rubocop-rspec/cops_rspec_rails.html#rspecrailshttpstatus
RSpec/Rails/HttpStatus:
EnforcedStyle: numeric
# Reason: Match overrides from Rspec/FilePath rule above
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecspecfilepathformat
RSpec/SpecFilePathFormat:
@ -169,6 +164,11 @@ RSpec/SpecFilePathFormat:
OEmbedController: oembed_controller
OStatus: ostatus
# Reason: Prevailing style uses numeric status codes, matches Rails/HttpStatus
# https://docs.rubocop.org/rubocop-rspec/cops_rspec_rails.html#rspecrailshttpstatus
RSpecRails/HttpStatus:
EnforcedStyle: numeric
# Reason:
# https://docs.rubocop.org/rubocop/cops_style.html#styleclassandmodulechildren
Style/ClassAndModuleChildren:

View file

@ -1,6 +1,6 @@
# This configuration was generated by
# `rubocop --auto-gen-config --auto-gen-only-exclude --no-exclude-limit --no-offense-counts --no-auto-gen-timestamp`
# using RuboCop version 1.60.2.
# using RuboCop version 1.62.1.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
@ -36,7 +36,7 @@ Metrics/PerceivedComplexity:
# Configuration parameters: CountAsOne.
RSpec/ExampleLength:
Max: 20 # Override default of 5
Max: 18
RSpec/MultipleExpectations:
Max: 7
@ -91,7 +91,6 @@ Style/FetchEnvVar:
Exclude:
- 'app/lib/redis_configuration.rb'
- 'app/lib/translation_service.rb'
- 'config/environments/development.rb'
- 'config/environments/production.rb'
- 'config/initializers/2_limited_federation_mode.rb'
- 'config/initializers/3_omniauth.rb'
@ -147,7 +146,6 @@ Style/GuardClause:
- 'lib/mastodon/cli/accounts.rb'
- 'lib/mastodon/cli/maintenance.rb'
- 'lib/mastodon/cli/media.rb'
- 'lib/paperclip/attachment_extensions.rb'
- 'lib/tasks/repo.rake'
# This cop supports safe autocorrection (--autocorrect).

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1.4
# syntax=docker/dockerfile:1.7
# Please see https://docs.docker.com/engine/reference/builder for information about
# the extended buildx capabilities used in this file.

View file

@ -69,7 +69,6 @@ gem 'nsa'
gem 'oj', '~> 3.14'
gem 'ox', '~> 2.14'
gem 'parslet'
gem 'posix-spawn'
gem 'public_suffix', '~> 5.0'
gem 'pundit', '~> 2.3'
gem 'premailer-rails'
@ -89,7 +88,7 @@ gem 'sidekiq-unique-jobs', '~> 7.1'
gem 'sidekiq-bulk', '~> 0.2.0'
gem 'simple-navigation', '~> 4.4'
gem 'simple_form', '~> 5.2'
gem 'stoplight', '~> 3.0.1'
gem 'stoplight', '~> 4.1'
gem 'strong_migrations', '1.8.0'
gem 'tty-prompt', '~> 0.23', require: false
gem 'twitter-text', '~> 3.1.0'

View file

@ -103,7 +103,7 @@ GEM
awrence (1.2.1)
aws-eventstream (1.3.0)
aws-partitions (1.899.0)
aws-sdk-core (3.191.4)
aws-sdk-core (3.191.5)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8)
@ -111,7 +111,7 @@ GEM
aws-sdk-kms (1.78.0)
aws-sdk-core (~> 3, >= 3.191.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.146.0)
aws-sdk-s3 (1.146.1)
aws-sdk-core (~> 3, >= 3.191.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.8)
@ -245,7 +245,7 @@ GEM
tzinfo
excon (0.110.0)
fabrication (2.31.0)
faker (3.3.0)
faker (3.3.1)
i18n (>= 1.8.11, < 2)
faraday (1.10.3)
faraday-em_http (~> 1.0)
@ -273,7 +273,7 @@ GEM
faraday_middleware (1.2.0)
faraday (~> 1.0)
fast_blank (1.0.1)
fastimage (2.3.0)
fastimage (2.3.1)
ffi (1.16.3)
ffi-compiler (1.0.1)
ffi (>= 1.0.0)
@ -398,8 +398,8 @@ GEM
language_server-protocol (3.17.0.3)
launchy (2.5.2)
addressable (~> 2.8)
letter_opener (1.8.1)
launchy (>= 2.2, < 3)
letter_opener (1.10.0)
launchy (>= 2.2, < 4)
letter_opener_web (2.0.0)
actionmailer (>= 5.2)
letter_opener (~> 1.7)
@ -509,7 +509,6 @@ GEM
pg (1.5.6)
pghero (3.4.1)
activerecord (>= 6)
posix-spawn (0.3.15)
premailer (1.23.0)
addressable
css_parser (>= 1.12.0)
@ -526,7 +525,7 @@ GEM
railties (>= 7.0.0)
psych (5.1.2)
stringio
public_suffix (5.0.4)
public_suffix (5.0.5)
puma (6.4.2)
nio4r (~> 2.0)
pundit (2.3.1)
@ -666,18 +665,21 @@ GEM
rubocop (~> 1.41)
rubocop-factory_bot (2.25.1)
rubocop (~> 1.41)
rubocop-performance (1.20.2)
rubocop-performance (1.21.0)
rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rails (2.24.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rspec (2.27.1)
rubocop-rspec (2.28.0)
rubocop (~> 1.40)
rubocop-capybara (~> 2.17)
rubocop-factory_bot (~> 2.22)
rubocop-rspec_rails (~> 2.28)
rubocop-rspec_rails (2.28.2)
rubocop (~> 1.40)
ruby-prof (1.7.0)
ruby-progressbar (1.13.0)
ruby-saml (1.15.0)
@ -695,7 +697,7 @@ GEM
scenic (1.7.0)
activerecord (>= 4.0.0)
railties (>= 4.0.0)
selenium-webdriver (4.18.1)
selenium-webdriver (4.19.0)
base64 (~> 0.2)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
@ -732,7 +734,7 @@ GEM
smart_properties (1.17.0)
stackprof (0.2.26)
statsd-ruby (1.5.0)
stoplight (3.0.2)
stoplight (4.1.0)
redlock (~> 1.0)
stringio (3.1.0)
strong_migrations (1.8.0)
@ -898,7 +900,6 @@ DEPENDENCIES
parslet
pg (~> 1.5)
pghero
posix-spawn
premailer-rails
private_address_check (~> 0.5)
propshaft
@ -941,7 +942,7 @@ DEPENDENCIES
simplecov (~> 0.22)
simplecov-lcov (~> 0.8)
stackprof
stoplight (~> 3.0.1)
stoplight (~> 4.1)
strong_migrations (= 1.8.0)
test-prof
thor (~> 1.2)

View file

@ -38,7 +38,12 @@ class Api::V1::AccountsController < Api::BaseController
def follow
follow = FollowService.new.call(current_user.account, @account, reblogs: params.key?(:reblogs) ? truthy_param?(:reblogs) : nil, notify: params.key?(:notify) ? truthy_param?(:notify) : nil, languages: params.key?(:languages) ? params[:languages] : nil, with_rate_limit: true)
options = @account.locked? || current_user.account.silenced? || (current_user.account.bot? && @account.user&.setting_lock_follow_from_bot) ? {} : { following_map: { @account.id => { reblogs: follow.show_reblogs?, notify: follow.notify?, languages: follow.languages } }, requested_map: { @account.id => false } }
options = if @account.locked? || current_user.account.silenced? || (current_user.account.bot? && @account.user&.setting_lock_follow_from_bot)
{}
else
{ following_map: { @account.id => { reblogs: follow.show_reblogs?, notify: follow.notify?, languages: follow.languages } },
requested_map: { @account.id => false } }
end
render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships(**options)
end

View file

@ -66,7 +66,7 @@ module SignatureVerification
compare_signed_string = build_signed_string(include_query_string: false)
return actor unless verify_signature(actor, signature, compare_signed_string).nil?
actor = stoplight_wrap_request { actor_refresh_key!(actor) }
actor = stoplight_wrapper.run { actor_refresh_key!(actor) }
raise SignatureVerificationError, "Could not refresh public key #{signature_params['keyId']}" if actor.nil?
@ -226,10 +226,10 @@ module SignatureVerification
end
if key_id.start_with?('acct:')
stoplight_wrap_request { ResolveAccountService.new.call(key_id.delete_prefix('acct:'), suppress_errors: false) }
stoplight_wrapper.run { ResolveAccountService.new.call(key_id.delete_prefix('acct:'), suppress_errors: false) }
elsif !ActivityPub::TagManager.instance.local_uri?(key_id)
account = ActivityPub::TagManager.instance.uri_to_actor(key_id)
account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, suppress_errors: false) }
account ||= stoplight_wrapper.run { ActivityPub::FetchRemoteKeyService.new.call(key_id, suppress_errors: false) }
account
end
rescue Mastodon::PrivateNetworkAddressError => e
@ -238,12 +238,11 @@ module SignatureVerification
raise SignatureVerificationError, e.message
end
def stoplight_wrap_request(&block)
Stoplight("source:#{request.remote_ip}", &block)
def stoplight_wrapper
Stoplight("source:#{request.remote_ip}")
.with_threshold(1)
.with_cool_off_time(5.minutes.seconds)
.with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) }
.run
end
def actor_refresh_key!(actor)

View file

@ -0,0 +1,22 @@
// See app/serializers/rest/media_attachment_serializer.rb
export type MediaAttachmentType =
| 'image'
| 'gifv'
| 'video'
| 'unknown'
| 'audio';
export interface ApiMediaAttachmentJSON {
id: string;
type: MediaAttachmentType;
url: string;
preview_url: string;
remoteUrl: string;
preview_remote_url: string;
text_url: string;
// TODO: how to define this?
meta: unknown;
description?: string;
blurhash: string;
}

View file

@ -0,0 +1,23 @@
import type { ApiCustomEmojiJSON } from './custom_emoji';
// See app/serializers/rest/poll_serializer.rb
export interface ApiPollOptionJSON {
title: string;
votes_count: number;
}
export interface ApiPollJSON {
id: string;
expires_at: string;
expired: boolean;
multiple: boolean;
votes_count: number;
voters_count: number;
options: ApiPollOptionJSON[];
emojis: ApiCustomEmojiJSON[];
voted: boolean;
own_votes: number[];
}

View file

@ -0,0 +1,97 @@
// See app/serializers/rest/status_serializer.rb
import type { ApiAccountJSON } from './accounts';
import type { ApiCustomEmojiJSON } from './custom_emoji';
import type { ApiMediaAttachmentJSON } from './media_attachments';
import type { ApiPollJSON } from './polls';
// See app/modals/status.rb visibility+limited_scope
export type StatusVisibility =
| 'public'
| 'unlisted'
| 'private'
| 'direct'
| 'public_unlisted'
| 'login'
| 'mutual'
| 'circle'
| 'personal'
| 'reply'
| 'limited';
export interface ApiStatusApplicationJSON {
name: string;
website: string;
}
export interface ApiTagJSON {
name: string;
url: string;
}
export interface ApiMentionJSON {
id: string;
username: string;
url: string;
acct: string;
}
export interface ApiPreviewCardJSON {
url: string;
title: string;
description: string;
language: string;
type: string;
author_name: string;
author_url: string;
provider_name: string;
provider_url: string;
html: string;
width: number;
height: number;
image: string;
image_description: string;
embed_url: string;
blurhash: string;
published_at: string;
}
export interface ApiStatusJSON {
id: string;
created_at: string;
in_reply_to_id?: string;
in_reply_to_account_id?: string;
sensitive: boolean;
spoiler_text?: string;
visibility: StatusVisibility;
language: string;
uri: string;
url: string;
replies_count: number;
reblogs_count: number;
favorites_count: number;
edited_at?: string;
favorited?: boolean;
reblogged?: boolean;
muted?: boolean;
bookmarked?: boolean;
pinned?: boolean;
// filtered: FilterResult[]
filtered: unknown; // TODO
content?: string;
text?: string;
reblog?: ApiStatusJSON;
application?: ApiStatusApplicationJSON;
account: ApiAccountJSON;
media_attachments: ApiMediaAttachmentJSON[];
mentions: ApiMentionJSON[];
tags: ApiTagJSON[];
emojis: ApiCustomEmojiJSON[];
card?: ApiPreviewCardJSON;
poll?: ApiPollJSON;
}

View file

@ -27,7 +27,7 @@ export const FilteredNotificationsBanner = () => {
};
}, [dispatch]);
if (policy === null || policy.getIn(['summary', 'pending_notifications_count']) * 1 === 0) {
if (policy === null || policy.getIn(['summary', 'pending_notifications_count']) === 0) {
return null;
}

View file

@ -92,7 +92,11 @@
"block_modal.remote_users_caveat": "Serverile {domain} edastatakse palve otsust järgida. Ometi pole see tagatud, kuna mõned serverid võivad blokeeringuid käsitleda omal moel. Avalikud postitused võivad tuvastamata kasutajatele endiselt näha olla.",
"block_modal.show_less": "Kuva vähem",
"block_modal.show_more": "Kuva rohkem",
"block_modal.they_cant_mention": "Ta ei saa mainida sind ega jälgida.",
"block_modal.they_cant_see_posts": "Ta ei näe sinu postitusi ja sa ei näe tema omi.",
"block_modal.they_will_know": "Ta näeb, et ta on blokeeritud.",
"block_modal.title": "Blokeeri kasutaja?",
"block_modal.you_wont_see_mentions": "Sa ei näe postitusi, mis mainivad teda.",
"boost_modal.combo": "Vajutades {combo}, saab selle edaspidi vahele jätta",
"bundle_column_error.copy_stacktrace": "Kopeeri veateade",
"bundle_column_error.error.body": "Soovitud lehte ei õnnestunud esitada. See võib olla meie koodiviga või probleem brauseri ühilduvusega.",
@ -206,8 +210,26 @@
"dismissable_banner.explore_tags": "Need sildid siit ja teistes serveritest detsentraliseeritud võrgus koguvad tähelepanu just praegu selles serveris.",
"dismissable_banner.public_timeline": "Need on kõige uuemad avalikud postitused inimestelt sotsiaalvõrgustikus, mida {domain} inimesed jälgivad.",
"domain_block_modal.block": "Blokeeri server",
"domain_block_modal.block_account_instead": "Selle asemel blokeeri @{name}",
"domain_block_modal.they_can_interact_with_old_posts": "Inimesed sellest serverist saavad interakteeruda sinu vanade postitustega.",
"domain_block_modal.they_cant_follow": "Sellest serverist ei saa keegi sind jälgida.",
"domain_block_modal.they_wont_know": "Nad ei tea, et nad on blokeeritud.",
"domain_block_modal.title": "Blokeerida domeen?",
"domain_block_modal.you_will_lose_followers": "Kõik sinu sellest serverist pärit jälgijad eemaldatakse.",
"domain_block_modal.you_wont_see_posts": "Sa ei näe selle serveri kasutajate postitusi ega teavitusi.",
"domain_pill.activitypub_lets_connect": "See võimaldab sul ühenduda inimestega ja nendega suhelda mitte ainult Mastodonis, vaid ka teistes suhtlusrakendustes.",
"domain_pill.activitypub_like_language": "ActivityPub on nagu keel, mida Mastodon räägib teiste suhtlusvõrgustikega.",
"domain_pill.server": "Server",
"domain_pill.their_handle": "Tema tunnus:",
"domain_pill.their_server": "Tema digitaalne kodu, kus kõik tema postitused on.",
"domain_pill.their_username": "Tema unikaalne tunnus tema serveris. On võimalik, et mingites teistes serverites on sama kasutajanimega kasutajaid.",
"domain_pill.username": "Kasutajanimi",
"domain_pill.whats_in_a_handle": "Mis on tunnuses?",
"domain_pill.who_they_are": "Kuna tunnus ütleb, kes keegi on ja kus, saad suhelda inimestega üle <button>ActivityPub-poolt toetatud sotsiaalvõrkude platvormide</button>.",
"domain_pill.who_you_are": "Kuna tunnus ütleb, kes sa oled ja kus, saavad inimesed sinuga suhelda üle <button>ActivityPub-poolt toetatud sotsiaalvõrkude platvormide</button>.",
"domain_pill.your_handle": "Sinu tunnus:",
"domain_pill.your_server": "Sinu digitaalne kodu, kus on kõik sinu postitused. Sulle ei meeldi see? Vaheta mistahes ajal serverit ja võta jälgijad ka.",
"domain_pill.your_username": "Sinu unikaalne identifikaator siin serveris. On võimalik, et leiad teistes serverites samasuguse kasutajanimega kasutajaid.",
"embed.instructions": "Lisa see postitus oma veebilehele, kopeerides alloleva koodi.",
"embed.preview": "Nii näeb see välja:",
"emoji_button.activity": "Tegevus",
@ -244,6 +266,7 @@
"empty_column.list": "Siin loetelus pole veel midagi. Kui loetelu liikmed teevad uusi postitusi, näed neid siin.",
"empty_column.lists": "Pole veel ühtegi nimekirja. Kui lood mõne, näed neid siin.",
"empty_column.mutes": "Sa pole veel ühtegi kasutajat vaigistanud.",
"empty_column.notification_requests": "Kõik tühi! Siin pole mitte midagi. Kui saad uusi teavitusi, ilmuvad need siin vastavalt sinu seadistustele.",
"empty_column.notifications": "Ei ole veel teateid. Kui keegi suhtleb sinuga, näed seda siin.",
"empty_column.public": "Siin pole midagi! Kirjuta midagi avalikku või jälgi ise kasutajaid täitmaks seda ruumi",
"error.unexpected_crash.explanation": "Meie poolse probleemi või veebilehitseja ühilduvusprobleemi tõttu ei suutnud me seda lehekülge korrektselt näidata.",
@ -275,6 +298,8 @@
"filter_modal.select_filter.title": "Filtreeri seda postitust",
"filter_modal.title.status": "Postituse filtreerimine",
"filtered_notifications_banner.pending_requests": "Teateid {count, plural, =0 {mitte üheltki} one {ühelt} other {#}} inimeselt, keda võid teada",
"filtered_notifications_banner.private_mentions": "{count, plural, one {privaatne teavitus} other {privaatsed teavitused}}",
"filtered_notifications_banner.title": "Filtreeritud teavitused",
"firehose.all": "Kõik",
"firehose.local": "See server",
"firehose.remote": "Teised serverid",
@ -403,8 +428,15 @@
"loading_indicator.label": "Laadimine…",
"media_gallery.toggle_visible": "{number, plural, one {Varja pilt} other {Varja pildid}}",
"moved_to_account_banner.text": "Kontot {disabledAccount} ei ole praegu võimalik kasutada, sest kolisid kontole {movedToAccount}.",
"mute_modal.hide_from_notifications": "Peida teavituste hulgast",
"mute_modal.hide_options": "Peida valikud",
"mute_modal.indefinite": "Kuni eemaldan neilt vaigistuse",
"mute_modal.show_options": "Kuva valikud",
"mute_modal.they_can_mention_and_follow": "Ta saab sind mainida ja sind jälgida, kuid sa ei näe teda.",
"mute_modal.they_wont_know": "Ta ei tea, et ta on vaigistatud.",
"mute_modal.title": "Vaigistada kasutaja?",
"mute_modal.you_wont_see_mentions": "Sa ei näe postitusi, mis teda mainivad.",
"mute_modal.you_wont_see_posts": "Ta näeb jätkuvalt sinu postitusi, kuid sa ei näe tema omi.",
"navigation_bar.about": "Teave",
"navigation_bar.advanced_interface": "Ava kohandatud veebiliides",
"navigation_bar.blocks": "Blokeeritud kasutajad",
@ -440,6 +472,10 @@
"notification.own_poll": "Su küsitlus on lõppenud",
"notification.poll": "Küsitlus, milles osalesid, on lõppenud",
"notification.reblog": "{name} jagas edasi postitust",
"notification.relationships_severance_event": "Kadunud ühendus kasutajaga {name}",
"notification.relationships_severance_event.account_suspension": "{from} admin on kustutanud {target}, mis tähendab, et sa ei saa enam neilt uuendusi või suhelda nendega.",
"notification.relationships_severance_event.domain_block": "{from} admin on blokeerinud {target}, sealhulgas {followersCount} sinu jälgijat ja {followingCount, plural, one {# konto} other {# kontot}}, mida jälgid.",
"notification.relationships_severance_event.learn_more": "Saa rohkem teada",
"notification.status": "{name} just postitas",
"notification.update": "{name} muutis postitust",
"notification_requests.accept": "Nõus",
@ -450,6 +486,8 @@
"notifications.column_settings.admin.sign_up": "Uued kasutajad:",
"notifications.column_settings.alert": "Töölauateated",
"notifications.column_settings.favourite": "Lemmikud:",
"notifications.column_settings.filter_bar.advanced": "Näita kõiki kategooriaid",
"notifications.column_settings.filter_bar.category": "Kiirfiltri riba",
"notifications.column_settings.follow": "Uued jälgijad:",
"notifications.column_settings.follow_request": "Uued jälgimistaotlused:",
"notifications.column_settings.mention": "Mainimised:",
@ -475,6 +513,7 @@
"notifications.permission_denied": "Töölauamärguanded pole saadaval, kuna eelnevalt keelduti lehitsejale teavituste luba andmast",
"notifications.permission_denied_alert": "Töölaua märguandeid ei saa lubada, kuna brauseri luba on varem keeldutud",
"notifications.permission_required": "Töölaua märguanded ei ole saadaval, kuna vajalik luba pole antud.",
"notifications.policy.filter_new_accounts.hint": "Loodud viimase {days, plural, one {ühe päeva} other {# päeva}} jooksul",
"notifications.policy.filter_new_accounts_title": "Uued kontod",
"notifications_permission_banner.enable": "Luba töölaua märguanded",
"notifications_permission_banner.how_to_control": "Et saada teateid, ajal mil Mastodon pole avatud, luba töölauamärguanded. Saad täpselt määrata, mis tüüpi tegevused tekitavad märguandeid, kasutates peale teadaannete sisse lülitamist üleval olevat nuppu {icon}.",

View file

@ -3,15 +3,15 @@
"about.contact": "Contacto:",
"about.disclaimer": "Mastodon es software libere, de codice aperte, e un marca de Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Ration non disponibile",
"about.domain_blocks.preamble": "Mastodon generalmente permitte vider contento ab e interacter con usatores ab ulle altere servitor in le fediverso. Iste es le exceptiones que ha essite facite in iste servitor particular.",
"about.domain_blocks.silenced.explanation": "Generalmente non videras perfiles e contento de iste servitor, a minus que tu expressemente lo cerca o opta pro lo per sequer.",
"about.domain_blocks.preamble": "Mastodon generalmente permitte vider le contento de, e interager con, usatores de qualcunque altere servitor in le fediverso. Istes es le exceptiones que ha essite facite sur iste servitor particular.",
"about.domain_blocks.silenced.explanation": "Generalmente, tu non videra le profilos e le contento de iste servitor, excepte si tu expressemente cerca le contento o seque le profilos.",
"about.domain_blocks.silenced.title": "Limitate",
"about.domain_blocks.suspended.explanation": "Nulle data de iste servitor essera processate, immagazinate o scambiate, faciente qualcunque interaction o communication con usatores de iste servitor impossibile.",
"about.domain_blocks.suspended.explanation": "Nulle datos de iste servitor essera processate, immagazinate o excambiate, rendente omne interaction o communication con usatores de iste servitor impossibile.",
"about.domain_blocks.suspended.title": "Suspendite",
"about.not_available": "Iste information non faceva disponibile in iste servitor.",
"about.not_available": "Iste information non ha essite rendite disponibile sur iste servitor.",
"about.rules": "Regulas del servitor",
"account.account_note_header": "Nota",
"account.add_or_remove_from_list": "Adder o remover ab listas",
"account.add_or_remove_from_list": "Adder a, o remover de listas",
"account.badges.group": "Gruppo",
"account.block": "Blocar @{name}",
"account.block_domain": "Blocar dominio {domain}",
@ -19,31 +19,31 @@
"account.blocked": "Blocate",
"account.browse_more_on_origin_server": "Navigar plus sur le profilo original",
"account.copy": "Copiar ligamine a profilo",
"account.direct": "Mentionar privatemente a @{name}",
"account.disable_notifications": "Stoppar le notificationes quando @{name} publica",
"account.direct": "Mentionar privatemente @{name}",
"account.disable_notifications": "Non plus notificar me quando @{name} publica",
"account.domain_blocked": "Dominio blocate",
"account.edit_profile": "Modificar profilo",
"account.enable_notifications": "Notifica me quando @{name} publica",
"account.enable_notifications": "Notificar me quando @{name} publica",
"account.endorse": "Evidentiar sur le profilo",
"account.featured_tags.last_status_at": "Ultime message in {date}",
"account.featured_tags.last_status_at": "Ultime message publicate le {date}",
"account.featured_tags.last_status_never": "Necun messages",
"account.featured_tags.title": "Hashtags eminente de {name}",
"account.follow": "Sequer",
"account.follow_back": "Sequer etiam",
"account.follow_back": "Sequer in retorno",
"account.followers": "Sequitores",
"account.followers.empty": "Iste usator ancora non ha sequitores.",
"account.followers.empty": "Necuno seque ancora iste usator.",
"account.followers_counter": "{count, plural, one {{counter} sequitor} other {{counter} sequitores}}",
"account.following": "Sequente",
"account.follows.empty": "Iste usator ancora non seque nemo.",
"account.follows.empty": "Iste usator non seque ancora alcuno.",
"account.go_to_profile": "Vader al profilo",
"account.hide_reblogs": "Celar boosts de @{name}",
"account.in_memoriam": "In Memoriam.",
"account.in_memoriam": "In memoriam.",
"account.languages": "Cambiar le linguas subscribite",
"account.link_verified_on": "Le proprietate de iste ligamine esseva verificate le {date}",
"account.locked_info": "Le stato de confidentialitate de iste conto es definite a blocate. Le proprietario revisa manualmente qui pote sequer lo.",
"account.link_verified_on": "Le proprietate de iste ligamine ha essite verificate le {date}",
"account.locked_info": "Le stato de confidentialitate de iste conto es definite como serrate. Le proprietario determina manualmente qui pote sequer le.",
"account.media": "Multimedia",
"account.mention": "Mentionar @{name}",
"account.moved_to": "{name} indicava que lor nove conto ora es:",
"account.moved_to": "{name} ha indicate que su nove conto ora es:",
"account.mute": "Silentiar @{name}",
"account.mute_notifications_short": "Silentiar le notificationes",
"account.mute_short": "Silentiar",
@ -53,9 +53,9 @@
"account.posts": "Messages",
"account.posts_with_replies": "Messages e responsas",
"account.requested": "Attendente le approbation. Clicca pro cancellar le requesta de sequer",
"account.requested_follow": "{name} habeva requestate sequer te",
"account.requested_follow": "{name} ha requestate de sequer te",
"account.share": "Compartir profilo de @{name}",
"account.show_reblogs": "Monstrar responsas de @{name}",
"account.show_reblogs": "Monstrar impulsos de @{name}",
"account.statuses_counter": "{count, plural, one {{counter} message} other {{counter} messages}}",
"account.unblock": "Disblocar @{name}",
"account.unblock_domain": "Disblocar dominio {domain}",
@ -66,23 +66,26 @@
"account.unmute_notifications_short": "Non plus silentiar le notificationes",
"account.unmute_short": "Non plus silentiar",
"account_note.placeholder": "Clicca pro adder un nota",
"admin.dashboard.retention.average": "Median",
"admin.dashboard.retention.average": "Media",
"admin.dashboard.retention.cohort_size": "Nove usatores",
"admin.impact_report.instance_followers": "Sequitores que nostre usatores poterea perder",
"admin.impact_report.instance_follows": "Sequitores que lor usatores poterea perder",
"alert.rate_limited.message": "Retenta depost {retry_time, time, medium}.",
"alert.unexpected.message": "Ocurreva un error inexpectate.",
"admin.impact_report.instance_followers": "Sequitores que nostre usatores perderea",
"admin.impact_report.instance_follows": "Sequitores que lor usatores perderea",
"alert.rate_limited.message": "Per favor retenta post {retry_time, time, medium}.",
"alert.unexpected.message": "Un error inexpectate ha occurrite.",
"announcement.announcement": "Annuncio",
"audio.hide": "Celar audio",
"bundle_column_error.error.title": "Oh, non!",
"block_modal.show_less": "Monstrar minus",
"block_modal.show_more": "Monstrar plus",
"block_modal.title": "Blocar usator?",
"bundle_column_error.error.title": "Oh, no!",
"bundle_column_error.network.title": "Error de rete",
"bundle_column_error.retry": "Tentar novemente",
"bundle_column_error.return": "Retornar al initio",
"bundle_modal_error.close": "Clauder",
"bundle_modal_error.retry": "Tentar novemente",
"closed_registrations_modal.description": "Crear un conto in {domain} actualmente non es possibile, ma considera que tu non besonia un conto specific in {domain} pro usar Mastodon.",
"closed_registrations_modal.find_another_server": "Trovar altere servitor",
"column.about": "A proposito de",
"closed_registrations_modal.description": "Crear un conto in {domain} actualmente non es possibile, ma considera que non es necessari haber un conto specificamente sur {domain} pro usar Mastodon.",
"closed_registrations_modal.find_another_server": "Cercar un altere servitor",
"column.about": "A proposito",
"column.blocks": "Usatores blocate",
"column.bookmarks": "Marcapaginas",
"column.community": "Chronologia local",
@ -90,7 +93,7 @@
"column.directory": "Navigar profilos",
"column.domain_blocks": "Dominios blocate",
"column.favourites": "Favoritos",
"column.firehose": "Fluxos in directe",
"column.firehose": "Fluxos in directo",
"column.home": "Initio",
"column.lists": "Listas",
"column.mutes": "Usatores silentiate",
@ -103,7 +106,7 @@
"column_header.show_settings": "Monstrar le parametros",
"column_subheading.settings": "Parametros",
"community.column_settings.local_only": "Solmente local",
"community.column_settings.media_only": "Solmente medios",
"community.column_settings.media_only": "Solmente multimedia",
"compose.language.change": "Cambiar le lingua",
"compose.language.search": "Cercar linguas...",
"compose.published.body": "Message publicate.",
@ -111,14 +114,14 @@
"compose.saved.body": "Message salvate.",
"compose_form.direct_message_warning_learn_more": "Apprender plus",
"compose_form.lock_disclaimer": "Tu conto non es {locked}. Quicunque pote sequer te pro vider tu messages solo pro sequitores.",
"compose_form.lock_disclaimer.lock": "blocate",
"compose_form.poll.duration": "Duration del inquesta",
"compose_form.lock_disclaimer.lock": "serrate",
"compose_form.poll.duration": "Durata del sondage",
"compose_form.poll.multiple": "Selection multiple",
"compose_form.poll.option_placeholder": "Option {number}",
"compose_form.poll.single": "Seliger un",
"compose_form.poll.switch_to_multiple": "Cambiar inquesta pro permitter selectiones multiple",
"compose_form.poll.switch_to_single": "Cambiar inquesta pro permitter selection singule",
"compose_form.poll.type": "Stylo",
"compose_form.poll.switch_to_multiple": "Cambiar le sondage pro permitter selectiones multiple",
"compose_form.poll.switch_to_single": "Cambiar le sondage pro permitter selection singule",
"compose_form.poll.type": "Stilo",
"compose_form.publish": "Publicar",
"compose_form.publish_form": "Nove message",
"compose_form.reply": "Responder",
@ -129,18 +132,19 @@
"confirmation_modal.cancel": "Cancellar",
"confirmations.block.confirm": "Blocar",
"confirmations.cancel_follow_request.confirm": "Retirar requesta",
"confirmations.cancel_follow_request.message": "Es tu secur que tu vole retirar tu requesta a sequer a {name}?",
"confirmations.cancel_follow_request.message": "Es tu secur que tu vole retirar tu requesta de sequer {name}?",
"confirmations.delete.confirm": "Deler",
"confirmations.delete.message": "Es tu secur que tu vole deler iste message?",
"confirmations.delete_list.confirm": "Deler",
"confirmations.delete_list.message": "Es tu secur que tu vole deler permanentemente iste lista?",
"confirmations.domain_block.confirm": "Blocar le servitor",
"confirmations.edit.confirm": "Modificar",
"confirmations.logout.confirm": "Clauder le session",
"confirmations.logout.confirm": "Clauder session",
"confirmations.logout.message": "Es tu secur que tu vole clauder le session?",
"confirmations.mute.confirm": "Silentiar",
"confirmations.reply.confirm": "Responder",
"confirmations.unfollow.confirm": "Non plus sequer",
"confirmations.unfollow.message": "Es tu secur que tu vole non plus sequer {name}?",
"confirmations.unfollow.message": "Es tu secur que tu vole cessar de sequer {name}?",
"conversation.delete": "Deler conversation",
"conversation.mark_as_read": "Marcar como legite",
"conversation.open": "Vider conversation",
@ -155,8 +159,11 @@
"disabled_account_banner.account_settings": "Parametros de conto",
"disabled_account_banner.text": "Tu conto {disabledAccount} es actualmente disactivate.",
"dismissable_banner.dismiss": "Dimitter",
"domain_block_modal.title": "Blocar dominio?",
"domain_block_modal.you_will_lose_followers": "Omne sequitores ab iste servitor essera removite.",
"domain_pill.server": "Servitor",
"domain_pill.username": "Nomine de usator",
"embed.preview": "Hic es como il parera:",
"embed.preview": "Ecce como illlo parera:",
"emoji_button.activity": "Activitate",
"emoji_button.clear": "Rader",
"emoji_button.custom": "Personalisate",
@ -170,16 +177,16 @@
"emoji_button.search_results": "Resultatos de recerca",
"emoji_button.symbols": "Symbolos",
"emoji_button.travel": "Viages e locos",
"empty_column.account_hides_collections": "Le usator ha seligite non facer iste information disponibile",
"empty_column.account_hides_collections": "Le usator non ha rendite iste information disponibile",
"empty_column.account_suspended": "Conto suspendite",
"empty_column.account_timeline": "Nulle messages hic!",
"empty_column.account_unavailable": "Profilo non disponibile",
"empty_column.blocks": "Tu non ha blocate alcun usator ancora.",
"empty_column.domain_blocks": "Il non ha dominios blocate ancora.",
"empty_column.explore_statuses": "Nihil es in tendentias ora mesme. Retorna postea!",
"empty_column.favourited_statuses": "Tu non ha necun messages favorite ancora. Quando tu marca un como favorito, ille essera monstrate hic.",
"empty_column.followed_tags": "Tu ancora non ha sequite necun hashtags. Quando tu lo face, illes essera monstrate hic.",
"empty_column.hashtag": "Ancora non il ha nihil in iste hashtag.",
"empty_column.explore_statuses": "Il non ha tendentias in iste momento. Reveni plus tarde!",
"empty_column.favourited_statuses": "Tu non ha alcun message favorite ancora. Quando tu marca un message como favorite, illo apparera hic.",
"empty_column.followed_tags": "Tu non ha ancora sequite alcun hashtags. Quando tu lo face, illos apparera hic.",
"empty_column.hashtag": "Il non ha ancora alcun cosa in iste hashtag.",
"errors.unexpected_crash.report_issue": "Signalar un defecto",
"explore.search_results": "Resultatos de recerca",
"explore.suggested_follows": "Personas",
@ -189,7 +196,7 @@
"explore.trending_tags": "Hashtags",
"filter_modal.added.review_and_configure_title": "Parametros de filtro",
"filter_modal.added.settings_link": "pagina de parametros",
"filter_modal.added.short_explanation": "Iste message esseva addite al sequente categoria de filtros: {title}.",
"filter_modal.added.short_explanation": "Iste message ha essite addite al sequente categoria de filtros: {title}.",
"filter_modal.added.title": "Filtro addite!",
"filter_modal.select_filter.prompt_new": "Nove categoria: {name}",
"filter_modal.select_filter.search": "Cercar o crear",
@ -203,9 +210,9 @@
"follow_suggestions.personalized_suggestion": "Suggestion personalisate",
"follow_suggestions.popular_suggestion": "Suggestion personalisate",
"follow_suggestions.view_all": "Vider toto",
"footer.about": "A proposito de",
"footer.about": "A proposito",
"footer.directory": "Directorio de profilos",
"footer.get_app": "Obtene le application",
"footer.get_app": "Obtener le application",
"footer.invite": "Invitar personas",
"footer.keyboard_shortcuts": "Accessos directe de claviero",
"footer.privacy_policy": "Politica de confidentialitate",
@ -221,24 +228,25 @@
"hashtag.follow": "Sequer hashtag",
"hashtag.unfollow": "Non sequer plus le hashtag",
"hashtags.and_other": "…e {count, plural, one {}other {# plus}}",
"home.column_settings.show_reblogs": "Monstrar boosts",
"home.column_settings.show_reblogs": "Monstrar impulsos",
"home.column_settings.show_replies": "Monstrar responsas",
"home.hide_announcements": "Celar annuncios",
"home.pending_critical_update.body": "Actualisa tu servitor de Mastodon le plus tosto possibile!",
"home.pending_critical_update.link": "Vider actualisationes",
"home.pending_critical_update.title": "Actualisation de securitate critic disponibile!",
"home.show_announcements": "Monstrar annuncios",
"interaction_modal.login.prompt": "Dominio de tu servitor, p.e. mastodon.social",
"interaction_modal.login.prompt": "Dominio de tu servitor, p.ex. mastodon.social",
"interaction_modal.no_account_yet": "Non sur Mstodon?",
"interaction_modal.on_another_server": "In un servitor differente",
"interaction_modal.on_this_server": "In iste servitor",
"interaction_modal.on_another_server": "Sur un altere servitor",
"interaction_modal.on_this_server": "Sur iste servitor",
"interaction_modal.title.follow": "Sequer {name}",
"interaction_modal.title.reblog": "Facer boost al message de {name}",
"interaction_modal.title.reblog": "Impulsar le message de {name}",
"interaction_modal.title.reply": "Responder al message de {name}",
"keyboard_shortcuts.blocked": "Aperir lista de usatores blocate",
"keyboard_shortcuts.boost": "Facer boost al message",
"keyboard_shortcuts.boost": "Impulsar le message",
"keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.enter": "Aperir message",
"keyboard_shortcuts.favourite": "Message favorite",
"keyboard_shortcuts.favourites": "Aperir lista de favoritos",
"keyboard_shortcuts.federated": "Aperir le chronologia federate",
"keyboard_shortcuts.heading": "Accessos directe de claviero",
@ -247,22 +255,22 @@
"keyboard_shortcuts.muted": "Aperir lista de usatores silentiate",
"keyboard_shortcuts.my_profile": "Aperir tu profilo",
"keyboard_shortcuts.notifications": "Aperir columna de notificationes",
"keyboard_shortcuts.open_media": "Aperir medio",
"keyboard_shortcuts.open_media": "Aperir multimedia",
"keyboard_shortcuts.profile": "Aperir le profilo del autor",
"keyboard_shortcuts.reply": "Responder al message",
"keyboard_shortcuts.spoilers": "Monstrar/celar le campo CW",
"keyboard_shortcuts.toggle_sensitivity": "Monstrar/celar medios",
"keyboard_shortcuts.toggle_sensitivity": "Monstrar/celar multimedia",
"keyboard_shortcuts.toot": "Initiar un nove message",
"lightbox.close": "Clauder",
"lightbox.next": "Sequente",
"lightbox.previous": "Precedente",
"link_preview.author": "Per {name}",
"lists.account.add": "Adder al lista",
"lists.account.remove": "Remover ab le lista",
"lists.account.remove": "Remover del lista",
"lists.delete": "Deler lista",
"lists.edit": "Modificar lista",
"lists.edit.submit": "Cambiar titulo",
"lists.exclusive": "Celar iste messages ab le initio",
"lists.exclusive": "Celar iste messages sur le pagina de initio",
"lists.new.create": "Adder lista",
"lists.new.title_placeholder": "Nove titulo del lista",
"lists.replies_policy.none": "Nemo",
@ -270,8 +278,10 @@
"lists.subheading": "Tu listas",
"loading_indicator.label": "Cargante…",
"media_gallery.toggle_visible": "{number, plural, one {Celar imagine} other {Celar imagines}}",
"navigation_bar.about": "A proposito de",
"navigation_bar.advanced_interface": "Aperir in un interfacie web avantiate",
"mute_modal.hide_options": "Celar optiones",
"mute_modal.title": "Silentiar le usator?",
"navigation_bar.about": "A proposito",
"navigation_bar.advanced_interface": "Aperir in le interfacie web avantiate",
"navigation_bar.blocks": "Usatores blocate",
"navigation_bar.bookmarks": "Marcapaginas",
"navigation_bar.community_timeline": "Chronologia local",
@ -291,14 +301,18 @@
"navigation_bar.public_timeline": "Chronologia federate",
"navigation_bar.search": "Cercar",
"navigation_bar.security": "Securitate",
"notification.own_poll": "Tu inquesta finiva",
"notification.update": "{name} modificava un message",
"notification.own_poll": "Tu sondage ha finite",
"notification.relationships_severance_event.learn_more": "Apprender plus",
"notification.update": "{name} ha modificate un message",
"notification_requests.notifications_from": "Notificationes de {name}",
"notifications.clear": "Rader notificationes",
"notifications.clear_confirmation": "Es tu secur que tu vole rader permanentemente tote tu notificationes?",
"notifications.column_settings.alert": "Notificationes de scriptorio",
"notifications.column_settings.favourite": "Favoritos:",
"notifications.column_settings.filter_bar.advanced": "Monstrar tote le categorias",
"notifications.column_settings.follow": "Nove sequitores:",
"notifications.column_settings.mention": "Mentiones:",
"notifications.column_settings.poll": "Resultatos del inquesta:",
"notifications.column_settings.poll": "Resultatos del sondage:",
"notifications.column_settings.push": "Notificationes push",
"notifications.column_settings.show": "Monstrar in columna",
"notifications.column_settings.sound": "Reproducer sono",
@ -307,10 +321,11 @@
"notifications.filter.all": "Toto",
"notifications.filter.favourites": "Favoritos",
"notifications.filter.mentions": "Mentiones",
"notifications.filter.polls": "Resultatos del inquesta",
"notifications.filter.polls": "Resultatos del sondage",
"notifications.filter.statuses": "Actualisationes de personas que tu seque",
"notifications.grant_permission": "Conceder permission.",
"notifications.group": "{count} notificationes",
"notifications.policy.filter_new_accounts_title": "Nove contos",
"notifications_permission_banner.enable": "Activar notificationes de scriptorio",
"onboarding.compose.template": "Salute #Mastodon!",
"onboarding.profile.save_and_continue": "Salvar e continuar",
@ -322,7 +337,7 @@
"onboarding.steps.share_profile.title": "Compartir tu profilo de Mastodon",
"poll.closed": "Claudite",
"poll.reveal": "Vider le resultatos",
"privacy.change": "Cambiar privacitate del message",
"privacy.change": "Cambiar le confidentialitate del message",
"privacy.public.short": "Public",
"privacy_policy.last_updated": "Ultime actualisation {date}",
"privacy_policy.title": "Politica de confidentialitate",
@ -333,7 +348,7 @@
"report.categories.other": "Alteres",
"report.category.title_account": "profilo",
"report.category.title_status": "message",
"report.close": "Preste",
"report.close": "Facite",
"report.mute": "Silentiar",
"report.next": "Sequente",
"report.placeholder": "Commentos additional",
@ -358,14 +373,14 @@
"server_banner.learn_more": "Apprender plus",
"server_banner.server_stats": "Statos del servitor:",
"sign_in_banner.create_account": "Crear un conto",
"sign_in_banner.sign_in": "Initiar le session",
"sign_in_banner.sign_in": "Aperir session",
"status.block": "Blocar @{name}",
"status.copy": "Copiar ligamine a message",
"status.delete": "Deler",
"status.direct": "Mentionar privatemente a @{name}",
"status.direct": "Mentionar privatemente @{name}",
"status.direct_indicator": "Mention private",
"status.edit": "Modificar",
"status.edited_x_times": "Modificate {count, plural, one {{count} tempore} other {{count} tempores}}",
"status.edited_x_times": "Modificate {count, plural, one {{count} vice} other {{count} vices}}",
"status.favourite": "Adder al favoritos",
"status.filter": "Filtrar iste message",
"status.hide": "Celar le message",
@ -376,20 +391,37 @@
"status.more": "Plus",
"status.mute_conversation": "Silentiar conversation",
"status.read_more": "Leger plus",
"status.reblogs.empty": "Necuno ha ancora impulsate iste message. Quando alcuno lo face, le impulsos apparera hic.",
"status.redraft": "Deler e reconciper",
"status.remove_bookmark": "Remover marcapagina",
"status.replied_to": "Respondite a {name}",
"status.reply": "Responder",
"status.replyAll": "Responder al discussion",
"status.report": "Signalar @{name}",
"status.sensitive_warning": "Contento sensibile",
"status.share": "Compartir",
"status.show_filter_reason": "Monstrar in omne caso",
"status.show_less": "Monstrar minus",
"status.show_less_all": "Monstrar minus pro totes",
"status.show_more": "Monstrar plus",
"status.show_more_all": "Monstrar plus pro totes",
"status.show_original": "Monstrar original",
"status.title.with_attachments": "{user} ha publicate {attachmentCount, plural, one {un annexo} other {{attachmentCount} annexos}}",
"status.translate": "Traducer",
"status.translated_from_with": "Traducite ab {lang} usante {provider}",
"status.uncached_media_warning": "Previsualisation non disponibile",
"status.unmute_conversation": "Non plus silentiar conversation",
"status.unpin": "Disfixar del profilo",
"subscribed_languages.lead": "Solmente le messages in le linguas seligite apparera in tu chronologias de initio e de listas post le cambiamento. Selige necun pro reciper messages in tote le linguas.",
"subscribed_languages.save": "Salveguardar le cambiamentos",
"subscribed_languages.target": "Cambiar le linguas subscribite pro {target}",
"tabs_bar.home": "Initio",
"tabs_bar.notifications": "Notificationes",
"timeline_hint.resources.statuses": "Messages ancian",
"trends.trending_now": "Ora in tendentias",
"upload_button.label": "Adde imagines, un video o un file de audio",
"upload_modal.choose_image": "Seliger un imagine",
"upload_modal.detect_text": "Deteger texto ab un pictura",
"upload_modal.detect_text": "Deteger texto de un imagine",
"video.close": "Clauder le video",
"video.download": "Discargar le file",
"video.fullscreen": "Schermo plen",

View file

@ -91,6 +91,9 @@
"audio.hide": "Celar audio",
"block_modal.show_less": "Monstrar minu",
"block_modal.show_more": "Monstrar plu",
"block_modal.they_cant_mention": "Ne posse mentionar ni sequer te.",
"block_modal.they_cant_see_posts": "Ne posse vider tui postas e inversi.",
"block_modal.they_will_know": "Va esser conscient que tu ha bloccat.",
"block_modal.title": "Bloccar usator?",
"block_modal.you_wont_see_mentions": "Tu ne va vider postas mentionant li usator.",
"boost_modal.combo": "Li proxim vez tu posse pressar {combo} por passar to-ci",
@ -206,6 +209,16 @@
"dismissable_banner.explore_tags": "Tis-ci es hashtags queles es popular che li social retage hodie. Hashtags usat de plu mult persones diferent es monstrat plu alt.",
"dismissable_banner.public_timeline": "Tis-ci es li max recent public postas de persones che li social retage quem gente che {domain} seque.",
"domain_block_modal.block": "Bloccar servitor",
"domain_block_modal.block_account_instead": "Altrimen, bloccar @{name}",
"domain_block_modal.they_can_interact_with_old_posts": "Persones de ti servitor posse interacter con tui old postas.",
"domain_block_modal.they_cant_follow": "Nequi de ti-ci servitor posse sequer te.",
"domain_pill.activitypub_like_language": "ActivityPub es li lingue usat de Mastodon por parlar con altri social retages.",
"domain_pill.server": "Servitor",
"domain_pill.their_handle": "Identificator:",
"domain_pill.their_server": "Su digital hem e omni su postas.",
"domain_pill.username": "Usator-nómine",
"domain_pill.whats_in_a_handle": "Ex quo consiste un identificator?",
"domain_pill.your_handle": "Tui identificator:",
"embed.instructions": "Inbedar ti-ci posta per copiar li code in infra.",
"embed.preview": "Vi qualmen it va aspecter:",
"emoji_button.activity": "Activitá",
@ -242,6 +255,7 @@
"empty_column.list": "Ancor ne hay quocunc in ti-ci liste. Quande membres de ti-ci liste publica nov postas, ili va aparir ci.",
"empty_column.lists": "Tu ancor have null listes. Quande tu crea un, it va aparir ci.",
"empty_column.mutes": "Tu ancor ha silentiat null usatores.",
"empty_column.notification_requests": "Omnicos clar! Hay necos ci. Nov notificationes va venir ci quande tu recive les secun tui parametres.",
"empty_column.notifications": "Tu have null notificationes. Quande altri persones interacte con te, tu va vider it ci.",
"empty_column.public": "Hay nullcos ci! Scri alquo publicmen, o manualmen seque usatores de altri servitores por plenar to-ci",
"error.unexpected_crash.explanation": "Pro un error in nor code o un problema de compatibilitá in li navigator, ti-ci págine ne posset esser monstrat correctmen.",
@ -272,6 +286,9 @@
"filter_modal.select_filter.subtitle": "Usar un existent categorie o crear nov",
"filter_modal.select_filter.title": "Filtrar ti-ci posta",
"filter_modal.title.status": "Filtrar un posta",
"filtered_notifications_banner.pending_requests": "Notificationes de {count, plural, =0 {nequi} one {un person} other {# persones}} quel tu possibilmen conosse",
"filtered_notifications_banner.private_mentions": "{count, plural, one {privat mention} other {privat mentiones}}",
"filtered_notifications_banner.title": "Filtrat notificationes",
"firehose.all": "Omno",
"firehose.local": "Ti-ci servitor",
"firehose.remote": "Altri servitores",
@ -400,6 +417,13 @@
"loading_indicator.label": "Cargant…",
"media_gallery.toggle_visible": "{number, plural, one {Celar image} other {Celar images}}",
"moved_to_account_banner.text": "Tui conto {disabledAccount} es actualmen desactivisat pro que tu movet te a {movedToAccount}.",
"mute_modal.hide_from_notifications": "Celar de notificationes",
"mute_modal.hide_options": "Celar optiones",
"mute_modal.indefinite": "Til quande yo dessilentia li usator",
"mute_modal.show_options": "Monstrar optiones",
"mute_modal.they_can_mention_and_follow": "Posse mentionar e sequer te, ma va esser ínvisibil a te.",
"mute_modal.they_wont_know": "Ne va esser conscient pri li silentation.",
"mute_modal.title": "Silentiar usator?",
"navigation_bar.about": "Information",
"navigation_bar.advanced_interface": "Aperter in li web-interfacie avansat",
"navigation_bar.blocks": "Bloccat usatores",
@ -435,14 +459,20 @@
"notification.own_poll": "Tui balotation ha finit",
"notification.poll": "Un balotation in quel tu votat ha finit",
"notification.reblog": "{name} boostat tui posta",
"notification.relationships_severance_event.learn_more": "Aprender plu",
"notification.status": "{name} just postat",
"notification.update": "{name} modificat un posta",
"notification_requests.accept": "Acceptar",
"notification_requests.dismiss": "Demisser",
"notification_requests.notifications_from": "Notificationes de {name}",
"notification_requests.title": "Filtrat notificationes",
"notifications.clear": "Aclarar notificationes",
"notifications.clear_confirmation": "Vole tu vermen permanentmen aclarar omni tui notificationes?",
"notifications.column_settings.admin.report": "Nov raportas:",
"notifications.column_settings.admin.sign_up": "Nov registrationes:",
"notifications.column_settings.alert": "Notificationes sur li computator",
"notifications.column_settings.favourite": "Favorites:",
"notifications.column_settings.filter_bar.advanced": "Monstrar omni categories",
"notifications.column_settings.follow": "Nov sequitores:",
"notifications.column_settings.follow_request": "Nov petitiones de sequer:",
"notifications.column_settings.mention": "Mentiones:",
@ -468,6 +498,15 @@
"notifications.permission_denied": "Notificationes sur li computator es índisponibil pro que on ha previamen rejectet un petition por navigator-permissiones",
"notifications.permission_denied_alert": "Notificationes sur li computator ne posse esser activisat, pro que navigator-permission ha esset previamen rejectet",
"notifications.permission_required": "Notificationes sur li computator es índisponibil pro que li besonat permission ne ha esset dat.",
"notifications.policy.filter_new_accounts.hint": "Creat durant li passat {days, plural, one {un die} other {# dies}}",
"notifications.policy.filter_new_accounts_title": "Nov contos",
"notifications.policy.filter_not_followers_hint": "Includente tis qui ha sequet te minu quam {days, plural, one {un die} other {# dies}}",
"notifications.policy.filter_not_followers_title": "Persones qui ne seque te",
"notifications.policy.filter_not_following_hint": "Til quande tu manualmen aproba",
"notifications.policy.filter_not_following_title": "Persones queles tu ne seque",
"notifications.policy.filter_private_mentions_hint": "Filtrat except si it es un response a tui propri mention o si tu seque li missor",
"notifications.policy.filter_private_mentions_title": "Ínsolicitat privat mentiones",
"notifications.policy.title": "Filtrar notificationes de…",
"notifications_permission_banner.enable": "Activisar notificationes sur li computator",
"notifications_permission_banner.how_to_control": "Por reciver notificationes quande Mastodon ne es apert, activisa notificationes sur li computator. Tu posse decider precisimen quel species de interactiones genera notificationes per li buton {icon} in-supra quande ili es activisat.",
"notifications_permission_banner.title": "Nequande preterlassa quocunc",
@ -644,9 +683,11 @@
"status.direct": "Privatmen mentionar @{name}",
"status.direct_indicator": "Privat mention",
"status.edit": "Modificar",
"status.edited": "Ultimmen actualisat ye {date}",
"status.edited_x_times": "Modificat {count, plural, one {{count} vez} other {{count} vezes}}",
"status.embed": "Inbedar",
"status.favourite": "Favoritisar",
"status.favourites": "{count, plural, one {favorit} other {favorites}}",
"status.filter": "Filtrar ti-ci posta",
"status.filtered": "Filtrat",
"status.hide": "Celar posta",

View file

@ -174,7 +174,7 @@
"confirmations.delete.confirm": "Elimina",
"confirmations.delete.message": "Sei sicuro di voler eliminare questo post?",
"confirmations.delete_list.confirm": "Elimina",
"confirmations.delete_list.message": "Sei sicuro di voler eliminare permanentemente questa lista?",
"confirmations.delete_list.message": "Sei sicuro/a di voler eliminare permanentemente questo elenco?",
"confirmations.discard_edit_media.confirm": "Scarta",
"confirmations.discard_edit_media.message": "Hai delle modifiche non salvate alla descrizione o anteprima del media, scartarle comunque?",
"confirmations.domain_block.confirm": "Blocca il server",
@ -263,8 +263,8 @@
"empty_column.followed_tags": "Non hai ancora seguito alcun hashtag. Quando lo farai, appariranno qui.",
"empty_column.hashtag": "Non c'è ancora nulla in questo hashtag.",
"empty_column.home": "La cronologia della tua home è vuota! Segui altre persone per riempirla. {suggestions}",
"empty_column.list": "Non c'è ancora nulla in questa lista. Quando i membri di questa lista pubblicheranno dei nuovi post, appariranno qui.",
"empty_column.lists": "Non hai ancora alcuna lista. Quando ne creerai una, apparirà qui.",
"empty_column.list": "Non c'è ancora nulla in questo elenco. Quando i membri di questo elenco pubblicheranno nuovi post, appariranno qui.",
"empty_column.lists": "Non hai ancora nessun elenco. Quando ne creerai uno, apparirà qui.",
"empty_column.mutes": "Non hai ancora silenziato alcun utente.",
"empty_column.notification_requests": "Tutto chiaro! Non c'è niente qui. Quando ricevi nuove notifiche, verranno visualizzate qui in base alle tue impostazioni.",
"empty_column.notifications": "Non hai ancora nessuna notifica. Quando altre persone interagiranno con te, le vedrai qui.",
@ -410,20 +410,20 @@
"limited_account_hint.action": "Mostra comunque il profilo",
"limited_account_hint.title": "Questo profilo è stato nascosto dai moderatori di {domain}.",
"link_preview.author": "Di {name}",
"lists.account.add": "Aggiungi alla lista",
"lists.account.remove": "Togli dalla lista",
"lists.delete": "Elimina lista",
"lists.edit": "Modifica lista",
"lists.account.add": "Aggiungi all'elenco",
"lists.account.remove": "Rimuovi dall'elenco",
"lists.delete": "Elimina elenco",
"lists.edit": "Modifica elenco",
"lists.edit.submit": "Cambia il titolo",
"lists.exclusive": "Nascondi questi post dalla home",
"lists.new.create": "Aggiungi lista",
"lists.new.title_placeholder": "Titolo della nuova lista",
"lists.new.title_placeholder": "Titolo del nuovo elenco",
"lists.replies_policy.followed": "Qualsiasi utente seguito",
"lists.replies_policy.list": "Membri della lista",
"lists.replies_policy.list": "Membri dell'elenco",
"lists.replies_policy.none": "Nessuno",
"lists.replies_policy.title": "Mostra risposte a:",
"lists.search": "Cerca tra le persone che segui",
"lists.subheading": "Le tue liste",
"lists.subheading": "I tuoi elenchi",
"load_pending": "{count, plural, one {# nuovo oggetto} other {# nuovi oggetti}}",
"loading_indicator.label": "Caricamento…",
"media_gallery.toggle_visible": "{number, plural, one {Nascondi immagine} other {Nascondi immagini}}",

View file

@ -304,6 +304,19 @@
"domain_block_modal.title": "ドメインをブロックしますか?",
"domain_block_modal.you_will_lose_followers": "このサーバーのフォロワーはすべてフォロー解除されます。",
"domain_block_modal.you_wont_see_posts": "このサーバーのユーザーからの投稿や通知が閲覧できなくなります。",
"domain_pill.activitypub_lets_connect": "Mastodonからほかのソーシャルアプリのユーザーへ、そのまた別のアプリのユーザーへと、それぞれが互いにつながり関わり合うことをこのActivityPubの仕組みが実現しています。",
"domain_pill.activitypub_like_language": "ActivityPubとは、Mastodonがほかのサーバーと会話をするときにしゃべる「言葉」のようなものです。",
"domain_pill.server": "サーバー",
"domain_pill.their_handle": "このユーザーのユーザーID:",
"domain_pill.their_server": "ユーザーの仮想の住所です。そのユーザーIDによるすべての投稿を保持しています。",
"domain_pill.their_username": "ユーザーを識別する名前です。ユーザー名はひとつのサーバー内においては唯一無二の名前ですが、ほかのサーバーには同名のユーザーがいることもあります。",
"domain_pill.username": "ユーザー名",
"domain_pill.whats_in_a_handle": "ユーザーIDについて",
"domain_pill.who_they_are": "そのユーザーが「誰であるか」「どこに住んでいるか」はユーザーIDから知ることができます。これにより<button>いくつものActivityPub対応のプラットフォーム</button>の集まりからなるネットワークを介してそれぞれのユーザーと関わり合うことができます。",
"domain_pill.who_you_are": "ほかのユーザーはあなたが「誰であるか」「どこに住んでいるか」をユーザーIDから認識でき、これにより<button>いくつものActivityPub対応のプラットフォーム</button>の集まりからなるネットワークを介してあなたと関わり合うことができます。",
"domain_pill.your_handle": "あなたのユーザーID:",
"domain_pill.your_server": "あなたの仮想の住所です。投稿した内容はすべてここに保持されます。もし今いるサーバーが気に入っていない場合は、フォロワーを引き継いで別のサーバーに引っ越すこともできます。",
"domain_pill.your_username": "あなたを識別する名前です。ユーザー名はひとつのサーバー内においては唯一無二の名前ですが、ほかのサーバーには同名のユーザーがいることもあります。",
"embed.instructions": "下記のコードをコピーしてウェブサイトに埋め込みます。",
"embed.preview": "表示例:",
"emoji_button.activity": "活動",

View file

@ -457,6 +457,7 @@
"notification.own_poll": "Tu anketa eskapo",
"notification.poll": "Anketa en ke votates eskapo",
"notification.reblog": "{name} repartajo tu publikasyon",
"notification.relationships_severance_event.learn_more": "Ambezate mas",
"notification.status": "{name} publiko algo",
"notification.update": "{name} edito una publikasyon",
"notification_requests.accept": "Acheta",
@ -469,6 +470,8 @@
"notifications.column_settings.admin.sign_up": "Muevas enrejistrasyones:",
"notifications.column_settings.alert": "Avizos de ensimameza",
"notifications.column_settings.favourite": "Te plazen:",
"notifications.column_settings.filter_bar.advanced": "Amostra todas las kategorias",
"notifications.column_settings.filter_bar.category": "Vara de filtrado rapido",
"notifications.column_settings.follow": "Muevos suivantes:",
"notifications.column_settings.follow_request": "Muevas solisitudes de segimiento:",
"notifications.column_settings.mention": "Enmentaduras:",

View file

@ -89,6 +89,14 @@
"announcement.announcement": "Объявление",
"attachments_list.unprocessed": "(не обработан)",
"audio.hide": "Скрыть аудио",
"block_modal.remote_users_caveat": "Мы попросим сервер {domain} уважать ваше решение. Однако, соблюдение требований не гарантировано, поскольку некоторые серверы могут работать с блокировками по-разному. Публичные записи по-прежнему могут быть видны неавторизованным пользователям.",
"block_modal.show_less": "Показать меньше",
"block_modal.show_more": "Показать больше",
"block_modal.they_cant_mention": "Он не может упоминать или подписываться на вас.",
"block_modal.they_cant_see_posts": "Он не может видеть ваши сообщения, и вы не увидите его.",
"block_modal.they_will_know": "Он может видеть, что он заблокирован.",
"block_modal.title": "Заблокировать пользователя?",
"block_modal.you_wont_see_mentions": "Вы не увидите записи, которые упоминают его.",
"boost_modal.combo": "{combo}, чтобы пропустить это в следующий раз",
"bundle_column_error.copy_stacktrace": "Скопировать отчет об ошибке",
"bundle_column_error.error.body": "Запрошенная страница не может быть отображена. Это может быть вызвано ошибкой в нашем коде или проблемой совместимости браузера.",
@ -169,6 +177,7 @@
"confirmations.delete_list.message": "Вы действительно хотите навсегда удалить этот список?",
"confirmations.discard_edit_media.confirm": "Отменить",
"confirmations.discard_edit_media.message": "У вас есть несохранённые изменения описания мультимедиа или предпросмотра, отменить их?",
"confirmations.domain_block.confirm": "Заблокировать сервер",
"confirmations.domain_block.message": "Вы точно уверены, что хотите заблокировать {domain} полностью? В большинстве случаев нескольких блокировок и игнорирований вполне достаточно. Вы перестанете видеть публичную ленту и уведомления оттуда. Ваши подписчики из этого домена будут удалены.",
"confirmations.edit.confirm": "Редактировать",
"confirmations.edit.message": "В данный момент, редактирование перезапишет составляемое вами сообщение. Вы уверены, что хотите продолжить?",
@ -200,6 +209,27 @@
"dismissable_banner.explore_statuses": "Эти сообщения со связанных серверов сети сейчас набирают популярность.",
"dismissable_banner.explore_tags": "Эти хэштеги привлекают людей на этом и других серверах децентрализованной сети прямо сейчас.",
"dismissable_banner.public_timeline": "Это самые последние публичные сообщения от людей в социальной сети, за которыми подписались пользователи {domain}.",
"domain_block_modal.block": "Заблокировать сервер",
"domain_block_modal.block_account_instead": "Заблокировать @{name} вместо",
"domain_block_modal.they_can_interact_with_old_posts": "Люди с этого сервера могут взаимодействовать с вашими старыми записями.",
"domain_block_modal.they_cant_follow": "Никто из этого сервера не может подписываться на вас.",
"domain_block_modal.they_wont_know": "Он не будет знать, что его заблокировали.",
"domain_block_modal.title": "Заблокировать домен?",
"domain_block_modal.you_will_lose_followers": "Все ваши подписчики с этого сервера будут удалены.",
"domain_block_modal.you_wont_see_posts": "Вы не будете видеть записи или уведомления от пользователей на этом сервере.",
"domain_pill.activitypub_lets_connect": "Это позволяет вам общаться и взаимодействовать с людьми не только на Mastodon, но и в различных социальных приложениях.",
"domain_pill.activitypub_like_language": "ActivityPub как язык Mastodon говорит с другими социальными сетями.",
"domain_pill.server": "Сервер",
"domain_pill.their_handle": "Его бейдж:",
"domain_pill.their_server": "Цифровой дом, где находятся все записи.",
"domain_pill.their_username": "Уникальный идентификатор на сервере. Возможно найти пользователей с одним и тем же именем пользователя на разных серверах.",
"domain_pill.username": "Имя пользователя",
"domain_pill.whats_in_a_handle": "Что такое бейдж?",
"domain_pill.who_they_are": "Поскольку бейджи говорят о том, кто и где находится, вы можете взаимодействовать с людьми в социальной сети <button>платформ, работающих на платформе ActivityPub</button>.",
"domain_pill.who_you_are": "Поскольку ваш бейдж говорит о том, кто вы и где находитесь, люди могут взаимодействовать с вами через социальную сеть <button>платформ, работающих на платформе ActivityPub</button>.",
"domain_pill.your_handle": "Ваш бейдж:",
"domain_pill.your_server": "Сервер, где живут все ваши посты. Этот не нравится? Поменяй сервер в любое время вместе со своими подписчиками.",
"domain_pill.your_username": "Ваш уникальный идентификатор на этом сервере. Вы можете найти пользователей с одним именем пользователя на разных серверах.",
"embed.instructions": "Встройте этот пост на свой сайт, скопировав следующий код:",
"embed.preview": "Так это будет выглядеть:",
"emoji_button.activity": "Занятия",
@ -236,6 +266,7 @@
"empty_column.list": "В этом списке пока ничего нет.",
"empty_column.lists": "У вас ещё нет списков. Созданные вами списки будут показаны здесь.",
"empty_column.mutes": "Вы ещё никого не добавляли в список игнорируемых.",
"empty_column.notification_requests": "Здесь ничего нет! Когда вы получите новые уведомления, они здесь появятся согласно вашим настройкам.",
"empty_column.notifications": "У вас пока нет уведомлений. Взаимодействуйте с другими, чтобы завести разговор.",
"empty_column.public": "Здесь ничего нет! Опубликуйте что-нибудь или подпишитесь на пользователей с других узлов, чтобы заполнить ленту",
"error.unexpected_crash.explanation": "Из-за несовместимого браузера или ошибки в нашем коде, эта страница не может быть корректно отображена.",
@ -266,13 +297,22 @@
"filter_modal.select_filter.subtitle": "Используйте существующую категорию или создайте новую",
"filter_modal.select_filter.title": "Фильтровать этот пост",
"filter_modal.title.status": "Фильтровать пост",
"filtered_notifications_banner.pending_requests": "Уведомления от {count, plural, =0 {никого} one {# человека} other {# других людей, с кем вы можете быть знакомы}}",
"filtered_notifications_banner.private_mentions": "{count, plural, one {личное упоминание} other {личные упоминания}}",
"filtered_notifications_banner.title": "Отфильтрованные уведомления",
"firehose.all": "Все",
"firehose.local": "Текущий сервер",
"firehose.remote": "Другие серверы",
"follow_request.authorize": "Авторизовать",
"follow_request.reject": "Отказать",
"follow_requests.unlocked_explanation": "Хотя ваша учетная запись не закрыта, команда {domain} подумала, что вы захотите просмотреть запросы от этих учетных записей вручную.",
"follow_suggestions.curated_suggestion": "Выбор администрации",
"follow_suggestions.dismiss": "Больше не показывать",
"follow_suggestions.hints.featured": "Этот профиль был вручную выбран командой {domain}.",
"follow_suggestions.hints.friends_of_friends": "Этот профиль популярен среди людей, на которых вы подписаны.",
"follow_suggestions.hints.most_followed": "Этот профиль один из самых отслеживаемых на {domain}.",
"follow_suggestions.hints.most_interactions": "Этот профиль в последнее время привлекает много внимания на {domain}.",
"follow_suggestions.hints.similar_to_recently_followed": "Этот профиль похож на другие профили, на которые вы подписывались в последнее время.",
"follow_suggestions.personalized_suggestion": "Персонализированное предложение",
"follow_suggestions.popular_suggestion": "Популярное предложение",
"follow_suggestions.view_all": "Посмотреть все",
@ -388,6 +428,15 @@
"loading_indicator.label": "Загрузка…",
"media_gallery.toggle_visible": "Показать/скрыть {number, plural, =1 {изображение} other {изображения}}",
"moved_to_account_banner.text": "Ваша учетная запись {disabledAccount} в настоящее время заморожена, потому что вы переехали на {movedToAccount}.",
"mute_modal.hide_from_notifications": "Скрыть из уведомлений",
"mute_modal.hide_options": "Скрыть параметры",
"mute_modal.indefinite": "Пока я не разблокирую их",
"mute_modal.show_options": "Показать опции",
"mute_modal.they_can_mention_and_follow": "Они могут упоминать и следить за вами, но вы не будете их видеть.",
"mute_modal.they_wont_know": "Они не будут знать, что их заглушили.",
"mute_modal.title": "Заглушить пользователя?",
"mute_modal.you_wont_see_mentions": "Вы не увидите постов, которые их упоминают.",
"mute_modal.you_wont_see_posts": "Они по-прежнему смогут видеть ваши посты, но вы не сможете видеть их посты.",
"navigation_bar.about": "О проекте",
"navigation_bar.advanced_interface": "Включить многоколоночный интерфейс",
"navigation_bar.blocks": "Заблокированные пользователи",
@ -423,8 +472,17 @@
"notification.own_poll": "Ваш опрос закончился",
"notification.poll": "Опрос, в котором вы приняли участие, завершился",
"notification.reblog": "{name} продвинул(а) ваш пост",
"notification.relationships_severance_event": "Потеряно соединение с {name}",
"notification.relationships_severance_event.account_suspension": "Администратор {from} заблокировал {target}, что означает, что вы больше не сможете получать обновления от них или взаймодествовать с ними.",
"notification.relationships_severance_event.domain_block": "Администратор {from} заблокировал {target} включая {followersCount} ваших подписчиков и {followingCount, plural, one {# аккаунт} few {# аккаунта} other {# аккаунтов}}, на которые вы подписаны.",
"notification.relationships_severance_event.learn_more": "Узнать больше",
"notification.relationships_severance_event.user_domain_block": "Вы заблокировали {target} включая {followersCount} ваших подписчиков и {followingCount, plural, one {# аккаунт} few {# аккаунта} other {# аккаунтов}}, на которые вы подписаны.",
"notification.status": "{name} только что запостил",
"notification.update": "{name} изменил(а) пост",
"notification_requests.accept": "Принять",
"notification_requests.dismiss": "Отклонить",
"notification_requests.notifications_from": "Уведомления от {name}",
"notification_requests.title": "Отфильтрованные уведомления",
"notifications.clear": "Очистить уведомления",
"notifications.clear_confirmation": "Вы уверены, что хотите очистить все уведомления?",
"notifications.column_settings.admin.report": "Новые жалобы:",

View file

@ -220,8 +220,15 @@
"domain_pill.activitypub_lets_connect": "Det låter dig ansluta och interagera med människor inte bara på Mastodon, men även på andra sociala appar.",
"domain_pill.activitypub_like_language": "ActivityPub är som språket Mastodon talar med andra sociala nätverk.",
"domain_pill.server": "Server",
"domain_pill.their_handle": "Deras handtag:",
"domain_pill.their_server": "Deras digitala hem, där alla deras tjänster bor.",
"domain_pill.their_username": "Deras unika identifierare på deras server. Det är möjligt att hitta användare med samma användarnamn på olika servrar.",
"domain_pill.username": "Användarnamn",
"domain_pill.whats_in_a_handle": "Vad finns i ett handtag?",
"domain_pill.who_they_are": "Eftersom handtag säger vem någon är och var de är, kan du interagera med människor på det sociala nätet av <button>ActivityPub-drivna plattformar</button>.",
"domain_pill.who_you_are": "Eftersom handtag säger vem någon är och var de är, kan människor interagera med dig på det sociala nätet av <button>ActivityPub-drivna plattformar</button>.",
"domain_pill.your_handle": "Ditt handtag:",
"domain_pill.your_server": "Ditt digitala hem, där alla dina inlägg bor. Gillar du inte just denna? Byt server när som helst och ta med dina anhängare också.",
"domain_pill.your_username": "Din unika identifierare på denna server. Det är möjligt att hitta användare med samma användarnamn på olika servrar.",
"embed.instructions": "Bädda in detta inlägg på din webbplats genom att kopiera koden nedan.",
"embed.preview": "Så här kommer det att se ut:",
@ -259,6 +266,7 @@
"empty_column.list": "Det finns inget i denna lista än. När listmedlemmar publicerar nya inlägg kommer de synas här.",
"empty_column.lists": "Du har inga listor än. När skapar en kommer den dyka upp här.",
"empty_column.mutes": "Du har ännu inte tystat några användare.",
"empty_column.notification_requests": "Allt klart! Det finns inget mer här. När du får nya meddelanden visas de här enligt dina inställningar.",
"empty_column.notifications": "Du har inga meddelanden än. Interagera med andra för att starta konversationen.",
"empty_column.public": "Det finns inget här! Skriv något offentligt, eller följ manuellt användarna från andra instanser för att fylla på det",
"error.unexpected_crash.explanation": "På grund av en bugg i vår kod eller kompatiblitetsproblem i webbläsaren kan den här sidan inte visas korrekt.",
@ -289,6 +297,9 @@
"filter_modal.select_filter.subtitle": "Använd en befintlig kategori eller skapa en ny",
"filter_modal.select_filter.title": "Filtrera detta inlägg",
"filter_modal.title.status": "Filtrera ett inlägg",
"filtered_notifications_banner.pending_requests": "Aviseringar från {count, plural, =0 {ingen} one {en person} other {# personer}} du kanske känner",
"filtered_notifications_banner.private_mentions": "{count, plural, one {privat omnämnande} other {privat omnämnande}}",
"filtered_notifications_banner.title": "Filtrerade aviseringar",
"firehose.all": "Allt",
"firehose.local": "Denna server",
"firehose.remote": "Andra servrar",
@ -417,7 +428,9 @@
"loading_indicator.label": "Laddar…",
"media_gallery.toggle_visible": "Växla synlighet",
"moved_to_account_banner.text": "Ditt konto {disabledAccount} är för närvarande inaktiverat eftersom du flyttat till {movedToAccount}.",
"mute_modal.hide_from_notifications": "Dölj från aviseringslistan",
"mute_modal.hide_options": "Dölj alternativ",
"mute_modal.indefinite": "Tills jag avtystar dem",
"mute_modal.show_options": "Visa alternativ",
"mute_modal.they_can_mention_and_follow": "De kan nämna och följa dig, men du ser dem inte.",
"mute_modal.they_wont_know": "De vet inte att de har blivit tysta.",
@ -459,6 +472,9 @@
"notification.own_poll": "Din röstning har avslutats",
"notification.poll": "En omröstning du röstat i har avslutats",
"notification.reblog": "{name} boostade ditt inlägg",
"notification.relationships_severance_event": "Förlorade kontakter med {name}",
"notification.relationships_severance_event.account_suspension": "En administratör från {from} har stängt av {target}, vilket innebär att du inte längre kan ta emot uppdateringar från dem eller interagera med dem.",
"notification.relationships_severance_event.domain_block": "En administratör från {from} har blockerat {target}, inklusive {followersCount} av dina följare och {followingCount, plural, one {# konto} other {# konton}} du följer.",
"notification.relationships_severance_event.learn_more": "Läs mer",
"notification.status": "{name} publicerade just ett inlägg",
"notification.update": "{name} redigerade ett inlägg",

View file

@ -730,7 +730,7 @@
"status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。",
"status.redraft": "刪除並重新編輯",
"status.remove_bookmark": "移除書籤",
"status.replied_to": "回覆 {name}",
"status.replied_to": "回覆 {name}",
"status.reply": "回覆",
"status.replyAll": "回覆討論串",
"status.report": "檢舉 @{name}",

View file

@ -1,15 +1,4 @@
export type StatusVisibility =
| 'public'
| 'unlisted'
| 'private'
| 'direct'
| 'public_unlisted'
| 'login'
| 'mutual'
| 'circle'
| 'personal'
| 'reply'
| 'limited';
export type { StatusVisibility } from 'mastodon/api_types/statuses';
// Temporary until we type it correctly
export type Status = Immutable.Map<string, unknown>;

View file

@ -30,7 +30,8 @@ function isActionWithmaybeAlertParams(
return isAction(action);
}
export const errorsMiddleware: Middleware<Record<string, never>, RootState> =
// eslint-disable-next-line @typescript-eslint/ban-types -- we need to use `{}` here to ensure the dispatch types can be merged
export const errorsMiddleware: Middleware<{}, RootState> =
({ dispatch }) =>
(next) =>
(action) => {

View file

@ -51,7 +51,8 @@ const play = (audio: HTMLAudioElement) => {
};
export const soundsMiddleware = (): Middleware<
Record<string, never>,
// eslint-disable-next-line @typescript-eslint/ban-types -- we need to use `{}` here to ensure the dispatch types can be merged
{},
RootState
> => {
const soundCache: Record<string, HTMLAudioElement> = {};

View file

@ -70,10 +70,10 @@ export function roundTo10(num: number): number {
return Math.round(num * 0.1) / 0.1;
}
export function toCappedNumber(num: string): string {
if (parseInt(num) > 99) {
return '99+';
export function toCappedNumber(num: number, max = 99): string {
if (num > max) {
return `${max}+`;
} else {
return num;
return num.toString();
}
}

View file

@ -80,6 +80,7 @@ html {
}
.search__input,
.search__popout,
.setting-text,
.report-dialog-modal__textarea,
.audio-player {
@ -439,7 +440,8 @@ html {
.directory__tag > div,
.card > a,
.page-header,
.compose-form .compose-form__warning {
.compose-form,
.compose-form__warning {
box-shadow: none;
}
@ -475,12 +477,17 @@ html {
color: $white;
}
.compose-form .spoiler-input__input {
.compose-form,
.spoiler-input__input,
.search__input,
.search__popout {
color: lighten($ui-highlight-color, 8%);
}
.compose-form .autosuggest-textarea__textarea,
.compose-form__highlightable,
.search__input,
.search__popout,
.poll__option input[type='text'] {
background: darken($ui-base-color, 10%);
}

View file

@ -10534,9 +10534,10 @@ noscript {
}
.filtered-notifications-banner__badge {
background-color: $highlight-text-color;
background: $ui-button-background-color;
border-radius: 4px;
padding: 1px 6px;
color: $white;
}
}

View file

@ -163,7 +163,10 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
valid = !Admin::NgWord.reject?("#{@params[:spoiler_text]}\n#{@params[:text]}", uri: @params[:uri], target_type: :status, public: @status_parser.distributable_visibility?, stranger: mention_to_local_stranger? || reference_to_local_stranger?) if valid
valid = !Admin::NgWord.hashtag_reject?(@tags.size, uri: @params[:uri], target_type: :status, public: @status_parser.distributable_visibility?, text: "#{@params[:spoiler_text]}\n#{@params[:text]}") if valid
valid = !Admin::NgWord.mention_reject?(@raw_mention_uris.size, uri: @params[:uri], target_type: :status, public: @status_parser.distributable_visibility?, text: "#{@params[:spoiler_text]}\n#{@params[:text]}") if valid
valid = !Admin::NgWord.stranger_mention_reject_with_count?(@raw_mention_uris.size, uri: @params[:uri], target_type: :status, public: @status_parser.distributable_visibility?, text: "#{@params[:spoiler_text]}\n#{@params[:text]}") if valid && (mention_to_local_stranger? || reference_to_local_stranger?)
if valid && (mention_to_local_stranger? || reference_to_local_stranger?)
valid = !Admin::NgWord.stranger_mention_reject_with_count?(@raw_mention_uris.size, uri: @params[:uri], target_type: :status, public: @status_parser.distributable_visibility?,
text: "#{@params[:spoiler_text]}\n#{@params[:text]}")
end
valid = false if valid && Setting.block_unfollow_account_mention && (mention_to_local_stranger? || reference_to_local_stranger?) && !local_following_sender?
valid

View file

@ -469,10 +469,10 @@ class FeedManager
# @param [List] list
# @return [Boolean]
def filter_from_list?(status, list)
if status.reply? && status.in_reply_to_account_id != status.account_id
should_filter = status.in_reply_to_account_id != list.account_id
should_filter &&= !list.show_followed?
should_filter &&= !(list.show_list? && ListAccount.exists?(list_id: list.id, account_id: status.in_reply_to_account_id))
if status.reply? && status.in_reply_to_account_id != status.account_id # Status is a reply to account other than status account
should_filter = status.in_reply_to_account_id != list.account_id # Status replies to account id other than list account
should_filter &&= !list.show_followed? # List show_followed? is false
should_filter &&= !(list.show_list? && ListAccount.exists?(list_id: list.id, account_id: status.in_reply_to_account_id)) # If show_list? true, check for a ListAccount with list and reply to account
return !!should_filter
end
@ -487,7 +487,11 @@ class FeedManager
# @param [Hash] crutches
# @return [Boolean]
def filter_from_tags?(status, receiver_id, crutches)
receiver_id == status.account_id || ((crutches[:active_mentions][status.id] || []) + [status.account_id]).any? { |target_account_id| crutches[:blocking][target_account_id] || crutches[:muting][target_account_id] } || crutches[:blocked_by][status.account_id] || crutches[:domain_blocking][status.account.domain]
receiver_id == status.account_id || # Receiver is status account?
((crutches[:active_mentions][status.id] || []) + [status.account_id]) # For mentioned accounts or status account:
.any? { |target_account_id| crutches[:blocking][target_account_id] || crutches[:muting][target_account_id] } || # - Target account is muted or blocked?
crutches[:blocked_by][status.account_id] || # Blocked by status account?
crutches[:domain_blocking][status.account.domain] # Blocking domain of status account?
end
# Adds a status to an account's feed, returning true if a status was

View file

@ -15,4 +15,6 @@ class UserIp < ApplicationRecord
self.primary_key = :user_id
belongs_to :user
scope :by_latest_used, -> { order(used_at: :desc) }
end

View file

@ -56,6 +56,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer
accounts: {
max_featured_tags: FeaturedTag::LIMIT,
max_pinned_statuses: StatusPinValidator::PIN_LIMIT,
},
statuses: {

View file

@ -3,6 +3,8 @@
class REST::MediaAttachmentSerializer < ActiveModel::Serializer
include RoutingHelper
# Please update `app/javascript/mastodon/api_types/media_attachments.ts` when making changes to the attributes
attributes :id, :type, :url, :preview_url,
:remote_url, :preview_remote_url, :text_url, :meta,
:description, :blurhash

View file

@ -9,8 +9,8 @@ class REST::NotificationPolicySerializer < ActiveModel::Serializer
def summary
{
pending_requests_count: object.pending_requests_count.to_s,
pending_notifications_count: object.pending_notifications_count.to_s,
pending_requests_count: object.pending_requests_count.to_i,
pending_notifications_count: object.pending_notifications_count.to_i,
}
end
end

View file

@ -1,6 +1,8 @@
# frozen_string_literal: true
class REST::PollSerializer < ActiveModel::Serializer
# Please update `app/javascript/mastodon/api_types/polls.ts` when making changes to the attributes
attributes :id, :expires_at, :expired,
:multiple, :votes_count, :voters_count

View file

@ -3,6 +3,8 @@
class REST::StatusSerializer < ActiveModel::Serializer
include FormattingHelper
# Please update `app/javascript/mastodon/api_types/statuses.ts` when making changes to the attributes
attributes :id, :created_at, :in_reply_to_id, :in_reply_to_account_id,
:sensitive, :spoiler_text, :visibility, :visibility_ex, :limited_scope, :language,
:uri, :url, :replies_count, :reblogs_count, :searchability, :markdown,

View file

@ -10,7 +10,7 @@ class BulkImportRowService
when :following, :blocking, :muting, :lists
target_acct = @data['acct']
target_domain = domain(target_acct)
@target_account = stoplight_wrap_request(target_domain) { ResolveAccountService.new.call(target_acct, { check_delivery_availability: true }) }
@target_account = stoplight_wrapper(target_domain).run { ResolveAccountService.new.call(target_acct, { check_delivery_availability: true }) }
return false if @target_account.nil?
when :bookmarks
target_uri = @data['uri']
@ -18,7 +18,7 @@ class BulkImportRowService
@target_status = ActivityPub::TagManager.instance.uri_to_resource(target_uri, Status)
return false if @target_status.nil? && ActivityPub::TagManager.instance.local_uri?(target_uri)
@target_status ||= stoplight_wrap_request(target_domain) { ActivityPub::FetchRemoteStatusService.new.call(target_uri) }
@target_status ||= stoplight_wrapper(target_domain).run { ActivityPub::FetchRemoteStatusService.new.call(target_uri) }
return false if @target_status.nil?
end
@ -51,16 +51,15 @@ class BulkImportRowService
TagManager.instance.local_domain?(domain) ? nil : TagManager.instance.normalize_domain(domain)
end
def stoplight_wrap_request(domain, &block)
def stoplight_wrapper(domain)
if domain.present?
Stoplight("source:#{domain}", &block)
Stoplight("source:#{domain}")
.with_fallback { nil }
.with_threshold(1)
.with_cool_off_time(5.minutes.seconds)
.with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) }
.run
else
yield
Stoplight('domain-blank')
end
end
end

View file

@ -197,7 +197,8 @@ class PostStatusService < BaseService
end
def postprocess_status!
@account.user.update!(settings_attributes: { default_privacy: @options[:visibility] }) if @account.user&.setting_stay_privacy && !@status.reply? && %i(public public_unlisted login unlisted private).include?(@status.visibility.to_sym) && @status.visibility.to_s != @account.user&.setting_default_privacy && !@dtl
@account.user.update!(settings_attributes: { default_privacy: @options[:visibility] }) if @account.user&.setting_stay_privacy && !@status.reply? && %i(public public_unlisted login unlisted
private).include?(@status.visibility.to_sym) && @status.visibility.to_s != @account.user&.setting_default_privacy && !@dtl
process_hashtags_service.call(@status)
Trends.tags.register(@status)

View file

@ -62,13 +62,7 @@
%td
%time.formatted{ datetime: account.created_at.iso8601, title: l(account.created_at) }= l account.created_at
%td
- recent_ips = account.user.ips.order(used_at: :desc).to_a
- recent_ips.each_with_index do |recent_ip, i|
%tr
- if i.zero?
%th{ rowspan: recent_ips.size }= t('admin.accounts.most_recent_ip')
%td= recent_ip.ip
%td= table_link_to 'search', t('admin.accounts.search_same_ip'), admin_accounts_path(ip: recent_ip.ip)
= render partial: 'admin/accounts/user_ip', collection: account.user.ips.by_latest_used
%tr
%th= t('admin.accounts.most_recent_activity')
%td

View file

@ -0,0 +1,5 @@
%tr
- if user_ip_iteration.first?
%th{ rowspan: user_ip_iteration.size }= t('admin.accounts.most_recent_ip')
%td= user_ip.ip
%td= table_link_to 'search', t('admin.accounts.search_same_ip'), admin_accounts_path(ip: user_ip.ip)

View file

@ -59,7 +59,7 @@ class ActivityPub::DeliveryWorker
end
def perform_request
light = Stoplight(@inbox_url) do
stoplight_wrapper.run do
request_pool.with(@host) do |http_client|
build_request(http_client).perform do |response|
raise Mastodon::UnexpectedResponseError, response unless response_successful?(response) || response_error_unsalvageable?(response)
@ -68,10 +68,12 @@ class ActivityPub::DeliveryWorker
end
end
end
end
light.with_threshold(STOPLIGHT_FAILURE_THRESHOLD)
.with_cool_off_time(STOPLIGHT_COOLDOWN)
.run
def stoplight_wrapper
Stoplight(@inbox_url)
.with_threshold(STOPLIGHT_FAILURE_THRESHOLD)
.with_cool_off_time(STOPLIGHT_COOLDOWN)
end
def failure_tracker

View file

@ -11,7 +11,7 @@ class Import::RelationshipWorker
def perform(account_id, target_account_uri, relationship, options)
from_account = Account.find(account_id)
target_domain = domain(target_account_uri)
target_account = stoplight_wrap_request(target_domain) { ResolveAccountService.new.call(target_account_uri, { check_delivery_availability: true }) }
target_account = stoplight_wrapper(target_domain).run { ResolveAccountService.new.call(target_account_uri, { check_delivery_availability: true }) }
options.symbolize_keys!
return if target_account.nil?
@ -43,16 +43,15 @@ class Import::RelationshipWorker
TagManager.instance.local_domain?(domain) ? nil : TagManager.instance.normalize_domain(domain)
end
def stoplight_wrap_request(domain, &block)
def stoplight_wrapper(domain)
if domain.present?
Stoplight("source:#{domain}", &block)
Stoplight("source:#{domain}")
.with_fallback { nil }
.with_threshold(1)
.with_cool_off_time(5.minutes.seconds)
.with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) }
.run
else
yield
Stoplight('domain-blank')
end
end
end

View file

@ -3,6 +3,6 @@
require 'stoplight'
Rails.application.reloader.to_prepare do
Stoplight::Light.default_data_store = Stoplight::DataStore::Redis.new(RedisConfiguration.new.connection)
Stoplight::Light.default_notifiers = [Stoplight::Notifier::Logger.new(Rails.logger)]
Stoplight.default_data_store = Stoplight::DataStore::Redis.new(RedisConfiguration.new.connection)
Stoplight.default_notifiers = [Stoplight::Notifier::Logger.new(Rails.logger)]
end

View file

@ -7,3 +7,9 @@ ia:
password: Contrasigno
user/account:
username: Nomine de usator
errors:
models:
status:
attributes:
reblog:
taken: del message jam existe

View file

@ -28,12 +28,12 @@ de:
title: Verifiziere E-Mail-Adresse
email_changed:
explanation: 'Die E-Mail-Adresse deines Kontos wird geändert zu:'
extra: Wenn du deine E-Mail-Adresse nicht geändert hast, ist es wahrscheinlich, dass sich jemand Zugang zu deinem Konto verschafft hat. Bitte ändere sofort dein Passwort oder kontaktiere die Serververwaltung, wenn du aus deinem Konto ausgesperrt bist.
extra: Wenn du deine E-Mail-Adresse nicht geändert hast, ist es wahrscheinlich, dass sich jemand Zugang zu deinem Konto verschafft hat. Bitte ändere sofort dein Passwort oder kontaktiere die Administrator*innen des Servers, wenn du aus deinem Konto ausgesperrt bist.
subject: 'Mastodon: E-Mail-Adresse geändert'
title: Neue E-Mail-Adresse
password_change:
explanation: Das Passwort für dein Konto wurde geändert.
extra: Wenn du dein Passwort nicht geändert hast, ist es wahrscheinlich, dass sich jemand Zugang zu deinem Konto verschafft hat. Bitte ändere sofort dein Passwort oder kontaktiere die Serververwaltung, wenn du aus deinem Konto ausgesperrt bist.
extra: Wenn du dein Passwort nicht geändert hast, ist es wahrscheinlich, dass sich jemand Zugang zu deinem Konto verschafft hat. Bitte ändere sofort dein Passwort oder kontaktiere die Administrator*innen des Servers, wenn du aus deinem Konto ausgesperrt bist.
subject: 'Mastodon: Passwort geändert'
title: Passwort geändert
reconfirmation_instructions:

View file

@ -1674,7 +1674,7 @@ es-MX:
lost_follows: Cuentas seguidas perdidas
preamble: Puedes perder cuentas seguidas y seguidores cuando bloqueas un dominio o cuando tus moderadores deciden suspender un servidor remoto. Cuando esto suceda, podrás descargar listas de relaciones cortadas, para ser inspeccionadas y posiblemente importadas en otro servidor.
purged: La información sobre este servidor ha sido purgada por los administradores de tu servidor.
type: Suceso
type: Evento
statuses:
attached:
audio:

View file

@ -597,6 +597,9 @@ et:
actions_description_html: Otsustus, mida raporti lahendamiseks ette võtta. Karistava tegevuse korral saadetakse e-postiga teade, välja arvatud kategooria <strong>rämpspost</strong> puhul.
actions_description_remote_html: Otsusta, mida teha selle raporti lahendamiseks. See mõjutab ainult seda, kuidas <strong>Sinu</strong> server selle kaugkontoga suhtleb ning selle sisu käsitleb.
add_to_report: Lisa raportile juurde
already_suspended_badges:
local: Juba kustutamisel selles serveris
remote: Juba kustutamisel tema serveris
are_you_sure: Oled kindel?
assign_to_self: Määra mulle
assigned: Määratud moderaator
@ -1652,13 +1655,26 @@ et:
import: Impordi
import_and_export: Import / eksport
migrate: Konto kolimine
notifications: E-postiteavitused
preferences: Eelistused
profile: Profiil
relationships: Jälgitud ja jälgijad
severed_relationships: Katkestatud seos
statuses_cleanup: Automaatne kustutamine
strikes: Modereerimisjuhtumid
two_factor_authentication: Kaheastmeline autentimine
webauthn_authentication: Turvavõtmed
severed_relationships:
download: Allalaadimine (%{count})
event_type:
account_suspension: Konto kustutamisel (%{target_name})
domain_block: Server kustutamisel (%{target_name})
user_domain_block: Blokeerisid %{target_name}
lost_followers: Kadunud jälgijad
lost_follows: Kaotatud jälgimised
preamble: Võid kaotada jälgijaid ja jälgitavaid, kui blokeerid domeeni või kui su moderaatorid otsustavad kustutada kaugserveri. Kui see juhtub, saad alla laadida katkestatud seoste loetelu, et see üle vaadata ja võib-olla teise serverisse üles laadida.
purged: Selle serveri info on sinu serveri administraatorite poolt tühjendatud.
type: Sündmus
statuses:
attached:
audio:
@ -1754,6 +1770,7 @@ et:
contrast: Mastodon (Kõrge kontrast)
default: Mastodon (Tume)
mastodon-light: Mastodon (Hele)
system: Automaatne (kasuta süsteemi teemat)
time:
formats:
default: "%d. %B, %Y. aastal, kell %H:%M"
@ -1866,6 +1883,9 @@ et:
follows_subtitle: Jälgi teada-tuntud kasutajaid
follows_title: Keda jälgida
follows_view_more: Vaata lähemalt, keda jälgida
hashtags_recent_count:
one: "%{people} isikut viimase 2 päeva jooksul"
other: "%{people} inimest viimase 2 päeva jooksul"
hashtags_subtitle: Avasta, mis viimase 2 päeva jooksul on toimunud
hashtags_title: Populaarsed märksõnad
hashtags_view_more: Vaata teisi trendikaid märksõnu

View file

@ -1,7 +1,20 @@
---
ia:
about:
about_mastodon_html: 'Le rete social del futuro: nulle publicitate, nulle surveliantia corporative, conception ethic, e decentralisation! Mantene le controlo de tu datos con Mastodon!'
contact_missing: Non definite
contact_unavailable: N/D
hosted_on: Mastodon albergate sur %{domain}
title: A proposito
accounts:
follow: Sequer
followers:
one: Sequitor
other: Sequitores
following: Sequente
instance_actor_flash: Iste conto es un agente virtual usate pro representar le servitor mesme e non alcun usator individual. Illo es usate pro le federation e non debe esser suspendite.
last_active: ultime activitate
link_verified_on: Le proprietate de iste ligamine ha essite verificate le %{date}
admin:
accounts:
are_you_sure: Es tu secur?

View file

@ -597,6 +597,9 @@ ie:
actions_description_html: Decider quel action a far por soluer ti raporte. Si tu fa un punitiv action contra li raportat conto, li usator va reciver un notification per email, except in li casu que li <strong>Spam</strong> categorie es selectet.
actions_description_remote_html: Decider quel action a far por soluer ti raporte. It va afecter solmen qualmen <strong>vor</strong> servitor comunica con ti lontan conto e tractar su contenete.
add_to_report: Adjunter plu al raporte
already_suspended_badges:
local: Ja suspendet sur ti-ci servitor
remote: Ja suspendet sur su servitor
are_you_sure: Es tu cert?
assign_to_self: Assignar it a me
assigned: Assignat moderator
@ -1652,6 +1655,7 @@ ie:
import: Importar
import_and_export: Importation e exportation
migrate: Migration de conto
notifications: E-postal notificationes
preferences: Preferenties
profile: Public profil
relationships: Sequetes e sequitores
@ -1659,6 +1663,14 @@ ie:
strikes: Admonimentes moderatori
two_factor_authentication: 2-factor autentication
webauthn_authentication: Claves de securitá
severed_relationships:
download: Descargar (%{count})
event_type:
account_suspension: Suspension del conto (%{target_name})
user_domain_block: Tu bloccat %{target_name}
lost_followers: Perdit sequitores
preamble: Tu posse perdir tis queles tu seque e tui sequitores quande tu blocca un domonia o quande tui moderatores decide suspender un lontan servitor. Tande, tu va posser descargar listes de dejuntet relationes, a inspecter e possibilmen importar sur un altri servitor.
type: Eveniment
statuses:
attached:
audio:
@ -1752,6 +1764,7 @@ ie:
contrast: Mastodon (Alt contraste)
default: Mastodon (Obscur)
mastodon-light: Mastodon (Luminosi)
system: Automatic (usar tema del sistema)
time:
formats:
default: "%d.%m.%Y ye %H:%M"
@ -1864,6 +1877,9 @@ ie:
follows_subtitle: Sequer famosi contos
follows_title: Persones a sequer
follows_view_more: Vider plu persones a sequer
hashtags_recent_count:
one: "%{people} person in li passat 2 dies"
other: "%{people} persones in li passat 2 dies"
hashtags_subtitle: Explorar li postas de tendentie durant li passat 2 dies
hashtags_title: Populari hashtags
hashtags_view_more: Vider plu hashtags in tendentie

View file

@ -1234,7 +1234,7 @@ it:
bookmarks: Segnalibri
csv: CSV
domain_blocks: Blocchi di dominio
lists: Liste
lists: Elenchi
mutes: Stai silenziando
storage: Archiviazione media
featured_tags:

View file

@ -1665,6 +1665,10 @@ lad:
webauthn_authentication: Yaves de sigurita
severed_relationships:
download: Abasha (%{count})
event_type:
user_domain_block: Blokates a %{target_name}
lost_followers: Suivantes pedridos
lost_follows: Segimyentos pedridos
type: Evenimiento
statuses:
attached:

View file

@ -116,6 +116,7 @@ et:
sign_up_requires_approval: Uued liitumised vajavad kinnitamist
severity: Valik, mis juhtub päringutega sellelt IP-aadressilt
rule:
hint: Valikuline. Anna reegli kohta rohkem üksikasju
text: Reegli või nõude kirjeldus selle serveri kasutajatele. Võimalikult lühidalt ja lihtsalt
sessions:
otp: 'Kaheastmelise autentimise kood telefonirakendusest või mõni taastekood:'
@ -299,6 +300,7 @@ et:
patch: Teata veaparandusuuendustest
trending_tag: Uus trend vajab ülevaatust
rule:
hint: Lisainfo
text: Reegel
settings:
indexable: Kaasa profiilileht otsimootoritesse

View file

@ -15,6 +15,7 @@ ia:
current_password: Contrasigno actual
new_password: Nove contrasigno
password: Contrasigno
setting_default_language: Lingua de publication
setting_display_media_default: Predefinite
setting_display_media_hide_all: Celar toto
setting_display_media_show_all: Monstrar toto
@ -35,9 +36,15 @@ ia:
site_title: Nomine de servitor
theme: Thema predefinite
trends: Activar tendentias
ip_block:
severity: Regula
notification_emails:
software_updates:
label: Un nove version de Mastodon es disponibile
rule:
text: Regula
settings:
indexable: Includer pagina de profilo in le motores de recerca
user:
time_zone: Fuso horari
user_role:

View file

@ -116,6 +116,7 @@ ie:
sign_up_requires_approval: Nov registrationes va besonar tui aprobation
severity: Selecter quo va evenir con demandes ex ti-ci IP
rule:
hint: Optional. Ples provider plu detallies pri li regul
text: Descrir un regul o postulation por usatores sur ti-ci servitor. Prova scrir un descrition curt e simplic
sessions:
otp: 'Intrar li 2-factor code generat del app sur tui portabile o usar un de tui codes de recuperation:'
@ -299,6 +300,7 @@ ie:
patch: Notificar pri problema-fixant actualisationes
trending_tag: Nov tendentie besonant inspection
rule:
hint: Information in plu
text: Regul
settings:
indexable: Includer profil-pagine in serchatores

View file

@ -50,7 +50,9 @@ SimpleNavigation::Configuration.run do |navigation|
s.item :links, safe_join([fa_icon('newspaper-o fw'), t('admin.trends.links.title')]), admin_trends_links_path, highlights_on: %r{/admin/trends/links}
end
n.item :moderation, safe_join([fa_icon('gavel fw'), t('moderation.title')]), nil, if: -> { current_user.can?(:manage_reports, :view_audit_log, :manage_users, :manage_invites, :manage_taxonomies, :manage_federation, :manage_blocks, :manage_ng_words, :manage_sensitive_words) && !self_destruct } do |s|
n.item :moderation, safe_join([fa_icon('gavel fw'), t('moderation.title')]), nil, if: lambda {
current_user.can?(:manage_reports, :view_audit_log, :manage_users, :manage_invites, :manage_taxonomies, :manage_federation, :manage_blocks, :manage_ng_words, :manage_sensitive_words) && !self_destruct
} do |s|
s.item :reports, safe_join([fa_icon('flag fw'), t('admin.reports.title')]), admin_reports_path, highlights_on: %r{/admin/reports}, if: -> { current_user.can?(:manage_reports) }
s.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_path(origin: 'local'), highlights_on: %r{/admin/accounts|/admin/pending_accounts|/admin/disputes|/admin/users}, if: -> { current_user.can?(:manage_users) }
s.item :ng_words, safe_join([fa_icon('list fw'), t('admin.ng_words.title')]), admin_ng_words_keywords_path, highlights_on: %r{/admin/(ng_words|ngword_histories)}, if: -> { current_user.can?(:manage_ng_words) }

View file

@ -4,7 +4,8 @@ class ImproveIndexForPublicTimelineSpeed < ActiveRecord::Migration[7.0]
disable_ddl_transaction!
def up
add_index :statuses, [:id, :account_id], name: :index_statuses_local_20231213, algorithm: :concurrently, order: { id: :desc }, where: '(local OR (uri IS NULL)) AND deleted_at IS NULL AND visibility IN (0, 10, 11) AND reblog_of_id IS NULL AND ((NOT reply) OR (in_reply_to_account_id = account_id))'
add_index :statuses, [:id, :account_id], name: :index_statuses_local_20231213, algorithm: :concurrently, order: { id: :desc },
where: '(local OR (uri IS NULL)) AND deleted_at IS NULL AND visibility IN (0, 10, 11) AND reblog_of_id IS NULL AND ((NOT reply) OR (in_reply_to_account_id = account_id))'
add_index :statuses, [:id, :account_id], name: :index_statuses_public_20231213, algorithm: :concurrently, order: { id: :desc }, where: 'deleted_at IS NULL AND visibility IN (0, 10, 11) AND reblog_of_id IS NULL AND ((NOT reply) OR (in_reply_to_account_id = account_id))'
remove_index :statuses, name: :index_statuses_local_20190824
remove_index :statuses, name: :index_statuses_public_20200119

View file

@ -84,13 +84,11 @@ module Paperclip
# Don't go through Stoplight if we don't have anything object-storage-oriented to do
return super if @queued_for_delete.empty? && @queued_for_write.empty? && !dirty?
Stoplight('object-storage') { super }.with_threshold(STOPLIGHT_THRESHOLD).with_cool_off_time(STOPLIGHT_COOLDOWN).with_error_handler do |error, handle|
if error.is_a?(Seahorse::Client::NetworkingError)
handle.call(error)
else
raise error
end
end.run
Stoplight('object-storage')
.with_threshold(STOPLIGHT_THRESHOLD)
.with_cool_off_time(STOPLIGHT_COOLDOWN)
.with_error_handler { |error, handle| error.is_a?(Seahorse::Client::NetworkingError) ? handle.call(error) : raise(error) }
.run { super }
end
end
end

View file

@ -32,8 +32,8 @@ RSpec.describe 'Policies' do
filter_new_accounts: false,
filter_private_mentions: true,
summary: a_hash_including(
pending_requests_count: '1',
pending_notifications_count: '0'
pending_requests_count: 1,
pending_notifications_count: 0
)
)
end
@ -60,8 +60,8 @@ RSpec.describe 'Policies' do
filter_new_accounts: false,
filter_private_mentions: true,
summary: a_hash_including(
pending_requests_count: '0',
pending_notifications_count: '0'
pending_requests_count: 0,
pending_notifications_count: 0
)
)
end

View file

@ -25,13 +25,15 @@ describe 'Public' do
get '/api/v1/timelines/public', headers: headers, params: params
end
let!(:private_status) { Fabricate(:status, text: 'ohagi', visibility: :private) } # rubocop:disable RSpec/LetSetup
let!(:local_status) { Fabricate(:status, text: 'ohagi', account: Fabricate.build(:account, domain: nil)) }
let!(:remote_status) { Fabricate(:status, text: 'ohagi', account: Fabricate.build(:account, domain: 'example.com')) }
let!(:media_status) { Fabricate(:status, text: 'ohagi', media_attachments: [Fabricate.build(:media_attachment)]) }
let!(:local_status) { Fabricate(:status, account: Fabricate.build(:account, domain: nil)) }
let!(:remote_status) { Fabricate(:status, account: Fabricate.build(:account, domain: 'example.com')) }
let!(:media_status) { Fabricate(:status, media_attachments: [Fabricate.build(:media_attachment)]) }
let(:params) { {} }
before do
Fabricate(:status, visibility: :private)
end
context 'when the instance allows public preview' do
let(:expected_statuses) { [local_status, remote_status, media_status] }
@ -182,7 +184,7 @@ describe 'Public' do
end
end
context 'when include_quotes' do # rubocop:disable RSpec/MultipleMemoizedHelpers
context 'when include_quotes' do
let(:with_quote) { true }
it 'load statuses', :aggregate_failures do

View file

@ -18,6 +18,7 @@ describe 'Instances' do
expect(body_as_json)
.to be_present
.and include(title: 'Mastodon')
.and include_configuration_limits
end
end
@ -31,7 +32,26 @@ describe 'Instances' do
expect(body_as_json)
.to be_present
.and include(title: 'Mastodon')
.and include_configuration_limits
end
end
def include_configuration_limits
include(
configuration: include(
accounts: include(
max_featured_tags: FeaturedTag::LIMIT,
max_pinned_statuses: StatusPinValidator::PIN_LIMIT
),
statuses: include(
max_characters: StatusLengthValidator::MAX_CHARS,
max_media_attachments: 4 # TODO, move to constant somewhere
),
polls: include(
max_options: PollValidator::MAX_OPTIONS
)
)
)
end
end
end

View file

@ -10,12 +10,23 @@ describe REST::InstanceSerializer do
it 'returns recent usage data' do
expect(serialization['usage']).to eq({ 'users' => { 'active_month' => 0 } })
end
end
describe 'configuration' do
it 'returns the VAPID public key' do
expect(serialization['configuration']['vapid']).to eq({
'public_key' => Rails.configuration.x.vapid_public_key,
})
end
it 'returns the max pinned statuses limit' do
expect(serialization.deep_symbolize_keys)
.to include(
configuration: include(
accounts: include(max_pinned_statuses: StatusPinValidator::PIN_LIMIT)
)
)
end
end
describe 'fedibird_capabilities' do

View file

@ -14,7 +14,6 @@ Capybara.register_driver :headless_chrome do |app|
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument '--headless=new'
options.add_argument '--window-size=1680,1050'
options.browser_version = '120'
Capybara::Selenium::Driver.new(
app,

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1.4
# syntax=docker/dockerfile:1.7
# Please see https://docs.docker.com/engine/reference/builder for information about
# the extended buildx capabilities used in this file.

368
yarn.lock
View file

@ -1548,10 +1548,10 @@ __metadata:
languageName: node
linkType: hard
"@csstools/color-helpers@npm:^4.0.0":
version: 4.0.0
resolution: "@csstools/color-helpers@npm:4.0.0"
checksum: 10c0/fc78871253f8c92789ed64a0e5555bd2873c2b62a49c30baced88487561fe09fe897b0d16fcf7bf2a94f78ff37530773a4395ce5efc016810c094041b5bbcd42
"@csstools/color-helpers@npm:^4.1.0":
version: 4.1.0
resolution: "@csstools/color-helpers@npm:4.1.0"
checksum: 10c0/0e41fd04dd28361717b161e7000c3a3b64b8b01119e93758297ea0b8a87c04121c3e3ef02e29c56fdd133227dd879163aa4b52e2370853d9fe64af6b6821668d
languageName: node
linkType: hard
@ -1565,16 +1565,16 @@ __metadata:
languageName: node
linkType: hard
"@csstools/css-color-parser@npm:^1.6.2":
version: 1.6.2
resolution: "@csstools/css-color-parser@npm:1.6.2"
"@csstools/css-color-parser@npm:^1.6.3":
version: 1.6.3
resolution: "@csstools/css-color-parser@npm:1.6.3"
dependencies:
"@csstools/color-helpers": "npm:^4.0.0"
"@csstools/color-helpers": "npm:^4.1.0"
"@csstools/css-calc": "npm:^1.2.0"
peerDependencies:
"@csstools/css-parser-algorithms": ^2.6.1
"@csstools/css-tokenizer": ^2.2.4
checksum: 10c0/f587482fd7a40b6bd4cc790771245477d82203ba08f8f85981908680423476b9733c71fb4f1ba655f4dfb77907b4dfbb654dd7ba89e9edf0ba5229c26830ee8f
checksum: 10c0/3b15d9974105fe6e5d5e839953ee06153bc308bd62feacdeb88b7da7486ef1625254d0df908c68654596e477ca6be0c312d0c02a62d6dc4bddee61821be17d27
languageName: node
linkType: hard
@ -1604,45 +1604,45 @@ __metadata:
languageName: node
linkType: hard
"@csstools/postcss-cascade-layers@npm:^4.0.3":
version: 4.0.3
resolution: "@csstools/postcss-cascade-layers@npm:4.0.3"
"@csstools/postcss-cascade-layers@npm:^4.0.4":
version: 4.0.4
resolution: "@csstools/postcss-cascade-layers@npm:4.0.4"
dependencies:
"@csstools/selector-specificity": "npm:^3.0.2"
"@csstools/selector-specificity": "npm:^3.0.3"
postcss-selector-parser: "npm:^6.0.13"
peerDependencies:
postcss: ^8.4
checksum: 10c0/63f29af21eed000130f6f1268c00188a52eafbdeccc6acf5aa46507e499259631aa89f928b01b4698c41f3f68703db4c6e363c0e6f64b04b20c7e6452a5b259a
checksum: 10c0/87fdd1e3d846e45c2e415f24f66076e04c3c4539e8b802f1114b2a0fef9421d562d9eb61464ba3599d73805555ad8e95c51a8827cb3ddacfda01ec0df4afbfe0
languageName: node
linkType: hard
"@csstools/postcss-color-function@npm:^3.0.12":
version: 3.0.12
resolution: "@csstools/postcss-color-function@npm:3.0.12"
"@csstools/postcss-color-function@npm:^3.0.13":
version: 3.0.13
resolution: "@csstools/postcss-color-function@npm:3.0.13"
dependencies:
"@csstools/css-color-parser": "npm:^1.6.2"
"@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/a270aef93e98efb2b184b84a5de8acc28b10aed229807d1e5b5cf43309b281782895322ec98c0c9486b306ec68915e06689d6959c13ea2ab37fbb773ecd02335
checksum: 10c0/9d0fa25cd258653ad3227ccf1ee89dfee7099284c28b1d9ae7f7e8b15ed526e4e8cc7724f8e21cc073ed186891c3acb5b9c190a75e3c38d9c75e49197a824db6
languageName: node
linkType: hard
"@csstools/postcss-color-mix-function@npm:^2.0.12":
version: 2.0.12
resolution: "@csstools/postcss-color-mix-function@npm:2.0.12"
"@csstools/postcss-color-mix-function@npm:^2.0.13":
version: 2.0.13
resolution: "@csstools/postcss-color-mix-function@npm:2.0.13"
dependencies:
"@csstools/css-color-parser": "npm:^1.6.2"
"@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/42c7d48eeb1c1e49265505b560b9e034861254c62c5f78d89538255decab67d70f89bf81b269b208aa2103e9f48a51a33bb009eb17774f07c0459929d97f7056
checksum: 10c0/6011ce0b328cd3ee1d5720dc6eb23da807ba5a218a4a3c65a4844a82c0ff37e69d27cbee14abf9b928a3068f429ab86f2dd2bebab4ab64cd8fc7e39e562d7073
languageName: node
linkType: hard
@ -1671,59 +1671,59 @@ __metadata:
languageName: node
linkType: hard
"@csstools/postcss-gamut-mapping@npm:^1.0.5":
version: 1.0.5
resolution: "@csstools/postcss-gamut-mapping@npm:1.0.5"
"@csstools/postcss-gamut-mapping@npm:^1.0.6":
version: 1.0.6
resolution: "@csstools/postcss-gamut-mapping@npm:1.0.6"
dependencies:
"@csstools/css-color-parser": "npm:^1.6.2"
"@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4"
peerDependencies:
postcss: ^8.4
checksum: 10c0/33e2185ae8f8a229476bd5a60c0523aef8cb4de552a6c532514b9d87bff579f36fb7640dd14c9ea56906996d43f4d5ab969a4f704e1b8a94f7802beb3df31d08
checksum: 10c0/a258a2ceac9d9be4374ec5b504895bd1de1196fe7d8c1377863a25c6cb50ee1fb1c65387c5440bae3c5d59e6ebf4e0c1990595c5cd09291224b31a1d23bdc250
languageName: node
linkType: hard
"@csstools/postcss-gradients-interpolation-method@npm:^4.0.13":
version: 4.0.13
resolution: "@csstools/postcss-gradients-interpolation-method@npm:4.0.13"
"@csstools/postcss-gradients-interpolation-method@npm:^4.0.14":
version: 4.0.14
resolution: "@csstools/postcss-gradients-interpolation-method@npm:4.0.14"
dependencies:
"@csstools/css-color-parser": "npm:^1.6.2"
"@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/af7c2d9c8e2249ea4cc50c9ef1b5ad75b1ed062020f1a8906ba9baf3143c4e2638b8b2189d7552838558e7b9a8a1ee9aa0baa076f5deabb23c1dc90fd78d7eab
checksum: 10c0/88147b2d7067b9bc6c90340c0be8450ca1175a7e927ff7b682c26d377237bec12f1cbe0dd930dd72dec661603348d1e71ca2a56f0a3b6fa2ca7d3f1b962f001d
languageName: node
linkType: hard
"@csstools/postcss-hwb-function@npm:^3.0.11":
version: 3.0.11
resolution: "@csstools/postcss-hwb-function@npm:3.0.11"
"@csstools/postcss-hwb-function@npm:^3.0.12":
version: 3.0.12
resolution: "@csstools/postcss-hwb-function@npm:3.0.12"
dependencies:
"@csstools/css-color-parser": "npm:^1.6.2"
"@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/d779617ef97ff22a125fbdd65f01dd3dd5bc607dbe7f3b02ae808d2fcccb1d5022b7f8e66e64283f7f9c52b6997bf0dc649566c734f0e3e4f3ba3c66a3b564a8
checksum: 10c0/20e0b2a4547fe619f38fe56c33974750d4a8b64a67a4169740ee0e67a9dec9f3a243f2370408901aacc35690aa36135028fafbbc866ff934b66cc4c9e4e89cac
languageName: node
linkType: hard
"@csstools/postcss-ic-unit@npm:^3.0.5":
version: 3.0.5
resolution: "@csstools/postcss-ic-unit@npm:3.0.5"
"@csstools/postcss-ic-unit@npm:^3.0.6":
version: 3.0.6
resolution: "@csstools/postcss-ic-unit@npm:3.0.6"
dependencies:
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/bf21b74e1bdff425481724a36385f1ebe7c8aea6cccfcf6715cad58449d2d19419342e94d33d6626ec09bed8d4ab6e391b8eebaa3bda721e7f41e5c64c485f2a
checksum: 10c0/a4b962327d433419fdcfdcf620ce6a5cf09aa3c93029ad08b035df1e2bc35caae31de49f1d14218de0656fced35c0d2e07e5ff7b8099c29dbfb40395fc283234
languageName: node
linkType: hard
@ -1736,29 +1736,29 @@ __metadata:
languageName: node
linkType: hard
"@csstools/postcss-is-pseudo-class@npm:^4.0.5":
version: 4.0.5
resolution: "@csstools/postcss-is-pseudo-class@npm:4.0.5"
"@csstools/postcss-is-pseudo-class@npm:^4.0.6":
version: 4.0.6
resolution: "@csstools/postcss-is-pseudo-class@npm:4.0.6"
dependencies:
"@csstools/selector-specificity": "npm:^3.0.2"
"@csstools/selector-specificity": "npm:^3.0.3"
postcss-selector-parser: "npm:^6.0.13"
peerDependencies:
postcss: ^8.4
checksum: 10c0/5f35d5474957be30f54b89cf46b818390754af8094c4d9a083a79d579ccd817452bb7e2cfef8951c664d4c6ba381d8d45cd89f49339a42941f947ccb032f9d45
checksum: 10c0/aa071954e08dc9368fbeddbec6a8da2dea3a771b33bad53f67f3bc5a6b2f0a270909948f3e7b29ec885f4cceee245f16388809aeb0620284a1d66ad1f2026f28
languageName: node
linkType: hard
"@csstools/postcss-light-dark-function@npm:^1.0.1":
version: 1.0.1
resolution: "@csstools/postcss-light-dark-function@npm:1.0.1"
"@csstools/postcss-light-dark-function@npm:^1.0.3":
version: 1.0.3
resolution: "@csstools/postcss-light-dark-function@npm:1.0.3"
dependencies:
"@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/538e809b473b91245cb79418949c4a27c0e82b0ea357f9c93b054e07d3194857e53979693226be9448904a7d9d4ad4732ad34183db82927bb172fe6cab1e53a8
checksum: 10c0/99a1b72aba08a6fa5c7271d42f4459d86f001fe83f533c0ed3d21556f53ee227f65f94cda1feee1aa910890fc42482f15a4dfb3edbc7afdad828ce8897d0c52b
languageName: node
linkType: hard
@ -1862,44 +1862,44 @@ __metadata:
languageName: node
linkType: hard
"@csstools/postcss-oklab-function@npm:^3.0.12":
version: 3.0.12
resolution: "@csstools/postcss-oklab-function@npm:3.0.12"
"@csstools/postcss-oklab-function@npm:^3.0.13":
version: 3.0.13
resolution: "@csstools/postcss-oklab-function@npm:3.0.13"
dependencies:
"@csstools/css-color-parser": "npm:^1.6.2"
"@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/1454f57c756bdc882a523b50634823a0c31d7adc35330e13c80f9573c287f2a4ab30bbce48e0e8788dfe5a293d55113db2205373523b202a8828b9088e55e51c
checksum: 10c0/26915f65ccc8b631a08542c4b088f9e5155f95a6c1f3a6bd2a33207f96d33438b930de60f493a5bbfee1b9f2abc8dfcab3ecbf20b5c7445d729fc434234fb046
languageName: node
linkType: hard
"@csstools/postcss-progressive-custom-properties@npm:^3.1.1":
version: 3.1.1
resolution: "@csstools/postcss-progressive-custom-properties@npm:3.1.1"
"@csstools/postcss-progressive-custom-properties@npm:^3.2.0":
version: 3.2.0
resolution: "@csstools/postcss-progressive-custom-properties@npm:3.2.0"
dependencies:
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/9303296c8285a8154d2ee22d5a1330c94c5f361d277a1fd27172e868e3511619a6876538beacae0c9e925a9d1e81a32438d405526170faa84cad0c2d2159fdd2
checksum: 10c0/829880844fbbeef1c67e0b380057e574659b4caed38c8414c17d7eb4a0cc727afa1cd74a889bc7ca79c819ecae757810356706901cf6bb677a36ca123915cbb7
languageName: node
linkType: hard
"@csstools/postcss-relative-color-syntax@npm:^2.0.12":
version: 2.0.12
resolution: "@csstools/postcss-relative-color-syntax@npm:2.0.12"
"@csstools/postcss-relative-color-syntax@npm:^2.0.13":
version: 2.0.13
resolution: "@csstools/postcss-relative-color-syntax@npm:2.0.13"
dependencies:
"@csstools/css-color-parser": "npm:^1.6.2"
"@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/e12a59b89372fbc5cc460cfeceeea2ddc8b7a8f5639a767dbd6c7ff799bf740ac5dd7ae6797703f74efeadd696801042bff8770117cf5ed70646dcc598637334
checksum: 10c0/5c9fdec029e3d9a5c688d2e04995fec0cf6d91b48dbc5f450cf9c9dbb45e2819afbd63b3279676087a13f54914b0ec7d005e478b70b43e94fc8eeef9c5973390
languageName: node
linkType: hard
@ -1927,15 +1927,15 @@ __metadata:
languageName: node
linkType: hard
"@csstools/postcss-text-decoration-shorthand@npm:^3.0.4":
version: 3.0.4
resolution: "@csstools/postcss-text-decoration-shorthand@npm:3.0.4"
"@csstools/postcss-text-decoration-shorthand@npm:^3.0.5":
version: 3.0.5
resolution: "@csstools/postcss-text-decoration-shorthand@npm:3.0.5"
dependencies:
"@csstools/color-helpers": "npm:^4.0.0"
"@csstools/color-helpers": "npm:^4.1.0"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/2e17535bbeed8ca5f095e6aecfb552004c1920597f16146fe6ec773b46af95f9e0e3cf77181d4216a23528de8e042bd85f82df1562447f52e7687ed8628f0adc
checksum: 10c0/e7e08c643c7084e60c0b22982e00ce21c579af3810ebbebac6838801b2ac622026ce96fd0cbca785613b1559f2337833cfc0f525685f8543ee39078a32fd7f89
languageName: node
linkType: hard
@ -1970,12 +1970,12 @@ __metadata:
languageName: node
linkType: hard
"@csstools/selector-specificity@npm:^3.0.2":
version: 3.0.2
resolution: "@csstools/selector-specificity@npm:3.0.2"
"@csstools/selector-specificity@npm:^3.0.2, @csstools/selector-specificity@npm:^3.0.3":
version: 3.0.3
resolution: "@csstools/selector-specificity@npm:3.0.3"
peerDependencies:
postcss-selector-parser: ^6.0.13
checksum: 10c0/d0c7dae2f1e9536e3e17f00467320a704f3208c76283c29c57fd69d4b83dcf6d062f492ed687c5ffd5f47fada9f0657c2efc89ea18fd4b038f757669553e0095
checksum: 10c0/e4f0355165882ddde8bd4a2f0252868150e67b9fae927fd2d94a91cee31e438e7041059f20b9c755a93b0bd8e527a9f78b01168fe67b3539be32091240aa63bf
languageName: node
linkType: hard
@ -2199,16 +2199,16 @@ __metadata:
linkType: hard
"@formatjs/cli@npm:^6.1.1":
version: 6.2.8
resolution: "@formatjs/cli@npm:6.2.8"
version: 6.2.9
resolution: "@formatjs/cli@npm:6.2.9"
peerDependencies:
vue: ^3.3.4
vue: ^3.4.0
peerDependenciesMeta:
vue:
optional: true
bin:
formatjs: bin/formatjs
checksum: 10c0/5d8f95434f4522eee7dd3acf54e5265289ec7e72812448cd7c7547bdedaba8927719800dfa2fc92fb82c609f34255367a80d18bf6c064540d5e11ec6b9d4603e
checksum: 10c0/498383bcdca7f8f8a748c1151be17392f71eb1861f6a23bc714280533167cba7cdc35a470a380113f6111236e721ff43cbee7b084939dac67b6a5d9b04c0587c
languageName: node
linkType: hard
@ -3031,8 +3031,8 @@ __metadata:
linkType: hard
"@reduxjs/toolkit@npm:^2.0.1":
version: 2.2.2
resolution: "@reduxjs/toolkit@npm:2.2.2"
version: 2.2.3
resolution: "@reduxjs/toolkit@npm:2.2.3"
dependencies:
immer: "npm:^10.0.3"
redux: "npm:^5.0.1"
@ -3046,7 +3046,7 @@ __metadata:
optional: true
react-redux:
optional: true
checksum: 10c0/d749181b1bc071698517cba7ce05c42ddfe99363019249722b4dfa3afc71b3a6e4cb9885af574cf81c5d6515f68201ebfedddb5c14b262c941a45112fdc66ce3
checksum: 10c0/f10f2c8f4b6c5c7a65d8d60246bdfde86b6cd2f542210ebdda8002223c7f4e99ed32964825e63f37345d9d12532671150fcec2809a40690931ae44afe8aba7f8
languageName: node
linkType: hard
@ -3765,11 +3765,11 @@ __metadata:
linkType: hard
"@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.2.4":
version: 18.2.22
resolution: "@types/react-dom@npm:18.2.22"
version: 18.2.23
resolution: "@types/react-dom@npm:18.2.23"
dependencies:
"@types/react": "npm:*"
checksum: 10c0/cd85b5f402126e44b8c7b573e74737389816abcc931b2b14d8f946ba81cce8637ea490419488fcae842efb1e2f69853bc30522e43fd8359e1007d4d14b8d8146
checksum: 10c0/9348e93558aa67b4b237bd0eab62e72e85f3e17a1c45fde04d874476269730f7c671b3d62390c4fca588da2a026e90cc74148abc349dbfd4ee5535a82ccdf38e
languageName: node
linkType: hard
@ -3868,13 +3868,12 @@ __metadata:
linkType: hard
"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.7":
version: 18.2.70
resolution: "@types/react@npm:18.2.70"
version: 18.2.73
resolution: "@types/react@npm:18.2.73"
dependencies:
"@types/prop-types": "npm:*"
"@types/scheduler": "npm:*"
csstype: "npm:^3.0.2"
checksum: 10c0/2107b1fa8963cabe33d981cf1c0e3b7534c9d12b98c1046cd9f7975851690a0780db011f6a1d637ae4e612ef00c94ebdbe76a9e2f9e0f3baa6aad3213932af41
checksum: 10c0/b6645ab3c20efa41cfccf58ce0be45419517a0ba4594e323dd400342fb1c1f9589d169cf9bfa85b5b0605e9097fe9de7734b6d0c533f5b9bc32aaadb624537a4
languageName: node
linkType: hard
@ -3904,13 +3903,6 @@ __metadata:
languageName: node
linkType: hard
"@types/scheduler@npm:*":
version: 0.16.5
resolution: "@types/scheduler@npm:0.16.5"
checksum: 10c0/625b63cd5dcaf6fb88fe03aa7c797f28cb121f03584126d4811b2d03f39bc3e238ce52cf7685ad8adfe8445d679934e6be47347723a6771ca2058c01f0c33760
languageName: node
linkType: hard
"@types/semver@npm:^7.5.0":
version: 7.5.4
resolution: "@types/semver@npm:7.5.4"
@ -5064,7 +5056,7 @@ __metadata:
languageName: node
linkType: hard
"autoprefixer@npm:^10.4.14, autoprefixer@npm:^10.4.18":
"autoprefixer@npm:^10.4.14, autoprefixer@npm:^10.4.19":
version: 10.4.19
resolution: "autoprefixer@npm:10.4.19"
dependencies:
@ -5639,13 +5631,6 @@ __metadata:
languageName: node
linkType: hard
"buffer-writer@npm:2.0.0":
version: 2.0.0
resolution: "buffer-writer@npm:2.0.0"
checksum: 10c0/c91b2ab09a200cf0862237e5a4dbd5077003b42d26d4f0c596ec7149f82ef83e0751d670bcdf379ed988d1a08c0fac7759a8cb928cf1a4710a1988a7618b1190
languageName: node
linkType: hard
"buffer-xor@npm:^1.0.3":
version: 1.0.3
resolution: "buffer-xor@npm:1.0.3"
@ -6547,16 +6532,16 @@ __metadata:
languageName: node
linkType: hard
"css-has-pseudo@npm:^6.0.2":
version: 6.0.2
resolution: "css-has-pseudo@npm:6.0.2"
"css-has-pseudo@npm:^6.0.3":
version: 6.0.3
resolution: "css-has-pseudo@npm:6.0.3"
dependencies:
"@csstools/selector-specificity": "npm:^3.0.2"
"@csstools/selector-specificity": "npm:^3.0.3"
postcss-selector-parser: "npm:^6.0.13"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/96f9a6a4f31e11797e583d458535e11fa513b3f1f430ab566964a2f0792eaaa543213598b0a509516f07464234348ab11d56448b6d0c0c8a36988e0c86cf4ca1
checksum: 10c0/bbe663eff5256233c7bcce256cd8de7d93d82f2d4f2ca104af8e39e2159170d67746d3a2954385d03ec4ea7ef2728fe9a7d8cb62c52c0a6df1ad3d3bb1e3439d
languageName: node
linkType: hard
@ -6682,10 +6667,10 @@ __metadata:
languageName: node
linkType: hard
"cssdb@npm:^7.11.1":
version: 7.11.2
resolution: "cssdb@npm:7.11.2"
checksum: 10c0/5cd8dfee703dfbd7b7a8c3a93d65d26007ec1cd9692379b5868a0ceedf23b88e28d4b98f1cb9a4161f8b01e4a229e08ba9603fb94b756a3df6e07c423fff5b5d
"cssdb@npm:^8.0.0":
version: 8.0.0
resolution: "cssdb@npm:8.0.0"
checksum: 10c0/d9a31b760214624352000b16a8f7194c357f66b6c445e663ab58dd03b6f0f53efaaca6d6f96200d666e205894d2d1c346664ad993d9522ff9fc1c331804a8d62
languageName: node
linkType: hard
@ -12622,13 +12607,6 @@ __metadata:
languageName: node
linkType: hard
"packet-reader@npm:1.0.0":
version: 1.0.0
resolution: "packet-reader@npm:1.0.0"
checksum: 10c0/c86c3321bb07e0f03cc2db59f7701184e0bbfcb914f1fdc963993b03262486deb402292adcef39b64e3530ea66b3b2e2163d6da7b3792a730bdd1c6df3175aaa
languageName: node
linkType: hard
"pako@npm:~1.0.5":
version: 1.0.11
resolution: "pako@npm:1.0.11"
@ -12844,10 +12822,10 @@ __metadata:
languageName: node
linkType: hard
"pg-connection-string@npm:^2.6.0, pg-connection-string@npm:^2.6.2":
version: 2.6.2
resolution: "pg-connection-string@npm:2.6.2"
checksum: 10c0/e8fdea74fcc8bdc3d7c5c6eadd9425fdba7e67fb7fe836f9c0cecad94c8984e435256657d1d8ce0483d1fedef667e7a57e32449a63cb805cb0289fc34b62da35
"pg-connection-string@npm:^2.6.0, pg-connection-string@npm:^2.6.4":
version: 2.6.4
resolution: "pg-connection-string@npm:2.6.4"
checksum: 10c0/0d0b617df0fc6507bf6a94bdcd56c7a305788a1402d69bff9773350947c8f525d6d8136128065370749a3325e99658ae40fbdcce620fb8e60126181f0591a6a6
languageName: node
linkType: hard
@ -12865,19 +12843,19 @@ __metadata:
languageName: node
linkType: hard
"pg-pool@npm:^3.6.1":
version: 3.6.1
resolution: "pg-pool@npm:3.6.1"
"pg-pool@npm:^3.6.2":
version: 3.6.2
resolution: "pg-pool@npm:3.6.2"
peerDependencies:
pg: ">=8.0"
checksum: 10c0/47837c4e4c2b9e195cec01bd58b6e276acc915537191707ad4d6ed975fd9bc03c73f63cb7fde4cb0e08ed059e35faf60fbd03744dee3af71d4b4631ab40eeb7f
checksum: 10c0/14c524549490954b5e48457a4b808df8f619f6deeb3b395b0cd184a8f4ed65a9273fe0697ba0341a41d6745af197f1437eb1cf51fff0cbbf5b0fb3852ebe5392
languageName: node
linkType: hard
"pg-protocol@npm:*, pg-protocol@npm:^1.6.0":
version: 1.6.0
resolution: "pg-protocol@npm:1.6.0"
checksum: 10c0/318a4d1e9cebd3927b10a8bc412f5017117a1f9a5fafb628d75847da7d1ab81c33250de58596bd0990029e14e92a995a851286d60fc236692299faf509572213
"pg-protocol@npm:*, pg-protocol@npm:^1.6.1":
version: 1.6.1
resolution: "pg-protocol@npm:1.6.1"
checksum: 10c0/7eadef4010ac0a3925c460be7332ca4098a5c6d5181725a62193fcfa800000ae6632d98d814f3989b42cf5fdc3b45e34c714a1959d29174e81e30730e140ae5f
languageName: node
linkType: hard
@ -12910,15 +12888,13 @@ __metadata:
linkType: hard
"pg@npm:^8.5.0":
version: 8.11.3
resolution: "pg@npm:8.11.3"
version: 8.11.5
resolution: "pg@npm:8.11.5"
dependencies:
buffer-writer: "npm:2.0.0"
packet-reader: "npm:1.0.0"
pg-cloudflare: "npm:^1.1.1"
pg-connection-string: "npm:^2.6.2"
pg-pool: "npm:^3.6.1"
pg-protocol: "npm:^1.6.0"
pg-connection-string: "npm:^2.6.4"
pg-pool: "npm:^3.6.2"
pg-protocol: "npm:^1.6.1"
pg-types: "npm:^2.1.0"
pgpass: "npm:1.x"
peerDependencies:
@ -12929,7 +12905,7 @@ __metadata:
peerDependenciesMeta:
pg-native:
optional: true
checksum: 10c0/07e6967fc8bd5d72bab9be6620626e8e3ab59128ebf56bf0de83d67f10801a19221d88b3317e90b93339ba48d0498b39967b782ae39686aabda6bc647bceb438
checksum: 10c0/20f29a41a99bad5931faf4d4a01e7be7fb27e5b5338fdfb06d2368e295c3d3d4ef49958ad57d2b17bad108e5c84574db6244ed8221e6b77a767f64ef12564119
languageName: node
linkType: hard
@ -13160,18 +13136,18 @@ __metadata:
languageName: node
linkType: hard
"postcss-color-functional-notation@npm:^6.0.7":
version: 6.0.7
resolution: "postcss-color-functional-notation@npm:6.0.7"
"postcss-color-functional-notation@npm:^6.0.8":
version: 6.0.8
resolution: "postcss-color-functional-notation@npm:6.0.8"
dependencies:
"@csstools/css-color-parser": "npm:^1.6.2"
"@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/bd3c1831e885f395205d503bf4b24f462dc9f4af74be11c5b0ad7b09eb150b2d3f8b2c727ab9e67c474ff05baa8e8e3c950880ffe2085ed39794d308c0297667
checksum: 10c0/ae2ff7769970fb403ea71d5613e041d97bb647cfc54e4a428bcc75f98ff06c888b064384df12b18f609bfcc4395c31d6db4ad2b9c9385a829ba594d2692c31d1
languageName: node
linkType: hard
@ -13315,16 +13291,16 @@ __metadata:
languageName: node
linkType: hard
"postcss-double-position-gradients@npm:^5.0.5":
version: 5.0.5
resolution: "postcss-double-position-gradients@npm:5.0.5"
"postcss-double-position-gradients@npm:^5.0.6":
version: 5.0.6
resolution: "postcss-double-position-gradients@npm:5.0.6"
dependencies:
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0"
postcss-value-parser: "npm:^4.2.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/02c22ca055ceca1ecc3c6888eab5c84769c9df37f59855f0ff9e9faaedcb4acf6818e927bff18bd57df161045f775ecca4142b13f968332419976c556a769995
checksum: 10c0/9b24b13043fe506c0ddd94e707fe4f21f4f9a6c05ca49a4f45e23412951fd6a4cfa0095002d10b322ca8be60df0badae3715a27eefdeb7bf8da4fdd1ecd5d7a2
languageName: node
linkType: hard
@ -13380,18 +13356,18 @@ __metadata:
languageName: node
linkType: hard
"postcss-lab-function@npm:^6.0.12":
version: 6.0.12
resolution: "postcss-lab-function@npm:6.0.12"
"postcss-lab-function@npm:^6.0.13":
version: 6.0.13
resolution: "postcss-lab-function@npm:6.0.13"
dependencies:
"@csstools/css-color-parser": "npm:^1.6.2"
"@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0"
peerDependencies:
postcss: ^8.4
checksum: 10c0/1c96c19d0487346445749777df2af7cc828f3e3c4e8a435cac250d03c14efb0d14ee994ac58d966ed07f8f07aa297f0e3311248b78ba1e816bb18386e435a83c
checksum: 10c0/3ffb82d0012e49df49b44f38a131f4b13ba3edeeca5ecc0062c1c1b6bd8961c06f05b1dd8ec620c50c2c406fc61a505d79488745185d69ed325603600f0a1bc8
languageName: node
linkType: hard
@ -13547,16 +13523,16 @@ __metadata:
languageName: node
linkType: hard
"postcss-nesting@npm:^12.1.0":
version: 12.1.0
resolution: "postcss-nesting@npm:12.1.0"
"postcss-nesting@npm:^12.1.1":
version: 12.1.1
resolution: "postcss-nesting@npm:12.1.1"
dependencies:
"@csstools/selector-resolve-nested": "npm:^1.1.0"
"@csstools/selector-specificity": "npm:^3.0.2"
"@csstools/selector-specificity": "npm:^3.0.3"
postcss-selector-parser: "npm:^6.0.13"
peerDependencies:
postcss: ^8.4
checksum: 10c0/87902723214ec33a81520f51cce1e52f52c02272f2b7838d3aaa795e226104bf4809ef9dad8840f43852c1f229afb5f480ab1f20c7677bd021cf57739b625871
checksum: 10c0/8fac718e69ee2ac93179cc59810a8184581c04715fe34621ec5d504fc680cad4a11219ed0c918cbe15c468994c9aba88e729f35eef698c5d44cadd824425c47d
languageName: node
linkType: hard
@ -13711,21 +13687,21 @@ __metadata:
linkType: hard
"postcss-preset-env@npm:^9.5.2":
version: 9.5.2
resolution: "postcss-preset-env@npm:9.5.2"
version: 9.5.4
resolution: "postcss-preset-env@npm:9.5.4"
dependencies:
"@csstools/postcss-cascade-layers": "npm:^4.0.3"
"@csstools/postcss-color-function": "npm:^3.0.12"
"@csstools/postcss-color-mix-function": "npm:^2.0.12"
"@csstools/postcss-cascade-layers": "npm:^4.0.4"
"@csstools/postcss-color-function": "npm:^3.0.13"
"@csstools/postcss-color-mix-function": "npm:^2.0.13"
"@csstools/postcss-exponential-functions": "npm:^1.0.5"
"@csstools/postcss-font-format-keywords": "npm:^3.0.2"
"@csstools/postcss-gamut-mapping": "npm:^1.0.5"
"@csstools/postcss-gradients-interpolation-method": "npm:^4.0.13"
"@csstools/postcss-hwb-function": "npm:^3.0.11"
"@csstools/postcss-ic-unit": "npm:^3.0.5"
"@csstools/postcss-gamut-mapping": "npm:^1.0.6"
"@csstools/postcss-gradients-interpolation-method": "npm:^4.0.14"
"@csstools/postcss-hwb-function": "npm:^3.0.12"
"@csstools/postcss-ic-unit": "npm:^3.0.6"
"@csstools/postcss-initial": "npm:^1.0.1"
"@csstools/postcss-is-pseudo-class": "npm:^4.0.5"
"@csstools/postcss-light-dark-function": "npm:^1.0.1"
"@csstools/postcss-is-pseudo-class": "npm:^4.0.6"
"@csstools/postcss-light-dark-function": "npm:^1.0.3"
"@csstools/postcss-logical-float-and-clear": "npm:^2.0.1"
"@csstools/postcss-logical-overflow": "npm:^1.0.1"
"@csstools/postcss-logical-overscroll-behavior": "npm:^1.0.1"
@ -13735,38 +13711,38 @@ __metadata:
"@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^2.0.7"
"@csstools/postcss-nested-calc": "npm:^3.0.2"
"@csstools/postcss-normalize-display-values": "npm:^3.0.2"
"@csstools/postcss-oklab-function": "npm:^3.0.12"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1"
"@csstools/postcss-relative-color-syntax": "npm:^2.0.12"
"@csstools/postcss-oklab-function": "npm:^3.0.13"
"@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/postcss-relative-color-syntax": "npm:^2.0.13"
"@csstools/postcss-scope-pseudo-class": "npm:^3.0.1"
"@csstools/postcss-stepped-value-functions": "npm:^3.0.6"
"@csstools/postcss-text-decoration-shorthand": "npm:^3.0.4"
"@csstools/postcss-text-decoration-shorthand": "npm:^3.0.5"
"@csstools/postcss-trigonometric-functions": "npm:^3.0.6"
"@csstools/postcss-unset-value": "npm:^3.0.1"
autoprefixer: "npm:^10.4.18"
autoprefixer: "npm:^10.4.19"
browserslist: "npm:^4.22.3"
css-blank-pseudo: "npm:^6.0.1"
css-has-pseudo: "npm:^6.0.2"
css-has-pseudo: "npm:^6.0.3"
css-prefers-color-scheme: "npm:^9.0.1"
cssdb: "npm:^7.11.1"
cssdb: "npm:^8.0.0"
postcss-attribute-case-insensitive: "npm:^6.0.3"
postcss-clamp: "npm:^4.1.0"
postcss-color-functional-notation: "npm:^6.0.7"
postcss-color-functional-notation: "npm:^6.0.8"
postcss-color-hex-alpha: "npm:^9.0.4"
postcss-color-rebeccapurple: "npm:^9.0.3"
postcss-custom-media: "npm:^10.0.4"
postcss-custom-properties: "npm:^13.3.6"
postcss-custom-selectors: "npm:^7.1.8"
postcss-dir-pseudo-class: "npm:^8.0.1"
postcss-double-position-gradients: "npm:^5.0.5"
postcss-double-position-gradients: "npm:^5.0.6"
postcss-focus-visible: "npm:^9.0.1"
postcss-focus-within: "npm:^8.0.1"
postcss-font-variant: "npm:^5.0.0"
postcss-gap-properties: "npm:^5.0.1"
postcss-image-set-function: "npm:^6.0.3"
postcss-lab-function: "npm:^6.0.12"
postcss-lab-function: "npm:^6.0.13"
postcss-logical: "npm:^7.0.1"
postcss-nesting: "npm:^12.1.0"
postcss-nesting: "npm:^12.1.1"
postcss-opacity-percentage: "npm:^2.0.0"
postcss-overflow-shorthand: "npm:^5.0.1"
postcss-page-break: "npm:^3.0.4"
@ -13776,7 +13752,7 @@ __metadata:
postcss-selector-not: "npm:^7.0.2"
peerDependencies:
postcss: ^8.4
checksum: 10c0/40f94472f2d940cbf1df9974bea29a76ada4c1285b97e7104c0cdf001fcafd0a1f5966822250df0d659ec0ea51e577a1ab78c9f5f8a5683ea9897efe043515c1
checksum: 10c0/6af900ad2f46b640339b626317288543ebb7c47b739f4776e4006513b32eceabe0be78109aa58446fa0f50284a433b3e3a9bd48aa5730fd0ac59ef51153e8f7b
languageName: node
linkType: hard
@ -16509,8 +16485,8 @@ __metadata:
linkType: hard
"stylelint@npm:^16.0.2":
version: 16.3.0
resolution: "stylelint@npm:16.3.0"
version: 16.3.1
resolution: "stylelint@npm:16.3.1"
dependencies:
"@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4"
@ -16553,7 +16529,7 @@ __metadata:
write-file-atomic: "npm:^5.0.1"
bin:
stylelint: bin/stylelint.mjs
checksum: 10c0/98bf770078d727eb7c3ec0932b09c9486481f2d086ea1f4232e00bd1bf58b6b5d3a8d6fc9802df05380cdb06b3d97c5a7c4f27adb221b2a5707ea9829c0ee350
checksum: 10c0/1660bb359002ff8e07cea044018b13abc73f48cf02a5062953b086f4d58611cd10677787560774c1acabeb192b6d059ce7fcf4c11defa7f64e50dca908fc664f
languageName: node
linkType: hard