Merge pull request #2967 from ClearlyClaire/glitch-soc/merge-upstream

Merge upstream changes up to 1cf30717db
This commit is contained in:
Claire 2025-02-08 20:29:37 +01:00 committed by GitHub
commit 6d14a36cdc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
23 changed files with 96 additions and 93 deletions

View File

@ -220,7 +220,7 @@ GEM
erubi (1.13.1) erubi (1.13.1)
et-orbi (1.2.11) et-orbi (1.2.11)
tzinfo tzinfo
excon (0.112.0) excon (1.2.3)
fabrication (2.31.0) fabrication (2.31.0)
faker (3.5.1) faker (3.5.1)
i18n (>= 1.8.11, < 2) i18n (>= 1.8.11, < 2)
@ -244,15 +244,15 @@ GEM
flatware-rspec (2.3.4) flatware-rspec (2.3.4)
flatware (= 2.3.4) flatware (= 2.3.4)
rspec (>= 3.6) rspec (>= 3.6)
fog-core (2.5.0) fog-core (2.6.0)
builder builder
excon (~> 0.71) excon (~> 1.0)
formatador (>= 0.2, < 2.0) formatador (>= 0.2, < 2.0)
mime-types mime-types
fog-json (1.2.0) fog-json (1.2.0)
fog-core fog-core
multi_json (~> 1.10) multi_json (~> 1.10)
fog-openstack (1.1.3) fog-openstack (1.1.4)
fog-core (~> 2.1) fog-core (~> 2.1)
fog-json (>= 1.0) fog-json (>= 1.0)
formatador (1.1.0) formatador (1.1.0)
@ -350,7 +350,7 @@ GEM
addressable (~> 2.8) addressable (~> 2.8)
bigdecimal (~> 3.1) bigdecimal (~> 3.1)
jsonapi-renderer (0.2.2) jsonapi-renderer (0.2.2)
jwt (2.9.3) jwt (2.10.1)
base64 base64
kaminari (1.2.2) kaminari (1.2.2)
activesupport (>= 4.1.0) activesupport (>= 4.1.0)
@ -407,7 +407,7 @@ GEM
mime-types (3.6.0) mime-types (3.6.0)
logger logger
mime-types-data (~> 3.2015) mime-types-data (~> 3.2015)
mime-types-data (3.2025.0107) mime-types-data (3.2025.0204)
mini_mime (1.1.5) mini_mime (1.1.5)
mini_portile2 (2.8.8) mini_portile2 (2.8.8)
minitest (5.25.4) minitest (5.25.4)
@ -461,7 +461,7 @@ GEM
validate_email validate_email
validate_url validate_url
webfinger (~> 1.2) webfinger (~> 1.2)
openssl (3.2.1) openssl (3.3.0)
openssl-signature_algorithm (1.3.0) openssl-signature_algorithm (1.3.0)
openssl (> 2.0) openssl (> 2.0)
opentelemetry-api (1.4.0) opentelemetry-api (1.4.0)
@ -697,7 +697,7 @@ GEM
rspec-core (~> 3.13.0) rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0) rspec-expectations (~> 3.13.0)
rspec-mocks (~> 3.13.0) rspec-mocks (~> 3.13.0)
rspec-core (3.13.2) rspec-core (3.13.3)
rspec-support (~> 3.13.0) rspec-support (~> 3.13.0)
rspec-expectations (3.13.3) rspec-expectations (3.13.3)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
@ -707,7 +707,7 @@ GEM
rspec-mocks (3.13.2) rspec-mocks (3.13.2)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0) rspec-support (~> 3.13.0)
rspec-rails (7.1.0) rspec-rails (7.1.1)
actionpack (>= 7.0) actionpack (>= 7.0)
activesupport (>= 7.0) activesupport (>= 7.0)
railties (>= 7.0) railties (>= 7.0)
@ -753,7 +753,7 @@ GEM
ruby-saml (1.17.0) ruby-saml (1.17.0)
nokogiri (>= 1.13.10) nokogiri (>= 1.13.10)
rexml rexml
ruby-vips (2.2.2) ruby-vips (2.2.3)
ffi (~> 1.12) ffi (~> 1.12)
logger logger
rubyzip (2.4.1) rubyzip (2.4.1)
@ -825,7 +825,7 @@ GEM
thor (1.3.2) thor (1.3.2)
tilt (2.6.0) tilt (2.6.0)
timeout (0.4.3) timeout (0.4.3)
tpm-key_attestation (0.12.1) tpm-key_attestation (0.14.0)
bindata (~> 2.4) bindata (~> 2.4)
openssl (> 2.0) openssl (> 2.0)
openssl-signature_algorithm (~> 1.0) openssl-signature_algorithm (~> 1.0)
@ -860,18 +860,18 @@ GEM
public_suffix public_suffix
warden (1.2.9) warden (1.2.9)
rack (>= 2.0.9) rack (>= 2.0.9)
webauthn (3.2.2) webauthn (3.3.0)
android_key_attestation (~> 0.3.0) android_key_attestation (~> 0.3.0)
bindata (~> 2.4) bindata (~> 2.4)
cbor (~> 0.5.9) cbor (~> 0.5.9)
cose (~> 1.1) cose (~> 1.1)
openssl (>= 2.2) openssl (>= 2.2)
safety_net_attestation (~> 0.4.0) safety_net_attestation (~> 0.4.0)
tpm-key_attestation (~> 0.12.0) tpm-key_attestation (~> 0.14.0)
webfinger (1.2.0) webfinger (1.2.0)
activesupport activesupport
httpclient (>= 2.4) httpclient (>= 2.4)
webmock (3.24.0) webmock (3.25.0)
addressable (>= 2.8.0) addressable (>= 2.8.0)
crack (>= 0.3.2) crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0) hashdiff (>= 0.4.0, < 2.0.0)

View File

