Commit graph

6934 commits

Author SHA1 Message Date
Jeremy Kescher
04c611daa1
Fix being unable to react with the keycap number sign emoji (#22231)
#⃣

This bug is caused by the emoji consisting of:
U+23 #
U+FE0F
U+20E3  ⃣

Because it starts with a #, it's interpreted as an anchor link, which is not passed to the API. Therefore, the API sees no emoji to react with and answers correctly with a 404.
2022-12-15 16:18:39 +01:00
nametoolong
63b379c2d9
Fix N+1 queries from in NotificationsController (#21202)
Co-authored-by: Nonexistent <nx@example.org>
2022-12-15 16:18:20 +01:00
luzpaz
596923da4a
Fix typos in source documentation (#21046)
Fixed 2 source comment/documentation typos
2022-12-15 15:57:26 +01:00
Riedler
c3388f4ab1
Fix profile avatar being slightly offset into left border (fixes #20822) (#20994)
* hotfix for #20822

I don't know why it was shifted in the first place or why the width is specified twice, but this fixes the problem, so it looks fine to me.

* realigned pfp with content below

* fixed formatting 

my bad

* added comment to explain the negative margin

before I forget - comments are *important* !

Co-authored-by: Riedler <riedler@gelse.eu>
2022-12-15 15:57:02 +01:00
s0
52540771b0
Fix crash in elasticsearch_check.rb (#21006)
Nil unwrap causes the admin dashboard to crash/500 when the Chewy client info version number value is nil.
This occurs when running another ES-compatible backend such as MeiliSearch.
Obviously it would be good for chewy to recognise upstream but at least avoiding the crash would be fine.
2022-12-15 15:56:48 +01:00
Effy Elden
441cac758f
Allow adding relays while secure mode & limited federation mode are enabled (#22324) 2022-12-15 15:56:05 +01:00
Claire
7b68e6409b
Fix invalid CSS for links in warning and strike cards (#22302) 2022-12-15 15:52:18 +01:00
Jeong Arm
e8cc63105f
Don't delivery a reply to domains which are blocked by author (#22117)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2022-12-15 15:52:06 +01:00
Claire
bae6ef315e
Fix missing Javascript in domain block import confirmation page (#21471)
Follow-up to #20597
2022-12-15 15:47:23 +01:00
Francis Murillo
5fb1c3e934
Revoke all authorized applications on password reset (#21325)
* Clear sessions on password change

* Rename User::clear_sessions to revoke_access for a clearer meaning

* Add reset paassword controller test

* Use User.find instead of User.find_for_authentication for reset password test

* Use redirect and render for better test meaning in reset password

Co-authored-by: Effy Elden <effy@effy.space>
2022-12-15 15:47:06 +01:00
Claire
fe9eab51d1
Change dropdown menu to contain “Copy link to post” even for non-public posts (#21316)
Fixes #21244
2022-12-15 15:43:16 +01:00
Claire
5917b46c05
Allow admins to refresh remotely-suspended accounts (#22327)
* Change suspension text to mention that a remotely suspended account is not locally-suspended

* Add ability to refresh profile of remotely suspended accounts
2022-12-15 14:15:50 +01:00
Claire
1f762f4271
Fix wasteful request to /api/v1/custom_emojis when not logged in (#22326) 2022-12-15 14:07:34 +01:00
zunda
09191dee66
Add single splat to callback method definitions to avoid ArgumentError (#22246)
It looks like a [bug](https://bugs.ruby-lang.org/issues/18633) around
autosplat is [fixed](fbaadd1cfe)
on ruby-3.2.0-rc1 and breaks a test (but not on ruby <= 3.1.3):

```
$ bundle exec rspec ./spec/controllers/api/v1/emails/confirmations_controller_spec.rb:41
  :
  1) Api::V1::Emails::ConfirmationsController#create with an oauth token from an app that created the account when the account is already confirmed but user changed e-mail and has not confirmed it returns http success
     Failure/Error:
         def email_changed(user, **)
           @resource = user
           @instance = Rails.configuration.x.local_domain

           return unless @resource.active_for_authentication?

           I18n.with_locale(locale) do
             mail to: @resource.email, subject: I18n.t('devise.mailer.email_changed.subject')
           end
         end

     ArgumentError:
       wrong number of arguments (given 2, expected 1)
     # ./app/mailers/user_mailer.rb:51:in `email_changed'
     # ./app/models/user.rb:444:in `render_and_send_devise_message'
     # ./app/models/user.rb:430:in `block in send_pending_devise_notifications'
     # ./app/models/user.rb:429:in `each'
     # ./app/models/user.rb:429:in `send_pending_devise_notifications'
     # ./spec/controllers/api/v1/emails/confirmations_controller_spec.rb:38:in `block (7 levels) in <top (required)>'
```
2022-12-13 20:03:16 +01:00
Rin
42e16ea52d
fix missing style in warning and strike cards (#22177) 2022-12-13 20:03:09 +01:00
cadars
52a50c5e43
Make handle more easily selectable on profile page (#21479)
* Make handle more easily selectable on profile page

* Wrap handle in a span

* Add `user-select: all` to span

* remove whitespace
2022-12-13 19:43:03 +01:00
Claire
f70bdba926
Change default reply language to be default language when replying to a translated reply (#22272)
Fixes #22250
2022-12-13 19:41:53 +01:00
prplecake
714e68db38
Add noindex setting to Admin settings Discovery page (#22205)
* Add noindex setting to Admin settings Discovery page

* Replace default_noindex i18n
2022-12-11 07:27:44 +01:00
Eugen Rochko
97b6e38a7d
New Crowdin updates (#21954)
* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Serbian (Latin))

* New translations en.yml (Serbian (Latin))

* New translations simple_form.en.yml (Serbian (Latin))

* New translations activerecord.en.yml (Serbian (Latin))

* New translations doorkeeper.en.yml (Serbian (Latin))

* New translations devise.en.yml (Serbian (Latin))

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Chinese Traditional)

* New translations en.json (Serbian (Latin))

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Icelandic)

* New translations en.json (Serbian (Latin))

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Serbian (Latin))

* New translations en.json (Malay)

* New translations en.json (Malay)

* New translations activerecord.en.yml (Malay)

* New translations devise.en.yml (Malay)

* New translations en.yml (Malay)

* New translations en.yml (Arabic)

* New translations en.yml (Greek)

* New translations en.yml (Galician)

* New translations simple_form.en.yml (Malay)

* New translations en.yml (Greek)

* New translations en.yml (Russian)

* New translations en.yml (Belarusian)

* New translations en.yml (Greek)

* New translations en.yml (Belarusian)

* New translations simple_form.en.yml (Greek)

* New translations en.json (Greek)

* New translations en.yml (Greek)

* New translations en.yml (Belarusian)

* New translations doorkeeper.en.yml (Greek)

* New translations en.yml (Greek)

* New translations en.yml (Malay)

* New translations simple_form.en.yml (Malay)

* New translations en.json (Esperanto)

* New translations en.yml (Malay)

* New translations en.yml (Esperanto)

* New translations devise.en.yml (Esperanto)

* New translations en.yml (Vietnamese)

* New translations simple_form.en.yml (Vietnamese)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Serbian (Latin))

* New translations en.yml (Belarusian)

* New translations en.yml (Vietnamese)

* New translations en.yml (Belarusian)

* New translations en.yml (Kurmanji (Kurdish))

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Serbian (Latin))

* New translations en.json (Occitan)

* New translations en.json (Czech)

* New translations en.yml (Hebrew)

* New translations doorkeeper.en.yml (Spanish, Argentina)

* New translations en.json (German)

* New translations en.yml (Spanish, Argentina)

* New translations en.json (German)

* New translations simple_form.en.yml (Serbian (Cyrillic))

* New translations en.json (German)

* New translations en.json (Esperanto)

* New translations en.yml (Esperanto)

* New translations en.yml (Esperanto)

* New translations en.yml (Thai)

* New translations activerecord.en.yml (Scots)

* New translations en.json (Scottish Gaelic)

* New translations en.yml (Belarusian)

* New translations en.yml (Belarusian)

* New translations en.json (Latvian)

* New translations en.json (Latvian)

* New translations activerecord.en.yml (Latvian)

* New translations devise.en.yml (Latvian)

* New translations en.yml (Turkish)

* New translations en.yml (Scottish Gaelic)

* New translations en.yml (Danish)

* New translations en.yml (Thai)

* New translations en.yml (Belarusian)

* New translations simple_form.en.yml (Thai)

* New translations en.yml (Thai)

* New translations en.json (Thai)

* New translations en.yml (German)

* New translations en.yml (German)

* New translations simple_form.en.yml (German)

* New translations en.json (Kurmanji (Kurdish))

* New translations en.json (Kurmanji (Kurdish))

* New translations en.yml (Belarusian)

* New translations en.yml (Kurmanji (Kurdish))

* New translations en.json (Latvian)

* New translations simple_form.en.yml (Serbian (Cyrillic))

* New translations en.yml (Belarusian)

* New translations en.yml (German)

* New translations en.json (German)

* New translations simple_form.en.yml (German)

* New translations simple_form.en.yml (Serbian (Cyrillic))

* New translations simple_form.en.yml (Spanish, Argentina)

* New translations en.yml (German)

* New translations en.json (German)

* New translations en.yml (Spanish, Argentina)

* New translations en.yml (Persian)

* New translations en.json (Spanish, Mexico)

* New translations en.yml (Belarusian)

* New translations en.yml (German)

* New translations en.json (Danish)

* New translations en.yml (Danish)

* New translations simple_form.en.yml (Scots)

* New translations en.yml (Belarusian)

* New translations en.yml (Danish)

* New translations en.yml (Scots)

* New translations simple_form.en.yml (Scots)

* New translations en.json (Scots)

* New translations devise.en.yml (Scots)

* New translations doorkeeper.en.yml (Scots)

* New translations en.yml (Greek)

* New translations en.yml (Greek)

* New translations en.yml (Belarusian)

* New translations en.json (German)

* New translations en.yml (Belarusian)

* New translations en.yml (Spanish, Argentina)

* New translations en.json (Spanish, Argentina)

* New translations en.json (German)

* New translations en.json (Esperanto)

* New translations en.json (French)

* New translations en.yml (Esperanto)

* New translations en.yml (Belarusian)

* New translations en.json (Esperanto)

* New translations en.yml (Esperanto)

* New translations en.yml (Belarusian)

* New translations devise.en.yml (Esperanto)

* New translations en.json (Slovak)

* New translations en.yml (Slovak)

* New translations activerecord.en.yml (Slovak)

* New translations devise.en.yml (Slovak)

* New translations doorkeeper.en.yml (Slovak)

* New translations en.yml (Belarusian)

* New translations en.yml (Slovak)

* New translations en.yml (Belarusian)

* New translations en.yml (Belarusian)

* New translations en.json (Lithuanian)

* New translations en.yml (Belarusian)

* New translations simple_form.en.yml (Serbian (Cyrillic))

* New translations en.yml (Belarusian)

* New translations simple_form.en.yml (Serbian (Cyrillic))

* New translations en.json (Esperanto)

* New translations en.json (Vietnamese)

* New translations en.yml (Belarusian)

* New translations en.yml (Belarusian)

* New translations en.yml (Belarusian)

* New translations simple_form.en.yml (Belarusian)

* New translations en.yml (Belarusian)

* New translations en.yml (Latvian)

* New translations en.yml (Belarusian)

* New translations en.json (Welsh)

* New translations en.yml (Welsh)

* New translations simple_form.en.yml (Welsh)

* New translations activerecord.en.yml (Welsh)

* New translations devise.en.yml (Welsh)

* New translations doorkeeper.en.yml (Welsh)

* New translations en.json (Welsh)

* New translations en.json (Welsh)

* New translations en.yml (Welsh)

* New translations en.yml (Hebrew)

* New translations en.yml (Welsh)

* New translations en.yml (Hebrew)

* New translations en.yml (Russian)

* New translations simple_form.en.yml (Serbian (Cyrillic))

* New translations simple_form.en.yml (Belarusian)

* New translations en.yml (Ukrainian)

* New translations en.json (Ukrainian)

* New translations en.json (Chinese Simplified)

* New translations en.json (Slovak)

* New translations en.json (Slovak)

* New translations en.yml (Slovak)

* New translations en.yml (Belarusian)

* normalize

* New translations en.yml (Belarusian)

* normalize

Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>
2022-12-10 00:12:56 +09:00
Claire
ed07f10ca8
Fix failure when “Require a reason to join” is set with open registrations (#22127) 2022-12-07 16:39:58 +01:00
Claire
c8a1faa86b
Fix potential duplicate statuses in Explore tab (#22121) 2022-12-07 14:12:55 +01:00
Claire
b59fb28e90
Fix 500 error when trying to migrate to an invalid address (#21462)
* Fix 500 error when trying to migrate to an invalid address

* Add tests
2022-12-07 02:35:39 +01:00
Juan Xavier Gomez
21b208afcb
Fix hidden overflow on interaction modal (#21763)
* Fix hidden overflow on interaction modal

* only update overflow y
2022-12-07 00:40:37 +01:00
Claire
76454cc638
Fix UI header overflow on mobile (#21783) 2022-12-07 00:40:18 +01:00
Claire
51098035ed
Fix “Sign up” button with closed registrations not opening modal on mobile (#22060)
Fixes #20840
2022-12-07 00:25:40 +01:00
Francis Murillo
f6492a7c4d
Log admin approve and reject account (#22088)
* Log admin approve and reject account

* Add unit tests for approve and reject logging
2022-12-07 00:25:18 +01:00
Claire
c8849d6cee
Fix unbounded recursion in account discovery (#22025)
* Fix trying to fetch posts from other users when fetching featured posts

* Rate-limit discovery of new subdomains

* Put a limit on recursively discovering new accounts
2022-12-07 00:15:24 +01:00
Claire
69137f4a90
Fix irreversible and whole_word parameters handling in /api/v1/filters (#21988)
Fixes #21965
2022-12-07 00:10:53 +01:00
Jed Fox
33f06a4ae7
Fix the top border of verified account fields (#22006) 2022-12-06 23:54:02 +01:00
Nick Schonning
05d4c50f64
Fix spacing warning from ESLint (#22005) 2022-12-04 10:56:21 +09:00
Eugen Rochko
6119668e45
New Crowdin updates (#21599)
* New translations doorkeeper.en.yml (Esperanto)

* New translations activerecord.en.yml (Spanish)

* New translations activerecord.en.yml (Esperanto)

* New translations doorkeeper.en.yml (Spanish)

* New translations devise.en.yml (Spanish)

* New translations devise.en.yml (Esperanto)

* New translations en.json (Spanish)

* New translations en.yml (Danish)

* New translations en.json (Serbian (Cyrillic))

* New translations en.yml (Faroese)

* New translations en.yml (Faroese)

* New translations en.json (German)

* New translations en.yml (Faroese)

* New translations simple_form.en.yml (Faroese)

* New translations en.yml (Belarusian)

* New translations en.yml (German)

* New translations en.json (German)

* New translations simple_form.en.yml (Faroese)

* New translations en.yml (Belarusian)

* New translations doorkeeper.en.yml (Belarusian)

* New translations en.yml (German)

* New translations en.json (Bulgarian)

* New translations en.json (German)

* New translations en.yml (Bulgarian)

* New translations simple_form.en.yml (Bulgarian)

* New translations doorkeeper.en.yml (Bulgarian)

* New translations en.json (Belarusian)

* New translations simple_form.en.yml (Belarusian)

* New translations en.json (Czech)

* New translations en.json (Serbian (Cyrillic))

* New translations en.yml (Serbian (Cyrillic))

* New translations simple_form.en.yml (Faroese)

* New translations devise.en.yml (Catalan)

* New translations en.yml (German)

* New translations en.json (Bulgarian)

* New translations en.json (German)

* New translations en.json (Catalan)

* New translations en.yml (Catalan)

* New translations en.json (Danish)

* New translations en.json (Ukrainian)

* New translations en.json (Galician)

* New translations doorkeeper.en.yml (Catalan)

* New translations simple_form.en.yml (German)

* New translations en.json (Danish)

* New translations en.yml (English, United Kingdom)

* New translations simple_form.en.yml (Faroese)

* New translations en.json (Danish)

* New translations en.yml (Japanese)

* New translations en.yml (German)

* New translations en.json (Urdu (Pakistan))

* New translations simple_form.en.yml (German)

* New translations simple_form.en.yml (Faroese)

* New translations en.yml (German)

* New translations en.json (Urdu (Pakistan))

* New translations simple_form.en.yml (Faroese)

* New translations simple_form.en.yml (Faroese)

* New translations en.json (Scots)

* New translations activerecord.en.yml (Scots)

* New translations en.json (Finnish)

* New translations en.json (Finnish)

* New translations en.json (Asturian)

* New translations en.yml (Asturian)

* New translations simple_form.en.yml (Asturian)

* New translations activerecord.en.yml (Asturian)

* New translations devise.en.yml (Asturian)

* New translations doorkeeper.en.yml (Asturian)

* New translations en.yml (Belarusian)

* New translations en.json (Romanian)

* New translations en.json (Galician)

* New translations en.yml (Galician)

* New translations doorkeeper.en.yml (Romanian)

* New translations doorkeeper.en.yml (Galician)

* New translations activerecord.en.yml (Romanian)

* New translations en.yml (Russian)

* New translations en.yml (Estonian)

* New translations en.yml (Estonian)

* New translations devise.en.yml (Estonian)

* New translations en.json (Czech)

* New translations en.yml (Bulgarian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.yml (Serbian (Cyrillic))

* New translations en.json (Galician)

* New translations en.yml (Galician)

* New translations en.json (Breton)

* New translations simple_form.en.yml (Bulgarian)

* New translations doorkeeper.en.yml (Bulgarian)

* New translations simple_form.en.yml (Galician)

* New translations devise.en.yml (Italian)

* New translations en.json (Bulgarian)

* New translations en.yml (Bulgarian)

* New translations simple_form.en.yml (Bulgarian)

* New translations doorkeeper.en.yml (Bulgarian)

* New translations devise.en.yml (Italian)

* New translations en.json (Serbian (Cyrillic))

* New translations doorkeeper.en.yml (Italian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Chinese Traditional, Hong Kong)

* New translations en.yml (Chinese Traditional, Hong Kong)

* New translations en.json (Serbian (Latin))

* New translations simple_form.en.yml (Serbian (Cyrillic))

* New translations doorkeeper.en.yml (Italian)

* New translations en.yml (Belarusian)

* New translations en.yml (Belarusian)

* New translations simple_form.en.yml (Serbian (Cyrillic))

* New translations en.yml (Belarusian)

* New translations simple_form.en.yml (Serbian (Cyrillic))

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Estonian)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Estonian)

* New translations simple_form.en.yml (Asturian)

* New translations en.yml (Asturian)

* New translations simple_form.en.yml (Asturian)

* New translations en.json (Thai)

* New translations en.yml (Thai)

* New translations en.json (Thai)

* New translations en.yml (Thai)

* New translations en.yml (Czech)

* New translations en.json (Czech)

* New translations simple_form.en.yml (Czech)

* New translations doorkeeper.en.yml (Czech)

* New translations en.yml (Belarusian)

* New translations en.yml (Thai)

* New translations en.json (English, United Kingdom)

* New translations en.yml (Belarusian)

* New translations en.yml (Thai)

* New translations en.yml (Estonian)

* New translations en.yml (Thai)

* New translations en.json (Thai)

* New translations en.yml (German)

* New translations en.json (Russian)

* New translations en.yml (Icelandic)

* New translations en.json (Estonian)

* New translations en.yml (Estonian)

* New translations en.yml (Belarusian)

* New translations en.yml (Thai)

* New translations en.json (Esperanto)

* New translations en.yml (Esperanto)

* New translations simple_form.en.yml (Esperanto)

* New translations en.yml (Thai)

* New translations en.json (Esperanto)

* New translations en.yml (Thai)

* New translations en.yml (Belarusian)

* New translations en.yml (Thai)

* New translations en.json (Icelandic)

* New translations en.yml (Icelandic)

* New translations simple_form.en.yml (Icelandic)

* New translations doorkeeper.en.yml (Icelandic)

* New translations en.yml (Belarusian)

* New translations activerecord.en.yml (Icelandic)

* New translations devise.en.yml (Icelandic)

* New translations en.yml (Thai)

* New translations en.json (Estonian)

* New translations en.yml (Estonian)

* New translations doorkeeper.en.yml (Estonian)

* New translations en.yml (Belarusian)

* New translations en.yml (Thai)

* New translations en.yml (Belarusian)

* New translations en.json (Bulgarian)

* New translations en.yml (Bulgarian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.yml (Bulgarian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.yml (Estonian)

* New translations en.json (Ukrainian)

* New translations en.yml (Estonian)

* New translations en.json (Esperanto)

* New translations en.yml (Estonian)

* New translations en.yml (Estonian)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Estonian)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Estonian)

* New translations en.yml (Belarusian)

* New translations en.yml (Belarusian)

* New translations en.json (Persian)

* New translations en.yml (Belarusian)

* New translations en.json (Esperanto)

* New translations en.json (Greek)

* New translations en.json (Persian)

* New translations en.json (Scots)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Estonian)

* New translations en.yml (Thai)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Estonian)

* New translations doorkeeper.en.yml (Estonian)

* New translations en.yml (German)

* New translations en.json (German)

* New translations en.json (Finnish)

* New translations en.yml (Estonian)

* New translations en.yml (German)

* New translations en.json (Estonian)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (German)

* New translations simple_form.en.yml (Estonian)

* New translations devise.en.yml (German)

* New translations simple_form.en.yml (German)

* New translations en.yml (Finnish)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Serbian (Cyrillic))

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Estonian)

* New translations doorkeeper.en.yml (Estonian)

* New translations en.json (Estonian)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Estonian)

* New translations en.json (Spanish)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Estonian)

* New translations en.yml (Thai)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Estonian)

* New translations simple_form.en.yml (Icelandic)

* New translations en.yml (German)

* New translations en.yml (Ukrainian)

* New translations en.json (Spanish, Mexico)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Spanish, Mexico)

* New translations activerecord.en.yml (Spanish, Mexico)

* New translations en.json (German)

* New translations en.yml (Thai)

* New translations en.json (Thai)

* New translations en.json (Korean)

* New translations en.json (Scottish Gaelic)

* New translations en.yml (Scottish Gaelic)

* New translations en.yml (Thai)

* New translations en.yml (Japanese)

* New translations en.json (Serbian (Cyrillic))

* New translations en.yml (Belarusian)

* New translations en.json (Estonian)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Estonian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Estonian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.yml (Italian)

* New translations en.yml (Italian)

* New translations en.json (Kurmanji (Kurdish))

* New translations en.yml (Spanish)

* New translations en.yml (Spanish, Mexico)

* New translations en.yml (Latvian)

* New translations simple_form.en.yml (Latvian)

* New translations en.yml (Belarusian)

* New translations en.json (Serbian (Cyrillic))

* New translations simple_form.en.yml (Serbian (Cyrillic))

* normalize

* New translations en.json (German)

* New translations en.json (Serbian (Cyrillic))

Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>
2022-12-02 23:03:06 +09:00
Claire
68d1df8bc3
Fix some performance issues with /admin/instances (#21907)
/admin/instances?availability=failing remains wholly unefficient
2022-12-01 10:32:10 +01:00
Claire
2d4d99f135
Fix expanded statuses not always being scrolled into view (#21797) 2022-11-28 16:42:04 +01:00
Connor Shea
cec1e902e0
Make the 'Trending now' header a link to Explore. (#21759)
This keeps the same design that exists currently, but makes "Trending
now" into a link to the Hashtags section of "Explore".

Resolves #21758.
2022-11-27 23:49:32 +01:00
Claire
3ffaa966b0
Fix infinite loading instead of soft 404 for non-existing remote accounts (#21303)
Fixes #21278, #21021
2022-11-27 20:48:12 +01:00
Claire
57b893d505
Fix spaces not being stripped in admin account search (#21324)
Fixes #21058

Regression from #18641
2022-11-27 20:47:29 +01:00
James Adney
c0dcf15d1e
fix gif autoplay on iOS (#21422) 2022-11-27 20:46:23 +01:00
Bramus!
e617ee7fd9
Add user profile OG tag on status page (#21423) 2022-11-27 20:45:28 +01:00
Claire
f4f2b062ec
Remove LDSignature on actor Delete activities (#21466)
They are currently not used for anything and represent more than half of the
payload size.
2022-11-27 20:43:24 +01:00
Claire
fe421257e5
Fix “Share @{name}'s profile” profile menu item (#21490) 2022-11-27 20:42:17 +01:00
Kaspar V
47f0d7021e
refactor(vacuum statuses): reduce amount of db queries and load for each query - improve performance (#21487)
* refactor(statuses_vacuum): remove dead code - unused

Method is not called inside class and private.
Clean up dead code.

* refactor(statuses_vacuum): make retention_period present test explicit

This private method only hides functionality.
It is best practice to be as explicit as possible.

* refactor(statuses_vacuum): improve query performance

- fix statuses_scope having sub-select for Account.remote scope by
  `joins(:account).merge(Account.remote)`
- fix statuses_scope unnecessary use of `Status.arel_table[:id].lt`
  because it is inexplicit, bad practice and even slower than normal
  `.where('statuses.id < ?'`
- fix statuses_scope remove select(:id, :visibility) for having reusable
  active record query batches (no re queries)
- fix vacuum_statuses! to use in_batches instead of find_in_batches,
  because in_batches delivers a full blown active record query result,
  in stead of an array - no requeries necessary
- send(:unlink_from_conversations) not to perform another db query, but
  reuse the in_batches result instead.
- remove now obsolete remove_from_account_conversations method
- remove_from_search_index uses array of ids, instead of mapping
  the ids from an array - this should be more efficient
- use the in_batches scope to call delete_all, instead of running
  another db query for this - because it is again more efficient
- add TODO comment for calling models private method with send

* refactor(status): simplify unlink_from_conversations

- add `has_many through:` relation mentioned_accounts
- use model scope local instead of method call `Status#local?`
- more readable add account to inbox_owners when account.local?

* refactor(status): searchable_by way less sub selects

These queries all included a sub-select. Doing the same with a joins
should be more efficient.
Since this method does 5 such queries, this should be significant,
since it technically halves the query count.

This is how it was:

```ruby
[3] pry(main)> Status.first.mentions.where(account: Account.local, silent: false).explain
  Status Load (1.6ms)  SELECT "statuses".* FROM "statuses" WHERE "statuses"."deleted_at" IS NULL ORDER BY "statuses"."id" DESC LIMIT $1  [["LIMIT", 1]]
  Mention Load (1.5ms)  SELECT "mentions".* FROM "mentions" WHERE "mentions"."status_id" = $1 AND "mentions"."account_id" IN (SELECT "accounts"."id" FROM "accounts" WHERE "accounts"."domain" IS NULL) AND "mentions"."silent" = $2  [["status_id", 109382923142288414], ["silent", false]]
=> EXPLAIN for: SELECT "mentions".* FROM "mentions" WHERE "mentions"."status_id" = $1 AND "mentions"."account_id" IN (SELECT "accounts"."id" FROM "accounts" WHERE "accounts"."domain" IS NULL) AND "mentions"."silent" = $2 [["status_id", 109382923142288414], ["silent", false]]
                                                    QUERY PLAN
------------------------------------------------------------------------------------------------------------------
 Nested Loop  (cost=0.15..23.08 rows=1 width=41)
   ->  Seq Scan on accounts  (cost=0.00..10.90 rows=1 width=8)
         Filter: (domain IS NULL)
   ->  Index Scan using index_mentions_on_account_id_and_status_id on mentions  (cost=0.15..8.17 rows=1 width=41)
         Index Cond: ((account_id = accounts.id) AND (status_id = '109382923142288414'::bigint))
         Filter: (NOT silent)
(6 rows)
```

This is how it is with this change:

```ruby
[4] pry(main)> Status.first.mentions.joins(:account).merge(Account.local).active.explain
  Status Load (1.7ms)  SELECT "statuses".* FROM "statuses" WHERE "statuses"."deleted_at" IS NULL ORDER BY "statuses"."id" DESC LIMIT $1  [["LIMIT", 1]]
  Mention Load (0.7ms)  SELECT "mentions".* FROM "mentions" INNER JOIN "accounts" ON "accounts"."id" = "mentions"."account_id" WHERE "mentions"."status_id" = $1 AND "accounts"."domain" IS NULL AND "mentions"."silent" = $2  [["status_id", 109382923142288414], ["silent", false]]
=> EXPLAIN for: SELECT "mentions".* FROM "mentions" INNER JOIN "accounts" ON "accounts"."id" = "mentions"."account_id" WHERE "mentions"."status_id" = $1 AND "accounts"."domain" IS NULL AND "mentions"."silent" = $2 [["status_id", 109382923142288414], ["silent", false]]
                                                    QUERY PLAN
------------------------------------------------------------------------------------------------------------------
 Nested Loop  (cost=0.15..23.08 rows=1 width=41)
   ->  Seq Scan on accounts  (cost=0.00..10.90 rows=1 width=8)
         Filter: (domain IS NULL)
   ->  Index Scan using index_mentions_on_account_id_and_status_id on mentions  (cost=0.15..8.17 rows=1 width=41)
         Index Cond: ((account_id = accounts.id) AND (status_id = '109382923142288414'::bigint))
         Filter: (NOT silent)
(6 rows)
```
2022-11-27 20:41:18 +01:00
Claire
625216d8e1
Fix attachments of edited statuses not being fetched (#21565)
* Fix attachments of edited statuses not being fetched

* Fix tests
2022-11-27 20:39:05 +01:00
kedama
14e2354eea
Fix status mismatch of sensitive check (#21724) 2022-11-27 20:36:21 +01:00
afontenot
f17fc5742e
Clear voter count when poll is reset (#21700)
When a poll is edited, we reset the poll and remove all previous
votes. However, prior to this commit, the voter count on the poll
was not reset. This leads to incorrect percentages being shown in
poll results.

Fixes #21696
2022-11-26 23:08:25 +01:00
Skyler Hawthorne
5b2ff8d32d
fix media uploads with ffmpeg 5 (#21191) 2022-11-25 16:20:47 +01:00
Eugen Rochko
3d906d8e62
New Crowdin updates (#20942)
* New translations en.yml (Belarusian)

* New translations simple_form.en.yml (Belarusian)

* New translations doorkeeper.en.yml (Belarusian)

* New translations devise.en.yml (Finnish)

* New translations en.json (Norwegian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.yml (Esperanto)

* New translations en.yml (Scots)

* New translations en.yml (Italian)

* New translations en.json (Welsh)

* New translations en.yml (Welsh)

* New translations en.yml (Esperanto)

* New translations en.yml (Belarusian)

* New translations simple_form.en.yml (Belarusian)

* New translations en.yml (German)

* New translations simple_form.en.yml (Belarusian)

* New translations en.yml (Belarusian)

* New translations en.json (Belarusian)

* New translations en.yml (Faroese)

* New translations simple_form.en.yml (Estonian)

* New translations en.json (German)

* New translations simple_form.en.yml (German)

* New translations en.yml (Esperanto)

* New translations en.yml (Welsh)

* New translations en.yml (Estonian)

* New translations en.json (Estonian)

* New translations en.yml (Italian)

* New translations doorkeeper.en.yml (Belarusian)

* New translations en.yml (German)

* New translations en.json (Estonian)

* New translations en.yml (Estonian)

* New translations en.yml (Welsh)

* New translations simple_form.en.yml (German)

* New translations simple_form.en.yml (Estonian)

* New translations doorkeeper.en.yml (Welsh)

* New translations activerecord.en.yml (Welsh)

* New translations devise.en.yml (Welsh)

* New translations en.yml (Faroese)

* New translations en.yml (Scots)

* New translations simple_form.en.yml (Belarusian)

* New translations doorkeeper.en.yml (Belarusian)

* New translations en.yml (German)

* New translations en.json (Hungarian)

* New translations en.json (Bengali)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (German)

* New translations simple_form.en.yml (Estonian)

* New translations simple_form.en.yml (Welsh)

* New translations en.yml (Scots)

* New translations doorkeeper.en.yml (German)

* New translations en.yml (Russian)

* New translations en.yml (Estonian)

* New translations en.json (Belarusian)

* New translations simple_form.en.yml (Belarusian)

* New translations en.json (Indonesian)

* New translations en.yml (Indonesian)

* New translations simple_form.en.yml (Serbian (Latin))

* New translations en.json (Belarusian)

* New translations en.yml (Belarusian)

* New translations devise.en.yml (Serbian (Latin))

* New translations en.yml (Belarusian)

* New translations simple_form.en.yml (Belarusian)

* New translations doorkeeper.en.yml (Belarusian)

* New translations en.yml (German)

* New translations en.json (German)

* New translations en.yml (Portuguese, Brazilian)

* New translations simple_form.en.yml (German)

* New translations doorkeeper.en.yml (German)

* New translations devise.en.yml (German)

* New translations en.yml (Faroese)

* New translations simple_form.en.yml (Faroese)

* New translations en.yml (Belarusian)

* New translations doorkeeper.en.yml (Belarusian)

* New translations en.json (Spanish)

* New translations en.json (Welsh)

* New translations en.yml (Welsh)

* New translations doorkeeper.en.yml (Welsh)

* New translations en.yml (Belarusian)

* New translations en.json (German)

* New translations en.yml (Welsh)

* New translations en.json (Asturian)

* New translations simple_form.en.yml (German)

* New translations en.yml (Faroese)

* New translations en.yml (Belarusian)

* New translations en.json (Asturian)

* New translations en.yml (Asturian)

* New translations en.json (French, Quebec)

* New translations en.json (Faroese)

* New translations en.yml (Faroese)

* New translations en.json (Belarusian)

* New translations en.yml (Belarusian)

* New translations devise.en.yml (Asturian)

* New translations en.json (Spanish)

* New translations en.json (French, Quebec)

* New translations en.yml (Faroese)

* New translations en.yml (Scots)

* New translations en.json (Belarusian)

* New translations en.yml (Belarusian)

* New translations en.json (French, Quebec)

* New translations en.yml (Scots)

* New translations en.yml (Belarusian)

* New translations en.yml (Asturian)

* New translations simple_form.en.yml (Asturian)

* New translations doorkeeper.en.yml (Asturian)

* New translations en.json (Asturian)

* New translations en.yml (Asturian)

* New translations simple_form.en.yml (Asturian)

* New translations en.json (Asturian)

* New translations en.yml (Faroese)

* New translations en.yml (Faroese)

* New translations simple_form.en.yml (Faroese)

* New translations simple_form.en.yml (Belarusian)

* New translations devise.en.yml (Serbian (Latin))

* New translations en.yml (Japanese)

* New translations en.json (Serbian (Latin))

* New translations en.yml (Faroese)

* New translations en.yml (Belarusian)

* New translations simple_form.en.yml (Belarusian)

* New translations en.yml (German)

* New translations en.json (German)

* New translations en.yml (Estonian)

* New translations en.json (Estonian)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Estonian)

* New translations devise.en.yml (Estonian)

* New translations en.yml (German)

* New translations en.json (German)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (German)

* New translations simple_form.en.yml (Estonian)

* New translations devise.en.yml (Estonian)

* New translations en.yml (German)

* New translations en.json (German)

* New translations en.yml (Catalan)

* New translations en.json (Estonian)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Catalan)

* New translations doorkeeper.en.yml (Catalan)

* New translations simple_form.en.yml (German)

* New translations simple_form.en.yml (Estonian)

* New translations activerecord.en.yml (Serbian (Cyrillic))

* New translations en.yml (Faroese)

* New translations simple_form.en.yml (Faroese)

* New translations en.yml (Scots)

* New translations doorkeeper.en.yml (Serbian (Cyrillic))

* New translations en.yml (Belarusian)

* New translations devise.en.yml (German)

* New translations en.json (Estonian)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Estonian)

* New translations doorkeeper.en.yml (Serbian (Cyrillic))

* New translations doorkeeper.en.yml (Estonian)

* New translations en.yml (Romanian)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Estonian)

* New translations en.yml (Scots)

* New translations doorkeeper.en.yml (Estonian)

* New translations simple_form.en.yml (Bulgarian)

* New translations simple_form.en.yml (German)

* New translations activerecord.en.yml (Serbian (Cyrillic))

* New translations en.yml (Scots)

* New translations en.yml (Bulgarian)

* New translations simple_form.en.yml (Bulgarian)

* New translations en.yml (Asturian)

* New translations devise.en.yml (Asturian)

* New translations en.yml (Scots)

* New translations simple_form.en.yml (Hebrew)

* New translations en.yml (Belarusian)

* New translations en.yml (Belarusian)

* New translations en.yml (Belarusian)

* New translations en.yml (Scots)

* New translations en.yml (Belarusian)

* New translations en.json (Ukrainian)

* New translations doorkeeper.en.yml (Ukrainian)

* New translations en.yml (Scots)

* New translations doorkeeper.en.yml (Serbian (Cyrillic))

* New translations en.yml (Scots)

* New translations doorkeeper.en.yml (Serbian (Cyrillic))

* New translations en.yml (Czech)

* New translations en.json (Czech)

* New translations en.yml (Bulgarian)

* New translations en.json (Catalan)

* New translations en.yml (Catalan)

* New translations en.yml (Scots)

* New translations doorkeeper.en.yml (Serbian (Cyrillic))

* New translations en.json (Belarusian)

* New translations simple_form.en.yml (Belarusian)

* New translations en.yml (Ukrainian)

* New translations simple_form.en.yml (Dutch)

* New translations en.json (Ukrainian)

* New translations en.yml (Esperanto)

* New translations simple_form.en.yml (Ukrainian)

* New translations simple_form.en.yml (Esperanto)

* New translations en.yml (Faroese)

* New translations en.yml (Faroese)

* New translations en.yml (Scots)

* New translations en.yml (Scots)

* New translations en.yml (Belarusian)

* New translations en.yml (Belarusian)

* New translations en.json (Czech)

* New translations en.json (Malayalam)

* New translations en.yml (Scots)

* New translations en.json (Czech)

* New translations en.json (Hindi)

* New translations en.json (Malayalam)

* New translations activerecord.en.yml (Serbian (Latin))

* New translations en.yml (Scots)

* New translations doorkeeper.en.yml (Serbian (Latin))

* New translations en.json (Czech)

* New translations en.json (Serbian (Cyrillic))

* New translations simple_form.en.yml (Asturian)

* New translations en.yml (Scots)

* New translations en.json (Czech)

* New translations en.json (Frisian)

* New translations en.json (Serbian (Cyrillic))

* New translations en.yml (Scots)

* New translations en.yml (Belarusian)

* New translations devise.en.yml (Frisian)

* New translations en.json (Czech)

* New translations en.json (Serbian (Cyrillic))

* New translations en.json (Estonian)

* New translations en.yml (Estonian)

* New translations en.yml (Faroese)

* New translations en.yml (Belarusian)

* New translations en.yml (Ukrainian)

* New translations en.yml (Bulgarian)

* New translations en.json (Italian)

* New translations en.json (Ukrainian)

* New translations en.json (Spanish, Mexico)

* New translations en.json (Estonian)

* New translations en.yml (Estonian)

* New translations simple_form.en.yml (Bulgarian)

* New translations simple_form.en.yml (Estonian)

* New translations en.yml (Faroese)

* New translations en.yml (Belarusian)

* New translations simple_form.en.yml (Belarusian)

* New translations devise.en.yml (Ukrainian)

* New translations en.yml (Ukrainian)

* New translations en.json (Italian)

* New translations en.json (Ukrainian)

* New translations en.json (Spanish, Mexico)

* New translations simple_form.en.yml (Ukrainian)

* New translations activerecord.en.yml (Italian)

* New translations en.yml (Belarusian)

* New translations simple_form.en.yml (Belarusian)

* Run `yarn manage:translations`

* Run `bundle exec i18n-tasks normalize`

* Add `app/javascript/mastodon/locales/whitelist_be.json`

Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>
2022-11-25 09:40:05 +09:00
Claire
51a33ce77a
Fix not being able to follow more than one hashtag (#21285)
Fixes regression from #20860
2022-11-21 10:35:09 +01:00
David Leadbeater
69378eac99
Don't allow URLs that contain non-normalized paths to be verified (#20999)
* Don't allow URLs that contain non-normalized paths to be verified

This stops things like https://example.com/otheruser/../realuser where
"/otheruser" appears to be the verified URL, but the actual URL being
verified is "/realuser" due to the "/../".

Also fix a test to use 'https', so it is testing the right thing, now
that since #20304 https is required.

* missing do
2022-11-20 19:28:13 +01:00
Claire
48e136605a
Fix form-action CSP directive for external login (#20962) 2022-11-17 22:59:07 +01:00
Claire
4ae97a2e4c
Fix OAuth flow being broken by recent CSP change (#20958) 2022-11-17 21:31:52 +01:00