Compare commits

...

1154 Commits

Author SHA1 Message Date
Claire
bff48d3653 Merge pull request #3461 from glitch-soc/glitch-soc/merge-upstream
Merge upstream changes up to 8e00f7cc8f
2026-03-27 20:05:07 +01:00
diondiondion
7df8fab59a [Glitch] Improve contrast for text-warning and text-success tokens
Port 8e00f7cc8f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-27 18:27:10 +01:00
Echo
e52a6f219f [Glitch] Add error notice when bundle load fails
Port 6e103636f2 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-27 18:26:48 +01:00
diondiondion
7ccada36db [Glitch] Refactor NumberFields to standalone component
Port e303c89e4d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-27 18:25:32 +01:00
diondiondion
1a816434cf [Glitch] Implement new collection page design
Port 098d698a7e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-27 18:24:49 +01:00
Echo
37b4329c75 [Glitch] Profile redesign: Add Intl.Segmenter fallback
Port 9a076359b9 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-27 18:22:21 +01:00
diondiondion
a70fd75a1a [Glitch] Revert translation wrapper for counters
Port 43adb2c91d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-27 18:21:38 +01:00
Echo
df5900d33c [Glitch] Shows loading state for gallery correctly
Port db54c59df4 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-27 18:21:06 +01:00
Echo
9dfacc21f8 [Glitch] Profile editing: Minor size fixes
Port a8c08dfeb3 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-27 18:20:30 +01:00
Echo
e8b0d43921 [Glitch] Profile redesign: Re-adds title for profile counts and join date
Port 931f43c8b8 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-27 18:20:09 +01:00
Echo
edbe394c42 [Glitch] Profile redesign: Include replies in pinned posts
Port 92fa8ce88c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-27 18:19:40 +01:00
Echo
131b9acfab [Glitch] Profile editing: Field inline messages
Port 57a4f6b6ec to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-27 18:18:17 +01:00
Echo
22e156ea83 [Glitch] Profile editing: Make field buttons vanish instead of disable
Port 9b6f877be5 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-27 18:17:44 +01:00
diondiondion
9f3e72f1cc [Glitch] Fix styling regressions: familiar followers layout & alert action hover color
Port e26c6fa256 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-27 18:17:22 +01:00
Claire
30bb39fe54 Merge commit '8e00f7cc8fab9b447f80a27a972eef78186633ad' into glitch-soc/merge-upstream 2026-03-27 18:15:50 +01:00
diondiondion
8e00f7cc8f Improve contrast for text-warning and text-success tokens (#38459) 2026-03-27 16:28:29 +00:00
Echo
6e103636f2 Add error notice when bundle load fails (#38458) 2026-03-27 16:21:58 +00:00
diondiondion
e303c89e4d Refactor NumberFields to standalone component (#38455) 2026-03-27 16:13:07 +00:00
diondiondion
098d698a7e Implement new collection page design (#38450) 2026-03-27 15:30:06 +00:00
Matt Jankowski
5a880ff995 Clean up some route declarations (#38444) 2026-03-27 15:29:52 +00:00
Matt Jankowski
df9dec741f Add private method for event export filename (#38454) 2026-03-27 15:25:19 +00:00
renovate[bot]
ab5cbe3509 Update dependency @vitejs/plugin-legacy to v8.0.1 (#38410)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-27 15:19:47 +00:00
renovate[bot]
018ad7ff0a Update dependency vite to v8.0.3 (#38411)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-27 15:19:18 +00:00
Echo
9a076359b9 Profile redesign: Add Intl.Segmenter fallback (#38456) 2026-03-27 15:15:36 +00:00
diondiondion
43adb2c91d Revert translation wrapper for counters (#38453) 2026-03-27 15:04:07 +00:00
Echo
db54c59df4 Shows loading state for gallery correctly (#38451) 2026-03-27 15:03:52 +00:00
Echo
a8c08dfeb3 Profile editing: Minor size fixes (#38446) 2026-03-27 12:57:46 +00:00
Echo
931f43c8b8 Profile redesign: Re-adds title for profile counts and join date (#38445) 2026-03-27 12:50:34 +00:00
Echo
92fa8ce88c Profile redesign: Include replies in pinned posts (#38443) 2026-03-27 12:45:59 +00:00
Echo
57a4f6b6ec Profile editing: Field inline messages (#38442) 2026-03-27 12:41:54 +00:00
Echo
9b6f877be5 Profile editing: Make field buttons vanish instead of disable (#38440) 2026-03-27 12:40:34 +00:00
diondiondion
e26c6fa256 Fix styling regressions: familiar followers layout & alert action hover color (#38438) 2026-03-27 10:12:41 +00:00
github-actions[bot]
28284b8452 New Crowdin Translations (automated) (#38435)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-27 08:26:09 +00:00
Claire
d79af17e8c Merge pull request #3460 from glitch-soc/glitch-soc/merge-upstream
Merge upstream changes up to 9d5e10a70e
2026-03-27 08:23:17 +01:00
diondiondion
d75af8d188 [Glitch] Update outer spacing of new profile page
Port dad7f0e869 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-26 18:30:37 +01:00
diondiondion
ffac9e53c6 [Glitch] Update collection list item design
Port 2124be8a81 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-26 18:30:16 +01:00
Echo
d4e7ee4855 [Glitch] Profile redesign: Fix follower/following pagination
Port 87dc8f9036 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-26 18:29:35 +01:00
diondiondion
915fd0933a [Glitch] Fix regressions caused by rendering default translation wrapper element
Port 39ad873589 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-26 18:29:11 +01:00
Echo
a16b441c70 [Glitch] Profile editing: Add notice in profile preferences
Port dd8602a928 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-26 18:24:29 +01:00
Claire
2ac493ee8e Merge commit '9d5e10a70e006c1c0bc61e7f591b1078c7be6ab4' into glitch-soc/merge-upstream 2026-03-26 18:23:45 +01:00
renovate[bot]
9d5e10a70e Update dependency chromatic to v16 (#38345)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-26 15:25:53 +00:00
diondiondion
dad7f0e869 Update outer spacing of new profile page (#38426) 2026-03-26 15:07:39 +00:00
Matt Jankowski
ea009d5062 Avoid rubocop:disable for private address spec (#38420) 2026-03-26 15:03:10 +00:00
diondiondion
2124be8a81 Update collection list item design (#38425) 2026-03-26 14:56:36 +00:00
David Roetzel
6f509d71c3 Make sure collection exists before items are added (#38424) 2026-03-26 14:42:44 +00:00
renovate[bot]
71092457e9 Update dependency rails to v8.1.3 (#38377)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-26 14:18:41 +00:00
Echo
87dc8f9036 Profile redesign: Fix follower/following pagination (#38417) 2026-03-26 14:15:05 +00:00
Claire
5b2e614beb Add more key processing tests (#38419) 2026-03-26 14:13:43 +00:00
Matt Jankowski
b321d5d377 Use resources to declare API TOS access endpoints (#38416) 2026-03-26 14:07:06 +00:00
Claire
e81a4e258c Add support for FEP-2c59 (#38239) 2026-03-26 13:33:16 +00:00
David Roetzel
abd29109c5 Fetch unknown collection when handling FeatureRequest activity (#38413) 2026-03-26 13:30:27 +00:00
David Roetzel
35c30dfc6e Remove overeager unique index (#38414) 2026-03-26 13:29:47 +00:00
diondiondion
39ad873589 Fix regressions caused by rendering default translation wrapper element (#38412) 2026-03-26 11:16:55 +00:00
Echo
dd8602a928 Profile editing: Add notice in profile preferences (#38404) 2026-03-26 11:03:40 +00:00
renovate[bot]
5061f0b1cd Update dependency @vitejs/plugin-react to v5.2.0 (#38179)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-26 10:41:52 +00:00
github-actions[bot]
1dd604df20 New Crowdin Translations (automated) (#38408)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-26 10:35:06 +00:00
Claire
3ebd3952a1 Add formatted_note and formatted_fields to GET /api/v1/profile (#38339) 2026-03-26 10:32:30 +00:00
David Roetzel
1fb5cb1e67 Add unique indexes for Collection(Item) URIs (#38409) 2026-03-26 10:17:08 +00:00
Matt Jankowski
df479d598f Expand coverage for Tag.search_for method (#38405) 2026-03-26 10:03:17 +00:00
Claire
806e2a993a Fix Webfinger endpoint not handling new AP ID scheme (#38391) 2026-03-26 09:58:47 +00:00
Claire
34b02b9006 Fix profile styling 2026-03-25 23:36:28 +01:00
Claire
89b42f89d0 Merge commit '19806be8ecc387adda4c229fc5e0e7b3af733e4f' into glitch-soc/merge-upstream 2026-03-25 23:17:26 +01:00
Claire
19806be8ec Fix processing keys from separate documents (#38407) 2026-03-25 22:03:33 +00:00
Eugen Rochko
ee03209934 [Glitch] Add email subscriptions
Port bcf0718a9a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-25 22:07:25 +01:00
Echo
d610336398 [Glitch] Profile editing: Re-adds the character counter with the new limit
Port 61e0ec8844 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-25 22:07:25 +01:00
diondiondion
ba56c45072 [Glitch] Render FormattedMessage translations into React.Fragment by default
Port e3dfb7ddd6 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-25 22:07:25 +01:00
Echo
f780570f2d [Glitch] Refactor: Update FormatJS
Port 1820a03622 to glitch-soc

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-25 22:07:25 +01:00
diondiondion
bb3f258c64 [Glitch] Update web theme tokens with latest design system tokens
Port 37236acd3b to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-25 22:03:04 +01:00
diondiondion
1599047922 [Glitch] Allow scrolling alt text popover with keyboard & improved media focus outlines
Port 396d9dd12a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-25 21:41:25 +01:00
Claire
79958d9442 Merge commit '31abef8917879917a330419fe3981a2fb7f35b69' into glitch-soc/merge-upstream
Conflicts:
- `app/services/post_status_service.rb`:
  Upstream added a line adjacent to one that had been modified due to local-only posting.
  Added upstream's change.
- `tsconfig.json`:
  Upstream updated Typescript and updated `tsconfig` in the process by changing paths, where
  glitch-soc had extra paths. Updated as upstream did.
2026-03-25 21:36:32 +01:00
Claire
24bc05f3a4 Merge pull request #3459 from glitch-soc/glitch-soc/merge-upstream
Merge upstream changes up to 664efcf4c3
2026-03-25 21:30:45 +01:00
Echo
166f932d1e [Glitch] Profile editing: Fix incorrect label
Port 74123950be to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-25 21:11:10 +01:00
diondiondion
237440f2ec [Glitch] Hide empty state of topic suggestions dropdown in Collection editor
Port bafc552a72 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-25 21:10:41 +01:00
Claire
572f18c322 Merge commit '664efcf4c3f9713894054fb642a252d8752a4123' into glitch-soc/merge-upstream 2026-03-25 21:09:30 +01:00
Matt Jankowski
31abef8917 Remove archive screenshots step from search CI job (#38403) 2026-03-25 16:37:02 +00:00
David Roetzel
2884abacef Fix item count (#38402) 2026-03-25 16:31:04 +00:00
Eugen Rochko
bcf0718a9a Add email subscriptions (#38163) 2026-03-25 16:25:45 +00:00
Claire
b46d003e20 Don't install recommended packages in CI tasks (#38401) 2026-03-25 15:59:50 +00:00
Echo
61e0ec8844 Profile editing: Re-adds the character counter with the new limit (#38400) 2026-03-25 15:31:58 +00:00
David Roetzel
2a4b205c75 Make sure Delete reaches collection owner (#38399) 2026-03-25 15:28:20 +00:00
diondiondion
e3dfb7ddd6 Render FormattedMessage translations into React.Fragment by default (#38398) 2026-03-25 15:01:40 +00:00
Claire
15dbf8040e Add support for multiple keypairs for remote accounts (#38279) 2026-03-25 14:52:12 +00:00
Echo
1820a03622 Refactor: Update FormatJS (#38388)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-25 14:38:35 +00:00
diondiondion
37236acd3b Update web theme tokens with latest design system tokens (#38387) 2026-03-25 14:34:38 +00:00
David Roetzel
c9eefd0ae7 Persist activity URI of a FeatureRequest (#38393) 2026-03-25 14:32:15 +00:00
David Roetzel
a0f6b6d365 Fix off-by-one error when creating collection items (#38394) 2026-03-25 14:29:11 +00:00
renovate[bot]
864d7b1267 Update dependency typescript to v6 (#38344)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Renaud Chaput <renchap@gmail.com>
2026-03-25 13:43:41 +00:00
Matt Jankowski
2112ea4d63 Drop support for ruby 3.2 (#37476) 2026-03-25 13:18:34 +00:00
Matt Jankowski
664efcf4c3 Add have_attachment matcher for attached file exports (#38389) 2026-03-25 13:18:14 +00:00
David Roetzel
bcead76410 Only federate accepted collection items (#38385) 2026-03-25 13:04:09 +00:00
David Roetzel
84ea8334fe Do not auto-accept remote collection items (#38386) 2026-03-25 13:04:05 +00:00
Claire
7583d07d3a Change avatar and account header description limit and expose it in API (#38384) 2026-03-25 12:32:47 +00:00
renovate[bot]
45e7c7a5e1 Update storybook (non-major) (#38353)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2026-03-25 11:22:11 +00:00
David Roetzel
d9db4779cf Handle local/remote collection items differently when deleting (#38383) 2026-03-25 10:57:34 +00:00
Echo
74123950be Profile editing: Fix incorrect label (#38382) 2026-03-25 10:46:18 +00:00
Matt Jankowski
5d7682c7dd Extract security_key_options endpoint to standalone controller (#38367) 2026-03-25 10:35:09 +00:00
diondiondion
bafc552a72 Hide empty state of topic suggestions dropdown in Collection editor (#38356) 2026-03-25 10:24:19 +00:00
Matt Jankowski
b399dc3191 Add coverage for "fields" feature of Account (#38369) 2026-03-25 10:23:45 +00:00
renovate[bot]
d6da3bdf1f Update dependency react-easy-crop to v5.5.7 (#38355)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-25 10:18:14 +00:00
renovate[bot]
5267a99fb8 Update dependency ws to v8.20.0 (#38328)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-25 10:17:17 +00:00
Claire
ea54c266ed Update dependency bcrypt (#38381) 2026-03-25 10:14:39 +00:00
Matt Jankowski
52a8bf4118 Add constants for delay in services (#38375) 2026-03-25 09:59:38 +00:00
Matt Jankowski
d42182d9a2 Use more granular content check via parsed_body (#38378) 2026-03-25 09:58:04 +00:00
github-actions[bot]
c6691e77bd New Crowdin Translations (automated) (#38380)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-25 09:51:42 +00:00
Claire
88c7d3bf3f Merge pull request #3458 from glitch-soc/glitch-soc/merge-upstream
Merge upstream changes up to c72ca33fac
2026-03-24 17:54:34 +01:00
David Roetzel
a3bdcc71e7 Fix serialization when an account is missing (#38370) 2026-03-24 16:42:57 +00:00
Echo
8c385b89c3 [Glitch] Profile editing: Visual fixes
Port 2d4b5b6c51 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-24 17:23:00 +01:00
Echo
eb3d54eac9 [Glitch] Remove column header button
Port c7e90ee67a to glitch-soc

Co-authored-by: diondiondion <mail@diondiondion.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-24 17:23:00 +01:00
Echo
6d3cf92a2b [Glitch] Profile redesign: Remove hashtags from featured page
Port aef70991f8 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-24 17:23:00 +01:00
Echo
2e47579bd2 [Glitch] Profile redesign: Simplify header for follower/following lists
Port 000199f003 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-24 17:22:59 +01:00
Echo
889706a317 [Glitch] Profile redesign: Ensure boost and languages menu items are only for following
Port 5ba5a2e552 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-24 17:07:34 +01:00
Claire
3d8e40f7c9 Merge commit 'c72ca33fac1ae1518371f5954ae9487692b17709' into glitch-soc/merge-upstream 2026-03-24 17:05:53 +01:00
Claire
c72ca33fac Bump version to v4.5.8 (#38374) 2026-03-24 15:51:03 +00:00
David Roetzel
7788281759 Fix adding items without a position (#38368) 2026-03-24 14:43:50 +00:00
Claire
4559e4ed1a Merge commit from fork 2026-03-24 15:44:08 +01:00
Claire
ab251290d6 Merge commit from fork 2026-03-24 15:42:40 +01:00
Claire
2458d6ea8e Merge pull request #3454 from glitch-soc/glitch-soc/merge-upstream
Merge upstream changes up to 0ef43a431d
2026-03-24 15:03:35 +01:00
Echo
2d4b5b6c51 Profile editing: Visual fixes (#38346) 2026-03-24 13:47:07 +00:00
Echo
c7e90ee67a Remove column header button (#38362)
Co-authored-by: diondiondion <mail@diondiondion.com>
2026-03-24 13:28:09 +00:00
Echo
aef70991f8 Profile redesign: Remove hashtags from featured page (#38363) 2026-03-24 13:10:27 +00:00
Echo
000199f003 Profile redesign: Simplify header for follower/following lists (#38366) 2026-03-24 13:03:44 +00:00
Echo
5ba5a2e552 Profile redesign: Ensure boost and languages menu items are only for following (#38365) 2026-03-24 12:58:19 +00:00
Claire
1d6508bcdc Fix javascript tests 2026-03-24 12:46:05 +01:00
renovate[bot]
7c5471e763 [Glitch] Update dependency vite to v8
Port changes from 1935f4db79 to glitch-soc

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: ChaosExAnima <ChaosExAnima@users.noreply.github.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-24 12:19:00 +01:00
Echo
5bc6630132 [Glitch] Profile redesign: Nudge to add featured tags
Port 931da0c327 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-24 12:15:37 +01:00
Claire
60236bffe6 Merge commit '0ef43a431d353a17419ea6664ed745b5dbfbf2f9' into glitch-soc/merge-upstream 2026-03-24 12:13:39 +01:00
Echo
58cd1f3644 Disable locales with Vite 8 (#38357) 2026-03-24 11:08:23 +00:00
Matt Jankowski
0ef43a431d Skip non-collection urls in process links service (#38351)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2026-03-24 09:52:35 +00:00
renovate[bot]
014e85ba9d Update dependency rails to v8.1.2.1 (#38352)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-24 09:40:41 +00:00
github-actions[bot]
65952f9b4c New Crowdin Translations (automated) (#38354)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-24 09:40:31 +00:00
Claire
ca08c040b0 Federate new profile settings (#38314) 2026-03-24 09:20:17 +00:00
renovate[bot]
b9388bed73 Update dependency vite to v8.0.2 (#38333)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-23 22:14:36 +00:00
Claire
970313a83e Drop support for ENABLE_SIDEKIQ_UNIQUE_JOBS_UI (#38340) 2026-03-23 18:34:21 +00:00
Matt Jankowski
9909c743d4 Use matches_uri_prefix in followers hash method (#38332) 2026-03-23 16:11:31 +00:00
Matt Jankowski
6e281e8b9e Fix Layout/EmptyLineAfterGuardClause cop in PollExpirationNotifyWorker (#38331) 2026-03-23 16:09:02 +00:00
David Roetzel
e4e584a99e Handle Update of a FeaturedCollection (#38337) 2026-03-23 15:57:02 +00:00
Matt Jankowski
5a7c565396 Extract common lists for status/reblog preload/cacheable (#35285) 2026-03-23 15:53:56 +00:00
Matt Jankowski
fca25fa1e4 Add tagged_objects to reblog section of status association cache (#38334) 2026-03-23 14:16:52 +00:00
David Roetzel
3c47020f93 Allow service to update existing Collections (#38329) 2026-03-23 14:09:10 +00:00
Claire
39d9da3b82 Tag linked FeaturedCollection objects over ActivityPub (#38115) 2026-03-23 13:11:33 +00:00
renovate[bot]
1935f4db79 Update dependency vite to v8 (#38174)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: ChaosExAnima <ChaosExAnima@users.noreply.github.com>
2026-03-23 11:47:03 +00:00
Claire
d48470a1fc Change media description length limit for remote media attachments from 1500 to 10000 characters (#37921) 2026-03-23 10:32:41 +00:00
renovate[bot]
506d0afa53 Update dependency flatware-rspec to v2.4.0 (#38327)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-23 09:52:07 +00:00
renovate[bot]
13bfd2f27c Update Yarn to v4.13.0 (#38305)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-23 09:33:22 +00:00
Claire
21576e29ab Refactor ProcessMentionsService to remove save_records parameter (#38277) 2026-03-23 09:12:30 +00:00
Echo
931da0c327 Profile redesign: Nudge to add featured tags (#38315) 2026-03-23 09:07:53 +00:00
Matt Jankowski
bd16e3f63e Use progress total tracker in accounts CLI (#38296) 2026-03-23 08:14:38 +00:00
renovate[bot]
e13d57a69e Update dependency jsdom to v29.0.1 (#38304)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-23 08:14:30 +00:00
github-actions[bot]
34a52fd38b New Crowdin Translations (automated) (#38321)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-23 07:45:28 +00:00
Claire
c43f44ebb9 Merge pull request #3453 from glitch-soc/glitch-soc/merge-upstream
Merge upstream changes up to 4e276e4476
2026-03-22 21:47:22 +01:00
diondiondion
b47f225c79 [Glitch] Add simple language selector to collection editor
Port 806f4f1589 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-20 18:15:44 +01:00
diondiondion
784f0169e2 [Glitch] Implements tag suggestions for collections topic field
Port 8bce0b99d4 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-20 18:15:00 +01:00
Echo
781491e643 [Glitch] Profile redesign: Profile tab settings
Port 6507a61d30 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-20 18:14:16 +01:00
Echo
00a423ed2b [Glitch] Profile editing: Use server flag
Port 00bcb014df to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-20 18:04:31 +01:00
Claire
469076c357 Merge commit '4e276e4476c81482143440f1f405479e0e4be7eb' into glitch-soc/merge-upstream 2026-03-20 18:03:14 +01:00
Matt Jankowski
4e276e4476 Use Mention arel/exist in report service scope build-out (#38300) 2026-03-20 16:03:23 +00:00
diondiondion
806f4f1589 Add simple language selector to collection editor (#38316) 2026-03-20 16:02:50 +00:00
renovate[bot]
4ecd75f918 Update dependency ioredis to v5.10.1 (#38299)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-20 15:50:35 +00:00
renovate[bot]
67864ef09f Update dependency test-prof to v1.6.0 (#38291)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-20 15:50:33 +00:00
renovate[bot]
6a2274b6a4 Update dependency aws-sdk-s3 to v1.217.0 (#38290)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-20 15:50:29 +00:00
renovate[bot]
ec5a0de191 Update dependency aws-sdk-core to v3.244.0 (#38289)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-20 15:50:25 +00:00
renovate[bot]
cb010dbb3c Update dependency hiredis-client to v0.28.0 (#38281)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-20 15:50:22 +00:00
renovate[bot]
2ca61614ce Update dependency core-js to v3.49.0 (#38246)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-20 15:50:19 +00:00
Matt Jankowski
24d3c94f4a Use delegate in web/push_subscription model for token value (#38313) 2026-03-20 15:48:28 +00:00
David Roetzel
7aa696149f Fetch an actor's featured collections (#38306) 2026-03-20 15:34:04 +00:00
diondiondion
8bce0b99d4 Implements tag suggestions for collections topic field (#38307) 2026-03-20 13:48:06 +00:00
Echo
6507a61d30 Profile redesign: Profile tab settings (#38309) 2026-03-20 13:38:10 +00:00
Echo
00bcb014df Profile editing: Use server flag (#38310) 2026-03-20 13:32:48 +00:00
Claire
8f9eba9629 Add more tests around terminating streaming connections (#38301) 2026-03-20 10:00:30 +00:00
David Roetzel
ccf6f16f05 Handle Delete of a FeatureAuthorization (#38292) 2026-03-20 09:51:20 +00:00
github-actions[bot]
d7d8d7f5ab New Crowdin Translations (automated) (#38303)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-20 09:38:52 +00:00
Claire
296bff71c3 Merge pull request #3452 from glitch-soc/glitch-soc/merge-upstream
Merge upstream changes up to 1ee457f2d3
2026-03-20 09:47:44 +01:00
Echo
1e77ebde61 [Glitch] Refactor: Remove Status unsafe lifecycles
Port 605b5b91c9 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-19 18:17:52 +01:00
Claire
efac62c156 [Glitch] Split invite_users permission into invite_bypass_approval
Port 1ee457f2d3 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-19 18:15:36 +01:00
Claire
291f141a02 Merge commit '1ee457f2d37c2b77a7fbce246a7c72ac9f9d3056' into glitch-soc/merge-upstream 2026-03-19 18:14:55 +01:00
Claire
ae1defcfd1 Merge pull request #3451 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to cffa8de626
2026-03-19 18:14:15 +01:00
Claire
1ee457f2d3 Split invite_users permission into invite_bypass_approval (#38278) 2026-03-19 15:25:54 +00:00
Matt Jankowski
49430b7eea Prefer to_json in backup service (#38297) 2026-03-19 15:14:47 +00:00
renovate[bot]
b5b01bebf2 Update dependency json to v2.19.2 [SECURITY] (#38295)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-19 15:14:42 +00:00
David Roetzel
f43969a0eb New service to fetch remote collections (#38298) 2026-03-19 14:27:02 +00:00
Echo
605b5b91c9 Refactor: Remove Status unsafe lifecycles (#38294) 2026-03-19 14:18:47 +00:00
Echo
d6aee5b21f [Glitch] Refactor: Relative timestamp component
Port cffa8de626 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-19 12:44:07 +01:00
Echo
f2d834c852 [Glitch] Profile redesign: Adjust account number fields to be stacked
Port 2af5c8551d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-19 12:40:08 +01:00
diondiondion
4759142f0e [Glitch] Sign-up server rules: Show different icon on toggle button when description is expanded
Port 43d66959aa to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-19 12:39:41 +01:00
Claire
fac3080289 Merge commit 'cffa8de6267a57673b7f6264fab671153f965d23' into glitch-soc/merge-upstream 2026-03-19 12:38:31 +01:00
Claire
7d827f1db1 Merge pull request #3450 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to db074fc3e2
2026-03-19 12:37:19 +01:00
Echo
cffa8de626 Refactor: Relative timestamp component (#38275) 2026-03-19 11:15:23 +00:00
Echo
2af5c8551d Profile redesign: Adjust account number fields to be stacked (#38283) 2026-03-19 11:04:15 +00:00
diondiondion
43d66959aa Sign-up server rules: Show different icon on toggle button when description is expanded (#38293) 2026-03-19 10:58:59 +00:00
Matt Jankowski
2ce4529e1e Final backup service prep for JSON cleanup (#38284) 2026-03-19 10:20:42 +00:00
renovate[bot]
d4c7ac5cd5 Update opentelemetry-ruby (non-major) (#38273)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-19 10:14:39 +00:00
renovate[bot]
8c6fdad0ca Update dependency capybara-playwright-driver to v0.5.9 (#38269)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-19 10:12:30 +00:00
renovate[bot]
f5aa8e1b25 Update dependency webmock to v3.26.2 (#38270)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-19 10:12:26 +00:00
renovate[bot]
71e92ca32a Update dependency libvips to v8.18.1 (#38276)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-19 09:43:56 +00:00
github-actions[bot]
6aedd2f9ec New Crowdin Translations (automated) (#38288)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-19 09:30:49 +00:00
diondiondion
ec940e88df Add missing h1 headings to Reset Password & Resend Confirmation Link pages (#38285) 2026-03-19 08:26:52 +00:00
Claire
d9dbe62417 Fix error when processing Add activity where the target is embedded and not a special collection (#38282) 2026-03-19 08:13:50 +00:00
diondiondion
f4c696af13 [Glitch] Improve accessibility of server rules list in sign-up flow
Port 380b898d0d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-18 18:09:16 +01:00
Claire
842bac86f6 Merge commit 'db074fc3e2b671e28a44ae379e6df1fcbdbbce53' into glitch-soc/merge-upstream 2026-03-18 18:01:57 +01:00
Claire
84c741475e Merge pull request #3449 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to d52d0e4ded
2026-03-18 18:01:10 +01:00
Matt Jankowski
db074fc3e2 Add constant for backup service placeholder (#38280) 2026-03-18 16:22:24 +00:00
diondiondion
380b898d0d Improve accessibility of server rules list in sign-up flow (#38257) 2026-03-18 16:08:23 +00:00
Matt Jankowski
815c2cf8e9 Clean up Webfinger lib spec (#38259) 2026-03-18 13:23:06 +00:00
Matt Jankowski
bd9b24f1ef Prefer rspec-sidekiq matchers over "expect push bulk to match" approach (#38274) 2026-03-18 13:21:54 +00:00
Matt Jankowski
e537292e2a Prefer to_json in self destruct scheduler (#38263) 2026-03-18 13:21:03 +00:00
Claire
c0a8442fd5 Fix stray use of Oj gem in glitch-soc-only migrations 2026-03-18 12:14:54 +01:00
diondiondion
3d913d2bf1 [Glitch] Remove superfluous SCSS imports file
Port 11112fa9dc to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-18 12:03:47 +01:00
Claire
b305b3b2db Fix stray glitch-soc-only use of Oj gem 2026-03-18 12:02:13 +01:00
Claire
2b0531914f Merge commit 'd52d0e4dedcc4c8ca12781681debe68f77c007e2' into glitch-soc/merge-upstream 2026-03-18 12:01:23 +01:00
Claire
d52d0e4ded Update dependency action_text-trix (#38271) 2026-03-18 10:11:05 +00:00
Matt Jankowski
b497bb2908 Normalize current_username on account redirect form (#38262) 2026-03-18 09:33:00 +00:00
github-actions[bot]
5e7f221cab New Crowdin Translations (automated) (#38267)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-18 09:17:33 +00:00
Matt Jankowski
e839a94b93 Use with_index iterator in backup service (#38264) 2026-03-18 09:11:14 +00:00
Nicholas La Roux
36400681cf Remove oj and its initializer and add json to the Gemfile (#37752) 2026-03-18 09:02:11 +00:00
Claire
5a1e9a6f5e Merge pull request #3448 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to b320c9e4c9
2026-03-17 20:34:40 +01:00
Itoh Shimon
984e9f4e83 [Glitch] Fix vertically written textareas
Port efa76ace8a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-17 18:59:21 +01:00
diondiondion
a6a013c21b [Glitch] Improve accessibility of sign-up progress indicator
Port 75c4ff35d2 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-17 18:59:01 +01:00
Claire
3593ddff11 Merge commit 'b320c9e4c901bf99ccbca321bad2ceb2f51de140' into glitch-soc/merge-upstream 2026-03-17 18:58:19 +01:00
diondiondion
5b9cb55701 [Glitch] Revamp heading levels in settings & admin pages
Port 68984de5b5 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-17 18:55:35 +01:00
Claire
bd9e7d6060 Merge commit '68984de5b503791b814d81a85520af256bf43e11' into glitch-soc/merge-upstream
Conflicts:
- `app/views/admin/settings/discovery/show.html.haml`:
  Glitch-soc has an extra setting textually adjacent to a line upstream has changed.
  Applied upstream's change while keeping glitch-soc's setting.
2026-03-17 18:53:00 +01:00
Claire
348a7a628f Merge pull request #3447 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to c37bc5a8a9
2026-03-17 18:50:00 +01:00
diondiondion
11112fa9dc Remove superfluous SCSS imports file (#38261) 2026-03-17 17:39:21 +00:00
Claire
04bf07a9cf Merge commit 'c37bc5a8a94758e19b2d50db5e7816a96cec5cf4' into glitch-soc/merge-upstream 2026-03-17 18:01:07 +01:00
Claire
dfccf6423c Merge pull request #3445 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 16c41e035b
2026-03-17 18:00:23 +01:00
Matt Jankowski
b320c9e4c9 Prefer to_json over JSON.generate when simple strings in stub request (#38258) 2026-03-17 16:10:54 +00:00
David Roetzel
f3035a8e51 Handle Reject of a FeatureRequest (#38256) 2026-03-17 15:59:51 +00:00
Matt Jankowski
90840b3ede Rename deprecated ffmpeg vsync arg to fps_mode (#38198) 2026-03-17 15:44:50 +00:00
Itoh Shimon
efa76ace8a Fix vertically written textareas (#38205) 2026-03-17 15:43:49 +00:00
Matt Jankowski
9c4a072adf Add missing require rails helper to recent moved files (#38254) 2026-03-17 15:16:32 +00:00
David Roetzel
96c93ba835 Only persist a collection item's approval URI once it is verified (#38255) 2026-03-17 15:14:30 +00:00
Matt Jankowski
b9d25bde3e Convert mix of JSON.parse and JSON.load_file (#38242) 2026-03-17 13:27:57 +00:00
Matt Jankowski
4d33490ec8 Update chewy to version 8.0.1 (#37983) 2026-03-17 13:27:37 +00:00
renovate[bot]
3d4364a2a6 Update dependency pg to v8.20.0 (#38076)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 13:21:36 +00:00
diondiondion
75c4ff35d2 Improve accessibility of sign-up progress indicator (#38252) 2026-03-17 12:44:40 +00:00
David Roetzel
5f36c482d2 Handle Accept of a FeatureRequest (#38251) 2026-03-17 11:45:00 +00:00
diondiondion
68984de5b5 Revamp heading levels in settings & admin pages (#38230) 2026-03-17 10:32:24 +00:00
Matt Jankowski
c37bc5a8a9 Update model-concern-related spec locations for consistency (#38200) 2026-03-17 09:50:32 +00:00
github-actions[bot]
75c5f30556 New Crowdin Translations (automated) (#38247)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-17 09:36:34 +00:00
renovate[bot]
089eeffc9e Update dependency rollup-plugin-gzip to v4.2.0 (#38209)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 09:25:09 +00:00
renovate[bot]
4b6f0cd5c5 Update dependency jsdom to v29 (#38210)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 09:25:04 +00:00
renovate[bot]
2f23d1acb9 Update dependency devise to v5.0.3 (#38245)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 09:08:01 +00:00
Matt Jankowski
f07e84f9de Rescue JSON::ParserError where already converted (#38244) 2026-03-17 08:57:10 +00:00
Echo
938f53a624 [Glitch] Profile editing: Finish image editing
Port 4328807f28 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-16 18:31:24 +01:00
Echo
59879b7a61 [Glitch] Profile editing: Uploading avatar and header images
Port 21c27eb3af to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-16 18:30:43 +01:00
Matt Jankowski
f5619fc8bc Use JSON.generate in db migrations (#38241) 2026-03-16 17:26:35 +00:00
Matt Jankowski
653161fecc Convert remaining JSON.generate (#38240) 2026-03-16 17:18:16 +00:00
Claire
73f77c49d8 Merge commit '16c41e035bdd6e08927c950aeeb5332adbe8b6d5' into glitch-soc/merge-upstream
Conflicts:
- `lib/mastodon/version.rb`:
  Upstream bumped the Mastodon API version, glitch-soc has an extra glitch version.
  Bumped the Mastodon API version as upstream did.
2026-03-16 18:16:56 +01:00
Claire
b1942f4f43 Merge pull request #3444 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 9c8be1e721
2026-03-16 18:02:39 +01:00
Matt Jankowski
16c41e035b Use JSON.parse in AP inboxes (#38238) 2026-03-16 16:58:13 +00:00
Matt Jankowski
3832030711 Convert Oj.load -> JSON.parse in most places (#38236) 2026-03-16 16:38:19 +00:00
Matt Jankowski
0e14224eaf Use JSON.parse in user settings (#38237) 2026-03-16 16:08:17 +00:00
Echo
4328807f28 Profile editing: Finish image editing (#38235) 2026-03-16 15:56:30 +00:00
Matt Jankowski
703f2d0263 Use implicit to_json call in app/services (#38225) 2026-03-16 15:17:57 +00:00
Matt Jankowski
8792d6f840 Use JSON.generate in trivial string/hash conversion in specs (#38224) 2026-03-16 15:16:43 +00:00
Matt Jankowski
f460ad611a Use to_json call in web/push notification worker (#38233) 2026-03-16 15:12:38 +00:00
Matt Jankowski
0c75e97345 Use JSON.generate in backup service (#38234) 2026-03-16 15:10:10 +00:00
Matt Jankowski
6b1eac8865 Use to_json call for Relay enable/disable (#38232) 2026-03-16 15:09:28 +00:00
Matt Jankowski
092acbd47b Use to_json call for pins API (#38231) 2026-03-16 15:06:22 +00:00
Matt Jankowski
968ce25c39 Use to_json call for worker payloads (#38228) 2026-03-16 14:49:21 +00:00
Matt Jankowski
d9cd65f039 Use to_json call for AP::QuoteRequest accept/reject paths (#38229) 2026-03-16 14:49:09 +00:00
Matt Jankowski
70230c632c Use to_json call for AP::Follow reject path (#38227) 2026-03-16 14:40:51 +00:00
Matt Jankowski
8ed13bc6f7 Use to_json call for accounts API (#38226) 2026-03-16 14:40:03 +00:00
Matt Jankowski
7933fa4f94 Use to_json call in donation campaigns (#38223) 2026-03-16 14:32:05 +00:00
Matt Jankowski
c05492ed5a Use JSON.generate call for fan out service (#38222) 2026-03-16 14:31:58 +00:00
Claire
b7246518bf Add avatar_description and header_description parameters to PATCH /api/v1/profile (#38221) 2026-03-16 14:04:25 +00:00
Matt Jankowski
8124f1581a Use to_json call in cli/domains (#38219) 2026-03-16 14:03:20 +00:00
Matt Jankowski
1a464bc5ed Use to_json in simple view hash data-props build locations (#38218) 2026-03-16 14:02:52 +00:00
Matt Jankowski
330357507d Use to_json call for webhook service (#38217) 2026-03-16 14:01:37 +00:00
Matt Jankowski
638429037f Use to_json call for libre translate api (#38216) 2026-03-16 13:58:39 +00:00
Matt Jankowski
6044219746 Use to_json call for raw event strings (#38215) 2026-03-16 13:55:58 +00:00
Matt Jankowski
f9b2dffaa8 Use JSON.generate call in push update worker (#38208) 2026-03-16 13:55:53 +00:00
Echo
21c27eb3af Profile editing: Uploading avatar and header images (#38189) 2026-03-16 11:39:52 +00:00
Claire
4359098740 Merge commit '9c8be1e72146af247e2b6cdae6e1d37371506569' into glitch-soc/merge-upstream 2026-03-16 12:17:49 +01:00
renovate[bot]
9c8be1e721 Update dependency immutable to v4.3.8 [SECURITY] (#38073)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 11:03:13 +00:00
David Roetzel
12c63a382c Handle adding already approved collection items (#38213) 2026-03-16 10:35:07 +00:00
Claire
62b90d73d7 Fixes some model definitions in tootctl maintenance fix-duplicates (#38214) 2026-03-16 10:00:08 +00:00
Claire
5521aac4ab Fix hashtags preceded by non-break spaces not being processed as such (#38212) 2026-03-16 09:39:18 +00:00
David Roetzel
c993daa347 Start of handling FeatureRequest activities (#38193) 2026-03-16 09:04:28 +00:00
Matt Jankowski
8d5d66ecfc Remove unused react component helper method (#38207) 2026-03-16 09:02:21 +00:00
Matt Jankowski
e2bf09d57d Add timestamp spec for markers API response (#38206) 2026-03-16 08:48:10 +00:00
David Roetzel
2f989c780a Reinstate action logging (#38211) 2026-03-16 08:42:06 +00:00
Matt Jankowski
f561014aa8 Make use of email_domain in sign up approval check (#38199) 2026-03-16 08:34:18 +00:00
github-actions[bot]
5b6b86c97c New Crowdin Translations (automated) (#38201)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-16 08:26:09 +00:00
Matt Jankowski
a9c248f14f Limit email domain block variant query to unique values (#38196) 2026-03-16 08:11:32 +00:00
renovate[bot]
e7cb3af15f Update dependency aws-sdk-s3 to v1.216.0 (#38187)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 08:11:11 +00:00
renovate[bot]
10624ecce6 Update dependency oj to v3.16.16 (#38186)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 08:11:06 +00:00
Claire
ad0a7f83f0 Merge pull request #3441 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 89b7a3d7fb
2026-03-14 12:55:51 +01:00
diondiondion
39f1861252 [Glitch] A11y improvements on login & settings pages
Port 89b7a3d7fb to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-14 11:51:20 +01:00
Echo
334188b4fc [Glitch] Adds a range selector component
Port d26269d68b to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-14 11:49:27 +01:00
Echo
a78119d8d3 [Glitch] Fix incorrect SASS addition
Port 91407ecc15 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-14 11:48:14 +01:00
diondiondion
8ec882df0c [Glitch] Allow displaying field status (error, warning, info) under form fields
Port 890b2673fc to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-14 11:43:31 +01:00
Claire
3afb58ad18 Merge commit '89b7a3d7fb73ba79d33cab9755424b4aa2050b1b' into glitch-soc/merge-upstream 2026-03-14 11:41:24 +01:00
diondiondion
89b7a3d7fb A11y improvements on login & settings pages (#38188) 2026-03-13 17:14:04 +00:00
Matt Jankowski
ec0e78f128 Add coverage for rewrite with vary username paths (#38197) 2026-03-13 16:54:57 +00:00
Echo
d26269d68b Adds a range selector component (#38191) 2026-03-13 14:28:39 +00:00
Echo
91407ecc15 Fix incorrect SASS addition (#38194) 2026-03-13 14:21:39 +00:00
diondiondion
890b2673fc Allow displaying field status (error, warning, info) under form fields (#38175) 2026-03-13 13:55:17 +00:00
renovate[bot]
fdbc3c8a16 Update dependency sass to v1.98.0 (#38142)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-13 13:21:45 +00:00
github-actions[bot]
3a2613a3e8 New Crowdin Translations (automated) (#38185)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-13 09:33:06 +00:00
Matt Jankowski
6416724f75 Normalize current_username on account migration (#38183) 2026-03-13 09:33:02 +00:00
Claire
1b49ef10d2 Merge pull request #3440 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 377952703c
2026-03-12 20:12:20 +01:00
Claire
208b556c18 Merge commit '377952703cf70f14008cc7938479558d8cca9903' into glitch-soc/merge-upstream 2026-03-12 19:03:08 +01:00
Claire
d099de23c5 Merge commit 'bf32befcc21831b31f684795bb211b2f1f4cfb6d' into glitch-soc/merge-upstream
Conflicts:
- `app/models/status.rb`:
  Upstream reordered model annotations, while glitch-soc has extra columns.
  Reordered as upstream did.
- `app/models/status_edit.rb`:
  Upstream reordered model annotations, while glitch-soc has extra columns.
  Reordered as upstream did.
2026-03-12 19:01:28 +01:00
Echo
a7974df51a [Glitch] Profile editing: Edit image menu
Port 420136e83b to glitch-soc

Co-authored-by: diondiondion <mail@diondiondion.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-12 18:53:39 +01:00
diondiondion
ba7db10fd0 [Glitch] Fix extra border on accounts in settings page
Port 13c94db9e7 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-12 18:51:04 +01:00
Eugen Rochko
263615b74f [Glitch] Change order of onboarding steps
Port 51894ac247 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-12 18:50:13 +01:00
Claire
3833eadfbf Merge commit 'adede83c7c9a943cf9954fe865becf6a0c2d2280' into glitch-soc/merge-upstream 2026-03-12 18:48:32 +01:00
David Roetzel
377952703c Add serializers for Accept+Reject of feature requests (#38177) 2026-03-12 15:46:36 +00:00
renovate[bot]
7511357ec6 Update opentelemetry-ruby (non-major) (#38138)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-12 14:09:17 +00:00
Nicholas La Roux
21a8ff5351 Upgrade from Ruby 3.4.8 to 3.4.9 (#38154) 2026-03-12 14:04:35 +00:00
Matt Jankowski
7778db1418 Truncate unsupported/EOL version changelogs (#38173) 2026-03-12 14:04:21 +00:00
Matt Jankowski
bf32befcc2 Run annotaterb models after bug fix to re-order model comments (#38172) 2026-03-12 14:00:41 +00:00
Echo
adede83c7c Updates to latest Material Icons (#38171) 2026-03-12 11:17:43 +00:00
David Roetzel
eeed483518 Handle Remove of an individual collection item (#38170) 2026-03-12 11:11:39 +00:00
Echo
420136e83b Profile editing: Edit image menu (#38156)
Co-authored-by: diondiondion <mail@diondiondion.com>
2026-03-12 10:42:29 +00:00
David Roetzel
353c8b2abf Handle Remove activity on featuredCollections (#38169) 2026-03-12 10:37:53 +00:00
diondiondion
13c94db9e7 Fix extra border on accounts in settings page (#38168) 2026-03-12 10:19:06 +00:00
Hugo Gameiro
4552cda15a Fix OpenStack Swift Keystone token rate limiting (#38145) 2026-03-12 10:15:49 +00:00
David Roetzel
94aa5d7c9e Handle Add activity to featuredCollections (#38167) 2026-03-12 10:14:22 +00:00
github-actions[bot]
7f9df6d02d New Crowdin Translations (automated) (#38164)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-12 09:53:59 +00:00
Matt Jankowski
2330f11cad Remove unused @markdown from user mailer terms action (#38160) 2026-03-12 09:22:56 +00:00
David Roetzel
84d8020165 Store a remote actor's featuredCollections URI (#38166) 2026-03-12 09:11:32 +00:00
Eugen Rochko
51894ac247 Change order of onboarding steps (#38121) 2026-03-11 21:07:31 +00:00
Claire
3492283a9e Merge pull request #3439 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 811575a109
2026-03-11 19:35:19 +01:00
diondiondion
979ef236ca [Glitch] Collection editor: Format topic as hashtag
Port 3ef7d2835a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-11 18:55:45 +01:00
Echo
99b43f225c [Glitch] Profile editing: Always show field buttons
Port 4a08ab64d1 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-11 18:55:18 +01:00
diondiondion
18aefaea62 [Glitch] Refactor collection editor state handling
Port 20932752fe to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-11 18:54:52 +01:00
Echo
006b06199f [Glitch] Profile editing: Add warning for links
Port 12c6c6dcf9 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-11 18:54:22 +01:00
Echo
3ed3ce4e05 [Glitch] Profile editing: Fix bug with reordering
Port f971670c62 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-11 18:53:42 +01:00
Claire
0dddc44eb5 [Glitch] Add fallback to Object intent for FEP-3b86 in remote interaction helper
Port 9916c786e6 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-11 18:53:10 +01:00
diondiondion
a76ee2e233 [Glitch] Prevent hover card from showing unintentionally
Port 316290ba9d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-11 18:52:39 +01:00
Claire
b5222606e3 Merge commit '811575a10903cada549580979cc809ca98ad570c' into glitch-soc/merge-upstream 2026-03-11 18:50:59 +01:00
Matt Jankowski
811575a109 Use bundler version 4.0.8 (#38150) 2026-03-11 17:11:28 +00:00
Matt Jankowski
0a216003ff Disable use_multi_json for json validator / match_json_schema (#38151) 2026-03-11 17:11:00 +00:00
diondiondion
3ef7d2835a Collection editor: Format topic as hashtag (#38153) 2026-03-11 17:04:37 +00:00
David Roetzel
3091e2e525 Ingestion of remote collections (#38144) 2026-03-11 14:29:00 +00:00
Echo
4a08ab64d1 Profile editing: Always show field buttons (#38152) 2026-03-11 13:52:44 +00:00
diondiondion
20932752fe Refactor collection editor state handling (#38133) 2026-03-11 13:20:56 +00:00
Echo
12c6c6dcf9 Profile editing: Add warning for links (#38148) 2026-03-11 13:19:39 +00:00
Echo
f971670c62 Profile editing: Fix bug with reordering (#38147) 2026-03-11 12:09:54 +00:00
renovate[bot]
da4b717211 Update dependency rspec-rails to v8.0.4 (#38146)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-11 10:53:38 +00:00
Matt Jankowski
dc004caf71 Convert attempt IP from EmailDomainBlock history tracking to string before recording (#38137) 2026-03-11 10:49:07 +00:00
Matt Jankowski
d047a10cf5 Use around_action to set locale in admin/notification mailers (#38140) 2026-03-11 10:18:24 +00:00
github-actions[bot]
d39f867931 New Crowdin Translations (automated) (#38143)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-11 10:16:06 +00:00
renovate[bot]
68f4fe7425 Update dependency fastimage to v2.4.1 (#38135)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-11 10:05:54 +00:00
Matt Jankowski
53f4d7f029 Update RemoteIp patch with Rails 8.1 changes (#38139) 2026-03-11 09:51:49 +00:00
Claire
32fc5304a7 Change HTTP signatures to skip the Accept header (#38132) 2026-03-11 09:49:52 +00:00
Claire
9916c786e6 Add fallback to Object intent for FEP-3b86 in remote interaction helper (#38130) 2026-03-11 09:42:24 +00:00
diondiondion
316290ba9d Prevent hover card from showing unintentionally (#38112) 2026-03-11 07:42:36 +00:00
Claire
9602f6fcc3 Merge pull request #3437 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 64629eadb7
2026-03-10 18:46:37 +01:00
Duarte Serrano
42716c94bf [Glitch] Fix short numbers rounding up instead of truncating (#37899)
Port 75ef5bfd2d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-10 18:12:54 +01:00
Eugen Rochko
4150cee7a5 [Glitch] Add support for FEP-3b86 (Activity Intents)
Port 69b1f60f4e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-10 18:12:54 +01:00
diondiondion
19a8c80762 [Glitch] Fix collections not shown on profile when there are no featured tags or accounts
Port 7d58ce309c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-10 18:12:54 +01:00
diondiondion
7e57d00af6 [Glitch] Fix erratic scroll-to-right on delete & redraft in Advanced UI
Port 71f9763e68 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-10 18:12:54 +01:00
Claire
5fdcac60b9 Merge commit '64629eadb71afab79a741b016dc56a8bdf1d46f2' into glitch-soc/merge-upstream 2026-03-10 18:04:32 +01:00
Matt Jankowski
64629eadb7 Do not prepare returning user for unpersisted records (#38136) 2026-03-10 16:37:59 +00:00
David Roetzel
3b6d94ce62 Add column for html descriptions of collections (#38124) 2026-03-10 14:54:38 +00:00
Matt Jankowski
f6ea52e822 Add InstancesIndex coverage (#38129) 2026-03-10 14:45:17 +00:00
Andy Piper
c6322d8007 Update contributing docs (#38125)
Signed-off-by: Andy Piper <andypiper@users.noreply.github.com>
2026-03-10 12:53:20 +00:00
Duarte Serrano
75ef5bfd2d Fix short numbers rounding up instead of truncating (#37899) (#38114) 2026-03-10 11:28:44 +00:00
Eugen Rochko
69b1f60f4e Add support for FEP-3b86 (Activity Intents) (#38120) 2026-03-10 10:21:24 +00:00
diondiondion
7d58ce309c Fix collections not shown on profile when there are no featured tags or accounts (#38113) 2026-03-10 10:02:03 +00:00
github-actions[bot]
b64bed5acd New Crowdin Translations (automated) (#38122)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-10 10:01:38 +00:00
Matt Jankowski
cec60d5b71 Clean up search tagged specs (#38085) 2026-03-10 09:46:03 +00:00
Claire
bbd88f0b9b Merge pull request #3436 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 1d46558e8d
2026-03-09 23:41:12 +01:00
diondiondion
71f9763e68 Fix erratic scroll-to-right on delete & redraft in Advanced UI (#38116) 2026-03-09 17:42:54 +00:00
Claire
8d717ab161 Merge commit '1d46558e8d949860acc4f3a86516b9989bd74f79' into glitch-soc/merge-upstream
Conflicts:
- `spec/controllers/application_controller_spec.rb`:
  Upstream moved specs that were textually-adjacent to glitch-soc ones.
  Kept the glitch-soc ones.
2026-03-09 18:14:15 +01:00
Claire
9d805196a7 Merge pull request #3432 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to e235c446c9
2026-03-09 18:12:07 +01:00
David Roetzel
1d46558e8d Ingestion of remote collection items (#38106) 2026-03-09 14:59:57 +00:00
diondiondion
e616200e59 [Glitch] Allow removing yourself from a collection
Port 3a796544e3 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-09 12:42:58 +01:00
Claire
4bcd0caa79 Merge commit 'e235c446c96280c015fb27f7eefe4e95a5a39892' into glitch-soc/merge-upstream 2026-03-09 12:41:12 +01:00
Matt Jankowski
2c6d072175 Extract ErrorResponses from application controller (#38105) 2026-03-09 11:30:41 +00:00
Claire
e235c446c9 Fix broken option defaults in tootctl email-domain-blocks (#38107) 2026-03-09 11:26:16 +00:00
renovate[bot]
4211b1b34c Update dependency faker to v3.6.1 (#38074)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 10:47:20 +00:00
Matt Jankowski
73d97153d8 Update connection_pool to version 3.0.2 (#38103) 2026-03-09 10:01:48 +00:00
Matt Jankowski
fcc3fac8a8 Fix Style/ReduceToHash cop (#38088) 2026-03-09 10:01:12 +00:00
diondiondion
3a796544e3 Allow removing yourself from a collection (#38096) 2026-03-09 09:54:17 +00:00
github-actions[bot]
5838fce8f4 New Crowdin Translations (automated) (#38100)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-09 09:50:28 +00:00
Matt Jankowski
3b1705a406 Add TermsOfService#usable_effective_date to DRY up view logic (#38095) 2026-03-09 09:38:00 +00:00
renovate[bot]
d7a1bead51 Update dependency aws-sdk-s3 to v1.215.0 (#38067)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 09:35:20 +00:00
Matt Jankowski
eabbda3148 Fix Style/SelectByKind cop (#38084) 2026-03-09 09:34:58 +00:00
renovate[bot]
5090036edf Update dependency hiredis-client to v0.27.0 (#38092)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 09:34:19 +00:00
renovate[bot]
6a6a97f314 Update dependency json-schema to v6.2.0 (#38093)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 09:34:01 +00:00
Matt Jankowski
2ad0b32dd5 Add basic ES-enabled index/service coverage (#38097) 2026-03-09 09:31:56 +00:00
Claire
44f4f73ad2 Merge pull request #3431 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to eb848d082a
2026-03-07 18:14:15 +01:00
Echo
f4fb7d6b7a [Glitch] Profile editing: Rearranging and adding fields
Port eb848d082a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-07 17:30:14 +01:00
Claire
a4af7a531d Merge commit 'eb848d082afc8864b2aa15858f414e4867902c65' into glitch-soc/merge-upstream 2026-03-07 17:29:09 +01:00
Claire
7e7a8cea52 Merge pull request #3430 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 3d8d5f6dc7
2026-03-06 14:27:16 +01:00
Echo
eb848d082a Profile editing: Rearranging and adding fields (#38083) 2026-03-06 12:57:06 +00:00
github-actions[bot]
11fb1df7a6 New Crowdin Translations (automated) (#38091)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-06 11:39:35 +00:00
renovate[bot]
169552ff06 Update dependency aws-sdk-core to v3.243.0 (#38089)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-06 11:16:28 +00:00
diondiondion
c56496d22e [Glitch] Remove minimum account limit on collections
Port 3d8d5f6dc7 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-05 18:46:34 +01:00
diondiondion
141cd0a741 [Glitch] Hide account list in sensitive collections
Port 3557be5d4d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-05 18:46:34 +01:00
Echo
7575226495 [Glitch] Profile editing: Custom fields (deleting, editing)
Port dae0926c1f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-05 18:46:34 +01:00
Claire
fa3794ea27 [Glitch] Fix “Unblock” and “Unmute” actions being disabled when blocked
Port dd27c7b917 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-05 18:46:34 +01:00
diondiondion
b6774279bd [Glitch] Add "Collections" link to main navigation
Port 748dbf3217 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-05 18:46:31 +01:00
Matt Jankowski
812c109e87 Remove message argument from NoteLengthValidator error approach (#37977) 2026-03-05 17:44:52 +00:00
Claire
0a989af8c6 Merge commit '3d8d5f6dc7625d9638cc2e3387247442225d4e3f' into glitch-soc/merge-upstream 2026-03-05 18:21:07 +01:00
diondiondion
3d8d5f6dc7 Remove minimum account limit on collections (#38082) 2026-03-05 15:57:27 +00:00
diondiondion
3557be5d4d Hide account list in sensitive collections (#38081) 2026-03-05 15:43:57 +00:00
renovate[bot]
0f37901955 Update dependency htmlentities to v4.4.2 (#38080)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-05 15:34:22 +00:00
Matt Jankowski
58ef0f6aee Move chewy enable for spec to search data manager (#38054) 2026-03-05 15:07:41 +00:00
Claire
9b4a09f760 Fix poll expiration notification being re-triggered on implicit updates (#38078) 2026-03-05 14:53:00 +00:00
Matt Jankowski
4e3866dbaf Replace email_spec gem with built-in matchers (#38079) 2026-03-05 14:42:21 +00:00
renovate[bot]
5d4271a3cc Update dependency rollup-plugin-visualizer to v6.0.11 (#38051)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-05 14:37:58 +00:00
Echo
dae0926c1f Profile editing: Custom fields (deleting, editing) (#38066) 2026-03-05 10:48:19 +00:00
Matt Jankowski
6d9c16e4a1 Fix incorrect I18n string in webauthn mailers (#38062) 2026-03-05 10:37:12 +00:00
github-actions[bot]
94954aed5e New Crowdin Translations (automated) (#38070)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-05 09:27:43 +00:00
Claire
dd27c7b917 Fix “Unblock” and “Unmute” actions being disabled when blocked (#38075) 2026-03-05 09:10:49 +00:00
diondiondion
748dbf3217 Add "Collections" link to main navigation (#38065) 2026-03-05 09:01:08 +00:00
renovate[bot]
eefdf7ecdf Update dependency linzer to v0.7.8 (#38050)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-05 08:56:32 +00:00
Claire
922fbb8c17 Add for searching already-known private GtS posts (#38057) 2026-03-05 08:56:18 +00:00
Claire
4a22dd3605 Merge pull request #3429 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to a70079968c
2026-03-04 19:57:49 +01:00
Claire
8287661a0b Fix unnecessary difference with upstream 2026-03-04 19:01:19 +01:00
ThibG
6e6036af14 [Glitch] Fix “X new items” not showing up for slow mode on empty timelines
Port 2d5addde03 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-04 19:00:43 +01:00
diondiondion
8384961937 [Glitch] Break ScrollableList component into parts
Port a70079968c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-04 18:53:57 +01:00
Echo
2e4f8c3704 [Glitch] Emoji text input and character counter components
Port 3fbb7424fa to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-04 18:49:29 +01:00
Claire
1add29cf40 Redirect to short account URLs when requesting HTML for one of the AP endpoints (#38056) 2026-03-04 17:44:27 +00:00
Claire
753e4bee8d Merge commit 'a70079968c55891e387b1c1e524bb314b9dfb033' into glitch-soc/merge-upstream 2026-03-04 18:40:39 +01:00
Claire
8d836e0a49 Merge commit 'a89754f28847ebccee36fab248537d5f49f37024' into glitch-soc/merge-upstream
Conflicts:
- `db/schema.rb`:
  Upstream re-generated the file, which reordered all the definitions.
  Re-generated the files as well.
2026-03-04 18:39:00 +01:00
Claire
96e4d1d821 Merge pull request #3428 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 8a0261c51c
2026-03-04 18:35:14 +01:00
diondiondion
a70079968c Break ScrollableList component into parts (#38059) 2026-03-04 16:18:05 +00:00
Echo
3fbb7424fa Emoji text input and character counter components (#38052) 2026-03-04 16:13:45 +00:00
Matt Jankowski
43b0113a4a Update ES versions in CI/devcontainer to match primary compose (#38041) 2026-03-04 15:33:25 +00:00
Matt Jankowski
a89754f288 Re-run db:schema:dump with rails 8.1 (#38044) 2026-03-04 13:57:53 +00:00
diondiondion
0ae3733a22 [Glitch] Fix local collection link resulting in error page
Port d0e7692d79 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-04 12:41:28 +01:00
diondiondion
3fecef0bb1 [Glitch] Profile redesign: Fix timeline filter button color on Safari iOS
Port c0b2286871 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-04 12:41:09 +01:00
Claire
c96db36396 Merge commit '8a0261c51caf76b6d12e3801da471759c31c9608' into glitch-soc/merge-upstream 2026-03-04 12:40:16 +01:00
Claire
8a0261c51c Add missing_attribution boolean to preview cards (#38043) 2026-03-04 11:18:37 +00:00
Claire
5472ab251a Fix existing posts not being removed from lists when a list member is unfollowed (#38048) 2026-03-04 11:18:28 +00:00
github-actions[bot]
078b87bdc1 New Crowdin Translations (automated) (#38047)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-04 11:06:26 +00:00
Matt Jankowski
177f4ee3ae Update haml_lint to version 0.72.0 (#38042) 2026-03-04 11:03:25 +00:00
renovate[bot]
0a4f96be21 Update dependency tzinfo-data to v1.2026.1 (#38035)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 11:01:47 +00:00
renovate[bot]
0f2ad41f89 Update dependency public_suffix to v7.0.5 (#38034)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 11:01:44 +00:00
github-actions[bot]
b12429e41c New Crowdin translations (#3424)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-03 19:30:59 +01:00
Claire
551da3a300 Merge pull request #3427 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to a3aeae0288
2026-03-03 19:30:34 +01:00
diondiondion
d0e7692d79 Fix local collection link resulting in error page (#38038) 2026-03-03 17:34:37 +00:00
diondiondion
c0b2286871 Profile redesign: Fix timeline filter button color on Safari iOS (#38040) 2026-03-03 17:34:01 +00:00
diondiondion
8b2e8e7b58 [Glitch] Prevent hover card from showing on touch devices
Port de4ee8565c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-03 18:27:26 +01:00
diondiondion
5f710e3edc [Glitch] Convert ColumnsArea component to TS
Port 1d21d9d4c2 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-03 18:27:06 +01:00
diondiondion
a4b7c9f933 [Glitch] Anchor post navigation via hotkeys to top of viewport
Port 6e5aa00436 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-03 18:20:50 +01:00
Claire
45b87f31ff Merge commit 'a3aeae02885408381c7c1f3f6a0cc88799823409' into glitch-soc/merge-upstream 2026-03-03 18:12:16 +01:00
Claire
a3aeae0288 Add test to cover proper URL for media in DELETE /api/v1/statuses/:id (#38037) 2026-03-03 15:36:54 +00:00
diondiondion
de4ee8565c Prevent hover card from showing on touch devices (#38039) 2026-03-03 15:26:56 +00:00
diondiondion
1d21d9d4c2 Convert ColumnsArea component to TS (#38031) 2026-03-03 12:48:50 +00:00
diondiondion
6e5aa00436 Anchor post navigation via hotkeys to top of viewport (#38036) 2026-03-03 11:02:04 +00:00
github-actions[bot]
80066631ee New Crowdin Translations (automated) (#38032)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-03 10:47:19 +00:00
diondiondion
396d9dd12a Allow scrolling alt text popover with keyboard & improved media focus outlines (#38033) 2026-03-03 10:27:46 +00:00
Claire
4298b7d57a Merge pull request #3426 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 74b3b6c798
2026-03-02 19:20:04 +01:00
Claire
d2f5feb25f Fix linting issue 2026-03-02 18:59:32 +01:00
Echo
54cfc49b42 [Glitch] Profile editing: Allow adding arbitrary featured tags
Port 74b3b6c798 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-02 18:48:31 +01:00
diondiondion
fe7dc293c4 [Glitch] Collection share modal cleanup
Port 03b2f77ad2 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-02 18:48:31 +01:00
David Roetzel
26ce025df1 [Glitch] Change cursor to make clear summary is clickable
Port ceaadc791e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-02 18:48:31 +01:00
diondiondion
5cfbb5b359 [Glitch] Add "skip to content", "skip to navigation" links
Port 816e63d2a5 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-02 18:48:31 +01:00
Antoine Cellerier
739c35811e [Glitch] Add g+e keyboard shortcut for /explore (trending)
Port 87004ddb96 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-03-02 18:15:16 +01:00
Claire
1b92ac0729 Merge commit '74b3b6c798d1f137947e80df8eefb7412e70febd' into glitch-soc/merge-upstream 2026-03-02 18:11:45 +01:00
Claire
b55936be7e Merge pull request #3425 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 2f65701920
2026-03-02 18:11:05 +01:00
Echo
74b3b6c798 Profile editing: Allow adding arbitrary featured tags (#38012) 2026-03-02 16:32:08 +00:00
diondiondion
03b2f77ad2 Collection share modal cleanup (#38030) 2026-03-02 16:19:13 +00:00
David Roetzel
ceaadc791e Change cursor to make clear summary is clickable (#38029) 2026-03-02 15:13:56 +00:00
Matt Jankowski
e7cec161fd Reduce haml-lint LineLength configuration to 240 (#37287) 2026-03-02 14:43:57 +00:00
diondiondion
816e63d2a5 Add "skip to content", "skip to navigation" links (#38006) 2026-03-02 14:37:33 +00:00
Antoine Cellerier
87004ddb96 Add g+e keyboard shortcut for /explore (trending) (#38014) 2026-03-02 13:49:28 +00:00
David Roetzel
f953d40289 Add API to revoke collection item (#38027) 2026-03-02 13:38:03 +00:00
Claire
799bd69189 Merge commit '2f657019201d73c9d86d1ece339e66e72954f0eb' into glitch-soc/merge-upstream
Conflicts:
- `app/views/admin/custom_emojis/new.html.haml`:
  Upstream refactored a line adjacent to a glitch-soc modified line.
  Ported upstream changes.
2026-03-02 12:19:02 +01:00
David Roetzel
2f65701920 Add service to revoke inclusion in a Collection (#38026) 2026-03-02 10:16:41 +00:00
Shlee
6ab24de659 trustworthy_attribution - Bounce bad URIs (#37372) 2026-03-02 10:03:21 +00:00
renovate[bot]
ba8e495631 Update dependency pg to v8.19.0 (#37978)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 09:30:52 +00:00
renovate[bot]
178e8c23b1 Update dependency eslint-plugin-jsdoc to v62 (#37433)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 09:30:17 +00:00
Matt Jankowski
c86a8f8798 Use file_field support for array to accept attribute (#37844) 2026-03-02 09:27:04 +00:00
renovate[bot]
e3a53b6f5a Update Node.js to 24.14 (#37971)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 09:08:04 +00:00
Matt Jankowski
74f7a5e8e9 Remove unneeded stylelint-config-prettier-scss package (#37973) 2026-03-02 09:07:50 +00:00
renovate[bot]
68163e5975 Update dependency brakeman to v8.0.4 (#38002)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 09:06:15 +00:00
renovate[bot]
c9282d980d Update dependency addressable to v2.8.9 (#38013)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 09:04:53 +00:00
github-actions[bot]
7444c8f82e New Crowdin Translations (automated) (#38018)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-02 08:51:13 +00:00
Matt Jankowski
5fd1235ba2 Update binding_of_caller to version 2.0.0 (#38017) 2026-03-02 08:51:09 +00:00
renovate[bot]
db241b5c2c Update dependency axios to v1.13.6 (#38009)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 08:50:54 +00:00
renovate[bot]
786fcac4a1 Update dependency ioredis to v5.10.0 (#38010)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 08:50:50 +00:00
Matt Jankowski
d845a8a289 Fix violations to existing cops from rubocop v1.85.0 (#38015) 2026-03-02 08:47:45 +00:00
Claire
c93ebf971b Merge pull request #3423 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 7f16397f3c
2026-03-01 11:49:45 +01:00
Dock
d6fa72cfdf [Glitch] Fix avatar alt-text running into other elements on image load failure
Port 3c8e37907d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-27 21:35:02 +01:00
Echo
310acf113b [Glitch] Profile redesign: Profile fields feedback
Port 1e5cad072e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-27 21:34:07 +01:00
Echo
398806a2b0 [Glitch] Profile editing: Tab display controls
Port d69d7c0507 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-27 21:33:31 +01:00
diondiondion
9ed23cc8b2 [Glitch] Add share dialog for collections
Port 7970eb392a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-27 21:31:10 +01:00
Claire
0e1ea3110e Merge commit '7f16397f3c37a8e378239974b73afbfe2b6e6844' into glitch-soc/merge-upstream
Conflicts:
- `lib/mastodon/version.rb`:
  Upstream bumped the mastodon API version, glitch-soc has a change on an adjacent
  line adding a glitch API version.
2026-02-27 21:25:37 +01:00
Matt Jankowski
7f16397f3c Add validation spec for Form::Redirect model (#38011) 2026-02-27 17:05:29 +00:00
Matt Jankowski
7e5e96739f Use consistent calling style for TagManager#normalize_domain (#35764) 2026-02-27 16:38:34 +00:00
Matt Jankowski
9762b4a75c Use normalizes for tag name attribute (#37119) 2026-02-27 15:56:08 +00:00
Matt Jankowski
e92b7beb75 Refactor tests for FeaturedTag#display_name (#38007) 2026-02-27 15:23:48 +00:00
Dock
3c8e37907d Fix avatar alt-text running into other elements on image load failure. (#38000) 2026-02-27 15:22:19 +00:00
Echo
1e5cad072e Profile redesign: Profile fields feedback (#38005) 2026-02-27 13:54:08 +00:00
Echo
d69d7c0507 Profile editing: Tab display controls (#37994) 2026-02-27 13:36:19 +00:00
David Roetzel
6b88dd4923 Issue FeatureAuthorizations (#38004) 2026-02-27 11:00:21 +00:00
Claire
3b7c33e763 Add exclude_direct flag to /api/v1/accounts/:id/statuses to exclude direct messages (#37763) 2026-02-27 09:34:12 +00:00
github-actions[bot]
fc1f57b5f1 New Crowdin Translations (automated) (#38001)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-27 09:29:07 +00:00
Matt Jankowski
1bc5cc4fcf Use bundler version 4.0.7 (#37995) 2026-02-27 09:14:46 +00:00
renovate[bot]
dd1623e988 Update dependency storybook to v10.2.10 [SECURITY] (#37998)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-27 08:46:48 +00:00
Matt Jankowski
1dbb258d53 Update rails to version 8.1.2 (#36505) 2026-02-27 07:50:35 +00:00
Claire
36c0f3701e Merge pull request #3422 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to bca57020a0
2026-02-26 18:59:01 +01:00
diondiondion
7970eb392a Add share dialog for collections (#37986) 2026-02-26 17:45:09 +00:00
Echo
836c41728d [Glitch] Profile redesign: Fix fields in Chromium
Port bca57020a0 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-26 18:31:11 +01:00
Echo
49bed149df [Glitch] Profile editing: Utilize new API
Port d18a47b6a7 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-26 18:30:49 +01:00
Claire
dc27eccc8e Merge commit 'bca57020a04c552a3c91912a0e0b69ddafaad06a' into glitch-soc/merge-upstream 2026-02-26 18:27:02 +01:00
Echo
bca57020a0 Profile redesign: Fix fields in Chromium (#37996) 2026-02-26 17:04:46 +00:00
Claire
9c4d11f927 Add featured_tags to GET /api/v1/profile (#37932) 2026-02-26 16:18:42 +00:00
Matt Jankowski
5026bf6ac7 Use validation matchers for DisallowedHashtagValidator spec (#37636) 2026-02-26 15:56:16 +00:00
David Roetzel
b09e63da87 Federate activity when remote account is added to a Collection (#37992) 2026-02-26 15:11:02 +00:00
Claire
951a42f491 Add max_note_length and max_display_name_length to configuration.accounts in Instance entity (#37991) 2026-02-26 14:58:07 +00:00
Echo
d18a47b6a7 Profile editing: Utilize new API (#37990) 2026-02-26 13:55:10 +00:00
David Roetzel
51b81b3ce9 Allow remote accounts in Collections (#37989) 2026-02-26 13:31:23 +00:00
github-actions[bot]
970ac04be7 New Crowdin Translations (automated) (#37985)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-26 10:07:33 +00:00
Claire
b2d10eab3b Merge pull request #3421 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 4d2a148ccb
2026-02-25 19:45:52 +01:00
Claire
2a60f6fb7c [Glitch] Fix profile redesign profile fields gap
Port 4d2a148ccb to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-25 19:12:55 +01:00
Echo
7c631b9ffb [Glitch] Profile redesign: Account fields grid
Port dcbf7ab8dc to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-25 19:11:38 +01:00
Claire
f6d6dc2605 [Glitch] Fix username availability check being wrongly applied on race conditions
Port ea34d35b32 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-25 19:11:38 +01:00
diondiondion
ae6dbbcc53 [Glitch] Display public collections on profile "Featured tab"
Port 440466c246 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-25 19:11:38 +01:00
diondiondion
83b4a7845c [Glitch] Add collection report modal
Port 919b1e69b8 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-25 19:11:38 +01:00
Claire
e3cb4dea42 Merge commit '4d2a148ccbedc818c98fd712a0b44869c1019321' into glitch-soc/merge-upstream 2026-02-25 19:11:22 +01:00
Claire
4d2a148ccb Fix profile redesign profile fields gap (#37979) 2026-02-25 17:45:51 +00:00
Echo
dcbf7ab8dc Profile redesign: Account fields grid (#37976) 2026-02-25 16:59:18 +00:00
David Roetzel
f9326efef6 Add moderation consequences for collections (#37974) 2026-02-25 14:32:07 +00:00
Claire
ea34d35b32 Fix username availability check being wrongly applied on race conditions (#37975) 2026-02-25 14:30:01 +00:00
diondiondion
440466c246 Display public collections on profile "Featured tab" (#37967) 2026-02-25 14:14:55 +00:00
Matt Jankowski
32873e63cf Remove references to removed prettier config files (#37962) 2026-02-25 14:13:32 +00:00
github-actions[bot]
953472b40d New Crowdin Translations (automated) (#37968)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-25 10:14:08 +00:00
David Roetzel
e2c9426c77 Split status batch and moderation actions (#37970) 2026-02-25 10:07:46 +00:00
Claire
c857c91508 Merge pull request #3420 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 1e87bd178d
2026-02-24 15:54:29 +01:00
diondiondion
919b1e69b8 Add collection report modal (#37961) 2026-02-24 14:29:46 +00:00
David Roetzel
72406a1cd1 Refactor: Introduce admin base action class (#37960) 2026-02-24 14:22:44 +00:00
Claire
c15c49b5b6 Merge commit '1e87bd178d96ab7d760f019fcf651ecc1585e701' into glitch-soc/merge-upstream 2026-02-24 15:14:25 +01:00
Claire
1e87bd178d Bump version to v4.5.7 (#37965) 2026-02-24 13:54:33 +00:00
Claire
c7338bb819 Merge pull request #3416 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 3ed16489d0
2026-02-24 13:06:06 +01:00
Echo
2369b90673 [Glitch] Profile editing: Add singular to translated string
Port 3ed16489d0 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-24 12:02:44 +01:00
Claire
5a5560ca45 Merge commit '3ed16489d05d701e62be5038adbe2891c1a3ac1d' into glitch-soc/merge-upstream
Conflicts:
- `yarn.lock`:
  Upstream dependency updated textually adjacent to glitch-soc dependency
2026-02-24 12:01:25 +01:00
Claire
43ef9f66b6 Add PATCH /api/v1/profile (#37934) 2026-02-24 10:48:56 +00:00
Echo
3ed16489d0 Profile editing: Add singular to translated string (#37958) 2026-02-24 10:04:11 +00:00
renovate[bot]
49bcaba628 Update dependency postcss-preset-env to v11.2.0 (#37945)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-24 09:08:37 +00:00
github-actions[bot]
c5b6881c1d New Crowdin Translations (automated) (#37956)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-24 09:08:25 +00:00
renovate[bot]
96bff0e4cd Update dependency omniauth-saml to v2.2.5 (#37944)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-24 08:37:41 +00:00
Claire
261c6540f7 Merge pull request #3414 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to ef6405ab28
2026-02-23 20:55:20 +01:00
Echo
ff7c61b82c [Glitch] Profile editing: Featured tags
Port ef6405ab28 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-23 18:34:58 +01:00
David Roetzel
7309703de4 [Glitch] Collapse posts/collections in moderation interface
Port e2aecd040c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-23 18:27:09 +01:00
diondiondion
25e1ade5e2 [Glitch] Allow displaying icon in TextInput component
Port e0cc3a30ef to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-23 18:22:46 +01:00
diondiondion
8ced537389 [Glitch] Fix overly large avatars in report modal
Port f9c18ba170 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-23 18:21:22 +01:00
Claire
3508c8b2f6 Merge commit 'ef6405ab28e02686c0c9aa69d77eb43909be5f6f' into glitch-soc/merge-upstream 2026-02-23 18:20:47 +01:00
Echo
ef6405ab28 Profile editing: Featured tags (#37952) 2026-02-23 15:53:49 +00:00
David Roetzel
e2aecd040c Collapse posts/collections in moderation interface (#37929) 2026-02-23 15:14:24 +00:00
diondiondion
e0cc3a30ef Allow displaying icon in TextInput component (#37951) 2026-02-23 14:12:02 +00:00
David Roetzel
b785f05ddb Add coverage for StatusBatchAction (#37949) 2026-02-23 13:22:24 +00:00
diondiondion
f9c18ba170 Fix overly large avatars in report modal (#37950) 2026-02-23 12:16:54 +00:00
Matt Jankowski
1d513966bd Remove unneeded haml-lint problem matcher (#37930) 2026-02-23 09:54:50 +00:00
github-actions[bot]
6bd4d79802 New Crowdin Translations (automated) (#37940)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-23 09:03:07 +00:00
renovate[bot]
5fc2be54c7 Update dependency rspec-sidekiq to v5.3.0 (#37938)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-23 09:03:03 +00:00
Claire
76ce42bef3 Add back follow relationship badge on redesigned profiles (#3413) 2026-02-20 21:44:17 +01:00
Claire
bfbe73f127 Merge pull request #3412 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 6ba6285a73
2026-02-20 21:29:01 +01:00
diondiondion
29e6db98f2 [Glitch] Collection accounts editor: Show info badge on accounts that haven't posted in over a week
Port 3d33294870 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-20 21:09:05 +01:00
diondiondion
c16cbb98e5 [Glitch] Require following accounts before being able to add them to a collection
Port 68a7cd404d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-20 21:08:41 +01:00
Claire
85f72a3940 Merge commit '6ba6285a73c3a8b281123814d45f534e3bcebb96' into glitch-soc/merge-upstream 2026-02-20 21:08:06 +01:00
Claire
200b1adec0 Merge pull request #3411 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to e24737c612
2026-02-20 21:07:27 +01:00
Claire
3a1e3d7413 Fix formatting issues, remove unused JS script 2026-02-20 20:47:50 +01:00
Claire
d7d102e68f Merge commit 'e24737c612730fd865f62905484dbfa25b82d27e' into glitch-soc/merge-upstream
Conflicts:
- `.prettierignore`:
  Upstream removed it, replaced by `.oxfmtrc.json`.
  We had glitch-specific files in there.
  Updated `.oxfmtrc.json` accordingly and removed `.prettierignore`.
- `config/formatjs-formatter.js`:
  Upstream switched to `oxfmt` from `prettier`, and some rules are slightly different.
  Glitch-soc had extra code in there.
  Reformatted appropriately.
- `eslint.config.mjs`:
  Upstream moved some configuration from `eslint.config.mjs` to `.oxfmtrc.json` where
  glitch-soc had slightly different configuration.
  Removed it from `eslint.config.mjs` as well and updated `.oxfmtrc.json` accordingly.
- `package.json`:
  Upstream changed script definitions textually adjacent to one that we have modified.
  Applied upstream's change, keeping the textually adjacent modified script intact.
2026-02-20 20:32:58 +01:00
David Roetzel
6ba6285a73 Reject unconfirmed FASPs (#37926) 2026-02-20 14:40:31 +00:00
David Roetzel
7b85d21823 Re-use custom socket class for FASP requests (#37925) 2026-02-20 14:27:50 +00:00
diondiondion
3d33294870 Collection accounts editor: Show info badge on accounts that haven't posted in over a week (#37928) 2026-02-20 14:01:39 +00:00
diondiondion
68a7cd404d Require following accounts before being able to add them to a collection (#37927) 2026-02-20 13:14:36 +00:00
github-actions[bot]
4d2ca8c92a New Crowdin Translations (automated) (#37924)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-20 10:52:57 +00:00
Claire
cc1e65dcec Add GET /api/v1/profile (#37912) 2026-02-20 10:16:04 +00:00
Claire
754ad33640 Merge pull request #3410 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 8e7c3973dc
2026-02-19 23:31:51 +01:00
Echo
d7bbe9c451 [Glitch] Remove conditional check for timeline data
Port 8e7c3973dc to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-19 22:04:28 +01:00
diondiondion
5c47ed2d47 [Glitch] Only suggest discoverable accounts in collection account editor
Port 39ff07bc89 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-19 22:04:05 +01:00
diondiondion
79fba522e1 [Glitch] Merge collection settings into single editor page
Port c118ff708f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-19 22:02:44 +01:00
Echo
3ac5b10dec [Glitch] Profile editing: Name and bio
Port ed4787c1b1 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-19 21:53:24 +01:00
Claire
eebed16f59 Merge commit '8e7c3973dc67835e0ce9c7073b9344ec19d3910a' into glitch-soc/merge-upstream 2026-02-19 21:52:23 +01:00
Renaud Chaput
e24737c612 Replace prettier with oxfmt (#37893) 2026-02-19 18:04:25 +00:00
Echo
8e7c3973dc Remove conditional check for timeline data (#37922) 2026-02-19 17:20:33 +00:00
diondiondion
39ff07bc89 Only suggest discoverable accounts in collection account editor (#37920) 2026-02-19 16:43:31 +00:00
github-actions[bot]
7eb4b907eb New Crowdin Translations (automated) (#37918)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-19 14:42:24 +00:00
Matt Jankowski
2a9de97cb6 Use validation matchers for UserEmailValidator spec (#37908) 2026-02-19 14:25:58 +00:00
diondiondion
c118ff708f Merge collection settings into single editor page (#37916) 2026-02-19 14:09:52 +00:00
Echo
ed4787c1b1 Profile editing: Name and bio (#37907) 2026-02-19 13:53:29 +00:00
Matt Jankowski
157583659a Use validation matchers for UniqueUsernameValidator spec (#37909) 2026-02-19 13:14:12 +00:00
Matt Jankowski
40f92f3af8 Use validation matchers for UnreservedUsernameValidator spec (#37910) 2026-02-19 12:50:09 +00:00
David Roetzel
e288bf6516 Show reported collections in moderation interface (#37898) 2026-02-19 12:46:38 +00:00
renovate[bot]
6f859364fb Update dependency rack to v3.2.5 (#37895)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-19 12:46:32 +00:00
renovate[bot]
238d0f8e1d Update dependency devise to v5.0.2 (#37903)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-19 11:12:08 +00:00
Matt Jankowski
f48a299004 Use validation matchers for UrlValidator spec (#37911) 2026-02-19 11:11:46 +00:00
github-actions[bot]
093528ef17 New Crowdin Translations (automated) (#37915)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-19 11:11:41 +00:00
github-actions[bot]
b6917961d5 New Crowdin translations (#3407)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-18 20:15:57 +01:00
Claire
4977fb1570 Merge pull request #3409 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 3df8fb8fe9
2026-02-18 20:15:48 +01:00
diondiondion
312c77fdd0 [Glitch] Fix visibility of video overlay controls in light mode
Port 3df8fb8fe9 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-18 18:59:21 +01:00
diondiondion
93b7678555 [Glitch] Add collection detail page
Port 488e0b2617 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-18 18:58:57 +01:00
Echo
d67cdcb0b3 [Glitch] Profile redesign: Design fixes
Port 079f8615fe to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-18 18:55:34 +01:00
Echo
b8b1d3a934 [Glitch] Profile editing: Add initial route
Port 4b1f66418b to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-18 18:53:23 +01:00
Claire
925d1ffde5 Fix Ruby linting for glitch-soc code 2026-02-18 18:47:21 +01:00
Claire
b041869887 Merge commit '3df8fb8fe9d33c7fbe51aa0a418b8b9ca46bb61b' into glitch-soc/merge-upstream 2026-02-18 18:40:03 +01:00
diondiondion
3df8fb8fe9 Fix visibility of video overlay controls in light mode (#37906) 2026-02-18 15:28:49 +00:00
Matt Jankowski
66052e3ddd Use validation matchers for StatusLengthValidator spec (#37905) 2026-02-18 15:22:22 +00:00
Matt Jankowski
e8ecf1719c Use validation matchers for StatusPinValidator spec (#37904) 2026-02-18 15:09:38 +00:00
Matt Jankowski
a411b7eccb Use validation matchers for PollOptionsValidator spec (#37901) 2026-02-18 13:44:59 +00:00
Matt Jankowski
9e40d3ef37 Use validation matchers for ReactionValidator spec (#37900) 2026-02-18 13:43:21 +00:00
diondiondion
488e0b2617 Add collection detail page (#37897) 2026-02-18 13:19:39 +00:00
Claire
bd64ca2583 Add new profile settings (#37890) 2026-02-18 13:18:44 +00:00
Echo
079f8615fe Profile redesign: Design fixes (#37892) 2026-02-18 12:05:02 +00:00
github-actions[bot]
b62ba9e29e New Crowdin Translations (automated) (#37896)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-18 10:33:31 +00:00
Matt Jankowski
f95cd68667 Use validation matchers for NoteLengthValidator spec (#37891) 2026-02-18 10:33:26 +00:00
renovate[bot]
61b9bc4fac Update dependency rspec-rails to v8.0.3 (#37888)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-18 10:26:47 +00:00
Claire
7b4c22214a Merge pull request #3408 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 0b66e74426
2026-02-17 20:51:59 +01:00
Matt Jankowski
3c3a1b1684 Use separate rules with same groupName for playwright updates (#37809) 2026-02-17 17:49:19 +00:00
Echo
4b1f66418b Profile editing: Add initial route (#37885) 2026-02-17 15:45:24 +00:00
Matt Jankowski
371946fa80 Use validation matchers for LanguageValidator spec (#37886) 2026-02-17 14:59:31 +00:00
Nicholas La Roux
438602c488 Upgrade rubocop from v1.84.0 to v1.84.2, update config, and correct offences (#37795) 2026-02-17 14:56:46 +00:00
diondiondion
9abfde6189 [Glitch] Allow managing collection accounts
Port a644a4a762 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-17 12:15:31 +01:00
Claire
f47e2937cf Merge commit '0b66e744263a4af1f14d03886ea2a9da4ca156db' into glitch-soc/merge-upstream 2026-02-17 12:11:33 +01:00
Claire
13dafeed41 Merge pull request #3406 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to cff25c186b
2026-02-17 12:10:41 +01:00
Claire
0b66e74426 Add GET /api/v1/donation_campaigns (#37880) 2026-02-17 10:54:21 +00:00
Claire
4a6d17ad7b Fix hashtag matching by replacing negative lookbehind with positive lookbehind (#37684) 2026-02-17 10:27:36 +00:00
github-actions[bot]
0a6412faf9 New Crowdin Translations (automated) (#37884)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-17 09:21:35 +00:00
Matt Jankowski
7f28dd1179 Use validation matchers for FollowLimitValidator spec (#37792) 2026-02-17 09:03:46 +00:00
Matt Jankowski
2cb8471d81 Update doorkeeper i18n for invalid code challenge method (#37827) 2026-02-17 09:01:59 +00:00
renovate[bot]
1618c28a48 Update dependency dotenv to v17.3.1 (#37855)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-17 09:01:19 +00:00
Estel
335eeb6239 Add try_files directive comments to nginx.conf (#37866) 2026-02-17 08:55:11 +00:00
diondiondion
a644a4a762 Allow managing collection accounts (#37812) 2026-02-16 18:17:20 +00:00
Echo
df9d9423b9 [Glitch] Profile redesign: Switch to server flag
Port f7bf804a3f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-16 18:27:42 +01:00
Claire
02ad266b81 Merge commit 'cff25c186bb8bb7cdd29de8938949c775dc0ec7f' into glitch-soc/merge-upstream 2026-02-16 18:27:08 +01:00
Claire
2dc567feec Merge upstream changes up to 284c53f439 (#3405)
* Capture output in `cli/emoji` spec (#37861)

* Update dependency devise to v5.0.1 (#37860)

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

* Update dependency capybara-playwright-driver to v0.5.8 (#37840)

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

* Update dependency jsdom to v28.1.0 (#37874)

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

* Update dependency stackprof to v0.2.28 (#37873)

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

* New Crowdin Translations (automated) (#37863)

Co-authored-by: GitHub Actions <noreply@github.com>

* Update dependency ioredis to v5.9.3 (#37849)

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

* Remove disabled bundlesize-compare workflow (#37875)

---------

Co-authored-by: Matt Jankowski <matt@jankowski.online>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-16 18:25:33 +01:00
Claire
cff25c186b Fix race condition when processing statuses twice with the same idempotency key (#37879) 2026-02-16 14:58:22 +00:00
Echo
f7bf804a3f Profile redesign: Switch to server flag (#37876) 2026-02-16 13:06:49 +00:00
Claire
5769ceb6e3 Merge commit '284c53f4391c0e2cdea788bc0aff73190913a488' into glitch-soc/merge-upstream 2026-02-16 13:35:39 +01:00
Claire
f199d7995c Add missing “Filter action” source string (#37838) 2026-02-16 12:34:38 +00:00
Claire
284c53f439 Remove disabled bundlesize-compare workflow (#37875) 2026-02-16 09:51:24 +00:00
renovate[bot]
ed6d8fad9e Update dependency ioredis to v5.9.3 (#37849)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-16 09:30:56 +00:00
github-actions[bot]
6d3eb43500 New Crowdin Translations (automated) (#37863)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-16 09:14:21 +00:00
renovate[bot]
4425b8a0b2 Update dependency stackprof to v0.2.28 (#37873)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-16 08:32:29 +00:00
renovate[bot]
4396217434 Update dependency jsdom to v28.1.0 (#37874)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-16 08:32:12 +00:00
renovate[bot]
9baa51c67e Update dependency capybara-playwright-driver to v0.5.8 (#37840)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-16 08:29:38 +00:00
renovate[bot]
e8ca5f633e Update dependency devise to v5.0.1 (#37860)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-16 08:25:24 +00:00
Matt Jankowski
1b724e9e12 Capture output in cli/emoji spec (#37861) 2026-02-16 08:24:39 +00:00
Jeong Arm
5b106a3453 [Fix undefined current_flavour in controllers (/settings/flavours page) (#3400)
* [Glitch] Fix undefined `current_flavour` in controllers

After the theming infrastructure migration (#37612, #37807),
`ThemingConcern` was removed and theme-related methods were moved
to `ThemeHelper`. However, controllers like `Settings::FlavoursController`
call `current_flavour` directly in their actions, which is not accessible
from a view helper module.

Include `ThemeHelper` in `ApplicationController` to restore access to
`current_flavour`, `current_skin`, `current_theme`, and other theme
methods in all controllers.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Include ThemeHelper in Settings::FlavoursController instead of ApplicationController

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 09:20:51 +01:00
Claire
114105a788 [Glitch] Fix quote-inline fallback being removed even for legacy quotes (#3402)
Port 2a9c7d2b9e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-15 14:59:38 +01:00
github-actions[bot]
4149067b18 New Crowdin translations (#3382)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-14 22:03:41 +01:00
Claire
aa235be5ae Merge pull request #3399 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 56ecdde152
2026-02-14 21:16:37 +01:00
Echo
ce4b913792 [Glitch] Emoji: Cache data by path instead of just Etag
Port 3d0a6ba831 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-13 18:41:42 +01:00
Echo
66027e4057 [Glitch] Profile redesign: About tab
Port f5aa5adcf7 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-13 18:41:14 +01:00
Claire
5f72148834 Merge commit '56ecdde1523cec87c55d3d0e7e9b6757dcfe2491' into glitch-soc/merge-upstream 2026-02-13 18:26:08 +01:00
Claire
3efad88c8c Merge pull request #3398 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 6c3bd944f8
2026-02-13 18:17:45 +01:00
Matt Jankowski
56ecdde152 Add ContentPoliciesHelper#policy_list to wrap string building in views (#37856) 2026-02-13 15:54:41 +00:00
Echo
3d0a6ba831 Emoji: Cache data by path instead of just Etag (#37858) 2026-02-13 15:23:22 +00:00
Claire
c1a5bd52f2 Update devcontainer image version (#37857) 2026-02-13 15:17:12 +00:00
Echo
f5aa5adcf7 Profile redesign: About tab (#37851) 2026-02-13 13:37:39 +00:00
Claire
00f16a1863 [Glitch] Fix delete & redraft of pending posts
Port ab9aa25cd3 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-13 13:05:52 +01:00
Echo
c0fe6f8600 [Glitch] Fixes appearing in Following list
Port 45057d1df2 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-13 13:04:15 +01:00
Claire
ddc7df2064 Merge commit '6c3bd944f8890e1a349bd06e9585cb5ec25507e6' into glitch-soc/merge-upstream 2026-02-13 13:03:51 +01:00
David Roetzel
6c3bd944f8 Allow reporting (local) Collections (#37848) 2026-02-13 11:11:44 +00:00
github-actions[bot]
a3f34137fd New Crowdin Translations (automated) (#37853)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-13 10:45:32 +00:00
renovate[bot]
747ec35885 Update dependency annotaterb to v4.22.0 (#37835)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-13 10:32:29 +00:00
Claire
ab9aa25cd3 Fix delete & redraft of pending posts (#37839) 2026-02-13 10:32:16 +00:00
renovate[bot]
83182f9e13 Update dependency vite-tsconfig-paths to v6.1.1 (#37834)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-13 10:16:00 +00:00
Echo
45057d1df2 Fixes appearing in Following list (#37854) 2026-02-13 10:03:57 +00:00
Claire
ba098fdeb5 Merge pull request #3397 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to c44cc1f5c3
2026-02-12 22:19:29 +01:00
diondiondion
f40f529905 [Glitch] Implement Collection list item design
Port c44cc1f5c3 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-12 18:04:00 +01:00
diondiondion
629bb4989d [Glitch] Fix bad visibility of scroll buttons on follow-suggestions carousel
Port 46fd341685 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-12 18:03:28 +01:00
diondiondion
f16bef3f7d [Glitch] Theme tokens sync
Port e4bb347f72 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-12 18:02:22 +01:00
Claire
e451416d90 Merge commit 'c44cc1f5c3bafb49a324f8f72a42a91d09eecfe3' into glitch-soc/merge-upstream 2026-02-12 18:00:45 +01:00
diondiondion
c44cc1f5c3 Implement Collection list item design (#37850) 2026-02-12 16:30:10 +00:00
David Roetzel
f57167c61a Add ID/URI to collection items (#37842) 2026-02-12 15:31:45 +00:00
Matt Jankowski
db64ae368f Use implicit class_names in 2FA partials (#37846) 2026-02-12 15:19:43 +00:00
Claire
bfec82e5f9 Add nan-TW to interface languages (#37822) 2026-02-12 15:12:08 +00:00
diondiondion
46fd341685 Fix bad visibility of scroll buttons on follow-suggestions carousel (#37843) 2026-02-12 15:10:53 +00:00
diondiondion
e4bb347f72 Theme tokens sync (#37841) 2026-02-12 11:33:28 +00:00
Claire
327936e113 Merge pull request #3396 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to ca9966ce2f
2026-02-12 12:15:19 +01:00
David Roetzel
37d859db29 Federate deletion of collection item (#37837) 2026-02-12 10:39:13 +00:00
Claire
37e82ee66f Add --suspended-only option to tootctl emoji purge (#37828) 2026-02-12 10:25:29 +00:00
github-actions[bot]
6e8df21233 New Crowdin Translations (automated) (#37836)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-12 08:59:31 +00:00
Echo
f90670683a [Glitch] Make pinning and unpinning directly modify state
Port ca9966ce2f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-11 20:58:55 +01:00
diondiondion
f842ce2206 [Glitch] Add useStorageState hook
Port f99c60a8f3 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-11 20:58:54 +01:00
Echo
02a7f74976 [Glitch] Profile redesign: Show yourself in follower list
Port bbd88d356d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-11 20:58:54 +01:00
Nicholas La Roux
5272a18855 [Glitch] Update various eslint packages and correct offences
Port 062d0b454b to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-11 20:29:09 +01:00
diondiondion
d3e972465d [Glitch] Add Cmd/Ctrl+Enter to submit when Textarea is focused
Port 8c2c94fa6c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-11 20:28:32 +01:00
Claire
2373c5a132 Merge commit 'ca9966ce2ff79dcac90b2feced65fa991534d53e' into glitch-soc/merge-upstream 2026-02-11 20:26:56 +01:00
Claire
ba748f3bb1 Merge pull request #3395 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 01b576efed
2026-02-11 20:24:24 +01:00
Echo
ca9966ce2f Make pinning and unpinning directly modify state (#37831) 2026-02-11 16:58:00 +00:00
Claire
9129f98776 Process actor public keys when they are in a separate document without the ActivityStreams context (#37826) 2026-02-11 15:47:24 +00:00
Claire
dfe44bcaef Add ability to require 2FA for specific roles (including Everybody) (#37701) 2026-02-11 14:34:09 +00:00
David Roetzel
3e1127d27b Federate Add when item is added to Collection (#37823) 2026-02-11 13:52:29 +00:00
diondiondion
f99c60a8f3 Add useStorageState hook (#37825) 2026-02-11 13:30:53 +00:00
Echo
bbd88d356d Profile redesign: Show yourself in follower list (#37813) 2026-02-11 13:19:18 +00:00
Claire
2f8ecb894e Fix generation of static error pages in glitch-soc 2026-02-11 14:12:46 +01:00
Claire
01b576efed Add skin migrations for glitch-soc 2026-02-11 13:49:27 +01:00
Echo
c7b08d8f19 [Glitch] Profile redesign: Account filter fixes
Port 0279a52216 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-11 13:37:19 +01:00
Claire
20fedab093 Fix mistakenly included glitch-soc database columns (#37824) 2026-02-11 12:34:34 +00:00
Claire
4fbd1ad7ae Merge commit 'd13d7b4566d551d027830f7dfc987ba3a8e2dd4f' into glitch-soc/merge-upstream
Conflicts are too numerous to list, but they are all caused by upstream's
theming changes and all have to do with the differences between upstream and
glitch-soc in the theming systems.

They were all manually resolved by adapting the relevant code.
2026-02-11 13:32:18 +01:00
Claire
8d1bf0dda5 Merge pull request #3394 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to fb89198460
2026-02-11 12:52:19 +01:00
Nicholas La Roux
062d0b454b Update various eslint packages and correct offences (#37814) 2026-02-11 11:24:22 +00:00
diondiondion
8c2c94fa6c Add Cmd/Ctrl+Enter to submit when Textarea is focused (#37821) 2026-02-11 10:44:20 +00:00
Claire
c53bb3b33e Rename “Mode” to “Color scheme” (#37819) 2026-02-11 10:36:59 +00:00
renovate[bot]
94524dd29c Update dependency @vitejs/plugin-react to v5.1.4 (#37798)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-11 10:34:45 +00:00
renovate[bot]
3faefafdcb Update dependency pino to v10.3.1 (#37799)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-11 10:15:53 +00:00
github-actions[bot]
cc75188a76 New Crowdin Translations (automated) (#37817)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-11 09:11:56 +00:00
Claire
d13d7b4566 Fix server theme migration (#37810) 2026-02-10 20:53:43 +00:00
Echo
0279a52216 Profile redesign: Account filter fixes (#37811) 2026-02-10 17:20:02 +00:00
Echo
b7d5607dd1 [Glitch] Profile redesign: Quality pass
Port fb89198460 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-10 18:09:26 +01:00
Claire
d89db37e93 Merge commit 'fb89198460f9cebf624cc5ca0b139563ae4fd120' into glitch-soc/merge-upstream 2026-02-10 18:02:15 +01:00
Claire
71f9ec9c08 Merge pull request #3393 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 2774e0fbfa
2026-02-10 18:01:36 +01:00
Matt Jankowski
66b09318ed Remove unneeded rescue from DOB Validator (#37785) 2026-02-10 16:24:23 +00:00
Claire
63aac77b61 Purge custom emojis on domain suspension (#37808) 2026-02-10 16:13:06 +00:00
Matt Jankowski
34514bcfe9 Move theme-related helper methods out of controller (#37807) 2026-02-10 15:34:42 +00:00
Claire
040555be7f Fix NoMethodError in ActivityPub::FetchFeaturedTagsCollectionService (#37806) 2026-02-10 15:24:54 +00:00
renovate[bot]
f3347b1c67 Update dependency irb to v1.17.0 (#37780)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-10 13:30:21 +00:00
Claire
46e4b5ae37 Fix streaming of disabled timelines with special permissions (#37791) 2026-02-10 13:27:00 +00:00
David Roetzel
ae30c40335 Auto accept account added to collection (#37805) 2026-02-10 12:48:28 +00:00
Claire
1b00b92772 Merge commit '2774e0fbfa045e883ec94e873e657e9e8fefa98b' into glitch-soc/merge-upstream 2026-02-10 12:03:53 +01:00
Claire
5bb2518888 Merge pull request #3392 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 0b8ce7200a
2026-02-10 12:03:29 +01:00
Claire
75ba314e6b Migrate to new theming infrastructure (#37612) 2026-02-10 10:59:47 +00:00
Echo
fb89198460 Profile redesign: Quality pass (#37766) 2026-02-10 10:56:03 +00:00
Matt Jankowski
2774e0fbfa Reduce stubbing SUT for EmailMxValidator spec (#37750) 2026-02-10 10:49:49 +00:00
renovate[bot]
b8d735411f Update dependency vite-tsconfig-paths to v6.1.0 (#37773)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-10 10:49:41 +00:00
renovate[bot]
920e9fa9d3 Update dependency axios to v1.13.5 [SECURITY] (#37803)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-10 10:30:35 +00:00
github-actions[bot]
662df23793 New Crowdin Translations (automated) (#37797)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-10 10:16:57 +00:00
David Roetzel
03f73377d9 Federate updates to collections (#37790) 2026-02-10 10:08:55 +00:00
David Roetzel
0763ad0d96 Set a more explicit version number for GH Action (#37800) 2026-02-10 10:00:27 +00:00
Claire
8aabc8628d Fix i18n check for missing source strings (#37801) 2026-02-10 09:56:16 +00:00
Renaud Chaput
837d1decc9 Add a i18n check in pre-commit for JS files (#37793) 2026-02-10 09:13:09 +00:00
Echo
455fa54106 [Glitch] Fix: Changes to pins update immediately
Port b4fb25643a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-09 21:46:08 +01:00
Claire
c8db60f8d2 Merge commit '0b8ce7200aa3121d07aa3866ddfc99de3bcf319e' into glitch-soc/merge-upstream 2026-02-09 21:45:21 +01:00
Claire
387b9afcfb Merge pull request #3390 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to d3cef82401
2026-02-09 21:44:15 +01:00
Matt Jankowski
0b8ce7200a Use validation matchers for ExistingUsernameValidator spec (#37749) 2026-02-09 15:24:31 +00:00
Jonny Saunders
e17bbed88f Change: Consolidate collection handling in jsonld helper (#34595) 2026-02-09 15:19:36 +00:00
renovate[bot]
665f746165 Update artifact actions (major) (major) (#37788)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-09 15:06:12 +00:00
renovate[bot]
da91639b43 Update twk3/rollup-size-compare-action action to v1.2.0 (#37787)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-09 14:52:08 +00:00
renovate[bot]
c1b945425c Update peter-evans/create-pull-request action to v8 (#37783)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-09 14:11:10 +00:00
renovate[bot]
624c25edd8 Update actions/cache action to v5 (#37781)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-09 14:11:06 +00:00
renovate[bot]
c0f809cb5b Update actions/checkout action to v6 (#37782)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-09 13:57:47 +00:00
Echo
b4fb25643a Fix: Changes to pins update immediately (#37765) 2026-02-09 13:14:24 +00:00
Claire
47b0e7897c Merge commit 'd3cef824018a79ba383deab85e09c31d2673d2c3' into glitch-soc/merge-upstream 2026-02-09 13:11:17 +01:00
Claire
d3cef82401 Refactor store_current_location before_action in OAuth::AuthorizationsController (#37779) 2026-02-09 11:05:32 +00:00
David Roetzel
b9a538e57a Pin Actions to SHA (#37764) 2026-02-09 09:58:42 +00:00
Matt Jankowski
3f845e649b Use bundler version 4.0.6 (#37745) 2026-02-09 09:43:28 +00:00
github-actions[bot]
6ec4bd5927 New Crowdin Translations (automated) (#37767)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-09 09:04:32 +00:00
renovate[bot]
77bc8f7aac Update dependency @types/react to v18.3.28 (#37777)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-09 09:04:25 +00:00
renovate[bot]
08f9af986b Update dependency dotenv to v17.2.4 (#37753)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-09 08:58:21 +00:00
renovate[bot]
1dbf69d78f Update dependency oj to v3.16.15 (#37757)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-09 08:58:13 +00:00
renovate[bot]
08003ba6b9 Update dependency postcss-preset-env to v11.1.3 (#37758)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-09 08:57:49 +00:00
Claire
fee8a4f333 Merge pull request #3388 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 2e30044a37
2026-02-07 11:56:05 +01:00
Echo
69f0c52bb5 [Glitch] Profile redesign: Pinned posts
Port 2e30044a37 to glitch-soc

Co-authored-by: diondiondion <mail@diondiondion.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-06 23:39:00 +01:00
diondiondion
8caaffe435 [Glitch] Move account search into hook
Port 7e27ba990e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-06 22:54:15 +01:00
diondiondion
9eb718836e [Glitch] Add new components Combobox and EmptyState
Port 2768ab77e5 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-06 22:52:24 +01:00
Itoh Shimon
425d411c9a [Glitch] Enable coexistence of horizontal and vertical posts
Port 96de28dd6f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-06 22:50:49 +01:00
Echo
351b8a719f [Glitch] Show mute end date in badge
Port 7a4945c0d3 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-06 22:47:24 +01:00
Claire
8f58c42ca3 Merge commit '2e30044a374811bc94fd62a8159cb2c9ffe18a4d' into glitch-soc/merge-upstream 2026-02-06 22:45:55 +01:00
Echo
2e30044a37 Profile redesign: Pinned posts (#37761)
Co-authored-by: diondiondion <mail@diondiondion.com>
2026-02-06 14:53:34 +00:00
Echo
1310628a60 Bust relationship cache key (#37760) 2026-02-06 14:36:12 +00:00
diondiondion
7e27ba990e Move account search into hook (#37762) 2026-02-06 13:08:29 +00:00
diondiondion
2768ab77e5 Add new components Combobox and EmptyState (#37748) 2026-02-06 12:51:27 +00:00
Claire
5b24f4097d Fix processing of object updates with duplicate hashtags (#37756) 2026-02-06 10:09:42 +00:00
github-actions[bot]
b1d4459267 New Crowdin Translations (automated) (#37755)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-06 09:52:28 +00:00
Itoh Shimon
96de28dd6f Enable coexistence of horizontal and vertical posts (#37204) 2026-02-06 09:51:22 +00:00
Echo
7a4945c0d3 Show mute end date in badge (#37747) 2026-02-05 20:01:28 +00:00
Claire
612189b47d Merge pull request #3385 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to acdd0b33a3
2026-02-05 18:29:51 +01:00
Echo
09206c7369 [Glitch] Cancel quote button appearing in all statuses
Port d2dca826dd to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-05 18:00:37 +01:00
Claire
55cd5e1ab1 Merge commit 'acdd0b33a3183569a2cdb50befdbba58f1e74ae9' into glitch-soc/merge-upstream 2026-02-05 17:57:46 +01:00
Matt Jankowski
acdd0b33a3 Pre-update some config file no-op changes from 8.1 branch (#37746) 2026-02-05 16:40:18 +00:00
renovate[bot]
da4a1495d8 Update dependency oj to v3.16.14 (#37736)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-05 16:34:30 +00:00
Matt Jankowski
af5ce5dad9 Use validation matchers for DomainValidator spec (#37662) 2026-02-05 15:55:31 +00:00
Shlee
ecdc7ff3f9 Add defensive check to AfterUnallowDomainService (#37744)
Co-authored-by: Your Name <you@example.com>
2026-02-05 14:13:56 +00:00
Echo
d2dca826dd Cancel quote button appearing in all statuses (#37742) 2026-02-05 12:58:00 +00:00
Claire
59e02a628d Merge commit 'f652c54c3334890176331f62150559a96eeb41ae' into glitch-soc/merge-upstream
Conflicts:
- `app/services/backup_service.rb`:
  Upstream refactored activity serialization while glitch-soc passed an extra argument.
  Followed upstream's refactor, keeping our extra argument.
2026-02-05 12:43:12 +01:00
Matt Jankowski
f652c54c33 Update devise to version 5.0 (#37419) 2026-02-05 11:05:32 +00:00
David Roetzel
9cd94168b3 Federate Remove when collection is deleted (#37741) 2026-02-05 10:33:39 +00:00
Matt Jankowski
ffb84ea79d Remove bin/bundle stub for bundler (#37461) 2026-02-05 10:29:41 +00:00
renovate[bot]
c53c42b650 Update dependency @vitejs/plugin-react to v5.1.3 (#37698)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-05 10:27:13 +00:00
renovate[bot]
e24a19f8bf Update dependency jsdom to v28 (#37697)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-05 10:23:08 +00:00
github-actions[bot]
ed649fbdb7 New Crowdin Translations (automated) (#37740)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-05 10:08:56 +00:00
Matt Jankowski
e82eb2b037 Convert admin/confirmations spec controller->request/system (#37738) 2026-02-05 10:04:10 +00:00
renovate[bot]
8a65965ded Update dependency brakeman to v8.0.2 (#37728)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-05 09:56:45 +00:00
renovate[bot]
6f47a7709e Update dependency test-prof to v1.5.2 (#37726)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-05 09:56:38 +00:00
renovate[bot]
8949ef57aa Update dependency kt-paperclip to v7.3.0 (#37689)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-05 09:56:33 +00:00
David Roetzel
73206856c5 Refactor activity serialization (#37678) 2026-02-05 09:39:27 +00:00
Echo
84cc0dcac4 [Glitch] Refactors header from Status component
Port 7f53a77fa3 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-04 20:01:33 +01:00
diondiondion
072c30681e [Glitch] Split collection editor into dedicated routes
Port 8ebe2e673e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-04 19:34:34 +01:00
diondiondion
41dee6383f [Glitch] Add components TextInput, TextArea, and FormStack
Port 218ca36653 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-04 19:27:34 +01:00
Claire
3bbc8ecf92 Merge commit '8ebe2e673e2fd175140df7275eb362c8eecfec31' into glitch-soc/merge-upstream 2026-02-04 19:23:24 +01:00
Claire
ff8527eb53 Merge pull request #3384 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 4f99b48e8e
2026-02-04 19:23:03 +01:00
Claire
33dc4a6091 Merge commit '4f99b48e8e8c9818f85be1b2ac9abad75f538585' into glitch-soc/merge-upstream 2026-02-04 18:51:17 +01:00
diondiondion
8ebe2e673e Split collection editor into dedicated routes (#37731) 2026-02-04 17:45:41 +00:00
Matt Jankowski
0d6fc8026d Convert auth/confirmations spec controller->request (#37735) 2026-02-04 17:42:50 +00:00
github-actions[bot]
015d88b4c6 New Crowdin Translations (automated) (#37733)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-04 17:03:08 +00:00
Echo
7f53a77fa3 Refactors header from Status component (#37732) 2026-02-04 13:12:21 +00:00
Valtteri Laitinen
ee631bf826 Make “Following” correctly translatable (#37671) 2026-02-04 10:56:33 +00:00
Matt Jankowski
4f99b48e8e Convert admin/accounts controller->request specs (#37727) 2026-02-04 10:42:34 +00:00
renovate[bot]
a7aa52c7ef Update dependency aws-sdk-core to v3.242.0 (#37711)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-04 09:02:40 +00:00
renovate[bot]
7d4f5ec8e6 Update dependency devise-two-factor to v6.4.0 (#37708)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-04 08:55:24 +00:00
github-actions[bot]
1cb3b49537 New Crowdin Translations (automated) (#37729)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-04 08:48:44 +00:00
Claire
8cc3692bdb Merge pull request #3381 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to c48634cf5f
2026-02-03 16:39:24 +01:00
Echo
b7443c4b9e [Glitch] Profile redesign: Fields iteration
Port 0923e2cb26 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-03 16:04:00 +01:00
Echo
82f7cdcb48 [Glitch] Profile redesign: Follow button and menu reorg
Port 346ca87ee8 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-03 15:57:49 +01:00
diondiondion
3c2a06dc24 [Glitch] Add Select component
Port 218ca36653 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-03 15:54:12 +01:00
diondiondion
dacbd20081 [Glitch] Implement CSS theme tokens behind feature flag
Port 284b46fee7 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-03 15:53:50 +01:00
Claire
13499168f8 Merge commit 'c48634cf5f3c5b50fcf6ea075121fa2d88e07c0e' into glitch-soc/merge-upstream 2026-02-03 15:44:04 +01:00
Claire
c48634cf5f Bump version to v4.5.6 (#37722) 2026-02-03 14:28:23 +00:00
Claire
629125cc3d Merge commit from fork 2026-02-03 14:59:53 +01:00
Echo
0923e2cb26 Profile redesign: Fields iteration (#37682) 2026-02-03 13:02:33 +00:00
Echo
346ca87ee8 Profile redesign: Follow button and menu reorg (#37707) 2026-02-03 11:33:20 +00:00
diondiondion
218ca36653 Add components TextInput, TextArea, and FormStack (#37705) 2026-02-03 10:02:13 +00:00
github-actions[bot]
c1272c4b68 New Crowdin Translations (automated) (#37714)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-03 09:29:43 +00:00
Claire
acdcf5324a Merge pull request #3377 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 6188de3efc
2026-02-02 21:08:37 +01:00
ahxxm
75ff10946a [Glitch] Add text-autospace to status content
Port c6f5315aa9 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-02 18:35:21 +01:00
diondiondion
be2df968d3 [Glitch] Add components RadioButton and Fieldset
Port 29e5532870 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-02 18:34:51 +01:00
Echo
7dad362e29 [Glitch] Profile redesign: Additional badges
Port 1100035af4 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-02-02 18:34:17 +01:00
diondiondion
ceb4a878fb Add Select component (#37702) 2026-02-02 17:31:34 +00:00
Claire
5b926157e8 Merge commit '6188de3efc293a6327cabcb858430aa79564dfd7' into glitch-soc/merge-upstream 2026-02-02 18:26:04 +01:00
github-actions[bot]
df1ac47a72 New Crowdin translations (#3376)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-02 18:25:03 +01:00
David Roetzel
6188de3efc Add ActivityPub serializer specs (#37706) 2026-02-02 16:47:42 +00:00
Matt Jankowski
9de54635ed Add coverage for "too many IDs" scenario in api/v1/statuses (#37699) 2026-02-02 15:11:15 +00:00
renovate[bot]
d0cd436ac9 Update dependency pg to v8.18.0 (#37686)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-02 14:45:04 +00:00
ahxxm
c6f5315aa9 Add text-autospace to status content (#37694) 2026-02-02 14:03:55 +00:00
diondiondion
29e5532870 Add components RadioButton and Fieldset (#37685) 2026-02-02 13:26:31 +00:00
renovate[bot]
69351b3b74 Update dependency aws-sdk-s3 to v1.213.0 (#37656)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-02 10:27:59 +00:00
renovate[bot]
b3086ffbf3 Update dependency annotaterb to v4.21.0 (#37672)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-02 10:27:53 +00:00
renovate[bot]
89be2030d4 Update dependency brakeman to v8 (#37673)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-02 10:27:38 +00:00
Echo
1100035af4 Profile redesign: Additional badges (#37683) 2026-02-02 10:23:08 +00:00
renovate[bot]
65ccf89bfc Update dependency pg-connection-string to v2.11.0 (#37687)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-02 10:02:01 +00:00
github-actions[bot]
6bf2b27b5b New Crowdin Translations (automated) (#37688)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-02-02 09:39:24 +00:00
Claire
4cf98d4a80 Merge pull request #3372 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to a7a33ef6bc
2026-01-30 19:22:34 +01:00
diondiondion
c1a2dd0f4f [Glitch] Adds new Checkbox and CheckboxField components
Port a7a33ef6bc to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-30 18:03:43 +01:00
Claire
b490913ad7 Merge commit 'a7a33ef6bc61cf10ef654313cfb7a45fe2b58ae3' into glitch-soc/merge-upstream 2026-01-30 18:00:16 +01:00
diondiondion
a7a33ef6bc Adds new Checkbox and CheckboxField components (#37665) 2026-01-30 14:44:28 +00:00
Claire
a75790143c Change bundlesize-compare workflow to compare with the result of the merge (#37680) 2026-01-30 13:59:54 +00:00
Claire
2566b46169 Merge pull request #3370 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 0688e64a0b
2026-01-30 13:47:06 +01:00
Echo
fcd00902d1 [Glitch] Fix instance api account merging
Port 0688e64a0b to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-30 12:01:18 +01:00
Claire
0e154b859f Merge commit '6a5578a0db1aed100b6a3ac82b477923d221c350' into glitch-soc/merge-upstream 2026-01-30 12:00:44 +01:00
github-actions[bot]
6a5578a0db New Crowdin Translations (automated) (#37668)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-30 10:09:15 +00:00
Claire
3f16c48838 Fix connection recycling pushing symbols to connection pool (#37674) 2026-01-30 09:59:04 +00:00
Echo
0688e64a0b Fix instance api account merging (#37666) 2026-01-30 09:30:22 +00:00
Claire
0997ae0627 Clear affected relationship cache on Move activities (#37664) 2026-01-30 09:15:22 +00:00
Claire
013f281fc8 Merge pull request #3369 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to d0502ac3c1
2026-01-29 22:05:49 +01:00
diondiondion
94314b2982 [Glitch] Implement editing collection settings and deleting collections
Port 6f53b0b634 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-29 21:20:52 +01:00
diondiondion
60314c1077 [Glitch] Add initial collections editor page
Port 2427e14446 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-29 21:13:21 +01:00
Echo
a434d73a08 [Glitch] Prevent account note from appearing on your own profile
Port 8a42689268 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-29 21:10:18 +01:00
Echo
56100254b7 [Glitch] Profile redesign: Featured tags
Port 9079a75574 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-29 21:09:58 +01:00
Claire
d62a7775b5 Merge commit 'd0502ac3c1630e281fda5492cbc28390262b0aeb' into glitch-soc/merge-upstream 2026-01-29 21:08:46 +01:00
Matt Jankowski
d0502ac3c1 Use "namespace style" for URL generation in admin/ area forms (#35080) 2026-01-29 15:56:10 +00:00
Daniel King
d5d57ac25a Add flag to preserve cached media on cleanup (#36200)
Co-authored-by: Daniel King <git@kin.gy>
2026-01-29 15:53:51 +00:00
renovate[bot]
0196c12e7f Update dependency dotenv to v17 (#35216)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2026-01-29 14:48:09 +00:00
diondiondion
6f53b0b634 Implement editing collection settings and deleting collections (#37658) 2026-01-29 11:01:40 +00:00
github-actions[bot]
21f8fc808e New Crowdin Translations (automated) (#37655)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-29 10:59:30 +00:00
renovate[bot]
2cea3ccba0 Update dependency axios to v1.13.4 (#37640)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-29 10:14:44 +00:00
Matt Jankowski
23148dc536 Update rubocop to version 1.8.40 (#37628) 2026-01-29 10:14:14 +00:00
Claire
bc3871f992 Fix followers with profile subscription (bell icon) being notified of post edits (#37646) 2026-01-29 09:38:57 +00:00
diondiondion
2427e14446 Add initial collections editor page (#37643) 2026-01-29 09:06:49 +00:00
Echo
8a42689268 Prevent account note from appearing on your own profile (#37653) 2026-01-29 09:02:42 +00:00
Echo
9079a75574 Profile redesign: Featured tags (#37645) 2026-01-29 09:01:36 +00:00
Claire
69a424ff62 Merge pull request #3368 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to a6883242e3
2026-01-28 20:45:03 +01:00
Claire
32993fbdef Merge commit 'a6883242e3d9f9ed85806b66d40e1a148972bc3c' into glitch-soc/merge-upstream 2026-01-28 19:54:41 +01:00
Claire
7d096dbf63 Merge pull request #3367 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 1ae6b52c47
2026-01-28 19:52:57 +01:00
PGray
136adfdcad [Glitch] Fix quote cancel button not appearing after edit then delete-and-redraft
Port f1c00feb5c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-28 19:32:26 +01:00
Echo
fd0ab20402 [Glitch] Profile redesign: Timeline filters
Port ec76288dff to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-28 19:30:54 +01:00
Echo
da2cb50aaa [Glitch] Tags component
Port 3f46034039 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-28 19:30:15 +01:00
Claire
36be9bbebf Merge commit 'a495a0cbfcf9f6111c0e598af0864de2b76e4111' into glitch-soc/merge-upstream 2026-01-28 19:29:10 +01:00
Claire
8a8de5279f Merge pull request #3366 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 1ae6b52c47
2026-01-28 19:28:15 +01:00
Claire
2e0caa2b73 Merge commit '1ae6b52c471d82d3682a732680549fd849c91957' into glitch-soc/merge-upstream 2026-01-28 19:05:27 +01:00
Tan, Kian-ting
8efcdc04eb Add nan-TW to interface languages (#34923) 2026-01-28 17:56:29 +00:00
Claire
a6883242e3 Remove unused nan locale files (replaced by nan-TW) (#37650) 2026-01-28 16:32:19 +00:00
github-actions[bot]
42dfd6c031 New Crowdin Translations (automated) (#37647)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-28 16:04:42 +00:00
Matt Jankowski
14ca5d0e6b Use collection partial for rule translation in signup flow (#35932) 2026-01-28 14:05:02 +00:00
Claire
a495a0cbfc Fix avatar and header descriptions being returned for suspended accounts (#37641) 2026-01-28 11:06:30 +00:00
Matt Jankowski
f861a5cee0 Add action_logs association for account (#36022) 2026-01-28 11:04:00 +00:00
Matt Jankowski
c1626486bc Group classes in media proxy rescue_from declaration (#37304) 2026-01-28 10:52:31 +00:00
Echo
6a995decb8 Experiment with adding a bundle comparison tool (#37630) 2026-01-28 10:33:31 +00:00
PGray
f1c00feb5c Fix quote cancel button not appearing after edit then delete-and-redraft (#37066) 2026-01-28 10:33:04 +00:00
Echo
ec76288dff Profile redesign: Timeline filters (#37626) 2026-01-28 10:17:32 +00:00
Echo
3f46034039 Tags component (#37638) 2026-01-28 10:17:11 +00:00
Shlee
d438161b9b Unclosed connection leak when replacing pooled connection in SharedTimedStack.try_create (#37335) 2026-01-28 10:14:03 +00:00
Claire
6af4696c70 Add backend support for storing remote actors profile pic and header descriptions (#37634) 2026-01-28 09:32:59 +00:00
Matt Jankowski
1ae6b52c47 Reduce oauth/authorizations monkey-patch size (#37615) 2026-01-28 09:29:59 +00:00
github-actions[bot]
8ba87ef568 New Crowdin Translations (automated) (#37639)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-28 09:25:20 +00:00
renovate[bot]
17533cba12 Update dependency simple-navigation to v4.4.1 (#37622)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-28 09:07:42 +00:00
renovate[bot]
5a05c97749 Update dependency test-prof to v1.5.1 (#37629)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-28 09:06:56 +00:00
Claire
b14cbb3ee9 Merge pull request #3364 from ClearlyClaire/glitch-soc/features/local-only-drop-emoji
Deprecate eye emoji in favor of a bespoke API parameter
2026-01-27 22:30:17 +01:00
Claire
947a233a60 Merge pull request #3365 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 7af5ba271d
2026-01-27 22:29:32 +01:00
Echo
32841f8016 [Glitch] Profile redesign: Account notes
Port 34f0482ad4 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-27 18:07:21 +01:00
Echo
0e3441ed66 [Glitch] Profile redesign: Username update
Port c0616bcab6 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-27 18:05:48 +01:00
Echo
110cf94d3d [Glitch] Deprecate need for revert-layer CSS
Port 76ab866d93 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-27 18:05:14 +01:00
Claire
5a45a3203a Merge commit '7af5ba271d6f04831f000e9b815914375e42abeb' into glitch-soc/merge-upstream 2026-01-27 18:03:27 +01:00
Claire
7af5ba271d Fix error when encountering invalid tag in updated object (#37635) 2026-01-27 16:01:22 +00:00
Claire
a20519d671 Clean up arg handling for notification worker (#37587) 2026-01-27 15:59:51 +00:00
Matt Jankowski
48c102aabe Use validation matchers for DateOfBirthValidator spec (#37631) 2026-01-27 15:36:55 +00:00
Echo
34f0482ad4 Profile redesign: Account notes (#37593) 2026-01-27 15:34:09 +00:00
Echo
c0616bcab6 Profile redesign: Username update (#37627) 2026-01-27 15:03:52 +00:00
Echo
7a7c42b50c Makes bundle visualizer output JSON when in CI (#37633) 2026-01-27 15:03:00 +00:00
Echo
76ab866d93 Deprecate need for revert-layer CSS (#37632) 2026-01-27 14:45:35 +00:00
Claire
9ea64fcb5a Fix last_status_at not accurately tracking last status time for remote accounts (#37619) 2026-01-27 13:23:12 +00:00
Matt Jankowski
a28ccf2950 Use validation matchers for PollExpirationValidator spec (#37616) 2026-01-27 12:54:50 +00:00
David Roetzel
1d4c2c5670 Federate creation of collections (#37618) 2026-01-27 10:52:54 +00:00
Matt Jankowski
aa347708f5 Convert oauth/authorized_applications spec controller->request (#37614) 2026-01-27 10:44:24 +00:00
renovate[bot]
142714cd1e Update dependency pino to v10.3.0 (#37588)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 10:21:44 +00:00
Matt Jankowski
604bed2930 Convert oauth/authorizations spec controller->request (#37613) 2026-01-27 10:20:25 +00:00
Matt Jankowski
634ff77d82 Convert settings/aliases spec controller->system (#37617) 2026-01-27 10:18:07 +00:00
Claire
73fc40993b Fix filtering of mentions from filtered-on-their-origin-server accounts (#37583) 2026-01-27 09:53:21 +00:00
renovate[bot]
cd7ffb5a10 Update dependency hiredis-client to v0.26.4 (#37610)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 09:53:16 +00:00
renovate[bot]
f1e0d81d03 Update dependency postcss-preset-env to v11.1.2 (#37609)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 09:53:13 +00:00
renovate[bot]
60e5e7e097 Update dependency axios to v1.13.3 (#37608)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 09:53:10 +00:00
github-actions[bot]
6a73618f3d New Crowdin Translations (automated) (#37621)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-27 09:52:41 +00:00
Claire
9ba2a39a4b Merge pull request #3363 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 89c1b9a8fd
2026-01-26 22:24:39 +01:00
Claire
b96c8ecff4 Merge commit '89c1b9a8fdfe38881ad1b6c22f20240b087aa993' into glitch-soc/merge-upstream 2026-01-26 18:09:54 +01:00
renovate[bot]
89c1b9a8fd Update dependency devise-two-factor to v6.3.1 (#37430)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-26 10:44:13 +00:00
github-actions[bot]
e317645ed9 New Crowdin Translations (automated) (#37598)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-26 10:10:31 +00:00
Matt Jankowski
24fb3e8465 Use collection render on admin dashboard system checks (#35976) 2026-01-26 09:43:30 +00:00
Matt Jankowski
876ccfe0a3 Use Report#local? delegation more broadly (#37596) 2026-01-26 09:43:21 +00:00
Matt Jankowski
f7a2e5c715 Use validation matchers for InstanceModerationNote spec (#37597) 2026-01-26 09:42:55 +00:00
renovate[bot]
2edcb234e0 Update dependency vite-tsconfig-paths to v6.0.5 (#37446)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-26 09:32:30 +00:00
Claire
1b748eaeb0 Fix irrelevant accounts being passed through silenced_account_ids to DistributionWorker (#37589) 2026-01-26 09:26:19 +00:00
Michael Stanclift
7022572011 Change 'anyone can quote' label to 'quotes allowed' (#37427) 2026-01-26 08:50:35 +00:00
Claire
56de578a89 Merge pull request #3362 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to c36db57ace
2026-01-24 12:26:15 +01:00
Echo
0dbbd376c5 [Glitch] Re-download Material Icons
Port 42b2fdb0ac to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-23 18:10:21 +01:00
Echo
aa71913356 [Glitch] Callout component
Port c1414f1161 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-23 18:10:21 +01:00
diondiondion
46c83fc91d [Glitch] Add "My collections" page
Port a1acf8f4bc to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-23 18:10:20 +01:00
Echo
20629b6188 [Glitch] Toggle component
Port 0a0e253614 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-23 18:10:20 +01:00
diondiondion
d8c086e6fd [Glitch] Add form field components: TextInputField, TextAreaField, SelectField
Port 0924171c0f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-23 18:10:20 +01:00
Claire
8b95254883 Merge commit 'c36db57acedf0033c090748125c665a0360cd11f' into glitch-soc/merge-upstream 2026-01-23 17:57:20 +01:00
Matt Jankowski
29ec2cd186 Add targeted_account_notes association to simplify usage (#35540) 2026-01-23 16:35:19 +00:00
renovate[bot]
c36db57ace Update dependency faker to v3.6.0 (#37575)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-23 16:20:33 +00:00
Echo
c1414f1161 Callout component (#37590) 2026-01-23 15:53:48 +00:00
diondiondion
a1acf8f4bc Add "My collections" page (#37552) 2026-01-23 13:51:39 +00:00
Claire
d05df5c197 Fix quote cache invalidation (#37592) 2026-01-23 13:35:43 +00:00
renovate[bot]
93bda9c76d Update dependency core-js to v3.48.0 (#37574)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-23 13:15:39 +00:00
David Roetzel
c5c70311d8 Return empty array when requesting collections of an account that blocked you (#37591) 2026-01-23 13:11:57 +00:00
Echo
0a0e253614 Toggle component (#37582) 2026-01-23 12:20:56 +00:00
renovate[bot]
53c620ba69 Update dependency lodash to v4.17.23 [SECURITY] (#37572)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-23 11:08:39 +00:00
renovate[bot]
e203795ebd Update dependency cors to v2.8.6 (#37579)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-23 10:59:52 +00:00
renovate[bot]
6a1afa2580 Update dependency sass to v1.97.3 (#37573)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-23 10:57:10 +00:00
Echo
ad735d350c Set up modes for Chromatic (#37586) 2026-01-23 10:44:15 +00:00
David Roetzel
de63b61943 Change Collections API shape (#37580) 2026-01-23 10:22:37 +00:00
github-actions[bot]
e12f39aa04 New Crowdin Translations (automated) (#37584)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-23 09:19:24 +00:00
renovate[bot]
1835ce357e Update dependency stylelint to v17 (#37509)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-22 16:10:53 +00:00
diondiondion
0924171c0f Add form field components: TextInputField, TextAreaField, SelectField (#37578) 2026-01-22 16:08:57 +00:00
Shlee
1809048105 Safefy: Updated Admin::AccountDeletionWorker to match AccountDeletionWorker (#37577) 2026-01-22 16:01:44 +00:00
renovate[bot]
3806d15d99 Update dependency pg to v8.17.2 (#37557)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-22 15:00:53 +00:00
Matt Jankowski
157d8c0d99 Remove deprecated usage of imagemagick (#37488) 2026-01-22 14:57:19 +00:00
github-actions[bot]
3a84b73d80 New Crowdin Translations (automated) (#37569)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-22 14:26:33 +00:00
Matt Jankowski
7b9479239a Typo fix in federation document (#37564) 2026-01-22 13:59:36 +00:00
renovate[bot]
8dcd388189 Update dependency aws-sdk-s3 to v1.212.0 (#37536)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-22 13:50:59 +00:00
renovate[bot]
52ca91c43d Update dependency pg-connection-string to v2.10.1 (#37558)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-22 13:50:23 +00:00
Claire
958103368e Shorten caching of quote posts pending approval (#37570) 2026-01-22 12:38:00 +00:00
Echo
42b2fdb0ac Re-download Material Icons (#37571) 2026-01-22 12:04:15 +00:00
Claire
1239c8d480 Merge pull request #3361 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 562ea656f4
2026-01-22 12:51:22 +01:00
Echo
8ec969d4c1 [Glitch] Profile redesign: verified badges
Port e79d51ce19 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-21 22:21:12 +01:00
Echo
da330fc8c4 [Glitch] Profile redesign: Badges
Port 22ec368574 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-21 22:21:12 +01:00
Claire
95aaefe083 Merge commit '562ea656f495f0619e393b7d93bd07c5abd28e5a' into glitch-soc/merge-upstream 2026-01-21 22:04:02 +01:00
Matt Jankowski
562ea656f4 Add coverage for TagManager#normalize_domain (#35994) 2026-01-21 16:11:38 +00:00
nicole mikołajczyk
3219373d56 Add profile field limits to instance serializer (#37535) 2026-01-21 16:01:33 +00:00
Echo
6897475f9b Adds theming to Storybook (#37562) 2026-01-21 15:54:52 +00:00
renovate[bot]
22e438d7bd Update dependency @csstools/stylelint-formatter-github to v2 (#37515)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-21 14:14:48 +00:00
github-actions[bot]
1468f94509 New Crowdin Translations (automated) (#37555)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-21 13:08:16 +00:00
Echo
e79d51ce19 Profile redesign: verified badges (#37538) 2026-01-21 13:08:08 +00:00
renovate[bot]
5d82d48af3 Update dependency stylelint-config-standard-scss to v17 (#37511)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-21 12:31:35 +00:00
renovate[bot]
24ffa00bca Update dependency pino to v10.2.1 (#37543)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-21 12:31:19 +00:00
David Roetzel
783504f36a Do not return undiscoverable collections (#37560) 2026-01-21 12:30:07 +00:00
Claire
e7c6600d83 Fix cross-server conversation tracking (#37559) 2026-01-21 12:02:41 +00:00
David Roetzel
e65103bd3d Fix rendering of initial state when collections feature is enabled (#37556) 2026-01-21 09:18:16 +00:00
Claire
e612378f08 Merge pull request #3360 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 400c1f3e8e
2026-01-20 16:35:37 +01:00
Echo
0a1731b81c [Glitch] Profile redesign: Account name
Port a1c17fef3a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-20 16:20:33 +01:00
diondiondion
b5060ba9c3 [Glitch] Improve apiRequest helper types
Port fa9b905fdf to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-20 16:16:34 +01:00
Echo
22ec368574 Profile redesign: Badges (#37550) 2026-01-20 15:15:49 +00:00
Claire
5d04c56c48 Merge commit '400c1f3e8ec0ffd33ad30d9334b9210cdb89b14c' into glitch-soc/merge-upstream 2026-01-20 16:14:14 +01:00
Claire
400c1f3e8e Bump version to v4.5.5 (#37551) 2026-01-20 15:00:10 +00:00
Claire
028e76f770 Merge commit from fork
* Add limit on inbox payload size

The 1MB limit is consistent with the limit we use when fetching remote resources

* Add limit to number of options from federated polls

* Add a limit to the number of federated profile fields

* Add limit on federated username length

* Add hard limits for federated display name and account bio

* Add hard limits for `alsoKnownAs` and `attributionDomains`

* Add hard limit on federated custom emoji shortcode

* Highlight most destructive limits and expand on their reasoning
2026-01-20 15:14:45 +01:00
Claire
841dfce9f7 Merge commit from fork 2026-01-20 15:13:43 +01:00
Claire
7a0d3d3bf8 Merge commit from fork 2026-01-20 15:13:10 +01:00
Claire
c2f776b747 Merge commit from fork 2026-01-20 15:10:38 +01:00
David Roetzel
7cdc05b9a8 Add language attribute to collections (#37549) 2026-01-20 13:22:54 +00:00
Echo
a1c17fef3a Profile redesign: Account name (#37527) 2026-01-20 11:10:46 +00:00
diondiondion
fa9b905fdf Improve apiRequest helper types (#37544) 2026-01-20 11:04:06 +00:00
github-actions[bot]
8ff7662918 New Crowdin Translations (automated) (#37545)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-20 08:31:49 +00:00
David Roetzel
51224bb437 Add "featured collections" collection to actors (#37512) 2026-01-20 08:27:05 +00:00
Essem
564b8720e1 Re-add data-user-flavour attribute (#3356)
* Re-add `data-user-flavour` attribute

* Add data-user-flavour to embed/error pages

* Use actual flavor for embeds/error pages
2026-01-19 20:07:47 +01:00
Claire
5efebe716e Merge pull request #3351 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to ad77ee7f8b
2026-01-19 19:17:27 +01:00
Claire
e9793971b3 Merge commit 'ad77ee7f8ba6aa25ee36e3e21c38d9bbc252b097' into glitch-soc/merge-upstream 2026-01-19 18:01:57 +01:00
Matt Jankowski
ad77ee7f8b Add coverage for misc "policy" classes (#37525) 2026-01-19 15:53:52 +00:00
Claire
220115757d Fix potential duplicate handling of quote accept/reject/delete (#37537) 2026-01-19 13:47:27 +00:00
Claire
9b6500f74a Skip tombstone creation on deleting from 404 (#37533) 2026-01-19 10:36:58 +00:00
github-actions[bot]
e4c6130f77 New Crowdin Translations (automated) (#37532)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-19 09:40:47 +00:00
renovate[bot]
fd78aa9eab Update dependency haml_lint to v0.69.0 (#37531)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-19 09:23:01 +00:00
renovate[bot]
4339f0ea71 Update dependency ioredis to v5.9.2 (#37510)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-19 09:22:42 +00:00
renovate[bot]
f05e76e591 Update dependency postcss-preset-env to v11.1.1 (#37508)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-19 09:22:35 +00:00
Claire
9fd005042b Merge pull request #3350 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to cc3c7ba532
2026-01-17 16:11:06 +01:00
Claire
605e62288c Fix tests
Vite correctly detects the three themes are the same, and picks the first one, which
is `contrast` due to how glitch-soc's theming system works.
2026-01-16 23:54:33 +01:00
Echo
40d5c00c3a [Glitch] Profile fields redesign
Port 047338e684 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-16 23:54:33 +01:00
Claire
d5fb44da91 [Glitch] Fix error pages not using the new theming infrastructure
Port 5727b866b1 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-16 23:54:33 +01:00
diondiondion
4c7bfca967 [Glitch] Add high-contrast styles to common stylesheet
Port e715bb5075 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-16 23:24:50 +01:00
Claire
7839c8d9af Merge commit 'cc3c7ba532f75617505bb41297651a5c14f71bdd' into glitch-soc/merge-upstream
Conflicts:
- `app/helpers/theme_helper.rb`:
  Upstream simplified `theme_style_tags`. Our version is different because of
  the different theming system.
  Adapted upstream's changes.
- `app/views/layouts/error.html.haml`:
  Theming system.
2026-01-16 23:22:19 +01:00
Claire
2c421cfd9e Merge pull request #3349 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 918563704f
2026-01-16 23:19:23 +01:00
Heath Dutton🕴️
edf50bd073 [Glitch] Fix directory showing load more button when no more profiles exist
Port 93f5ed0fce to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-16 22:31:54 +01:00
Claire
b6b6e142ba Merge commit '918563704f5ff5eeb1efa31a412ac38f97781e9e' into glitch-soc/merge-upstream
Conflicts:
- `app/helpers/theme_helper.rb`:
  Upstream modified `theme_color_tags` to work on color scheme rather than theme.
  Updated it as well.
- `app/views/layouts/embedded.html.haml`:
  Upstream changed the embed theme from `mastodon-light` to `system`.
  Glitch-soc doesn't use a hardcoded value, so ignore the change.
- `spec/helpers/theme_helper_spec.rb`:
  Accomodate `theme_color_tags` changes.
2026-01-16 22:28:08 +01:00
Claire
cc3c7ba532 Fix system theme being included twice (#37526) 2026-01-16 15:55:16 +00:00
renovate[bot]
e21cb9f0d0 Update dependency pg to v8.17.1 (#37494)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-16 15:43:36 +00:00
Claire
5727b866b1 Fix error pages not using the new theming infrastructure (#37524) 2026-01-16 14:44:58 +00:00
renovate[bot]
a9bdf5eef9 Update dependency pg-connection-string to v2.10.0 (#37495)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-16 14:35:51 +00:00
renovate[bot]
5b5b00055e Update dependency pino to v10.2.0 (#37507)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-16 14:35:42 +00:00
diondiondion
e715bb5075 Add high-contrast styles to common stylesheet (#37523) 2026-01-16 13:57:48 +00:00
Echo
047338e684 Profile fields redesign (#37513) 2026-01-16 12:44:49 +00:00
Claire
918563704f Update the “embedded” styling to the new theme infrastructure (#37520) 2026-01-16 10:28:50 +00:00
Claire
e58084a85f Update theme_color_tags helper for new theme infrastructure (#37519) 2026-01-16 10:00:04 +00:00
David Roetzel
be00db4fa3 Use snowflake ids for collections and their items (#37514) 2026-01-16 09:49:53 +00:00
github-actions[bot]
0d9fcb59a4 New Crowdin Translations (automated) (#37517)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-16 09:17:56 +00:00
Claire
8a6389d3f7 Merge pull request #3348 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to bc2f8a358f
2026-01-15 23:04:28 +01:00
Echo
d748ed0434 [Glitch] Account header split up
Port f2fb232e37 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-15 19:14:19 +01:00
diondiondion
73d29e16b5 [Glitch] Enable theming via new HTML element attributes
Port bc2f8a358f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-15 18:08:37 +01:00
Echo
4694013f86 [Glitch] MiniCard and MiniCardList components
Port c09fbeb32f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-15 18:07:28 +01:00
Claire
ba45eb8764 Merge commit 'bc2f8a358f96a9540e6f39bb1c58273deb4545de' into glitch-soc/merge-upstream
Conflicts:
- `app/views/layouts/application.html.haml`:
  Upstream changed how theming works, and in particular changed the set of HTML attributes.
  Adapted upstream's change.
2026-01-15 18:02:35 +01:00
Heath Dutton🕴️
93f5ed0fce Fix directory showing load more button when no more profiles exist (#37465) 2026-01-15 17:02:17 +00:00
diondiondion
bc2f8a358f Enable theming via new HTML element attributes (#37477) 2026-01-15 16:04:27 +00:00
Echo
c09fbeb32f MiniCard and MiniCardList components (#37479) 2026-01-15 13:53:42 +00:00
Echo
f2fb232e37 Account header split up (#37490) 2026-01-15 13:45:30 +00:00
Claire
2a6c084aa1 Update SECURITY.md (#37506) 2026-01-15 13:17:41 +00:00
github-actions[bot]
47557f5b9e New Crowdin Translations (automated) (#37492)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-15 10:41:11 +00:00
renovate[bot]
1482a7bf20 Update dependency postcss-preset-env to v11 (#37485)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 10:14:00 +00:00
renovate[bot]
dd52e61c24 Update opentelemetry-ruby (non-major) (#37480)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 10:13:56 +00:00
renovate[bot]
8eff59b106 Update dependency httplog to '~> 1.8.0' (#37484)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 10:13:53 +00:00
Claire
fd510421c4 Merge pull request #3347 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 10de65e41c
2026-01-15 00:06:11 +01:00
Claire
f65e6a5029 Merge commit '10de65e41c3b01bd938f97fdb60fc96c26673966' into glitch-soc/merge-upstream 2026-01-14 20:31:42 +01:00
Claire
10de65e41c Fix FeedManager#filter_from_home error when handling a reblog of a deleted status (#37486) 2026-01-14 10:51:23 +00:00
renovate[bot]
4bdc9d5e1e Update dependency vite to v7.3.1 (#37248)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-14 10:37:43 +00:00
renovate[bot]
5d03d5d15c Update dependency libvips to v8.18.0 (#37282)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-14 10:37:05 +00:00
renovate[bot]
6fdef1191a Update dependency globals to v17 (#37360)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-14 10:35:40 +00:00
renovate[bot]
d612119b3e Update dependency thor to v1.5.0 (#37406)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-14 10:17:40 +00:00
renovate[bot]
8390f0dbbf Update dependency rqrcode to v3.2.0 (#37431)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-14 10:10:52 +00:00
David Roetzel
c218849204 Add collection endpoint (#37468) 2026-01-14 10:08:29 +00:00
github-actions[bot]
2f91d9755d New Crowdin Translations (automated) (#37482)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-14 10:02:11 +00:00
renovate[bot]
ccf3ed0ddf Update Node.js to 24.13 (#37473)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-14 10:02:07 +00:00
Claire
46df08b3a4 Merge pull request #3346 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 19bc3e76ea
2026-01-13 20:16:29 +01:00
Echo
aa83f94ac1 [Glitch] Add feature flag detection for profile redesign
Port 122b1592ed to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-13 18:35:37 +01:00
diondiondion
beb23500b1 [Glitch] Fix isDarkMode utility
Port 41639655ff to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-13 18:35:16 +01:00
Heath Dutton🕴️
e14af55640 [Glitch] Fix keyboard navigation in media modal after clicking image
Port be60c4585e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-13 18:34:48 +01:00
Claire
b4ed1e6c99 Merge commit '19bc3e76ea1d7fa2d9af711613a77fc0f5f0d1b5' into glitch-soc/main
Conflicts:
- `app/helpers/theme_helper.rb`:
  Upstream added a helper to insert javascript tags, close to where we had
  modified code.
  Ported upstream's change.
2026-01-13 18:30:48 +01:00
Claire
7f98a6703e Merge pull request #3345 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 9b5986b36e
2026-01-13 18:21:18 +01:00
Claire
e33a8d5bfb Merge commit '9b5986b36e86d50d19b68b10788b3316012894c3' into glitch-soc/merge-upstream
Conflicts:
- `app/controllers/api/v1/statuses_controller.rb`:
  Upstream refactored a bit where we had an extra argument for markdown/HTML.
  Adapted upstream change.
2026-01-13 18:01:53 +01:00
Matt Jankowski
19bc3e76ea Add spec for quote policy update change (#37474) 2026-01-13 16:21:55 +00:00
Matt Jankowski
92ad380e11 Update rubocop to version 1.82.1 (#37475) 2026-01-13 16:21:25 +00:00
Shlee
c6be114cef Non-ActivityPub Link header alternate blocks HTML ActivityPub discovery in FetchResourceService (#37439)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2026-01-13 15:47:48 +00:00
Echo
122b1592ed Add feature flag detection for profile redesign (#37472) 2026-01-13 14:17:43 +00:00
Shlee
232b9e9cc6 Fix delivery worker counting unsalvageable HTTP errors as successes (#37235) 2026-01-13 13:49:36 +00:00
renovate[bot]
d5264b3722 Update dependency aws-sdk-s3 to v1.211.0 (#37396)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-13 13:32:11 +00:00
diondiondion
41639655ff Fix isDarkMode utility (#37470) 2026-01-13 11:06:54 +00:00
Heath Dutton🕴️
be60c4585e Fix keyboard navigation in media modal after clicking image (#37464) 2026-01-13 10:47:04 +00:00
Claire
5b54cd7f76 Add ability to include inline javascript (#37459) 2026-01-13 10:40:26 +00:00
Shlee
9b5986b36e Fix quote_approval_policy being reset to user defaults when omitted in status update (#37436) 2026-01-13 10:40:08 +00:00
Claire
9332f48abe Simplify status batch removal SQL query (#37469) 2026-01-13 10:18:26 +00:00
renovate[bot]
f8b8fa16f5 Update dependency pino to v10.1.1 (#37443)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-13 09:18:34 +00:00
github-actions[bot]
6cb533311a New Crowdin Translations (automated) (#37466)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-13 09:14:27 +00:00
renovate[bot]
a63a0db568 Update dependency postcss-preset-env to v10.6.1 (#37457)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-13 09:03:59 +00:00
renovate[bot]
972ed73062 Update DefinitelyTyped types (non-major) (#37456)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-13 09:03:56 +00:00
Claire
ca3c3eada6 Merge pull request #3344 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to ed17b3a7ec
2026-01-12 21:37:32 +01:00
Claire
478462ab25 Merge commit 'ed17b3a7ec52c0421ae2483a8e08431316f08b1c' into glitch-soc/merge-upstream 2026-01-12 21:00:14 +01:00
renovate[bot]
ed17b3a7ec Update dependency use-debounce to v10.1.0 (#37432)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-12 10:09:25 +00:00
renovate[bot]
aa3d76999d Update dependency ioredis to v5.9.1 (#37388)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-12 10:09:04 +00:00
renovate[bot]
012c62132f Update dependency sidekiq-unique-jobs to v8.0.13 (#37408)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-12 09:55:12 +00:00
github-actions[bot]
8f70cfc8b1 New Crowdin Translations (automated) (#37447)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-12 09:54:19 +00:00
Matt Jankowski
0fb4e26cfe Add details to JS browser error spec failure helpers (#37441) 2026-01-12 09:38:00 +00:00
David Roetzel
a9cfddf28e AP/AS serialization of Collections (#37434) 2026-01-12 08:39:25 +00:00
github-actions[bot]
6541d7ed39 New Crowdin translations (#3335)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-10 19:47:20 +01:00
Claire
9183909ef4 Merge pull request #3343 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to a4b8b9fe98
2026-01-10 19:47:05 +01:00
Echo
aff69de399 [Glitch] Fix bug with how Emojibase wasn't stripping characters
Port a4b8b9fe98 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-10 13:18:55 +01:00
diondiondion
18d4606cce [Glitch] Further clean up types for the card object
Port 973fef4b69 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-10 13:18:34 +01:00
Echo
124d6e37eb [Glitch] Emoji: Adds search
Port 628fc9b95b to glitch-soc

Co-authored-by: diondiondion <mail@diondiondion.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-10 13:18:05 +01:00
Echo
c5fd0d47da [Glitch] Remove trailing variation selector code for legacy emojis
Port f254b47067 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-10 13:17:30 +01:00
Joshua Rogers
9d33d43006 [Glitch] Fix modal closeModal ignoreFocus payload type
Port 25053db22b to glitch-soc

Co-authored-by: diondiondion <mail@diondiondion.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-10 13:15:12 +01:00
Echo
bb640bd845 [Glitch] Video modals should not be pushed down on mobile
Port de7b405e55 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-10 13:14:49 +01:00
Claire
d7254ecec4 Merge commit 'a4b8b9fe98c677f718e4b2c1ffe1755d58e7f8d7' into glitch-soc/merge-upstream 2026-01-10 13:12:36 +01:00
Claire
3c1bf72e1a Fix custom emojis not being rendered in status prepend (#3342) 2026-01-10 13:11:50 +01:00
Echo
a4b8b9fe98 Fix bug with how Emojibase wasn't stripping characters (#37442) 2026-01-09 18:38:22 +00:00
Joshua Rogers
b55982cc1a Fix Vary parsing in cache control enforcement (#37426) 2026-01-09 16:21:18 +00:00
Joshua Rogers
b35b3a8bcc Fix arg order for non_matching_uri_hosts? call in QuoteRequest (#37425) 2026-01-09 16:21:05 +00:00
Joshua Rogers
48ce49260d Fix thread-unsafe ActivityPub activity dispatch (#37423) 2026-01-09 16:20:59 +00:00
Shlee
f97a015cf9 SharedConnectionPool - NoMethodError: undefined method 'site' for Integer (#37374) 2026-01-09 16:20:50 +00:00
renovate[bot]
1211bbc064 Update dependency hiredis-client to v0.26.3 (#37404)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-09 16:20:33 +00:00
diondiondion
973fef4b69 Further clean up types for the card object (#37023) 2026-01-09 14:40:27 +00:00
Echo
628fc9b95b Emoji: Adds search (#37418)
Co-authored-by: diondiondion <mail@diondiondion.com>
2026-01-09 10:37:14 +00:00
Joshua Rogers
25053db22b Fix modal closeModal ignoreFocus payload type (#37424)
Co-authored-by: diondiondion <mail@diondiondion.com>
2026-01-08 13:22:31 +00:00
github-actions[bot]
780c6378e0 New Crowdin Translations (automated) (#37407)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-08 11:18:50 +00:00
renovate[bot]
13fcb6d2f1 Update dependency ws to v8.19.0 (#37397)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-08 10:58:09 +00:00
Shlee
e0cca5c3ba Fix SignatureParser accepting duplicate parameters in HTTP Signature header (#37375)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2026-01-08 10:47:53 +00:00
Echo
de7b405e55 Video modals should not be pushed down on mobile (#37421) 2026-01-08 09:44:17 +00:00
Essem
5c358ceaf1 Merge pull request #3340 from TheEssem/fix/quote-cw-fallback-md
Fix quotes with only CWs not having fallback link when posting with other content types
2026-01-07 21:39:27 +01:00
David Roetzel
aa2110025e Fix URI generation for reblogs by accounts with numerical AP ids (#37415) 2026-01-07 15:39:22 +00:00
Claire
bdcdd539f6 Fix unnecessary downcasing of some words in moderation/settings interface (#37364) 2026-01-07 15:34:39 +00:00
renovate[bot]
f840d7bf9f Update dependency sass to v1.97.2 (#37395)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-07 14:36:26 +00:00
Matt Jankowski
dd26964f1b Use bundler version 4.0.3 (#37392) 2026-01-07 14:36:21 +00:00
Claire
29950a120d Merge pull request #3339 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 9fe14a3072
2026-01-07 15:15:28 +01:00
Claire
aa6ec435d2 Merge commit '9fe14a30724e18425aedaba59ca63c63d8b14083' into glitch-soc/merge-upstream 2026-01-07 14:53:51 +01:00
Claire
9fe14a3072 Bump version to v4.5.4 (#37413) 2026-01-07 13:40:06 +00:00
Claire
0f79e29188 Merge commit from fork 2026-01-07 14:15:14 +01:00
Claire
0b1b98c4f2 Merge commit from fork 2026-01-07 14:14:42 +01:00
Claire
84128e1526 Downgrade sidekiq-unique-jobs (#37402) 2026-01-07 09:00:16 +00:00
Claire
5e6b813e7d Merge pull request #3333 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 7e634eecbc
2026-01-06 19:16:40 +01:00
Claire
3e4cd799fd Merge commit '7e634eecbc5dc2f65b7bdbfc5c2b5c8a0955156d' into glitch-soc/merge-upstream 2026-01-06 18:11:26 +01:00
github-actions[bot]
7e634eecbc New Crowdin Translations (automated) (#37394)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-06 10:40:22 +00:00
Nicholas La Roux
fd5539084c Increase OCR spec timeout from 10 to 20 seconds to improve CI stability (#37393) 2026-01-06 09:51:57 +00:00
Claire
d9cd75400c Fix heartbeat comment not being its own event (#37389) 2026-01-06 09:50:28 +00:00
Claire
ea59a3d71d Merge pull request #3332 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 82fb2596c7
2026-01-05 21:32:29 +01:00
Claire
0aa70234aa [Glitch] Fix custom emojis not being rendered in profile fields
Port b622f4c698 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-05 18:24:51 +01:00
Claire
550240281e [Glitch] Fix outdated link target for “locked” warning
Port e8a49bd6ae to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-05 18:24:29 +01:00
Claire
b1d219afd0 Merge commit '82fb2596c70a18fc4a2d99ab51106180196bfe98' into glitch-soc/merge-upstream 2026-01-05 18:19:58 +01:00
Claire
82fb2596c7 Fix posts with edited out media attachments being returned in /api/v1/accounts/:id/statuses?only_media=true (#37363) 2026-01-05 15:06:20 +00:00
renovate[bot]
2d711d63d0 Update dependency simple_form to v5.4.1 (#37387)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-05 14:38:10 +00:00
Claire
b622f4c698 Fix custom emojis not being rendered in profile fields (#37365) 2026-01-05 14:24:59 +00:00
renovate[bot]
ad9cc10014 Update dependency vite_rails to v3.0.20 (#37380)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-05 14:22:44 +00:00
Claire
b5bc301cbd Fix serialization of context pages (#37376) 2026-01-05 11:59:10 +00:00
Claire
f711e222dc Fix quotes with CWs but no text not having fallback link (#37361) 2026-01-05 10:35:35 +00:00
Claire
1fe737e0bd Add translation string for Webauthn key nickname (#37371) 2026-01-05 10:35:28 +00:00
Claire
e8a49bd6ae Fix outdated link target for “locked” warning (#37366) 2026-01-05 10:35:23 +00:00
github-actions[bot]
bdf490e949 New Crowdin Translations (automated) (#37378)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-05 09:56:40 +00:00
renovate[bot]
ab7293238f Update dependency public_suffix to v7.0.2 (#37385)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-05 09:38:35 +00:00
renovate[bot]
cd980645d6 Update dependency public_suffix to v7.0.1 (#37383)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-05 08:43:55 +00:00
Claire
c3cc6b5895 Merge pull request #3328 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to e89acc2302
2026-01-03 16:57:31 +01:00
Chan Nyein Tun
e826e0e281 [Glitch] Hide empty padding box if no status in Wrapstodon highlighted post
Port 54bc97cfce to glitch-soc

Co-authored-by: Chan Nyein Tun <29679269+channyeintun@users.noreply.github.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-03 16:10:04 +01:00
Echo
06a49fa0d0 [Glitch] Prevents swiping when zoomed in
Port 4bae3da85c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-03 16:08:16 +01:00
Claire
2ebf6d60a6 Merge commit 'e89acc2302df49cbd7815b031e9c2939632bd204' into glitch-soc/merge-upstream
Conflicts:
- `yarn.lock`:
  Conflict because of an extra dependency in glitch-soc.
  Updated upstream's dependencies as upstream did.
2026-01-03 16:05:35 +01:00
Claire
8011a28011 Merge pull request #3327 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to a0ce77673c
2026-01-03 16:04:13 +01:00
diondiondion
cf461c79ca [Glitch] Add dedicated user preferences for theme mode & contrast
Port a0ce77673c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2026-01-03 15:31:38 +01:00
Claire
c7ad055ff3 Merge commit 'a0ce77673c977e3a90d0c7d1c2acd250b7fad0c2' into glitch-soc/merge-upstream
Conflicts:
- `app/controllers/application_controller.rb`:
  Upstream added an experimental color and contrast theme control.
  Conflicts because of glitch-soc's different theming system.
  Adapted upstream's changes.
- `app/views/layouts/application.html.haml`:
  Upstream added an experimental color and contrast theme control.
  Conflicts because of glitch-soc's different theming system.
  Adapted upstream's changes.
- `app/views/settings/preferences/appearance/show.html.haml`:
  Upstream added an experimental color and contrast theme control.
  Conflicts because of glitch-soc's different theming system.
  Adapted upstream's changes.
2026-01-03 15:26:58 +01:00
Claire
29856620b4 Merge pull request #3274 from glitch-soc/i18n/crowdin/translations
New Crowdin Translations (automated)
2026-01-02 19:45:03 +01:00
renovate[bot]
e89acc2302 Update dependency irb to v1.16.0 (#37275)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 16:46:03 +00:00
renovate[bot]
628cbd2999 Update dependency postcss-preset-env to v10.6.0 (#37353)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 14:38:34 +00:00
Matt Jankowski
6628d8e769 Update “Automatic post deletion” explanation text (#37286) 2026-01-02 14:19:49 +00:00
renovate[bot]
d98a18510a Update dependency aws-sdk-s3 to v1.208.0 [SECURITY] (#37313)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 13:54:48 +00:00
renovate[bot]
9173a81b0b Update dependency debug to v1.11.1 (#37318)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 13:52:15 +00:00
github-actions[bot]
04f7638224 New Crowdin Translations (automated) (#37326)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-01-02 13:48:08 +00:00
renovate[bot]
37eb1ec84c Update dependency bufferutil to v4.1.0 (#37309)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 13:44:14 +00:00
renovate[bot]
b2c0e0c5a7 Update dependency utf-8-validate to v6.0.6 (#37308)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 13:38:08 +00:00
Chan Nyein Tun
54bc97cfce Hide empty padding box if no status in Wrapstodon highlighted post (#37289)
Co-authored-by: Chan Nyein Tun <29679269+channyeintun@users.noreply.github.com>
2026-01-02 13:20:11 +00:00
renovate[bot]
2b74572ebd Update dependency playwright-ruby-client to v1.57.1 (#37356)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 13:07:31 +00:00
renovate[bot]
0afe85e967 Update dependency jsdom to v27.4.0 (#37349)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 13:03:49 +00:00
renovate[bot]
99e16e6b21 Update dependency color_diff to v0.2 (#37331)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 13:03:01 +00:00
renovate[bot]
5a7db6649e Update dependency strong_migrations to v2.5.2 (#37329)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 12:54:00 +00:00
renovate[bot]
86a2e650aa Update dependency brakeman to v7.1.2 (#37348)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 12:28:23 +00:00
renovate[bot]
334e30492e Update dependency i18n to v1.14.8 (#37337)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 11:41:06 +00:00
Andy Piper
f32bed6809 Update keyboard shortcut description for direct mentions (#37347) 2026-01-02 11:15:24 +00:00
renovate[bot]
c772a8fb43 Update dependency json-schema to v6.1.0 (#37338)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 11:09:10 +00:00
renovate[bot]
0f55bb6735 Update dependency sass to v1.97.1 (#37328)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 11:08:48 +00:00
Claire
bc3f68b46a Fix date-related wrapstodon test failures (#37362) 2026-01-02 10:52:22 +00:00
GitHub Actions
aace2679bd New Crowdin translations 2026-01-01 04:56:54 +00:00
Claire
8522ea1924 Merge pull request #3320 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 0231b6d350
2025-12-19 22:40:16 +01:00
Claire
04f4725249 Merge commit '0231b6d350d6027fa822f286732405b573d634e8' into glitch-soc/merge-upstream 2025-12-19 18:43:09 +01:00
Echo
4bae3da85c Prevents swiping when zoomed in (#37323) 2025-12-19 16:18:50 +00:00
diondiondion
a0ce77673c Add dedicated user preferences for theme mode & contrast (#37288) 2025-12-19 15:31:44 +00:00
David Roetzel
0231b6d350 Expose feature policy in API (#37322) 2025-12-19 15:20:30 +00:00
diondiondion
8d9192835d Add stub story for StatusQuoteManager / Status component (#37321) 2025-12-19 15:18:10 +00:00
David Roetzel
4e63958914 Federated "featureable in collections" preference (#37298) 2025-12-19 13:44:27 +00:00
Echo
f254b47067 Remove trailing variation selector code for legacy emojis (#37320) 2025-12-19 13:43:27 +00:00
renovate[bot]
06a5199c44 Update dependency storybook to v10.1.10 [SECURITY] (#37314)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 13:41:58 +00:00
github-actions[bot]
ff005bae0b New Crowdin Translations (automated) (#37312)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-12-19 10:40:07 +00:00
renovate[bot]
77b685e749 Update dependency vite-tsconfig-paths to v6.0.3 (#37303)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 10:07:44 +00:00
diondiondion
a505c2efd8 Fix mobile admin sidebar displaying under batch table toolbar (#37307) 2025-12-19 08:39:25 +00:00
renovate[bot]
6480e16c17 Update dependency sass to v1.97.0 (#37266)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 08:13:07 +00:00
2193 changed files with 78422 additions and 22226 deletions

View File

@@ -1,5 +1,5 @@
# For details, see https://github.com/devcontainers/images/tree/main/src/ruby
FROM mcr.microsoft.com/devcontainers/ruby:1-3.3-bookworm
FROM mcr.microsoft.com/devcontainers/ruby:3.4-trixie
# Install node version from .nvmrc
WORKDIR /app
@@ -9,7 +9,7 @@ RUN /bin/bash --login -i -c "nvm install"
# Install additional OS packages
RUN apt-get update && \
export DEBIAN_FRONTEND=noninteractive && \
apt-get -y install --no-install-recommends libicu-dev libidn11-dev ffmpeg imagemagick libvips42 libpam-dev
apt-get -y install --no-install-recommends libicu-dev libidn11-dev ffmpeg libvips42 libpam-dev
# Disable download prompt for Corepack
ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0

View File

@@ -56,7 +56,7 @@ services:
- internal_network
es:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.29
restart: unless-stopped
environment:
ES_JAVA_OPTS: -Xms512m -Xmx512m

View File

@@ -59,7 +59,7 @@ body:
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.4.4)
- Ruby version: (from `ruby --version`, eg. v3.4.9)
- Node.js version: (from `node --version`, eg. v22.16.0)
validations:
required: false

View File

@@ -60,7 +60,7 @@ body:
value: |
Please at least include those informations:
- Operating system: (eg. Ubuntu 24.04.2)
- Ruby version: (from `ruby --version`, eg. v3.4.4)
- Ruby version: (from `ruby --version`, eg. v3.4.9)
- Node.js version: (from `node --version`, eg. v22.16.0)
validations:
required: false

View File

@@ -9,7 +9,7 @@ runs:
using: 'composite'
steps:
- name: Set up Node.js
uses: actions/setup-node@v6
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6
with:
node-version-file: '.nvmrc'
@@ -23,7 +23,7 @@ runs:
shell: bash
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- uses: actions/cache@v4
- uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}

View File

@@ -14,10 +14,10 @@ runs:
shell: bash
run: |
sudo apt-get update
sudo apt-get install -y libicu-dev libidn11-dev libvips42 ${{ inputs.additional-system-dependencies }}
sudo apt-get install --no-install-recommends -y libicu-dev libidn11-dev libvips42 ${{ inputs.additional-system-dependencies }}
- name: Set up Ruby
uses: ruby/setup-ruby@v1
uses: ruby/setup-ruby@4eb9f110bac952a8b68ecf92e3b5c7a987594ba6 # v1
with:
ruby-version: ${{ inputs.ruby-version }}
bundler-cache: true

View File

@@ -113,6 +113,7 @@
],
matchUpdateTypes: ['major'],
groupName: 'artifact actions (major)',
extends: ['helpers:pinGitHubActionDigests'],
},
{
// Update @types/* packages every week, with one grouped PR
@@ -153,9 +154,15 @@
groupName: 'opentelemetry-ruby (non-major)',
},
{
// Group Playwright Ruby & JS deps in the same PR, as they need to be in sync
matchManagers: ['bundler', 'npm'],
matchPackageNames: ['playwright-ruby-client', 'playwright'],
// The ruby portion of the Playwright group
matchManagers: ['bundler'],
matchPackageNames: ['playwright-ruby-client'],
groupName: 'Playwright',
},
{
// The node portion of the Playwright group
matchManagers: ['npm'],
matchPackageNames: ['playwright'],
groupName: 'Playwright',
},
// Add labels depending on package manager

View File

@@ -35,7 +35,7 @@ jobs:
- linux/arm64
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Prepare
env:
@@ -47,19 +47,19 @@ jobs:
image_names=${PUSH_TO_IMAGES//$'\n'/,}
echo "IMAGE_NAMES=${image_names%,}" >> $GITHUB_ENV
- uses: docker/setup-buildx-action@v3
- uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
id: buildx
- name: Log in to Docker Hub
if: contains(inputs.push_to_images, 'tootsuite')
uses: docker/login-action@v3
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
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@v3
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
with:
registry: ghcr.io
username: ${{ github.actor }}
@@ -67,7 +67,7 @@ jobs:
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5
if: ${{ inputs.push_to_images != '' }}
with:
images: ${{ inputs.push_to_images }}
@@ -76,7 +76,7 @@ jobs:
- name: Build and push by digest
id: build
uses: docker/build-push-action@v6
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6
with:
context: .
file: ${{ inputs.file_to_build }}
@@ -100,7 +100,7 @@ jobs:
- name: Upload digest
if: ${{ inputs.push_to_images != '' }}
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
with:
# `hashFiles` is used to disambiguate between streaming and non-streaming images
name: digests-${{ hashFiles(inputs.file_to_build) }}-${{ env.PLATFORM_PAIR }}
@@ -119,10 +119,10 @@ jobs:
PUSH_TO_IMAGES: ${{ inputs.push_to_images }}
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Download digests
uses: actions/download-artifact@v6
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
with:
path: ${{ runner.temp }}/digests
# `hashFiles` is used to disambiguate between streaming and non-streaming images
@@ -131,25 +131,25 @@ jobs:
- name: Log in to Docker Hub
if: contains(inputs.push_to_images, 'tootsuite')
uses: docker/login-action@v3
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
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@v3
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5
if: ${{ inputs.push_to_images != '' }}
with:
images: ${{ inputs.push_to_images }}

View File

@@ -18,7 +18,7 @@ jobs:
steps:
# Repository needs to be cloned so `git rev-parse` below works
- name: Clone repository
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- id: version_vars
run: |
echo mastodon_version_metadata=pr-${{ github.event.pull_request.number }}-$(git rev-parse --short ${{github.event.pull_request.head.sha}}) >> $GITHUB_OUTPUT

View File

@@ -16,7 +16,7 @@ jobs:
steps:
# Repository needs to be cloned to list branches
- name: Clone repository
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0

View File

@@ -28,10 +28,10 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Ruby
uses: ruby/setup-ruby@v1
uses: ruby/setup-ruby@4eb9f110bac952a8b68ecf92e3b5c7a987594ba6 # v1
with:
bundler-cache: true

View File

@@ -21,7 +21,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
@@ -42,8 +42,7 @@ jobs:
- name: Check for missing strings in English YML
run: |
bin/i18n-tasks add-missing -l en
git diff --exit-code
bin/i18n-tasks missing -t used -l en
- name: Check for wrong string interpolations
run: bin/i18n-tasks check-consistent-interpolations

View File

@@ -16,11 +16,11 @@ jobs:
changed: ${{ steps.filter.outputs.src }}
steps:
- name: Checkout code
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0
- uses: dorny/paths-filter@v3
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3
id: filter
with:
filters: |
@@ -42,7 +42,7 @@ jobs:
if: github.repository == 'mastodon/mastodon' && needs.pathcheck.outputs.changed == 'true'
steps:
- name: Checkout code
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0
@@ -53,10 +53,10 @@ jobs:
run: yarn build-storybook
- name: Run Chromatic
uses: chromaui/action@v13
uses: chromaui/action@07791f8243f4cb2698bf4d00426baf4b2d1cb7e0 # v13
with:
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
zip: true
storybookBuildDir: 'storybook-static'
exitZeroOnChanges: false # Fail workflow if changes are found
exitOnceUploaded: true # Exit immediately after upload
autoAcceptChanges: 'main' # Auto-accept changes on main branch only

View File

@@ -31,11 +31,11 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
uses: github/codeql-action/init@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -48,7 +48,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v4
uses: github/codeql-action/autobuild@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -61,6 +61,6 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
uses: github/codeql-action/analyze@45cbd0c69e560cd9e7cd7f8c32362050c9b7ded2 # v4
with:
category: '/language:${{matrix.language}}'

View File

@@ -13,7 +13,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Increase Git http.postBuffer
# This is needed due to a bug in Ubuntu's cURL version?
@@ -24,7 +24,7 @@ jobs:
# Download the translation files from Crowdin
- name: crowdin action
uses: crowdin/github-action@v2
uses: crowdin/github-action@b4b468cffefb50bdd99dd83e5d2eaeb63c880380 # v2
with:
config: crowdin-glitch.yml
upload_sources: false
@@ -51,7 +51,7 @@ jobs:
# Create or update the pull request
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7.0.8
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
with:
commit-message: 'New Crowdin translations'
title: 'New Crowdin Translations for ${{ github.base_ref || github.ref_name }} (automated)'

View File

@@ -15,7 +15,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Increase Git http.postBuffer
# This is needed due to a bug in Ubuntu's cURL version?
@@ -26,7 +26,7 @@ jobs:
# Download the translation files from Crowdin
- name: crowdin action
uses: crowdin/github-action@v2
uses: crowdin/github-action@b4b468cffefb50bdd99dd83e5d2eaeb63c880380 # v2
with:
config: crowdin-glitch.yml
upload_sources: false
@@ -53,7 +53,7 @@ jobs:
# Create or update the pull request
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8
with:
commit-message: 'New Crowdin translations'
title: 'New Crowdin Translations (automated)'

View File

@@ -23,10 +23,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: crowdin action
uses: crowdin/github-action@v2
uses: crowdin/github-action@b4b468cffefb50bdd99dd83e5d2eaeb63c880380 # v2
with:
config: crowdin-glitch.yml
upload_sources: true

View File

@@ -13,10 +13,10 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: Check formatting with Prettier
- name: Check formatting
run: yarn format:check

View File

@@ -1,17 +0,0 @@
{
"problemMatcher": [
{
"owner": "haml-lint",
"severity": "warning",
"pattern": [
{
"regexp": "^(.*):(\\d+)\\s\\[W]\\s(.*):\\s(.*)$",
"file": 1,
"line": 2,
"code": 3,
"message": 4
}
]
}
]
}

View File

@@ -9,7 +9,6 @@ on:
- 'package.json'
- 'yarn.lock'
- '.nvmrc'
- '.prettier*'
- 'stylelint.config.js'
- '**/*.css'
- '**/*.scss'
@@ -21,7 +20,6 @@ on:
- 'package.json'
- 'yarn.lock'
- '.nvmrc'
- '.prettier*'
- 'stylelint.config.js'
- '**/*.css'
- '**/*.scss'
@@ -34,7 +32,7 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript

View File

@@ -33,14 +33,13 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Ruby
uses: ruby/setup-ruby@v1
uses: ruby/setup-ruby@4eb9f110bac952a8b68ecf92e3b5c7a987594ba6 # v1
with:
bundler-cache: true
- name: Run haml-lint
run: |
echo "::add-matcher::.github/workflows/haml-lint-problem-matcher.json"
bin/haml-lint --reporter github

View File

@@ -10,7 +10,6 @@ on:
- 'yarn.lock'
- 'tsconfig.json'
- '.nvmrc'
- '.prettier*'
- 'eslint.config.mjs'
- '**/*.js'
- '**/*.jsx'
@@ -24,7 +23,6 @@ on:
- 'yarn.lock'
- 'tsconfig.json'
- '.nvmrc'
- '.prettier*'
- 'eslint.config.mjs'
- '**/*.js'
- '**/*.jsx'
@@ -38,7 +36,7 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript

View File

@@ -35,15 +35,15 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Ruby
uses: ruby/setup-ruby@v1
uses: ruby/setup-ruby@4eb9f110bac952a8b68ecf92e3b5c7a987594ba6 # v1
with:
bundler-cache: true
- name: Set-up RuboCop Problem Matcher
uses: r7kamura/rubocop-problem-matchers-action@v1
uses: r7kamura/rubocop-problem-matchers-action@59f1a0759f50cc2649849fd850b8487594bb5a81 # v1.2.2
- name: Run rubocop
run: bin/rubocop

View File

@@ -18,7 +18,7 @@ jobs:
steps:
- name: Check for merge conflicts
uses: eps1lon/actions-label-merge-conflict@v3
uses: eps1lon/actions-label-merge-conflict@1df065ebe6e3310545d4f4c4e862e43bdca146f0 # v3
with:
dirtyLabel: 'rebase needed :construction:'
repoToken: '${{ secrets.GITHUB_TOKEN }}'

View File

@@ -34,7 +34,7 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v5
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript

View File

@@ -72,7 +72,7 @@ jobs:
BUNDLE_RETRY: 3
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby

View File

@@ -32,7 +32,7 @@ jobs:
SECRET_KEY_BASE_DUMMY: 1
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
@@ -43,7 +43,7 @@ jobs:
onlyProduction: 'true'
- name: Cache assets from compilation
uses: actions/cache@v4
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5
with:
path: |
public/assets
@@ -65,7 +65,7 @@ jobs:
run: |
tar --exclude={"*.br","*.gz"} -zcf artifacts.tar.gz public/assets public/packs* tmp/cache/vite/last-build*.json
- uses: actions/upload-artifact@v5
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
if: matrix.mode == 'test'
with:
path: |-
@@ -124,13 +124,12 @@ jobs:
fail-fast: false
matrix:
ruby-version:
- '3.2'
- '3.3'
- '.ruby-version'
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/download-artifact@v6
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
with:
path: './'
name: ${{ github.sha }}
@@ -151,7 +150,7 @@ jobs:
bin/flatware fan bin/rails db:test:prepare
- name: Cache RSpec persistence file
uses: actions/cache@v4
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5
with:
path: |
tmp/rspec/examples.txt
@@ -167,99 +166,12 @@ jobs:
- name: Upload coverage reports to Codecov
if: matrix.ruby-version == '.ruby-version'
uses: codecov/codecov-action@v5
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5
with:
files: coverage/lcov/*.lcov
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
test-imagemagick:
name: ImageMagick tests
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 10ms
--health-timeout 3s
--health-retries 50
ports:
- 5432:5432
redis:
image: redis:7-alpine
options: >-
--health-cmd "redis-cli ping"
--health-interval 10ms
--health-timeout 3s
--health-retries 50
ports:
- 6379:6379
env:
DB_HOST: localhost
DB_USER: postgres
DB_PASS: postgres
COVERAGE: ${{ matrix.ruby-version == '.ruby-version' }}
RAILS_ENV: test
ALLOW_NOPAM: true
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'
GITHUB_RSPEC: ${{ matrix.ruby-version == '.ruby-version' && github.event.pull_request && 'true' }}
MASTODON_USE_LIBVIPS: false
strategy:
fail-fast: false
matrix:
ruby-version:
- '3.2'
- '3.3'
- '.ruby-version'
steps:
- uses: actions/checkout@v5
- uses: actions/download-artifact@v6
with:
path: './'
name: ${{ github.sha }}
- name: Expand archived asset artifacts
run: |
tar xvzf artifacts.tar.gz
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
with:
ruby-version: ${{ matrix.ruby-version}}
additional-system-dependencies: ffmpeg imagemagick libpam-dev
- name: Load database schema
run: './bin/rails db:create db:schema:load db:seed'
- run: bin/rspec --tag attachment_processing
- name: Upload coverage reports to Codecov
if: matrix.ruby-version == '.ruby-version'
uses: codecov/codecov-action@v5
with:
files: coverage/lcov/mastodon.lcov
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
test-e2e:
name: End to End testing
runs-on: ubuntu-latest
@@ -304,14 +216,13 @@ jobs:
fail-fast: false
matrix:
ruby-version:
- '3.2'
- '3.3'
- '.ruby-version'
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/download-artifact@v6
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
with:
path: './'
name: ${{ github.sha }}
@@ -334,7 +245,7 @@ jobs:
- name: Cache Playwright Chromium browser
id: playwright-cache
uses: actions/cache@v4
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5
with:
path: ~/.cache/ms-playwright
key: playwright-browsers-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
@@ -350,14 +261,14 @@ jobs:
- run: bin/rspec spec/system --tag streaming --tag js
- name: Archive logs
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
if: failure()
with:
name: e2e-logs-${{ matrix.ruby-version }}
path: log/
- name: Archive test screenshots
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
if: failure()
with:
name: e2e-screenshots-${{ matrix.ruby-version }}
@@ -435,21 +346,20 @@ jobs:
fail-fast: false
matrix:
ruby-version:
- '3.2'
- '3.3'
- '.ruby-version'
search-image:
- docker.elastic.co/elasticsearch/elasticsearch:7.17.13
- docker.elastic.co/elasticsearch/elasticsearch:7.17.29
include:
- ruby-version: '.ruby-version'
search-image: docker.elastic.co/elasticsearch/elasticsearch:8.10.2
search-image: docker.elastic.co/elasticsearch/elasticsearch:8.19.2
- ruby-version: '.ruby-version'
search-image: opensearchproject/opensearch:2
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/download-artifact@v6
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
with:
path: './'
name: ${{ github.sha }}
@@ -469,15 +379,8 @@ jobs:
- run: bin/rspec --tag search
- name: Archive logs
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
if: failure()
with:
name: test-search-logs-${{ matrix.ruby-version }}
path: log/
- name: Archive test screenshots
uses: actions/upload-artifact@v5
if: failure()
with:
name: test-search-screenshots
path: tmp/capybara/

View File

@@ -10,6 +10,6 @@ linters:
MiddleDot:
enabled: true
LineLength:
max: 300
max: 240 # Override default value of 80 inherited from rubocop
ViewLength:
max: 200 # Override default value of 100 inherited from rubocop

2
.nvmrc
View File

@@ -1 +1 @@
24.12
24.14

99
.oxfmtrc.json Normal file
View File

@@ -0,0 +1,99 @@
{
"$schema": "./node_modules/oxfmt/configuration_schema.json",
"singleQuote": true,
"jsxSingleQuote": true,
"printWidth": 80,
"ignorePatterns": [
"/tmp",
"/coverage",
"/public/assets",
"/public/emoji",
"/public/packs",
"/public/packs-test",
"/public/system",
"/public/vite*",
"*.html",
"docker-compose.override.yml",
// Ignore config YAML files that include ERB/ruby code
"config/email.yml",
// Vendored CSS
"app/javascript/styles/mastodon/reset.scss",
"app/javascript/flavours/glitch/styles/reset.scss",
// Automatically generated
"/app/javascript/mastodon/features/emoji/emoji_map.json",
"/app/javascript/mastodon/features/emoji/emoji_data.json",
"AUTHORS.md",
"/app/javascript/mastodon/locales/*.json",
"/config/locales",
".storybook/static/mockServiceWorker.js",
// Automatically generated (glitch-soc)
"/app/javascript/flavours/glitch/features/emoji/emoji_map.json",
"/app/javascript/flavours/glitch/features/emoji/emoji_data.json",
"/app/javascript/flavours/glitch/locales/*.json",
"/config/locales-glitch",
// do not reformat JS files as this will change too many files and cause merge conflicts with open PRs and forks
"app/javascript/**/*.js",
"app/javascript/**/*.jsx",
"streaming/**/*.js"
],
"experimentalSortPackageJson": false,
"experimentalSortImports": {
"groups": [
["builtin"],
["react"],
["react-intl"],
["react-utils"],
["redux"],
["external", "type-external"],
["internal", "type-internal"],
["mastodon-internals"],
["parent", "type-parent"],
["sibling", "type-sibling", "index", "type-index"],
["side_effect"]
],
"customGroups": [
{
"groupName": "react",
"elementNamePattern": [
"react",
"react-dom",
"react-dom/client",
"prop-types"
]
},
{
"groupName": "react-intl",
"elementNamePattern": ["react-intl", "intl-messageformat"]
},
{
"groupName": "react-utils",
"elementNamePattern": [
"classnames",
"react-helmet",
"react-router",
"react-router-dom"
]
},
{
"groupName": "redux",
"elementNamePattern": [
"immutable",
"@reduxjs/toolkit",
"react-redux",
"react-immutable-proptypes",
"react-immutable-pure-component"
]
},
{
"groupName": "mastodon-internals",
"elementNamePattern": ["mastodon/**", "flavours/glitch/**", "@/**"]
}
]
}
}

View File

@@ -1,101 +0,0 @@
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
# git config --global core.excludesfile '~/.gitignore_global'
# Ignore bundler config and downloaded libraries.
/.bundle
/vendor/bundle
# Ignore the default SQLite database.
/db/*.sqlite3
/db/*.sqlite3-journal
# Ignore all logfiles and tempfiles.
.eslintcache
/log/*
!/log/.keep
/tmp
/coverage
.env
.env.production
.env.development
/node_modules/
/build/
# Ignore Vagrant files
.vagrant/
# Ignore IDE files
.vscode/
.idea/
# Ignore postgres + redis + elasticsearch volume optionally created by docker-compose
/postgres
/postgres14
/redis
/elasticsearch
# Ignore Apple files
.DS_Store
# Ignore vim files
*~
*.swp
# Ignore log files
*.log
# Ignore Docker option files
docker-compose.override.yml
# Ignore public
/public/assets
/public/emoji
/public/packs
/public/packs-test
/public/system
/public/vite*
# Ignore emoji map file
/app/javascript/mastodon/features/emoji/emoji_map.json
/app/javascript/mastodon/features/emoji/emoji_data.json
# Ignore locale files
/app/javascript/mastodon/locales/*.json
/config/locales
# Ignore vendored CSS reset
app/javascript/styles/mastodon/reset.scss
# Ignore Javascript pending https://github.com/mastodon/mastodon/pull/23631
*.js
*.jsx
# Ignore HTML till cleaned and included in CI
*.html
# Ignore the generated AUTHORS.md
AUTHORS.md
# Process a few selected JS files
!lint-staged.config.js
# Ignore config YAML files that include ERB/ruby code prettier does not understand
/config/email.yml
# Ignore glitch-soc emoji map file
/app/javascript/flavours/glitch/features/emoji/emoji_map.json
/app/javascript/flavours/glitch/features/emoji/emoji_data.json
# Ignore glitch-soc locale files
/app/javascript/flavours/glitch/locales
/config/locales-glitch
# Ignore glitch-soc vendored CSS reset
app/javascript/flavours/glitch/styles/reset.scss
app/javascript/flavours/glitch/styles_new/mastodon/reset.scss
# Ignore win95 theme
app/javascript/styles/win95.scss

View File

@@ -1,4 +0,0 @@
module.exports = {
singleQuote: true,
jsxSingleQuote: true
};

View File

@@ -8,7 +8,7 @@ AllCops:
- lib/mastodon/migration_helpers.rb
ExtraDetails: true
NewCops: enable
TargetRubyVersion: 3.2 # Oldest supported ruby version
TargetRubyVersion: 3.3 # Oldest supported ruby version
inherit_from:
- .rubocop/layout.yml

View File

@@ -4,3 +4,6 @@ Layout/FirstHashElementIndentation:
Layout/LineLength:
Max: 300 # Default of 120 causes a duplicate entry in generated todo file
Layout/MultilineMethodCallIndentation:
EnforcedStyle: indented

View File

@@ -1 +1 @@
3.4.8
3.4.9

View File

@@ -3,7 +3,18 @@ import { resolve } from 'node:path';
import type { StorybookConfig } from '@storybook/react-vite';
const config: StorybookConfig = {
stories: ['../app/javascript/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
stories: [
{
directory: '../app/javascript/mastodon',
files: '**/*.stories.@(js|jsx|mjs|ts|tsx)',
titlePrefix: 'Vanilla',
},
{
directory: '../app/javascript/flavours/glitch',
files: '**/*.stories.@(js|jsx|mjs|ts|tsx)',
titlePrefix: 'Glitch',
},
],
addons: [
'@storybook/addon-docs',
'@storybook/addon-a11y',

8
.storybook/modes.ts Normal file
View File

@@ -0,0 +1,8 @@
export const modes = {
darkTheme: {
theme: 'dark',
},
lightTheme: {
theme: 'light',
},
} as const;

View File

@@ -1,2 +1,2 @@
<html class="no-reduce-motion theme-light">
<html class="no-reduce-motion" data-color-scheme="light">
</html>

View File

@@ -21,14 +21,15 @@ import { reducerWithInitialState } from '@/mastodon/reducers';
import { defaultMiddleware } from '@/mastodon/store/store';
import { mockHandlers, unhandledRequestHandler } from '@/testing/api';
// If you want to run the dark theme during development,
// you can change the below to `/application.scss`
import '../app/javascript/styles/mastodon-light.scss';
import { modes } from './modes';
import '../app/javascript/styles/application.scss';
import './styles.css';
const localeFiles = import.meta.glob('@/mastodon/locales/*.json', {
query: { as: 'json' },
});
// Disabling locales in Storybook as it's breaking with Vite 8.
// const localeFiles = import.meta.glob('@/mastodon/locales/*.json', {
// query: { as: 'json' },
// });
// Initialize MSW
initialize({
@@ -39,20 +40,30 @@ const preview: Preview = {
// Auto-generate docs: https://storybook.js.org/docs/writing-docs/autodocs
tags: ['autodocs'],
globalTypes: {
locale: {
description: 'Locale for the story',
// locale: {
// description: 'Locale for the story',
// toolbar: {
// title: 'Locale',
// icon: 'globe',
// items: Object.keys(localeFiles).map((path) =>
// path.replace('/mastodon/locales/', '').replace('.json', ''),
// ),
// dynamicTitle: true,
// },
// },
theme: {
description: 'Theme for the story',
toolbar: {
title: 'Locale',
icon: 'globe',
items: Object.keys(localeFiles).map((path) =>
path.replace('/mastodon/locales/', '').replace('.json', ''),
),
title: 'Theme',
icon: 'circlehollow',
items: [{ value: 'light' }, { value: 'dark' }],
dynamicTitle: true,
},
},
},
initialGlobals: {
locale: 'en',
theme: 'light',
},
decorators: [
(Story, { parameters, globals, args, argTypes }) => {
@@ -126,15 +137,18 @@ const preview: Preview = {
}, [currentLocale, currentLocaleData]);
return (
<IntlProvider
locale={currentLocale}
messages={currentLocaleData}
textComponent='span'
>
<IntlProvider locale={currentLocale} messages={currentLocaleData}>
<Story />
</IntlProvider>
);
},
(Story, { globals }) => {
const theme = (globals.theme as string) || 'light';
useEffect(() => {
document.body.setAttribute('data-color-scheme', theme);
}, [theme]);
return <Story />;
},
(Story) => (
<MemoryRouter>
<Story />
@@ -181,6 +195,13 @@ const preview: Preview = {
msw: {
handlers: mockHandlers,
},
chromatic: {
modes: {
dark: modes.darkTheme,
light: modes.lightTheme,
},
},
},
};

View File

@@ -7,7 +7,7 @@
* - Please do NOT modify this file.
*/
const PACKAGE_VERSION = '2.12.1'
const PACKAGE_VERSION = '2.12.14'
const INTEGRITY_CHECKSUM = '4db4a41e972cec1b64cc569c66952d82'
const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
const activeClientIds = new Set()

View File

@@ -1,8 +0,0 @@
import * as a11yAddonAnnotations from '@storybook/addon-a11y/preview';
import { setProjectAnnotations } from '@storybook/react-vite';
import * as projectAnnotations from './preview';
// This is an important step to apply the right configuration when testing your stories.
// More info at: https://storybook.js.org/docs/api/portable-stories/portable-stories-vitest#setprojectannotations
setProjectAnnotations([a11yAddonAnnotations, projectAnnotations]);

File diff suppressed because it is too large Load Diff

View File

@@ -50,6 +50,8 @@ You can contribute in the following ways:
Please review the org-level [contribution guidelines] for high-level acceptance
criteria guidance and the [DEVELOPMENT] guide for environment-specific details.
You should also read the project's [AI Contribution Policy] to understand how we approach
AI-assisted contributions.
## API Changes and Additions
@@ -80,7 +82,7 @@ reviewed and merged into the codebase.
Our time is limited and PRs making large, unsolicited changes are unlikely to
get a response. Changes which link to an existing confirmed issue, or which come
from a "help wanted" issue or other request are more likely to be reviewed.
from a "help wanted" issue or other request, are more likely to be reviewed.
The smaller and more narrowly focused the changes in a PR are, the easier they
are to review and potentially merge. If the change only makes sense in some
@@ -130,3 +132,4 @@ and API docs. Improvements are made via PRs to the [documentation repository].
[keepachangelog]: https://keepachangelog.com/en/1.0.0/
[Mastodon documentation]: https://docs.joinmastodon.org
[SECURITY]: SECURITY.md
[AI Contribution Policy]: https://github.com/mastodon/.github/blob/main/AI_POLICY.md

View File

@@ -13,7 +13,7 @@ ARG BASE_REGISTRY="docker.io"
# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.4.x"]
# renovate: datasource=docker depName=docker.io/ruby
ARG RUBY_VERSION="3.4.8"
ARG RUBY_VERSION="3.4.9"
# # Node.js version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="22"]
# renovate: datasource=node-version depName=node
ARG NODE_MAJOR_VERSION="24"
@@ -70,8 +70,6 @@ ENV \
PATH="${PATH}:/opt/ruby/bin:/opt/mastodon/bin" \
# Optimize jemalloc 5.x performance
MALLOC_CONF="narenas:2,background_thread:true,thp:never,dirty_decay_ms:1000,muzzy_decay_ms:0" \
# Enable libvips, should not be changed
MASTODON_USE_LIBVIPS=true \
# Sidekiq will touch tmp/sidekiq_process_has_started_and_will_begin_processing_jobs to indicate it is ready. This can be used for a readiness check in Kubernetes
MASTODON_SIDEKIQ_READY_FILENAME=sidekiq_process_has_started_and_will_begin_processing_jobs
@@ -183,7 +181,7 @@ FROM build AS libvips
# libvips version to compile, change with [--build-arg VIPS_VERSION="8.15.2"]
# renovate: datasource=github-releases depName=libvips packageName=libvips/libvips
ARG VIPS_VERSION=8.17.3
ARG VIPS_VERSION=8.18.1
# libvips download URL, change with [--build-arg VIPS_URL="https://github.com/libvips/libvips/releases/download"]
ARG VIPS_URL=https://github.com/libvips/libvips/releases/download

View File

@@ -13,7 +13,8 @@
- [FEP-f1d5: NodeInfo in Fediverse Software](https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md)
- [FEP-8fcf: Followers collection synchronization across servers](https://codeberg.org/fediverse/fep/src/branch/main/fep/8fcf/fep-8fcf.md)
- [FEP-5feb: Search indexing consent for actors](https://codeberg.org/fediverse/fep/src/branch/main/fep/5feb/fep-5feb.md)
- [FEP-044f: Consent-respecting quote posts](https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md): partial support for incoming quote-posts
- [FEP-044f: Consent-respecting quote posts](https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md)
- [FEP-3b86: Activity Intents](https://codeberg.org/fediverse/fep/src/branch/main/fep/3b86/fep-3b86.md): offer handlers for `Object` and `Create` (with support for the `content` parameter only), has support for the `Follow`, `Announce`, `Like` and `Object` intents
## ActivityPub in Mastodon
@@ -48,3 +49,25 @@ Mastodon requires all `POST` requests to be signed, and MAY require `GET` reques
### Additional documentation
- [Mastodon documentation](https://docs.joinmastodon.org/)
## Size limits
Mastodon imposes a few hard limits on federated content.
These limits are intended to be very generous and way above what the Mastodon user experience is optimized for, so as to accommodate future changes and unusual or unforeseen usage patterns, while still providing some limits for performance reasons.
The following table summarizes those limits.
| Limited property | Size limit | Consequence of exceeding the limit |
| ------------------------------------------------------------- | ---------- | ---------------------------------- |
| Serialized JSON-LD | 1MB | **Activity is rejected/dropped** |
| Profile fields (actor `PropertyValue` attachments) name/value | 2047 | Field name/value is truncated |
| Number of profile fields (actor `PropertyValue` attachments) | 50 | Fields list is truncated |
| Poll options (number of `anyOf`/`oneOf` in a `Question`) | 500 | Items list is truncated |
| Account username (actor `preferredUsername`) length | 2048 | **Actor will be rejected** |
| Account display name (actor `name`) length | 2048 | Display name will be truncated |
| Account note (actor `summary`) length | 20kB | Account note will be truncated |
| Account `attributionDomains` | 256 | List will be truncated |
| Account aliases (actor `alsoKnownAs`) | 256 | List will be truncated |
| Custom emoji shortcode (`Emoji` `name`) | 2048 | Emoji will be rejected |
| Media and avatar/header descriptions (`name`/`summary`) | 10000 | Description will be truncated |
| Collection name (`FeaturedCollection` `name`) | 256 | Name will be truncated |
| Collection description (`FeaturedCollection` `summary`) | 2048 | Description will be truncated |

43
Gemfile
View File

@@ -1,11 +1,11 @@
# frozen_string_literal: true
source 'https://rubygems.org'
ruby '>= 3.2.0', '< 3.5.0'
ruby '>= 3.3.0', '< 3.5.0'
gem 'propshaft'
gem 'puma', '~> 7.0'
gem 'rails', '~> 8.0'
gem 'rails', '~> 8.1.0'
gem 'thor', '~> 1.2'
gem 'dotenv'
@@ -24,11 +24,11 @@ gem 'ruby-vips', '~> 2.2', require: false
gem 'active_model_serializers', '~> 0.10'
gem 'addressable', '~> 2.8'
gem 'bootsnap', '~> 1.19.0', require: false
gem 'bootsnap', require: false
gem 'browser'
gem 'charlock_holmes', '~> 0.7.7'
gem 'chewy', '~> 7.3'
gem 'devise', '~> 4.9'
gem 'chewy'
gem 'devise'
gem 'devise-two-factor'
group :pam_authentication, optional: true do
@@ -55,7 +55,7 @@ gem 'hiredis-client'
gem 'htmlentities', '~> 4.3'
gem 'http', '~> 5.3.0'
gem 'http_accept_language', '~> 2.1'
gem 'httplog', '~> 1.7.0', require: false
gem 'httplog', '~> 1.8.0', require: false
gem 'i18n'
gem 'idn-ruby', require: 'idn'
gem 'inline_svg'
@@ -67,7 +67,6 @@ gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
gem 'mime-types', '~> 3.7.0', require: 'mime/types/columnar'
gem 'mutex_m'
gem 'nokogiri', '~> 1.15'
gem 'oj', '~> 3.14'
gem 'ox', '~> 2.14'
gem 'parslet'
gem 'premailer-rails'
@@ -96,27 +95,28 @@ gem 'tzinfo-data', '~> 1.2023'
gem 'webauthn', '~> 3.0'
gem 'webpush', github: 'mastodon/webpush', ref: '9631ac63045cfabddacc69fc06e919b4c13eb913'
gem 'json'
gem 'json-ld'
gem 'json-ld-preloaded', '~> 3.2'
gem 'rdf-normalize', '~> 0.5'
gem 'prometheus_exporter', '~> 2.2', require: false
gem 'opentelemetry-api', '~> 1.7.0'
gem 'opentelemetry-api', '~> 1.8.0'
group :opentelemetry do
gem 'opentelemetry-exporter-otlp', '~> 0.31.0', require: false
gem 'opentelemetry-exporter-otlp', '~> 0.32.0', require: false
gem 'opentelemetry-instrumentation-active_job', '~> 0.10.0', require: false
gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.24.0', require: false
gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.24.0', require: false
gem 'opentelemetry-instrumentation-excon', '~> 0.26.0', require: false
gem 'opentelemetry-instrumentation-faraday', '~> 0.30.0', require: false
gem 'opentelemetry-instrumentation-http', '~> 0.27.0', require: false
gem 'opentelemetry-instrumentation-http_client', '~> 0.26.0', require: false
gem 'opentelemetry-instrumentation-net_http', '~> 0.26.0', require: false
gem 'opentelemetry-instrumentation-pg', '~> 0.34.0', require: false
gem 'opentelemetry-instrumentation-rack', '~> 0.29.0', require: false
gem 'opentelemetry-instrumentation-rails', '~> 0.39.0', require: false
gem 'opentelemetry-instrumentation-excon', '~> 0.28.0', require: false
gem 'opentelemetry-instrumentation-faraday', '~> 0.32.0', require: false
gem 'opentelemetry-instrumentation-http', '~> 0.29.0', require: false
gem 'opentelemetry-instrumentation-http_client', '~> 0.28.0', require: false
gem 'opentelemetry-instrumentation-net_http', '~> 0.28.0', require: false
gem 'opentelemetry-instrumentation-pg', '~> 0.35.0', require: false
gem 'opentelemetry-instrumentation-rack', '~> 0.30.0', require: false
gem 'opentelemetry-instrumentation-rails', '~> 0.40.0', require: false
gem 'opentelemetry-instrumentation-redis', '~> 0.28.0', require: false
gem 'opentelemetry-instrumentation-sidekiq', '~> 0.28.0', require: false
gem 'opentelemetry-sdk', '~> 1.4', require: false
@@ -129,16 +129,13 @@ group :test do
# Adds RSpec Error/Warning annotations to GitHub PRs on the Files tab
gem 'rspec-github', '~> 3.0', require: false
# RSpec helpers for email specs
gem 'email_spec'
# Extra RSpec extension methods and helpers for sidekiq
gem 'rspec-sidekiq', '~> 5.0'
# Browser integration testing
gem 'capybara', '~> 3.39'
gem 'capybara-playwright-driver'
gem 'playwright-ruby-client', '1.57.0', require: false # Pinning the exact version as it needs to be kept in sync with the installed npm package
gem 'playwright-ruby-client', '1.57.1', require: false # Pinning the exact version as it needs to be kept in sync with the installed npm package
# Used to reset the database between system tests
gem 'database_cleaner-active_record'
@@ -180,14 +177,14 @@ group :development do
# Enhanced error message pages for development
gem 'better_errors', '~> 2.9'
gem 'binding_of_caller', '~> 1.0'
gem 'binding_of_caller'
# Preview mail in the browser
gem 'letter_opener', '~> 1.8'
gem 'letter_opener_web', '~> 3.0'
# Security analysis CLI tools
gem 'brakeman', '~> 7.0', require: false
gem 'brakeman', '~> 8.0', require: false
gem 'bundler-audit', '~> 0.9', require: false
# Linter CLI for HAML files

View File

@@ -10,29 +10,31 @@ GIT
GEM
remote: https://rubygems.org/
specs:
actioncable (8.0.3)
actionpack (= 8.0.3)
activesupport (= 8.0.3)
action_text-trix (2.1.17)
railties
actioncable (8.1.3)
actionpack (= 8.1.3)
activesupport (= 8.1.3)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
actionmailbox (8.0.3)
actionpack (= 8.0.3)
activejob (= 8.0.3)
activerecord (= 8.0.3)
activestorage (= 8.0.3)
activesupport (= 8.0.3)
actionmailbox (8.1.3)
actionpack (= 8.1.3)
activejob (= 8.1.3)
activerecord (= 8.1.3)
activestorage (= 8.1.3)
activesupport (= 8.1.3)
mail (>= 2.8.0)
actionmailer (8.0.3)
actionpack (= 8.0.3)
actionview (= 8.0.3)
activejob (= 8.0.3)
activesupport (= 8.0.3)
actionmailer (8.1.3)
actionpack (= 8.1.3)
actionview (= 8.1.3)
activejob (= 8.1.3)
activesupport (= 8.1.3)
mail (>= 2.8.0)
rails-dom-testing (~> 2.2)
actionpack (8.0.3)
actionview (= 8.0.3)
activesupport (= 8.0.3)
actionpack (8.1.3)
actionview (= 8.1.3)
activesupport (= 8.1.3)
nokogiri (>= 1.8.5)
rack (>= 2.2.4)
rack-session (>= 1.0.1)
@@ -40,15 +42,16 @@ GEM
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
useragent (~> 0.16)
actiontext (8.0.3)
actionpack (= 8.0.3)
activerecord (= 8.0.3)
activestorage (= 8.0.3)
activesupport (= 8.0.3)
actiontext (8.1.3)
action_text-trix (~> 2.1.15)
actionpack (= 8.1.3)
activerecord (= 8.1.3)
activestorage (= 8.1.3)
activesupport (= 8.1.3)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (8.0.3)
activesupport (= 8.0.3)
actionview (8.1.3)
activesupport (= 8.1.3)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
@@ -58,46 +61,46 @@ GEM
activemodel (>= 4.1)
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
activejob (8.0.3)
activesupport (= 8.0.3)
activejob (8.1.3)
activesupport (= 8.1.3)
globalid (>= 0.3.6)
activemodel (8.0.3)
activesupport (= 8.0.3)
activerecord (8.0.3)
activemodel (= 8.0.3)
activesupport (= 8.0.3)
activemodel (8.1.3)
activesupport (= 8.1.3)
activerecord (8.1.3)
activemodel (= 8.1.3)
activesupport (= 8.1.3)
timeout (>= 0.4.0)
activestorage (8.0.3)
actionpack (= 8.0.3)
activejob (= 8.0.3)
activerecord (= 8.0.3)
activesupport (= 8.0.3)
activestorage (8.1.3)
actionpack (= 8.1.3)
activejob (= 8.1.3)
activerecord (= 8.1.3)
activesupport (= 8.1.3)
marcel (~> 1.0)
activesupport (8.0.3)
activesupport (8.1.3)
base64
benchmark (>= 0.3)
bigdecimal
concurrent-ruby (~> 1.0, >= 1.3.1)
connection_pool (>= 2.2.5)
drb
i18n (>= 1.6, < 2)
json
logger (>= 1.4.2)
minitest (>= 5.1)
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
uri (>= 0.13.1)
addressable (2.8.8)
addressable (2.8.9)
public_suffix (>= 2.0.2, < 8.0)
aes_key_wrap (1.1.0)
android_key_attestation (0.3.0)
annotaterb (4.20.0)
annotaterb (4.22.0)
activerecord (>= 6.0.0)
activesupport (>= 6.0.0)
ast (2.4.3)
attr_required (1.0.2)
aws-eventstream (1.4.0)
aws-partitions (1.1194.0)
aws-sdk-core (3.239.2)
aws-partitions (1.1227.0)
aws-sdk-core (3.244.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
@@ -105,11 +108,11 @@ GEM
bigdecimal
jmespath (~> 1, >= 1.6.1)
logger
aws-sdk-kms (1.118.0)
aws-sdk-core (~> 3, >= 3.239.1)
aws-sdk-kms (1.123.0)
aws-sdk-core (~> 3, >= 3.244.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.207.0)
aws-sdk-core (~> 3, >= 3.234.0)
aws-sdk-s3 (1.217.0)
aws-sdk-core (~> 3, >= 3.244.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.12.1)
@@ -118,7 +121,7 @@ GEM
rexml
base64 (0.3.0)
bcp47_spec (0.2.1)
bcrypt (3.1.20)
bcrypt (3.1.22)
benchmark (0.5.0)
better_errors (2.10.1)
erubi (>= 1.0.0)
@@ -126,12 +129,12 @@ GEM
rouge (>= 1.0.0)
bigdecimal (3.3.1)
bindata (2.5.1)
binding_of_caller (1.0.1)
binding_of_caller (2.0.0)
debug_inspector (>= 1.2.0)
blurhash (0.1.8)
bootsnap (1.19.0)
bootsnap (1.23.0)
msgpack (~> 1.2)
brakeman (7.1.1)
brakeman (8.0.4)
racc
browser (6.2.0)
builder (3.3.0)
@@ -147,27 +150,27 @@ GEM
rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2)
capybara-playwright-driver (0.5.7)
capybara-playwright-driver (0.5.9)
addressable
capybara
playwright-ruby-client (>= 1.16.0)
case_transform (0.2)
activesupport
cbor (0.5.10.1)
cgi (0.4.2)
cgi (0.5.1)
charlock_holmes (0.7.9)
chewy (7.6.0)
activesupport (>= 5.2)
elasticsearch (>= 7.14.0, < 8)
chewy (8.0.1)
activesupport (>= 7.2)
elasticsearch (>= 8.14, < 9.0)
elasticsearch-dsl
childprocess (5.1.0)
logger (~> 1.5)
chunky_png (1.4.0)
climate_control (1.2.0)
cocoon (1.2.15)
color_diff (0.1)
color_diff (0.2)
concurrent-ruby (1.3.6)
connection_pool (2.5.5)
connection_pool (3.0.2)
cose (1.3.1)
cbor (~> 0.5.9)
openssl-signature_algorithm (~> 1.0)
@@ -183,20 +186,20 @@ GEM
database_cleaner-core (~> 2.0)
database_cleaner-core (2.0.1)
date (3.5.1)
debug (1.11.0)
debug (1.11.1)
irb (~> 1.10)
reline (>= 0.3.8)
debug_inspector (1.2.0)
devise (4.9.4)
devise (5.0.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
railties (>= 7.0)
responders
warden (~> 1.2.3)
devise-two-factor (6.2.0)
activesupport (>= 7.0, < 8.2)
devise (~> 4.0)
railties (>= 7.0, < 8.2)
devise-two-factor (6.4.0)
activesupport (>= 7.2, < 8.2)
devise (>= 4.0, < 6.0)
railties (>= 7.2, < 8.2)
rotp (~> 6.0)
devise_pam_authenticatable2 (9.2.0)
devise (>= 4.0.0)
@@ -206,58 +209,56 @@ GEM
activerecord (>= 4.2, < 9.0)
docile (1.4.1)
domain_name (0.6.20240107)
doorkeeper (5.8.2)
doorkeeper (5.9.0)
railties (>= 5)
dotenv (3.2.0)
drb (2.2.3)
dry-cli (1.3.0)
elasticsearch (7.17.11)
elasticsearch-api (= 7.17.11)
elasticsearch-transport (= 7.17.11)
elasticsearch-api (7.17.11)
dry-cli (1.4.1)
elastic-transport (8.4.1)
faraday (< 3)
multi_json
elasticsearch (8.19.3)
elastic-transport (~> 8.3)
elasticsearch-api (= 8.19.3)
ostruct
elasticsearch-api (8.19.3)
multi_json
elasticsearch-dsl (0.1.10)
elasticsearch-transport (7.17.11)
base64
faraday (>= 1, < 3)
multi_json
email_spec (2.3.0)
htmlentities (~> 4.3.3)
launchy (>= 2.1, < 4.0)
mail (~> 2.7)
email_validator (2.2.4)
activemodel
erb (6.0.1)
erb (6.0.2)
erubi (1.13.1)
et-orbi (1.4.0)
tzinfo
excon (1.3.2)
excon (1.4.0)
logger
fabrication (3.0.0)
faker (3.5.3)
faker (3.6.1)
i18n (>= 1.8.11, < 2)
faraday (2.14.0)
faraday (2.14.1)
faraday-net_http (>= 2.0, < 3.5)
json
logger
faraday-follow_redirects (0.4.0)
faraday-follow_redirects (0.5.0)
faraday (>= 1, < 3)
faraday-httpclient (2.0.2)
httpclient (>= 2.2)
faraday-net_http (3.4.2)
net-http (~> 0.5)
fast_blank (1.0.1)
fastimage (2.4.0)
ffi (1.17.2)
fastimage (2.4.1)
ffi (1.17.3)
ffi-compiler (1.3.2)
ffi (>= 1.15.5)
rake
flatware (2.3.4)
flatware (2.4.0)
benchmark
drb
logger
thor (< 2.0)
flatware-rspec (2.3.4)
flatware (= 2.3.4)
rspec (>= 3.6)
flatware-rspec (2.4.0)
flatware (= 2.4.0)
rspec (>= 3.8)
fog-core (2.6.0)
builder
excon (~> 1.0)
@@ -271,18 +272,18 @@ GEM
fog-json (>= 1.0)
formatador (1.2.3)
reline
forwardable (1.3.3)
forwardable (1.4.0)
fugit (1.12.1)
et-orbi (~> 1.4)
raabro (~> 1.4)
globalid (1.3.0)
activesupport (>= 6.1)
google-protobuf (4.33.2)
google-protobuf (4.34.0)
bigdecimal
rake (>= 13)
rake (~> 13.3)
googleapis-common-protos-types (1.22.0)
google-protobuf (~> 4.26)
haml (7.1.0)
haml (7.2.0)
temple (>= 0.8.2)
thor
tilt
@@ -291,23 +292,24 @@ GEM
activesupport (>= 5.1)
haml (>= 4.0.6)
railties (>= 5.1)
haml_lint (0.68.0)
haml_lint (0.72.0)
haml (>= 5.0)
parallel (~> 1.10)
rainbow
rubocop (>= 1.0)
sysexits (~> 1.1)
hashdiff (1.2.1)
hashie (5.0.0)
hashie (5.1.0)
logger
hcaptcha (7.1.0)
json
highline (3.1.2)
reline
hiredis (0.6.3)
hiredis-client (0.26.2)
redis-client (= 0.26.2)
hiredis-client (0.28.0)
redis-client (= 0.28.0)
hkdf (0.3.0)
htmlentities (4.3.4)
htmlentities (4.4.2)
http (5.3.1)
addressable (~> 2.8)
http-cookie (~> 1.0)
@@ -319,10 +321,11 @@ GEM
http_accept_language (2.1.1)
httpclient (2.9.0)
mutex_m
httplog (1.7.3)
httplog (1.8.0)
benchmark
rack (>= 2.0)
rainbow (>= 2.0.0)
i18n (1.14.7)
i18n (1.14.8)
concurrent-ruby (~> 1.0)
i18n-tasks (1.1.2)
activesupport (>= 4.0.2)
@@ -341,8 +344,9 @@ GEM
activesupport (>= 3.0)
nokogiri (>= 1.6)
io-console (0.8.2)
irb (1.15.3)
irb (1.17.0)
pp (>= 0.6.0)
prism (>= 1.3.0)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
jd-paperclip-azure (3.0.0)
@@ -350,7 +354,7 @@ GEM
azure-blob (~> 0.5.2)
hashie (~> 5.0)
jmespath (1.6.2)
json (2.18.0)
json (2.19.3)
json-canonicalization (1.0.0)
json-jwt (1.17.0)
activesupport (>= 4.2)
@@ -370,9 +374,9 @@ GEM
json-ld-preloaded (3.3.2)
json-ld (~> 3.3)
rdf (~> 3.3)
json-schema (6.0.0)
json-schema (6.2.0)
addressable (~> 2.8)
bigdecimal (~> 3.1)
bigdecimal (>= 3.1, < 5)
jsonapi-renderer (0.2.2)
jwt (2.10.2)
base64
@@ -388,7 +392,7 @@ GEM
activerecord
kaminari-core (= 1.2.2)
kaminari-core (1.2.2)
kt-paperclip (7.2.2)
kt-paperclip (7.3.0)
activemodel (>= 4.2.0)
activesupport (>= 4.2.0)
marcel (~> 1.0.1)
@@ -408,12 +412,12 @@ GEM
rexml
link_header (0.0.8)
lint_roller (1.1.0)
linzer (0.7.7)
cgi (~> 0.4.2)
linzer (0.7.8)
cgi (>= 0.4.2, < 0.6.0)
forwardable (~> 1.3, >= 1.3.3)
logger (~> 1.7, >= 1.7.0)
net-http (~> 0.6.0)
openssl (~> 3.0, >= 3.0.0)
net-http (>= 0.6, < 0.10)
openssl (>= 3, < 5)
rack (>= 2.2, < 4.0)
starry (~> 0.2)
stringio (~> 3.1, >= 3.1.2)
@@ -427,7 +431,7 @@ GEM
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
loofah (2.24.1)
loofah (2.25.1)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.9.0)
@@ -444,16 +448,18 @@ GEM
mime-types (3.7.0)
logger
mime-types-data (~> 3.2025, >= 3.2025.0507)
mime-types-data (3.2025.0924)
mime-types-data (3.2026.0317)
mini_mime (1.1.5)
mini_portile2 (2.8.9)
minitest (5.27.0)
minitest (6.0.2)
drb (~> 2.0)
prism (~> 1.5)
msgpack (1.8.0)
multi_json (1.18.0)
multi_json (1.19.1)
mutex_m (0.3.0)
net-http (0.6.0)
uri
net-imap (0.6.0)
net-imap (0.6.3)
date
net-protocol
net-ldap (0.20.0)
@@ -466,12 +472,9 @@ GEM
net-smtp (0.5.1)
net-protocol
nio4r (2.7.5)
nokogiri (1.18.10)
nokogiri (1.19.2)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
oj (3.16.13)
bigdecimal (>= 3.0)
ostruct (>= 0.2)
omniauth (2.1.4)
hashie (>= 3.4.6)
logger
@@ -484,7 +487,7 @@ GEM
omniauth-rails_csrf_protection (2.0.1)
actionpack (>= 4.2)
omniauth (~> 2.0)
omniauth-saml (2.2.4)
omniauth-saml (2.2.5)
omniauth (~> 2.1)
ruby-saml (~> 1.18)
omniauth_openid_connect (0.8.0)
@@ -503,13 +506,14 @@ GEM
tzinfo
validate_url
webfinger (~> 2.0)
openssl (3.3.2)
openssl (4.0.1)
openssl-signature_algorithm (1.3.0)
openssl (> 2.0)
opentelemetry-api (1.7.0)
opentelemetry-api (1.8.0)
logger
opentelemetry-common (0.23.0)
opentelemetry-api (~> 1.0)
opentelemetry-exporter-otlp (0.31.1)
opentelemetry-exporter-otlp (0.32.0)
google-protobuf (>= 3.18)
googleapis-common-protos-types (~> 1.3)
opentelemetry-api (~> 1.1)
@@ -518,13 +522,14 @@ GEM
opentelemetry-semantic_conventions
opentelemetry-helpers-sql (0.3.0)
opentelemetry-api (~> 1.7)
opentelemetry-helpers-sql-processor (0.3.1)
opentelemetry-helpers-sql-processor (0.4.0)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.21)
opentelemetry-instrumentation-action_mailer (0.6.1)
opentelemetry-instrumentation-active_support (~> 0.10)
opentelemetry-instrumentation-action_pack (0.15.1)
opentelemetry-instrumentation-action_pack (0.16.0)
opentelemetry-instrumentation-rack (~> 0.29)
opentelemetry-instrumentation-action_view (0.11.1)
opentelemetry-instrumentation-action_view (0.11.2)
opentelemetry-instrumentation-active_support (~> 0.10)
opentelemetry-instrumentation-active_job (0.10.1)
opentelemetry-instrumentation-base (~> 0.25)
@@ -542,23 +547,23 @@ GEM
opentelemetry-registry (~> 0.1)
opentelemetry-instrumentation-concurrent_ruby (0.24.0)
opentelemetry-instrumentation-base (~> 0.25)
opentelemetry-instrumentation-excon (0.26.1)
opentelemetry-instrumentation-excon (0.28.0)
opentelemetry-instrumentation-base (~> 0.25)
opentelemetry-instrumentation-faraday (0.30.1)
opentelemetry-instrumentation-faraday (0.32.0)
opentelemetry-instrumentation-base (~> 0.25)
opentelemetry-instrumentation-http (0.27.1)
opentelemetry-instrumentation-http (0.29.0)
opentelemetry-instrumentation-base (~> 0.25)
opentelemetry-instrumentation-http_client (0.26.1)
opentelemetry-instrumentation-http_client (0.28.0)
opentelemetry-instrumentation-base (~> 0.25)
opentelemetry-instrumentation-net_http (0.26.1)
opentelemetry-instrumentation-net_http (0.28.0)
opentelemetry-instrumentation-base (~> 0.25)
opentelemetry-instrumentation-pg (0.34.1)
opentelemetry-instrumentation-pg (0.35.0)
opentelemetry-helpers-sql
opentelemetry-helpers-sql-processor
opentelemetry-instrumentation-base (~> 0.25)
opentelemetry-instrumentation-rack (0.29.0)
opentelemetry-instrumentation-rack (0.30.0)
opentelemetry-instrumentation-base (~> 0.25)
opentelemetry-instrumentation-rails (0.39.1)
opentelemetry-instrumentation-rails (0.40.0)
opentelemetry-instrumentation-action_mailer (~> 0.6)
opentelemetry-instrumentation-action_pack (~> 0.15)
opentelemetry-instrumentation-action_view (~> 0.11)
@@ -585,16 +590,17 @@ GEM
ox (2.14.23)
bigdecimal (>= 3.0)
parallel (1.27.0)
parser (3.3.10.0)
parser (3.3.10.2)
ast (~> 2.4.1)
racc
parslet (2.0.0)
pastel (0.8.0)
tty-color (~> 0.5)
pg (1.6.2)
pg (1.6.3)
pghero (3.7.0)
activerecord (>= 7.1)
playwright-ruby-client (1.57.0)
playwright-ruby-client (1.57.1)
base64
concurrent-ruby (>= 1.1.6)
mime-types (>= 3.0)
pp (0.6.3)
@@ -608,24 +614,24 @@ GEM
net-smtp
premailer (~> 1.7, >= 1.7.9)
prettyprint (0.2.0)
prism (1.6.0)
prism (1.9.0)
prometheus_exporter (2.3.1)
webrick
propshaft (1.3.1)
actionpack (>= 7.0.0)
activesupport (>= 7.0.0)
rack
psych (5.3.0)
psych (5.3.1)
date
stringio
public_suffix (7.0.0)
puma (7.1.0)
public_suffix (7.0.5)
puma (7.2.0)
nio4r (~> 2.0)
pundit (2.5.2)
activesupport (>= 3.0.0)
raabro (1.4.0)
racc (1.8.1)
rack (3.2.4)
rack (3.2.5)
rack-attack (6.8.0)
rack (>= 1.0, < 4)
rack-cors (3.0.0)
@@ -651,33 +657,33 @@ GEM
rack (>= 1.3)
rackup (2.3.1)
rack (>= 3)
rails (8.0.3)
actioncable (= 8.0.3)
actionmailbox (= 8.0.3)
actionmailer (= 8.0.3)
actionpack (= 8.0.3)
actiontext (= 8.0.3)
actionview (= 8.0.3)
activejob (= 8.0.3)
activemodel (= 8.0.3)
activerecord (= 8.0.3)
activestorage (= 8.0.3)
activesupport (= 8.0.3)
rails (8.1.3)
actioncable (= 8.1.3)
actionmailbox (= 8.1.3)
actionmailer (= 8.1.3)
actionpack (= 8.1.3)
actiontext (= 8.1.3)
actionview (= 8.1.3)
activejob (= 8.1.3)
activemodel (= 8.1.3)
activerecord (= 8.1.3)
activestorage (= 8.1.3)
activesupport (= 8.1.3)
bundler (>= 1.15.0)
railties (= 8.0.3)
railties (= 8.1.3)
rails-dom-testing (2.3.0)
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
rails-html-sanitizer (1.6.2)
loofah (~> 2.21)
rails-html-sanitizer (1.7.0)
loofah (~> 2.25)
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
rails-i18n (8.1.0)
i18n (>= 0.7, < 2)
railties (>= 8.0.0, < 9)
railties (8.0.3)
actionpack (= 8.0.3)
activesupport (= 8.0.3)
railties (8.1.3)
actionpack (= 8.1.3)
activesupport (= 8.1.3)
irb (~> 1.13)
rackup (>= 1.0.0)
rake (>= 12.2)
@@ -695,7 +701,7 @@ GEM
readline (~> 0.0)
rdf-normalize (0.7.0)
rdf (~> 3.3)
rdoc (6.17.0)
rdoc (7.2.0)
erb
psych (>= 4.0.0)
tsort
@@ -703,7 +709,7 @@ GEM
reline
redcarpet (3.6.1)
redis (4.8.1)
redis-client (0.26.2)
redis-client (0.28.0)
connection_pool
regexp_parser (2.11.3)
reline (0.6.3)
@@ -715,12 +721,12 @@ GEM
railties (>= 7.0)
rexml (3.4.4)
rotp (6.3.0)
rouge (4.6.1)
rouge (4.7.0)
rpam2 (4.0.2)
rqrcode (3.1.1)
rqrcode (3.2.0)
chunky_png (~> 1.0)
rqrcode_core (~> 2.0)
rqrcode_core (2.0.1)
rqrcode_core (2.1.0)
rspec (3.13.2)
rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0)
@@ -732,24 +738,24 @@ GEM
rspec-support (~> 3.13.0)
rspec-github (3.0.0)
rspec-core (~> 3.0)
rspec-mocks (3.13.7)
rspec-mocks (3.13.8)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-rails (8.0.2)
rspec-rails (8.0.4)
actionpack (>= 7.2)
activesupport (>= 7.2)
railties (>= 7.2)
rspec-core (~> 3.13)
rspec-expectations (~> 3.13)
rspec-mocks (~> 3.13)
rspec-support (~> 3.13)
rspec-sidekiq (5.2.0)
rspec-core (>= 3.13.0, < 5.0.0)
rspec-expectations (>= 3.13.0, < 5.0.0)
rspec-mocks (>= 3.13.0, < 5.0.0)
rspec-support (>= 3.13.0, < 5.0.0)
rspec-sidekiq (5.3.0)
rspec-core (~> 3.0)
rspec-expectations (~> 3.0)
rspec-mocks (~> 3.0)
sidekiq (>= 5, < 9)
rspec-support (3.13.6)
rubocop (1.81.7)
rspec-support (3.13.7)
rubocop (1.84.2)
json (~> 2.3)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
@@ -757,12 +763,12 @@ GEM
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.9.3, < 3.0)
rubocop-ast (>= 1.47.1, < 2.0)
rubocop-ast (>= 1.49.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (1.48.0)
rubocop-ast (1.49.1)
parser (>= 3.3.7.2)
prism (~> 1.4)
prism (~> 1.7)
rubocop-capybara (2.22.1)
lint_roller (~> 1.1)
rubocop (~> 1.72, >= 1.72.1)
@@ -773,21 +779,22 @@ GEM
lint_roller (~> 1.1)
rubocop (>= 1.75.0, < 2.0)
rubocop-ast (>= 1.47.1, < 2.0)
rubocop-rails (2.34.2)
rubocop-rails (2.34.3)
activesupport (>= 4.2.0)
lint_roller (~> 1.1)
rack (>= 1.1)
rubocop (>= 1.75.0, < 2.0)
rubocop-ast (>= 1.44.0, < 2.0)
rubocop-rspec (3.8.0)
rubocop-rspec (3.9.0)
lint_roller (~> 1.1)
rubocop (~> 1.81)
rubocop-rspec_rails (2.32.0)
lint_roller (~> 1.1)
rubocop (~> 1.72, >= 1.72.1)
rubocop-rspec (~> 3.5)
ruby-prof (1.7.2)
ruby-prof (2.0.4)
base64
ostruct
ruby-progressbar (1.13.0)
ruby-saml (1.18.1)
nokogiri (>= 1.13.10)
@@ -820,13 +827,14 @@ GEM
sidekiq-scheduler (6.0.1)
rufus-scheduler (~> 3.2)
sidekiq (>= 7.3, < 9)
sidekiq-unique-jobs (8.0.12)
sidekiq-unique-jobs (8.0.13)
concurrent-ruby (~> 1.0, >= 1.0.5)
sidekiq (>= 7.0.0, < 9.0.0)
thor (>= 1.0, < 3.0)
simple-navigation (4.4.0)
simple-navigation (4.4.1)
activesupport (>= 2.3.2)
simple_form (5.4.0)
ostruct
simple_form (5.4.1)
actionpack (>= 7.0)
activemodel (>= 7.0)
simplecov (0.22.0)
@@ -836,14 +844,14 @@ GEM
simplecov-html (0.13.2)
simplecov-lcov (0.9.0)
simplecov_json_formatter (0.1.4)
stackprof (0.2.27)
stackprof (0.2.28)
starry (0.2.0)
base64
stoplight (5.7.0)
stoplight (5.8.0)
concurrent-ruby
zeitwerk
stringio (3.1.9)
strong_migrations (2.5.1)
stringio (3.2.0)
strong_migrations (2.5.2)
activerecord (>= 7.1)
swd (2.0.3)
activesupport (>= 3)
@@ -856,10 +864,10 @@ GEM
unicode-display_width (>= 1.1.1, < 4)
terrapin (1.1.1)
climate_control
test-prof (1.5.0)
thor (1.4.0)
tilt (2.6.1)
timeout (0.5.0)
test-prof (1.6.0)
thor (1.5.0)
tilt (2.7.0)
timeout (0.6.1)
tpm-key_attestation (0.14.1)
bindata (~> 2.4)
openssl (> 2.0)
@@ -880,23 +888,23 @@ GEM
unf (~> 0.1.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
tzinfo-data (1.2025.3)
tzinfo-data (1.2026.1)
tzinfo (>= 1.0.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.9.1)
unicode-display_width (3.2.0)
unicode-emoji (~> 4.1)
unicode-emoji (4.1.0)
unicode-emoji (4.2.0)
uri (1.1.1)
useragent (0.16.11)
validate_url (1.0.15)
activemodel (>= 3.0.0)
public_suffix
vite_rails (3.0.19)
vite_rails (3.0.20)
railties (>= 5.1, < 9)
vite_ruby (~> 3.0, >= 3.2.2)
vite_ruby (3.9.2)
vite_ruby (3.9.3)
dry-cli (>= 0.7, < 2)
logger (~> 1.6)
mutex_m
@@ -916,7 +924,7 @@ GEM
activesupport
faraday (~> 2.0)
faraday-follow_redirects
webmock (3.26.1)
webmock (3.26.2)
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
@@ -929,7 +937,7 @@ GEM
xorcist (1.1.3)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.7.3)
zeitwerk (2.7.5)
PLATFORMS
ruby
@@ -941,16 +949,16 @@ DEPENDENCIES
aws-sdk-core
aws-sdk-s3 (~> 1.123)
better_errors (~> 2.9)
binding_of_caller (~> 1.0)
binding_of_caller
blurhash (~> 0.1)
bootsnap (~> 1.19.0)
brakeman (~> 7.0)
bootsnap
brakeman (~> 8.0)
browser
bundler-audit (~> 0.9)
capybara (~> 3.39)
capybara-playwright-driver
charlock_holmes (~> 0.7.7)
chewy (~> 7.3)
chewy
climate_control
cocoon (~> 1.2)
color_diff (~> 0.1)
@@ -959,13 +967,12 @@ DEPENDENCIES
csv (~> 3.2)
database_cleaner-active_record
debug (~> 1.8)
devise (~> 4.9)
devise
devise-two-factor
devise_pam_authenticatable2 (~> 9.2)
discard (~> 1.2)
doorkeeper (~> 5.6)
dotenv
email_spec
fabrication
faker (~> 3.2)
faraday-httpclient
@@ -982,13 +989,14 @@ DEPENDENCIES
htmlentities (~> 4.3)
http (~> 5.3.0)
http_accept_language (~> 2.1)
httplog (~> 1.7.0)
httplog (~> 1.8.0)
i18n
i18n-tasks (~> 1.0)
idn-ruby
inline_svg
irb (~> 1.8)
jd-paperclip-azure (~> 3.0)
json
json-ld
json-ld-preloaded (~> 3.2)
json-schema (~> 6.0)
@@ -1007,25 +1015,24 @@ DEPENDENCIES
net-http (~> 0.6.0)
net-ldap (~> 0.18)
nokogiri (~> 1.15)
oj (~> 3.14)
omniauth (~> 2.0)
omniauth-cas (~> 3.0.0.beta.1)
omniauth-rails_csrf_protection (~> 2.0)
omniauth-saml (~> 2.0)
omniauth_openid_connect (~> 0.8.0)
opentelemetry-api (~> 1.7.0)
opentelemetry-exporter-otlp (~> 0.31.0)
opentelemetry-api (~> 1.8.0)
opentelemetry-exporter-otlp (~> 0.32.0)
opentelemetry-instrumentation-active_job (~> 0.10.0)
opentelemetry-instrumentation-active_model_serializers (~> 0.24.0)
opentelemetry-instrumentation-concurrent_ruby (~> 0.24.0)
opentelemetry-instrumentation-excon (~> 0.26.0)
opentelemetry-instrumentation-faraday (~> 0.30.0)
opentelemetry-instrumentation-http (~> 0.27.0)
opentelemetry-instrumentation-http_client (~> 0.26.0)
opentelemetry-instrumentation-net_http (~> 0.26.0)
opentelemetry-instrumentation-pg (~> 0.34.0)
opentelemetry-instrumentation-rack (~> 0.29.0)
opentelemetry-instrumentation-rails (~> 0.39.0)
opentelemetry-instrumentation-excon (~> 0.28.0)
opentelemetry-instrumentation-faraday (~> 0.32.0)
opentelemetry-instrumentation-http (~> 0.29.0)
opentelemetry-instrumentation-http_client (~> 0.28.0)
opentelemetry-instrumentation-net_http (~> 0.28.0)
opentelemetry-instrumentation-pg (~> 0.35.0)
opentelemetry-instrumentation-rack (~> 0.30.0)
opentelemetry-instrumentation-rails (~> 0.40.0)
opentelemetry-instrumentation-redis (~> 0.28.0)
opentelemetry-instrumentation-sidekiq (~> 0.28.0)
opentelemetry-sdk (~> 1.4)
@@ -1033,7 +1040,7 @@ DEPENDENCIES
parslet
pg (~> 1.5)
pghero
playwright-ruby-client (= 1.57.0)
playwright-ruby-client (= 1.57.1)
premailer-rails
prometheus_exporter (~> 2.2)
propshaft
@@ -1043,7 +1050,7 @@ DEPENDENCIES
rack-attack (~> 6.6)
rack-cors
rack-test (~> 2.1)
rails (~> 8.0)
rails (~> 8.1.0)
rails-i18n (~> 8.0)
rdf-normalize (~> 0.5)
redcarpet (~> 3.6)
@@ -1090,7 +1097,7 @@ DEPENDENCIES
xorcist (~> 1.1)
RUBY VERSION
ruby 3.4.1p0
ruby 3.4.9
BUNDLED WITH
4.0.2
4.0.8

View File

@@ -72,10 +72,11 @@ Mastodon is a **free, open-source social network server** based on [ActivityPub]
### Requirements
- **Ruby** 3.2+
- **Ruby** 3.3+
- **PostgreSQL** 14+
- **Redis** 7.0+
- **Node.js** 20+
- **FFmpeg** 5.1+
This repository includes deployment configurations for **Docker and docker-compose**, as well as for other environments like Heroku and Scalingo. For Helm charts, reference the [mastodon/chart repository](https://github.com/mastodon/chart). A [**standalone** installation guide](https://docs.joinmastodon.org/admin/install/) is available in the main documentation.

View File

@@ -18,5 +18,4 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through
| 4.5.x | Yes |
| 4.4.x | Yes |
| 4.3.x | Until 2026-05-06 |
| 4.2.x | Until 2026-01-08 |
| < 4.2 | No |
| < 4.3 | No |

1
Vagrantfile vendored
View File

@@ -29,7 +29,6 @@ sudo apt-get install \
libpq-dev \
libxml2-dev \
libxslt1-dev \
imagemagick \
nodejs \
redis-server \
redis-tools \

View File

@@ -53,9 +53,9 @@ class PublicStatusesIndex < Chewy::Index
}
index_scope ::Status.unscoped
.kept
.indexable
.includes(:media_attachments, :preloadable_poll, :tags, preview_cards_status: :preview_card)
.kept
.indexable
.includes(:media_attachments, :preloadable_poll, :tags, preview_cards_status: :preview_card)
root date_detection: false do
field(:id, type: 'long')

View File

@@ -18,6 +18,8 @@ class AccountsController < ApplicationController
respond_to do |format|
format.html do
expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.hour) unless user_signed_in?
redirect_to short_account_path(@account) if account_id_param.present? && username_param.blank?
end
format.rss do

View File

@@ -1,20 +1,36 @@
# frozen_string_literal: true
class ActivityPub::CollectionsController < ActivityPub::BaseController
SUPPORTED_COLLECTIONS = %w(featured tags).freeze
vary_by -> { 'Signature' if authorized_fetch_mode? }
before_action :require_account_signature!, if: :authorized_fetch_mode?
before_action :check_authorization
before_action :set_items
before_action :set_size
before_action :set_type
def show
expires_in 3.minutes, public: public_fetch_mode?
render_with_cache json: collection_presenter, content_type: 'application/activity+json', serializer: ActivityPub::CollectionSerializer, adapter: ActivityPub::Adapter
if @unauthorized
render json: collection_presenter, content_type: 'application/activity+json', serializer: ActivityPub::CollectionSerializer, adapter: ActivityPub::Adapter
else
render_with_cache json: collection_presenter, content_type: 'application/activity+json', serializer: ActivityPub::CollectionSerializer, adapter: ActivityPub::Adapter
end
end
private
def check_authorization
# Because in public fetch mode we cache the response, there would be no
# benefit from performing the check below, since a blocked account or domain
# would likely be served the cache from the reverse proxy anyway
@unauthorized = authorized_fetch_mode? && !signed_request_account.nil? && (@account.blocking?(signed_request_account) || (!signed_request_account.domain.nil? && @account.domain_blocking?(signed_request_account.domain)))
end
def set_items
case params[:id]
when 'featured'
@@ -57,11 +73,7 @@ class ActivityPub::CollectionsController < ActivityPub::BaseController
end
def for_signed_account
# Because in public fetch mode we cache the response, there would be no
# benefit from performing the check below, since a blocked account or domain
# would likely be served the cache from the reverse proxy anyway
if authorized_fetch_mode? && !signed_request_account.nil? && (@account.blocking?(signed_request_account) || (!signed_request_account.domain.nil? && @account.domain_blocking?(signed_request_account.domain)))
if @unauthorized
[]
else
yield

View File

@@ -36,9 +36,8 @@ class ActivityPub::ContextsController < ActivityPub::BaseController
def context_presenter
first_page = ActivityPub::CollectionPresenter.new(
id: items_context_url(@conversation, page_params),
type: :unordered,
part_of: items_context_url(@conversation),
part_of: context_url(@conversation),
next: next_page,
items: @items.map { |status| status.local? ? ActivityPub::TagManager.instance.uri_for(status) : status.uri }
)
@@ -52,7 +51,7 @@ class ActivityPub::ContextsController < ActivityPub::BaseController
page = ActivityPub::CollectionPresenter.new(
id: items_context_url(@conversation, page_params),
type: :unordered,
part_of: items_context_url(@conversation),
part_of: context_url(@conversation),
next: next_page,
items: @items.map { |status| status.local? ? ActivityPub::TagManager.instance.uri_for(status) : status.uri }
)

View File

@@ -0,0 +1,29 @@
# frozen_string_literal: true
class ActivityPub::FeatureAuthorizationsController < ActivityPub::BaseController
include Authorization
vary_by -> { 'Signature' if authorized_fetch_mode? }
before_action :require_account_signature!, if: :authorized_fetch_mode?
before_action :set_collection_item
def show
expires_in 30.seconds, public: true if public_fetch_mode?
render json: @collection_item, serializer: ActivityPub::FeatureAuthorizationSerializer, adapter: ActivityPub::Adapter, content_type: 'application/activity+json'
end
private
def pundit_user
signed_request_account
end
def set_collection_item
@collection_item = @account.collection_items.accepted.find(params[:id])
authorize @collection_item.collection, :show?
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
not_found
end
end

View File

@@ -0,0 +1,79 @@
# frozen_string_literal: true
class ActivityPub::FeaturedCollectionsController < ApplicationController
include SignatureAuthentication
include Authorization
include AccountOwnedConcern
PER_PAGE = 5
vary_by -> { public_fetch_mode? ? 'Accept, Accept-Language, Cookie' : 'Accept, Accept-Language, Cookie, Signature' }
before_action :check_feature_enabled
before_action :require_account_signature!, if: -> { authorized_fetch_mode? }
before_action :set_collections
skip_around_action :set_locale
skip_before_action :require_functional!, unless: :limited_federation_mode?
def index
respond_to do |format|
format.json do
expires_in(page_requested? ? 0 : 3.minutes, public: public_fetch_mode?)
render json: collection_presenter,
serializer: ActivityPub::CollectionSerializer,
adapter: ActivityPub::Adapter,
content_type: 'application/activity+json'
end
end
end
private
def set_collections
authorize @account, :index_collections?
@collections = @account.collections
.includes(:accepted_collection_items)
.page(params[:page]).per(PER_PAGE)
rescue Mastodon::NotPermittedError
not_found
end
def page_requested?
params[:page].present?
end
def next_page_url
ap_account_featured_collections_url(@account, page: @collections.next_page) if @collections.respond_to?(:next_page)
end
def prev_page_url
ap_account_featured_collections_url(@account, page: @collections.prev_page) if @collections.respond_to?(:prev_page)
end
def collection_presenter
if page_requested?
ActivityPub::CollectionPresenter.new(
id: ap_account_featured_collections_url(@account, page: params.fetch(:page, 1)),
type: :unordered,
size: @account.collections.count,
items: @collections,
part_of: ap_account_featured_collections_url(@account),
next: next_page_url,
prev: prev_page_url
)
else
ActivityPub::CollectionPresenter.new(
id: ap_account_featured_collections_url(@account),
type: :unordered,
size: @account.collections.count,
first: ap_account_featured_collections_url(@account, page: 1)
)
end
end
def check_feature_enabled
raise ActionController::RoutingError unless Mastodon::Feature.collections_enabled?
end
end

View File

@@ -3,6 +3,7 @@
class ActivityPub::InboxesController < ActivityPub::BaseController
include JsonLdHelper
before_action :skip_large_payload
before_action :skip_unknown_actor_activity
before_action :require_actor_signature!
skip_before_action :authenticate_user!
@@ -16,14 +17,18 @@ class ActivityPub::InboxesController < ActivityPub::BaseController
private
def skip_large_payload
head 413 if request.content_length > ActivityPub::Activity::MAX_JSON_SIZE
end
def skip_unknown_actor_activity
head 202 if unknown_affected_account?
end
def unknown_affected_account?
json = Oj.load(body, mode: :strict)
json = JSON.parse(body)
json.is_a?(Hash) && %w(Delete Update).include?(json['type']) && json['actor'].present? && json['actor'] == value_or_id(json['object']) && !Account.exists?(uri: json['actor'])
rescue Oj::ParseError
rescue JSON::ParserError
false
end

View File

@@ -0,0 +1,22 @@
# frozen_string_literal: true
module Admin
class CollectionsController < BaseController
before_action :set_account
before_action :set_collection, only: :show
def show
authorize @collection, :show?
end
private
def set_account
@account = Account.find(params[:account_id])
end
def set_collection
@collection = @account.collections.includes(accepted_collection_items: :account).find(params[:id])
end
end
end

View File

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

View File

@@ -5,8 +5,8 @@ class Admin::Fasp::Debug::CallbacksController < Admin::BaseController
authorize [:admin, :fasp, :provider], :update?
@callbacks = Fasp::DebugCallback
.includes(:fasp_provider)
.order(created_at: :desc)
.includes(:fasp_provider)
.order(created_at: :desc)
end
def destroy

View File

@@ -34,8 +34,11 @@ class Admin::Instances::ModerationNotesController < Admin::BaseController
end
def set_instance
domain = params[:instance_id]&.strip
@instance = Instance.find_or_initialize_by(domain: TagManager.instance.normalize_domain(domain))
@instance = Instance.find_or_initialize_by(domain: normalized_domain)
end
def normalized_domain
TagManager.instance.normalize_domain(params[:instance_id])
end
def set_instance_note

View File

@@ -55,8 +55,11 @@ module Admin
private
def set_instance
domain = params[:id]&.strip
@instance = Instance.find_or_initialize_by(domain: TagManager.instance.normalize_domain(domain))
@instance = Instance.find_or_initialize_by(domain: normalized_domain)
end
def normalized_domain
TagManager.instance.normalize_domain(params[:id])
end
def set_instances

View File

@@ -13,7 +13,7 @@ class Admin::Reports::ActionsController < Admin::BaseController
case action_from_button
when 'delete', 'mark_as_sensitive'
Admin::StatusBatchAction.new(status_batch_action_params).save!
Admin::ModerationAction.new(moderation_action_params).save!
when 'silence', 'suspend'
Admin::AccountAction.new(account_action_params).save!
else
@@ -25,9 +25,8 @@ class Admin::Reports::ActionsController < Admin::BaseController
private
def status_batch_action_params
def moderation_action_params
shared_params
.merge(status_ids: @report.status_ids)
end
def account_action_params

View File

@@ -50,7 +50,7 @@ module Admin
private
def filtered_reports
ReportFilter.new(filter_params).results.order(id: :desc).includes(:account, :target_account)
ReportFilter.new(filter_params).results.order(id: :desc).includes(:account, :target_account, :collections)
end
def filter_params
@@ -58,7 +58,7 @@ module Admin
end
def set_report
@report = Report.find(params[:id])
@report = Report.includes(collections: :accepted_collection_items).find(params[:id])
end
end
end

View File

@@ -62,7 +62,7 @@ module Admin
def resource_params
params
.expect(user_role: [:name, :color, :highlighted, :position, permissions_as_keys: []])
.expect(user_role: [:name, :color, :highlighted, :position, :require_2fa, permissions_as_keys: []])
end
end
end

View File

@@ -62,7 +62,11 @@ module Admin
end
def set_statuses
@statuses = Admin::StatusFilter.new(@account, filter_params).results.preload(:application, :preloadable_poll, :media_attachments, active_mentions: :account, reblog: [:account, :application, :preloadable_poll, :media_attachments, active_mentions: :account]).page(params[:page]).per(PER_PAGE)
@statuses = Admin::StatusFilter.new(@account, filter_params).results.preload(*preload_columns, reblog: [:account, *preload_columns]).page(params[:page]).per(PER_PAGE)
end
def preload_columns
[:application, :preloadable_poll, :media_attachments, active_mentions: :account]
end
def filter_params
@@ -78,8 +82,6 @@ module Admin
'report'
elsif params[:remove_from_report]
'remove_from_report'
elsif params[:delete]
'delete'
end
end
end

View File

@@ -47,7 +47,7 @@ class Api::Fasp::BaseController < ApplicationController
provider = nil
Linzer.verify!(request.rack_request, no_older_than: 5.minutes) do |keyid|
provider = Fasp::Provider.find(keyid)
provider = Fasp::Provider.confirmed.find(keyid)
Linzer.new_ed25519_public_key(provider.provider_public_key_pem, keyid)
end

View File

@@ -0,0 +1,26 @@
# frozen_string_literal: true
class Api::V1::Accounts::EmailSubscriptionsController < Api::BaseController
before_action :set_account
before_action :require_feature_enabled!
before_action :require_account_permissions!
def create
@account.email_subscriptions.create!(email: params[:email], locale: I18n.locale)
render_empty
end
private
def set_account
@account = Account.local.find(params[:account_id])
end
def require_feature_enabled!
head 404 unless Mastodon::Feature.email_subscriptions_enabled?
end
def require_account_permissions!
head 404 if @account.unavailable? || !@account.user_can?(:manage_email_subscriptions) || !@account.user_email_subscriptions_enabled?
end
end

View File

@@ -9,9 +9,9 @@ class Api::V1::Accounts::NotesController < Api::BaseController
def create
if params[:comment].blank?
AccountNote.find_by(account: current_account, target_account: @account)&.destroy
current_account.account_notes.find_by(target_account: @account)&.destroy
else
@note = AccountNote.find_or_initialize_by(account: current_account, target_account: @account)
@note = current_account.account_notes.find_or_initialize_by(target_account: @account)
@note.comment = params[:comment]
@note.save! if @note.changed?
end

View File

@@ -38,7 +38,7 @@ class Api::V1::AccountsController < Api::BaseController
headers.merge!(response.headers)
self.response_body = Oj.dump(response.body)
self.response_body = response.body.to_json
self.status = response.status
rescue ActiveRecord::RecordInvalid => e
render json: ValidationErrorFormatter.new(e, 'account.username': :username, 'invite_request.text': :reason).as_json, status: 422

View File

@@ -18,14 +18,14 @@ class Api::V1::BlocksController < Api::BaseController
def paginated_blocks
@paginated_blocks ||= Block.eager_load(target_account: [:account_stat, :user])
.joins(:target_account)
.merge(Account.without_suspended)
.where(account: current_account)
.paginate_by_max_id(
limit_param(DEFAULT_ACCOUNTS_LIMIT),
params[:max_id],
params[:since_id]
)
.joins(:target_account)
.merge(Account.without_suspended)
.where(account: current_account)
.paginate_by_max_id(
limit_param(DEFAULT_ACCOUNTS_LIMIT),
params[:max_id],
params[:since_id]
)
end
def next_path

View File

@@ -37,20 +37,20 @@ class Api::V1::ConversationsController < Api::BaseController
def paginated_conversations
AccountConversation.where(account: current_account)
.includes(
account: [:account_stat, user: :role],
last_status: [
:media_attachments,
:status_stat,
:tags,
{
preview_cards_status: { preview_card: { author_account: [:account_stat, user: :role] } },
active_mentions: :account,
account: [:account_stat, user: :role],
},
]
)
.to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id))
.includes(
account: [:account_stat, user: :role],
last_status: [
:media_attachments,
:status_stat,
:tags,
{
preview_cards_status: { preview_card: { author_account: [:account_stat, user: :role] } },
active_mentions: :account,
account: [:account_stat, user: :role],
},
]
)
.to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id))
end
def next_path

View File

@@ -0,0 +1,86 @@
# frozen_string_literal: true
class Api::V1::DonationCampaignsController < Api::BaseController
before_action :require_user!
STOPLIGHT_COOL_OFF_TIME = 60
STOPLIGHT_FAILURE_THRESHOLD = 10
def index
return head 204 if api_url.blank?
json = from_cache
return render json: json if json.present?
campaign = fetch_campaign
return head 204 if campaign.nil?
save_to_cache!(campaign)
render json: campaign
end
private
def api_url
Rails.configuration.x.donation_campaigns.api_url
end
def seed
@seed ||= Random.new(current_account.id).rand(100)
end
def from_cache
key = Rails.cache.read(request_key, raw: true)
return if key.blank?
campaign = Rails.cache.read("donation_campaign:#{key}", raw: true)
JSON.parse(campaign) if campaign.present?
end
def save_to_cache!(campaign)
return if campaign.blank?
Rails.cache.write_multi(
{
request_key => campaign_key(campaign),
"donation_campaign:#{campaign_key(campaign)}" => campaign.to_json,
},
expires_in: 1.hour,
raw: true
)
end
def fetch_campaign
stoplight_wrapper.run do
url = Addressable::URI.parse(api_url)
url.query_values = { platform: 'web', seed: seed, locale: locale, environment: Rails.configuration.x.donation_campaigns.environment }.compact
Request.new(:get, url.to_s).perform do |res|
return JSON.parse(res.body_with_limit) if res.code == 200
end
end
rescue *Mastodon::HTTP_CONNECTION_ERRORS, JSON::ParserError
nil
end
def stoplight_wrapper
Stoplight(
'donation_campaigns',
cool_off_time: STOPLIGHT_COOL_OFF_TIME,
threshold: STOPLIGHT_FAILURE_THRESHOLD
)
end
def request_key
"donation_campaign_request:#{seed}:#{locale}"
end
def campaign_key(campaign)
"#{campaign['id']}:#{campaign['locale']}"
end
def locale
I18n.locale.to_s
end
end

View File

@@ -0,0 +1,15 @@
# frozen_string_literal: true
class Api::V1::Instances::TermsOfServiceController < Api::V1::Instances::BaseController
before_action :cache_even_if_authenticated!
def index
@terms_of_service = TermsOfService.current || raise(ActiveRecord::RecordNotFound)
render json: @terms_of_service, serializer: REST::TermsOfServiceSerializer
end
def show
@terms_of_service = TermsOfService.published.find_by!(effective_date: params[:date])
render json: @terms_of_service, serializer: REST::TermsOfServiceSerializer
end
end

View File

@@ -1,23 +0,0 @@
# frozen_string_literal: true
class Api::V1::Instances::TermsOfServicesController < Api::V1::Instances::BaseController
before_action :set_terms_of_service
def show
cache_even_if_authenticated!
render json: @terms_of_service, serializer: REST::TermsOfServiceSerializer
end
private
def set_terms_of_service
@terms_of_service = begin
if params[:date].present?
TermsOfService.published.find_by!(effective_date: params[:date])
else
TermsOfService.current
end
end
not_found if @terms_of_service.nil?
end
end

View File

@@ -32,13 +32,7 @@ class Api::V1::MarkersController < Api::BaseController
private
def serialize_map(map)
serialized = {}
map.each_pair do |key, value|
serialized[key] = ActiveModelSerializers::SerializableResource.new(value, serializer: REST::MarkerSerializer).as_json
end
Oj.dump(serialized)
map.transform_values { |value| ActiveModelSerializers::SerializableResource.new(value, serializer: REST::MarkerSerializer) }
end
def resource_params

View File

@@ -18,14 +18,14 @@ class Api::V1::MutesController < Api::BaseController
def paginated_mutes
@paginated_mutes ||= Mute.eager_load(target_account: [:account_stat, :user])
.joins(:target_account)
.merge(Account.without_suspended)
.where(account: current_account)
.paginate_by_max_id(
limit_param(DEFAULT_ACCOUNTS_LIMIT),
params[:max_id],
params[:since_id]
)
.joins(:target_account)
.merge(Account.without_suspended)
.where(account: current_account)
.paginate_by_max_id(
limit_param(DEFAULT_ACCOUNTS_LIMIT),
params[:max_id],
params[:since_id]
)
end
def next_path

View File

@@ -47,10 +47,6 @@ class Api::V1::Peers::SearchController < Api::BaseController
end
def normalized_domain
TagManager.instance.normalize_domain(query_value)
end
def query_value
params[:q].strip
TagManager.instance.normalize_domain(params[:q])
end
end

View File

@@ -0,0 +1,43 @@
# frozen_string_literal: true
class Api::V1::ProfilesController < Api::BaseController
before_action -> { doorkeeper_authorize! :profile, :read, :'read:accounts' }, except: [:update]
before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, only: [:update]
before_action :require_user!
def show
@account = current_account
render json: @account, serializer: REST::ProfileSerializer
end
def update
@account = current_account
UpdateAccountService.new.call(@account, account_params, raise_error: true)
ActivityPub::UpdateDistributionWorker.perform_in(ActivityPub::UpdateDistributionWorker::DEBOUNCE_DELAY, @account.id)
render json: @account, serializer: REST::ProfileSerializer
rescue ActiveRecord::RecordInvalid => e
render json: ValidationErrorFormatter.new(e).as_json, status: 422
end
def account_params
params.permit(
:display_name,
:note,
:avatar,
:avatar_description,
:header,
:header_description,
:locked,
:bot,
:discoverable,
:hide_collections,
:indexable,
:show_media,
:show_media_replies,
:show_featured,
attribution_domains: [],
fields_attributes: [:name, :value]
)
end
end

View File

@@ -23,6 +23,10 @@ class Api::V1::ReportsController < Api::BaseController
end
def report_params
params.permit(:account_id, :comment, :category, :forward, forward_to_domains: [], status_ids: [], rule_ids: [])
if Mastodon::Feature.collections_enabled?
params.permit(:account_id, :comment, :category, :forward, forward_to_domains: [], status_ids: [], collection_ids: [], rule_ids: [])
else
params.permit(:account_id, :comment, :category, :forward, forward_to_domains: [], status_ids: [], rule_ids: [])
end
end
end

View File

@@ -26,20 +26,20 @@ class Api::V1::Statuses::PinsController < Api::V1::Statuses::BaseController
def distribute_add_activity!
json = ActiveModelSerializers::SerializableResource.new(
@status,
serializer: ActivityPub::AddSerializer,
serializer: ActivityPub::AddNoteSerializer,
adapter: ActivityPub::Adapter
).as_json
ActivityPub::RawDistributionWorker.perform_async(Oj.dump(json), current_account.id)
ActivityPub::RawDistributionWorker.perform_async(json.to_json, current_account.id)
end
def distribute_remove_activity!
json = ActiveModelSerializers::SerializableResource.new(
@status,
serializer: ActivityPub::RemoveSerializer,
serializer: ActivityPub::RemoveNoteSerializer,
adapter: ActivityPub::Adapter
).as_json
ActivityPub::RawDistributionWorker.perform_async(Oj.dump(json), current_account.id)
ActivityPub::RawDistributionWorker.perform_async(json.to_json, current_account.id)
end
end

View File

@@ -93,6 +93,7 @@ class Api::V1::StatusesController < Api::BaseController
application: doorkeeper_token.application,
poll: status_params[:poll],
content_type: status_params[:content_type],
local_only: status_params[:local_only],
allowed_mentions: status_params[:allowed_mentions],
idempotency: request.headers['Idempotency-Key'],
with_rate_limit: true
@@ -107,9 +108,7 @@ class Api::V1::StatusesController < Api::BaseController
@status = Status.where(account: current_account).find(params[:id])
authorize @status, :update?
UpdateStatusService.new.call(
@status,
current_account.id,
update_options = {
text: status_params[:status],
media_ids: status_params[:media_ids],
media_attributes: status_params[:media_attributes],
@@ -117,9 +116,12 @@ class Api::V1::StatusesController < Api::BaseController
language: status_params[:language],
spoiler_text: status_params[:spoiler_text],
poll: status_params[:poll],
quote_approval_policy: quote_approval_policy,
content_type: status_params[:content_type]
)
content_type: status_params[:content_type],
}
update_options[:quote_approval_policy] = quote_approval_policy if status_params[:quote_approval_policy].present?
UpdateStatusService.new.call(@status, current_account.id, update_options)
render json: @status, serializer: REST::StatusSerializer
end
@@ -128,6 +130,8 @@ class Api::V1::StatusesController < Api::BaseController
@status = Status.where(account: current_account).find(params[:id])
authorize @status, :destroy?
# JSON is generated before `discard_with_reblogs` in order to have the proper URL
# for media attachments, as it would otherwise redirect to the media proxy
json = render_to_body json: @status, serializer: REST::StatusSerializer, source_requested: true
@status.discard_with_reblogs
@@ -191,6 +195,7 @@ class Api::V1::StatusesController < Api::BaseController
:language,
:scheduled_at,
:content_type,
:local_only,
allowed_mentions: [],
media_ids: [],
media_attributes: [

View File

@@ -39,6 +39,6 @@ class Api::V1::TagsController < Api::BaseController
def set_or_create_tag
return not_found unless Tag::HASHTAG_NAME_RE.match?(params[:id])
@tag = Tag.find_normalized(params[:id]) || Tag.new(name: Tag.normalize(params[:id]), display_name: params[:id])
@tag = Tag.find_normalized(params[:id]) || Tag.new(name: params[:id], display_name: params[:id])
end
end

View File

@@ -11,7 +11,7 @@ class Api::V1Alpha::CollectionItemsController < Api::BaseController
before_action :set_collection
before_action :set_account, only: [:create]
before_action :set_collection_item, only: [:destroy]
before_action :set_collection_item, only: [:destroy, :revoke]
after_action :verify_authorized
@@ -21,13 +21,21 @@ class Api::V1Alpha::CollectionItemsController < Api::BaseController
@item = AddAccountToCollectionService.new.call(@collection, @account)
render json: @item, serializer: REST::CollectionItemSerializer
render json: @item, serializer: REST::CollectionItemSerializer, adapter: :json
end
def destroy
authorize @collection, :update?
@collection_item.destroy
DeleteCollectionItemService.new.call(@collection_item)
head 200
end
def revoke
authorize @collection_item, :revoke?
RevokeCollectionItemService.new.call(@collection_item)
head 200
end

View File

@@ -26,16 +26,18 @@ class Api::V1Alpha::CollectionsController < Api::BaseController
def index
cache_if_unauthenticated!
authorize Collection, :index?
authorize @account, :index_collections?
render json: @collections, each_serializer: REST::BaseCollectionSerializer
render json: @collections, each_serializer: REST::CollectionSerializer, adapter: :json
rescue Mastodon::NotPermittedError
render json: { collections: [] }
end
def show
cache_if_unauthenticated!
authorize @collection, :show?
render json: @collection, serializer: REST::CollectionSerializer
render json: @collection, serializer: REST::CollectionWithAccountsSerializer
end
def create
@@ -43,21 +45,21 @@ class Api::V1Alpha::CollectionsController < Api::BaseController
@collection = CreateCollectionService.new.call(collection_creation_params, current_user.account)
render json: @collection, serializer: REST::CollectionSerializer
render json: @collection, serializer: REST::CollectionSerializer, adapter: :json
end
def update
authorize @collection, :update?
@collection.update!(collection_update_params) # TODO: Create a service for this to federate changes
UpdateCollectionService.new.call(@collection, collection_update_params)
render json: @collection, serializer: REST::CollectionSerializer
render json: @collection, serializer: REST::CollectionSerializer, adapter: :json
end
def destroy
authorize @collection, :destroy?
@collection.destroy
DeleteCollectionService.new.call(@collection)
head 200
end
@@ -70,10 +72,11 @@ class Api::V1Alpha::CollectionsController < Api::BaseController
def set_collections
@collections = @account.collections
.with_tag
.order(created_at: :desc)
.offset(offset_param)
.limit(limit_param(DEFAULT_COLLECTIONS_LIMIT))
.with_tag
.order(created_at: :desc)
.offset(offset_param)
.limit(limit_param(DEFAULT_COLLECTIONS_LIMIT))
@collections = @collections.discoverable unless @account == current_account
end
def set_collection
@@ -81,11 +84,11 @@ class Api::V1Alpha::CollectionsController < Api::BaseController
end
def collection_creation_params
params.permit(:name, :description, :sensitive, :discoverable, :tag_name, account_ids: [])
params.permit(:name, :description, :language, :sensitive, :discoverable, :tag_name, account_ids: [])
end
def collection_update_params
params.permit(:name, :description, :sensitive, :discoverable, :tag_name)
params.permit(:name, :description, :language, :sensitive, :discoverable, :tag_name)
end
def check_feature_enabled

View File

@@ -62,7 +62,7 @@ class Api::Web::PushSubscriptionsController < Api::Web::BaseController
end
def set_push_subscription
@push_subscription = ::Web::PushSubscription.find(params[:id])
@push_subscription = ::Web::PushSubscription.where(user_id: active_session.user_id).find(params[:id])
end
def subscription_params

View File

@@ -9,39 +9,21 @@ class ApplicationController < ActionController::Base
include UserTrackingConcern
include SessionTrackingConcern
include CacheConcern
include ErrorResponses
include PreloadingConcern
include DomainControlHelper
include ThemingConcern
include DatabaseHelper
include AuthorizedFetchHelper
include SelfDestructHelper
helper_method :current_account
helper_method :current_session
helper_method :current_flavour
helper_method :current_skin
helper_method :current_theme
helper_method :single_user_mode?
helper_method :use_seamless_external_login?
helper_method :sso_account_settings
helper_method :limited_federation_mode?
helper_method :skip_csrf_meta_tags?
rescue_from ActionController::ParameterMissing, Paperclip::AdapterRegistry::NoHandlerError, with: :bad_request
rescue_from Mastodon::NotPermittedError, with: :forbidden
rescue_from ActionController::RoutingError, ActiveRecord::RecordNotFound, with: :not_found
rescue_from ActionController::UnknownFormat, with: :not_acceptable
rescue_from ActionController::InvalidAuthenticityToken, with: :unprocessable_content
rescue_from Mastodon::RateLimitExceededError, with: :too_many_requests
rescue_from(*Mastodon::HTTP_CONNECTION_ERRORS, with: :internal_server_error)
rescue_from Mastodon::RaceConditionError, Stoplight::Error::RedLight, ActiveRecord::SerializationFailure, with: :service_unavailable
rescue_from Seahorse::Client::NetworkingError do |e|
Rails.logger.warn "Storage server error: #{e}"
service_unavailable
end
before_action :check_self_destruct!
before_action :store_referrer, except: :raise_not_found, if: :devise_controller?
@@ -65,19 +47,25 @@ class ApplicationController < ActionController::Base
return if request.referer.blank?
redirect_uri = URI(request.referer)
return if redirect_uri.path.start_with?('/auth')
return if redirect_uri.path.start_with?('/auth', '/settings/two_factor_authentication', '/settings/otp_authentication')
stored_url = redirect_uri.to_s if redirect_uri.host == request.host && redirect_uri.port == request.port
store_location_for(:user, stored_url)
end
def mfa_setup_path(path_params = {})
settings_two_factor_authentication_methods_path(path_params)
end
def require_functional!
return if current_user.functional?
respond_to do |format|
format.any do
if current_user.confirmed?
if current_user.missing_2fa?
redirect_to mfa_setup_path
elsif current_user.confirmed?
redirect_to edit_user_registration_path
else
redirect_to auth_setup_path
@@ -89,6 +77,8 @@ class ApplicationController < ActionController::Base
render json: { error: 'Your login is missing a confirmed e-mail address' }, status: 403
elsif !current_user.approved?
render json: { error: 'Your login is currently pending approval' }, status: 403
elsif current_user.missing_2fa?
render json: { error: 'Your account requires two-factor authentication' }, status: 403
elsif !current_user.functional?
render json: { error: 'Your login is currently disabled' }, status: 403
end
@@ -114,42 +104,6 @@ class ApplicationController < ActionController::Base
ActiveModel::Type::Boolean.new.cast(params[key])
end
def forbidden
respond_with_error(403)
end
def not_found
respond_with_error(404)
end
def gone
respond_with_error(410)
end
def unprocessable_content
respond_with_error(422)
end
def not_acceptable
respond_with_error(406)
end
def bad_request
respond_with_error(400)
end
def internal_server_error
respond_with_error(500)
end
def service_unavailable
respond_with_error(503)
end
def too_many_requests
respond_with_error(429)
end
def single_user_mode?
@single_user_mode ||= Rails.configuration.x.single_user_mode && Account.without_internal.exists?
end
@@ -174,13 +128,6 @@ class ApplicationController < ActionController::Base
@current_session = SessionActivation.find_by(session_id: cookies.signed['_session_id']) if cookies.signed['_session_id'].present?
end
def respond_with_error(code)
respond_to do |format|
format.any { render "errors/#{code}", layout: 'error', status: code, formats: [:html] }
format.json { render json: { error: Rack::Utils::HTTP_STATUS_CODES[code] }, status: code }
end
end
def check_self_destruct!
return unless self_destruct?

View File

@@ -130,14 +130,19 @@ class Auth::RegistrationsController < Devise::RegistrationsController
end
def require_rules_acceptance!
return if @rules.empty? || (session[:accept_token].present? && params[:accept] == session[:accept_token])
return if @rules.empty? || validated_accept_token?
@accept_token = session[:accept_token] = SecureRandom.hex
@invite_code = invite_code
@invite_code = invite_code
@rule_translations = @rules.map { |rule| rule.translation_for(I18n.locale) }
render :rules
end
def validated_accept_token?
session[:accept_token].present? && params[:accept] == session[:accept_token]
end
def is_flashing_format? # rubocop:disable Naming/PredicatePrefix
if params[:action] == 'create'
false # Disable flash messages for sign-up

View File

@@ -0,0 +1,24 @@
# frozen_string_literal: true
class Auth::Sessions::SecurityKeyOptionsController < ApplicationController
skip_before_action :check_self_destruct!
skip_before_action :require_functional!
skip_before_action :update_user_sign_in
def show
user = User.find_by(id: session[:attempt_user_id])
if user&.webauthn_enabled?
options_for_get = WebAuthn::Credential.options_for_get(
allow: user.webauthn_credentials.pluck(:external_id),
user_verification: 'discouraged'
)
session[:webauthn_challenge] = options_for_get.challenge
render json: options_for_get, status: 200
else
render json: { error: t('webauthn_credentials.not_enabled') }, status: 401
end
end
end

View File

@@ -38,23 +38,6 @@ class Auth::SessionsController < Devise::SessionsController
flash.delete(:notice)
end
def webauthn_options
user = User.find_by(id: session[:attempt_user_id])
if user&.webauthn_enabled?
options_for_get = WebAuthn::Credential.options_for_get(
allow: user.webauthn_credentials.pluck(:external_id),
user_verification: 'discouraged'
)
session[:webauthn_challenge] = options_for_get.challenge
render json: options_for_get, status: 200
else
render json: { error: t('webauthn_credentials.not_enabled') }, status: 401
end
end
protected
def find_user
@@ -197,14 +180,14 @@ class Auth::SessionsController < Devise::SessionsController
"2fa_auth_attempts:#{user.id}:#{Time.now.utc.hour}"
end
def respond_to_on_destroy
def respond_to_on_destroy(**)
respond_to do |format|
format.json do
render json: {
redirect_to: after_sign_out_path_for(resource_name),
}, status: 200
end
format.all { super }
format.all { super(**) }
end
end
end

View File

@@ -0,0 +1,42 @@
# frozen_string_literal: true
class CollectionItemsController < ApplicationController
include SignatureAuthentication
include Authorization
include AccountOwnedConcern
vary_by -> { public_fetch_mode? ? 'Accept, Accept-Language, Cookie' : 'Accept, Accept-Language, Cookie, Signature' }
before_action :check_feature_enabled
before_action :require_account_signature!, if: -> { authorized_fetch_mode? }
before_action :set_collection_item
skip_around_action :set_locale
skip_before_action :require_functional!, unless: :limited_federation_mode?
def show
respond_to do |format|
format.json do
expires_in(3.minutes, public: public_fetch_mode?)
render json: @collection_item,
serializer: ActivityPub::FeaturedItemSerializer,
adapter: ActivityPub::Adapter,
content_type: 'application/activity+json'
end
end
end
private
def set_collection_item
@collection_item = @account.curated_collection_items.find(params[:id])
authorize @collection_item.collection, :show?
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
not_found
end
def check_feature_enabled
raise ActionController::RoutingError unless Mastodon::Feature.collections_enabled?
end
end

View File

@@ -0,0 +1,46 @@
# frozen_string_literal: true
class CollectionsController < ApplicationController
include WebAppControllerConcern
include SignatureAuthentication
include Authorization
include AccountOwnedConcern
vary_by -> { public_fetch_mode? ? 'Accept, Accept-Language, Cookie' : 'Accept, Accept-Language, Cookie, Signature' }
before_action :check_feature_enabled
before_action :require_account_signature!, only: :show, if: -> { request.format == :json && authorized_fetch_mode? }
before_action :set_collection
skip_around_action :set_locale, if: -> { request.format == :json }
skip_before_action :require_functional!, only: :show, unless: :limited_federation_mode?
def show
respond_to do |format|
# TODO: format.html
format.json do
expires_in expiration_duration, public: true if public_fetch_mode?
render_with_cache json: @collection, content_type: 'application/activity+json', serializer: ActivityPub::FeaturedCollectionSerializer, adapter: ActivityPub::Adapter
end
end
end
private
def set_collection
@collection = @account.collections.find(params[:id])
authorize @collection, :show?
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
not_found
end
def expiration_duration
recently_updated = @collection.updated_at > 15.minutes.ago
recently_updated ? 30.seconds : 5.minutes
end
def check_feature_enabled
raise ActionController::RoutingError unless Mastodon::Feature.collections_enabled?
end
end

View File

@@ -4,10 +4,8 @@ module AccountableConcern
extend ActiveSupport::Concern
def log_action(action, target)
Admin::ActionLog.create(
account: current_account,
action: action,
target: target
)
current_account
.action_logs
.create(action:, target:)
end
end

View File

@@ -19,7 +19,7 @@ module CacheConcern
# from being used as cache keys, while allowing to `Vary` on them (to not serve
# anonymous cached data to authenticated requests when authentication matters)
def enforce_cache_control!
vary = response.headers['Vary']&.split&.map { |x| x.strip.downcase }
vary = response.headers['Vary'].to_s.split(',').map { |x| x.strip.downcase }.reject(&:empty?)
return unless vary.present? && %w(cookie authorization signature).any? { |header| vary.include?(header) && request.headers[header].present? }
response.cache_control.replace(private: true, no_store: true)

View File

@@ -42,7 +42,7 @@ module ChallengableConcern
end
def render_challenge
render 'auth/challenges/new', layout: 'auth'
render 'auth/challenges/new', layout: params[:oauth] ? 'modal' : 'auth'
end
def challenge_passed?

View File

@@ -0,0 +1,68 @@
# frozen_string_literal: true
module ErrorResponses
extend ActiveSupport::Concern
included do
rescue_from ActionController::InvalidAuthenticityToken, with: :unprocessable_content
rescue_from ActionController::ParameterMissing, Paperclip::AdapterRegistry::NoHandlerError, with: :bad_request
rescue_from ActionController::RoutingError, ActiveRecord::RecordNotFound, with: :not_found
rescue_from ActionController::UnknownFormat, with: :not_acceptable
rescue_from Mastodon::NotPermittedError, with: :forbidden
rescue_from Mastodon::RaceConditionError, Stoplight::Error::RedLight, ActiveRecord::SerializationFailure, with: :service_unavailable
rescue_from Mastodon::RateLimitExceededError, with: :too_many_requests
rescue_from(*Mastodon::HTTP_CONNECTION_ERRORS, with: :internal_server_error)
rescue_from Seahorse::Client::NetworkingError do |e|
Rails.logger.warn "Storage server error: #{e}"
service_unavailable
end
end
protected
def bad_request
respond_with_error(400)
end
def forbidden
respond_with_error(403)
end
def gone
respond_with_error(410)
end
def internal_server_error
respond_with_error(500)
end
def not_acceptable
respond_with_error(406)
end
def not_found
respond_with_error(404)
end
def service_unavailable
respond_with_error(503)
end
def too_many_requests
respond_with_error(429)
end
def unprocessable_content
respond_with_error(422)
end
private
def respond_with_error(code)
respond_to do |format|
format.any { render "errors/#{code}", layout: 'error', formats: [:html], status: code }
format.json { render json: { error: Rack::Utils::HTTP_STATUS_CODES[code] }, status: code }
end
end
end

View File

@@ -53,19 +53,21 @@ module SignatureVerification
raise Mastodon::SignatureVerificationError, 'Request not signed' unless signed_request?
actor = actor_from_key_id
keypair = keypair_from_key_id
raise Mastodon::SignatureVerificationError, "Public key not found for key #{signature_key_id}" if actor.nil?
raise Mastodon::SignatureVerificationError, "Public key not found for key #{signature_key_id}" if keypair.nil?
return (@signed_request_actor = actor) if signed_request.verified?(actor)
check_keypair_validity!(keypair)
return (@signed_request_actor = keypair.actor) if signed_request.verified?(keypair)
actor = stoplight_wrapper.run { actor_refresh_key!(actor) }
keypair = stoplight_wrapper.run { keypair_refresh_key!(keypair) }
raise Mastodon::SignatureVerificationError, "Could not refresh public key #{signature_key_id}" if actor.nil?
raise Mastodon::SignatureVerificationError, "Could not refresh public key #{signature_key_id}" if keypair.nil?
return (@signed_request_actor = actor) if signed_request.verified?(actor)
check_keypair_validity!(keypair)
return (@signed_request_actor = keypair.actor) if signed_request.verified?(keypair)
fail_with! "Verification failed for #{actor.to_log_human_identifier} #{actor.uri}"
fail_with! "Verification failed for #{keypair.actor.to_log_human_identifier} #{keypair.actor.uri} #{keypair.uri}"
rescue Mastodon::MalformedHeaderError => e
@signature_verification_failure_code = 400
fail_with! e.message
@@ -89,7 +91,7 @@ module SignatureVerification
@signed_request_actor = nil
end
def actor_from_key_id
def keypair_from_key_id
key_id = signed_request.key_id
domain = key_id.start_with?('acct:') ? key_id.split('@').last : key_id
@@ -101,9 +103,10 @@ module SignatureVerification
if key_id.start_with?('acct:')
stoplight_wrapper.run { 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_wrapper.run { ActivityPub::FetchRemoteKeyService.new.call(key_id, suppress_errors: false) }
account
keypair = Keypair.from_keyid(key_id)
return keypair if keypair.present?
stoplight_wrapper.run { ActivityPub::FetchRemoteKeyService.new.call(key_id, suppress_errors: false) }
end
rescue Mastodon::PrivateNetworkAddressError => e
raise Mastodon::SignatureVerificationError, "Requests to private network addresses are disallowed (tried to query #{e.host})"
@@ -120,14 +123,20 @@ module SignatureVerification
)
end
def actor_refresh_key!(actor)
return if actor.local? || !actor.activitypub?
return actor.refresh! if actor.respond_to?(:refresh!) && actor.possibly_stale?
def keypair_refresh_key!(keypair)
# TODO: this currently only is concerned with refreshing the actor and returning the legacy key, this needs to be reworked
return if keypair.actor.local? || !keypair.actor.activitypub?
return keypair.actor.refresh! if keypair.actor.respond_to?(:refresh!) && keypair.actor.possibly_stale?
ActivityPub::FetchRemoteActorService.new.call(actor.uri, only_key: true, suppress_errors: false)
Keypair.from_legacy_account(ActivityPub::FetchRemoteActorService.new.call(keypair.actor.uri, only_key: true, suppress_errors: false))
rescue Mastodon::PrivateNetworkAddressError => e
raise Mastodon::SignatureVerificationError, "Requests to private network addresses are disallowed (tried to query #{e.host})"
rescue Mastodon::HostValidationError, ActivityPub::FetchRemoteActorService::Error, Webfinger::Error => e
raise Mastodon::SignatureVerificationError, e.message
end
def check_keypair_validity!(keypair)
raise Mastodon::SignatureVerification, "Key #{signature_key_id} is revoked" if keypair.revoked?
raise Mastodon::SignatureVerification, "Key #{signature_key_id} has expired" if keypair.expired?
end
end

View File

@@ -1,24 +0,0 @@
# frozen_string_literal: true
module ThemingConcern
extend ActiveSupport::Concern
private
def current_flavour
@current_flavour ||= [current_user&.setting_flavour, Setting.flavour, 'glitch', 'vanilla'].find { |flavour| Themes.instance.flavours.include?(flavour) }
end
def current_skin
@current_skin ||= begin
skins = Themes.instance.skins_for(current_flavour)
[current_user&.setting_skin, Setting.skin, 'system', 'default'].find { |skin| skins.include?(skin) }
end
end
def current_theme
# NOTE: this is slightly different from upstream, as it's a derived value used
# for the sole purpose of pointing to the appropriate stylesheet pack
[current_flavour, current_skin]
end
end

View File

@@ -0,0 +1,17 @@
# frozen_string_literal: true
class EmailSubscriptions::ConfirmationsController < ApplicationController
layout 'auth'
before_action :set_email_subscription
def show
@email_subscription.confirm! unless @email_subscription.confirmed?
end
private
def set_email_subscription
@email_subscription = EmailSubscription.find_by!(confirmation_token: params[:confirmation_token])
end
end

View File

@@ -1,39 +0,0 @@
# frozen_string_literal: true
class MailSubscriptionsController < ApplicationController
layout 'auth'
skip_before_action :require_functional!
before_action :set_user
before_action :set_type
protect_from_forgery with: :null_session
def show; end
def create
@user.settings[email_type_from_param] = false
@user.save!
end
private
def set_user
@user = GlobalID::Locator.locate_signed(params[:token], for: 'unsubscribe')
not_found unless @user
end
def set_type
@type = email_type_from_param
end
def email_type_from_param
case params[:type]
when 'follow', 'reblog', 'favourite', 'mention', 'follow_request'
"notification_emails.#{params[:type]}"
else
not_found
end
end
end

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