@ -45,7 +45,7 @@
"account.languages": "Ŝanĝi la abonitajn lingvojn", "account.languages": "Ŝanĝi la abonitajn lingvojn",
"account.link_verified_on": "Propreco de tiu ligilo estis konfirmita je {date}", "account.link_verified_on": "Propreco de tiu ligilo estis konfirmita je {date}",
"account.locked_info": "Tiu konto estas privatigita. La posedanto mane akceptas tiun, kiu povas sekvi rin.", "account.locked_info": "Tiu konto estas privatigita. La posedanto mane akceptas tiun, kiu povas sekvi rin.",
"account.media": "Plurmedio", "account.media": "Aŭdovidaĵoj",
"account.mention": "Mencii @{name}", "account.mention": "Mencii @{name}",
"account.moved_to": "{name} indikis, ke ria nova konto estas nun:", "account.moved_to": "{name} indikis, ke ria nova konto estas nun:",
"account.mute": "Silentigi @{name}", "account.mute": "Silentigi @{name}",
@ -172,7 +172,7 @@
"column_search.cancel": "Nuligi", "column_search.cancel": "Nuligi",
"column_subheading.settings": "Agordoj", "column_subheading.settings": "Agordoj",
"community.column_settings.local_only": "Nur loka", "community.column_settings.local_only": "Nur loka",
"community.column_settings.media_only": "Nur plurmedio", "community.column_settings.media_only": "Nur vidaŭdaĵoj",
"community.column_settings.remote_only": "Nur fora", "community.column_settings.remote_only": "Nur fora",
"compose.language.change": "Ŝanĝi lingvon", "compose.language.change": "Ŝanĝi lingvon",
"compose.language.search": "Serĉi lingvojn...", "compose.language.search": "Serĉi lingvojn...",
@ -208,7 +208,7 @@
"confirmations.delete_list.message": "Ĉu vi certas, ke vi volas porĉiame forigi ĉi tiun liston?", "confirmations.delete_list.message": "Ĉu vi certas, ke vi volas porĉiame forigi ĉi tiun liston?",
"confirmations.delete_list.title": "Ĉu forigi liston?", "confirmations.delete_list.title": "Ĉu forigi liston?",
"confirmations.discard_edit_media.confirm": "Forĵeti", "confirmations.discard_edit_media.confirm": "Forĵeti",
"confirmations.discard_edit_media.message": "Vi havas nekonservitajn ŝanĝojn de la priskribo aŭ la antaŭmontro de la plurmedio, ĉu vi forĵetu ilin malgraŭe?", "confirmations.discard_edit_media.message": "Vi havas nekonservitajn ŝanĝojn de la priskribo aŭ la antaŭvidigo de la vidaŭdaĵo, ĉu vi forĵetu ilin malgraŭe?",
"confirmations.edit.confirm": "Redakti", "confirmations.edit.confirm": "Redakti",
"confirmations.edit.message": "Redakti nun anstataŭigos la skribatan afiŝon. Ĉu vi certas, ke vi volas daŭrigi?", "confirmations.edit.message": "Redakti nun anstataŭigos la skribatan afiŝon. Ĉu vi certas, ke vi volas daŭrigi?",
"confirmations.edit.title": "Ĉu superskribi afiŝon?", "confirmations.edit.title": "Ĉu superskribi afiŝon?",
@ -459,7 +459,7 @@
"keyboard_shortcuts.muted": "Malfermu la liston de silentigitaj uzantoj", "keyboard_shortcuts.muted": "Malfermu la liston de silentigitaj uzantoj",
"keyboard_shortcuts.my_profile": "Malfermu vian profilon", "keyboard_shortcuts.my_profile": "Malfermu vian profilon",
"keyboard_shortcuts.notifications": "Malfermu la sciigajn kolumnon", "keyboard_shortcuts.notifications": "Malfermu la sciigajn kolumnon",
"keyboard_shortcuts.open_media": "Malfermu plurmedion", "keyboard_shortcuts.open_media": "Malfermi vidaŭdaĵon",
"keyboard_shortcuts.pinned": "Malfermu alpinglitajn afiŝojn-liston", "keyboard_shortcuts.pinned": "Malfermu alpinglitajn afiŝojn-liston",
"keyboard_shortcuts.profile": "Malfermu la profilon de aŭtoroprofilo", "keyboard_shortcuts.profile": "Malfermu la profilon de aŭtoroprofilo",
"keyboard_shortcuts.reply": "Respondu al afiŝo", "keyboard_shortcuts.reply": "Respondu al afiŝo",
@ -468,7 +468,7 @@
"keyboard_shortcuts.spoilers": "Montri/kaŝi CW-kampon", "keyboard_shortcuts.spoilers": "Montri/kaŝi CW-kampon",
"keyboard_shortcuts.start": "Malfermu \"por komenci\" kolumnon", "keyboard_shortcuts.start": "Malfermu \"por komenci\" kolumnon",
"keyboard_shortcuts.toggle_hidden": "Montri/kaŝi tekston malantaŭ CW", "keyboard_shortcuts.toggle_hidden": "Montri/kaŝi tekston malantaŭ CW",
"keyboard_shortcuts.toggle_sensitivity": "Montri/kaŝi plurmedion", "keyboard_shortcuts.toggle_sensitivity": "Montri/kaŝi vidaŭdaĵojn",
"keyboard_shortcuts.toot": "Komencu novan afiŝon", "keyboard_shortcuts.toot": "Komencu novan afiŝon",
"keyboard_shortcuts.translate": "Traduki afiŝon", "keyboard_shortcuts.translate": "Traduki afiŝon",
"keyboard_shortcuts.unfocus": "Senfokusigi verki tekstareon/serĉon", "keyboard_shortcuts.unfocus": "Senfokusigi verki tekstareon/serĉon",
@ -540,7 +540,7 @@
"navigation_bar.follows_and_followers": "Sekvatoj kaj sekvantoj", "navigation_bar.follows_and_followers": "Sekvatoj kaj sekvantoj",
"navigation_bar.lists": "Listoj", "navigation_bar.lists": "Listoj",
"navigation_bar.logout": "Elsaluti", "navigation_bar.logout": "Elsaluti",
"navigation_bar.moderation": "Modereco", "navigation_bar.moderation": "Reguligo",
"navigation_bar.mutes": "Silentigitaj uzantoj", "navigation_bar.mutes": "Silentigitaj uzantoj",
"navigation_bar.opened_in_classic_interface": "Afiŝoj, kontoj, kaj aliaj specifaj paĝoj kiuj estas malfermititaj defaulta en la klasika reta interfaco.", "navigation_bar.opened_in_classic_interface": "Afiŝoj, kontoj, kaj aliaj specifaj paĝoj kiuj estas malfermititaj defaulta en la klasika reta interfaco.",
"navigation_bar.personal": "Persone", "navigation_bar.personal": "Persone",
@ -574,11 +574,11 @@
"notification.mention": "Mencii", "notification.mention": "Mencii",
"notification.mentioned_you": "{name} menciis vin", "notification.mentioned_you": "{name} menciis vin",
"notification.moderation-warning.learn_more": "Lerni pli", "notification.moderation-warning.learn_more": "Lerni pli",
"notification.moderation_warning": "Vi ricevis moderigan averton", "notification.moderation_warning": "Vi ricevis reguligan averton",
"notification.moderation_warning.action_delete_statuses": "Kelkaj el viaj afiŝoj estis forigitaj.", "notification.moderation_warning.action_delete_statuses": "Kelkaj el viaj afiŝoj estis forigitaj.",
"notification.moderation_warning.action_disable": "Via konto estas malŝaltita.", "notification.moderation_warning.action_disable": "Via konto estas malŝaltita.",
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Kelkaj el viaj afiŝoj estis markitaj kiel sentemaj.", "notification.moderation_warning.action_mark_statuses_as_sensitive": "Kelkaj el viaj afiŝoj estis markitaj kiel sentemaj.",
"notification.moderation_warning.action_none": "Via konto ricevis moderigan averton.", "notification.moderation_warning.action_none": "Via konto ricevis reguligan averton.",
"notification.moderation_warning.action_sensitive": "Viaj afiŝoj estos markitaj kiel sentemaj ekde nun.", "notification.moderation_warning.action_sensitive": "Viaj afiŝoj estos markitaj kiel sentemaj ekde nun.",
"notification.moderation_warning.action_silence": "Via konto estis limigita.", "notification.moderation_warning.action_silence": "Via konto estis limigita.",
"notification.moderation_warning.action_suspend": "Via konto estas malakceptita.", "notification.moderation_warning.action_suspend": "Via konto estas malakceptita.",
@ -605,8 +605,8 @@
"notification_requests.dismiss_multiple": "{count, plural, one {Malakcepti # peton…} other {# Malakcepti # petojn…}}", "notification_requests.dismiss_multiple": "{count, plural, one {Malakcepti # peton…} other {# Malakcepti # petojn…}}",
"notification_requests.edit_selection": "Redakti", "notification_requests.edit_selection": "Redakti",
"notification_requests.exit_selection": "Farita", "notification_requests.exit_selection": "Farita",
"notification_requests.explainer_for_limited_account": "Sciigoj de ĉi tiu konto estis filtritaj ĉar la konto estis limigita de moderanto.", "notification_requests.explainer_for_limited_account": "Sciigoj de ĉi tiu konto estis filtritaj ĉar la konto estis limigita de reguligisto.",
"notification_requests.explainer_for_limited_remote_account": "Sciigoj de ĉi tiu konto estis filtritaj ĉar la konto aŭ ĝia servilo estis limigitaj de moderanto.", "notification_requests.explainer_for_limited_remote_account": "Sciigoj de ĉi tiu konto estis filtritaj ĉar la konto aŭ ĝia servilo estis limigitaj de reguligisto.",
"notification_requests.maximize": "Maksimumigi", "notification_requests.maximize": "Maksimumigi",
"notification_requests.minimize_banner": "Minimumigi filtritajn sciigojn-rubandon", "notification_requests.minimize_banner": "Minimumigi filtritajn sciigojn-rubandon",
"notification_requests.notifications_from": "Sciigoj de {name}", "notification_requests.notifications_from": "Sciigoj de {name}",
@ -653,8 +653,8 @@
"notifications.policy.drop_hint": "Sendi al la malpleno, por neniam esti vidita denove", "notifications.policy.drop_hint": "Sendi al la malpleno, por neniam esti vidita denove",
"notifications.policy.filter": "Filtri", "notifications.policy.filter": "Filtri",
"notifications.policy.filter_hint": "Sendi al filtritaj sciigoj-enirkesto", "notifications.policy.filter_hint": "Sendi al filtritaj sciigoj-enirkesto",
"notifications.policy.filter_limited_accounts_hint": "Limigita de servilaj moderigantoj", "notifications.policy.filter_limited_accounts_hint": "Limigita de servilaj reguligistoj",
"notifications.policy.filter_limited_accounts_title": "Moderigitaj kontoj", "notifications.policy.filter_limited_accounts_title": "Reguligitaj kontoj",
"notifications.policy.filter_new_accounts.hint": "Kreite en la {days, plural, one {lasta tago} other {# lastaj tagoj}}", "notifications.policy.filter_new_accounts.hint": "Kreite en la {days, plural, one {lasta tago} other {# lastaj tagoj}}",
"notifications.policy.filter_new_accounts_title": "Novaj kontoj", "notifications.policy.filter_new_accounts_title": "Novaj kontoj",
"notifications.policy.filter_not_followers_hint": "Inkluzive de homoj, kiuj sekvis vin malpli ol {days, plural, one {unu tago} other {# tagoj}}", "notifications.policy.filter_not_followers_hint": "Inkluzive de homoj, kiuj sekvis vin malpli ol {days, plural, one {unu tago} other {# tagoj}}",
@ -781,7 +781,7 @@
"search.quick_action.go_to_account": "Iri al profilo {x}", "search.quick_action.go_to_account": "Iri al profilo {x}",
"search.quick_action.go_to_hashtag": "Iri al kradvorto {x}", "search.quick_action.go_to_hashtag": "Iri al kradvorto {x}",
"search.quick_action.open_url": "Malfermi URL en Mastodono", "search.quick_action.open_url": "Malfermi URL en Mastodono",
"search.quick_action.status_search": "Afiŝoj kiuj kongruas kun {x}", "search.quick_action.status_search": "Afiŝoj kiuj konformas kun {x}",
"search.search_or_paste": "Serĉu aŭ algluu URL-on", "search.search_or_paste": "Serĉu aŭ algluu URL-on",
"search_popout.full_text_search_disabled_message": "Ne havebla sur {domain}.", "search_popout.full_text_search_disabled_message": "Ne havebla sur {domain}.",
"search_popout.full_text_search_logged_out_message": "Disponebla nur kiam ensalutinte.", "search_popout.full_text_search_logged_out_message": "Disponebla nur kiam ensalutinte.",
@ -796,7 +796,7 @@
"search_results.hashtags": "Kradvortoj", "search_results.hashtags": "Kradvortoj",
"search_results.no_results": "Ne estas rezultoj.", "search_results.no_results": "Ne estas rezultoj.",
"search_results.no_search_yet": "Provu serĉi afiŝojn, profilojn aŭ kradvortojn.", "search_results.no_search_yet": "Provu serĉi afiŝojn, profilojn aŭ kradvortojn.",
"search_results.see_all": "Vidu ĉiujn", "search_results.see_all": "Vidi ĉiujn",
"search_results.statuses": "Afiŝoj", "search_results.statuses": "Afiŝoj",
"search_results.title": "Serĉu \"{q}\"", "search_results.title": "Serĉu \"{q}\"",
"server_banner.about_active_users": "Personoj uzantaj ĉi tiun servilon dum la lastaj 30 tagoj (Aktivaj Uzantoj Monate)", "server_banner.about_active_users": "Personoj uzantaj ĉi tiun servilon dum la lastaj 30 tagoj (Aktivaj Uzantoj Monate)",
@ -809,9 +809,9 @@
"sign_in_banner.mastodon_is": "Mastodon estas la plej bona maniero resti ĝisdata pri aktualaĵoj.", "sign_in_banner.mastodon_is": "Mastodon estas la plej bona maniero resti ĝisdata pri aktualaĵoj.",
"sign_in_banner.sign_in": "Ensaluti", "sign_in_banner.sign_in": "Ensaluti",
"sign_in_banner.sso_redirect": "Ensalutu aŭ Registriĝi", "sign_in_banner.sso_redirect": "Ensalutu aŭ Registriĝi",
"status.admin_account": "Malfermi fasadon de moderigado por @{name}", "status.admin_account": "Malfermi fasadon de la reguligado por @{name}",
"status.admin_domain": "Malfermu moderigan interfacon por {domain}", "status.admin_domain": "Malfermi fasadon de la reguligado por {domain}",
"status.admin_status": "Malfermi ĉi tiun afiŝon en la kontrola interfaco", "status.admin_status": "Malfermi ĉi tiun afiŝon en la fasado de la reguligado",
"status.block": "Bloki @{name}", "status.block": "Bloki @{name}",
"status.bookmark": "Aldoni al la legosignoj", "status.bookmark": "Aldoni al la legosignoj",
"status.cancel_reblog_private": "Ne plu diskonigi", "status.cancel_reblog_private": "Ne plu diskonigi",
@ -834,7 +834,7 @@
"status.load_more": "Ŝargi pli", "status.load_more": "Ŝargi pli",
"status.media.open": "Alklaki por malfermi", "status.media.open": "Alklaki por malfermi",
"status.media.show": "Alklaki por montri", "status.media.show": "Alklaki por montri",
"status.media_hidden": "Plurmedio kaŝita", "status.media_hidden": "Vidaŭdaĵo kaŝita",
"status.mention": "Mencii @{name}", "status.mention": "Mencii @{name}",
"status.more": "Pli", "status.more": "Pli",
"status.mute": "Silentigi @{name}", "status.mute": "Silentigi @{name}",

