Merge pull request #2772 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 2ea9336b68
main
commit
5c9c02417a
|
@ -1 +1 @@
|
|||
3.3.3
|
||||
3.3.4
|
||||
|
|
|
@ -12,7 +12,7 @@ ARG BUILDPLATFORM=${BUILDPLATFORM}
|
|||
|
||||
# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.3.x"]
|
||||
# renovate: datasource=docker depName=docker.io/ruby
|
||||
ARG RUBY_VERSION="3.3.3"
|
||||
ARG RUBY_VERSION="3.3.4"
|
||||
# # Node version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="20"]
|
||||
# renovate: datasource=node-version depName=node
|
||||
ARG NODE_MAJOR_VERSION="20"
|
||||
|
@ -67,7 +67,9 @@ ENV \
|
|||
# Optimize jemalloc 5.x performance
|
||||
MALLOC_CONF="narenas:2,background_thread:true,thp:never,dirty_decay_ms:1000,muzzy_decay_ms:0" \
|
||||
# Enable libvips, should not be changed
|
||||
MASTODON_USE_LIBVIPS=true
|
||||
MASTODON_USE_LIBVIPS=true \
|
||||
# Sidekiq will touch tmp/sidekiq_process_has_started_and_will_begin_processing_jobs to indicate it is ready. This can be used for a readiness check in Kubernetes
|
||||
MASTODON_SIDEKIQ_READY_FILENAME=sidekiq_process_has_started_and_will_begin_processing_jobs
|
||||
|
||||
# Set default shell used for running commands
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-o", "errexit", "-c"]
|
||||
|
|
|
@ -1430,6 +1430,8 @@ body > [data-popper-placement] {
|
|||
min-height: 54px;
|
||||
border-bottom: 1px solid var(--background-border-color);
|
||||
cursor: auto;
|
||||
opacity: 1;
|
||||
animation: fade 150ms linear;
|
||||
|
||||
@keyframes fade {
|
||||
0% {
|
||||
|
@ -1441,9 +1443,6 @@ body > [data-popper-placement] {
|
|||
}
|
||||
}
|
||||
|
||||
opacity: 1;
|
||||
animation: fade 150ms linear;
|
||||
|
||||
.media-gallery,
|
||||
.video-player,
|
||||
.audio-player,
|
||||
|
@ -5199,9 +5198,11 @@ a.status-card {
|
|||
&__menu {
|
||||
@include search-popout;
|
||||
|
||||
& {
|
||||
padding: 0;
|
||||
background: $ui-secondary-color;
|
||||
}
|
||||
}
|
||||
|
||||
&__menu-list {
|
||||
padding: 6px;
|
||||
|
|
|
@ -197,7 +197,7 @@
|
|||
"copy_icon_button.copied": "Zkopírováno do schránky",
|
||||
"copypaste.copied": "Zkopírováno",
|
||||
"copypaste.copy_to_clipboard": "Zkopírovat do schránky",
|
||||
"directory.federated": "Ze známého fedivesmíru",
|
||||
"directory.federated": "Ze známého fediversu",
|
||||
"directory.local": "Pouze z {domain}",
|
||||
"directory.new_arrivals": "Nově příchozí",
|
||||
"directory.recently_active": "Nedávno aktivní",
|
||||
|
@ -213,7 +213,7 @@
|
|||
"domain_block_modal.block_account_instead": "Raději blokovat @{name}",
|
||||
"domain_block_modal.they_can_interact_with_old_posts": "Lidé z tohoto serveru mohou interagovat s vašimi starými příspěvky.",
|
||||
"domain_block_modal.they_cant_follow": "Nikdo z tohoto serveru vás nemůže sledovat.",
|
||||
"domain_block_modal.they_wont_know": "Nebude vědět, že je zablokován.",
|
||||
"domain_block_modal.they_wont_know": "Nebude vědět, že je zablokován*a.",
|
||||
"domain_block_modal.title": "Blokovat doménu?",
|
||||
"domain_block_modal.you_will_lose_followers": "Všichni vaši sledující z tohoto serveru budou odstraněni.",
|
||||
"domain_block_modal.you_wont_see_posts": "Neuvidíte příspěvky ani upozornění od uživatelů z tohoto serveru.",
|
||||
|
@ -341,7 +341,7 @@
|
|||
"hashtag.column_settings.tag_mode.any": "Jakýkoliv z těchto",
|
||||
"hashtag.column_settings.tag_mode.none": "Žádný z těchto",
|
||||
"hashtag.column_settings.tag_toggle": "Zahrnout v tomto sloupci další štítky",
|
||||
"hashtag.counter_by_accounts": "{count, plural, one {{counter} účastník} few {{counter} účastníci} other {{counter} účastníků}}",
|
||||
"hashtag.counter_by_accounts": "{count, plural, one {{counter} účastník*ice} few {{counter} účastníci} other {{counter} účastníků}}",
|
||||
"hashtag.counter_by_uses": "{count, plural, one {{counter} příspěvek} few {{counter} příspěvky} other {{counter} příspěvků}}",
|
||||
"hashtag.counter_by_uses_today": "Dnes {count, plural, one {{counter} příspěvek} few {{counter} příspěvky} other {{counter} příspěvků}}",
|
||||
"hashtag.follow": "Sledovat hashtag",
|
||||
|
@ -440,7 +440,7 @@
|
|||
"mute_modal.show_options": "Zobrazit možnosti",
|
||||
"mute_modal.they_can_mention_and_follow": "Mohou vás zmínit a sledovat, ale neuvidíte je.",
|
||||
"mute_modal.they_wont_know": "Nebudou vědět, že byli skryti.",
|
||||
"mute_modal.title": "Ztlumit uživatele?",
|
||||
"mute_modal.title": "Ztlumit uživatele*ku?",
|
||||
"mute_modal.you_wont_see_mentions": "Neuvidíte příspěvky, které je zmiňují.",
|
||||
"mute_modal.you_wont_see_posts": "Stále budou moci vidět vaše příspěvky, ale vy jejich neuvidíte.",
|
||||
"navigation_bar.about": "O aplikaci",
|
||||
|
@ -566,8 +566,8 @@
|
|||
"onboarding.share.message": "Jsem {username} na #Mastodonu! Pojď mě sledovat na {url}",
|
||||
"onboarding.share.next_steps": "Možné další kroky:",
|
||||
"onboarding.share.title": "Sdílejte svůj profil",
|
||||
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
|
||||
"onboarding.start.skip": "Want to skip right ahead?",
|
||||
"onboarding.start.lead": "Nyní jste součástí Mastodonu, unikátní sociální sítě, kde vy - ne algoritmus - vytváří vaše vlastní prožitky. Začněte na této nové sociální platformě:",
|
||||
"onboarding.start.skip": "Nepotřebujete pomoci začít?",
|
||||
"onboarding.start.title": "Dokázali jste to!",
|
||||
"onboarding.steps.follow_people.body": "Mastodon je o sledování zajimavých lidí.",
|
||||
"onboarding.steps.follow_people.title": "Přispůsobit vlastní domovský kanál",
|
||||
|
@ -581,7 +581,7 @@
|
|||
"onboarding.tips.accounts_from_other_servers": "<strong>Víte, že?</strong> Protože je Mastodon decentralizovaný, některé profily, na které narazíte, budou hostovány na jiných serverech, než je ten váš. A přesto s nimi můžete bezproblémově komunikovat! Jejich server se nachází v druhé polovině uživatelského jména!",
|
||||
"onboarding.tips.migration": "<strong>Víte, že?</strong> Pokud máte pocit, že {domain} pro vás v budoucnu není vhodnou volbou, můžete se přesunout na jiný Mastodon server, aniž byste přišli o své sledující. Můžete dokonce hostovat svůj vlastní server!",
|
||||
"onboarding.tips.verification": "<strong>Víte, že?</strong> Svůj účet můžete ověřit tak, že na své webové stránky umístíte odkaz na váš Mastodon profil a odkaz na stránku přidáte do svého profilu. Nejsou k tomu potřeba žádné poplatky ani dokumenty!",
|
||||
"password_confirmation.exceeds_maxlength": "Potvrzení hesla překračuje maximální délku hesla",
|
||||
"password_confirmation.exceeds_maxlength": "Potvrzení hesla překračuje maximální povolenou délku hesla",
|
||||
"password_confirmation.mismatching": "Zadaná hesla se neshodují",
|
||||
"picture_in_picture.restore": "Vrátit zpět",
|
||||
"poll.closed": "Uzavřeno",
|
||||
|
@ -665,7 +665,7 @@
|
|||
"report.unfollow": "Přestat sledovat @{name}",
|
||||
"report.unfollow_explanation": "Tento účet sledujete. Abyste už neviděli jeho příspěvky ve své domovské časové ose, přestaňte jej sledovat.",
|
||||
"report_notification.attached_statuses": "{count, plural, one {{count} připojený příspěvek} few {{count} připojené příspěvky} many {{count} připojených příspěvků} other {{count} připojených příspěvků}}",
|
||||
"report_notification.categories.legal": "Zákonné",
|
||||
"report_notification.categories.legal": "Právní ustanovení",
|
||||
"report_notification.categories.other": "Ostatní",
|
||||
"report_notification.categories.spam": "Spam",
|
||||
"report_notification.categories.violation": "Porušení pravidla",
|
||||
|
|
|
@ -82,6 +82,7 @@
|
|||
"alert.unexpected.title": "Ийой!",
|
||||
"announcement.announcement": "Голошіня",
|
||||
"audio.hide": "Зпрятати звук",
|
||||
"block_modal.remote_users_caveat": "Попросиме ґазду сервера {domain} честовати вашоє рішеня. Айбо не ґарантуєме повный соглас, бо даякі серверы можут брати блокованя по-инчакому. Публичні дописы годно быти видко незалоґованым хосновачам.",
|
||||
"block_modal.show_less": "Указати менше",
|
||||
"block_modal.show_more": "Указати бульше",
|
||||
"block_modal.they_cant_mention": "Они не можут вас споминати авадь слідовати.",
|
||||
|
@ -111,5 +112,43 @@
|
|||
"column.direct": "Шептаня",
|
||||
"column.directory": "Никати профілі",
|
||||
"column.domain_blocks": "Заблоковані домены",
|
||||
"column.favourites": "Убраноє"
|
||||
"column.favourites": "Убраноє",
|
||||
"column.follow_requests": "Запросы на пудписку",
|
||||
"column.lists": "Исписы",
|
||||
"column.mutes": "Стишені хосновачі",
|
||||
"column.notifications": "Убвіщеня",
|
||||
"column.pins": "Закріплені публикації",
|
||||
"column_back_button.label": "Назад",
|
||||
"column_header.hide_settings": "Спрятати штімованя",
|
||||
"column_header.moveLeft_settings": "Посунути колонку до ліва",
|
||||
"column_header.moveRight_settings": "Посунути колонку до права",
|
||||
"column_header.pin": "Закріпити",
|
||||
"column_header.show_settings": "Указати штімованя",
|
||||
"column_header.unpin": "Удкріпити",
|
||||
"column_subheading.settings": "Штімованя",
|
||||
"compose.language.change": "Поміняти язык",
|
||||
"compose.language.search": "Глядати языкы...",
|
||||
"compose.published.body": "Пост опубликованый.",
|
||||
"compose.saved.body": "Пост усокоченый.",
|
||||
"compose_form.direct_message_warning_learn_more": "Читайте бульше",
|
||||
"compose_form.encryption_warning": "Публикації на Mastodon не шіфрувут ся. Не шырьте чутливу інформацію через Mastodon.",
|
||||
"compose_form.hashtag_warning": "Сись пост не буде ся появляти у исписови по гештеґови, бо вун не є публичный. Лишек публичні посты буде видко за гештеґом.",
|
||||
"compose_form.lock_disclaimer": "Ваш профіл є {locked}. Хоть-тко може ся на вас пудписати, обы видїти ваші ексклузівні посты.",
|
||||
"compose_form.lock_disclaimer.lock": "замкнено",
|
||||
"compose_form.placeholder": "Што нового?",
|
||||
"compose_form.poll.duration": "Трывалость убзвідованя",
|
||||
"compose_form.poll.multiple": "Дакулько варіантув",
|
||||
"compose_form.poll.option_placeholder": "Варіант {number}",
|
||||
"compose_form.poll.single": "Уберіт єден",
|
||||
"compose_form.poll.switch_to_multiple": "Змінити убзвідованя обы поволити дакулько варіантув",
|
||||
"compose_form.poll.switch_to_single": "Змінити убзвідованя обы поволити лишек єден варіант",
|
||||
"compose_form.poll.type": "Стіл",
|
||||
"compose_form.publish": "Публикація",
|
||||
"compose_form.publish_form": "Нова публикація",
|
||||
"compose_form.reply": "Удповідь",
|
||||
"copypaste.copy_to_clipboard": "Копіровати у памнять",
|
||||
"directory.recently_active": "Недавно актівні",
|
||||
"disabled_account_banner.account_settings": "Штімованя акаунта",
|
||||
"disabled_account_banner.text": "Ваш акаунт {disabledAccount} раз є неактівный.",
|
||||
"dismissable_banner.community_timeline": "Туй сут недавні публикації уд профілув на серверови {domain}."
|
||||
}
|
||||
|
|
|
@ -1366,6 +1366,8 @@ body > [data-popper-placement] {
|
|||
min-height: 54px;
|
||||
border-bottom: 1px solid var(--background-border-color);
|
||||
cursor: auto;
|
||||
opacity: 1;
|
||||
animation: fade 150ms linear;
|
||||
|
||||
@keyframes fade {
|
||||
0% {
|
||||
|
@ -1377,9 +1379,6 @@ body > [data-popper-placement] {
|
|||
}
|
||||
}
|
||||
|
||||
opacity: 1;
|
||||
animation: fade 150ms linear;
|
||||
|
||||
.media-gallery,
|
||||
.video-player,
|
||||
.audio-player,
|
||||
|
@ -4851,9 +4850,11 @@ a.status-card {
|
|||
&__menu {
|
||||
@include search-popout;
|
||||
|
||||
& {
|
||||
padding: 0;
|
||||
background: $ui-secondary-color;
|
||||
}
|
||||
}
|
||||
|
||||
&__menu-list {
|
||||
padding: 6px;
|
||||
|
|
|
@ -2503,6 +2503,7 @@ body {
|
|||
background: $win95-tooltip-yellow;
|
||||
border: 1px solid black;
|
||||
padding: 4px;
|
||||
margin-bottom: 24px;
|
||||
|
||||
h1, h1 small {
|
||||
color:black;
|
||||
|
@ -2510,8 +2511,6 @@ body {
|
|||
text-overflow: unset;
|
||||
}
|
||||
|
||||
margin-bottom: 24px;
|
||||
|
||||
&:after {
|
||||
content: "";
|
||||
display:block;
|
||||
|
|
|
@ -274,7 +274,7 @@ class LinkDetailsExtractor
|
|||
end
|
||||
|
||||
def detect_encoding_and_parse_document
|
||||
[detect_encoding, nil, @html_charset].uniq.each do |encoding|
|
||||
[detect_encoding, nil, header_encoding].uniq.each do |encoding|
|
||||
document = Nokogiri::HTML(@html, nil, encoding)
|
||||
return document if document.to_s.valid_encoding?
|
||||
end
|
||||
|
@ -286,6 +286,13 @@ class LinkDetailsExtractor
|
|||
guess&.fetch(:confidence, 0).to_i > 60 ? guess&.fetch(:encoding, nil) : nil
|
||||
end
|
||||
|
||||
def header_encoding
|
||||
Encoding.find(@html_charset).name if @html_charset
|
||||
rescue ArgumentError
|
||||
# Encoding from HTTP header is not recognized by ruby
|
||||
nil
|
||||
end
|
||||
|
||||
def detector
|
||||
@detector ||= CharlockHolmes::EncodingDetector.new.tap do |detector|
|
||||
detector.strip_tags = true
|
||||
|
|
|
@ -2,19 +2,24 @@
|
|||
|
||||
require_relative '../../lib/mastodon/sidekiq_middleware'
|
||||
|
||||
SIDEKIQ_WILL_PROCESSES_JOBS_FILE = Rails.root.join('tmp', 'sidekiq_process_has_started_and_will_begin_processing_jobs').freeze
|
||||
|
||||
Sidekiq.configure_server do |config|
|
||||
config.redis = REDIS_SIDEKIQ_PARAMS
|
||||
|
||||
# This is used in Kubernetes setups, to signal that the Sidekiq process has started and will begin processing jobs
|
||||
# This comes from https://github.com/sidekiq/sidekiq/wiki/Kubernetes#sidekiq
|
||||
ready_filename = ENV.fetch('MASTODON_SIDEKIQ_READY_FILENAME', nil)
|
||||
if ready_filename
|
||||
raise 'MASTODON_SIDEKIQ_READY_FILENAME is not a valid filename' if File.basename(ready_filename) != ready_filename
|
||||
|
||||
ready_path = Rails.root.join('tmp', ready_filename)
|
||||
|
||||
config.on(:startup) do
|
||||
FileUtils.touch(SIDEKIQ_WILL_PROCESSES_JOBS_FILE)
|
||||
FileUtils.touch(ready_path)
|
||||
end
|
||||
|
||||
config.on(:shutdown) do
|
||||
FileUtils.rm_f(SIDEKIQ_WILL_PROCESSES_JOBS_FILE)
|
||||
FileUtils.rm_f(ready_path)
|
||||
end
|
||||
end
|
||||
|
||||
config.server_middleware do |chain|
|
||||
|
|
|
@ -118,7 +118,7 @@ cs:
|
|||
promote: Povýšit
|
||||
protocol: Protokol
|
||||
public: Veřejný
|
||||
push_subscription_expires: Odebírání PuSH expiruje
|
||||
push_subscription_expires: Odebírání PuSH vyprší
|
||||
redownload: Obnovit profil
|
||||
redownloaded_msg: Profil účtu %{username} byl úspěšně obnoven ze zdroje
|
||||
reject: Zamítnout
|
||||
|
|
|
@ -25,7 +25,7 @@ lv:
|
|||
edit: Labot
|
||||
submit: Apstiprināt
|
||||
confirmations:
|
||||
destroy: Vai esi pārliecināts?
|
||||
destroy: Vai tiešām?
|
||||
edit:
|
||||
title: Labot lietotni
|
||||
form:
|
||||
|
@ -69,7 +69,7 @@ lv:
|
|||
buttons:
|
||||
revoke: Atsaukt
|
||||
confirmations:
|
||||
revoke: Vai esi pārliecināts?
|
||||
revoke: Vai tiešām?
|
||||
index:
|
||||
authorized_at: Autorizētas %{date}
|
||||
description_html: Šīs ir lietotnes, kas var piekļūt Tavam kontam ar API. Ja šeit ir lietotnes, kuras neatpazīsti, vai lietotne darbojas ne tā, kā paredzēts, vari atsaukt tās piekļuvi.
|
||||
|
@ -135,6 +135,7 @@ lv:
|
|||
media: Multividesu pielikumi
|
||||
mutes: Apklusinātie
|
||||
notifications: Paziņojumi
|
||||
profile: Tavs Mastodon profils
|
||||
push: Uznirstošie paziņojumi
|
||||
reports: Ziņojumi
|
||||
search: Meklēt
|
||||
|
@ -165,6 +166,7 @@ lv:
|
|||
admin:write:reports: veikt moderācijas darbības pārskatos
|
||||
crypto: lieto pilnīgu šifrēšanu
|
||||
follow: mainīt konta attiecības
|
||||
profile: lasīt tikai Tava konta profila informāciju
|
||||
push: saņemt savus push paziņojumus
|
||||
read: lasīt visus sava konta datus
|
||||
read:accounts: apskatīt kontu informāciju
|
||||
|
|
|
@ -1 +1,21 @@
|
|||
---
|
||||
ry:
|
||||
accounts:
|
||||
follow: Пудписати ся
|
||||
following: Пудпискы
|
||||
posts:
|
||||
few: Публикації
|
||||
one: Публикація
|
||||
other: Публикації
|
||||
posts_tab_heading: Публикації
|
||||
imports:
|
||||
titles:
|
||||
following: Імпортованя пудписок
|
||||
types:
|
||||
following: Испис пудписок
|
||||
notification_mailer:
|
||||
follow:
|
||||
body: "%{name} ся пудписує ся на вас!"
|
||||
subject: "%{name} ся пудписує ся на вас"
|
||||
relationships:
|
||||
following: Пудпискы
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
HTTP/1.1 200 OK
|
||||
server: nginx
|
||||
date: Thu, 13 Jun 2024 14:33:13 GMT
|
||||
content-type: text/html; charset=utf8
|
||||
content-length: 192
|
||||
accept-ranges: bytes
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Webserver Configs R Us</title>
|
||||
</head>
|
||||
<body>
|
||||
<h2>Welcome</h2>
|
||||
<p>Sneaky non-UTF character: á</p>
|
||||
</body>
|
||||
</html>
|
|
@ -32,6 +32,7 @@ RSpec.describe FetchLinkCardService do
|
|||
stub_request(:get, 'http://example.com/aergerliche-umlaute').to_return(request_fixture('redirect_with_utf8_url.txt'))
|
||||
stub_request(:get, 'http://example.com/page_without_title').to_return(request_fixture('page_without_title.txt'))
|
||||
stub_request(:get, 'http://example.com/long_canonical_url').to_return(request_fixture('long_canonical_url.txt'))
|
||||
stub_request(:get, 'http://example.com/alternative_utf8_spelling_in_header').to_return(request_fixture('alternative_utf8_spelling_in_header.txt'))
|
||||
|
||||
Rails.cache.write('oembed_endpoint:example.com', oembed_cache) if oembed_cache
|
||||
|
||||
|
@ -292,6 +293,14 @@ RSpec.describe FetchLinkCardService do
|
|||
expect(status.preview_card).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'with a URL where the `Content-Type` header uses `utf8` instead of `utf-8`' do
|
||||
let(:status) { Fabricate(:status, text: 'test http://example.com/alternative_utf8_spelling_in_header') }
|
||||
|
||||
it 'does not create a preview card' do
|
||||
expect(status.preview_card.title).to eq 'Webserver Configs R Us'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'with a remote status' do
|
||||
|
|
|
@ -15486,15 +15486,15 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"sass@npm:^1.62.1":
|
||||
version: 1.77.6
|
||||
resolution: "sass@npm:1.77.6"
|
||||
version: 1.77.7
|
||||
resolution: "sass@npm:1.77.7"
|
||||
dependencies:
|
||||
chokidar: "npm:>=3.0.0 <4.0.0"
|
||||
immutable: "npm:^4.0.0"
|
||||
source-map-js: "npm:>=0.6.2 <2.0.0"
|
||||
bin:
|
||||
sass: sass.js
|
||||
checksum: 10c0/fe5a393c0aa29eda9f83c06be9b94788b61fe8bad0616ee6e3a25d21ab504f430d40c0064fdca89b02b8e426411ae6dcd906c91f2e48c263575c3d392b6daeb1
|
||||
checksum: 10c0/6cacbf4b5165d30a9be0f09438aed85ff0617e5087442e65c23c8464750ff1b9988855a58f36b420b62f992d1e82403f99810aba7731519d3d026847e21a5635
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
|
Loading…
Reference in New Issue