From 8c59fbe41bd85c0365e89e1e1e8fec0817427202 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 11:28:51 +0100 Subject: [PATCH 1/6] chore(deps): update dependency nokogiri to v1.18.4 (#34175) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 753b70b31f..2afcdd4655 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -441,7 +441,7 @@ GEM net-smtp (0.5.1) net-protocol nio4r (2.7.4) - nokogiri (1.18.3) + nokogiri (1.18.4) mini_portile2 (~> 2.8.2) racc (~> 1.4) oj (3.16.10) From e74774e366f1f4ecb189ec2e235c46ea39a6d57e Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Mon, 17 Mar 2025 16:50:13 +0100 Subject: [PATCH 2/6] Disable installation of instrumentation hooks (#34192) --- config/initializers/prometheus_exporter.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/prometheus_exporter.rb b/config/initializers/prometheus_exporter.rb index fab08ceebb..fdfee59dc8 100644 --- a/config/initializers/prometheus_exporter.rb +++ b/config/initializers/prometheus_exporter.rb @@ -24,6 +24,6 @@ if ENV['MASTODON_PROMETHEUS_EXPORTER_ENABLED'] == 'true' else # Include stripped down version of PrometheusExporter::Middleware that only collects queue time require 'mastodon/middleware/prometheus_queue_time' - Rails.application.middleware.unshift Mastodon::Middleware::PrometheusQueueTime + Rails.application.middleware.unshift Mastodon::Middleware::PrometheusQueueTime, instrument: false end end From 2a5853989facc6ff40f2e94c027851fd2c1be163 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 17:27:45 +0100 Subject: [PATCH 3/6] fix(deps): update dependency pg to v8.14.1 (#34194) 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 060b028e83..d003afac18 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13191,8 +13191,8 @@ __metadata: linkType: hard "pg@npm:^8.5.0": - version: 8.14.0 - resolution: "pg@npm:8.14.0" + version: 8.14.1 + resolution: "pg@npm:8.14.1" dependencies: pg-cloudflare: "npm:^1.1.1" pg-connection-string: "npm:^2.7.0" @@ -13208,7 +13208,7 @@ __metadata: peerDependenciesMeta: pg-native: optional: true - checksum: 10c0/14d9fe726189107b028d5603b299776d039e36ed657c99057bcc1c125f889cb46536e0c48c6d98952231733c788f98c631bf74d5f8c9cbf85c4ac7c0a119b8b4 + checksum: 10c0/221741cfcea4ab32c8b57bd60703bc36cfb5622dcac56c19e45f504ef8669f2f2e0429af8850f58079cfc89055da35b5a5e12de19e0505e3f61a4b4349388dcb languageName: node linkType: hard From e30001bc80a149b8dd5df3ac0111226a7663cd89 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 17 Mar 2025 17:40:28 +0100 Subject: [PATCH 4/6] Fix incorrect URL being used when cache busting (#34189) --- app/models/media_attachment.rb | 2 +- app/services/suspend_account_service.rb | 2 +- app/services/unsuspend_account_service.rb | 2 +- spec/models/media_attachment_spec.rb | 8 ++--- spec/services/suspend_account_service_spec.rb | 30 ++++++++----------- 5 files changed, 20 insertions(+), 24 deletions(-) diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 72330aa0aa..605a81c016 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -421,7 +421,7 @@ class MediaAttachment < ApplicationRecord @paths_to_cache_bust = MediaAttachment.attachment_definitions.keys.flat_map do |attachment_name| attachment = public_send(attachment_name) styles = DEFAULT_STYLES | attachment.styles.keys - styles.map { |style| attachment.path(style) } + styles.map { |style| attachment.url(style) } end.compact rescue => e # We really don't want any error here preventing media deletion diff --git a/app/services/suspend_account_service.rb b/app/services/suspend_account_service.rb index 44210799f9..3934a738f7 100644 --- a/app/services/suspend_account_service.rb +++ b/app/services/suspend_account_service.rb @@ -95,7 +95,7 @@ class SuspendAccountService < BaseService end end - CacheBusterWorker.perform_async(attachment.path(style)) if Rails.configuration.x.cache_buster_enabled + CacheBusterWorker.perform_async(attachment.url(style)) if Rails.configuration.x.cache_buster_enabled end end end diff --git a/app/services/unsuspend_account_service.rb b/app/services/unsuspend_account_service.rb index 652dd6a845..7d3bb806a6 100644 --- a/app/services/unsuspend_account_service.rb +++ b/app/services/unsuspend_account_service.rb @@ -91,7 +91,7 @@ class UnsuspendAccountService < BaseService end end - CacheBusterWorker.perform_async(attachment.path(style)) if Rails.configuration.x.cache_buster_enabled + CacheBusterWorker.perform_async(attachment.url(style)) if Rails.configuration.x.cache_buster_enabled end end end diff --git a/spec/models/media_attachment_spec.rb b/spec/models/media_attachment_spec.rb index 5f91ae0967..bf818c1e1e 100644 --- a/spec/models/media_attachment_spec.rb +++ b/spec/models/media_attachment_spec.rb @@ -295,12 +295,12 @@ RSpec.describe MediaAttachment, :attachment_processing do end it 'queues CacheBusterWorker jobs' do - original_path = media.file.path(:original) - small_path = media.file.path(:small) + original_url = media.file.url(:original) + small_url = media.file.url(:small) expect { media.destroy } - .to enqueue_sidekiq_job(CacheBusterWorker).with(original_path) - .and enqueue_sidekiq_job(CacheBusterWorker).with(small_path) + .to enqueue_sidekiq_job(CacheBusterWorker).with(original_url) + .and enqueue_sidekiq_job(CacheBusterWorker).with(small_url) end end diff --git a/spec/services/suspend_account_service_spec.rb b/spec/services/suspend_account_service_spec.rb index 4a2f494e0c..c15c23ca30 100644 --- a/spec/services/suspend_account_service_spec.rb +++ b/spec/services/suspend_account_service_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' -RSpec.describe SuspendAccountService, :inline_jobs do +RSpec.describe SuspendAccountService do shared_examples 'common behavior' do subject { described_class.new.call(account) } @@ -11,6 +11,7 @@ RSpec.describe SuspendAccountService, :inline_jobs do before do allow(FeedManager.instance).to receive_messages(unmerge_from_home: nil, unmerge_from_list: nil) + allow(Rails.configuration.x).to receive(:cache_buster_enabled).and_return(true) local_follower.follow!(account) list.accounts << account @@ -23,6 +24,7 @@ RSpec.describe SuspendAccountService, :inline_jobs do it 'unmerges from feeds of local followers and changes file mode and preserves suspended flag' do expect { subject } .to change_file_mode + .and enqueue_sidekiq_job(CacheBusterWorker).with(account.media_attachments.first.file.url(:original)) .and 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) @@ -38,17 +40,12 @@ RSpec.describe SuspendAccountService, :inline_jobs do end describe 'suspending a local account' do - def match_update_actor_request(req, account) - json = JSON.parse(req.body) + def match_update_actor_request(json, account) + json = JSON.parse(json) actor_id = ActivityPub::TagManager.instance.uri_for(account) json['type'] == 'Update' && json['actor'] == actor_id && json['object']['id'] == actor_id && json['object']['suspended'] end - before do - stub_request(:post, 'https://alice.com/inbox').to_return(status: 201) - stub_request(:post, 'https://bob.com/inbox').to_return(status: 201) - end - include_examples 'common behavior' do let!(:account) { Fabricate(:account) } let!(:remote_follower) { Fabricate(:account, uri: 'https://alice.com', inbox_url: 'https://alice.com/inbox', protocol: :activitypub, domain: 'alice.com') } @@ -61,22 +58,20 @@ RSpec.describe SuspendAccountService, :inline_jobs do it 'sends an Update actor activity to followers and reporters' do subject - 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 + + expect(ActivityPub::DeliveryWorker) + .to have_enqueued_sidekiq_job(satisfying { |json| match_update_actor_request(json, account) }, account.id, remote_follower.inbox_url).once + .and have_enqueued_sidekiq_job(satisfying { |json| match_update_actor_request(json, account) }, account.id, remote_reporter.inbox_url).once end end end describe 'suspending a remote account' do - def match_reject_follow_request(req, account, followee) - json = JSON.parse(req.body) + def match_reject_follow_request(json, account, followee) + json = JSON.parse(json) json['type'] == 'Reject' && json['actor'] == ActivityPub::TagManager.instance.uri_for(followee) && json['object']['actor'] == account.uri end - before do - stub_request(:post, 'https://bob.com/inbox').to_return(status: 201) - end - include_examples 'common behavior' do let!(:account) { Fabricate(:account, domain: 'bob.com', uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } let!(:local_followee) { Fabricate(:account) } @@ -88,7 +83,8 @@ RSpec.describe SuspendAccountService, :inline_jobs do it 'sends a Reject Follow activity', :aggregate_failures do subject - expect(a_request(:post, account.inbox_url).with { |req| match_reject_follow_request(req, account, local_followee) }).to have_been_made.once + expect(ActivityPub::DeliveryWorker) + .to have_enqueued_sidekiq_job(satisfying { |json| match_reject_follow_request(json, account, local_followee) }, local_followee.id, account.inbox_url).once end end end From 30e334b51a4e7add05401895bff5a2ea4a97e0bd Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 17 Mar 2025 17:49:09 +0100 Subject: [PATCH 5/6] Fix language detection sometimes kicking in *after* posting (#34193) --- .../mastodon/features/compose/components/language_dropdown.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/mastodon/features/compose/components/language_dropdown.tsx b/app/javascript/mastodon/features/compose/components/language_dropdown.tsx index 21c4359981..d11891308f 100644 --- a/app/javascript/mastodon/features/compose/components/language_dropdown.tsx +++ b/app/javascript/mastodon/features/compose/components/language_dropdown.tsx @@ -378,6 +378,7 @@ export const LanguageDropdown: React.FC = () => { if (text.length > 20) { debouncedGuess(text, setGuess); } else { + debouncedGuess.cancel(); setGuess(''); } }, [text, setGuess]); From 79123af3ddd499eeef4df30b461be5b3921f30c2 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 17 Mar 2025 17:49:09 +0100 Subject: [PATCH 6/6] [Glitch] Fix language detection sometimes kicking in *after* posting Port 30e334b51a4e7add05401895bff5a2ea4a97e0bd to glitch-soc Signed-off-by: Claire --- .../glitch/features/compose/components/language_dropdown.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/flavours/glitch/features/compose/components/language_dropdown.tsx b/app/javascript/flavours/glitch/features/compose/components/language_dropdown.tsx index e8ead66fae..9447d419ec 100644 --- a/app/javascript/flavours/glitch/features/compose/components/language_dropdown.tsx +++ b/app/javascript/flavours/glitch/features/compose/components/language_dropdown.tsx @@ -378,6 +378,7 @@ export const LanguageDropdown: React.FC = () => { if (text.length > 20) { debouncedGuess(text, setGuess); } else { + debouncedGuess.cancel(); setGuess(''); } }, [text, setGuess]);