View File

@ -87,8 +87,11 @@
"alert.unexpected.title": "エラー!", "alert.unexpected.title": "エラー!",
"alt_text_badge.title": "代替テキスト", "alt_text_badge.title": "代替テキスト",
"alt_text_modal.add_alt_text": "代替テキストを追加", "alt_text_modal.add_alt_text": "代替テキストを追加",
"alt_text_modal.add_text_from_image": "画像からテキストを追加",
"alt_text_modal.cancel": "キャンセル", "alt_text_modal.cancel": "キャンセル",
"alt_text_modal.change_thumbnail": "サムネイルを変更", "alt_text_modal.change_thumbnail": "サムネイルを変更",
"alt_text_modal.describe_for_people_with_hearing_impairments": "耳の不自由な方のために説明してください…",
"alt_text_modal.describe_for_people_with_visual_impairments": "目が不自由な方のために説明してください…",
"alt_text_modal.done": "完了", "alt_text_modal.done": "完了",
"announcement.announcement": "お知らせ", "announcement.announcement": "お知らせ",
"annual_report.summary.archetype.booster": "トレンドハンター", "annual_report.summary.archetype.booster": "トレンドハンター",
@ -215,6 +218,10 @@
"confirmations.logout.confirm": "ログアウト", "confirmations.logout.confirm": "ログアウト",
"confirmations.logout.message": "本当にログアウトしますか?", "confirmations.logout.message": "本当にログアウトしますか?",
"confirmations.logout.title": "ログアウトしようとしています", "confirmations.logout.title": "ログアウトしようとしています",
"confirmations.missing_alt_text.confirm": "代替テキストを追加",
"confirmations.missing_alt_text.message": "あなたの投稿には大体テキストのないメディアが含まれています。説明文を追加することで、より多くの人がコンテンツにアクセスできるようになります。",
"confirmations.missing_alt_text.secondary": "そのまま投稿する",
"confirmations.missing_alt_text.title": "代替テキストを追加しますか?",
"confirmations.mute.confirm": "ミュート", "confirmations.mute.confirm": "ミュート",
"confirmations.redraft.confirm": "削除して下書きに戻す", "confirmations.redraft.confirm": "削除して下書きに戻す",
"confirmations.redraft.message": "投稿を削除して下書きに戻します。この投稿へのお気に入り登録やブーストは失われ、返信は孤立することになります。よろしいですか?", "confirmations.redraft.message": "投稿を削除して下書きに戻します。この投稿へのお気に入り登録やブーストは失われ、返信は孤立することになります。よろしいですか?",
@ -463,6 +470,7 @@
"keyboard_shortcuts.toggle_hidden": "CWで隠れた文を見る/隠す", "keyboard_shortcuts.toggle_hidden": "CWで隠れた文を見る/隠す",
"keyboard_shortcuts.toggle_sensitivity": "非表示のメディアを見る/隠す", "keyboard_shortcuts.toggle_sensitivity": "非表示のメディアを見る/隠す",
"keyboard_shortcuts.toot": "新規投稿", "keyboard_shortcuts.toot": "新規投稿",
"keyboard_shortcuts.translate": "投稿を翻訳する",
"keyboard_shortcuts.unfocus": "投稿の入力欄・検索欄から離れる", "keyboard_shortcuts.unfocus": "投稿の入力欄・検索欄から離れる",
"keyboard_shortcuts.up": "カラム内一つ上に移動", "keyboard_shortcuts.up": "カラム内一つ上に移動",
"lightbox.close": "閉じる", "lightbox.close": "閉じる",

