Compare commits

...

651 Commits

Author SHA1 Message Date
renovate[bot]
d111c8ccbf Update dependency pg to v1.5.5 (#29230)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-16 11:20:33 +01:00
Claire
4aaede8617 Allow JSON-LD documents with multiple profiles 2024-02-15 17:16:18 +01:00
Claire
e6e43b642a Fix insufficient Content-Type checking of fetched ActivityStreams objects 2024-02-15 17:16:18 +01:00
Claire
4216779759 Fix user creation failure handling in OAuth paths (#29207) 2024-02-14 23:13:32 +01:00
Claire
7acc4a95b4 Fix OmniAuth tests (#29201) 2024-02-14 16:08:05 +01:00
Claire
bfba788358 Rename methods to avoid confusion between OAuth and OmniAuth 2024-02-14 14:49:39 +01:00
Claire
71120631d8 Lock auth provider changes behind ALLOW_UNSAFE_AUTH_PROVIDER_REATTACH=true 2024-02-14 14:49:39 +01:00
Claire
dd2834e850 Prevent different identities from a same SSO provider from accessing a same account 2024-02-14 14:49:39 +01:00
Claire
4e640b2eae Improve performance of deleting OAuth tokens 2024-02-14 14:49:39 +01:00
Emelia Smith
a499c589fe Ensure password resets revoke access to Streaming API 2024-02-14 14:49:39 +01:00
Emelia Smith
ef3825c9d5 Ensure destruction of OAuth Applications notifies streaming
Due to doorkeeper using a dependent: delete_all relationship, the destroy of an OAuth Application bypassed the existing AccessTokenExtension callbacks for announcing destructing of access tokens.
2024-02-14 14:49:39 +01:00
Claire
c9d5d27fe3 Add sidekiq_unique_jobs:delete_all_locks task and disable sidekiq-unique-jobs UI by default (#29199) 2024-02-14 13:50:40 +01:00
Emelia Smith
d289c94162 Disable administrative doorkeeper routes (#29187) 2024-02-14 13:50:40 +01:00
renovate[bot]
d438bf7141 Update dependency sidekiq-unique-jobs to v7.1.33 (#29175)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-14 13:50:40 +01:00
renovate[bot]
32e4803479 Update dependency nokogiri to v1.16.2 [SECURITY] (#29106)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-14 13:50:40 +01:00
Claire
7f951cf871 Fix insufficient origin validation 2024-02-01 15:06:59 +01:00
Claire
d0d06c99dc Merge pull request #2422 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
2023-09-21 19:07:38 +02:00
Claire
86ec1e833e Merge branch 'main' into glitch-soc/merge-upstream 2023-09-21 16:56:09 +02:00
Claire
4fcc026f0f Bump version to v4.2.0 (#27017) 2023-09-21 16:51:32 +02:00
Claire
c04b08a34d Merge pull request #2419 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
2023-09-21 15:52:48 +02:00
Claire
b57ec6ad6b Fix some settings not being properly migrated when set to false 2023-09-21 15:17:44 +02:00
Claire
6760e67c64 [Glitch] Fix search results temporarily disappearing while scrolling and loading more results
Port 5356ddbcca to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-21 15:14:38 +02:00
Claire
f05985f8ec Merge branch 'main' into glitch-soc/merge-upstream
Conflicts:
- `README.md`:
  Upstream changed their README, we have a completely different one.
  Kept our version.
2023-09-21 15:12:00 +02:00
Eugen Rochko
0fbefb6f67 Update AUTHORS.md (#27018) 2023-09-21 14:42:15 +02:00
Claire
8acc75435b Change S3 checksum mode to be disabled by default (#27007) 2023-09-21 14:00:51 +02:00
aaaaalbert
bb6c59a399 Fix #27010: update the copyright year in README (#27016) 2023-09-21 13:57:24 +02:00
Claire
5356ddbcca Fix search results temporarily disappearing while scrolling and loading more results (#27014) 2023-09-21 13:51:21 +02:00
Claire
890e334703 Add migration tests for negative settings (#27012) 2023-09-21 12:33:30 +02:00
renovate[bot]
c74670b4d3 Update dependency glob to v10.3.5 (#27002)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-21 11:06:16 +02:00
github-actions[bot]
effe4728cf New Crowdin Translations (automated) (#27005)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-09-21 11:06:04 +02:00
renovate[bot]
4ed9d9ca6f Update dependency autoprefixer to v10.4.16 (#27000)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-21 11:00:15 +02:00
Claire
828eebad48 Add hide_collections, discoverable and indexable attributes to credentials API (#26998) 2023-09-20 18:25:16 +02:00
github-actions[bot]
61fe25fe74 New Crowdin Translations (automated) (#26988)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-09-20 13:05:56 +02:00
Claire
889c4d4bbb Update changelog (#26992) 2023-09-20 12:12:19 +02:00
Claire
5efa6ac771 Merge pull request #2417 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
2023-09-19 17:38:05 +02:00
Claire
6a9e93ae19 Merge branch 'main' into glitch-soc/merge-upstream 2023-09-19 17:32:48 +02:00
Claire
abcc0b38fa Fix incorrect PostgreSQL version check (#26979) 2023-09-19 17:31:58 +02:00
Claire
57f47e50f0 Merge pull request #2416 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
2023-09-19 17:14:35 +02:00
Claire
f546b0c999 Merge branch 'main' into glitch-soc/merge-upstream 2023-09-19 17:07:29 +02:00
Claire
f4b780ba22 Bump version to v4.2.0-rc2 (#26974) 2023-09-19 17:04:23 +02:00
Claire
eeab3560fc Merge pull request from GHSA-v3xf-c9qf-j667 2023-09-19 16:53:58 +02:00
Claire
ff32475f5f Merge pull request from GHSA-2693-xr3m-jhqr 2023-09-19 16:53:21 +02:00
Claire
94893cf24f Merge pull request from GHSA-hcqf-fw2r-52g4
* Revert "Fix request URL normalisation for bare domain and 8-bit characters (#26285)"

This reverts commit 8891d8945d.

* Revert "Do not normalize URL before fetching it (#26219)"

This reverts commit fd284311e7.
2023-09-19 16:52:52 +02:00
github-actions[bot]
73ecc4de6e New Crowdin Translations (automated) (#26978)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-09-19 16:26:51 +02:00
Claire
0cb343eec2 Tag nightly images as latest in glitch-soc, as it has no proper releases (#2414) 2023-09-19 16:16:35 +02:00
Claire
6f6586808e Merge pull request #2413 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to a83615edc9
2023-09-19 14:02:04 +02:00
Claire
22ee4e057d Merge commit 'a83615edc9fc1ce3363ddcf1fc676806421a5f65' into glitch-soc/merge-upstream
Conflicts:
- `streaming/index.js`:
  Upstream has added a parameter to `streamFrom`, while glitch-soc had an
  extra parameter.
  Ported upstream changes.
2023-09-19 12:59:23 +02:00
Claire
1e87575b70 Merge commit '6eb6209d02514c5271238a23601be643c7b9f52d' into glitch-soc/merge-upstream 2023-09-19 12:53:32 +02:00
Claire
7ea5a2c82c Merge pull request #2411 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 9688c5fcc4
2023-09-19 12:52:17 +02:00
renovate[bot]
a83615edc9 Update eslint (non-major) (#26954)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-19 12:51:13 +02:00
Eugen Rochko
0f3f9b611f Change video bitrate to always fit within size limit (#26970) 2023-09-19 12:25:58 +02:00
Claire
70cae19b6b Fix hashtag bar being sometimes incorrectly hidden (#26960) 2023-09-19 12:25:39 +02:00
Emelia Smith
fbfceb9c77 Add additional metrics for streaming (#26945) 2023-09-19 12:25:30 +02:00
renovate[bot]
6eb6209d02 Update DefinitelyTyped types (non-major) (#26953)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-19 12:24:26 +02:00
renovate[bot]
c6a535a197 Update dependency node to 20.7 (#26963)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-19 11:16:45 +02:00
renovate[bot]
6f9f901153 Update dependency postcss to v8.4.30 (#26964)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-19 11:03:42 +02:00
github-actions[bot]
67eaaa4b90 New Crowdin Translations (automated) (#26966)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-09-19 10:41:48 +02:00
Rob Thomas
200312e8be Fix crash when viewing a moderation appeal and the moderator account has been deleted (#25900)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-09-18 17:41:32 +02:00
github-actions[bot]
1b4902fabf New Crowdin Translations (automated) (#26913)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-09-18 13:46:07 +02:00
Claire
31dedf4697 [Glitch] Fix Web UI making duplicate search queries when scrolling
Port 4c1518a6f3 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-18 12:12:55 +02:00
Claire
f61e29cc7e [Glitch] Fix error in Web UI when server rules cannot be fetched
Port 893755f4cb to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-18 12:11:09 +02:00
Claire
9688c5fcc4 Merge branch 'main' into glitch-soc/merge-upstream 2023-09-18 12:09:37 +02:00
Claire
4c1518a6f3 Fix Web UI making duplicate search queries when scrolling (#26959) 2023-09-18 11:20:09 +02:00
Claire
893755f4cb Fix error in Web UI when server rules cannot be fetched (#26957) 2023-09-18 09:51:52 +02:00
Claire
392c07f2bf Fix Setting.authorized_fetch not being properly taken into consideration (#26958) 2023-09-18 09:37:29 +02:00
renovate[bot]
8b5c61ae3a Update formatjs monorepo (#26955)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-18 08:52:49 +02:00
renovate[bot]
04623e2f34 Update babel monorepo to v7.22.20 (#26946)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-18 08:34:04 +02:00
Claire
743fede5be Merge pull request #2406 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 6273416292
2023-09-16 09:57:00 +02:00
Claire
60ecca6acb Revert tabs background color so they are easier to visually distinguish from contents 2023-09-16 09:50:00 +02:00
Claire
d3f14dd7d4 [Glitch] Fix dismiss button overlapping with text in dismissable banners
Port 2a4fcc51fd to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-15 21:48:36 +02:00
Claire
dfc05ec8df Merge commit '6273416292090b2f6bfda33f070cea325a1759df' into glitch-soc/merge-upstream
Conflicts:
- `.github/workflows/build-nightly.yml`:
  Upstream modified this file close to a line modified by glitch-soc to
  disable the ARMv64 builder (as glitch-soc doesn't have one).
  Ported upstream's changes.
- `.github/workflows/build-releases.yml`:
  Upstream modified this file close to lines changed by glitch-soc to
  change the Docker image repositories used (only ghcr, and based on the
  organization's name).
  Ported upstream's changes.
2023-09-15 21:43:49 +02:00
Claire
5ed72f668f Merge commit 'b90383d07388fe8513e59a6deb1a2391146c6561' into glitch-soc/merge-upstream 2023-09-15 21:39:21 +02:00
Claire
cf8b242c4c [Glitch] Fix notification permissions being requested immediately after login
Port 520b570474 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-15 21:33:28 +02:00
Santiago Kozak
0b5903af7c [Glitch] Fix recent search items not handling overflows correctly
Port d2cfcdd09e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-15 21:31:46 +02:00
Claire
e193c848fe Merge commit '97e4011c3ce31c6d492d5f103e95a35b6ebdc9bd' into glitch-soc/merge-upstream
Conflicts:
- `config/initializers/content_security_policy.rb`:
  Upstream added some code to add the Identity Provider's sign-in endpoint to
  the `form-action` Content Security Policy directive but our version of the
  file is pretty different.
  Ported the change.
2023-09-15 21:25:05 +02:00
Eugen Rochko
7384015505 [Glitch] Add recent searches in web UI
Port 9b2bc3d1de to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-15 21:15:41 +02:00
Claire
263d601c25 [Glitch] Fix confusing behavior of mute button and volume slider in web UI
Port 91040da871 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-15 21:12:53 +02:00
Eugen Rochko
58514651c3 [Glitch] Fix mute button and volume slider feeling disconnected in web UI
Port f3a2e15f8e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-15 21:12:13 +02:00
Eugen Rochko
15c865808a [Glitch] Change onboarding prompt to use full width of banner in web UI
Port 1f141f656d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-15 21:09:28 +02:00
Claire
08b495d95c Merge commit 'b1d89071384ef028c97a3d28cf8cf6bc0ca6c4ce' into glitch-soc/merge-upstream 2023-09-15 21:06:45 +02:00
Claire
9f3df3edee [Glitch] Add some information about Full-text search being disabled in search popout
Port 9c1ef8302a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-15 21:01:40 +02:00
Claire
5d8c65f2a7 Merge commit '398635c0c4987ec44d937e98431ff5dee331ea94' into glitch-soc/merge-upstream 2023-09-15 20:57:40 +02:00
Eugen Rochko
526f457ebc [Glitch] Add infinite scrolling for search results in web UI
Port 5d20733d8d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-15 20:54:20 +02:00
Eugen Rochko
f7a4d77d90 [Glitch] Add in: to search popout in web UI
Port d8bdba2f9f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-15 20:33:51 +02:00
Claire
3ca94f6d4a Merge commit '93d051e47d27b5bd10be922a81d4d4eb6c306330' into glitch-soc/merge-upstream 2023-09-15 20:21:40 +02:00
Claire
e5269c6a65 [Glitch] Improve interaction modal error handling
Port 548c032dbb to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-15 20:11:18 +02:00
Claire
e14372c2d1 Merge commit '548c032dbb90ae9c06b05fc05724c49d0b552fd9' into glitch-soc/merge-upstream 2023-09-15 20:08:09 +02:00
Claire
6273416292 Fix post edits not being forwarded as expected (#26936) 2023-09-15 19:54:32 +02:00
Claire
2a4fcc51fd Fix dismiss button overlapping with text in dismissable banners (#26935) 2023-09-15 19:53:28 +02:00
Claire
e4f5114aaf Fix obsolete cache key in status cache invalidation logic (#26934) 2023-09-15 19:52:28 +02:00
Renaud Chaput
5d93e98da4 Fix container build when cache is disabled (#26932) 2023-09-15 10:44:01 +02:00
Claire
9693c271f1 Fix processing of min_id and max_id parameters in /api/v2/search (#26927) 2023-09-15 10:23:24 +02:00
renovate[bot]
82015dbab6 Update dependency sass to v1.67.0 (#26914)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-15 10:03:55 +02:00
renovate[bot]
3103415364 Update dependency @babel/core to v7.22.19 (#26920)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-15 09:09:22 +02:00
Renaud Chaput
ef8ca2fd72 Change Dockerfile to upgrade packages when building (#26922) 2023-09-14 23:11:36 +02:00
Claire
b90383d073 Bump version to v4.2.0-rc1 (#26916) 2023-09-14 18:46:00 +02:00
Eugen Rochko
fc6825055b Change score half-life for trending posts from 2 hours to 1 hour (#26915) 2023-09-14 09:20:14 +02:00
Claire
a04ae16201 Fix CSP when using ONE_CLICK_SSO_LOGIN (#26901) 2023-09-13 19:54:04 +02:00
github-actions[bot]
921c6fe654 New Crowdin Translations (automated) (#26498)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-09-13 15:10:41 +02:00
Robert R George
20666482ef Added admin api for managing tags (#26872) 2023-09-13 11:22:53 +02:00
renovate[bot]
97e4011c3c Update dependency rails to v7.0.8 (#26907)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-13 10:01:31 +02:00
Jeong Arm
97f3d7b662 Fix Version metadata have trailing dot (#2403) 2023-09-13 08:47:39 +02:00
Plastikmensch
075ee0b2d4 Fix wrong gradient color on collapsed private mentions (#2402)
Upstream changed the background color of private mentions, but the gradient used for collapsed toots still used the old color.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-09-13 08:44:40 +02:00
Claire
520b570474 Fix notification permissions being requested immediately after login (#26472) 2023-09-12 18:27:01 +02:00
Claire
287520453c Fix front-end bug when processing relationship-related account actions (#26902) 2023-09-12 16:30:03 +02:00
CSDUMMI
9a70cac9de Fix #26849 by adding the domain of the current SSO provider to the form-action CSP (#26857) 2023-09-12 13:04:51 +02:00
renovate[bot]
93223633fc Update dependency uuid to v9.0.1 (#26900)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-12 12:38:52 +02:00
Renaud Chaput
0712cc2b99 Fix Redux types (#26899) 2023-09-12 12:18:19 +02:00
renovate[bot]
9ac9aca142 Update dependency test-prof to v1.2.3 (#26894)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-12 10:45:54 +02:00
Jeong Arm
59af3c1310 Add PublicStatuses to tootctl search deploy --only option (#26896) 2023-09-12 09:59:59 +02:00
Santiago Kozak
d2cfcdd09e Fix recent search items not handling overflows correctly (#26893) 2023-09-12 04:20:57 +02:00
Claire
20ac5be1c1 Fix error on status type notification (bell icon) (#26884) 2023-09-11 20:23:13 +02:00
Renaud Chaput
bd06c13204 Convert actions/account_notes into Typescript (#26601) 2023-09-11 16:09:22 +02:00
renovate[bot]
7730083611 Update dependency kt-paperclip to v7.2.1 (#26869)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-11 11:51:42 +02:00
renovate[bot]
f3be4eb0dc Update dependency @rails/ujs to v7.0.8 (#26871)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-11 11:32:30 +02:00
renovate[bot]
3679e67fad Update dependency @babel/core to v7.22.17 (#26855)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-11 11:12:22 +02:00
renovate[bot]
c10142ac3c Update formatjs monorepo (#26874)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-11 10:54:59 +02:00
renovate[bot]
3d0331fc7a Update actions/checkout action to v4 (#26882)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-11 10:41:26 +02:00
renovate[bot]
b1d8907138 Update dependency @types/lodash to v4.14.198 (#26878)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-11 10:26:23 +02:00
renovate[bot]
f333d1822b Update docker.elastic.co/elasticsearch/elasticsearch Docker tag to v7.17.13 (#26879)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-11 10:26:06 +02:00
renovate[bot]
959ccf5682 Update eslint (non-major) (#26881)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-11 10:25:54 +02:00
renovate[bot]
b98edfa4ba Update dependency rubocop to v1.56.3 (#26883)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-11 10:11:59 +02:00
renovate[bot]
d5155cbc21 Update dependency ws to v8.14.1 (#26862)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-11 09:59:18 +02:00
Claire
91040da871 Fix confusing behavior of mute button and volume slider in web UI (#26860) 2023-09-08 20:39:29 +02:00
Claire
33c8708a1a Change GET /api/v1/directory to use database replica rather than primary (#26856) 2023-09-08 17:01:02 +02:00
jsgoldstein
4d9186a48c Add search tests (#26703) 2023-09-08 16:17:55 +02:00
Eugen Rochko
3a679844e4 Fix account_id, max_id and min_id params not working in search (#26847) 2023-09-08 14:25:00 +02:00
Renaud Chaput
e9b528eaee Use NodeJS v20 by default (#26830) 2023-09-08 13:45:34 +02:00
renovate[bot]
712d96b207 Update dependency ws to v8.14.0 (#26821)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-08 12:43:21 +02:00
renovate[bot]
d0f7d879a6 Update formatjs monorepo (#26844)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-08 12:42:55 +02:00
Claire
81caafbe84 Fix performances of profile directory (#26842) 2023-09-07 18:55:25 +02:00
renovate[bot]
858ad1f363 Update dependency core-js to v3.32.2 (#26841)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-07 16:49:31 +02:00
Claire
355e3fb529 Simplify Account.by_recent_status and Account.by_recent_sign_in scopes (#26840) 2023-09-07 15:38:11 +02:00
renovate[bot]
b9e2eb5184 Update dependency @material-design-icons/svg to v0.14.12 (#26832)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-07 14:59:42 +02:00
Eugen Rochko
9b2bc3d1de Add recent searches in web UI (#26834) 2023-09-07 14:56:19 +02:00
Eugen Rochko
a90b0056cc Fix #hashtag matching on individual components in search (#26835) 2023-09-07 12:53:41 +02:00
Colette Kerr
8a9d7aeb1e Change DCT method used for JPEG encoding to float (#26675) 2023-09-07 05:26:25 +02:00
Eugen Rochko
f3a2e15f8e Fix mute button and volume slider feeling disconnected in web UI (#26827) 2023-09-07 04:24:24 +02:00
Eugen Rochko
1f141f656d Change onboarding prompt to use full width of banner in web UI (#26829) 2023-09-07 04:24:11 +02:00
Eugen Rochko
398635c0c4 Fix paragraph margins resulting in irregular read-more cut-off in web UI (#26828) 2023-09-07 04:24:01 +02:00
renovate[bot]
9e3567bfbe Update dependency webpack to v4.47.0 (#26825)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-06 22:25:03 +02:00
Claire
1f99d86287 Fix blocked domain appears from account feed (#26823)
Co-authored-by: Jeong Arm <kjwonmail@gmail.com>
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
2023-09-06 21:04:48 +02:00
gunchleoc
14f6798836 Link to hashtag timelines from the Trending hashtags moderation interface (#26724)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-09-06 17:49:52 +02:00
Claire
475783d567 Add timezone to datetimes in e-mails (#26822) 2023-09-06 17:25:39 +02:00
Claire
9c1ef8302a Add some information about Full-text search being disabled in search popout (#26756) 2023-09-06 17:23:58 +02:00
Claire
b83e487502 Fix moderator rights inconsistencies (#26729) 2023-09-06 16:40:19 +02:00
Claire
93d051e47d Update FEDERATION.md (#26819) 2023-09-06 16:28:31 +02:00
Claire
223f9ca665 Fix crash when encountering invalid URL (#26814) 2023-09-06 12:17:51 +02:00
Claire
09ec9c6aa5 Downgrade signature verification debug logging from warn to debug (#26812) 2023-09-06 12:17:22 +02:00
Claire
d881988372 Update supported versions in SECURITY.md (#26811) 2023-09-06 10:00:25 +02:00
renovate[bot]
8c321b8c3a Update dependency pghero to v3.3.4 (#26808)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-06 09:19:43 +02:00
Claire
ec48bc3610 Do not truncate backtrace when the BACKTRACE env variable is set (#26794) 2023-09-06 09:18:10 +02:00
Eugen Rochko
d8bdba2f9f Add in: to search popout in web UI (#26807) 2023-09-06 06:46:26 +02:00
Eugen Rochko
9d290c23d2 Remove obfuscation of reply count in web UI (#26768) 2023-09-05 23:57:03 +02:00
Eugen Rochko
5d20733d8d Add infinite scrolling for search results in web UI (#26784) 2023-09-05 23:54:24 +02:00
Claire
548c032dbb Improve interaction modal error handling (#26795) 2023-09-05 23:49:48 +02:00
Claire
a1df9fdb06 Merge pull request #2397 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
2023-09-05 20:52:53 +02:00
Claire
77caba3789 Merge branch 'main' into glitch-soc/merge-upstream 2023-09-05 20:34:17 +02:00
Claire
ea7de25de0 Fix video player not being displayed in reports interface (#26801) 2023-09-05 20:05:58 +02:00
Michael Stanclift
b749de766f Migrate Dockerfile to Bookworm (#26802) 2023-09-05 18:19:59 +02:00
Claire
cab4cbfa5c Fix “Scoped order is ignored, it's forced to be batch order.” warnings (#26793) 2023-09-05 15:37:23 +02:00
Claire
e80b36d8d4 Merge pull request #2396 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
2023-09-05 10:05:52 +02:00
Claire
87b5f84625 Merge commit 'f80f426c57d5a5e1d289372ef7c323741d27c768' into glitch-soc/merge-upstream 2023-09-05 08:14:52 +02:00
Claire
f80f426c57 Bump version to v4.2.0-beta3 (#26753) 2023-09-04 21:20:20 +02:00
Stanislas Signoud
d6f5c27fa9 [Glitch] Fix light mode colors for advanced interface banner
Port a106c46478 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-04 18:31:00 +02:00
Claire
e66f961e05 Merge branch 'main' into glitch-soc/merge-upstream 2023-09-04 18:27:46 +02:00
renovate[bot]
ddeca3b37b Update babel monorepo to v7.22.15 (#26790)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-04 17:56:47 +02:00
Claire
cddef4c485 Fix language settings for users having selected the kmr language (#26787) 2023-09-04 17:56:31 +02:00
Eugen Rochko
ece1ff77d6 Add in:library syntax to search (#26760)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-09-04 17:20:35 +02:00
gunchleoc
ac3f310f4b Remove kmr from language selection (#26014) 2023-09-04 13:21:43 +02:00
renovate[bot]
3e6a6439b5 Update dependency stylelint-config-standard-scss to v11 (#26780)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-04 11:02:36 +02:00
renovate[bot]
59361dfde2 Update dependency rubocop to v1.56.2 (#26568)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-04 11:00:55 +02:00
Eugen Rochko
68b4e36c82 Fix #hashtag matching non-hashtagged posts in search (#26781) 2023-09-04 10:18:45 +02:00
Stanislas Signoud
a106c46478 Fix light mode colors for advanced interface banner (#26759) 2023-09-04 10:14:01 +02:00
Christian Schmidt
ea31929776 Fix invalid Content-Type header for WebP images (#26773) 2023-09-04 09:46:33 +02:00
renovate[bot]
1f92436745 Update DefinitelyTyped types (non-major) (#26785)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-04 09:26:33 +02:00
Eugen Rochko
e52d0494ee Fix before:, after: and during: failing when time zone not set (#26782) 2023-09-04 09:09:25 +02:00
renovate[bot]
173041f02c Update dependency typescript to v5.2.2 (#26786)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-04 09:08:53 +02:00
Plastikmensch
6b0702a3b5 Add recent to search props (#2394)
The new search popout requires the `recent` prop to be set, otherwise onboarding crashes with "recent is undefined"

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-09-03 08:46:30 +02:00
Claire
ee02b10e06 Merge pull request #2392 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes into glitch-soc
2023-09-03 08:46:08 +02:00
Claire
5c7df20c13 [Glitch] Add admin notifications for new Mastodon versions
Port front-end changes from 16681e0f20 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-02 15:20:06 +02:00
Claire
c107512fa6 Merge commit '05093266e6e3c54f9096da9cdcdafdc83703c578' into glitch-soc/merge-upstream 2023-09-02 15:02:29 +02:00
Claire
4371df7fbe [Glitch] Add authorized_fetch server setting in addition to env var
Port SCSS changes from 9e26cd5503 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-02 15:01:37 +02:00
Eugen Rochko
728eb6a153 Fix wrong color on active icons with counters in web UI (#26767) 2023-09-02 14:46:26 +02:00
Claire
4ed629cd7e Merge commit 'be991f1d18006a4820c1e9ca6625bf2bd2bfedac' into glitch-soc/merge-upstream
Conflicts:
- `app/models/form/admin_settings.rb`:
  Upstream added the notion of overriden settings, while we had extra code for
  pseudo-settings (only used to combine flavour and skin in a single select
  field).
  Ported upstream changes.
- `config/i18n-tasks.yml`:
  Upstream added `simple_form.overridden` to `ignore_unused`,
  we had `simple_form.glitch_only`.
  Added `simple_form.glitch_only` as well.
2023-09-02 14:44:47 +02:00
Claire
4adb12ca91 Fix test failures due to different default settings in glitch-soc 2023-09-02 14:24:47 +02:00
Claire
807c0591e1 [Glitch] Fix search popout including full-text search instructions when full-text search is disabled
Port 6c4c72497a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-02 13:56:20 +02:00
Santiago Kozak
64e661b930 [Glitch] Allow filter form in profiles directory to wrap
Port f1d250135c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-02 13:55:53 +02:00
Stanislas Signoud
6c05ac4068 [Glitch] Add an explanation banner on switching to single column mode
Port 40b69cc1cd to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-02 13:54:33 +02:00
Claire
ac2dae0d11 Merge commit '6c4c72497a5722870e4432ef41dd4c9ec36a8928' into glitch-soc/merge-upstream
Conflicts:
- `.github/workflows/build-releases.yml`:
  Upstream changed comments close to a line we modified to account for
  different container image repositories.
  Updated the comments as upstream did.
2023-09-02 13:50:16 +02:00
Claire
f5bd2014e2 [Glitch] Fix sign up steps progress layout in right-to-left locales
Port 21ec596dab to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-02 13:42:50 +02:00
Tim Rogers
beb5fcd0dc [Glitch] Fix bug with reblogged view on Toots only showing latest reblogging accounts
Port 74eb7dbf2d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-02 13:42:15 +02:00
Tim Rogers
871ab84854 [Glitch] Fix bug with favourited view on Toots only showing latest favouriting accounts
Port ae6cf33321 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-02 13:39:02 +02:00
Claire
ffb486648c Merge commit 'cb9f96036cf78835e22aafb30b80717b5a8b7394' into glitch-soc/merge-upstream 2023-09-02 13:34:54 +02:00
Claire
afc3b12217 Merge commit '4ad1c5aa7174e5cef4ba9608a44429916a119bee' into glitch-soc/merge-upstream
Conflicts:
- `README.md`:
  Upstream has updated their README, we have a completely different one.
  Kept ours.
- `config/initializers/content_security_policy.rb`:
  Upstream has updated their development CSPs, while we disable CSPs in
  the development environment.
  Kept our version.
2023-09-02 13:31:15 +02:00
Claire
6ee3e382df Merge commit '0719216368bf3a90fdb7ab27201a0607b63ea203' into glitch-soc/merge-upstream
Conflicts:
- `app/javascript/packs/public.jsx`:
  Some of the removed dead code was split from this code in
  `app/javascript/core/public.js` and `app/javascript/core/settings.js`.
  Removed this dead code, and removed `app/javascript/core/public.js`
  altogether.
2023-09-02 13:18:16 +02:00
Claire
fbbe9f1c12 Merge commit 'a7d96e6affd4a2da65f09f3f4ffa1b9350bb9a42' into glitch-soc/merge-upstream 2023-09-02 12:20:33 +02:00
Eugen Rochko
cb50d95c06 [Glitch] Add search options to search popout in web UI
Port bceb893159 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-02 12:09:07 +02:00
Claire
c8aa3d6d06 Merge commit 'dd72a8d28b4479afdc19ac73cac83609d85b5f9e' into glitch-soc/merge-upstream 2023-09-02 12:02:23 +02:00
Claire
3c7dbf3a16 Merge commit '5694e24bbf9afccbbf1b44d3a405a4e2bc0ff08d' into glitch-soc/merge-upstream
Conflicts:
- `.github/workflows/build-nightly.yml`:
  Upstream changed the environment variables used for defining the version
  number. This change occurs close to lines that were modified in glitch-soc
  to account for the different repositories to push to.
  Ported upstream changes.
- `.github/workflows/build-push-pr.yml`:
  Upstream changed the environment variables used for defining the version
  number. This change occurs close to lines that were modified in glitch-soc
  to account for the different repositories to push to.
  Ported upstream changes.
- `lib/mastodon/version.rb`:
  Upstream changed how the version string is built from environment variables.
  Adapted the logic to account for the `+glitch` in glitch-soc.
2023-09-02 11:56:09 +02:00
Claire
023673c0d9 [Glitch] Add data-nosnippet attribute to remote posts and local posts with noindex
Port c3a42e1280 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-02 11:49:35 +02:00
Claire
6b7c47311d Merge commit '072112867b9a3ec090ad2c92d6363b47b2265d74' into glitch-soc/merge-upstream 2023-09-02 11:41:40 +02:00
Eugen Rochko
05093266e6 Fix some video encoding failing due to uneven dimensions (#26766) 2023-09-02 09:02:44 +02:00
Claire
16681e0f20 Add admin notifications for new Mastodon versions (#26582) 2023-09-01 17:47:07 +02:00
Gabriel Simmer
be991f1d18 Move to ioredis for streaming (#26581)
Co-authored-by: Emelia Smith <ThisIsMissEm@users.noreply.github.com>
2023-09-01 17:44:28 +02:00
Claire
9e26cd5503 Add authorized_fetch server setting in addition to env var (#25798) 2023-09-01 15:41:10 +02:00
Claire
6c4c72497a Fix search popout including full-text search instructions when full-text search is disabled (#26755) 2023-09-01 15:13:27 +02:00
Claire
5c0a9aac3b Revert to using primary database in IndexingScheduler (#26754) 2023-09-01 15:09:44 +02:00
renovate[bot]
bb0edb178f Update dependency pg to v1.5.4 (#26750)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-01 10:48:49 +02:00
renovate[bot]
630e558677 Update dependency oj to v3.16.1 (#26749)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-09-01 10:17:08 +02:00
Eugen Rochko
e754083e8a Fix unmatched quotes and prefixes causing search to fail (#26701) 2023-09-01 09:43:12 +02:00
Eugen Rochko
872145d1c2 Fix not being able to invoke phrase search using unicode quotation marks (#26687) 2023-09-01 09:27:03 +02:00
Eugen Rochko
0008458128 Fix search queries with slash causing or-condition (#26699) 2023-08-31 19:04:44 +02:00
Claire
9bb2fb6b14 Change importers to avoid a few inefficiencies (#26721) 2023-08-31 19:04:27 +02:00
Eugen Rochko
ecd76fa413 Fix videos not playing in some browsers due to unsupported color space (#26745) 2023-08-31 17:21:06 +02:00
Claire
1471be8225 Fix AddUniqueIndexOnPreviewCardsStatuses migration requiring PostgreSQL 12+ in some cases (#26737) 2023-08-31 15:47:30 +02:00
Claire
6b58cfd8dd Fix searching by username by reverting account verbatim tokenizer to standard (#26739) 2023-08-31 15:35:58 +02:00
Renaud Chaput
cffc5d2b01 Fix comment in build image workflow (#26740) 2023-08-31 14:59:50 +02:00
Santiago Kozak
f1d250135c Allow filter form in profiles directory to wrap (#26682) 2023-08-31 14:15:58 +02:00
Daniel M Brasil
ccca542db1 Fix /api/v1/timelines/tag/:hashtag allowing for unauthenticated access when public preview is disabled (#26237) 2023-08-31 13:53:24 +02:00
Tyler Deitz
336ec503c2 Add avatar image to webfinger responses (#26558) 2023-08-31 13:46:27 +02:00
Stanislas Signoud
40b69cc1cd Add an explanation banner on switching to single column mode (#26019) 2023-08-31 12:18:46 +02:00
gunchleoc
cb9f96036c Add suggestion for secure cyphers to nginx.conf (#26349) 2023-08-31 12:17:10 +02:00
renovate[bot]
430eac3eb1 Update dependency @babel/preset-env to v7.22.14 (#26732)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-31 10:23:24 +02:00
renovate[bot]
ef9a85a2d8 Update dependency webpack-bundle-analyzer to v4.9.1 (#26733)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-31 09:52:23 +02:00
renovate[bot]
15949e42c2 Update dependency glob to v10.3.4 (#26734)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-31 09:49:34 +02:00
Claire
5c38c3a9a1 Change text extraction in PlainTextFormatter to be faster (#26727) 2023-08-30 17:36:16 +02:00
Claire
21ec596dab Fix sign up steps progress layout in right-to-left locales (#26728) 2023-08-30 16:29:52 +02:00
Eugen Rochko
bba76e7267 Change language: to attempt to match to a known value in search (#26663) 2023-08-30 16:07:26 +02:00
renovate[bot]
0e1bff178e Update dependency chewy to v7.3.4 (#26717)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-30 09:45:13 +02:00
renovate[bot]
24deaf2e4a Update dependency postcss to v8.4.29 (#26720)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-30 09:44:14 +02:00
renovate[bot]
168688ef1c Update dependency webmock to v3.19.1 (#26722)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-30 09:34:07 +02:00
Claire
9e77ab7db2 Change private statuses index to index without crutches (#26713) 2023-08-29 17:51:13 +02:00
Tim Rogers
74eb7dbf2d Fix bug with reblogged view on Toots only showing latest reblogging accounts (#26574) 2023-08-29 14:42:20 +02:00
Claire
c0605747ad Fix N+1 in tootctl search deploy (#26710) 2023-08-29 14:06:22 +02:00
Tim Rogers
ae6cf33321 Fix bug with favourited view on Toots only showing latest favouriting accounts (#26577) 2023-08-29 10:56:19 +02:00
renovate[bot]
4ad1c5aa71 Update dependency aws-sdk-s3 to v1.133.0 (#26616)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-29 10:53:01 +02:00
renovate[bot]
a67cf439ee Update dependency axios to v1.5.0 (#26680)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-29 10:50:27 +02:00
Claire
25bf640629 Add debug logging on signature verification failure (#26637) 2023-08-29 10:29:07 +02:00
Christian Schmidt
075cc8e8a6 Improve Codespaces port forwarding (#26400) 2023-08-29 10:20:36 +02:00
Christian Schmidt
286a21afdc Support webpacker live-reloading on Docker (#26419) 2023-08-29 10:17:57 +02:00
Christian Schmidt
0719216368 Remove dead code from public.jsx (#26547) 2023-08-29 10:16:18 +02:00
Lukas Martini
a7d96e6aff Improve error messages when DeepL quota is exceeded (#26704) 2023-08-29 09:14:44 +02:00
github-actions[bot]
786e586686 New Crowdin translations (#2388)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-08-29 08:28:45 +02:00
Eugen Rochko
10b06436d1 Fix colors and typography on hashtag bar in web UI (#26666) 2023-08-28 19:49:38 +02:00
Eugen Rochko
01b87a1632 Change video compression parameters (#26631) 2023-08-28 19:40:08 +02:00
renovate[bot]
dd72a8d28b Update dependency stoplight to v3.0.2 (#26698)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-28 17:10:58 +02:00
Eugen Rochko
2304cc6456 Fix bad search type heuristic (#26673) 2023-08-28 17:08:37 +02:00
Claire
0cce7fb617 Fix incorrect call to PublicStatusesIndex.import (#26697) 2023-08-28 15:04:57 +02:00
Eugen Rochko
bceb893159 Add search options to search popout in web UI (#26662) 2023-08-28 13:18:39 +02:00
Eugen Rochko
67166de865 Add from:me syntax to search (#26660) 2023-08-28 12:43:00 +02:00
renovate[bot]
9d9de8d219 Update dependency @testing-library/jest-dom to v6 (#26479)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Renaud Chaput <renchap@gmail.com>
2023-08-28 12:19:42 +02:00
Eugen Rochko
7bd5ebb0c5 Fix multiple issues with status index mappings (#26686) 2023-08-28 11:36:17 +02:00
renovate[bot]
4ea5db90da Update DefinitelyTyped types (non-major) (#26693)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-28 11:04:06 +02:00
renovate[bot]
b42fe5e338 Update dependency haml_lint to v0.50.0 (#26665)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-28 10:32:13 +02:00
Eugen Rochko
822a35b9d5 Fix not being able to negate prefix clauses in search (#26672) 2023-08-28 10:31:51 +02:00
renovate[bot]
fc14d1f3b0 Update eslint (non-major) (#26694)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-28 10:20:02 +02:00
Eugen Rochko
e263db276f Change indexing jobs to use database replica (#26692) 2023-08-27 22:38:01 +02:00
Eugen Rochko
5694e24bbf Fix unnecessary condition causing seqscan when indexing (#26689) 2023-08-27 22:37:35 +02:00
Eugen Rochko
f8d2fea2e6 Change queue of job when opting into search from default to pull (#26688) 2023-08-27 18:58:20 +02:00
github-actions[bot]
efb1888320 New Crowdin translations (#2376)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-08-26 22:53:46 +02:00
Claire
925c16adea Fix nightly build version (#26676) 2023-08-26 17:34:36 +02:00
Eugen Rochko
71641766f2 Fix toast saying "published" instead of "saved" after editing post in web UI (#26664) 2023-08-25 22:03:04 +02:00
Claire
f39847476c Change the pre-release versioning scheme and associated environment variables (#26653) 2023-08-25 18:26:44 +02:00
Claire
072112867b Fix dashboard check for Elasticsearch suggested command including incorrect names (#26658) 2023-08-25 18:17:22 +02:00
jsgoldstein
8e8747c564 Update ordering to use id from body of document instead of deprecated _id (#26659) 2023-08-25 18:16:08 +02:00
renovate[bot]
e4c0ce18a3 Update dependency immutable to v4.3.4 (#26655)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-25 17:02:33 +02:00
Claire
82ec6f162b Fix statuses search Elasticsearch query (#26657) 2023-08-25 17:01:56 +02:00
Claire
f2ec2876a4 Add Elasticsearch/OpenSearch version to “Software” in admin dashboard (#26652) 2023-08-25 12:02:09 +02:00
Claire
e3825a13c1 Add PublicStatusesCheck to Elasticsearch index check on admin dashboard (#26650) 2023-08-25 12:01:55 +02:00
Claire
c3a42e1280 Add data-nosnippet attribute to remote posts and local posts with noindex (#26648) 2023-08-25 11:31:20 +02:00
renovate[bot]
c66f756522 Update babel monorepo to v7.22.11 (#26640)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-25 10:08:44 +02:00
Claire
d847c2060e Merge pull request #2383 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
2023-08-25 08:42:16 +02:00
Claire
685270f3f7 [Glitch] Fix clicking “Explore” or “Live feeds” column headers to scroll in advanced mode
Port e90649b064 to glitch-soc

Co-authored-by: Plastikmensch <Plastikmensch@users.noreply.github.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-24 22:00:27 +02:00
Claire
66e82cb8e1 [Glitch] Fix selecting domains to forward reports to not passing the information correctly
Port b2ac93dd73 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-24 22:00:00 +02:00
Claire
941a9df28a Merge commit '96bcee66fba582666259d1d7785c3a7f2a72b8aa' into glitch-soc/merge-upstream
Conflicts:
- `.github/workflows/build-nightly.yml`:
  Upstream changed how the nightly builds are versioned, the conflict
  is because glitch-soc modified adjacent lines relative to the docker
  repositories the images are pushed to.
  Applied upstream's changes.
- `app/views/settings/preferences/notifications/show.html.haml`:
  Upstream moved some settings around. Glitch-soc had more settings.
  Applied upstream's changes, moving glitch-soc's extra settings
  accordingly.
2023-08-24 21:56:00 +02:00
Claire
80f89f9cf2 Merge commit '9974163776b3e65e7cfa41e6293876909a1635b7' into glitch-soc/merge-upstream
Conflicts:
- `app/views/layouts/admin.html.haml`:
  Upstream moved `javascript_pack_tag` calls around, but we don't use them in
  the same way in glitch-soc due to the different theming system.
  Kept glitch-soc's files unchanged.
2023-08-24 21:52:19 +02:00
Antonin Del Fabbro
406f3942a9 [Glitch] Change opacity of the delete icon in the search field to be more visible
Port 9a8190da4a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-24 21:51:13 +02:00
Claire
32e67e78a3 Merge commit 'e3fd07197379f1ac7fd4a761b3ff55effa1a2a6c' into glitch-soc/merge-upstream 2023-08-24 21:50:14 +02:00
Christian Schmidt
def58f8ac3 [Glitch] Fix some React warnings
Port 152b10b624 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-24 21:49:26 +02:00
Claire
b6b68b44a1 Merge commit 'b91724fb9d0839365391310e20c2589ff6062d4f' into glitch-soc/merge-upstream
Conflicts:
- `Vagrantfile`:
  Upstream bumped a bunch of values, including one that was already bumped by
  glitch-soc.
  Took upstream's version.
- `lib/paperclip/transcoder.rb`:
  glitch-soc already had a partial fix for this.
  Took upstream's version.
2023-08-24 21:46:17 +02:00
Claire
d65aa507ca Merge commit 'bd023a2637ce4df2102c4f760ca1d05ff2302d9f' into glitch-soc/merge-upstream 2023-08-24 21:38:59 +02:00
Claire
bdce78187c [Glitch] Fix layout of the closed registrations modal
Port fe31571965 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-24 21:38:08 +02:00
Christian Schmidt
9b094f3653 [Glitch] Fix profile picture preview
Port SCSS changes from bb23116e8d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-24 21:36:42 +02:00
Claire
296b3d1560 Merge commit 'dc09c10fa8cc9230bf14e48d790c8f0c26043f8f' into glitch-soc/merge-upstream
Conflicts:
- `.rubocop_todo.yml`:
  Upstream re-generated the file, while glitch-soc has a specific ignore
  for some file.
  Updated the file as upstream did and kept our extra ignore.
- `config/webpack/shared.js`:
  Upstream added a plugin, but our files are pretty different.
  Added the plugin as well.
- `spec/helpers/application_helper_spec.rb`:
  Upstream refactored tests, but part of them were different because
  of glitch-soc's theming system.
  Applied the refactoring to glitch-soc's change.
2023-08-24 21:26:27 +02:00
Claire
389b7d23db Fix changelog wording and missing items (#26638) 2023-08-24 21:07:39 +02:00
Claire
88ff45a3b2 Merge commit 'facfec1ba36cee27f232ebff90b990933719235a' into glitch-soc/merge-upstream 2023-08-24 21:03:56 +02:00
Claire
fbfc4145fd Merge commit '1cdcd9dc08c91321f80ffe4822f6a3da15abeb2c' into glitch-soc/merge-upstream
Conflicts:
- `app/javascript/packs/public.jsx`:
  Upstream updated code that we actually moved to `app/javascript/core/settings.js`.
  Applied the changes there.
2023-08-24 21:01:19 +02:00
Claire
1b5d3fdc5e Merge commit 'ee702e36e58d638bcf75b2eae2ca86499693465e' into glitch-soc/merge-upstream 2023-08-24 20:55:28 +02:00
Christian Schmidt
e67c28a5fe [Glitch] Remove redundant ready() wrapper
Port bb51c0676d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-24 20:35:22 +02:00
Claire
7b09f585fa Merge commit 'bb51c0676d0cf27babc2c01ee337ca5fd24ae37c' into glitch-soc/merge-upstream
Conflicts:
- `app/javascript/packs/public.jsx`:
  Upstream refactored slightly (but touching almost all the lines in the code),
  glitch-soc had moved a few of the code to another file.
  Refactored as upstream did.
2023-08-24 20:34:14 +02:00
jsgoldstein
30c191aaa0 Add new public status index (#26344)
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-08-24 16:40:04 +02:00
Claire
96bcee66fb Change nightlies versioning from v4.2.0+2023-08-23 to v4.2.0-nightly.2023-08-23 (#26626) 2023-08-24 14:43:44 +02:00
Claire
163b004bb1 Change admin e-mail notification settins to be their own settings group (#26596) 2023-08-24 14:43:00 +02:00
Claire
e90649b064 Fix clicking “Explore” or “Live feeds” column headers to scroll in advanced mode (#26633)
Co-authored-by: Plastikmensch <Plastikmensch@users.noreply.github.com>
2023-08-24 14:10:48 +02:00
Claire
b2ac93dd73 Fix selecting domains to forward reports to not passing the information correctly (#26636) 2023-08-24 14:06:27 +02:00
Jaehong Kang
2dbbeedc94 Fix: Workaround to load MASTODON_VERSION_* in Docker. (#26591)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-08-24 13:07:27 +02:00
renovate[bot]
24ea6f851f Update dependency redis to v4.6.8 (#26630)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-24 09:59:13 +02:00
Matt Jankowski
9974163776 Consolidate inclusion of admin js pack link (#26628) 2023-08-24 09:56:23 +02:00
renovate[bot]
e3fd071973 Update dependency rspec-sidekiq to v4 (#26627)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-24 09:03:40 +02:00
Claire
8eb09466aa Merge pull request #2380 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 1cb978bcc3
2023-08-23 16:56:19 +02:00
Antonin Del Fabbro
9a8190da4a Change opacity of the delete icon in the search field to be more visible (#26449) 2023-08-23 15:51:07 +02:00
Daniel M Brasil
f337008819 Fix timeout on invalid set of exclusionary parameters in /api/v1/timelines/public (#26239) 2023-08-23 15:50:23 +02:00
jsgoldstein
b91724fb9d Add elastic search installation into Vagrantfile (#26512) 2023-08-23 15:46:14 +02:00
renovate[bot]
34f5b90dc7 Update dependency sass to v1.66.1 (#26534)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-23 15:45:56 +02:00
renovate[bot]
060b554a9d Update dependency oj to v3.16.0 (#26520)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-23 15:45:38 +02:00
renovate[bot]
de8c2427a5 Update dependency immutable to v4.3.3 (#26622)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-23 15:45:21 +02:00
Claire
613cfd625c Change hashtag bar tags to be de-emphasized (#26606) 2023-08-23 15:44:52 +02:00
Christian Schmidt
152b10b624 Fix some React warnings (#26609) 2023-08-23 15:43:41 +02:00
Renaud Chaput
44ba785242 Change the hashtag bar to be hidden when there is a CW and the post is not expanded (#26615) 2023-08-23 15:40:31 +02:00
jsgoldstein
85057865b4 Update Account Search to prioritize username over display name (#26623) 2023-08-23 15:40:09 +02:00
yufushiro
3aac12981c Fix unexpected audio stream transcoding when uploaded video is eligible to passthrough (#26608)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-08-23 08:44:56 +02:00
Robert R George
cf6f70799b Add support for federating memorial attribute (#26583) 2023-08-23 08:27:24 +02:00
renovate[bot]
ea1a221e2d Update dependency react-textarea-autosize to v8.5.3 (#26607)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-23 08:26:30 +02:00
renovate[bot]
74b8b8ea14 Update dependency rails to v7.0.7.2 (#26612)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-23 08:22:48 +02:00
Renaud Chaput
58acaa9ae6 Better hashtag normalization when processing a post (#26614) 2023-08-23 08:18:07 +02:00
Claire
452f15be78 Move glitch-soc's “Hide followers count” setting to “Show followers count” under “Privacy and reach” tab 2023-08-22 19:50:37 +02:00
Claire
c053bfc45a [Glitch] Fix “legal” report category not showing up in moderation interface
Port 0446394465 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-22 18:54:22 +02:00
Claire
bd023a2637 Fix admin dashboard check when using Elasticsearch with ES_PREFIX (#26605) 2023-08-22 18:51:32 +02:00
Claire
10404aece8 Merge commit '1cb978bcc3d291a045f367e072ca0af1a1c4dbbc' into glitch-soc/merge-upstream 2023-08-22 18:50:14 +02:00
Claire
245fe855be [Glitch] Fix unfollow icon styling in advanced column
Port d9c21293aa to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-22 18:48:23 +02:00
Claire
2126812f65 Merge commit 'd9c21293aa6e105cedeff6b5e469af40a20909d9' into glitch-soc/merge-upstream
Conflicts:
- `app/views/settings/preferences/other/show.html.haml`:
  Upstream moved some settings, where glitch-soc has an extra setting.
  Ported upstream changes, moving the same settings as them.
2023-08-22 18:31:28 +02:00
Claire
128daefc7a Remove leftover .orig files that were mistakenly included (#2379) 2023-08-22 18:24:03 +02:00
gunchleoc
25dc01660d Add Kalmyk to languages dropdown (#26013) 2023-08-22 17:50:04 +02:00
gunchleoc
c01ecd0879 Add cherokee to languages dropdown (#26012) 2023-08-22 16:53:27 +02:00
renovate[bot]
dc09c10fa8 Update dependency mime-types to v3.5.1 (#26595)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-22 16:47:40 +02:00
Renaud Chaput
3249c06c73 Update SECURITY.md to indicate issues can be reported on Github (#26599) 2023-08-22 16:47:19 +02:00
Renaud Chaput
bb2db2aec0 Add circular-dependency-plugin to detect any circular deps issues (#26600) 2023-08-22 13:24:16 +02:00
Claire
4f1d22628d Merge pull request #2378 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 3a8370e1f4
2023-08-22 12:55:19 +02:00
Nick Schonning
b970ed6098 Update rubocop and rubocop-rspec (#26329) 2023-08-22 09:31:40 +02:00
Claire
fe31571965 Fix layout of the closed registrations modal (#26593) 2023-08-22 09:11:59 +02:00
mogaminsk
724d773844 [Glitch] Fix "Create Account" button in interaction modal
Port a664e15702 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-21 21:08:56 +02:00
Claire
7e25e311d5 Merge commit '3a8370e1f459f5cf9695a610102ae6e53df36714' into glitch-soc/merge-upstream 2023-08-21 21:07:39 +02:00
Claire
facfec1ba3 Bump version to v4.2.0-beta2 (#26579) 2023-08-21 20:18:49 +02:00
Renaud Chaput
061fd66ee6 Remove hashtags from the last line of a status if it only contains hashtags (#26499) 2023-08-21 19:39:01 +02:00
Claire
ac0eb0533e Add Elasticsearch cluster health check and indexes mismatch check to dashboard (#26448) 2023-08-21 16:50:22 +02:00
Claire
9ed0c91a37 Add auto-refresh of accounts we get new messages/edits of (#26510) 2023-08-21 16:09:26 +02:00
Claire
191d302b7f Refactor Api::V1::ProfilesController into two separate controllers (#26573) 2023-08-21 15:47:09 +02:00
renovate[bot]
1cdcd9dc08 Update eslint (non-major) (#26567)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-21 10:13:21 +02:00
renovate[bot]
d3b4422b94 Update dependency core-js to v3.32.1 (#26548)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-21 09:06:33 +02:00
Christian Schmidt
872fe2d62d Do not start LibreTranslate and Elasticsearch on GitHub Codespaces (#26382) 2023-08-21 08:51:37 +02:00
Daniel M Brasil
d24a87ce4f Add ability to delete avatar or header picture via the API (#25124)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-08-21 08:44:35 +02:00
Christian Schmidt
bb23116e8d Fix profile picture preview (#26538) 2023-08-18 18:24:32 +02:00
Claire
ee702e36e5 Change follow recommendation materialized view to be faster in most cases (#26545)
Co-authored-by: Renaud Chaput <renchap@gmail.com>
2023-08-18 18:20:55 +02:00
Claire
e7bea8f004 Fix already initialized constant warning (#26542) 2023-08-18 16:06:46 +02:00
Emelia Smith
6375e390af Fix: support both DATABASE_URL and DB_PASS (#26295) 2023-08-18 15:05:35 +02:00
Christian Schmidt
bb51c0676d Remove redundant ready() wrapper (#26533) 2023-08-18 12:06:08 +02:00
renovate[bot]
1cb978bcc3 Update dependency @material-design-icons/svg to v0.14.11 (#26536)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-18 11:10:05 +02:00
renovate[bot]
581ebf2bb5 Update dependency puma to v6.3.1 (#26537)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-18 08:33:33 +02:00
Nicolai Søborg
13ffe91c81 Fix frame_rate for videos where ffprobe reports 0/0 (#26500) 2023-08-18 08:32:47 +02:00
Renaud Chaput
b95867ad1f Allow setting a custom HTTP method in CacheBuster (#26528)
Co-authored-by: Jorijn Schrijvershof <jorijn@jorijn.com>
2023-08-18 08:18:40 +02:00
renovate[bot]
b5acf13886 Update dependency pg to v8.11.3 (#26519)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-17 16:43:37 +02:00
Claire
60b9fa641d Fix cached posts including stale stats (#26409) 2023-08-17 16:11:48 +02:00
Claire
3ed2bf92d0 Fix case-insensitive comparison of hashtags to do case-folding (#26525) 2023-08-17 12:49:52 +02:00
Claire
cc4560d95b Change “privacy and reach” settings so that unchecking boxes always increase privacy and checking them always increase reach (#26508) 2023-08-17 09:13:26 +02:00
Claire
0446394465 Fix “legal” report category not showing up in moderation interface (#26509) 2023-08-16 16:38:33 +02:00
Claire
f0862bcf98 Fix hashtag bar sometimes including tags that appear in the post's body (#26506) 2023-08-16 11:47:59 +02:00
renovate[bot]
26eaf058e2 Update dependency postcss to v8.4.28 (#26502)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-16 09:08:57 +02:00
Santiago Kozak
85ecadb630 Fix hashtag bar display when status is in a thread (#26497) 2023-08-16 09:06:04 +02:00
Claire
df6e719898 Add display of out-of-band hashtags in the web interface (#26492)
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
2023-08-14 23:42:30 +02:00
Claire
d9c21293aa Fix unfollow icon styling in advanced column (#26482) 2023-08-14 19:02:47 +02:00
Claire
dd049fc37a Fix ES_PRESET not being applied to Chewy's internal index (#26489) 2023-08-14 19:00:56 +02:00
Claire
90ec88d58b Add support for indexable attribute on remote actors (#26485)
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
2023-08-14 18:54:51 +02:00
Claire
fc5ab2dc83 Add privacy tab in profile settings (#26484)
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
2023-08-14 18:52:45 +02:00
Claire
3a8370e1f4 Fix repo:changelog task matching strings that are not Pull Request identifiers (#26280) 2023-08-14 18:47:43 +02:00
Claire
f5778caa3a Add ES_PRESET option to customize numbers of shards and replicas (#26483)
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
2023-08-14 17:46:16 +02:00
github-actions[bot]
c452ccd913 New Crowdin Translations (automated) (#26444)
Co-authored-by: GitHub Actions <noreply@github.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-08-14 14:54:31 +02:00
Renaud Chaput
9262cfc57f Fix lint:json not processing json5 extension (#26481) 2023-08-14 14:53:13 +02:00
renovate[bot]
07f43daadc Update dependency nokogiri to v1.15.4 (#26476)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-14 14:10:46 +02:00
renovate[bot]
c65032fb11 Update dependency autoprefixer to v10.4.15 (#26473)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-14 13:39:28 +02:00
renovate[bot]
273730c4e8 Update dependency faker to v3.2.1 (#26474)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-14 13:38:41 +02:00
HonkingGoose
c48506d8d4 Improve Renovate configuration (#26306) 2023-08-14 12:08:43 +02:00
mogaminsk
a664e15702 Fix "Create Account" button in interaction modal (#26459) 2023-08-14 12:04:04 +02:00
Renaud Chaput
1eac3a60de Upgrade @types/react (#26457) 2023-08-14 09:40:07 +02:00
Claire
8c7f3c5332 Remove old non-unique index on preview_cards statuses join table (#26447) 2023-08-14 09:38:08 +02:00
Claire
86ba8d3e14 Merge pull request #2368 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 496eb6f7a4
2023-08-14 08:39:25 +02:00
Claire
987f190839 [Glitch] Fix reply not preserving the language from the replied-to post
Port 34f3001278 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-13 19:24:50 +02:00
Claire
92df185be7 Merge commit '496eb6f7a4fa7de54f26da9642a76e6884648102' into glitch-soc/merge-upstream 2023-08-13 19:23:22 +02:00
Claire
e28727aab3 [Glitch] Change the hashtag column to not display the hashtag header on pinned columns
Port 4caa9f0e69 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-13 19:13:11 +02:00
Claire
7c4b115e7d [Glitch] Fix interaction modal layout
Port cd6f2b3cbc to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-13 19:12:42 +02:00
Eugen Rochko
0f8ddf367c [Glitch] Change header of hashtag timelines in web UI
Port e325443b02 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-13 19:11:52 +02:00
Claire
d9451feef0 [Glitch] Fix report modal secondary buttons style
Port 79936c584f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-13 19:08:08 +02:00
Claire
2f50b77ae8 [Glitch] Fix confirmation when closing media edition modal with unsaved changes
Port b59053ff8c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-13 19:06:02 +02:00
Trevor Wolf
f0ad745506 [Glitch] Fix light theme select option for hashtags
Port 93372fee1e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-13 19:05:24 +02:00
Eugen Rochko
03ae73bdc5 [Glitch] Change design of hidden media overlay (again) in web UI
Port 04e7efac3f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-13 19:04:07 +02:00
Eugen Rochko
8247df3a8d [Glitch] Change reblogs to be excluded from "Posts and replies" tab in web UI
Port 9d719bcd85 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-13 19:02:17 +02:00
CSDUMMI
64fc66d3db [Glitch] Add direct link to the Single-Sign On provider if there is only one sign up method available (#26083)
Port 120f5802c0 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-13 19:00:25 +02:00
Christian Schmidt
1461cc53ed [Glitch] Add alt text for preview card thumbnails
Port 8da99ffb0d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-13 18:56:58 +02:00
Claire
6530f9709c Merge commit '121443c0fca383268b8022c048dd137994785aff' into glitch-soc/main
Conflicts:
- `.rubocop_todo.yml`:
  Upstream regenerated this file, glitch-soc had a specific ignore.
2023-08-13 18:47:15 +02:00
Jeong Arm
496eb6f7a4 Add missing instances option to tootctl search deploy (#26461) 2023-08-13 02:06:04 +02:00
Claire
678fa1e6af Merge pull request #2366 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 3a4d3e9d4b
2023-08-12 21:27:29 +02:00
Eugen Rochko
57a4e7927a [Glitch] Add client-side timeout on resend confirmation button
Port 2f932cb2bb to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-12 09:38:57 +02:00
Claire
ea8802a05a Merge commit '3a4d3e9d4b573c400eec1743471d54cdccae50a5' into glitch-soc/merge-upstream 2023-08-12 09:36:38 +02:00
Claire
150cfcf3ae Fix border-radius on “sensitive media” overlay for full-width media (#2364) 2023-08-12 09:30:27 +02:00
Claire
0dfc6ea3ef Merge pull request #2365 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream up to 425d77f812
2023-08-12 09:30:08 +02:00
Claire
34f3001278 Fix reply not preserving the language from the replied-to post (#26452) 2023-08-12 00:06:37 +02:00
Claire
882e770400 [Glitch] Change interaction modal input to disable browser spell-checking, capitalization and autocomplete
Port 71fd70335a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-11 22:26:27 +02:00
Claire
44a5f1b64a Merge commit '425d77f8124a50fc033e8fb3bdf7b89a6a25f4fa' into glitch-soc/merge-upstream
Conflicts:
- `.rubocop_todo.yml`:
  Upstream regenerated this file, glitch-soc had a specific ignore.
- `README.md`:
  Upstream updated its README, but glitch-soc has a completely different one.
  Kept glitch-soc's README
2023-08-11 22:15:41 +02:00
github-actions[bot]
3378bdb01f New Crowdin translations (#2354)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-08-11 22:03:11 +02:00
Renaud Chaput
121443c0fc Upgrade JS dev dependencies (#26442) 2023-08-11 09:59:57 +02:00
Nick Schonning
9dff838edc Merge duplicate Gemfile groups (#26441) 2023-08-10 21:51:48 +02:00
Claire
4bc0dd751c Add S3_DISABLE_CHECKSUM_MODE environment variable for compatibility with some S3-compatible providers (#26435) 2023-08-10 14:15:18 +02:00
renovate[bot]
3dd3c50811 Update dependency pg-connection-string to v2.6.2 (#26427)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-10 11:07:33 +02:00
renovate[bot]
27d8e9be4a Update dependency eslint-import-resolver-typescript to v3.6.0 (#26429)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-10 11:07:15 +02:00
renovate[bot]
7572fa21a3 Update babel monorepo to v7.22.10 (#26421)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-10 11:01:40 +02:00
renovate[bot]
05022c9218 Update dependency pg to v8.11.2 (#26426)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-10 10:59:42 +02:00
renovate[bot]
700f948fc9 Update dependency @rails/ujs to v7.0.7 (#26422)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-10 10:44:14 +02:00
renovate[bot]
1a308d1a22 Update dependency rails to v7.0.7 (#26428)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-10 10:44:00 +02:00
renovate[bot]
54dfacafcb Update dependency regenerator-runtime to ^0.14.0 (#26432)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-10 10:39:47 +02:00
renovate[bot]
43741ba2b9 Update dependency mime-types to '~> 3.5.0' (#26431)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-10 10:24:34 +02:00
renovate[bot]
ba318a42fe Update dependency sass to v1.65.1 (#26433)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-10 10:23:37 +02:00
renovate[bot]
c645308c6e Update dependency eslint-config-prettier to v9 (#26434)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-10 10:23:00 +02:00
renovate[bot]
65f56bd849 Update dependency haml_lint to v0.49.3 (#26424)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-10 09:50:22 +02:00
renovate[bot]
74c422ad0a Update dependency immutable to v4.3.2 (#26425)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-10 09:48:41 +02:00
renovate[bot]
426ca4f76c Update dependency aws-sdk-s3 to v1.132.1 (#26423)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-10 09:47:55 +02:00
github-actions[bot]
8cbf4a5296 New Crowdin Translations (automated) (#26373)
Co-authored-by: GitHub Actions <noreply@github.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-08-10 09:47:42 +02:00
renovate[bot]
26fa4a6e82 Update eslint (non-major) (#26323)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-09 22:21:41 +02:00
renovate[bot]
59678c6d5d Update dependency sass to v1.64.2 (#26315)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-09 22:19:12 +02:00
Claire
4caa9f0e69 Change the hashtag column to not display the hashtag header on pinned columns (#26416) 2023-08-09 16:32:40 +02:00
Matt Jankowski
d9a9323968 Avoid connecting to a running ES instance in ES search check spec (#26413) 2023-08-09 13:15:04 +02:00
Foritus
405f141fe0 Change: Block GPTBot (#26396) 2023-08-09 11:58:46 +02:00
Matt Jankowski
2c88364222 Restore console behavior in test env (#26401) 2023-08-09 11:26:56 +02:00
Matt Jankowski
271d384fd0 Use migration classes in migrations where current definition conflicts with older (#26390) 2023-08-09 11:26:42 +02:00
Claire
b12d75ef4f Fix blocking subdomains of an already-blocked domain (#26392) 2023-08-09 09:39:36 +02:00
Claire
dab54ccbba Prepare v4.2.0-beta1 (#26339) 2023-08-08 16:12:12 +02:00
Claire
8b37dd2c86 Fix Content Security Policy sometimes unnecessarily allowing hCaptcha scripts (#26388) 2023-08-08 15:41:38 +02:00
Claire
2c204d904b Change DB_REPLICA_* environment variables to REPLICA_DB_* (#26386) 2023-08-08 13:59:40 +02:00
Claire
4773d7b9aa Fix preview_cards_statuses_pkey not being reindexed concurrently (#26384) 2023-08-08 11:41:53 +02:00
Eugen Rochko
0e2a4d3897 Fix adding column with default value taking longer on Postgres >= 11 (#26375) 2023-08-08 09:09:58 +02:00
Eugen Rochko
72423bc8f6 Change account search tokenizer and queries (#26378) 2023-08-08 09:09:14 +02:00
Matt Jankowski
60fbb0fe91 Omniauth 2.0 version bump (#24209) 2023-08-08 08:57:18 +02:00
Claire
30c64bf616 Fix list import concurrently creating lists of the same name (#26372) 2023-08-07 17:59:20 +02:00
Claire
cd6f2b3cbc Fix interaction modal layout (#26368) 2023-08-07 17:58:29 +02:00
Matt Jankowski
c363978782 Spec media attachment speedups (#25416) 2023-08-07 17:58:12 +02:00
Eashwar Ranganathan
11f5a8e54b Make mastodon-streaming systemd unit templated (#24751)
Co-authored-by: Emelia Smith <ThisIsMissEm@users.noreply.github.com>
2023-08-07 15:41:34 +02:00
github-actions[bot]
d2dbaba407 New Crowdin Translations (automated) (#26209)
Co-authored-by: GitHub Actions <noreply@github.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-08-07 13:37:54 +02:00
Eugen Rochko
e325443b02 Change header of hashtag timelines in web UI (#26362) 2023-08-07 09:46:11 +02:00
Claire
79936c584f Fix report modal secondary buttons style (#26341) 2023-08-04 16:25:44 +02:00
Claire
d5bee37c57 Fix missing cached preview cards attributes (#26343) 2023-08-04 16:13:47 +02:00
Emelia Smith
65096c1ccd Change streaming /metrics to include additional metrics (#26299) 2023-08-04 16:11:30 +02:00
Claire
b59053ff8c Fix confirmation when closing media edition modal with unsaved changes (#26342) 2023-08-04 15:48:29 +02:00
Trevor Wolf
93372fee1e Fix light theme select option for hashtags (#26311) 2023-08-04 09:41:17 +02:00
Claire
9405e9af58 Fix incorrect model annotation for List#exclusive (#26313) 2023-08-04 09:00:31 +02:00
Eugen Rochko
04e7efac3f Change design of hidden media overlay (again) in web UI (#26330) 2023-08-03 20:39:45 +02:00
Eugen Rochko
9d719bcd85 Change reblogs to be excluded from "Posts and replies" tab in web UI (#26302) 2023-08-03 20:39:33 +02:00
Claire
12c43e4ab5 Re-add StatsD support through the nsa gem (#26310) 2023-08-03 20:28:14 +02:00
CSDUMMI
120f5802c0 Add direct link to the Single-Sign On provider if there is only one sign up method available (#26083) 2023-08-03 16:43:15 +02:00
renovate[bot]
a5768d3ea6 Update dependency rack-attack to v6.7.0 (#26319)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-03 16:29:18 +02:00
renovate[bot]
912bc4655c Update dependency selenium-webdriver to v4.10.0 (#26322)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-03 16:17:22 +02:00
Claire
3105fef21a Rename “read” database to “replica” for consistency (#26326) 2023-08-03 16:17:09 +02:00
renovate[bot]
51cee42117 Update dependency lograge to v0.13.0 (#26318)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-03 16:11:37 +02:00
renovate[bot]
f6e4137d7c Update dependency core-js to v3.32.0 (#26317)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-03 16:10:55 +02:00
renovate[bot]
a615c0cfc2 Update dependency test-prof to v1.2.2 (#26316)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-03 16:10:41 +02:00
renovate[bot]
670dae371a Update dependency react-redux to v8.1.2 (#26314)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-03 16:10:23 +02:00
renovate[bot]
091c2f2e44 Update dependency rack to v2.2.8 (#26312)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-03 16:10:10 +02:00
Christian Schmidt
8da99ffb0d Add alt text for preview card thumbnails (#26184) 2023-08-03 15:41:51 +02:00
renovate[bot]
ca19ea30d4 Update dependency aws-sdk-s3 to v1.132.0 (#26227)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-08-03 13:53:25 +02:00
Daniel M Brasil
3a4d3e9d4b Add GET /api/v1/instance/languages to REST API (#24443)
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-08-03 11:25:47 +02:00
Claire
6b896b20cc Add primary key to preview_cards_statuses join table (includes deduplication migration) (#25243) 2023-08-03 11:12:52 +02:00
Eugen Rochko
a0fad5c8bb Change indexing frequency from 5 minutes to 1 minute, add locks to schedulers (#26304) 2023-08-03 11:04:05 +02:00
Val Lorentz
f55f0ab0c3 Allow spaces around commas in ALLOWED_PRIVATE_ADDRESSES (#26297) 2023-08-03 10:05:35 +02:00
Eugen Rochko
2f932cb2bb Add client-side timeout on resend confirmation button (#26300) 2023-08-03 01:51:10 +02:00
Claire
425d77f812 Fix crash in tootctl status remove and some old migrations (#26210) 2023-08-02 20:54:56 +02:00
Trevor Wolf
6308dca76a change column link to add a better keyboard focus indicator (#26278) 2023-08-02 19:33:41 +02:00
Emelia Smith
e258b4cb64 Refactor: replace whitelist_mode mentions with limited_federation_mode (#26252) 2023-08-02 19:32:48 +02:00
Christian Schmidt
8891d8945d Fix request URL normalisation for bare domain and 8-bit characters (#26285) 2023-08-02 19:32:29 +02:00
Eugen Rochko
2cbdff97ce Change design of role badges in web UI (#26281)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-08-02 17:24:32 +02:00
Eugen Rochko
01f0cffc2c Fix line clamp for link previews in web UI (#26286) 2023-08-02 04:17:23 +02:00
Eugen Rochko
4c999a736c Fix wrong border radius on link cards in web UI (#26287) 2023-08-02 01:57:31 +02:00
Christian Schmidt
ca342d4838 Add List-Unsubscribe email header (#26085) 2023-08-01 19:34:40 +02:00
Christian Schmidt
f2257069b2 Fix AVIF attachments (#26264) 2023-08-01 19:34:11 +02:00
Claire
71fd70335a Change interaction modal input to disable browser spell-checking, capitalization and autocomplete (#26267) 2023-08-01 17:11:30 +02:00
Claire
6c39125761 Change /api/v1/peers/search to be case-insensitive when using Elasticsearch (#26268) 2023-08-01 14:52:32 +02:00
Christian Schmidt
fd284311e7 Do not normalize URL before fetching it (#26219) 2023-07-31 23:17:37 +02:00
Claire
51768de16e Bump version to v4.1.6 (#26272) 2023-07-31 21:11:25 +02:00
Claire
d82abc877a Fix Importer::BaseImporter#clean_up! not using proper primary key (#26269) 2023-07-31 11:17:41 +02:00
github-actions[bot]
3b49b5a880 New Crowdin translations (#2348)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-07-31 07:44:04 +02:00
Plastikmensch
e02510c428 Remove .orig files (#2347)
Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-31 07:43:46 +02:00
Claire
e96a90480b Merge pull request #2339 from ClearlyClaire/glitch-soc/merge-upstream
* Cleanup unused portions of statuses/status partial (#26045)

* Wrong count in response when removing favourite/reblog (#24365)

Co-authored-by: Claire <claire.github-309c@sitedethib.com>

* Paperclip: add support for Azure blob storage (#23607)

* Fix a missing redirection on getting-started in multi column mode (#26070)

* Fix haml-lint Rubocop `Style/NumericPredicate` cop (#26040)

* Change casing for 'Server Settings' string (#26011)

* Move localized subject mailer shared example to separate file (#25889)

* Fix haml-lint Rubocop `Lint/UnusedBlockArguments` cop (#26039)

* Fix `Lint/Void` cop (#25922)

* Add stricter protocol fields validation for accounts (#25937)

* Improve the bug report templates (#25621)

* Fix the crossorigin attribute (#26096)

* Fix replica being used even if not explicitly defined (#26074)

* Clean up unused application records (#24871)

* Change thread view to scroll to the selected post rather than the post being replied to (#24685)

* Change default KeyGenerator digest to SHA1 to fix cookies in rolling upgrades (#26023)

* change focus ui for keyboard only input (#25935)

* Use username as display name for suspended users or users with blank display names (#25276)

* Fix CSP headers being unintendedly wide (#26105)

* Fix linting issue (#26106)

* Replace 'favourite' by 'favorite' for American English (#26009)

* Override default Action Mailer `preview_path` (#26110)

* Favourits -> Favorites (#26109)

* Bump version to v4.1.5 (#26108)

* Fix incorrect connect timeout in outgoing requests (#26116)

* Fix missing translation strings for importing lists (#26120)

* Use valid email address for first account (#26114)

* Update haml-lint 0.49.1 (#26118)

* Fix focus and hover styles in web UI (#26125)

* Remove back button from bookmarks, favourites and lists screens in web UI (#26126)

* Remove 16:9 cropping from web UI (#26132)

* Change design of link previews in web UI (#26136)

* change poll form element colors to fit with the rest of the ui (#26139)

* Add `lang` attribute to trending links (#26111)

* Update dependency rdf-normalize to v0.6.1 (#26130)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Update dependency brakeman to v6.0.1 (#26141)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Update dependency postcss to v8.4.27 (#26144)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Fix unexpected redirection to /explore after sign-in (#26143)

* Update dependency aws-sdk-s3 to v1.131.0 (#26145)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Add report.updated webhook (#24211)

* Fix LinkCrawlWorker crashing on `null` `created_at` (#26151)

* Fix UI Overlap with the loupe icon in the Explore Tab (#26113)

* Fix missing border on error screen in light theme in web UI (#26152)

* Fix missing action label on sensitive videos and embeds in web UI (#26135)

* Fix `lang` for UI texts in link preview (#26149)

* Add published date and author to news on the explore screen in web UI (#26155)

* Coverage for `Auth::OmniauthCallbacks` controller (#26147)

* fix poll input active style (#26162)

* Add `published_at` attribute to preview cards (#26153)

* Update dependency sass to v1.64.1 (#26146)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Revert poll colors to green outside of compose form (#26164)

* Preserve translation on status re-import (#26168)

* Fix missing GIF badge in account gallery (#26166)

* Reformat large text arg in `FetchLinkCardService` spec (#26183)

* Ignore long line in regex initializer (#26182)

* Reformat large key values in service specs (#26181)

* Reformat large hash in `ContextHelper` module (#26180)

* Use heredoc SQL blocks in `AddFromAccountIdToNotifications` migration (#26178)

* Extract private methods in `StatusCacheHydrator` (#26177)

* New Crowdin Translations (automated) (#26072)

Co-authored-by: GitHub Actions <noreply@github.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>

* Remove the `sr` locale override .rb files (#25927)

* Use correct naming on controller concern specs (#26197)

* Migrate to request specs in `/api/v2/filters` (#25721)

* Fix wrong filters sometimes applying in streaming (#26159)

* Refactor streaming's filtering logic & improve documentation (#26213)

* Add role badges to the WebUI (#25649)

* Change interaction modal in web UI (#26075)

Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>

* Fix crash when processing Flag activity with no status (#26189)

* Storage: add :azure to remaining callers (#26080)

* Remove queued_at value from pubsub payloads (#26173)

* Fix emoji picker button scrolling with textarea content in single-column view (#25304)

* Change the wording of the dismissable explore prompt (#25917)

* Update dependency haml_lint to v0.49.2 (#26222)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Fix: Streaming server memory leak in HTTP EventSource cleanup (#26228)

* Swap debug statements in streaming server (#26231)

* Fix missing return values in streaming (#26233)

* [Glitch] Wrong count in response when removing favourite/reblog

Port 4c18928a93 to glitch-soc

Co-authored-by: Claire <claire.github-309c@sitedethib.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* [Glitch] Fix a missing redirection on getting-started in multi column mode

Port 586b1c9dca to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* [Glitch] Change thread view to scroll to the selected post rather than the post being replied to

Port e4ea80d808 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* [Glitch] Replace 'favourite' by 'favorite' for American English

Port 217ef7f2af to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* [Glitch] change poll form element colors to fit with the rest of the ui

Port 80809ef33e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* [Glitch] Add `lang` attribute to trending links

Port 76fce34ebb to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* [Glitch] Fix UI Overlap with the loupe icon in the Explore Tab

Port 9a567ec1d1 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* [Glitch] Fix missing border on error screen in light theme in web UI

Port d1a9f601c7 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* [Glitch] Fix missing action label on sensitive videos and embeds in web UI

Port 714a20697f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* [Glitch] fix poll input active style

Port 49d2e8979f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* [Glitch] Revert poll colors to green outside of compose form

Port ce1f35d7e2 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* [Glitch] Add published date and author to news on the explore screen in web UI

Port f826a95f6e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* [Glitch] Preserve translation on status re-import

Port 6781dc6462 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* [Glitch] Fix missing GIF badge in account gallery

Port a4b69bec2e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* Fix interaction modal being broken because of glitch-soc's theming system

* [Glitch] Change interaction modal in web UI

Port b4e739ff0f to glitch-soc

Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* [Glitch] Change the wording of the dismissable explore prompt

Port a4ec187a20 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>

* Fix CSP tests in glitch-soc

---------

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
Co-authored-by: Matt Jankowski <matt@jankowski.online>
Co-authored-by: Christian Schmidt <github@chsc.dk>
Co-authored-by: Misty De Méo <mistydemeo@gmail.com>
Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
Co-authored-by: gunchleoc <fios@foramnagaidhlig.net>
Co-authored-by: Renaud Chaput <renchap@gmail.com>
Co-authored-by: Trevor Wolf <teeerevor@gmail.com>
Co-authored-by: наб <nabijaczleweli@nabijaczleweli.xyz>
Co-authored-by: mogaminsk <mgmnjp@icloud.com>
Co-authored-by: Nick Schonning <nschonni@gmail.com>
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Vyr Cossont <VyrCossont@users.noreply.github.com>
Co-authored-by: gol-cha <info@mevo.xyz>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Actions <noreply@github.com>
Co-authored-by: Daniel M Brasil <danielmbrasil@protonmail.com>
Co-authored-by: Emelia Smith <ThisIsMissEm@users.noreply.github.com>
2023-07-30 21:35:47 +02:00
Plastikmensch
ebfa184e74 Port search popout changes from upstream (#2333)
* [Glitch] Change search pop-out in web UI

Port 2b11376411 to glitch-soc

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>

* [Glitch] Change logo version in header based on screen size in web UI

Port remaining change from 6028d047b9 to glitch-soc

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>

* Rename `hashtags.js` to `hashtags.ts` and apply code style changes

Apply changes from e38b391940 (rename to ts), 51b83ed195 (code style change), 73b64b8917 (additional code style change)

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>

* Remove strings for old search

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>

---------

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-30 18:42:35 +02:00
Claire
73a3228e0f Fix CSP tests in glitch-soc 2023-07-30 17:30:13 +02:00
Claire
403a5c0f3f [Glitch] Change the wording of the dismissable explore prompt
Port a4ec187a20 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 17:01:29 +02:00
Claire
aa1789f0dd [Glitch] Change interaction modal in web UI
Port b4e739ff0f to glitch-soc

Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 16:59:32 +02:00
Claire
a1f1424e76 Fix interaction modal being broken because of glitch-soc's theming system 2023-07-30 16:45:50 +02:00
Claire
92fa9d34b0 Merge commit '3554c527954441fd924586a49c7d99a89101ac7e' into glitch-soc/merge-upstream
Conflicts:
- `app/controllers/authorize_interactions_controller.rb`:
  Small conflict due to our theming system.
- `streaming/index.js`:
  Upstream refactored part of the streaming server.
  We had some extra logic for handling local-only posts.
  Applied the refactor.
2023-07-30 16:11:55 +02:00
Christian Schmidt
879c7ed2d3 [Glitch] Fix missing GIF badge in account gallery
Port a4b69bec2e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 15:58:20 +02:00
Christian Schmidt
88ba538aad [Glitch] Preserve translation on status re-import
Port 6781dc6462 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 15:57:45 +02:00
Claire
454d8567d4 Merge commit '1814990a3d117555153321216fa593e4d9e84de3' into glitch-soc/merge-upstream 2023-07-30 15:54:34 +02:00
Eugen Rochko
450f75b6f7 [Glitch] Add published date and author to news on the explore screen in web UI
Port f826a95f6e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 15:50:53 +02:00
Claire
887a17bb83 [Glitch] Revert poll colors to green outside of compose form
Port ce1f35d7e2 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 15:50:53 +02:00
Trevor Wolf
e92dde0b16 [Glitch] fix poll input active style
Port 49d2e8979f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 15:50:53 +02:00
Eugen Rochko
e48a6a5f2c [Glitch] Fix missing action label on sensitive videos and embeds in web UI
Port 714a20697f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 15:50:53 +02:00
Eugen Rochko
4b26e44ef4 [Glitch] Fix missing border on error screen in light theme in web UI
Port d1a9f601c7 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 15:23:08 +02:00
gol-cha
168fadb6b9 [Glitch] Fix UI Overlap with the loupe icon in the Explore Tab
Port 9a567ec1d1 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 15:22:28 +02:00
Christian Schmidt
1d4df97049 [Glitch] Add lang attribute to trending links
Port 76fce34ebb to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 15:18:40 +02:00
Trevor Wolf
f3bd96c91c [Glitch] change poll form element colors to fit with the rest of the ui
Port 80809ef33e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 15:18:07 +02:00
Claire
bd349cb850 Merge commit 'ce1f35d7e213327549b960bb64f63c67a141ea40' into glitch-soc/merge-upstream
Conflicts:
- `db/schema.rb`:
  Upstream regenerated the schema file using Rails 7, the conflicts are
  caused by our extra columns.
  Applied upstream's changes, but keeping our extra columns.
2023-07-30 14:58:56 +02:00
gunchleoc
09ebf7e37c [Glitch] Replace 'favourite' by 'favorite' for American English
Port 217ef7f2af to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 14:44:36 +02:00
Claire
b2515feb29 Merge commit 'cfd50f30bb5dda4dd90e1ad01f3e62c99135c36f' into glitch-soc/merge-upstream 2023-07-30 14:33:28 +02:00
Claire
5914dfdd69 [Glitch] Change thread view to scroll to the selected post rather than the post being replied to
Port e4ea80d808 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 14:26:52 +02:00
Claire
42f36aa55a Merge commit '5b457961fc1189a71599dc6c06b3f159b195a455' into glitch-soc/merge-upstream
Conflicts:
- `config/initializers/content_security_policy.rb`:
  Upstream fixed an issue that was not present in glitch-soc.
  Kept our version.
2023-07-30 13:49:35 +02:00
Claire
7635c67450 Merge commit '144a406d332b034caa812ade2629df03ed4898d7' into glitch-soc/merge-upstream
Conflicts:
- `app/views/layouts/application.html.haml`:
  Upstream removed the `crossorigin` attribute from `preload_pack_asset`.
  Glitch-soc had different calls to `preload_pack_asset` because of the
  different theming system.
  Ported the change.
- `app/views/layouts/embedded.html.haml`:
  Upstream removed the `crossorigin` attribute from `preload_pack_asset`.
  Glitch-soc had different calls to `preload_pack_asset` because of the
  different theming system.
  Ported the change.
2023-07-30 13:42:06 +02:00
Stanislas Signoud
f05effeb8f [Glitch] Fix a missing redirection on getting-started in multi column mode
Port 586b1c9dca to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 13:32:16 +02:00
Christian Schmidt
d3d6147286 [Glitch] Wrong count in response when removing favourite/reblog
Port 4c18928a93 to glitch-soc

Co-authored-by: Claire <claire.github-309c@sitedethib.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-30 13:31:41 +02:00
Claire
993d0a9950 Merge commit '1e3b19230a48174acf524cf1a9f5a498e220ea7d' into glitch-soc/merge-upstream
Conflicts:
- `app/models/account.rb`:
  Upstream added new validations close to lines on which glitch-soc had
  modified validations to handle custom limits set through environment
  variables.
  Ported upstream changes.
- `config/initializers/content_security_policy.rb`:
  Upstream added `AZURE_ALIAS_HOST`. Glitch-soc's version of the file is
  completely different.
  Added `AZURE_ALIAS_HOST` to our version of the file.
2023-07-30 13:15:01 +02:00
github-actions[bot]
3a14104411 New Crowdin translations (#2338)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-07-30 13:09:02 +02:00
Eugen Rochko
d4807a5e64 Change aspect ratios on link previews in web UI (#26250) 2023-07-30 03:35:17 +02:00
Christian Schmidt
d76f79f647 Remove obsolete backport from Rails 7 (#26254) 2023-07-29 22:28:05 +02:00
Plastikmensch
4d3a129212 Fix public TL not indicating new toots when onlyRemote is enabled (#26247)
Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-29 20:18:38 +02:00
Plastikmensch
1cc3fcf7d0 Fix Public TL not indicating new toots when onlyRemote or allowLocalOnly is enabled (#2336)
Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-29 16:45:37 +02:00
Plastikmensch
feaf3cf780 Fix firehose not indicating new toots in "All" (#2335)
When "Show local-only toots in All" is enabled, the column never indicated there are new toots, since `hasUnread` was always false.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-29 08:37:29 +02:00
Matt Jankowski
74903af7ce Ignore the brakeman PermitAttributes check (#25915) 2023-07-28 23:17:53 +02:00
Matt Jankowski
8ac9e446df Load rspec-rails gem in test + development (#25768) 2023-07-28 23:17:35 +02:00
Matt Jankowski
7581b1ff96 Profiling tools configuration improvement (#25383) 2023-07-28 23:16:23 +02:00
Matt Jankowski
6f1fa1364f Fix RSpec/EmptyExampleGroup cop (#24735) 2023-07-28 23:15:33 +02:00
Matt Jankowski
660993b415 Add coverage for URLValidator (#25591) 2023-07-28 23:12:25 +02:00
Matt Jankowski
6602edf064 Add coverage for LanguageValidator (#25593) 2023-07-28 23:12:09 +02:00
Matt Jankowski
ad81be6c8e Update rubocop rules for linelength (#26190) 2023-07-28 23:11:45 +02:00
Matt Jankowski
30f5ec7303 Rubocop fix: Perfomance/UnfreezeString (#26217) 2023-07-28 23:11:05 +02:00
Renaud Chaput
4d1b67f664 Add end-to-end (system) tests (#25461) 2023-07-28 23:09:49 +02:00
Jay Prakash Kalia
8d5d707cc1 Update README.md (#25435) 2023-07-28 23:09:19 +02:00
gunchleoc
b0134db6ff Allow filtering for Chinese languages (#26066) 2023-07-28 23:07:22 +02:00
Christian Schmidt
f96e4b3047 Use original URL in preview if it redirects to 4xx page (#26200) 2023-07-28 23:02:08 +02:00
Renaud Chaput
3554c52795 Fix missing return values in streaming (#26233) 2023-07-28 19:11:58 +02:00
Claire
446821a0dc Swap debug statements in streaming server (#26231) 2023-07-28 17:59:31 +02:00
Emelia Smith
81cdc0f972 Fix: Streaming server memory leak in HTTP EventSource cleanup (#26228) 2023-07-28 12:06:29 +02:00
renovate[bot]
255606d2da Update dependency haml_lint to v0.49.2 (#26222)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-28 10:45:52 +02:00
Plastikmensch
e69fe94669 Fix "All" live feed not loading automatically. (#2332)
The dispatch to expand the timeline was missing the `allowLocalOnly` param.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-27 19:25:55 +02:00
github-actions[bot]
8864d5b580 New Crowdin translations (#2327)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-07-27 19:25:29 +02:00
Claire
6256cee034 Change error boundary to upstream's (#2323) 2023-07-27 19:25:07 +02:00
Claire
a4ec187a20 Change the wording of the dismissable explore prompt (#25917) 2023-07-27 16:51:02 +02:00
Claire
bbea052935 Fix emoji picker button scrolling with textarea content in single-column view (#25304) 2023-07-27 16:20:33 +02:00
Emelia Smith
317cd26fba Remove queued_at value from pubsub payloads (#26173) 2023-07-27 16:19:33 +02:00
Misty De Méo
12a6cf569e Storage: add :azure to remaining callers (#26080) 2023-07-27 16:13:45 +02:00
Claire
6c3c5bbbc3 Fix crash when processing Flag activity with no status (#26189) 2023-07-27 16:11:56 +02:00
Claire
b4e739ff0f Change interaction modal in web UI (#26075)
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
2023-07-27 16:11:17 +02:00
Claire
1e4ccc655a Add role badges to the WebUI (#25649) 2023-07-27 16:05:24 +02:00
Emelia Smith
ddaf200c78 Refactor streaming's filtering logic & improve documentation (#26213) 2023-07-27 15:38:18 +02:00
Claire
1814990a3d Fix wrong filters sometimes applying in streaming (#26159) 2023-07-27 15:12:10 +02:00
Daniel M Brasil
812a84ff5f Migrate to request specs in /api/v2/filters (#25721) 2023-07-27 14:58:20 +02:00
Matt Jankowski
f48d345de1 Use correct naming on controller concern specs (#26197) 2023-07-27 14:27:21 +02:00
Matt Jankowski
b06763dc11 Remove the sr locale override .rb files (#25927) 2023-07-26 15:39:53 +02:00
github-actions[bot]
b9adea9695 New Crowdin Translations (automated) (#26072)
Co-authored-by: GitHub Actions <noreply@github.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-07-26 13:46:16 +02:00
Matt Jankowski
84d520ee80 Extract private methods in StatusCacheHydrator (#26177) 2023-07-26 09:50:48 +02:00
Matt Jankowski
a2dca50ef3 Use heredoc SQL blocks in AddFromAccountIdToNotifications migration (#26178) 2023-07-26 09:49:15 +02:00
Matt Jankowski
8ac5a93a7d Reformat large hash in ContextHelper module (#26180) 2023-07-26 09:46:11 +02:00
Matt Jankowski
2d9808f648 Reformat large key values in service specs (#26181) 2023-07-26 09:45:50 +02:00
Matt Jankowski
bada7a65aa Ignore long line in regex initializer (#26182) 2023-07-26 09:45:27 +02:00
Matt Jankowski
7d62e3b198 Reformat large text arg in FetchLinkCardService spec (#26183) 2023-07-26 09:44:51 +02:00
Christian Schmidt
a4b69bec2e Fix missing GIF badge in account gallery (#26166) 2023-07-26 03:33:31 +02:00
Christian Schmidt
6781dc6462 Preserve translation on status re-import (#26168) 2023-07-25 20:29:31 +02:00
Claire
ce1f35d7e2 Revert poll colors to green outside of compose form (#26164) 2023-07-25 15:32:59 +02:00
renovate[bot]
edc104c9ef Update dependency sass to v1.64.1 (#26146)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-25 14:45:35 +02:00
Eugen Rochko
7bd8ef355c Add published_at attribute to preview cards (#26153) 2023-07-25 13:40:35 +02:00
Trevor Wolf
49d2e8979f fix poll input active style (#26162) 2023-07-25 13:39:15 +02:00
Matt Jankowski
50ff3d3342 Coverage for Auth::OmniauthCallbacks controller (#26147) 2023-07-25 09:46:57 +02:00
Eugen Rochko
f826a95f6e Add published date and author to news on the explore screen in web UI (#26155) 2023-07-25 00:57:15 +02:00
Christian Schmidt
4299208487 Fix lang for UI texts in link preview (#26149) 2023-07-24 23:01:31 +02:00
Eugen Rochko
714a20697f Fix missing action label on sensitive videos and embeds in web UI (#26135) 2023-07-24 22:04:38 +02:00
Eugen Rochko
d1a9f601c7 Fix missing border on error screen in light theme in web UI (#26152) 2023-07-24 19:53:33 +02:00
gol-cha
9a567ec1d1 Fix UI Overlap with the loupe icon in the Explore Tab (#26113) 2023-07-24 17:56:20 +02:00
Claire
2dfa8f797a Fix LinkCrawlWorker crashing on null created_at (#26151) 2023-07-24 17:55:36 +02:00
Vyr Cossont
394d1f19b1 Add report.updated webhook (#24211) 2023-07-24 17:37:38 +02:00
renovate[bot]
173a268025 Update dependency aws-sdk-s3 to v1.131.0 (#26145)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-24 16:18:19 +02:00
Claire
b629e21515 Fix unexpected redirection to /explore after sign-in (#26143) 2023-07-24 16:06:32 +02:00
renovate[bot]
3cbc69f13d Update dependency postcss to v8.4.27 (#26144)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-24 16:03:49 +02:00
renovate[bot]
e56dc936e3 Update dependency brakeman to v6.0.1 (#26141)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-24 15:43:08 +02:00
renovate[bot]
d31b31afee Update dependency rdf-normalize to v0.6.1 (#26130)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-24 14:05:12 +02:00
Christian Schmidt
76fce34ebb Add lang attribute to trending links (#26111) 2023-07-24 13:48:23 +02:00
Trevor Wolf
80809ef33e change poll form element colors to fit with the rest of the ui (#26139) 2023-07-24 13:48:09 +02:00
Eugen Rochko
6b2952d1dd Change design of link previews in web UI (#26136) 2023-07-24 13:47:28 +02:00
Eugen Rochko
4d01d1a1ee Remove 16:9 cropping from web UI (#26132) 2023-07-24 13:46:55 +02:00
Plastikmensch
cf9affdeac Apply padding to all notifications in notif-cleaning mode (#2325)
* Add missing padding to notif-cleaning for admin-sign-up

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>

* Apply padding to all notification types instead

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>

---------

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-23 18:50:24 +02:00
Eugen Rochko
5e8cbb5f82 Remove back button from bookmarks, favourites and lists screens in web UI (#26126) 2023-07-23 17:55:20 +02:00
Eugen Rochko
cfd50f30bb Fix focus and hover styles in web UI (#26125) 2023-07-23 17:55:13 +02:00
Nick Schonning
67016dd29d Update haml-lint 0.49.1 (#26118) 2023-07-23 17:48:16 +02:00
Plastikmensch
51311c1978 Fix CW icon being on wrong side in app settings in RTL languages (#2324)
Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-23 17:19:09 +02:00
Christian Schmidt
3abe0fc5c8 Use valid email address for first account (#26114) 2023-07-23 15:58:19 +02:00
mogaminsk
db310f383d Fix missing translation strings for importing lists (#26120) 2023-07-23 15:57:57 +02:00
Jeong Arm
944c29033d Fix relationship-tag background color (#2322) 2023-07-23 14:40:37 +02:00
github-actions[bot]
9ec43107f2 New Crowdin translations (#2319)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-07-23 14:31:38 +02:00
Claire
49767d20bd Fix glitch local settings navigation items not being proper buttons (#2320) 2023-07-23 14:31:16 +02:00
Claire
dd09535bda Annotate doodle parameters to please eslint (#2321) 2023-07-23 14:31:05 +02:00
Claire
0078e7e760 Fix incorrect connect timeout in outgoing requests (#26116) 2023-07-22 20:42:31 +02:00
Claire
52500965cc Fix “Open in advanced web interface” being shown on mobile view (#2318)
Fixes #2307
2023-07-22 17:22:04 +02:00
github-actions[bot]
9a45198ab0 New Crowdin translations (#2317)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-07-22 09:53:26 +02:00
Claire
f2c683336b Bump version to v4.1.5 (#26108) 2023-07-21 21:23:14 +02:00
наб
1b4cf0eba0 Favourits -> Favorites (#26109) 2023-07-21 21:13:20 +02:00
Christian Schmidt
296ec6cf57 Override default Action Mailer preview_path (#26110) 2023-07-21 21:12:57 +02:00
gunchleoc
217ef7f2af Replace 'favourite' by 'favorite' for American English (#26009) 2023-07-21 19:09:13 +02:00
Claire
5b457961fc Fix linting issue (#26106) 2023-07-21 14:21:10 +02:00
Claire
e5f1000ad1 Fix CSP headers being unintendedly wide (#26105) 2023-07-21 13:34:15 +02:00
Claire
14fad60384 Use username as display name for suspended users or users with blank display names (#25276) 2023-07-21 13:20:53 +02:00
Trevor Wolf
59478a1b46 change focus ui for keyboard only input (#25935) 2023-07-21 13:20:14 +02:00
Claire
934c7b33d1 Change default KeyGenerator digest to SHA1 to fix cookies in rolling upgrades (#26023) 2023-07-21 13:17:43 +02:00
Claire
e4ea80d808 Change thread view to scroll to the selected post rather than the post being replied to (#24685) 2023-07-21 13:14:30 +02:00
Claire
144a406d33 Clean up unused application records (#24871) 2023-07-21 13:13:16 +02:00
Claire
5cbc402687 Fix replica being used even if not explicitly defined (#26074) 2023-07-21 11:30:53 +02:00
Renaud Chaput
42698b4c5c Fix the crossorigin attribute (#26096) 2023-07-21 11:14:26 +02:00
Renaud Chaput
4ea041fe67 Improve the bug report templates (#25621) 2023-07-21 10:46:12 +02:00
github-actions[bot]
e7cb6c6c44 New Crowdin translations (#2314)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-07-21 09:26:08 +02:00
Claire
1e3b19230a Add stricter protocol fields validation for accounts (#25937) 2023-07-20 18:23:48 +02:00
Matt Jankowski
1cceb62afd Fix Lint/Void cop (#25922) 2023-07-20 17:31:34 +02:00
Matt Jankowski
a5842df123 Fix haml-lint Rubocop Lint/UnusedBlockArguments cop (#26039) 2023-07-20 17:03:39 +02:00
Matt Jankowski
285a3df56c Move localized subject mailer shared example to separate file (#25889) 2023-07-20 15:50:50 +02:00
gunchleoc
cabe1ea560 Change casing for 'Server Settings' string (#26011) 2023-07-20 15:17:40 +02:00
Matt Jankowski
df05ece265 Fix haml-lint Rubocop Style/NumericPredicate cop (#26040) 2023-07-20 15:13:06 +02:00
Stanislas Signoud
586b1c9dca Fix a missing redirection on getting-started in multi column mode (#26070) 2023-07-20 14:46:02 +02:00
Misty De Méo
b848ba3867 Paperclip: add support for Azure blob storage (#23607) 2023-07-19 09:02:49 +02:00
Christian Schmidt
4c18928a93 Wrong count in response when removing favourite/reblog (#24365)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-07-19 09:02:30 +02:00
Matt Jankowski
6edd404482 Cleanup unused portions of statuses/status partial (#26045) 2023-07-19 08:44:16 +02:00
github-actions[bot]
2649fbce04 New Crowdin translations (#2310)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-07-19 08:39:14 +02:00
Claire
949f1fc343 Fix Crowdin Github Action (#2311) 2023-07-19 08:36:25 +02:00
Claire
a04a30f852 Merge pull request #2309 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
2023-07-19 08:18:05 +02:00
Claire
0092fe50ac Merge branch 'main' into glitch-soc/merge-upstream
Conflicts:
- `.github/workflows/build-image.yml`:
  Upstream entirely refactored this, while we changed the docker repository
  to upload to and disabled the “latest” tag.
  Applied the repository change to `.github/workflows/build-*.yml`, as well
  as disabling native ARMv64 builds.
- `README.md`:
  We have a completely different README.
  Kept ours.
- `app/views/admin/settings/shared/_links.html.haml`:
  Upstream refactored, we had an extra item.
  Refactored as upstream did.
- `spec/controllers/api/v1/timelines/public_controller_spec.rb`:
  Upstream deleted this file, to be replaced by a request spec at
  `spec/requests/api/v1/timelines/public_spec.rb`.
  We had an extra bit about enabling the public timelines because we have
  different defaults than upstream.
  Moved that bit to `spec/requests/api/v1/timelines/public_spec.rb`
2023-07-19 07:35:51 +02:00
Claire
111686c38b New Crowdin updates (#2306)
* New translations en.json (French)
[ci skip]

* New translations en.json (Spanish)
[ci skip]

* New translations en.json (Afrikaans)
[ci skip]

* New translations en.json (Arabic)
[ci skip]

* New translations en.json (Czech)
[ci skip]

* New translations en.json (German)
[ci skip]

* New translations en.json (Irish)
[ci skip]

* New translations en.json (Japanese)
[ci skip]

* New translations en.json (Georgian)
[ci skip]

* New translations en.json (Korean)
[ci skip]

* New translations en.json (Lithuanian)
[ci skip]

* New translations en.json (Macedonian)
[ci skip]

* New translations en.json (Punjabi)
[ci skip]

* New translations en.json (Polish)
[ci skip]

* New translations en.json (Turkish)
[ci skip]

* New translations en.json (Ukrainian)
[ci skip]

* New translations en.json (Chinese Simplified)
[ci skip]

* New translations en.json (Chinese Traditional)
[ci skip]

* New translations en.json (Urdu (Pakistan))
[ci skip]

* New translations en.json (Portuguese, Brazilian)
[ci skip]

* New translations en.json (Persian)
[ci skip]

* New translations en.json (Tamil)
[ci skip]

* New translations en.json (Spanish, Argentina)
[ci skip]

* New translations en.json (Spanish, Mexico)
[ci skip]

* New translations en.json (Bengali)
[ci skip]

* New translations en.json (Marathi)
[ci skip]

* New translations en.json (Croatian)
[ci skip]

* New translations en.json (Kazakh)
[ci skip]

* New translations en.json (Telugu)
[ci skip]

* New translations en.json (English, United Kingdom)
[ci skip]

* New translations en.json (Esperanto)
[ci skip]

* New translations en.json (Uyghur)
[ci skip]

* New translations en.json (Tatar)
[ci skip]

* New translations en.json (Malayalam)
[ci skip]

* New translations en.json (Latin)
[ci skip]

* New translations en.json (Bosnian)
[ci skip]

* New translations en.json (French, Quebec)
[ci skip]

* New translations en.json (Cornish)
[ci skip]

* New translations en.json (Kannada)
[ci skip]

* New translations en.json (Occitan)
[ci skip]

* New translations en.json (Igbo)
[ci skip]

* New translations en.json (Sardinian)
[ci skip]

* New translations en.json (Kabyle)
[ci skip]

* New translations en.yml (Spanish)
[ci skip]

* New translations en.yml (Italian)
[ci skip]

* New translations en.yml (Norwegian)
[ci skip]

* New translations en.yml (Ukrainian)
[ci skip]

* New translations en.yml (Chinese Simplified)
[ci skip]

* New translations en.yml (Spanish, Argentina)
[ci skip]

* New translations en.yml (Spanish, Mexico)
[ci skip]

* New translations en.yml (Esperanto)
[ci skip]

* New translations simple_form.en.yml (French)
[ci skip]

* New translations simple_form.en.yml (Spanish)
[ci skip]

* New translations simple_form.en.yml (Czech)
[ci skip]

* New translations simple_form.en.yml (German)
[ci skip]

* New translations simple_form.en.yml (Italian)
[ci skip]

* New translations simple_form.en.yml (Korean)
[ci skip]

* New translations simple_form.en.yml (Norwegian)
[ci skip]

* New translations simple_form.en.yml (Polish)
[ci skip]

* New translations simple_form.en.yml (Ukrainian)
[ci skip]

* New translations simple_form.en.yml (Chinese Simplified)
[ci skip]

* New translations simple_form.en.yml (Portuguese, Brazilian)
[ci skip]

* New translations simple_form.en.yml (Spanish, Argentina)
[ci skip]

* New translations simple_form.en.yml (Spanish, Mexico)
[ci skip]

* New translations simple_form.en.yml (French, Quebec)
[ci skip]

* New translations en.json (Polish)
[ci skip]

* New translations en.json (Spanish, Argentina)
[ci skip]

* New translations en.yml (Spanish, Argentina)
[ci skip]
2023-07-19 07:05:33 +02:00
github-actions[bot]
47832a1ac0 New Crowdin Translations (automated) (#26054)
Co-authored-by: renchap <renchap@users.noreply.github.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-07-18 21:13:25 +02:00
Claire
ff41e5426a Change request timeout handling to use a longer deadline (#26055) 2023-07-18 20:51:20 +02:00
Matt Jankowski
6657695ec6 Fix haml-lint InstanceVariables rule for auth/registrations/edit (#26061) 2023-07-18 18:10:52 +02:00
Matt Jankowski
f6dda59e5d Fix haml-lint Rubocop Style/SymbolProc cop (#26059) 2023-07-18 17:43:04 +02:00
Matt Jankowski
39d9804119 Fix haml-lint Rubocop Style/WordArray cop (#26058) 2023-07-18 17:25:41 +02:00
Matt Jankowski
b3f48089e6 Fix haml-lint rubocop style negation cops (#26057) 2023-07-18 17:02:02 +02:00
Renaud Chaput
b8931311a0 Fixes to the new Image build actions (#26056) 2023-07-18 16:56:42 +02:00
Renaud Chaput
626a7b6a77 Add a Github Action to send translations to Crowdin for each merge in main (#25869) 2023-07-18 16:56:01 +02:00
Renaud Chaput
d184524233 Rework the container image build actions (#26007) 2023-07-18 13:36:12 +02:00
Daniel M Brasil
59b38f9ee4 Migrate to request specs in /api/v1/mutes (#25622) 2023-07-18 13:05:19 +02:00
Matt Jankowski
e663e6d2c2 Fix haml-lint ConsecutiveSilentScripts rule (#26043) 2023-07-18 09:25:37 +02:00
renovate[bot]
6245cec185 Update dependency ox to v2.14.17 (#26044)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-18 09:24:48 +02:00
Daniel M Brasil
58bfe8c43a Migrate to request specs in /api/v1/bookmarks (#25520) 2023-07-18 09:15:50 +02:00
Daniel M Brasil
5a7c6c6597 Migrate to request specs in /api/v1/timelines/public (#25746)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-07-18 09:15:18 +02:00
forsamori
55cf18b689 Add MacOS M1/2 setup steps to README (#25682)
Co-authored-by: Sam BC <samuel.balbirnie-cumming@xdesign.com>
2023-07-18 09:02:45 +02:00
Claire
1a33f1df17 Merge pull request #2305 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
2023-07-17 21:06:58 +02:00
Claire
0c45bed333 [Glitch] Fix “Back” button sometimes redirecting out of Mastodon
Port a442a1d1c6 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-07-17 19:12:09 +02:00
Claire
c04f2d0cf7 Merge branch 'main' into glitch-soc/merge-upstream
Conflicts:
- `app/views/admin/settings/appearance/show.html.haml`:
  Upstream enforced an uniform code style around lambdas, and glitch-soc
  had a different lambda due to its theming system.
  Applied the same code style changes.
- `app/views/settings/preferences/appearance/show.html.haml`:
  Upstream enforced an uniform code style around lambdas, and glitch-soc
  removed some code just after the lambda.
  Applied the same code style changes.
2023-07-17 19:02:23 +02:00
Matt Jankowski
4207c95d4f Fix haml-lint Rubocop Style/SlicingWithRange cop (#25947) 2023-07-17 18:18:13 +02:00
Claire
a442a1d1c6 Fix “Back” button sometimes redirecting out of Mastodon (#25281) 2023-07-17 17:32:46 +02:00
Matt Jankowski
d0f00206dc Fix haml-lint Rubocop Style/StringLiterals cop (#25948) 2023-07-17 16:57:18 +02:00
Daniel M Brasil
19208aa422 Migrate to request specs in /api/v1/statuses/:status_id/favourite (#25626) 2023-07-17 16:53:57 +02:00
Daniel M Brasil
6fb4a756ff Migrate to request specs in /api/v1/statuses/:status_id/bookmark (#25624) 2023-07-17 16:51:49 +02:00
Daniel M Brasil
4859958a0c Migrate to request specs in /api/v1/polls (#25596) 2023-07-17 16:50:00 +02:00
Daniel M Brasil
1aea938d3d Migrate to request specs in /api/v1/statuses/:status_id/pin (#25635) 2023-07-17 16:24:05 +02:00
Daniel M Brasil
6cdc8408a9 Migrate to request specs in /api/v1/emails/confirmations (#25686) 2023-07-17 16:22:33 +02:00
Daniel M Brasil
8a1aabaac1 Migrate to request specs in /api/v1/timelines/home (#25743) 2023-07-17 16:20:11 +02:00
Nick Schonning
c80ecf2ff7 Increase PR Rebase job retries (#25926) 2023-07-17 16:10:43 +02:00
Jeong Arm
664b0ca8cb Check if json body is null on Activitipub::ProcessingWorker (#26021) 2023-07-17 15:51:30 +02:00
Matt Jankowski
bd33efdf16 Fix haml-lint Rubocop Style/MinMaxComparison cop (#25974) 2023-07-17 15:38:04 +02:00
Matt Jankowski
361dd43235 Fix haml-lint Rubocop lambda cop (#25946) 2023-07-17 15:07:29 +02:00
Matt Jankowski
5096deb818 Fix haml lint Rubocop Style/RedundantStringCoercion cop (#25975) 2023-07-17 14:08:56 +02:00
renovate[bot]
2a9063e36a Update dependency react-select to v5.7.4 (#26033)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-17 14:07:36 +02:00
Claire
943f27f437 Remove unfollowed hashtag posts from home feed (#26028) 2023-07-17 13:56:28 +02:00
Claire
f18618d7f9 Fix some incorrect tests (#26035) 2023-07-17 13:13:43 +02:00
1244 changed files with 36079 additions and 27745 deletions

View File

@@ -1,3 +0,0 @@
---
ignore:
- CVE-2015-9284 # Mitigation following https://github.com/omniauth/omniauth/wiki/Resolving-CVE-2015-9284#mitigating-in-rails-applications

View File

@@ -4,10 +4,6 @@ FROM mcr.microsoft.com/devcontainers/ruby:1-3.2-bullseye
# Install Rails
# RUN gem install rails webdrivers
# Default value to allow debug server to serve content over GitHub Codespace's port forwarding service
# The value is a comma-separated list of allowed domains
ENV RAILS_DEVELOPMENT_HOSTS=".githubpreview.dev,.preview.app.github.dev,.app.github.dev"
ARG NODE_VERSION="16"
RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"

View File

@@ -0,0 +1,49 @@
{
"name": "Mastodon on GitHub Codespaces",
"dockerComposeFile": "../docker-compose.yml",
"service": "app",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
"features": {
"ghcr.io/devcontainers/features/sshd:1": {}
},
"runServices": ["app", "db", "redis"],
"forwardPorts": [3000, 4000],
"portsAttributes": {
"3000": {
"label": "web",
"onAutoForward": "notify"
},
"4000": {
"label": "stream",
"onAutoForward": "silent"
}
},
"otherPortsAttributes": {
"onAutoForward": "silent"
},
"remoteEnv": {
"LOCAL_DOMAIN": "${localEnv:CODESPACE_NAME}-3000.app.github.dev",
"LOCAL_HTTPS": "true",
"STREAMING_API_BASE_URL": "https://${localEnv:CODESPACE_NAME}-4000.app.github.dev",
"DISABLE_FORGERY_REQUEST_PROTECTION": "true",
"ES_ENABLED": "",
"LIBRE_TRANSLATE_ENDPOINT": ""
},
"onCreateCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
"postCreateCommand": ".devcontainer/post-create.sh",
"waitFor": "postCreateCommand",
"customizations": {
"vscode": {
"settings": {},
"extensions": ["EditorConfig.EditorConfig", "webben.browserslist"]
}
}
}

View File

@@ -1,31 +1,39 @@
// For more details, see https://aka.ms/devcontainer.json.
{
"name": "Mastodon",
"name": "Mastodon on local machine",
"dockerComposeFile": "docker-compose.yml",
"service": "app",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
// Features to add to the dev container. More info: https://containers.dev/features.
"features": {
"ghcr.io/devcontainers/features/sshd:1": {}
},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// This can be used to network with other containers or the host.
"forwardPorts": [3000, 4000],
// Use 'postCreateCommand' to run commands after the container is created.
"portsAttributes": {
"3000": {
"label": "web",
"onAutoForward": "notify",
"requireLocalPort": true
},
"4000": {
"label": "stream",
"onAutoForward": "silent",
"requireLocalPort": true
}
},
"otherPortsAttributes": {
"onAutoForward": "silent"
},
"onCreateCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
"postCreateCommand": ".devcontainer/post-create.sh",
"waitFor": "postCreateCommand",
// Configure tool-specific properties.
"customizations": {
// Configure properties specific to VS Code.
"vscode": {
// Set *default* container specific settings.json values on container create.
"settings": {},
// Add the IDs of extensions you want installed when the container is created.
"extensions": ["EditorConfig.EditorConfig", "webben.browserslist"]
}
}

View File

@@ -25,6 +25,7 @@ services:
command: sleep infinity
ports:
- '127.0.0.1:3000:3000'
- '127.0.0.1:3035:3035'
- '127.0.0.1:4000:4000'
networks:
- external_network

View File

@@ -2,3 +2,7 @@ VAGRANT=true
LOCAL_DOMAIN=mastodon.local
BIND=0.0.0.0
DB_HOST=/var/run/postgresql/
ES_ENABLED=true
ES_HOST=localhost
ES_PORT=9200

View File

@@ -1,56 +0,0 @@
name: Bug Report
description: If something isn't working as expected
labels: [bug]
body:
- type: markdown
attributes:
value: |
Make sure that you are submitting a new bug that was not previously reported or already fixed.
Please use a concise and distinct title for the issue.
- type: textarea
attributes:
label: Steps to reproduce the problem
description: What were you trying to do?
value: |
1.
2.
3.
...
validations:
required: true
- type: input
attributes:
label: Expected behaviour
description: What should have happened?
validations:
required: true
- type: input
attributes:
label: Actual behaviour
description: What happened?
validations:
required: true
- type: textarea
attributes:
label: Detailed description
validations:
required: false
- type: textarea
attributes:
label: Specifications
description: |
What version or commit hash of Mastodon did you find this bug in?
If a front-end issue, what browser and operating systems were you using?
placeholder: |
Mastodon 3.5.3 (or Edge)
Ruby 2.7.6 (or v3.1.2)
Node.js 16.18.0
Google Chrome 106.0.5249.119
Firefox 105.0.3
etc...
validations:
required: true

View File

@@ -0,0 +1,76 @@
name: Bug Report (Web Interface)
description: If you are using Mastodon's web interface and something is not working as expected
labels: [bug, 'status/to triage', 'area/web interface']
body:
- type: markdown
attributes:
value: |
Make sure that you are submitting a new bug that was not previously reported or already fixed.
Please use a concise and distinct title for the issue.
- type: textarea
attributes:
label: Steps to reproduce the problem
description: What were you trying to do?
value: |
1.
2.
3.
...
validations:
required: true
- type: input
attributes:
label: Expected behaviour
description: What should have happened?
validations:
required: true
- type: input
attributes:
label: Actual behaviour
description: What happened?
validations:
required: true
- type: textarea
attributes:
label: Detailed description
validations:
required: false
- type: input
attributes:
label: Mastodon instance
description: The address of the Mastodon instance where you experienced the issue
placeholder: mastodon.social
validations:
required: true
- type: input
attributes:
label: Mastodon version
description: |
This is displayed at the bottom of the About page, eg. `v4.1.2+nightly-20230627`
placeholder: v4.1.2
validations:
required: true
- type: input
attributes:
label: Browser name and version
description: |
What browser are you using when getting this bug? Please specify the version as well.
placeholder: Firefox 105.0.3
validations:
required: true
- type: input
attributes:
label: Operating system
description: |
What OS are you running? Please specify the version as well.
placeholder: macOS 13.4.1
validations:
required: true
- type: textarea
attributes:
label: Technical details
description: |
Any additional technical details you may have. This can include the full error log, inspector's output…
validations:
required: false

View File

@@ -0,0 +1,65 @@
name: Bug Report (server / API)
description: |
If something is not working as expected, but is not from using the web interface.
labels: [bug, 'status/to triage']
body:
- type: markdown
attributes:
value: |
Make sure that you are submitting a new bug that was not previously reported or already fixed.
Please use a concise and distinct title for the issue.
- type: textarea
attributes:
label: Steps to reproduce the problem
description: What were you trying to do?
value: |
1.
2.
3.
...
validations:
required: true
- type: input
attributes:
label: Expected behaviour
description: What should have happened?
validations:
required: true
- type: input
attributes:
label: Actual behaviour
description: What happened?
validations:
required: true
- type: textarea
attributes:
label: Detailed description
validations:
required: false
- type: input
attributes:
label: Mastodon instance
description: The address of the Mastodon instance where you experienced the issue
placeholder: mastodon.social
validations:
required: false
- type: input
attributes:
label: Mastodon version
description: |
This is displayed at the bottom of the About page, eg. `v4.1.2+nightly-20230627`
placeholder: v4.1.2
validations:
required: false
- type: textarea
attributes:
label: Technical details
description: |
Any additional technical details you may have, like logs or error traces
value: |
If this is happening on your own Mastodon server, please fill out those:
- Ruby version: (from `ruby --version`, eg. v3.1.2)
- Node.js version: (from `node --version`, eg. v18.16.0)
validations:
required: false

View File

@@ -1,20 +1,21 @@
{
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
extends: [
'config:base',
':dependencyDashboard',
'config:recommended',
':labels(dependencies)',
':maintainLockFilesMonthly', // update non-direct dependencies monthly
':prConcurrentLimit10', // only 10 open PRs at the same time
':prConcurrentLimitNone', // Remove limit for open PRs at any time.
':prHourlyLimit2', // Rate limit PR creation to a maximum of two per hour.
],
stabilityDays: 3, // Wait 3 days after the package has been published before upgrading it
minimumReleaseAge: '3', // Wait 3 days after the package has been published before upgrading it
// packageRules order is important, they are applied from top to bottom and are merged,
// meaning the most important ones must be at the bottom, for example grouping rules
// If we do not want a package to be grouped with others, we need to set its groupName
// to `null` after any other rule set it to something.
dependencyDashboardHeader: 'This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. Before approving any upgrade: read the description and comments in the [`renovate.json5` file](https://github.com/mastodon/mastodon/blob/main/.github/renovate.json5).',
packageRules: [
{
// Ignore major version bumps for these node packages
// Require Dependency Dashboard Approval for major version bumps of these node packages
matchManagers: ['npm'],
matchPackageNames: [
'tesseract.js', // Requires code changes
@@ -41,10 +42,10 @@
'react-router-dom',
],
matchUpdateTypes: ['major'],
enabled: false,
dependencyDashboardApproval: true,
},
{
// Ignore major version bumps for these Ruby packages
// Require Dependency Dashboard Approval for major version bumps of these Ruby packages
matchManagers: ['bundler'],
matchPackageNames: [
'rack', // Needs to be synced with Rails version
@@ -55,7 +56,7 @@
'redis', // Requires manual upgrade and sync with Sidekiq version
],
matchUpdateTypes: ['major'],
enabled: false,
dependencyDashboardApproval: true,
},
{
// Update Github Actions and Docker images weekly
@@ -63,25 +64,25 @@
extends: ['schedule:weekly'],
},
{
// Ignore major & minor bumps for the ruby image, this needs to be synced with .ruby-version
// Require Dependency Dashboard Approval for major & minor bumps for the ruby image, this needs to be synced with .ruby-version
matchManagers: ['dockerfile'],
matchPackageNames: ['moritzheiber/ruby-jemalloc'],
matchUpdateTypes: ['minor', 'major'],
enabled: false,
dependencyDashboardApproval: true,
},
{
// Ignore major bump for the node image, this needs to be synced with .nvmrc
// Require Dependency Dashboard Approval for major bumps for the node image, this needs to be synced with .nvmrc
matchManagers: ['dockerfile'],
matchPackageNames: ['node'],
matchUpdateTypes: ['major'],
enabled: false,
dependencyDashboardApproval: true,
},
{
// Ignore major postgres bumps in the docker-compose file, as those break dev environments
// Require Dependency Dashboard Approval for major postgres bumps in the docker-compose file, as those break dev environments
matchManagers: ['docker-compose'],
matchPackageNames: ['postgres'],
matchUpdateTypes: ['major'],
enabled: false,
dependencyDashboardApproval: true,
},
{
// Update devDependencies every week, with one grouped PR

View File

@@ -0,0 +1,99 @@
on:
workflow_call:
inputs:
platforms:
required: true
type: string
cache:
type: boolean
default: true
use_native_arm64_builder:
type: boolean
push_to_images:
type: string
version_prerelease:
type: string
version_metadata:
type: string
flavor:
type: string
tags:
type: string
labels:
type: string
jobs:
build-image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/setup-qemu-action@v2
if: contains(inputs.platforms, 'linux/arm64') && !inputs.use_native_arm64_builder
- uses: docker/setup-buildx-action@v2
id: buildx
if: ${{ !(inputs.use_native_arm64_builder && contains(inputs.platforms, 'linux/arm64')) }}
- name: Start a local Docker Builder
if: inputs.use_native_arm64_builder && contains(inputs.platforms, 'linux/arm64')
run: |
docker run --rm -d --name buildkitd -p 1234:1234 --privileged moby/buildkit:latest --addr tcp://0.0.0.0:1234
- uses: docker/setup-buildx-action@v2
id: buildx-native
if: inputs.use_native_arm64_builder && contains(inputs.platforms, 'linux/arm64')
with:
driver: remote
endpoint: tcp://localhost:1234
platforms: linux/amd64
append: |
- endpoint: tcp://${{ vars.DOCKER_BUILDER_HETZNER_ARM64_01_HOST }}:13865
platforms: linux/arm64
name: mastodon-docker-builder-arm64-01
driver-opts:
- servername=mastodon-docker-builder-arm64-01
env:
BUILDER_NODE_1_AUTH_TLS_CACERT: ${{ secrets.DOCKER_BUILDER_HETZNER_ARM64_01_CACERT }}
BUILDER_NODE_1_AUTH_TLS_CERT: ${{ secrets.DOCKER_BUILDER_HETZNER_ARM64_01_CERT }}
BUILDER_NODE_1_AUTH_TLS_KEY: ${{ secrets.DOCKER_BUILDER_HETZNER_ARM64_01_KEY }}
- name: Log in to Docker Hub
if: contains(inputs.push_to_images, 'tootsuite')
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Log in to the Github Container registry
if: contains(inputs.push_to_images, 'ghcr.io')
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/metadata-action@v4
id: meta
if: ${{ inputs.push_to_images != '' }}
with:
images: ${{ inputs.push_to_images }}
flavor: ${{ inputs.flavor }}
tags: ${{ inputs.tags }}
labels: ${{ inputs.labels }}
- uses: docker/build-push-action@v4
with:
context: .
build-args: |
MASTODON_VERSION_PRERELEASE=${{ inputs.version_prerelease }}
MASTODON_VERSION_METADATA=${{ inputs.version_metadata }}
platforms: ${{ inputs.platforms }}
provenance: false
builder: ${{ steps.buildx.outputs.name || steps.buildx-native.outputs.name }}
push: ${{ inputs.push_to_images != '' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: ${{ inputs.cache && 'type=gha' || '' }}
cache-to: ${{ inputs.cache && 'type=gha,mode=max' || '' }}

View File

@@ -1,63 +0,0 @@
name: Build container image
on:
workflow_dispatch:
push:
branches:
- 'main'
pull_request:
paths:
- .github/workflows/build-image.yml
- Dockerfile
permissions:
contents: read
packages: write
jobs:
build-image:
runs-on: ubuntu-latest
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v3
- uses: hadolint/hadolint-action@v3.1.0
- uses: docker/setup-qemu-action@v2
- uses: docker/setup-buildx-action@v2
- name: Log in to the Github Container registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
if: github.event_name != 'pull_request'
- uses: docker/metadata-action@v4
id: meta
with:
images: ghcr.io/${{ github.repository_owner }}/mastodon
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=edge,branch=main
type=sha,prefix=,format=long
- name: Generate version suffix
id: version_vars
if: github.repository == 'mastodon/mastodon' && github.event_name == 'push' && github.ref_name == 'main'
run: |
echo mastodon_version_suffix=+edge-$(git rev-parse --short HEAD) >> $GITHUB_OUTPUT
- uses: docker/build-push-action@v4
with:
context: .
build-args: MASTODON_VERSION_SUFFIX=${{ steps.version_vars.outputs.mastodon_version_suffix }}
platforms: linux/amd64,linux/arm64
provenance: false
builder: ${{ steps.buildx.outputs.name }}
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

View File

@@ -3,58 +3,39 @@ on:
workflow_dispatch:
schedule:
- cron: '0 2 * * *' # run at 2 AM UTC
permissions:
contents: read
packages: write
jobs:
build-nightly-image:
compute-suffix:
runs-on: ubuntu-latest
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v3
- uses: hadolint/hadolint-action@v3.1.0
- uses: docker/setup-qemu-action@v2
- uses: docker/setup-buildx-action@v2
- name: Log in to the Github Container registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/metadata-action@v4
id: meta
with:
images: |
ghcr.io/mastodon/mastodon
flavor: |
latest=auto
tags: |
type=raw,value=nightly
type=schedule,pattern=nightly-{{date 'YYYY-MM-DD' tz='Etc/UTC'}}
labels: |
org.opencontainers.image.description=Nightly build image used for testing purposes
- name: Generate version suffix
id: version_vars
- id: version_vars
env:
TZ: Etc/UTC
run: |
echo mastodon_version_suffix=+nightly-$(date +'%Y%m%d') >> $GITHUB_OUTPUT
echo mastodon_version_prerelease=nightly.$(date +'%Y-%m-%d')>> $GITHUB_OUTPUT
outputs:
prerelease: ${{ steps.version_vars.outputs.mastodon_version_prerelease }}
- uses: docker/build-push-action@v4
with:
context: .
build-args: MASTODON_VERSION_SUFFIX=${{ steps.version_vars.outputs.mastodon_version_suffix }}
platforms: linux/amd64,linux/arm64
provenance: false
builder: ${{ steps.buildx.outputs.name }}
push: ${{ github.repository == 'mastodon/mastodon' && github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
build-image:
needs: compute-suffix
uses: ./.github/workflows/build-container-image.yml
with:
platforms: linux/amd64,linux/arm64
use_native_arm64_builder: false
cache: false
push_to_images: |
ghcr.io/${{ github.repository_owner }}/mastodon
version_prerelease: ${{ needs.compute-suffix.outputs.prerelease }}
labels: |
org.opencontainers.image.description=Nightly build image used for testing purposes
flavor: |
latest=true
tags: |
type=raw,value=edge
type=raw,value=nightly
type=schedule,pattern=${{ needs.compute-suffix.outputs.prerelease }}
secrets: inherit

41
.github/workflows/build-push-pr.yml vendored Normal file
View File

@@ -0,0 +1,41 @@
name: Build container image for PR
on:
pull_request:
types: [labeled, synchronize, reopened, ready_for_review, opened]
permissions:
contents: read
packages: write
jobs:
compute-suffix:
runs-on: ubuntu-latest
# This is only allowed to run if:
# - the PR branch is in the `mastodon/mastodon` repository
# - the PR is not a draft
# - the PR has the "build-image" label
if: ${{ github.event.pull_request.head.repo.full_name == github.repository && !github.event.pull_request.draft && contains(github.event.pull_request.labels.*.name, 'build-image') }}
steps:
# Repository needs to be cloned so `git rev-parse` below works
- name: Clone repository
uses: actions/checkout@v4
- id: version_vars
run: |
echo mastodon_version_metadata=pr-${{ github.event.pull_request.number }}-$(git rev-parse --short HEAD) >> $GITHUB_OUTPUT
outputs:
metadata: ${{ steps.version_vars.outputs.mastodon_version_metadata }}
build-image:
needs: compute-suffix
uses: ./.github/workflows/build-container-image.yml
with:
platforms: linux/amd64,linux/arm64
use_native_arm64_builder: false
push_to_images: |
ghcr.io/${{ github.repository_owner }}/mastodon
version_metadata: ${{ needs.compute-suffix.outputs.metadata }}
flavor: |
latest=auto
tags: |
type=ref,event=pr
secrets: inherit

28
.github/workflows/build-releases.yml vendored Normal file
View File

@@ -0,0 +1,28 @@
name: Build container release images
on:
push:
tags:
- '*'
permissions:
contents: read
packages: write
jobs:
build-image:
uses: ./.github/workflows/build-container-image.yml
with:
platforms: linux/amd64,linux/arm64
use_native_arm64_builder: false
push_to_images: |
ghcr.io/${{ github.repository_owner }}/mastodon
# Do not use cache when building releases, so apt update is always ran and the release always contain the latest packages
cache: false
# Only tag with latest when ran against the latest stable branch
# This needs to be updated after each minor version release
flavor: |
latest=${{ startsWith(github.ref, 'refs/tags/v4.2.') }}
tags: |
type=pep440,pattern={{raw}}
type=pep440,pattern=v{{major}}.{{minor}}
secrets: inherit

View File

@@ -25,7 +25,7 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Install native Ruby dependencies
run: sudo apt-get install -y libicu-dev libidn11-dev

View File

@@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install system dependencies
run: |

View File

@@ -27,7 +27,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL

77
.github/workflows/crowdin-download.yml vendored Normal file
View File

@@ -0,0 +1,77 @@
name: Crowdin / Download translations
on:
schedule:
- cron: '17 4 * * *' # Every day
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
download-translations:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Increase Git http.postBuffer
# This is needed due to a bug in Ubuntu's cURL version?
# See https://github.com/orgs/community/discussions/55820
run: |
git config --global http.version HTTP/1.1
git config --global http.postBuffer 157286400
# Download the translation files from Crowdin
- name: crowdin action
uses: crowdin/github-action@v1
with:
config: crowdin-glitch.yml
upload_sources: false
upload_translations: false
download_translations: true
crowdin_branch_name: main
push_translations: false
create_pull_request: false
env:
CROWDIN_PROJECT_ID: ${{ vars.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
# As the files are extracted from a Docker container, they belong to root:root
# We need to fix this before the next steps
- name: Fix file permissions
run: sudo chown -R runner:docker .
# This is needed to run the normalize step
- name: Install native Ruby dependencies
run: sudo apt-get install -y libicu-dev libidn11-dev
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Run i18n normalize task
run: bundle exec i18n-tasks normalize
# Create or update the pull request
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5.0.2
with:
commit-message: 'New Crowdin translations'
title: 'New Crowdin Translations (automated)'
author: 'GitHub Actions <noreply@github.com>'
body: |
New Crowdin translations, automated with Github Actions
See `.github/workflows/crowdin-download.yml`
This PR will be updated every day with new translations.
Due to a limitation in Github Actions, checks are not running on this PR without manual action.
If you want to run the checks, then close and re-open it.
branch: i18n/crowdin/translations
base: main
labels: i18n

36
.github/workflows/crowdin-upload.yml vendored Normal file
View File

@@ -0,0 +1,36 @@
name: Crowdin / Upload translations
on:
push:
branches:
- main
paths:
- crowdin.yml
- app/javascript/mastodon/locales/en.json
- config/locales/en.yml
- config/locales/simple_form.en.yml
- config/locales/activerecord.en.yml
- config/locales/devise.en.yml
- config/locales/doorkeeper.en.yml
- .github/workflows/crowdin-upload.yml
jobs:
upload-translations:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: crowdin action
uses: crowdin/github-action@v1
with:
config: crowdin-glitch.yml
upload_sources: true
upload_translations: false
download_translations: false
crowdin_branch_name: main
env:
CROWDIN_PROJECT_ID: ${{ vars.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

View File

@@ -33,7 +33,7 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3

View File

@@ -28,7 +28,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Install native Ruby dependencies
run: |

View File

@@ -37,7 +37,7 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3

View File

@@ -29,7 +29,7 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3

View File

@@ -29,7 +29,7 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3

View File

@@ -29,7 +29,7 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Install native Ruby dependencies
run: sudo apt-get install -y libicu-dev libidn11-dev

View File

@@ -31,7 +31,7 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3

View File

@@ -23,5 +23,5 @@ jobs:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
commentOnClean: This pull request has resolved merge conflicts and is ready for review.
commentOnDirty: This pull request has merge conflicts that must be resolved before it can be merged.
retryMax: 10
retryMax: 30
continueOnMissingPermissions: false

21
.github/workflows/test-image-build.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: Test container image build
on:
pull_request:
paths:
- .github/workflows/build-nightly.yml
- .github/workflows/build-push-pr.yml
- .github/workflows/build-releases.yml
- .github/workflows/test-image-build.yml
- Dockerfile
permissions:
contents: read
jobs:
build-image:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
uses: ./.github/workflows/build-container-image.yml
with:
platforms: linux/amd64 # Testing only on native platform so it is performant

View File

@@ -33,7 +33,7 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3

View File

@@ -70,7 +70,7 @@ jobs:
BUNDLE_RETRY: 3
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install native Ruby dependencies
run: |

View File

@@ -69,7 +69,7 @@ jobs:
BUNDLE_RETRY: 3
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install native Ruby dependencies
run: |

View File

@@ -32,7 +32,7 @@ jobs:
SECRET_KEY_BASE: precompile_placeholder
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v3
@@ -107,6 +107,10 @@ jobs:
PAM_ENABLED: true
PAM_DEFAULT_SERVICE: pam_test
PAM_CONTROLLED_SERVICE: pam_test_controlled
OIDC_ENABLED: true
OIDC_SCOPE: read
SAML_ENABLED: true
CAS_ENABLED: true
BUNDLE_WITH: 'pam_authentication test'
CI_JOBS: ${{ matrix.ci_job }}/4
@@ -123,7 +127,7 @@ jobs:
- 3
- 4
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
with:
@@ -149,3 +153,213 @@ jobs:
run: './bin/rails db:create db:schema:load db:seed'
- run: bundle exec rake rspec_chunked
test-e2e:
name: End to End testing
runs-on: ubuntu-latest
needs:
- build
services:
postgres:
image: postgres:14-alpine
env:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
redis:
image: redis:7-alpine
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 6379:6379
env:
DB_HOST: localhost
DB_USER: postgres
DB_PASS: postgres
DISABLE_SIMPLECOV: true
RAILS_ENV: test
BUNDLE_WITH: test
strategy:
fail-fast: false
matrix:
ruby-version:
- '3.0'
- '3.1'
- '.ruby-version'
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
with:
path: './public'
name: ${{ github.sha }}
- name: Update package index
run: sudo apt-get update
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: '.nvmrc'
- name: Install native Ruby dependencies
run: sudo apt-get install -y libicu-dev libidn11-dev
- name: Install additional system dependencies
run: sudo apt-get install -y ffmpeg imagemagick
- name: Set up bundler cache
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby-version}}
bundler-cache: true
- run: yarn --frozen-lockfile
- name: Load database schema
run: './bin/rails db:create db:schema:load db:seed'
- run: bundle exec rake spec:system
- name: Archive logs
uses: actions/upload-artifact@v3
if: failure()
with:
name: e2e-logs-${{ matrix.ruby-version }}
path: log/
- name: Archive test screenshots
uses: actions/upload-artifact@v3
if: failure()
with:
name: e2e-screenshots
path: tmp/screenshots/
test-search:
name: Testing search
runs-on: ubuntu-latest
needs:
- build
services:
postgres:
image: postgres:14-alpine
env:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
redis:
image: redis:7-alpine
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 6379:6379
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.13
env:
discovery.type: single-node
xpack.security.enabled: false
options: >-
--health-cmd "curl http://localhost:9200/_cluster/health"
--health-interval 10s
--health-timeout 5s
--health-retries 10
ports:
- 9200:9200
env:
DB_HOST: localhost
DB_USER: postgres
DB_PASS: postgres
DISABLE_SIMPLECOV: true
RAILS_ENV: test
BUNDLE_WITH: test
ES_ENABLED: true
ES_HOST: localhost
ES_PORT: 9200
strategy:
fail-fast: false
matrix:
ruby-version:
- '3.0'
- '3.1'
- '.ruby-version'
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
with:
path: './public'
name: ${{ github.sha }}
- name: Update package index
run: sudo apt-get update
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: '.nvmrc'
- name: Install native Ruby dependencies
run: sudo apt-get install -y libicu-dev libidn11-dev
- name: Install additional system dependencies
run: sudo apt-get install -y ffmpeg imagemagick
- name: Set up bundler cache
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby-version}}
bundler-cache: true
- run: yarn --frozen-lockfile
- name: Load database schema
run: './bin/rails db:create db:schema:load db:seed'
- run: bundle exec rake spec:search
- name: Archive logs
uses: actions/upload-artifact@v3
if: failure()
with:
name: test-search-logs-${{ matrix.ruby-version }}
path: log/
- name: Archive test screenshots
uses: actions/upload-artifact@v3
if: failure()
with:
name: test-search-screenshots
path: tmp/screenshots/

View File

@@ -1,17 +1,13 @@
# This configuration was generated by
# `haml-lint --auto-gen-config`
# on 2023-07-11 23:58:05 +0200 using Haml-Lint version 0.48.0.
# on 2023-07-20 09:47:50 -0400 using Haml-Lint version 0.48.0.
# The point is for the user to remove these configuration records
# one by one as the lints are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of Haml-Lint, may require this file to be generated again.
linters:
# Offense count: 94
RuboCop:
enabled: false
# Offense count: 960
# Offense count: 951
LineLength:
enabled: false
@@ -19,6 +15,10 @@ linters:
UnnecessaryStringOutput:
enabled: false
# Offense count: 57
RuboCop:
enabled: false
# Offense count: 3
ViewLength:
exclude:
@@ -26,27 +26,18 @@ linters:
- 'app/views/admin/reports/show.html.haml'
- 'app/views/disputes/strikes/show.html.haml'
# Offense count: 41
# Offense count: 32
InstanceVariables:
exclude:
- 'app/views/admin/reports/_actions.html.haml'
- 'app/views/admin/roles/_form.html.haml'
- 'app/views/admin/webhooks/_form.html.haml'
- 'app/views/auth/registrations/_sessions.html.haml'
- 'app/views/auth/registrations/_status.html.haml'
- 'app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml'
- 'app/views/authorize_interactions/_post_follow_actions.html.haml'
- 'app/views/invites/_form.html.haml'
- 'app/views/relationships/_account.html.haml'
- 'app/views/shared/_og.html.haml'
- 'app/views/statuses/_status.html.haml'
# Offense count: 6
ConsecutiveSilentScripts:
exclude:
- 'app/views/admin/settings/shared/_links.html.haml'
- 'app/views/settings/login_activities/_login_activity.html.haml'
- 'app/views/statuses/_poll.html.haml'
# Offense count: 3
IdNames:

2
.nvmrc
View File

@@ -1 +1 @@
16.20
20.7

View File

@@ -38,14 +38,7 @@ Layout/FirstHashElementIndentation:
# Reason: Currently disabled in .rubocop_todo.yml
# https://docs.rubocop.org/rubocop/cops_layout.html#layoutlinelength
Layout/LineLength:
AllowedPatterns:
# Allow comments to be long lines
- !ruby/regexp / \# .*$/
- !ruby/regexp /^\# .*$/
Exclude:
- 'lib/mastodon/cli/*.rb'
- db/*migrate/**/*
- db/seeds/**/*
Max: 320 # Default of 120 causes a duplicate entry in generated todo file
# Reason:
# https://docs.rubocop.org/rubocop/cops_lint.html#lintuselessaccessmodifier
@@ -131,12 +124,6 @@ RSpec/FilePath:
Exclude:
- 'spec/config/initializers/rack_attack_spec.rb' # namespaces usually have separate folder
- 'spec/lib/sanitize_config_spec.rb' # namespaces usually have separate folder
- 'spec/controllers/concerns/account_controller_concern_spec.rb' # Concerns describe ApplicationController and don't fit naming
- 'spec/controllers/concerns/export_controller_concern_spec.rb'
- 'spec/controllers/concerns/localized_spec.rb'
- 'spec/controllers/concerns/rate_limit_headers_spec.rb'
- 'spec/controllers/concerns/signature_verification_spec.rb'
- 'spec/controllers/concerns/user_tracking_concern_spec.rb'
# Reason:
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecnamedsubject

View File

@@ -1,6 +1,6 @@
# This configuration was generated by
# `rubocop --auto-gen-config --auto-gen-only-exclude --no-exclude-limit --no-offense-counts --no-auto-gen-timestamp`
# using RuboCop version 1.54.2.
# using RuboCop version 1.56.1.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
@@ -37,7 +37,14 @@ Layout/HashAlignment:
Layout/LeadingCommentSpace:
Exclude:
- 'config/application.rb'
- 'config/initializers/omniauth.rb'
- 'config/initializers/3_omniauth.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
# URISchemes: http, https
Layout/LineLength:
Exclude:
- 'app/models/account.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
@@ -54,38 +61,8 @@ Lint/EmptyBlock:
- 'spec/fabricators/access_token_fabricator.rb'
- 'spec/fabricators/conversation_fabricator.rb'
- 'spec/fabricators/system_key_fabricator.rb'
- 'spec/helpers/admin/action_logs_helper_spec.rb'
- 'spec/lib/activitypub/adapter_spec.rb'
- 'spec/models/account_alias_spec.rb'
- 'spec/models/account_deletion_request_spec.rb'
- 'spec/models/account_moderation_note_spec.rb'
- 'spec/models/announcement_mute_spec.rb'
- 'spec/models/announcement_reaction_spec.rb'
- 'spec/models/announcement_spec.rb'
- 'spec/models/backup_spec.rb'
- 'spec/models/conversation_mute_spec.rb'
- 'spec/models/custom_filter_keyword_spec.rb'
- 'spec/models/custom_filter_spec.rb'
- 'spec/models/device_spec.rb'
- 'spec/models/encrypted_message_spec.rb'
- 'spec/models/featured_tag_spec.rb'
- 'spec/models/follow_recommendation_suppression_spec.rb'
- 'spec/models/list_account_spec.rb'
- 'spec/models/list_spec.rb'
- 'spec/models/login_activity_spec.rb'
- 'spec/models/mute_spec.rb'
- 'spec/models/preview_card_spec.rb'
- 'spec/models/preview_card_trend_spec.rb'
- 'spec/models/relay_spec.rb'
- 'spec/models/scheduled_status_spec.rb'
- 'spec/models/status_stat_spec.rb'
- 'spec/models/status_trend_spec.rb'
- 'spec/models/system_key_spec.rb'
- 'spec/models/tag_follow_spec.rb'
- 'spec/models/unavailable_domain_spec.rb'
- 'spec/models/user_invite_request_spec.rb'
- 'spec/models/user_role_spec.rb'
- 'spec/models/web/setting_spec.rb'
Lint/NonLocalExitFromIterator:
Exclude:
@@ -109,10 +86,9 @@ Lint/UnusedBlockArgument:
Lint/UselessAssignment:
Exclude:
- 'app/services/activitypub/process_status_update_service.rb'
- 'config/initializers/omniauth.rb'
- 'config/initializers/3_omniauth.rb'
- 'db/migrate/20190511134027_add_silenced_at_suspended_at_to_accounts.rb'
- 'db/post_migrate/20190511152737_remove_suspended_silenced_account_fields.rb'
- 'spec/controllers/api/v1/bookmarks_controller_spec.rb'
- 'spec/controllers/api/v1/favourites_controller_spec.rb'
- 'spec/controllers/concerns/account_controller_concern_spec.rb'
- 'spec/helpers/jsonld_helper_spec.rb'
@@ -127,15 +103,9 @@ Lint/UselessAssignment:
- 'spec/services/resolve_url_service_spec.rb'
- 'spec/views/statuses/show.html.haml_spec.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: CheckForMethodsWithNoSideEffects.
Lint/Void:
Exclude:
- 'spec/services/resolve_account_service_spec.rb'
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
Metrics/AbcSize:
Max: 150
Max: 144
Exclude:
- 'app/serializers/initial_state_serializer.rb'
@@ -152,13 +122,6 @@ Metrics/CyclomaticComplexity:
Metrics/PerceivedComplexity:
Max: 27
# Configuration parameters: ExpectMatchingDefinition, CheckDefinitionPathHierarchy, CheckDefinitionPathHierarchyRoots, Regex, IgnoreExecutableScripts, AllowedAcronyms.
# CheckDefinitionPathHierarchyRoots: lib, spec, test, src
# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
Naming/FileName:
Exclude:
- 'config/locales/sr-Latn.rb'
# Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers, AllowedPatterns.
# SupportedStyles: snake_case, normalcase, non_integer
# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339, x86_64
@@ -174,12 +137,17 @@ Naming/VariableNumber:
- 'spec/models/user_spec.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Performance/UnfreezeString:
# Configuration parameters: SafeMultiline.
Performance/DeletePrefix:
Exclude:
- 'app/lib/rss/builder.rb'
- 'app/lib/text_formatter.rb'
- 'app/validators/status_length_validator.rb'
- 'lib/tasks/mastodon.rake'
- 'app/models/featured_tag.rb'
Performance/MapMethodChain:
Exclude:
- 'app/models/feed.rb'
- 'lib/mastodon/cli/maintenance.rb'
- 'spec/services/bulk_import_service_spec.rb'
- 'spec/services/import_service_spec.rb'
RSpec/AnyInstance:
Exclude:
@@ -200,41 +168,6 @@ RSpec/AnyInstance:
- 'spec/workers/activitypub/delivery_worker_spec.rb'
- 'spec/workers/web/push_notification_worker_spec.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
RSpec/EmptyExampleGroup:
Exclude:
- 'spec/helpers/admin/action_logs_helper_spec.rb'
- 'spec/models/account_alias_spec.rb'
- 'spec/models/account_deletion_request_spec.rb'
- 'spec/models/account_moderation_note_spec.rb'
- 'spec/models/announcement_mute_spec.rb'
- 'spec/models/announcement_reaction_spec.rb'
- 'spec/models/announcement_spec.rb'
- 'spec/models/backup_spec.rb'
- 'spec/models/conversation_mute_spec.rb'
- 'spec/models/custom_filter_keyword_spec.rb'
- 'spec/models/custom_filter_spec.rb'
- 'spec/models/device_spec.rb'
- 'spec/models/encrypted_message_spec.rb'
- 'spec/models/featured_tag_spec.rb'
- 'spec/models/follow_recommendation_suppression_spec.rb'
- 'spec/models/list_account_spec.rb'
- 'spec/models/list_spec.rb'
- 'spec/models/login_activity_spec.rb'
- 'spec/models/mute_spec.rb'
- 'spec/models/preview_card_spec.rb'
- 'spec/models/preview_card_trend_spec.rb'
- 'spec/models/relay_spec.rb'
- 'spec/models/scheduled_status_spec.rb'
- 'spec/models/status_stat_spec.rb'
- 'spec/models/status_trend_spec.rb'
- 'spec/models/system_key_spec.rb'
- 'spec/models/tag_follow_spec.rb'
- 'spec/models/unavailable_domain_spec.rb'
- 'spec/models/user_invite_request_spec.rb'
- 'spec/models/web/setting_spec.rb'
- 'spec/services/unmute_service_spec.rb'
# Configuration parameters: CountAsOne.
RSpec/ExampleLength:
Max: 22
@@ -287,7 +220,6 @@ RSpec/LetSetup:
- 'spec/controllers/api/v2/admin/accounts_controller_spec.rb'
- 'spec/controllers/api/v2/filters/keywords_controller_spec.rb'
- 'spec/controllers/api/v2/filters/statuses_controller_spec.rb'
- 'spec/controllers/api/v2/filters_controller_spec.rb'
- 'spec/controllers/auth/confirmations_controller_spec.rb'
- 'spec/controllers/auth/passwords_controller_spec.rb'
- 'spec/controllers/auth/sessions_controller_spec.rb'
@@ -297,6 +229,7 @@ RSpec/LetSetup:
- 'spec/controllers/oauth/tokens_controller_spec.rb'
- 'spec/controllers/settings/imports_controller_spec.rb'
- 'spec/lib/activitypub/activity/delete_spec.rb'
- 'spec/lib/vacuum/applications_vacuum_spec.rb'
- 'spec/lib/vacuum/preview_cards_vacuum_spec.rb'
- 'spec/models/account_spec.rb'
- 'spec/models/account_statuses_cleanup_policy_spec.rb'
@@ -367,43 +300,6 @@ Rails/ApplicationController:
Exclude:
- 'app/controllers/health_controller.rb'
# Configuration parameters: Database, Include.
# SupportedDatabases: mysql, postgresql
# Include: db/**/*.rb
Rails/BulkChangeTable:
Exclude:
- 'db/migrate/20160222143943_add_profile_fields_to_accounts.rb'
- 'db/migrate/20160223162837_add_metadata_to_statuses.rb'
- 'db/migrate/20160305115639_add_devise_to_users.rb'
- 'db/migrate/20160314164231_add_owner_to_application.rb'
- 'db/migrate/20160926213048_remove_owner_from_application.rb'
- 'db/migrate/20161003142332_add_confirmable_to_users.rb'
- 'db/migrate/20170112154826_migrate_settings.rb'
- 'db/migrate/20170127165745_add_devise_two_factor_to_users.rb'
- 'db/migrate/20170322143850_change_primary_key_to_bigint_on_statuses.rb'
- 'db/migrate/20170330021336_add_counter_caches.rb'
- 'db/migrate/20170425202925_add_oembed_to_preview_cards.rb'
- 'db/migrate/20170427011934_re_add_owner_to_application.rb'
- 'db/migrate/20170520145338_change_language_filter_to_opt_out.rb'
- 'db/migrate/20170624134742_add_description_to_session_activations.rb'
- 'db/migrate/20170718211102_add_activitypub_to_accounts.rb'
- 'db/migrate/20171006142024_add_uri_to_custom_emojis.rb'
- 'db/migrate/20180812123222_change_relays_enabled.rb'
- 'db/migrate/20190511134027_add_silenced_at_suspended_at_to_accounts.rb'
- 'db/migrate/20190805123746_add_capabilities_to_tags.rb'
- 'db/migrate/20190807135426_add_comments_to_domain_blocks.rb'
- 'db/migrate/20190815225426_add_last_status_at_to_tags.rb'
- 'db/migrate/20190901035623_add_max_score_to_tags.rb'
- 'db/migrate/20200417125749_add_storage_schema_version.rb'
- 'db/migrate/20200608113046_add_sign_in_token_to_users.rb'
- 'db/migrate/20211112011713_add_language_to_preview_cards.rb'
- 'db/migrate/20211231080958_add_category_to_reports.rb'
- 'db/migrate/20220202200743_add_trendable_to_accounts.rb'
- 'db/migrate/20220224010024_add_ips_to_email_domain_blocks.rb'
- 'db/migrate/20220227041951_add_last_used_at_to_oauth_access_tokens.rb'
- 'db/migrate/20220303000827_add_ordered_media_attachment_ids_to_status_edits.rb'
- 'db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb'
# Configuration parameters: Include.
# Include: db/**/*.rb
Rails/CreateTableWithTimestamps:
@@ -679,12 +575,12 @@ Style/FetchEnvVar:
- 'app/lib/translation_service.rb'
- 'config/environments/development.rb'
- 'config/environments/production.rb'
- 'config/initializers/2_whitelist_mode.rb'
- 'config/initializers/2_limited_federation_mode.rb'
- 'config/initializers/3_omniauth.rb'
- 'config/initializers/blacklists.rb'
- 'config/initializers/cache_buster.rb'
- 'config/initializers/content_security_policy.rb'
- 'config/initializers/devise.rb'
- 'config/initializers/omniauth.rb'
- 'config/initializers/paperclip.rb'
- 'config/initializers/vapid.rb'
- 'lib/mastodon/premailer_webpack_strategy.rb'
@@ -841,8 +737,6 @@ Style/RedundantConstantBase:
Exclude:
- 'config/environments/production.rb'
- 'config/initializers/sidekiq.rb'
- 'config/locales/sr-Latn.rb'
- 'config/locales/sr.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: SafeForConstants.
@@ -854,6 +748,15 @@ Style/RedundantFetchBlock:
- 'config/initializers/paperclip.rb'
- 'config/puma.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowMultipleReturnValues.
Style/RedundantReturn:
Exclude:
- 'app/controllers/api/v1/directories_controller.rb'
- 'app/controllers/auth/confirmations_controller.rb'
- 'app/lib/ostatus/tag_manager.rb'
- 'app/models/form/import.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods, MaxChainLength.
# AllowedMethods: present?, blank?, presence, try, try!
@@ -911,7 +814,7 @@ Style/StringLiterals:
# AllowedMethods: define_method, mail, respond_to
Style/SymbolProc:
Exclude:
- 'config/initializers/omniauth.rb'
- 'config/initializers/3_omniauth.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, AllowSafeAssignment.
@@ -944,9 +847,3 @@ Style/WordArray:
- 'config/initializers/cors.rb'
- 'spec/controllers/settings/imports_controller_spec.rb'
- 'spec/models/form/import_spec.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
# URISchemes: http, https
Layout/LineLength:
Max: 701

1680
AUTHORS.md

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,354 @@
All notable changes to this project will be documented in this file.
## [4.2.0] - 2023-09-21
The following changelog entries focus on changes visible to users, administrators, client developers or federated software developers, but there has also been a lot of code modernization, refactoring, and tooling work, in particular by [@danielmbrasil](https://github.com/danielmbrasil), [@mjankowski](https://github.com/mjankowski), [@nschonni](https://github.com/nschonni), [@renchap](https://github.com/renchap), and [@takayamaki](https://github.com/takayamaki).
### Added
- **Add full-text search of opted-in public posts and rework search operators** ([Gargron](https://github.com/mastodon/mastodon/pull/26485), [jsgoldstein](https://github.com/mastodon/mastodon/pull/26344), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26657), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26650), [jsgoldstein](https://github.com/mastodon/mastodon/pull/26659), [Gargron](https://github.com/mastodon/mastodon/pull/26660), [Gargron](https://github.com/mastodon/mastodon/pull/26663), [Gargron](https://github.com/mastodon/mastodon/pull/26688), [Gargron](https://github.com/mastodon/mastodon/pull/26689), [Gargron](https://github.com/mastodon/mastodon/pull/26686), [Gargron](https://github.com/mastodon/mastodon/pull/26687), [Gargron](https://github.com/mastodon/mastodon/pull/26692), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26697), [Gargron](https://github.com/mastodon/mastodon/pull/26699), [Gargron](https://github.com/mastodon/mastodon/pull/26701), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26710), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26739), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26754), [Gargron](https://github.com/mastodon/mastodon/pull/26662), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26755), [Gargron](https://github.com/mastodon/mastodon/pull/26781), [Gargron](https://github.com/mastodon/mastodon/pull/26782), [Gargron](https://github.com/mastodon/mastodon/pull/26760), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26756), [Gargron](https://github.com/mastodon/mastodon/pull/26784), [Gargron](https://github.com/mastodon/mastodon/pull/26807), [Gargron](https://github.com/mastodon/mastodon/pull/26835), [Gargron](https://github.com/mastodon/mastodon/pull/26847), [Gargron](https://github.com/mastodon/mastodon/pull/26834), [arbolitoloco1](https://github.com/mastodon/mastodon/pull/26893), [tribela](https://github.com/mastodon/mastodon/pull/26896), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26927), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26959), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/27014))
This introduces a new `public_statuses` Elasticsearch index for public posts by users who have opted in to their posts being searchable (`toot#indexable` flag).
This also revisits the other indexes to provide more useful indexing, and adds new search operators such as `from:me`, `before:2022-11-01`, `after:2022-11-01`, `during:2022-11-01`, `language:fr`, `has:poll`, or `in:library` (for searching only in posts you have written or interacted with).
Results are now ordered chronologically.
- **Add admin notifications for new Mastodon versions** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26582))
This is done by querying `https://api.joinmastodon.org/update-check` every 30 minutes in a background job.
That URL can be changed using the `UPDATE_CHECK_URL` environment variable, and the feature outright disabled by setting that variable to an empty string (`UPDATE_CHECK_URL=`).
- **Add “Privacy and reach” tab in profile settings** ([Gargron](https://github.com/mastodon/mastodon/pull/26484), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26508))
This reorganized scattered privacy and reach settings to a single place, as well as improve their wording.
- **Add display of out-of-band hashtags in the web interface** ([Gargron](https://github.com/mastodon/mastodon/pull/26492), [arbolitoloco1](https://github.com/mastodon/mastodon/pull/26497), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26506), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26525), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26606), [Gargron](https://github.com/mastodon/mastodon/pull/26666), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26960))
- **Add role badges to the web interface** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25649), [Gargron](https://github.com/mastodon/mastodon/pull/26281))
- **Add ability to pick domains to forward reports to using the `forward_to_domains` parameter in `POST /api/v1/reports`** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25866), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26636))
The `forward_to_domains` REST API parameter is a list of strings. If it is empty or omitted, the previous behavior is maintained.
The `forward` parameter still needs to be set for `forward_to_domains` to be taken into account.
The forwarded-to domains can only include that of the original author and people being replied to.
- **Add forwarding of reported replies to servers being replied to** ([Gargron](https://github.com/mastodon/mastodon/pull/25341), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26189))
- Add `ONE_CLICK_SSO_LOGIN` environment variable to directly link to the Single-Sign On provider if there is only one sign up method available ([CSDUMMI](https://github.com/mastodon/mastodon/pull/26083), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26368), [CSDUMMI](https://github.com/mastodon/mastodon/pull/26857), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26901))
- **Add webhook templating** ([Gargron](https://github.com/mastodon/mastodon/pull/23289))
- **Add webhooks for local `status.created`, `status.updated`, `account.updated` and `report.updated`** ([VyrCossont](https://github.com/mastodon/mastodon/pull/24133), [VyrCossont](https://github.com/mastodon/mastodon/pull/24243), [VyrCossont](https://github.com/mastodon/mastodon/pull/24211))
- **Add exclusive lists** ([dariusk, necropolina](https://github.com/mastodon/mastodon/pull/22048), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25324))
- **Add a confirmation screen when suspending a domain** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25144), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25603))
- **Add support for importing lists** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25203), [mgmn](https://github.com/mastodon/mastodon/pull/26120), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26372))
- **Add optional hCaptcha support** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25019), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25057), [Gargron](https://github.com/mastodon/mastodon/pull/25395), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26388))
- **Add lines to threads in web UI** ([Gargron](https://github.com/mastodon/mastodon/pull/24549), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24677), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24696), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24711), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24714), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24713), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24715), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24800), [teeerevor](https://github.com/mastodon/mastodon/pull/25706), [renchap](https://github.com/mastodon/mastodon/pull/25807))
- **Add new onboarding flow to web UI** ([Gargron](https://github.com/mastodon/mastodon/pull/24619), [Gargron](https://github.com/mastodon/mastodon/pull/24646), [Gargron](https://github.com/mastodon/mastodon/pull/24705), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24872), [ThisIsMissEm](https://github.com/mastodon/mastodon/pull/24883), [Gargron](https://github.com/mastodon/mastodon/pull/24954), [stevenjlm](https://github.com/mastodon/mastodon/pull/24959), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25010), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25275), [Gargron](https://github.com/mastodon/mastodon/pull/25559), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25561))
- **Add auto-refresh of accounts we get new messages/edits of** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26510))
- **Add Elasticsearch cluster health check and indexes mismatch check to dashboard** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26448), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26605), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26658))
- Add `hide_collections`, `discoverable` and `indexable` attributes to credentials API ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26998))
- Add `S3_ENABLE_CHECKSUM_MODE` environment variable to enable checksum verification on compatible S3-providers ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26435))
- Add admin API for managing tags ([rrgeorge](https://github.com/mastodon/mastodon/pull/26872))
- Add a link to hashtag timelines from the Trending hashtags moderation interface ([gunchleoc](https://github.com/mastodon/mastodon/pull/26724))
- Add timezone to datetimes in e-mails ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26822))
- Add `authorized_fetch` server setting in addition to env var ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25798), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26958))
- Add avatar image to webfinger responses ([tvler](https://github.com/mastodon/mastodon/pull/26558))
- Add debug logging on signature verification failure ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26637), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26812))
- Add explicit error messages when DeepL quota is exceeded ([lutoma](https://github.com/mastodon/mastodon/pull/26704))
- Add Elasticsearch/OpenSearch version to “Software” in admin dashboard ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26652))
- Add `data-nosnippet` attribute to remote posts and local posts with `noindex` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26648))
- Add support for federating `memorial` attribute ([rrgeorge](https://github.com/mastodon/mastodon/pull/26583))
- Add Cherokee and Kalmyk to languages dropdown ([gunchleoc](https://github.com/mastodon/mastodon/pull/26012), [gunchleoc](https://github.com/mastodon/mastodon/pull/26013))
- Add `DELETE /api/v1/profile/avatar` and `DELETE /api/v1/profile/header` to the REST API ([danielmbrasil](https://github.com/mastodon/mastodon/pull/25124), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26573))
- Add `ES_PRESET` option to customize numbers of shards and replicas ([Gargron](https://github.com/mastodon/mastodon/pull/26483), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26489))
This can have a value of `single_node_cluster` (default), `small_cluster` (uses one replica) or `large_cluster` (uses one replica and a higher number of shards).
- Add `CACHE_BUSTER_HTTP_METHOD` environment variable ([renchap](https://github.com/mastodon/mastodon/pull/26528), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26542))
- Add support for `DB_PASS` when using `DATABASE_URL` ([ThisIsMissEm](https://github.com/mastodon/mastodon/pull/26295))
- Add `GET /api/v1/instance/languages` to REST API ([danielmbrasil](https://github.com/mastodon/mastodon/pull/24443))
- Add primary key to `preview_cards_statuses` join table ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25243), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26384), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26447), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26737), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26979))
- Add client-side timeout on resend confirmation button ([Gargron](https://github.com/mastodon/mastodon/pull/26300))
- Add published date and author to news on the explore screen in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/26155))
- Add `lang` attribute to various UI components ([c960657](https://github.com/mastodon/mastodon/pull/23869), [c960657](https://github.com/mastodon/mastodon/pull/23891), [c960657](https://github.com/mastodon/mastodon/pull/26111), [c960657](https://github.com/mastodon/mastodon/pull/26149))
- Add stricter protocol fields validation for accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25937))
- Add support for Azure blob storage ([mistydemeo](https://github.com/mastodon/mastodon/pull/23607), [mistydemeo](https://github.com/mastodon/mastodon/pull/26080))
- Add toast with option to open post after publishing in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/25564), [Signez](https://github.com/mastodon/mastodon/pull/25919), [Gargron](https://github.com/mastodon/mastodon/pull/26664))
- Add canonical link tags in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/25715))
- Add button to see results for polls in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/25726))
- Add at-symbol prepended to mention span title ([forsamori](https://github.com/mastodon/mastodon/pull/25684))
- Add users index on `unconfirmed_email` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25672), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25702))
- Add superapp index on `oauth_applications` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25670))
- Add index to backups on `user_id` column ([mjankowski](https://github.com/mastodon/mastodon/pull/25647))
- Add onboarding prompt when home feed too slow in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/25267), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25556), [Gargron](https://github.com/mastodon/mastodon/pull/25579), [renchap](https://github.com/mastodon/mastodon/pull/25580), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25581), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25617), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25917), [Gargron](https://github.com/mastodon/mastodon/pull/26829), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26935))
- Add `POST /api/v1/conversations/:id/unread` API endpoint to mark a conversation as unread ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25509))
- Add `translate="no"` to outgoing mentions and links ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25524))
- Add unsubscribe link and headers to e-mails ([Gargron](https://github.com/mastodon/mastodon/pull/25378), [c960657](https://github.com/mastodon/mastodon/pull/26085))
- Add logging of websocket send errors ([ThisIsMissEm](https://github.com/mastodon/mastodon/pull/25280))
- Add time zone preference ([Gargron](https://github.com/mastodon/mastodon/pull/25342), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26025))
- Add `legal` as report category ([Gargron](https://github.com/mastodon/mastodon/pull/23941), [renchap](https://github.com/mastodon/mastodon/pull/25400), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26509))
- Add `data-nosnippet` so Google doesn't use trending posts in snippets for `/` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25279))
- Add card with who invited you to join when displaying rules on sign-up ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23475))
- Add missing primary keys to `accounts_tags` and `statuses_tags` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25210))
- Add support for custom sign-up URLs ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25014), [renchap](https://github.com/mastodon/mastodon/pull/25108), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25190), [mgmn](https://github.com/mastodon/mastodon/pull/25531))
This is set using `SSO_ACCOUNT_SIGN_UP` and reflected in the REST API by adding `registrations.sign_up_url` to the `/api/v2/instance` endpoint.
- Add polling and automatic redirection to `/start` on email confirmation ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25013))
- Add ability to block sign-ups from IP using the CLI ([danielmbrasil](https://github.com/mastodon/mastodon/pull/24870))
- Add ALT badges to media that has alternative text in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/24782), [c960657](https://github.com/mastodon/mastodon/pull/26166)
- Add ability to include accounts with pending follow requests in lists ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19727), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24810))
- Add trend management to admin API ([rrgeorge](https://github.com/mastodon/mastodon/pull/24257))
- `POST /api/v1/admin/trends/statuses/:id/approve`
- `POST /api/v1/admin/trends/statuses/:id/reject`
- `POST /api/v1/admin/trends/links/:id/approve`
- `POST /api/v1/admin/trends/links/:id/reject`
- `POST /api/v1/admin/trends/tags/:id/approve`
- `POST /api/v1/admin/trends/tags/:id/reject`
- `GET /api/v1/admin/trends/links/publishers`
- `POST /api/v1/admin/trends/links/publishers/:id/approve`
- `POST /api/v1/admin/trends/links/publishers/:id/reject`
- Add user handle to notification mail recipient address ([HeitorMC](https://github.com/mastodon/mastodon/pull/24240))
- Add progress indicator to sign-up flow ([Gargron](https://github.com/mastodon/mastodon/pull/24545))
- Add client-side validation for taken username in sign-up form ([Gargron](https://github.com/mastodon/mastodon/pull/24546))
- Add `--approve` option to `tootctl accounts create` ([danielmbrasil](https://github.com/mastodon/mastodon/pull/24533))
- Add “In Memoriam” banner back to profiles ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23591), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/23614))
This adds the `memorial` attribute to the `Account` REST API entity.
- Add colour to follow button when hashtag is being followed ([c960657](https://github.com/mastodon/mastodon/pull/24361))
- Add further explanations to the profile link verification instructions ([drzax](https://github.com/mastodon/mastodon/pull/19723))
- Add a link to Identity provider's account settings from the account settings ([CSDUMMI](https://github.com/mastodon/mastodon/pull/24100), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24628))
- Add support for streaming server to connect to postgres with self-signed certs through the `sslmode` URL parameter ([ramuuns](https://github.com/mastodon/mastodon/pull/21431))
- Add support for specifying S3 storage classes through the `S3_STORAGE_CLASS` environment variable ([hyl](https://github.com/mastodon/mastodon/pull/22480))
- Add support for incoming rich text ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23913))
- Add support for Ruby 3.2 ([tenderlove](https://github.com/mastodon/mastodon/pull/22928), [casperisfine](https://github.com/mastodon/mastodon/pull/24142), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24202), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26934))
- Add API parameter to safeguard unexpected mentions in new posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18350))
### Changed
- **Change hashtags to be displayed separately when they are the last line of a post** ([renchap](https://github.com/mastodon/mastodon/pull/26499), [renchap](https://github.com/mastodon/mastodon/pull/26614), [renchap](https://github.com/mastodon/mastodon/pull/26615))
- **Change reblogs to be excluded from "Posts and replies" tab in web UI** ([Gargron](https://github.com/mastodon/mastodon/pull/26302))
- **Change interaction modal in web interface** ([Gargron, ClearlyClaire](https://github.com/mastodon/mastodon/pull/26075), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26269), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26268), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26267), [mgmn](https://github.com/mastodon/mastodon/pull/26459), [tribela](https://github.com/mastodon/mastodon/pull/26461), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26593), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26795))
- **Change design of link previews in web UI** ([Gargron](https://github.com/mastodon/mastodon/pull/26136), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26151), [Gargron](https://github.com/mastodon/mastodon/pull/26153), [Gargron](https://github.com/mastodon/mastodon/pull/26250), [Gargron](https://github.com/mastodon/mastodon/pull/26287), [Gargron](https://github.com/mastodon/mastodon/pull/26286), [c960657](https://github.com/mastodon/mastodon/pull/26184))
- **Change "direct message" nomenclature to "private mention" in web UI** ([Gargron](https://github.com/mastodon/mastodon/pull/24248))
- **Change translation feature to cover Content Warnings, poll options and media descriptions** ([c960657](https://github.com/mastodon/mastodon/pull/24175), [S-H-GAMELINKS](https://github.com/mastodon/mastodon/pull/25251), [c960657](https://github.com/mastodon/mastodon/pull/26168), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26452))
- **Change account search to match by text when opted-in** ([jsgoldstein](https://github.com/mastodon/mastodon/pull/25599), [Gargron](https://github.com/mastodon/mastodon/pull/26378))
- **Change import feature to be clearer, less error-prone and more reliable** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21054), [mgmn](https://github.com/mastodon/mastodon/pull/24874))
- **Change local and federated timelines to be tabs of a single “Live feeds” column** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25641), [Gargron](https://github.com/mastodon/mastodon/pull/25683), [mgmn](https://github.com/mastodon/mastodon/pull/25694), [Plastikmensch](https://github.com/mastodon/mastodon/pull/26247), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26633))
- **Change user archive export to be faster and more reliable, and export `.zip` archives instead of `.tar.gz` ones** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23360), [TheEssem](https://github.com/mastodon/mastodon/pull/25034))
- **Change `mastodon-streaming` systemd unit files to be templated** ([e-nomem](https://github.com/mastodon/mastodon/pull/24751))
- **Change `statsd` integration to disable sidekiq metrics by default** ([mjankowski](https://github.com/mastodon/mastodon/pull/25265), [mjankowski](https://github.com/mastodon/mastodon/pull/25336), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26310))
This deprecates `statsd` support and disables the sidekiq integration unless `STATSD_SIDEKIQ` is set to `true`.
This is because the `nsa` gem is unmaintained, and its sidekiq integration is known to add very significant overhead.
Later versions of Mastodon will have other ways to get the same metrics.
- **Change replica support to native Rails adapter** ([krainboltgreene](https://github.com/mastodon/mastodon/pull/25693), [Gargron](https://github.com/mastodon/mastodon/pull/25849), [Gargron](https://github.com/mastodon/mastodon/pull/25874), [Gargron](https://github.com/mastodon/mastodon/pull/25851), [Gargron](https://github.com/mastodon/mastodon/pull/25977), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26074), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26326), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26386), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26856))
This is a breaking change, dropping `makara` support, and requiring you to update your database configuration if you are using replicas.
To tell Mastodon to use a read replica, you can either set the `REPLICA_DB_NAME` environment variable (along with `REPLICA_DB_USER`, `REPLICA_DB_PASS`, `REPLICA_DB_HOST`, and `REPLICA_DB_PORT`, if they differ from the primary database), or the `REPLICA_DATABASE_URL` environment variable if your configuration is based on `DATABASE_URL`.
- Change DCT method used for JPEG encoding to float ([electroCutie](https://github.com/mastodon/mastodon/pull/26675))
- Change from `node-redis` to `ioredis` for streaming ([gmemstr](https://github.com/mastodon/mastodon/pull/26581))
- Change private statuses index to index without crutches ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26713))
- Change video compression parameters ([Gargron](https://github.com/mastodon/mastodon/pull/26631), [Gargron](https://github.com/mastodon/mastodon/pull/26745), [Gargron](https://github.com/mastodon/mastodon/pull/26766), [Gargron](https://github.com/mastodon/mastodon/pull/26970))
- Change admin e-mail notification settings to be their own settings group ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26596))
- Change opacity of the delete icon in the search field to be more visible ([AntoninDelFabbro](https://github.com/mastodon/mastodon/pull/26449))
- Change Account Search to prioritize username over display name ([jsgoldstein](https://github.com/mastodon/mastodon/pull/26623))
- Change follow recommendation materialized view to be faster in most cases ([renchap, ClearlyClaire](https://github.com/mastodon/mastodon/pull/26545))
- Change `robots.txt` to block GPTBot ([Foritus](https://github.com/mastodon/mastodon/pull/26396))
- Change header of hashtag timelines in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/26362), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26416))
- Change streaming `/metrics` to include additional metrics ([ThisIsMissEm](https://github.com/mastodon/mastodon/pull/26299), [ThisIsMissEm](https://github.com/mastodon/mastodon/pull/26945))
- Change indexing frequency from 5 minutes to 1 minute, add locks to schedulers ([Gargron](https://github.com/mastodon/mastodon/pull/26304))
- Change column link to add a better keyboard focus indicator ([teeerevor](https://github.com/mastodon/mastodon/pull/26278))
- Change poll form element colors to fit with the rest of the ui ([teeerevor](https://github.com/mastodon/mastodon/pull/26139), [teeerevor](https://github.com/mastodon/mastodon/pull/26162), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26164))
- Change 'favourite' to 'favorite' for American English ([marekr](https://github.com/mastodon/mastodon/pull/24667), [gunchleoc](https://github.com/mastodon/mastodon/pull/26009), [nabijaczleweli](https://github.com/mastodon/mastodon/pull/26109))
- Change ActivityStreams representation of suspended accounts to not use a blank `name` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25276))
- Change focus UI for keyboard only input ([teeerevor](https://github.com/mastodon/mastodon/pull/25935), [Gargron](https://github.com/mastodon/mastodon/pull/26125), [Gargron](https://github.com/mastodon/mastodon/pull/26767))
- Change thread view to scroll to the selected post rather than the post being replied to ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24685))
- Change links in multi-column mode so tabs are open in single-column mode ([Signez](https://github.com/mastodon/mastodon/pull/25893), [Signez](https://github.com/mastodon/mastodon/pull/26070), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25973), [Signez](https://github.com/mastodon/mastodon/pull/26019), [Signez](https://github.com/mastodon/mastodon/pull/26759))
- Change searching with `#` to include account index ([jsgoldstein](https://github.com/mastodon/mastodon/pull/25638))
- Change label and design of sensitive and unavailable media in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/25712), [Gargron](https://github.com/mastodon/mastodon/pull/26135), [Gargron](https://github.com/mastodon/mastodon/pull/26330))
- Change button colors to increase hover/focus contrast and consistency ([teeerevor](https://github.com/mastodon/mastodon/pull/25677), [Gargron](https://github.com/mastodon/mastodon/pull/25679))
- Change dropdown icon above compose form from ellipsis to bars in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/25661))
- Change header backgrounds to use fewer different colors in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/25577))
- Change files to be deleted in batches instead of one-by-one ([Gargron](https://github.com/mastodon/mastodon/pull/23302), [S-H-GAMELINKS](https://github.com/mastodon/mastodon/pull/25586), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25587))
- Change emoji picker icon ([iparr](https://github.com/mastodon/mastodon/pull/25479))
- Change edit profile page ([Gargron](https://github.com/mastodon/mastodon/pull/25413), [c960657](https://github.com/mastodon/mastodon/pull/26538))
- Change "bot" label to "automated" ([Gargron](https://github.com/mastodon/mastodon/pull/25356))
- Change design of dropdowns in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/25107))
- Change wording of “Content cache retention period” setting to highlight destructive implications ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23261))
- Change autolinking to allow carets in URL search params ([renchap](https://github.com/mastodon/mastodon/pull/25216))
- Change share action from being in action bar to being in dropdown in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/25105))
- Change sessions to be ordered from most-recent to least-recently updated ([frankieroberto](https://github.com/mastodon/mastodon/pull/25005))
- Change vacuum scheduler to also delete expired tokens and unused application records ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24868), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24871))
- Change "Sign in" to "Login" ([Gargron](https://github.com/mastodon/mastodon/pull/24942))
- Change domain suspensions to also be checked before trying to fetch unknown remote resources ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24535))
- Change media components to use aspect-ratio rather than compute height themselves ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24686), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24943), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26801))
- Change logo version in header based on screen size in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/24707))
- Change label from "For you" to "People" on explore screen in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/24706))
- Change logged-out WebUI HTML pages to be cached for a few seconds ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24708))
- Change unauthenticated responses to be cached in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/24348), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24662), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24665))
- Change HTTP caching logic ([Gargron](https://github.com/mastodon/mastodon/pull/24347), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24604))
- Change hashtags and mentions in bios to open in-app in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/24643))
- Change styling of the recommended accounts to allow bio to be more visible ([chike00](https://github.com/mastodon/mastodon/pull/24480))
- Change account search in moderation interface to allow searching by username including the leading `@` ([HeitorMC](https://github.com/mastodon/mastodon/pull/24242))
- Change all components to use the same error page in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/24512))
- Change search pop-out in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/24305))
- Change user settings to be stored in a more optimal way ([Gargron](https://github.com/mastodon/mastodon/pull/23630), [c960657](https://github.com/mastodon/mastodon/pull/24321), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24453), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24460), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24558), [Gargron](https://github.com/mastodon/mastodon/pull/24761), [Gargron](https://github.com/mastodon/mastodon/pull/24783), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25508), [jsgoldstein](https://github.com/mastodon/mastodon/pull/25340), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26884), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/27012))
- Change media upload limits and remove client-side resizing ([Gargron](https://github.com/mastodon/mastodon/pull/23726))
- Change design of account rows in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/24247), [Gargron](https://github.com/mastodon/mastodon/pull/24343), [Gargron](https://github.com/mastodon/mastodon/pull/24956), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25131))
- Change log-out to use Single Logout when using external log-in through OIDC ([CSDUMMI](https://github.com/mastodon/mastodon/pull/24020))
- Change sidekiq-bulk's batch size from 10,000 to 1,000 jobs in one Redis call ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24034))
- Change translation to only be offered for supported languages ([c960657](https://github.com/mastodon/mastodon/pull/23879), [c960657](https://github.com/mastodon/mastodon/pull/24037))
This adds the `/api/v1/instance/translation_languages` REST API endpoint that returns an object with the supported translation language pairs in the form:
```json
{
"fr": ["en", "de"]
}
```
(where `fr` is a supported source language and `en` and `de` or supported output language when translating a `fr` string)
- Change compose form checkbox to native input with `appearance: none` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22949))
- Change posts' clickable area to be larger ([c960657](https://github.com/mastodon/mastodon/pull/23621))
- Change `followed_by` link to `location=all` if account is local on /admin/accounts/:id page ([tribela](https://github.com/mastodon/mastodon/pull/23467))
### Removed
- **Remove support for Node.js 14** ([renchap](https://github.com/mastodon/mastodon/pull/25198))
- **Remove support for Ruby 2.7** ([nschonni](https://github.com/mastodon/mastodon/pull/24237))
- **Remove clustering from streaming API** ([ThisIsMissEm](https://github.com/mastodon/mastodon/pull/24655))
- **Remove anonymous access to the streaming API** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23989))
- Remove obfuscation of reply count in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/26768))
- Remove `kmr` from language selection, as it was a duplicate for `ku` ([gunchleoc](https://github.com/mastodon/mastodon/pull/26014), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26787))
- Remove 16:9 cropping from web UI ([Gargron](https://github.com/mastodon/mastodon/pull/26132))
- Remove back button from bookmarks, favourites and lists screens in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/26126))
- Remove display name input from sign-up form ([Gargron](https://github.com/mastodon/mastodon/pull/24704))
- Remove `tai` locale ([c960657](https://github.com/mastodon/mastodon/pull/23880))
- Remove empty Kushubian (csb) local files ([nschonni](https://github.com/mastodon/mastodon/pull/24151))
- Remove `Permissions-Policy` header from all responses ([Gargron](https://github.com/mastodon/mastodon/pull/24124))
### Fixed
- **Fix filters not being applying in the explore page** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25887))
- **Fix being unable to load past a full page of filtered posts in Home timeline** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24930))
- **Fix log-in flow when involving both OAuth and external authentication** ([CSDUMMI](https://github.com/mastodon/mastodon/pull/24073))
- **Fix broken links in account gallery** ([c960657](https://github.com/mastodon/mastodon/pull/24218))
- **Fix migration handler not updating lists** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24808))
- Fix crash when viewing a moderation appeal and the moderator account has been deleted ([xrobau](https://github.com/mastodon/mastodon/pull/25900))
- Fix error in Web UI when server rules cannot be fetched ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26957))
- Fix paragraph margins resulting in irregular read-more cut-off in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/26828))
- Fix notification permissions being requested immediately after login ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26472))
- Fix performances of profile directory ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26840), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26842))
- Fix mute button and volume slider feeling disconnected in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/26827), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26860))
- Fix “Scoped order is ignored, it's forced to be batch order.” warnings ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26793))
- Fix blocked domain appearing in account feeds ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26823))
- Fix invalid `Content-Type` header for WebP images ([c960657](https://github.com/mastodon/mastodon/pull/26773))
- Fix minor inefficiencies in `tootctl search deploy` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26721))
- Fix filter form in profiles directory overflowing instead of wrapping ([arbolitoloco1](https://github.com/mastodon/mastodon/pull/26682))
- Fix sign up steps progress layout in right-to-left locales ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26728))
- Fix bug with “favorited by” and “reblogged by“ view on posts only showing up to 40 items ([timothyjrogers](https://github.com/mastodon/mastodon/pull/26577), [timothyjrogers](https://github.com/mastodon/mastodon/pull/26574))
- Fix bad search type heuristic ([Gargron](https://github.com/mastodon/mastodon/pull/26673))
- Fix not being able to negate prefix clauses in search ([Gargron](https://github.com/mastodon/mastodon/pull/26672))
- Fix timeout on invalid set of exclusionary parameters in `/api/v1/timelines/public` ([danielmbrasil](https://github.com/mastodon/mastodon/pull/26239))
- Fix adding column with default value taking longer on Postgres >= 11 ([Gargron](https://github.com/mastodon/mastodon/pull/26375))
- Fix light theme select option for hashtags ([teeerevor](https://github.com/mastodon/mastodon/pull/26311))
- Fix AVIF attachments ([c960657](https://github.com/mastodon/mastodon/pull/26264))
- Fix incorrect URL normalization when fetching remote resources ([c960657](https://github.com/mastodon/mastodon/pull/26219), [c960657](https://github.com/mastodon/mastodon/pull/26285))
- Fix being unable to filter posts for individual Chinese languages ([gunchleoc](https://github.com/mastodon/mastodon/pull/26066))
- Fix preview card sometimes linking to 4xx error pages ([c960657](https://github.com/mastodon/mastodon/pull/26200))
- Fix emoji picker button scrolling with textarea content in single-column view ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25304))
- Fix missing border on error screen in light theme in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/26152))
- Fix UI overlap with the loupe icon in the Explore Tab ([gol-cha](https://github.com/mastodon/mastodon/pull/26113))
- Fix unexpected redirection to `/explore` after sign-in ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26143))
- Fix `/api/v1/statuses/:id/unfavourite` and `/api/v1/statuses/:id/unreblog` returning non-updated counts ([c960657](https://github.com/mastodon/mastodon/pull/24365))
- Fix clicking the “Back” button sometimes leading out of Mastodon ([c960657](https://github.com/mastodon/mastodon/pull/23953), [CSFlorin](https://github.com/mastodon/mastodon/pull/24835), [S-H-GAMELINKS](https://github.com/mastodon/mastodon/pull/24867), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25281))
- Fix processing of `null` ActivityPub activities ([tribela](https://github.com/mastodon/mastodon/pull/26021))
- Fix hashtag posts not being removed from home feed on hashtag unfollow ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26028))
- Fix for "follows you" indicator in light web UI not readable ([vmstan](https://github.com/mastodon/mastodon/pull/25993))
- Fix incorrect line break between icon and number of reposts & favourites ([edent](https://github.com/mastodon/mastodon/pull/26004))
- Fix sounds not being loaded from assets host ([Signez](https://github.com/mastodon/mastodon/pull/25931))
- Fix buttons showing inconsistent styles ([teeerevor](https://github.com/mastodon/mastodon/pull/25903), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25965), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26341), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/26482))
- Fix trend calculation working on too many items at a time ([Gargron](https://github.com/mastodon/mastodon/pull/25835))
- Fix dropdowns being disabled for logged out users in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/25714), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25964))
- Fix explore page being inaccessible when opted-out of trends in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/25716))
- Fix re-activated accounts possibly getting deleted by `AccountDeletionWorker` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25711))
- Fix `/api/v2/search` not working with following query param ([danielmbrasil](https://github.com/mastodon/mastodon/pull/25681))
- Fix inefficient query when requesting a new confirmation email from a logged-in account ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25669))
- Fix unnecessary concurrent calls to `/api/*/instance` in web UI ([mgmn](https://github.com/mastodon/mastodon/pull/25663))
- Fix resolving local URL for remote content ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25637))
- Fix search not being easily findable on smaller screens in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/25576), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25631))
- Fix j/k keyboard shortcuts on some status lists ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25554))
- Fix missing validation on `default_privacy` setting ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25513))
- Fix incorrect pagination headers in `/api/v2/admin/accounts` ([danielmbrasil](https://github.com/mastodon/mastodon/pull/25477))
- Fix non-interactive upload container being given a `button` role and tabIndex ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25462))
- Fix always redirecting to onboarding in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/25396))
- Fix inconsistent use of middle dot (·) instead of bullet (•) to separate items ([j-f1](https://github.com/mastodon/mastodon/pull/25248))
- Fix spacing of middle dots in the detailed status meta section ([j-f1](https://github.com/mastodon/mastodon/pull/25247))
- Fix prev/next buttons color in media viewer ([renchap](https://github.com/mastodon/mastodon/pull/25231))
- Fix email addresses not being properly updated in `tootctl maintenance fix-duplicates` ([mjankowski](https://github.com/mastodon/mastodon/pull/25118))
- Fix unicode surrogate pairs sometimes being broken in page title ([eai04191](https://github.com/mastodon/mastodon/pull/25148))
- Fix various inefficient queries against account domains ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25126))
- Fix video player offering to expand in a lightbox when it's in an `iframe` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25067))
- Fix post embed previews ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25071))
- Fix inadequate error handling in several API controllers when given invalid parameters ([danielmbrasil](https://github.com/mastodon/mastodon/pull/24947), [danielmbrasil](https://github.com/mastodon/mastodon/pull/24958), [danielmbrasil](https://github.com/mastodon/mastodon/pull/25063), [danielmbrasil](https://github.com/mastodon/mastodon/pull/25072), [danielmbrasil](https://github.com/mastodon/mastodon/pull/25386), [danielmbrasil](https://github.com/mastodon/mastodon/pull/25595))
- Fix uncaught `ActiveRecord::StatementInvalid` in Mastodon::IpBlocksCLI ([danielmbrasil](https://github.com/mastodon/mastodon/pull/24861))
- Fix various edge cases with local moves ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24812))
- Fix `tootctl accounts cull` crashing when encountering a domain resolving to a private address ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23378))
- Fix `tootctl accounts approve --number N` not aproving the N earliest registrations ([danielmbrasil](https://github.com/mastodon/mastodon/pull/24605))
- Fix being unable to clear media description when editing posts ([c960657](https://github.com/mastodon/mastodon/pull/24720))
- Fix unavailable translations not falling back to English ([mgmn](https://github.com/mastodon/mastodon/pull/24727))
- Fix anonymous visitors getting a session cookie on first visit ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24584), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24650), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24664))
- Fix cutting off first letter of hashtag links sometimes in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/24623))
- Fix crash in `tootctl accounts create --reattach --force` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24557), [danielmbrasil](https://github.com/mastodon/mastodon/pull/24680))
- Fix characters being emojified even when using Variation Selector 15 (text) ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20949), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/24615))
- Fix uncaught ActiveRecord::StatementInvalid exception in `Mastodon::AccountsCLI#approve` ([danielmbrasil](https://github.com/mastodon/mastodon/pull/24590))
- Fix email confirmation skip option in `tootctl accounts modify USERNAME --email EMAIL --confirm` ([danielmbrasil](https://github.com/mastodon/mastodon/pull/24578))
- Fix tooltip for dates without time ([c960657](https://github.com/mastodon/mastodon/pull/24244))
- Fix missing loading spinner and loading more on scroll in Private Mentions column ([c960657](https://github.com/mastodon/mastodon/pull/24446))
- Fix account header image missing from `/settings/profile` on narrow screens ([c960657](https://github.com/mastodon/mastodon/pull/24433))
- Fix height of announcements not being updated when using reduced animations ([c960657](https://github.com/mastodon/mastodon/pull/24354))
- Fix inconsistent radius in advanced interface drawer ([thislight](https://github.com/mastodon/mastodon/pull/24407))
- Fix loading more trending posts on scroll in the advanced interface ([OmmyZhang](https://github.com/mastodon/mastodon/pull/24314))
- Fix poll ending notification for edited polls ([c960657](https://github.com/mastodon/mastodon/pull/24311))
- Fix max width of media in `/about` and `/privacy-policy` ([mgmn](https://github.com/mastodon/mastodon/pull/24180))
- Fix streaming API not being usable without `DATABASE_URL` ([Gargron](https://github.com/mastodon/mastodon/pull/23960))
- Fix external authentication not running onboarding code for new users ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23458))
## [4.1.8] - 2023-09-19
### Fixed
- Fix post edits not being forwarded as expected ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26936))
- Fix moderator rights inconsistencies ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26729))
- Fix crash when encountering invalid URL ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26814))
- Fix cached posts including stale stats ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26409))
- Fix uploading of video files for which `ffprobe` reports `0/0` average framerate ([NicolaiSoeborg](https://github.com/mastodon/mastodon/pull/26500))
- Fix unexpected audio stream transcoding when uploaded video is eligible to passthrough ([yufushiro](https://github.com/mastodon/mastodon/pull/26608))
### Security
- Fix missing HTML sanitization in translation API (CVE-2023-42452, [GHSA-2693-xr3m-jhqr](https://github.com/mastodon/mastodon/security/advisories/GHSA-2693-xr3m-jhqr))
- Fix incorrect domain name normalization (CVE-2023-42451, [GHSA-v3xf-c9qf-j667](https://github.com/mastodon/mastodon/security/advisories/GHSA-v3xf-c9qf-j667))
## [4.1.7] - 2023-09-05
### Changed
- Change remote report processing to accept reports with long comments, but truncate them ([ThisIsMissEm](https://github.com/mastodon/mastodon/pull/25028))
### Fixed
- **Fix blocking subdomains of an already-blocked domain** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26392))
- Fix `/api/v1/timelines/tag/:hashtag` allowing for unauthenticated access when public preview is disabled ([danielmbrasil](https://github.com/mastodon/mastodon/pull/26237))
- Fix inefficiencies in `PlainTextFormatter` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26727))
## [4.1.6] - 2023-07-31
### Fixed
- Fix memory leak in streaming server ([ThisIsMissEm](https://github.com/mastodon/mastodon/pull/26228))
- Fix wrong filters sometimes applying in streaming ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26159), [ThisIsMissEm](https://github.com/mastodon/mastodon/pull/26213), [renchap](https://github.com/mastodon/mastodon/pull/26233))
- Fix incorrect connect timeout in outgoing requests ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26116))
## [4.1.5] - 2023-07-21
### Added
- Add check preventing Sidekiq workers from running with Makara configured ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25850))
### Changed
- Change request timeout handling to use a longer deadline ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26055))
### Fixed
- Fix moderation interface for remote instances with a .zip TLD ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25885))
- Fix remote accounts being possibly persisted to database with incomplete protocol values ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25886))
- Fix trending publishers table not rendering correctly on narrow screens ([vmstan](https://github.com/mastodon/mastodon/pull/25945))
### Security
- Fix CSP headers being unintentionally wide ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/26105))
## [4.1.4] - 2023-07-07
### Fixed

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1.4
# This needs to be bullseye-slim because the Ruby image is built on bullseye-slim
ARG NODE_VERSION="16.20-bullseye-slim"
# This needs to be bookworm-slim because the Ruby image is built on bookworm-slim
ARG NODE_VERSION="20.6-bookworm-slim"
FROM ghcr.io/moritzheiber/ruby-jemalloc:3.2.2-slim as ruby
FROM node:${NODE_VERSION} as build
@@ -17,10 +17,11 @@ COPY Gemfile* package.json yarn.lock /opt/mastodon/
# hadolint ignore=DL3008
RUN apt-get update && \
apt-get -yq dist-upgrade && \
apt-get install -y --no-install-recommends build-essential \
git \
libicu-dev \
libidn11-dev \
libidn-dev \
libpq-dev \
libjemalloc-dev \
zlib1g-dev \
@@ -42,8 +43,8 @@ RUN apt-get update && \
FROM node:${NODE_VERSION}
# Use those args to specify your own version flags & suffixes
ARG MASTODON_VERSION_FLAGS=""
ARG MASTODON_VERSION_SUFFIX=""
ARG MASTODON_VERSION_PRERELEASE=""
ARG MASTODON_VERSION_METADATA=""
ARG UID="991"
ARG GID="991"
@@ -64,13 +65,13 @@ RUN apt-get update && \
apt-get -y --no-install-recommends install whois \
wget \
procps \
libssl1.1 \
libssl3 \
libpq5 \
imagemagick \
ffmpeg \
libjemalloc2 \
libicu67 \
libidn11 \
libicu72 \
libidn12 \
libyaml-0-2 \
file \
ca-certificates \
@@ -89,8 +90,8 @@ ENV RAILS_ENV="production" \
NODE_ENV="production" \
RAILS_SERVE_STATIC_FILES="true" \
BIND="0.0.0.0" \
MASTODON_VERSION_FLAGS="${MASTODON_VERSION_FLAGS}" \
MASTODON_VERSION_SUFFIX="${MASTODON_VERSION_SUFFIX}"
MASTODON_VERSION_PRERELEASE="${MASTODON_VERSION_PRERELEASE}" \
MASTODON_VERSION_METADATA="${MASTODON_VERSION_METADATA}"
# Set the run user
USER mastodon

View File

@@ -27,4 +27,5 @@ More information on HTTP Signatures, as well as examples, can be found here: htt
- Linked-Data Signatures: https://docs.joinmastodon.org/spec/security/#ld
- Bearcaps: https://docs.joinmastodon.org/spec/bearcaps/
- Followers collection synchronization: https://git.activitypub.dev/ActivityPubDev/Fediverse-Enhancement-Proposals/src/branch/main/feps/fep-8fcf.md
- Followers collection synchronization: https://codeberg.org/fediverse/fep/src/branch/main/fep/8fcf/fep-8fcf.md
- Search indexing consent for actors: https://codeberg.org/fediverse/fep/src/branch/main/fep/5feb/fep-5feb.md

31
Gemfile
View File

@@ -18,6 +18,7 @@ gem 'aws-sdk-s3', '~> 1.123', require: false
gem 'fog-core', '<= 2.4.0'
gem 'fog-openstack', '~> 0.3', require: false
gem 'kt-paperclip', '~> 7.2'
gem 'md-paperclip-azure', '~> 2.2', require: false
gem 'blurhash', '~> 0.1'
gem 'active_model_serializers', '~> 0.10'
@@ -34,11 +35,14 @@ group :pam_authentication, optional: true do
end
gem 'net-ldap', '~> 0.18'
gem 'omniauth-cas', '~> 2.0'
gem 'omniauth-saml', '~> 1.10'
# TODO: Point back at released omniauth-cas gem when PR merged
# https://github.com/dlindahl/omniauth-cas/pull/68
gem 'omniauth-cas', github: 'stanhu/omniauth-cas', ref: '4211e6d05941b4a981f9a36b49ec166cecd0e271'
gem 'omniauth-saml', '~> 2.0'
gem 'omniauth_openid_connect', '~> 0.6.1'
gem 'omniauth', '~> 1.9'
gem 'omniauth-rails_csrf_protection', '~> 0.1'
gem 'omniauth', '~> 2.0'
gem 'omniauth-rails_csrf_protection', '~> 1.0'
gem 'color_diff', '~> 0.1'
gem 'discard', '~> 1.2'
@@ -55,8 +59,9 @@ gem 'httplog', '~> 1.6.2'
gem 'idn-ruby', require: 'idn'
gem 'kaminari', '~> 1.2'
gem 'link_header', '~> 0.0'
gem 'mime-types', '~> 3.4.1', require: 'mime/types/columnar'
gem 'mime-types', '~> 3.5.0', require: 'mime/types/columnar'
gem 'nokogiri', '~> 1.15'
gem 'nsa', github: 'jhawthorn/nsa', ref: 'e020fcc3a54d993ab45b7194d89ab720296c111b'
gem 'oj', '~> 3.14'
gem 'ox', '~> 2.14'
gem 'parslet'
@@ -98,9 +103,6 @@ gem 'rdf-normalize', '~> 0.5'
gem 'private_address_check', '~> 0.5'
group :test do
# RSpec runner for rails
gem 'rspec-rails', '~> 6.0'
# Used to split testing into chunks in CI
gem 'rspec_chunked', '~> 0.6'
@@ -108,10 +110,14 @@ group :test do
gem 'fuubar', '~> 2.5'
# Extra RSpec extenion methods and helpers for sidekiq
gem 'rspec-sidekiq', '~> 3.1'
gem 'rspec-sidekiq', '~> 4.0'
# Browser integration testing
gem 'capybara', '~> 3.39'
gem 'selenium-webdriver'
# Used to reset the database between system tests
gem 'database_cleaner-active_record'
# Used to mock environment variables
gem 'climate_control', '~> 0.2'
@@ -172,10 +178,17 @@ group :development do
# Validate missing i18n keys
gem 'i18n-tasks', '~> 1.0', require: false
end
group :development, :test do
# Profiling tools
gem 'memory_profiler', require: false
gem 'ruby-prof', require: false
gem 'stackprof', require: false
gem 'test-prof'
# RSpec runner for rails
gem 'rspec-rails', '~> 6.0'
end
group :production do

View File

@@ -7,6 +7,17 @@ GIT
hkdf (~> 0.2)
jwt (~> 2.0)
GIT
remote: https://github.com/jhawthorn/nsa.git
revision: e020fcc3a54d993ab45b7194d89ab720296c111b
ref: e020fcc3a54d993ab45b7194d89ab720296c111b
specs:
nsa (0.2.8)
activesupport (>= 4.2, < 7.2)
concurrent-ruby (~> 1.0, >= 1.0.2)
sidekiq (>= 3.5)
statsd-ruby (~> 1.4, >= 1.4.0)
GIT
remote: https://github.com/mastodon/rails-settings-cached.git
revision: 86328ef0bd04ce21cc0504ff5e334591e8c2ccab
@@ -15,50 +26,60 @@ GIT
rails-settings-cached (0.6.6)
rails (>= 4.2.0)
GIT
remote: https://github.com/stanhu/omniauth-cas.git
revision: 4211e6d05941b4a981f9a36b49ec166cecd0e271
ref: 4211e6d05941b4a981f9a36b49ec166cecd0e271
specs:
omniauth-cas (2.0.0)
addressable (~> 2.3)
nokogiri (~> 1.5)
omniauth (>= 1.2, < 3)
GEM
remote: https://rubygems.org/
specs:
actioncable (7.0.6)
actionpack (= 7.0.6)
activesupport (= 7.0.6)
actioncable (7.0.8)
actionpack (= 7.0.8)
activesupport (= 7.0.8)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (7.0.6)
actionpack (= 7.0.6)
activejob (= 7.0.6)
activerecord (= 7.0.6)
activestorage (= 7.0.6)
activesupport (= 7.0.6)
actionmailbox (7.0.8)
actionpack (= 7.0.8)
activejob (= 7.0.8)
activerecord (= 7.0.8)
activestorage (= 7.0.8)
activesupport (= 7.0.8)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
actionmailer (7.0.6)
actionpack (= 7.0.6)
actionview (= 7.0.6)
activejob (= 7.0.6)
activesupport (= 7.0.6)
actionmailer (7.0.8)
actionpack (= 7.0.8)
actionview (= 7.0.8)
activejob (= 7.0.8)
activesupport (= 7.0.8)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.0)
actionpack (7.0.6)
actionview (= 7.0.6)
activesupport (= 7.0.6)
actionpack (7.0.8)
actionview (= 7.0.8)
activesupport (= 7.0.8)
rack (~> 2.0, >= 2.2.4)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actiontext (7.0.6)
actionpack (= 7.0.6)
activerecord (= 7.0.6)
activestorage (= 7.0.6)
activesupport (= 7.0.6)
actiontext (7.0.8)
actionpack (= 7.0.8)
activerecord (= 7.0.8)
activestorage (= 7.0.8)
activesupport (= 7.0.8)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.0.6)
activesupport (= 7.0.6)
actionview (7.0.8)
activesupport (= 7.0.8)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
@@ -68,27 +89,27 @@ GEM
activemodel (>= 4.1, < 7.1)
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
activejob (7.0.6)
activesupport (= 7.0.6)
activejob (7.0.8)
activesupport (= 7.0.8)
globalid (>= 0.3.6)
activemodel (7.0.6)
activesupport (= 7.0.6)
activerecord (7.0.6)
activemodel (= 7.0.6)
activesupport (= 7.0.6)
activestorage (7.0.6)
actionpack (= 7.0.6)
activejob (= 7.0.6)
activerecord (= 7.0.6)
activesupport (= 7.0.6)
activemodel (7.0.8)
activesupport (= 7.0.8)
activerecord (7.0.8)
activemodel (= 7.0.8)
activesupport (= 7.0.8)
activestorage (7.0.8)
actionpack (= 7.0.8)
activejob (= 7.0.8)
activerecord (= 7.0.8)
activesupport (= 7.0.8)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (7.0.6)
activesupport (7.0.8)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
addressable (2.8.4)
addressable (2.8.5)
public_suffix (>= 2.0.2, < 6.0)
aes_key_wrap (1.1.0)
airbrussh (1.4.1)
@@ -103,8 +124,8 @@ GEM
attr_required (1.0.1)
awrence (1.2.1)
aws-eventstream (1.2.0)
aws-partitions (1.786.0)
aws-sdk-core (3.178.0)
aws-partitions (1.809.0)
aws-sdk-core (3.181.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
@@ -112,12 +133,21 @@ GEM
aws-sdk-kms (1.71.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.130.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sdk-s3 (1.133.0)
aws-sdk-core (~> 3, >= 3.181.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.6)
aws-sigv4 (1.6.0)
aws-eventstream (~> 1, >= 1.0.2)
azure-storage-blob (2.0.3)
azure-storage-common (~> 2.0)
nokogiri (~> 1, >= 1.10.8)
azure-storage-common (2.0.4)
faraday (~> 1.0)
faraday_middleware (~> 1.0, >= 1.0.0.rc1)
net-http-persistent (~> 4.0)
nokogiri (~> 1, >= 1.10.8)
base64 (0.1.1)
bcrypt (3.1.18)
better_errors (2.10.1)
erubi (>= 1.0.0)
@@ -136,7 +166,7 @@ GEM
blurhash (0.1.7)
bootsnap (1.16.0)
msgpack (~> 1.2)
brakeman (6.0.0)
brakeman (6.0.1)
browser (5.3.1)
brpoplpush-redis_script (0.1.3)
concurrent-ruby (~> 1.0, >= 1.0.5)
@@ -173,7 +203,7 @@ GEM
activesupport
cbor (0.5.9.6)
charlock_holmes (0.7.7)
chewy (7.3.3)
chewy (7.3.4)
activesupport (>= 5.2)
elasticsearch (>= 7.12.0, < 7.14.0)
elasticsearch-dsl
@@ -191,6 +221,10 @@ GEM
crass (1.0.6)
css_parser (1.14.0)
addressable
database_cleaner-active_record (2.1.0)
activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
date (3.3.3)
debug_inspector (1.1.0)
devise (4.9.2)
@@ -236,7 +270,7 @@ GEM
tzinfo
excon (0.100.0)
fabrication (2.30.0)
faker (3.2.0)
faker (3.2.1)
i18n (>= 1.8.11, < 2)
faraday (1.10.3)
faraday-em_http (~> 1.0)
@@ -261,6 +295,8 @@ GEM
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday (~> 1.0)
fast_blank (1.0.1)
fastimage (2.2.7)
ffi (1.15.5)
@@ -288,7 +324,7 @@ GEM
ruby-progressbar (~> 1.4)
globalid (1.1.0)
activesupport (>= 5.0)
haml (6.1.1)
haml (6.1.2)
temple (>= 0.8.2)
thor
tilt
@@ -297,7 +333,7 @@ GEM
activesupport (>= 5.1)
haml (>= 4.0.6)
railties (>= 5.1)
haml_lint (0.48.0)
haml_lint (0.50.0)
haml (>= 4.0, < 6.2)
parallel (~> 1.10)
rainbow
@@ -373,7 +409,7 @@ GEM
activerecord
kaminari-core (= 1.2.2)
kaminari-core (1.2.2)
kt-paperclip (7.2.0)
kt-paperclip (7.2.1)
activemodel (>= 4.2.0)
activesupport (>= 4.2.0)
marcel (~> 1.0.1)
@@ -393,7 +429,7 @@ GEM
llhttp-ffi (0.4.0)
ffi-compiler (~> 1.0)
rake (~> 13.0)
lograge (0.12.0)
lograge (0.13.0)
actionpack (>= 4)
activesupport (>= 4)
railties (>= 4)
@@ -410,20 +446,26 @@ GEM
mario-redis-lock (1.2.1)
redis (>= 3.0.5)
matrix (0.4.2)
md-paperclip-azure (2.2.0)
addressable (~> 2.5)
azure-storage-blob (~> 2.0.1)
hashie (~> 5.0)
memory_profiler (1.0.1)
method_source (1.0.0)
mime-types (3.4.1)
mime-types (3.5.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2023.0218.1)
mini_mime (1.1.2)
mini_portile2 (2.8.2)
minitest (5.18.1)
mime-types-data (3.2023.0808)
mini_mime (1.1.5)
mini_portile2 (2.8.4)
minitest (5.19.0)
msgpack (1.7.1)
multi_json (1.15.0)
multipart-post (2.3.0)
net-http (0.3.2)
uri
net-imap (0.3.6)
net-http-persistent (4.0.2)
connection_pool (~> 2.2)
net-imap (0.3.7)
date
net-protocol
net-ldap (0.18.0)
@@ -437,23 +479,20 @@ GEM
net-protocol
net-ssh (7.1.0)
nio4r (2.5.9)
nokogiri (1.15.3)
nokogiri (1.16.2)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
oj (3.15.0)
omniauth (1.9.2)
oj (3.16.1)
omniauth (2.1.1)
hashie (>= 3.4.6)
rack (>= 1.6.2, < 3)
omniauth-cas (2.0.0)
addressable (~> 2.3)
nokogiri (~> 1.5)
omniauth (~> 1.2)
omniauth-rails_csrf_protection (0.1.2)
rack (>= 2.2.3)
rack-protection
omniauth-rails_csrf_protection (1.0.1)
actionpack (>= 4.2)
omniauth (>= 1.3.1)
omniauth-saml (1.10.3)
omniauth (~> 1.3, >= 1.3.2)
ruby-saml (~> 1.9)
omniauth (~> 2.0)
omniauth-saml (2.1.0)
omniauth (~> 2.0)
ruby-saml (~> 1.12)
omniauth_openid_connect (0.6.1)
omniauth (>= 1.9, < 3)
openid_connect (~> 1.1)
@@ -472,7 +511,7 @@ GEM
openssl-signature_algorithm (1.3.0)
openssl (> 2.0)
orm_adapter (0.5.0)
ox (2.14.16)
ox (2.14.17)
parallel (1.23.0)
parser (3.2.2.3)
ast (~> 2.4.1)
@@ -480,8 +519,8 @@ GEM
parslet (2.0.0)
pastel (0.8.0)
tty-color (~> 0.5)
pg (1.5.3)
pghero (3.3.3)
pg (1.5.5)
pghero (3.3.4)
activerecord (>= 6)
posix-spawn (0.3.15)
premailer (1.21.0)
@@ -494,15 +533,15 @@ GEM
premailer (~> 1.7, >= 1.7.9)
private_address_check (0.5.0)
public_suffix (5.0.3)
puma (6.3.0)
puma (6.3.1)
nio4r (~> 2.0)
pundit (2.3.0)
activesupport (>= 3.0.0)
raabro (1.4.0)
racc (1.7.1)
rack (2.2.7)
rack-attack (6.6.1)
rack (>= 1.0, < 3)
rack (2.2.8)
rack-attack (6.7.0)
rack (>= 1.0, < 4)
rack-cors (2.0.1)
rack (>= 2.0.0)
rack-oauth2 (1.21.3)
@@ -511,30 +550,33 @@ GEM
httpclient
json-jwt (>= 1.11.0)
rack (>= 2.1.0)
rack-protection (3.0.5)
rack
rack-proxy (0.7.6)
rack
rack-test (2.1.0)
rack (>= 1.3)
rails (7.0.6)
actioncable (= 7.0.6)
actionmailbox (= 7.0.6)
actionmailer (= 7.0.6)
actionpack (= 7.0.6)
actiontext (= 7.0.6)
actionview (= 7.0.6)
activejob (= 7.0.6)
activemodel (= 7.0.6)
activerecord (= 7.0.6)
activestorage (= 7.0.6)
activesupport (= 7.0.6)
rails (7.0.8)
actioncable (= 7.0.8)
actionmailbox (= 7.0.8)
actionmailer (= 7.0.8)
actionpack (= 7.0.8)
actiontext (= 7.0.8)
actionview (= 7.0.8)
activejob (= 7.0.8)
activemodel (= 7.0.8)
activerecord (= 7.0.8)
activestorage (= 7.0.8)
activesupport (= 7.0.8)
bundler (>= 1.15.0)
railties (= 7.0.6)
railties (= 7.0.8)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
activesupport (>= 5.0.1.rc1)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
rails-dom-testing (2.1.1)
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
rails-html-sanitizer (1.6.0)
loofah (~> 2.21)
@@ -542,9 +584,9 @@ GEM
rails-i18n (7.0.7)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
railties (7.0.6)
actionpack (= 7.0.6)
activesupport (= 7.0.6)
railties (7.0.8)
actionpack (= 7.0.8)
activesupport (= 7.0.8)
method_source
rake (>= 12.2)
thor (~> 1.0)
@@ -553,7 +595,7 @@ GEM
rake (13.0.6)
rdf (3.2.11)
link_header (~> 0.0, >= 0.0.8)
rdf-normalize (0.6.0)
rdf-normalize (0.6.1)
rdf (~> 3.2)
redcarpet (3.6.0)
redis (4.8.1)
@@ -567,7 +609,7 @@ GEM
responders (3.1.0)
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.2.5)
rexml (3.2.6)
rotp (6.2.2)
rouge (4.1.2)
rpam2 (4.0.2)
@@ -591,12 +633,15 @@ GEM
rspec-expectations (~> 3.12)
rspec-mocks (~> 3.12)
rspec-support (~> 3.12)
rspec-sidekiq (3.1.0)
rspec-core (~> 3.0, >= 3.0.0)
sidekiq (>= 2.4.0)
rspec-support (3.12.0)
rspec-sidekiq (4.0.1)
rspec-core (~> 3.0)
rspec-expectations (~> 3.0)
rspec-mocks (~> 3.0)
sidekiq (>= 5, < 8)
rspec-support (3.12.1)
rspec_chunked (0.6)
rubocop (1.54.2)
rubocop (1.56.3)
base64 (~> 0.1.1)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
@@ -604,7 +649,7 @@ GEM
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.28.0, < 2.0)
rubocop-ast (>= 1.28.1, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.29.0)
@@ -613,17 +658,18 @@ GEM
rubocop (~> 1.41)
rubocop-factory_bot (2.23.1)
rubocop (~> 1.33)
rubocop-performance (1.18.0)
rubocop-performance (1.19.0)
rubocop (>= 1.7.0, < 2.0)
rubocop-ast (>= 0.4.0)
rubocop-rails (2.20.2)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
rubocop-rspec (2.22.0)
rubocop-rspec (2.23.2)
rubocop (~> 1.33)
rubocop-capybara (~> 2.17)
rubocop-factory_bot (~> 2.22)
ruby-prof (1.6.3)
ruby-progressbar (1.13.0)
ruby-saml (1.15.0)
nokogiri (>= 1.13.10)
@@ -640,6 +686,10 @@ GEM
scenic (1.7.0)
activerecord (>= 4.0.0)
railties (>= 4.0.0)
selenium-webdriver (4.11.0)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
semantic_range (3.0.0)
sidekiq (6.5.9)
connection_pool (>= 2.2.5, < 3)
@@ -651,7 +701,7 @@ GEM
rufus-scheduler (~> 3.2)
sidekiq (>= 6, < 8)
tilt (>= 1.4.0)
sidekiq-unique-jobs (7.1.29)
sidekiq-unique-jobs (7.1.33)
brpoplpush-redis_script (> 0.1.1, <= 2.0.0)
concurrent-ruby (~> 1.0, >= 1.0.5)
redis (< 5.0)
@@ -680,7 +730,8 @@ GEM
net-scp (>= 1.1.2)
net-ssh (>= 2.8.0)
stackprof (0.2.25)
stoplight (3.0.1)
statsd-ruby (1.5.0)
stoplight (3.0.2)
redlock (~> 1.0)
strong_migrations (0.8.0)
activerecord (>= 5.2)
@@ -694,6 +745,7 @@ GEM
unicode-display_width (>= 1.1.1, < 3)
terrapin (0.6.0)
climate_control (>= 0.0.3, < 1.0)
test-prof (1.2.3)
thor (1.2.2)
tilt (2.2.0)
timeout (0.4.0)
@@ -743,7 +795,7 @@ GEM
webfinger (1.2.0)
activesupport
httpclient (>= 2.4)
webmock (3.18.1)
webmock (3.19.1)
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
@@ -752,14 +804,15 @@ GEM
rack-proxy (>= 0.6.1)
railties (>= 5.2)
semantic_range (>= 2.3.0)
websocket-driver (0.7.5)
websocket (1.2.9)
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
wisper (2.0.1)
xorcist (1.1.3)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.8)
zeitwerk (2.6.11)
PLATFORMS
ruby
@@ -788,6 +841,7 @@ DEPENDENCIES
color_diff (~> 0.1)
concurrent-ruby
connection_pool
database_cleaner-active_record
devise (~> 4.9)
devise-two-factor (~> 4.1)
devise_pam_authenticatable2 (~> 9.2)
@@ -822,16 +876,18 @@ DEPENDENCIES
link_header (~> 0.0)
lograge (~> 0.12)
mario-redis-lock (~> 1.2)
md-paperclip-azure (~> 2.2)
memory_profiler
mime-types (~> 3.4.1)
mime-types (~> 3.5.0)
net-http (~> 0.3.2)
net-ldap (~> 0.18)
nokogiri (~> 1.15)
nsa!
oj (~> 3.14)
omniauth (~> 1.9)
omniauth-cas (~> 2.0)
omniauth-rails_csrf_protection (~> 0.1)
omniauth-saml (~> 1.10)
omniauth (~> 2.0)
omniauth-cas!
omniauth-rails_csrf_protection (~> 1.0)
omniauth-saml (~> 2.0)
omniauth_openid_connect (~> 0.6.1)
ox (~> 2.14)
parslet
@@ -857,17 +913,19 @@ DEPENDENCIES
redis-namespace (~> 1.10)
rqrcode (~> 2.2)
rspec-rails (~> 6.0)
rspec-sidekiq (~> 3.1)
rspec-sidekiq (~> 4.0)
rspec_chunked (~> 0.6)
rubocop
rubocop-capybara
rubocop-performance
rubocop-rails
rubocop-rspec
ruby-prof
ruby-progressbar (~> 1.13)
rubyzip (~> 2.3)
sanitize (~> 6.0)
scenic (~> 1.7)
selenium-webdriver
sidekiq (~> 6.5)
sidekiq-bulk (~> 0.2.0)
sidekiq-scheduler (~> 5.0)
@@ -880,6 +938,7 @@ DEPENDENCIES
stackprof
stoplight (~> 3.0.1)
strong_migrations (~> 0.8)
test-prof
thor (~> 1.2)
tty-prompt (~> 0.23)
twitter-text (~> 3.1.0)

View File

@@ -1,4 +1,4 @@
web: env PORT=3000 RAILS_ENV=development bundle exec puma -C config/puma.rb
sidekiq: env PORT=3000 RAILS_ENV=development bundle exec sidekiq
stream: env PORT=4000 yarn run start
webpack: ./bin/webpack-dev-server --listen-host 0.0.0.0
webpack: bin/webpack-dev-server

View File

@@ -1,8 +1,11 @@
# Security Policy
If you believe you've identified a security vulnerability in Mastodon (a bug that allows something to happen that shouldn't be possible), you can reach us at <security@joinmastodon.org>.
If you believe you've identified a security vulnerability in Mastodon (a bug that allows something to happen that shouldn't be possible), you can either:
You should _not_ report such issues on GitHub or in other public spaces to give us time to publish a fix for the issue without exposing Mastodon's users to increased risk.
- open a [Github security issue on the Mastodon project](https://github.com/mastodon/mastodon/security/advisories/new)
- reach us at <security@joinmastodon.org>
You should _not_ report such issues on public GitHub issues or in other public spaces to give us time to publish a fix for the issue without exposing Mastodon's users to increased risk.
## Scope
@@ -10,9 +13,9 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through
## Supported Versions
| Version | Supported |
| ------- | --------- |
| 4.1.x | Yes |
| 4.0.x | Yes |
| 3.5.x | Yes |
| < 3.5 | No |
| Version | Supported |
| ------- | ---------------- |
| 4.1.x | Yes |
| 4.0.x | Until 2023-10-31 |
| 3.5.x | Until 2023-12-31 |
| < 3.5 | No |

44
Vagrantfile vendored
View File

@@ -60,6 +60,38 @@ sudo usermod -a -G rvm $USER
SCRIPT
$provisionElasticsearch = <<SCRIPT
# Install Elastic Search
sudo apt install openjdk-17-jre-headless -y
sudo wget -O /usr/share/keyrings/elasticsearch.asc https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/elasticsearch.asc] https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'
sudo apt update
sudo apt install elasticsearch -y
sudo systemctl daemon-reload
sudo systemctl enable --now elasticsearch
echo 'path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["localhost"]
cluster.initial_master_nodes: ["node-1"]
xpack.security.enabled: false' > /etc/elasticsearch/elasticsearch.yml
sudo systemctl restart elasticsearch
# Install Kibana
sudo apt install kibana -y
sudo systemctl enable --now kibana
echo 'server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]' > /etc/kibana/kibana.yml
sudo systemctl restart kibana
SCRIPT
$provisionB = <<SCRIPT
source "/etc/profile.d/rvm.sh"
@@ -102,10 +134,8 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.provider :virtualbox do |vb|
vb.name = "mastodon"
vb.customize ["modifyvm", :id, "--memory", "4096"]
# Increase the number of CPUs. Uncomment and adjust to
# increase performance
# vb.customize ["modifyvm", :id, "--cpus", "3"]
vb.customize ["modifyvm", :id, "--memory", "8192"]
vb.customize ["modifyvm", :id, "--cpus", "3"]
# Disable VirtualBox DNS proxy to skip long-delay IPv6 resolutions.
# https://github.com/mitchellh/vagrant/issues/1172
@@ -141,9 +171,15 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.network :forwarded_port, guest: 3000, host: 3000
config.vm.network :forwarded_port, guest: 4000, host: 4000
config.vm.network :forwarded_port, guest: 8080, host: 8080
config.vm.network :forwarded_port, guest: 9200, host: 9200
config.vm.network :forwarded_port, guest: 9300, host: 9300
config.vm.network :forwarded_port, guest: 9243, host: 9243
config.vm.network :forwarded_port, guest: 5601, host: 5601
# Full provisioning script, only runs on first 'vagrant up' or with 'vagrant provision'
config.vm.provision :shell, inline: $provisionA, privileged: false, reset: true
# Run with elevated privileges for Elasticsearch installation
config.vm.provision :shell, inline: $provisionElasticsearch, privileged: true
config.vm.provision :shell, inline: $provisionB, privileged: false
config.vm.post_up_message = <<MESSAGE

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
class AccountsIndex < Chewy::Index
settings index: { refresh_interval: '30s' }, analysis: {
settings index: index_preset(refresh_interval: '30s'), analysis: {
filter: {
english_stop: {
type: 'stop',
@@ -21,19 +21,20 @@ class AccountsIndex < Chewy::Index
analyzer: {
natural: {
tokenizer: 'uax_url_email',
tokenizer: 'standard',
filter: %w(
english_possessive_stemmer
lowercase
asciifolding
cjk_width
elision
english_possessive_stemmer
english_stop
english_stemmer
),
},
verbatim: {
tokenizer: 'whitespace',
tokenizer: 'standard',
filter: %w(lowercase asciifolding cjk_width),
},
@@ -62,6 +63,6 @@ class AccountsIndex < Chewy::Index
field(:last_status_at, type: 'date', value: ->(account) { account.last_status_at || account.created_at })
field(:display_name, type: 'text', analyzer: 'verbatim') { field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'verbatim' }
field(:username, type: 'text', analyzer: 'verbatim', value: ->(account) { [account.username, account.domain].compact.join('@') }) { field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'verbatim' }
field(:text, type: 'text', value: ->(account) { account.searchable_text }) { field :stemmed, type: 'text', analyzer: 'natural' }
field(:text, type: 'text', analyzer: 'verbatim', value: ->(account) { account.searchable_text }) { field :stemmed, type: 'text', analyzer: 'natural' }
end
end

View File

@@ -0,0 +1,12 @@
# frozen_string_literal: true
class InstancesIndex < Chewy::Index
settings index: index_preset(refresh_interval: '30s')
index_scope ::Instance.searchable
root date_detection: false do
field :domain, type: 'text', index_prefixes: { min_chars: 1, max_chars: 5 }
field :accounts_count, type: 'long'
end
end

View File

@@ -0,0 +1,67 @@
# frozen_string_literal: true
class PublicStatusesIndex < Chewy::Index
settings index: index_preset(refresh_interval: '30s', number_of_shards: 5), analysis: {
filter: {
english_stop: {
type: 'stop',
stopwords: '_english_',
},
english_stemmer: {
type: 'stemmer',
language: 'english',
},
english_possessive_stemmer: {
type: 'stemmer',
language: 'possessive_english',
},
},
analyzer: {
verbatim: {
tokenizer: 'uax_url_email',
filter: %w(lowercase),
},
content: {
tokenizer: 'standard',
filter: %w(
lowercase
asciifolding
cjk_width
elision
english_possessive_stemmer
english_stop
english_stemmer
),
},
hashtag: {
tokenizer: 'keyword',
filter: %w(
word_delimiter_graph
lowercase
asciifolding
cjk_width
),
},
},
}
index_scope ::Status.unscoped
.kept
.indexable
.includes(:media_attachments, :preloadable_poll, :preview_cards, :tags)
root date_detection: false do
field(:id, type: 'long')
field(:account_id, type: 'long')
field(:text, type: 'text', analyzer: 'verbatim', value: ->(status) { status.searchable_text }) { field(:stemmed, type: 'text', analyzer: 'content') }
field(:tags, type: 'text', analyzer: 'hashtag', value: ->(status) { status.tags.map(&:display_name) })
field(:language, type: 'keyword')
field(:properties, type: 'keyword', value: ->(status) { status.searchable_properties })
field(:created_at, type: 'date')
end
end

View File

@@ -1,75 +1,65 @@
# frozen_string_literal: true
class StatusesIndex < Chewy::Index
include FormattingHelper
settings index: { refresh_interval: '30s' }, analysis: {
settings index: index_preset(refresh_interval: '30s', number_of_shards: 5), analysis: {
filter: {
english_stop: {
type: 'stop',
stopwords: '_english_',
},
english_stemmer: {
type: 'stemmer',
language: 'english',
},
english_possessive_stemmer: {
type: 'stemmer',
language: 'possessive_english',
},
},
analyzer: {
content: {
verbatim: {
tokenizer: 'uax_url_email',
filter: %w(lowercase),
},
content: {
tokenizer: 'standard',
filter: %w(
english_possessive_stemmer
lowercase
asciifolding
cjk_width
elision
english_possessive_stemmer
english_stop
english_stemmer
),
},
hashtag: {
tokenizer: 'keyword',
filter: %w(
word_delimiter_graph
lowercase
asciifolding
cjk_width
),
},
},
}
# We do not use delete_if option here because it would call a method that we
# expect to be called with crutches without crutches, causing n+1 queries
index_scope ::Status.unscoped.kept.without_reblogs.includes(:media_attachments, :preloadable_poll)
crutch :mentions do |collection|
data = ::Mention.where(status_id: collection.map(&:id)).where(account: Account.local, silent: false).pluck(:status_id, :account_id)
data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) }
end
crutch :favourites do |collection|
data = ::Favourite.where(status_id: collection.map(&:id)).where(account: Account.local).pluck(:status_id, :account_id)
data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) }
end
crutch :reblogs do |collection|
data = ::Status.where(reblog_of_id: collection.map(&:id)).where(account: Account.local).pluck(:reblog_of_id, :account_id)
data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) }
end
crutch :bookmarks do |collection|
data = ::Bookmark.where(status_id: collection.map(&:id)).where(account: Account.local).pluck(:status_id, :account_id)
data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) }
end
crutch :votes do |collection|
data = ::PollVote.joins(:poll).where(poll: { status_id: collection.map(&:id) }).where(account: Account.local).pluck(:status_id, :account_id)
data.each.with_object({}) { |(id, name), result| (result[id] ||= []).push(name) }
end
index_scope ::Status.unscoped.kept.without_reblogs.includes(:media_attachments, :preview_cards, :local_mentioned, :local_favorited, :local_reblogged, :local_bookmarked, :tags, preloadable_poll: :local_voters), delete_if: ->(status) { status.searchable_by.empty? }
root date_detection: false do
field :id, type: 'long'
field :account_id, type: 'long'
field :text, type: 'text', value: ->(status) { status.searchable_text } do
field :stemmed, type: 'text', analyzer: 'content'
end
field :searchable_by, type: 'long', value: ->(status, crutches) { status.searchable_by(crutches) }
field(:id, type: 'long')
field(:account_id, type: 'long')
field(:text, type: 'text', analyzer: 'verbatim', value: ->(status) { status.searchable_text }) { field(:stemmed, type: 'text', analyzer: 'content') }
field(:tags, type: 'text', analyzer: 'hashtag', value: ->(status) { status.tags.map(&:display_name) })
field(:searchable_by, type: 'long', value: ->(status) { status.searchable_by })
field(:language, type: 'keyword')
field(:properties, type: 'keyword', value: ->(status) { status.searchable_properties })
field(:created_at, type: 'date')
end
end

View File

@@ -1,16 +1,25 @@
# frozen_string_literal: true
class TagsIndex < Chewy::Index
settings index: { refresh_interval: '30s' }, analysis: {
settings index: index_preset(refresh_interval: '30s'), analysis: {
analyzer: {
content: {
tokenizer: 'keyword',
filter: %w(lowercase asciifolding cjk_width),
filter: %w(
word_delimiter_graph
lowercase
asciifolding
cjk_width
),
},
edge_ngram: {
tokenizer: 'edge_ngram',
filter: %w(lowercase asciifolding cjk_width),
filter: %w(
lowercase
asciifolding
cjk_width
),
},
},
@@ -30,12 +39,9 @@ class TagsIndex < Chewy::Index
end
root date_detection: false do
field :name, type: 'text', analyzer: 'content' do
field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content'
end
field :reviewed, type: 'boolean', value: ->(tag) { tag.reviewed? }
field :usage, type: 'long', value: ->(tag, crutches) { tag.history.aggregate(crutches.time_period).accounts }
field :last_status_at, type: 'date', value: ->(tag) { tag.last_status_at || tag.created_at }
field(:name, type: 'text', analyzer: 'content', value: :display_name) { field(:edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content') }
field(:reviewed, type: 'boolean', value: ->(tag) { tag.reviewed? })
field(:usage, type: 'long', value: ->(tag, crutches) { tag.history.aggregate(crutches.time_period).accounts })
field(:last_status_at, type: 'date', value: ->(tag) { tag.last_status_at || tag.created_at })
end
end

View File

@@ -12,7 +12,7 @@ class AccountsController < ApplicationController
before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? }
skip_around_action :set_locale, if: -> { [:json, :rss].include?(request.format&.to_sym) }
skip_before_action :require_functional!, unless: :whitelist_mode?
skip_before_action :require_functional!, unless: :limited_federation_mode?
def show
respond_to do |format|

View File

@@ -40,7 +40,7 @@ module Admin
end
# Allow transparently upgrading a domain block
if existing_domain_block.present?
if existing_domain_block.present? && existing_domain_block.domain == TagManager.instance.normalize_domain(@domain_block.domain.strip)
@domain_block = existing_domain_block
@domain_block.assign_attributes(resource_params)
end

View File

@@ -65,7 +65,7 @@ module Admin
end
def filtered_instances
InstanceFilter.new(whitelist_mode? ? { allowed: true } : filter_params).results
InstanceFilter.new(limited_federation_mode? ? { allowed: true } : filter_params).results
end
def filter_params

View File

@@ -0,0 +1,18 @@
# frozen_string_literal: true
module Admin
class SoftwareUpdatesController < BaseController
before_action :check_enabled!
def index
authorize :software_update, :index?
@software_updates = SoftwareUpdate.all.sort_by(&:gem_version)
end
private
def check_enabled!
not_found unless SoftwareUpdate.check_enabled?
end
end
end

View File

@@ -8,7 +8,7 @@ class Api::BaseController < ApplicationController
include AccessTokenTrackingConcern
include ApiCachingConcern
skip_before_action :require_functional!, unless: :whitelist_mode?
skip_before_action :require_functional!, unless: :limited_federation_mode?
before_action :require_authenticated_user!, if: :disallow_unauthenticated_api_access?
before_action :require_not_suspended!
@@ -150,7 +150,7 @@ class Api::BaseController < ApplicationController
end
def disallow_unauthenticated_api_access?
ENV['DISALLOW_UNAUTHENTICATED_API_ACCESS'] == 'true' || Rails.configuration.x.whitelist_mode
ENV['DISALLOW_UNAUTHENTICATED_API_ACCESS'] == 'true' || Rails.configuration.x.limited_federation_mode
end
private

View File

@@ -30,6 +30,7 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController
:bot,
:discoverable,
:hide_collections,
:indexable,
fields_attributes: [:name, :value]
)
end

View File

@@ -0,0 +1,74 @@
# frozen_string_literal: true
class Api::V1::Admin::TagsController < Api::BaseController
include Authorization
before_action -> { authorize_if_got_token! :'admin:read' }, only: [:index, :show]
before_action -> { authorize_if_got_token! :'admin:write' }, only: :update
before_action :set_tags, only: :index
before_action :set_tag, except: :index
after_action :insert_pagination_headers, only: :index
after_action :verify_authorized
LIMIT = 100
PAGINATION_PARAMS = %i(limit).freeze
def index
authorize :tag, :index?
render json: @tags, each_serializer: REST::Admin::TagSerializer
end
def show
authorize @tag, :show?
render json: @tag, serializer: REST::Admin::TagSerializer
end
def update
authorize @tag, :update?
@tag.update!(tag_params.merge(reviewed_at: Time.now.utc))
render json: @tag, serializer: REST::Admin::TagSerializer
end
private
def set_tag
@tag = Tag.find(params[:id])
end
def set_tags
@tags = Tag.all.to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id))
end
def tag_params
params.permit(:display_name, :trendable, :usable, :listable)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_admin_tags_url(pagination_params(max_id: pagination_max_id)) if records_continue?
end
def prev_path
api_v1_admin_tags_url(pagination_params(min_id: pagination_since_id)) unless @tags.empty?
end
def pagination_max_id
@tags.last.id
end
def pagination_since_id
@tags.first.id
end
def records_continue?
@tags.size == limit_param(LIMIT)
end
def pagination_params(core_params)
params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params)
end
end

View File

@@ -16,7 +16,9 @@ class Api::V1::DirectoriesController < Api::BaseController
end
def set_accounts
@accounts = accounts_scope.offset(params[:offset]).limit(limit_param(DEFAULT_ACCOUNTS_LIMIT))
with_read_replica do
@accounts = accounts_scope.offset(params[:offset]).limit(limit_param(DEFAULT_ACCOUNTS_LIMIT))
end
end
def accounts_scope

View File

@@ -3,7 +3,7 @@
class Api::V1::Instances::ActivityController < Api::BaseController
before_action :require_enabled_api!
skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
vary_by ''
@@ -33,6 +33,6 @@ class Api::V1::Instances::ActivityController < Api::BaseController
end
def require_enabled_api!
head 404 unless Setting.activity_api_enabled && !whitelist_mode?
head 404 unless Setting.activity_api_enabled && !limited_federation_mode?
end
end

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
class Api::V1::Instances::DomainBlocksController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
before_action :require_enabled_api!
before_action :set_domain_blocks

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
class Api::V1::Instances::ExtendedDescriptionsController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
skip_around_action :set_locale
before_action :set_extended_description
@@ -10,7 +10,7 @@ class Api::V1::Instances::ExtendedDescriptionsController < Api::BaseController
# Override `current_user` to avoid reading session cookies unless in whitelist mode
def current_user
super if whitelist_mode?
super if limited_federation_mode?
end
def show

View File

@@ -0,0 +1,21 @@
# frozen_string_literal: true
class Api::V1::Instances::LanguagesController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
skip_around_action :set_locale
before_action :set_languages
vary_by ''
def show
cache_even_if_authenticated!
render json: @languages, each_serializer: REST::LanguageSerializer
end
private
def set_languages
@languages = LanguagesHelper::SUPPORTED_LOCALES.keys.map { |code| LanguagePresenter.new(code) }
end
end

View File

@@ -3,24 +3,24 @@
class Api::V1::Instances::PeersController < Api::BaseController
before_action :require_enabled_api!
skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
skip_around_action :set_locale
vary_by ''
# Override `current_user` to avoid reading session cookies unless in whitelist mode
def current_user
super if whitelist_mode?
super if limited_federation_mode?
end
def index
cache_even_if_authenticated!
render_with_cache(expires_in: 1.day) { Instance.where.not(domain: DomainBlock.select(:domain)).pluck(:domain) }
render_with_cache(expires_in: 1.day) { Instance.searchable.pluck(:domain) }
end
private
def require_enabled_api!
head 404 unless Setting.peers_api_enabled && !whitelist_mode?
head 404 unless Setting.peers_api_enabled && !limited_federation_mode?
end
end

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
class Api::V1::Instances::PrivacyPoliciesController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
before_action :set_privacy_policy

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
class Api::V1::Instances::RulesController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
skip_around_action :set_locale
before_action :set_rules
@@ -10,7 +10,7 @@ class Api::V1::Instances::RulesController < Api::BaseController
# Override `current_user` to avoid reading session cookies unless in whitelist mode
def current_user
super if whitelist_mode?
super if limited_federation_mode?
end
def index

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
class Api::V1::Instances::TranslationLanguagesController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
before_action :set_languages

View File

@@ -1,14 +1,14 @@
# frozen_string_literal: true
class Api::V1::InstancesController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
skip_around_action :set_locale
vary_by ''
# Override `current_user` to avoid reading session cookies unless in whitelist mode
def current_user
super if whitelist_mode?
super if limited_federation_mode?
end
def show

View File

@@ -0,0 +1,47 @@
# frozen_string_literal: true
class Api::V1::Peers::SearchController < Api::BaseController
before_action :require_enabled_api!
before_action :set_domains
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
skip_around_action :set_locale
vary_by ''
def index
cache_even_if_authenticated!
render json: @domains
end
private
def require_enabled_api!
head 404 unless Setting.peers_api_enabled && !limited_federation_mode?
end
def set_domains
return if params[:q].blank?
if Chewy.enabled?
@domains = InstancesIndex.query(function_score: {
query: {
prefix: {
domain: TagManager.instance.normalize_domain(params[:q].strip),
},
},
field_value_factor: {
field: 'accounts_count',
modifier: 'log2p',
},
}).limit(10).pluck(:domain)
else
domain = params[:q].strip
domain = TagManager.instance.normalize_domain(domain)
@domains = Instance.searchable.where(Instance.arel_table[:domain].matches("#{Instance.sanitize_sql_like(domain)}%", false, true)).limit(10).pluck(:domain)
end
rescue Addressable::URI::InvalidURIError
@domains = []
end
end

View File

@@ -0,0 +1,13 @@
# frozen_string_literal: true
class Api::V1::Profile::AvatarsController < Api::BaseController
before_action -> { doorkeeper_authorize! :write, :'write:accounts' }
before_action :require_user!
def destroy
@account = current_account
UpdateAccountService.new.call(@account, { avatar: nil }, raise_error: true)
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
render json: @account, serializer: REST::CredentialAccountSerializer
end
end

View File

@@ -0,0 +1,13 @@
# frozen_string_literal: true
class Api::V1::Profile::HeadersController < Api::BaseController
before_action -> { doorkeeper_authorize! :write, :'write:accounts' }
before_action :require_user!
def destroy
@account = current_account
UpdateAccountService.new.call(@account, { header: nil }, raise_error: true)
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
render json: @account, serializer: REST::CredentialAccountSerializer
end
end

View File

@@ -17,13 +17,16 @@ class Api::V1::Statuses::FavouritesController < Api::BaseController
if fav
@status = fav.status
count = [@status.favourites_count - 1, 0].max
UnfavouriteWorker.perform_async(current_account.id, @status.id)
else
@status = Status.find(params[:status_id])
count = @status.favourites_count
authorize @status, :show?
end
render json: @status, serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new([@status], current_account.id, favourites_map: { @status.id => false })
relationships = StatusRelationshipsPresenter.new([@status], current_account.id, favourites_map: { @status.id => false }, attributes_map: { @status.id => { favourites_count: count } })
render json: @status, serializer: REST::StatusSerializer, relationships: relationships
rescue Mastodon::NotPermittedError
not_found
end

View File

@@ -24,15 +24,18 @@ class Api::V1::Statuses::ReblogsController < Api::BaseController
if @status
authorize @status, :unreblog?
@reblog = @status.reblog
count = [@reblog.reblogs_count - 1, 0].max
@status.discard
RemovalWorker.perform_async(@status.id)
@reblog = @status.reblog
else
@reblog = Status.find(params[:status_id])
count = @reblog.reblogs_count
authorize @reblog, :show?
end
render json: @reblog, serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new([@status], current_account.id, reblogs_map: { @reblog.id => false })
relationships = StatusRelationshipsPresenter.new([@status], current_account.id, reblogs_map: { @reblog.id => false }, attributes_map: { @reblog.id => { reblogs_count: count } })
render json: @reblog, serializer: REST::StatusSerializer, relationships: relationships
rescue Mastodon::NotPermittedError
not_found
end

View File

@@ -8,7 +8,15 @@ class Api::V1::Statuses::TranslationsController < Api::BaseController
before_action :set_translation
rescue_from TranslationService::NotConfiguredError, with: :not_found
rescue_from TranslationService::UnexpectedResponseError, TranslationService::QuotaExceededError, TranslationService::TooManyRequestsError, with: :service_unavailable
rescue_from TranslationService::UnexpectedResponseError, with: :service_unavailable
rescue_from TranslationService::QuotaExceededError do
render json: { error: I18n.t('translation.errors.quota_exceeded') }, status: 503
end
rescue_from TranslationService::TooManyRequestsError do
render json: { error: I18n.t('translation.errors.too_many_requests') }, status: 503
end
def create
render json: @translation, serializer: REST::TranslationSerializer

View File

@@ -19,6 +19,7 @@ class Api::V1::TagsController < Api::BaseController
def unfollow
TagFollow.find_by(account: current_account, tag: @tag)&.destroy!
TagUnmergeWorker.perform_async(@tag.id, current_account.id)
render json: @tag, serializer: REST::TagSerializer
end

View File

@@ -1,6 +1,7 @@
# frozen_string_literal: true
class Api::V1::Timelines::TagController < Api::BaseController
before_action -> { doorkeeper_authorize! :read, :'read:statuses' }, only: :show, if: :require_auth?
before_action :load_tag
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
@@ -12,6 +13,10 @@ class Api::V1::Timelines::TagController < Api::BaseController
private
def require_auth?
!Setting.timeline_preview
end
def load_tag
@tag = Tag.find_normalized(params[:id])
end

View File

@@ -12,6 +12,7 @@ class ApplicationController < ActionController::Base
include DomainControlHelper
include ThemingConcern
include DatabaseHelper
include AuthorizedFetchHelper
helper_method :current_account
helper_method :current_session
@@ -21,7 +22,7 @@ class ApplicationController < ActionController::Base
helper_method :use_seamless_external_login?
helper_method :omniauth_only?
helper_method :sso_account_settings
helper_method :whitelist_mode?
helper_method :limited_federation_mode?
helper_method :body_class_string
helper_method :skip_csrf_meta_tags?
@@ -53,10 +54,6 @@ class ApplicationController < ActionController::Base
private
def authorized_fetch_mode?
ENV['AUTHORIZED_FETCH'] == 'true' || Rails.configuration.x.whitelist_mode
end
def public_fetch_mode?
!authorized_fetch_mode?
end

View File

@@ -5,25 +5,20 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def self.provides_callback_for(provider)
define_method provider do
@user = User.find_for_oauth(request.env['omniauth.auth'], current_user)
@provider = provider
@user = User.find_for_omniauth(request.env['omniauth.auth'], current_user)
if @user.persisted?
LoginActivity.create(
user: @user,
success: true,
authentication_method: :omniauth,
provider: provider,
ip: request.remote_ip,
user_agent: request.user_agent
)
record_login_activity
sign_in_and_redirect @user, event: :authentication
label = Devise.omniauth_configs[provider]&.strategy&.display_name.presence || I18n.t("auth.providers.#{provider}", default: provider.to_s.chomp('_oauth2').capitalize)
set_flash_message(:notice, :success, kind: label) if is_navigational_format?
set_flash_message(:notice, :success, kind: label_for_provider) if is_navigational_format?
else
session["devise.#{provider}_data"] = request.env['omniauth.auth']
redirect_to new_user_registration_url
end
rescue ActiveRecord::RecordInvalid
flash[:alert] = I18n.t('devise.failure.omniauth_user_creation_failure') if is_navigational_format?
redirect_to new_user_session_url
end
end
@@ -38,4 +33,29 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController
auth_setup_path(missing_email: '1')
end
end
private
def record_login_activity
LoginActivity.create(
user: @user,
success: true,
authentication_method: :omniauth,
provider: @provider,
ip: request.remote_ip,
user_agent: request.user_agent
)
end
def label_for_provider
provider_display_name || configured_provider_name
end
def provider_display_name
Devise.omniauth_configs[@provider]&.strategy&.display_name.presence
end
def configured_provider_name
I18n.t("auth.providers.#{@provider}", default: @provider.to_s.chomp('_oauth2').capitalize)
end
end

View File

@@ -113,7 +113,7 @@ class Auth::SessionsController < Devise::SessionsController
end
def home_paths(resource)
paths = [about_path]
paths = [about_path, '/explore']
paths << short_account_path(username: resource.account) if single_user_mode? && resource.is_a?(User)

View File

@@ -3,33 +3,19 @@
class AuthorizeInteractionsController < ApplicationController
include Authorization
layout 'modal'
before_action :authenticate_user!
before_action :set_body_classes
before_action :set_resource
before_action :set_pack
def show
if @resource.is_a?(Account)
render :show
redirect_to web_url("@#{@resource.pretty_acct}")
elsif @resource.is_a?(Status)
redirect_to web_url("@#{@resource.account.pretty_acct}/#{@resource.id}")
else
render :error
not_found
end
end
def create
if @resource.is_a?(Account) && FollowService.new.call(current_account, @resource, with_rate_limit: true)
render :success
else
render :error
end
rescue ActiveRecord::RecordNotFound
render :error
end
private
def set_resource
@@ -62,12 +48,4 @@ class AuthorizeInteractionsController < ApplicationController
def uri_param
params[:uri] || params.fetch(:acct, '').delete_prefix('acct:')
end
def set_body_classes
@body_classes = 'modal-layout'
end
def set_pack
use_pack 'modal'
end
end

View File

@@ -10,7 +10,7 @@ class BackupsController < ApplicationController
def download
case Paperclip::Attachment.default_options[:storage]
when :s3
when :s3, :azure
redirect_to @backup.dump.expiring_url(10), allow_other_host: true
when :fog
if Paperclip::Attachment.default_options.dig(:fog_credentials, :openstack_temp_url_key).present?

View File

@@ -4,7 +4,7 @@ module AccountOwnedConcern
extend ActiveSupport::Concern
included do
before_action :authenticate_user!, if: -> { whitelist_mode? && request.format != :json }
before_action :authenticate_user!, if: -> { limited_federation_mode? && request.format != :json }
before_action :set_account, if: :account_required?
before_action :check_account_approval, if: :account_required?
before_action :check_account_suspension, if: :account_required?

View File

@@ -8,6 +8,6 @@ module ApiCachingConcern
end
def cache_even_if_authenticated!
expires_in(5.minutes, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.day) unless whitelist_mode?
expires_in(5.minutes, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.day) unless limited_federation_mode?
end
end

View File

@@ -42,7 +42,7 @@ module CaptchaConcern
end
def extend_csp_for_captcha!
policy = request.content_security_policy
policy = request.content_security_policy&.clone
return unless captcha_required? && policy.present?
@@ -54,6 +54,8 @@ module CaptchaConcern
policy.send(directive, *values)
end
request.content_security_policy = policy
end
def render_captcha

View File

@@ -119,6 +119,8 @@ module SignatureVerification
private
def fail_with!(message, **options)
Rails.logger.debug { "Signature verification failed: #{message}" }
@signature_verification_failure_reason = { error: message }.merge(options)
@signed_request_actor = nil
end
@@ -248,7 +250,7 @@ module SignatureVerification
stoplight_wrap_request { ResolveAccountService.new.call(key_id.delete_prefix('acct:'), suppress_errors: false) }
elsif !ActivityPub::TagManager.instance.local_uri?(key_id)
account = ActivityPub::TagManager.instance.uri_to_actor(key_id)
account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, id: false, suppress_errors: false) }
account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, suppress_errors: false) }
account
end
rescue Mastodon::PrivateNetworkAddressError => e

View File

@@ -12,7 +12,7 @@ module WebAppControllerConcern
end
def skip_csrf_meta_tags?
current_user.nil?
!(ENV['ONE_CLICK_SSO_LOGIN'] == 'true' && ENV['OMNIAUTH_ONLY'] == 'true' && Devise.omniauth_providers.length == 1) && current_user.nil?
end
def set_app_body_class

View File

@@ -10,7 +10,7 @@ class FollowerAccountsController < ApplicationController
before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? }
skip_around_action :set_locale, if: -> { request.format == :json }
skip_before_action :require_functional!, unless: :whitelist_mode?
skip_before_action :require_functional!, unless: :limited_federation_mode?
def index
respond_to do |format|

View File

@@ -10,7 +10,7 @@ class FollowingAccountsController < ApplicationController
before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? }
skip_around_action :set_locale, if: -> { request.format == :json }
skip_before_action :require_functional!, unless: :whitelist_mode?
skip_before_action :require_functional!, unless: :limited_federation_mode?
def index
respond_to do |format|

View File

@@ -9,6 +9,8 @@ class MailSubscriptionsController < ApplicationController
before_action :set_user
before_action :set_type
protect_from_forgery with: :null_session
def show; end
def create
@@ -20,6 +22,7 @@ class MailSubscriptionsController < ApplicationController
def set_user
@user = GlobalID::Locator.locate_signed(params[:token], for: 'unsubscribe')
not_found unless @user
end
def set_body_classes
@@ -35,7 +38,7 @@ class MailSubscriptionsController < ApplicationController
when 'follow', 'reblog', 'favourite', 'mention', 'follow_request'
"notification_emails.#{params[:type]}"
else
raise ArgumentError
not_found
end
end
end

View File

@@ -3,9 +3,9 @@
class MediaController < ApplicationController
include Authorization
skip_before_action :require_functional!, unless: :whitelist_mode?
skip_before_action :require_functional!, unless: :limited_federation_mode?
before_action :authenticate_user!, if: :whitelist_mode?
before_action :authenticate_user!, if: :limited_federation_mode?
before_action :set_media_attachment
before_action :verify_permitted_status!
before_action :check_playable, only: :player

View File

@@ -8,7 +8,7 @@ class MediaProxyController < ApplicationController
skip_before_action :require_functional!
before_action :authenticate_user!, if: :whitelist_mode?
before_action :authenticate_user!, if: :limited_federation_mode?
rescue_from ActiveRecord::RecordInvalid, with: :not_found
rescue_from Mastodon::UnexpectedResponseError, with: :not_found

View File

@@ -0,0 +1,43 @@
# frozen_string_literal: true
class RemoteInteractionHelperController < ApplicationController
vary_by ''
skip_before_action :require_functional!
skip_around_action :set_locale
skip_before_action :update_user_sign_in
content_security_policy do |p|
# We inherit the normal `script-src`
# Set every directive that does not have a fallback
p.default_src :none
p.form_action :none
p.base_uri :none
# Disable every directive with a fallback to cut on response size
p.base_uri false
p.font_src false
p.img_src false
p.style_src false
p.media_src false
p.frame_src false
p.manifest_src false
p.connect_src false
p.child_src false
p.worker_src false
# Widen the directives that we do need
p.frame_ancestors :self
p.connect_src :https
end
def index
expires_in(5.minutes, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.day)
response.headers['X-Frame-Options'] = 'SAMEORIGIN'
response.headers['Referrer-Policy'] = 'no-referrer'
render layout: 'helper_frame'
end
end

View File

@@ -0,0 +1,27 @@
# frozen_string_literal: true
class Settings::PrivacyController < Settings::BaseController
before_action :set_account
def show; end
def update
if UpdateAccountService.new.call(@account, account_params.except(:settings))
current_user.update!(settings_attributes: account_params[:settings])
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
redirect_to settings_privacy_path, notice: I18n.t('generic.changes_saved_msg')
else
render :show
end
end
private
def account_params
params.require(:account).permit(:discoverable, :unlocked, :indexable, :show_collections, settings: UserSettings.keys)
end
def set_account
@account = current_account
end
end

View File

@@ -20,7 +20,7 @@ class Settings::ProfilesController < Settings::BaseController
private
def account_params
params.require(:account).permit(:display_name, :note, :avatar, :header, :locked, :bot, :discoverable, :hide_collections, fields_attributes: [:name, :value])
params.require(:account).permit(:display_name, :note, :avatar, :header, :bot, fields_attributes: [:name, :value])
end
def set_account

View File

@@ -17,7 +17,7 @@ class StatusesController < ApplicationController
after_action :set_link_headers
skip_around_action :set_locale, if: -> { request.format == :json }
skip_before_action :require_functional!, only: [:show, :embed], unless: :whitelist_mode?
skip_before_action :require_functional!, only: [:show, :embed], unless: :limited_federation_mode?
content_security_policy only: :embed do |policy|
policy.frame_ancestors(false)

View File

@@ -10,13 +10,13 @@ class TagsController < ApplicationController
vary_by -> { public_fetch_mode? ? 'Accept, Accept-Language, Cookie' : 'Accept, Accept-Language, Cookie, Signature' }
before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? }
before_action :authenticate_user!, if: :whitelist_mode?
before_action :authenticate_user!, if: :limited_federation_mode?
before_action :set_local
before_action :set_tag
before_action :set_statuses, if: -> { request.format == :rss }
before_action :set_instance_presenter
skip_before_action :require_functional!, unless: :whitelist_mode?
skip_before_action :require_functional!, unless: :limited_federation_mode?
def show
respond_to do |format|

View File

@@ -19,6 +19,7 @@ module WellKnown
def set_account
username = username_from_resource
@account = begin
if username == Rails.configuration.x.local_domain
Account.representative

View File

@@ -236,6 +236,6 @@ module ApplicationHelper
private
def storage_host_var
ENV.fetch('S3_ALIAS_HOST', nil) || ENV.fetch('S3_CLOUDFRONT_HOST', nil)
ENV.fetch('S3_ALIAS_HOST', nil) || ENV.fetch('S3_CLOUDFRONT_HOST', nil) || ENV.fetch('AZURE_ALIAS_HOST', nil)
end
end

View File

@@ -0,0 +1,11 @@
# frozen_string_literal: true
module AuthorizedFetchHelper
def authorized_fetch_mode?
ENV.fetch('AUTHORIZED_FETCH') { Setting.authorized_fetch && 'true' } == 'true' || Rails.configuration.x.limited_federation_mode
end
def authorized_fetch_overridden?
ENV.key?('AUTHORIZED_FETCH') || Rails.configuration.x.limited_federation_mode
end
end

Some files were not shown because too many files have changed in this diff Show More