about summary refs log tree commit diff
path: root/app
AgeCommit message (Collapse)Author
2020-12-15Add app shortcuts (#15234)Marcin Mikołajczak
* Add app shortcuts Signed-off-by: mkljczk <me@mkljczk.pl> * Fix codeclimate issues Signed-off-by: mkljczk <me@mkljczk.pl> * Change shortcuts Signed-off-by: mkljczk <me@mkljczk.pl> * More consistent new-status icon Signed-off-by: mkljczk <me@mkljczk.pl>
2020-12-14Add ability to require invite request text (#15326)ThibG
Fixes #15273 Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2020-12-14Fix dynamic updating of “Bootstrap timeline accounts” admin setting (#15325)ThibG
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2020-12-14Change "Profile unavailable" string to "Account suspended" in web UI (#15345)Eugen Rochko
2020-12-14Fix performance on instances list in admin UI (#15282)Eugen Rochko
- Reduce duplicate queries - Remove n+1 queries - Add accounts count to detailed view - Add separate action log entry for updating existing domain blocks
2020-12-14Change number format on about page from full to shortened (#15327)Eugen Rochko
2020-12-10Add honeypot fields and minimum fill-out time for sign-up form (#15276)ThibG
* Add honeypot fields to limit non-specialized spam Add two honeypot fields: a fake website input and a fake password confirmation one. The label/placeholder/aria-label tells not to fill them, and they are hidden in CSS, so legitimate users should not fall into these. This should cut down on some non-Mastodon-specific spambots. * Require a 3 seconds delay before submitting the registration form * Fix tests * Move registration form time check to model validation * Give people a chance to clear the honeypot fields * Refactor honeypot translation strings Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2020-12-09Fix notifications being unnecessarily redrawn on state change (#15312)ThibG
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2020-12-09rename replies_policy enumerables (#15304)trwnh
2020-12-09Fix missing pictureInPicture prop in detailed status container (#15309)Takeshi Umeda
2020-12-09Fix open media hotkey (#15308)Jeong Arm
* Fix open media hotkey * Update status.js Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
2020-12-08Fix the Open handler for PreviewCard (#15305)Takeshi Umeda
2020-12-07Fix column swiping animation logic (#15301)ThibG
From the start, swiping columns was highly unreliable because the logic could change `ReactSwipeableViews`'s `animateTransitions` property mid-swipe. PR #11200 partially fixed this, but at the unintended cost of disabling the swipe animation altogether. This PR changes the logic behind `shouldAnimate` to only disable the swiping animation at the end of a column change not initiated by `ReactSwipeableViews`. Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2020-12-07Fix unnecessary re-rendering of various components when typing in web UI ↵Eugen Rochko
(#15286)
2020-12-07Fix slow distinct queries where grouped queries are faster (#15287)Eugen Rochko
About 2x speed-up on inboxes query
2020-12-07Fix not being able to open audio modal in web UI (#15283)Eugen Rochko
Fix #15280 Also adds the new action bar and blurhash-based background color to audio and video modals
2020-12-07Fix alert when failing to save timeline markers in web UI (#15285)Eugen Rochko
Fix #15267
2020-12-07Fix too low contrast on new media modal background in web UI (#15284)Eugen Rochko
Fix #15258
2020-12-06Fix remove number sign from account_featured_tags (#15277)Takeshi Umeda
2020-12-04Fix incorrect conditions for suspended accounts in Get API for account ↵Takeshi Umeda
featured tags (#15270)
2020-12-04Fix account merging in maintenance script (#15264)ThibG
Also include AccountNote and AccountDeletionRequest to the list of classes needing to be reassigned the merged account.
2020-12-02Change public thread view to hide "Show thread" link (#15266)ThibG
Fixes #15262
2020-12-02Fix followers hash cache not being invalidated on account merge (#15256)ThibG
Also clear relationships cache.
2020-11-30Fix `ku` locale not being right-to-left (#15252)Eugen Rochko
2020-11-30Fix character count not ignoring hidden CW field (#15236)Mélanie Chauvel
2020-11-28Fix omniauth (SAML/CAS) sign-in routes not having CSRF protection (#15228)Eugen Rochko
2020-11-28Fix media modal crashing when media has no blurhash (#15229)Eugen Rochko
2020-11-27Fix deletes not reaching every server that interacted with status (#15200)Eugen Rochko
Extract logic for determining ActivityPub inboxes to send deletes to to its own class and explicitly include the person the status replied to (even if not mentioned), people who favourited it, and people who replied to it (though that one is still not recursive)
2020-11-27Fix media modal regression on public pages (#15221)Eugen Rochko
2020-11-27Change media modals look in web UI (#15217)Eugen Rochko
- Change overlay background to match color of viewed image - Add interactive reply/boost/favourite buttons to footer of modal - Change ugly "View context" link to button among the action bar
2020-11-26New Crowdin updates (#15137)Eugen Rochko
* New translations en.yml (Kabyle) [ci skip] * New translations en.json (Kabyle) [ci skip] * New translations en.yml (Sanskrit) [ci skip] * New translations en.json (Sanskrit) [ci skip] * New translations en.yml (Sardinian) [ci skip] * New translations en.json (Sardinian) [ci skip] * New translations simple_form.en.yml (Corsican) [ci skip] * New translations simple_form.en.yml (Sorani (Kurdish)) [ci skip] * New translations en.yml (Welsh) [ci skip] * New translations simple_form.en.yml (Swedish) [ci skip] * New translations en.json (Tamil) [ci skip] * New translations simple_form.en.yml (Persian) [ci skip] * New translations en.yml (Persian) [ci skip] * New translations en.json (Persian) [ci skip] * New translations simple_form.en.yml (Indonesian) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations simple_form.en.yml (Portuguese, Brazilian) [ci skip] * New translations en.yml (Portuguese, Brazilian) [ci skip] * New translations simple_form.en.yml (Galician) [ci skip] * New translations simple_form.en.yml (Tamil) [ci skip] * New translations en.yml (Urdu (Pakistan)) [ci skip] * New translations en.json (Urdu (Pakistan)) [ci skip] * New translations simple_form.en.yml (Chinese Traditional) [ci skip] * New translations en.yml (Chinese Traditional) [ci skip] * New translations en.json (Chinese Traditional) [ci skip] * New translations simple_form.en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations simple_form.en.yml (Ukrainian) [ci skip] * New translations en.yml (Ukrainian) [ci skip] * New translations en.json (Ukrainian) [ci skip] * New translations en.yml (Tamil) [ci skip] * New translations en.yml (Telugu) [ci skip] * New translations en.yml (Estonian) [ci skip] * New translations en.json (Telugu) [ci skip] * New translations en.yml (Malay) [ci skip] * New translations en.json (Malay) [ci skip] * New translations en.yml (Hindi) [ci skip] * New translations en.json (Hindi) [ci skip] * New translations en.yml (Latvian) [ci skip] * New translations en.json (Latvian) [ci skip] * New translations simple_form.en.yml (Estonian) [ci skip] * New translations en.json (Estonian) [ci skip] * New translations en.json (Bengali) [ci skip] * New translations simple_form.en.yml (Kazakh) [ci skip] * New translations en.yml (Kazakh) [ci skip] * New translations en.json (Kazakh) [ci skip] * New translations simple_form.en.yml (Norwegian Nynorsk) [ci skip] * New translations en.yml (Norwegian Nynorsk) [ci skip] * New translations en.json (Norwegian Nynorsk) [ci skip] * New translations en.json (Thai) [ci skip] * New translations en.yml (Marathi) [ci skip] * New translations en.json (Marathi) [ci skip] * New translations simple_form.en.yml (Bengali) [ci skip] * New translations en.yml (Bengali) [ci skip] * New translations en.json (Chinese Traditional) [ci skip] * New translations en.json (Chinese Traditional) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.json (Spanish, Mexico) [ci skip] * New translations doorkeeper.en.yml (Spanish, Mexico) [ci skip] * New translations simple_form.en.yml (Spanish, Mexico) [ci skip] * New translations en.yml (Spanish, Mexico) [ci skip] * New translations simple_form.en.yml (Spanish) [ci skip] * New translations en.json (Spanish) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.json (French) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.yml (Esperanto) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations devise.en.yml (Japanese) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.yml (Occitan) [ci skip] * New translations simple_form.en.yml (Occitan) [ci skip] * New translations en.yml (Occitan) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Standard Moroccan Tamazight) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Standard Moroccan Tamazight) [ci skip] * New translations en.json (Standard Moroccan Tamazight) [ci skip] * New translations en.yml (Standard Moroccan Tamazight) [ci skip] * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) [ci skip] * New translations en.json (Standard Moroccan Tamazight) [ci skip] * New translations en.json (Standard Moroccan Tamazight) [ci skip] * New translations en.json (Kannada) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.json (Esperanto) [ci skip] * New translations en.yml (Esperanto) [ci skip] * New translations simple_form.en.yml (Esperanto) [ci skip] * New translations doorkeeper.en.yml (Esperanto) [ci skip] * New translations doorkeeper.en.yml (Esperanto) [ci skip] * New translations en.json (Esperanto) [ci skip] * New translations en.json (Esperanto) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations doorkeeper.en.yml (Spanish) [ci skip] * New translations en.json (Spanish, Mexico) [ci skip] * New translations doorkeeper.en.yml (Spanish, Mexico) [ci skip] * New translations simple_form.en.yml (Spanish, Mexico) [ci skip] * New translations en.yml (Spanish, Mexico) [ci skip] * New translations simple_form.en.yml (Spanish) [ci skip] * New translations en.json (Spanish) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Portuguese) [ci skip] * New translations en.yml (Hungarian) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Swedish) [ci skip] * New translations en.yml (Icelandic) [ci skip] * New translations en.yml (Spanish, Argentina) [ci skip] * New translations en.yml (Spanish, Argentina) [ci skip] * New translations en.yml (Esperanto) [ci skip] * New translations en.yml (Catalan) [ci skip] * New translations en.yml (Italian) [ci skip] * New translations en.yml (Corsican) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.yml (Danish) [ci skip] * New translations en.yml (Korean) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Chinese Traditional) [ci skip] * New translations en.json (Japanese) [ci skip] * New translations en.yml (Galician) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.yml (Albanian) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Galician) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations simple_form.en.yml (Vietnamese) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations devise.en.yml (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations doorkeeper.en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations simple_form.en.yml (Vietnamese) [ci skip] * New translations doorkeeper.en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Persian) [ci skip] * New translations en.yml (Esperanto) [ci skip] * New translations en.json (Standard Moroccan Tamazight) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations devise.en.yml (Czech) [ci skip] * New translations devise.en.yml (Czech) [ci skip] * New translations en.json (Czech) [ci skip] * New translations en.json (Polish) [ci skip] * New translations en.yml (Polish) [ci skip] * New translations simple_form.en.yml (Polish) [ci skip] * New translations en.yml (Thai) [ci skip] * New translations en.yml (Thai) [ci skip] * New translations en.json (Czech) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.json (Galician) [ci skip] * New translations en.json (Armenian) [ci skip] * New translations en.json (Armenian) [ci skip] * New translations simple_form.en.yml (Armenian) [ci skip] * New translations en.yml (Armenian) [ci skip] * New translations doorkeeper.en.yml (Spanish) [ci skip] * New translations en.json (Spanish, Mexico) [ci skip] * New translations doorkeeper.en.yml (Spanish, Mexico) [ci skip] * New translations simple_form.en.yml (Spanish, Mexico) [ci skip] * New translations en.yml (Spanish, Mexico) [ci skip] * New translations simple_form.en.yml (Spanish) [ci skip] * New translations en.json (Spanish) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Portuguese) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations en.json (Russian) [ci skip] * New translations en.yml (Swedish) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Spanish, Argentina) [ci skip] * New translations en.yml (Albanian) [ci skip] * New translations en.yml (Hungarian) [ci skip] * New translations en.yml (Italian) [ci skip] * New translations en.yml (Persian) [ci skip] * New translations en.yml (Portuguese, Brazilian) [ci skip] * New translations simple_form.en.yml (Portuguese, Brazilian) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.yml (Catalan) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Armenian) [ci skip] * New translations en.yml (Armenian) [ci skip] * New translations simple_form.en.yml (Armenian) [ci skip] * New translations en.yml (Armenian) [ci skip] * New translations en.yml (Korean) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Danish) [ci skip] * New translations en.yml (Polish) [ci skip] * New translations en.yml (Thai) [ci skip] * New translations en.yml (Galician) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.json (Japanese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Chinese Traditional, Hong Kong) [ci skip] * New translations en.json (Chinese Traditional, Hong Kong) [ci skip] * New translations en.yml (Chinese Traditional, Hong Kong) [ci skip] * New translations simple_form.en.yml (Chinese Traditional, Hong Kong) [ci skip] * New translations simple_form.en.yml (French) [ci skip] * New translations en.json (Chinese Traditional, Hong Kong) [ci skip] * New translations en.json (Chinese Traditional, Hong Kong) [ci skip] * New translations en.json (Chinese Traditional, Hong Kong) [ci skip] * New translations en.json (Chinese Traditional, Hong Kong) [ci skip] * New translations en.json (Chinese Traditional, Hong Kong) [ci skip] * New translations devise.en.yml (Chinese Traditional, Hong Kong) [ci skip] * New translations devise.en.yml (Chinese Traditional, Hong Kong) [ci skip] * New translations devise.en.yml (Chinese Traditional, Hong Kong) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations en.yml (German) [ci skip] * New translations en.yml (Galician) [ci skip] * New translations en.json (Galician) [ci skip] * New translations devise.en.yml (Galician) [ci skip] * New translations en.json (Armenian) [ci skip] * New translations en.yml (Armenian) [ci skip] * New translations en.json (Armenian) [ci skip] * New translations en.yml (Armenian) [ci skip] * New translations en.json (Sardinian) [ci skip] * New translations en.json (Sardinian) [ci skip] * New translations en.json (Sardinian) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.yml (Chinese Traditional) [ci skip] * New translations en.yml (Chinese Traditional) [ci skip] * New translations simple_form.en.yml (Chinese Traditional) [ci skip] * New translations en.yml (Sorani (Kurdish)) [ci skip] * New translations doorkeeper.en.yml (Sorani (Kurdish)) [ci skip] * Ran `i18n-tasks normalize` * Ran `yarn manage:translations` Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>
2020-11-23Add `tootctl accounts merge` (#15201)Eugen Rochko
* Add `tootctl accounts merge` * Update lib/mastodon/accounts_cli.rb Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh> Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>
2020-11-23Fixed ESLint error (#15214)abcang
* eslint --fix * fix consistent-return * fix promise/catch-or-return * ignore import rule
2020-11-21Remove fade-in animation from modals in web UI (#15199)Eugen Rochko
2020-11-21Fix hardcoded frame rate for frame by frame video navigation in web UI (#15198)Eugen Rochko
2020-11-21Undo outgoing follows when suspending a remote account (#15188)ThibG
2020-11-21Fix not being able to unfavorite toots one has lost access to (#15192)ThibG
Fixes #15191
2020-11-19Fix webfinger redirect handling in ResolveAccountService (#15187)ThibG
* Fix webfinger redirect handling in ResolveAccountService ResolveAccountService#process_webfinger! handled a one-step webfinger redirection, but only accepting the result if it matched the exact URI passed as input, defeating the point of a redirection check. Instead, use the same logic as in `ActivityPub::FetchRemoteAccountService`, updating the resulting `acct:` URI with the result of the first webfinger query. * Add tests
2020-11-19Add import/export feature for bookmarks (#14956)ThibG
* Add ability to export bookmarks * Add support for importing bookmarks * Add bookmark import tests * Add bookmarks export test
2020-11-19Mark correctly as read reverse-order announcements (#15070)Darius Kazemi
This fixes a bug in #15065 where the "read" indicator was not getting correctly set. The ID of a dismissed announcement is now correct.
2020-11-19Fix sending spurious Rejects when processing remote account deletion (#15104)ThibG
* Fix sending spurious Rejects when processing remote account deletion * Make skip_side_effects imply skip_activitypub
2020-11-19Add cache buster feature for media files (#15155)Eugen Rochko
Nginx can be configured to bypass proxy cache when a special header is in the request. If the response is cacheable, it will replace the cache for that request. Proxy caching of media files is desirable when using object storage as a way of minimizing bandwidth costs, but has the drawback of leaving deleted media files for a configured amount of cache time. A cache buster can make those media files immediately unavailable. This especially makes sense when suspending and unsuspending an account.
2020-11-19Fix DMs not appearing into timelines (#15182)ThibG
Fixes #15179
2020-11-18Fix image uploads being random data when canvas read access is blocked (#15180)ThibG
Fixes #15178 PR #11499 introduced a way to deal with all-white canvas, but newer Firefox versions set random data instead. This PR detects whether canvas operations are reliable by comparing the results on a hardcoded 2×2 pixels image, and memoizing the result. This should be both more reliable and faster than the previous check.
2020-11-16Fix pop-out player appearing on mobile screens in web UI (#15157)Eugen Rochko
Fix #15092
2020-11-15Add hotkeys for audio/video control (#15158)Eugen Rochko
Fix #14515
2020-11-13Fix AccountDeletionWorker not accepting keyword arguments (#15152)ThibG
2020-11-12Fix streaming API allowing connections to persist after access token ↵Eugen Rochko
invalidation (#15111) Fix #14816
2020-11-12Fix 2FA/sign-in token sessions being valid after password change (#14802)Eugen Rochko
If someone tries logging in to an account and is prompted for a 2FA code or sign-in token, even if the account's password or e-mail is updated in the meantime, the session will show the prompt and allow the login process to complete with a valid 2FA code or sign-in token
2020-11-12Fix possible inconsistencies in tag search (#14906)ThibG
Do not downcase the queried tag before passing it to postgres when searching: - tags are not downcased on creation - `arel_table[:name].lower.matches(pattern)` generates an ILIKE anyway - if Postgres and Rails happen to use different case-folding rules, downcasing before query but not before insertion may mean that some tags with some casings are not searchable