View File

@ -817,7 +817,7 @@
"status.cancel_reblog_private": "Retirar impulso", "status.cancel_reblog_private": "Retirar impulso",
"status.cannot_reblog": "Esta publicação não pode ser impulsionada", "status.cannot_reblog": "Esta publicação não pode ser impulsionada",
"status.continued_thread": "Continuação da conversa", "status.continued_thread": "Continuação da conversa",
"status.copy": "Copiar hiperligação para a publicação", "status.copy": "Copiar hiperligação da publicação",
"status.delete": "Eliminar", "status.delete": "Eliminar",
"status.detailed_status": "Vista pormenorizada da conversa", "status.detailed_status": "Vista pormenorizada da conversa",
"status.direct": "Mencionar @{name} em privado", "status.direct": "Mencionar @{name} em privado",

View File

@ -205,6 +205,7 @@
"confirmations.logout.confirm": "Odhlásiť sa", "confirmations.logout.confirm": "Odhlásiť sa",
"confirmations.logout.message": "Určite sa chcete odhlásiť?", "confirmations.logout.message": "Určite sa chcete odhlásiť?",
"confirmations.logout.title": "Odhlásiť sa?", "confirmations.logout.title": "Odhlásiť sa?",
"confirmations.missing_alt_text.secondary": "Odošli aj tak",
"confirmations.mute.confirm": "Stíšiť", "confirmations.mute.confirm": "Stíšiť",
"confirmations.redraft.confirm": "Vymazať a prepísať", "confirmations.redraft.confirm": "Vymazať a prepísať",
"confirmations.redraft.message": "Určite chcete tento príspevok vymazať a prepísať? Prídete o jeho zdieľania a ohviezdičkovania a odpovede na pôvodný príspevok budú odlúčené.", "confirmations.redraft.message": "Určite chcete tento príspevok vymazať a prepísať? Prídete o jeho zdieľania a ohviezdičkovania a odpovede na pôvodný príspevok budú odlúčené.",
@ -319,6 +320,7 @@
"follow_requests.unlocked_explanation": "Aj keď váš účet nie je uzamknutý, tím domény {domain} si myslel, že môžete chcieť skontrolovať žiadosti o sledovanie z týchto účtov manuálne.", "follow_requests.unlocked_explanation": "Aj keď váš účet nie je uzamknutý, tím domény {domain} si myslel, že môžete chcieť skontrolovať žiadosti o sledovanie z týchto účtov manuálne.",
"follow_suggestions.curated_suggestion": "Výber redakcie", "follow_suggestions.curated_suggestion": "Výber redakcie",
"follow_suggestions.dismiss": "Znova nezobrazovať", "follow_suggestions.dismiss": "Znova nezobrazovať",
"follow_suggestions.featured_longer": "Ručne vybrané tímom {domain}",
"follow_suggestions.friends_of_friends_longer": "Populárne medzi ľudmi ktorých nasleduješ", "follow_suggestions.friends_of_friends_longer": "Populárne medzi ľudmi ktorých nasleduješ",
"follow_suggestions.hints.featured": "Tento profil bol ručne zvolený tímom domény {domain}.", "follow_suggestions.hints.featured": "Tento profil bol ručne zvolený tímom domény {domain}.",
"follow_suggestions.hints.friends_of_friends": "Tento profil je obľúbený medzi účtami, ktoré sledujete.", "follow_suggestions.hints.friends_of_friends": "Tento profil je obľúbený medzi účtami, ktoré sledujete.",

