From 996c13a24d941e02458fa21d30e8334d04bdb2b5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 09:33:11 +0100 Subject: [PATCH 01/31] Update dependency core-js to v3.34.0 (#28241) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4226fcc0fd..9e16226809 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5960,9 +5960,9 @@ __metadata: linkType: hard "core-js@npm:^3.30.2": - version: 3.33.3 - resolution: "core-js@npm:3.33.3" - checksum: 08abdc9470c8228b9d09f61e62ab312738681202c4c34e9638889125b304b235f34c4fe22e9d41c20906ac0fcc807dca57c5ff7d6b90021bf64e8fe23461d9ab + version: 3.34.0 + resolution: "core-js@npm:3.34.0" + checksum: 408a77898abe03bf3e5dec2a451c36f4745081cca9022f8bdf9b817d57bb6d3a534d555f47a4b95e1daa5e21dbc79122eac2402e25720d425f5925127e55dcd8 languageName: node linkType: hard From 3b710b96cf4a7ff743313f20b054c6220da3dd6b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 09:33:27 +0100 Subject: [PATCH 02/31] Update dependency irb to v1.10.1 (#28240) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 9308a41c8b..4a409a0ad6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -377,7 +377,7 @@ GEM terminal-table (>= 1.5.1) idn-ruby (0.1.5) io-console (0.6.0) - irb (1.10.0) + irb (1.10.1) rdoc reline (>= 0.3.8) jmespath (1.6.2) @@ -608,7 +608,7 @@ GEM link_header (~> 0.0, >= 0.0.8) rdf-normalize (0.6.1) rdf (~> 3.2) - rdoc (6.6.0) + rdoc (6.6.1) psych (>= 4.0.0) redcarpet (3.6.0) redis (4.8.1) From faffd81976092fc5a95fb359ec5844c2af76101d Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 6 Dec 2023 03:44:07 -0500 Subject: [PATCH 03/31] Remove double subject call in `services/unsuspend_account_service` spec (#28215) --- .../unsuspend_account_service_spec.rb | 44 +++++++++++-------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/spec/services/unsuspend_account_service_spec.rb b/spec/services/unsuspend_account_service_spec.rb index c555b661ec..2f737c6215 100644 --- a/spec/services/unsuspend_account_service_spec.rb +++ b/spec/services/unsuspend_account_service_spec.rb @@ -45,14 +45,19 @@ RSpec.describe UnsuspendAccountService, type: :service do remote_follower.follow!(account) end - it "merges back into local followers' feeds" do + it 'merges back into feeds of local followers and sends update' do subject + + expect_feeds_merged + expect_updates_sent + end + + def expect_feeds_merged expect(FeedManager.instance).to have_received(:merge_into_home).with(account, local_follower) expect(FeedManager.instance).to have_received(:merge_into_list).with(account, list) end - it 'sends an update actor to followers and reporters' do - subject + def expect_updates_sent expect(a_request(:post, remote_follower.inbox_url).with { |req| match_update_actor_request(req, account) }).to have_been_made.once expect(a_request(:post, remote_reporter.inbox_url).with { |req| match_update_actor_request(req, account) }).to have_been_made.once end @@ -73,19 +78,20 @@ RSpec.describe UnsuspendAccountService, type: :service do allow(resolve_account_service).to receive(:call).with(account).and_return(account) end - it 're-fetches the account' do - subject + it 're-fetches the account, merges feeds, and preserves suspended' do + expect { subject } + .to_not change_suspended_flag + expect_feeds_merged expect(resolve_account_service).to have_received(:call).with(account) end - it "merges back into local followers' feeds" do - subject + def expect_feeds_merged expect(FeedManager.instance).to have_received(:merge_into_home).with(account, local_follower) expect(FeedManager.instance).to have_received(:merge_into_list).with(account, list) end - it 'does not change the “suspended” flag' do - expect { subject }.to_not change(account, :suspended?) + def change_suspended_flag + change(account, :suspended?) end end @@ -97,19 +103,20 @@ RSpec.describe UnsuspendAccountService, type: :service do end end - it 're-fetches the account' do - subject + it 're-fetches the account, does not merge feeds, marks suspended' do + expect { subject } + .to change_suspended_to_true expect(resolve_account_service).to have_received(:call).with(account) + expect_feeds_not_merged end - it "does not merge back into local followers' feeds" do - subject + def expect_feeds_not_merged expect(FeedManager.instance).to_not have_received(:merge_into_home).with(account, local_follower) expect(FeedManager.instance).to_not have_received(:merge_into_list).with(account, list) end - it 'marks account as suspended' do - expect { subject }.to change(account, :suspended?).from(false).to(true) + def change_suspended_to_true + change(account, :suspended?).from(false).to(true) end end @@ -118,13 +125,14 @@ RSpec.describe UnsuspendAccountService, type: :service do allow(resolve_account_service).to receive(:call).with(account).and_return(nil) end - it 're-fetches the account' do + it 're-fetches the account and does not merge feeds' do subject + expect(resolve_account_service).to have_received(:call).with(account) + expect_feeds_not_merged end - it "does not merge back into local followers' feeds" do - subject + def expect_feeds_not_merged expect(FeedManager.instance).to_not have_received(:merge_into_home).with(account, local_follower) expect(FeedManager.instance).to_not have_received(:merge_into_list).with(account, list) end From 5517df61de1e867afa531268755ee893ffca3c99 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 6 Dec 2023 03:44:51 -0500 Subject: [PATCH 04/31] Remove double subject call in `services/activitypub/process_account_service` spec (#28214) --- .../process_account_service_spec.rb | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/spec/services/activitypub/process_account_service_spec.rb b/spec/services/activitypub/process_account_service_spec.rb index c02a0800a3..09eb5ddee3 100644 --- a/spec/services/activitypub/process_account_service_spec.rb +++ b/spec/services/activitypub/process_account_service_spec.rb @@ -129,12 +129,10 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do stub_const 'ActivityPub::ProcessAccountService::SUBDOMAINS_RATELIMIT', 5 end - it 'creates at least some accounts' do - expect { subject }.to change { Account.remote.count }.by_at_least(2) - end - - it 'creates no more account than the limit allows' do - expect { subject }.to change { Account.remote.count }.by_at_most(5) + it 'creates accounts without exceeding rate limit' do + expect { subject } + .to create_some_remote_accounts + .and create_fewer_than_rate_limit_accounts end end @@ -195,12 +193,20 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do end end - it 'creates at least some accounts' do - expect { subject.call('user1', 'foo.test', payload) }.to change { Account.remote.count }.by_at_least(2) - end - - it 'creates no more account than the limit allows' do - expect { subject.call('user1', 'foo.test', payload) }.to change { Account.remote.count }.by_at_most(5) + it 'creates accounts without exceeding rate limit' do + expect { subject.call('user1', 'foo.test', payload) } + .to create_some_remote_accounts + .and create_fewer_than_rate_limit_accounts end end + + private + + def create_some_remote_accounts + change(Account.remote, :count).by_at_least(2) + end + + def create_fewer_than_rate_limit_accounts + change(Account.remote, :count).by_at_most(5) + end end From be6bb1a10d6f1f23151198c6487f44145a0692ee Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 6 Dec 2023 03:45:19 -0500 Subject: [PATCH 05/31] Remove double subject call in `services/suspend_account_service` spec (#28213) --- spec/services/suspend_account_service_spec.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/spec/services/suspend_account_service_spec.rb b/spec/services/suspend_account_service_spec.rb index edb7050083..c258995b7e 100644 --- a/spec/services/suspend_account_service_spec.rb +++ b/spec/services/suspend_account_service_spec.rb @@ -18,14 +18,15 @@ RSpec.describe SuspendAccountService, type: :service do account.suspend! end - it "unmerges from local followers' feeds" do - subject + it 'unmerges from feeds of local followers and preserves suspended flag' do + expect { subject } + .to_not change_suspended_flag expect(FeedManager.instance).to have_received(:unmerge_from_home).with(account, local_follower) expect(FeedManager.instance).to have_received(:unmerge_from_list).with(account, list) end - it 'does not change the “suspended” flag' do - expect { subject }.to_not change(account, :suspended?) + def change_suspended_flag + change(account, :suspended?) end end From ed7b5c091b62d63e695d2f1ff946e021fb37fa18 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 6 Dec 2023 03:51:09 -0500 Subject: [PATCH 06/31] Remove double subject call in `services/delete_account_service` spec (#28212) --- spec/services/delete_account_service_spec.rb | 25 +++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/spec/services/delete_account_service_spec.rb b/spec/services/delete_account_service_spec.rb index 68ab491e4e..8a19d3cf74 100644 --- a/spec/services/delete_account_service_spec.rb +++ b/spec/services/delete_account_service_spec.rb @@ -27,8 +27,15 @@ RSpec.describe DeleteAccountService, type: :service do let!(:account_note) { Fabricate(:account_note, account: account) } - it 'deletes associated owned records' do - expect { subject }.to change { + it 'deletes associated owned and target records and target notifications' do + expect { subject } + .to delete_associated_owned_records + .and delete_associated_target_records + .and delete_associated_target_notifications + end + + def delete_associated_owned_records + change do [ account.statuses, account.media_attachments, @@ -39,23 +46,23 @@ RSpec.describe DeleteAccountService, type: :service do account.polls, account.account_notes, ].map(&:count) - }.from([2, 1, 1, 1, 1, 1, 1, 1]).to([0, 0, 0, 0, 0, 0, 0, 0]) + end.from([2, 1, 1, 1, 1, 1, 1, 1]).to([0, 0, 0, 0, 0, 0, 0, 0]) end - it 'deletes associated target records' do - expect { subject }.to change { + def delete_associated_target_records + change do [ AccountPin.where(target_account: account), ].map(&:count) - }.from([1]).to([0]) + end.from([1]).to([0]) end - it 'deletes associated target notifications' do - expect { subject }.to change { + def delete_associated_target_notifications + change do %w( poll favourite status mention follow ).map { |type| Notification.where(type: type).count } - }.from([1, 1, 1, 1, 1]).to([0, 0, 0, 0, 0]) + end.from([1, 1, 1, 1, 1]).to([0, 0, 0, 0, 0]) end end From 0e8ba19113182f74a0adde0ac75a35694833316c Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 6 Dec 2023 03:52:30 -0500 Subject: [PATCH 07/31] Add spec coverage for `CLI::Emoji` class (#28182) --- spec/fixtures/files/elite-assets.tar.gz | Bin 0 -> 17590 bytes spec/lib/mastodon/cli/emoji_spec.rb | 54 ++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 spec/fixtures/files/elite-assets.tar.gz diff --git a/spec/fixtures/files/elite-assets.tar.gz b/spec/fixtures/files/elite-assets.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..7b4f4425705c62fe4b538fa52148937e51a69552 GIT binary patch literal 17590 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 literal 0 HcmV?d00001 diff --git a/spec/lib/mastodon/cli/emoji_spec.rb b/spec/lib/mastodon/cli/emoji_spec.rb index 5d109eb524..530da91e74 100644 --- a/spec/lib/mastodon/cli/emoji_spec.rb +++ b/spec/lib/mastodon/cli/emoji_spec.rb @@ -4,5 +4,59 @@ require 'rails_helper' require 'mastodon/cli/emoji' describe Mastodon::CLI::Emoji do + subject { cli.invoke(action, args, options) } + + let(:cli) { described_class.new } + let(:args) { [] } + let(:options) { {} } + it_behaves_like 'CLI Command' + + describe '#purge' do + let(:action) { :purge } + + context 'with existing custom emoji' do + before { Fabricate(:custom_emoji) } + + it 'reports a successful purge' do + expect { subject } + .to output_results('OK') + end + end + end + + describe '#import' do + context 'with existing custom emoji' do + let(:import_path) { Rails.root.join('spec', 'fixtures', 'files', 'elite-assets.tar.gz') } + let(:action) { :import } + let(:args) { [import_path] } + + it 'reports about imported emoji' do + expect { subject } + .to output_results('Imported 1') + .and change(CustomEmoji, :count).by(1) + end + end + end + + describe '#export' do + context 'with existing custom emoji' do + before { Fabricate(:custom_emoji) } + after { File.delete(export_path) } + + let(:export_path) { Rails.root.join('tmp', 'export.tar.gz') } + let(:args) { [Rails.root.join('tmp')] } + let(:action) { :export } + + it 'reports about exported emoji' do + expect { subject } + .to output_results('Exported 1') + .and change { File.exist?(export_path) }.from(false).to(true) + end + end + end + + def output_results(string) + output(a_string_including(string)).to_stdout + end end From 954169966b23214a044fa8deda16be4b903526d5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 08:52:55 +0000 Subject: [PATCH 08/31] New Crowdin Translations (automated) (#28245) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/lt.json | 26 +++---- config/locales/simple_form.lt.yml | 91 ++++++++++++++++++++++++- 2 files changed, 104 insertions(+), 13 deletions(-) diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index e588b85385..58c80e4117 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -40,7 +40,7 @@ "account.follows.empty": "Šis (-i) naudotojas (-a) dar nieko neseka.", "account.follows_you": "Seka tave", "account.go_to_profile": "Eiti į profilį", - "account.hide_reblogs": "Slėpti \"boosts\" iš @{name}", + "account.hide_reblogs": "Slėpti pakėlimus iš @{name}", "account.in_memoriam": "Atminimui.", "account.joined_short": "Prisijungė", "account.languages": "Keisti prenumeruojamas kalbas", @@ -49,19 +49,19 @@ "account.media": "Medija", "account.mention": "Paminėti @{name}", "account.moved_to": "{name} nurodė, kad dabar jų nauja paskyra yra:", - "account.mute": "Užtildyti @{name}", + "account.mute": "Nutildyti @{name}", "account.mute_notifications_short": "Nutildyti pranešimus", "account.mute_short": "Nutildyti", - "account.muted": "Užtildytas", + "account.muted": "Nutildytas", "account.no_bio": "Nėra pateikto aprašymo.", - "account.open_original_page": "Atidaryti originalinį tinklalapį", + "account.open_original_page": "Atidaryti originalinį puslapį", "account.posts": "Įrašai", "account.posts_with_replies": "Įrašai ir atsakymai", "account.report": "Pranešti @{name}", - "account.requested": "Laukiama patvirtinimo. Spausk, kad atšaukti sekimo užklausą.", + "account.requested": "Laukiama patvirtinimo. Spausk, kad atšaukti sekimo užklausą", "account.requested_follow": "{name} paprašė tave sekti", "account.share": "Bendrinti @{name} profilį", - "account.show_reblogs": "Rodyti \"boosts\" iš @{name}", + "account.show_reblogs": "Rodyti pakėlimus iš @{name}", "account.statuses_counter": "{count, plural, one {{counter} įrašas} few {{counter} įrašai} many {{counter} įrašo} other {{counter} įrašų}}", "account.unblock": "Atblokuoti @{name}", "account.unblock_domain": "Atblokuoti domeną {domain}", @@ -73,7 +73,7 @@ "account.unmute_short": "Atitildyti", "account_note.placeholder": "Spausk norėdamas (-a) pridėti pastabą", "admin.dashboard.daily_retention": "Vartotojų išbuvimo rodiklis pagal dieną po registracijos", - "admin.dashboard.monthly_retention": "Vartotojų išbuvimo rodiklis pagal mėnesį po registracijos", + "admin.dashboard.monthly_retention": "Naudotojų išlaikymo rodiklis pagal mėnesį po registracijos", "admin.dashboard.retention.average": "Vidurkis", "admin.dashboard.retention.cohort": "Registravimo mėnuo", "admin.dashboard.retention.cohort_size": "Nauji naudotojai", @@ -117,9 +117,9 @@ "column.favourites": "Mėgstamiausi", "column.firehose": "Tiesioginiai padavimai", "column.follow_requests": "Sekti prašymus", - "column.home": "Pradžia", + "column.home": "Pagrindinis", "column.lists": "Sąrašai", - "column.mutes": "Užtildyti naudotojai", + "column.mutes": "Nutildyti naudotojai", "column.notifications": "Pranešimai", "column.pins": "Prisegti įrašai", "column.public": "Federacinė laiko skalė", @@ -141,13 +141,13 @@ "compose.saved.body": "Įrašas išsaugotas.", "compose_form.direct_message_warning_learn_more": "Sužinoti daugiau", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", - "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", - "compose_form.lock_disclaimer": "Jūsų paskyra nėra {locked}. Kiekvienas gali jus sekti ir peržiūrėti tik sekėjams skirtus įrašus.", + "compose_form.hashtag_warning": "Šis įrašas nebus įtraukta į jokį saitažodį, nes ji nėra vieša. Tik viešų įrašų galima ieškoti pagal saitažodį.", + "compose_form.lock_disclaimer": "Tavo paskyra nėra {locked}. Bet kas gali sekti tave ir peržiūrėti tik sekėjams skirtus įrašus.", "compose_form.lock_disclaimer.lock": "užrakinta", "compose_form.placeholder": "Kas tavo mintyse?", "compose_form.poll.add_option": "Pridėti pasirinkimą", "compose_form.poll.duration": "Apklausos trukmė", - "compose_form.poll.option_placeholder": "Pasirinkimas {number}", + "compose_form.poll.option_placeholder": "{number} pasirinkimas", "compose_form.poll.remove_option": "Pašalinti šį pasirinkimą", "compose_form.poll.switch_to_multiple": "Keisti apklausą, kad būtų galima pasirinkti kelis pasirinkimus", "compose_form.poll.switch_to_single": "Pakeisti apklausą, kad būtų galima pasirinkti vieną variantą", @@ -528,6 +528,8 @@ "search_results.hashtags": "Saitažodžiai", "search_results.nothing_found": "Nepavyko rasti nieko pagal šiuos paieškos terminus.", "search_results.statuses": "Toots", + "server_banner.about_active_users": "Žmonės, kurie naudojosi šiuo serveriu per pastarąsias 30 dienų (mėnesio aktyvūs naudotojai)", + "server_banner.active_users": "aktyvūs naudotojai", "sign_in_banner.sign_in": "Prisijungimas", "sign_in_banner.text": "Prisijunk, kad galėtum sekti profilius arba saitažodžius, mėgsti, bendrinti ir atsakyti į įrašus. Taip pat gali bendrauti iš savo paskyros kitame serveryje.", "status.admin_status": "Open this status in the moderation interface", diff --git a/config/locales/simple_form.lt.yml b/config/locales/simple_form.lt.yml index d53b7105ef..6eb90340dc 100644 --- a/config/locales/simple_form.lt.yml +++ b/config/locales/simple_form.lt.yml @@ -63,6 +63,8 @@ lt: setting_use_pending_items: Slėpti laiko skalės naujienas po paspaudimo, vietoj automatinio kanalo slinkimo username: Gali naudoti raides, skaičius ir pabraukimus whole_word: Kai raktažodis ar frazė yra tik raidinis ir skaitmeninis, jis bus taikomas tik tada, jei atitiks visą žodį + email_domain_block: + with_dns_records: Bus bandoma išspręsti nurodyto domeno DNS įrašus, o rezultatai taip pat bus blokuojami featured_tag: name: 'Štai keletas pastaruoju metu dažniausiai saitažodžių, kurių tu naudojai:' filters: @@ -77,15 +79,98 @@ lt: site_contact_email: Kaip žmonės gali su tavimi susisiekti teisiniais ar pagalbos užklausimais. site_contact_username: Kaip žmonės gali tave pasiekti Mastodon. site_extended_description: Bet kokia papildoma informacija, kuri gali būti naudinga lankytojams ir naudotojams. Gali būti struktūrizuota naudojant Markdown sintaksę. + thumbnail: Maždaug 2:1 dydžio vaizdas, rodomas šalia tavo serverio informacijos. + timeline_preview: Atsijungę lankytojai galės naršyti naujausius viešus įrašus, esančius serveryje. trends: Trendai rodo, kurios įrašai, saitažodžiai ir naujienų istorijos tavo serveryje sulaukia didžiausio susidomėjimo. sessions: otp: 'Įvesk telefono programėlėje sugeneruotą dviejų tapatybės kodą arba naudok vieną iš atkūrimo kodų:' webauthn: Jei tai USB raktas, būtinai jį įkišk ir, jei reikia, paspausk. settings: indexable: Tavo profilio puslapis gali būti rodomas paieškos rezultatuose Google, Bing ir kituose. + user: + chosen_languages: Kai pažymėta, viešose laiko skalėse bus rodomi tik įrašai pasirinktomis kalbomis + role: Vaidmuo valdo, kokius leidimus naudotojas (-a) turi labels: + account: + indexable: Įtraukti viešus įrašus į paieškos rezultatus + show_collections: Rodyti sekimus ir sekėjus profilyje + unlocked: Automatiškai priimti naujus sekėjus + account_warning_preset: + title: Pavadinimas + admin_account_action: + include_statuses: Įtraukti praneštus įrašus į el. laišką + defaults: + avatar: Profilio nuotrauka + bot: Tai automatinė paskyra + chosen_languages: Filtruoti kalbas + display_name: Rodomas vardas + email: El. pašto adresas + expires_in: Nustoja galioti po + fields: Papildomi laukai + irreversible: Mesti vietoj slėpti + locale: Sąsajos kalba + max_uses: Maksimalus naudojimo skaičius + new_password: Naujas slaptažodis + note: Biografija + password: Slaptažodis + phrase: Raktažodis arba frazė + setting_auto_play_gif: Automatiškai leisti animuotų GIF + setting_boost_modal: Rodyti patvirtinimo dialogą prieš pakėliant įrašą + setting_default_language: Skelbimo kalba + setting_default_privacy: Skelbimo privatumas + setting_default_sensitive: Visada žymėti mediją kaip jautrią + setting_delete_modal: Rodyti patvirtinimo dialogą prieš ištrinant įrašą + setting_display_media: Medijos rodymas + setting_display_media_hide_all: Slėpti viską + setting_display_media_show_all: Rodyti viską + setting_expand_spoilers: Visada išplėsti įrašus, pažymėtus turinio įspėjimais + setting_hide_network: Slėpti savo socialinę diagramą + setting_system_font_ui: Naudoti numatytąjį sistemos šriftą + setting_theme: Svetainės tema + setting_use_pending_items: Lėtas režimas + title: Pavadinimas + type: Importo tipas + username: Naudotojo vardas + username_or_email: Naudotojo vardas arba el. paštas + whole_word: Visas žodis + email_domain_block: + with_dns_records: Įtraukti MX įrašus ir domeno IP adresus featured_tag: name: Saitažodis + filters: + actions: + hide: Slėpti visiškai + warn: Slėpti su įspėjimu + form_admin_settings: + activity_api_enabled: Skelbti suvestinį statistiką apie naudotojų veiklą per API + bootstrap_timeline_accounts: Visada rekomenduoti šias paskyras naujiems naudotojams + content_cache_retention_period: Turinio talpyklos išlaikymo laikotarpis + custom_css: Pasirinktinis CSS + mascot: Pasirinktinis talismanas (pasenęs) + registrations_mode: Kas gali užsiregistruoti + show_domain_blocks_rationale: Rodyti, kodėl domenai buvo užblokuoti + site_extended_description: Išplėstas aprašymas + site_short_description: Serverio aprašymas + site_terms: Privatumo politika + site_title: Serverio pavadinimas + theme: Numatytoji tema + thumbnail: Serverio miniatūra + invite_request: + text: Kodėl nori prisijungti? + notification_emails: + favourite: Kažkas pamėgo tavo įrašą + follow: Kažkas seka tave + follow_request: Kažkas paprašė sekti tave + mention: Kažkas paminėjo tave + pending_account: Reikia peržiūros naujam paskyrui + reblog: Kažkas pakėlė tavo įrašą + software_updates: + label: Yra nauja Mastodon versija + patch: Pranešti apie klaidų ištaisymo atnaujinimus + rule: + text: Taisyklė + settings: + show_application: Rodyti, iš kurios programėles išsiuntei įrašą tag: listable: Leisti šį saitažodį rodyti paieškose ir pasiūlymuose name: Saitažodis @@ -93,11 +178,15 @@ lt: usable: Leisti įrašams naudoti šį saitažodį user: role: Vaidmuo + time_zone: Laiko juosta user_role: + color: Ženklelio spalva + highlighted: Rodyti vaidmenį kaip ženklelį naudotojo profiliuose + name: Pavadinimas permissions_as_keys: Leidimai position: Prioritetas webhook: - events: Įgalinti įvykiai + events: Įjungti įvykiai template: Naudingosios apkrovos šablonas url: Galutinio taško URL 'no': Ne From 42afd303246abe1cf61752ab53cca466ea3cefdf Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 6 Dec 2023 05:19:24 -0500 Subject: [PATCH 09/31] Replace Sprockets with Propshaft (#28239) --- .github/renovate.json5 | 1 - Gemfile | 3 +-- Gemfile.lock | 15 ++++++--------- config/application.rb | 1 - config/environments/development.rb | 11 ----------- config/initializers/assets.rb | 16 ---------------- 6 files changed, 7 insertions(+), 40 deletions(-) delete mode 100644 config/initializers/assets.rb diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 895dbfbad2..a7998ddfdc 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -50,7 +50,6 @@ matchManagers: ['bundler'], matchPackageNames: [ 'rack', // Needs to be synced with Rails version - 'sprockets', // Requires manual upgrade https://github.com/rails/sprockets/blob/master/UPGRADING.md#guide-to-upgrading-from-sprockets-3x-to-4x 'strong_migrations', // Requires manual upgrade 'sidekiq', // Requires manual upgrade 'sidekiq-unique-jobs', // Requires manual upgrades and sync with Sidekiq version diff --git a/Gemfile b/Gemfile index e3fb39e169..cfcbcc0d3c 100644 --- a/Gemfile +++ b/Gemfile @@ -5,7 +5,7 @@ ruby '>= 3.0.0' gem 'puma', '~> 6.3' gem 'rails', '~> 7.1.1' -gem 'sprockets', '~> 3.7.2' +gem 'propshaft' gem 'thor', '~> 1.2' gem 'rack', '~> 2.2.7' @@ -89,7 +89,6 @@ gem 'sidekiq-unique-jobs', '~> 7.1' gem 'sidekiq-bulk', '~> 0.2.0' gem 'simple-navigation', '~> 4.4' gem 'simple_form', '~> 5.2' -gem 'sprockets-rails', '~> 3.4', require: 'sprockets/railtie' gem 'stoplight', '~> 3.0.1' gem 'strong_migrations', '1.6.4' gem 'tty-prompt', '~> 0.23', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 4a409a0ad6..738562116f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -534,6 +534,11 @@ GEM net-smtp premailer (~> 1.7, >= 1.7.9) private_address_check (0.5.0) + propshaft (0.8.0) + actionpack (>= 7.0.0) + activesupport (>= 7.0.0) + rack + railties (>= 7.0.0) psych (5.1.1.1) stringio public_suffix (5.0.4) @@ -736,13 +741,6 @@ GEM simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) smart_properties (1.17.0) - sprockets (3.7.2) - concurrent-ruby (~> 1.0) - rack (> 1, < 3) - sprockets-rails (3.4.2) - actionpack (>= 5.2) - activesupport (>= 5.2) - sprockets (>= 3.0.0) stackprof (0.2.25) statsd-ruby (1.5.0) stoplight (3.0.2) @@ -911,6 +909,7 @@ DEPENDENCIES posix-spawn premailer-rails private_address_check (~> 0.5) + propshaft public_suffix (~> 5.0) puma (~> 6.3) pundit (~> 2.3) @@ -949,8 +948,6 @@ DEPENDENCIES simple_form (~> 5.2) simplecov (~> 0.22) simplecov-lcov (~> 0.8) - sprockets (~> 3.7.2) - sprockets-rails (~> 3.4) stackprof stoplight (~> 3.0.1) strong_migrations (= 1.6.4) diff --git a/config/application.rb b/config/application.rb index 99ee4ffd76..b6426516ee 100644 --- a/config/application.rb +++ b/config/application.rb @@ -14,7 +14,6 @@ require 'active_job/railtie' # require 'action_mailbox/engine' # require 'action_text/engine' # require 'rails/test_unit/railtie' -require 'sprockets/railtie' # Used to be implicitly required in action_mailbox/engine require 'mail' diff --git a/config/environments/development.rb b/config/environments/development.rb index e601fc014c..3c13ada380 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -71,17 +71,6 @@ Rails.application.configure do # Highlight code that enqueued background job in logs. config.active_job.verbose_enqueue_logs = true - # Debug mode disables concatenation and preprocessing of assets. - config.assets.debug = true - - # Suppress logger output for asset requests. - config.assets.quiet = true - - # Adds additional error checking when serving assets at runtime. - # Checks for improperly declared sprockets dependencies. - # Raises helpful error messages. - config.assets.raise_runtime_errors = true - # Raises error for missing translations. # config.i18n.raise_on_missing_translations = true diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb deleted file mode 100644 index e1fd5f8ced..0000000000 --- a/config/initializers/assets.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -# Be sure to restart your server when you modify this file. - -# Version of your assets, change this if you want to expire all your assets. -Rails.application.config.assets.version = '1.0' - -# Add additional assets to the asset load path. -# Rails.application.config.assets.paths << Emoji.images_path - -# Precompile additional assets. -# application.js, application.css, and all non-JS/CSS in the app/assets -# folder are already added. -# Rails.application.config.assets.precompile += %w( admin.js admin.css ) - -Rails.application.config.assets.initialize_on_precompile = true From ee83d5c7600b2cdc96db78c5ec40d8747853ba30 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 6 Dec 2023 08:42:12 -0500 Subject: [PATCH 10/31] Enable the eslint `react/no-unknown-property` rule (#28217) --- .eslintrc.js | 1 - .../mastodon/features/interaction_modal/index.jsx | 6 +++--- .../mastodon/features/ui/components/navigation_panel.jsx | 2 +- app/javascript/mastodon/features/video/index.jsx | 1 - package.json | 2 +- yarn.lock | 4 ++-- 6 files changed, 7 insertions(+), 9 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 176879034b..e2d16a54a8 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -120,7 +120,6 @@ module.exports = defineConfig({ 'react/jsx-uses-react': 'off', // not needed with new JSX transform 'react/jsx-wrap-multilines': 'error', 'react/no-deprecated': 'off', - 'react/no-unknown-property': 'off', 'react/react-in-jsx-scope': 'off', // not needed with new JSX transform 'react/self-closing-comp': 'error', diff --git a/app/javascript/mastodon/features/interaction_modal/index.jsx b/app/javascript/mastodon/features/interaction_modal/index.jsx index 4f145f9ed2..216c63a7e6 100644 --- a/app/javascript/mastodon/features/interaction_modal/index.jsx +++ b/app/javascript/mastodon/features/interaction_modal/index.jsx @@ -298,9 +298,9 @@ class LoginForm extends React.PureComponent { onFocus={this.handleFocus} onBlur={this.handleBlur} onKeyDown={this.handleKeyDown} - autocomplete='off' - autocapitalize='off' - spellcheck='false' + autoComplete='off' + autoCapitalize='off' + spellCheck='false' /> diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.jsx b/app/javascript/mastodon/features/ui/components/navigation_panel.jsx index 4b0e03a0fd..d1b2a0910b 100644 --- a/app/javascript/mastodon/features/ui/components/navigation_panel.jsx +++ b/app/javascript/mastodon/features/ui/components/navigation_panel.jsx @@ -82,7 +82,7 @@ class NavigationPanel extends Component { {banner && -