about summary refs log tree commit diff
path: root/app
AgeCommit message (Collapse)Author
2022-12-07[Glitch] Fix UI header overflow on mobileClaire
Port 76454cc63803f3619c6c2352abac9646004e32c4 to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-12-07[Glitch] Fix “Sign up” button with closed registrations not opening ↵Claire
modal on mobile Port 51098035ed2f42d949d6ec3f8ecdd5e68e73874d to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-12-07Merge branch 'main' into glitch-soc/merge-upstreamClaire
Conflicts: - `app/models/concerns/domain_materializable.rb`: Fixed a code style issue upstream in a PR that got merged in glitch-soc earlier. Changed the code to match upstream's.
2022-12-07Fix 500 error when trying to migrate to an invalid address (#21462)Claire
* Fix 500 error when trying to migrate to an invalid address * Add tests
2022-12-07Fix hidden overflow on interaction modal (#21763)Juan Xavier Gomez
* Fix hidden overflow on interaction modal * only update overflow y
2022-12-07Fix UI header overflow on mobile (#21783)Claire
2022-12-07Fix “Sign up” button with closed registrations not opening modal on ↵Claire
mobile (#22060) Fixes #20840
2022-12-07Log admin approve and reject account (#22088)Francis Murillo
* Log admin approve and reject account * Add unit tests for approve and reject logging
2022-12-07Fix unbounded recursion in account discovery (#22025)Claire
* 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-07Fix irreversible and whole_word parameters handling in /api/v1/filters (#21988)Claire
Fixes #21965
2022-12-06Fix the top border of verified account fields (#22006)Jed Fox
2022-12-04Fix unbounded recursion in account discovery (#1994)Claire
* 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-04Fix content-type being reset when editing toots (#1993)Claire
Fixes #1990
2022-12-04Merge branch 'main' into glitch-soc/merge-upstreamClaire
2022-12-04Fix spacing warning from ESLint (#22005)Nick Schonning
2022-12-02New Crowdin updates (#21599)Eugen Rochko
* 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-02Use a tree‐based approach for advanced text formatting (#1907)kibigo!
* Use a tree‐based approach for adv. text formatting Sanitizing HTML/Markdown means parsing the content into an HTML tree under‐the‐hood anyway, and it is more accurate to do mention/hashtag replacement on the text nodes in that tree than it is to try to hack it in with regexes et cetera. This undoes the overrides of `#entities` and `#rewrite` on `AdvancedTextFormatter` but also stops using them, instead keeping track of the parsed Nokogiri tree itself and using that in the `#to_s` method. Internally, this tree uses `<mastodon-entity>` nodes to keep track of hashtags, links, and mentions. Sanitization is moved to the beginning, so it should be known that these do not appear in the input. * Also disallow entities inside of `<code>` I think this is generally expected behaviour, and people are annoyed when their code gets turned into links/hashtags/mentions. * Minor cleanup to AdvancedTextFormatter * Change AdvancedTextFormatter to rewrite entities in one pass and sanitize at the end Also, minor refactoring to better match how other formatters are organized. * Add some tests Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2022-12-01Port navigation bar from upstream (#1986)Claire
Fixes #1977
2022-12-01Merge branch 'main' into glitch-soc/merge-upstreamClaire
2022-12-01Fix some performance issues with /admin/instances (#21907)Claire
/admin/instances?availability=failing remains wholly unefficient
2022-11-30Move translate button above media attachments/preview cardsClaire
2022-11-30Fix translate button not being shown when the toot has no Content WarningClaire
2022-11-30Fix inconsistent with “translate” button paddingClaire
2022-11-30[Glitch] Change design of translations in web UIEugen Rochko
Port fcca781aae609067bc9e43ad4a466ef6d2074bbb to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-30[Glitch] Add mention of the translation provider when translating a postClaire
Port 30453fab80d55fc10766f0e067c31d96753ccfda to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-30[Glitch] Change “Translate” button to only show up when a translation ↵Claire
backend is configured Port 8046cf34d68209b39845e07a9d2db40926cc5512 to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-30[Glitch] Fix showing translate button when status has no language in web UIEugen Rochko
Port 4adb267f9177f6036f8f27cd37544c54b97f3dd2 to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-30[Glitch] Don't show translate button to logged-out usersEugen Rochko
Port part of e623c302d5d4dfc05689eb8fb8e051e30fc38ec8 to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-30[Glitch] Fix translations not being formatted, other issues in web UIEugen Rochko
Port 55a2e9b5beb1fc923c42257edee3df738e208b38 to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-30[Glitch] Add user content translations with configurable backendsEugen Rochko
Port 0d6b878808a02aa4a544e894f06419c0f612c163 to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-30Merge branch 'main' into glitch-soc/merge-upstreamClaire
2022-11-28Fix expanded statuses not always being scrolled into view (#21797)Claire
2022-11-28[Glitch] Make the 'Trending now' header a link to Explore.Connor Shea
Port cec1e902e006730f68bde0a4334e5b819a12a475 to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-28[Glitch] Fix infinite loading instead of soft 404 for non-existing remote ↵Claire
accounts Port 3ffaa966b0ba11b318e9a93b41854aa765d2ed5c to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-28[Glitch] fix gif autoplay on iOSJames Adney
Port c0dcf15d1ec357cedd89025a1b210bdc21422b59 to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-28[Glitch] Fix “Share @{name}'s profile” profile menu itemClaire
Port fe421257e5e9e3225393f544da0437596aa9a61b to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-28[Glitch] Fix status mismatch of sensitive checkkedama
Port 14e2354eeaf1f89a0f81302aa92661977be15daf to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-28Merge branch 'main' into glitch-soc/merge-upstreamClaire
Conflicts: - `README.md`: Our README is completely different. Discarded upstream changes.
2022-11-27Make the 'Trending now' header a link to Explore. (#21759)Connor Shea
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-27Fix infinite loading instead of soft 404 for non-existing remote accounts ↵Claire
(#21303) Fixes #21278, #21021
2022-11-27Fix spaces not being stripped in admin account search (#21324)Claire
Fixes #21058 Regression from #18641
2022-11-27fix gif autoplay on iOS (#21422)James Adney
2022-11-27Add user profile OG tag on status page (#21423)Bramus!
2022-11-27Remove LDSignature on actor Delete activities (#21466)Claire
They are currently not used for anything and represent more than half of the payload size.
2022-11-27Fix “Share @{name}'s profile” profile menu item (#21490)Claire
2022-11-27refactor(vacuum statuses): reduce amount of db queries and load for each ↵Kaspar V
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-27Fix attachments of edited statuses not being fetched (#21565)Claire
* Fix attachments of edited statuses not being fetched * Fix tests
2022-11-27Fix status mismatch of sensitive check (#21724)kedama
2022-11-26Clear voter count when poll is reset (#21700)afontenot
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-25fix media uploads with ffmpeg 5 (#21191)Skyler Hawthorne