View File

@ -219,6 +219,7 @@
"confirmations.logout.message": "Ви впевнені, що хочете вийти?", "confirmations.logout.message": "Ви впевнені, що хочете вийти?",
"confirmations.logout.title": "Вийти?", "confirmations.logout.title": "Вийти?",
"confirmations.missing_alt_text.confirm": "Додати альтернативний текст", "confirmations.missing_alt_text.confirm": "Додати альтернативний текст",
"confirmations.missing_alt_text.message": "У вашому дописі є медіа без альтернативного тексту. Додавання опису допоможе зробити ваші матеріали доступними для більшої кількості людей.",
"confirmations.missing_alt_text.secondary": "Все одно опублікувати", "confirmations.missing_alt_text.secondary": "Все одно опублікувати",
"confirmations.missing_alt_text.title": "Додати альтернативний текст?", "confirmations.missing_alt_text.title": "Додати альтернативний текст?",
"confirmations.mute.confirm": "Приховати", "confirmations.mute.confirm": "Приховати",

View File

@ -76,7 +76,7 @@ class Admin::SystemCheck::MediaPrivacyCheck < Admin::SystemCheck::BaseCheck
def media_attachment def media_attachment
@media_attachment ||= begin @media_attachment ||= begin
attachment = Account.representative.media_attachments.first attachment = Account.representative.media_attachments.take
if attachment.present? if attachment.present?
attachment.touch attachment.touch
attachment attachment

View File

@ -32,6 +32,15 @@ class FeedManager
"feed:#{type}:#{id}:#{subtype}" "feed:#{type}:#{id}:#{subtype}"
end end
# The number of items in the given timeline
# @param [Symbol] type
# @param [Integer] id
# @param [Symbol] subtype
# @return [Integer]
def timeline_size(type, id, subtype = nil)
redis.zcard(key(type, id, subtype))
end
# The filter result of the status to a particular feed # The filter result of the status to a particular feed
# @param [Symbol] timeline_type # @param [Symbol] timeline_type
# @param [Status] status # @param [Status] status

View File

@ -3,14 +3,22 @@
class PrecomputeFeedService < BaseService class PrecomputeFeedService < BaseService
include Redisable include Redisable
def call(account) def call(account, skip_filled_timelines: false)
FeedManager.instance.populate_home(account) @skip_filled_timelines = skip_filled_timelines
FeedManager.instance.populate_direct_feed(account)
FeedManager.instance.populate_home(account) unless skip_timeline?(:home, account.id)
FeedManager.instance.populate_direct_feed(account) unless skip_timeline?(:direct, account.id)
account.owned_lists.each do |list| account.owned_lists.each do |list|
FeedManager.instance.populate_list(list) FeedManager.instance.populate_list(list) unless skip_timeline?(:list, list.id)
end end
ensure ensure
redis.del("account:#{account.id}:regeneration") redis.del("account:#{account.id}:regeneration")
end end
private
def skip_timeline?(type, id)
@skip_filled_timelines && FeedManager.instance.timeline_size(type, id) * 2 > FeedManager::MAX_ITEMS
end
end end

