Commit Graph

16534 Commits (2cabc5d188ee5b5c7bea808c58500d2c74e4b087)

Author SHA1 Message Date
kibigo! 2cabc5d188
Use a tree‐based approach for advanced text formatting (#1907)
* 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-02 10:29:42 +01:00
Claire 4ac6601476
Port navigation bar from upstream (#1986)
Fixes #1977
2022-12-01 20:06:08 +01:00
Claire 105d9743ae
Merge pull request #1984 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
2022-12-01 11:35:13 +01:00
Claire fd6f9bf7a7 Merge branch 'main' into glitch-soc/merge-upstream 2022-12-01 11:08:52 +01:00
Nick Schonning 491ab8de89
Fix GitHub form label type (#21833) 2022-12-01 10:49:25 +01:00
Claire 68d1df8bc3
Fix some performance issues with /admin/instances (#21907)
/admin/instances?availability=failing remains wholly unefficient
2022-12-01 10:32:10 +01:00
Claire fc0e11abdb
Merge pull request #1983 from ClearlyClaire/glitch-soc/features/translation
Port “Translate” feature from upstream
2022-11-30 18:12:53 +01:00
Claire e64909d8bf Move translate button above media attachments/preview cards 2022-11-30 15:03:47 +01:00
Claire afdd75e1f9 Fix translate button not being shown when the toot has no Content Warning 2022-11-30 14:44:06 +01:00
Claire 620b079a78 Fix inconsistent with “translate” button padding 2022-11-30 13:53:38 +01:00
Eugen Rochko f7684a31fe [Glitch] Change design of translations in web UI
Port fcca781aae to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-30 13:53:38 +01:00
Claire 44c0ba445a [Glitch] Add mention of the translation provider when translating a post
Port 30453fab80 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-30 13:53:38 +01:00
Claire 47bd934061 [Glitch] Change “Translate” button to only show up when a translation backend is configured
Port 8046cf34d6 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-30 13:53:38 +01:00
Eugen Rochko e8d0a1b320 [Glitch] Fix showing translate button when status has no language in web UI
Port 4adb267f91 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-30 13:53:38 +01:00
Eugen Rochko 5e143db13a [Glitch] Don't show translate button to logged-out users
Port part of e623c302d5 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-30 13:53:38 +01:00
Eugen Rochko b5ee275ed9 [Glitch] Fix translations not being formatted, other issues in web UI
Port 55a2e9b5be to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-30 13:53:38 +01:00
Eugen Rochko a3052dad04 [Glitch] Add user content translations with configurable backends
Port 0d6b878808 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-30 13:53:38 +01:00
Claire f3ce9653eb
Merge pull request #1982 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
2022-11-30 11:13:58 +01:00
Claire fe111a8bad Merge branch 'main' into glitch-soc/merge-upstream 2022-11-30 10:29:19 +01:00
mhkhung 1122697b37
3.0.5 version of cimg/ruby:3.0-node upgraded to node 18 (#21873)
Node 18 caused build to fail
2022-11-30 09:56:27 +01:00
Claire 2d4d99f135
Fix expanded statuses not always being scrolled into view (#21797) 2022-11-28 16:42:04 +01:00
Claire 1a7aa37b60
Merge pull request #1976 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
2022-11-28 14:17:00 +01:00
Connor Shea f51990bd62 [Glitch] Make the 'Trending now' header a link to Explore.
Port cec1e902e0 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-28 11:59:00 +01:00
Claire 98c5ca1037 [Glitch] Fix infinite loading instead of soft 404 for non-existing remote accounts
Port 3ffaa966b0 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-28 11:55:56 +01:00
James Adney 2815ac4155 [Glitch] fix gif autoplay on iOS
Port c0dcf15d1e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-28 11:55:09 +01:00
Claire c0bf90ac19 [Glitch] Fix “Share @{name}'s profile” profile menu item
Port fe421257e5 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-28 11:54:00 +01:00
kedama 32b43a96a7 [Glitch] Fix status mismatch of sensitive check
Port 14e2354eea to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2022-11-28 11:53:21 +01:00
Claire a2e7997592 Merge branch 'main' into glitch-soc/merge-upstream
Conflicts:
- `README.md`:
  Our README is completely different.
  Discarded upstream changes.
2022-11-28 11:33:34 +01:00
Connor Shea cec1e902e0
Make the 'Trending now' header a link to Explore. (#21759)
This keeps the same design that exists currently, but makes "Trending
now" into a link to the Hashtags section of "Explore".

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

Regression from #18641
2022-11-27 20:47:29 +01:00
James Adney c0dcf15d1e
fix gif autoplay on iOS (#21422) 2022-11-27 20:46:23 +01:00
Bramus! e617ee7fd9
Add user profile OG tag on status page (#21423) 2022-11-27 20:45:28 +01:00
Claire f4f2b062ec
Remove LDSignature on actor Delete activities (#21466)
They are currently not used for anything and represent more than half of the
payload size.
2022-11-27 20:43:24 +01:00
Claire fe421257e5
Fix “Share @{name}'s profile” profile menu item (#21490) 2022-11-27 20:42:17 +01:00
Claire 098ced7420
Remove support for Ruby 2.6 (#21477)
As pointed out by https://github.com/mastodon/mastodon/pull/21297#discussion_r1028372193
at least one of our dependencies already dropped support for Ruby 2.6, and we
had removed Ruby 2.6 tests from the CI over a year ago (#16861).

So stop advertising Ruby 2.6 support, bump targeted version, and drop some
compatibility code.
2022-11-27 20:41:39 +01:00
Kaspar V 47f0d7021e
refactor(vacuum statuses): reduce amount of db queries and load for each query - improve performance (#21487)
* refactor(statuses_vacuum): remove dead code - unused

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

* refactor(statuses_vacuum): make retention_period present test explicit

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

* refactor(statuses_vacuum): improve query performance

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

* refactor(status): simplify unlink_from_conversations

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

* refactor(status): searchable_by way less sub selects

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

This is how it was:

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

This is how it is with this change:

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

* Fix tests
2022-11-27 20:39:05 +01:00
Claire d587a268fd
Add logging for Rails cache timeouts (#21667)
* Reduce redis cache store connect timeout from default 20 seconds to 5 seconds

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

Fixes #21696
2022-11-26 23:08:25 +01:00
dependabot[bot] 95b24c51ec
Bump sass from 1.55.0 to 1.56.1 (#20681)
Bumps [sass](https://github.com/sass/dart-sass) from 1.55.0 to 1.56.1.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.55.0...1.56.1)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-26 14:07:52 +09:00
dependabot[bot] 4ed2b3590b
Bump webpack-bundle-analyzer from 4.6.1 to 4.7.0 (#19604)
Bumps [webpack-bundle-analyzer](https://github.com/webpack-contrib/webpack-bundle-analyzer) from 4.6.1 to 4.7.0.
- [Release notes](https://github.com/webpack-contrib/webpack-bundle-analyzer/releases)
- [Changelog](https://github.com/webpack-contrib/webpack-bundle-analyzer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/webpack-bundle-analyzer/compare/v4.6.1...v4.7.0)

---
updated-dependencies:
- dependency-name: webpack-bundle-analyzer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-26 14:07:12 +09:00
dependabot[bot] 593a652090
Bump babel-loader from 8.2.5 to 8.3.0 (#20059)
Bumps [babel-loader](https://github.com/babel/babel-loader) from 8.2.5 to 8.3.0.
- [Release notes](https://github.com/babel/babel-loader/releases)
- [Changelog](https://github.com/babel/babel-loader/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel-loader/compare/v8.2.5...v8.3.0)

---
updated-dependencies:
- dependency-name: babel-loader
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-26 13:52:40 +09:00
dependabot[bot] 00466763e2
Bump capybara from 3.37.1 to 3.38.0 (#20036)
Bumps [capybara](https://github.com/teamcapybara/capybara) from 3.37.1 to 3.38.0.
- [Release notes](https://github.com/teamcapybara/capybara/releases)
- [Changelog](https://github.com/teamcapybara/capybara/blob/master/History.md)
- [Commits](https://github.com/teamcapybara/capybara/compare/3.37.1...3.38.0)

---
updated-dependencies:
- dependency-name: capybara
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-26 13:51:53 +09:00
dependabot[bot] 7b86e3a6ce
Bump @babel/runtime from 7.19.4 to 7.20.1 (#20038)
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.19.4 to 7.20.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.20.1/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-26 13:50:07 +09:00
dependabot[bot] dc7a49ddf6
Bump @babel/preset-env from 7.19.4 to 7.20.2 (#20037)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.19.4 to 7.20.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.20.2/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-26 13:49:48 +09:00
dependabot[bot] 08a50d3a71
Bump @babel/plugin-proposal-decorators from 7.19.6 to 7.20.2 (#20061)
Bumps [@babel/plugin-proposal-decorators](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators) from 7.19.6 to 7.20.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.20.2/packages/babel-plugin-proposal-decorators)

---
updated-dependencies:
- dependency-name: "@babel/plugin-proposal-decorators"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-26 13:43:00 +09:00
dependabot[bot] 99428cba55
Bump @babel/core from 7.19.6 to 7.20.2 (#20051)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.19.6 to 7.20.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.20.2/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-26 13:35:26 +09:00
dependabot[bot] 86cbee77d6
Bump brakeman from 5.3.1 to 5.4.0 (#21351)
Bumps [brakeman](https://github.com/presidentbeef/brakeman) from 5.3.1 to 5.4.0.
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](https://github.com/presidentbeef/brakeman/compare/v5.3.1...v5.4.0)

---
updated-dependencies:
- dependency-name: brakeman
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-26 13:34:19 +09:00