From bc6141b085245b31a66134d5bf650133a5ee2138 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Fri, 13 Dec 2019 02:57:32 +0900
Subject: [PATCH 01/39] Bump rubocop from 0.76.0 to 0.77.0 (#12585)

Bumps [rubocop](https://github.com/rubocop-hq/rubocop) from 0.76.0 to 0.77.0.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.76.0...v0.77.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 Gemfile      | 2 +-
 Gemfile.lock | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Gemfile b/Gemfile
index 679c2bcbfb..43696f461a 100644
--- a/Gemfile
+++ b/Gemfile
@@ -134,7 +134,7 @@ group :development do
   gem 'letter_opener', '~> 1.7'
   gem 'letter_opener_web', '~> 1.3'
   gem 'memory_profiler'
-  gem 'rubocop', '~> 0.76', require: false
+  gem 'rubocop', '~> 0.77', require: false
   gem 'rubocop-rails', '~> 2.4', require: false
   gem 'brakeman', '~> 4.7', require: false
   gem 'bundler-audit', '~> 0.6', require: false
diff --git a/Gemfile.lock b/Gemfile.lock
index 09d9e3cc1c..f90ea03e19 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -558,7 +558,7 @@ GEM
       rspec-core (~> 3.0, >= 3.0.0)
       sidekiq (>= 2.4.0)
     rspec-support (3.9.0)
-    rubocop (0.76.0)
+    rubocop (0.77.0)
       jaro_winkler (~> 1.5.1)
       parallel (~> 1.10)
       parser (>= 2.6)
@@ -778,7 +778,7 @@ DEPENDENCIES
   rqrcode (~> 0.10)
   rspec-rails (~> 3.9)
   rspec-sidekiq (~> 3.0)
-  rubocop (~> 0.76)
+  rubocop (~> 0.77)
   rubocop-rails (~> 2.4)
   ruby-progressbar (~> 1.10)
   sanitize (~> 5.1)

From fb17814d4a26419846be56202452fb12ed91d9ae Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Fri, 13 Dec 2019 02:57:44 +0900
Subject: [PATCH 02/39] Bump nokogiri from 1.10.5 to 1.10.7 (#12586)

Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.10.5 to 1.10.7.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.10.5...v1.10.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 Gemfile.lock | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index f90ea03e19..ec268dc8a5 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -388,7 +388,7 @@ GEM
       net-ssh (>= 2.6.5, < 6.0.0)
     net-ssh (5.2.0)
     nio4r (2.5.2)
-    nokogiri (1.10.5)
+    nokogiri (1.10.7)
       mini_portile2 (~> 2.4.0)
     nokogumbo (2.0.1)
       nokogiri (~> 1.8, >= 1.8.4)

From 1c1028321795461cb72a60bb7bc1e3479bb21bb9 Mon Sep 17 00:00:00 2001
From: trwnh <a@trwnh.com>
Date: Thu, 12 Dec 2019 12:50:08 -0600
Subject: [PATCH 03/39] Fix typo in tootctl statuses remove (#12603)

---
 lib/mastodon/statuses_cli.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/mastodon/statuses_cli.rb b/lib/mastodon/statuses_cli.rb
index 7f2fbfa85d..4d9af0a540 100644
--- a/lib/mastodon/statuses_cli.rb
+++ b/lib/mastodon/statuses_cli.rb
@@ -20,7 +20,7 @@ module Mastodon
       by someone locally but no longer are.
 
       This is a computationally heavy procedure that creates extra database
-      indicides before commencing, and removes them afterward.
+      indices before commencing, and removes them afterward.
     LONG_DESC
     def remove
       say('Creating temporary database indices...')

From d5b7a4b116d37e8b87f3ed9ebdc6adf07a088766 Mon Sep 17 00:00:00 2001
From: Sasha Sorokin <dafri.nochiterov8@gmail.com>
Date: Fri, 13 Dec 2019 01:50:23 +0700
Subject: [PATCH 04/39] Avoid using pluralize on moderation pages (#12589)

Pluralize function from Rails framework does not work with other
languages than English, moreover it does not even work properly with
English [1]. Not that the latest applies to this context, it's just
a sign that we best to avoid this function, especially when there are
more reliable ways.

This commit changes how reports pages generated in order to avoid usage
of pluralize function, replacing it with default translation function,
called with given counter. On top of that, we have to make strings
pluralizable, so have to change locale files.

[1]: https://medium.com/@anna7/b3927de2ca8e#6a60
---
 app/views/admin/reports/index.html.haml | 2 +-
 app/views/admin/reports/show.html.haml  | 8 ++++----
 config/locales/ar.yml                   | 3 ---
 config/locales/ca.yml                   | 3 ---
 config/locales/co.yml                   | 3 ---
 config/locales/cs.yml                   | 3 ---
 config/locales/cy.yml                   | 3 ---
 config/locales/da.yml                   | 3 ---
 config/locales/de.yml                   | 3 ---
 config/locales/el.yml                   | 3 ---
 config/locales/en.yml                   | 8 ++++++--
 config/locales/en_GB.yml                | 3 ---
 config/locales/eo.yml                   | 3 ---
 config/locales/es-AR.yml                | 3 ---
 config/locales/es.yml                   | 3 ---
 config/locales/et.yml                   | 3 ---
 config/locales/eu.yml                   | 3 ---
 config/locales/fa.yml                   | 3 ---
 config/locales/fi.yml                   | 3 ---
 config/locales/fr.yml                   | 3 ---
 config/locales/gl.yml                   | 3 ---
 config/locales/hu.yml                   | 3 ---
 config/locales/id.yml                   | 3 ---
 config/locales/it.yml                   | 3 ---
 config/locales/ja.yml                   | 3 ---
 config/locales/ka.yml                   | 3 ---
 config/locales/kk.yml                   | 3 ---
 config/locales/ko.yml                   | 3 ---
 config/locales/lt.yml                   | 3 ---
 config/locales/ms.yml                   | 3 ---
 config/locales/nl.yml                   | 3 ---
 config/locales/oc.yml                   | 3 ---
 config/locales/pl.yml                   | 3 ---
 config/locales/pt-BR.yml                | 3 ---
 config/locales/pt-PT.yml                | 3 ---
 config/locales/ru.yml                   | 3 ---
 config/locales/sk.yml                   | 3 ---
 config/locales/sl.yml                   | 3 ---
 config/locales/sq.yml                   | 3 ---
 config/locales/sr.yml                   | 3 ---
 config/locales/sv.yml                   | 3 ---
 config/locales/th.yml                   | 3 ---
 config/locales/tr.yml                   | 3 ---
 config/locales/uk.yml                   | 3 ---
 config/locales/zh-CN.yml                | 3 ---
 config/locales/zh-HK.yml                | 3 ---
 config/locales/zh-TW.yml                | 3 ---
 47 files changed, 11 insertions(+), 139 deletions(-)

diff --git a/app/views/admin/reports/index.html.haml b/app/views/admin/reports/index.html.haml
index b09472270c..30c7549b01 100644
--- a/app/views/admin/reports/index.html.haml
+++ b/app/views/admin/reports/index.html.haml
@@ -28,7 +28,7 @@
     .report-card__profile
       = account_link_to target_account, '', size: 36, path: admin_account_path(target_account.id)
       .report-card__profile__stats
-        = link_to pluralize(target_account.targeted_moderation_notes.count, t('admin.reports.account.note')), admin_account_path(target_account.id)
+        = link_to t('admin.reports.account.notes', count: target_account.targeted_moderation_notes.count), admin_account_path(target_account.id)
         %br/
         - if target_account.suspended?
           %span.red= t('admin.accounts.suspended')
diff --git a/app/views/admin/reports/show.html.haml b/app/views/admin/reports/show.html.haml
index bbe83c979a..aee9a3aefd 100644
--- a/app/views/admin/reports/show.html.haml
+++ b/app/views/admin/reports/show.html.haml
@@ -25,16 +25,16 @@
       %tr
         %th= t('admin.reports.reported_account')
         %td= admin_account_link_to @report.target_account
-        %td= table_link_to 'flag', pluralize(@report.target_account.targeted_reports.count, t('admin.reports.account.report')), admin_reports_path(target_account_id: @report.target_account.id)
-        %td= table_link_to 'file', pluralize(@report.target_account.targeted_moderation_notes.count, t('admin.reports.account.note')), admin_reports_path(target_account_id: @report.target_account.id)
+        %td= table_link_to 'flag', t('admin.reports.account.reports', count: @report.target_account.targeted_reports.count), admin_reports_path(target_account_id: @report.target_account.id)
+        %td= table_link_to 'file', t('admin.reports.account.notes', count: @report.target_account.targeted_moderation_notes.count), admin_reports_path(target_account_id: @report.target_account.id)
       %tr
         %th= t('admin.reports.reported_by')
         - if @report.account.instance_actor?
           %td{ colspan: 3 }= site_hostname
         - elsif @report.account.local?
           %td= admin_account_link_to @report.account
-          %td= table_link_to 'flag', pluralize(@report.account.targeted_reports.count, t('admin.reports.account.report')), admin_reports_path(target_account_id: @report.account.id)
-          %td= table_link_to 'file', pluralize(@report.account.targeted_moderation_notes.count, t('admin.reports.account.note')), admin_reports_path(target_account_id: @report.account.id)
+          %td= table_link_to 'flag', t('admin.reports.account.reports', count: @report.account.targeted_reports.count), admin_reports_path(target_account_id: @report.account.id)
+          %td= table_link_to 'file', t('admin.reports.account.notes', count: @report.account.targeted_moderation_notes.count), admin_reports_path(target_account_id: @report.account.id)
         - else
           %td{ colspan: 3 }= @report.account.domain
       %tr
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 13f5098360..340d720aeb 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -399,9 +399,6 @@ ar:
       created_msg: تم إنشاء ملاحظة الشكوى بنجاح!
       destroyed_msg: تم حذف ملاحظة الشكوى بنجاح!
     reports:
-      account:
-        note: ملحوظة
-        report: تقرير
       action_taken_by: تم اتخاذ الإجراء مِن طرف
       are_you_sure: هل أنت متأكد ؟
       assign_to_self: عين لي
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index b8436efd23..1331299cc8 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -398,9 +398,6 @@ ca:
       created_msg: La nota del informe s'ha creat correctament!
       destroyed_msg: La nota del informe s'ha esborrat correctament!
     reports:
-      account:
-        note: nota
-        report: informe
       action_taken_by: Mesures adoptades per
       are_you_sure: N'estàs segur?
       assign_to_self: Assignar-me
diff --git a/config/locales/co.yml b/config/locales/co.yml
index f14f4e9eaf..c71df77c16 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -398,9 +398,6 @@ co:
       created_msg: Nota di signalamentu creata!
       destroyed_msg: Nota di signalamentu sguassata!
     reports:
-      account:
-        note: nota
-        report: palisà
       action_taken_by: Intervenzione di
       are_you_sure: Site sicuru·a?
       assign_to_self: Assignallu à mè
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 478169d70e..51503ed70b 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -410,9 +410,6 @@ cs:
       created_msg: Poznámka o nahlášení úspěšně vytvořena!
       destroyed_msg: Poznámka o nahlášení úspěšně smazána!
     reports:
-      account:
-        note: poznámka
-        report: nahlášení
       action_taken_by: Akci vykonal/a
       are_you_sure: Jste si jistý/á?
       assign_to_self: Přidělit ke mně
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index aa0974a1aa..f360db2110 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -419,9 +419,6 @@ cy:
       created_msg: Llwyddwyd i greu nodyn adroddiad!
       destroyed_msg: Llwyddwyd i ddileu nodyn adroddiad!
     reports:
-      account:
-        note: nodyn
-        report: adroddiad
       action_taken_by: Gwnaethpwyd hyn gan
       are_you_sure: Ydych chi'n sicr?
       assign_to_self: Aseinio i mi
diff --git a/config/locales/da.yml b/config/locales/da.yml
index 982c712a87..149e7da2b1 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -333,9 +333,6 @@ da:
       created_msg: Anmeldelse note blev oprettet!
       destroyed_msg: Anmeldelse note blev slettet!
     reports:
-      account:
-        note: notat
-        report: anmeld
       action_taken_by: Handling udført af
       are_you_sure: Er du sikker?
       assign_to_self: Tildel til mig
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 490ee947ed..d27c6b105b 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -396,9 +396,6 @@ de:
       created_msg: Meldungs-Kommentar erfolgreich erstellt!
       destroyed_msg: Meldungs-Kommentar erfolgreich gelöscht!
     reports:
-      account:
-        note: Notiz
-        report: Meldung
       action_taken_by: Maßnahme ergriffen durch
       are_you_sure: Bist du dir sicher?
       assign_to_self: Mir zuweisen
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 9f4a8969df..cb1694573d 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -398,9 +398,6 @@ el:
       created_msg: Επιτυχής δημιουργία σημείωσης καταγγελίας!
       destroyed_msg: Επιτυχής διαγραφή σημείωσης καταγγελίας!
     reports:
-      account:
-        note: σημείωση
-        report: καταγγελία
       action_taken_by: Ενέργεια από τον/την
       are_you_sure: Σίγουρα;
       assign_to_self: Ανάθεση σε μένα
diff --git a/config/locales/en.yml b/config/locales/en.yml
index f6a14ad1a4..ea94928e78 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -400,8 +400,12 @@ en:
       destroyed_msg: Report note successfully deleted!
     reports:
       account:
-        note: note
-        report: report
+        notes:
+          one: "%{count} note"
+          other: "%{count} notes"
+        reports:
+          one: "%{count} report"
+          other: "%{count} reports"
       action_taken_by: Action taken by
       are_you_sure: Are you sure?
       assign_to_self: Assign to me
diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml
index 33ba162100..45d3a5bc02 100644
--- a/config/locales/en_GB.yml
+++ b/config/locales/en_GB.yml
@@ -348,9 +348,6 @@ en_GB:
       created_msg: Report note successfully created!
       destroyed_msg: Report note successfully deleted!
     reports:
-      account:
-        note: note
-        report: report
       action_taken_by: Action taken by
       are_you_sure: Are you sure?
       assign_to_self: Assign to me
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 3478732141..4325280109 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -380,9 +380,6 @@ eo:
       created_msg: Signala noto sukcese kreita!
       destroyed_msg: Signala noto sukcese forigita!
     reports:
-      account:
-        note: noto
-        report: signalo
       action_taken_by: Ago farita de
       are_you_sure: Ĉu vi certas?
       assign_to_self: Asigni al mi
diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml
index 0af0c04bda..6515684a38 100644
--- a/config/locales/es-AR.yml
+++ b/config/locales/es-AR.yml
@@ -395,9 +395,6 @@ es-AR:
       created_msg: "¡La nota de denuncia fue creada exitosamente!"
       destroyed_msg: "¡La nota de denuncia fue eliminada exitosamente!"
     reports:
-      account:
-        note: nota
-        report: denuncia
       action_taken_by: Acción tomada por
       are_you_sure: "¿Estás seguro?"
       assign_to_self: Asignármela a mí
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 920a0ccdf7..4b9cbef2bf 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -398,9 +398,6 @@ es:
       created_msg: "¡El registro de la denuncia se ha creado correctamente!"
       destroyed_msg: "¡El registro de la denuncia se ha borrado correctamente!"
     reports:
-      account:
-        note: nota
-        report: denuncia
       action_taken_by: Acción tomada por
       are_you_sure: "¿Estás seguro?"
       assign_to_self: Asignármela a mí
diff --git a/config/locales/et.yml b/config/locales/et.yml
index aa58138f74..3308471610 100644
--- a/config/locales/et.yml
+++ b/config/locales/et.yml
@@ -401,9 +401,6 @@ et:
       created_msg: Teade edukalt koostatud!
       destroyed_msg: Teade edukalt kustutatud!
     reports:
-      account:
-        note: märkus
-        report: teavita
       action_taken_by: Meetmeid kasutanud
       are_you_sure: Olete kindel?
       assign_to_self: Määra mulle
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index ab8a687468..ff8d00df13 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -398,9 +398,6 @@ eu:
       created_msg: Salaketa oharra ongi sortu da!
       destroyed_msg: Salaketa oharra ongi ezabatu da!
     reports:
-      account:
-        note: oharra
-        report: salaketa
       action_taken_by: Neurrien hartzailea
       are_you_sure: Ziur zaude?
       assign_to_self: Esleitu niri
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index ea901423d5..78236432ee 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -396,9 +396,6 @@ fa:
       created_msg: یادداشت گزارش با موفقیت ساخته شد!
       destroyed_msg: یادداشت گزارش با موفقیت حذف شد!
     reports:
-      account:
-        note: یادداشت
-        report: گزارش
       action_taken_by: انجام‌دهنده
       are_you_sure: آیا مطمئن هستید؟
       assign_to_self: به عهدهٔ من بگذار
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index dfe71c0989..62cc5b36d2 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -270,9 +270,6 @@ fi:
       created_msg: Muistiinpano onnistuneesti lisätty raporttiin!
       destroyed_msg: Muistiinpano onnistuneesti poistettu raportista!
     reports:
-      account:
-        note: muistiinpano
-        report: raportti
       action_taken_by: Toimenpiteen tekijä
       are_you_sure: Oletko varma?
       assign_to_self: Ota tehtäväksi
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 52dd032dd4..d7585af4a3 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -398,9 +398,6 @@ fr:
       created_msg: Note de signalement créée avec succès !
       destroyed_msg: Note de signalement effacée avec succès !
     reports:
-      account:
-        note: note
-        report: signalement(s)
       action_taken_by: Intervention de
       are_you_sure: Êtes vous certain⋅e ?
       assign_to_self: Me l’assigner
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 64f479ec7b..fbd953359e 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -396,9 +396,6 @@ gl:
       created_msg: Creouse correctamente a nota do informe!
       destroyed_msg: Nota do informe eliminouse con éxito!
     reports:
-      account:
-        note: nota
-        report: informe
       action_taken_by: Acción tomada por
       are_you_sure: Está segura?
       assign_to_self: Asignarmo
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 7f519c820b..7f5cd3d516 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -400,9 +400,6 @@ hu:
       created_msg: Bejelentési feljegyzés létrehozva!
       destroyed_msg: Bejelentési feljegyzés törölve!
     reports:
-      account:
-        note: feljegyzés
-        report: bejelentés
       action_taken_by: 'Kezelte:'
       are_you_sure: Biztos vagy benne?
       assign_to_self: Magamhoz rendelés
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 97e87460a6..1a58b1c54f 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -391,9 +391,6 @@ id:
       created_msg: Catatan laporan berhasil dibuat!
       destroyed_msg: Catatan laporan berhasil dihapus!
     reports:
-      account:
-        note: catatan
-        report: lapor
       action_taken_by: Aksi dilakukan oleh
       are_you_sure: Apakah Anda yakin?
       assign_to_self: Tugaskan kpd saya
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 3b5743f4d7..987321313c 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -394,9 +394,6 @@ it:
       created_msg: Nota rapporto creata!
       destroyed_msg: Nota rapporto cancellata!
     reports:
-      account:
-        note: note
-        report: rapporto
       action_taken_by: Azione intrapresa da
       are_you_sure: Sei sicuro?
       assign_to_self: Assegna a me
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index f1963296e4..477fb2e3c5 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -392,9 +392,6 @@ ja:
       created_msg: 通報メモを書き込みました!
       destroyed_msg: 通報メモを削除しました!
     reports:
-      account:
-        note: メモ
-        report: 通報
       action_taken_by: 通報処理者
       are_you_sure: 本当に実行しますか?
       assign_to_self: 担当になる
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index 0ab1f2d69d..094a1a1a89 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -267,9 +267,6 @@ ka:
       created_msg: რეპორტის ჩანაწერი წარმატებით შეიქმნა!
       destroyed_msg: რეპორტის ჩანაწერი წარმატებით გაუქმდა!
     reports:
-      account:
-        note: ჩანაწერი
-        report: რეპორტი
       action_taken_by: მოქმედება შეასრულა
       are_you_sure: დარწმუნებული ხარ?
       assign_to_self: დანიშნე ჩემზე
diff --git a/config/locales/kk.yml b/config/locales/kk.yml
index 2b3f24e02c..b48d6dd27d 100644
--- a/config/locales/kk.yml
+++ b/config/locales/kk.yml
@@ -398,9 +398,6 @@ kk:
       created_msg: Шағым жазбасы сәтті құрылды!
       destroyed_msg: Шағым жазбасы сәтті өшірілді!
     reports:
-      account:
-        note: жазба
-        report: шағым
       action_taken_by: Белсенділік жасаған
       are_you_sure: Шынымен бе?
       assign_to_self: Мені тағайындау
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index ceeadfb36e..8b1c76ee0a 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -392,9 +392,6 @@ ko:
       created_msg: 리포트 노트가 성공적으로 작성되었습니다!
       destroyed_msg: 리포트 노트가 성공적으로 삭제되었습니다!
     reports:
-      account:
-        note: 노트
-        report: 리포트
       action_taken_by: 신고 처리자
       are_you_sure: 정말로 실행하시겠습니까?
       assign_to_self: 나에게 할당하기
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index 7a09bee594..66fe07de15 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -309,9 +309,6 @@ lt:
       created_msg: Skundo žinutė sekmingai sukurta!
       destroyed_msg: Skundo žinutė sekmingai ištrinta!
     reports:
-      account:
-        note: raštelis
-        report: skundas
       action_taken_by: Veiksmo ėmėsi
       are_you_sure: Ar tu įsitikinęs?
       assign_to_self: Paskirti man
diff --git a/config/locales/ms.yml b/config/locales/ms.yml
index d824aed60c..c1fe7d15a2 100644
--- a/config/locales/ms.yml
+++ b/config/locales/ms.yml
@@ -276,9 +276,6 @@ ms:
       created_msg: Nota laporan berjaya dicipta!
       destroyed_msg: Nota laporan berjaya dipadam!
     reports:
-      account:
-        note: nota
-        report: laporan
       action_taken_by: Tindakan oleh
       are_you_sure: Anda pasti?
       assign_to_self: Berikan pada saya
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index bfa4122ed4..8f2b77f2f5 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -396,9 +396,6 @@ nl:
       created_msg: Opmerking bij rapportage succesvol aangemaakt!
       destroyed_msg: Opmerking bij rapportage succesvol verwijderd!
     reports:
-      account:
-        note: opmerking
-        report: rapportage
       action_taken_by: Actie uitgevoerd door
       are_you_sure: Weet je het zeker?
       assign_to_self: Aan mij toewijzen
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index 851db04912..a82adf3802 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -383,9 +383,6 @@ oc:
       created_msg: Nòta de moderacion corrèctament creada !
       destroyed_msg: Nòta de moderacion corrèctament suprimida !
     reports:
-      account:
-        note: nòta
-        report: rapòrt
       action_taken_by: Mesura menada per
       are_you_sure: Es segur ?
       assign_to_self: Me l’assignar
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 62412b8914..4d6181de3b 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -403,9 +403,6 @@ pl:
       created_msg: Pomyslnie utworzono notatkę moderacyjną.
       destroyed_msg: Pomyślnie usunięto notatkę moderacyjną.
     reports:
-      account:
-        note: notatka
-        report: zgłoszenie
       action_taken_by: Działanie podjęte przez
       are_you_sure: Czy na pewno?
       assign_to_self: Przypisz do siebie
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 7391ff06c4..e653de4696 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -368,9 +368,6 @@ pt-BR:
       created_msg: Nota de denúncia criada com sucesso!
       destroyed_msg: Nota de denúncia excluída com sucesso!
     reports:
-      account:
-        note: nota
-        report: denúncia
       action_taken_by: Ação realizada por
       are_you_sure: Você tem certeza?
       assign_to_self: Designar para mim
diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml
index bb1de517ee..836d2a3e74 100644
--- a/config/locales/pt-PT.yml
+++ b/config/locales/pt-PT.yml
@@ -346,9 +346,6 @@ pt-PT:
       created_msg: Relatório criado com sucesso!
       destroyed_msg: Relatório apagado com sucesso!
     reports:
-      account:
-        note: nota
-        report: relatório
       action_taken_by: Ação tomada por
       are_you_sure: Tens a certeza?
       assign_to_self: Atribuí-me a mim
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 4c1035627f..fbf8ebc129 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -410,9 +410,6 @@ ru:
       created_msg: Примечание жалобы создано!
       destroyed_msg: Примечание жалобы удалено!
     reports:
-      account:
-        note: заметок
-        report: жалоб
       action_taken_by: 'Действие предпринято:'
       are_you_sure: Вы уверены?
       assign_to_self: Назначить себе
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index 5dc2113fd2..4d86cf6021 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -403,9 +403,6 @@ sk:
       created_msg: Poznámka o nahlásení úspešne vytvorená!
       destroyed_msg: Poznámka o nahlásení úspešne vymazaná!
     reports:
-      account:
-        note: poznámka
-        report: nahlás
       action_taken_by: Zákrok vykonal/a
       are_you_sure: Si si istý/á?
       assign_to_self: Priraď sebe
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index 22b58e7b62..da4c48d4a6 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -375,9 +375,6 @@ sl:
       created_msg: Opomba o prijavi je uspešno ustvarjena!
       destroyed_msg: Opomba o prijavi je uspešno izbrisana!
     reports:
-      account:
-        note: opomba
-        report: prijava
       action_taken_by: Dejanje, ki ga je sprejel
       are_you_sure: Ali ste prepričani?
       assign_to_self: Dodeli meni
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index ac811b0b0e..c64fe23c6b 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -315,9 +315,6 @@ sq:
       created_msg: Shënimi i raportimit u krijua me sukses!
       destroyed_msg: Shënimi i raportimit u fshi me sukses!
     reports:
-      account:
-        note: shënim
-        report: raportojeni
       action_taken_by: Veprimi i ndërmarrë nga
       are_you_sure: A jeni i sigurt?
       assign_to_self: Caktojani vetes
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index 404310fe91..21eb19fee0 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -330,9 +330,6 @@ sr:
       created_msg: Белешка пријаве успешно направљена!
       destroyed_msg: Белешка пријаве успешно избрисана!
     reports:
-      account:
-        note: белешка
-        report: извештај
       action_taken_by: Акцију извео
       are_you_sure: Да ли сте сигурни?
       assign_to_self: Додели мени
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 0068f59f41..19c7ef845f 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -318,9 +318,6 @@ sv:
       created_msg: Anmälningsanteckning har skapats!
       destroyed_msg: Anmälningsanteckning har raderats!
     reports:
-      account:
-        note: anteckning
-        report: anmälan
       action_taken_by: Åtgärder vidtagna av
       are_you_sure: Är du säker?
       assign_to_self: Tilldela till mig
diff --git a/config/locales/th.yml b/config/locales/th.yml
index a63bbe9177..eda9b52a23 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -310,9 +310,6 @@ th:
       created_msg: สร้างหมายเหตุรายงานสำเร็จ!
       destroyed_msg: ลบหมายเหตุรายงานสำเร็จ!
     reports:
-      account:
-        note: หมายเหตุ
-        report: รายงาน
       are_you_sure: คุณแน่ใจหรือไม่?
       assign_to_self: มอบหมายให้ฉัน
       assigned: ผู้ควบคุมที่ได้รับมอบหมาย
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index b2b1dd0787..afaf4d2513 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -398,9 +398,6 @@ tr:
       created_msg: Şikayet notu başarıyla oluşturuldu!
       destroyed_msg: Şikayet notu başarıyla silindi!
     reports:
-      account:
-        note: not
-        report: şikayet
       action_taken_by: tarafından gerçekleştirilen eylem
       are_you_sure: Emin misiniz?
       assign_to_self: Bana ata
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 7d8d83e2d6..fce2366c7b 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -400,9 +400,6 @@ uk:
       created_msg: Скарга успішно створена!
       destroyed_msg: Скарга успішно видалена!
     reports:
-      account:
-        note: нотатка
-        report: скарга
       action_taken_by: Дія виконана
       are_you_sure: Ви впевнені?
       assign_to_self: Призначити мені
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index 3af145c663..c7822d6e34 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -384,9 +384,6 @@ zh-CN:
       created_msg: 举报记录建立成功!
       destroyed_msg: 举报记录删除成功!
     reports:
-      account:
-        note: 条记录
-        report: 条举报
       action_taken_by: 操作执行者
       are_you_sure: 你确定吗?
       assign_to_self: 接管
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index 338cf810ec..74eefcd056 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -233,9 +233,6 @@ zh-HK:
       created_msg: 舉報筆記已建立。
       destroyed_msg: 舉報筆記已刪除。
     reports:
-      account:
-        note: 筆記
-        report: 舉報
       action_taken_by: 操作執行者
       are_you_sure: 你確認嗎?
       assign_to_self: 指派給自己
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index b7116e02ed..1f0c5522fc 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -323,9 +323,6 @@ zh-TW:
       created_msg: 檢舉記錄建立成功!
       destroyed_msg: 檢舉記錄刪除成功!
     reports:
-      account:
-        note: 條記錄
-        report: 條檢舉
       action_taken_by: 操作執行者
       are_you_sure: 你確定嗎?
       assign_to_self: 指派給自己

From d53330f65b7dcb9f8e22244f5c72facb645213e3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?B=C3=A8r=20Kessels?= <github@berk.es>
Date: Fri, 13 Dec 2019 14:04:57 +0100
Subject: [PATCH 05/39] Ignore development specfic env file (#12606)

---
 .gitignore | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.gitignore b/.gitignore
index c3f20deea7..804eb7bdce 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,6 +23,7 @@ public/packs
 public/packs-test
 .env
 .env.production
+.env.development
 node_modules/
 build/
 

From f4906f2cac9ad94bb9413365ede058d457eb6dd1 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Mon, 16 Dec 2019 23:53:38 +0100
Subject: [PATCH 06/39] [Security] Bump excon from 0.62.0 to 0.71.0 (#12638)

Bumps [excon](https://github.com/excon/excon) from 0.62.0 to 0.71.0. **This update includes a security fix.**
- [Release notes](https://github.com/excon/excon/releases)
- [Changelog](https://github.com/excon/excon/blob/master/changelog.txt)
- [Commits](https://github.com/excon/excon/compare/v0.62.0...v0.71.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 Gemfile.lock | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index ec268dc8a5..d9ca0f3aa3 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -238,7 +238,7 @@ GEM
     erubi (1.9.0)
     et-orbi (1.1.6)
       tzinfo
-    excon (0.62.0)
+    excon (0.71.0)
     fabrication (2.21.0)
     faker (2.8.0)
       i18n (>= 1.6, < 1.8)

From 09a72add0e98c3aebe82c417ecda01bed9596b20 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?=
 <root@acid-chicken.com>
Date: Tue, 17 Dec 2019 07:55:02 +0900
Subject: [PATCH 07/39] Fix tooltip messages of multiple poll switcher are
 reversed (#12616)

---
 .../mastodon/features/compose/components/poll_form.js         | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/app/javascript/mastodon/features/compose/components/poll_form.js b/app/javascript/mastodon/features/compose/components/poll_form.js
index e9bbb4ba4e..01df31d3a8 100644
--- a/app/javascript/mastodon/features/compose/components/poll_form.js
+++ b/app/javascript/mastodon/features/compose/components/poll_form.js
@@ -82,8 +82,8 @@ class Option extends React.PureComponent {
             onKeyPress={this.handleCheckboxKeypress}
             role='button'
             tabIndex='0'
-            title={intl.formatMessage(isPollMultiple ? messages.switchToMultiple : messages.switchToSingle)}
-            aria-label={intl.formatMessage(isPollMultiple ? messages.switchToMultiple : messages.switchToSingle)}
+            title={intl.formatMessage(isPollMultiple ? messages.switchToSingle : messages.switchToMultiple)}
+            aria-label={intl.formatMessage(isPollMultiple ? messages.switchToSingle : messages.switchToMultiple)}
           />
 
           <AutosuggestInput

From 34aa5c7cb2090bf9d995eafdfbf5f9bd01336491 Mon Sep 17 00:00:00 2001
From: Sasha Sorokin <dafri.nochiterov8@gmail.com>
Date: Tue, 17 Dec 2019 05:55:16 +0700
Subject: [PATCH 08/39] Improve report page structure (#12615)

* Move resolved button to the heading

This is one of the commits on improving overall reports page structure.
It changes where resolved button is located, moving it to the heading,
right next to the "Report #n" header, so-called "hot-place" to look at.

To accomplish this we have to declare one more content variable, change
admin dashboard template to respect it and CSS files for minor styling,
so buttons are inlined and centrally aligned according to the heading.

* Move actions buttons below the report table

I believe that actions to react on report should not be located at the
top of the page, instead they should be either after the table or
reporter's comment. This is just a logical sign that you should not
react to the report without reading all the details first.
---
 app/javascript/styles/mastodon/admin.scss | 31 +++++++++++++++++++----
 app/views/admin/reports/show.html.haml    | 24 ++++++++++--------
 app/views/layouts/admin.html.haml         |  7 ++++-
 3 files changed, 45 insertions(+), 17 deletions(-)

diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss
index dde1d69ba0..203365f5e4 100644
--- a/app/javascript/styles/mastodon/admin.scss
+++ b/app/javascript/styles/mastodon/admin.scss
@@ -181,18 +181,39 @@ $content-width: 840px;
       padding-top: 30px;
     }
 
+    &-heading {
+      display: flex;
+
+      padding-bottom: 40px;
+      border-bottom: 1px solid lighten($ui-base-color, 8%);
+      margin-bottom: 40px;
+
+      flex-wrap: wrap;
+      align-items: center;
+
+      justify-content: space-between;
+
+      &-actions {
+        display: inline-flex;
+
+        & > * {
+          margin-left: 5px;
+        }
+      }
+
+      @media screen and (max-width: $no-columns-breakpoint) {
+        border-bottom: 0;
+        padding-bottom: 0;
+      }
+    }
+
     h2 {
       color: $secondary-text-color;
       font-size: 24px;
       line-height: 28px;
       font-weight: 400;
-      padding-bottom: 40px;
-      border-bottom: 1px solid lighten($ui-base-color, 8%);
-      margin-bottom: 40px;
 
       @media screen and (max-width: $no-columns-breakpoint) {
-        border-bottom: 0;
-        padding-bottom: 0;
         font-weight: 700;
       }
     }
diff --git a/app/views/admin/reports/show.html.haml b/app/views/admin/reports/show.html.haml
index aee9a3aefd..7f3ec35a4a 100644
--- a/app/views/admin/reports/show.html.haml
+++ b/app/views/admin/reports/show.html.haml
@@ -4,21 +4,12 @@
 - content_for :page_title do
   = t('admin.reports.report', id: @report.id)
 
-%div{ style: 'overflow: hidden; margin-bottom: 20px' }
+- content_for :page_heading_actions do
   - if @report.unresolved?
-    %div{ style: 'float: right' }
-      - if @report.target_account.local?
-        = link_to t('admin.accounts.warn'), new_admin_account_action_path(@report.target_account_id, type: 'none', report_id: @report.id), class: 'button'
-        = link_to t('admin.accounts.disable'), new_admin_account_action_path(@report.target_account_id, type: 'disable', report_id: @report.id), class: 'button button--destructive'
-      = link_to t('admin.accounts.silence'), new_admin_account_action_path(@report.target_account_id, type: 'silence', report_id: @report.id), class: 'button button--destructive'
-      = link_to t('admin.accounts.perform_full_suspension'), new_admin_account_action_path(@report.target_account_id, type: 'suspend', report_id: @report.id), class: 'button button--destructive'
-    %div{ style: 'float: left' }
-      = link_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(@report), method: :post, class: 'button'
+    = link_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(@report), method: :post, class: 'button'
   - else
     = link_to t('admin.reports.mark_as_unresolved'), reopen_admin_report_path(@report), method: :post, class: 'button'
 
-%hr.spacer
-
 .table-wrapper
   %table.table.inline-table
     %tbody
@@ -77,6 +68,17 @@
 
 %hr.spacer
 
+%div{ style: 'overflow: hidden; margin-bottom: 20px; clear: both' }
+  - if @report.unresolved?
+    %div{ style: 'float: right' }
+      - if @report.target_account.local?
+        = link_to t('admin.accounts.warn'), new_admin_account_action_path(@report.target_account_id, type: 'none', report_id: @report.id), class: 'button'
+        = link_to t('admin.accounts.disable'), new_admin_account_action_path(@report.target_account_id, type: 'disable', report_id: @report.id), class: 'button button--destructive'
+      = link_to t('admin.accounts.silence'), new_admin_account_action_path(@report.target_account_id, type: 'silence', report_id: @report.id), class: 'button button--destructive'
+      = link_to t('admin.accounts.perform_full_suspension'), new_admin_account_action_path(@report.target_account_id, type: 'suspend', report_id: @report.id), class: 'button button--destructive'
+
+%hr.spacer
+
 .speech-bubble
   .speech-bubble__bubble= simple_format(@report.comment.presence || t('admin.reports.comment.none'))
   .speech-bubble__owner
diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml
index 57bda45e23..059bf8579d 100644
--- a/app/views/layouts/admin.html.haml
+++ b/app/views/layouts/admin.html.haml
@@ -21,7 +21,12 @@
 
     .content-wrapper
       .content
-        %h2= yield :page_title
+        .content-heading
+          %h2= yield :page_title
+
+          - if :page_heading_actions
+            .content-heading-actions
+              = yield :page_heading_actions
 
         = render 'application/flashes'
 

From 8094955461419661b88a0361a5d7caed4b19c29a Mon Sep 17 00:00:00 2001
From: Thomas Citharel <tcit@tcit.fr>
Date: Mon, 16 Dec 2019 23:55:28 +0100
Subject: [PATCH 09/39] Add Event activity-type support (#12637)

This adds support for Event AP type in Mastodon. Events are converted
into toots by taking their title (AS name) and their URL (AP ID). Event
picture is also brought in if available.

Testable by fetching event content from https://test.mobilizon.org

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
---
 app/lib/activitypub/activity.rb               |  2 +-
 .../fetch_remote_status_service_spec.rb       | 20 +++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb
index 0ca6b92a4f..49b1dc9cd0 100644
--- a/app/lib/activitypub/activity.rb
+++ b/app/lib/activitypub/activity.rb
@@ -5,7 +5,7 @@ class ActivityPub::Activity
   include Redisable
 
   SUPPORTED_TYPES = %w(Note Question).freeze
-  CONVERTED_TYPES = %w(Image Audio Video Article Page).freeze
+  CONVERTED_TYPES = %w(Image Audio Video Article Page Event).freeze
 
   def initialize(json, account, **options)
     @json    = json
diff --git a/spec/services/activitypub/fetch_remote_status_service_spec.rb b/spec/services/activitypub/fetch_remote_status_service_spec.rb
index 78dd59e3b6..1ecc469524 100644
--- a/spec/services/activitypub/fetch_remote_status_service_spec.rb
+++ b/spec/services/activitypub/fetch_remote_status_service_spec.rb
@@ -104,6 +104,26 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
       end
     end
 
+    context 'with Event object' do
+      let(:object) do
+        {
+          '@context': 'https://www.w3.org/ns/activitystreams',
+          id: "https://#{valid_domain}/@foo/1234",
+          type: 'Event',
+          name: "Let's change the world",
+          attributedTo: ActivityPub::TagManager.instance.uri_for(sender)
+        }
+      end
+
+      it 'creates status' do
+        status = sender.statuses.first
+
+        expect(status).to_not be_nil
+        expect(status.url).to eq "https://#{valid_domain}/@foo/1234"
+        expect(strip_tags(status.text)).to eq "Let's change the world https://#{valid_domain}/@foo/1234"
+      end
+    end
+
     context 'with wrong id' do
       let(:note) do
         {

From 668f6980774e124a1cc4c80b280172de04ca7973 Mon Sep 17 00:00:00 2001
From: Alice Gaudon <alice@gaudon.pro>
Date: Mon, 16 Dec 2019 23:55:50 +0100
Subject: [PATCH 10/39] Admin setting to disable default follows (#12566)

---
 app/javascript/packs/admin.js              | 22 ++++++++++++++++++++--
 app/models/form/admin_settings.rb          |  2 ++
 app/services/bootstrap_timeline_service.rb |  2 +-
 app/views/admin/settings/edit.html.haml    |  7 ++++++-
 config/locales/en.yml                      |  2 ++
 config/settings.yml                        |  1 +
 6 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/app/javascript/packs/admin.js b/app/javascript/packs/admin.js
index 42c747d2ef..b318cadc66 100644
--- a/app/javascript/packs/admin.js
+++ b/app/javascript/packs/admin.js
@@ -45,7 +45,25 @@ const onDomainBlockSeverityChange = (target) => {
 
 delegate(document, '#domain_block_severity', 'change', ({ target }) => onDomainBlockSeverityChange(target));
 
+const onEnableBootstrapTimelineAccountsChange = (target) => {
+  const bootstrapTimelineAccountsField = document.querySelector('#form_admin_settings_bootstrap_timeline_accounts');
+
+  if (bootstrapTimelineAccountsField) {
+    bootstrapTimelineAccountsField.disabled = !target.checked;
+    if (target.checked) {
+      bootstrapTimelineAccountsField.parentElement.classList.remove('disabled');
+    } else {
+      bootstrapTimelineAccountsField.parentElement.classList.add('disabled');
+    }
+  }
+};
+
+delegate(document, '#form_admin_settings_enable_bootstrap_timeline_accounts', 'change', ({ target }) => onEnableBootstrapTimelineAccountsChange(target));
+
 ready(() => {
-  const input = document.getElementById('domain_block_severity');
-  if (input) onDomainBlockSeverityChange(input);
+  const domainBlockSeverityInput = document.getElementById('domain_block_severity');
+  if (domainBlockSeverityInput) onDomainBlockSeverityChange(domainBlockSeverityInput);
+
+  const enableBootstrapTimelineAccounts = document.getElementById('form_admin_settings_enable_bootstrap_timeline_accounts');
+  if (enableBootstrapTimelineAccounts) onEnableBootstrapTimelineAccountsChange(enableBootstrapTimelineAccounts);
 });
diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb
index 70e9c21f16..390836f287 100644
--- a/app/models/form/admin_settings.rb
+++ b/app/models/form/admin_settings.rb
@@ -16,6 +16,7 @@ class Form::AdminSettings
     open_deletion
     timeline_preview
     show_staff_badge
+    enable_bootstrap_timeline_accounts
     bootstrap_timeline_accounts
     theme
     min_invite_role
@@ -40,6 +41,7 @@ class Form::AdminSettings
     open_deletion
     timeline_preview
     show_staff_badge
+    enable_bootstrap_timeline_accounts
     activity_api_enabled
     peers_api_enabled
     show_known_fediverse_at_about_page
diff --git a/app/services/bootstrap_timeline_service.rb b/app/services/bootstrap_timeline_service.rb
index c489601c15..8412aa7e78 100644
--- a/app/services/bootstrap_timeline_service.rb
+++ b/app/services/bootstrap_timeline_service.rb
@@ -5,7 +5,7 @@ class BootstrapTimelineService < BaseService
     @source_account = source_account
 
     autofollow_inviter!
-    autofollow_bootstrap_timeline_accounts!
+    autofollow_bootstrap_timeline_accounts! if Setting.enable_bootstrap_timeline_accounts
   end
 
   private
diff --git a/app/views/admin/settings/edit.html.haml b/app/views/admin/settings/edit.html.haml
index 6282bb39c0..d7b4930512 100644
--- a/app/views/admin/settings/edit.html.haml
+++ b/app/views/admin/settings/edit.html.haml
@@ -1,3 +1,6 @@
+- content_for :header_tags do
+  = javascript_pack_tag 'admin', integrity: true, async: true, crossorigin: 'anonymous'
+
 - content_for :page_title do
   = t('admin.settings.title')
 
@@ -38,7 +41,9 @@
   %hr.spacer/
 
   .fields-group
-    = f.input :bootstrap_timeline_accounts, wrapper: :with_block_label, label: t('admin.settings.bootstrap_timeline_accounts.title'), hint: t('admin.settings.bootstrap_timeline_accounts.desc_html')
+    = f.input :enable_bootstrap_timeline_accounts, as: :boolean, wrapper: :with_label, label: t('admin.settings.enable_bootstrap_timeline_accounts.title')
+  .fields-group
+    = f.input :bootstrap_timeline_accounts, wrapper: :with_block_label, label: t('admin.settings.bootstrap_timeline_accounts.title'), hint: t('admin.settings.bootstrap_timeline_accounts.desc_html'), disabled: !Setting.enable_bootstrap_timeline_accounts
 
   %hr.spacer/
 
diff --git a/config/locales/en.yml b/config/locales/en.yml
index ea94928e78..5edd6e0d3d 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -456,6 +456,8 @@ en:
         users: To logged-in local users
       domain_blocks_rationale:
         title: Show rationale
+      enable_bootstrap_timeline_accounts:
+        title: Enable default follows for new users
       hero:
         desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to server thumbnail
         title: Hero image
diff --git a/config/settings.yml b/config/settings.yml
index f66e3922e2..0024736435 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -61,6 +61,7 @@ defaults: &defaults
     - mod
     - moderator
   disallowed_hashtags: # space separated string or list of hashtags without the hash
+  enable_bootstrap_timeline_accounts: true
   bootstrap_timeline_accounts: ''
   activity_api_enabled: true
   peers_api_enabled: true

From ed015e2e3df8075a0e57c54bc6a79994c59d970a Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue, 17 Dec 2019 10:19:20 +0900
Subject: [PATCH 11/39] Bump faker from 2.8.0 to 2.8.1 (#12633)

Bumps [faker](https://github.com/faker-ruby/faker) from 2.8.0 to 2.8.1.
- [Release notes](https://github.com/faker-ruby/faker/releases)
- [Changelog](https://github.com/faker-ruby/faker/blob/master/CHANGELOG.md)
- [Commits](https://github.com/faker-ruby/faker/compare/v2.8.0...v2.8.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 Gemfile.lock | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index d9ca0f3aa3..582c71c65a 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -240,7 +240,7 @@ GEM
       tzinfo
     excon (0.71.0)
     fabrication (2.21.0)
-    faker (2.8.0)
+    faker (2.8.1)
       i18n (>= 1.6, < 1.8)
     faraday (0.15.4)
       multipart-post (>= 1.2, < 3)

From 7e736d77ddb23a9fb9aa4914886a94c04befa1ae Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue, 17 Dec 2019 10:19:58 +0900
Subject: [PATCH 12/39] Bump compression-webpack-plugin from 3.0.0 to 3.0.1
 (#12620)

Bumps [compression-webpack-plugin](https://github.com/webpack-contrib/compression-webpack-plugin) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/webpack-contrib/compression-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/compression-webpack-plugin/blob/v3.0.1/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/compression-webpack-plugin/compare/v3.0.0...v3.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 package.json |  2 +-
 yarn.lock    | 44 ++++++++++++--------------------------------
 2 files changed, 13 insertions(+), 33 deletions(-)

diff --git a/package.json b/package.json
index 3bdec0d0e1..c08cc00339 100644
--- a/package.json
+++ b/package.json
@@ -81,7 +81,7 @@
     "babel-runtime": "^6.26.0",
     "blurhash": "^1.1.3",
     "classnames": "^2.2.5",
-    "compression-webpack-plugin": "^3.0.0",
+    "compression-webpack-plugin": "^3.0.1",
     "copy-webpack-plugin": "^5.0.5",
     "cross-env": "^6.0.3",
     "css-loader": "^3.2.0",
diff --git a/yarn.lock b/yarn.lock
index aeb7093c1f..ebf6f575ef 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2203,26 +2203,6 @@ bytes@3.1.0:
   resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
   integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
 
-cacache@^11.2.0:
-  version "11.3.3"
-  resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc"
-  integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==
-  dependencies:
-    bluebird "^3.5.5"
-    chownr "^1.1.1"
-    figgy-pudding "^3.5.1"
-    glob "^7.1.4"
-    graceful-fs "^4.1.15"
-    lru-cache "^5.1.1"
-    mississippi "^3.0.0"
-    mkdirp "^0.5.1"
-    move-concurrently "^1.0.1"
-    promise-inflight "^1.0.1"
-    rimraf "^2.6.3"
-    ssri "^6.0.1"
-    unique-filename "^1.1.1"
-    y18n "^4.0.0"
-
 cacache@^12.0.2, cacache@^12.0.3:
   version "12.0.3"
   resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390"
@@ -2638,16 +2618,16 @@ compressible@~2.0.16:
   dependencies:
     mime-db ">= 1.40.0 < 2"
 
-compression-webpack-plugin@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-3.0.0.tgz#097d2e4d95c3a14cb5c8ed20899009ab5b9bbca0"
-  integrity sha512-ls+oKw4eRbvaSv/hj9NmctihhBcR26j76JxV0bLRLcWhrUBdQFgd06z/Kgg7exyQvtWWP484wZxs0gIUX3NO0Q==
+compression-webpack-plugin@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-3.0.1.tgz#be7a343e6dfbccbd64a77c5fbe29627d140fc321"
+  integrity sha512-FOwoBVzDiwSdJDnZTKXDpAjJU90k8SbChgxnoiYwTo15xjIDJkSC8wFKuc13DymXjgasPEqzS5+2RUgSKXdKKA==
   dependencies:
-    cacache "^11.2.0"
+    cacache "^13.0.1"
     find-cache-dir "^3.0.0"
     neo-async "^2.5.0"
-    schema-utils "^1.0.0"
-    serialize-javascript "^1.4.0"
+    schema-utils "^2.6.1"
+    serialize-javascript "^2.1.2"
     webpack-sources "^1.0.1"
 
 compression@^1.7.4:
@@ -9483,15 +9463,15 @@ send@0.17.1:
     range-parser "~1.2.1"
     statuses "~1.5.0"
 
-serialize-javascript@^1.4.0, serialize-javascript@^1.7.0:
+serialize-javascript@^1.7.0:
   version "1.9.1"
   resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb"
   integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==
 
-serialize-javascript@^2.1.0, serialize-javascript@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.1.tgz#952907a04a3e3a75af7f73d92d15e233862048b2"
-  integrity sha512-MPLPRpD4FNqWq9tTIjYG5LesFouDhdyH0EPY3gVK4DRD5+g4aDqdNSzLIwceulo3Yj+PL1bPh6laE5+H6LTcrQ==
+serialize-javascript@^2.1.0, serialize-javascript@^2.1.1, serialize-javascript@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61"
+  integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==
 
 serve-index@^1.9.1:
   version "1.9.1"

From 0aaedcd66fa3786e106517f95e8ec3eff29ce689 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Tue, 17 Dec 2019 10:20:49 +0900
Subject: [PATCH 13/39] Bump @babel/preset-env from 7.7.4 to 7.7.6 (#12623)

Bumps [@babel/preset-env](https://github.com/babel/babel) from 7.7.4 to 7.7.6.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/master/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/compare/v7.7.4...v7.7.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 package.json |   2 +-
 yarn.lock    | 111 ++++++++++++++++++++++++++++-----------------------
 2 files changed, 62 insertions(+), 51 deletions(-)

diff --git a/package.json b/package.json
index c08cc00339..dc6ca54d71 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,7 @@
     "@babel/plugin-proposal-decorators": "^7.7.4",
     "@babel/plugin-transform-react-inline-elements": "^7.7.4",
     "@babel/plugin-transform-runtime": "^7.7.6",
-    "@babel/preset-env": "^7.7.4",
+    "@babel/preset-env": "^7.7.6",
     "@babel/preset-react": "^7.7.4",
     "@babel/runtime": "^7.7.6",
     "@gamestdio/websocket": "^0.3.2",
diff --git a/yarn.lock b/yarn.lock
index ebf6f575ef..a16c369e7a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -157,6 +157,18 @@
     "@babel/types" "^7.7.4"
     lodash "^4.17.13"
 
+"@babel/helper-module-transforms@^7.7.5":
+  version "7.7.5"
+  resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz#d044da7ffd91ec967db25cd6748f704b6b244835"
+  integrity sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw==
+  dependencies:
+    "@babel/helper-module-imports" "^7.7.4"
+    "@babel/helper-simple-access" "^7.7.4"
+    "@babel/helper-split-export-declaration" "^7.7.4"
+    "@babel/template" "^7.7.4"
+    "@babel/types" "^7.7.4"
+    lodash "^4.17.13"
+
 "@babel/helper-optimise-call-expression@^7.7.4":
   version "7.7.4"
   resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz#034af31370d2995242aa4df402c3b7794b2dcdf2"
@@ -478,21 +490,21 @@
   dependencies:
     "@babel/helper-plugin-utils" "^7.0.0"
 
-"@babel/plugin-transform-modules-amd@^7.7.4":
-  version "7.7.4"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.4.tgz#276b3845ca2b228f2995e453adc2e6f54d72fb71"
-  integrity sha512-/542/5LNA18YDtg1F+QHvvUSlxdvjZoD/aldQwkq+E3WCkbEjNSN9zdrOXaSlfg3IfGi22ijzecklF/A7kVZFQ==
+"@babel/plugin-transform-modules-amd@^7.7.5":
+  version "7.7.5"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz#39e0fb717224b59475b306402bb8eedab01e729c"
+  integrity sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ==
   dependencies:
-    "@babel/helper-module-transforms" "^7.7.4"
+    "@babel/helper-module-transforms" "^7.7.5"
     "@babel/helper-plugin-utils" "^7.0.0"
     babel-plugin-dynamic-import-node "^2.3.0"
 
-"@babel/plugin-transform-modules-commonjs@^7.7.4":
-  version "7.7.4"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.4.tgz#bee4386e550446343dd52a571eda47851ff857a3"
-  integrity sha512-k8iVS7Jhc367IcNF53KCwIXtKAH7czev866ThsTgy8CwlXjnKZna2VHwChglzLleYrcHz1eQEIJlGRQxB53nqA==
+"@babel/plugin-transform-modules-commonjs@^7.7.5":
+  version "7.7.5"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz#1d27f5eb0bcf7543e774950e5b2fa782e637b345"
+  integrity sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q==
   dependencies:
-    "@babel/helper-module-transforms" "^7.7.4"
+    "@babel/helper-module-transforms" "^7.7.5"
     "@babel/helper-plugin-utils" "^7.0.0"
     "@babel/helper-simple-access" "^7.7.4"
     babel-plugin-dynamic-import-node "^2.3.0"
@@ -592,10 +604,10 @@
     "@babel/helper-plugin-utils" "^7.0.0"
     "@babel/plugin-syntax-jsx" "^7.7.4"
 
-"@babel/plugin-transform-regenerator@^7.7.4":
-  version "7.7.4"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.4.tgz#d18eac0312a70152d7d914cbed2dc3999601cfc0"
-  integrity sha512-e7MWl5UJvmPEwFJTwkBlPmqixCtr9yAASBqff4ggXTNicZiwbF8Eefzm6NVgfiBp7JdAGItecnctKTgH44q2Jw==
+"@babel/plugin-transform-regenerator@^7.7.5":
+  version "7.7.5"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz#3a8757ee1a2780f390e89f246065ecf59c26fce9"
+  integrity sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw==
   dependencies:
     regenerator-transform "^0.14.0"
 
@@ -661,10 +673,10 @@
     "@babel/helper-create-regexp-features-plugin" "^7.7.4"
     "@babel/helper-plugin-utils" "^7.0.0"
 
-"@babel/preset-env@^7.7.4":
-  version "7.7.4"
-  resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.4.tgz#ccaf309ae8d1ee2409c85a4e2b5e280ceee830f8"
-  integrity sha512-Dg+ciGJjwvC1NIe/DGblMbcGq1HOtKbw8RLl4nIjlfcILKEOkWT/vRqPpumswABEBVudii6dnVwrBtzD7ibm4g==
+"@babel/preset-env@^7.7.6":
+  version "7.7.6"
+  resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.6.tgz#39ac600427bbb94eec6b27953f1dfa1d64d457b2"
+  integrity sha512-k5hO17iF/Q7tR9Jv8PdNBZWYW6RofxhnxKjBMc0nG4JTaWvOTiPoO/RLFwAKcA4FpmuBFm6jkoqaRJLGi0zdaQ==
   dependencies:
     "@babel/helper-module-imports" "^7.7.4"
     "@babel/helper-plugin-utils" "^7.0.0"
@@ -694,8 +706,8 @@
     "@babel/plugin-transform-function-name" "^7.7.4"
     "@babel/plugin-transform-literals" "^7.7.4"
     "@babel/plugin-transform-member-expression-literals" "^7.7.4"
-    "@babel/plugin-transform-modules-amd" "^7.7.4"
-    "@babel/plugin-transform-modules-commonjs" "^7.7.4"
+    "@babel/plugin-transform-modules-amd" "^7.7.5"
+    "@babel/plugin-transform-modules-commonjs" "^7.7.5"
     "@babel/plugin-transform-modules-systemjs" "^7.7.4"
     "@babel/plugin-transform-modules-umd" "^7.7.4"
     "@babel/plugin-transform-named-capturing-groups-regex" "^7.7.4"
@@ -703,7 +715,7 @@
     "@babel/plugin-transform-object-super" "^7.7.4"
     "@babel/plugin-transform-parameters" "^7.7.4"
     "@babel/plugin-transform-property-literals" "^7.7.4"
-    "@babel/plugin-transform-regenerator" "^7.7.4"
+    "@babel/plugin-transform-regenerator" "^7.7.5"
     "@babel/plugin-transform-reserved-words" "^7.7.4"
     "@babel/plugin-transform-shorthand-properties" "^7.7.4"
     "@babel/plugin-transform-spread" "^7.7.4"
@@ -713,7 +725,7 @@
     "@babel/plugin-transform-unicode-regex" "^7.7.4"
     "@babel/types" "^7.7.4"
     browserslist "^4.6.0"
-    core-js-compat "^3.1.1"
+    core-js-compat "^3.4.7"
     invariant "^2.2.2"
     js-levenshtein "^1.1.3"
     semver "^5.5.0"
@@ -2138,14 +2150,14 @@ browserify-zlib@^0.2.0:
   dependencies:
     pako "~1.0.5"
 
-browserslist@^4.0.0, browserslist@^4.6.0, browserslist@^4.8.0:
-  version "4.8.0"
-  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.0.tgz#6f06b0f974a7cc3a84babc2ccc56493668e3c789"
-  integrity sha512-HYnxc/oLRWvJ3TsGegR0SRL/UDnknGq2s/a8dYYEO+kOQ9m9apKoS5oiathLKZdh/e9uE+/J3j92qPlGD/vTqA==
+browserslist@^4.0.0, browserslist@^4.6.0, browserslist@^4.8.0, browserslist@^4.8.2:
+  version "4.8.2"
+  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.2.tgz#b45720ad5fbc8713b7253c20766f701c9a694289"
+  integrity sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==
   dependencies:
-    caniuse-lite "^1.0.30001012"
-    electron-to-chromium "^1.3.317"
-    node-releases "^1.1.41"
+    caniuse-lite "^1.0.30001015"
+    electron-to-chromium "^1.3.322"
+    node-releases "^1.1.42"
 
 bser@^2.0.0:
   version "2.0.0"
@@ -2319,6 +2331,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001012:
   resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001013.tgz#da2440d4d266a17d40eb79bd19c0c8cc1d029c72"
   integrity sha512-hOAXaWKuq/UVFgYawxIOdPdyMQdYcwOCDOjnZcKn7wCgFUrhP7smuNZjGLuJlPSgE6aRA4cRJ+bGSrhtEt7ZAg==
 
+caniuse-lite@^1.0.30001015:
+  version "1.0.30001016"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001016.tgz#16ea48d7d6e8caf3cad3295c2d746fe38c4e7f66"
+  integrity sha512-yYQ2QfotceRiH4U+h1Us86WJXtVHDmy3nEKIdYPsZCYnOV5/tMgGbmoIlrMzmh2VXlproqYtVaKeGDBkMZifFA==
+
 capture-exit@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f"
@@ -2749,19 +2766,13 @@ copy-webpack-plugin@^5.0.5:
     serialize-javascript "^2.1.0"
     webpack-log "^2.0.0"
 
-core-js-compat@^3.1.1:
-  version "3.1.3"
-  resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.3.tgz#0cc3ba4c7f62928c2837e1cffbe8dc78b4f1ae14"
-  integrity sha512-EP018pVhgwsKHz3YoN1hTq49aRe+h017Kjz0NQz3nXV0cCRMvH3fLQl+vEPGr4r4J5sk4sU3tUC7U1aqTCeJeA==
+core-js-compat@^3.4.7:
+  version "3.5.0"
+  resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.5.0.tgz#5a11a619a9e9dd2dcf1c742b2060bc4a2143e5b6"
+  integrity sha512-E7iJB72svRjJTnm9HDvujzNVMCm3ZcDYEedkJ/sDTNsy/0yooCd9Cg7GSzE7b4e0LfIkjijdB1tqg0pGwxWeWg==
   dependencies:
-    browserslist "^4.6.0"
-    core-js-pure "3.1.3"
-    semver "^6.1.0"
-
-core-js-pure@3.1.3:
-  version "3.1.3"
-  resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.3.tgz#4c90752d5b9471f641514f3728f51c1e0783d0b5"
-  integrity sha512-k3JWTrcQBKqjkjI0bkfXS0lbpWPxYuHWfMMjC1VDmzU4Q58IwSbuXSo99YO/hUHlw/EB4AlfA2PVxOGkrIq6dA==
+    browserslist "^4.8.2"
+    semver "^6.3.0"
 
 core-js@^1.0.0:
   version "1.2.7"
@@ -3500,10 +3511,10 @@ ejs@^2.3.4, ejs@^2.6.1:
   resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.1.tgz#5b5ab57f718b79d4aca9254457afecd36fa80228"
   integrity sha512-kS/gEPzZs3Y1rRsbGX4UOSjtP/CeJP0CxSNZHYxGfVM/VgLcv0ZqM7C45YyTj2DI2g7+P9Dd24C+IMIg6D0nYQ==
 
-electron-to-chromium@^1.3.317:
-  version "1.3.321"
-  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.321.tgz#913869f5ec85daabba0e75c9c314b4bf26cdb01e"
-  integrity sha512-jJy/BZK2s2eAjMPXVMSaCmo7/pSY2aKkfQ+LoAb5Wk39qAhyP9r8KU74c4qTgr9cD/lPUhJgReZxxqU0n5puog==
+electron-to-chromium@^1.3.322:
+  version "1.3.322"
+  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8"
+  integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==
 
 elliptic@^6.0.0:
   version "6.5.1"
@@ -7106,10 +7117,10 @@ node-pre-gyp@^0.12.0:
     semver "^5.3.0"
     tar "^4"
 
-node-releases@^1.1.41:
-  version "1.1.41"
-  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.41.tgz#57674a82a37f812d18e3b26118aefaf53a00afed"
-  integrity sha512-+IctMa7wIs8Cfsa8iYzeaLTFwv5Y4r5jZud+4AnfymzeEXKBCavFX0KBgzVaPVqf0ywa6PrO8/b+bPqdwjGBSg==
+node-releases@^1.1.42:
+  version "1.1.42"
+  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.42.tgz#a999f6a62f8746981f6da90627a8d2fc090bbad7"
+  integrity sha512-OQ/ESmUqGawI2PRX+XIRao44qWYBBfN54ImQYdWVTQqUckuejOg76ysSqDBK8NG3zwySRVnX36JwDQ6x+9GxzA==
   dependencies:
     semver "^6.3.0"
 
@@ -9439,7 +9450,7 @@ semver@4.3.2:
   resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7"
   integrity sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c=
 
-semver@^6.0.0, semver@^6.1.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
+semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
   version "6.3.0"
   resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
   integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==

From 3830c0b74168070cdd410d311ba85a3b323bca9f Mon Sep 17 00:00:00 2001
From: scd31 <57571338+scd31@users.noreply.github.com>
Date: Tue, 17 Dec 2019 12:30:58 +0000
Subject: [PATCH 14/39] Increase max backup size (#12602)

* Increased max backup size

* partially reverted schema.rb
---
 app/models/backup.rb                          |  2 +-
 .../20191212003415_increase_backup_size.rb    |  9 ++++++
 db/schema.rb                                  | 28 ++-----------------
 3 files changed, 12 insertions(+), 27 deletions(-)
 create mode 100644 db/migrate/20191212003415_increase_backup_size.rb

diff --git a/app/models/backup.rb b/app/models/backup.rb
index c2651313b1..8eeb1748aa 100644
--- a/app/models/backup.rb
+++ b/app/models/backup.rb
@@ -7,7 +7,7 @@
 #  user_id           :bigint(8)
 #  dump_file_name    :string
 #  dump_content_type :string
-#  dump_file_size    :integer
+#  dump_file_size    :bigint
 #  dump_updated_at   :datetime
 #  processed         :boolean          default(FALSE), not null
 #  created_at        :datetime         not null
diff --git a/db/migrate/20191212003415_increase_backup_size.rb b/db/migrate/20191212003415_increase_backup_size.rb
new file mode 100644
index 0000000000..782c67db1e
--- /dev/null
+++ b/db/migrate/20191212003415_increase_backup_size.rb
@@ -0,0 +1,9 @@
+class IncreaseBackupSize < ActiveRecord::Migration[5.2]
+  def up
+    change_column :backups, :dump_file_size, :bigint
+  end
+
+  def down
+    change_column :backups, :dump_file_size, :integer
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 84c76e4cea..5a6b2530c7 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 2019_10_31_163205) do
+ActiveRecord::Schema.define(version: 2019_12_12_003415) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"
@@ -200,7 +200,7 @@ ActiveRecord::Schema.define(version: 2019_10_31_163205) do
     t.bigint "user_id"
     t.string "dump_file_name"
     t.string "dump_content_type"
-    t.integer "dump_file_size"
+    t.bigint "dump_file_size"
     t.datetime "dump_updated_at"
     t.boolean "processed", default: false, null: false
     t.datetime "created_at", null: false
@@ -703,30 +703,6 @@ ActiveRecord::Schema.define(version: 2019_10_31_163205) do
     t.index ["tag_id", "status_id"], name: "index_statuses_tags_on_tag_id_and_status_id", unique: true
   end
 
-  create_table "stream_entries", force: :cascade do |t|
-    t.bigint "activity_id"
-    t.string "activity_type"
-    t.datetime "created_at", null: false
-    t.datetime "updated_at", null: false
-    t.boolean "hidden", default: false, null: false
-    t.bigint "account_id"
-    t.index ["account_id", "activity_type", "id"], name: "index_stream_entries_on_account_id_and_activity_type_and_id"
-    t.index ["activity_id", "activity_type"], name: "index_stream_entries_on_activity_id_and_activity_type"
-  end
-
-  create_table "subscriptions", force: :cascade do |t|
-    t.string "callback_url", default: "", null: false
-    t.string "secret"
-    t.datetime "expires_at"
-    t.boolean "confirmed", default: false, null: false
-    t.datetime "created_at", null: false
-    t.datetime "updated_at", null: false
-    t.datetime "last_successful_delivery_at"
-    t.string "domain"
-    t.bigint "account_id", null: false
-    t.index ["account_id", "callback_url"], name: "index_subscriptions_on_account_id_and_callback_url", unique: true
-  end
-
   create_table "tags", force: :cascade do |t|
     t.string "name", default: "", null: false
     t.datetime "created_at", null: false

From da2143b3089ec16fca449b97acbfb65acfe92197 Mon Sep 17 00:00:00 2001
From: ThibG <thib@sitedethib.com>
Date: Tue, 17 Dec 2019 13:31:56 +0100
Subject: [PATCH 15/39] Fixes featured hashtag setting page erroring out
 instead of rejecting invalid tags (#12436)

* Revert "Fix ignoring whole status because of one invalid hashtag (#11621)"

This reverts commit dff46b260b2f7d765d254c84a4b89105c7de5e97.

* Fix statuses being rejected because of invalid hashtag names

* Add spec for invalid hashtag names in statuses

* Add test for featured tags controller
---
 app/lib/activitypub/activity/create.rb        |  2 +-
 app/models/tag.rb                             |  2 +-
 .../settings/featured_tags_controller_spec.rb | 43 +++++++++++++++++++
 spec/lib/activitypub/activity/create_spec.rb  | 22 ++++++++++
 4 files changed, 67 insertions(+), 2 deletions(-)
 create mode 100644 spec/controllers/settings/featured_tags_controller_spec.rb

diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index 8a12a2b08b..756d5cb1c3 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -157,7 +157,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
     return if tag['name'].blank?
 
     Tag.find_or_create_by_names(tag['name']) do |hashtag|
-      @tags << hashtag unless @tags.include?(hashtag)
+      @tags << hashtag unless @tags.include?(hashtag) || !hashtag.valid?
     end
   rescue ActiveRecord::RecordInvalid
     nil
diff --git a/app/models/tag.rb b/app/models/tag.rb
index d3a7e1e6d4..bce76fc166 100644
--- a/app/models/tag.rb
+++ b/app/models/tag.rb
@@ -117,7 +117,7 @@ class Tag < ApplicationRecord
   class << self
     def find_or_create_by_names(name_or_names)
       Array(name_or_names).map(&method(:normalize)).uniq { |str| str.mb_chars.downcase.to_s }.map do |normalized_name|
-        tag = matching_name(normalized_name).first || create!(name: normalized_name)
+        tag = matching_name(normalized_name).first || create(name: normalized_name)
 
         yield tag if block_given?
 
diff --git a/spec/controllers/settings/featured_tags_controller_spec.rb b/spec/controllers/settings/featured_tags_controller_spec.rb
new file mode 100644
index 0000000000..33b87f9f67
--- /dev/null
+++ b/spec/controllers/settings/featured_tags_controller_spec.rb
@@ -0,0 +1,43 @@
+require 'rails_helper'
+
+describe Settings::FeaturedTagsController do
+  render_views
+
+  shared_examples 'authenticate user' do
+    it 'redirects to sign_in page' do
+      is_expected.to redirect_to new_user_session_path
+    end
+  end
+
+  describe 'POST #create' do
+    context 'when user is not sign in' do
+      subject { post :create }
+
+      it_behaves_like 'authenticate user'
+    end
+
+    context 'when user is sign in' do
+      subject { post :create, params: { featured_tag: params } }
+
+      let(:user) { Fabricate(:user, password: '12345678') }
+
+      before { sign_in user, scope: :user }
+
+      context 'when parameter is valid' do
+        let(:params) { { name: 'test' } }
+
+        it 'creates featured tag' do
+          expect { subject }.to change { user.account.featured_tags.count }.by(1)
+        end
+      end
+
+      context 'when parameter is invalid' do
+        let(:params) { { name: 'test, #foo !bleh' } }
+
+        it 'renders new' do
+          expect(subject).to render_template :index
+        end
+      end
+    end
+  end
+end
diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb
index b709954a30..c4efb5cc93 100644
--- a/spec/lib/activitypub/activity/create_spec.rb
+++ b/spec/lib/activitypub/activity/create_spec.rb
@@ -378,6 +378,28 @@ RSpec.describe ActivityPub::Activity::Create do
         end
       end
 
+      context 'with hashtags invalid name' do
+        let(:object_json) do
+          {
+            id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
+            type: 'Note',
+            content: 'Lorem ipsum',
+            tag: [
+              {
+                type: 'Hashtag',
+                href: 'http://example.com/blah',
+                name: 'foo, #eh !',
+              },
+            ],
+          }
+        end
+
+        it 'creates status' do
+          status = sender.statuses.first
+          expect(status).to_not be_nil
+        end
+      end
+
       context 'with emojis' do
         let(:object_json) do
           {

From 2ee5a9d9c319f187d4e94f6974654e1701e427eb Mon Sep 17 00:00:00 2001
From: ThibG <thib@sitedethib.com>
Date: Tue, 17 Dec 2019 13:32:57 +0100
Subject: [PATCH 16/39] Clean up OStatus-related codepaths (#12173)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Remove “protocol” argument and return value, as only ActivityPub is supported

* Remove FetchRemoteAccountService, only use ActivityPub::FetchRemoteAccountService

* Fix tests
---
 app/lib/activitypub/activity/create.rb        |  2 +-
 app/services/fetch_remote_account_service.rb  | 17 -------
 app/services/fetch_remote_status_service.rb   |  9 ++--
 app/services/fetch_resource_service.rb        |  2 +-
 app/services/resolve_url_service.rb           | 10 ++--
 .../fetch_remote_account_service_spec.rb      | 50 -------------------
 .../fetch_remote_status_service_spec.rb       |  7 ++-
 spec/services/fetch_resource_service_spec.rb  |  8 +--
 8 files changed, 15 insertions(+), 90 deletions(-)
 delete mode 100644 app/services/fetch_remote_account_service.rb
 delete mode 100644 spec/services/fetch_remote_account_service_spec.rb

diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index 756d5cb1c3..c55cfe08ea 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -167,7 +167,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
     return if tag['href'].blank?
 
     account = account_from_uri(tag['href'])
-    account = ::FetchRemoteAccountService.new.call(tag['href']) if account.nil?
+    account = ActivityPub::FetchRemoteAccountService.new.call(tag['href']) if account.nil?
 
     return if account.nil?
 
diff --git a/app/services/fetch_remote_account_service.rb b/app/services/fetch_remote_account_service.rb
deleted file mode 100644
index 3cd06e30f6..0000000000
--- a/app/services/fetch_remote_account_service.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-# frozen_string_literal: true
-
-class FetchRemoteAccountService < BaseService
-  def call(url, prefetched_body = nil, protocol = :ostatus)
-    if prefetched_body.nil?
-      resource_url, resource_options, protocol = FetchResourceService.new.call(url)
-    else
-      resource_url     = url
-      resource_options = { prefetched_body: prefetched_body }
-    end
-
-    case protocol
-    when :activitypub
-      ActivityPub::FetchRemoteAccountService.new.call(resource_url, **resource_options)
-    end
-  end
-end
diff --git a/app/services/fetch_remote_status_service.rb b/app/services/fetch_remote_status_service.rb
index 208dc7809c..21d277aff7 100644
--- a/app/services/fetch_remote_status_service.rb
+++ b/app/services/fetch_remote_status_service.rb
@@ -1,17 +1,14 @@
 # frozen_string_literal: true
 
 class FetchRemoteStatusService < BaseService
-  def call(url, prefetched_body = nil, protocol = :ostatus)
+  def call(url, prefetched_body = nil)
     if prefetched_body.nil?
-      resource_url, resource_options, protocol = FetchResourceService.new.call(url)
+      resource_url, resource_options = FetchResourceService.new.call(url)
     else
       resource_url     = url
       resource_options = { prefetched_body: prefetched_body }
     end
 
-    case protocol
-    when :activitypub
-      ActivityPub::FetchRemoteStatusService.new.call(resource_url, **resource_options)
-    end
+    ActivityPub::FetchRemoteStatusService.new.call(resource_url, **resource_options)
   end
 end
diff --git a/app/services/fetch_resource_service.rb b/app/services/fetch_resource_service.rb
index 3676d899d2..34382d279a 100644
--- a/app/services/fetch_resource_service.rb
+++ b/app/services/fetch_resource_service.rb
@@ -33,7 +33,7 @@ class FetchResourceService < BaseService
       body = response.body_with_limit
       json = body_to_json(body)
 
-      [json['id'], { prefetched_body: body, id: true }, :activitypub] if supported_context?(json) && (equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) || expected_type?(json))
+      [json['id'], { prefetched_body: body, id: true }] if supported_context?(json) && (equals_or_includes_any?(json['type'], ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES) || expected_type?(json))
     elsif !terminal
       link_header = response['Link'] && parse_link_header(response)
 
diff --git a/app/services/resolve_url_service.rb b/app/services/resolve_url_service.rb
index 4e971a4b8e..79b1bad0c2 100644
--- a/app/services/resolve_url_service.rb
+++ b/app/services/resolve_url_service.rb
@@ -19,9 +19,9 @@ class ResolveURLService < BaseService
 
   def process_url
     if equals_or_includes_any?(type, ActivityPub::FetchRemoteAccountService::SUPPORTED_TYPES)
-      FetchRemoteAccountService.new.call(resource_url, body, protocol)
+      ActivityPub::FetchRemoteAccountService.new.call(resource_url, prefetched_body: body)
     elsif equals_or_includes_any?(type, ActivityPub::Activity::Create::SUPPORTED_TYPES + ActivityPub::Activity::Create::CONVERTED_TYPES)
-      status = FetchRemoteStatusService.new.call(resource_url, body, protocol)
+      status = FetchRemoteStatusService.new.call(resource_url, body)
       authorize_with @on_behalf_of, status, :show? unless status.nil?
       status
     elsif fetched_resource.nil? && @on_behalf_of.present?
@@ -45,12 +45,8 @@ class ResolveURLService < BaseService
     fetched_resource.second[:prefetched_body]
   end
 
-  def protocol
-    fetched_resource.third
-  end
-
   def type
-    return json_data['type'] if protocol == :activitypub
+    json_data['type']
   end
 
   def json_data
diff --git a/spec/services/fetch_remote_account_service_spec.rb b/spec/services/fetch_remote_account_service_spec.rb
deleted file mode 100644
index ee7325be28..0000000000
--- a/spec/services/fetch_remote_account_service_spec.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe FetchRemoteAccountService, type: :service do
-  let(:url) { 'https://example.com/alice' }
-  let(:prefetched_body) { nil }
-  let(:protocol) { :ostatus }
-
-  subject { FetchRemoteAccountService.new.call(url, prefetched_body, protocol) }
-
-  let(:actor) do
-    {
-      '@context': 'https://www.w3.org/ns/activitystreams',
-      id: 'https://example.com/alice',
-      type: 'Person',
-      preferredUsername: 'alice',
-      name: 'Alice',
-      summary: 'Foo bar',
-      inbox: 'http://example.com/alice/inbox',
-    }
-  end
-
-  let(:webfinger) { { subject: 'acct:alice@example.com', links: [{ rel: 'self', href: 'https://example.com/alice' }] } }
-  let(:xml) { File.read(Rails.root.join('spec', 'fixtures', 'xml', 'mastodon.atom')) }
-
-  shared_examples 'return Account' do
-    it { is_expected.to be_an Account }
-  end
-
-  context 'protocol is :activitypub' do
-    let(:prefetched_body) { Oj.dump(actor) }
-    let(:protocol) { :activitypub }
-
-    before do
-      stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' })
-    end
-
-    include_examples 'return Account'
-  end
-
-  context 'when prefetched_body is nil' do
-    context 'protocol is :activitypub' do
-      before do
-        stub_request(:get, url).to_return(status: 200, body: Oj.dump(actor), headers: { 'Content-Type' => 'application/activity+json' })
-        stub_request(:get, 'https://example.com/.well-known/webfinger?resource=acct:alice@example.com').to_return(body: Oj.dump(webfinger), headers: { 'Content-Type': 'application/jrd+json' })
-      end
-
-      include_examples 'return Account'
-    end
-  end
-end
diff --git a/spec/services/fetch_remote_status_service_spec.rb b/spec/services/fetch_remote_status_service_spec.rb
index f9db024b93..1c4b4fee26 100644
--- a/spec/services/fetch_remote_status_service_spec.rb
+++ b/spec/services/fetch_remote_status_service_spec.rb
@@ -16,9 +16,8 @@ RSpec.describe FetchRemoteStatusService, type: :service do
   end
 
   context 'protocol is :activitypub' do
-    subject { described_class.new.call(note[:id], prefetched_body, protocol) }
+    subject { described_class.new.call(note[:id], prefetched_body) }
     let(:prefetched_body) { Oj.dump(note) }
-    let(:protocol) { :activitypub }
 
     before do
       account.update(uri: ActivityPub::TagManager.instance.uri_for(account))
@@ -59,7 +58,7 @@ RSpec.describe FetchRemoteStatusService, type: :service do
         </entry>
       XML
 
-      expect(subject.call('https://fake.domain/foo', status_body, :ostatus)).to be_nil
+      expect(subject.call('https://fake.domain/foo', status_body)).to be_nil
     end
 
     it 'does not create status with wrong id when id uses http format' do
@@ -81,7 +80,7 @@ RSpec.describe FetchRemoteStatusService, type: :service do
         </entry>
       XML
 
-      expect(subject.call('https://real.domain/statuses/456', status_body, :ostatus)).to be_nil
+      expect(subject.call('https://real.domain/statuses/456', status_body)).to be_nil
     end
   end
 end
diff --git a/spec/services/fetch_resource_service_spec.rb b/spec/services/fetch_resource_service_spec.rb
index f836147d35..3af6a06899 100644
--- a/spec/services/fetch_resource_service_spec.rb
+++ b/spec/services/fetch_resource_service_spec.rb
@@ -71,14 +71,14 @@ RSpec.describe FetchResourceService, type: :service do
         let(:content_type) { 'application/activity+json; charset=utf-8' }
         let(:body) { json }
 
-        it { is_expected.to eq [1, { prefetched_body: body, id: true }, :activitypub] }
+        it { is_expected.to eq [1, { prefetched_body: body, id: true }] }
       end
 
       context 'when content type is ld+json with profile' do
         let(:content_type) { 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' }
         let(:body) { json }
 
-        it { is_expected.to eq [1, { prefetched_body: body, id: true }, :activitypub] }
+        it { is_expected.to eq [1, { prefetched_body: body, id: true }] }
       end
 
       before do
@@ -89,14 +89,14 @@ RSpec.describe FetchResourceService, type: :service do
       context 'when link header is present' do
         let(:headers) { { 'Link' => '<http://example.com/foo>; rel="alternate"; type="application/activity+json"', } }
 
-        it { is_expected.to eq [1, { prefetched_body: json, id: true }, :activitypub] }
+        it { is_expected.to eq [1, { prefetched_body: json, id: true }] }
       end
 
       context 'when content type is text/html' do
         let(:content_type) { 'text/html' }
         let(:body) { '<html><head><link rel="alternate" href="http://example.com/foo" type="application/activity+json"/></head></html>' }
 
-        it { is_expected.to eq [1, { prefetched_body: json, id: true }, :activitypub] }
+        it { is_expected.to eq [1, { prefetched_body: json, id: true }] }
       end
     end
   end

From 7fe45e7c0317a896f3edfa1473489696dc7f0cf1 Mon Sep 17 00:00:00 2001
From: ThibG <thib@sitedethib.com>
Date: Tue, 17 Dec 2019 13:33:36 +0100
Subject: [PATCH 17/39] Changes to tootctl statuses remove (#11267)

* Fix comments in statuses_cli

The comment for the part of query keeping statuses which have replies was
incorrect, explaining the part of the query kept favourited statuses instead

* Keep statuses favourited by local users in tootctl statuses remove

* Do delete old replies that are not direct interactions with local users

* Skip reblogs of local statuses instead of all reblogs

* Optimize some queries

* Keep old statuses with recent reblogs

* Add option to clear toots from followed accounts too
---
 lib/mastodon/statuses_cli.rb | 32 +++++++++++++++++++++-----------
 1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/lib/mastodon/statuses_cli.rb b/lib/mastodon/statuses_cli.rb
index 4d9af0a540..74f15de5f7 100644
--- a/lib/mastodon/statuses_cli.rb
+++ b/lib/mastodon/statuses_cli.rb
@@ -13,6 +13,7 @@ module Mastodon
     end
 
     option :days, type: :numeric, default: 90
+    option :clean_followed, type: :boolean
     desc 'remove', 'Remove unreferenced statuses'
     long_desc <<~LONG_DESC
       Remove statuses that are not referenced by local user activity, such as
@@ -34,17 +35,26 @@ module Mastodon
 
       say('Beginning removal... This might take a while...')
 
-      Status.remote
-            .where('id < ?', max_id)
-            .where(reblog_of_id: nil)                                                                                                                                                                                              # Skip reblogs
-            .where(in_reply_to_id: nil)                                                                                                                                                                                            # Skip replies
-            .where('id NOT IN (SELECT status_pins.status_id FROM status_pins WHERE statuses.id = status_id)')                                                                                                                      # Skip statuses that are pinned on profiles
-            .where('id NOT IN (SELECT mentions.status_id FROM mentions WHERE statuses.id = mentions.status_id AND mentions.account_id IN (SELECT accounts.id FROM accounts WHERE domain IS NULL))')                                # Skip statuses that mention local accounts
-            .where('id NOT IN (SELECT statuses1.in_reply_to_id FROM statuses AS statuses1 WHERE statuses.id = statuses1.in_reply_to_id)')                                                                                          # Skip statuses favourited by local accounts
-            .where('id NOT IN (SELECT statuses1.reblog_of_id FROM statuses AS statuses1 WHERE statuses.id = statuses1.reblog_of_id AND statuses1.account_id IN (SELECT accounts.id FROM accounts WHERE accounts.domain IS NULL))') # Skip statuses reblogged by local accounts
-            .where('account_id NOT IN (SELECT follows.target_account_id FROM follows WHERE statuses.account_id = follows.target_account_id)')                                                                                      # Skip accounts followed by local accounts
-            .in_batches
-            .delete_all
+      scope = Status.remote.where('id < ?', max_id)
+      # Skip reblogs of local statuses
+      scope = scope.where('reblog_of_id NOT IN (SELECT statuses1.id FROM statuses AS statuses1 WHERE statuses1.id = statuses.reblog_of_id AND (statuses1.uri IS NULL OR statuses1.local))')
+      # Skip statuses that are pinned on profiles
+      scope = scope.where('id NOT IN (SELECT status_pins.status_id FROM status_pins WHERE statuses.id = status_id)')
+      # Skip statuses that mention local accounts
+      scope = scope.where('id NOT IN (SELECT mentions.status_id FROM mentions WHERE statuses.id = mentions.status_id AND mentions.account_id IN (SELECT accounts.id FROM accounts WHERE domain IS NULL))')
+      # Skip statuses which have replies
+      scope = scope.where('id NOT IN (SELECT statuses1.in_reply_to_id FROM statuses AS statuses1 WHERE statuses.id = statuses1.in_reply_to_id)')
+      # Skip statuses reblogged by local accounts or with recent boosts
+      scope = scope.where('id NOT IN (SELECT statuses1.reblog_of_id FROM statuses AS statuses1 WHERE statuses.id = statuses1.reblog_of_id AND (statuses1.uri IS NULL OR statuses1.local OR statuses1.id >= ?))', max_id)
+      # Skip statuses favourited by local users
+      scope = scope.where('id NOT IN (SELECT favourites.status_id FROM favourites WHERE statuses.id = favourites.status_id AND favourites.account_id IN (SELECT accounts.id FROM accounts WHERE domain IS NULL))')
+
+      unless options[:clean_followed]
+        # Skip accounts followed by local accounts
+        scope = scope.where('account_id NOT IN (SELECT follows.target_account_id FROM follows WHERE statuses.account_id = follows.target_account_id)')
+      end
+
+      scope.in_batches.delete_all
 
       say('Beginning removal of now-orphaned media attachments to free up disk space...')
 

From 71b4e2dcbb701977296384c897138b5d71a1fcac Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed, 18 Dec 2019 03:32:51 +0900
Subject: [PATCH 18/39] Bump parallel_tests from 2.29.2 to 2.30.0 (#12634)

Bumps [parallel_tests](https://github.com/grosser/parallel_tests) from 2.29.2 to 2.30.0.
- [Release notes](https://github.com/grosser/parallel_tests/releases)
- [Commits](https://github.com/grosser/parallel_tests/compare/v2.29.2...v2.30.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 Gemfile      | 2 +-
 Gemfile.lock | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Gemfile b/Gemfile
index 43696f461a..c7679fa3ab 100644
--- a/Gemfile
+++ b/Gemfile
@@ -122,7 +122,7 @@ group :test do
   gem 'rspec-sidekiq', '~> 3.0'
   gem 'simplecov', '~> 0.17', require: false
   gem 'webmock', '~> 3.7'
-  gem 'parallel_tests', '~> 2.29'
+  gem 'parallel_tests', '~> 2.30'
 end
 
 group :development do
diff --git a/Gemfile.lock b/Gemfile.lock
index 582c71c65a..d088bd4df2 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -424,7 +424,7 @@ GEM
       av (~> 0.9.0)
       paperclip (>= 2.5.2)
     parallel (1.19.1)
-    parallel_tests (2.29.2)
+    parallel_tests (2.30.0)
       parallel
     parser (2.6.5.0)
       ast (~> 2.4.0)
@@ -753,7 +753,7 @@ DEPENDENCIES
   paperclip (~> 6.0)
   paperclip-av-transcoder (~> 0.6)
   parallel (~> 1.19)
-  parallel_tests (~> 2.29)
+  parallel_tests (~> 2.30)
   parslet
   pg (~> 1.1)
   pghero (~> 2.4)

From d5fe6249927e1187292e5adb4b84404788d27a21 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed, 18 Dec 2019 03:34:20 +0900
Subject: [PATCH 19/39] Bump stackprof from 0.2.13 to 0.2.14 (#12631)

Bumps [stackprof](https://github.com/tmm1/stackprof) from 0.2.13 to 0.2.14.
- [Release notes](https://github.com/tmm1/stackprof/releases)
- [Changelog](https://github.com/tmm1/stackprof/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tmm1/stackprof/compare/v0.2.13...v0.2.14)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 Gemfile.lock | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index d088bd4df2..82b9db8f91 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -615,7 +615,7 @@ GEM
     sshkit (1.20.0)
       net-scp (>= 1.1.2)
       net-ssh (>= 2.8.0)
-    stackprof (0.2.13)
+    stackprof (0.2.14)
     statsd-ruby (1.4.0)
     stoplight (2.2.0)
     streamio-ffmpeg (3.0.2)

From 99adf00d111540f3b3ef7c3b00c23264e46941fa Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed, 18 Dec 2019 03:36:49 +0900
Subject: [PATCH 20/39] Bump doorkeeper from 5.2.2 to 5.2.3 (#12630)

Bumps [doorkeeper](https://github.com/doorkeeper-gem/doorkeeper) from 5.2.2 to 5.2.3.
- [Release notes](https://github.com/doorkeeper-gem/doorkeeper/releases)
- [Changelog](https://github.com/doorkeeper-gem/doorkeeper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/doorkeeper-gem/doorkeeper/compare/v5.2.2...v5.2.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 Gemfile.lock | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index 82b9db8f91..da2a1c430b 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -134,7 +134,7 @@ GEM
       msgpack (~> 1.0)
     brakeman (4.7.2)
     browser (2.7.1)
-    builder (3.2.3)
+    builder (3.2.4)
     bullet (6.0.2)
       activesupport (>= 3.0.0)
       uniform_notifier (~> 1.11)
@@ -218,7 +218,7 @@ GEM
     docile (1.3.2)
     domain_name (0.5.20180417)
       unf (>= 0.0.5, < 1.0.0)
-    doorkeeper (5.2.2)
+    doorkeeper (5.2.3)
       railties (>= 5)
     dotenv (2.7.5)
     dotenv-rails (2.7.5)
@@ -356,7 +356,7 @@ GEM
       activesupport (>= 4)
       railties (>= 4)
       request_store (~> 1.0)
-    loofah (2.3.1)
+    loofah (2.4.0)
       crass (~> 1.0.2)
       nokogiri (>= 1.5.9)
     mail (2.7.1)

From 49d1190a970c91d6a6fa8ad9c4fad16ed0d4ceba Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed, 18 Dec 2019 03:40:34 +0900
Subject: [PATCH 21/39] Bump array-includes from 3.0.3 to 3.1.0 (#12627)

Bumps [array-includes](https://github.com/es-shims/array-includes) from 3.0.3 to 3.1.0.
- [Release notes](https://github.com/es-shims/array-includes/releases)
- [Changelog](https://github.com/es-shims/array-includes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/es-shims/array-includes/compare/v3.0.3...v3.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 package.json |  2 +-
 yarn.lock    | 31 ++++++++++++++++++++++++-------
 2 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/package.json b/package.json
index dc6ca54d71..2040b8cbc5 100644
--- a/package.json
+++ b/package.json
@@ -69,7 +69,7 @@
     "@babel/runtime": "^7.7.6",
     "@gamestdio/websocket": "^0.3.2",
     "@clusterws/cws": "^0.16.0",
-    "array-includes": "^3.0.3",
+    "array-includes": "^3.1.0",
     "arrow-key-navigation": "^1.1.0",
     "autoprefixer": "^9.7.3",
     "axios": "^0.19.0",
diff --git a/yarn.lock b/yarn.lock
index a16c369e7a..d73239f44b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1604,13 +1604,13 @@ array-flatten@^2.1.0:
   resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
   integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
 
-array-includes@^3.0.3:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
-  integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=
+array-includes@^3.0.3, array-includes@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.0.tgz#48a929ef4c6bb1fa6dc4a92c9b023a261b0ca404"
+  integrity sha512-ONOEQoKrvXPKk7Su92Co0YMqYO32FfqJTzkKU9u2UpIXyYZIzLSvpdg4AwvSw4mSUW0czu6inK+zby6Oj6gDjQ==
   dependencies:
-    define-properties "^1.1.2"
-    es-abstract "^1.7.0"
+    define-properties "^1.1.3"
+    es-abstract "^1.17.0-next.0"
 
 array-union@^1.0.1:
   version "1.0.2"
@@ -3657,7 +3657,7 @@ error-ex@^1.2.0, error-ex@^1.3.1:
   dependencies:
     is-arrayish "^0.2.1"
 
-es-abstract@^1.10.0, es-abstract@^1.12.0, es-abstract@^1.13.0, es-abstract@^1.15.0, es-abstract@^1.5.0, es-abstract@^1.5.1, es-abstract@^1.7.0:
+es-abstract@^1.10.0, es-abstract@^1.12.0, es-abstract@^1.13.0, es-abstract@^1.15.0, es-abstract@^1.5.0, es-abstract@^1.5.1:
   version "1.16.2"
   resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.2.tgz#4e874331645e9925edef141e74fc4bd144669d34"
   integrity sha512-jYo/J8XU2emLXl3OLwfwtuFfuF2w6DYPs+xy9ZfVyPkDcrauu6LYrw/q2TyCtrbc/KUdCiC5e9UajRhgNkVopA==
@@ -3673,6 +3673,23 @@ es-abstract@^1.10.0, es-abstract@^1.12.0, es-abstract@^1.13.0, es-abstract@^1.15
     string.prototype.trimleft "^2.1.0"
     string.prototype.trimright "^2.1.0"
 
+es-abstract@^1.17.0-next.0:
+  version "1.17.0-next.1"
+  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0-next.1.tgz#94acc93e20b05a6e96dacb5ab2f1cb3a81fc2172"
+  integrity sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==
+  dependencies:
+    es-to-primitive "^1.2.1"
+    function-bind "^1.1.1"
+    has "^1.0.3"
+    has-symbols "^1.0.1"
+    is-callable "^1.1.4"
+    is-regex "^1.0.4"
+    object-inspect "^1.7.0"
+    object-keys "^1.1.1"
+    object.assign "^4.1.0"
+    string.prototype.trimleft "^2.1.0"
+    string.prototype.trimright "^2.1.0"
+
 es-to-primitive@^1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"

From 80fb452446dc7e17325f21485c2b95f527284696 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed, 18 Dec 2019 03:41:49 +0900
Subject: [PATCH 22/39] Bump css-loader from 3.2.0 to 3.3.2 (#12624)

Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 3.2.0 to 3.3.2.
- [Release notes](https://github.com/webpack-contrib/css-loader/releases)
- [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-loader/compare/v3.2.0...v3.3.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 package.json |  2 +-
 yarn.lock    | 28 ++++++++++++++--------------
 2 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/package.json b/package.json
index 2040b8cbc5..6cb59b3460 100644
--- a/package.json
+++ b/package.json
@@ -84,7 +84,7 @@
     "compression-webpack-plugin": "^3.0.1",
     "copy-webpack-plugin": "^5.0.5",
     "cross-env": "^6.0.3",
-    "css-loader": "^3.2.0",
+    "css-loader": "^3.3.2",
     "cssnano": "^4.1.10",
     "detect-passive-events": "^1.0.2",
     "dotenv": "^8.2.0",
diff --git a/yarn.lock b/yarn.lock
index d73239f44b..9f631becf3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2940,23 +2940,23 @@ css-list-helpers@^1.0.1:
   dependencies:
     tcomb "^2.5.0"
 
-css-loader@^3.2.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.2.0.tgz#bb570d89c194f763627fcf1f80059c6832d009b2"
-  integrity sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ==
+css-loader@^3.3.2:
+  version "3.3.2"
+  resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.3.2.tgz#41b2086528aa4fbf8c0692e874bc14f081129b21"
+  integrity sha512-4XSiURS+YEK2fQhmSaM1onnUm0VKWNf6WWBYjkp9YbSDGCBTVZ5XOM6Gkxo8tLgQlzkZOBJvk9trHlDk4gjEYg==
   dependencies:
     camelcase "^5.3.1"
     cssesc "^3.0.0"
     icss-utils "^4.1.1"
     loader-utils "^1.2.3"
     normalize-path "^3.0.0"
-    postcss "^7.0.17"
+    postcss "^7.0.23"
     postcss-modules-extract-imports "^2.0.0"
     postcss-modules-local-by-default "^3.0.2"
-    postcss-modules-scope "^2.1.0"
+    postcss-modules-scope "^2.1.1"
     postcss-modules-values "^3.0.0"
-    postcss-value-parser "^4.0.0"
-    schema-utils "^2.0.0"
+    postcss-value-parser "^4.0.2"
+    schema-utils "^2.6.0"
 
 css-select-base-adapter@~0.1.0:
   version "0.1.1"
@@ -8058,10 +8058,10 @@ postcss-modules-local-by-default@^3.0.2:
     postcss-selector-parser "^6.0.2"
     postcss-value-parser "^4.0.0"
 
-postcss-modules-scope@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb"
-  integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==
+postcss-modules-scope@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz#33d4fc946602eb5e9355c4165d68a10727689dba"
+  integrity sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==
   dependencies:
     postcss "^7.0.6"
     postcss-selector-parser "^6.0.0"
@@ -8259,7 +8259,7 @@ postcss@^5.0.16:
     source-map "^0.5.6"
     supports-color "^3.2.3"
 
-postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.23, postcss@^7.0.5, postcss@^7.0.6:
+postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.23, postcss@^7.0.5, postcss@^7.0.6:
   version "7.0.23"
   resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.23.tgz#9f9759fad661b15964f3cfc3140f66f1e05eadc1"
   integrity sha512-hOlMf3ouRIFXD+j2VJecwssTwbvsPGJVMzupptg+85WA+i7MwyrydmQAgY3R+m0Bc0exunhbJmijy8u8+vufuQ==
@@ -9429,7 +9429,7 @@ schema-utils@^1.0.0:
     ajv-errors "^1.0.0"
     ajv-keywords "^3.1.0"
 
-schema-utils@^2.0.0, schema-utils@^2.1.0, schema-utils@^2.6.1:
+schema-utils@^2.0.0, schema-utils@^2.1.0, schema-utils@^2.6.0, schema-utils@^2.6.1:
   version "2.6.1"
   resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f"
   integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==

From b6b2757fc7c5b81f6eb631f9dc6aa5ef8e879600 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed, 18 Dec 2019 03:42:02 +0900
Subject: [PATCH 23/39] Bump copy-webpack-plugin from 5.0.5 to 5.1.1 (#12621)

Bumps [copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin) from 5.0.5 to 5.1.1.
- [Release notes](https://github.com/webpack-contrib/copy-webpack-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/copy-webpack-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/copy-webpack-plugin/compare/v5.0.5...v5.1.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 package.json |  2 +-
 yarn.lock    | 12 ++++++------
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/package.json b/package.json
index 6cb59b3460..5f63039ec2 100644
--- a/package.json
+++ b/package.json
@@ -82,7 +82,7 @@
     "blurhash": "^1.1.3",
     "classnames": "^2.2.5",
     "compression-webpack-plugin": "^3.0.1",
-    "copy-webpack-plugin": "^5.0.5",
+    "copy-webpack-plugin": "^5.1.1",
     "cross-env": "^6.0.3",
     "css-loader": "^3.3.2",
     "cssnano": "^4.1.10",
diff --git a/yarn.lock b/yarn.lock
index 9f631becf3..66a3de7a0e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2748,10 +2748,10 @@ copy-descriptor@^0.1.0:
   resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
   integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
 
-copy-webpack-plugin@^5.0.5:
-  version "5.0.5"
-  resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.0.5.tgz#731df6a837a2ef0f8f8e2345bdfe9b7c62a2da68"
-  integrity sha512-7N68eIoQTyudAuxkfPT7HzGoQ+TsmArN/I3HFwG+lVE3FNzqvZKIiaxtYh4o3BIznioxUvx9j26+Rtsc9htQUQ==
+copy-webpack-plugin@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88"
+  integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==
   dependencies:
     cacache "^12.0.3"
     find-cache-dir "^2.1.0"
@@ -2763,7 +2763,7 @@ copy-webpack-plugin@^5.0.5:
     normalize-path "^3.0.0"
     p-limit "^2.2.1"
     schema-utils "^1.0.0"
-    serialize-javascript "^2.1.0"
+    serialize-javascript "^2.1.2"
     webpack-log "^2.0.0"
 
 core-js-compat@^3.4.7:
@@ -9496,7 +9496,7 @@ serialize-javascript@^1.7.0:
   resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb"
   integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==
 
-serialize-javascript@^2.1.0, serialize-javascript@^2.1.1, serialize-javascript@^2.1.2:
+serialize-javascript@^2.1.1, serialize-javascript@^2.1.2:
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61"
   integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==

From 08f48cbeb43163ae220bbb9a4bdb5bf79e4cb301 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed, 18 Dec 2019 03:42:25 +0900
Subject: [PATCH 24/39] Bump eslint-plugin-import from 2.19.0 to 2.19.1
 (#12622)

Bumps [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import) from 2.19.0 to 2.19.1.
- [Release notes](https://github.com/benmosher/eslint-plugin-import/releases)
- [Changelog](https://github.com/benmosher/eslint-plugin-import/blob/master/CHANGELOG.md)
- [Commits](https://github.com/benmosher/eslint-plugin-import/compare/v2.19.0...v2.19.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 package.json | 2 +-
 yarn.lock    | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/package.json b/package.json
index 5f63039ec2..4437fcdeeb 100644
--- a/package.json
+++ b/package.json
@@ -173,7 +173,7 @@
     "enzyme": "^3.10.0",
     "enzyme-adapter-react-16": "^1.15.1",
     "eslint": "^6.7.2",
-    "eslint-plugin-import": "~2.19.0",
+    "eslint-plugin-import": "~2.19.1",
     "eslint-plugin-jsx-a11y": "~6.2.3",
     "eslint-plugin-promise": "~4.2.1",
     "eslint-plugin-react": "~7.17.0",
diff --git a/yarn.lock b/yarn.lock
index 66a3de7a0e..0c4b39fbde 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3819,10 +3819,10 @@ eslint-plugin-eslint-plugin@^2.1.0:
   resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-2.1.0.tgz#a7a00f15a886957d855feacaafee264f039e62d5"
   integrity sha512-kT3A/ZJftt28gbl/Cv04qezb/NQ1dwYIbi8lyf806XMxkus7DvOVCLIfTXMrorp322Pnoez7+zabXH29tADIDg==
 
-eslint-plugin-import@~2.19.0:
-  version "2.19.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.19.0.tgz#560ddc8236b4e68df57a95c5ba33bcf23300c780"
-  integrity sha512-J13f9Slu7BCZq1N2NnWmK7tci/Y1SWWHUaj0J+I1NpzUm8l/Gwnz6KO+JMbM4TcnxU8O/DJ4psa6eZrmNREsOg==
+eslint-plugin-import@~2.19.1:
+  version "2.19.1"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.19.1.tgz#5654e10b7839d064dd0d46cd1b88ec2133a11448"
+  integrity sha512-x68131aKoCZlCae7rDXKSAQmbT5DQuManyXo2sK6fJJ0aK5CWAkv6A6HJZGgqC8IhjQxYPgo6/IY4Oz8AFsbBw==
   dependencies:
     array-includes "^3.0.3"
     array.prototype.flat "^1.2.1"

From b2aeb0061a128532153d47936b3e75de45b986f5 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed, 18 Dec 2019 03:53:15 +0900
Subject: [PATCH 25/39] Bump webpacker from 4.2.0 to 4.2.2 (#12632)

Bumps [webpacker](https://github.com/rails/webpacker) from 4.2.0 to 4.2.2.
- [Release notes](https://github.com/rails/webpacker/releases)
- [Changelog](https://github.com/rails/webpacker/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rails/webpacker/compare/v4.2.0...v4.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 Gemfile.lock | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index da2a1c430b..a1ce3620ae 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -660,7 +660,7 @@ GEM
       addressable (>= 2.3.6)
       crack (>= 0.3.2)
       hashdiff (>= 0.4.0, < 2.0.0)
-    webpacker (4.2.0)
+    webpacker (4.2.2)
       activesupport (>= 4.2)
       rack-proxy (>= 0.6.1)
       railties (>= 4.2)

From 9dc2fc9ec6122171142907a844712dc80eead119 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed, 18 Dec 2019 03:54:42 +0900
Subject: [PATCH 26/39] Bump react-redux from 7.1.1 to 7.1.3 (#12626)

Bumps [react-redux](https://github.com/reduxjs/react-redux) from 7.1.1 to 7.1.3.
- [Release notes](https://github.com/reduxjs/react-redux/releases)
- [Changelog](https://github.com/reduxjs/react-redux/blob/master/CHANGELOG.md)
- [Commits](https://github.com/reduxjs/react-redux/compare/v7.1.1...v7.1.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 package.json |  2 +-
 yarn.lock    | 15 +++++----------
 2 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/package.json b/package.json
index 4437fcdeeb..4f1cec6360 100644
--- a/package.json
+++ b/package.json
@@ -133,7 +133,7 @@
     "react-motion": "^0.5.2",
     "react-notification": "^6.8.5",
     "react-overlays": "^0.9.1",
-    "react-redux": "^7.1.1",
+    "react-redux": "^7.1.3",
     "react-redux-loading-bar": "^4.0.8",
     "react-router-dom": "^4.1.1",
     "react-router-scroll-4": "^1.0.0-beta.1",
diff --git a/yarn.lock b/yarn.lock
index 0c4b39fbde..6e196404be 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8636,12 +8636,7 @@ react-intl@^2.9.0:
     intl-relativeformat "^2.1.0"
     invariant "^2.1.1"
 
-react-is@^16.10.2, react-is@^16.3.2, react-is@^16.7.0, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0:
-  version "16.11.0"
-  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.11.0.tgz#b85dfecd48ad1ce469ff558a882ca8e8313928fa"
-  integrity sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==
-
-react-is@^16.8.1:
+react-is@^16.10.2, react-is@^16.3.2, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0:
   version "16.12.0"
   resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c"
   integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==
@@ -8696,10 +8691,10 @@ react-redux-loading-bar@^4.0.8:
     prop-types "^15.6.2"
     react-lifecycles-compat "^3.0.2"
 
-react-redux@^7.1.1:
-  version "7.1.1"
-  resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.1.1.tgz#ce6eee1b734a7a76e0788b3309bf78ff6b34fa0a"
-  integrity sha512-QsW0vcmVVdNQzEkrgzh2W3Ksvr8cqpAv5FhEk7tNEft+5pp7rXxAudTz3VOPawRkLIepItpkEIyLcN/VVXzjTg==
+react-redux@^7.1.3:
+  version "7.1.3"
+  resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.1.3.tgz#717a3d7bbe3a1b2d535c94885ce04cdc5a33fc79"
+  integrity sha512-uI1wca+ECG9RoVkWQFF4jDMqmaw0/qnvaSvOoL/GA4dNxf6LoV8sUAcNDvE5NWKs4hFpn0t6wswNQnY3f7HT3w==
   dependencies:
     "@babel/runtime" "^7.5.5"
     hoist-non-react-statics "^3.3.0"

From c436367c3c65a67dd0985c36bbcb465443c38cba Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed, 18 Dec 2019 04:04:30 +0900
Subject: [PATCH 27/39] Bump json-ld-preloaded from 3.0.4 to 3.0.6 (#12361)

Bumps [json-ld-preloaded](https://github.com/ruby-rdf/json-ld-preloaded) from 3.0.4 to 3.0.6.
- [Release notes](https://github.com/ruby-rdf/json-ld-preloaded/releases)
- [Commits](https://github.com/ruby-rdf/json-ld-preloaded/compare/3.0.4...3.0.6)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 Gemfile.lock | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index a1ce3620ae..9362fd358d 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -324,7 +324,7 @@ GEM
     jmespath (1.4.0)
     json (2.2.0)
     json-canonicalization (0.1.0)
-    json-ld-preloaded (3.0.4)
+    json-ld-preloaded (3.0.6)
       json-ld (~> 3.0)
       multi_json (~> 1.12)
       rdf (~> 3.0)
@@ -380,7 +380,7 @@ GEM
     mini_portile2 (2.4.0)
     minitest (5.13.0)
     msgpack (1.3.1)
-    multi_json (1.13.1)
+    multi_json (1.14.1)
     multipart-post (2.1.1)
     necromancer (0.5.1)
     net-ldap (0.16.2)
@@ -504,7 +504,7 @@ GEM
       thor (>= 0.19.0, < 2.0)
     rainbow (3.0.0)
     rake (13.0.1)
-    rdf (3.0.12)
+    rdf (3.0.13)
       hamster (~> 3.0)
       link_header (~> 0.0, >= 0.0.8)
     rdf-normalize (0.3.3)

From 45f89684045d4b39ebc9291e0cad3d1f318e5f8c Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed, 18 Dec 2019 08:58:53 +0900
Subject: [PATCH 28/39] Bump rails from 5.2.3 to 5.2.4 (#12584)

* Bump rails from 5.2.3 to 5.2.4

Bumps [rails](https://github.com/rails/rails) from 5.2.3 to 5.2.4.
- [Release notes](https://github.com/rails/rails/releases)
- [Commits](https://github.com/rails/rails/compare/v5.2.3...v5.2.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

* sprockets ~> 3.7
---
 Gemfile      |  3 +-
 Gemfile.lock | 79 ++++++++++++++++++++++++++--------------------------
 2 files changed, 42 insertions(+), 40 deletions(-)

diff --git a/Gemfile b/Gemfile
index c7679fa3ab..3a0161c455 100644
--- a/Gemfile
+++ b/Gemfile
@@ -6,7 +6,8 @@ ruby '>= 2.4.0', '< 2.7.0'
 gem 'pkg-config', '~> 1.4'
 
 gem 'puma', '~> 4.3'
-gem 'rails', '~> 5.2.3'
+gem 'rails', '~> 5.2.4'
+gem 'sprockets', '~> 3.7'
 gem 'thor', '~> 0.20'
 
 gem 'hamlit-rails', '~> 0.2'
diff --git a/Gemfile.lock b/Gemfile.lock
index 9362fd358d..df29d4f399 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -44,25 +44,25 @@ GIT
 GEM
   remote: https://rubygems.org/
   specs:
-    actioncable (5.2.3)
-      actionpack (= 5.2.3)
+    actioncable (5.2.4)
+      actionpack (= 5.2.4)
       nio4r (~> 2.0)
       websocket-driver (>= 0.6.1)
-    actionmailer (5.2.3)
-      actionpack (= 5.2.3)
-      actionview (= 5.2.3)
-      activejob (= 5.2.3)
+    actionmailer (5.2.4)
+      actionpack (= 5.2.4)
+      actionview (= 5.2.4)
+      activejob (= 5.2.4)
       mail (~> 2.5, >= 2.5.4)
       rails-dom-testing (~> 2.0)
-    actionpack (5.2.3)
-      actionview (= 5.2.3)
-      activesupport (= 5.2.3)
+    actionpack (5.2.4)
+      actionview (= 5.2.4)
+      activesupport (= 5.2.4)
       rack (~> 2.0)
       rack-test (>= 0.6.3)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.0.2)
-    actionview (5.2.3)
-      activesupport (= 5.2.3)
+    actionview (5.2.4)
+      activesupport (= 5.2.4)
       builder (~> 3.1)
       erubi (~> 1.4)
       rails-dom-testing (~> 2.0)
@@ -73,20 +73,20 @@ GEM
       case_transform (>= 0.2)
       jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
     active_record_query_trace (1.7)
-    activejob (5.2.3)
-      activesupport (= 5.2.3)
+    activejob (5.2.4)
+      activesupport (= 5.2.4)
       globalid (>= 0.3.6)
-    activemodel (5.2.3)
-      activesupport (= 5.2.3)
-    activerecord (5.2.3)
-      activemodel (= 5.2.3)
-      activesupport (= 5.2.3)
+    activemodel (5.2.4)
+      activesupport (= 5.2.4)
+    activerecord (5.2.4)
+      activemodel (= 5.2.4)
+      activesupport (= 5.2.4)
       arel (>= 9.0)
-    activestorage (5.2.3)
-      actionpack (= 5.2.3)
-      activerecord (= 5.2.3)
+    activestorage (5.2.4)
+      actionpack (= 5.2.4)
+      activerecord (= 5.2.4)
       marcel (~> 0.3.1)
-    activesupport (5.2.3)
+    activesupport (5.2.4)
       concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (>= 0.7, < 2)
       minitest (~> 5.1)
@@ -469,18 +469,18 @@ GEM
       rack
     rack-test (1.1.0)
       rack (>= 1.0, < 3)
-    rails (5.2.3)
-      actioncable (= 5.2.3)
-      actionmailer (= 5.2.3)
-      actionpack (= 5.2.3)
-      actionview (= 5.2.3)
-      activejob (= 5.2.3)
-      activemodel (= 5.2.3)
-      activerecord (= 5.2.3)
-      activestorage (= 5.2.3)
-      activesupport (= 5.2.3)
+    rails (5.2.4)
+      actioncable (= 5.2.4)
+      actionmailer (= 5.2.4)
+      actionpack (= 5.2.4)
+      actionview (= 5.2.4)
+      activejob (= 5.2.4)
+      activemodel (= 5.2.4)
+      activerecord (= 5.2.4)
+      activestorage (= 5.2.4)
+      activesupport (= 5.2.4)
       bundler (>= 1.3.0)
-      railties (= 5.2.3)
+      railties (= 5.2.4)
       sprockets-rails (>= 2.0.0)
     rails-controller-testing (1.0.4)
       actionpack (>= 5.0.1.x)
@@ -496,9 +496,9 @@ GEM
       railties (>= 5.0, < 6)
     rails-settings-cached (0.6.6)
       rails (>= 4.2.0)
-    railties (5.2.3)
-      actionpack (= 5.2.3)
-      activesupport (= 5.2.3)
+    railties (5.2.4)
+      actionpack (= 5.2.4)
+      activesupport (= 5.2.4)
       method_source
       rake (>= 0.8.7)
       thor (>= 0.19.0, < 2.0)
@@ -667,9 +667,9 @@ GEM
     webpush (0.3.8)
       hkdf (~> 0.2)
       jwt (~> 2.0)
-    websocket-driver (0.7.0)
+    websocket-driver (0.7.1)
       websocket-extensions (>= 0.1.0)
-    websocket-extensions (0.1.3)
+    websocket-extensions (0.1.4)
     wisper (2.0.1)
     xpath (3.2.0)
       nokogiri (~> 1.8)
@@ -767,7 +767,7 @@ DEPENDENCIES
   pundit (~> 2.1)
   rack-attack (~> 6.2)
   rack-cors (~> 1.1)
-  rails (~> 5.2.3)
+  rails (~> 5.2.4)
   rails-controller-testing (~> 1.0)
   rails-i18n (~> 5.1)
   rails-settings-cached (~> 0.6)
@@ -789,6 +789,7 @@ DEPENDENCIES
   simple-navigation (~> 4.1)
   simple_form (~> 5.0)
   simplecov (~> 0.17)
+  sprockets (~> 3.7)
   sprockets-rails (~> 3.2)
   stackprof
   stoplight (~> 2.2.0)

From a391eaf4d81d5b7a2e5d7e2106f3e119867e1a9b Mon Sep 17 00:00:00 2001
From: Takeshi Umeda <noel.yoshiba@gmail.com>
Date: Thu, 19 Dec 2019 00:54:03 +0900
Subject: [PATCH 29/39] Fix an error when ActivityPub::FetchRemoteStatusService
 url is called with nil (#12652)

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

diff --git a/app/services/fetch_remote_status_service.rb b/app/services/fetch_remote_status_service.rb
index 21d277aff7..eafde4d4a5 100644
--- a/app/services/fetch_remote_status_service.rb
+++ b/app/services/fetch_remote_status_service.rb
@@ -9,6 +9,6 @@ class FetchRemoteStatusService < BaseService
       resource_options = { prefetched_body: prefetched_body }
     end
 
-    ActivityPub::FetchRemoteStatusService.new.call(resource_url, **resource_options)
+    ActivityPub::FetchRemoteStatusService.new.call(resource_url, **resource_options) unless resource_url.nil?
   end
 end

From 8a347f4937b26ba6cb71eb2585c0f446640176ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?B=C3=A8r=20Kessels?= <ber@berk.es>
Date: Wed, 18 Dec 2019 16:54:29 +0100
Subject: [PATCH 30/39] Fix typo in login feature-test. (#12651)

---
 spec/features/log_in_spec.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/spec/features/log_in_spec.rb b/spec/features/log_in_spec.rb
index f6c26cd0f1..b874c255b3 100644
--- a/spec/features/log_in_spec.rb
+++ b/spec/features/log_in_spec.rb
@@ -1,7 +1,7 @@
 require "rails_helper"
 
 feature "Log in" do
-  given(:email)        { "test@examle.com" }
+  given(:email)        { "test@example.com" }
   given(:password)     { "password" }
   given(:confirmed_at) { Time.zone.now }
 

From 68070e82ccadfef4f101653cf8456f15148c58b7 Mon Sep 17 00:00:00 2001
From: Takeshi Umeda <noel.yoshiba@gmail.com>
Date: Thu, 19 Dec 2019 00:55:21 +0900
Subject: [PATCH 31/39] Add signature to exported status (#12649)

---
 app/services/backup_service.rb | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/app/services/backup_service.rb b/app/services/backup_service.rb
index fe26d7aa0d..fba2d19a08 100644
--- a/app/services/backup_service.rb
+++ b/app/services/backup_service.rb
@@ -3,6 +3,8 @@
 require 'rubygems/package'
 
 class BackupService < BaseService
+  include Payloadable
+
   attr_reader :account, :backup, :collection
 
   def call(backup)
@@ -20,7 +22,7 @@ class BackupService < BaseService
 
     account.statuses.with_includes.reorder(nil).find_in_batches do |statuses|
       statuses.each do |status|
-        item = serialize(status, ActivityPub::ActivitySerializer)
+        item = serialize_payload(status, ActivityPub::ActivitySerializer, signer: @account)
         item.delete(:'@context')
 
         unless item[:type] == 'Announce' || item[:object][:attachment].blank?

From b364175e1b345e7f36955ba85b483ec2bdd8622d Mon Sep 17 00:00:00 2001
From: ThibG <thib@sitedethib.com>
Date: Wed, 18 Dec 2019 16:56:06 +0100
Subject: [PATCH 32/39] Fix link crawler not specifying accepted content-type
 (#12646)

The link crawler expects HTML documents, so set the `Accept`
header accordingly.

Fixes #12618
---
 app/services/fetch_link_card_service.rb | 2 +-
 app/services/fetch_oembed_service.rb    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb
index 5d4a7c3036..91141c1f54 100644
--- a/app/services/fetch_link_card_service.rb
+++ b/app/services/fetch_link_card_service.rb
@@ -45,7 +45,7 @@ class FetchLinkCardService < BaseService
   def html
     return @html if defined?(@html)
 
-    Request.new(:get, @url).perform do |res|
+    Request.new(:get, @url).add_headers('Accept' => 'text/html').perform do |res|
       if res.code == 200 && res.mime_type == 'text/html'
         @html = res.body_with_limit
         @html_charset = res.charset
diff --git a/app/services/fetch_oembed_service.rb b/app/services/fetch_oembed_service.rb
index 76d971bc51..67e33875c6 100644
--- a/app/services/fetch_oembed_service.rb
+++ b/app/services/fetch_oembed_service.rb
@@ -93,7 +93,7 @@ class FetchOEmbedService
   def html
     return @html if defined?(@html)
 
-    @html = @options[:html] || Request.new(:get, @url).perform do |res|
+    @html = @options[:html] || Request.new(:get, @url).add_headers('Accept' => 'text/html').perform do |res|
       res.code != 200 || res.mime_type != 'text/html' ? nil : res.body_with_limit
     end
   end

From fb9137752a734caa6891637728cc243d79c1af97 Mon Sep 17 00:00:00 2001
From: ThibG <thib@sitedethib.com>
Date: Wed, 18 Dec 2019 16:56:39 +0100
Subject: [PATCH 33/39] Remove unused translatable strings (#12643)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Remove unused “salmon_url” string

* Remove more unused translatable strings

The following strings all used to be on the admin account page
but aren't used anymore: profile_url, outbox_url, followers_url, feed_url
---
 config/locales/ar.yml      | 5 -----
 config/locales/bn.yml      | 5 -----
 config/locales/ca.yml      | 5 -----
 config/locales/co.yml      | 5 -----
 config/locales/cs.yml      | 5 -----
 config/locales/cy.yml      | 5 -----
 config/locales/da.yml      | 5 -----
 config/locales/de.yml      | 5 -----
 config/locales/el.yml      | 5 -----
 config/locales/en.yml      | 5 -----
 config/locales/en_GB.yml   | 5 -----
 config/locales/eo.yml      | 5 -----
 config/locales/es-AR.yml   | 4 ----
 config/locales/es.yml      | 5 -----
 config/locales/et.yml      | 5 -----
 config/locales/eu.yml      | 5 -----
 config/locales/fa.yml      | 5 -----
 config/locales/fi.yml      | 5 -----
 config/locales/fr.yml      | 5 -----
 config/locales/gl.yml      | 5 -----
 config/locales/he.yml      | 5 -----
 config/locales/hu.yml      | 5 -----
 config/locales/id.yml      | 5 -----
 config/locales/it.yml      | 5 -----
 config/locales/ja.yml      | 5 -----
 config/locales/ka.yml      | 5 -----
 config/locales/kk.yml      | 5 -----
 config/locales/ko.yml      | 5 -----
 config/locales/lt.yml      | 5 -----
 config/locales/ms.yml      | 5 -----
 config/locales/nl.yml      | 5 -----
 config/locales/no.yml      | 5 -----
 config/locales/oc.yml      | 5 -----
 config/locales/pl.yml      | 5 -----
 config/locales/pt-BR.yml   | 5 -----
 config/locales/pt-PT.yml   | 5 -----
 config/locales/ru.yml      | 5 -----
 config/locales/sk.yml      | 5 -----
 config/locales/sl.yml      | 5 -----
 config/locales/sq.yml      | 4 ----
 config/locales/sr-Latn.yml | 5 -----
 config/locales/sr.yml      | 5 -----
 config/locales/sv.yml      | 5 -----
 config/locales/te.yml      | 2 --
 config/locales/th.yml      | 4 ----
 config/locales/tr.yml      | 5 -----
 config/locales/uk.yml      | 5 -----
 config/locales/zh-CN.yml   | 5 -----
 config/locales/zh-HK.yml   | 5 -----
 config/locales/zh-TW.yml   | 5 -----
 50 files changed, 244 deletions(-)

diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 340d720aeb..835e967699 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -124,9 +124,7 @@ ar:
       email_status: حالة البريد الإلكتروني
       enable: تفعيل
       enabled: مفعَّل
-      feed_url: عنوان رابط التغذية
       followers: المتابِعون
-      followers_url: عنوان رابط المتابِعين
       follows: يتابع
       header: الرأسية
       inbox_url: رابط صندوق الوارد
@@ -154,10 +152,8 @@ ar:
       no_account_selected: لم يطرأ أي تغيير على أي حساب بما أنه لم يتم اختيار أي واحد
       no_limits_imposed: مِن دون حدود مشروطة
       not_subscribed: غير مشترك
-      outbox_url: رابط صندوق الصادر
       pending: في انتظار المراجعة
       perform_full_suspension: تعليق الحساب
-      profile_url: رابط الصفحة التعريفية
       promote: ترقية
       protocol: البروتوكول
       public: عمومي
@@ -180,7 +176,6 @@ ar:
         moderator: مشرف
         staff: الفريق
         user: مستخدِم
-      salmon_url: عنوان رابط سالمون Salmon
       search: البحث
       shared_inbox_url: رابط الصندوق المُشترَك للبريد الوارد
       show:
diff --git a/config/locales/bn.yml b/config/locales/bn.yml
index 24f0a654a3..7dd49ff966 100644
--- a/config/locales/bn.yml
+++ b/config/locales/bn.yml
@@ -118,9 +118,7 @@ bn:
       email_status: ইমেইলের অবস্থা
       enable: চালু করুন
       enabled: চালু করুন
-      feed_url: সম্মিলিত(feed) লিংক
       followers: অনুসরকারীরা
-      followers_url: অনুসরণকারীদের লিংক
       follows: অনুসরণ করে
       header: শিরোলেখা
       inbox_url: চিঠি পাওয়ার বক্স লিংক
@@ -148,10 +146,8 @@ bn:
       no_account_selected: কোনও অ্যাকাউন্টই নির্বাচন করা হয়নি বলে কোনও অ্যাকাউন্ট পরিবর্তন করা হয়নি
       no_limits_imposed: কোন সীমা আরোপ করা নেই
       not_subscribed: সাবস্ক্রাইব নেই
-      outbox_url: চিঠি পাঠানোর বাক্স লিংক
       pending: পয্র্যবেক্ষণের অপেক্ষায় আছে
       perform_full_suspension: বাতিল করা
-      profile_url: প্রোফাইল URL
       promote: প্রচার
       protocol: প্রোটোকল
       public: সর্বজনীন
@@ -174,7 +170,6 @@ bn:
         moderator: নিয়ামক
         staff: কর্মী
         user: ব্যবহারকারী
-      salmon_url: সালমন URL
       search: অনুসন্ধান
       search_same_ip: একই IP সহ অন্যান্য ব্যবহারকারীরা
       shared_inbox_url: ভাগ করা ইনবক্স URL
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index 1331299cc8..c3cfe30834 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -118,9 +118,7 @@ ca:
       email_status: Estat del correu electrònic
       enable: Habilita
       enabled: Habilitat
-      feed_url: URL del canal
       followers: Seguidors
-      followers_url: URL dels seguidors
       follows: Segueix
       header: Capçalera
       inbox_url: URL de la safata d'entrada
@@ -148,10 +146,8 @@ ca:
       no_account_selected: No s'han canviat els comptes perque no s'han seleccionat
       no_limits_imposed: Sense límits imposats
       not_subscribed: No subscrit
-      outbox_url: URL de la bústia de sortida
       pending: Revisió pendent
       perform_full_suspension: Suspèn
-      profile_url: URL del perfil
       promote: Promociona
       protocol: Protocol
       public: Públic
@@ -174,7 +170,6 @@ ca:
         moderator: Moderador
         staff: Personal
         user: Usuari
-      salmon_url: URL Salmon
       search: Cerca
       search_same_ip: Altres usuaris amb la mateixa IP
       shared_inbox_url: URL de la safata d'entrada compartida
diff --git a/config/locales/co.yml b/config/locales/co.yml
index c71df77c16..9653363ca4 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -118,9 +118,7 @@ co:
       email_status: Statutu di l’e-mail
       enable: Attivà
       enabled: Attivatu
-      feed_url: URL di u flussu
       followers: Abbunati
-      followers_url: URL di l’abbunati
       follows: Abbunamenti
       header: Intistatura
       inbox_url: URL di l’inbox
@@ -148,10 +146,8 @@ co:
       no_account_selected: Nisun contu hè statu cambiatu postu ch'ùn c'eranu micca selezziunati
       no_limits_imposed: Nisuna limita imposta
       not_subscribed: Micca abbunatu
-      outbox_url: URL di l’outbox
       pending: In attesa di rivista
       perform_full_suspension: Suspende
-      profile_url: URL di u prufile
       promote: Prumove
       protocol: Prutucollu
       public: Pubblicu
@@ -174,7 +170,6 @@ co:
         moderator: Muderatore
         staff: Squadra
         user: Utilizatore
-      salmon_url: URL di Salmon
       search: Cercà
       search_same_ip: Altri utilizatori cù listessa IP
       shared_inbox_url: URL di l’inbox spartuta
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 51503ed70b..81ae226804 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -126,9 +126,7 @@ cs:
       email_status: Stav e-mailu
       enable: Povolit
       enabled: Povoleno
-      feed_url: URL proudu
       followers: Sledující
-      followers_url: URL sledujících
       follows: Sledovaní
       header: Záhlaví
       inbox_url: URL příchozí schránky
@@ -156,10 +154,8 @@ cs:
       no_account_selected: Nebyl změněn žádný účet, neboť žádný nebyl zvolen
       no_limits_imposed: Nejsou nastavena žádná omezení
       not_subscribed: Neodebírá
-      outbox_url: URL odchozí schránky
       pending: Čeká na posouzení
       perform_full_suspension: Pozastavit
-      profile_url: URL profilu
       promote: Povýšit
       protocol: Protokol
       public: Veřejný
@@ -182,7 +178,6 @@ cs:
         moderator: Moderátor
         staff: Člen personálu
         user: Uživatel
-      salmon_url: URL Salmon
       search: Hledat
       search_same_ip: Další uživatelé se stejnou IP adresou
       shared_inbox_url: URL sdílené příchozí schránky
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index f360db2110..fde22cc332 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -133,9 +133,7 @@ cy:
       email_status: Statws E-bost
       enable: Galluogi
       enabled: Wedi ei alluogi
-      feed_url: Ffrwd URL
       followers: Dilynwyr
-      followers_url: URL Dilynwyr
       follows: Yn dilyn
       header: Pennawd
       inbox_url: URL Mewnflwch
@@ -163,10 +161,8 @@ cy:
       no_account_selected: Ni newidwyd dim cyfrif achos ni ddewiswyd dim un
       no_limits_imposed: Dim terfynau wedi'i gosod
       not_subscribed: Heb danysgrifio
-      outbox_url: Allflwch URL
       pending: Yn aros am adolygiad
       perform_full_suspension: Atal
-      profile_url: URL proffil
       promote: Hyrwyddo
       protocol: Protocol
       public: Cyhoeddus
@@ -189,7 +185,6 @@ cy:
         moderator: Aroglygydd
         staff: Staff
         user: Defnyddiwr
-      salmon_url: URL Eog
       search: Chwilio
       search_same_ip: Defnyddwyr eraill gyda'r un IP
       shared_inbox_url: URL Mewnflwch wedi ei rannu
diff --git a/config/locales/da.yml b/config/locales/da.yml
index 149e7da2b1..57f4ed8798 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -96,9 +96,7 @@ da:
       edit: Rediger
       enable: Aktiver
       enabled: Aktiveret
-      feed_url: Link til feed
       followers: Følgere
-      followers_url: Link til følgere
       follows: Følger
       inbox_url: Link til indbakke
       invited_by: Inviteret af
@@ -123,9 +121,7 @@ da:
       most_recent_activity: Seneste aktivitet
       most_recent_ip: Senest IP
       not_subscribed: Ikke abonneret
-      outbox_url: Link til udgående
       perform_full_suspension: Udeluk
-      profile_url: Link til profil
       promote: Forfrem
       protocol: Protokol
       public: Offentligt
@@ -147,7 +143,6 @@ da:
         moderator: Mod
         staff: Personale
         user: Bruger
-      salmon_url: Salmon-URL
       search: Søg
       search_same_ip: Andre brugere med den samme IP-adresse
       shared_inbox_url: Link til delt indbakke
diff --git a/config/locales/de.yml b/config/locales/de.yml
index d27c6b105b..4452058711 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -118,9 +118,7 @@ de:
       email_status: E-Mail-Status
       enable: Freischalten
       enabled: Freigegeben
-      feed_url: Feed-URL
       followers: Folgende
-      followers_url: URL des Folgenden
       follows: Folgt
       header: Titelbild
       inbox_url: Posteingangs-URL
@@ -148,10 +146,8 @@ de:
       no_account_selected: Keine Konten wurden geändert, da keine ausgewählt wurden
       no_limits_imposed: Keine Beschränkungen
       not_subscribed: Nicht abonniert
-      outbox_url: Postausgangs-URL
       pending: In Warteschlange
       perform_full_suspension: Verbannen
-      profile_url: Profil-URL
       promote: Befördern
       protocol: Protokoll
       public: Öffentlich
@@ -174,7 +170,6 @@ de:
         moderator: Moderator_in
         staff: Mitarbeiter
         user: Nutzer
-      salmon_url: Salmon-URL
       search: Suche
       search_same_ip: Andere Benutzer mit derselben IP
       shared_inbox_url: Geteilte Posteingang-URL
diff --git a/config/locales/el.yml b/config/locales/el.yml
index cb1694573d..585eefab42 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -118,9 +118,7 @@ el:
       email_status: Κατάσταση email
       enable: Ενεργοποίηση
       enabled: Ενεργοποιημένο
-      feed_url: URL ροής
       followers: Ακόλουθοι
-      followers_url: URL ακολούθων
       follows: Ακολουθεί
       header: Επικεφαλίδα
       inbox_url: URL εισερχομένων
@@ -148,10 +146,8 @@ el:
       no_account_selected: Κανείς λογαριασμός δεν ενημερώθηκε αφού κανείς δεν ήταν επιλεγμένος
       no_limits_imposed: Χωρίς όρια
       not_subscribed: Άνευ συνδρομής
-      outbox_url: URL εξερχομένων
       pending: Εκκρεμεί έγκριση
       perform_full_suspension: Αναστολή
-      profile_url: URL προφίλ
       promote: Προβίβασε
       protocol: Πρωτόκολλο
       public: Δημόσιο
@@ -174,7 +170,6 @@ el:
         moderator: Συντονιστής
         staff: Προσωπικό
         user: Χρήστης
-      salmon_url: URL Salmon
       search: Αναζήτηση
       search_same_ip: Υπόλοιποι χρήστες με την ίδια διεύθυνση IP
       shared_inbox_url: URL κοινόχρηστων εισερχομένων
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 5edd6e0d3d..a54cc813ee 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -119,9 +119,7 @@ en:
       email_status: Email status
       enable: Enable
       enabled: Enabled
-      feed_url: Feed URL
       followers: Followers
-      followers_url: Followers URL
       follows: Follows
       header: Header
       inbox_url: Inbox URL
@@ -149,10 +147,8 @@ en:
       no_account_selected: No accounts were changed as none were selected
       no_limits_imposed: No limits imposed
       not_subscribed: Not subscribed
-      outbox_url: Outbox URL
       pending: Pending review
       perform_full_suspension: Suspend
-      profile_url: Profile URL
       promote: Promote
       protocol: Protocol
       public: Public
@@ -175,7 +171,6 @@ en:
         moderator: Moderator
         staff: Staff
         user: User
-      salmon_url: Salmon URL
       search: Search
       search_same_ip: Other users with the same IP
       shared_inbox_url: Shared inbox URL
diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml
index 45d3a5bc02..939dfe0c1d 100644
--- a/config/locales/en_GB.yml
+++ b/config/locales/en_GB.yml
@@ -105,9 +105,7 @@ en_GB:
       email_status: Email status
       enable: Enable
       enabled: Enabled
-      feed_url: Feed URL
       followers: Followers
-      followers_url: Followers URL
       follows: Follows
       header: Header
       inbox_url: Inbox URL
@@ -134,10 +132,8 @@ en_GB:
       most_recent_ip: Most recent IP
       no_limits_imposed: No limits imposed
       not_subscribed: Not subscribed
-      outbox_url: Outbox URL
       pending: Pending review
       perform_full_suspension: Suspend
-      profile_url: Profile URL
       promote: Promote
       protocol: Protocol
       public: Public
@@ -159,7 +155,6 @@ en_GB:
         moderator: Moderator
         staff: Staff
         user: User
-      salmon_url: Salmon URL
       search: Search
       shared_inbox_url: Shared inbox URL
       show:
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 4325280109..78ea19af55 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -111,9 +111,7 @@ eo:
       email_status: Retadreso Stato
       enable: Ebligi
       enabled: Ebligita
-      feed_url: URL de la fluo
       followers: Sekvantoj
-      followers_url: URL de la sekvantoj
       follows: Sekvatoj
       header: Kapa bildo
       inbox_url: Enira URL
@@ -141,10 +139,8 @@ eo:
       no_account_selected: Neniu konto estis ŝanĝita ĉar neniu estis selektita
       no_limits_imposed: Neniu limito trudita
       not_subscribed: Ne abonita
-      outbox_url: Elira URL
       pending: Pritraktata recenzo
       perform_full_suspension: Haltigi
-      profile_url: Profila URL
       promote: Plirangigi
       protocol: Protokolo
       public: Publika
@@ -167,7 +163,6 @@ eo:
         moderator: Kontrolanto
         staff: Teamo
         user: Uzanto
-      salmon_url: Salmon-URL
       search: Serĉi
       shared_inbox_url: URL de kunhavigita leterkesto
       show:
diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml
index 6515684a38..c52615139c 100644
--- a/config/locales/es-AR.yml
+++ b/config/locales/es-AR.yml
@@ -118,9 +118,7 @@ es-AR:
       email_status: Estado del correo
       enable: Habilitar
       enabled: Habilitada
-      feed_url: Dirección de la fuente web
       followers: Seguidores
-      followers_url: Dirección web de los seguidores
       follows: Seguidores
       header: Cabecera
       inbox_url: Dirección web de la bandeja de entrada
@@ -148,10 +146,8 @@ es-AR:
       no_account_selected: No se cambió ninguna cuenta ya que ninguna fue seleccionada
       no_limits_imposed: Sin límites impuestos
       not_subscribed: No suscripto
-      outbox_url: Dirección web de la bandeja de salida
       pending: Revisión pendiente
       perform_full_suspension: Suspender
-      profile_url: Dirección web del perfil
       promote: Promocionar
       protocol: Protocolo
       public: Pública
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 4b9cbef2bf..1826331b38 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -118,9 +118,7 @@ es:
       email_status: E-mail Status
       enable: Habilitar
       enabled: Habilitada
-      feed_url: URL de notificaciones
       followers: Seguidores
-      followers_url: URL de los seguidores
       follows: Sigue
       header: Cabecera
       inbox_url: URL de la bandeja de entrada
@@ -148,10 +146,8 @@ es:
       no_account_selected: Ninguna cuenta se cambió como ninguna fue seleccionada
       no_limits_imposed: Sin límites impuestos
       not_subscribed: No se está suscrito
-      outbox_url: URL de bandeja de salida
       pending: Revisión pendiente
       perform_full_suspension: Suspender
-      profile_url: URL del perfil
       promote: Promocionar
       protocol: Protocolo
       public: Público
@@ -174,7 +170,6 @@ es:
         moderator: Moderador
         staff: Personal
         user: Usuario
-      salmon_url: URL de salmón
       search: Buscar
       search_same_ip: Otros usuarios con la misma IP
       shared_inbox_url: URL de bandeja compartida
diff --git a/config/locales/et.yml b/config/locales/et.yml
index 3308471610..36a2931af7 100644
--- a/config/locales/et.yml
+++ b/config/locales/et.yml
@@ -118,9 +118,7 @@ et:
       email_status: E-posti staatus
       enable: Luba
       enabled: Lubatud
-      feed_url: Voogu URL
       followers: Jälgijad
-      followers_url: Jälgijate URL
       follows: Jälgib
       header: Päis
       inbox_url: Sisendkausta URL
@@ -148,10 +146,8 @@ et:
       no_account_selected: Mitte ühtegi kontot muudeti sest midagi polnud valitud
       no_limits_imposed: Mitte ühtegi limiiti kehtestatud
       not_subscribed: Ei ole tellitud
-      outbox_url: Väljundkausta URL
       pending: Ootab ülevaatamist
       perform_full_suspension: Peata
-      profile_url: Profiili URL
       promote: Edenda
       protocol: Protokoll
       public: Avalik
@@ -174,7 +170,6 @@ et:
         moderator: Moderaator
         staff: Personal
         user: Kasutaja
-      salmon_url: Salmoni URL
       search: Otsi
       search_same_ip: Teised kasutajad, kellel on sama IP
       shared_inbox_url: Jagatud sisendkausta URL
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index ff8d00df13..9dfe5e9d30 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -118,9 +118,7 @@ eu:
       email_status: Posta elektronikoaren egoera
       enable: Gaitu
       enabled: Gaituta
-      feed_url: Jarioaren URL-a
       followers: Jarraitzaileak
-      followers_url: Jarraitzaileen URL-a
       follows: Jarraitzen du
       header: Goiburua
       inbox_url: Sarrera ontziaren URL-a
@@ -148,10 +146,8 @@ eu:
       no_account_selected: Ez da konturik aldatu ez delako bata bera hautatu
       no_limits_imposed: Ez da mugarik ezarri
       not_subscribed: Harpidetu gabe
-      outbox_url: Irteera ontziaren URL-a
       pending: Berrikusketa egiteke
       perform_full_suspension: Kanporatu
-      profile_url: Profilaren URL-a
       promote: Sustatu
       protocol: Protokoloa
       public: Publikoa
@@ -174,7 +170,6 @@ eu:
         moderator: Moderatzailea
         staff: Langilea
         user: Erabiltzailea
-      salmon_url: Salmon URL-a
       search: Bilatu
       search_same_ip: IP bera duten beste erabiltzaileak
       shared_inbox_url: Partekatutako sarrera ontziaren URL-a
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 78236432ee..02a990a40e 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -118,9 +118,7 @@ fa:
       email_status: وضعیت ایمیل
       enable: فعال
       enabled: فعال
-      feed_url: نشانی فید
       followers: پیگیران
-      followers_url: نشانی پیگیران
       follows: پی می‌گیرد
       header: زمینه
       inbox_url: نشانی صندوق ورودی
@@ -148,10 +146,8 @@ fa:
       no_account_selected: هیچ حسابی تغییر نکرد زیرا حسابی انتخاب نشده بود
       no_limits_imposed: بدون محدودیت
       not_subscribed: عضو نیست
-      outbox_url: نشانی صندوق خروجی
       pending: در انتظار بررسی
       perform_full_suspension: تعلیق
-      profile_url: نشانی نمایه
       promote: ترفیع‌دادن
       protocol: پروتکل
       public: عمومی
@@ -174,7 +170,6 @@ fa:
         moderator: ناظم
         staff: کارمند
         user: کاربر
-      salmon_url: نشانی Salmon
       search: جستجو
       search_same_ip: دیگر کاربران با همان IP
       shared_inbox_url: نشانی صندوق ورودی مشترک
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 62cc5b36d2..3ab1a590e6 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -96,9 +96,7 @@ fi:
       email_status: Sähköpostin tila
       enable: Ota käyttöön
       enabled: Käytössä
-      feed_url: Syötteen osoite
       followers: Seuraajat
-      followers_url: Seuraajien osoite
       follows: Seuraa
       inbox_url: Saapuvan postilaatikon osoite
       ip: IP
@@ -122,9 +120,7 @@ fi:
       most_recent_activity: Viimeisin toiminta
       most_recent_ip: Viimeisin IP
       not_subscribed: Ei tilaaja
-      outbox_url: Lähtevän postilaatikon osoite
       perform_full_suspension: Siirrä kokonaan jäähylle
-      profile_url: Profiilin osoite
       promote: Ylennä
       protocol: Protokolla
       public: Julkinen
@@ -146,7 +142,6 @@ fi:
         moderator: Moderaattori
         staff: Henkilöstö
         user: Käyttäjä
-      salmon_url: Salmon-URL
       search: Hae
       shared_inbox_url: Jaetun saapuvan postilaatikon osoite
       show:
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index d7585af4a3..06b2916fe7 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -118,9 +118,7 @@ fr:
       email_status: État du courriel
       enable: Activer
       enabled: Activé
-      feed_url: URL du flux
       followers: Abonné⋅e⋅s
-      followers_url: URL des abonné·e·s
       follows: Abonnements
       header: Entête
       inbox_url: URL d’entrée
@@ -148,10 +146,8 @@ fr:
       no_account_selected: Aucun compte n’a été modifié, car aucun n’a été sélectionné
       no_limits_imposed: Aucune limite imposée
       not_subscribed: Non abonné
-      outbox_url: URL de sortie
       pending: En attente d’approbation
       perform_full_suspension: Suspendre
-      profile_url: URL du profil
       promote: Promouvoir
       protocol: Protocole
       public: Publique
@@ -174,7 +170,6 @@ fr:
         moderator: Modérateur
         staff: Équipe
         user: Utilisateur
-      salmon_url: URL Salmon
       search: Rechercher
       search_same_ip: Autres utilisateur·rice·s avec la même IP
       shared_inbox_url: URL de la boite de réception partagée
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index fbd953359e..057b215668 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -118,9 +118,7 @@ gl:
       email_status: Estado do correo
       enable: Habilitar
       enabled: Habilitado
-      feed_url: URL fonte
       followers: Seguidoras
-      followers_url: URL das seguidoras
       follows: Segue
       header: Cabeceira
       inbox_url: URL da Caixa de entrada
@@ -148,10 +146,8 @@ gl:
       no_account_selected: Non cambiou nada xa que non tiña nada seleccionado
       no_limits_imposed: Sen límites impostos
       not_subscribed: Non suscrita
-      outbox_url: URL caixa de saída
       pending: Pendente revisión
       perform_full_suspension: Suspender
-      profile_url: URL do perfil
       promote: Promocionar
       protocol: Protocolo
       public: Público
@@ -174,7 +170,6 @@ gl:
         moderator: Moderador
         staff: Membresía
         user: Usuaria
-      salmon_url: URL Salmon
       search: Busca
       search_same_ip: Outros usuarios co mesmo IP
       shared_inbox_url: URL da caixa de entrada compartida
diff --git a/config/locales/he.yml b/config/locales/he.yml
index 50db571dcc..89e8a6e4f7 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -52,9 +52,7 @@ he:
       email_status: סטטוס דוא"ל
       enable: לאפשר
       enabled: מאופשר
-      feed_url: כתובת פיד
       followers: עוקבים
-      followers_url: כתובת עוקבים
       follows: נעקבים
       inbox_url: כתובת תיבה נכנסת
       ip: כתובת IP
@@ -75,9 +73,7 @@ he:
       most_recent_activity: פעילות עדכנית
       most_recent_ip: כתובות אחרונות
       not_subscribed: לא רשום
-      outbox_url: כתובת תיבת דואר יוצא
       perform_full_suspension: ביצוע השעייה מלאה
-      profile_url: כתובת פרופיל
       promote: להעלות בדרגה
       protocol: פרטיכל
       public: פומבי
@@ -95,7 +91,6 @@ he:
         admin: מנהל מערכת
         moderator: מנחה דיונים
         user: משתמש(ת)
-      salmon_url: כתובת סלמון
       search: חיפוש
       shared_inbox_url: תיבה משותפת לדואר נכנס
       show:
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 7f5cd3d516..b4f8a970ae 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -120,9 +120,7 @@ hu:
       email_status: E-mail állapot
       enable: Bekapcsolás
       enabled: Bekapcsolva
-      feed_url: Hírcsatorna URL
       followers: Követő
-      followers_url: Követő URL
       follows: Követett
       header: Fejléc
       inbox_url: Beérkezett üzenetek URL
@@ -150,10 +148,8 @@ hu:
       no_account_selected: Nem változott meg egy fiók sem, mert semmi sem volt kiválasztva
       no_limits_imposed: Nincs korlátozás
       not_subscribed: Nincs feliratkozás
-      outbox_url: Kimenő üzenetek URL
       pending: Engedélyezés alatt
       perform_full_suspension: Felfüggesztés
-      profile_url: Profil URL
       promote: Előléptetés
       protocol: Protokoll
       public: Nyilvános
@@ -176,7 +172,6 @@ hu:
         moderator: Moderátor
         staff: Stáb
         user: Felhasználó
-      salmon_url: Salmon URL
       search: Keresés
       search_same_ip: Más felhasználók ugyanezzel az IP-vel
       shared_inbox_url: Megosztott bejövő üzenetek URL
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 1a58b1c54f..982e4289af 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -114,9 +114,7 @@ id:
       email_status: Status Email
       enable: Aktifkan
       enabled: Diaktifkan
-      feed_url: URL Feed
       followers: Pengikut
-      followers_url: URL pengikut
       follows: Mengikut
       header: Tajuk
       inbox_url: URL Kotak masuk
@@ -144,10 +142,8 @@ id:
       no_account_selected: Tak ada akun yang diubah sebab tak ada yang dipilih
       no_limits_imposed: Tidak ada batasan
       not_subscribed: Tidak berlangganan
-      outbox_url: URL Kotak keluar
       pending: Tinjauan tertunda
       perform_full_suspension: Lakukan suspen penuh
-      profile_url: URL profil
       promote: Promosikan
       protocol: Protokol
       public: Publik
@@ -170,7 +166,6 @@ id:
         moderator: Moderator
         staff: Staf
         user: Pengguna
-      salmon_url: URL Salmon
       search: Cari
       search_same_ip: Pengguna lain dengan IP yang sama
       shared_inbox_url: URL kotak masuk bersama
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 987321313c..aadf0f3d60 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -118,9 +118,7 @@ it:
       email_status: Stato email
       enable: Abilita
       enabled: Abilitato
-      feed_url: URL Feed
       followers: Follower
-      followers_url: URL follower
       follows: Segue
       header: Intestazione
       inbox_url: URL inbox
@@ -148,10 +146,8 @@ it:
       no_account_selected: Nessun account è stato modificato visto che non ne è stato selezionato nessuno
       no_limits_imposed: Nessun limite imposto
       not_subscribed: Non sottoscritto
-      outbox_url: URL outbox
       pending: Revisioni in attesa
       perform_full_suspension: Sospendi
-      profile_url: URL profilo
       promote: Promuovi
       protocol: Protocollo
       public: Pubblico
@@ -174,7 +170,6 @@ it:
         moderator: Moderatore
         staff: Personale
         user: Utente
-      salmon_url: URL Salmone
       search: Cerca
       search_same_ip: Altri utenti con lo stesso IP
       shared_inbox_url: URL Inbox Condiviso
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 477fb2e3c5..0dc77b7753 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -114,9 +114,7 @@ ja:
       email_status: メールアドレスの状態
       enable: 有効化
       enabled: 有効
-      feed_url: フィードURL
       followers: フォロワー数
-      followers_url: Followers URL
       follows: フォロー数
       header: ヘッダー
       inbox_url: Inbox URL
@@ -144,10 +142,8 @@ ja:
       no_account_selected: 何も選択されていないため、変更されていません
       no_limits_imposed: 制限なし
       not_subscribed: 購読していない
-      outbox_url: Outbox URL
       pending: 承認待ち
       perform_full_suspension: 活動を完全に停止させる
-      profile_url: プロフィールURL
       promote: 昇格
       protocol: プロトコル
       public: パブリック
@@ -170,7 +166,6 @@ ja:
         moderator: モデレーター
         staff: スタッフ
         user: ユーザー
-      salmon_url: Salmon URL
       search: 検索
       search_same_ip: 同じ IP のユーザーを検索
       shared_inbox_url: Shared inbox URL
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index 094a1a1a89..1259128927 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -70,9 +70,7 @@ ka:
       email_status: ელ-ფოსტის სტატუსი
       enable: ჩართვა
       enabled: ჩართულია
-      feed_url: ლენტის ურლ
       followers: მიმდევრები
-      followers_url: მიმდევრების ურლ
       follows: დადევნებები
       inbox_url: ინბოქსის ურლ
       ip: აი-პი
@@ -93,9 +91,7 @@ ka:
       most_recent_activity: უახლესი აქტივობა
       most_recent_ip: უახლესი აი-პი
       not_subscribed: გამოუწერელი
-      outbox_url: აუთბოქსის ურლ
       perform_full_suspension: მოახდინეთ სრული შეჩერება
-      profile_url: პროფილის ურლ
       promote: დაწინაურება
       protocol: პროტოკოლი
       public: საჯარო
@@ -115,7 +111,6 @@ ka:
         moderator: მოდერატორი
         staff: სტაფი
         user: მომხმარებელი
-      salmon_url: სალმონის ურლ
       search: ძებნა
       shared_inbox_url: გაზიარებული ინბოქსის ურლ
       show:
diff --git a/config/locales/kk.yml b/config/locales/kk.yml
index b48d6dd27d..df2a29dab9 100644
--- a/config/locales/kk.yml
+++ b/config/locales/kk.yml
@@ -118,9 +118,7 @@ kk:
       email_status: Email статусы
       enable: Қосу
       enabled: Қосылды
-      feed_url: Feеd URL
       followers: Оқырмандар
-      followers_url: Оқырмандар URL
       follows: Жазылғандары
       header: Басы
       inbox_url: Келген хаттар URL
@@ -148,10 +146,8 @@ kk:
       no_account_selected: Бірде-бір аккаунт өзгерген жоқ, себебі ештеңе таңдалмады
       no_limits_imposed: Шектеу жоқ
       not_subscribed: Жазылмаған
-      outbox_url: Кеткен хаттар URL
       pending: Күтудегілерді қарау
       perform_full_suspension: Тоқтат
-      profile_url: Профиль URL
       promote: Жарнамалау
       protocol: Хаттама
       public: Ашық
@@ -174,7 +170,6 @@ kk:
         moderator: Модератор
         staff: Қызметкерлер
         user: Қолданушы
-      salmon_url: Ақсерке URL
       search: Іздеу
       search_same_ip: Осы ІРмен кірген басқа қолданушылар
       shared_inbox_url: Бөлісілген инбокс URL
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 8b1c76ee0a..ee9e0e9547 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -114,9 +114,7 @@ ko:
       email_status: 이메일 상태
       enable: 활성화
       enabled: 활성
-      feed_url: 피드 URL
       followers: 팔로워 수
-      followers_url: 팔로워 URL
       follows: 팔로잉 수
       header: 헤더
       inbox_url: 수신함 URL
@@ -144,10 +142,8 @@ ko:
       no_account_selected: 아무 계정도 선택 되지 않아 아무 것도 변경 되지 않았습니다
       no_limits_imposed: 제한 없음
       not_subscribed: 구독하지 않음
-      outbox_url: 발신함 URL
       pending: 심사 대기
       perform_full_suspension: 정지시키기
-      profile_url: 프로필 URL
       promote: 승급
       protocol: 프로토콜
       public: 전체 공개
@@ -170,7 +166,6 @@ ko:
         moderator: 모더레이터
         staff: 스태프
         user: 사용자
-      salmon_url: Salmon URL
       search: 검색
       search_same_ip: 같은 IP의 다른 사용자들
       shared_inbox_url: 공유된 inbox URL
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index 66fe07de15..e9634b397a 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -75,9 +75,7 @@ lt:
       email_status: El pašto statusas
       enable: Įjungti
       enabled: Įjungta
-      feed_url: Srauto URL
       followers: Sekėjai
-      followers_url: Sekėjų URL
       follows: Seka
       header: Antraštė
       inbox_url: Gautųjų URL
@@ -102,9 +100,7 @@ lt:
       most_recent_ip: Paskutinis IP
       no_limits_imposed: Be limitu
       not_subscribed: Ne prenumeruota
-      outbox_url: Išsiustųjų URL
       perform_full_suspension: Užrakinti
-      profile_url: Profilio URL
       promote: Paaukštinti
       protocol: Protokolas
       public: Viešas
@@ -125,7 +121,6 @@ lt:
         moderator: Moderatorius
         staff: Personalas
         user: Vartotojas
-      salmon_url: Lašišos URL
       search: Ieškoti
       shared_inbox_url: Bendroji gautųjų URL
       show:
diff --git a/config/locales/ms.yml b/config/locales/ms.yml
index c1fe7d15a2..71dc72d9d9 100644
--- a/config/locales/ms.yml
+++ b/config/locales/ms.yml
@@ -73,9 +73,7 @@ ms:
       email_status: Status Emel
       enable: Bolehkan
       enabled: Dibolehkan
-      feed_url: Suapan URL
       followers: Pengikut
-      followers_url: URL Pengikut
       follows: Mengikuti
       inbox_url: URL mesej masuk
       ip: Alamat IP
@@ -97,9 +95,7 @@ ms:
       most_recent_ip: IP terbaru
       no_limits_imposed: Tiada had dikuatkuasakan
       not_subscribed: Tiada langganan
-      outbox_url: URL mesej keluar
       perform_full_suspension: Gantung
-      profile_url: URL profil
       promote: Naikkan pangkat
       protocol: Protokol
       public: Awam
@@ -119,7 +115,6 @@ ms:
         moderator: Pengawal
         staff: Kakitangan
         user: Pengguna
-      salmon_url: URL Salmon
       search: Cari
       shared_inbox_url: URL Peti Masuk Berkongsi
       show:
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 8f2b77f2f5..2b49708e3d 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -118,9 +118,7 @@ nl:
       email_status: E-mailstatus
       enable: Inschakelen
       enabled: Ingeschakeld
-      feed_url: Feed-URL
       followers: Volgers
-      followers_url: Volgers-URL
       follows: Volgt
       header: Omslagfoto
       inbox_url: Inbox-URL
@@ -148,10 +146,8 @@ nl:
       no_account_selected: Er zijn geen accounts veranderd, omdat er geen een was geselecteerd
       no_limits_imposed: Geen limieten ingesteld
       not_subscribed: Niet geabonneerd
-      outbox_url: Outbox-URL
       pending: Moet nog beoordeeld worden
       perform_full_suspension: Opschorten
-      profile_url: Profiel-URL
       promote: Promoveren
       protocol: Protocol
       public: Openbaar
@@ -174,7 +170,6 @@ nl:
         moderator: Moderator
         staff: Medewerkers
         user: Gebruiker
-      salmon_url: Salmon-URL
       search: Zoeken
       search_same_ip: Andere gebruikers met hetzelfde IP-adres
       shared_inbox_url: Gedeelde inbox-URL
diff --git a/config/locales/no.yml b/config/locales/no.yml
index fa40975a79..2c87860661 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -48,9 +48,7 @@
       email_status: E-poststatus
       enable: Aktiver
       enabled: Aktivert
-      feed_url: Feed-URL
       followers: Følgere
-      followers_url: Følgere URL
       follows: Følginger
       inbox_url: Innboks URL
       ip: IP-adresse
@@ -71,9 +69,7 @@
       most_recent_activity: Nyligste aktivitet
       most_recent_ip: Nyligste IP
       not_subscribed: Ikke abonnért
-      outbox_url: Utboks URL
       perform_full_suspension: Utfør full utvisning
-      profile_url: Profil-URL
       promote: Oppgradere
       protocol: Protokoll
       public: Offentlig
@@ -90,7 +86,6 @@
       roles:
         staff: Personale
         user: Bruker
-      salmon_url: Salmon-URL
       search: Søk
       shared_inbox_url: Delt Innboks URL
       show:
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index a82adf3802..f84fe882ab 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -108,9 +108,7 @@ oc:
       email_status: Estat de l’adreça
       enable: Activar
       enabled: Activat
-      feed_url: Flux URL
       followers: Seguidors
-      followers_url: URL dels seguidors
       follows: Abonaments
       header: Bandièra
       inbox_url: URL de recepcion
@@ -138,10 +136,8 @@ oc:
       no_account_selected: Cap de compte pas cambiat estant que cap èra pas seleccionat
       no_limits_imposed: Cap de limit impausat
       not_subscribed: Pas seguidor
-      outbox_url: URL Outbox
       pending: Revision en espèra
       perform_full_suspension: Suspendre
-      profile_url: URL del perfil
       promote: Promòure
       protocol: Protocòl
       public: Public
@@ -164,7 +160,6 @@ oc:
         moderator: Moderador
         staff: Personnal
         user: Uitlizaire
-      salmon_url: URL Salmon
       search: Cercar
       shared_inbox_url: URL de recepcion partejada
       show:
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 4d6181de3b..8d80ac3a3b 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -125,9 +125,7 @@ pl:
       email_status: Stan e-maila
       enable: Aktywuj
       enabled: Aktywowano
-      feed_url: Adres kanału
       followers: Śledzący
-      followers_url: Adres śledzących
       follows: Śledzeni
       header: Nagłówek
       inbox_url: Adres skrzynki
@@ -155,10 +153,8 @@ pl:
       no_account_selected: Żadne konto nie zostało zmienione, bo żadne nie zostało wybrane
       no_limits_imposed: Nie nałożono ograniczeń
       not_subscribed: Nie zasubskrybowano
-      outbox_url: Adres skrzynki nadawczej
       pending: Oczekuje na przegląd
       perform_full_suspension: Zawieś
-      profile_url: Adres profilu
       promote: Podnieś uprawnienia
       protocol: Protokół
       public: Publiczne
@@ -181,7 +177,6 @@ pl:
         moderator: Moderator
         staff: Ekipa
         user: Użytkownik
-      salmon_url: Adres Salmon
       search: Szukaj
       shared_inbox_url: Adres udostępnianej skrzynki
       show:
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index e653de4696..84eff79917 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -107,9 +107,7 @@ pt-BR:
       email_status: Estado do e-mail
       enable: Ativar
       enabled: Ativado
-      feed_url: URL do feed
       followers: Seguidores
-      followers_url: URL de seguidores
       follows: Segue
       header: Cabeçalho
       inbox_url: URL da caixa de entrada
@@ -137,10 +135,8 @@ pt-BR:
       no_account_selected: Nenhuma conta foi modificada, pois nenhuma conta foi selecionada
       no_limits_imposed: Nenhum limite imposto
       not_subscribed: Não está inscrito
-      outbox_url: URL da caixa de saída
       pending: Esperando revisão
       perform_full_suspension: Suspender
-      profile_url: URL do perfil
       promote: Promover
       protocol: Protocolo
       public: Público
@@ -163,7 +159,6 @@ pt-BR:
         moderator: Moderador
         staff: Equipe
         user: Usuário
-      salmon_url: URL Salmon
       search: Pesquisar
       shared_inbox_url: URL da caixa de entrada compartilhada
       show:
diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml
index 836d2a3e74..3c5b1ca9ac 100644
--- a/config/locales/pt-PT.yml
+++ b/config/locales/pt-PT.yml
@@ -106,9 +106,7 @@ pt-PT:
       email_status: Estado do correio electrónico
       enable: Ativar
       enabled: Ativado
-      feed_url: URL do Feed
       followers: Seguidores
-      followers_url: URL dos seguidores
       follows: A seguir
       header: Cabeçalho
       inbox_url: URL da caixa de entrada
@@ -132,9 +130,7 @@ pt-PT:
       most_recent_ip: IP mais recente
       no_limits_imposed: Sem limites impostos
       not_subscribed: Não inscrito
-      outbox_url: URL da caixa de saída
       perform_full_suspension: Fazer suspensão completa
-      profile_url: URL do perfil
       promote: Promover
       protocol: Protocolo
       public: Público
@@ -155,7 +151,6 @@ pt-PT:
         moderator: Moderador
         staff: Equipa
         user: Utilizador
-      salmon_url: URL Salmon
       search: Pesquisar
       shared_inbox_url: URL da caixa de entrada compartilhada
       show:
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index fbf8ebc129..5c68ce4d46 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -126,9 +126,7 @@ ru:
       email_status: Статус e-mail
       enable: Включить
       enabled: Включен
-      feed_url: URL фида
       followers: Подписчики
-      followers_url: URL подписчиков
       follows: Подписки
       header: Шапка
       inbox_url: URL входящих
@@ -156,10 +154,8 @@ ru:
       no_account_selected: Ничего не выбрано, никакие учётные записи не изменены
       no_limits_imposed: Без ограничений
       not_subscribed: Не подписаны
-      outbox_url: URL исходящих
       pending: Ожидает рассмотрения
       perform_full_suspension: Полная блокировка
-      profile_url: URL профиля
       promote: Повысить
       protocol: Протокол
       public: Публичный
@@ -182,7 +178,6 @@ ru:
         moderator: Модератор
         staff: Персонал
         user: Пользователь
-      salmon_url: Страница Salmon
       search: Поиск
       search_same_ip: Другие пользователи с таким же IP
       shared_inbox_url: URL общих входящих
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index 4d86cf6021..8339309b35 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -122,9 +122,7 @@ sk:
       email_status: Stav emailu
       enable: Povoľ
       enabled: Povolený
-      feed_url: adresa časovej osi
       followers: Sledujúci
-      followers_url: URL adresa sledujúcich
       follows: Sledovania
       header: Záhlavie
       inbox_url: URL adresa prijatých správ
@@ -152,10 +150,8 @@ sk:
       no_account_selected: Nedošlo k žiadnému pozmeneniu účtov, keďže žiadne neboli vybrané
       no_limits_imposed: Nie sú stanovené žiadné obmedzenia
       not_subscribed: Neodoberá
-      outbox_url: URL poslaných
       pending: Vyžaduje posúdenie
       perform_full_suspension: Vylúč
-      profile_url: URL adresa profilu
       promote: Vyzdvihni
       protocol: Protokol
       public: Verejná časová os
@@ -178,7 +174,6 @@ sk:
         moderator: Moderátor
         staff: Člen
         user: Užívateľ
-      salmon_url: Salmon adresa
       search: Hľadaj
       search_same_ip: Ostatní užívatelia s rovnakou IP adresou
       shared_inbox_url: URL zdieľanej schránky
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index da4c48d4a6..2faaa149a3 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -114,9 +114,7 @@ sl:
       email_status: Stanje e-pošte
       enable: Omogoči
       enabled: Omogočeno
-      feed_url: URL vira
       followers: Sledilci
-      followers_url: URL sledilcev
       follows: Sledi
       header: Glava
       inbox_url: URL mape "Prejeto"
@@ -144,10 +142,8 @@ sl:
       no_account_selected: Noben račun ni bil spremenjen, ker ni bil izbran noben
       no_limits_imposed: Brez omejitev
       not_subscribed: Ni naročen
-      outbox_url: URL za pošiljanje
       pending: Čakanje na pregled
       perform_full_suspension: Suspendiraj
-      profile_url: URL profila
       promote: Promoviraj
       protocol: Protokol
       public: Javen
@@ -170,7 +166,6 @@ sl:
         moderator: Moderator
         staff: Osebje
         user: Uporabnik
-      salmon_url: URL lososa
       search: Iskanje
       shared_inbox_url: URL mape "Prejeto v skupni rabi"
       show:
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index c64fe23c6b..e5378082e8 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -81,9 +81,7 @@ sq:
       email_status: Gjendje email-i
       enable: Aktivizoje
       enabled: E aktivizuar
-      feed_url: URL prurjeje
       followers: Ndjekës
-      followers_url: URL Ndjekësish
       follows: Ndjekje
       header: Krye
       inbox_url: URL Mesazhesh të Marrë
@@ -108,9 +106,7 @@ sq:
       most_recent_ip: IP-ja më e freskët
       no_limits_imposed: Pa imponim kufijsh
       not_subscribed: Jo i pajtuar
-      outbox_url: URL Mesazhesh të Dërguar
       perform_full_suspension: Pezulloje
-      profile_url: URL profili
       promote: Promovojeni
       protocol: Protokoll
       public: Publike
diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml
index 2bddaf3115..1f3d69e211 100644
--- a/config/locales/sr-Latn.yml
+++ b/config/locales/sr-Latn.yml
@@ -47,9 +47,7 @@ sr-Latn:
       email_status: Status e-pošte
       enable: Uključi
       enabled: Uključeno
-      feed_url: Adresa dovoda
       followers: Pratioci
-      followers_url: Adresa pratioca
       follows: Praćeni
       inbox_url: Adresa sandučeta
       location:
@@ -69,9 +67,7 @@ sr-Latn:
       most_recent_activity: Najskorija aktivnost
       most_recent_ip: Najskorija IP adresa
       not_subscribed: Nije pretplaćen
-      outbox_url: Odlazno sanduče
       perform_full_suspension: Izvrši kompletno isključenje
-      profile_url: Adresa profila
       promote: Unapredi
       protocol: Protokol
       public: Javno
@@ -87,7 +83,6 @@ sr-Latn:
       roles:
         staff: Osoblje
         user: Korisnik
-      salmon_url: Salmon adresa
       search: Pretraga
       shared_inbox_url: Adresa deljenog sandučeta
       show:
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index 21eb19fee0..d06bb214ee 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -91,9 +91,7 @@ sr:
       email_status: Статус е-поште
       enable: Омогући
       enabled: Укључено
-      feed_url: Адреса довода
       followers: Пратиоци
-      followers_url: Адреса пратиоца
       follows: Праћени
       header: Заглавље
       inbox_url: Адреса сандучета
@@ -118,9 +116,7 @@ sr:
       most_recent_ip: Најскорија IP адреса
       no_limits_imposed: Нема ограничења
       not_subscribed: Није претплаћен
-      outbox_url: Одлазно сандуче
       perform_full_suspension: Искључи
-      profile_url: Адреса профила
       promote: Унапреди
       protocol: Протокол
       public: Јавно
@@ -141,7 +137,6 @@ sr:
         moderator: Модератор
         staff: Особље
         user: Корисник
-      salmon_url: Salmon адреса
       search: Претрага
       shared_inbox_url: Адреса дељеног сандучета
       show:
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 19c7ef845f..9116986200 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -106,9 +106,7 @@ sv:
       email_status: E-poststatus
       enable: Aktivera
       enabled: Aktiverad
-      feed_url: Flödes URL
       followers: Följare
-      followers_url: Följare URL
       follows: Följs
       header: Rubrik
       inbox_url: Inkorgs URL
@@ -136,10 +134,8 @@ sv:
       no_account_selected: Inga konton har ändrats och inget har valts
       no_limits_imposed: Inga begränsningar har införts
       not_subscribed: Inte prenumererat
-      outbox_url: Utkorg URL
       pending: Inväntar granskning
       perform_full_suspension: Utför full avstängning
-      profile_url: Profil URL
       promote: Befordra
       protocol: Protokoll
       public: Offentlig
@@ -162,7 +158,6 @@ sv:
         moderator: Moderator
         staff: Personal
         user: Användare
-      salmon_url: Lax URL
       search: Sök
       search_same_ip: Annan användare med samma IP-adress
       shared_inbox_url: Delad inkorg URL
diff --git a/config/locales/te.yml b/config/locales/te.yml
index 526b03b497..dd6c878e74 100644
--- a/config/locales/te.yml
+++ b/config/locales/te.yml
@@ -87,9 +87,7 @@ te:
       email_status: ఈమెయిల్ స్థితి
       enable: చేతనం
       enabled: చేతనం చేయబడింది
-      feed_url: ఫీడ్ URL
       followers: అనుచరులు
-      followers_url: అనుచరుల URL
       follows: అనుసరిస్తున్నారు
       inbox_url: ఇన్ బాక్స్ URL
       location:
diff --git a/config/locales/th.yml b/config/locales/th.yml
index eda9b52a23..214a93acf3 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -97,9 +97,7 @@ th:
       email_status: สถานะอีเมล
       enable: เปิดใช้งาน
       enabled: เปิดใช้งานอยู่
-      feed_url: URL ฟีด
       followers: ผู้ติดตาม
-      followers_url: URL ผู้ติดตาม
       follows: การติดตาม
       header: ส่วนหัว
       inbox_url: URL กล่องขาเข้า
@@ -124,9 +122,7 @@ th:
       most_recent_activity: กิจกรรมล่าสุด
       most_recent_ip: IP ล่าสุด
       not_subscribed: ไม่ได้บอกรับ
-      outbox_url: URL กล่องขาออก
       perform_full_suspension: ระงับ
-      profile_url: URL โปรไฟล์
       promote: เลื่อนตำแหน่ง
       protocol: โปรโตคอล
       public: สาธารณะ
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index afaf4d2513..f3a2817ece 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -118,9 +118,7 @@ tr:
       email_status: E-posta durumu
       enable: Etkinleştir
       enabled: Etkin
-      feed_url: Besleme linki
       followers: Takipçiler
-      followers_url: Takipçi bağlantısı
       follows: Takip edilen
       header: Üstbilgi
       inbox_url: Gelen kutusu bağlantısı
@@ -148,10 +146,8 @@ tr:
       no_account_selected: Hiçbiri seçilmediğinden hiçbir hesap değiştirilmedi
       no_limits_imposed: Sınır koymaz
       not_subscribed: Abone edilmedi
-      outbox_url: Giden Kutusu URL'si
       pending: Bekleyen yorum
       perform_full_suspension: Askıya al
-      profile_url: Profil linki
       promote: Yükselt
       protocol: Protokol
       public: Herkese açık
@@ -174,7 +170,6 @@ tr:
         moderator: Denetleyici
         staff: Personel
         user: Kullanıcı
-      salmon_url: Salmon Linki
       search: Ara
       search_same_ip: Aynı IP adresine sahip diğer kullanıcılar
       shared_inbox_url: Paylaşılan gelen kutusu bağlantısı
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index fce2366c7b..edcc289da7 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -120,9 +120,7 @@ uk:
       email_status: Статус електронної пошти
       enable: Увімкнути
       enabled: Увімкнено
-      feed_url: URL-адреса каналу
       followers: Підписники
-      followers_url: URL підписників
       follows: Підписки
       header: Заголовок
       inbox_url: URL вхідних повідомлень
@@ -150,10 +148,8 @@ uk:
       no_account_selected: Жоден обліковий запис не було змінено, оскільки жоден не було вибрано
       no_limits_imposed: Жодних обмежень не накладено
       not_subscribed: Не підписані
-      outbox_url: URL вихідних повідомлень
       pending: Відгук в очікуванні
       perform_full_suspension: Призупинити
-      profile_url: URL профілю
       promote: Просунути
       protocol: Протокол
       public: Публічний
@@ -176,7 +172,6 @@ uk:
         moderator: Модератор
         staff: Персонал
         user: Користувач
-      salmon_url: Salmon URL
       search: Пошук
       shared_inbox_url: URL спільного вхідного кошика
       show:
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index c7822d6e34..49dd31bac8 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -107,9 +107,7 @@ zh-CN:
       email_status: 电子邮件地址状态
       enable: 启用
       enabled: 已启用
-      feed_url: 订阅 URL
       followers: 关注者
-      followers_url: 关注者(Followers)URL
       follows: 正在关注
       header: 个人资料页横幅图片
       inbox_url: 收件箱(Inbox)URL
@@ -137,10 +135,8 @@ zh-CN:
       no_account_selected: 因为没有账户被选择,所以没有更改
       no_limits_imposed: 无限制
       not_subscribed: 未订阅
-      outbox_url: 发件箱(Outbox)URL
       pending: 待审核
       perform_full_suspension: 封禁
-      profile_url: 个人资料页面 URL
       promote: 升任
       protocol: 协议
       public: 公开页面
@@ -163,7 +159,6 @@ zh-CN:
         moderator: 监察员
         staff: 管理人员
         user: 普通用户
-      salmon_url: 三文鱼协议网址(Salmon URL)
       search: 搜索
       search_same_ip: 具有相同IP的其他用户
       shared_inbox_url: 公用收件箱(Shared Inbox)URL
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index 74eefcd056..4b7ca52e10 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -64,9 +64,7 @@ zh-HK:
       email_status: 电子邮件状态
       enable: 啟用
       enabled: 已啟用
-      feed_url: 訂閱 URL
       followers: 關注者
-      followers_url: 關注者(Followers)URL
       follows: 正在關注
       inbox_url: 收件箱(Inbox)URL
       ip: IP 位域
@@ -87,9 +85,7 @@ zh-HK:
       most_recent_activity: 最新活動
       most_recent_ip: 最新 IP 位域
       not_subscribed: 未訂閱
-      outbox_url: 寄件箱(Outbox)URL
       perform_full_suspension: 完全停權
-      profile_url: 個人檔案 URL
       promote: 升任
       protocol: 協議
       public: 公共
@@ -109,7 +105,6 @@ zh-HK:
         moderator: 監察員
         staff: 管理人員
         user: 普通用戶
-      salmon_url: Salmon 反饋 URL
       search: 搜索
       shared_inbox_url: 公共收件箱(Shared Inbox)URL
       show:
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index 1f0c5522fc..7a5627c305 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -99,9 +99,7 @@ zh-TW:
       email_status: 電子信箱狀態
       enable: 啟用
       enabled: 已啟用
-      feed_url: 訂閱 URL
       followers: 關注者
-      followers_url: 關注者(Followers)URL
       follows: 正在關注
       header: 開頭
       inbox_url: 收件箱 (Inbox) URL
@@ -128,10 +126,8 @@ zh-TW:
       most_recent_ip: 最近 IP 位址
       no_limits_imposed: 未受限制
       not_subscribed: 未訂閱
-      outbox_url: 寄件箱 (Outbox) URL
       pending: 等待審核中
       perform_full_suspension: 停權
-      profile_url: 個人檔案 URL
       promote: 晉級
       protocol: 協議
       public: 公開
@@ -154,7 +150,6 @@ zh-TW:
         moderator: 版主
         staff: 管理人員
         user: 普通使用者
-      salmon_url: Salmon 網址
       search: 搜尋
       shared_inbox_url: 共享收件箱網址
       show:

From c0ed53b810351b61db543701c4938d41723a6e4e Mon Sep 17 00:00:00 2001
From: ThibG <thib@sitedethib.com>
Date: Wed, 18 Dec 2019 16:56:59 +0100
Subject: [PATCH 34/39] Fix custom emoji category creation silently erroring
 out on duplicate category (#12647)

Instead, just re-use the existing category if any.

Fixes #12608
---
 app/models/form/custom_emoji_batch.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/models/form/custom_emoji_batch.rb b/app/models/form/custom_emoji_batch.rb
index 076e8c9e39..6b7ea5355d 100644
--- a/app/models/form/custom_emoji_batch.rb
+++ b/app/models/form/custom_emoji_batch.rb
@@ -40,7 +40,7 @@ class Form::CustomEmojiBatch
       if category_id.present?
         CustomEmojiCategory.find(category_id)
       elsif category_name.present?
-        CustomEmojiCategory.create!(name: category_name)
+        CustomEmojiCategory.find_or_create_by!(name: category_name)
       end
     end
 

From 1afbe083fda12907fbe48b42e658243103c7721b Mon Sep 17 00:00:00 2001
From: Eugen Rochko <eugen@zeonfederated.com>
Date: Wed, 18 Dec 2019 19:04:43 +0100
Subject: [PATCH 35/39] Fix unsafe column type change in migration (#12653)

---
 .../20191212003415_increase_backup_size.rb       | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/db/migrate/20191212003415_increase_backup_size.rb b/db/migrate/20191212003415_increase_backup_size.rb
index 782c67db1e..a5192263cf 100644
--- a/db/migrate/20191212003415_increase_backup_size.rb
+++ b/db/migrate/20191212003415_increase_backup_size.rb
@@ -1,9 +1,21 @@
+require Rails.root.join('lib', 'mastodon', 'migration_helpers')
+
 class IncreaseBackupSize < ActiveRecord::Migration[5.2]
+  include Mastodon::MigrationHelpers
+
+  disable_ddl_transaction!
+
   def up
-    change_column :backups, :dump_file_size, :bigint
+    safety_assured do
+      change_column_type_concurrently :backups, :dump_file_size, :bigint
+      cleanup_concurrent_column_type_change :backups, :dump_file_size
+    end
   end
 
   def down
-    change_column :backups, :dump_file_size, :integer
+    safety_assured do
+      change_column_type_concurrently :backups, :dump_file_size, :integer
+      cleanup_concurrent_column_type_change :backups, :dump_file_size
+    end
   end
 end

From 4dbf0a91b2a8f3f4a69c5fe8f663668708a9b901 Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Thu, 19 Dec 2019 07:21:51 +0900
Subject: [PATCH 36/39] [Security] Bump rack from 2.0.7 to 2.0.8 (#12654)

Bumps [rack](https://github.com/rack/rack) from 2.0.7 to 2.0.8. **This update includes a security fix.**
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.0.7...2.0.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
---
 Gemfile.lock | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index df29d4f399..63d71b4338 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -458,7 +458,7 @@ GEM
     pundit (2.1.0)
       activesupport (>= 3.0.0)
     raabro (1.1.6)
-    rack (2.0.7)
+    rack (2.0.8)
     rack-attack (6.2.1)
       rack (>= 1.0, < 3)
     rack-cors (1.1.0)

From a90258dbe9f6632350a81f0e4e14f6cc354e0e76 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcin=20Miko=C5=82ajczak?= <me@mkljczk.pl>
Date: Wed, 18 Dec 2019 23:39:08 +0100
Subject: [PATCH 37/39] fix multiple space (#12655)

---
 app/javascript/mastodon/extra_polyfills.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/javascript/mastodon/extra_polyfills.js b/app/javascript/mastodon/extra_polyfills.js
index 3acc55abd6..13c4f6da9e 100644
--- a/app/javascript/mastodon/extra_polyfills.js
+++ b/app/javascript/mastodon/extra_polyfills.js
@@ -1,5 +1,5 @@
 import 'intersection-observer';
 import 'requestidlecallback';
-import objectFitImages  from 'object-fit-images';
+import objectFitImages from 'object-fit-images';
 
 objectFitImages();

From dc0750abc331749a92ffa96fed9fe048acdea3b1 Mon Sep 17 00:00:00 2001
From: ThibG <thib@sitedethib.com>
Date: Thu, 19 Dec 2019 12:47:19 +0100
Subject: [PATCH 38/39] Fix manual scrolling issue on Firefox/Windows (#12648)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fixes #12607

`will-change: transform` apparently makes manual scrolling impossible on
Firefox/Windows. While this should probably be considered a Firefox bug,
`will-change: transform` seem like a very aggressive performance hint that
may possibly make the browser consume more resources than needed, especially
in multiple-column mode.

This was originally added to improve scrolling performances on mobile, but
I think this isn't necessary anymore, because of the two following reasons:
- `contain: paint` (which is implied by `contain: strict`, which we apply
  whenever the browser supports grids) should have similar effects
- in single-column mode, the scrolling container is the root element, which
  I believe is optimized in at least Chromium

Keep in mind that I have not been able to make in-depth benchmarks, and
especially not been able to try on mobile, so performances should probably
be investigated further…
---
 app/javascript/styles/mastodon/components.scss | 1 -
 1 file changed, 1 deletion(-)

diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 13f9dfae76..4c7ce9ba7c 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -2512,7 +2512,6 @@ a.account__display-name {
   overflow-x: hidden;
   flex: 1 1 auto;
   -webkit-overflow-scrolling: touch;
-  will-change: transform; // improves perf in mobile Chrome
 
   &.optionally-scrollable {
     overflow-y: auto;

From 902c6bed5aab12c2e97af3452f122247777226af Mon Sep 17 00:00:00 2001
From: Sasha Sorokin <dafri.nochiterov8@gmail.com>
Date: Thu, 19 Dec 2019 18:47:55 +0700
Subject: [PATCH 39/39] Use different strings on exports page (#12569)

Currently the page re-uses strings from other contexts which doesn't fit
very well - strings incorrectly lowercase-d and pluralized, when they
don't need to be, because it's a table.

This commit changes page to re-use accounts.posts_tab_heading for toots,
and admin.accounts for "Following" and "Follows". This all should look
more aesthetically pleasing.
---
 app/views/settings/exports/show.html.haml | 6 +++---
 config/locales/en.yml                     | 1 -
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml
index 76ff76bd9c..0bb80e9372 100644
--- a/app/views/settings/exports/show.html.haml
+++ b/app/views/settings/exports/show.html.haml
@@ -9,11 +9,11 @@
         %td= number_to_human_size @export.total_storage
         %td
       %tr
-        %th= t('accounts.posts', count: @export.total_statuses)
+        %th= t('accounts.posts_tab_heading')
         %td= number_with_delimiter @export.total_statuses
         %td
       %tr
-        %th= t('exports.follows')
+        %th= t('admin.accounts.follows')
         %td= number_with_delimiter @export.total_follows
         %td= table_link_to 'download', t('exports.csv'), settings_exports_follows_path(format: :csv)
       %tr
@@ -21,7 +21,7 @@
         %td= number_with_delimiter @export.total_lists
         %td= table_link_to 'download', t('exports.csv'), settings_exports_lists_path(format: :csv)
       %tr
-        %th= t('accounts.followers', count: @export.total_followers)
+        %th= t('admin.accounts.followers')
         %td= number_with_delimiter @export.total_followers
         %td
       %tr
diff --git a/config/locales/en.yml b/config/locales/en.yml
index a54cc813ee..c7179d304f 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -719,7 +719,6 @@ en:
     blocks: You block
     csv: CSV
     domain_blocks: Domain blocks
-    follows: You follow
     lists: Lists
     mutes: You mute
     storage: Media storage