View File

@ -191,7 +191,7 @@ eo:
write:filters: krei filtrilojn write:filters: krei filtrilojn
write:follows: sekvi homojn write:follows: sekvi homojn
write:lists: krei listojn write:lists: krei listojn
write:media: alŝuti plurmediojn write:media: alŝuti aŭdovidaĵojn
write:mutes: silentigi homojn kaj konversaciojn write:mutes: silentigi homojn kaj konversaciojn
write:notifications: forigi viajn sciigojn write:notifications: forigi viajn sciigojn
write:reports: signali aliajn homojn write:reports: signali aliajn homojn

View File

@ -363,7 +363,7 @@ eo:
dashboard: dashboard:
active_users: aktivaj uzantoj active_users: aktivaj uzantoj
interactions: interago interactions: interago
media_storage: Konservo de plurmedioj media_storage: Konservo de aŭdovidaĵoj
new_users: novaj uzantoj new_users: novaj uzantoj
opened_reports: raportoj malfermitaj opened_reports: raportoj malfermitaj
pending_appeals_html: pending_appeals_html:
@ -508,7 +508,7 @@ eo:
description_html: Vi povas difini enhavopolitikojn al la ĉiuj kontoj. description_html: Vi povas difini enhavopolitikojn al la ĉiuj kontoj.
limited_federation_mode_description_html: Vi povas elekti, ĉu permesi federacion kun tiu domajno. limited_federation_mode_description_html: Vi povas elekti, ĉu permesi federacion kun tiu domajno.
policies: policies:
reject_media: Malakcepti plurmediojn reject_media: Malakcepti la vidaŭdaĵojn
reject_reports: Malakcepti raportojn reject_reports: Malakcepti raportojn
silence: Kaŝu silence: Kaŝu
suspend: Suspendi suspend: Suspendi

View File

@ -56,10 +56,10 @@ eo:
scopes: Kiujn API-ojn la aplikaĵo permesiĝos atingi. Se vi elektas supran amplekson, vi ne bezonas elekti la individuajn. scopes: Kiujn API-ojn la aplikaĵo permesiĝos atingi. Se vi elektas supran amplekson, vi ne bezonas elekti la individuajn.
setting_aggregate_reblogs: Ne montri novajn plusendojn de mesaĝoj lastatempe plusenditaj (nur efikas al nove ricevitaj plusendoj) setting_aggregate_reblogs: Ne montri novajn plusendojn de mesaĝoj lastatempe plusenditaj (nur efikas al nove ricevitaj plusendoj)
setting_always_send_emails: Normale, la sciigoj per retpoŝto ne estos senditaj kiam vi uzas Mastodon aktive setting_always_send_emails: Normale, la sciigoj per retpoŝto ne estos senditaj kiam vi uzas Mastodon aktive
setting_default_sensitive: Tiklaj plurmedioj estas kaŝitaj implicite, kaj povas esti montritaj per klako setting_default_sensitive: Tiklaj vidaŭdaĵoj estas kaŝitaj implicite, kaj povas esti montritaj per klako
setting_display_media_default: Kaŝi plurmediojn markitajn kiel tiklaj setting_display_media_default: Kaŝi plurmediojn markitajn kiel tiklaj
setting_display_media_hide_all: Ĉiam kaŝi la plurmediojn setting_display_media_hide_all: Ĉiam kaŝi la vidaŭdaĵojn
setting_display_media_show_all: Ĉiam montri la plurmediojn setting_display_media_show_all: Ĉiam montri la vidaŭdaĵojn
setting_system_scrollbars_ui: Aplikas nur por surtablaj retumiloj baziĝas de Safari kaj Chrome setting_system_scrollbars_ui: Aplikas nur por surtablaj retumiloj baziĝas de Safari kaj Chrome
setting_use_blurhash: Transirojn estas bazita sur la koloroj de la kaŝitaj aŭdovidaĵoj sed ne montri iun ajn detalon setting_use_blurhash: Transirojn estas bazita sur la koloroj de la kaŝitaj aŭdovidaĵoj sed ne montri iun ajn detalon
setting_use_pending_items: Kaŝi tempoliniajn ĝisdatigojn malantaŭ klako anstataŭ aŭtomate rulumi la fluon setting_use_pending_items: Kaŝi tempoliniajn ĝisdatigojn malantaŭ klako anstataŭ aŭtomate rulumi la fluon
@ -223,11 +223,11 @@ eo:
setting_boost_modal: Montri konfirman fenestron antaŭ ol diskonigi mesaĝon setting_boost_modal: Montri konfirman fenestron antaŭ ol diskonigi mesaĝon
setting_default_language: Publikada lingvo setting_default_language: Publikada lingvo
setting_default_privacy: Privateco de afiŝado setting_default_privacy: Privateco de afiŝado
setting_default_sensitive: Ĉiam marki plurmediojn kiel tiklaj setting_default_sensitive: Ĉiam marki la vidaŭdaĵojn kiel tiklaj
setting_delete_modal: Montri konfirman fenestron antaŭ ol forigi mesaĝon setting_delete_modal: Montri konfirman fenestron antaŭ ol forigi mesaĝon
setting_disable_hover_cards: Malebligi profilan antaŭmontron kiam oni musumas setting_disable_hover_cards: Malebligi profilan antaŭmontron kiam oni musumas
setting_disable_swiping: Malebligi svingajn movojn setting_disable_swiping: Malebligi svingajn movojn
setting_display_media: Montrado de plurmedioj setting_display_media: Vidigo de vidaŭdaĵoj
setting_display_media_default: Implicita setting_display_media_default: Implicita
setting_display_media_hide_all: Kaŝi ĉiujn setting_display_media_hide_all: Kaŝi ĉiujn
setting_display_media_show_all: Montri ĉiujn setting_display_media_show_all: Montri ĉiujn

View File

