From 0a0a1f1495be69467b03a7597f995b4902698452 Mon Sep 17 00:00:00 2001
From: Daniel M Brasil <danielmbrasil@protonmail.com>
Date: Mon, 19 Jun 2023 03:51:40 -0300
Subject: [PATCH 01/33] Migrate to request specs in `/api/v1/tags` (#25439)

---
 .rubocop_todo.yml                             |   2 -
 .../api/v1/tags_controller_spec.rb            |  88 ---------
 spec/requests/api/v1/tags_spec.rb             | 169 ++++++++++++++++++
 3 files changed, 169 insertions(+), 90 deletions(-)
 delete mode 100644 spec/controllers/api/v1/tags_controller_spec.rb
 create mode 100644 spec/requests/api/v1/tags_spec.rb

diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index aba4415fcb..f3b24cdbc4 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -316,7 +316,6 @@ RSpec/LetSetup:
     - 'spec/controllers/api/v1/admin/accounts_controller_spec.rb'
     - 'spec/controllers/api/v1/filters_controller_spec.rb'
     - 'spec/controllers/api/v1/followed_tags_controller_spec.rb'
-    - 'spec/controllers/api/v1/tags_controller_spec.rb'
     - 'spec/controllers/api/v2/admin/accounts_controller_spec.rb'
     - 'spec/controllers/api/v2/filters/keywords_controller_spec.rb'
     - 'spec/controllers/api/v2/filters/statuses_controller_spec.rb'
@@ -756,7 +755,6 @@ Rails/WhereExists:
     - 'app/workers/move_worker.rb'
     - 'db/migrate/20190529143559_preserve_old_layout_for_existing_users.rb'
     - 'lib/tasks/tests.rake'
-    - 'spec/controllers/api/v1/tags_controller_spec.rb'
     - 'spec/models/account_spec.rb'
     - 'spec/services/activitypub/process_collection_service_spec.rb'
     - 'spec/services/purge_domain_service_spec.rb'
diff --git a/spec/controllers/api/v1/tags_controller_spec.rb b/spec/controllers/api/v1/tags_controller_spec.rb
deleted file mode 100644
index e914f5992d..0000000000
--- a/spec/controllers/api/v1/tags_controller_spec.rb
+++ /dev/null
@@ -1,88 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-RSpec.describe Api::V1::TagsController do
-  render_views
-
-  let(:user)   { Fabricate(:user) }
-  let(:scopes) { 'write:follows' }
-  let(:token)  { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
-
-  before { allow(controller).to receive(:doorkeeper_token) { token } }
-
-  describe 'GET #show' do
-    before do
-      get :show, params: { id: name }
-    end
-
-    context 'with existing tag' do
-      let!(:tag) { Fabricate(:tag) }
-      let(:name) { tag.name }
-
-      it 'returns http success' do
-        expect(response).to have_http_status(:success)
-      end
-    end
-
-    context 'with non-existing tag' do
-      let(:name) { 'hoge' }
-
-      it 'returns http success' do
-        expect(response).to have_http_status(:success)
-      end
-    end
-  end
-
-  describe 'POST #follow' do
-    let!(:unrelated_tag) { Fabricate(:tag) }
-
-    before do
-      TagFollow.create!(account: user.account, tag: unrelated_tag)
-
-      post :follow, params: { id: name }
-    end
-
-    context 'with existing tag' do
-      let!(:tag) { Fabricate(:tag) }
-      let(:name) { tag.name }
-
-      it 'returns http success' do
-        expect(response).to have_http_status(:success)
-      end
-
-      it 'creates follow' do
-        expect(TagFollow.where(tag: tag, account: user.account).exists?).to be true
-      end
-    end
-
-    context 'with non-existing tag' do
-      let(:name) { 'hoge' }
-
-      it 'returns http success' do
-        expect(response).to have_http_status(:success)
-      end
-
-      it 'creates follow' do
-        expect(TagFollow.where(tag: Tag.find_by!(name: name), account: user.account).exists?).to be true
-      end
-    end
-  end
-
-  describe 'POST #unfollow' do
-    let!(:tag) { Fabricate(:tag, name: 'foo') }
-    let!(:tag_follow) { Fabricate(:tag_follow, account: user.account, tag: tag) }
-
-    before do
-      post :unfollow, params: { id: tag.name }
-    end
-
-    it 'returns http success' do
-      expect(response).to have_http_status(:success)
-    end
-
-    it 'removes the follow' do
-      expect(TagFollow.where(tag: tag, account: user.account).exists?).to be false
-    end
-  end
-end
diff --git a/spec/requests/api/v1/tags_spec.rb b/spec/requests/api/v1/tags_spec.rb
new file mode 100644
index 0000000000..300ddf805c
--- /dev/null
+++ b/spec/requests/api/v1/tags_spec.rb
@@ -0,0 +1,169 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Tags' do
+  let(:user)    { Fabricate(:user) }
+  let(:scopes)  { 'write:follows' }
+  let(:token)   { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
+  let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
+
+  describe 'GET /api/v1/tags/:id' do
+    subject do
+      get "/api/v1/tags/#{name}"
+    end
+
+    context 'when the tag exists' do
+      let!(:tag) { Fabricate(:tag) }
+      let(:name) { tag.name }
+
+      it 'returns http success' do
+        subject
+
+        expect(response).to have_http_status(200)
+      end
+
+      it 'returns the tag' do
+        subject
+
+        expect(body_as_json[:name]).to eq(name)
+      end
+    end
+
+    context 'when the tag does not exist' do
+      let(:name) { 'hoge' }
+
+      it 'returns http success' do
+        subject
+
+        expect(response).to have_http_status(200)
+      end
+    end
+
+    context 'when the tag name is invalid' do
+      let(:name) { 'tag-name' }
+
+      it 'returns http not found' do
+        subject
+
+        expect(response).to have_http_status(404)
+      end
+    end
+  end
+
+  describe 'POST /api/v1/tags/:id/follow' do
+    subject do
+      post "/api/v1/tags/#{name}/follow", headers: headers
+    end
+
+    let!(:tag) { Fabricate(:tag) }
+    let(:name) { tag.name }
+
+    it_behaves_like 'forbidden for wrong scope', 'read read:follows'
+
+    context 'when the tag exists' do
+      it 'returns http success' do
+        subject
+
+        expect(response).to have_http_status(:success)
+      end
+
+      it 'creates follow' do
+        subject
+
+        expect(TagFollow.where(tag: tag, account: user.account)).to exist
+      end
+    end
+
+    context 'when the tag does not exist' do
+      let(:name) { 'hoge' }
+
+      it 'returns http success' do
+        subject
+
+        expect(response).to have_http_status(200)
+      end
+
+      it 'creates a new tag with the specified name' do
+        subject
+
+        expect(Tag.where(name: name)).to exist
+      end
+
+      it 'creates follow' do
+        subject
+
+        expect(TagFollow.where(tag: Tag.find_by(name: name), account: user.account)).to exist
+      end
+    end
+
+    context 'when the tag name is invalid' do
+      let(:name) { 'tag-name' }
+
+      it 'returns http not found' do
+        subject
+
+        expect(response).to have_http_status(404)
+      end
+    end
+
+    context 'when the Authorization header is missing' do
+      let(:headers) { {} }
+      let(:name)    { 'unauthorized' }
+
+      it 'returns http unauthorized' do
+        subject
+
+        expect(response).to have_http_status(401)
+      end
+    end
+  end
+
+  describe 'POST #unfollow' do
+    subject do
+      post "/api/v1/tags/#{name}/unfollow", headers: headers
+    end
+
+    let(:name) { tag.name }
+    let!(:tag) { Fabricate(:tag, name: 'foo') }
+
+    before do
+      Fabricate(:tag_follow, account: user.account, tag: tag)
+    end
+
+    it_behaves_like 'forbidden for wrong scope', 'read read:follows'
+
+    it 'returns http success' do
+      subject
+
+      expect(response).to have_http_status(200)
+    end
+
+    it 'removes the follow' do
+      subject
+
+      expect(TagFollow.where(tag: tag, account: user.account)).to_not exist
+    end
+
+    context 'when the tag name is invalid' do
+      let(:name) { 'tag-name' }
+
+      it 'returns http not found' do
+        subject
+
+        expect(response).to have_http_status(404)
+      end
+    end
+
+    context 'when the Authorization header is missing' do
+      let(:headers) { {} }
+      let(:name)    { 'unauthorized' }
+
+      it 'returns http unauthorized' do
+        subject
+
+        expect(response).to have_http_status(401)
+      end
+    end
+  end
+end

From b9bc9d0bdada72c74f52fc933c437e19a2e67f3f Mon Sep 17 00:00:00 2001
From: Daniel M Brasil <danielmbrasil@protonmail.com>
Date: Mon, 19 Jun 2023 03:53:05 -0300
Subject: [PATCH 02/33] Fix incorrect pagination headers in
 `/api/v2/admin/accounts` (#25477)

---
 app/controllers/api/v2/admin/accounts_controller.rb       | 8 ++++++++
 spec/controllers/api/v2/admin/accounts_controller_spec.rb | 8 ++++++++
 2 files changed, 16 insertions(+)

diff --git a/app/controllers/api/v2/admin/accounts_controller.rb b/app/controllers/api/v2/admin/accounts_controller.rb
index 0c451f778c..65cf0c4db4 100644
--- a/app/controllers/api/v2/admin/accounts_controller.rb
+++ b/app/controllers/api/v2/admin/accounts_controller.rb
@@ -18,6 +18,14 @@ class Api::V2::Admin::AccountsController < Api::V1::Admin::AccountsController
 
   private
 
+  def next_path
+    api_v2_admin_accounts_url(pagination_params(max_id: pagination_max_id)) if records_continue?
+  end
+
+  def prev_path
+    api_v2_admin_accounts_url(pagination_params(min_id: pagination_since_id)) unless @accounts.empty?
+  end
+
   def filtered_accounts
     AccountFilter.new(translated_filter_params).results
   end
diff --git a/spec/controllers/api/v2/admin/accounts_controller_spec.rb b/spec/controllers/api/v2/admin/accounts_controller_spec.rb
index a775be1709..635f645915 100644
--- a/spec/controllers/api/v2/admin/accounts_controller_spec.rb
+++ b/spec/controllers/api/v2/admin/accounts_controller_spec.rb
@@ -55,5 +55,13 @@ RSpec.describe Api::V2::Admin::AccountsController do
         end
       end
     end
+
+    context 'with limit param' do
+      let(:params) { { limit: 1 } }
+
+      it 'sets the correct pagination headers' do
+        expect(response.headers['Link'].find_link(%w(rel next)).href).to eq api_v2_admin_accounts_url(limit: 1, max_id: admin_account.id)
+      end
+    end
   end
 end

From a0d7ae257da66fc88732a491a315bc86ea299532 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 19 Jun 2023 09:03:50 +0200
Subject: [PATCH 03/33] Update dependency aws-sdk-s3 to v1.126.0 (#25480)

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 bdbeb79221..5f3678fe58 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -106,7 +106,7 @@ GEM
     aws-sdk-kms (1.67.0)
       aws-sdk-core (~> 3, >= 3.174.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-s3 (1.125.0)
+    aws-sdk-s3 (1.126.0)
       aws-sdk-core (~> 3, >= 3.174.0)
       aws-sdk-kms (~> 1)
       aws-sigv4 (~> 1.4)

From 155ec185b2ed96b0c091bdd0c01e1193eda386e4 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Mon, 19 Jun 2023 03:04:15 -0400
Subject: [PATCH 04/33] Remove unused `picture_hint` helper method (#25485)

---
 app/helpers/settings_helper.rb | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb
index ae89cec780..889ca7f402 100644
--- a/app/helpers/settings_helper.rb
+++ b/app/helpers/settings_helper.rb
@@ -24,13 +24,4 @@ module SettingsHelper
       safe_join([image_tag(account.avatar.url, width: 15, height: 15, alt: display_name(account), class: 'avatar'), content_tag(:span, account.acct, class: 'username')], ' ')
     end
   end
-
-  def picture_hint(hint, picture)
-    if picture.original_filename.nil?
-      hint
-    else
-      link = link_to t('generic.delete'), settings_profile_picture_path(picture.name.to_s), data: { method: :delete }
-      safe_join([hint, link], '<br/>'.html_safe)
-    end
-  end
 end

From e835198b26c9985daf353a6a96886ff61fd62c17 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Mon, 19 Jun 2023 03:05:42 -0400
Subject: [PATCH 05/33] Combine assertions in api/v1/notifications spec
 (#25486)

---
 .../api/v1/notifications_controller_spec.rb   | 51 ++++++++-----------
 1 file changed, 20 insertions(+), 31 deletions(-)

diff --git a/spec/controllers/api/v1/notifications_controller_spec.rb b/spec/controllers/api/v1/notifications_controller_spec.rb
index 28b8e656ab..6615848b83 100644
--- a/spec/controllers/api/v1/notifications_controller_spec.rb
+++ b/spec/controllers/api/v1/notifications_controller_spec.rb
@@ -67,24 +67,13 @@ RSpec.describe Api::V1::NotificationsController do
         get :index
       end
 
-      it 'returns http success' do
+      it 'returns expected notification types', :aggregate_failures do
         expect(response).to have_http_status(200)
-      end
 
-      it 'includes reblog' do
-        expect(body_as_json.pluck(:type)).to include 'reblog'
-      end
-
-      it 'includes mention' do
-        expect(body_as_json.pluck(:type)).to include 'mention'
-      end
-
-      it 'includes favourite' do
-        expect(body_as_json.pluck(:type)).to include 'favourite'
-      end
-
-      it 'includes follow' do
-        expect(body_as_json.pluck(:type)).to include 'follow'
+        expect(body_json_types).to include 'reblog'
+        expect(body_json_types).to include 'mention'
+        expect(body_json_types).to include 'favourite'
+        expect(body_json_types).to include 'follow'
       end
     end
 
@@ -93,12 +82,14 @@ RSpec.describe Api::V1::NotificationsController do
         get :index, params: { account_id: third.account.id }
       end
 
-      it 'returns http success' do
+      it 'returns only notifications from specified user', :aggregate_failures do
         expect(response).to have_http_status(200)
+
+        expect(body_json_account_ids.uniq).to eq [third.account.id.to_s]
       end
 
-      it 'returns only notifications from specified user' do
-        expect(body_as_json.map { |x| x[:account][:id] }.uniq).to eq [third.account.id.to_s]
+      def body_json_account_ids
+        body_as_json.map { |x| x[:account][:id] }
       end
     end
 
@@ -107,27 +98,23 @@ RSpec.describe Api::V1::NotificationsController do
         get :index, params: { account_id: 'foo' }
       end
 
-      it 'returns http success' do
+      it 'returns nothing', :aggregate_failures do
         expect(response).to have_http_status(200)
-      end
 
-      it 'returns nothing' do
         expect(body_as_json.size).to eq 0
       end
     end
 
-    describe 'with excluded_types param' do
+    describe 'with exclude_types param' do
       before do
         get :index, params: { exclude_types: %w(mention) }
       end
 
-      it 'returns http success' do
+      it 'returns everything but excluded type', :aggregate_failures do
         expect(response).to have_http_status(200)
-      end
 
-      it 'returns everything but excluded type' do
         expect(body_as_json.size).to_not eq 0
-        expect(body_as_json.pluck(:type).uniq).to_not include 'mention'
+        expect(body_json_types.uniq).to_not include 'mention'
       end
     end
 
@@ -136,13 +123,15 @@ RSpec.describe Api::V1::NotificationsController do
         get :index, params: { types: %w(mention) }
       end
 
-      it 'returns http success' do
+      it 'returns only requested type', :aggregate_failures do
         expect(response).to have_http_status(200)
-      end
 
-      it 'returns only requested type' do
-        expect(body_as_json.pluck(:type).uniq).to eq ['mention']
+        expect(body_json_types.uniq).to eq ['mention']
       end
     end
+
+    def body_json_types
+      body_as_json.pluck(:type)
+    end
   end
 end

From 3a65fb044fae4d4d717765b8163e6fbaac4e1795 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Mon, 19 Jun 2023 03:50:35 -0400
Subject: [PATCH 06/33] Add coverage for `UserMailer` methods (#25484)

---
 spec/mailers/user_mailer_spec.rb | 55 ++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/spec/mailers/user_mailer_spec.rb b/spec/mailers/user_mailer_spec.rb
index 702aa1c354..3c42a2bb7a 100644
--- a/spec/mailers/user_mailer_spec.rb
+++ b/spec/mailers/user_mailer_spec.rb
@@ -142,4 +142,59 @@ describe UserMailer do
       expect(mail.body.encoded).to include I18n.t('user_mailer.appeal_rejected.title')
     end
   end
+
+  describe 'two_factor_enabled' do
+    let(:mail) { described_class.two_factor_enabled(receiver) }
+
+    it 'renders two_factor_enabled mail' do
+      expect(mail.subject).to eq I18n.t('devise.mailer.two_factor_enabled.subject')
+      expect(mail.body.encoded).to include I18n.t('devise.mailer.two_factor_enabled.explanation')
+    end
+  end
+
+  describe 'two_factor_disabled' do
+    let(:mail) { described_class.two_factor_disabled(receiver) }
+
+    it 'renders two_factor_disabled mail' do
+      expect(mail.subject).to eq I18n.t('devise.mailer.two_factor_disabled.subject')
+      expect(mail.body.encoded).to include I18n.t('devise.mailer.two_factor_disabled.explanation')
+    end
+  end
+
+  describe 'webauthn_enabled' do
+    let(:mail) { described_class.webauthn_enabled(receiver) }
+
+    it 'renders webauthn_enabled mail' do
+      expect(mail.subject).to eq I18n.t('devise.mailer.webauthn_enabled.subject')
+      expect(mail.body.encoded).to include I18n.t('devise.mailer.webauthn_enabled.explanation')
+    end
+  end
+
+  describe 'webauthn_disabled' do
+    let(:mail) { described_class.webauthn_disabled(receiver) }
+
+    it 'renders webauthn_disabled mail' do
+      expect(mail.subject).to eq I18n.t('devise.mailer.webauthn_disabled.subject')
+      expect(mail.body.encoded).to include I18n.t('devise.mailer.webauthn_disabled.explanation')
+    end
+  end
+
+  describe 'two_factor_recovery_codes_changed' do
+    let(:mail) { described_class.two_factor_recovery_codes_changed(receiver) }
+
+    it 'renders two_factor_recovery_codes_changed mail' do
+      expect(mail.subject).to eq I18n.t('devise.mailer.two_factor_recovery_codes_changed.subject')
+      expect(mail.body.encoded).to include I18n.t('devise.mailer.two_factor_recovery_codes_changed.explanation')
+    end
+  end
+
+  describe 'webauthn_credential_added' do
+    let(:credential) { Fabricate.build(:webauthn_credential) }
+    let(:mail) { described_class.webauthn_credential_added(receiver, credential) }
+
+    it 'renders webauthn_credential_added mail' do
+      expect(mail.subject).to eq I18n.t('devise.mailer.webauthn_credential.added.subject')
+      expect(mail.body.encoded).to include I18n.t('devise.mailer.webauthn_credential.added.explanation')
+    end
+  end
 end

From cec4f1d5062943a0fbe867bfe17f62c8c7c3069b Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 19 Jun 2023 11:28:59 +0200
Subject: [PATCH 07/33] Update dependency dotenv to v16.2.0 (#25506)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
 yarn.lock | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/yarn.lock b/yarn.lock
index 1f8b99641f..7acecd4e3a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4719,9 +4719,9 @@ domutils@^3.0.1:
     domhandler "^5.0.3"
 
 dotenv@^16.0.3:
-  version "16.1.4"
-  resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.1.4.tgz#67ac1a10cd9c25f5ba604e4e08bc77c0ebe0ca8c"
-  integrity sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==
+  version "16.3.1"
+  resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e"
+  integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==
 
 duplexer@^0.1.2:
   version "0.1.2"
@@ -10732,6 +10732,7 @@ string-length@^4.0.1:
     strip-ansi "^6.0.0"
 
 "string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+  name string-width-cjs
   version "4.2.3"
   resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
   integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -10830,6 +10831,7 @@ stringz@^2.1.0:
     char-regex "^1.0.2"
 
 "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+  name strip-ansi-cjs
   version "6.0.1"
   resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
   integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -12231,6 +12233,7 @@ workbox-window@7.0.0, workbox-window@^7.0.0:
     workbox-core "7.0.0"
 
 "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
+  name wrap-ansi-cjs
   version "7.0.0"
   resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
   integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==

From e1c9d52e913b75a69ebb71c33c489c56b57b23af Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Mon, 19 Jun 2023 07:48:25 -0400
Subject: [PATCH 08/33] Reduce `sleep` time in request pool spec (#25470)

---
 app/lib/request_pool.rb       |  5 +++--
 spec/lib/request_pool_spec.rb | 25 +++++++++++++++++--------
 2 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/app/lib/request_pool.rb b/app/lib/request_pool.rb
index 6be1722860..86c825498d 100644
--- a/app/lib/request_pool.rb
+++ b/app/lib/request_pool.rb
@@ -28,8 +28,9 @@ class RequestPool
   end
 
   MAX_IDLE_TIME = 30
-  WAIT_TIMEOUT  = 5
   MAX_POOL_SIZE = ENV.fetch('MAX_REQUEST_POOL_SIZE', 512).to_i
+  REAPER_FREQUENCY = 30
+  WAIT_TIMEOUT = 5
 
   class Connection
     attr_reader :site, :last_used_at, :created_at, :in_use, :dead, :fresh
@@ -98,7 +99,7 @@ class RequestPool
 
   def initialize
     @pool   = ConnectionPool::SharedConnectionPool.new(size: MAX_POOL_SIZE, timeout: WAIT_TIMEOUT) { |site| Connection.new(site) }
-    @reaper = Reaper.new(self, 30)
+    @reaper = Reaper.new(self, REAPER_FREQUENCY)
     @reaper.run
   end
 
diff --git a/spec/lib/request_pool_spec.rb b/spec/lib/request_pool_spec.rb
index 395268fe43..f179e6ca94 100644
--- a/spec/lib/request_pool_spec.rb
+++ b/spec/lib/request_pool_spec.rb
@@ -48,16 +48,25 @@ describe RequestPool do
       expect(subject.size).to be > 1
     end
 
-    it 'closes idle connections' do
-      stub_request(:get, 'http://example.com/').to_return(status: 200, body: 'Hello!')
-
-      subject.with('http://example.com') do |http_client|
-        http_client.get('/').flush
+    context 'with an idle connection' do
+      before do
+        stub_const('RequestPool::MAX_IDLE_TIME', 1) # Lower idle time limit to 1 seconds
+        stub_const('RequestPool::REAPER_FREQUENCY', 0.1) # Run reaper every 0.1 seconds
+        stub_request(:get, 'http://example.com/').to_return(status: 200, body: 'Hello!')
       end
 
-      expect(subject.size).to eq 1
-      sleep RequestPool::MAX_IDLE_TIME + 30 + 1
-      expect(subject.size).to eq 0
+      it 'closes the connections' do
+        subject.with('http://example.com') do |http_client|
+          http_client.get('/').flush
+        end
+
+        expect { reaper_observes_idle_timeout }.to change(subject, :size).from(1).to(0)
+      end
+
+      def reaper_observes_idle_timeout
+        # One full idle period and 2 reaper cycles more
+        sleep RequestPool::MAX_IDLE_TIME + (RequestPool::REAPER_FREQUENCY * 2)
+      end
     end
   end
 end

From 804488d38e9942280f7d320af8c7fef7860a4ee5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=81=9F=E3=81=84=E3=81=A1=20=E3=81=B2?=
 <taichi221228@icloud.com>
Date: Mon, 19 Jun 2023 21:11:46 +0900
Subject: [PATCH 09/33] Rewrite `<AutosuggestHashtag />` as FC and TS (#25481)

---
 .../components/autosuggest_hashtag.jsx        | 44 -------------------
 .../components/autosuggest_hashtag.tsx        | 42 ++++++++++++++++++
 .../mastodon/components/autosuggest_input.jsx |  2 +-
 .../components/autosuggest_textarea.jsx       |  2 +-
 4 files changed, 44 insertions(+), 46 deletions(-)
 delete mode 100644 app/javascript/mastodon/components/autosuggest_hashtag.jsx
 create mode 100644 app/javascript/mastodon/components/autosuggest_hashtag.tsx

diff --git a/app/javascript/mastodon/components/autosuggest_hashtag.jsx b/app/javascript/mastodon/components/autosuggest_hashtag.jsx
deleted file mode 100644
index b509f48df0..0000000000
--- a/app/javascript/mastodon/components/autosuggest_hashtag.jsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import PropTypes from 'prop-types';
-import { PureComponent } from 'react';
-
-import { FormattedMessage } from 'react-intl';
-
-import ShortNumber from 'mastodon/components/short_number';
-
-export default class AutosuggestHashtag extends PureComponent {
-
-  static propTypes = {
-    tag: PropTypes.shape({
-      name: PropTypes.string.isRequired,
-      url: PropTypes.string,
-      history: PropTypes.array,
-    }).isRequired,
-  };
-
-  render() {
-    const { tag } = this.props;
-    const weeklyUses = tag.history && (
-      <ShortNumber
-        value={tag.history.reduce((total, day) => total + day.uses * 1, 0)}
-      />
-    );
-
-    return (
-      <div className='autosuggest-hashtag'>
-        <div className='autosuggest-hashtag__name'>
-          #<strong>{tag.name}</strong>
-        </div>
-        {tag.history !== undefined && (
-          <div className='autosuggest-hashtag__uses'>
-            <FormattedMessage
-              id='autosuggest_hashtag.per_week'
-              defaultMessage='{count} per week'
-              values={{ count: weeklyUses }}
-            />
-          </div>
-        )}
-      </div>
-    );
-  }
-
-}
diff --git a/app/javascript/mastodon/components/autosuggest_hashtag.tsx b/app/javascript/mastodon/components/autosuggest_hashtag.tsx
new file mode 100644
index 0000000000..c6798054db
--- /dev/null
+++ b/app/javascript/mastodon/components/autosuggest_hashtag.tsx
@@ -0,0 +1,42 @@
+import { FormattedMessage } from 'react-intl';
+
+import ShortNumber from 'mastodon/components/short_number';
+
+interface Props {
+  tag: {
+    name: string;
+    url?: string;
+    history?: Array<{
+      uses: number;
+      accounts: string;
+      day: string;
+    }>;
+    following?: boolean;
+    type: 'hashtag';
+  };
+}
+
+export const AutosuggestHashtag: React.FC<Props> = ({ tag }) => {
+  const weeklyUses = tag.history && (
+    <ShortNumber
+      value={tag.history.reduce((total, day) => total + day.uses * 1, 0)}
+    />
+  );
+
+  return (
+    <div className='autosuggest-hashtag'>
+      <div className='autosuggest-hashtag__name'>
+        #<strong>{tag.name}</strong>
+      </div>
+      {tag.history !== undefined && (
+        <div className='autosuggest-hashtag__uses'>
+          <FormattedMessage
+            id='autosuggest_hashtag.per_week'
+            defaultMessage='{count} per week'
+            values={{ count: weeklyUses }}
+          />
+        </div>
+      )}
+    </div>
+  );
+};
diff --git a/app/javascript/mastodon/components/autosuggest_input.jsx b/app/javascript/mastodon/components/autosuggest_input.jsx
index 890f94928b..06cbb5d75b 100644
--- a/app/javascript/mastodon/components/autosuggest_input.jsx
+++ b/app/javascript/mastodon/components/autosuggest_input.jsx
@@ -8,7 +8,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
 import AutosuggestAccountContainer from '../features/compose/containers/autosuggest_account_container';
 
 import AutosuggestEmoji from './autosuggest_emoji';
-import AutosuggestHashtag from './autosuggest_hashtag';
+import { AutosuggestHashtag } from './autosuggest_hashtag';
 
 const textAtCursorMatchesToken = (str, caretPosition, searchTokens) => {
   let word;
diff --git a/app/javascript/mastodon/components/autosuggest_textarea.jsx b/app/javascript/mastodon/components/autosuggest_textarea.jsx
index 463d2e94c1..230e4f6572 100644
--- a/app/javascript/mastodon/components/autosuggest_textarea.jsx
+++ b/app/javascript/mastodon/components/autosuggest_textarea.jsx
@@ -10,7 +10,7 @@ import Textarea from 'react-textarea-autosize';
 import AutosuggestAccountContainer from '../features/compose/containers/autosuggest_account_container';
 
 import AutosuggestEmoji from './autosuggest_emoji';
-import AutosuggestHashtag from './autosuggest_hashtag';
+import { AutosuggestHashtag } from './autosuggest_hashtag';
 
 const textAtCursorMatchesToken = (str, caretPosition) => {
   let word;

From dd07393e755062d2d656ae7872c949ef7a9ddec7 Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Mon, 19 Jun 2023 15:06:06 +0200
Subject: [PATCH 10/33] Fix user settings not getting validated (#25508)

---
 app/models/user_settings.rb       |  5 ++++-
 spec/models/user_settings_spec.rb | 10 ++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/app/models/user_settings.rb b/app/models/user_settings.rb
index 2c025d6c56..0f77f45f78 100644
--- a/app/models/user_settings.rb
+++ b/app/models/user_settings.rb
@@ -72,7 +72,10 @@ class UserSettings
 
     raise KeyError, "Undefined setting: #{key}" unless self.class.definition_for?(key)
 
-    typecast_value = self.class.definition_for(key).type_cast(value)
+    setting_definition = self.class.definition_for(key)
+    typecast_value = setting_definition.type_cast(value)
+
+    raise ArgumentError, "Invalid value for setting #{key}: #{typecast_value}" if setting_definition.in.present? && setting_definition.in.exclude?(typecast_value)
 
     if typecast_value.nil?
       @original_hash.delete(key)
diff --git a/spec/models/user_settings_spec.rb b/spec/models/user_settings_spec.rb
index f0e4272fd9..653597c90d 100644
--- a/spec/models/user_settings_spec.rb
+++ b/spec/models/user_settings_spec.rb
@@ -49,6 +49,16 @@ RSpec.describe UserSettings do
         expect(subject[:always_send_emails]).to be true
       end
     end
+
+    context 'when the setting has a closed set of values' do
+      it 'updates the attribute when given a valid value' do
+        expect { subject[:'web.display_media'] = :show_all }.to change { subject[:'web.display_media'] }.from('default').to('show_all')
+      end
+
+      it 'raises an error when given an invalid value' do
+        expect { subject[:'web.display_media'] = 'invalid value' }.to raise_error ArgumentError
+      end
+    end
   end
 
   describe '#update' do

From 3a91603b1507d3821e8a20734e6ed92ae4d06c3b Mon Sep 17 00:00:00 2001
From: Emelia Smith <ThisIsMissEm@users.noreply.github.com>
Date: Tue, 20 Jun 2023 18:04:35 +0200
Subject: [PATCH 11/33] Prevent UserCleanupScheduler from overwhelming
 streaming (#25519)

---
 app/services/remove_status_service.rb          | 18 +++++++++++++++++-
 .../scheduler/user_cleanup_scheduler.rb        |  2 +-
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb
index 25da2c6eb4..4eda5b355b 100644
--- a/app/services/remove_status_service.rb
+++ b/app/services/remove_status_service.rb
@@ -12,6 +12,7 @@ class RemoveStatusService < BaseService
   # @option  [Boolean] :immediate
   # @option  [Boolean] :preserve
   # @option  [Boolean] :original_removed
+  # @option  [Boolean] :skip_streaming
   def call(status, **options)
     @payload  = Oj.dump(event: :delete, payload: status.id.to_s)
     @status   = status
@@ -52,6 +53,9 @@ class RemoveStatusService < BaseService
 
   private
 
+  # The following FeedManager calls all do not result in redis publishes for
+  # streaming, as the `:update` option is false
+
   def remove_from_self
     FeedManager.instance.unpush_from_home(@account, @status)
   end
@@ -75,6 +79,8 @@ class RemoveStatusService < BaseService
     # followers. Here we send a delete to actively mentioned accounts
     # that may not follow the account
 
+    return if skip_streaming?
+
     @status.active_mentions.find_each do |mention|
       redis.publish("timeline:#{mention.account_id}", @payload)
     end
@@ -103,7 +109,7 @@ class RemoveStatusService < BaseService
     # without us being able to do all the fancy stuff
 
     @status.reblogs.rewhere(deleted_at: [nil, @status.deleted_at]).includes(:account).reorder(nil).find_each do |reblog|
-      RemoveStatusService.new.call(reblog, original_removed: true)
+      RemoveStatusService.new.call(reblog, original_removed: true, skip_streaming: skip_streaming?)
     end
   end
 
@@ -114,6 +120,8 @@ class RemoveStatusService < BaseService
 
     return unless @status.public_visibility?
 
+    return if skip_streaming?
+
     @status.tags.map(&:name).each do |hashtag|
       redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}", @payload)
       redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}:local", @payload) if @status.local?
@@ -123,6 +131,8 @@ class RemoveStatusService < BaseService
   def remove_from_public
     return unless @status.public_visibility?
 
+    return if skip_streaming?
+
     redis.publish('timeline:public', @payload)
     redis.publish(@status.local? ? 'timeline:public:local' : 'timeline:public:remote', @payload)
   end
@@ -130,6 +140,8 @@ class RemoveStatusService < BaseService
   def remove_from_media
     return unless @status.public_visibility?
 
+    return if skip_streaming?
+
     redis.publish('timeline:public:media', @payload)
     redis.publish(@status.local? ? 'timeline:public:local:media' : 'timeline:public:remote:media', @payload)
   end
@@ -143,4 +155,8 @@ class RemoveStatusService < BaseService
   def permanently?
     @options[:immediate] || !(@options[:preserve] || @status.reported?)
   end
+
+  def skip_streaming?
+    !!@options[:skip_streaming]
+  end
 end
diff --git a/app/workers/scheduler/user_cleanup_scheduler.rb b/app/workers/scheduler/user_cleanup_scheduler.rb
index 45cfbc62e6..4aee7935a2 100644
--- a/app/workers/scheduler/user_cleanup_scheduler.rb
+++ b/app/workers/scheduler/user_cleanup_scheduler.rb
@@ -24,7 +24,7 @@ class Scheduler::UserCleanupScheduler
   def clean_discarded_statuses!
     Status.unscoped.discarded.where('deleted_at <= ?', 30.days.ago).find_in_batches do |statuses|
       RemovalWorker.push_bulk(statuses) do |status|
-        [status.id, { 'immediate' => true }]
+        [status.id, { 'immediate' => true, 'skip_streaming' => true }]
       end
     end
   end

From c78280a8ce4c841dd2a454ba086e95cfa4c37438 Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Tue, 20 Jun 2023 18:10:19 +0200
Subject: [PATCH 12/33] Add translate="no" to outgoing mentions and links
 (#25524)

---
 app/lib/text_formatter.rb           |  4 ++--
 lib/sanitize_ext/sanitize_config.rb | 10 ++++++++--
 spec/lib/sanitize_config_spec.rb    |  8 ++++++++
 3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/app/lib/text_formatter.rb b/app/lib/text_formatter.rb
index 243e892891..0404cbaced 100644
--- a/app/lib/text_formatter.rb
+++ b/app/lib/text_formatter.rb
@@ -79,7 +79,7 @@ class TextFormatter
     cutoff      = url[prefix.length..-1].length > 30
 
     <<~HTML.squish
-      <a href="#{h(url)}" target="_blank" rel="#{rel.join(' ')}"><span class="invisible">#{h(prefix)}</span><span class="#{cutoff ? 'ellipsis' : ''}">#{h(display_url)}</span><span class="invisible">#{h(suffix)}</span></a>
+      <a href="#{h(url)}" target="_blank" rel="#{rel.join(' ')}" translate="no"><span class="invisible">#{h(prefix)}</span><span class="#{cutoff ? 'ellipsis' : ''}">#{h(display_url)}</span><span class="invisible">#{h(suffix)}</span></a>
     HTML
   rescue Addressable::URI::InvalidURIError, IDN::Idna::IdnaError
     h(entity[:url])
@@ -122,7 +122,7 @@ class TextFormatter
     display_username = same_username_hits&.positive? || with_domains? ? account.pretty_acct : account.username
 
     <<~HTML.squish
-      <span class="h-card"><a href="#{h(url)}" class="u-url mention">@<span>#{h(display_username)}</span></a></span>
+      <span class="h-card" translate="no"><a href="#{h(url)}" class="u-url mention">@<span>#{h(display_username)}</span></a></span>
     HTML
   end
 
diff --git a/lib/sanitize_ext/sanitize_config.rb b/lib/sanitize_ext/sanitize_config.rb
index 9cc500c36e..bcd89af67a 100644
--- a/lib/sanitize_ext/sanitize_config.rb
+++ b/lib/sanitize_ext/sanitize_config.rb
@@ -36,6 +36,11 @@ class Sanitize
       node['class'] = class_list.join(' ')
     end
 
+    TRANSLATE_TRANSFORMER = lambda do |env|
+      node = env[:node]
+      node.remove_attribute('translate') unless node['translate'] == 'no'
+    end
+
     UNSUPPORTED_HREF_TRANSFORMER = lambda do |env|
       return unless env[:node_name] == 'a'
 
@@ -63,8 +68,8 @@ class Sanitize
       elements: %w(p br span a del pre blockquote code b strong u i em ul ol li),
 
       attributes: {
-        'a' => %w(href rel class),
-        'span' => %w(class),
+        'a' => %w(href rel class translate),
+        'span' => %w(class translate),
         'ol' => %w(start reversed),
         'li' => %w(value),
       },
@@ -80,6 +85,7 @@ class Sanitize
 
       transformers: [
         CLASS_WHITELIST_TRANSFORMER,
+        TRANSLATE_TRANSFORMER,
         UNSUPPORTED_ELEMENTS_TRANSFORMER,
         UNSUPPORTED_HREF_TRANSFORMER,
       ]
diff --git a/spec/lib/sanitize_config_spec.rb b/spec/lib/sanitize_config_spec.rb
index a01122bed0..550ad1c52b 100644
--- a/spec/lib/sanitize_config_spec.rb
+++ b/spec/lib/sanitize_config_spec.rb
@@ -38,6 +38,14 @@ describe Sanitize::Config do
       expect(Sanitize.fragment('<a href="http://example.com">Test</a>', subject)).to eq '<a href="http://example.com" rel="nofollow noopener noreferrer" target="_blank">Test</a>'
     end
 
+    it 'keeps a with translate="no"' do
+      expect(Sanitize.fragment('<a href="http://example.com" translate="no">Test</a>', subject)).to eq '<a href="http://example.com" translate="no" rel="nofollow noopener noreferrer" target="_blank">Test</a>'
+    end
+
+    it 'removes "translate" attribute with invalid value' do
+      expect(Sanitize.fragment('<a href="http://example.com" translate="foo">Test</a>', subject)).to eq '<a href="http://example.com" rel="nofollow noopener noreferrer" target="_blank">Test</a>'
+    end
+
     it 'removes a with unparsable href' do
       expect(Sanitize.fragment('<a href=" https://google.fr">Test</a>', subject)).to eq 'Test'
     end

From fd23f5024377ee3d31d1a9fd7d2f094036ceb45b Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Tue, 20 Jun 2023 18:15:35 +0200
Subject: [PATCH 13/33] Fix wrong view being displayed when a webhook fails
 validation (#25464)

---
 app/controllers/admin/webhooks_controller.rb       | 2 +-
 spec/controllers/admin/webhooks_controller_spec.rb | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/app/controllers/admin/webhooks_controller.rb b/app/controllers/admin/webhooks_controller.rb
index 01d9ba8ce2..e087476658 100644
--- a/app/controllers/admin/webhooks_controller.rb
+++ b/app/controllers/admin/webhooks_controller.rb
@@ -42,7 +42,7 @@ module Admin
       if @webhook.update(resource_params)
         redirect_to admin_webhook_path(@webhook)
       else
-        render :show
+        render :edit
       end
     end
 
diff --git a/spec/controllers/admin/webhooks_controller_spec.rb b/spec/controllers/admin/webhooks_controller_spec.rb
index 5e45c74082..074956c555 100644
--- a/spec/controllers/admin/webhooks_controller_spec.rb
+++ b/spec/controllers/admin/webhooks_controller_spec.rb
@@ -82,7 +82,7 @@ describe Admin::WebhooksController do
         end.to_not change(webhook, :url)
 
         expect(response).to have_http_status(:success)
-        expect(response).to render_template(:show)
+        expect(response).to render_template(:edit)
       end
     end
 

From e53eb38a8d1eabe7b1de6852e7114ace1c435d63 Mon Sep 17 00:00:00 2001
From: Daniel M Brasil <danielmbrasil@protonmail.com>
Date: Tue, 20 Jun 2023 13:16:48 -0300
Subject: [PATCH 14/33] Migrate to request specs in
 `/api/v1/admin/account_actions` (#25514)

---
 .../admin/account_actions_controller_spec.rb  |  55 -------
 .../api/v1/admin/account_actions_spec.rb      | 154 ++++++++++++++++++
 2 files changed, 154 insertions(+), 55 deletions(-)
 delete mode 100644 spec/controllers/api/v1/admin/account_actions_controller_spec.rb
 create mode 100644 spec/requests/api/v1/admin/account_actions_spec.rb

diff --git a/spec/controllers/api/v1/admin/account_actions_controller_spec.rb b/spec/controllers/api/v1/admin/account_actions_controller_spec.rb
deleted file mode 100644
index 523350e123..0000000000
--- a/spec/controllers/api/v1/admin/account_actions_controller_spec.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-RSpec.describe Api::V1::Admin::AccountActionsController do
-  render_views
-
-  let(:role)   { UserRole.find_by(name: 'Moderator') }
-  let(:user)   { Fabricate(:user, role: role) }
-  let(:scopes) { 'admin:read admin:write' }
-  let(:token)  { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
-  let(:account) { Fabricate(:account) }
-
-  before do
-    allow(controller).to receive(:doorkeeper_token) { token }
-  end
-
-  describe 'POST #create' do
-    context 'with type of disable' do
-      before do
-        post :create, params: { account_id: account.id, type: 'disable' }
-      end
-
-      it_behaves_like 'forbidden for wrong scope', 'write:statuses'
-      it_behaves_like 'forbidden for wrong role', ''
-
-      it 'returns http success' do
-        expect(response).to have_http_status(200)
-      end
-
-      it 'performs action against account' do
-        expect(account.reload.user_disabled?).to be true
-      end
-
-      it 'logs action' do
-        log_item = Admin::ActionLog.last
-
-        expect(log_item).to_not be_nil
-        expect(log_item.action).to eq :disable
-        expect(log_item.account_id).to eq user.account_id
-        expect(log_item.target_id).to eq account.user.id
-      end
-    end
-
-    context 'with no type' do
-      before do
-        post :create, params: { account_id: account.id }
-      end
-
-      it 'returns http unprocessable entity' do
-        expect(response).to have_http_status(422)
-      end
-    end
-  end
-end
diff --git a/spec/requests/api/v1/admin/account_actions_spec.rb b/spec/requests/api/v1/admin/account_actions_spec.rb
new file mode 100644
index 0000000000..9295d262d6
--- /dev/null
+++ b/spec/requests/api/v1/admin/account_actions_spec.rb
@@ -0,0 +1,154 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Account actions' do
+  let(:role)    { UserRole.find_by(name: 'Admin') }
+  let(:user)    { Fabricate(:user, role: role) }
+  let(:scopes)  { 'admin:write admin:write:accounts' }
+  let(:token)   { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
+  let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
+  let(:mailer)  { instance_double(ActionMailer::MessageDelivery, deliver_later!: nil) }
+
+  before do
+    allow(UserMailer).to receive(:warning).with(target_account.user, anything).and_return(mailer)
+  end
+
+  shared_examples 'a successful notification delivery' do
+    it 'notifies the user about the action taken' do
+      subject
+
+      expect(UserMailer).to have_received(:warning).with(target_account.user, anything).once
+      expect(mailer).to have_received(:deliver_later!).once
+    end
+  end
+
+  shared_examples 'a successful logged action' do |action_type, target_type|
+    it 'logs action' do
+      subject
+
+      log_item = Admin::ActionLog.last
+
+      expect(log_item).to be_present
+      expect(log_item.action).to eq(action_type)
+      expect(log_item.account_id).to eq(user.account_id)
+      expect(log_item.target_id).to eq(target_type == :user ? target_account.user.id : target_account.id)
+    end
+  end
+
+  describe 'POST /api/v1/admin/accounts/:id/action' do
+    subject do
+      post "/api/v1/admin/accounts/#{target_account.id}/action", headers: headers, params: params
+    end
+
+    let(:target_account) { Fabricate(:account) }
+
+    context 'with type of disable' do
+      let(:params) { { type: 'disable' } }
+
+      it_behaves_like 'forbidden for wrong scope', 'admin:read admin:read:accounts'
+      it_behaves_like 'forbidden for wrong role', ''
+      it_behaves_like 'a successful notification delivery'
+      it_behaves_like 'a successful logged action', :disable, :user
+
+      it 'returns http success' do
+        subject
+
+        expect(response).to have_http_status(200)
+      end
+
+      it 'disables the target account' do
+        expect { subject }.to change { target_account.reload.user_disabled? }.from(false).to(true)
+      end
+    end
+
+    context 'with type of sensitive' do
+      let(:params) { { type: 'sensitive' } }
+
+      it_behaves_like 'forbidden for wrong scope', 'admin:read admin:read:accounts'
+      it_behaves_like 'forbidden for wrong role', ''
+      it_behaves_like 'a successful notification delivery'
+      it_behaves_like 'a successful logged action', :sensitive, :account
+
+      it 'returns http success' do
+        subject
+
+        expect(response).to have_http_status(200)
+      end
+
+      it 'marks the target account as sensitive' do
+        expect { subject }.to change { target_account.reload.sensitized? }.from(false).to(true)
+      end
+    end
+
+    context 'with type of silence' do
+      let(:params) { { type: 'silence' } }
+
+      it_behaves_like 'forbidden for wrong scope', 'admin:read admin:read:accounts'
+      it_behaves_like 'forbidden for wrong role', ''
+      it_behaves_like 'a successful notification delivery'
+      it_behaves_like 'a successful logged action', :silence, :account
+
+      it 'returns http success' do
+        subject
+
+        expect(response).to have_http_status(200)
+      end
+
+      it 'marks the target account as silenced' do
+        expect { subject }.to change { target_account.reload.silenced? }.from(false).to(true)
+      end
+    end
+
+    context 'with type of suspend' do
+      let(:params) { { type: 'suspend' } }
+
+      it_behaves_like 'forbidden for wrong scope', 'admin:read admin:read:accounts'
+      it_behaves_like 'forbidden for wrong role', ''
+      it_behaves_like 'a successful notification delivery'
+      it_behaves_like 'a successful logged action', :suspend, :account
+
+      it 'returns http success' do
+        subject
+
+        expect(response).to have_http_status(200)
+      end
+
+      it 'marks the target account as suspended' do
+        expect { subject }.to change { target_account.reload.suspended? }.from(false).to(true)
+      end
+    end
+
+    context 'with type of none' do
+      let(:params) { { type: 'none' } }
+
+      it_behaves_like 'a successful notification delivery'
+
+      it 'returns http success' do
+        subject
+
+        expect(response).to have_http_status(200)
+      end
+    end
+
+    context 'with no type' do
+      let(:params) { {} }
+
+      it 'returns http unprocessable entity' do
+        subject
+
+        expect(response).to have_http_status(422)
+      end
+    end
+
+    context 'with invalid type' do
+      let(:params) { { type: 'invalid' } }
+
+      it 'returns http unprocessable entity' do
+        subject
+
+        expect(response).to have_http_status(422)
+      end
+    end
+  end
+end

From ec91ea44575a5d9cb8ce1be5d0448ef5e2d98a6e Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Tue, 20 Jun 2023 18:32:14 +0200
Subject: [PATCH 15/33] Fix missing validation on `default_privacy` setting
 (#25513)

---
 app/models/user_settings.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/models/user_settings.rb b/app/models/user_settings.rb
index 0f77f45f78..71af7aaeb0 100644
--- a/app/models/user_settings.rb
+++ b/app/models/user_settings.rb
@@ -14,7 +14,7 @@ class UserSettings
   setting :show_application, default: true
   setting :default_language, default: nil
   setting :default_sensitive, default: false
-  setting :default_privacy, default: nil
+  setting :default_privacy, default: nil, in: %w(public unlisted private)
 
   namespace :web do
     setting :crop_images, default: true

From ebfeaebedbc43526116fc5c0abe82f3d8745c927 Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Tue, 20 Jun 2023 18:32:26 +0200
Subject: [PATCH 16/33] Fix /api/v1/conversations sometimes returning empty
 accounts (#25499)

---
 app/models/account_conversation.rb                     | 10 ++--------
 .../api/v1/conversations_controller_spec.rb            |  6 ++++--
 2 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/app/models/account_conversation.rb b/app/models/account_conversation.rb
index 32fe79ccf7..25a75d8a61 100644
--- a/app/models/account_conversation.rb
+++ b/app/models/account_conversation.rb
@@ -32,14 +32,8 @@ class AccountConversation < ApplicationRecord
   end
 
   def participant_accounts
-    @participant_accounts ||= begin
-      if participant_account_ids.empty?
-        [account]
-      else
-        participants = Account.where(id: participant_account_ids).to_a
-        participants.empty? ? [account] : participants
-      end
-    end
+    @participant_accounts ||= Account.where(id: participant_account_ids).to_a
+    @participant_accounts.presence || [account]
   end
 
   class << self
diff --git a/spec/controllers/api/v1/conversations_controller_spec.rb b/spec/controllers/api/v1/conversations_controller_spec.rb
index f8a5985634..28d7c7f3ae 100644
--- a/spec/controllers/api/v1/conversations_controller_spec.rb
+++ b/spec/controllers/api/v1/conversations_controller_spec.rb
@@ -18,6 +18,7 @@ RSpec.describe Api::V1::ConversationsController do
 
     before do
       PostStatusService.new.call(other.account, text: 'Hey @alice', visibility: 'direct')
+      PostStatusService.new.call(user.account, text: 'Hey, nobody here', visibility: 'direct')
     end
 
     it 'returns http success' do
@@ -33,7 +34,8 @@ RSpec.describe Api::V1::ConversationsController do
     it 'returns conversations' do
       get :index
       json = body_as_json
-      expect(json.size).to eq 1
+      expect(json.size).to eq 2
+      expect(json[0][:accounts].size).to eq 1
     end
 
     context 'with since_id' do
@@ -41,7 +43,7 @@ RSpec.describe Api::V1::ConversationsController do
         it 'returns conversations' do
           get :index, params: { since_id: Mastodon::Snowflake.id_at(1.hour.ago, with_random: false) }
           json = body_as_json
-          expect(json.size).to eq 1
+          expect(json.size).to eq 2
         end
       end
 

From 37a9c2258a323eee69274dfb6d710a712201c61d Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Tue, 20 Jun 2023 18:54:05 +0200
Subject: [PATCH 17/33] Add per-test timeouts to AutoStatusesCleanupScheduler
 tests (#24841)

---
 .../scheduler/accounts_statuses_cleanup_scheduler_spec.rb   | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb b/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb
index 5565636d57..4d9185093a 100644
--- a/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb
+++ b/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb
@@ -75,6 +75,12 @@ describe Scheduler::AccountsStatusesCleanupScheduler do
   end
 
   describe '#perform' do
+    around do |example|
+      Timeout.timeout(30) do
+        example.run
+      end
+    end
+
     before do
       # Policies for the accounts
       Fabricate(:account_statuses_cleanup_policy, account: account_alice)

From 69db507924d6d9350cca8a7127e773d46f9b8f48 Mon Sep 17 00:00:00 2001
From: Ian <ian@devolute.net>
Date: Wed, 21 Jun 2023 16:58:00 +0100
Subject: [PATCH 18/33] Change emoji picker icon (#25479)

---
 .../features/compose/components/emoji_picker_dropdown.jsx       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx
index 79551b512f..494b8d8624 100644
--- a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx
+++ b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx
@@ -389,7 +389,7 @@ class EmojiPickerDropdown extends PureComponent {
           {button || <img
             className={classNames('emojione', { 'pulse-loading': active && loading })}
             alt='🙂'
-            src={`${assetHost}/emoji/1f602.svg`}
+            src={`${assetHost}/emoji/1f642.svg`}
           />}
         </div>
 

From 6ac271c2a008a1d1d865918ffd5c95daee737b63 Mon Sep 17 00:00:00 2001
From: Daniel M Brasil <danielmbrasil@protonmail.com>
Date: Thu, 22 Jun 2023 06:49:35 -0300
Subject: [PATCH 19/33] Migrate to request specs in `/api/v1/suggestions`
 (#25540)

---
 .../api/v1/suggestions_controller_spec.rb     |  37 -------
 spec/requests/api/v1/suggestions_spec.rb      | 103 ++++++++++++++++++
 2 files changed, 103 insertions(+), 37 deletions(-)
 delete mode 100644 spec/controllers/api/v1/suggestions_controller_spec.rb
 create mode 100644 spec/requests/api/v1/suggestions_spec.rb

diff --git a/spec/controllers/api/v1/suggestions_controller_spec.rb b/spec/controllers/api/v1/suggestions_controller_spec.rb
deleted file mode 100644
index c61ce0ec05..0000000000
--- a/spec/controllers/api/v1/suggestions_controller_spec.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-RSpec.describe Api::V1::SuggestionsController do
-  render_views
-
-  let(:user)  { Fabricate(:user) }
-  let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read write') }
-
-  before do
-    allow(controller).to receive(:doorkeeper_token) { token }
-  end
-
-  describe 'GET #index' do
-    let(:bob) { Fabricate(:account) }
-    let(:jeff) { Fabricate(:account) }
-
-    before do
-      PotentialFriendshipTracker.record(user.account_id, bob.id, :reblog)
-      PotentialFriendshipTracker.record(user.account_id, jeff.id, :favourite)
-
-      get :index
-    end
-
-    it 'returns http success' do
-      expect(response).to have_http_status(200)
-    end
-
-    it 'returns accounts' do
-      json = body_as_json
-
-      expect(json.size).to be >= 1
-      expect(json.pluck(:id)).to include(*[bob, jeff].map { |i| i.id.to_s })
-    end
-  end
-end
diff --git a/spec/requests/api/v1/suggestions_spec.rb b/spec/requests/api/v1/suggestions_spec.rb
new file mode 100644
index 0000000000..42b7f86629
--- /dev/null
+++ b/spec/requests/api/v1/suggestions_spec.rb
@@ -0,0 +1,103 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'Suggestions' do
+  let(:user)    { Fabricate(:user) }
+  let(:token)   { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
+  let(:scopes)  { 'read' }
+  let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
+
+  describe 'GET /api/v1/suggestions' do
+    subject do
+      get '/api/v1/suggestions', headers: headers, params: params
+    end
+
+    let(:bob)    { Fabricate(:account) }
+    let(:jeff)   { Fabricate(:account) }
+    let(:params) { {} }
+
+    before do
+      PotentialFriendshipTracker.record(user.account_id, bob.id, :reblog)
+      PotentialFriendshipTracker.record(user.account_id, jeff.id, :favourite)
+    end
+
+    it_behaves_like 'forbidden for wrong scope', 'write'
+
+    it 'returns http success' do
+      subject
+
+      expect(response).to have_http_status(200)
+    end
+
+    it 'returns accounts' do
+      subject
+
+      body = body_as_json
+
+      expect(body.size).to eq 2
+      expect(body.pluck(:id)).to match_array([bob, jeff].map { |i| i.id.to_s })
+    end
+
+    context 'with limit param' do
+      let(:params) { { limit: 1 } }
+
+      it 'returns only the requested number of accounts' do
+        subject
+
+        expect(body_as_json.size).to eq 1
+      end
+    end
+
+    context 'without an authorization header' do
+      let(:headers) { {} }
+
+      it 'returns http unauthorized' do
+        subject
+
+        expect(response).to have_http_status(401)
+      end
+    end
+  end
+
+  describe 'DELETE /api/v1/suggestions/:id' do
+    subject do
+      delete "/api/v1/suggestions/#{jeff.id}", headers: headers
+    end
+
+    let(:suggestions_source) { instance_double(AccountSuggestions::PastInteractionsSource, remove: nil) }
+    let(:bob)                { Fabricate(:account) }
+    let(:jeff)               { Fabricate(:account) }
+
+    before do
+      PotentialFriendshipTracker.record(user.account_id, bob.id, :reblog)
+      PotentialFriendshipTracker.record(user.account_id, jeff.id, :favourite)
+      allow(AccountSuggestions::PastInteractionsSource).to receive(:new).and_return(suggestions_source)
+    end
+
+    it_behaves_like 'forbidden for wrong scope', 'write'
+
+    it 'returns http success' do
+      subject
+
+      expect(response).to have_http_status(200)
+    end
+
+    it 'removes the specified suggestion' do
+      subject
+
+      expect(suggestions_source).to have_received(:remove).with(user.account, jeff.id.to_s).once
+      expect(suggestions_source).to_not have_received(:remove).with(user.account, bob.id.to_s)
+    end
+
+    context 'without an authorization header' do
+      let(:headers) { {} }
+
+      it 'returns http unauthorized' do
+        subject
+
+        expect(response).to have_http_status(401)
+      end
+    end
+  end
+end

From 0b39b9abee65894efb5797b364e7f2af9b12ba5b Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Thu, 22 Jun 2023 05:53:28 -0400
Subject: [PATCH 20/33] Speed-up on `BackupService` spec (#25527)

---
 spec/services/backup_service_spec.rb | 83 ++++++++++++++++------------
 1 file changed, 48 insertions(+), 35 deletions(-)

diff --git a/spec/services/backup_service_spec.rb b/spec/services/backup_service_spec.rb
index 73e0b42adb..806ba18323 100644
--- a/spec/services/backup_service_spec.rb
+++ b/spec/services/backup_service_spec.rb
@@ -30,7 +30,7 @@ RSpec.describe BackupService, type: :service do
     it 'stores them as expected' do
       service_call
 
-      json = Oj.load(read_zip_file(backup, 'actor.json'))
+      json = export_json(:actor)
       avatar_path = json.dig('icon', 'url')
       header_path = json.dig('image', 'url')
 
@@ -42,47 +42,60 @@ RSpec.describe BackupService, type: :service do
     end
   end
 
-  it 'marks the backup as processed' do
-    expect { service_call }.to change(backup, :processed).from(false).to(true)
+  it 'marks the backup as processed and exports files' do
+    expect { service_call }.to process_backup
+
+    expect_outbox_export
+    expect_likes_export
+    expect_bookmarks_export
   end
 
-  it 'exports outbox.json as expected' do
-    service_call
+  def process_backup
+    change(backup, :processed).from(false).to(true)
+  end
 
-    json = Oj.load(read_zip_file(backup, 'outbox.json'))
-    expect(json['@context']).to_not be_nil
-    expect(json['type']).to eq 'OrderedCollection'
-    expect(json['totalItems']).to eq 2
-    expect(json['orderedItems'][0]['@context']).to be_nil
-    expect(json['orderedItems'][0]).to include({
+  def expect_outbox_export
+    json = export_json(:outbox)
+
+    aggregate_failures do
+      expect(json['@context']).to_not be_nil
+      expect(json['type']).to eq 'OrderedCollection'
+      expect(json['totalItems']).to eq 2
+      expect(json['orderedItems'][0]['@context']).to be_nil
+      expect(json['orderedItems'][0]).to include_create_item(status)
+      expect(json['orderedItems'][1]).to include_create_item(private_status)
+    end
+  end
+
+  def expect_likes_export
+    json = export_json(:likes)
+
+    aggregate_failures do
+      expect(json['type']).to eq 'OrderedCollection'
+      expect(json['orderedItems']).to eq [ActivityPub::TagManager.instance.uri_for(favourite.status)]
+    end
+  end
+
+  def expect_bookmarks_export
+    json = export_json(:bookmarks)
+
+    aggregate_failures do
+      expect(json['type']).to eq 'OrderedCollection'
+      expect(json['orderedItems']).to eq [ActivityPub::TagManager.instance.uri_for(bookmark.status)]
+    end
+  end
+
+  def export_json(type)
+    Oj.load(read_zip_file(backup, "#{type}.json"))
+  end
+
+  def include_create_item(status)
+    include({
       'type' => 'Create',
       'object' => include({
         'id' => ActivityPub::TagManager.instance.uri_for(status),
-        'content' => '<p>Hello</p>',
+        'content' => "<p>#{status.text}</p>",
       }),
     })
-    expect(json['orderedItems'][1]).to include({
-      'type' => 'Create',
-      'object' => include({
-        'id' => ActivityPub::TagManager.instance.uri_for(private_status),
-        'content' => '<p>secret</p>',
-      }),
-    })
-  end
-
-  it 'exports likes.json as expected' do
-    service_call
-
-    json = Oj.load(read_zip_file(backup, 'likes.json'))
-    expect(json['type']).to eq 'OrderedCollection'
-    expect(json['orderedItems']).to eq [ActivityPub::TagManager.instance.uri_for(favourite.status)]
-  end
-
-  it 'exports bookmarks.json as expected' do
-    service_call
-
-    json = Oj.load(read_zip_file(backup, 'bookmarks.json'))
-    expect(json['type']).to eq 'OrderedCollection'
-    expect(json['orderedItems']).to eq [ActivityPub::TagManager.instance.uri_for(bookmark.status)]
   end
 end

From 8d2c26834f7a485e6fd9083b17b025ad5030e471 Mon Sep 17 00:00:00 2001
From: mogaminsk <mgmnjp@icloud.com>
Date: Thu, 22 Jun 2023 19:10:49 +0900
Subject: [PATCH 21/33] Fix custom signup URL may not loaded (#25531)

---
 .../mastodon/features/ui/components/header.jsx         | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/app/javascript/mastodon/features/ui/components/header.jsx b/app/javascript/mastodon/features/ui/components/header.jsx
index bb6747c00c..05abc1ca63 100644
--- a/app/javascript/mastodon/features/ui/components/header.jsx
+++ b/app/javascript/mastodon/features/ui/components/header.jsx
@@ -8,6 +8,7 @@ import { Link, withRouter } from 'react-router-dom';
 import { connect } from 'react-redux';
 
 import { openModal } from 'mastodon/actions/modal';
+import { fetchServer } from 'mastodon/actions/server';
 import { Avatar } from 'mastodon/components/avatar';
 import { WordmarkLogo, SymbolLogo } from 'mastodon/components/logo';
 import { registrationsOpen, me } from 'mastodon/initial_state';
@@ -28,6 +29,9 @@ const mapDispatchToProps = (dispatch) => ({
   openClosedRegistrationsModal() {
     dispatch(openModal({ modalType: 'CLOSED_REGISTRATIONS' }));
   },
+  dispatchServer() {
+    dispatch(fetchServer());
+  }
 });
 
 class Header extends PureComponent {
@@ -40,8 +44,14 @@ class Header extends PureComponent {
     openClosedRegistrationsModal: PropTypes.func,
     location: PropTypes.object,
     signupUrl: PropTypes.string.isRequired,
+    dispatchServer: PropTypes.func
   };
 
+  componentDidMount () {
+    const { dispatchServer } = this.props;
+    dispatchServer();
+  }
+
   render () {
     const { signedIn } = this.context.identity;
     const { location, openClosedRegistrationsModal, signupUrl } = this.props;

From 63d15d533070a3c1b97f048fbfffa0b1a34381e4 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Thu, 22 Jun 2023 08:51:53 -0400
Subject: [PATCH 22/33] Speed-up on `StatusesController` spec (#25549)

---
 spec/controllers/statuses_controller_spec.rb | 237 ++-----------------
 1 file changed, 21 insertions(+), 216 deletions(-)

diff --git a/spec/controllers/statuses_controller_spec.rb b/spec/controllers/statuses_controller_spec.rb
index 1885814cda..bd98929c02 100644
--- a/spec/controllers/statuses_controller_spec.rb
+++ b/spec/controllers/statuses_controller_spec.rb
@@ -75,23 +75,11 @@ describe StatusesController do
       context 'with HTML' do
         let(:format) { 'html' }
 
-        it 'returns http success' do
+        it 'renders status successfully', :aggregate_failures do
           expect(response).to have_http_status(200)
-        end
-
-        it 'returns Link header' do
           expect(response.headers['Link'].to_s).to include 'activity+json'
-        end
-
-        it 'returns Vary header' do
           expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-        end
-
-        it 'returns public Cache-Control header' do
           expect(response.headers['Cache-Control']).to include 'public'
-        end
-
-        it 'renders status' do
           expect(response).to render_template(:show)
           expect(response.body).to include status.text
         end
@@ -100,25 +88,13 @@ describe StatusesController do
       context 'with JSON' do
         let(:format) { 'json' }
 
-        it 'returns http success' do
-          expect(response).to have_http_status(200)
-        end
-
-        it 'returns Link header' do
-          expect(response.headers['Link'].to_s).to include 'activity+json'
-        end
-
-        it 'returns Vary header' do
-          expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-        end
-
         it_behaves_like 'cacheable response'
 
-        it 'returns Content-Type header' do
+        it 'renders ActivityPub Note object successfully', :aggregate_failures do
+          expect(response).to have_http_status(200)
+          expect(response.headers['Link'].to_s).to include 'activity+json'
+          expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
           expect(response.headers['Content-Type']).to include 'application/activity+json'
-        end
-
-        it 'renders ActivityPub Note object' do
           json = body_as_json
           expect(json[:content]).to include status.text
         end
@@ -199,23 +175,11 @@ describe StatusesController do
         context 'with HTML' do
           let(:format) { 'html' }
 
-          it 'returns http success' do
+          it 'renders status successfully', :aggregate_failures do
             expect(response).to have_http_status(200)
-          end
-
-          it 'returns Link header' do
             expect(response.headers['Link'].to_s).to include 'activity+json'
-          end
-
-          it 'returns Vary header' do
             expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-          end
-
-          it 'returns private Cache-Control header' do
             expect(response.headers['Cache-Control']).to include 'private'
-          end
-
-          it 'renders status' do
             expect(response).to render_template(:show)
             expect(response.body).to include status.text
           end
@@ -224,27 +188,12 @@ describe StatusesController do
         context 'with JSON' do
           let(:format) { 'json' }
 
-          it 'returns http success' do
+          it 'renders ActivityPub Note object successfully', :aggregate_failures do
             expect(response).to have_http_status(200)
-          end
-
-          it 'returns Link header' do
             expect(response.headers['Link'].to_s).to include 'activity+json'
-          end
-
-          it 'returns Vary header' do
             expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-          end
-
-          it 'returns private Cache-Control header' do
             expect(response.headers['Cache-Control']).to include 'private'
-          end
-
-          it 'returns Content-Type header' do
             expect(response.headers['Content-Type']).to include 'application/activity+json'
-          end
-
-          it 'renders ActivityPub Note object' do
             json = body_as_json
             expect(json[:content]).to include status.text
           end
@@ -263,23 +212,11 @@ describe StatusesController do
           context 'with HTML' do
             let(:format) { 'html' }
 
-            it 'returns http success' do
+            it 'renders status successfully', :aggregate_failures do
               expect(response).to have_http_status(200)
-            end
-
-            it 'returns Link header' do
               expect(response.headers['Link'].to_s).to include 'activity+json'
-            end
-
-            it 'returns Vary header' do
               expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-            end
-
-            it 'returns private Cache-Control header' do
               expect(response.headers['Cache-Control']).to include 'private'
-            end
-
-            it 'renders status' do
               expect(response).to render_template(:show)
               expect(response.body).to include status.text
             end
@@ -288,27 +225,12 @@ describe StatusesController do
           context 'with JSON' do
             let(:format) { 'json' }
 
-            it 'returns http success' do
+            it 'renders ActivityPub Note object successfully', :aggregate_failures do
               expect(response).to have_http_status(200)
-            end
-
-            it 'returns Link header' do
               expect(response.headers['Link'].to_s).to include 'activity+json'
-            end
-
-            it 'returns Vary header' do
               expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-            end
-
-            it 'returns private Cache-Control header' do
               expect(response.headers['Cache-Control']).to include 'private'
-            end
-
-            it 'returns Content-Type header' do
               expect(response.headers['Content-Type']).to include 'application/activity+json'
-            end
-
-            it 'renders ActivityPub Note object' do
               json = body_as_json
               expect(json[:content]).to include status.text
             end
@@ -350,23 +272,11 @@ describe StatusesController do
           context 'with HTML' do
             let(:format) { 'html' }
 
-            it 'returns http success' do
+            it 'renders status successfully', :aggregate_failures do
               expect(response).to have_http_status(200)
-            end
-
-            it 'returns Link header' do
               expect(response.headers['Link'].to_s).to include 'activity+json'
-            end
-
-            it 'returns Vary header' do
               expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-            end
-
-            it 'returns private Cache-Control header' do
               expect(response.headers['Cache-Control']).to include 'private'
-            end
-
-            it 'renders status' do
               expect(response).to render_template(:show)
               expect(response.body).to include status.text
             end
@@ -375,27 +285,12 @@ describe StatusesController do
           context 'with JSON' do
             let(:format) { 'json' }
 
-            it 'returns http success' do
+            it 'renders ActivityPub Note object successfully' do
               expect(response).to have_http_status(200)
-            end
-
-            it 'returns Link header' do
               expect(response.headers['Link'].to_s).to include 'activity+json'
-            end
-
-            it 'returns Vary header' do
               expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-            end
-
-            it 'returns private Cache-Control header' do
               expect(response.headers['Cache-Control']).to include 'private'
-            end
-
-            it 'returns Content-Type header' do
               expect(response.headers['Content-Type']).to include 'application/activity+json'
-            end
-
-            it 'renders ActivityPub Note object' do
               json = body_as_json
               expect(json[:content]).to include status.text
             end
@@ -463,23 +358,11 @@ describe StatusesController do
         context 'with HTML' do
           let(:format) { 'html' }
 
-          it 'returns http success' do
+          it 'renders status successfully', :aggregate_failures do
             expect(response).to have_http_status(200)
-          end
-
-          it 'returns Link header' do
             expect(response.headers['Link'].to_s).to include 'activity+json'
-          end
-
-          it 'returns Vary header' do
             expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-          end
-
-          it 'returns private Cache-Control header' do
             expect(response.headers['Cache-Control']).to include 'private'
-          end
-
-          it 'renders status' do
             expect(response).to render_template(:show)
             expect(response.body).to include status.text
           end
@@ -488,25 +371,13 @@ describe StatusesController do
         context 'with JSON' do
           let(:format) { 'json' }
 
-          it 'returns http success' do
-            expect(response).to have_http_status(200)
-          end
-
-          it 'returns Link header' do
-            expect(response.headers['Link'].to_s).to include 'activity+json'
-          end
-
-          it 'returns Vary header' do
-            expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-          end
-
           it_behaves_like 'cacheable response'
 
-          it 'returns Content-Type header' do
+          it 'renders ActivityPub Note object successfully', :aggregate_failures do
+            expect(response).to have_http_status(200)
+            expect(response.headers['Link'].to_s).to include 'activity+json'
+            expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
             expect(response.headers['Content-Type']).to include 'application/activity+json'
-          end
-
-          it 'renders ActivityPub Note object' do
             json = body_as_json
             expect(json[:content]).to include status.text
           end
@@ -525,23 +396,11 @@ describe StatusesController do
           context 'with HTML' do
             let(:format) { 'html' }
 
-            it 'returns http success' do
+            it 'renders status successfully', :aggregate_failures do
               expect(response).to have_http_status(200)
-            end
-
-            it 'returns Link header' do
               expect(response.headers['Link'].to_s).to include 'activity+json'
-            end
-
-            it 'returns Vary header' do
               expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-            end
-
-            it 'returns private Cache-Control header' do
               expect(response.headers['Cache-Control']).to include 'private'
-            end
-
-            it 'renders status' do
               expect(response).to render_template(:show)
               expect(response.body).to include status.text
             end
@@ -550,27 +409,12 @@ describe StatusesController do
           context 'with JSON' do
             let(:format) { 'json' }
 
-            it 'returns http success' do
+            it 'renders ActivityPub Note object successfully' do
               expect(response).to have_http_status(200)
-            end
-
-            it 'returns Link header' do
               expect(response.headers['Link'].to_s).to include 'activity+json'
-            end
-
-            it 'returns Vary header' do
               expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-            end
-
-            it 'returns private Cache-Control header' do
               expect(response.headers['Cache-Control']).to include 'private'
-            end
-
-            it 'returns Content-Type header' do
               expect(response.headers['Content-Type']).to include 'application/activity+json'
-            end
-
-            it 'renders ActivityPub Note object' do
               json = body_as_json
               expect(json[:content]).to include status.text
             end
@@ -612,23 +456,11 @@ describe StatusesController do
           context 'with HTML' do
             let(:format) { 'html' }
 
-            it 'returns http success' do
+            it 'renders status successfully', :aggregate_failures do
               expect(response).to have_http_status(200)
-            end
-
-            it 'returns Link header' do
               expect(response.headers['Link'].to_s).to include 'activity+json'
-            end
-
-            it 'returns Vary header' do
               expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-            end
-
-            it 'returns private Cache-Control header' do
               expect(response.headers['Cache-Control']).to include 'private'
-            end
-
-            it 'renders status' do
               expect(response).to render_template(:show)
               expect(response.body).to include status.text
             end
@@ -637,27 +469,12 @@ describe StatusesController do
           context 'with JSON' do
             let(:format) { 'json' }
 
-            it 'returns http success' do
+            it 'renders ActivityPub Note object', :aggregate_failures do
               expect(response).to have_http_status(200)
-            end
-
-            it 'returns Link header' do
               expect(response.headers['Link'].to_s).to include 'activity+json'
-            end
-
-            it 'returns Vary header' do
               expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-            end
-
-            it 'returns private Cache-Control header' do
               expect(response.headers['Cache-Control']).to include 'private'
-            end
-
-            it 'returns Content-Type header' do
               expect(response.headers['Content-Type']).to include 'application/activity+json'
-            end
-
-            it 'renders ActivityPub Note object' do
               json = body_as_json
               expect(json[:content]).to include status.text
             end
@@ -933,23 +750,11 @@ describe StatusesController do
         get :embed, params: { account_username: status.account.username, id: status.id }
       end
 
-      it 'returns http success' do
+      it 'renders status successfully', :aggregate_failures do
         expect(response).to have_http_status(200)
-      end
-
-      it 'returns Link header' do
         expect(response.headers['Link'].to_s).to include 'activity+json'
-      end
-
-      it 'returns Vary header' do
         expect(response.headers['Vary']).to eq 'Accept, Accept-Language, Cookie'
-      end
-
-      it 'returns public Cache-Control header' do
         expect(response.headers['Cache-Control']).to include 'public'
-      end
-
-      it 'renders status' do
         expect(response).to render_template(:embed)
         expect(response.body).to include status.text
       end

From 602c458ab6773e56e512c032c16fe4c7cddc1c44 Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Thu, 22 Jun 2023 14:52:25 +0200
Subject: [PATCH 23/33] Add finer permission requirements for managing webhooks
 (#25463)

---
 app/controllers/admin/webhooks_controller.rb  |  3 +++
 app/models/webhook.rb                         | 22 +++++++++++++++++++
 app/policies/webhook_policy.rb                |  4 ++--
 app/views/admin/webhooks/_form.html.haml      |  2 +-
 config/locales/activerecord.en.yml            |  4 ++++
 .../admin/webhooks_controller_spec.rb         |  2 +-
 spec/policies/webhook_policy_spec.rb          | 22 ++++++++++++++++---
 7 files changed, 52 insertions(+), 7 deletions(-)

diff --git a/app/controllers/admin/webhooks_controller.rb b/app/controllers/admin/webhooks_controller.rb
index e087476658..f1aad7c4b5 100644
--- a/app/controllers/admin/webhooks_controller.rb
+++ b/app/controllers/admin/webhooks_controller.rb
@@ -28,6 +28,7 @@ module Admin
       authorize :webhook, :create?
 
       @webhook = Webhook.new(resource_params)
+      @webhook.current_account = current_account
 
       if @webhook.save
         redirect_to admin_webhook_path(@webhook)
@@ -39,6 +40,8 @@ module Admin
     def update
       authorize @webhook, :update?
 
+      @webhook.current_account = current_account
+
       if @webhook.update(resource_params)
         redirect_to admin_webhook_path(@webhook)
       else
diff --git a/app/models/webhook.rb b/app/models/webhook.rb
index c46fce743e..14f33c5fc4 100644
--- a/app/models/webhook.rb
+++ b/app/models/webhook.rb
@@ -24,6 +24,8 @@ class Webhook < ApplicationRecord
     status.updated
   ).freeze
 
+  attr_writer :current_account
+
   scope :enabled, -> { where(enabled: true) }
 
   validates :url, presence: true, url: true
@@ -31,6 +33,7 @@ class Webhook < ApplicationRecord
   validates :events, presence: true
 
   validate :validate_events
+  validate :validate_permissions
   validate :validate_template
 
   before_validation :strip_events
@@ -48,12 +51,31 @@ class Webhook < ApplicationRecord
     update!(enabled: false)
   end
 
+  def required_permissions
+    events.map { |event| Webhook.permission_for_event(event) }
+  end
+
+  def self.permission_for_event(event)
+    case event
+    when 'account.approved', 'account.created', 'account.updated'
+      :manage_users
+    when 'report.created'
+      :manage_reports
+    when 'status.created', 'status.updated'
+      :view_devops
+    end
+  end
+
   private
 
   def validate_events
     errors.add(:events, :invalid) if events.any? { |e| EVENTS.exclude?(e) }
   end
 
+  def validate_permissions
+    errors.add(:events, :invalid_permissions) if defined?(@current_account) && required_permissions.any? { |permission| !@current_account.user_role.can?(permission) }
+  end
+
   def validate_template
     return if template.blank?
 
diff --git a/app/policies/webhook_policy.rb b/app/policies/webhook_policy.rb
index a2199a333f..577e891b66 100644
--- a/app/policies/webhook_policy.rb
+++ b/app/policies/webhook_policy.rb
@@ -14,7 +14,7 @@ class WebhookPolicy < ApplicationPolicy
   end
 
   def update?
-    role.can?(:manage_webhooks)
+    role.can?(:manage_webhooks) && record.required_permissions.all? { |permission| role.can?(permission) }
   end
 
   def enable?
@@ -30,6 +30,6 @@ class WebhookPolicy < ApplicationPolicy
   end
 
   def destroy?
-    role.can?(:manage_webhooks)
+    role.can?(:manage_webhooks) && record.required_permissions.all? { |permission| role.can?(permission) }
   end
 end
diff --git a/app/views/admin/webhooks/_form.html.haml b/app/views/admin/webhooks/_form.html.haml
index 8d019ff43b..c870e943f4 100644
--- a/app/views/admin/webhooks/_form.html.haml
+++ b/app/views/admin/webhooks/_form.html.haml
@@ -5,7 +5,7 @@
     = f.input :url, wrapper: :with_block_label, input_html: { placeholder: 'https://' }
 
   .fields-group
-    = f.input :events, collection: Webhook::EVENTS, wrapper: :with_block_label, include_blank: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
+    = f.input :events, collection: Webhook::EVENTS, wrapper: :with_block_label, include_blank: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', disabled: Webhook::EVENTS.filter { |event| !current_user.role.can?(Webhook.permission_for_event(event)) }
 
   .fields-group
     = f.input :template, wrapper: :with_block_label, input_html: { placeholder: '{ "content": "Hello {{object.username}}" }' }
diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml
index 8aee15659f..a53c7c6e9e 100644
--- a/config/locales/activerecord.en.yml
+++ b/config/locales/activerecord.en.yml
@@ -53,3 +53,7 @@ en:
             position:
               elevated: cannot be higher than your current role
               own_role: cannot be changed with your current role
+        webhook:
+          attributes:
+            events:
+              invalid_permissions: cannot include events you don't have the rights to
diff --git a/spec/controllers/admin/webhooks_controller_spec.rb b/spec/controllers/admin/webhooks_controller_spec.rb
index 074956c555..0ccfbbcc6e 100644
--- a/spec/controllers/admin/webhooks_controller_spec.rb
+++ b/spec/controllers/admin/webhooks_controller_spec.rb
@@ -48,7 +48,7 @@ describe Admin::WebhooksController do
   end
 
   context 'with an existing record' do
-    let!(:webhook) { Fabricate :webhook }
+    let!(:webhook) { Fabricate(:webhook, events: ['account.created', 'report.created']) }
 
     describe 'GET #show' do
       it 'returns http success and renders view' do
diff --git a/spec/policies/webhook_policy_spec.rb b/spec/policies/webhook_policy_spec.rb
index 1eac8932d4..909311461a 100644
--- a/spec/policies/webhook_policy_spec.rb
+++ b/spec/policies/webhook_policy_spec.rb
@@ -8,16 +8,32 @@ describe WebhookPolicy do
   let(:admin)   { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
   let(:john)    { Fabricate(:account) }
 
-  permissions :index?, :create?, :show?, :update?, :enable?, :disable?, :rotate_secret?, :destroy? do
+  permissions :index?, :create? do
     context 'with an admin' do
       it 'permits' do
-        expect(policy).to permit(admin, Tag)
+        expect(policy).to permit(admin, Webhook)
       end
     end
 
     context 'with a non-admin' do
       it 'denies' do
-        expect(policy).to_not permit(john, Tag)
+        expect(policy).to_not permit(john, Webhook)
+      end
+    end
+  end
+
+  permissions :show?, :update?, :enable?, :disable?, :rotate_secret?, :destroy? do
+    let(:webhook) { Fabricate(:webhook, events: ['account.created', 'report.created']) }
+
+    context 'with an admin' do
+      it 'permits' do
+        expect(policy).to permit(admin, webhook)
+      end
+    end
+
+    context 'with a non-admin' do
+      it 'denies' do
+        expect(policy).to_not permit(john, webhook)
       end
     end
   end

From 38433ccd0bb9a47c9882e64d4644f7c5b47858b3 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Thu, 22 Jun 2023 08:53:13 -0400
Subject: [PATCH 24/33] Reduce `Admin::Reports::Actions` spec db activity
 (#25465)

---
 .../admin/reports/actions_controller_spec.rb  | 30 ++++++++-----------
 1 file changed, 12 insertions(+), 18 deletions(-)

diff --git a/spec/controllers/admin/reports/actions_controller_spec.rb b/spec/controllers/admin/reports/actions_controller_spec.rb
index 701855f92e..1f3951516d 100644
--- a/spec/controllers/admin/reports/actions_controller_spec.rb
+++ b/spec/controllers/admin/reports/actions_controller_spec.rb
@@ -62,17 +62,10 @@ describe Admin::Reports::ActionsController do
     end
 
     shared_examples 'common behavior' do
-      it 'closes the report' do
-        expect { subject }.to change { report.reload.action_taken? }.from(false).to(true)
-      end
+      it 'closes the report and redirects' do
+        expect { subject }.to mark_report_action_taken.and create_target_account_strike
 
-      it 'creates a strike with the expected text' do
-        expect { subject }.to change { report.target_account.strikes.count }.by(1)
         expect(report.target_account.strikes.last.text).to eq text
-      end
-
-      it 'redirects' do
-        subject
         expect(response).to redirect_to(admin_reports_path)
       end
 
@@ -81,20 +74,21 @@ describe Admin::Reports::ActionsController do
           { report_id: report.id }
         end
 
-        it 'closes the report' do
-          expect { subject }.to change { report.reload.action_taken? }.from(false).to(true)
-        end
+        it 'closes the report and redirects' do
+          expect { subject }.to mark_report_action_taken.and create_target_account_strike
 
-        it 'creates a strike with the expected text' do
-          expect { subject }.to change { report.target_account.strikes.count }.by(1)
           expect(report.target_account.strikes.last.text).to eq ''
-        end
-
-        it 'redirects' do
-          subject
           expect(response).to redirect_to(admin_reports_path)
         end
       end
+
+      def mark_report_action_taken
+        change { report.reload.action_taken? }.from(false).to(true)
+      end
+
+      def create_target_account_strike
+        change { report.target_account.strikes.count }.by(1)
+      end
     end
 
     shared_examples 'all action types' do

From 05f9e39b32f15d71eb9ec524d1ab871e5c0d03da Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Thu, 22 Jun 2023 08:55:22 -0400
Subject: [PATCH 25/33] Fix `RSpec/VerifiedDoubles` cop (#25469)

---
 .rubocop_todo.yml                             | 39 -------------------
 .../admin/change_emails_controller_spec.rb    |  3 +-
 .../admin/confirmations_controller_spec.rb    |  2 +-
 .../admin/disputes/appeals_controller_spec.rb |  6 ++-
 .../admin/domain_allows_controller_spec.rb    |  2 +-
 .../admin/domain_blocks_controller_spec.rb    |  2 +-
 .../api/v1/reports_controller_spec.rb         |  3 +-
 .../api/web/embeds_controller_spec.rb         |  2 +-
 .../auth/sessions_controller_spec.rb          |  3 +-
 .../authorize_interactions_controller_spec.rb | 10 ++---
 .../disputes/appeals_controller_spec.rb       |  3 +-
 spec/helpers/statuses_helper_spec.rb          | 34 ++++++++--------
 spec/lib/activitypub/activity/add_spec.rb     |  2 +-
 spec/lib/activitypub/activity/move_spec.rb    |  2 +-
 spec/lib/request_spec.rb                      |  4 +-
 spec/lib/suspicious_sign_in_detector_spec.rb  |  2 +-
 spec/models/account/field_spec.rb             |  6 +--
 spec/models/account_migration_spec.rb         |  4 +-
 spec/models/session_activation_spec.rb        |  4 +-
 spec/models/setting_spec.rb                   |  2 +-
 spec/services/account_search_service_spec.rb  |  4 +-
 .../bootstrap_timeline_service_spec.rb        |  2 +-
 spec/services/bulk_import_service_spec.rb     | 16 ++++----
 spec/services/fetch_resource_service_spec.rb  |  4 +-
 spec/services/import_service_spec.rb          |  2 +-
 spec/services/post_status_service_spec.rb     |  4 +-
 spec/services/resolve_url_service_spec.rb     |  4 +-
 spec/services/search_service_spec.rb          |  8 ++--
 .../unsuspend_account_service_spec.rb         |  2 +-
 .../blacklisted_email_validator_spec.rb       |  4 +-
 .../disallowed_hashtags_validator_spec.rb     |  4 +-
 spec/validators/email_mx_validator_spec.rb    | 32 ++++++++-------
 .../validators/follow_limit_validator_spec.rb |  6 +--
 spec/validators/note_length_validator_spec.rb | 12 ++++--
 spec/validators/poll_validator_spec.rb        |  4 +-
 .../status_length_validator_spec.rb           | 26 ++++++++-----
 spec/validators/status_pin_validator_spec.rb  | 10 ++---
 .../unique_username_validator_spec.rb         | 20 ++++++----
 .../unreserved_username_validator_spec.rb     |  4 +-
 spec/validators/url_validator_spec.rb         |  4 +-
 spec/views/statuses/show.html.haml_spec.rb    |  2 +-
 .../activitypub/processing_worker_spec.rb     |  3 +-
 .../workers/admin/domain_purge_worker_spec.rb |  2 +-
 spec/workers/domain_block_worker_spec.rb      |  2 +-
 .../workers/domain_clear_media_worker_spec.rb |  2 +-
 spec/workers/feed_insert_worker_spec.rb       |  8 ++--
 spec/workers/move_worker_spec.rb              |  2 +-
 ...lish_scheduled_announcement_worker_spec.rb |  2 +-
 spec/workers/refollow_worker_spec.rb          |  2 +-
 spec/workers/regeneration_worker_spec.rb      |  2 +-
 50 files changed, 162 insertions(+), 172 deletions(-)

diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index f3b24cdbc4..975c9d28fb 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -437,45 +437,6 @@ RSpec/SubjectStub:
     - 'spec/services/unallow_domain_service_spec.rb'
     - 'spec/validators/blacklisted_email_validator_spec.rb'
 
-# Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
-RSpec/VerifiedDoubles:
-  Exclude:
-    - 'spec/controllers/admin/change_emails_controller_spec.rb'
-    - 'spec/controllers/admin/confirmations_controller_spec.rb'
-    - 'spec/controllers/admin/disputes/appeals_controller_spec.rb'
-    - 'spec/controllers/admin/domain_allows_controller_spec.rb'
-    - 'spec/controllers/admin/domain_blocks_controller_spec.rb'
-    - 'spec/controllers/api/v1/reports_controller_spec.rb'
-    - 'spec/controllers/api/web/embeds_controller_spec.rb'
-    - 'spec/controllers/auth/sessions_controller_spec.rb'
-    - 'spec/controllers/disputes/appeals_controller_spec.rb'
-    - 'spec/helpers/statuses_helper_spec.rb'
-    - 'spec/lib/suspicious_sign_in_detector_spec.rb'
-    - 'spec/models/account/field_spec.rb'
-    - 'spec/models/session_activation_spec.rb'
-    - 'spec/models/setting_spec.rb'
-    - 'spec/services/account_search_service_spec.rb'
-    - 'spec/services/post_status_service_spec.rb'
-    - 'spec/services/search_service_spec.rb'
-    - 'spec/validators/blacklisted_email_validator_spec.rb'
-    - 'spec/validators/disallowed_hashtags_validator_spec.rb'
-    - 'spec/validators/email_mx_validator_spec.rb'
-    - 'spec/validators/follow_limit_validator_spec.rb'
-    - 'spec/validators/note_length_validator_spec.rb'
-    - 'spec/validators/poll_validator_spec.rb'
-    - 'spec/validators/status_length_validator_spec.rb'
-    - 'spec/validators/status_pin_validator_spec.rb'
-    - 'spec/validators/unique_username_validator_spec.rb'
-    - 'spec/validators/unreserved_username_validator_spec.rb'
-    - 'spec/validators/url_validator_spec.rb'
-    - 'spec/views/statuses/show.html.haml_spec.rb'
-    - 'spec/workers/activitypub/processing_worker_spec.rb'
-    - 'spec/workers/admin/domain_purge_worker_spec.rb'
-    - 'spec/workers/domain_block_worker_spec.rb'
-    - 'spec/workers/domain_clear_media_worker_spec.rb'
-    - 'spec/workers/feed_insert_worker_spec.rb'
-    - 'spec/workers/regeneration_worker_spec.rb'
-
 # This cop supports unsafe autocorrection (--autocorrect-all).
 Rails/ApplicationController:
   Exclude:
diff --git a/spec/controllers/admin/change_emails_controller_spec.rb b/spec/controllers/admin/change_emails_controller_spec.rb
index 503862a7b9..dd8a764b64 100644
--- a/spec/controllers/admin/change_emails_controller_spec.rb
+++ b/spec/controllers/admin/change_emails_controller_spec.rb
@@ -23,7 +23,8 @@ RSpec.describe Admin::ChangeEmailsController do
 
   describe 'GET #update' do
     before do
-      allow(UserMailer).to receive(:confirmation_instructions).and_return(double('email', deliver_later: nil))
+      allow(UserMailer).to receive(:confirmation_instructions)
+        .and_return(instance_double(ActionMailer::MessageDelivery, deliver_later: nil))
     end
 
     it 'returns http success' do
diff --git a/spec/controllers/admin/confirmations_controller_spec.rb b/spec/controllers/admin/confirmations_controller_spec.rb
index 181616a66e..9559160786 100644
--- a/spec/controllers/admin/confirmations_controller_spec.rb
+++ b/spec/controllers/admin/confirmations_controller_spec.rb
@@ -38,7 +38,7 @@ RSpec.describe Admin::ConfirmationsController do
     let!(:user) { Fabricate(:user, confirmed_at: confirmed_at) }
 
     before do
-      allow(UserMailer).to receive(:confirmation_instructions) { double(:email, deliver_later: nil) }
+      allow(UserMailer).to receive(:confirmation_instructions) { instance_double(ActionMailer::MessageDelivery, deliver_later: nil) }
     end
 
     context 'when email is not confirmed' do
diff --git a/spec/controllers/admin/disputes/appeals_controller_spec.rb b/spec/controllers/admin/disputes/appeals_controller_spec.rb
index 99b19298c6..3c3f23f529 100644
--- a/spec/controllers/admin/disputes/appeals_controller_spec.rb
+++ b/spec/controllers/admin/disputes/appeals_controller_spec.rb
@@ -19,7 +19,8 @@ RSpec.describe Admin::Disputes::AppealsController do
     let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
 
     before do
-      allow(UserMailer).to receive(:appeal_approved).and_return(double('email', deliver_later: nil))
+      allow(UserMailer).to receive(:appeal_approved)
+        .and_return(instance_double(ActionMailer::MessageDelivery, deliver_later: nil))
       post :approve, params: { id: appeal.id }
     end
 
@@ -40,7 +41,8 @@ RSpec.describe Admin::Disputes::AppealsController do
     let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
 
     before do
-      allow(UserMailer).to receive(:appeal_rejected).and_return(double('email', deliver_later: nil))
+      allow(UserMailer).to receive(:appeal_rejected)
+        .and_return(instance_double(ActionMailer::MessageDelivery, deliver_later: nil))
       post :reject, params: { id: appeal.id }
     end
 
diff --git a/spec/controllers/admin/domain_allows_controller_spec.rb b/spec/controllers/admin/domain_allows_controller_spec.rb
index 6b0453476a..6f82f322b5 100644
--- a/spec/controllers/admin/domain_allows_controller_spec.rb
+++ b/spec/controllers/admin/domain_allows_controller_spec.rb
@@ -37,7 +37,7 @@ RSpec.describe Admin::DomainAllowsController do
 
   describe 'DELETE #destroy' do
     it 'disallows the domain' do
-      service = double(call: true)
+      service = instance_double(UnallowDomainService, call: true)
       allow(UnallowDomainService).to receive(:new).and_return(service)
       domain_allow = Fabricate(:domain_allow)
       delete :destroy, params: { id: domain_allow.id }
diff --git a/spec/controllers/admin/domain_blocks_controller_spec.rb b/spec/controllers/admin/domain_blocks_controller_spec.rb
index d499aa64ce..fb7fb2957f 100644
--- a/spec/controllers/admin/domain_blocks_controller_spec.rb
+++ b/spec/controllers/admin/domain_blocks_controller_spec.rb
@@ -213,7 +213,7 @@ RSpec.describe Admin::DomainBlocksController do
 
   describe 'DELETE #destroy' do
     it 'unblocks the domain' do
-      service = double(call: true)
+      service = instance_double(UnblockDomainService, call: true)
       allow(UnblockDomainService).to receive(:new).and_return(service)
       domain_block = Fabricate(:domain_block)
       delete :destroy, params: { id: domain_block.id }
diff --git a/spec/controllers/api/v1/reports_controller_spec.rb b/spec/controllers/api/v1/reports_controller_spec.rb
index 0eb9ce1709..01b7e4a71c 100644
--- a/spec/controllers/api/v1/reports_controller_spec.rb
+++ b/spec/controllers/api/v1/reports_controller_spec.rb
@@ -23,7 +23,8 @@ RSpec.describe Api::V1::ReportsController do
     let(:rule_ids) { nil }
 
     before do
-      allow(AdminMailer).to receive(:new_report).and_return(double('email', deliver_later: nil))
+      allow(AdminMailer).to receive(:new_report)
+        .and_return(instance_double(ActionMailer::MessageDelivery, deliver_later: nil))
       post :create, params: { status_ids: [status.id], account_id: target_account.id, comment: 'reasons', category: category, rule_ids: rule_ids, forward: forward }
     end
 
diff --git a/spec/controllers/api/web/embeds_controller_spec.rb b/spec/controllers/api/web/embeds_controller_spec.rb
index b0c48a5aed..8c4e1a8f26 100644
--- a/spec/controllers/api/web/embeds_controller_spec.rb
+++ b/spec/controllers/api/web/embeds_controller_spec.rb
@@ -26,7 +26,7 @@ describe Api::Web::EmbedsController do
 
     context 'when fails to find status' do
       let(:url) { 'https://host.test/oembed.html' }
-      let(:service_instance) { double('fetch_oembed_service') }
+      let(:service_instance) { instance_double(FetchOEmbedService) }
 
       before do
         allow(FetchOEmbedService).to receive(:new) { service_instance }
diff --git a/spec/controllers/auth/sessions_controller_spec.rb b/spec/controllers/auth/sessions_controller_spec.rb
index 5b7d5d5cd4..c727a76333 100644
--- a/spec/controllers/auth/sessions_controller_spec.rb
+++ b/spec/controllers/auth/sessions_controller_spec.rb
@@ -127,7 +127,8 @@ RSpec.describe Auth::SessionsController do
 
         before do
           allow_any_instance_of(ActionDispatch::Request).to receive(:remote_ip).and_return(current_ip)
-          allow(UserMailer).to receive(:suspicious_sign_in).and_return(double('email', deliver_later!: nil))
+          allow(UserMailer).to receive(:suspicious_sign_in)
+            .and_return(instance_double(ActionMailer::MessageDelivery, deliver_later!: nil))
           user.update(current_sign_in_at: 1.month.ago)
           post :create, params: { user: { email: user.email, password: user.password } }
         end
diff --git a/spec/controllers/authorize_interactions_controller_spec.rb b/spec/controllers/authorize_interactions_controller_spec.rb
index e521039410..098c25ba32 100644
--- a/spec/controllers/authorize_interactions_controller_spec.rb
+++ b/spec/controllers/authorize_interactions_controller_spec.rb
@@ -28,7 +28,7 @@ describe AuthorizeInteractionsController do
       end
 
       it 'renders error when account cant be found' do
-        service = double
+        service = instance_double(ResolveAccountService)
         allow(ResolveAccountService).to receive(:new).and_return(service)
         allow(service).to receive(:call).with('missing@hostname').and_return(nil)
 
@@ -40,7 +40,7 @@ describe AuthorizeInteractionsController do
 
       it 'sets resource from url' do
         account = Fabricate(:account)
-        service = double
+        service = instance_double(ResolveURLService)
         allow(ResolveURLService).to receive(:new).and_return(service)
         allow(service).to receive(:call).with('http://example.com').and_return(account)
 
@@ -52,7 +52,7 @@ describe AuthorizeInteractionsController do
 
       it 'sets resource from acct uri' do
         account = Fabricate(:account)
-        service = double
+        service = instance_double(ResolveAccountService)
         allow(ResolveAccountService).to receive(:new).and_return(service)
         allow(service).to receive(:call).with('found@hostname').and_return(account)
 
@@ -82,7 +82,7 @@ describe AuthorizeInteractionsController do
       end
 
       it 'shows error when account not found' do
-        service = double
+        service = instance_double(ResolveAccountService)
 
         allow(ResolveAccountService).to receive(:new).and_return(service)
         allow(service).to receive(:call).with('user@hostname').and_return(nil)
@@ -94,7 +94,7 @@ describe AuthorizeInteractionsController do
 
       it 'follows account when found' do
         target_account = Fabricate(:account)
-        service = double
+        service = instance_double(ResolveAccountService)
 
         allow(ResolveAccountService).to receive(:new).and_return(service)
         allow(service).to receive(:call).with('user@hostname').and_return(target_account)
diff --git a/spec/controllers/disputes/appeals_controller_spec.rb b/spec/controllers/disputes/appeals_controller_spec.rb
index d0e1cd3908..a0f9c7b910 100644
--- a/spec/controllers/disputes/appeals_controller_spec.rb
+++ b/spec/controllers/disputes/appeals_controller_spec.rb
@@ -14,7 +14,8 @@ RSpec.describe Disputes::AppealsController do
     let(:strike) { Fabricate(:account_warning, target_account: current_user.account) }
 
     before do
-      allow(AdminMailer).to receive(:new_appeal).and_return(double('email', deliver_later: nil))
+      allow(AdminMailer).to receive(:new_appeal)
+        .and_return(instance_double(ActionMailer::MessageDelivery, deliver_later: nil))
       post :create, params: { strike_id: strike.id, appeal: { text: 'Foo' } }
     end
 
diff --git a/spec/helpers/statuses_helper_spec.rb b/spec/helpers/statuses_helper_spec.rb
index 105da7e1b1..b7824ca604 100644
--- a/spec/helpers/statuses_helper_spec.rb
+++ b/spec/helpers/statuses_helper_spec.rb
@@ -117,42 +117,42 @@ describe StatusesHelper do
 
   describe '#style_classes' do
     it do
-      status = double(reblog?: false)
+      status = instance_double(Status, reblog?: false)
       classes = helper.style_classes(status, false, false, false)
 
       expect(classes).to eq 'entry'
     end
 
     it do
-      status = double(reblog?: true)
+      status = instance_double(Status, reblog?: true)
       classes = helper.style_classes(status, false, false, false)
 
       expect(classes).to eq 'entry entry-reblog'
     end
 
     it do
-      status = double(reblog?: false)
+      status = instance_double(Status, reblog?: false)
       classes = helper.style_classes(status, true, false, false)
 
       expect(classes).to eq 'entry entry-predecessor'
     end
 
     it do
-      status = double(reblog?: false)
+      status = instance_double(Status, reblog?: false)
       classes = helper.style_classes(status, false, true, false)
 
       expect(classes).to eq 'entry entry-successor'
     end
 
     it do
-      status = double(reblog?: false)
+      status = instance_double(Status, reblog?: false)
       classes = helper.style_classes(status, false, false, true)
 
       expect(classes).to eq 'entry entry-center'
     end
 
     it do
-      status = double(reblog?: true)
+      status = instance_double(Status, reblog?: true)
       classes = helper.style_classes(status, true, true, true)
 
       expect(classes).to eq 'entry entry-predecessor entry-reblog entry-successor entry-center'
@@ -161,35 +161,35 @@ describe StatusesHelper do
 
   describe '#microformats_classes' do
     it do
-      status = double(reblog?: false)
+      status = instance_double(Status, reblog?: false)
       classes = helper.microformats_classes(status, false, false)
 
       expect(classes).to eq ''
     end
 
     it do
-      status = double(reblog?: false)
+      status = instance_double(Status, reblog?: false)
       classes = helper.microformats_classes(status, true, false)
 
       expect(classes).to eq 'p-in-reply-to'
     end
 
     it do
-      status = double(reblog?: false)
+      status = instance_double(Status, reblog?: false)
       classes = helper.microformats_classes(status, false, true)
 
       expect(classes).to eq 'p-comment'
     end
 
     it do
-      status = double(reblog?: true)
+      status = instance_double(Status, reblog?: true)
       classes = helper.microformats_classes(status, true, false)
 
       expect(classes).to eq 'p-in-reply-to p-repost-of'
     end
 
     it do
-      status = double(reblog?: true)
+      status = instance_double(Status, reblog?: true)
       classes = helper.microformats_classes(status, true, true)
 
       expect(classes).to eq 'p-in-reply-to p-repost-of p-comment'
@@ -198,42 +198,42 @@ describe StatusesHelper do
 
   describe '#microformats_h_class' do
     it do
-      status = double(reblog?: false)
+      status = instance_double(Status, reblog?: false)
       css_class = helper.microformats_h_class(status, false, false, false)
 
       expect(css_class).to eq 'h-entry'
     end
 
     it do
-      status = double(reblog?: true)
+      status = instance_double(Status, reblog?: true)
       css_class = helper.microformats_h_class(status, false, false, false)
 
       expect(css_class).to eq 'h-cite'
     end
 
     it do
-      status = double(reblog?: false)
+      status = instance_double(Status, reblog?: false)
       css_class = helper.microformats_h_class(status, true, false, false)
 
       expect(css_class).to eq 'h-cite'
     end
 
     it do
-      status = double(reblog?: false)
+      status = instance_double(Status, reblog?: false)
       css_class = helper.microformats_h_class(status, false, true, false)
 
       expect(css_class).to eq 'h-cite'
     end
 
     it do
-      status = double(reblog?: false)
+      status = instance_double(Status, reblog?: false)
       css_class = helper.microformats_h_class(status, false, false, true)
 
       expect(css_class).to eq ''
     end
 
     it do
-      status = double(reblog?: true)
+      status = instance_double(Status, reblog?: true)
       css_class = helper.microformats_h_class(status, true, true, true)
 
       expect(css_class).to eq 'h-cite'
diff --git a/spec/lib/activitypub/activity/add_spec.rb b/spec/lib/activitypub/activity/add_spec.rb
index 9c45e465e4..ec6df01716 100644
--- a/spec/lib/activitypub/activity/add_spec.rb
+++ b/spec/lib/activitypub/activity/add_spec.rb
@@ -26,7 +26,7 @@ RSpec.describe ActivityPub::Activity::Add do
     end
 
     context 'when status was not known before' do
-      let(:service_stub) { double }
+      let(:service_stub) { instance_double(ActivityPub::FetchRemoteStatusService) }
 
       let(:json) do
         {
diff --git a/spec/lib/activitypub/activity/move_spec.rb b/spec/lib/activitypub/activity/move_spec.rb
index 8bd23aa7bf..f3973c70ce 100644
--- a/spec/lib/activitypub/activity/move_spec.rb
+++ b/spec/lib/activitypub/activity/move_spec.rb
@@ -26,7 +26,7 @@ RSpec.describe ActivityPub::Activity::Move do
     stub_request(:post, old_account.inbox_url).to_return(status: 200)
     stub_request(:post, new_account.inbox_url).to_return(status: 200)
 
-    service_stub = double
+    service_stub = instance_double(ActivityPub::FetchRemoteAccountService)
     allow(ActivityPub::FetchRemoteAccountService).to receive(:new).and_return(service_stub)
     allow(service_stub).to receive(:call).and_return(returned_account)
   end
diff --git a/spec/lib/request_spec.rb b/spec/lib/request_spec.rb
index e88631e475..f0861376b9 100644
--- a/spec/lib/request_spec.rb
+++ b/spec/lib/request_spec.rb
@@ -48,7 +48,7 @@ describe Request do
       end
 
       it 'executes a HTTP request when the first address is private' do
-        resolver = double
+        resolver = instance_double(Resolv::DNS)
 
         allow(resolver).to receive(:getaddresses).with('example.com').and_return(%w(0.0.0.0 2001:4860:4860::8844))
         allow(resolver).to receive(:timeouts=).and_return(nil)
@@ -83,7 +83,7 @@ describe Request do
       end
 
       it 'raises Mastodon::ValidationError' do
-        resolver = double
+        resolver = instance_double(Resolv::DNS)
 
         allow(resolver).to receive(:getaddresses).with('example.com').and_return(%w(0.0.0.0 2001:db8::face))
         allow(resolver).to receive(:timeouts=).and_return(nil)
diff --git a/spec/lib/suspicious_sign_in_detector_spec.rb b/spec/lib/suspicious_sign_in_detector_spec.rb
index c61b1ef1e6..9e64aff08a 100644
--- a/spec/lib/suspicious_sign_in_detector_spec.rb
+++ b/spec/lib/suspicious_sign_in_detector_spec.rb
@@ -7,7 +7,7 @@ RSpec.describe SuspiciousSignInDetector do
     subject { described_class.new(user).suspicious?(request) }
 
     let(:user) { Fabricate(:user, current_sign_in_at: 1.day.ago) }
-    let(:request) { double(remote_ip: remote_ip) }
+    let(:request) { instance_double(ActionDispatch::Request, remote_ip: remote_ip) }
     let(:remote_ip) { nil }
 
     context 'when user has 2FA enabled' do
diff --git a/spec/models/account/field_spec.rb b/spec/models/account/field_spec.rb
index 5715a53791..22593bb218 100644
--- a/spec/models/account/field_spec.rb
+++ b/spec/models/account/field_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe Account::Field do
   describe '#verified?' do
     subject { described_class.new(account, 'name' => 'Foo', 'value' => 'Bar', 'verified_at' => verified_at) }
 
-    let(:account) { double('Account', local?: true) }
+    let(:account) { instance_double(Account, local?: true) }
 
     context 'when verified_at is set' do
       let(:verified_at) { Time.now.utc.iso8601 }
@@ -28,7 +28,7 @@ RSpec.describe Account::Field do
   describe '#mark_verified!' do
     subject { described_class.new(account, original_hash) }
 
-    let(:account) { double('Account', local?: true) }
+    let(:account) { instance_double(Account, local?: true) }
     let(:original_hash) { { 'name' => 'Foo', 'value' => 'Bar' } }
 
     before do
@@ -47,7 +47,7 @@ RSpec.describe Account::Field do
   describe '#verifiable?' do
     subject { described_class.new(account, 'name' => 'Foo', 'value' => value) }
 
-    let(:account) { double('Account', local?: local) }
+    let(:account) { instance_double(Account, local?: local) }
 
     context 'with local accounts' do
       let(:local) { true }
diff --git a/spec/models/account_migration_spec.rb b/spec/models/account_migration_spec.rb
index d76edddd51..f4544740b1 100644
--- a/spec/models/account_migration_spec.rb
+++ b/spec/models/account_migration_spec.rb
@@ -15,7 +15,7 @@ RSpec.describe AccountMigration do
       before do
         target_account.aliases.create!(acct: source_account.acct)
 
-        service_double = double
+        service_double = instance_double(ResolveAccountService)
         allow(ResolveAccountService).to receive(:new).and_return(service_double)
         allow(service_double).to receive(:call).with(target_acct, anything).and_return(target_account)
       end
@@ -29,7 +29,7 @@ RSpec.describe AccountMigration do
       let(:target_acct) { 'target@remote' }
 
       before do
-        service_double = double
+        service_double = instance_double(ResolveAccountService)
         allow(ResolveAccountService).to receive(:new).and_return(service_double)
         allow(service_double).to receive(:call).with(target_acct, anything).and_return(nil)
       end
diff --git a/spec/models/session_activation_spec.rb b/spec/models/session_activation_spec.rb
index 052a06e5ca..75842e25ba 100644
--- a/spec/models/session_activation_spec.rb
+++ b/spec/models/session_activation_spec.rb
@@ -16,7 +16,7 @@ RSpec.describe SessionActivation do
       allow(session_activation).to receive(:detection).and_return(detection)
     end
 
-    let(:detection)          { double(id: 1) }
+    let(:detection)          { instance_double(Browser::Chrome, id: 1) }
     let(:session_activation) { Fabricate(:session_activation) }
 
     it 'returns detection.id' do
@@ -30,7 +30,7 @@ RSpec.describe SessionActivation do
     end
 
     let(:session_activation) { Fabricate(:session_activation) }
-    let(:detection)          { double(platform: double(id: 1)) }
+    let(:detection)          { instance_double(Browser::Chrome, platform: instance_double(Browser::Platform, id: 1)) }
 
     it 'returns detection.platform.id' do
       expect(session_activation.platform).to be 1
diff --git a/spec/models/setting_spec.rb b/spec/models/setting_spec.rb
index bba585cec6..5ed5c5d766 100644
--- a/spec/models/setting_spec.rb
+++ b/spec/models/setting_spec.rb
@@ -62,7 +62,7 @@ RSpec.describe Setting do
 
         context 'when RailsSettings::Settings.object returns truthy' do
           let(:object) { db_val }
-          let(:db_val) { double(value: 'db_val') }
+          let(:db_val) { instance_double(described_class, value: 'db_val') }
 
           context 'when default_value is a Hash' do
             let(:default_value) { { default_value: 'default_value' } }
diff --git a/spec/services/account_search_service_spec.rb b/spec/services/account_search_service_spec.rb
index 98264e6e13..1cd036f484 100644
--- a/spec/services/account_search_service_spec.rb
+++ b/spec/services/account_search_service_spec.rb
@@ -53,7 +53,7 @@ describe AccountSearchService, type: :service do
 
     context 'when there is a domain but no exact match' do
       it 'follows the remote account when resolve is true' do
-        service = double(call: nil)
+        service = instance_double(ResolveAccountService, call: nil)
         allow(ResolveAccountService).to receive(:new).and_return(service)
 
         results = subject.call('newuser@remote.com', nil, limit: 10, resolve: true)
@@ -61,7 +61,7 @@ describe AccountSearchService, type: :service do
       end
 
       it 'does not follow the remote account when resolve is false' do
-        service = double(call: nil)
+        service = instance_double(ResolveAccountService, call: nil)
         allow(ResolveAccountService).to receive(:new).and_return(service)
 
         results = subject.call('newuser@remote.com', nil, limit: 10, resolve: false)
diff --git a/spec/services/bootstrap_timeline_service_spec.rb b/spec/services/bootstrap_timeline_service_spec.rb
index 5a15ba7418..721a0337fd 100644
--- a/spec/services/bootstrap_timeline_service_spec.rb
+++ b/spec/services/bootstrap_timeline_service_spec.rb
@@ -6,7 +6,7 @@ RSpec.describe BootstrapTimelineService, type: :service do
   subject { described_class.new }
 
   context 'when the new user has registered from an invite' do
-    let(:service)    { double }
+    let(:service)    { instance_double(FollowService) }
     let(:autofollow) { false }
     let(:inviter)    { Fabricate(:user, confirmed_at: 2.days.ago) }
     let(:invite)     { Fabricate(:invite, user: inviter, max_uses: nil, expires_at: 1.hour.from_now, autofollow: autofollow) }
diff --git a/spec/services/bulk_import_service_spec.rb b/spec/services/bulk_import_service_spec.rb
index 09dfb0a0b6..281b642ea4 100644
--- a/spec/services/bulk_import_service_spec.rb
+++ b/spec/services/bulk_import_service_spec.rb
@@ -47,7 +47,7 @@ RSpec.describe BulkImportService do
       it 'requests to follow all the listed users once the workers have run' do
         subject.call(import)
 
-        resolve_account_service_double = double
+        resolve_account_service_double = instance_double(ResolveAccountService)
         allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service_double)
         allow(resolve_account_service_double).to receive(:call).with('user@foo.bar', any_args) { Fabricate(:account, username: 'user', domain: 'foo.bar', protocol: :activitypub) }
         allow(resolve_account_service_double).to receive(:call).with('unknown@unknown.bar', any_args) { Fabricate(:account, username: 'unknown', domain: 'unknown.bar', protocol: :activitypub) }
@@ -95,7 +95,7 @@ RSpec.describe BulkImportService do
       it 'requests to follow all the expected users once the workers have run' do
         subject.call(import)
 
-        resolve_account_service_double = double
+        resolve_account_service_double = instance_double(ResolveAccountService)
         allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service_double)
         allow(resolve_account_service_double).to receive(:call).with('user@foo.bar', any_args) { Fabricate(:account, username: 'user', domain: 'foo.bar', protocol: :activitypub) }
         allow(resolve_account_service_double).to receive(:call).with('unknown@unknown.bar', any_args) { Fabricate(:account, username: 'unknown', domain: 'unknown.bar', protocol: :activitypub) }
@@ -133,7 +133,7 @@ RSpec.describe BulkImportService do
       it 'blocks all the listed users once the workers have run' do
         subject.call(import)
 
-        resolve_account_service_double = double
+        resolve_account_service_double = instance_double(ResolveAccountService)
         allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service_double)
         allow(resolve_account_service_double).to receive(:call).with('user@foo.bar', any_args) { Fabricate(:account, username: 'user', domain: 'foo.bar', protocol: :activitypub) }
         allow(resolve_account_service_double).to receive(:call).with('unknown@unknown.bar', any_args) { Fabricate(:account, username: 'unknown', domain: 'unknown.bar', protocol: :activitypub) }
@@ -177,7 +177,7 @@ RSpec.describe BulkImportService do
       it 'requests to follow all the expected users once the workers have run' do
         subject.call(import)
 
-        resolve_account_service_double = double
+        resolve_account_service_double = instance_double(ResolveAccountService)
         allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service_double)
         allow(resolve_account_service_double).to receive(:call).with('user@foo.bar', any_args) { Fabricate(:account, username: 'user', domain: 'foo.bar', protocol: :activitypub) }
         allow(resolve_account_service_double).to receive(:call).with('unknown@unknown.bar', any_args) { Fabricate(:account, username: 'unknown', domain: 'unknown.bar', protocol: :activitypub) }
@@ -215,7 +215,7 @@ RSpec.describe BulkImportService do
       it 'mutes all the listed users once the workers have run' do
         subject.call(import)
 
-        resolve_account_service_double = double
+        resolve_account_service_double = instance_double(ResolveAccountService)
         allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service_double)
         allow(resolve_account_service_double).to receive(:call).with('user@foo.bar', any_args) { Fabricate(:account, username: 'user', domain: 'foo.bar', protocol: :activitypub) }
         allow(resolve_account_service_double).to receive(:call).with('unknown@unknown.bar', any_args) { Fabricate(:account, username: 'unknown', domain: 'unknown.bar', protocol: :activitypub) }
@@ -263,7 +263,7 @@ RSpec.describe BulkImportService do
       it 'requests to follow all the expected users once the workers have run' do
         subject.call(import)
 
-        resolve_account_service_double = double
+        resolve_account_service_double = instance_double(ResolveAccountService)
         allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service_double)
         allow(resolve_account_service_double).to receive(:call).with('user@foo.bar', any_args) { Fabricate(:account, username: 'user', domain: 'foo.bar', protocol: :activitypub) }
         allow(resolve_account_service_double).to receive(:call).with('unknown@unknown.bar', any_args) { Fabricate(:account, username: 'unknown', domain: 'unknown.bar', protocol: :activitypub) }
@@ -360,7 +360,7 @@ RSpec.describe BulkImportService do
       it 'updates the bookmarks as expected once the workers have run' do
         subject.call(import)
 
-        service_double = double
+        service_double = instance_double(ActivityPub::FetchRemoteStatusService)
         allow(ActivityPub::FetchRemoteStatusService).to receive(:new).and_return(service_double)
         allow(service_double).to receive(:call).with('https://domain.unknown/foo') { Fabricate(:status, uri: 'https://domain.unknown/foo') }
         allow(service_double).to receive(:call).with('https://domain.unknown/private') { Fabricate(:status, uri: 'https://domain.unknown/private', visibility: :direct) }
@@ -403,7 +403,7 @@ RSpec.describe BulkImportService do
       it 'updates the bookmarks as expected once the workers have run' do
         subject.call(import)
 
-        service_double = double
+        service_double = instance_double(ActivityPub::FetchRemoteStatusService)
         allow(ActivityPub::FetchRemoteStatusService).to receive(:new).and_return(service_double)
         allow(service_double).to receive(:call).with('https://domain.unknown/foo') { Fabricate(:status, uri: 'https://domain.unknown/foo') }
         allow(service_double).to receive(:call).with('https://domain.unknown/private') { Fabricate(:status, uri: 'https://domain.unknown/private', visibility: :direct) }
diff --git a/spec/services/fetch_resource_service_spec.rb b/spec/services/fetch_resource_service_spec.rb
index da7e423517..0f1068471f 100644
--- a/spec/services/fetch_resource_service_spec.rb
+++ b/spec/services/fetch_resource_service_spec.rb
@@ -24,7 +24,7 @@ RSpec.describe FetchResourceService, type: :service do
 
     context 'when OpenSSL::SSL::SSLError is raised' do
       before do
-        request = double
+        request = instance_double(Request)
         allow(Request).to receive(:new).and_return(request)
         allow(request).to receive(:add_headers)
         allow(request).to receive(:on_behalf_of)
@@ -36,7 +36,7 @@ RSpec.describe FetchResourceService, type: :service do
 
     context 'when HTTP::ConnectionError is raised' do
       before do
-        request = double
+        request = instance_double(Request)
         allow(Request).to receive(:new).and_return(request)
         allow(request).to receive(:add_headers)
         allow(request).to receive(:on_behalf_of)
diff --git a/spec/services/import_service_spec.rb b/spec/services/import_service_spec.rb
index 32ba4409c3..1904ac8dc9 100644
--- a/spec/services/import_service_spec.rb
+++ b/spec/services/import_service_spec.rb
@@ -219,7 +219,7 @@ RSpec.describe ImportService, type: :service do
     end
 
     before do
-      service = double
+      service = instance_double(ActivityPub::FetchRemoteStatusService)
       allow(ActivityPub::FetchRemoteStatusService).to receive(:new).and_return(service)
       allow(service).to receive(:call).with('https://unknown-remote.com/users/bar/statuses/1') do
         Fabricate(:status, uri: 'https://unknown-remote.com/users/bar/statuses/1')
diff --git a/spec/services/post_status_service_spec.rb b/spec/services/post_status_service_spec.rb
index 76ef5391f0..d201292e17 100644
--- a/spec/services/post_status_service_spec.rb
+++ b/spec/services/post_status_service_spec.rb
@@ -132,7 +132,7 @@ RSpec.describe PostStatusService, type: :service do
   end
 
   it 'processes mentions' do
-    mention_service = double(:process_mentions_service)
+    mention_service = instance_double(ProcessMentionsService)
     allow(mention_service).to receive(:call)
     allow(ProcessMentionsService).to receive(:new).and_return(mention_service)
     account = Fabricate(:account)
@@ -163,7 +163,7 @@ RSpec.describe PostStatusService, type: :service do
   end
 
   it 'processes hashtags' do
-    hashtags_service = double(:process_hashtags_service)
+    hashtags_service = instance_double(ProcessHashtagsService)
     allow(hashtags_service).to receive(:call)
     allow(ProcessHashtagsService).to receive(:new).and_return(hashtags_service)
     account = Fabricate(:account)
diff --git a/spec/services/resolve_url_service_spec.rb b/spec/services/resolve_url_service_spec.rb
index 8d2af74173..ad5bebb4ed 100644
--- a/spec/services/resolve_url_service_spec.rb
+++ b/spec/services/resolve_url_service_spec.rb
@@ -9,7 +9,7 @@ describe ResolveURLService, type: :service do
     it 'returns nil when there is no resource url' do
       url           = 'http://example.com/missing-resource'
       known_account = Fabricate(:account, uri: url)
-      service = double
+      service = instance_double(FetchResourceService)
 
       allow(FetchResourceService).to receive(:new).and_return service
       allow(service).to receive(:response_code).and_return(404)
@@ -21,7 +21,7 @@ describe ResolveURLService, type: :service do
     it 'returns known account on temporary error' do
       url           = 'http://example.com/missing-resource'
       known_account = Fabricate(:account, uri: url)
-      service = double
+      service = instance_double(FetchResourceService)
 
       allow(FetchResourceService).to receive(:new).and_return service
       allow(service).to receive(:response_code).and_return(500)
diff --git a/spec/services/search_service_spec.rb b/spec/services/search_service_spec.rb
index 00f693dfab..1283a23bf1 100644
--- a/spec/services/search_service_spec.rb
+++ b/spec/services/search_service_spec.rb
@@ -25,7 +25,7 @@ describe SearchService, type: :service do
 
       context 'when it does not find anything' do
         it 'returns the empty results' do
-          service = double(call: nil)
+          service = instance_double(ResolveURLService, call: nil)
           allow(ResolveURLService).to receive(:new).and_return(service)
           results = subject.call(@query, nil, 10, resolve: true)
 
@@ -37,7 +37,7 @@ describe SearchService, type: :service do
       context 'when it finds an account' do
         it 'includes the account in the results' do
           account = Account.new
-          service = double(call: account)
+          service = instance_double(ResolveURLService, call: account)
           allow(ResolveURLService).to receive(:new).and_return(service)
 
           results = subject.call(@query, nil, 10, resolve: true)
@@ -49,7 +49,7 @@ describe SearchService, type: :service do
       context 'when it finds a status' do
         it 'includes the status in the results' do
           status = Status.new
-          service = double(call: status)
+          service = instance_double(ResolveURLService, call: status)
           allow(ResolveURLService).to receive(:new).and_return(service)
 
           results = subject.call(@query, nil, 10, resolve: true)
@@ -64,7 +64,7 @@ describe SearchService, type: :service do
         it 'includes the account in the results' do
           query = 'username'
           account = Account.new
-          service = double(call: [account])
+          service = instance_double(AccountSearchService, call: [account])
           allow(AccountSearchService).to receive(:new).and_return(service)
 
           results = subject.call(query, nil, 10)
diff --git a/spec/services/unsuspend_account_service_spec.rb b/spec/services/unsuspend_account_service_spec.rb
index e02ae41b99..7ef2630aeb 100644
--- a/spec/services/unsuspend_account_service_spec.rb
+++ b/spec/services/unsuspend_account_service_spec.rb
@@ -63,7 +63,7 @@ RSpec.describe UnsuspendAccountService, type: :service do
   describe 'unsuspending a remote account' do
     include_examples 'with common context' do
       let!(:account)                 { Fabricate(:account, domain: 'bob.com', uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub) }
-      let!(:resolve_account_service) { double }
+      let!(:resolve_account_service) { instance_double(ResolveAccountService) }
 
       before do
         allow(ResolveAccountService).to receive(:new).and_return(resolve_account_service)
diff --git a/spec/validators/blacklisted_email_validator_spec.rb b/spec/validators/blacklisted_email_validator_spec.rb
index a642405ae6..3d3d50f659 100644
--- a/spec/validators/blacklisted_email_validator_spec.rb
+++ b/spec/validators/blacklisted_email_validator_spec.rb
@@ -6,8 +6,8 @@ RSpec.describe BlacklistedEmailValidator, type: :validator do
   describe '#validate' do
     subject { described_class.new.validate(user); errors }
 
-    let(:user)   { double(email: 'info@mail.com', sign_up_ip: '1.2.3.4', errors: errors) }
-    let(:errors) { double(add: nil) }
+    let(:user)   { instance_double(User, email: 'info@mail.com', sign_up_ip: '1.2.3.4', errors: errors) }
+    let(:errors) { instance_double(ActiveModel::Errors, add: nil) }
 
     before do
       allow(user).to receive(:valid_invitation?).and_return(false)
diff --git a/spec/validators/disallowed_hashtags_validator_spec.rb b/spec/validators/disallowed_hashtags_validator_spec.rb
index e98db38792..7144d28918 100644
--- a/spec/validators/disallowed_hashtags_validator_spec.rb
+++ b/spec/validators/disallowed_hashtags_validator_spec.rb
@@ -11,8 +11,8 @@ RSpec.describe DisallowedHashtagsValidator, type: :validator do
       described_class.new.validate(status)
     end
 
-    let(:status) { double(errors: errors, local?: local, reblog?: reblog, text: disallowed_tags.map { |x| "##{x}" }.join(' ')) }
-    let(:errors) { double(add: nil) }
+    let(:status) { instance_double(Status, errors: errors, local?: local, reblog?: reblog, text: disallowed_tags.map { |x| "##{x}" }.join(' ')) }
+    let(:errors) { instance_double(ActiveModel::Errors, add: nil) }
 
     context 'with a remote reblog' do
       let(:local)  { false }
diff --git a/spec/validators/email_mx_validator_spec.rb b/spec/validators/email_mx_validator_spec.rb
index d9703d81b1..876d73c184 100644
--- a/spec/validators/email_mx_validator_spec.rb
+++ b/spec/validators/email_mx_validator_spec.rb
@@ -4,7 +4,7 @@ require 'rails_helper'
 
 describe EmailMxValidator do
   describe '#validate' do
-    let(:user) { double(email: 'foo@example.com', sign_up_ip: '1.2.3.4', errors: double(add: nil)) }
+    let(:user) { instance_double(User, email: 'foo@example.com', sign_up_ip: '1.2.3.4', errors: instance_double(ActiveModel::Errors, add: nil)) }
 
     context 'with an e-mail domain that is explicitly allowed' do
       around do |block|
@@ -15,7 +15,7 @@ describe EmailMxValidator do
       end
 
       it 'does not add errors if there are no DNS records' do
-        resolver = double
+        resolver = instance_double(Resolv::DNS)
 
         allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([])
         allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([])
@@ -29,7 +29,7 @@ describe EmailMxValidator do
     end
 
     it 'adds no error if there are DNS records for the e-mail domain' do
-      resolver = double
+      resolver = instance_double(Resolv::DNS)
 
       allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([])
       allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([Resolv::DNS::Resource::IN::A.new('192.0.2.42')])
@@ -46,19 +46,19 @@ describe EmailMxValidator do
       allow(TagManager).to receive(:instance).and_return(double)
       allow(double).to receive(:normalize_domain).with('example.com').and_raise(Addressable::URI::InvalidURIError)
 
-      user = double(email: 'foo@example.com', errors: double(add: nil))
+      user = instance_double(User, email: 'foo@example.com', errors: instance_double(ActiveModel::Errors, add: nil))
       subject.validate(user)
       expect(user.errors).to have_received(:add)
     end
 
     it 'adds an error if the domain email portion is blank' do
-      user = double(email: 'foo@', errors: double(add: nil))
+      user = instance_double(User, email: 'foo@', errors: instance_double(ActiveModel::Errors, add: nil))
       subject.validate(user)
       expect(user.errors).to have_received(:add)
     end
 
     it 'adds an error if the email domain name contains empty labels' do
-      resolver = double
+      resolver = instance_double(Resolv::DNS)
 
       allow(resolver).to receive(:getresources).with('example..com', Resolv::DNS::Resource::IN::MX).and_return([])
       allow(resolver).to receive(:getresources).with('example..com', Resolv::DNS::Resource::IN::A).and_return([Resolv::DNS::Resource::IN::A.new('192.0.2.42')])
@@ -66,13 +66,13 @@ describe EmailMxValidator do
       allow(resolver).to receive(:timeouts=).and_return(nil)
       allow(Resolv::DNS).to receive(:open).and_yield(resolver)
 
-      user = double(email: 'foo@example..com', sign_up_ip: '1.2.3.4', errors: double(add: nil))
+      user = instance_double(User, email: 'foo@example..com', sign_up_ip: '1.2.3.4', errors: instance_double(ActiveModel::Errors, add: nil))
       subject.validate(user)
       expect(user.errors).to have_received(:add)
     end
 
     it 'adds an error if there are no DNS records for the e-mail domain' do
-      resolver = double
+      resolver = instance_double(Resolv::DNS)
 
       allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([])
       allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([])
@@ -85,9 +85,11 @@ describe EmailMxValidator do
     end
 
     it 'adds an error if a MX record does not lead to an IP' do
-      resolver = double
+      resolver = instance_double(Resolv::DNS)
 
-      allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([double(exchange: 'mail.example.com')])
+      allow(resolver).to receive(:getresources)
+        .with('example.com', Resolv::DNS::Resource::IN::MX)
+        .and_return([instance_double(Resolv::DNS::Resource::MX, exchange: 'mail.example.com')])
       allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([])
       allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::AAAA).and_return([])
       allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::A).and_return([])
@@ -101,13 +103,15 @@ describe EmailMxValidator do
 
     it 'adds an error if the MX record is blacklisted' do
       EmailDomainBlock.create!(domain: 'mail.example.com')
-      resolver = double
+      resolver = instance_double(Resolv::DNS)
 
-      allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::MX).and_return([double(exchange: 'mail.example.com')])
+      allow(resolver).to receive(:getresources)
+        .with('example.com', Resolv::DNS::Resource::IN::MX)
+        .and_return([instance_double(Resolv::DNS::Resource::MX, exchange: 'mail.example.com')])
       allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::A).and_return([])
       allow(resolver).to receive(:getresources).with('example.com', Resolv::DNS::Resource::IN::AAAA).and_return([])
-      allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::A).and_return([double(address: '2.3.4.5')])
-      allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::AAAA).and_return([double(address: 'fd00::2')])
+      allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::A).and_return([instance_double(Resolv::DNS::Resource::IN::A, address: '2.3.4.5')])
+      allow(resolver).to receive(:getresources).with('mail.example.com', Resolv::DNS::Resource::IN::AAAA).and_return([instance_double(Resolv::DNS::Resource::IN::A, address: 'fd00::2')])
       allow(resolver).to receive(:timeouts=).and_return(nil)
       allow(Resolv::DNS).to receive(:open).and_yield(resolver)
 
diff --git a/spec/validators/follow_limit_validator_spec.rb b/spec/validators/follow_limit_validator_spec.rb
index 7b9055a27f..86b6511d65 100644
--- a/spec/validators/follow_limit_validator_spec.rb
+++ b/spec/validators/follow_limit_validator_spec.rb
@@ -12,9 +12,9 @@ RSpec.describe FollowLimitValidator, type: :validator do
       described_class.new.validate(follow)
     end
 
-    let(:follow)  { double(account: account, errors: errors) }
-    let(:errors)  { double(add: nil) }
-    let(:account) { double(nil?: _nil, local?: local, following_count: 0, followers_count: 0) }
+    let(:follow)  { instance_double(Follow, account: account, errors: errors) }
+    let(:errors)  { instance_double(ActiveModel::Errors, add: nil) }
+    let(:account) { instance_double(Account, nil?: _nil, local?: local, following_count: 0, followers_count: 0) }
     let(:_nil)    { true }
     let(:local)   { false }
 
diff --git a/spec/validators/note_length_validator_spec.rb b/spec/validators/note_length_validator_spec.rb
index e45d221d76..66fccad3ec 100644
--- a/spec/validators/note_length_validator_spec.rb
+++ b/spec/validators/note_length_validator_spec.rb
@@ -8,7 +8,7 @@ describe NoteLengthValidator do
   describe '#validate' do
     it 'adds an error when text is over 500 characters' do
       text = 'a' * 520
-      account = double(note: text, errors: double(add: nil))
+      account = instance_double(Account, note: text, errors: activemodel_errors)
 
       subject.validate_each(account, 'note', text)
       expect(account.errors).to have_received(:add)
@@ -16,7 +16,7 @@ describe NoteLengthValidator do
 
     it 'counts URLs as 23 characters flat' do
       text = ('a' * 476) + " http://#{'b' * 30}.com/example"
-      account = double(note: text, errors: double(add: nil))
+      account = instance_double(Account, note: text, errors: activemodel_errors)
 
       subject.validate_each(account, 'note', text)
       expect(account.errors).to_not have_received(:add)
@@ -24,10 +24,16 @@ describe NoteLengthValidator do
 
     it 'does not count non-autolinkable URLs as 23 characters flat' do
       text = ('a' * 476) + "http://#{'b' * 30}.com/example"
-      account = double(note: text, errors: double(add: nil))
+      account = instance_double(Account, note: text, errors: activemodel_errors)
 
       subject.validate_each(account, 'note', text)
       expect(account.errors).to have_received(:add)
     end
+
+    private
+
+    def activemodel_errors
+      instance_double(ActiveModel::Errors, add: nil)
+    end
   end
 end
diff --git a/spec/validators/poll_validator_spec.rb b/spec/validators/poll_validator_spec.rb
index 069a471619..95feb043db 100644
--- a/spec/validators/poll_validator_spec.rb
+++ b/spec/validators/poll_validator_spec.rb
@@ -9,8 +9,8 @@ RSpec.describe PollValidator, type: :validator do
     end
 
     let(:validator) { described_class.new }
-    let(:poll) { double(options: options, expires_at: expires_at, errors: errors) }
-    let(:errors) { double(add: nil) }
+    let(:poll) { instance_double(Poll, options: options, expires_at: expires_at, errors: errors) }
+    let(:errors) { instance_double(ActiveModel::Errors, add: nil) }
     let(:options) { %w(foo bar) }
     let(:expires_at) { 1.day.from_now }
 
diff --git a/spec/validators/status_length_validator_spec.rb b/spec/validators/status_length_validator_spec.rb
index e132b5618a..98ea15e03b 100644
--- a/spec/validators/status_length_validator_spec.rb
+++ b/spec/validators/status_length_validator_spec.rb
@@ -5,38 +5,38 @@ require 'rails_helper'
 describe StatusLengthValidator do
   describe '#validate' do
     it 'does not add errors onto remote statuses' do
-      status = double(local?: false)
+      status = instance_double(Status, local?: false)
       subject.validate(status)
       expect(status).to_not receive(:errors)
     end
 
     it 'does not add errors onto local reblogs' do
-      status = double(local?: false, reblog?: true)
+      status = instance_double(Status, local?: false, reblog?: true)
       subject.validate(status)
       expect(status).to_not receive(:errors)
     end
 
     it 'adds an error when content warning is over 500 characters' do
-      status = double(spoiler_text: 'a' * 520, text: '', errors: double(add: nil), local?: true, reblog?: false)
+      status = instance_double(Status, spoiler_text: 'a' * 520, text: '', errors: activemodel_errors, local?: true, reblog?: false)
       subject.validate(status)
       expect(status.errors).to have_received(:add)
     end
 
     it 'adds an error when text is over 500 characters' do
-      status = double(spoiler_text: '', text: 'a' * 520, errors: double(add: nil), local?: true, reblog?: false)
+      status = instance_double(Status, spoiler_text: '', text: 'a' * 520, errors: activemodel_errors, local?: true, reblog?: false)
       subject.validate(status)
       expect(status.errors).to have_received(:add)
     end
 
     it 'adds an error when text and content warning are over 500 characters total' do
-      status = double(spoiler_text: 'a' * 250, text: 'b' * 251, errors: double(add: nil), local?: true, reblog?: false)
+      status = instance_double(Status, spoiler_text: 'a' * 250, text: 'b' * 251, errors: activemodel_errors, local?: true, reblog?: false)
       subject.validate(status)
       expect(status.errors).to have_received(:add)
     end
 
     it 'counts URLs as 23 characters flat' do
       text   = ('a' * 476) + " http://#{'b' * 30}.com/example"
-      status = double(spoiler_text: '', text: text, errors: double(add: nil), local?: true, reblog?: false)
+      status = instance_double(Status, spoiler_text: '', text: text, errors: activemodel_errors, local?: true, reblog?: false)
 
       subject.validate(status)
       expect(status.errors).to_not have_received(:add)
@@ -44,7 +44,7 @@ describe StatusLengthValidator do
 
     it 'does not count non-autolinkable URLs as 23 characters flat' do
       text   = ('a' * 476) + "http://#{'b' * 30}.com/example"
-      status = double(spoiler_text: '', text: text, errors: double(add: nil), local?: true, reblog?: false)
+      status = instance_double(Status, spoiler_text: '', text: text, errors: activemodel_errors, local?: true, reblog?: false)
 
       subject.validate(status)
       expect(status.errors).to have_received(:add)
@@ -52,14 +52,14 @@ describe StatusLengthValidator do
 
     it 'does not count overly long URLs as 23 characters flat' do
       text = "http://example.com/valid?#{'#foo?' * 1000}"
-      status = double(spoiler_text: '', text: text, errors: double(add: nil), local?: true, reblog?: false)
+      status = instance_double(Status, spoiler_text: '', text: text, errors: activemodel_errors, local?: true, reblog?: false)
       subject.validate(status)
       expect(status.errors).to have_received(:add)
     end
 
     it 'counts only the front part of remote usernames' do
       text   = ('a' * 475) + " @alice@#{'b' * 30}.com"
-      status = double(spoiler_text: '', text: text, errors: double(add: nil), local?: true, reblog?: false)
+      status = instance_double(Status, spoiler_text: '', text: text, errors: activemodel_errors, local?: true, reblog?: false)
 
       subject.validate(status)
       expect(status.errors).to_not have_received(:add)
@@ -67,10 +67,16 @@ describe StatusLengthValidator do
 
     it 'does count both parts of remote usernames for overly long domains' do
       text   = "@alice@#{'b' * 500}.com"
-      status = double(spoiler_text: '', text: text, errors: double(add: nil), local?: true, reblog?: false)
+      status = instance_double(Status, spoiler_text: '', text: text, errors: activemodel_errors, local?: true, reblog?: false)
 
       subject.validate(status)
       expect(status.errors).to have_received(:add)
     end
   end
+
+  private
+
+  def activemodel_errors
+    instance_double(ActiveModel::Errors, add: nil)
+  end
 end
diff --git a/spec/validators/status_pin_validator_spec.rb b/spec/validators/status_pin_validator_spec.rb
index 00b89d702f..e8f8a45434 100644
--- a/spec/validators/status_pin_validator_spec.rb
+++ b/spec/validators/status_pin_validator_spec.rb
@@ -8,11 +8,11 @@ RSpec.describe StatusPinValidator, type: :validator do
       subject.validate(pin)
     end
 
-    let(:pin) { double(account: account, errors: errors, status: status, account_id: pin_account_id) }
-    let(:status) { double(reblog?: reblog, account_id: status_account_id, visibility: visibility, direct_visibility?: visibility == 'direct') }
-    let(:account)     { double(status_pins: status_pins, local?: local) }
-    let(:status_pins) { double(count: count) }
-    let(:errors)      { double(add: nil) }
+    let(:pin) { instance_double(StatusPin, account: account, errors: errors, status: status, account_id: pin_account_id) }
+    let(:status) { instance_double(Status, reblog?: reblog, account_id: status_account_id, visibility: visibility, direct_visibility?: visibility == 'direct') }
+    let(:account)     { instance_double(Account, status_pins: status_pins, local?: local) }
+    let(:status_pins) { instance_double(Array, count: count) }
+    let(:errors)      { instance_double(ActiveModel::Errors, add: nil) }
     let(:pin_account_id)    { 1 }
     let(:status_account_id) { 1 }
     let(:visibility)  { 'public' }
diff --git a/spec/validators/unique_username_validator_spec.rb b/spec/validators/unique_username_validator_spec.rb
index 6867cbc6ce..0d172c8408 100644
--- a/spec/validators/unique_username_validator_spec.rb
+++ b/spec/validators/unique_username_validator_spec.rb
@@ -6,7 +6,7 @@ describe UniqueUsernameValidator do
   describe '#validate' do
     context 'when local account' do
       it 'does not add errors if username is nil' do
-        account = double(username: nil, domain: nil, persisted?: false, errors: double(add: nil))
+        account = instance_double(Account, username: nil, domain: nil, persisted?: false, errors: activemodel_errors)
         subject.validate(account)
         expect(account.errors).to_not have_received(:add)
       end
@@ -18,14 +18,14 @@ describe UniqueUsernameValidator do
 
       it 'adds an error when the username is already used with ignoring cases' do
         Fabricate(:account, username: 'ABCdef')
-        account = double(username: 'abcDEF', domain: nil, persisted?: false, errors: double(add: nil))
+        account = instance_double(Account, username: 'abcDEF', domain: nil, persisted?: false, errors: activemodel_errors)
         subject.validate(account)
         expect(account.errors).to have_received(:add)
       end
 
       it 'does not add errors when same username remote account exists' do
         Fabricate(:account, username: 'abcdef', domain: 'example.com')
-        account = double(username: 'abcdef', domain: nil, persisted?: false, errors: double(add: nil))
+        account = instance_double(Account, username: 'abcdef', domain: nil, persisted?: false, errors: activemodel_errors)
         subject.validate(account)
         expect(account.errors).to_not have_received(:add)
       end
@@ -34,7 +34,7 @@ describe UniqueUsernameValidator do
 
   context 'when remote account' do
     it 'does not add errors if username is nil' do
-      account = double(username: nil, domain: 'example.com', persisted?: false, errors: double(add: nil))
+      account = instance_double(Account, username: nil, domain: 'example.com', persisted?: false, errors: activemodel_errors)
       subject.validate(account)
       expect(account.errors).to_not have_received(:add)
     end
@@ -46,23 +46,29 @@ describe UniqueUsernameValidator do
 
     it 'adds an error when the username is already used with ignoring cases' do
       Fabricate(:account, username: 'ABCdef', domain: 'example.com')
-      account = double(username: 'abcDEF', domain: 'example.com', persisted?: false, errors: double(add: nil))
+      account = instance_double(Account, username: 'abcDEF', domain: 'example.com', persisted?: false, errors: activemodel_errors)
       subject.validate(account)
       expect(account.errors).to have_received(:add)
     end
 
     it 'adds an error when the domain is already used with ignoring cases' do
       Fabricate(:account, username: 'ABCdef', domain: 'example.com')
-      account = double(username: 'ABCdef', domain: 'EXAMPLE.COM', persisted?: false, errors: double(add: nil))
+      account = instance_double(Account, username: 'ABCdef', domain: 'EXAMPLE.COM', persisted?: false, errors: activemodel_errors)
       subject.validate(account)
       expect(account.errors).to have_received(:add)
     end
 
     it 'does not add errors when account with the same username and another domain exists' do
       Fabricate(:account, username: 'abcdef', domain: 'example.com')
-      account = double(username: 'abcdef', domain: 'example2.com', persisted?: false, errors: double(add: nil))
+      account = instance_double(Account, username: 'abcdef', domain: 'example2.com', persisted?: false, errors: activemodel_errors)
       subject.validate(account)
       expect(account.errors).to_not have_received(:add)
     end
   end
+
+  private
+
+  def activemodel_errors
+    instance_double(ActiveModel::Errors, add: nil)
+  end
 end
diff --git a/spec/validators/unreserved_username_validator_spec.rb b/spec/validators/unreserved_username_validator_spec.rb
index 85bd7dcb6a..6f353eeafd 100644
--- a/spec/validators/unreserved_username_validator_spec.rb
+++ b/spec/validators/unreserved_username_validator_spec.rb
@@ -10,8 +10,8 @@ RSpec.describe UnreservedUsernameValidator, type: :validator do
     end
 
     let(:validator) { described_class.new }
-    let(:account)   { double(username: username, errors: errors) }
-    let(:errors) { double(add: nil) }
+    let(:account)   { instance_double(Account, username: username, errors: errors) }
+    let(:errors) { instance_double(ActiveModel::Errors, add: nil) }
 
     context 'when @username is blank?' do
       let(:username) { nil }
diff --git a/spec/validators/url_validator_spec.rb b/spec/validators/url_validator_spec.rb
index a56ccd8e08..f2220e32b0 100644
--- a/spec/validators/url_validator_spec.rb
+++ b/spec/validators/url_validator_spec.rb
@@ -10,8 +10,8 @@ RSpec.describe URLValidator, type: :validator do
     end
 
     let(:validator) { described_class.new(attributes: [attribute]) }
-    let(:record)    { double(errors: errors) }
-    let(:errors)    { double(add: nil) }
+    let(:record)    { instance_double(Webhook, errors: errors) }
+    let(:errors)    { instance_double(ActiveModel::Errors, add: nil) }
     let(:value)     { '' }
     let(:attribute) { :foo }
 
diff --git a/spec/views/statuses/show.html.haml_spec.rb b/spec/views/statuses/show.html.haml_spec.rb
index 370743dfec..06f5132d9f 100644
--- a/spec/views/statuses/show.html.haml_spec.rb
+++ b/spec/views/statuses/show.html.haml_spec.rb
@@ -4,7 +4,7 @@ require 'rails_helper'
 
 describe 'statuses/show.html.haml', without_verify_partial_doubles: true do
   before do
-    double(api_oembed_url: '')
+    allow(view).to receive(:api_oembed_url).and_return('')
     allow(view).to receive(:show_landing_strip?).and_return(true)
     allow(view).to receive(:site_title).and_return('example site')
     allow(view).to receive(:site_hostname).and_return('example.com')
diff --git a/spec/workers/activitypub/processing_worker_spec.rb b/spec/workers/activitypub/processing_worker_spec.rb
index 6b57f16a92..66d1cf4890 100644
--- a/spec/workers/activitypub/processing_worker_spec.rb
+++ b/spec/workers/activitypub/processing_worker_spec.rb
@@ -9,7 +9,8 @@ describe ActivityPub::ProcessingWorker do
 
   describe '#perform' do
     it 'delegates to ActivityPub::ProcessCollectionService' do
-      allow(ActivityPub::ProcessCollectionService).to receive(:new).and_return(double(:service, call: nil))
+      allow(ActivityPub::ProcessCollectionService).to receive(:new)
+        .and_return(instance_double(ActivityPub::ProcessCollectionService, call: nil))
       subject.perform(account.id, '')
       expect(ActivityPub::ProcessCollectionService).to have_received(:new)
     end
diff --git a/spec/workers/admin/domain_purge_worker_spec.rb b/spec/workers/admin/domain_purge_worker_spec.rb
index b67c58b234..861fd71a7f 100644
--- a/spec/workers/admin/domain_purge_worker_spec.rb
+++ b/spec/workers/admin/domain_purge_worker_spec.rb
@@ -7,7 +7,7 @@ describe Admin::DomainPurgeWorker do
 
   describe 'perform' do
     it 'calls domain purge service for relevant domain block' do
-      service = double(call: nil)
+      service = instance_double(PurgeDomainService, call: nil)
       allow(PurgeDomainService).to receive(:new).and_return(service)
       result = subject.perform('example.com')
 
diff --git a/spec/workers/domain_block_worker_spec.rb b/spec/workers/domain_block_worker_spec.rb
index 8b98443fa7..33c3ca009a 100644
--- a/spec/workers/domain_block_worker_spec.rb
+++ b/spec/workers/domain_block_worker_spec.rb
@@ -9,7 +9,7 @@ describe DomainBlockWorker do
     let(:domain_block) { Fabricate(:domain_block) }
 
     it 'calls domain block service for relevant domain block' do
-      service = double(call: nil)
+      service = instance_double(BlockDomainService, call: nil)
       allow(BlockDomainService).to receive(:new).and_return(service)
       result = subject.perform(domain_block.id)
 
diff --git a/spec/workers/domain_clear_media_worker_spec.rb b/spec/workers/domain_clear_media_worker_spec.rb
index f21d1fe189..21f8f87b2f 100644
--- a/spec/workers/domain_clear_media_worker_spec.rb
+++ b/spec/workers/domain_clear_media_worker_spec.rb
@@ -9,7 +9,7 @@ describe DomainClearMediaWorker do
     let(:domain_block) { Fabricate(:domain_block, severity: :silence, reject_media: true) }
 
     it 'calls domain clear media service for relevant domain block' do
-      service = double(call: nil)
+      service = instance_double(ClearDomainMediaService, call: nil)
       allow(ClearDomainMediaService).to receive(:new).and_return(service)
       result = subject.perform(domain_block.id)
 
diff --git a/spec/workers/feed_insert_worker_spec.rb b/spec/workers/feed_insert_worker_spec.rb
index 16f7d73e02..97c73c5999 100644
--- a/spec/workers/feed_insert_worker_spec.rb
+++ b/spec/workers/feed_insert_worker_spec.rb
@@ -11,7 +11,7 @@ describe FeedInsertWorker do
 
     context 'when there are no records' do
       it 'skips push with missing status' do
-        instance = double(push_to_home: nil)
+        instance = instance_double(FeedManager, push_to_home: nil)
         allow(FeedManager).to receive(:instance).and_return(instance)
         result = subject.perform(nil, follower.id)
 
@@ -20,7 +20,7 @@ describe FeedInsertWorker do
       end
 
       it 'skips push with missing account' do
-        instance = double(push_to_home: nil)
+        instance = instance_double(FeedManager, push_to_home: nil)
         allow(FeedManager).to receive(:instance).and_return(instance)
         result = subject.perform(status.id, nil)
 
@@ -31,7 +31,7 @@ describe FeedInsertWorker do
 
     context 'when there are real records' do
       it 'skips the push when there is a filter' do
-        instance = double(push_to_home: nil, filter?: true)
+        instance = instance_double(FeedManager, push_to_home: nil, filter?: true)
         allow(FeedManager).to receive(:instance).and_return(instance)
         result = subject.perform(status.id, follower.id)
 
@@ -40,7 +40,7 @@ describe FeedInsertWorker do
       end
 
       it 'pushes the status onto the home timeline without filter' do
-        instance = double(push_to_home: nil, filter?: false)
+        instance = instance_double(FeedManager, push_to_home: nil, filter?: false)
         allow(FeedManager).to receive(:instance).and_return(instance)
         result = subject.perform(status.id, follower.id)
 
diff --git a/spec/workers/move_worker_spec.rb b/spec/workers/move_worker_spec.rb
index ac7bd506b6..7577f6e896 100644
--- a/spec/workers/move_worker_spec.rb
+++ b/spec/workers/move_worker_spec.rb
@@ -15,7 +15,7 @@ describe MoveWorker do
   let!(:account_note)    { Fabricate(:account_note, account: local_user.account, target_account: source_account, comment: comment) }
   let(:list)             { Fabricate(:list, account: local_follower) }
 
-  let(:block_service) { double }
+  let(:block_service) { instance_double(BlockService) }
 
   before do
     stub_request(:post, 'https://example.org/a/inbox').to_return(status: 200)
diff --git a/spec/workers/publish_scheduled_announcement_worker_spec.rb b/spec/workers/publish_scheduled_announcement_worker_spec.rb
index 0977bba1ee..2e50d4a50d 100644
--- a/spec/workers/publish_scheduled_announcement_worker_spec.rb
+++ b/spec/workers/publish_scheduled_announcement_worker_spec.rb
@@ -12,7 +12,7 @@ describe PublishScheduledAnnouncementWorker do
 
   describe 'perform' do
     before do
-      service = double
+      service = instance_double(FetchRemoteStatusService)
       allow(FetchRemoteStatusService).to receive(:new).and_return(service)
       allow(service).to receive(:call).with('https://domain.com/users/foo/12345') { remote_status.reload }
 
diff --git a/spec/workers/refollow_worker_spec.rb b/spec/workers/refollow_worker_spec.rb
index 1dac15385b..5718d4db49 100644
--- a/spec/workers/refollow_worker_spec.rb
+++ b/spec/workers/refollow_worker_spec.rb
@@ -10,7 +10,7 @@ describe RefollowWorker do
   let(:bob)     { Fabricate(:account, domain: nil, username: 'bob') }
 
   describe 'perform' do
-    let(:service) { double }
+    let(:service) { instance_double(FollowService) }
 
     before do
       allow(FollowService).to receive(:new).and_return(service)
diff --git a/spec/workers/regeneration_worker_spec.rb b/spec/workers/regeneration_worker_spec.rb
index 147a76be50..37b0a04c49 100644
--- a/spec/workers/regeneration_worker_spec.rb
+++ b/spec/workers/regeneration_worker_spec.rb
@@ -9,7 +9,7 @@ describe RegenerationWorker do
     let(:account) { Fabricate(:account) }
 
     it 'calls the precompute feed service for the account' do
-      service = double(call: nil)
+      service = instance_double(PrecomputeFeedService, call: nil)
       allow(PrecomputeFeedService).to receive(:new).and_return(service)
       result = subject.perform(account.id)
 

From a5b6f6da807ee057e3c9747b3b8eebb00f4c4c67 Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Thu, 22 Jun 2023 14:56:14 +0200
Subject: [PATCH 26/33] Change /api/v1/statuses/:id/history to always return at
 least one item (#25510)

---
 app/controllers/api/v1/statuses/histories_controller.rb     | 6 +++++-
 .../api/v1/statuses/histories_controller_spec.rb            | 1 +
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/app/controllers/api/v1/statuses/histories_controller.rb b/app/controllers/api/v1/statuses/histories_controller.rb
index dff2425d06..2913472b04 100644
--- a/app/controllers/api/v1/statuses/histories_controller.rb
+++ b/app/controllers/api/v1/statuses/histories_controller.rb
@@ -8,11 +8,15 @@ class Api::V1::Statuses::HistoriesController < Api::BaseController
 
   def show
     cache_if_unauthenticated!
-    render json: @status.edits.includes(:account, status: [:account]), each_serializer: REST::StatusEditSerializer
+    render json: status_edits, each_serializer: REST::StatusEditSerializer
   end
 
   private
 
+  def status_edits
+    @status.edits.includes(:account, status: [:account]).to_a.presence || [@status.build_snapshot(at_time: @status.edited_at || @status.created_at)]
+  end
+
   def set_status
     @status = Status.find(params[:status_id])
     authorize @status, :show?
diff --git a/spec/controllers/api/v1/statuses/histories_controller_spec.rb b/spec/controllers/api/v1/statuses/histories_controller_spec.rb
index 00677f1d2c..99384c8ed5 100644
--- a/spec/controllers/api/v1/statuses/histories_controller_spec.rb
+++ b/spec/controllers/api/v1/statuses/histories_controller_spec.rb
@@ -23,6 +23,7 @@ describe Api::V1::Statuses::HistoriesController do
 
       it 'returns http success' do
         expect(response).to have_http_status(200)
+        expect(body_as_json.size).to_not be 0
       end
     end
   end

From a8c1c8bd377263677bfb654513a4160caeac77bb Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Thu, 22 Jun 2023 17:54:43 +0200
Subject: [PATCH 27/33] Fix j/k keyboard shortcuts on some status lists
 (#25554)

---
 .../mastodon/features/bookmarked_statuses/index.jsx           | 3 ++-
 app/javascript/mastodon/features/explore/statuses.jsx         | 3 ++-
 .../mastodon/features/favourited_statuses/index.jsx           | 3 ++-
 app/javascript/mastodon/features/pinned_statuses/index.jsx    | 4 +++-
 app/javascript/mastodon/selectors/index.js                    | 4 ++++
 5 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/app/javascript/mastodon/features/bookmarked_statuses/index.jsx b/app/javascript/mastodon/features/bookmarked_statuses/index.jsx
index 795b859ce4..936dee12e3 100644
--- a/app/javascript/mastodon/features/bookmarked_statuses/index.jsx
+++ b/app/javascript/mastodon/features/bookmarked_statuses/index.jsx
@@ -15,13 +15,14 @@ import { addColumn, removeColumn, moveColumn } from 'mastodon/actions/columns';
 import ColumnHeader from 'mastodon/components/column_header';
 import StatusList from 'mastodon/components/status_list';
 import Column from 'mastodon/features/ui/components/column';
+import { getStatusList } from 'mastodon/selectors';
 
 const messages = defineMessages({
   heading: { id: 'column.bookmarks', defaultMessage: 'Bookmarks' },
 });
 
 const mapStateToProps = state => ({
-  statusIds: state.getIn(['status_lists', 'bookmarks', 'items']),
+  statusIds: getStatusList(state, 'bookmarks'),
   isLoading: state.getIn(['status_lists', 'bookmarks', 'isLoading'], true),
   hasMore: !!state.getIn(['status_lists', 'bookmarks', 'next']),
 });
diff --git a/app/javascript/mastodon/features/explore/statuses.jsx b/app/javascript/mastodon/features/explore/statuses.jsx
index abacf333dd..c90273714a 100644
--- a/app/javascript/mastodon/features/explore/statuses.jsx
+++ b/app/javascript/mastodon/features/explore/statuses.jsx
@@ -11,9 +11,10 @@ import { debounce } from 'lodash';
 import { fetchTrendingStatuses, expandTrendingStatuses } from 'mastodon/actions/trends';
 import DismissableBanner from 'mastodon/components/dismissable_banner';
 import StatusList from 'mastodon/components/status_list';
+import { getStatusList } from 'mastodon/selectors';
 
 const mapStateToProps = state => ({
-  statusIds: state.getIn(['status_lists', 'trending', 'items']),
+  statusIds: getStatusList(state, 'trending'),
   isLoading: state.getIn(['status_lists', 'trending', 'isLoading'], true),
   hasMore: !!state.getIn(['status_lists', 'trending', 'next']),
 });
diff --git a/app/javascript/mastodon/features/favourited_statuses/index.jsx b/app/javascript/mastodon/features/favourited_statuses/index.jsx
index 4902ddc28b..abce7ac053 100644
--- a/app/javascript/mastodon/features/favourited_statuses/index.jsx
+++ b/app/javascript/mastodon/features/favourited_statuses/index.jsx
@@ -15,13 +15,14 @@ import { fetchFavouritedStatuses, expandFavouritedStatuses } from 'mastodon/acti
 import ColumnHeader from 'mastodon/components/column_header';
 import StatusList from 'mastodon/components/status_list';
 import Column from 'mastodon/features/ui/components/column';
+import { getStatusList } from 'mastodon/selectors';
 
 const messages = defineMessages({
   heading: { id: 'column.favourites', defaultMessage: 'Favourites' },
 });
 
 const mapStateToProps = state => ({
-  statusIds: state.getIn(['status_lists', 'favourites', 'items']),
+  statusIds: getStatusList(state, 'favourites'),
   isLoading: state.getIn(['status_lists', 'favourites', 'isLoading'], true),
   hasMore: !!state.getIn(['status_lists', 'favourites', 'next']),
 });
diff --git a/app/javascript/mastodon/features/pinned_statuses/index.jsx b/app/javascript/mastodon/features/pinned_statuses/index.jsx
index a93e82cfae..f09d5471e3 100644
--- a/app/javascript/mastodon/features/pinned_statuses/index.jsx
+++ b/app/javascript/mastodon/features/pinned_statuses/index.jsx
@@ -8,6 +8,8 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
 import ImmutablePureComponent from 'react-immutable-pure-component';
 import { connect } from 'react-redux';
 
+import { getStatusList } from 'mastodon/selectors';
+
 import { fetchPinnedStatuses } from '../../actions/pin_statuses';
 import ColumnBackButtonSlim from '../../components/column_back_button_slim';
 import StatusList from '../../components/status_list';
@@ -18,7 +20,7 @@ const messages = defineMessages({
 });
 
 const mapStateToProps = state => ({
-  statusIds: state.getIn(['status_lists', 'pins', 'items']),
+  statusIds: getStatusList(state, 'pins'),
   hasMore: !!state.getIn(['status_lists', 'pins', 'next']),
 });
 
diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js
index b67734316b..f92e7fe48d 100644
--- a/app/javascript/mastodon/selectors/index.js
+++ b/app/javascript/mastodon/selectors/index.js
@@ -137,3 +137,7 @@ export const getAccountHidden = createSelector([
 ], (hidden, followingOrRequested, isSelf) => {
   return hidden && !(isSelf || followingOrRequested);
 });
+
+export const getStatusList = createSelector([
+  (state, type) => state.getIn(['status_lists', type, 'items']),
+], (items) => items.toList());

From c9cd634184e7e983931789598ad0f2c5b9106371 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Thu, 22 Jun 2023 12:46:32 -0400
Subject: [PATCH 28/33] Use default `bootsnap/setup` in boot.rb (#25502)

---
 config/boot.rb | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/config/boot.rb b/config/boot.rb
index 4e379e7db5..3a1d1d6d24 100644
--- a/config/boot.rb
+++ b/config/boot.rb
@@ -6,12 +6,4 @@ end
 ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
 
 require 'bundler/setup' # Set up gems listed in the Gemfile.
-require 'bootsnap' # Speed up boot time by caching expensive operations.
-
-Bootsnap.setup(
-  cache_dir:            File.expand_path('../tmp/cache', __dir__),
-  development_mode:     ENV.fetch('RAILS_ENV', 'development') == 'development',
-  load_path_cache:      true,
-  compile_cache_iseq:   false,
-  compile_cache_yaml:   false
-)
+require 'bootsnap/setup' # Speed up boot time by caching expensive operations.

From 1d622c80332916dbfe51b7c41ce12e5761364703 Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Thu, 22 Jun 2023 18:46:43 +0200
Subject: [PATCH 29/33] Add POST /api/v1/conversations/:id/unread (#25509)

---
 app/controllers/api/v1/conversations_controller.rb | 5 +++++
 config/routes/api.rb                               | 1 +
 2 files changed, 6 insertions(+)

diff --git a/app/controllers/api/v1/conversations_controller.rb b/app/controllers/api/v1/conversations_controller.rb
index 63644f85e2..b3ca2f7903 100644
--- a/app/controllers/api/v1/conversations_controller.rb
+++ b/app/controllers/api/v1/conversations_controller.rb
@@ -19,6 +19,11 @@ class Api::V1::ConversationsController < Api::BaseController
     render json: @conversation, serializer: REST::ConversationSerializer
   end
 
+  def unread
+    @conversation.update!(unread: true)
+    render json: @conversation, serializer: REST::ConversationSerializer
+  end
+
   def destroy
     @conversation.destroy!
     render_empty
diff --git a/config/routes/api.rb b/config/routes/api.rb
index 19c583b3e1..a10e8058a5 100644
--- a/config/routes/api.rb
+++ b/config/routes/api.rb
@@ -81,6 +81,7 @@ namespace :api, format: false do
     resources :conversations, only: [:index, :destroy] do
       member do
         post :read
+        post :unread
       end
     end
 

From 00ec43914aeded13bb369483f795fdb24dfb4b42 Mon Sep 17 00:00:00 2001
From: Eugen Rochko <eugen@zeonfederated.com>
Date: Thu, 22 Jun 2023 22:48:40 +0100
Subject: [PATCH 30/33] Add onboarding prompt when home feed too slow in web UI
 (#25267)

---
 app/javascript/images/friends-cropped.png     | Bin 0 -> 193366 bytes
 .../features/community_timeline/index.jsx     |   5 +-
 .../mastodon/features/explore/links.jsx       |   2 +-
 .../mastodon/features/explore/statuses.jsx    |   2 +-
 .../mastodon/features/explore/tags.jsx        |   2 +-
 .../components/explore_prompt.jsx             |  23 ++++++
 .../mastodon/features/home_timeline/index.jsx |  41 +++++++++-
 .../features/public_timeline/index.jsx        |   5 +-
 app/javascript/mastodon/locales/en.json       |  13 ++--
 .../styles/mastodon-light/diff.scss           |   5 --
 .../styles/mastodon/components.scss           |  72 ++++++++++++++----
 11 files changed, 131 insertions(+), 39 deletions(-)
 create mode 100755 app/javascript/images/friends-cropped.png
 create mode 100644 app/javascript/mastodon/features/home_timeline/components/explore_prompt.jsx

diff --git a/app/javascript/images/friends-cropped.png b/app/javascript/images/friends-cropped.png
new file mode 100755
index 0000000000000000000000000000000000000000..b13e16a5809abad8f2ee906025ed99e4ec79d129
GIT binary patch
literal 193366
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

literal 0
HcmV?d00001

diff --git a/app/javascript/mastodon/features/community_timeline/index.jsx b/app/javascript/mastodon/features/community_timeline/index.jsx
index a18da2f642..7e3b9babe9 100644
--- a/app/javascript/mastodon/features/community_timeline/index.jsx
+++ b/app/javascript/mastodon/features/community_timeline/index.jsx
@@ -140,11 +140,8 @@ class CommunityTimeline extends PureComponent {
           <ColumnSettingsContainer columnId={columnId} />
         </ColumnHeader>
 
-        <DismissableBanner id='community_timeline'>
-          <FormattedMessage id='dismissable_banner.community_timeline' defaultMessage='These are the most recent public posts from people whose accounts are hosted by {domain}.' values={{ domain }} />
-        </DismissableBanner>
-
         <StatusListContainer
+          prepend={<DismissableBanner id='community_timeline'><FormattedMessage id='dismissable_banner.community_timeline' defaultMessage='These are the most recent public posts from people whose accounts are hosted by {domain}.' values={{ domain }} /></DismissableBanner>}
           trackScroll={!pinned}
           scrollKey={`community_timeline-${columnId}`}
           timelineId={`community${onlyMedia ? ':media' : ''}`}
diff --git a/app/javascript/mastodon/features/explore/links.jsx b/app/javascript/mastodon/features/explore/links.jsx
index df91337fdd..49c667f027 100644
--- a/app/javascript/mastodon/features/explore/links.jsx
+++ b/app/javascript/mastodon/features/explore/links.jsx
@@ -35,7 +35,7 @@ class Links extends PureComponent {
 
     const banner = (
       <DismissableBanner id='explore/links'>
-        <FormattedMessage id='dismissable_banner.explore_links' defaultMessage='These news stories are being talked about by people on this and other servers of the decentralized network right now.' />
+        <FormattedMessage id='dismissable_banner.explore_links' defaultMessage='These are news stories being shared the most on the social web today. Newer news stories posted by more different people are ranked higher.' />
       </DismissableBanner>
     );
 
diff --git a/app/javascript/mastodon/features/explore/statuses.jsx b/app/javascript/mastodon/features/explore/statuses.jsx
index c90273714a..eb2fe777a6 100644
--- a/app/javascript/mastodon/features/explore/statuses.jsx
+++ b/app/javascript/mastodon/features/explore/statuses.jsx
@@ -47,7 +47,7 @@ class Statuses extends PureComponent {
     return (
       <>
         <DismissableBanner id='explore/statuses'>
-          <FormattedMessage id='dismissable_banner.explore_statuses' defaultMessage='These posts from this and other servers in the decentralized network are gaining traction on this server right now.' />
+          <FormattedMessage id='dismissable_banner.explore_statuses' defaultMessage='These are posts from across the social web that are gaining traction today. Newer posts with more boosts and favourites are ranked higher.' />
         </DismissableBanner>
 
         <StatusList
diff --git a/app/javascript/mastodon/features/explore/tags.jsx b/app/javascript/mastodon/features/explore/tags.jsx
index ba6f31cd0a..f558b48a60 100644
--- a/app/javascript/mastodon/features/explore/tags.jsx
+++ b/app/javascript/mastodon/features/explore/tags.jsx
@@ -34,7 +34,7 @@ class Tags extends PureComponent {
 
     const banner = (
       <DismissableBanner id='explore/tags'>
-        <FormattedMessage id='dismissable_banner.explore_tags' defaultMessage='These hashtags are gaining traction among people on this and other servers of the decentralized network right now.' />
+        <FormattedMessage id='dismissable_banner.explore_tags' defaultMessage='These are hashtags that are gaining traction on the social web today. Hashtags that are used by more different people are ranked higher.' />
       </DismissableBanner>
     );
 
diff --git a/app/javascript/mastodon/features/home_timeline/components/explore_prompt.jsx b/app/javascript/mastodon/features/home_timeline/components/explore_prompt.jsx
new file mode 100644
index 0000000000..172f1a96c8
--- /dev/null
+++ b/app/javascript/mastodon/features/home_timeline/components/explore_prompt.jsx
@@ -0,0 +1,23 @@
+import React from 'react';
+
+import { FormattedMessage } from 'react-intl';
+
+import { Link } from 'react-router-dom';
+
+import background from 'mastodon/../images/friends-cropped.png';
+import DismissableBanner from 'mastodon/components/dismissable_banner';
+
+
+export const ExplorePrompt = () => (
+  <DismissableBanner id='home.explore_prompt'>
+    <img src={background} alt='' className='dismissable-banner__background-image' />
+
+    <h1><FormattedMessage id='home.explore_prompt.title' defaultMessage='This is your home base within Mastodon.' /></h1>
+    <p><FormattedMessage id='home.explore_prompt.body' defaultMessage="Your home feed will have a mix of posts from the hashtags you've chosen to follow, the people you've chosen to follow, and the posts they boost. It's looking pretty quiet right now, so how about:" /></p>
+
+    <div className='dismissable-banner__message__actions'>
+      <Link to='/explore' className='button'><FormattedMessage id='home.actions.go_to_explore' defaultMessage="See what's trending" /></Link>
+      <Link to='/explore/suggestions' className='button button-tertiary'><FormattedMessage id='home.actions.go_to_suggestions' defaultMessage='Find people to follow' /></Link>
+    </div>
+  </DismissableBanner>
+);
\ No newline at end of file
diff --git a/app/javascript/mastodon/features/home_timeline/index.jsx b/app/javascript/mastodon/features/home_timeline/index.jsx
index c9fe078755..f936e8327e 100644
--- a/app/javascript/mastodon/features/home_timeline/index.jsx
+++ b/app/javascript/mastodon/features/home_timeline/index.jsx
@@ -5,9 +5,10 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
 
 import classNames from 'classnames';
 import { Helmet } from 'react-helmet';
-import { Link } from 'react-router-dom';
 
+import { List as ImmutableList } from 'immutable';
 import { connect } from 'react-redux';
+import { createSelector } from 'reselect';
 
 import { fetchAnnouncements, toggleShowAnnouncements } from 'mastodon/actions/announcements';
 import { IconWithBadge } from 'mastodon/components/icon_with_badge';
@@ -20,6 +21,7 @@ import Column from '../../components/column';
 import ColumnHeader from '../../components/column_header';
 import StatusListContainer from '../ui/containers/status_list_container';
 
+import { ExplorePrompt } from './components/explore_prompt';
 import ColumnSettingsContainer from './containers/column_settings_container';
 
 const messages = defineMessages({
@@ -28,12 +30,36 @@ const messages = defineMessages({
   hide_announcements: { id: 'home.hide_announcements', defaultMessage: 'Hide announcements' },
 });
 
+const getHomeFeedSpeed = createSelector([
+  state => state.getIn(['timelines', 'home', 'items'], ImmutableList()),
+  state => state.get('statuses'),
+], (statusIds, statusMap) => {
+  const statuses = statusIds.take(20).map(id => statusMap.get(id));
+  const uniqueAccountIds = (new Set(statuses.map(status => status.get('account')).toArray())).size;
+  const oldest = new Date(statuses.getIn([statuses.size - 1, 'created_at'], 0));
+  const newest = new Date(statuses.getIn([0, 'created_at'], 0));
+  const averageGap = (newest - oldest) / (1000 * (statuses.size + 1)); // Average gap between posts on first page in seconds
+
+  return {
+    unique: uniqueAccountIds,
+    gap: averageGap,
+    newest,
+  };
+});
+
+const homeTooSlow = createSelector(getHomeFeedSpeed, speed =>
+  speed.unique < 5 // If there are fewer than 5 different accounts visible
+  || speed.gap > (30 * 60) // If the average gap between posts is more than 20 minutes
+  || (Date.now() - speed.newest) > (1000 * 3600) // If the most recent post is from over an hour ago
+);
+
 const mapStateToProps = state => ({
   hasUnread: state.getIn(['timelines', 'home', 'unread']) > 0,
   isPartial: state.getIn(['timelines', 'home', 'isPartial']),
   hasAnnouncements: !state.getIn(['announcements', 'items']).isEmpty(),
   unreadAnnouncements: state.getIn(['announcements', 'items']).count(item => !item.get('read')),
   showAnnouncements: state.getIn(['announcements', 'show']),
+  tooSlow: homeTooSlow(state),
 });
 
 class HomeTimeline extends PureComponent {
@@ -52,6 +78,7 @@ class HomeTimeline extends PureComponent {
     hasAnnouncements: PropTypes.bool,
     unreadAnnouncements: PropTypes.number,
     showAnnouncements: PropTypes.bool,
+    tooSlow: PropTypes.bool,
   };
 
   handlePin = () => {
@@ -121,11 +148,11 @@ class HomeTimeline extends PureComponent {
   };
 
   render () {
-    const { intl, hasUnread, columnId, multiColumn, hasAnnouncements, unreadAnnouncements, showAnnouncements } = this.props;
+    const { intl, hasUnread, columnId, multiColumn, tooSlow, hasAnnouncements, unreadAnnouncements, showAnnouncements } = this.props;
     const pinned = !!columnId;
     const { signedIn } = this.context.identity;
 
-    let announcementsButton = null;
+    let announcementsButton, banner;
 
     if (hasAnnouncements) {
       announcementsButton = (
@@ -141,6 +168,10 @@ class HomeTimeline extends PureComponent {
       );
     }
 
+    if (tooSlow) {
+      banner = <ExplorePrompt />;
+    }
+
     return (
       <Column bindToDocument={!multiColumn} ref={this.setRef} label={intl.formatMessage(messages.title)}>
         <ColumnHeader
@@ -160,11 +191,13 @@ class HomeTimeline extends PureComponent {
 
         {signedIn ? (
           <StatusListContainer
+            prepend={banner}
+            alwaysPrepend
             trackScroll={!pinned}
             scrollKey={`home_timeline-${columnId}`}
             onLoadMore={this.handleLoadMore}
             timelineId='home'
-            emptyMessage={<FormattedMessage id='empty_column.home' defaultMessage='Your home timeline is empty! Follow more people to fill it up. {suggestions}' values={{ suggestions: <Link to='/start'><FormattedMessage id='empty_column.home.suggestions' defaultMessage='See some suggestions' /></Link> }} />}
+            emptyMessage={<FormattedMessage id='empty_column.home' defaultMessage='Your home timeline is empty! Follow more people to fill it up.' />}
             bindToDocument={!multiColumn}
           />
         ) : <NotSignedInIndicator />}
diff --git a/app/javascript/mastodon/features/public_timeline/index.jsx b/app/javascript/mastodon/features/public_timeline/index.jsx
index 01b02d4024..d77b76a63e 100644
--- a/app/javascript/mastodon/features/public_timeline/index.jsx
+++ b/app/javascript/mastodon/features/public_timeline/index.jsx
@@ -142,11 +142,8 @@ class PublicTimeline extends PureComponent {
           <ColumnSettingsContainer columnId={columnId} />
         </ColumnHeader>
 
-        <DismissableBanner id='public_timeline'>
-          <FormattedMessage id='dismissable_banner.public_timeline' defaultMessage='These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.' />
-        </DismissableBanner>
-
         <StatusListContainer
+          prepend={<DismissableBanner id='public_timeline'><FormattedMessage id='dismissable_banner.public_timeline' defaultMessage='These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.' /></DismissableBanner>}
           timelineId={`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`}
           onLoadMore={this.handleLoadMore}
           trackScroll={!pinned}
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index 9f7ffad66c..fc46f9c5e6 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -197,9 +197,9 @@
   "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
   "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
   "dismissable_banner.dismiss": "Dismiss",
-  "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
-  "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.",
-  "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
+  "dismissable_banner.explore_links": "These are news stories being shared the most on the social web today. Newer news stories posted by more different people are ranked higher.",
+  "dismissable_banner.explore_statuses": "These are posts from across the social web that are gaining traction today. Newer posts with more boosts and favourites are ranked higher.",
+  "dismissable_banner.explore_tags": "These are hashtags that are gaining traction on the social web today. Hashtags that are used by more different people are ranked higher.",
   "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.",
   "embed.instructions": "Embed this post on your website by copying the code below.",
   "embed.preview": "Here is what it will look like:",
@@ -232,8 +232,7 @@
   "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
   "empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.",
   "empty_column.hashtag": "There is nothing in this hashtag yet.",
-  "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}",
-  "empty_column.home.suggestions": "See some suggestions",
+  "empty_column.home": "Your home timeline is empty! Follow more people to fill it up.",
   "empty_column.list": "There is nothing in this list yet. When members of this list publish new posts, they will appear here.",
   "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
   "empty_column.mutes": "You haven't muted any users yet.",
@@ -292,9 +291,13 @@
   "hashtag.column_settings.tag_toggle": "Include additional tags for this column",
   "hashtag.follow": "Follow hashtag",
   "hashtag.unfollow": "Unfollow hashtag",
+  "home.actions.go_to_explore": "See what's trending",
+  "home.actions.go_to_suggestions": "Find people to follow",
   "home.column_settings.basic": "Basic",
   "home.column_settings.show_reblogs": "Show boosts",
   "home.column_settings.show_replies": "Show replies",
+  "home.explore_prompt.body": "Your home feed will have a mix of posts from the hashtags you've chosen to follow, the people you've chosen to follow, and the posts they boost. It's looking pretty quiet right now, so how about:",
+  "home.explore_prompt.title": "This is your home base within Mastodon.",
   "home.hide_announcements": "Hide announcements",
   "home.show_announcements": "Show announcements",
   "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.",
diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss
index 7498477caa..91828d408a 100644
--- a/app/javascript/styles/mastodon-light/diff.scss
+++ b/app/javascript/styles/mastodon-light/diff.scss
@@ -653,11 +653,6 @@ html {
   border: 1px solid lighten($ui-base-color, 8%);
 }
 
-.dismissable-banner {
-  border-left: 1px solid lighten($ui-base-color, 8%);
-  border-right: 1px solid lighten($ui-base-color, 8%);
-}
-
 .status__content,
 .reply-indicator__content {
   a {
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index a9c19a231f..c966eb5ee3 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -8695,27 +8695,71 @@ noscript {
 }
 
 .dismissable-banner {
-  background: $ui-base-color;
-  border-bottom: 1px solid lighten($ui-base-color, 8%);
-  display: flex;
-  align-items: center;
-  gap: 30px;
+  position: relative;
+  margin: 10px;
+  margin-bottom: 5px;
+  border-radius: 8px;
+  border: 1px solid $highlight-text-color;
+  background: rgba($highlight-text-color, 0.15);
+  padding-inline-end: 45px;
+  overflow: hidden;
+
+  &__background-image {
+    width: 125%;
+    position: absolute;
+    bottom: -25%;
+    inset-inline-end: -25%;
+    z-index: -1;
+    opacity: 0.15;
+    mix-blend-mode: luminosity;
+  }
 
   &__message {
     flex: 1 1 auto;
-    padding: 20px 15px;
-    cursor: default;
-    font-size: 14px;
-    line-height: 18px;
+    padding: 15px;
+    font-size: 15px;
+    line-height: 22px;
+    font-weight: 500;
     color: $primary-text-color;
+
+    p {
+      margin-bottom: 15px;
+
+      &:last-child {
+        margin-bottom: 0;
+      }
+    }
+
+    h1 {
+      color: $highlight-text-color;
+      font-size: 22px;
+      line-height: 33px;
+      font-weight: 700;
+      margin-bottom: 15px;
+    }
+
+    &__actions {
+      display: flex;
+      align-items: center;
+      gap: 4px;
+      margin-top: 30px;
+    }
+
+    .button-tertiary {
+      background: rgba($ui-base-color, 0.15);
+      backdrop-filter: blur(8px);
+    }
   }
 
   &__action {
-    padding: 15px;
-    flex: 0 0 auto;
-    display: flex;
-    align-items: center;
-    justify-content: center;
+    position: absolute;
+    inset-inline-end: 0;
+    top: 0;
+    padding: 10px;
+
+    .icon-button {
+      color: $highlight-text-color;
+    }
   }
 }
 

From 0842a68532b1d1f5732e0ba6f2c62b5522114167 Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Fri, 23 Jun 2023 14:44:54 +0200
Subject: [PATCH 31/33] Remove unique accounts condition from Home onboarding
 prompt (#25556)

---
 app/javascript/mastodon/features/home_timeline/index.jsx | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/app/javascript/mastodon/features/home_timeline/index.jsx b/app/javascript/mastodon/features/home_timeline/index.jsx
index f936e8327e..389efcc875 100644
--- a/app/javascript/mastodon/features/home_timeline/index.jsx
+++ b/app/javascript/mastodon/features/home_timeline/index.jsx
@@ -14,6 +14,7 @@ import { fetchAnnouncements, toggleShowAnnouncements } from 'mastodon/actions/an
 import { IconWithBadge } from 'mastodon/components/icon_with_badge';
 import { NotSignedInIndicator } from 'mastodon/components/not_signed_in_indicator';
 import AnnouncementsContainer from 'mastodon/features/getting_started/containers/announcements_container';
+import { me } from 'mastodon/initial_state';
 
 import { addColumn, removeColumn, moveColumn } from '../../actions/columns';
 import { expandHomeTimeline } from '../../actions/timelines';
@@ -34,22 +35,19 @@ const getHomeFeedSpeed = createSelector([
   state => state.getIn(['timelines', 'home', 'items'], ImmutableList()),
   state => state.get('statuses'),
 ], (statusIds, statusMap) => {
-  const statuses = statusIds.take(20).map(id => statusMap.get(id));
-  const uniqueAccountIds = (new Set(statuses.map(status => status.get('account')).toArray())).size;
+  const statuses = statusIds.map(id => statusMap.get(id)).filter(status => status.get('account') !== me).take(20);
   const oldest = new Date(statuses.getIn([statuses.size - 1, 'created_at'], 0));
   const newest = new Date(statuses.getIn([0, 'created_at'], 0));
   const averageGap = (newest - oldest) / (1000 * (statuses.size + 1)); // Average gap between posts on first page in seconds
 
   return {
-    unique: uniqueAccountIds,
     gap: averageGap,
     newest,
   };
 });
 
 const homeTooSlow = createSelector(getHomeFeedSpeed, speed =>
-  speed.unique < 5 // If there are fewer than 5 different accounts visible
-  || speed.gap > (30 * 60) // If the average gap between posts is more than 20 minutes
+  speed.gap > (30 * 60) // If the average gap between posts is more than 20 minutes
   || (Date.now() - speed.newest) > (1000 * 3600) // If the most recent post is from over an hour ago
 );
 

From a985d587e13494b78ef2879e4d97f78a2df693db Mon Sep 17 00:00:00 2001
From: Eugen Rochko <eugen@zeonfederated.com>
Date: Fri, 23 Jun 2023 16:34:27 +0200
Subject: [PATCH 32/33] Change labels and styles on the onboarding screen in
 web UI (#25559)

---
 .../mastodon/components/account.jsx           | 14 ++++-
 .../features/onboarding/components/step.jsx   | 10 +--
 .../mastodon/features/onboarding/follows.jsx  | 24 ++-----
 .../mastodon/features/onboarding/index.jsx    | 14 +++--
 .../mastodon/features/onboarding/share.jsx    |  4 +-
 app/javascript/mastodon/locales/en.json       | 28 ++++-----
 .../styles/mastodon/components.scss           | 63 ++++++++++++++++---
 7 files changed, 101 insertions(+), 56 deletions(-)

diff --git a/app/javascript/mastodon/components/account.jsx b/app/javascript/mastodon/components/account.jsx
index 0f3b85388c..dd5aff1d8e 100644
--- a/app/javascript/mastodon/components/account.jsx
+++ b/app/javascript/mastodon/components/account.jsx
@@ -1,6 +1,6 @@
 import PropTypes from 'prop-types';
 
-import { defineMessages, injectIntl } from 'react-intl';
+import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
 
 import classNames from 'classnames';
 import { Link } from 'react-router-dom';
@@ -49,6 +49,7 @@ class Account extends ImmutablePureComponent {
     actionTitle: PropTypes.string,
     defaultAction: PropTypes.string,
     onActionClick: PropTypes.func,
+    withBio: PropTypes.bool,
   };
 
   static defaultProps = {
@@ -80,7 +81,7 @@ class Account extends ImmutablePureComponent {
   };
 
   render () {
-    const { account, intl, hidden, onActionClick, actionIcon, actionTitle, defaultAction, size, minimal } = this.props;
+    const { account, intl, hidden, withBio, onActionClick, actionIcon, actionTitle, defaultAction, size, minimal } = this.props;
 
     if (!account) {
       return <EmptyAccount size={size} minimal={minimal} />;
@@ -171,6 +172,15 @@ class Account extends ImmutablePureComponent {
             </div>
           )}
         </div>
+
+        {withBio && (account.get('note').length > 0 ? (
+          <div
+            className='account__note translate'
+            dangerouslySetInnerHTML={{ __html: account.get('note_emojified') }}
+          />
+        ) : (
+          <div className='account__note account__note--missing'><FormattedMessage id='account.no_bio' defaultMessage='No description provided.' /></div>
+        ))}
       </div>
     );
   }
diff --git a/app/javascript/mastodon/features/onboarding/components/step.jsx b/app/javascript/mastodon/features/onboarding/components/step.jsx
index 0f478f26a3..379f433040 100644
--- a/app/javascript/mastodon/features/onboarding/components/step.jsx
+++ b/app/javascript/mastodon/features/onboarding/components/step.jsx
@@ -3,6 +3,8 @@ import PropTypes from 'prop-types';
 import { Check } from 'mastodon/components/check';
 import { Icon }  from 'mastodon/components/icon';
 
+import ArrowSmallRight from './arrow_small_right';
+
 const Step = ({ label, description, icon, completed, onClick, href }) => {
   const content = (
     <>
@@ -15,11 +17,9 @@ const Step = ({ label, description, icon, completed, onClick, href }) => {
         <p>{description}</p>
       </div>
 
-      {completed && (
-        <div className='onboarding__steps__item__progress'>
-          <Check />
-        </div>
-      )}
+      <div className={completed ? 'onboarding__steps__item__progress' : 'onboarding__steps__item__go'}>
+        {completed ? <Check /> : <ArrowSmallRight />}
+      </div>
     </>
   );
 
diff --git a/app/javascript/mastodon/features/onboarding/follows.jsx b/app/javascript/mastodon/features/onboarding/follows.jsx
index 8b4ad0b087..472a87f5ec 100644
--- a/app/javascript/mastodon/features/onboarding/follows.jsx
+++ b/app/javascript/mastodon/features/onboarding/follows.jsx
@@ -12,20 +12,11 @@ import Column from 'mastodon/components/column';
 import ColumnBackButton from 'mastodon/components/column_back_button';
 import { EmptyAccount } from 'mastodon/components/empty_account';
 import Account from 'mastodon/containers/account_container';
-import { me } from 'mastodon/initial_state';
-import { makeGetAccount } from 'mastodon/selectors';
 
-import ProgressIndicator from './components/progress_indicator';
-
-const mapStateToProps = () => {
-  const getAccount = makeGetAccount();
-
-  return state => ({
-    account: getAccount(state, me),
-    suggestions: state.getIn(['suggestions', 'items']),
-    isLoading: state.getIn(['suggestions', 'isLoading']),
-  });
-};
+const mapStateToProps = state => ({
+  suggestions: state.getIn(['suggestions', 'items']),
+  isLoading: state.getIn(['suggestions', 'isLoading']),
+});
 
 class Follows extends PureComponent {
 
@@ -33,7 +24,6 @@ class Follows extends PureComponent {
     onBack: PropTypes.func,
     dispatch: PropTypes.func.isRequired,
     suggestions: ImmutablePropTypes.list,
-    account: ImmutablePropTypes.map,
     isLoading: PropTypes.bool,
     multiColumn: PropTypes.bool,
   };
@@ -49,7 +39,7 @@ class Follows extends PureComponent {
   }
 
   render () {
-    const { onBack, isLoading, suggestions, account, multiColumn } = this.props;
+    const { onBack, isLoading, suggestions, multiColumn } = this.props;
 
     let loadedContent;
 
@@ -58,7 +48,7 @@ class Follows extends PureComponent {
     } else if (suggestions.isEmpty()) {
       loadedContent = <div className='follow-recommendations__empty'><FormattedMessage id='onboarding.follows.empty' defaultMessage='Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.' /></div>;
     } else {
-      loadedContent = suggestions.map(suggestion => <Account id={suggestion.get('account')} key={suggestion.get('account')} />);
+      loadedContent = suggestions.map(suggestion => <Account id={suggestion.get('account')} key={suggestion.get('account')} withBio />);
     }
 
     return (
@@ -71,8 +61,6 @@ class Follows extends PureComponent {
             <p><FormattedMessage id='onboarding.follows.lead' defaultMessage='You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!' /></p>
           </div>
 
-          <ProgressIndicator steps={7} completed={account.get('following_count') * 1} />
-
           <div className='follow-recommendations'>
             {loadedContent}
           </div>
diff --git a/app/javascript/mastodon/features/onboarding/index.jsx b/app/javascript/mastodon/features/onboarding/index.jsx
index 79291b3d08..41d499f684 100644
--- a/app/javascript/mastodon/features/onboarding/index.jsx
+++ b/app/javascript/mastodon/features/onboarding/index.jsx
@@ -18,6 +18,7 @@ import { closeOnboarding } from 'mastodon/actions/onboarding';
 import Column from 'mastodon/features/ui/components/column';
 import { me } from 'mastodon/initial_state';
 import { makeGetAccount } from 'mastodon/selectors';
+import { assetHost } from 'mastodon/utils/config';
 
 import ArrowSmallRight from './components/arrow_small_right';
 import Step from './components/step';
@@ -121,21 +122,22 @@ class Onboarding extends ImmutablePureComponent {
           <div className='onboarding__steps'>
             <Step onClick={this.handleProfileClick} href='/settings/profile' completed={(!account.get('avatar').endsWith('missing.png')) || (account.get('display_name').length > 0 && account.get('note').length > 0)} icon='address-book-o' label={<FormattedMessage id='onboarding.steps.setup_profile.title' defaultMessage='Customize your profile' />} description={<FormattedMessage id='onboarding.steps.setup_profile.body' defaultMessage='Others are more likely to interact with you with a filled out profile.' />} />
             <Step onClick={this.handleFollowClick} completed={(account.get('following_count') * 1) >= 7} icon='user-plus' label={<FormattedMessage id='onboarding.steps.follow_people.title' defaultMessage='Find at least {count, plural, one {one person} other {# people}} to follow' values={{ count: 7 }} />} description={<FormattedMessage id='onboarding.steps.follow_people.body' defaultMessage="You curate your own home feed. Let's fill it with interesting people." />} />
-            <Step onClick={this.handleComposeClick} completed={(account.get('statuses_count') * 1) >= 1} icon='pencil-square-o' label={<FormattedMessage id='onboarding.steps.publish_status.title' defaultMessage='Make your first post' />} description={<FormattedMessage id='onboarding.steps.publish_status.body' defaultMessage='Say hello to the world.' />} />
+            <Step onClick={this.handleComposeClick} completed={(account.get('statuses_count') * 1) >= 1} icon='pencil-square-o' label={<FormattedMessage id='onboarding.steps.publish_status.title' defaultMessage='Make your first post' />} description={<FormattedMessage id='onboarding.steps.publish_status.body' defaultMessage='Say hello to the world.' values={{ emoji: <img className='emojione' alt='🐘' src={`${assetHost}/emoji/1f418.svg`} /> }} />} />
             <Step onClick={this.handleShareClick} completed={shareClicked} icon='copy' label={<FormattedMessage id='onboarding.steps.share_profile.title' defaultMessage='Share your profile' />} description={<FormattedMessage id='onboarding.steps.share_profile.body' defaultMessage='Let your friends know how to find you on Mastodon!' />} />
           </div>
 
-          <p className='onboarding__lead'><FormattedMessage id='onboarding.start.skip' defaultMessage='Want to skip right ahead?' /></p>
+          <p className='onboarding__lead'><FormattedMessage id='onboarding.start.skip' defaultMessage="Don't need help getting started?" /></p>
 
           <div className='onboarding__links'>
             <Link to='/explore' className='onboarding__link'>
+              <FormattedMessage id='onboarding.actions.go_to_explore' defaultMessage='Take me to trending' />
               <ArrowSmallRight />
-              <FormattedMessage id='onboarding.actions.go_to_explore' defaultMessage="See what's trending" />
             </Link>
-          </div>
 
-          <div className='onboarding__footer'>
-            <button className='link-button' onClick={this.handleClose}><FormattedMessage id='onboarding.actions.close' defaultMessage="Don't show this screen again" /></button>
+            <Link to='/home' className='onboarding__link'>
+              <FormattedMessage id='onboarding.actions.go_to_home' defaultMessage='Take me to my home feed' />
+              <ArrowSmallRight />
+            </Link>
           </div>
         </div>
 
diff --git a/app/javascript/mastodon/features/onboarding/share.jsx b/app/javascript/mastodon/features/onboarding/share.jsx
index 6871793026..c5b185a244 100644
--- a/app/javascript/mastodon/features/onboarding/share.jsx
+++ b/app/javascript/mastodon/features/onboarding/share.jsx
@@ -177,13 +177,13 @@ class Share extends PureComponent {
 
           <div className='onboarding__links'>
             <Link to='/home' className='onboarding__link'>
+              <FormattedMessage id='onboarding.actions.go_to_home' defaultMessage='Take me to my home feed' />
               <ArrowSmallRight />
-              <FormattedMessage id='onboarding.actions.go_to_home' defaultMessage='Go to your home feed' />
             </Link>
 
             <Link to='/explore' className='onboarding__link'>
+              <FormattedMessage id='onboarding.actions.go_to_explore' defaultMessage='Take me to trending' />
               <ArrowSmallRight />
-              <FormattedMessage id='onboarding.actions.go_to_explore' defaultMessage="See what's trending" />
             </Link>
           </div>
 
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index fc46f9c5e6..63ab26bc56 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -52,6 +52,7 @@
   "account.mute_notifications_short": "Mute notifications",
   "account.mute_short": "Mute",
   "account.muted": "Muted",
+  "account.no_bio": "No description provided.",
   "account.open_original_page": "Open original page",
   "account.posts": "Posts",
   "account.posts_with_replies": "Posts and replies",
@@ -452,28 +453,27 @@
   "notifications_permission_banner.title": "Never miss a thing",
   "onboarding.action.back": "Take me back",
   "onboarding.actions.back": "Take me back",
-  "onboarding.actions.close": "Don't show this screen again",
-  "onboarding.actions.go_to_explore": "See what's trending",
-  "onboarding.actions.go_to_home": "Go to your home feed",
+  "onboarding.actions.go_to_explore": "Take me to trending",
+  "onboarding.actions.go_to_home": "Take me to my home feed",
   "onboarding.compose.template": "Hello #Mastodon!",
   "onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
-  "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
-  "onboarding.follows.title": "Popular on Mastodon",
+  "onboarding.follows.lead": "Your home feed is the primary way to experience Mastodon. The more people you follow, the more active and interesting it will be. To get you started, here are some suggestions:",
+  "onboarding.follows.title": "Personalize your home feed",
   "onboarding.share.lead": "Let people know how they can find you on Mastodon!",
   "onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
   "onboarding.share.next_steps": "Possible next steps:",
   "onboarding.share.title": "Share your profile",
-  "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": "You're now part of Mastodon, a unique, decentralized social media platform where you—not an algorithm—curate your own experience. Let's get you started on this new social frontier:",
+  "onboarding.start.skip": "Don't need help getting started?",
   "onboarding.start.title": "You've made it!",
-  "onboarding.steps.follow_people.body": "You curate your own home feed. Let's fill it with interesting people.",
-  "onboarding.steps.follow_people.title": "Find at least {count, plural, one {one person} other {# people}} to follow",
-  "onboarding.steps.publish_status.body": "Say hello to the world.",
+  "onboarding.steps.follow_people.body": "Following interesting people is what Mastodon is all about.",
+  "onboarding.steps.follow_people.title": "Personalize your home feed",
+  "onboarding.steps.publish_status.body": "Say hello to the world with text, photos, videos, or polls {emoji}",
   "onboarding.steps.publish_status.title": "Make your first post",
-  "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
-  "onboarding.steps.setup_profile.title": "Customize your profile",
-  "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
-  "onboarding.steps.share_profile.title": "Share your profile",
+  "onboarding.steps.setup_profile.body": "Boost your interactions by having a comprehensive profile.",
+  "onboarding.steps.setup_profile.title": "Personalize your profile",
+  "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon",
+  "onboarding.steps.share_profile.title": "Share your Mastodon profile",
   "onboarding.tips.2fa": "<strong>Did you know?</strong> You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!",
   "onboarding.tips.accounts_from_other_servers": "<strong>Did you know?</strong> Since Mastodon is decentralized, some profiles you come across will be hosted on servers other than yours. And yet you can interact with them seamlessly! Their server is in the second half of their username!",
   "onboarding.tips.migration": "<strong>Did you know?</strong> If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index c966eb5ee3..81dee20d33 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -1514,12 +1514,37 @@ body > [data-popper-placement] {
   }
 
   &__note {
+    font-size: 14px;
+    font-weight: 400;
     overflow: hidden;
     text-overflow: ellipsis;
     display: -webkit-box;
-    -webkit-line-clamp: 2;
+    -webkit-line-clamp: 1;
     -webkit-box-orient: vertical;
-    color: $ui-secondary-color;
+    margin-top: 10px;
+    color: $darker-text-color;
+
+    &--missing {
+      color: $dark-text-color;
+    }
+
+    p {
+      margin-bottom: 10px;
+
+      &:last-child {
+        margin-bottom: 0;
+      }
+    }
+
+    a {
+      color: inherit;
+
+      &:hover,
+      &:focus,
+      &:active {
+        text-decoration: none;
+      }
+    }
   }
 }
 
@@ -2617,13 +2642,15 @@ $ui-header-height: 55px;
 .onboarding__link {
   display: flex;
   align-items: center;
+  justify-content: space-between;
   gap: 10px;
   color: $highlight-text-color;
   background: lighten($ui-base-color, 4%);
   border-radius: 8px;
-  padding: 10px;
+  padding: 10px 15px;
   box-sizing: border-box;
-  font-size: 17px;
+  font-size: 14px;
+  font-weight: 500;
   height: 56px;
   text-decoration: none;
 
@@ -2685,6 +2712,7 @@ $ui-header-height: 55px;
     align-items: center;
     gap: 10px;
     padding: 10px;
+    padding-inline-end: 15px;
     margin-bottom: 2px;
     text-decoration: none;
     text-align: start;
@@ -2697,14 +2725,14 @@ $ui-header-height: 55px;
 
     &__icon {
       flex: 0 0 auto;
-      background: $ui-base-color;
       border-radius: 50%;
       display: none;
       align-items: center;
       justify-content: center;
       width: 36px;
       height: 36px;
-      color: $dark-text-color;
+      color: $highlight-text-color;
+      font-size: 1.2rem;
 
       @media screen and (width >= 600px) {
         display: flex;
@@ -2728,16 +2756,33 @@ $ui-header-height: 55px;
       }
     }
 
+    &__go {
+      flex: 0 0 auto;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      width: 21px;
+      height: 21px;
+      color: $highlight-text-color;
+      font-size: 17px;
+
+      svg {
+        height: 1.5em;
+        width: auto;
+      }
+    }
+
     &__description {
       flex: 1 1 auto;
-      line-height: 18px;
+      line-height: 20px;
       white-space: nowrap;
       text-overflow: ellipsis;
       overflow: hidden;
 
       h6 {
-        color: $primary-text-color;
-        font-weight: 700;
+        color: $highlight-text-color;
+        font-weight: 500;
+        font-size: 14px;
         overflow: hidden;
         text-overflow: ellipsis;
       }

From 55e7c08a83547424024bac311d5459cb82cf6dae Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Sat, 24 Jun 2023 17:24:31 +0200
Subject: [PATCH 33/33] Fix verified badge in account lists potentially
 including rel="me" links (#25561)

---
 .../mastodon/components/verified_badge.tsx     | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/app/javascript/mastodon/components/verified_badge.tsx b/app/javascript/mastodon/components/verified_badge.tsx
index 6b421ba42c..9a6adcfa86 100644
--- a/app/javascript/mastodon/components/verified_badge.tsx
+++ b/app/javascript/mastodon/components/verified_badge.tsx
@@ -1,11 +1,27 @@
 import { Icon } from './icon';
 
+const domParser = new DOMParser();
+
+const stripRelMe = (html: string) => {
+  const document = domParser.parseFromString(html, 'text/html').documentElement;
+
+  document.querySelectorAll<HTMLAnchorElement>('a[rel]').forEach((link) => {
+    link.rel = link.rel
+      .split(' ')
+      .filter((x: string) => x !== 'me')
+      .join(' ');
+  });
+
+  const body = document.querySelector('body');
+  return body ? { __html: body.innerHTML } : undefined;
+};
+
 interface Props {
   link: string;
 }
 export const VerifiedBadge: React.FC<Props> = ({ link }) => (
   <span className='verified-badge'>
     <Icon id='check' className='verified-badge__mark' />
-    <span dangerouslySetInnerHTML={{ __html: link }} />
+    <span dangerouslySetInnerHTML={stripRelMe(link)} />
   </span>
 );