about summary refs log tree commit diff
path: root/app
AgeCommit message (Collapse)Author
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
2020-11-12Add interrelationship icon (#15149)Takeshi Umeda
* Add interrelationship icon * Fix arrow for rtl * Fix to predefined color
2020-11-12Add follow selected followers button (#15148)Takeshi Umeda
* Add follow selected followers button * Fix unused variable * Fix i18n normalize
2020-11-11Add button to dismiss desktop notifications permissions banner (#15141)Eugen Rochko
2020-11-11Remove auto-redirect to direct messages in web UI (#15142)Eugen Rochko
2020-11-10Add missing locales (#15138)Yamagishi Kazutoshi
2020-11-10New Crowdin updates (#15110)Eugen Rochko
* New translations doorkeeper.en.yml (Hungarian) [ci skip] * New translations doorkeeper.en.yml (Korean) [ci skip] * New translations doorkeeper.en.yml (Georgian) [ci skip] * New translations doorkeeper.en.yml (Japanese) [ci skip] * New translations doorkeeper.en.yml (Italian) [ci skip] * New translations doorkeeper.en.yml (Armenian) [ci skip] * New translations doorkeeper.en.yml (Hebrew) [ci skip] * New translations doorkeeper.en.yml (Dutch) [ci skip] * New translations doorkeeper.en.yml (Finnish) [ci skip] * New translations doorkeeper.en.yml (Basque) [ci skip] * New translations doorkeeper.en.yml (Greek) [ci skip] * New translations doorkeeper.en.yml (German) [ci skip] * New translations doorkeeper.en.yml (Danish) [ci skip] * New translations doorkeeper.en.yml (Czech) [ci skip] * New translations doorkeeper.en.yml (Catalan) [ci skip] * New translations doorkeeper.en.yml (Norwegian) [ci skip] * New translations doorkeeper.en.yml (Persian) [ci skip] * New translations doorkeeper.en.yml (Ukrainian) [ci skip] * New translations doorkeeper.en.yml (Indonesian) [ci skip] * New translations doorkeeper.en.yml (Portuguese, Brazilian) [ci skip] * New translations doorkeeper.en.yml (Galician) [ci skip] * New translations doorkeeper.en.yml (Vietnamese) [ci skip] * New translations doorkeeper.en.yml (Chinese Traditional) [ci skip] * New translations doorkeeper.en.yml (Turkish) [ci skip] * New translations doorkeeper.en.yml (Polish) [ci skip] * New translations doorkeeper.en.yml (Swedish) [ci skip] * New translations doorkeeper.en.yml (Serbian (Cyrillic)) [ci skip] * New translations doorkeeper.en.yml (Albanian) [ci skip] * New translations doorkeeper.en.yml (Slovenian) [ci skip] * New translations doorkeeper.en.yml (Slovak) [ci skip] * New translations doorkeeper.en.yml (Russian) [ci skip] * New translations doorkeeper.en.yml (Portuguese) [ci skip] * New translations en.json (Kazakh) [ci skip] * New translations en.yml (Norwegian Nynorsk) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations simple_form.en.yml (Bulgarian) [ci skip] * New translations simple_form.en.yml (Czech) [ci skip] * New translations en.yml (Czech) [ci skip] * New translations en.json (Czech) [ci skip] * New translations simple_form.en.yml (Catalan) [ci skip] * New translations en.yml (Catalan) [ci skip] * New translations en.json (Catalan) [ci skip] * New translations en.yml (Bulgarian) [ci skip] * New translations en.yml (Danish) [ci skip] * New translations en.json (Bulgarian) [ci skip] * New translations simple_form.en.yml (Arabic) [ci skip] * New translations en.yml (Arabic) [ci skip] * New translations en.json (Arabic) [ci skip] * New translations simple_form.en.yml (Spanish) [ci skip] * New translations en.json (Spanish) [ci skip] * New translations en.json (Danish) [ci skip] * New translations simple_form.en.yml (Danish) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.json (Hebrew) [ci skip] * New translations en.json (Armenian) [ci skip] * New translations simple_form.en.yml (Hungarian) [ci skip] * New translations en.yml (Hungarian) [ci skip] * New translations en.json (Hungarian) [ci skip] * New translations simple_form.en.yml (Hebrew) [ci skip] * New translations en.yml (Hebrew) [ci skip] * New translations simple_form.en.yml (Finnish) [ci skip] * New translations en.json (German) [ci skip] * New translations en.yml (Finnish) [ci skip] * New translations en.json (Finnish) [ci skip] * New translations simple_form.en.yml (Basque) [ci skip] * New translations en.yml (Basque) [ci skip] * New translations en.json (Basque) [ci skip] * New translations simple_form.en.yml (Greek) [ci skip] * New translations simple_form.en.yml (German) [ci skip] * New translations simple_form.en.yml (French) [ci skip] * New translations en.json (French) [ci skip] * New translations simple_form.en.yml (Armenian) [ci skip] * New translations en.json (Italian) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations en.yml (Portuguese) [ci skip] * New translations en.yml (Korean) [ci skip] * New translations en.json (Korean) [ci skip] * New translations simple_form.en.yml (Japanese) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.yml (Greek) [ci skip] * New translations en.yml (Galician) [ci skip] * New translations en.json (Greek) [ci skip] * New translations en.yml (German) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations simple_form.en.yml (Turkish) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations simple_form.en.yml (Vietnamese) [ci skip] * New translations en.yml (Albanian) [ci skip] * New translations en.json (Icelandic) [ci skip] * New translations simple_form.en.yml (Romanian) [ci skip] * New translations simple_form.en.yml (Croatian) [ci skip] * New translations en.yml (Romanian) [ci skip] * New translations en.json (Romanian) [ci skip] * New translations en.yml (Corsican) [ci skip] * New translations simple_form.en.yml (Breton) [ci skip] * New translations en.yml (Breton) [ci skip] * New translations doorkeeper.en.yml (Croatian) [ci skip] * New translations en.yml (Croatian) [ci skip] * New translations en.yml (Icelandic) [ci skip] * New translations en.json (Croatian) [ci skip] * New translations simple_form.en.yml (Thai) [ci skip] * New translations en.yml (Thai) [ci skip] * New translations simple_form.en.yml (Spanish, Argentina) [ci skip] * New translations en.yml (Spanish, Argentina) [ci skip] * New translations doorkeeper.en.yml (Icelandic) [ci skip] * New translations simple_form.en.yml (Icelandic) [ci skip] * New translations en.yml (Armenian) [ci skip] * New translations en.yml (Italian) [ci skip] * New translations en.json (Norwegian Nynorsk) [ci skip] * New translations simple_form.en.yml (Chinese Traditional) [ci skip] * New translations en.json (Portuguese, Brazilian) [ci skip] * New translations simple_form.en.yml (Galician) [ci skip] * New translations en.json (Galician) [ci skip] * New translations en.yml (Urdu (Pakistan)) [ci skip] * New translations en.json (Urdu (Pakistan)) [ci skip] * New translations en.yml (Chinese Traditional) [ci skip] * New translations simple_form.en.yml (Portuguese, Brazilian) [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 en.json (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 (Portuguese, Brazilian) [ci skip] * New translations en.json (Indonesian) [ci skip] * New translations en.yml (Swedish) [ci skip] * New translations en.json (Bengali) [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 (Spanish, Argentina) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations simple_form.en.yml (Tamil) [ci skip] * New translations en.yml (Tamil) [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 simple_form.en.yml (Swedish) [ci skip] * New translations en.json (Swedish) [ci skip] * New translations simple_form.en.yml (Italian) [ci skip] * New translations en.json (Macedonian) [ci skip] * New translations en.json (Norwegian) [ci skip] * New translations simple_form.en.yml (Dutch) [ci skip] * New translations en.yml (Dutch) [ci skip] * New translations en.json (Dutch) [ci skip] * New translations en.yml (Macedonian) [ci skip] * New translations simple_form.en.yml (Norwegian) [ci skip] * New translations en.yml (Lithuanian) [ci skip] * New translations en.json (Lithuanian) [ci skip] * New translations simple_form.en.yml (Korean) [ci skip] * New translations simple_form.en.yml (Georgian) [ci skip] * New translations en.yml (Georgian) [ci skip] * New translations en.json (Georgian) [ci skip] * New translations en.json (Japanese) [ci skip] * New translations en.yml (Norwegian) [ci skip] * New translations en.json (Polish) [ci skip] * New translations simple_form.en.yml (Serbian (Cyrillic)) [ci skip] * New translations en.json (Slovenian) [ci skip] * New translations en.yml (Serbian (Cyrillic)) [ci skip] * New translations en.json (Serbian (Cyrillic)) [ci skip] * New translations simple_form.en.yml (Albanian) [ci skip] * New translations en.json (Albanian) [ci skip] * New translations simple_form.en.yml (Slovenian) [ci skip] * New translations en.yml (Slovenian) [ci skip] * New translations simple_form.en.yml (Slovak) [ci skip] * New translations en.yml (Polish) [ci skip] * New translations en.yml (Slovak) [ci skip] * New translations en.json (Slovak) [ci skip] * New translations simple_form.en.yml (Russian) [ci skip] * New translations en.json (Russian) [ci skip] * New translations simple_form.en.yml (Portuguese) [ci skip] * New translations en.json (Portuguese) [ci skip] * New translations simple_form.en.yml (Polish) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.json (Korean) [ci skip] * New translations en.json (Corsican) [ci skip] * New translations devise.en.yml (Turkish) [ci skip] * New translations en.json (Corsican) [ci skip] * New translations en.yml (Kabyle) [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.json (Korean) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations simple_form.en.yml (Japanese) [ci skip] * New translations en.yml (Kabyle) [ci skip] * New translations devise.en.yml (Japanese) [ci skip] * New translations en.json (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 en.yml (Standard Moroccan Tamazight) [ci skip] * New translations simple_form.en.yml (Icelandic) [ci skip] * New translations simple_form.en.yml (Standard Moroccan Tamazight) [ci skip] * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) [ci skip] * New translations simple_form.en.yml (Standard Moroccan Tamazight) [ci skip] * New translations en.yml (Icelandic) [ci skip] * New translations en.yml (Standard Moroccan Tamazight) [ci skip] * New translations simple_form.en.yml (Standard Moroccan Tamazight) [ci skip] * New translations devise.en.yml (Standard Moroccan Tamazight) [ci skip] * New translations activerecord.en.yml (Icelandic) [ci skip] * New translations devise.en.yml (Icelandic) [ci skip] * New translations en.yml (Russian) [ci skip] * New translations en.json (Russian) [ci skip] * New translations simple_form.en.yml (Russian) [ci skip] * New translations en.json (Chinese Simplified) [ci skip] * New translations devise.en.yml (Chinese Simplified) [ci skip] * New translations devise.en.yml (Chinese Simplified) [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.json (Vietnamese) [ci skip] * New translations simple_form.en.yml (Vietnamese) [ci skip] * New translations doorkeeper.en.yml (Turkish) [ci skip] * New translations simple_form.en.yml (Turkish) [ci skip] * New translations doorkeeper.en.yml (Turkish) [ci skip] * New translations simple_form.en.yml (Turkish) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations simple_form.en.yml (Turkish) [ci skip] * New translations activerecord.en.yml (Turkish) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations simple_form.en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * Fix invalid syntax * New translations en.yml (Vietnamese) [ci skip] * New translations simple_form.en.yml (Vietnamese) [ci skip] * bundle exec i18n-tasks normalize * New translations en.yml (Vietnamese) [ci skip] * New translations simple_form.en.yml (Vietnamese) [ci skip] * New translations en.yml (Icelandic) [ci skip] * bundle exec i18n-tasks normalize * New translations simple_form.en.yml (Vietnamese) [ci skip] * bundle exec i18n-tasks normalize [ci skip] Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>
2020-11-09Fix updating account counters when account_stat is not yet created (#15108)Eugen Rochko
2020-11-09Remove unnecessary messages (#15109)Yamagishi Kazutoshi
* Remove unnecessary messages * ran `i18n-tasks normalize`
2020-11-09Fix Move handler not being triggered when failing to fetch target (#15107)ThibG
When failing to fetch the target account, the ProcessingWorker fails as expected, but since it hasn't cleared the `move_in_progress` flag, the next attempt at processing skips the `Move` activity altogether. This commit changes it to clear the flag when encountering any unexpected error on fetching the target account. This is likely to occur because, of, e.g., a timeout, when many instances query the same actor at the same time.
2020-11-09New Crowdin updates (#14388)Eugen Rochko
* New translations en.yml (Indonesian) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations en.json (Indonesian) [ci skip] * New translations en.json (Catalan) [ci skip] * New translations en.json (Indonesian) [ci skip] * New translations en.json (Indonesian) [ci skip] * New translations simple_form.en.yml (Vietnamese) [ci skip] * New translations simple_form.en.yml (Vietnamese) [ci skip] * New translations en.json (Sardinian) [ci skip] * New translations en.json (Esperanto) [ci skip] * New translations en.yml (Esperanto) [ci skip] * New translations en.yml (Esperanto) [ci skip] * New translations simple_form.en.yml (Esperanto) [ci skip] * New translations en.json (Japanese) [ci skip] * New translations en.json (Norwegian) [ci skip] * New translations en.yml (Norwegian) [ci skip] * New translations simple_form.en.yml (Norwegian) [ci skip] * New translations devise.en.yml (Norwegian) [ci skip] * New translations en.json (French) [ci skip] * New translations en.json (Esperanto) [ci skip] * New translations simple_form.en.yml (Arabic) [ci skip] * New translations en.yml (Indonesian) [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 (Vietnamese) [ci skip] * New translations en.json (Chinese Simplified) [ci skip] * New translations en.json (Chinese Simplified) [ci skip] * New translations en.json (Chinese Simplified) [ci skip] * New translations en.json (Chinese Simplified) [ci skip] * New translations en.json (Chinese Simplified) [ci skip] * New translations devise.en.yml (Chinese Simplified) [ci skip] * New translations en.json (Danish) [ci skip] * New translations en.yml (Danish) [ci skip] * New translations en.json (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 (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.json (Icelandic) [ci skip] * New translations en.yml (Icelandic) [ci skip] * New translations en.json (Occitan) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.json (Spanish, Argentina) [ci skip] * New translations en.json (Japanese) [ci skip] * New translations en.json (Japanese) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations simple_form.en.yml (Norwegian Nynorsk) [ci skip] * New translations en.json (Norwegian Nynorsk) [ci skip] * New translations simple_form.en.yml (Spanish, Mexico) [ci skip] * New translations en.yml (Spanish, Mexico) [ci skip] * New translations en.json (Spanish, Mexico) [ci skip] * New translations doorkeeper.en.yml (Spanish) [ci skip] * New translations en.yml (Norwegian Nynorsk) [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 doorkeeper.en.yml (Spanish, Mexico) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations en.json (French) [ci skip] * New translations en.json (Catalan) [ci skip] * New translations en.json (Spanish) [ci skip] * New translations en.json (Icelandic) [ci skip] * New translations en.json (Spanish, Argentina) [ci skip] * New translations en.json (Vietnamese) [ci skip] * New translations en.json (Chinese Simplified) [ci skip] * New translations en.json (Chinese Simplified) [ci skip] * New translations en.json (Galician) [ci skip] * New translations en.json (Galician) [ci skip] * New translations en.json (Albanian) [ci skip] * New translations en.json (Indonesian) [ci skip] * New translations en.json (Italian) [ci skip] * New translations en.json (Chinese Simplified) [ci skip] * New translations en.json (Chinese Simplified) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations simple_form.en.yml (Chinese Simplified) [ci skip] * New translations en.json (Greek) [ci skip] * New translations en.json (Czech) [ci skip] * New translations en.json (German) [ci skip] * New translations en.json (Hungarian) [ci skip] * New translations en.json (Portuguese) [ci skip] * New translations en.json (Chinese Simplified) [ci skip] * New translations en.json (Persian) [ci skip] * New translations en.json (Norwegian Nynorsk) [ci skip] * New translations en.json (Corsican) [ci skip] * New translations en.json (Kabyle) [ci skip] * New translations en.json (Arabic) [ci skip] * New translations en.json (Slovenian) [ci skip] * New translations en.json (Ukrainian) [ci skip] * New translations en.json (Portuguese, Brazilian) [ci skip] * New translations en.json (Breton) [ci skip] * New translations en.json (Sardinian) [ci skip] * New translations en.json (Hungarian) [ci skip] * New translations en.json (Corsican) [ci skip] * New translations en.json (Corsican) [ci skip] * New translations en.json (Corsican) [ci skip] * New translations en.json (Portuguese, Brazilian) [ci skip] * New translations en.json (Kabyle) [ci skip] * New translations en.json (Dutch) [ci skip] * New translations en.json (Dutch) [ci skip] * New translations en.json (Sardinian) [ci skip] * New translations en.json (Portuguese) [ci skip] * New translations doorkeeper.en.yml (Spanish) [ci skip] * New translations en.yml (Spanish, Mexico) [ci skip] * New translations simple_form.en.yml (Spanish, Mexico) [ci skip] * New translations en.json (Spanish, Mexico) [ci skip] * New translations doorkeeper.en.yml (Spanish, Mexico) [ci skip] * New translations en.yml (French) [ci skip] * New translations doorkeeper.en.yml (Spanish) [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 simple_form.en.yml (French) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.yml (Catalan) [ci skip] * New translations en.yml (Spanish, Mexico) [ci skip] * New translations simple_form.en.yml (Spanish, Mexico) [ci skip] * New translations en.json (Spanish, Mexico) [ci skip] * New translations doorkeeper.en.yml (Spanish, Mexico) [ci skip] * New translations en.yml (French) [ci skip] * New translations en.yml (Catalan) [ci skip] * New translations simple_form.en.yml (Catalan) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.json (Greek) [ci skip] * New translations en.yml (Greek) [ci skip] * New translations simple_form.en.yml (Spanish) [ci skip] * New translations en.yml (Catalan) [ci skip] * New translations en.yml (Portuguese) [ci skip] * New translations en.yml (Portuguese) [ci skip] * New translations simple_form.en.yml (Portuguese) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations simple_form.en.yml (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Korean) [ci skip] * New translations en.json (German) [ci skip] * New translations en.yml (Italian) [ci skip] * New translations en.yml (German) [ci skip] * New translations en.json (German) [ci skip] * New translations simple_form.en.yml (German) [ci skip] * New translations en.yml (Italian) [ci skip] * New translations simple_form.en.yml (Italian) [ci skip] * New translations en.yml (Korean) [ci skip] * New translations simple_form.en.yml (Korean) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Chinese Simplified) [ci skip] * New translations simple_form.en.yml (Chinese Simplified) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations simple_form.en.yml (Vietnamese) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations simple_form.en.yml (Japanese) [ci skip] * New translations en.yml (Japanese) [ci skip] * New translations en.yml (Galician) [ci skip] * New translations simple_form.en.yml (Galician) [ci skip] * New translations en.yml (Persian) [ci skip] * New translations en.yml (Persian) [ci skip] * New translations simple_form.en.yml (Persian) [ci skip] * New translations en.yml (Esperanto) [ci skip] * New translations devise.en.yml (German) [ci skip] * New translations simple_form.en.yml (Hungarian) [ci skip] * New translations en.yml (Spanish, Argentina) [ci skip] * New translations en.yml (Hungarian) [ci skip] * New translations simple_form.en.yml (Hungarian) [ci skip] * New translations en.yml (Spanish, Argentina) [ci skip] * New translations simple_form.en.yml (Spanish, Argentina) [ci skip] * New translations en.yml (Hungarian) [ci skip] * New translations en.yml (Albanian) [ci skip] * New translations simple_form.en.yml (Albanian) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.yml (Corsican) [ci skip] * New translations en.yml (Corsican) [ci skip] * New translations en.yml (Corsican) [ci skip] * New translations simple_form.en.yml (Corsican) [ci skip] * New translations en.yml (Corsican) [ci skip] * New translations en.json (Corsican) [ci skip] * New translations doorkeeper.en.yml (Corsican) [ci skip] * New translations devise.en.yml (Corsican) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Danish) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations simple_form.en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.yml (Vietnamese) [ci skip] * New translations en.json (Chinese Traditional) [ci skip] * New translations en.json (German) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations simple_form.en.yml (Indonesian) [ci skip] * New translations en.yml (Indonesian) [ci skip] * New translations en.yml (Thai) [ci skip] * New translations en.json (Thai) [ci skip] * New translations en.yml (Thai) [ci skip] * New translations en.json (Occitan) [ci skip] * New translations en.json (Occitan) [ci skip] * New translations devise.en.yml (Occitan) [ci skip] * New translations en.yml (Occitan) [ci skip] * New translations simple_form.en.yml (Occitan) [ci skip] * New translations en.json (Occitan) [ci skip] * New translations simple_form.en.yml (Occitan) [ci skip] * New translations simple_form.en.yml (Occitan) [ci skip] * New translations en.yml (Spanish) [ci skip] * New translations en.json (Standard Moroccan Tamazight) [ci skip] * New translations en.yml (Standard Moroccan Tamazight) [ci skip] * New translations simple_form.en.yml (Standard Moroccan Tamazight) [ci skip] * New translations activerecord.en.yml (Standard Moroccan Tamazight) [ci skip] * New translations devise.en.yml (Standard Moroccan Tamazight) [ci skip] * New translations doorkeeper.en.yml (Standard Moroccan Tamazight) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations simple_form.en.yml (Turkish) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations en.json (Turkish) [ci skip] * New translations doorkeeper.en.yml (Turkish) [ci skip] * New translations doorkeeper.en.yml (Turkish) [ci skip] * New translations doorkeeper.en.yml (Turkish) [ci skip] * New translations devise.en.yml (Turkish) [ci skip] * New translations simple_form.en.yml (Turkish) [ci skip] * New translations devise.en.yml (Turkish) [ci skip] * New translations activerecord.en.yml (Turkish) [ci skip] * New translations simple_form.en.yml (Turkish) [ci skip] * New translations simple_form.en.yml (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] * ran `i18n-tasks normalize` * ran `yarn manage:translations` * ran `i18n-tasks normalize` * New translations en.json (Turkish) [ci skip] * New translations en.yml (Turkish) [ci skip] Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>
2020-11-08Fix crash in SuspendAccountWorker (#15106)ThibG
* Fix crash in SuspendAccountWorker `follows` is an array thanks to `to_a` * Fix code style issue Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
2020-11-08Add support for reversible suspensions through ActivityPub (#14989)Eugen Rochko
2020-11-07Fix crashes in SuspendAccountService/UnsuspendAccountService (#15100)ThibG
* Fix crashes in SuspendAccountService/UnsuspendAccountService * Catch filesystem errors
2020-11-07Fix suspension/unsuspension not working because of FeedManager change (#15099)ThibG
2020-11-06Add subresource integrity for JS and CSS assets (#15096)Eugen Rochko
Fix #2744
2020-11-04Display “Show newer” and “Show older” instead of “Show more” in ↵Mélanie Chauvel
public pages (#15052)
2020-11-04Change order of announcements in admin page to sort them newest-first (#15091)ThibG
* Change order of announcements in admin page to sort show newly-created first Fixes #15090 * Use reverse-chronological rather than creation date only
2020-11-04Add account sensitized (#14361)Takeshi Umeda
* Add account sensitized * Fix i18n normalize * Fix description and spec * Fix spec * Fix wording
2020-11-04Add limitation of image's max zoom rate (max to the original size of image) ↵Mashiro
(#15094) * limit image max scale rate to fit the actual image size * replace with MIN_SCALE * fix behavior on touch screen
2020-11-05Bump detect-passive-events from 1.0.5 to 2.0.1 (#15003)dependabot[bot]
* Bump detect-passive-events from 1.0.5 to 2.0.1 Bumps [detect-passive-events](https://github.com/rafgraph/detect-passive-events) from 1.0.5 to 2.0.1. - [Release notes](https://github.com/rafgraph/detect-passive-events/releases) - [Commits](https://github.com/rafgraph/detect-passive-events/compare/v1.0.5...v2.0.1) Signed-off-by: dependabot[bot] <support@github.com> * Migrate to detect-passive-events v2 Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Yamagishi Kazutoshi <ykzts@desire.sh>
2020-11-03add mouse scroll lock in image expand view (#15088)Mashiro
* add mouse scroll lock in image expand view * enhancement
2020-11-02Add expand/compress image button on image view box (#15068)Mashiro
* add zoom image button * enhance zoom algorithm & add translation * code structure * code structure * code structure * enhance grab performance * rm useless state * fix behavior on Firefox & scroll lock & horizontal scroll with mousewheel * remove scroll lock on MouseWheelEvent * code structure * enhance algorithm and code structure * rm Gemfile.lock from tree * codeclimate * fix a stupid mistake