@ -232,6 +232,7 @@ uk:
setting_display_media_show_all: Показати всі setting_display_media_show_all: Показати всі
setting_expand_spoilers: Завжди розгортати дописи з попередженнями про вміст setting_expand_spoilers: Завжди розгортати дописи з попередженнями про вміст
setting_hide_network: Сховати вашу мережу setting_hide_network: Сховати вашу мережу
setting_missing_alt_text_modal: Запитувати перед розміщенням медіа без альтернативного тексту
setting_reduce_motion: Менше руху в анімаціях setting_reduce_motion: Менше руху в анімаціях
setting_system_font_ui: Використовувати типовий системний шрифт setting_system_font_ui: Використовувати типовий системний шрифт
setting_system_scrollbars_ui: Використовувати системну панель гортання setting_system_scrollbars_ui: Використовувати системну панель гортання

View File

@ -391,6 +391,7 @@ sk:
email_domain_blocks: email_domain_blocks:
add_new: Pridaj nový add_new: Pridaj nový
allow_registrations_with_approval: Povoľ registrovanie so schválením allow_registrations_with_approval: Povoľ registrovanie so schválením
created_msg: Úspešne zablokovaná emailová doména
delete: Vymaž delete: Vymaž
dns: dns:
types: types:
@ -399,6 +400,7 @@ sk:
new: new:
create: Pridaj doménu create: Pridaj doménu
resolve: Preveď doménu resolve: Preveď doménu
title: Blokovať novú emailovú doménu
not_permitted: Nepovolená not_permitted: Nepovolená
resolved_through_html: Prevedená cez %{domain} resolved_through_html: Prevedená cez %{domain}
title: Blokované e-mailové domény title: Blokované e-mailové domény

View File

@ -11,17 +11,21 @@ module Mastodon::CLI
option :concurrency, type: :numeric, default: 5, aliases: [:c] option :concurrency, type: :numeric, default: 5, aliases: [:c]
option :verbose, type: :boolean, aliases: [:v] option :verbose, type: :boolean, aliases: [:v]
option :dry_run, type: :boolean, default: false option :dry_run, type: :boolean, default: false
option :skip_filled_timelines
desc 'build [USERNAME]', 'Build home and list feeds for one or all users' desc 'build [USERNAME]', 'Build home and list feeds for one or all users'
long_desc <<-LONG_DESC long_desc <<-LONG_DESC
Build home and list feeds that are stored in Redis from the database. Build home and list feeds that are stored in Redis from the database.
With the --skip-filled-timelines, timelines which contain more than half
the maximum number of posts will be skipped.
With the --all option, all active users will be processed. With the --all option, all active users will be processed.
Otherwise, a single user specified by USERNAME. Otherwise, a single user specified by USERNAME.
LONG_DESC LONG_DESC
def build(username = nil) def build(username = nil)
if options[:all] || username.nil? if options[:all] || username.nil?
processed, = parallelize_with_progress(active_user_accounts) do |account| processed, = parallelize_with_progress(active_user_accounts) do |account|
PrecomputeFeedService.new.call(account) unless dry_run? PrecomputeFeedService.new.call(account, skip_filled_timelines: options[:skip_filled_timelines]) unless dry_run?
end end
say("Regenerated feeds for #{processed} accounts #{dry_run_mode_suffix}", :green, true) say("Regenerated feeds for #{processed} accounts #{dry_run_mode_suffix}", :green, true)
@ -30,7 +34,7 @@ module Mastodon::CLI
fail_with_message 'No such account' if account.nil? fail_with_message 'No such account' if account.nil?
PrecomputeFeedService.new.call(account) unless dry_run? PrecomputeFeedService.new.call(account, skip_filled_timelines: options[:skip_filled_timelines]) unless dry_run?
say("OK #{dry_run_mode_suffix}", :green, true) say("OK #{dry_run_mode_suffix}", :green, true)
else else

View File

@ -40,15 +40,11 @@ RSpec.describe Api::RateLimitHeaders do
end end
end end
it 'applies rate limiting limit header' do it 'provides rate limit information in headers' do
expect(response.headers['X-RateLimit-Limit']).to eq '100' expect(response.headers['X-RateLimit-Limit']).to eq '100'
end
it 'applies rate limiting remaining header' do
expect(response.headers['X-RateLimit-Remaining']).to eq '80' expect(response.headers['X-RateLimit-Remaining']).to eq '80'
end
it 'applies rate limiting reset header' do
expect(response.headers['X-RateLimit-Reset']).to eq (start_time + 10.seconds).iso8601(6) expect(response.headers['X-RateLimit-Reset']).to eq (start_time + 10.seconds).iso8601(6)
end end
end end

View File

@ -23,11 +23,9 @@ RSpec.describe Filters::StatusesController do
get :index, params: { filter_id: filter } get :index, params: { filter_id: filter }
end end
it 'returns http success' do it 'returns http success and private cache control headers' do
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
end
it 'returns private cache control headers' do
expect(response.headers['Cache-Control']).to include('private, no-store') expect(response.headers['Cache-Control']).to include('private, no-store')
end end
end end

View File

@ -14,11 +14,9 @@ RSpec.describe RelationshipsController do
get :show, params: { page: 2, relationship: 'followed_by' } get :show, params: { page: 2, relationship: 'followed_by' }
end end
it 'returns http success' do it 'returns http success and private cache control headers' do
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
end
it 'returns private cache control headers' do
expect(response.headers['Cache-Control']).to include('private, no-store') expect(response.headers['Cache-Control']).to include('private, no-store')
end end
end end

View File

@ -116,19 +116,13 @@ RSpec.describe 'The /.well-known/webfinger endpoint' do
perform_request! perform_request!
end end
it 'returns http success' do it 'returns http success with expect headers and media type' do
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
end
it 'sets only a Vary Origin header' do
expect(response.headers['Vary']).to eq('Origin') expect(response.headers['Vary']).to eq('Origin')
end
it 'returns application/jrd+json' do
expect(response.media_type).to eq 'application/jrd+json' expect(response.media_type).to eq 'application/jrd+json'
end
it 'returns links for the internal account' do
expect(response.parsed_body) expect(response.parsed_body)
.to include( .to include(
subject: 'acct:mastodon.internal@cb6e6126.ngrok.io', subject: 'acct:mastodon.internal@cb6e6126.ngrok.io',

View File

@ -33,15 +33,11 @@ RSpec.describe PollExpirationNotifyWorker do
end end
context 'when poll is local' do context 'when poll is local' do
it 'notifies voters' do it 'notifies voters, owner, and local voters' do
expect(ActivityPub::DistributePollUpdateWorker).to have_enqueued_sidekiq_job(poll.status.id) expect(ActivityPub::DistributePollUpdateWorker).to have_enqueued_sidekiq_job(poll.status.id)
end
it 'notifies owner' do
expect(LocalNotificationWorker).to have_enqueued_sidekiq_job(poll.account.id, poll.id, 'Poll', 'poll') expect(LocalNotificationWorker).to have_enqueued_sidekiq_job(poll.account.id, poll.id, 'Poll', 'poll')
end
it 'notifies local voters' do
expect(LocalNotificationWorker).to have_enqueued_sidekiq_job(poll_vote.account.id, poll.id, 'Poll', 'poll') expect(LocalNotificationWorker).to have_enqueued_sidekiq_job(poll_vote.account.id, poll.id, 'Poll', 'poll')
end end
end end
@ -49,15 +45,11 @@ RSpec.describe PollExpirationNotifyWorker do
context 'when poll is remote' do context 'when poll is remote' do
let(:remote?) { true } let(:remote?) { true }
it 'does not notify remote voters' do it 'does not notify remote voters or owner, does notify local voters' do
expect(ActivityPub::DistributePollUpdateWorker).to_not have_enqueued_sidekiq_job(poll.status.id) expect(ActivityPub::DistributePollUpdateWorker).to_not have_enqueued_sidekiq_job(poll.status.id)
end
it 'does not notify owner' do
expect(LocalNotificationWorker).to_not have_enqueued_sidekiq_job(poll.account.id, poll.id, 'Poll', 'poll') expect(LocalNotificationWorker).to_not have_enqueued_sidekiq_job(poll.account.id, poll.id, 'Poll', 'poll')
end
it 'notifies local voters' do
expect(LocalNotificationWorker).to have_enqueued_sidekiq_job(poll_vote.account.id, poll.id, 'Poll', 'poll') expect(LocalNotificationWorker).to have_enqueued_sidekiq_job(poll_vote.account.id, poll.id, 'Poll', 'poll')
end end
end end

View File

@ -13,11 +13,9 @@ RSpec.describe PublishScheduledStatusWorker do
end end
context 'when the account is not disabled' do context 'when the account is not disabled' do
it 'creates a status' do it 'creates a status and removes scheduled record' do
expect(scheduled_status.account.statuses.first.text).to eq 'Hello world, future!' expect(scheduled_status.account.statuses.first.text).to eq 'Hello world, future!'
end
it 'removes the scheduled status' do
expect(ScheduledStatus.find_by(id: scheduled_status.id)).to be_nil expect(ScheduledStatus.find_by(id: scheduled_status.id)).to be_nil
end end
end end
@ -25,11 +23,9 @@ RSpec.describe PublishScheduledStatusWorker do
context 'when the account is disabled' do context 'when the account is disabled' do
let(:scheduled_status) { Fabricate(:scheduled_status, account: Fabricate(:account, user: Fabricate(:user, disabled: true))) } let(:scheduled_status) { Fabricate(:scheduled_status, account: Fabricate(:account, user: Fabricate(:user, disabled: true))) }
it 'does not create a status' do it 'does not create a status and removes scheduled record' do
expect(Status.count).to eq 0 expect(Status.count).to eq 0
end
it 'removes the scheduled status' do
expect(ScheduledStatus.find_by(id: scheduled_status.id)).to be_nil expect(ScheduledStatus.find_by(id: scheduled_status.id)).to be_nil
end end
end end

View File

@ -18,14 +18,11 @@ RSpec.describe UnfollowFollowWorker do
let(:show_reblogs) { true } let(:show_reblogs) { true }
describe 'perform' do describe 'perform' do
it 'unfollows source account and follows target account' do it 'unfollows source account and follows target account and preserves show_reblogs' do
subject.perform(local_follower.id, source_account.id, target_account.id) subject.perform(local_follower.id, source_account.id, target_account.id)
expect(local_follower.following?(source_account)).to be false expect(local_follower.following?(source_account)).to be false
expect(local_follower.following?(target_account)).to be true expect(local_follower.following?(target_account)).to be true
end
it 'preserves show_reblogs' do
subject.perform(local_follower.id, source_account.id, target_account.id)
expect(Follow.find_by(account: local_follower, target_account: target_account).show_reblogs?).to be show_reblogs expect(Follow.find_by(account: local_follower, target_account: target_account).show_reblogs?).to be show_reblogs
end end
end end
@ -35,14 +32,11 @@ RSpec.describe UnfollowFollowWorker do
let(:show_reblogs) { false } let(:show_reblogs) { false }
describe 'perform' do describe 'perform' do
it 'unfollows source account and follows target account' do it 'unfollows source account and follows target account and preserves show_reblogs' do
subject.perform(local_follower.id, source_account.id, target_account.id) subject.perform(local_follower.id, source_account.id, target_account.id)
expect(local_follower.following?(source_account)).to be false expect(local_follower.following?(source_account)).to be false
expect(local_follower.following?(target_account)).to be true expect(local_follower.following?(target_account)).to be true
end
it 'preserves show_reblogs' do
subject.perform(local_follower.id, source_account.id, target_account.id)
expect(Follow.find_by(account: local_follower, target_account: target_account).show_reblogs?).to be show_reblogs expect(Follow.find_by(account: local_follower, target_account: target_account).show_reblogs?).to be show_reblogs
end end
end end

View File

@ -15538,8 +15538,8 @@ __metadata:
linkType: hard linkType: hard
"sass@npm:^1.62.1": "sass@npm:^1.62.1":
version: 1.83.4 version: 1.84.0
resolution: "sass@npm:1.83.4" resolution: "sass@npm:1.84.0"
dependencies: dependencies:
"@parcel/watcher": "npm:^2.4.1" "@parcel/watcher": "npm:^2.4.1"
chokidar: "npm:^4.0.0" chokidar: "npm:^4.0.0"
@ -15550,7 +15550,7 @@ __metadata:
optional: true optional: true
bin: bin:
sass: sass.js sass: sass.js
checksum: 10c0/6f27f0eebfeb50222b14baaeef548ef58a05daf8abd9797e6c499334ed7ad40541767056c8693780d06ca83d8836348ea7396a923d3be439b133507993ca78be checksum: 10c0/4af28c12416b6f1fec2423677cfa8c48af7fb7652a50bd076e0cdd1ea260f0330948ddd6075368a734b8d6cfa16c9af5518292181334f47a9471cb542599bc7b
languageName: node languageName: node
linkType: hard linkType: hard