Compare commits

...

1869 Commits

Author SHA1 Message Date
diondiondion
15a7507a09 Use radio buttons for emoji style preference (#39126) 2026-05-21 16:55:28 +00:00
Claire
cdf721a273 Fix remote statuses with large media descriptions being rejected (#39135) 2026-05-21 15:46:10 +00:00
Echo
cafe7ea35c Use display name component for empty message (#39131) 2026-05-21 13:59:02 +00:00
David Roetzel
e18ca373eb Revert "Add partial accounts to collections endpoint (#38919)" (#39128) 2026-05-21 13:45:09 +00:00
diondiondion
e54f927149 Accessibility: Add skip link & landmark regions to settings (#39129) 2026-05-21 13:41:14 +00:00
Echo
6735902c1a Fixes collection notification urls (#39127) 2026-05-21 13:17:35 +00:00
renovate[bot]
dc3ffac4a2 Update dependency lint-staged to v17 (#38917)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-21 12:28:52 +00:00
David Roetzel
fe885d5788 Remove superfluous comment (#39123) 2026-05-21 12:10:31 +00:00
Echo
adfe7242f7 Updates vagrant to Node v24 (#39124) 2026-05-21 12:09:08 +00:00
David Roetzel
dfcfef38af Update to ruby 4.0.5 (#39099) 2026-05-21 11:45:36 +00:00
Matt Jankowski
fbc116ef90 Drop support for EOL node version 20 (#38926) 2026-05-21 07:41:52 +00:00
github-actions[bot]
6b5e18fb1d New Crowdin Translations (automated) (#39095)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-05-21 07:37:39 +00:00
diondiondion
d39f7bc72f Accessibility: Add visible focus outlines to emoji/language search fields (#39120) 2026-05-21 07:24:55 +00:00
diondiondion
e68c1c824a Accessibility: Add visible focus outlines to main search & composer fields (#39111) 2026-05-21 06:41:34 +00:00
Eugen Rochko
076c8ec51e Refactor server reducer into TypeScript (#39089) 2026-05-20 14:06:38 +00:00
Claire
f5b57e8ba7 Bump version to v4.5.10 (#39104) 2026-05-20 13:20:08 +00:00
Claire
0786c1e57a Merge commit from fork 2026-05-20 14:38:24 +02:00
Claire
ec2a99341c Merge commit from fork
* Refactor `PrivateAddressCheck`

Also ensures IPv4-mapped IPv6 addresses get properly checked no matter the version of `ipaddr`.

* Add some missing IPv6 ranges from `PrivateAddressCheck`
2026-05-20 14:34:32 +02:00
diondiondion
6e7e8de343 Allow adding an account to a collection directly from the profile page (#39080) 2026-05-20 11:29:41 +00:00
diondiondion
a444a0b572 Accessibility: Add landmark elements to login/sign-up pages (#39098) 2026-05-20 11:28:37 +00:00
Claire
6f8558a6b9 Fix Request error when issuing a request which host is an IP address (#39030) 2026-05-20 09:04:50 +00:00
David Roetzel
22203f8aeb Improve collection item verification (#39096) 2026-05-20 07:55:17 +00:00
Claire
f28715d370 Fix custom emoji selection (#39088) 2026-05-20 07:23:29 +00:00
Claire
fcf012c602 Update browserslists target (#39076) 2026-05-19 16:21:18 +00:00
Echo
dee1dc41aa Include boosts to restore pinned ordering (#39084) 2026-05-19 15:15:36 +00:00
diondiondion
655de32990 Ensure quote posts have no collection previews (#39082) 2026-05-19 14:14:25 +00:00
Echo
99db6a1910 Trigger initial field flow recalculation (#39079) 2026-05-19 12:58:46 +00:00
Echo
d5a7b383fa Autosuggest emojis rendering fix (#39077) 2026-05-19 12:22:52 +00:00
Echo
34c91555ae Refactor emoji search (#39008) 2026-05-19 10:47:45 +00:00
renovate[bot]
bd77f2e86d Update dependency typescript to v6.0.3 (#39060)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-19 08:07:01 +00:00
renovate[bot]
de7282d1cd Update opentelemetry-ruby (non-major) (#39021)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-19 08:06:10 +00:00
renovate[bot]
7f5b16a6ad Update dependency @vitejs/plugin-react to v6.0.2 (#39041)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-19 07:52:11 +00:00
renovate[bot]
e3f81c7368 Update dependency @vitejs/plugin-legacy to v8.0.2 (#39039)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-19 07:52:07 +00:00
renovate[bot]
b36c121a53 Update github/codeql-action digest to 9e0d7b8 (#38981)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-19 07:18:08 +00:00
Tan, Kian-ting
b3992e62ed fix nan-tw not listed in SUPPORTED_LOCALES (#37721)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2026-05-19 07:16:50 +00:00
Matt Jankowski
1232b55211 Use mime type symbol to set content_type for custom css response (#37845) 2026-05-19 07:16:24 +00:00
Matt Jankowski
5f33cf0b0a Extract api/v1/statuses#context to standalone controller (#38348) 2026-05-19 07:15:35 +00:00
Matt Jankowski
c3afdb760c Remove references to deleted lint config files (#39033) 2026-05-19 07:11:43 +00:00
renovate[bot]
40f5533990 Update peter-evans/create-pull-request digest to 5f6978f (#38982)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-19 07:07:26 +00:00
github-actions[bot]
eec97e387a New Crowdin Translations (automated) (#39075)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-05-19 07:00:03 +00:00
renovate[bot]
eea90c205a Update DefinitelyTyped types (non-major) (#39059)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-19 06:53:52 +00:00
renovate[bot]
7592813e15 Update dependency postcss-preset-env to v11.3.0 (#39028)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-19 06:51:14 +00:00
renovate[bot]
f0204f3e62 Update dependency vite to v8.0.13 (#38985)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-19 06:50:28 +00:00
renovate[bot]
01434ad4b6 Update dependency ox to v2.14.26 (#38974)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-19 06:44:57 +00:00
diondiondion
c26003af21 Allow users to change how accounts are sorted when viewing a collection (#39073) 2026-05-18 16:48:40 +00:00
Pia B.
07a05e1edf Add batch remove for collections in reports (#39020) 2026-05-18 14:53:40 +00:00
Matt Jankowski
2402730083 Remove unused bin/retry script (#39071) 2026-05-18 14:43:55 +00:00
diondiondion
28ae61f34d Unify compact button size between variants (#39070) 2026-05-18 14:33:23 +00:00
diondiondion
dcb6dbbc86 Update content & placement of "sensitive content" warning on collection page (#39069) 2026-05-18 13:08:41 +00:00
Claire
99b72f60ad Nudge users to turn on discoverable when viewing the empty list of collections they are in (#39029)
Co-authored-by: diondiondion <mail@diondiondion.com>
2026-05-18 12:11:14 +00:00
renovate[bot]
19914e9ef6 Update dependency axios to v1.16.1 (#39031)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-18 12:10:48 +00:00
renovate[bot]
a05d2d7ee2 Update formatjs monorepo (#39013)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-18 11:32:04 +00:00
renovate[bot]
19b19ad8c2 Update dependency ws to v8.20.1 (#39018)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-18 10:31:45 +00:00
renovate[bot]
8f47470853 Update dependency aws-sdk-s3 to v1.222.0 (#39036)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-18 10:20:46 +00:00
Matt Jankowski
75024a1778 Use ruby version 4.0.4 (#39016) 2026-05-18 10:08:22 +00:00
David Roetzel
db304735bf Temporary tweak to account background refresh (#39062) 2026-05-18 10:04:28 +00:00
Shlee
bb94f91f86 Fix accounts header banner grayscale (#39042) 2026-05-18 08:46:49 +00:00
Echo
cdf48e806d Fixes bio spacing when there aren't paragraph tags (#39055) 2026-05-18 08:45:43 +00:00
renovate[bot]
b946b8679d Update dependency strong_migrations to v2.8.0 (#39040)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-18 07:26:23 +00:00
github-actions[bot]
3294b5777f New Crowdin Translations (automated) (#39037)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-05-18 07:26:12 +00:00
renovate[bot]
f095346f8f Update dependency sidekiq to v8.1.5 (#39032)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-18 07:19:53 +00:00
renovate[bot]
d70c807a76 Update dependency aws-sdk-core to v3.247.0 (#39035)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-18 07:19:28 +00:00
Nicholas La Roux
630ad9fd49 Add libheif dependencies to setup-ruby action to unbreak media_attachment_spec.rb on latest pre-release yet rolled out runner image (#39052) 2026-05-18 06:23:20 +00:00
David Roetzel
8bbde181db Use the same condition for stale refresh (#39026) 2026-05-13 14:57:25 +00:00
Matt Jankowski
13fbf00a97 Update codecov-action to v6 (#39019) 2026-05-13 14:48:51 +00:00
Matt Jankowski
0ef5dca3c8 Remove flatware config block, re-extract simplecov config to standalone file (#39017) 2026-05-13 14:46:46 +00:00
github-actions[bot]
771fdcbb9f New Crowdin Translations (automated) (#39024)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-05-13 09:08:11 +00:00
Echo
758db36ec7 Refactor account header banners (#38921) 2026-05-13 08:38:17 +00:00
Pia B.
bbb3392dbe add collections icon to admin report interface (#39009) 2026-05-12 17:46:24 +00:00
Michael Stanclift
cb5c5432b3 Narrow scope of Docker build cache in Github workflows (#39014) 2026-05-12 16:16:55 +00:00
Pia B.
7c05f56fe8 Add batch actions to collections and possibility to report multiple collections (#38991) 2026-05-12 16:13:01 +00:00
Michael Stanclift
d2f640272f Prepare Dockerfile for Node 26 (#38943) 2026-05-12 15:22:38 +00:00
renovate[bot]
2f1bbe051c Update dependency sidekiq to v8.1.4 (#38953)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-12 13:20:47 +00:00
Matt Jankowski
a547dfff37 Move flatware setup into rails_helper (#38944) 2026-05-12 13:12:49 +00:00
github-actions[bot]
735a00d741 New Crowdin Translations (automated) (#39000)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-05-12 07:54:35 +00:00
Pia B.
a6a8a37ae1 add raketasks to generate collections for testing (#38986) 2026-05-11 15:17:00 +00:00
Echo
82ce9367c3 Fixes line spacing in bio (#38988) 2026-05-11 11:13:37 +00:00
github-actions[bot]
e081d5936c New Crowdin Translations (automated) (#38952)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-05-11 07:02:39 +00:00
renovate[bot]
c3a1e04692 Update dorny/paths-filter digest to d1c1ffe (#38886)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-11 06:47:22 +00:00
renovate[bot]
817a0a6764 Update dependency aws-sdk-s3 to v1.221.0 (#38928)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-11 06:46:53 +00:00
renovate[bot]
c45287c72d Update dependency vite to v8.0.11 (#38931)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-11 06:46:36 +00:00
renovate[bot]
2a890822e3 Update dependency hiredis-client to v0.29.0 (#38958)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-11 06:22:19 +00:00
diondiondion
2e7df27180 Make search field and tabs sticky on search results page (#38968) 2026-05-11 06:21:51 +00:00
renovate[bot]
8e03c9c1fc Update dependency devise to v5.0.4 [SECURITY] (#38969)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-11 06:21:03 +00:00
David Roetzel
b1f7c9641f Fix updating collection items when position is unknown (#38962) 2026-05-11 06:08:44 +00:00
diondiondion
e7ed8bb682 Indent collection preview cards when displayed in notifications (#38957) 2026-05-10 08:31:12 +00:00
diondiondion
dcc26c1b24 Stylelint: Allow leading underscore in CSS variable names (#38966) 2026-05-08 14:24:02 +00:00
Echo
8d6406f561 Remove legacy emojify function (#38965) 2026-05-08 14:05:31 +00:00
diondiondion
2543425e04 New profile: Fix link colors in bio and display name overflow (#38964) 2026-05-08 13:30:28 +00:00
diondiondion
cf7a092053 Improve layout and spacing of number fields (#38963) 2026-05-08 13:30:20 +00:00
diondiondion
86e4ecfa20 Add language to collection payload (#38961) 2026-05-08 09:52:09 +00:00
diondiondion
658ad9f57e Fix crash when rendering remote post with collection card (#38959) 2026-05-08 09:22:28 +00:00
diondiondion
b71333921b Fix text overflow issues in list item component (#38954) 2026-05-08 08:34:55 +00:00
Shlee
9ff094b62e Fix #38946 (#38951) 2026-05-08 06:44:28 +00:00
Claire
b2aa476abb Redirect with interstitial when trying to view a remote collection while logged out (#38941) 2026-05-07 16:04:26 +00:00
Echo
496d41cdce Fix fields not having links (#38945) 2026-05-07 15:54:19 +00:00
diondiondion
674e2685be Fix "New collection" link appearing on other accounts' profiles (#38942) 2026-05-07 14:49:31 +00:00
Claire
fcd56d6732 Fix type of interactingObject, interactionTarget and add missing QuoteAuthorization (#38940) 2026-05-07 14:47:19 +00:00
diondiondion
53d0499254 Add label to "Why do you want to join" field during sign-up (#38936) 2026-05-07 11:34:54 +00:00
Trivikram Kamat
27e90864ac Globally install corepack (#34406) 2026-05-07 10:43:15 +00:00
diondiondion
9c8e1855a5 Fix collection sharing/link copying using the local/relative collection URL (#38935) 2026-05-07 10:27:24 +00:00
David Roetzel
11803e3d04 Relax uniqueness constraint to allow nil (#38934) 2026-05-07 10:08:50 +00:00
Echo
c47922602f React Strict Mode (#38895) 2026-05-07 10:03:08 +00:00
diondiondion
60a437e045 Show "Follow" button next to accounts in a collection when logged out (#38933) 2026-05-07 09:51:12 +00:00
Echo
f24f98ce40 Profile: Remove old classes (#38920) 2026-05-07 09:41:03 +00:00
diondiondion
2fed2edd5e Hide "Follows you" badge when viewing your own list of followers (#38932) 2026-05-07 09:34:20 +00:00
github-actions[bot]
92c9fda9e6 New Crowdin Translations (automated) (#38930)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-05-07 09:26:43 +00:00
Echo
d0c8eb2f1b Swap from React Helmet to Unhead (#38896) 2026-05-07 09:09:27 +00:00
Claire
90c812ed16 Add explicit dependency to ipaddr (#38925) 2026-05-07 09:04:04 +00:00
Pia B.
1a2038775c Add ability to search email blocks by domain (#38923) 2026-05-06 15:54:12 +00:00
Matt Jankowski
65b7ddb3e8 Add failing service case to remote account refresh worker spec (#38922) 2026-05-06 15:10:12 +00:00
David Roetzel
f6f45c43a9 Add partial accounts to collections endpoint (#38919) 2026-05-06 15:08:26 +00:00
renovate[bot]
0f753038c4 Update github/codeql-action digest to e46ed2c (#38887)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 13:17:26 +00:00
renovate[bot]
fee4c262d2 Update formatjs monorepo (#38913)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 13:15:54 +00:00
renovate[bot]
a2d04ee7b4 Update dependency vite-plugin-pwa to v1.3.0 (#38910)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 13:15:36 +00:00
nicole mikołajczyk
194b889873 Expose mastodon-async-refresh response header through CORS (#38914) 2026-05-06 10:41:25 +00:00
renovate[bot]
1e3b089eb6 Update docker/build-push-action digest to 10e90e3 (#38815)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 09:53:28 +00:00
David Roetzel
07ce066d68 Move PartialAccountSerializer to the top-level (#38916) 2026-05-06 09:35:07 +00:00
renovate[bot]
b653660a5c Update dependency axios to v1.16.0 (#38880)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 09:14:07 +00:00
github-actions[bot]
b04f7e7411 New Crowdin Translations (automated) (#38915)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-05-06 08:54:35 +00:00
renovate[bot]
9ef8df569e Update dependency rubyzip to v3.3.0 (#38881)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 08:49:03 +00:00
Matt Jankowski
d243ba36ce Add admin area spec for email subscriptions management (#38912) 2026-05-06 08:47:12 +00:00
Matt Jankowski
aee0025ca3 Add system spec for managing everyone user role 2FA (#38911) 2026-05-06 08:36:42 +00:00
Claire
cb2e770584 Remove duplicate index index_email_subscriptions_on_account_id (#38907) 2026-05-05 15:15:55 +00:00
Claire
5e3e11bbfa Fix role management interface not offering to require 2FA for all users (#38906) 2026-05-05 14:46:52 +00:00
Claire
3bc27b9b64 Resolve unknown tagged collections in remote posts (#38900) 2026-05-05 14:46:47 +00:00
github-actions[bot]
127de5bb3d New Crowdin Translations (automated) (#38905)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-05-05 10:24:49 +00:00
renovate[bot]
0aae54dfd9 Update dependency linzer to v0.7.9 (#38874)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-05 08:17:59 +00:00
Kenta Ishizaki
066456ecdf Fix typo in typed_functions.ts comment (#38590) 2026-05-05 04:54:34 +00:00
renovate[bot]
e715531dd3 Update devDependencies (non-major) (#38901)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: ChaosExAnima <ChaosExAnima@users.noreply.github.com>
2026-05-04 21:21:52 +00:00
renovate[bot]
ba83509ff4 Update dependency FFmpeg/FFmpeg to v8.1.1 (#38888)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-04 16:24:22 +00:00
diondiondion
a23b3c7c25 Update block dialog copy to include quotes & collections (#38897) 2026-05-04 15:22:24 +00:00
Eugen Rochko
ee88da4511 Add admin UI for managing email subscriptions (#38741)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2026-05-04 13:56:04 +00:00
Juan José Martos
46ccfa6e8d Updating rollup and flatted dependencies [SECURITY] (#38497) 2026-05-04 13:09:09 +00:00
renovate[bot]
5922d0181e Update formatjs monorepo (#38804)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-04 12:29:58 +00:00
Claire
030104a30c Change how invalid-but-not-expired invites are shown in moderation interface (#38736) 2026-05-04 11:38:11 +00:00
Jeong Arm
ff99131776 Fix unblocking domain from blocked domains column does not update the list (#38882) 2026-05-04 11:37:56 +00:00
Echo
a7001f52ab Wraps content in Callout component (#38893) 2026-05-04 10:18:43 +00:00
Echo
708fe31908 Keep trying to load emojis if data isn't available yet (#38892) 2026-05-04 09:50:24 +00:00
Gomasy
00c2089e81 Fix emoji picker not rendering when no custom emojis (#38885) 2026-05-04 09:09:17 +00:00
Matt Jankowski
696aaa616b Update rubocop-capybara to version 2.23.0 (#38868) 2026-05-04 07:52:29 +00:00
github-actions[bot]
e4b8bbe6e8 New Crowdin Translations (automated) (#38875)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-05-04 07:49:54 +00:00
renovate[bot]
aa6baf15aa Update dependency jsdom to v29.1.1 (#38816)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-04 07:28:56 +00:00
renovate[bot]
ea52f76314 Update opentelemetry-ruby (non-major) (#38834)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-04 07:28:52 +00:00
renovate[bot]
b44aa94853 Update dependency playwright-ruby-client to v1.59.1 (#38848)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-04 07:28:46 +00:00
github-actions[bot]
c6facd27ed New Crowdin Translations (automated) (#38871)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-30 16:44:20 +00:00
Echo
c79bd31234 Change handle explainer to refer to the Fediverse (#38872) 2026-04-30 16:32:48 +00:00
Claire
322ada898f Update dependency minimatch (#38869) 2026-04-30 16:21:38 +00:00
Echo
d63ca75422 Fixes minor profile visual glitches (#38870) 2026-04-30 16:17:14 +00:00
Matt Jankowski
59f3d8a993 Handle IPv6 scenario in custom Request::Socket (#38866) 2026-04-30 16:03:55 +00:00
Echo
c270634565 Profile editing: Control follower/following list visibility (#38845) 2026-04-30 14:16:30 +00:00
Matt Jankowski
b1703467f1 Use bundler version 4.0.11 (#38867) 2026-04-30 14:16:15 +00:00
diondiondion
b076808fd2 Add "Featuring you" tab to Collections page (#38865) 2026-04-30 14:10:25 +00:00
Echo
945ac23910 Remove and move profile code (#38863) 2026-04-30 13:58:22 +00:00
Matt Jankowski
3021cd8002 Update puma to version 8.0.1 (#38738) 2026-04-30 13:28:15 +00:00
renovate[bot]
a8c261ae7c Update dependency aws-sdk-s3 to v1.220.0 (#38788)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-30 13:22:03 +00:00
renovate[bot]
d4e7af910c Update dependency vite to v8.0.10 (#38748)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-30 12:59:56 +00:00
github-actions[bot]
20e3265f3b New Crowdin Translations (automated) (#38864)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-30 12:32:25 +00:00
renovate[bot]
88b21e587c Update dependency irb to v1.18.0 (#38773)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-30 09:53:20 +00:00
renovate[bot]
c18db97254 Update dependency stoplight to v5.8.2 (#38752)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-30 09:52:13 +00:00
renovate[bot]
d4e60dae9a Update codecov/codecov-action digest to 75cd116 (#38747)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-30 09:25:22 +00:00
renovate[bot]
8456616793 Update actions/cache digest to 27d5ce7 (#38746)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-30 09:24:55 +00:00
renovate[bot]
9c5ef8f3f6 Update dependency aws-sdk-core to v3.246.0 (#38742)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-30 09:23:40 +00:00
renovate[bot]
5288abfb03 Update dependency axios to v1.15.2 (#38613)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-30 09:22:31 +00:00
renovate[bot]
6dbad32d65 Update actions/setup-node digest to 48b55a0 (#38483)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-30 09:21:23 +00:00
Claire
1df259f8c9 Fix translation string of some fallback notifications (#38860) 2026-04-30 09:18:32 +00:00
github-actions[bot]
deb72a4c91 New Crowdin Translations (automated) (#38859)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-30 08:21:13 +00:00
Echo
a47ed31047 Fixes custom emoji not appearing in autocomplete (#38854)
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 19:44:42 +00:00
Claire
5b395774c0 Add fallback attributes to notifications for new and infrequent notifications (#38832) 2026-04-29 15:53:29 +00:00
diondiondion
afeb63d287 Improve collection page loading states (#38847) 2026-04-29 15:49:52 +00:00
David Roetzel
725d8983fa Fix client-side collection routes (#38850) 2026-04-29 14:52:32 +00:00
diondiondion
b761310823 Fix stale collections list after deleting a collection (#38852) 2026-04-29 14:42:23 +00:00
github-actions[bot]
578836f9ae New Crowdin Translations (automated) (#38842)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-29 13:47:29 +00:00
diondiondion
41a3679d83 Mark pending accounts in collection editor (#38843) 2026-04-29 10:35:09 +00:00
diondiondion
614eda43ff Add date & correct icon to "You are in this collection" callout (#38844) 2026-04-29 10:35:07 +00:00
diondiondion
b193913f46 Mark pending accounts on the collection detail page (#38830) 2026-04-28 16:31:18 +00:00
Nicholas La Roux
eb5bfa4541 Upgrade development Ruby from 4.0.2 to 4.0.3 (#38820) 2026-04-28 15:39:41 +00:00
diondiondion
31f89617d8 Fix error when collection is null in collection notification (#38831) 2026-04-28 15:25:17 +00:00
diondiondion
ffd7160980 Add "Follows you" badge to AccountListItem component (#38828) 2026-04-28 15:18:02 +00:00
David Roetzel
6c5bd4f9a8 Handle collections when blocking a user (#38827) 2026-04-28 14:49:19 +00:00
renovate[bot]
763e2ddc49 Update docker.io/ruby Docker tag to v4.0.3 (#38772)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-28 14:22:56 +00:00
Echo
5d9796afb2 Remove custom emojis from Redux (#38825) 2026-04-28 13:49:10 +00:00
renovate[bot]
bd17c48ef9 Update dependency ruby to v4.0.3 (#38765)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2026-04-28 13:30:20 +00:00
Echo
03045425b7 Allow keyboard modal form submission (#38826) 2026-04-28 12:37:58 +00:00
github-actions[bot]
4f76bdfcb7 New Crowdin Translations (automated) (#38824)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-28 11:39:12 +00:00
diondiondion
3d5cb624ba Update design of Collections list page (#38822) 2026-04-28 11:32:27 +00:00
David Roetzel
1f1653e039 Remove rejected and revoked collection items (#38792) 2026-04-28 11:10:25 +00:00
David Roetzel
d5f8b08d69 Add collections to Flag activities (#38817) 2026-04-28 11:09:43 +00:00
David Roetzel
2dd630bc58 Only update FASP availability if it actually changed (#38818) 2026-04-27 13:15:53 +00:00
diondiondion
2b93a2211f Increase clickable area around collection items, refactor ListItem component (#38776) 2026-04-27 09:11:07 +00:00
github-actions[bot]
c53bb2fcd6 New Crowdin Translations (automated) (#38805)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-27 08:09:16 +00:00
renovate[bot]
b1cea4a3d3 Update dependency tzinfo-data to v1.2026.2 (#38807)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-27 07:56:23 +00:00
renovate[bot]
74d5f99ba3 Update dependency strong_migrations to v2.7.0 (#38808)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-27 07:55:00 +00:00
renovate[bot]
45221070cc Update crowdin/github-action digest to 8868a33 (#38814)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-27 07:53:04 +00:00
diondiondion
3473b8a652 Add server thumbnail alt text to frontend (#38801) 2026-04-24 10:28:04 +00:00
github-actions[bot]
a4e5c3244f New Crowdin Translations (automated) (#38800)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-24 08:46:34 +00:00
renovate[bot]
ff57ef2c9b Update dependency ox to v2.14.25 (#38798)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-24 08:31:22 +00:00
diondiondion
a217b633b7 Allow defining alt text for server thumbnail (#38796) 2026-04-23 17:46:50 +00:00
Claire
be4ba1495c Remove unused devise strategies (#38795) 2026-04-23 14:26:19 +00:00
renovate[bot]
0142a4a9de Update dependency ox to v2.14.24 (#38760)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-23 13:55:35 +00:00
Shlee
7c1d6ab114 Role "collection limit" setting missing in params (#38794) 2026-04-23 13:32:12 +00:00
Echo
e2be688389 Profile redesign: Show full join date (#38687) 2026-04-23 12:47:01 +00:00
diondiondion
2f0db28aa4 Implement collection limit on frontend (#38786) 2026-04-23 12:44:30 +00:00
diondiondion
d7b60a2cb6 Fix preview for local collection links (#38793) 2026-04-23 11:47:31 +00:00
diondiondion
478dae0ab3 Show collection preview cards and open collections links locally (#38643) 2026-04-23 09:16:54 +00:00
github-actions[bot]
a8741495c4 New Crowdin Translations (automated) (#38790)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-23 08:42:05 +00:00
diondiondion
540042dfe3 Fix minor collection bugs (#38785) 2026-04-23 08:37:22 +00:00
Echo
1d1deaab2a Profile editing: Fix overflow in advanced view (#38791) 2026-04-23 08:28:14 +00:00
Echo
5bc69ea668 Emoji loading performance (#38784) 2026-04-23 07:48:00 +00:00
David Roetzel
fdb2563abf Use /collections/:id as canonical URL for a collection (#38783) 2026-04-23 07:36:35 +00:00
Echo
c4eec632b9 Makes Vite use browserslist (#38777) 2026-04-22 16:29:29 +00:00
diondiondion
5b1891a1ae Fix confusing hover states in admin list items (#38782) 2026-04-22 14:12:27 +00:00
diondiondion
e3c0883d32 Fix ugly Combobox loading state (#38778) 2026-04-22 13:33:34 +00:00
David Roetzel
1cae543e8f Add per-user maximum number of collections (#38769) 2026-04-22 12:34:08 +00:00
Echo
bc09d3c5f2 Removes React Toggle library (#38771)
Co-authored-by: diondiondion <mail@diondiondion.com>
2026-04-22 11:31:14 +00:00
David Roetzel
58df263159 Make old migration more robust (#38775) 2026-04-22 10:44:36 +00:00
github-actions[bot]
a3127a146d New Crowdin Translations (automated) (#38774)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-22 10:42:55 +00:00
diondiondion
a706fce678 Implement final design for collection editor account dropdown menu (#38767) 2026-04-21 14:12:44 +00:00
Echo
57c5d1c8dd Remove animation detection in favour of never cropping GIFs (#38766) 2026-04-21 11:40:09 +00:00
Matt Jankowski
c589530e22 Add constants to track media player height/width (#38755) 2026-04-21 11:10:45 +00:00
github-actions[bot]
9717dc64d0 New Crowdin Translations (automated) (#38762)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-21 11:10:06 +00:00
renovate[bot]
5399d9761c Update dependency uuid to v14 (#38744)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-21 10:02:44 +00:00
renovate[bot]
27d92ede7e Update dependency pghero to v3.8.0 (#38706)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-21 10:02:40 +00:00
renovate[bot]
ec855cbf59 Update opentelemetry-ruby (non-major) (#38682)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-21 10:02:36 +00:00
renovate[bot]
6903d15559 Update formatjs monorepo (#38666)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-21 10:02:33 +00:00
Matt Jankowski
055b739b88 Use with_domain scope in ReportService (#38758) 2026-04-21 09:59:04 +00:00
diondiondion
d82bada742 Add "Must follow" section to account suggestion dropdown menu (#38750) 2026-04-20 17:50:37 +00:00
Matt Jankowski
28e5c3bb51 Add coverage for "no change" scenario in admin change emails (#38754) 2026-04-20 16:05:46 +00:00
Claire
ccf5c09ad3 Fix incorrect value for feature_approval.current_user for local users (#38751) 2026-04-20 16:00:15 +00:00
David Roetzel
c0b1fbe0a9 Fix item limit on collections (#38749) 2026-04-20 10:17:12 +00:00
github-actions[bot]
d9149bfed9 New Crowdin Translations (automated) (#38743)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-20 07:47:02 +00:00
renovate[bot]
0d283cc48e Update dependency propshaft to v1.3.2 (#38740)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-20 07:12:43 +00:00
renovate[bot]
06417e2b92 Update dependency sidekiq-scheduler to v6.0.2 (#38737)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-20 07:12:21 +00:00
renovate[bot]
45fbb3b053 Update dependency faker to v3.8.0 (#38724)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-20 07:11:24 +00:00
renovate[bot]
225fe58d5c Update dependency sidekiq to v8.1.3 (#38723)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-20 07:11:15 +00:00
renovate[bot]
048700da2f Update Yarn to v4.14.1 (#38720)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-20 07:09:37 +00:00
Shlee
bdad4f78f3 Fallback to default theme when admin-selected theme does not exist (#38703) 2026-04-17 16:57:38 +00:00
Matt Jankowski
b15d234ccb Add domain_variants helper to DomainNormalizable concern (#38539) 2026-04-17 15:36:09 +00:00
diondiondion
05a1c170c2 Update design of account search dropdown in collection editor (#38739) 2026-04-17 15:13:18 +00:00
Matt Jankowski
ea33d7fba6 Add AccountMigration#remaining_cooldown_days method (#38561) 2026-04-17 14:01:07 +00:00
Matt Jankowski
1d3ca80bf7 Use model constants more consistently for view expiration collections (#38589) 2026-04-17 13:57:18 +00:00
Shlee
9afaa23e78 Fix incorrect only option in before_validation filters (#38704) 2026-04-17 13:36:38 +00:00
Matt Jankowski
475e6833ff Update to copy and order for media display options (#38731)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2026-04-17 13:31:14 +00:00
David Roetzel
b846f88e16 Improve collection item behavior in REST API (#38732) 2026-04-17 13:28:39 +00:00
Matt Jankowski
5722b1bbc5 Remove invalid options from recovery codes controller (#38733) 2026-04-17 13:25:39 +00:00
diondiondion
570f2ef482 Allow grouping items in Combobox component (#38730) 2026-04-17 13:18:04 +00:00
diondiondion
e571994b5c Remove "View other collections from this user" from collection menu (#38728) 2026-04-17 08:50:35 +00:00
Matt Jankowski
3411d06f9e Pull user settings defaults from configuration (#38592) 2026-04-17 08:31:37 +00:00
Matt Jankowski
d5f0e37260 Include hosts resolver in request socket DNS lookup (#38699) 2026-04-17 08:09:37 +00:00
github-actions[bot]
3c88310f37 New Crowdin Translations (automated) (#38726)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-17 08:08:49 +00:00
renovate[bot]
58f0a80ae9 Update Node.js to 24.15 (#38707)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-17 07:48:15 +00:00
diondiondion
a40b071640 Implement new Collection inclusion rules in Collection accounts editor (#38719) 2026-04-16 18:05:36 +00:00
Claire
0e6180a5af Fix Bundle being used with incorrect prop types by using type-dependent key (#38721) 2026-04-16 18:05:04 +00:00
Claire
fc1ba93cdc Refactor featured collections URL code (#38709) 2026-04-16 16:00:13 +00:00
Shlee
0e4ee62dfc Fix typo in block_spec.rb (#38714) 2026-04-16 15:59:48 +00:00
David Roetzel
e711f9d492 Federate featured item creation date (#38713) 2026-04-16 15:44:50 +00:00
diondiondion
5a38246ee8 Update design of collection accounts editor (#38712) 2026-04-16 13:59:38 +00:00
Matt Jankowski
0ef00be494 Use bundler version 4.0.10 (#38671) 2026-04-16 11:46:13 +00:00
David Roetzel
961acaf202 Include collection url in API responses (#38708) 2026-04-16 10:09:39 +00:00
renovate[bot]
e05ac2ec04 Update dependency dotenv to v17.4.2 (#38655)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 09:46:12 +00:00
renovate[bot]
b17c544f1d Update dependency postcss-preset-env to v11.2.1 (#38656)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 09:46:04 +00:00
renovate[bot]
89611bf32c Update dependency @rolldown/plugin-babel to v0.2.3 (#38661)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 09:45:58 +00:00
github-actions[bot]
18c79e4e45 New Crowdin Translations (automated) (#38705)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-16 09:32:46 +00:00
renovate[bot]
21a6ecbfb4 Update dependency faker to v3.7.1 (#38681)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 09:17:37 +00:00
David Roetzel
fee38e57f0 Federate and store a collection url (#38697) 2026-04-16 07:26:34 +00:00
diondiondion
543db6d24c Add more actions to collections notifications & context menus (#38698) 2026-04-15 18:03:48 +00:00
Claire
6b1e1899fd Change discoverable accounts to only allow followers to feature them if they are locked (#38672) 2026-04-15 15:05:58 +00:00
Claire
3a84990780 Bump version to v4.5.9 (#38696) 2026-04-15 14:10:28 +00:00
Claire
d6f62f5fa4 Merge commit from fork
* Disallow some special characters in e-mail addresses

* Add size limit to email columns
2026-04-15 15:22:33 +02:00
Echo
fab1e799a6 Profile redesign: Make illustration use CSS vars (#38692) 2026-04-15 12:54:10 +00:00
diondiondion
4835c3b7b4 Allow viewing unlisted collections on your own Profile's Featured tab (#38690) 2026-04-15 12:25:43 +00:00
diondiondion
298fc7ce4c Prevent text wrapping in Badge component (#38691) 2026-04-15 12:06:26 +00:00
Echo
e71d6fa344 Makes RelativeTimestamp default to not showing the future (#38689) 2026-04-15 11:39:27 +00:00
Matt Jankowski
32edf53ea9 Fix hero image radius, bring into repo (#38679)
Co-authored-by: Kiru <mail@kiru.gay>
2026-04-15 11:32:51 +00:00
Echo
d9ea631d59 Featured tab: Check if collections are enabled for loading status (#38688) 2026-04-15 10:21:22 +00:00
Claire
e9af9c649f Fix definition for quote in JSON-LD context (#38686) 2026-04-15 10:17:47 +00:00
Claire
f6652caef4 Fix invalid arguments being passed to Redis in custom Chewy strategy (#38684) 2026-04-15 09:54:38 +00:00
Matt Jankowski
75bbf73737 Make fields build spec resilient to changed size constant (#38678) 2026-04-15 09:29:21 +00:00
Michael Stanclift
9439a2e944 Update FFmpeg renovate datasource to github-tags (#38676) 2026-04-15 09:26:50 +00:00
github-actions[bot]
05c9ebf2ce New Crowdin Translations (automated) (#38683)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-15 09:25:46 +00:00
Claire
2b93d19d2c Update handle explainer copy (#38646)
Co-authored-by: nicolas <nclm@users.noreply.github.com>
2026-04-14 13:15:59 +00:00
Echo
d931e2f30d Prevents featured tags from flickering (#38667) 2026-04-14 11:58:50 +00:00
Eugen Rochko
ba0b9e8ea5 Add publiccode.yml (#38659) 2026-04-14 11:28:15 +00:00
github-actions[bot]
4fcab304e3 New Crowdin Translations (automated) (#38665)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-14 10:12:20 +00:00
Echo
6142c7b003 Profile redesign: Allow animated and transparent avatars (#38663) 2026-04-14 09:21:06 +00:00
Claire
63a244fe1a Add /api/v1_alpha/accounts/:id/in_collections to list collections you are in (#38657) 2026-04-13 17:28:28 +00:00
diondiondion
02deb0b238 Allow revealing blocked/muted accounts in a collection (#38660) 2026-04-13 15:41:47 +00:00
renovate[bot]
96c8eeba49 Update actions/cache digest to 6682284 (#38482)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-13 15:14:36 +00:00
Claire
cea0cbdb73 Update dependency rack-session (#38601) 2026-04-13 14:52:15 +00:00
Claire
46af7467e0 Improve error handling when failing to refresh an actor's key (#38555) 2026-04-13 14:49:42 +00:00
Claire
06a8379dce Fix collections allowing multiple occurrences of the same user (#38636) 2026-04-13 10:28:54 +00:00
Elouan Martinet
7b343c9567 Fix streaming using deprecated url.parse instead of WHATWG URL API (#36973) 2026-04-13 09:21:11 +00:00
renovate[bot]
f98d8157d6 Update dependency axios to v1.15.0 [SECURITY] (#38654)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-13 09:11:37 +00:00
github-actions[bot]
f4f1a86da6 New Crowdin Translations (automated) (#38647)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-13 08:57:02 +00:00
renovate[bot]
fa529c1883 Update dependency vite to v8.0.8 (#38603)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-13 08:14:21 +00:00
renovate[bot]
896e15bd4a Update Playwright (#38642)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-13 08:13:16 +00:00
Matt Jankowski
bb64905b21 Update redis gem to version 5.4.1 (#38110) 2026-04-13 07:44:06 +00:00
Claire
73fc8d34d9 Change collection update to also send notifications if the sensitive label or the topic are changed (#38644) 2026-04-11 11:01:55 +00:00
Claire
8124d44ee1 Fix local collection uri not being serialized in REST API responses (#38645) 2026-04-10 15:01:28 +00:00
Shlee
3b39562954 Minor: Moved the debug log to the correct location. (#38639) 2026-04-10 14:14:09 +00:00
diondiondion
a896081808 Fix Followers/Following list error when they contain accounts that have never posted (#38640) 2026-04-10 14:06:35 +00:00
diondiondion
df4b4f1620 Adds collection notification UI (#38638) 2026-04-10 12:11:11 +00:00
github-actions[bot]
9c164aa16c New Crowdin Translations (automated) (#38635)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-10 11:18:59 +00:00
Shlee
8bc0eaa1bb Fix typo in create_collection_service.rb (#38629) 2026-04-10 08:55:23 +00:00
diondiondion
eed704d4bd Update wording for discoverable option (#38633) 2026-04-09 15:32:20 +00:00
diondiondion
d6c0b93c85 Change "My collections" path to /@username/collections (#38630) 2026-04-09 15:31:49 +00:00
diondiondion
ef4a583f54 More design tweaks for empty state in Featured tab > Collections (#38626) 2026-04-09 14:37:39 +00:00
Shlee
f429019f34 Missing .freeze on collection_update reference in notification.rb (#38628) 2026-04-09 14:36:54 +00:00
diondiondion
2ef9cceccd Fix broken line clamping for bios in AccountListItem (#38632) 2026-04-09 14:24:05 +00:00
Claire
d6f8ac97e8 Add trademark warning to mastodon:setup task (#38548) 2026-04-09 12:30:06 +00:00
diondiondion
19ef4e5c40 Allow hiding featured tab from empty state (#38625) 2026-04-09 10:59:11 +00:00
github-actions[bot]
245c03664a New Crowdin Translations (automated) (#38620)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-09 10:50:03 +00:00
github-actions[bot]
875cd30150 New Crowdin Translations (automated) (#38620)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-09 10:50:03 +00:00
Michael Stanclift
79505180a5 Optimize ffmpeg and libvips Dockerfile builds (#37401)
Signed-off-by: Michael Stanclift <mx@vmstan.com>
2026-04-09 09:46:57 +00:00
renovate[bot]
519b00f25b Update dependency aws-sdk-s3 to v1.219.0 (#38499)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 09:23:49 +00:00
renovate[bot]
cec3e82b21 Update dependency vite-plugin-svgr to v5.2.0 (#38547)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 09:23:10 +00:00
diondiondion
05bed6f3d8 Update Profile Featured tab to latest designs (#38616) 2026-04-09 09:15:05 +00:00
renovate[bot]
34514f00da Update opentelemetry-ruby (non-major) (#38599)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 09:08:27 +00:00
renovate[bot]
c2fafce995 Update dependency strong_migrations to v2.6.0 (#38598)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-09 09:08:01 +00:00
diondiondion
4e60a6f163 Hide bio & familiar followers from Followers/Following lists (#38622) 2026-04-09 09:00:09 +00:00
diondiondion
b6f09b9a2b Use more neutral background color on Share page (#38621) 2026-04-09 08:40:06 +00:00
Claire
66fdd3ae65 Fix serialization of added_to_collection notifications (#38612) 2026-04-08 16:40:51 +00:00
Claire
4ad54b279d Add ability to search for a collection by URL (#38588) 2026-04-08 16:03:35 +00:00
Claire
97ba08113d Fix being able to quote someone you blocked (#38608) 2026-04-08 16:03:24 +00:00
Eugen Rochko
ba9eabccbf Fix no notification being created when account is added to collection on creation (#38611) 2026-04-08 16:01:37 +00:00
Matt Jankowski
28b04ec24e Update sidekiq to version 8.1.2 (#38134) 2026-04-08 14:46:37 +00:00
diondiondion
7d9b1e6d1e Update collection account item design (#38586) 2026-04-08 14:26:39 +00:00
diondiondion
e65fedd672 Allow "Follows you" badge to wrap along with profile heading (#38607) 2026-04-08 13:16:45 +00:00
Claire
39c70649ca Add added_to_collection and collection_updated notification types (#38491) 2026-04-08 12:56:07 +00:00
diondiondion
df64716b34 Rename CSS classes for profile redesign (#38606) 2026-04-08 12:21:07 +00:00
Claire
99a219036f Fix new profile dropdown blocking without confirmation modal (#38605) 2026-04-08 11:24:44 +00:00
diondiondion
f091e7050c Fix gap in profile fields layout (#38604) 2026-04-08 10:24:42 +00:00
renovate[bot]
890452f54a fix(deps): update dependency @vitejs/plugin-react to v6 (#38180)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-08 09:32:45 +00:00
renovate[bot]
7b0da9bb4e chore(deps): update dependency addressable to v2.9.0 [security] (#38600)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-08 09:30:54 +00:00
renovate[bot]
b4d597af93 chore(deps): update dependency dotenv to v17.4.1 (#38524)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-08 09:23:09 +00:00
renovate[bot]
efea53e7a3 chore(deps): update dependency sass to v1.99.0 (#38554)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-08 09:21:08 +00:00
renovate[bot]
c155e0d58b chore(deps): update dependency jsdom to v29.0.2 (#38574)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-08 09:21:03 +00:00
Matt Jankowski
4299e33389 Update vite to version 8.0.5 (#38591)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-08 09:04:16 +00:00
renovate[bot]
f597589695 chore(deps): update dependency lodash to v4.18.1 [security] (#38526)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-08 08:53:02 +00:00
github-actions[bot]
de86ad56e5 New Crowdin Translations (automated) (#38597)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-08 08:37:51 +00:00
Echo
e4e7e679b3 Profile editing: Removes old profile editing page (#38584) 2026-04-07 13:52:04 +00:00
Echo
db13dddcf9 Profile redesign: Changes verified field border colors (#38585) 2026-04-07 13:51:07 +00:00
Eugen Rochko
927c7d747f Change design of e-mail subscription form (#38582)
Co-authored-by: diondiondion <mail@diondiondion.com>
2026-04-07 13:31:59 +00:00
Echo
8e212fca59 Fix importing emoji loader statically inside worker (#38541) 2026-04-07 13:17:07 +00:00
Echo
31d2885d95 Profile editing: Adds bot toggle (#38581) 2026-04-07 12:14:50 +00:00
Echo
85fb9218a7 Profile editing: Fix regression with adding tags (#38580) 2026-04-07 12:05:06 +00:00
Echo
ed6ceda71d Profile redesign: Handle + tab changes (#38579) 2026-04-07 11:21:39 +00:00
Matt Jankowski
9fdc8246f2 Use consistent style in *Filter classes to skip pagination (#38559) 2026-04-07 09:59:36 +00:00
Echo
f2f07404b5 Profile redesign: Persist filter setting (#38575) 2026-04-07 09:58:57 +00:00
Matt Jankowski
71e6e50846 Simplify media attachment lookup in show/player actions (#38565) 2026-04-07 09:58:37 +00:00
renovate[bot]
4633b97c55 chore(deps): update dependency test-prof to v1.6.1 (#38545)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-07 09:35:42 +00:00
github-actions[bot]
0a64bcae63 New Crowdin Translations (automated) (#38564)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-07 09:34:30 +00:00
Matt Jankowski
8fa91b4b81 Use partial to render settings/featured_tags (#36174) 2026-04-03 16:29:00 +00:00
Matt Jankowski
621628e2cf Clarify that language filter does not impact home/lists (#38490)
Co-authored-by: Brendan Jones <16049594+brendanjones@users.noreply.github.com>
2026-04-03 14:46:29 +00:00
Matt Jankowski
ee69290003 Use collection partial for "software updates" list in admin area (#38550) 2026-04-03 13:28:50 +00:00
Echo
759e97fd36 Profile redesign: Adds a "Follows you" badge (#38549) 2026-04-03 09:39:29 +00:00
github-actions[bot]
627023b452 New Crowdin Translations (automated) (#38553)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-03 09:36:56 +00:00
Matt Jankowski
83ac8979c2 Use rubocop --format github instead of problem matcher (#38519) 2026-04-03 08:44:57 +00:00
Matt Jankowski
671568aec9 Use "batch" concern in admin routes (#38551) 2026-04-03 08:37:41 +00:00
Matt Jankowski
47f58212de Use approvable concern for repeated API approve/reject routes (#38542) 2026-04-02 16:11:37 +00:00
Echo
dc923c6425 Profile redesign: Split fields row when evenly sized (#38544) 2026-04-02 15:46:14 +00:00
Shlee
fdce2d3b9c fix: webfinger is not declared as an attribute in actor_serializer.rb (#38538) 2026-04-02 15:45:16 +00:00
diondiondion
7e6813e95c Use compact buttons in collection account list (#38543) 2026-04-02 14:56:03 +00:00
Echo
59299c69ff Profile redesign: Add alt to avatar and header (#38532) 2026-04-02 14:47:11 +00:00
diondiondion
f90f1e3b75 Remove collections client-side feature flag (#38540) 2026-04-02 13:53:47 +00:00
Claire
954cc92a6d Fix being unable to disable sound for quote update notification (#38537) 2026-04-02 13:47:22 +00:00
Echo
f7c00d8d4e Profile redesign: Move and rearrange number fields (#38535) 2026-04-02 13:44:34 +00:00
diondiondion
caf7c21453 Make description optional in collection editor (#38536) 2026-04-02 13:32:53 +00:00
diondiondion
225069d1f2 Update collection account list design (#38534) 2026-04-02 13:32:05 +00:00
Claire
8afca67b10 Fix regressions in notifications caused by rendering default translation wrapper element (#38533) 2026-04-02 13:08:24 +00:00
David Roetzel
814cd61fd8 Remove description presence validation on collections (#38528) 2026-04-02 12:56:00 +00:00
Echo
145dcfadce Profile redesign: Make padding consistent with main timeline (#38531) 2026-04-02 12:39:12 +00:00
Echo
8da2fae6cc Profile redesign: Account featured tab (#38529)
Co-authored-by: diondiondion <mail@diondiondion.com>
2026-04-02 12:33:32 +00:00
Eugen Rochko
8a5d6dab5f Fix relative sign-up path in e-mail subscription notification (#38527) 2026-04-02 11:14:42 +00:00
Claire
ffcf87e023 Fix refreshing keys from stale actors on signature verification error (#38515) 2026-04-02 09:07:44 +00:00
Echo
badda51afc Profile redesign: Hide tabs when only activity is available (#38517) 2026-04-02 09:07:21 +00:00
Claire
6739967c73 Update dependency rack (#38522) 2026-04-02 09:00:51 +00:00
Claire
d9239f95e2 Update dependency action_text-trix (#38523) 2026-04-02 09:00:44 +00:00
Shlee
53f4c00358 Update FFmpeg 8.1 in Dockerfile (#38266) 2026-04-02 08:57:19 +00:00
renovate[bot]
93eb96f220 Update formatjs monorepo (#38457)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-02 08:57:09 +00:00
renovate[bot]
d3fb748b0b Update dependency libvips to v8.18.2 (#38504)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-02 08:56:19 +00:00
github-actions[bot]
9b5c676468 New Crowdin Translations (automated) (#38520)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-02 08:55:13 +00:00
Echo
ca5c0a144a Profile redesign: Remove feature flag (#38513) 2026-04-01 15:03:43 +00:00
renovate[bot]
159d710bc1 Update dependency use-debounce to v10.1.1 (#38484)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-01 14:44:43 +00:00
Eugen Rochko
93dcca7f12 Add email subscriptions to profiles in web UI (#38487) 2026-04-01 14:24:28 +00:00
Claire
db704180b2 Fix signature verification when the key ID is an acct: URI (#38516) 2026-04-01 14:14:53 +00:00
Echo
36d85f8521 Fix jump when loading more media gallery items (#38512) 2026-04-01 14:02:00 +00:00
Echo
e8f4896b08 Profile redesign: Profile fields overflow (#38510) 2026-04-01 14:01:22 +00:00
Echo
9b6354802a Fix linting dev directories (#38514) 2026-04-01 13:45:10 +00:00
renovate[bot]
5a572f9c89 Update dependency axios to v1.14.0 (#38466)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-01 13:24:06 +00:00
renovate[bot]
c2aafda610 Update dependency vite-plugin-svgr to v5 (#38480)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-01 13:22:46 +00:00
nicole mikołajczyk
1f7d6cde5e Don't end account dropdown menu with a separator (#38481) 2026-04-01 13:22:19 +00:00
Claire
e9a051fcef Fix FetchRemoteKeyService possibly returning incorrect keys (#38511) 2026-04-01 12:59:34 +00:00
MitarashiDango
8733d09dc4 Improve relative time display when post time is in the future (#38488) 2026-04-01 10:40:54 +00:00
Echo
0d20f2367a Profile redesign: Remove extra underline from number fields (#38509) 2026-04-01 10:40:02 +00:00
Eugen Rochko
0742a01571 Add MX record validation to e-mail subscriptions, refactor validator (#38502) 2026-04-01 10:04:59 +00:00
github-actions[bot]
eda0f62f89 New Crowdin Translations (automated) (#38505)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-04-01 09:16:06 +00:00
Matt Jankowski
13e21fb1f2 Improve resilience of tootctl maintenance fix-duplicates command (#38501)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2026-04-01 09:08:15 +00:00
David Roetzel
62479b7b0a Remove collections_federation feature flag (#38508) 2026-04-01 08:55:41 +00:00
Eugen Rochko
14544dc4dd Fix subject of email subscription notification e-mail being difficult to localize (#38507) 2026-04-01 08:32:47 +00:00
github-actions[bot]
6736b50c14 New Crowdin Translations (automated) (#38496)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-31 14:53:38 +00:00
Andy Piper
ede655517b Update to Contributor Covenant v3.0 (#36323)
Signed-off-by: Andy Piper <andypiper@users.noreply.github.com>
2026-03-30 16:36:07 +00:00
Claire
30275cd80e Disable extraneous devise strategies if DISABLE_DEVISE_TWO_STRATEGIES is set to true (#38486) 2026-03-30 14:45:59 +00:00
Claire
b1bb3baefb Fix text layout in edition history dropdown (#38485) 2026-03-30 13:27:00 +00:00
Matt Jankowski
52df641172 Use ruby version 4.0.2 (#37445) 2026-03-30 10:21:36 +00:00
github-actions[bot]
ac69a3374c New Crowdin Translations (automated) (#38470)
Co-authored-by: GitHub Actions <noreply@github.com>
2026-03-30 09:37:48 +00:00
Matt Jankowski
77507d2c7c Add counting convenience methods on BulkImport (#38465) 2026-03-30 08:52:48 +00: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
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
19806be8ec Fix processing keys from separate documents (#38407) 2026-03-25 22:03:33 +00: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
David Roetzel
a3bdcc71e7 Fix serialization when an account is missing (#38370) 2026-03-24 16:42:57 +00: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
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
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
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
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
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
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
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
diondiondion
11112fa9dc Remove superfluous SCSS imports file (#38261) 2026-03-17 17:39:21 +00: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
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
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
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
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
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
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
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
diondiondion
71f9763e68 Fix erratic scroll-to-right on delete & redraft in Advanced UI (#38116) 2026-03-09 17:42:54 +00:00
David Roetzel
1d46558e8d Ingestion of remote collection items (#38106) 2026-03-09 14:59:57 +00: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
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
Matt Jankowski
812c109e87 Remove message argument from NoteLengthValidator error approach (#37977) 2026-03-05 17:44:52 +00: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
1add29cf40 Redirect to short account URLs when requesting HTML for one of the AP endpoints (#38056) 2026-03-04 17:44:27 +00: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
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
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
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
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
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
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
diondiondion
7970eb392a Add share dialog for collections (#37986) 2026-02-26 17:45:09 +00: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
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
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
1e87bd178d Bump version to v4.5.7 (#37965) 2026-02-24 13:54:33 +00: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
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
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
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
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
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
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
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
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
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
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
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
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
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
20fedab093 Fix mistakenly included glitch-soc database columns (#37824) 2026-02-11 12:34:34 +00: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
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
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
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
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
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
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
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
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
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
diondiondion
ceb4a878fb Add Select component (#37702) 2026-02-02 17:31:34 +00: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
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
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
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
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
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
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
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
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
Echo
22ec368574 Profile redesign: Badges (#37550) 2026-01-20 15:15:49 +00: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
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
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
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
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
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
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
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
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
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
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
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
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
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
Echo
ff20ab7510 Fixes CDN domain loading (#37310) 2025-12-18 17:41:21 +00:00
Echo
ba4710debe Emoji loading fixes (#37300) 2025-12-18 16:58:44 +00:00
Claire
a8109e50fc Fix custom emojis not displaying in CWs and fav/boost notifications (#37306) 2025-12-18 16:49:03 +00:00
Claire
2a7e5fb3f7 Skip followers synchronization for accounts with 25k followers or more (#37302) 2025-12-18 14:42:47 +00:00
renovate[bot]
8bc0170c02 Update docker.io/ruby Docker tag to v3.4.8 (#37297)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-18 14:42:07 +00:00
renovate[bot]
787b00813e Update dependency ruby to v3.4.8 (#37278)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-18 14:41:35 +00:00
Claire
ffdf56b1e6 Fix default Admin role not including view_feeds permission (#37301) 2025-12-18 14:26:31 +00:00
Joshua Rogers
38bc7d2864 Use HTTPS when downloading unicode.org's emoji-test.txt (#37290) 2025-12-18 10:11:54 +00:00
github-actions[bot]
ed2a8c32ce New Crowdin Translations (automated) (#37293)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-12-18 09:20:07 +00:00
diondiondion
830ffbe2da Remove required field markers from unclearable fields in user preferences (#37291) 2025-12-18 08:58:06 +00:00
Matt Jankowski
009275e66b Use link_to for contribute translation link (#36011) 2025-12-17 15:19:21 +00:00
Echo
3d55dcdf7f Emoji: Refresh custom emoji on new (#37271) 2025-12-17 14:58:22 +00:00
Matt Jankowski
7e817f2471 Extract filter_keywords helper method for listing filter keyword groups (#35921) 2025-12-17 14:48:58 +00:00
diondiondion
c4a760d6ba Improve search menu keyboard navigation (#37255) 2025-12-17 14:42:07 +00:00
Echo
dbc5af6641 Remove rendering of custom emoji using the database (#37284) 2025-12-17 14:40:34 +00:00
diondiondion
71af094f97 Fix notifications page error in Tor browser (#37285) 2025-12-17 14:38:46 +00:00
Claire
d6a40c2891 Fix hashtag autocomplete replacing suggestion's first characters with input (#37281) 2025-12-17 14:28:53 +00:00
Nicholas La Roux
a5362a4002 Upgrade Bundler from 4.0.1 to 4.0.2 (#37283) 2025-12-17 14:06:45 +00:00
renovate[bot]
42d4753d30 Update dependency vite-tsconfig-paths to v6.0.2 (#37279)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 13:15:05 +00:00
github-actions[bot]
8debc5760b New Crowdin Translations (automated) (#37174)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-12-17 11:18:17 +00:00
David Roetzel
5e8b8f9c23 Extract interaction policy class (#37277) 2025-12-17 10:12:43 +00:00
Claire
db62d70492 Change Wrapstodon switch from feature flag to admin setting (#37273) 2025-12-17 09:47:02 +00:00
Matt Jankowski
a292162c5f Mark Form::AdminSettings#persisted? as true (#35872) 2025-12-17 08:32:24 +00:00
Matt Jankowski
53be8392ec Add coverage for blocked account scenario in following/followers (#36042) 2025-12-16 16:13:03 +00:00
Echo
f118d61334 Emojis: Show in embedded statuses (#37272) 2025-12-16 16:06:59 +00:00
Matt Jankowski
95432b47eb Add coverage for user model registration time validation (#35993) 2025-12-16 15:58:39 +00:00
Matt Jankowski
dbf8d77cbb Add spec for missing username value in create account API (#37057) 2025-12-16 15:43:04 +00:00
diondiondion
e6b0cdcc83 Updates Wrapstodon footer with dedicated local server info (#37270) 2025-12-16 15:35:26 +00:00
Matt Jankowski
7e81e03531 Reduce factory creation across spec/helpers (#35527) 2025-12-16 15:26:04 +00:00
Matt Jankowski
92df1c4458 Add coverage for Account.representative from finder concern (#35996) 2025-12-16 15:05:26 +00:00
Echo
a9c84529b2 Wrapstodon: Load report data only on display (#37269) 2025-12-16 13:00:40 +00:00
diondiondion
9e97ad04d8 Fix bad contrast on disabled dropdown menu items (#37268) 2025-12-16 11:38:47 +00:00
Echo
8c2845906c Improve Redux Storybook (#37227) 2025-12-16 11:27:18 +00:00
Matt Jankowski
7230c2059f Add coverage for "domain variants" consumers (#35995) 2025-12-16 10:24:27 +00:00
Matt Jankowski
c8f608839b Use bundler version 4.0.1 (#37191) 2025-12-16 10:13:43 +00:00
Claire
550a6d4765 Add wrapstodon to initial state and show wrapstodon sidebar item on load (#37261) 2025-12-16 09:47:18 +00:00
renovate[bot]
4c679c698f Update dependency vite-tsconfig-paths to v6 (#37247)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-16 09:46:39 +00:00
renovate[bot]
71821eb9c1 Update dependency tzinfo-data to v1.2025.3 (#37242)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-16 09:45:59 +00:00
Claire
0801104729 Fix mentions of domain-blocked users being processed (#37257) 2025-12-16 08:49:48 +00:00
Echo
cbe1352103 Emoji: Import and use shortcode data (#37178) 2025-12-15 15:38:13 +00:00
David Roetzel
a3fa441e0c Check "featureable" policy on creation of collections (#37254) 2025-12-15 15:29:28 +00:00
diondiondion
807e1254e6 Prevent "invalid access token" error when opening Mastodon while logged out (#37256) 2025-12-15 15:24:03 +00:00
Isa S.
9d18df4f8a Add REPLICA_DB_HOST to replica_enabled helper (#37240) 2025-12-15 13:25:42 +00:00
Nicholas La Roux
09ab2829da Upgrade rubocop-rails from 2.33.4 to 2.34.2 and address related offenses (#37243) 2025-12-15 12:57:16 +00:00
Echo
5fa7654688 Fixes display names not rendering with emojis (#37251) 2025-12-15 12:54:46 +00:00
renovate[bot]
2984f377e8 Update devDependencies (non-major) (#37074)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: ChaosExAnima <ChaosExAnima@users.noreply.github.com>
2025-12-15 12:53:21 +00:00
diondiondion
a9e228361c Fix badly visible focus outlines in composer (#37250) 2025-12-15 12:39:04 +00:00
renovate[bot]
d7f632f6ba Update dependency tesseract.js to v7 (#37246)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-15 12:07:57 +00:00
Claire
dc4fb51e52 Increase cache duration on public shared wrapstodon page (#37249) 2025-12-15 10:19:17 +00:00
renovate[bot]
c112c6d3a2 Update Node.js to 24.12 (#37196)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-15 08:03:56 +00:00
renovate[bot]
ffba47a30f Update dependency ruby-vips to v2.3.0 (#37194)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-15 08:03:52 +00:00
David Roetzel
bb72ecd466 Add simple API to remove item from collection (#37225) 2025-12-15 08:03:49 +00:00
renovate[bot]
372de345d7 Update dependency sass to v1.96.0 (#37175)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-15 08:03:45 +00:00
David Roetzel
1766616ebc Refactor relation preloading (#37217) 2025-12-15 07:35:46 +00:00
Claire
4af8e83c8a Fix wrapstodon not falling back to username when display name is not set (#37229) 2025-12-12 16:30:22 +00:00
diondiondion
861202fd08 Change Emoji in Wrapstodon footer 🐘 (#37226) 2025-12-12 14:31:21 +00:00
diondiondion
6821b70796 Add secondary Wrapstodon share button (#37224) 2025-12-12 13:39:56 +00:00
David Roetzel
3cc4b59b41 First draft of API to add items to a collection (#37222) 2025-12-12 13:09:55 +00:00
Claire
1e67567d8f Change HTTP Signature verification status from 401 to 503 on temporary failure to get remote actor (#37221) 2025-12-12 12:42:43 +00:00
diondiondion
b72b507584 Remember revealed archetype on future Wrapstodon visits (#37219) 2025-12-12 11:03:00 +00:00
diondiondion
8748f0812d Convert Settings class to TS (#37218) 2025-12-12 10:20:32 +00:00
Echo
e206b0d0de Wrapstodon: Add nav modal (#37210) 2025-12-12 10:11:47 +00:00
diondiondion
571c93c563 Change Wrapstodon 'About' link to point to joinmastodon.org (#37216) 2025-12-12 09:43:34 +00:00
Echo
10f232ca08 Wrapstodon: Allow dismissing banner (#37202) 2025-12-12 09:40:45 +00:00
Claire
dfbf908870 Fix wrapstodon modal closing on any click (#37209) 2025-12-11 17:49:26 +00:00
diondiondion
c06eb371e6 Add Wrapstodon footer links (#37207) 2025-12-11 17:06:26 +00:00
Emelia Smith
d730f6b0c5 Add spec for client_credentials being used with /api/v1/apps/verify_credentials (#37195) 2025-12-11 16:40:22 +00:00
Claire
addeb28292 Change wrapstodon 2025 to allow unlisted posts in top statuses (#37206) 2025-12-11 16:35:35 +00:00
Claire
5e3387539e Add image to Wrapstodon OpenGraph banner (#37205) 2025-12-11 16:22:48 +00:00
diondiondion
4323963053 Fix Wrapstodon modal scrolling not working on iOS (#37203) 2025-12-11 14:25:28 +00:00
diondiondion
5651900b89 Wrapstodon design QA tweaks (#37201) 2025-12-11 11:40:53 +00:00
renovate[bot]
d1b996b7e3 Update dependency omniauth-rails_csrf_protection to v2.0.1 (#37199)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-11 11:12:07 +00:00
renovate[bot]
fed26a41fa Update dependency jsdom to v27.3.0 (#37165)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-11 10:33:47 +00:00
Claire
37d309bcaf Fix Wrapstodon font loading by disabling inlining of fonts in Vite (#37198) 2025-12-11 10:33:15 +00:00
renovate[bot]
d25f672c50 Update dependency active_model_serializers to v0.10.16 (#37167)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-11 10:07:52 +00:00
renovate[bot]
15c9088761 Update dependency vite to v7.2.7 (#37156)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-11 10:07:38 +00:00
renovate[bot]
da1505a495 Update dependency @vitejs/plugin-react to v5.1.2 (#37155)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-11 10:07:30 +00:00
renovate[bot]
d1f690f50c Update dependency stoplight to v5.7.0 (#37151)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-11 10:07:25 +00:00
Claire
da2b75bdcd Change build-releases workflow to tag images latest based on latest stable-x.y branch (#37179)
Co-authored-by: emilweth <7402764+emilweth@users.noreply.github.com>
2025-12-10 17:01:25 +00:00
David Roetzel
adf8a3601d Add service to add item to a collection (#37192) 2025-12-10 16:59:21 +00:00
Claire
d6f2a3ac8d Bump version to v4.5.3 (#37166) 2025-12-10 16:42:19 +00:00
diondiondion
c42b9f6996 Implement custom font for Wrapstodon heading (#37193) 2025-12-10 16:26:46 +00:00
Echo
76184c998c Fix issue where Wrapstodon was pushed to the bottom of the feed (#37190) 2025-12-10 15:55:12 +00:00
diondiondion
8137ce87ce Fix Wrapstodon Storybook & other Wrapstodon issues (#37189) 2025-12-10 14:07:25 +00:00
renovate[bot]
37426288d9 Update dependency postcss-preset-env to v10.5.0 (#37132)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-10 12:53:39 +00:00
renovate[bot]
801fee7593 Update dependency test-prof to v1.5.0 (#37127)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-10 12:53:29 +00:00
Claire
6838497fe8 Add title and description to Opengraph data for Wrapstodon share page (#37188) 2025-12-10 11:27:10 +00:00
Claire
7b8a5d42f1 Remove unused time series details from 2025 annual report (#37187) 2025-12-10 11:02:24 +00:00
diondiondion
91500a7f53 Minor Wrapstodon tweaks, add stub Storybook page (#37186) 2025-12-10 09:05:14 +00:00
diondiondion
9d81561bb2 Update Wrapstodon design (#37169) 2025-12-09 16:51:05 +00:00
Matt Jankowski
ac71771d98 Fix misc comment typos (#37183) 2025-12-09 16:09:01 +00:00
Claire
697569e5f9 Add account_id attribute to AnnualReport entity (#37182) 2025-12-09 15:59:40 +00:00
Claire
4cdcdaa7d9 Fix streaming image build after removal of .yarn (#37181) 2025-12-09 15:36:46 +00:00
Echo
9702cbb41c Fix emoji on Wrapstodon (#37177) 2025-12-09 10:36:08 +00:00
David Roetzel
ea768c17db Add counter cache to collections (#37176) 2025-12-09 10:31:35 +00:00
renovate[bot]
5347cabf3e Update dependency oj to v3.16.13 (#37135)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-09 10:07:35 +00:00
renovate[bot]
eef40ba96b Update dependency hiredis-client to v0.26.2 (#37137)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-09 09:47:12 +00:00
Matt Jankowski
9063c3b660 Remove yarn patch for babel-plugin-lodash, removed during Vite upgrade (#37161) 2025-12-09 09:30:57 +00:00
Matt Jankowski
e147947eb8 Add wrapstodon page spec (#37168) 2025-12-09 09:27:29 +00:00
Claire
607449336d Merge commit from fork 2025-12-08 15:44:08 +01:00
github-actions[bot]
85bf5be604 New Crowdin Translations (automated) (#37146)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-12-08 11:42:24 +00:00
David Roetzel
cf23f0414f Add id to collection serializers (#37157) 2025-12-08 11:40:17 +00:00
David Roetzel
55becaa1b5 Preload tag to prevent n+1 (#37154) 2025-12-08 10:30:10 +00:00
David Roetzel
8625721805 Draft API to get all collections by an account (#37139) 2025-12-08 08:56:13 +00:00
Matt Jankowski
7fe3e80758 Rely on locale for options order in DOB input (#36895) 2025-12-05 15:21:22 +00:00
Claire
1ae3b4672b Fix “Delete and Redraft” on a non-quote being treated as a quote post in some cases (#37140) 2025-12-05 15:17:48 +00:00
Echo
007ae588d8 Fix incorrect date for Wrapstodon start (#37138) 2025-12-05 14:12:26 +00:00
diondiondion
ce22c835ac Increase maximum height of media items on desktop (#37136) 2025-12-05 13:39:48 +00:00
Claire
9b851616fe Remove more unused data from 2025 annual reports (#37134) 2025-12-05 13:36:37 +00:00
diondiondion
591776d7ad Fix inversion of emoji colours based on dark/light mode (#37120) 2025-12-05 10:08:59 +00:00
renovate[bot]
7f1f3236c6 Update opentelemetry-ruby (non-major) (#37101)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-05 09:57:18 +00:00
renovate[bot]
852727a226 Update dependency aws-sdk-s3 to v1.206.0 (#37100)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-05 09:57:02 +00:00
github-actions[bot]
429d6bcab4 New Crowdin Translations (automated) (#37131)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-12-05 09:43:12 +00:00
renovate[bot]
e47a5dd1c2 Update dependency faker to v3.5.3 (#37099)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-05 09:22:32 +00:00
renovate[bot]
4ec761debd Update dependency sidekiq to v8.0.10 (#37090)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-05 09:20:54 +00:00
renovate[bot]
d895ea3433 Update dependency vite to v7.2.6 (#37076)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-05 09:20:45 +00:00
renovate[bot]
49105a28a3 Update eslint (non-major) (#36801)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-05 09:20:34 +00:00
renovate[bot]
1cb650d107 Update dependency jsdom to v27.2.0 (#36845)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-05 09:20:17 +00:00
Echo
46f3b39fae Fixes YouTube embeds (#37126) 2025-12-04 16:27:20 +00:00
diondiondion
65b216353e Handle dark/light/contrast theme modes in common CSS (#37095) 2025-12-04 15:56:35 +00:00
Echo
0dac31dfd5 Create new entrypoint for sharable Wrapstodon (#37121) 2025-12-04 15:48:10 +00:00
David Roetzel
75b9e9a8b0 Enable missing before actions in Collection API (#37122) 2025-12-04 15:35:47 +00:00
Claire
88aed3c11a Fix streamed quoted polls not being hydrated correctly (#37118) 2025-12-04 14:10:48 +00:00
David Roetzel
9921fa1af7 First draft API to delete collections (#37117) 2025-12-04 13:47:23 +00:00
David Roetzel
5a7a4fff11 First draft of Collection update API (#37110) 2025-12-04 10:00:21 +00:00
github-actions[bot]
9cf52fb976 New Crowdin Translations (automated) (#37115)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-12-04 09:19:08 +00:00
renovate[bot]
baef5b1659 Update dependency @optimize-lodash/rollup-plugin to v6 (#37062)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-04 09:16:13 +00:00
Matt Jankowski
832d8c7397 Use thread support helper in concurrent insert tag spec (#37112) 2025-12-04 09:11:53 +00:00
Matt Jankowski
d063af2594 Add coverage for array vs string in Tag.find_or_create_by (#37113) 2025-12-04 08:46:24 +00:00
Echo
31c392b1bc Wrapstodon modal with new share button (#37109) 2025-12-03 16:25:36 +00:00
diondiondion
498e88f059 Fix color contrast issues caused by new theme tokens (#37105) 2025-12-03 15:43:26 +00:00
Matt Jankowski
7c730e9041 Use normalizes API for Tag display_name value (#35797) 2025-12-03 15:39:01 +00:00
Matt Jankowski
b3b5bf26d1 Remove duplicate set_locale around action in auth/registrations (#36455) 2025-12-03 15:34:10 +00:00
David Roetzel
4e6d1892b9 Fix creation of duplicate conversations (#37108) 2025-12-03 14:33:27 +00:00
Echo
e5e3a64a9b Display Wrapstodon inline widget (#37106) 2025-12-03 13:58:38 +00:00
Echo
234990cc37 Remove noreferrer from external links (#37107) 2025-12-03 13:54:58 +00:00
Claire
08da9d8fc5 Fix serialization of annual reports with share code (#37104) 2025-12-03 13:05:33 +00:00
Claire
c97d25fcbd Fix serialization of 2025 wrapstodon reports (#37103) 2025-12-03 12:53:16 +00:00
renovate[bot]
e222664539 Update DefinitelyTyped types (non-major) (#37073)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-03 11:17:01 +00:00
renovate[bot]
9d10137c7c Update dependency bundler-audit to v0.9.3 (#37061)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-03 11:15:47 +00:00
Claire
5d84957117 Add shareable wrapstodon links (#37047) 2025-12-03 11:00:41 +00:00
github-actions[bot]
954f397743 New Crowdin Translations (automated) (#37098)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-12-03 10:11:20 +00:00
Claire
73294e2561 Fix typo in AsyncRefresh ID for GenerateAnnualReportWorker (#37096) 2025-12-03 08:31:14 +00:00
renovate[bot]
f393ff93cb Update dependency @optimize-lodash/rollup-plugin to v5.1.0 (#37039)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-02 13:45:33 +00:00
renovate[bot]
9c3b41f0a4 Update dependency vite-plugin-pwa to v1.2.0 (#37040)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-02 13:45:27 +00:00
renovate[bot]
e45ecc7d13 Update dependency express to v5.2.0 [SECURITY] (#37089)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-02 13:43:46 +00:00
Claire
f8422e1fa4 Add API for on-demand generation of annual reports (#37055) 2025-12-02 13:37:05 +00:00
diondiondion
9aec6936e5 Add Wrapstodon timeline announcement component (#37093) 2025-12-02 11:36:20 +00:00
Claire
2b25b65972 Add missing translations for web push notifications (#37078) 2025-12-02 10:52:08 +00:00
Echo
100b20f290 Add UJS to buttons (#37091) 2025-12-02 10:35:29 +00:00
Echo
c5c8100d02 Emoji: Update emoji categories with featured emoji (#37084) 2025-12-02 10:30:08 +00:00
github-actions[bot]
2e5744e8c6 New Crowdin Translations (automated) (#37088)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-12-02 10:20:40 +00:00
David Roetzel
2d203ca72a First draft of API to get a single collection (#37053) 2025-12-01 15:04:52 +00:00
Christian Oelschlegel
1f9ddb7cf6 fix(tag): prevent dupl. tags on concurrent inserts (#35792)
Co-authored-by: Christian Oelschlegel <oelschle@sciphy.de>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2025-12-01 14:56:52 +00:00
Echo
048746e56b Hide domain for local emojis in admin (#37080) 2025-12-01 14:24:24 +00:00
diondiondion
f5d6f60ca7 Ensure all pages have a solid background color (#37081) 2025-12-01 14:16:27 +00:00
Claire
e5651e7e04 Make settings-related database migrations more robust (#37079) 2025-12-01 14:11:49 +00:00
Claire
edfbcfb3f5 Fix error handling when re-fetching already-known statuses (#37077) 2025-12-01 10:52:06 +00:00
github-actions[bot]
f562ad9f67 New Crowdin Translations (automated) (#37063)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-12-01 09:42:49 +00:00
diondiondion
9334bd9ede Don't reset scroll when using hotkeys to focus columns, add hotkey 0 to scroll to top (#37052) 2025-11-28 16:19:23 +00:00
Claire
801672e3cb Add method to quickly test for AnnualReport account eligibility (#37045) 2025-11-28 16:19:23 +00:00
diondiondion
92278796c3 Remove theme_tokens feature flag & make new styles the default (#37056) 2025-11-28 15:58:46 +00:00
diondiondion
37ccffa95a Fix current item in pagination not highlighted with new theme tokens (#37054) 2025-11-28 14:45:38 +00:00
Echo
84ffb107c3 Adjust Chromatic to run conditionally (#37050) 2025-11-28 13:37:04 +00:00
David Roetzel
f896bbac3b Draft API to create Collections (#37049) 2025-11-28 13:30:43 +00:00
github-actions[bot]
6b38352b17 New Crowdin Translations (automated) (#37042)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-28 10:44:50 +00:00
diondiondion
f12f198f61 Fix post navigation in single-column mode when Advanced UI is enabled (#37044) 2025-11-28 10:05:54 +00:00
Claire
e0912c1729 Fix Card component using incorrect punycode module (#37043) 2025-11-28 09:50:37 +00:00
Claire
945ef5a8e1 Remove unused data from 2025 annual reports (#37033) 2025-11-28 08:58:34 +00:00
diondiondion
5f33ac208f Limit height of tall images in posts (#37035) 2025-11-27 17:05:56 +00:00
diondiondion
2bd7c855b0 Contain tall videos in full-width video container (#37032) 2025-11-27 17:05:21 +00:00
Claire
44ff2c32d3 Fix filters not applying to search results (#36346) 2025-11-27 16:23:11 +00:00
Eashwar Ranganathan
826e9d7047 Make tootctl aware of 'require approval' for email domains (#34579) 2025-11-27 15:52:59 +00:00
Echo
f07cff42c2 Fix media modal misalignment in Safari (#37034) 2025-11-27 15:27:18 +00:00
Echo
0d2e9522ff Replace Rails UJS library (#37031) 2025-11-27 13:10:55 +00:00
renovate[bot]
0004ed4c80 chore(deps): update opentelemetry-ruby (non-major) (#37016)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-27 10:51:57 +00:00
diondiondion
07ecf648dd Remove unused bundle-related Redux actions (#37030) 2025-11-27 10:50:48 +00:00
github-actions[bot]
90466d0262 New Crowdin Translations (automated) (#37026)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-27 09:51:15 +00:00
Matt Jankowski
199376a080 Use existing time format string to generate backup archive filename (#36469) 2025-11-27 09:38:27 +00:00
diondiondion
e126cfc76d Fix error page when logging out or boosting on mobile (#37028) 2025-11-27 09:36:58 +00:00
David Roetzel
322a4fee53 First steps towards a collection creation service (#37020)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2025-11-27 09:36:44 +00:00
renovate[bot]
be2caba527 chore(deps): update dependency i18n-tasks to v1.1.2 (#37027)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-27 09:29:14 +00:00
renovate[bot]
002632c3bb chore(deps): update dependency aws-sdk-core to v3.239.2 (#37015)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-26 16:18:51 +00:00
renovate[bot]
81510455d1 chore(deps): update yarn to v4.12.0 (#36797)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-26 16:18:48 +00:00
diondiondion
ee7e756e89 Fix null access error in card component (#37022) 2025-11-26 14:55:40 +00:00
diondiondion
f87f30c1ac Refactor Card component to TypeScript (#36982) 2025-11-26 12:56:17 +00:00
renovate[bot]
1757a0f0f3 chore(deps): update dependency public_suffix to v7 (#36920)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-26 10:48:12 +00:00
Matt Jankowski
cb4f1cc89c Improve SessionActivation.activate spec (#36983) 2025-11-26 10:26:39 +00:00
Claire
00163e89bf Fix tootctl status remove removing quoted posts and remote quotes of local posts (#37009) 2025-11-26 10:26:26 +00:00
diondiondion
59e48657cf Fix issues in new theme tokens (#37019) 2025-11-26 10:25:49 +00:00
github-actions[bot]
384594f462 New Crowdin Translations (automated) (#37018)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-26 10:25:41 +00:00
renovate[bot]
cd9d166312 chore(deps): update dependency rqrcode to v3.1.1 (#37010)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-26 09:54:11 +00:00
renovate[bot]
6f4f9942b9 chore(deps): update dependency connection_pool to v2.5.5 (#37003)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-26 09:53:38 +00:00
David Roetzel
0725afe1a9 Collections: Add missing validations for boolean columns (#37005) 2025-11-25 14:46:50 +00:00
renovate[bot]
09697045a9 chore(deps): update dependency rails-i18n to v8.1.0 (#36992)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-25 14:18:48 +00:00
renovate[bot]
3e77c3bc8c chore(deps): update dependency omniauth-rails_csrf_protection to v2 (#36993)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-25 14:18:32 +00:00
renovate[bot]
bd02cd4591 chore(deps): update dependency addressable to v2.8.8 (#37002)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-25 14:07:06 +00:00
renovate[bot]
4ca458e0b4 chore(deps): update devdependencies (non-major) (#36802)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-25 13:53:23 +00:00
diondiondion
8c772028ac Replace most unsafe React lifecycle methods (#36970) 2025-11-25 13:49:45 +00:00
diondiondion
861625fdca Prevent vertical videos from overflowing the viewport (#36966) 2025-11-25 13:21:59 +00:00
renovate[bot]
ca53195b31 chore(deps): update dependency sass to v1.94.2 (#36826)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-25 13:21:25 +00:00
Claire
a26636ff1f Fix compose autosuggest always lowercasing token (#36995) 2025-11-25 13:17:44 +00:00
Claire
204143becc Increase HTTP read timeout for expensive S3 batch delete operation (#37004) 2025-11-25 10:18:34 +00:00
github-actions[bot]
f0d7ea61ef New Crowdin Translations (automated) (#37000)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-25 09:52:51 +00:00
renovate[bot]
76d8ac3fe6 chore(deps): update dependency i18n-tasks to v1.1.1 (#36997)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-24 15:34:10 +00:00
Claire
96d5e57351 Revert "Increase HTTP read timeout for expensive S3 batch delete operation (#36971)" (#36996) 2025-11-24 13:33:37 +00:00
renovate[bot]
57bfe863f3 chore(deps): update dependency aws-sdk-core to v3.239.1 (#36955)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-24 09:10:07 +00:00
David Roetzel
b16452dd99 Add shared context for API authentication (#36981) 2025-11-24 08:48:49 +00:00
renovate[bot]
1bc13609ab chore(deps): update dependency aws-sdk-s3 to v1.205.0 (#36956)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-24 08:42:56 +00:00
github-actions[bot]
e44a9c0879 New Crowdin Translations (automated) (#36984)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-24 08:08:01 +00:00
Matt Jankowski
f1bf6e6344 Remove unused from_limited? method from NotifyService (#36988) 2025-11-24 07:57:46 +00:00
Matt Jankowski
585545d0d5 Add coverage for media#player scenarios (#35947) 2025-11-21 14:46:29 +00:00
Matt Jankowski
d967137adf Remove unneeded type check on Status in og_image partial (#36980) 2025-11-21 14:29:03 +00:00
Pēteris Caune
ad7839e551 Fix the translation of "Latvian" (#36876) 2025-11-21 13:56:20 +00:00
diondiondion
8a235dd187 Refactor PrivacyDropdown to TypeScript (#36979) 2025-11-21 13:33:27 +00:00
Shugo Maeda
48fe679728 Separate remote thumbnails into cache/ directory (#36911) 2025-11-21 13:27:04 +00:00
renovate[bot]
687f3a2a01 chore(deps): update dependency vite to v7.2.4 (#36964)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-21 11:00:29 +00:00
David Roetzel
7ffa5fa0c4 Add models to represent "Collections" (#36977) 2025-11-21 10:28:23 +00:00
github-actions[bot]
cfa4f402ef New Crowdin Translations (automated) (#36976)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-21 09:34:55 +00:00
renovate[bot]
aa131e538c chore(deps): update dependency core-js to v3.47.0 (#36931)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-21 09:17:57 +00:00
Matt Jankowski
6151febd73 Suggest ES image version 7.17.29 in docker compose (#36972) 2025-11-21 09:16:50 +00:00
Claire
a54334b714 Increase HTTP read timeout for expensive S3 batch delete operation (#36971) 2025-11-21 08:59:07 +00:00
Claire
21ce99f746 Bump version to v4.5.2 (#36968) 2025-11-20 15:04:22 +00:00
github-actions[bot]
8e8669b5ef New Crowdin Translations (automated) (#36957)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-20 10:54:39 +00:00
Claire
a28f1d0110 Fix missing fallback link in CW-only quote posts (#36963) 2025-11-20 10:08:36 +00:00
diondiondion
f01e80bed3 Fix error when visiting non-public hashtag timelines (#36961) 2025-11-20 10:08:00 +00:00
Darius Kazemi
dc67dbba82 Remove stray Font Awesome styles (#36960) 2025-11-20 10:02:50 +00:00
Claire
bb9a633b99 Fix statuses without text disappearing on reload (#36962) 2025-11-20 09:52:53 +00:00
Echo
ea616ac4a4 Improve media modal swipe animation (#36916) 2025-11-19 15:56:24 +00:00
renovate[bot]
01b11c328c chore(deps): update dependency i18n-tasks to v1.1.0 (#36907)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-19 15:37:02 +00:00
Claire
bc7c83ba76 Update glob dependency (#36940) 2025-11-19 15:28:57 +00:00
diondiondion
366856f3bc Fix theme-related Vite errors even when theme_tokens feature flag is disabled (#36936) 2025-11-19 12:37:15 +00:00
diondiondion
4d0aab4a31 Fix g + h keyboard shortcut not working when a post is focused (#36935) 2025-11-19 10:58:07 +00:00
Claire
c22b203bca Fix quoting overwriting current content warning (#36934) 2025-11-19 10:35:10 +00:00
renovate[bot]
52b92bdc9c chore(deps): update dependency bootsnap to '~> 1.19.0' (#36906)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-19 10:19:49 +00:00
Matt Jankowski
4f6a7e44d1 Update rubocop-rspec to version 3.8.0 (#36853) 2025-11-19 10:14:51 +00:00
github-actions[bot]
81ffd1d3c7 New Crowdin Translations (automated) (#36933)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-19 10:09:54 +00:00
Matt Jankowski
9872197d1f Fix Rails/RedirectBackOrTo cop (#36930) 2025-11-19 09:28:43 +00:00
Claire
be0e23bb0a Fix scroll-to-status in threaded view being unreliable (#36927) 2025-11-18 16:20:50 +00:00
Claire
c820c66d3c Change private quote education modal to not show up on self-quotes (#36926) 2025-11-18 16:17:26 +00:00
Claire
b4daad8c89 Fix double encoding in links (#36925) 2025-11-18 15:37:14 +00:00
github-actions[bot]
b14f113929 New Crowdin Translations (automated) (#36922)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-18 08:22:25 +00:00
Echo
caffb0fd63 Emoji: Fix path resolution for emoji worker (#36897) 2025-11-17 15:34:18 +00:00
Matt Jankowski
53703202fb Add IpBlock#to_cidr method to build string (#35773) 2025-11-17 14:51:05 +00:00
Matt Jankowski
59fdff5dc5 Add spec for translation attempt with ineligible target language (#36813) 2025-11-17 14:13:52 +00:00
renovate[bot]
04bdfa1957 chore(deps): update dependency @vitejs/plugin-react to v5.1.1 (#36841)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-17 14:12:38 +00:00
Shugo Maeda
04c566e2e9 Fix ArgumentError of tootctl upgrade storage-schema (#36914) 2025-11-17 13:34:20 +00:00
diondiondion
72c582e7e5 Fix superfluous border & spacing in domains list on the Moderation > Federation page (#36915) 2025-11-17 12:07:44 +00:00
diondiondion
284b46fee7 Implement CSS theme tokens behind feature flag (#36861) 2025-11-17 09:44:55 +00:00
github-actions[bot]
489bee8f4e New Crowdin Translations (automated) (#36898)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-17 09:33:15 +00:00
Claire
c87b052829 Fix inability to paste links (#36896) 2025-11-14 16:44:08 +00:00
github-actions[bot]
ebc99cd597 New Crowdin Translations (automated) (#36893)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-14 15:57:35 +00:00
Claire
6db4297193 Fix cross-origin handling of CSS modules (#36890) 2025-11-14 15:42:26 +00:00
renovate[bot]
bc47cba123 chore(deps): update dependency js-yaml to v4.1.1 [security] (#36891)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-14 15:27:43 +00:00
Matt Jankowski
f8ffb85566 Use date attribute for date of birth (#36039) 2025-11-14 15:17:53 +00:00
Echo
7dbb2ac79a Remove rails delegate (#36835)
Co-authored-by: Renaud Chaput <renchap@gmail.com>
2025-11-14 14:18:14 +00:00
renovate[bot]
bc81e299f2 chore(deps): update dependency stoplight to v5.6.0 (#36803)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-14 14:17:50 +00:00
renovate[bot]
277a4c80c0 chore(deps): update dependency prometheus_exporter to v2.3.1 (#36842)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-14 14:17:38 +00:00
renovate[bot]
7be8fe6370 chore(deps): update dependency aws-sdk-core to v3.237.0 (#36823)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-14 14:15:56 +00:00
Jeong Arm
4ab1d5d724 Allow drag&drop of link to quote in compose form (#36859) 2025-11-14 14:14:37 +00:00
Echo
c5eca8ffb2 Fix error with remote tags including percent signs (#36886) 2025-11-14 14:11:41 +00:00
Claire
f25e066112 Fix bogus quote approval policy not always being replaced correctly (#36885) 2025-11-14 12:39:04 +00:00
Claire
6d8c43ab85 Fix hashtag completion not being inserted correctly (#36884) 2025-11-14 12:23:40 +00:00
Claire
0d7c23469b Bump version to v4.5.1 (#36872) 2025-11-14 10:43:08 +00:00
github-actions[bot]
f243a00b90 New Crowdin Translations (automated) (#36875)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-14 10:27:20 +00:00
diondiondion
6e294828d6 Fix Cmd/Ctrl + Enter in the composer triggering confirmation dialog action (#36870) 2025-11-14 09:39:42 +00:00
Claire
98c8c1ebd2 Fix error when sending new posts (#36869) 2025-11-13 15:42:14 +00:00
diondiondion
998d4cc0dc Fix Cmd/Ctrl + Enter not submitting Alt text modal on some browsers (#36866) 2025-11-13 15:35:25 +00:00
Claire
9dbebbb2ee Fix posts coming from public/hashtag streaming being marked as unquotable (#36860) 2025-11-13 12:54:28 +00:00
github-actions[bot]
3f292e0f5b New Crowdin Translations (automated) (#36858)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-13 10:18:16 +00:00
Itoh Shimon
7e7f63a2ef Use the native script for Divehi (#36254) 2025-11-12 16:58:40 +00:00
Claire
ed3710e58f Fix Update importing old previously-unknown activities and treating them as recent ones (#36848) 2025-11-12 16:09:00 +00:00
Claire
8abec0ffcb Revert "Ensure the boost button shows a numeric value (#36805)" (#36850) 2025-11-12 15:32:55 +00:00
Echo
00cbc1b910 Fix deprecation warning in Vite (#36849) 2025-11-12 14:25:25 +00:00
diondiondion
f303f3458d Fixes blank screen in browsers that don't support Intl.DisplayNames (#36847) 2025-11-12 11:11:48 +00:00
Claire
9f3573d446 Fix filters not being applied to quotes in detailed view (#36843) 2025-11-12 11:09:51 +00:00
Echo
4b1532e008 Fix duplicate counters (#36844) 2025-11-12 11:01:34 +00:00
github-actions[bot]
ff0fca018a New Crowdin Translations (automated) (#36838)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-12 10:24:50 +00:00
Echo
b5a2fe715d Revert "Fix duplicated counters (fix #32614)" (#36834) 2025-11-11 18:05:44 +00:00
renovate[bot]
11b75d616a chore(deps): update dependency aws-sdk-s3 to v1.203.1 (#36822)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-11 15:47:08 +00:00
Matt Jankowski
a002048c8c Update storybook/msw/chromatic (#36739) 2025-11-11 11:17:23 +00:00
Matt Jankowski
fa5318b333 Remove webpack hints IDE config (#36769) 2025-11-11 11:16:15 +00:00
diondiondion
b53ee04475 Fix icon buttons animating when they haven't changed (#36824) 2025-11-11 11:10:27 +00:00
xatier
84cdb6cc66 Fix duplicated counters (fix #32614) (#36785) 2025-11-11 11:02:41 +00:00
Echo
ff5d745e3d Emoji: Load emoji with hash in URL (#36808) 2025-11-11 10:03:06 +00:00
github-actions[bot]
391c77f277 New Crowdin Translations (automated) (#36820)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-11 08:38:02 +00:00
Renaud Chaput
bc5397a0db Remove the 2 PRs-per-hour Renovate limit (#36814) 2025-11-11 08:26:43 +00:00
Matt Jankowski
1c3e7545cb Add spec for translation attempt on private status (#36810) 2025-11-10 16:05:20 +00:00
diondiondion
400943cb4e Fix scroll shift caused by fetch-all-replies alerts (#36807) 2025-11-10 15:33:56 +00:00
Echo
9a42d00c12 Ensure the boost button shows a numeric value (#36805) 2025-11-10 15:10:24 +00:00
Renaud Chaput
9addad8ce5 Update to latest eslint-plugin-react-hooks (#36702)
Co-authored-by: diondiondion <mail@diondiondion.com>
2025-11-10 14:50:04 +00:00
Echo
4ddddc2573 Centers GIFs in media modal (#36806) 2025-11-10 13:21:45 +00:00
diondiondion
1280792678 Fix dropdown menu not focusing first item when opened via keyboard (#36804) 2025-11-10 11:44:10 +00:00
Matt Jankowski
63e2ca5d27 Add spec for hitting max status pins limit in pin api (#36789) 2025-11-10 10:06:47 +00:00
github-actions[bot]
b0790d828c New Crowdin Translations (automated) (#36786)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-10 10:06:07 +00:00
renovate[bot]
89b5ceb5dc chore(deps): update dependency vite to v7.2.2 (#36751)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-10 09:03:33 +00:00
renovate[bot]
441eb89537 chore(deps): update dependency axios to v1.13.2 (#36726)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-07 13:25:41 +00:00
Echo
882afd7748 Reset background color on media modal (#36782) 2025-11-07 10:44:31 +00:00
Claire
8fb06ea0ca Update dependency rollup from 4.46.2 to 4.46.4 (#36781) 2025-11-07 10:29:05 +00:00
Matt Jankowski
c7dc5767d3 Rely on puma default environment setting (#36760) 2025-11-07 10:06:22 +00:00
Matt Jankowski
6833878f95 Clarify hint for bootstrap account instructions (#36771) 2025-11-07 10:05:52 +00:00
Claire
70d71c10c8 Fix /api/v1/statuses/:id/context sometimes returing Mastodon-Async-Refresh without result_count (#36779) 2025-11-07 10:02:25 +00:00
Claire
315833cb75 Fix prepared quote not being discarded with contents when replying (#36778) 2025-11-07 09:11:10 +00:00
github-actions[bot]
dcf7fc1028 New Crowdin Translations (automated) (#36777)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-07 08:34:18 +00:00
Claire
0ace564537 Add 4.5.x to the list of supported branches (#36762) 2025-11-06 16:23:56 +00:00
Matt Jankowski
16dfa32578 Update express to version 5.1.0 (#36669)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-06 14:46:08 +00:00
Matt Jankowski
0d48005b8a Remove legacy AR connection boot from puma config (#36757) 2025-11-06 14:36:23 +00:00
renovate[bot]
59e0ead418 chore(deps): update dependency stoplight to v5.5.0 (#36731)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-06 14:24:43 +00:00
renovate[bot]
76fb15dced chore(deps): update dependency aws-sdk-s3 to v1.203.0 (#36746)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-06 14:17:04 +00:00
renovate[bot]
5d3c1cdc9b chore(deps): update libretranslate/libretranslate docker tag to v1.7.3 (#36724)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-06 14:03:35 +00:00
github-actions[bot]
15c33a16f7 New Crowdin Translations (automated) (#36749)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-06 13:55:37 +00:00
Claire
6f1a30c4a6 Bump version to v4.5.0 (#36754) 2025-11-06 13:24:58 +00:00
diondiondion
58b3fc0379 Refactor "New/Edit list" page to avoid setting state in effect (#36753) 2025-11-06 11:00:37 +00:00
Echo
41a4022988 Fix: correctly dismisses announcement when viewed (#36750) 2025-11-06 09:48:34 +00:00
Emelia Smith
532bb7ea3c Add systemd service file for prometheus exporter (#35130) 2025-11-06 09:25:56 +00:00
Echo
987104f435 Add default visualizer for audio upload without poster (#36734) 2025-11-05 15:33:26 +00:00
Josh Soref
50e1320c8d Improve account migration warnings (#20387)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
Co-authored-by: diondiondion <mail@diondiondion.com>
2025-11-05 15:27:40 +00:00
Echo
6337e036f3 Add new ESLint rule requiring explicit button types (#36738) 2025-11-05 15:11:04 +00:00
Yurii Izorkin
1a31c412ca nginx: optimize location blocks (part 2) (#19644) 2025-11-05 15:08:16 +00:00
Claire
4a6f479535 Update changelog (#36737) 2025-11-05 14:43:22 +00:00
Renaud Chaput
15a7abd581 Resume Renovate updates for tesseract (#36705) 2025-11-05 14:25:40 +00:00
diondiondion
1b8d1cd6e4 Fix spoiler toggle button being able to submit compose form (#36736) 2025-11-05 14:00:42 +00:00
Shlee
35bd985727 Increase nginx.conf proxy_read_timeout (#30599) 2025-11-05 13:36:14 +00:00
Oneric
c0c6f5ea32 Fix Accept headers when fetching AP objects to match spec (#30354) 2025-11-05 13:32:29 +00:00
github-actions[bot]
3aeae8cafd New Crowdin Translations (automated) (#36727)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-05 13:20:34 +00:00
diondiondion
947dfcc548 Add some outer page spacing when viewport width equals content width (#36733) 2025-11-05 12:17:42 +00:00
renovate[bot]
049dcebf9a chore(deps): update devdependencies (non-major) (#36722)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-05 11:37:25 +00:00
renovate[bot]
f361a2c766 chore(deps): update dependency vite to v7.2.0 (#36729)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-05 11:36:58 +00:00
renovate[bot]
d4ec991126 chore(deps): update dependency aws-sdk-s3 to v1.202.0 (#36488)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-05 11:36:35 +00:00
Matt Jankowski
1f4fe91708 Relax aws-sdk-core version limit (#36719) 2025-11-05 10:43:10 +00:00
Claire
26e7fe9771 Change paste-link-to-quote loading state from generic loading bar to compose placeholder (#36695) 2025-11-04 19:20:39 +00:00
Claire
1b795c12e9 Change quote action to error instead of insert link in Private Mentions (#36721) 2025-11-04 17:58:50 +00:00
mkljczk
afd5d5c2e5 fix spelling (#35738) 2025-11-04 16:49:12 +00:00
Echo
3ab5ae1e4a Quote Posts: Add notifications for DMs and private posts (#36696) 2025-11-04 16:32:52 +00:00
Claire
4a9460f7bd Fix Skeleton placeholders being animated when setting to reduce animations is enabled (#36716) 2025-11-04 15:30:10 +00:00
renovate[bot]
e7692d0de8 chore(deps): update artifact actions (major) (major) (#36711)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 15:28:26 +00:00
renovate[bot]
cc77844540 chore(deps): update github/codeql-action action to v4 (#36713)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 15:28:17 +00:00
Matt Jankowski
337f16d33e Remove unused DomainControlHelper include from SignedRequest (#35856) 2025-11-04 15:27:42 +00:00
renovate[bot]
ef20dcbf95 chore(deps): update definitelytyped types (non-major) (#36706)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 15:01:23 +00:00
renovate[bot]
0c101b47bf chore(deps): update dependency typescript to v5.9.3 (#36707)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 14:59:42 +00:00
renovate[bot]
f221ce530b chore(deps): update actions/setup-node action to v6 (#36710)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 14:30:29 +00:00
renovate[bot]
8f1c73ed99 chore(deps): update eslint (non-major) (#36708)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 14:30:01 +00:00
renovate[bot]
1a698d3b35 chore(deps): update chromaui/action action to v13 (#36712)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 14:29:19 +00:00
renovate[bot]
5a2edebc2b chore(deps): update actions/checkout action to v5 (#36709)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 14:25:48 +00:00
Echo
90d4b3b943 Refactor: Media Modal (#36673) 2025-11-04 13:58:35 +00:00
Echo
13457111d5 Remove announcement margin when in Advanced Web Interface (#36714) 2025-11-04 13:37:34 +00:00
Claire
3a54d56fbd Fix quote dropdown menu item in detailed status view (#36704) 2025-11-04 11:01:25 +00:00
Claire
b5c550ff0b Remove option to disable access to local topic feeds for logged-in users (#36703) 2025-11-04 10:37:43 +00:00
renovate[bot]
6c176e56ee chore(deps): update dependency opentelemetry-instrumentation-pg to '~> 0.33.0' (#36701)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 10:36:04 +00:00
Jeong Arm
b999a626e5 Reverse 'Hide/Show all' eye icon for thread view (#22301) 2025-11-04 10:35:50 +00:00
renovate[bot]
bb084da1f5 fix(deps): update dependency pino-http to v11 (#36359)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 10:28:30 +00:00
renovate[bot]
84e351cc3a chore(deps): update dependency shoulda-matchers to v7 (#36680)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 10:21:27 +00:00
renovate[bot]
7fced55ce7 fix(deps): update dependency pino to v10 (#36357)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 09:56:12 +00:00
Matt Jankowski
8f37f9d012 Update vitest to version 4.0.5 (#36652) 2025-11-04 09:47:30 +00:00
Matt Jankowski
8e4c9cf933 Update lint-staged to version 16.2.6 (#36668) 2025-11-04 09:43:38 +00:00
Matt Jankowski
cf87da25ad Update storybook to version 10.0.2 (#36657) 2025-11-04 09:42:27 +00:00
renovate[bot]
966aaaaf56 chore(deps): update dependency sidekiq to v8.0.9 (#36699)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 09:41:59 +00:00
renovate[bot]
5b880a2046 chore(deps): update dependency brakeman to v7.1.1 (#35434)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 09:32:38 +00:00
renovate[bot]
24aa5d0460 fix(deps): update dependency @rails/ujs to v7.1.600 (#36634)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 08:41:19 +00:00
Claire
5ac3cceaf5 Increase number of quote approval job retries (#36698) 2025-11-04 08:29:27 +00:00
github-actions[bot]
e5fbb49033 New Crowdin Translations (automated) (#36697)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-04 08:10:20 +00:00
Rachael Wright-Munn
d1f57822af Move "Privacy and reach" from "Public profile" to top-level navigation (#27294) 2025-11-03 17:56:17 +00:00
Claire
9b3e92bf17 Prevent creation of Private Mentions quoting someone who is not mentioned (#36689) 2025-11-03 14:16:25 +00:00
Claire
e79e42f8f1 Fix issuance of quote approval for remote private statuses (#36693) 2025-11-03 14:15:18 +00:00
Claire
bae5877c84 Disable paste-link-to-quote flow when composing Private Mentions (#36690) 2025-11-03 13:56:07 +00:00
github-actions[bot]
61c0daffc9 New Crowdin Translations (automated) (#36676)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-11-03 12:21:04 +00:00
renovate[bot]
f10c79c8d1 chore(deps): update dependency irb to v1.15.3 (#36682)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-03 11:05:26 +00:00
renovate[bot]
8781abf2bd chore(deps): update dependency sass to v1.93.3 (#36674)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-03 09:26:54 +00:00
renovate[bot]
7faf2eaa79 chore(deps): update dependency jsdom to v27.1.0 (#36663)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-03 09:23:25 +00:00
renovate[bot]
0bf974a758 chore(deps): update dependency haml_lint to v0.67.0 (#36645)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-03 09:21:51 +00:00
renovate[bot]
5c0c77223b chore(deps): update node.js to 24.11 (#36630)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-03 09:21:07 +00:00
renovate[bot]
5fe74d2092 chore(deps): update dependency rubyzip to v3.2.2 (#36687)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-03 09:09:54 +00:00
diondiondion
055f581ca5 Fix initially selected language in Rules panel, hide selector when no alternative translations exist (#36672) 2025-10-31 14:20:59 +00:00
Claire
8a2826604c Bump version to v4.6.0-alpha.1 (#36667) 2025-10-31 13:24:26 +00:00
Matt Jankowski
d865a095d0 Update eslint-plugin-jsdoc to version 61.1.11 (#36653) 2025-10-31 11:07:48 +00:00
renovate[bot]
35abaa7ff1 chore(deps): update dependency axios to v1.13.1 (#36633)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-31 10:31:57 +00:00
renovate[bot]
fd4e51b3d8 chore(deps): update dependency libvips to v8.17.3 (#36654)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-31 10:30:55 +00:00
renovate[bot]
2c4367bcfc chore(deps): update dependency rubocop to v1.81.7 (#36662)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-31 10:24:36 +00:00
github-actions[bot]
d47ca1cc36 New Crowdin Translations (automated) (#36660)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-31 10:24:16 +00:00
diondiondion
499ddfe8e1 Add separate translation key for "About this server" string (#36664) 2025-10-31 10:07:10 +00:00
Matt Jankowski
7b61ad936d Update playwright-ruby-client to version 1.56.0 (#36655) 2025-10-31 09:52:23 +00:00
diondiondion
fcecbf31ed Show error when submitting empty post rather than failing silently (#36650) 2025-10-30 19:29:25 +00:00
Matt Jankowski
aefd728309 Use before_action to protect hidden collections in following/followers lists (#35783) 2025-10-30 16:34:19 +00:00
renovate[bot]
13a070f8d1 chore(deps): update dependency webmock to v3.26.1 (#36648)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-30 16:03:47 +00:00
Echo
28cb345131 Fix: Ensure carousel focuses on wrapper (#36649) 2025-10-30 13:08:24 +00:00
Echo
f3d9a4ed44 Add CSS Module support (#36637) 2025-10-30 12:30:42 +00:00
Claire
762e87b121 Fix SMTP configuration with mail 2.9.0 (#36646) 2025-10-30 11:21:32 +00:00
Joshua Byrd
e5e9f8da93 Fix og:images from The Guardian (and possibly other CDNs that check URL hashes) (#36139)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2025-10-30 10:57:07 +00:00
Echo
ff1e19a506 Silence Storybook build warning (#36647) 2025-10-30 10:51:34 +00:00
renovate[bot]
2c5d3f934c chore(deps): update dependency oj to v3.16.12 (#36644)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-30 08:13:50 +00:00
github-actions[bot]
a77038b288 New Crowdin Translations (automated) (#36641)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-30 07:52:39 +00:00
Dima
ebf5cee38e Fix media URL inconsistency when deleting statuses via API (#35880) 2025-10-29 16:46:16 +00:00
Echo
e7cd5a430e Refactor carousel components (#36425)
Co-authored-by: diondiondion <mail@diondiondion.com>
2025-10-29 14:44:46 +00:00
Claire
2a9c7d2b9e Fix quote-inline fallback being removed even for legacy quotes (#36638) 2025-10-29 11:56:34 +00:00
Claire
51877081b4 Bump version to v4.5.0-rc.1 (#36635) 2025-10-29 11:11:33 +00:00
github-actions[bot]
7b66eefd3e New Crowdin Translations (automated) (#36632)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-29 10:13:42 +00:00
Claire
e437bb919f Change display of blocked and muted quoted users (#36619) 2025-10-29 09:13:12 +00:00
Claire
4896d2c4c6 Change firehose labels depending on which feeds are accessible (#36607) 2025-10-28 16:59:37 +00:00
Renaud Chaput
795aaa14bf Remove environment variables to config Fetch All Replies behaviour (#36627) 2025-10-28 15:58:18 +00:00
diondiondion
e1bd9b944a chore(deps): update dependency eslint-plugin-jsdoc to v60 (#36466) 2025-10-28 15:17:33 +00:00
Claire
26ec19a649 Change styling of column banners (#36531) 2025-10-28 14:45:46 +00:00
Claire
b01d21c4d4 Hashtag fixes (#36625) 2025-10-28 14:26:08 +00:00
Claire
3ccb6632f2 Fix mention matching ignoring path (#36626) 2025-10-28 14:05:39 +00:00
Claire
8fb524e07f Add support for Update of converted object types (#36322) 2025-10-28 14:05:14 +00:00
Echo
9c7d09993d Fix props in DisplayName component (#36622) 2025-10-28 14:02:37 +00:00
renovate[bot]
3efc747be3 Update dependency axios to v1.13.0 (#36612)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 13:26:05 +00:00
renovate[bot]
1f5cdb30c7 Update dependency @vitejs/plugin-react to v5.1.0 (#36600)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 13:23:38 +00:00
renovate[bot]
3cace4098a Update dependency devise-two-factor to v6.2.0 (#36574)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 13:23:32 +00:00
Claire
ccfac2716d Add streaming server side filtering for live/topic feed settings (#36585) 2025-10-28 13:23:05 +00:00
diondiondion
422fa1cf9f Revert "Fix custom emoji width (#27969)" (#36620) 2025-10-28 12:36:22 +00:00
renovate[bot]
2b5f6838ed Update dependency annotaterb to v4.20.0 (#36527)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 11:59:21 +00:00
Echo
85d0cdb5f7 Emoji: Remove final flag (#36409) 2025-10-28 11:33:27 +00:00
renovate[bot]
e4fc18abfd Update dependency simple_form to v5.4.0 (#36604)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 11:29:07 +00:00
renovate[bot]
e322c1777b Update dependency webmock to v3.26.0 (#36605)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 11:27:54 +00:00
Nicholas La Roux
f53c4db05c [Vite] Remove overridden build.target in favor of legacy plugin defaults (#36611) 2025-10-28 11:22:41 +00:00
renovate[bot]
4905c194b8 Update dependency mail to v2.9.0 (#36575)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 08:32:36 +00:00
renovate[bot]
7ba06a661c Update dependency @reduxjs/toolkit to v2.9.2 (#36572)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 08:32:29 +00:00
github-actions[bot]
5d00ae7eb3 New Crowdin Translations (automated) (#36617)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-28 08:29:36 +00:00
Claire
4b42fe6aba Change API behavior of reblogs wrt. quotes for consistency (#36559) 2025-10-28 08:05:23 +00:00
Claire
3bf99b8a4a Fix URL comparison for mentions in case of empty path (#36613) 2025-10-27 18:19:52 +00:00
Echo
d0d09fd3a5 Emoji: Fix Web Worker import (#36603) 2025-10-27 17:36:01 +00:00
Eugen Rochko
76053fb4a9 Fix hashtags not being picked up when full-width hash sign is used (#36103)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2025-10-27 17:18:01 +00:00
David Roetzel
402686c76c Remove http_message_signatures feature flag (#36610) 2025-10-27 16:06:44 +00:00
marousta
dc851c9efc Fix custom emoji width (#27969) 2025-10-27 15:56:06 +00:00
Eugen Rochko
1dead10312 Change min. characters required for logged-out account search from 5 to 3 (#36487) 2025-10-27 15:52:21 +00:00
M.J. Fieggen (Joni)
e8382c7332 Fix layout of severed relationships when purged events are listed (#36593) 2025-10-27 15:19:38 +00:00
Eugen Rochko
bfcf21e915 Fix vacuums being interrupted by a single batch failure (#36606) 2025-10-27 14:22:54 +00:00
Matt Jankowski
b60bae6361 Handle unreachable network error for search services (#36587) 2025-10-27 13:28:56 +00:00
Claire
38f15a89fe Fix recent settings migrations (#36602) 2025-10-27 12:24:24 +00:00
renovate[bot]
ab5b7e3776 Update dependency webauthn to v3.4.3 (#36599)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-27 10:21:12 +00:00
renovate[bot]
1230d05b18 Update dependency rubyzip to v3.2.1 (#36598)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-27 10:21:08 +00:00
Renaud Chaput
779a1f8448 Add a new setting to choose the server landing page (#36588) 2025-10-27 10:16:59 +00:00
github-actions[bot]
e40ca321ed New Crowdin Translations (automated) (#36590)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-27 09:45:37 +00:00
renovate[bot]
5f837001e6 Update opentelemetry-ruby (non-major) (#36557)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-27 09:40:13 +00:00
Matt Jankowski
2640cf5317 Update stoplight to version 5.4.0 (#36581) 2025-10-27 09:38:01 +00:00
diondiondion
1ba579b0a1 Fix "new post highlighting" in threads being applied when navigating between posts (#36583) 2025-10-23 15:52:07 +00:00
Claire
6b2051b7b3 Fix bookmarks export when one bookmarked status is soft-deleted (#36576) 2025-10-23 11:51:23 +00:00
Claire
2fa5dd6d1f Add UI support for disabled live feeds (#36577)
Co-authored-by: diondiondion <mail@diondiondion.com>
2025-10-23 09:59:43 +00:00
github-actions[bot]
f7b99cd48a New Crowdin Translations (automated) (#36569)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-23 09:29:02 +00:00
renovate[bot]
92aeecfbdc Update dependency vite to v7.1.12 (#36573)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-23 08:41:34 +00:00
Claire
7774cd6670 Add disabled setting for live and topic feeds, as well as user permission to bypass that (#36563) 2025-10-23 08:37:05 +00:00
Claire
9f7075a0ce Remove unnecessary restrictions on HTML handling (#36548) 2025-10-22 13:55:41 +00:00
renovate[bot]
c40648f7b3 Update dependency pino to v9.14.0 (#36529)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-22 13:53:20 +00:00
renovate[bot]
2bd5c2f528 Update dependency ioredis to v5.8.2 (#36544)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-22 13:52:59 +00:00
renovate[bot]
1e28ec628b Update dependency rubocop to v1.81.6 (#36541)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-22 13:52:43 +00:00
diondiondion
7538bc77b7 Fix text overflow alignment for long author names in News (#36562) 2025-10-22 13:08:51 +00:00
diondiondion
7ea2af6ae2 Refresh thread replies periodically & when refocusing window (#36547) 2025-10-22 09:43:03 +00:00
belatedly
6adbd9ce52 Fix discovery preamble missing word in EN and EN-GB locales (#36560) 2025-10-22 09:18:02 +00:00
github-actions[bot]
08ae77fd9c New Crowdin Translations (automated) (#36556)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-22 08:24:40 +00:00
Claire
17eb1a7e66 Fix scheduled quote posts being posted as non-quote posts (#36550) 2025-10-21 16:00:40 +00:00
Claire
aba30a85be Fix value of quote_approval_policy and quoted_status_id in ScheduledStatus serializer (#36549) 2025-10-21 16:00:30 +00:00
Renaud Chaput
de80a54555 Update recommended Node version to 24 (LTS) (#36539) 2025-10-21 14:26:24 +00:00
Renaud Chaput
b80ec3721d Drop support for PostgreSQL 13 (#36540) 2025-10-21 14:26:00 +00:00
Claire
118ff13bd0 Bump version to v4.5.0-beta.2 (#36543) 2025-10-21 13:43:38 +00:00
Claire
405a49df44 Merge commit from fork
* Refuse granting quote authorization for reblogs

* Add validation to reject quotes of reblogs

* Do not process quotes of reblogs as potentially valid quotes

* Refuse to serve quoted reblogs over REST API
2025-10-21 15:00:28 +02:00
github-actions[bot]
2b9e4294fe New Crowdin Translations (automated) (#36538)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-21 08:50:24 +00:00
Matt Jankowski
2eccd7b53c Specs for validation error in API responses (#36507) 2025-10-21 07:33:30 +00:00
renovate[bot]
74172ced81 Update dependency playwright to v1.55.1 [SECURITY] (#36534)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-21 07:20:24 +00:00
renovate[bot]
341ea7f462 Update dependency vite to v7.1.11 (#36526)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-20 17:07:28 +00:00
renovate[bot]
168cba35e3 Update dependency puma to v7.1.0 (#36519)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-20 17:07:11 +00:00
Echo
6e2973aa2d Emoji: Fix unneeded re-renders when StatusContent changes (#36532) 2025-10-20 14:52:27 +00:00
Claire
97c8cc5606 Fix position of quote dropdown menu item when “quick boosting” is enabled (#36528) 2025-10-20 13:05:40 +00:00
Echo
50dfab30c2 Emoji: Swap mode test to an emoji from 16.0 (#36530) 2025-10-20 13:04:38 +00:00
renovate[bot]
53e20d5c83 Update dependency jsdom to v27.0.1 (#36524)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-20 12:11:04 +00:00
renovate[bot]
0a1111d5a5 Update dependency @reduxjs/toolkit to v2.9.1 (#36515)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-20 12:10:45 +00:00
renovate[bot]
95be29d700 Update dependency rubocop-performance to v1.26.1 (#36525)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-20 10:56:54 +00:00
Ben Sheldon [he/him]
843c43c97a Replace ThreadingHelper wait loop with functional CyclicBarrier (#36508) 2025-10-20 10:10:43 +00:00
github-actions[bot]
82483ed8b0 New Crowdin Translations (automated) (#36520)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-20 10:10:37 +00:00
renovate[bot]
612771de46 Update dependency rack-attack to v6.8.0 (#36471)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-17 14:10:42 +00:00
renovate[bot]
950e7beeea Update dependency rubyzip to v3.2.0 (#36472)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-17 14:10:39 +00:00
renovate[bot]
1018a4def4 Update dependency vite-plugin-static-copy to v3.1.4 (#36480)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-17 14:10:36 +00:00
Claire
811c1eaf7e Fix relationship not being fetched to evaluate whether to show a quote post (#36517) 2025-10-17 13:03:18 +00:00
diondiondion
6dad80eb8c Add new "quick boosting" setting (#36516) 2025-10-17 13:02:47 +00:00
Claire
c96e28a41d Change HttpMessageSignature to perform assertions directly on Linzer objects (#36510) 2025-10-17 08:41:28 +00:00
github-actions[bot]
ccac6da3e8 New Crowdin Translations (automated) (#36513)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-17 08:41:07 +00:00
diondiondion
20961c7538 Add keyboard shortcut info banner to the boosting preferences section (#36506) 2025-10-16 14:53:23 +00:00
Echo
63dc426fae Emoji: Fix emoji picker not centering native emoji (#36502) 2025-10-16 13:45:20 +00:00
Emelia Smith
210b389643 Implement quote posts in Moderator UI (#35964) 2025-10-16 13:40:24 +00:00
Echo
51d0bfcb38 Emoji: Update Twemoji to v16 (#36501) 2025-10-16 13:15:16 +00:00
Echo
7530f06dee Emoji: Fix autoplay incorrectly being applied (#36503) 2025-10-16 12:46:17 +00:00
renovate[bot]
28339cad6d Update dependency rollup-plugin-visualizer to v6.0.5 (#36499)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-16 10:29:13 +00:00
github-actions[bot]
5404f92cee New Crowdin Translations (automated) (#36494)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-16 10:29:07 +00:00
diondiondion
05244c335d Restructure appearance settings to introduce new Advanced settings section (#36496) 2025-10-16 09:44:24 +00:00
Claire
241ad1c587 Update docker-compose.yml sidekiq health check to work for both 4.4 and 4.5 (#36498) 2025-10-16 09:24:22 +00:00
Claire
ef53dcfd8c Fix pinned hashtag columns fully refreshing unprompted (#36497) 2025-10-16 09:10:53 +00:00
diondiondion
869eeecfee Show new replies early if the fetch-all-replies task takes long to finish (#36481) 2025-10-15 17:30:47 +00:00
diondiondion
28a42bb62c Fix low-contrast hover colour of alert actions (light theme only) (#36484) 2025-10-15 15:38:36 +00:00
Aung Htet Nay
905aa9434d Change FFmpeg source to GitHub mirror in Dockerfile (#36424) 2025-10-15 15:25:39 +00:00
Claire
5a8ab0a3e6 Update changelog with last-minute changes (#36482) 2025-10-15 14:12:33 +00:00
Claire
c5fb080ab8 Bump version to v4.5.0-beta.1 (#36479) 2025-10-15 13:09:25 +00:00
Claire
fab0dd0bcf Change redirection for denied registration from web app to sign-in page with error message (#36384) 2025-10-15 11:37:22 +00:00
Matt Jankowski
c6de46d12d Update stylelint-config-standard-scss to version 16.0.0 (#36429)
Co-authored-by: diondiondion <mail@diondiondion.com>
2025-10-15 11:30:09 +00:00
Claire
3160f5746d Bump version to v4.4.7 (#36478) 2025-10-15 09:11:03 +00:00
Emelia Smith
d8bdce2835 Fix rendering of poll options in status history modal (#35633) 2025-10-15 09:05:10 +00:00
github-actions[bot]
339673d533 New Crowdin Translations (automated) (#36476)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-15 08:54:47 +00:00
renovate[bot]
d0d1fcd034 Update opentelemetry-ruby (non-major) (#36477)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-15 07:56:45 +00:00
renovate[bot]
3550508421 Update dependency core-js to v3.46.0 (#36417)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-15 07:55:10 +00:00
renovate[bot]
e3e5067772 Update formatjs monorepo (#36415)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-15 07:11:45 +00:00
renovate[bot]
5fd380096f Update dependency vite-plugin-pwa to v1.1.0 (#36452)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-15 07:10:52 +00:00
renovate[bot]
d788e45628 Update dependency vite to v7.1.10 (#36468)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-15 07:08:49 +00:00
Claire
264d068d8d Change new accounts to use new ActivityPub numeric ID scheme (#36365) 2025-10-14 16:36:55 +00:00
Claire
50743cc35b Fix forwarder being called with nil status when quote post is soft-deleted (#36463) 2025-10-14 15:15:45 +00:00
Claire
fd516347cb Fix deletion of posts quoting soft-deleted local post (#36461) 2025-10-14 15:15:38 +00:00
Claire
3232eee358 Fix error in logged-out hashtag view when remote posts require log-in (#36467) 2025-10-14 14:04:18 +00:00
github-actions[bot]
484225895f New Crowdin Translations (automated) (#36457)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-14 12:26:21 +00:00
Claire
156f031ed0 Fix WebUI mistakenly allowing to attach quotes when editing (#36464) 2025-10-14 12:21:13 +00:00
renovate[bot]
ad858ebe81 Update dependency strong_migrations to v2.5.1 (#36458)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-14 12:17:40 +00:00
Jonathan de Jong
f2f711deeb Fix allow_referrer_origin typo (#36460) 2025-10-14 12:07:15 +00:00
Claire
44ecc4b1e3 Fix moderation warning e-mails that include posts (#36462) 2025-10-14 11:48:51 +00:00
Echo
0c64e7f75e Emoji: Cleanup new code (#36402) 2025-10-14 09:36:25 +00:00
diondiondion
9a001e7839 Fix videos not being indented properly in thread view (#36459) 2025-10-14 08:58:03 +00:00
Echo
edd7fd9872 Emoji: Picker native rendering (#36454) 2025-10-13 15:29:39 +00:00
Eugen Rochko
33f739da44 Fix permalink redirects continuing to work for suspended accounts (#36453) 2025-10-13 15:18:01 +00:00
Claire
254fff93ca Bump version to v4.4.6 (#36447) 2025-10-13 14:31:12 +00:00
Claire
2971ac9863 Fix streaming still being authorized for suspended accounts (#36448) 2025-10-13 13:35:44 +00:00
Emelia Smith
7e98fa9b47 Merge commit from fork
* Require read, read:statuses or read:notifications scope to access streaming APIs

* Add additional tests for scope-based channel access

We were missing tests in the affirmative for subscribing to the user:notification channel, this adds them
2025-10-13 14:20:57 +02:00
Emelia Smith
24dcb18013 Merge commit from fork
* Ensure tootctl revokes sessions, access tokens and web push subscriptions

* Fix test coverage
2025-10-13 14:20:23 +02:00
Emelia Smith
8d09e4ef23 Merge commit from fork
* Streaming: Ensure disabled users cannot connect to streaming

* Streaming: Disconnect when the user is disabled
2025-10-13 14:19:14 +02:00
renovate[bot]
692cfe27fa Update dependency opentelemetry-instrumentation-excon to v0.25.2 (#36436)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-13 10:01:00 +00:00
github-actions[bot]
8b78c033e8 New Crowdin Translations (automated) (#36433)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-13 09:25:52 +00:00
Claire
ab93e9fc8a Update dependency rack (#36443) 2025-10-13 09:13:17 +00:00
Claire
0219b7cad7 Add result_count to Mastodon-Async-Refresh header when needed (#36239) 2025-10-10 12:26:10 +00:00
github-actions[bot]
3f2ee09827 New Crowdin Translations (automated) (#36420)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-10 09:06:57 +00:00
Emelia Smith
8898f120dc Improve display of content warnings in Admin UI (#35935) 2025-10-10 08:55:41 +00:00
Emelia Smith
81350c7cfb Add support for displaying link previews for Admin UI (#35958) 2025-10-10 08:43:48 +00:00
Echo
c858fc77ef Fixes handled link formatting (#36410)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2025-10-09 14:31:13 +00:00
Echo
258869278e Fix: Embed author handle using wrong DisplayName (#36413) 2025-10-09 14:08:36 +00:00
Claire
d4a4a7177a Fix crash when serializing quotes of deleted posts for ActivityPub (#36381) 2025-10-09 13:52:38 +00:00
Claire
b7c5e60426 Fix quote post state sometimes not being updated through streaming server (#36408) 2025-10-09 09:53:45 +00:00
github-actions[bot]
a459ccf616 New Crowdin Translations (automated) (#36406)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-09 09:12:27 +00:00
renovate[bot]
ba70dcf827 Update docker.io/ruby Docker tag to v3.4.7 (#36407)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-09 08:25:26 +00:00
Matt Jankowski
0152659245 Use tag filter for pending tag count on admin dashboard (#36404) 2025-10-09 08:08:29 +00:00
Echo
5bc7c4b7e8 Emoji: Fixes issue with handled link not correctly showing remote users (#36403) 2025-10-08 17:17:03 +00:00
Renaud Chaput
b8444d9bb7 Do not automatically run Prettier on the streaming server code. (#36400) 2025-10-08 15:51:53 +00:00
Echo
babb7b2b9d Emoji: Announcements (#36397)
Co-authored-by: diondiondion <mail@diondiondion.com>
2025-10-08 15:07:01 +00:00
renovate[bot]
5c92312d4d Update dependency cross-env to v10.1.0 (#36297)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-08 14:19:27 +00:00
Echo
0c1ca6c969 Emoji: Statuses (#36393) 2025-10-08 14:18:11 +00:00
renovate[bot]
2b213e9b1b Update dependency ruby to v3.4.7 (#36387)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-08 14:17:42 +00:00
renovate[bot]
4fd5b6e73b Update opentelemetry-ruby (non-major) (#36313)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-08 13:15:22 +00:00
Claire
0be0a8898a Fix Update/Delete of quoted status not being forwarded to quoters's followers (#36390) 2025-10-08 12:56:32 +00:00
renovate[bot]
d8f0326b02 Update dependency sidekiq to v8.0.8 (#36388)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-08 12:39:24 +00:00
Claire
987f1e897b Fix JSON payload being potentially mutated when processing interaction policies (#36392) 2025-10-08 12:31:51 +00:00
Echo
6abda76d13 Emoji: Account page (#36385) 2025-10-08 11:11:25 +00:00
github-actions[bot]
3867f3bc61 New Crowdin Translations (automated) (#36386)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-08 10:06:30 +00:00
Renaud Chaput
4fce4337d8 Update rack and uri to the latest release (#36389) 2025-10-08 09:35:36 +00:00
Matt Jankowski
092f46f61a Use bundler version 2.7.2 (#36367) 2025-10-08 08:21:23 +00:00
diondiondion
e4c3854ae8 Ensure Fetch-all-replies snackbar is shown at the bottom of the screen (#36383) 2025-10-07 16:43:40 +00:00
renovate[bot]
aa7bcd3ae3 Update formatjs monorepo (#36356)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-07 15:34:45 +00:00
Claire
bc7119b3cb Remove unused feature flag from sample configuration file (#36382) 2025-10-07 15:34:06 +00:00
Echo
e02ea3e110 Emoji: Compare history modal (#36378) 2025-10-07 15:22:00 +00:00
Echo
3c9b828c71 Emoji: Bypass legacy emoji normalization (#36377) 2025-10-07 15:21:50 +00:00
Brad Dunbar
c578a0cb74 Resolve typescript eslint warning (#36314) 2025-10-07 14:42:15 +00:00
renovate[bot]
da6ae98e57 Update dependency ioredis to v5.8.1 (#36361)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-07 14:29:58 +00:00
renovate[bot]
fb6fd7b7e1 Update dependency pino to v9.13.1 (#36337)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-07 14:29:19 +00:00
renovate[bot]
d51717c101 Update dependency vite to v7.1.9 (#36332)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-07 14:29:04 +00:00
diondiondion
63bbe4ee16 Display quotes in email notifications (#36379) 2025-10-07 12:50:40 +00:00
github-actions[bot]
adcbab527a New Crowdin Translations (automated) (#36371)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-07 12:37:46 +00:00
Claire
a7f89d13d2 Change index on follows table to improve performance of some queries (#36374) 2025-10-07 12:37:40 +00:00
Renaud Chaput
e8dab026bb Fix quote mailer preview to use the latest quote notification (#36373) 2025-10-07 10:19:53 +00:00
Echo
9027d60420 Emoji: Remove re: from handleElement in StatusContent (#36366) 2025-10-06 16:20:15 +00:00
diondiondion
474fbb2770 Fetch all replies: Only display "More replies found" prompt when there really are new replies (#36334) 2025-10-06 14:13:24 +00:00
diondiondion
4a40f81067 Link to local accounts from settings (#36340) 2025-10-06 14:10:26 +00:00
Claire
cda07686df Add feature to automatically attach quote on eligible link past in Web UI composer (#36364) 2025-10-06 13:43:20 +00:00
Echo
68a36d5a57 Allow modern_emojis to be enabled purely server-side (#36342) 2025-10-06 13:34:51 +00:00
Echo
ffac4cb05f Emoji: Link Replacement (#36341) 2025-10-06 09:31:10 +00:00
github-actions[bot]
4dc21d7afd New Crowdin Translations (automated) (#36349)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-06 09:11:31 +00:00
Claire
2d2c525097 Split timeline_preview setting into more granular settings (#36338) 2025-10-06 08:34:05 +00:00
nicole mikołajczyk
62f91eddf4 Do not display mute button in hashtag dropdown when unauthenticated (#36353)
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
2025-10-05 14:24:54 +00:00
Claire
80c8a84740 Fix redirect to external object when URL is missing or malformed (#36347) 2025-10-03 17:30:23 +00:00
github-actions[bot]
1561517387 New Crowdin Translations (automated) (#36345)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-03 08:07:10 +00:00
renovate[bot]
5543967e5c chore(deps): update dependency rollup-plugin-visualizer to v6.0.4 (#36336)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-03 07:57:48 +00:00
diondiondion
0d7af7e1fe Allow quotes to be displayed in the featured carousel (#36335) 2025-10-02 13:51:47 +00:00
github-actions[bot]
4809b38f6e New Crowdin Translations (automated) (#36329)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-02 08:34:38 +00:00
renovate[bot]
554dd1a76a chore(deps): update dependency omniauth to v2.1.4 (#36331)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-02 08:25:40 +00:00
Brad Dunbar
f69ca085db ESLint: Ignore .bundle directory (#36321) 2025-10-01 15:48:15 +00:00
Claire
3ee1378932 Fix approval for remote quotes of local posts not being streamed to local users (#36317) 2025-10-01 13:51:43 +00:00
Claire
f03d1bb21f Add numeric_ap_ids feature flag to switch new accounts to numeric AP identifiers (#36316) 2025-10-01 13:09:56 +00:00
diondiondion
669738ef3b Add quote/boost dropdown menu to boost button in media modal (#36315) 2025-10-01 12:18:19 +00:00
renovate[bot]
94a4e9d5a9 chore(deps): update dependency vite-plugin-static-copy to v3.1.3 (#36312)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-01 09:48:26 +00:00
github-actions[bot]
9114e72c50 New Crowdin Translations (automated) (#36308)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-10-01 09:47:16 +00:00
Terence Eden
6c3c2714d7 Add overflow to .more-from-author (#36310) 2025-10-01 09:23:49 +00:00
metalhead
e4094d9fb2 Add support for dynamic viewport height (#36272)
Co-authored-by: l <eh.chahkiev@smartics.ru>
2025-10-01 08:53:29 +00:00
Claire
d51723bb57 Add UI support for displaying quotes of other people's posts (#36301) 2025-09-30 15:10:09 +00:00
Claire
5af40ff960 Fix some routes for numeric AP identifiers (#36304) 2025-09-30 15:09:59 +00:00
diondiondion
473bd84c24 Update confirmation dialogs for follow button actions "unfollow", "unblock", and "withdraw request" (#36289) 2025-09-30 14:55:25 +00:00
Echo
c12b8f51c1 Emoji Component (#36293) 2025-09-30 13:06:02 +00:00
Brad Dunbar
ac50e5eebc Convert mastodon/initial_state to TypeScript (#36274) 2025-09-30 11:14:58 +00:00
Claire
589af7a1cc Change GET /api/v1/statuses/:id/quotes to allow listing quotes to other people's posts (#36291) 2025-09-30 09:56:03 +00:00
Claire
45219dbf64 Fix spurious notification of local boosters and quoters when updating quote policy (#36299) 2025-09-30 09:40:58 +00:00
renovate[bot]
a6236148d8 chore(deps): update dependency haml-rails to v3 (#36288)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-30 08:44:15 +00:00
Emelia Smith
5b97f25a15 Add integration tests for mastodon-streaming (#36025)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
Co-authored-by: David Roetzel <david@roetzel.de>
2025-09-30 07:27:09 +00:00
Claire
150f0fcba5 Add support for numeric-based URIs for local accounts (#32724) 2025-09-29 12:05:48 +00:00
renovate[bot]
4d7c208da3 chore(deps): update node.js to 22.20 (#36252)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-29 09:45:31 +00:00
renovate[bot]
dc72719f4c chore(deps): update dependency hiredis-client to v0.26.1 (#36286)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-29 09:30:10 +00:00
renovate[bot]
9f1a12b749 chore(deps): update dependency @vitejs/plugin-react to v5.0.4 (#36282)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-29 09:30:01 +00:00
renovate[bot]
adbd57e5a9 chore(deps): update dependency rubyzip to v3.1.1 (#36278)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-29 09:29:52 +00:00
renovate[bot]
8779bbc4c1 chore(deps): update rubocop (non-major) to v1.81.1 (#36277)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-29 09:29:37 +00:00
renovate[bot]
bbb698937a chore(deps): update dependency pino to v9.12.0 (#36287)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-29 09:29:15 +00:00
github-actions[bot]
4d8e848c6a New Crowdin Translations (automated) (#36276)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-09-29 09:16:16 +00:00
Brad Dunbar
aae9a5528a Remove shallow prop from Wrapper (#36275) 2025-09-29 09:10:27 +00:00
Claire
a44a3f6d40 Expand test coverage of ActivityPub::TagManager class (#36260) 2025-09-26 10:00:53 +00:00
diondiondion
cb5bbbfb05 Update "Follow" button labels (#36264) 2025-09-26 10:00:50 +00:00
Echo
e07b9dfdc1 Adds new HTMLBlock component (#36262) 2025-09-26 09:50:59 +00:00
diondiondion
1571514e49 Fix page being vertically scrollable in Advanced UI (#36271) 2025-09-26 09:23:30 +00:00
Brad Dunbar
238d74fe81 Refactor getFocusedItemIndex to avoid conditionals that closest already handles (#36267) 2025-09-26 08:53:08 +00:00
github-actions[bot]
7431c50566 New Crowdin Translations (automated) (#36270)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-09-26 08:42:28 +00:00
renovate[bot]
c2d426a565 chore(deps): update dependency rubocop to v1.81.0 (#36269)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-26 08:21:06 +00:00
Matt Jankowski
f61d8cb02a Hold usable value lists in admin settings form (#36268) 2025-09-26 08:21:03 +00:00
diondiondion
11bd515648 Allow accessing ref of ScrollContainer's child (#36265) 2025-09-25 16:14:49 +00:00
diondiondion
d801cf8e59 Replace react-router-scroll-4 with inlined implementation (#36253) 2025-09-25 12:26:50 +00:00
renovate[bot]
6d2493ca7c chore(deps): update dependency puma to v7.0.4 (#36240)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 10:03:53 +00:00
Claire
66686994c1 Fix not being able to author quotes with CW but no text (#36153)
Co-authored-by: diondiondion <mail@diondiondion.com>
2025-09-25 09:25:00 +00:00
Renaud Chaput
719b2de3c3 Update uuid package to latest version (#36259) 2025-09-25 08:54:02 +00:00
github-actions[bot]
d2bdb03da0 New Crowdin Translations (automated) (#36258)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-09-25 08:53:58 +00:00
renovate[bot]
507e6dc473 fix(deps): update dependency ioredis to v5.8.0 (#36234)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 07:58:20 +00:00
renovate[bot]
52d5e628a4 chore(deps): update dependency hiredis-client to v0.26.0 (#36233)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 07:57:47 +00:00
renovate[bot]
85213dab47 chore(deps): update yarn to v4.10.3 (#36178)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 07:56:33 +00:00
renovate[bot]
8fac87d77c chore(deps): update dependency rails to v8.0.3 (#36230)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 07:55:46 +00:00
renovate[bot]
fda3589498 fix(deps): update dependency sass to v1.93.2 (#36231)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 07:55:09 +00:00
renovate[bot]
0798d0c95a chore(deps): update dependency pundit to v2.5.2 (#36251)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 07:54:58 +00:00
renovate[bot]
33fd8c774b chore(deps): update dependency webauthn to v3.4.2 (#36243)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 07:54:41 +00:00
renovate[bot]
e0f7aedf41 chore(deps): update dependency propshaft to v1.3.1 (#36241)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-25 07:54:07 +00:00
renovate[bot]
cc54b33720 chore(deps): update dependency typescript to ~5.9.0 (#36212)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: diondiondion <mail@diondiondion.com>
2025-09-25 07:52:37 +00:00
Claire
df72a2dbbe Fix newly-highlighted replies not being interactable (#36256) 2025-09-24 20:37:20 +00:00
Claire
28be5a199f Fix Private Messages self-quoting private posts being changed to followers-only (#36249) 2025-09-24 10:58:52 +00:00
diondiondion
3a81ee8f5b Implement new design for "Refetch all" (#36172) 2025-09-24 09:54:07 +00:00
Echo
29d9f81e42 Fix missed event handler (#36248) 2025-09-24 09:37:11 +00:00
diondiondion
059bf1e980 Highlight newly added replies in thread view (#36237) 2025-09-24 09:27:33 +00:00
github-actions[bot]
23a69e3bd7 New Crowdin Translations (automated) (#36246)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-09-24 09:18:50 +00:00
Claire
e1f7847b64 Remove the outgoing_quotes feature flag, making the feature unconditional (#36130) 2025-09-24 08:58:08 +00:00
diondiondion
6cbc857ee0 Fix unfortunate action button wrapping in admin area (#36247) 2025-09-24 08:57:18 +00:00
David Roetzel
37cec638df Update to puma 7 (#36238) 2025-09-23 13:40:04 +00:00
github-actions[bot]
82f5901a3f New Crowdin Translations (automated) (#36228)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-09-23 09:56:46 +00:00
Echo
6bd90940b6 Refactor emoji GIF animation (#36165) 2025-09-23 08:53:14 +00:00
Claire
24ddf80ff7 Revert "Add compatibility hack for GoToSocial interaction policies (#36004)" (#36218) 2025-09-23 08:14:11 +00:00
renovate[bot]
8e6c0fdf5a chore(deps): update dependency simplecov-lcov to v0.9.0 (#35884)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 16:18:01 +00:00
renovate[bot]
bdadfe60cb chore(deps): update dependency ffmpeg to v8 (#35886)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 16:16:49 +00:00
Claire
64895e5f6d Add support for has:quote in search (#36217) 2025-09-22 16:03:22 +00:00
renovate[bot]
dc808054d2 chore(deps): update opentelemetry-ruby (non-major) (#35831)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 15:46:27 +00:00
renovate[bot]
4b1d7490d2 chore(deps): update devdependencies (non-major) (#35889)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 15:45:24 +00:00
renovate[bot]
107d2a9f93 chore(deps): update playwright to v1.55.0 (#36222)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 15:38:59 +00:00
renovate[bot]
6c2c485638 chore(deps): update storybook (non-major) (#36221)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Renaud Chaput <renchap@gmail.com>
2025-09-22 15:01:03 +00:00
Itoh Shimon
99d5af9914 Add Traditional Mongolian to posting languages (#36196) 2025-09-22 14:05:07 +00:00
renovate[bot]
45a044cad0 fix(deps): update dependency debug to v4.4.3 (#36058)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 13:57:59 +00:00
Renaud Chaput
63a2ef6274 Force playwright-ruby-client version to keep it in sync with the NPM package (#36225) 2025-09-22 13:56:08 +00:00
renovate[bot]
91e666bcaa fix(deps): update dependency postcss-preset-env to v10.4.0 (#35873)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 13:54:38 +00:00
renovate[bot]
da272d13e2 fix(deps): update dependency react-swipeable-views to v0.14.1 (#36208)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 13:53:49 +00:00
renovate[bot]
28264c5c86 fix(deps): update dependency sass to v1.93.0 (#36199)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 13:52:52 +00:00
renovate[bot]
0ac2d11ac8 fix(deps): update dependency @vitejs/plugin-react to v5.0.3 (#36146)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 13:52:26 +00:00
renovate[bot]
5f2091d8d2 fix(deps): update dependency vite to v7.1.7 (#36177)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 13:51:42 +00:00
diondiondion
e473583da0 Add quote-related info to a post's aria-label (#36169) 2025-09-22 13:50:29 +00:00
renovate[bot]
4a99025d02 chore(deps): update docker/dockerfile docker tag to v1.18 (#36213)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 13:49:30 +00:00
renovate[bot]
5398dd9ee1 fix(deps): update dependency pino to v9.11.0 (#35767)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 13:49:05 +00:00
Matt Jankowski
4abc442add Refer to pinnable visibilities constant from status serializer pinnable? attribute (#35852) 2025-09-22 13:45:23 +00:00
renovate[bot]
1f2a84b3d0 chore(deps): update dependency net-ldap to v0.20.0 (#35871)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 13:34:05 +00:00
renovate[bot]
00cc6c40eb chore(deps): update dependency annotaterb to v4.19.0 (#35943)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 13:16:44 +00:00
renovate[bot]
187afeaee7 chore(deps): update dependency nokogiri to v1.18.10 (#36120)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 13:14:38 +00:00
Renaud Chaput
b1c91d885a Remove Renovate postUpgrade commands (#36223) 2025-09-22 12:44:16 +00:00
diondiondion
66afc13b7f Left-align boost/quote menu to prevent shift based on descriptions (#36220) 2025-09-22 11:54:06 +00:00
Renaud Chaput
6689040fc6 Renovate config improvements (#36209) 2025-09-22 09:08:35 +00:00
diondiondion
9bd151808c Fix line break in Read more button (#36216) 2025-09-22 08:39:32 +00:00
github-actions[bot]
a42258eca2 New Crowdin Translations (automated) (#36198)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-09-22 07:59:19 +00:00
renovate[bot]
a95deddeab chore(deps): update dependency stoplight to v5.3.8 (#36191)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-22 07:40:55 +00:00
Matt Jankowski
854aaec6fe Spec for newline in request lib initialize (#36170) 2025-09-19 15:22:23 +00:00
David Roetzel
f316cd51c8 Enable GH actions scanning with CodeQL (#36193) 2025-09-19 13:14:24 +00:00
Claire
ea7371c183 Return 404 for quote approval when either quoted or quoting status is deleted (#36194) 2025-09-19 12:55:30 +00:00
Claire
4ff215f19b Update dependency rexml (#36192) 2025-09-19 12:19:10 +00:00
Claire
938b54dff0 Switch stoplight back to upstream releases (#36188) 2025-09-19 10:02:46 +00:00
Claire
a0a56a4c7b Fix processing of out-of-order Update as implicit updates (#36190) 2025-09-19 09:52:17 +00:00
Claire
b6bc42aaa6 Fix getting Create and Update out of order (#36176) 2025-09-19 08:45:13 +00:00
github-actions[bot]
23efdf12cb New Crowdin Translations (automated) (#36187)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-09-19 07:58:45 +00:00
Claire
48005c55ff Add short-time HTTP caching of quote authorizations for public posts (#36171) 2025-09-18 17:03:07 +00:00
Claire
e2171f5083 Change quoted posts from silenced accounts not to be hidden (#36166) 2025-09-18 13:21:17 +00:00
Claire
16a6e5c118 Add click-through for quoted limited accounts (#36167) 2025-09-18 12:46:31 +00:00
diondiondion
c368a16dc1 Fix translate button width in Safari (#36164) 2025-09-18 10:16:22 +00:00
github-actions[bot]
bb3f9ed13b New Crowdin Translations (automated) (#36160)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-09-18 08:17:25 +00:00
Claire
90765342a3 Fix posts when omitting quote policy and default policy is nobody (#36158) 2025-09-17 19:16:36 +00:00
diondiondion
085e9ea676 Create reusable Alert/Snackbar component (#36141) 2025-09-17 15:24:39 +00:00
Claire
db0cd9489c Bump version to v4.4.4 (#36152) 2025-09-17 12:19:03 +00:00
Claire
fbf093a87f Fix CW being moved to text when posting quote posts with empty text (#36151) 2025-09-17 12:19:00 +00:00
Claire
2664bb628b Fix quote with CW but no text being shown without CW (#36150) 2025-09-17 12:00:58 +00:00
renovate[bot]
8a6ef2ebdf fix(deps): update dependency jsdom to v27 (#36107)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-17 09:46:30 +00:00
renovate[bot]
de3692ca00 chore(deps): update docker.io/ruby docker tag to v3.4.6 (#36145)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-17 09:44:16 +00:00
renovate[bot]
72fff2e54f chore(deps): update dependency ruby to v3.4.6 (#36135)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-17 09:44:12 +00:00
Echo
dfef7d9407 Refactor: Replace all display name usage for new component (#36137) 2025-09-17 09:00:57 +00:00
github-actions[bot]
ff03938808 New Crowdin Translations (automated) (#36143)
Co-authored-by: GitHub Actions <noreply@github.com>
2025-09-17 07:27:03 +00:00
Jeong Arm
3055afd1d2 Fix applying user's default quote policy if API parameter is not specified (#36132) 2025-09-17 07:08:55 +00:00
Eugen Rochko
d9b70bbde1 Fix login page linking to other pages within OAuth authorization flow (#36115) 2025-09-16 14:25:21 +00:00
Claire
d1402af0b2 Change reblog button to immediately show the interaction modal when logged out (#36138) 2025-09-16 12:23:44 +00:00
2789 changed files with 108438 additions and 43441 deletions

View File

@@ -1,6 +1,6 @@
defaults
> 0.2%
firefox >= 78
> 0.2% and not ios < 15.6
firefox >= 91
ios >= 15.6
not dead
not OperaMini all

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:4.0-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
@@ -73,7 +73,7 @@ services:
hard: -1
libretranslate:
image: libretranslate/libretranslate:v1.6.2
image: libretranslate/libretranslate:v1.7.3
restart: unless-stopped
volumes:
- lt-data:/home/libretranslate/.local

View File

@@ -88,24 +88,3 @@ S3_ALIAS_HOST=files.example.com
# -----------------------
IP_RETENTION_PERIOD=31556952
SESSION_RETENTION_PERIOD=31556952
# Fetch All Replies Behavior
# --------------------------
# When a user expands a post (DetailedStatus view), fetch all of its replies
# (default: false)
FETCH_REPLIES_ENABLED=false
# Period to wait between fetching replies (in minutes)
FETCH_REPLIES_COOLDOWN_MINUTES=15
# Period to wait after a post is first created before fetching its replies (in minutes)
FETCH_REPLIES_INITIAL_WAIT_MINUTES=5
# Max number of replies to fetch - total, recursively through a whole reply tree
FETCH_REPLIES_MAX_GLOBAL=1000
# Max number of replies to fetch - for a single post
FETCH_REPLIES_MAX_SINGLE=500
# Max number of replies Collection pages to fetch - total
FETCH_REPLIES_MAX_PAGES=500

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. v4.0.5)
- Node.js version: (from `node --version`, eg. v22.16.0)
validations:
required: false

View File

@@ -61,7 +61,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. v4.0.5)
- Node.js version: (from `node --version`, eg. v22.16.0)
validations:
required: false

View File

@@ -9,21 +9,21 @@ runs:
using: 'composite'
steps:
- name: Set up Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version-file: '.nvmrc'
# The following is needed because we can not use `cache: true` for `setup-node`, as it does not support Corepack yet and mess up with the cache location if ran after Node is installed
- name: Enable corepack
shell: bash
run: corepack enable
run: npm i -g corepack
- name: Get yarn cache directory path
id: yarn-cache-dir-path
shell: bash
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- uses: actions/cache@v4
- uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # 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

@@ -1,4 +1,4 @@
name: 'Setup RUby'
name: 'Setup Ruby'
description: 'Setup a Ruby environment ready to run the Mastodon code'
inputs:
ruby-version:
@@ -14,10 +14,16 @@ 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 \
libheif-plugin-aomdec \
libheif-plugin-libde265 \
${{ inputs.additional-system-dependencies }}
- name: Set up Ruby
uses: ruby/setup-ruby@v1
uses: ruby/setup-ruby@afeafc3d1ab54a631816aba4c914a0081c12ff2f # v1
with:
ruby-version: ${{ inputs.ruby-version }}
bundler-cache: true

View File

@@ -5,7 +5,7 @@
'customManagers:dockerfileVersions',
':labels(dependencies)',
':prConcurrentLimitNone', // Remove limit for open PRs at any time.
':prHourlyLimit2', // Rate limit PR creation to a maximum of two per hour.
':enableVulnerabilityAlertsWithLabel(security)',
],
rebaseWhen: 'conflicted',
minimumReleaseAge: '3', // Wait 3 days after the package has been published before upgrading it
@@ -22,8 +22,6 @@
// Require Dependency Dashboard Approval for major version bumps of these node packages
matchManagers: ['npm'],
matchPackageNames: [
'tesseract.js', // Requires code changes
// react-router: Requires manual upgrade
'history',
'react-router-dom',
@@ -93,6 +91,19 @@
matchUpdateTypes: ['patch', 'minor'],
groupName: 'eslint (non-major)',
},
{
// Group all Storybook-related packages in the same PR
matchManagers: ['npm'],
matchPackageNames: [
'chromatic',
'storybook',
'@storybook/*',
'msw',
'msw-storybook-addon',
],
matchUpdateTypes: ['patch', 'minor'],
groupName: 'storybook (non-major)',
},
{
// Group actions/*-artifact in the same PR
matchManagers: ['github-actions'],
@@ -102,6 +113,7 @@
],
matchUpdateTypes: ['major'],
groupName: 'artifact actions (major)',
extends: ['helpers:pinGitHubActionDigests'],
},
{
// Update @types/* packages every week, with one grouped PR
@@ -141,6 +153,18 @@
matchUpdateTypes: ['patch', 'minor'],
groupName: 'opentelemetry-ruby (non-major)',
},
{
// 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
{ matchManagers: ['npm', 'nvm'], addLabels: ['javascript'] },
{ matchManagers: ['bundler', 'ruby-version'], addLabels: ['ruby'] },

View File

@@ -35,7 +35,7 @@ jobs:
- linux/arm64
steps:
- uses: actions/checkout@v4
- 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@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
with:
context: .
file: ${{ inputs.file_to_build }}
@@ -87,8 +87,8 @@ jobs:
platforms: ${{ matrix.platform }}
provenance: false
push: ${{ inputs.push_to_images != '' }}
cache-from: ${{ inputs.cache && 'type=gha' || '' }}
cache-to: ${{ inputs.cache && 'type=gha,mode=max' || '' }}
cache-from: ${{ inputs.cache && format('type=gha,scope=build-{0}-{1}', hashFiles(inputs.file_to_build), env.PLATFORM_PAIR) || '' }}
cache-to: ${{ inputs.cache && format('type=gha,mode=max,scope=build-{0}-{1}', hashFiles(inputs.file_to_build), env.PLATFORM_PAIR) || '' }}
outputs: type=image,"name=${{ env.IMAGE_NAMES }}",push-by-digest=true,name-canonical=true,push=${{ inputs.push_to_images != '' }}
- name: Export digest
@@ -100,7 +100,7 @@ jobs:
- name: Upload digest
if: ${{ inputs.push_to_images != '' }}
uses: actions/upload-artifact@v4
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@v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Download digests
uses: actions/download-artifact@v4
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@v4
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

@@ -9,7 +9,44 @@ permissions:
packages: write
jobs:
check-latest-stable:
runs-on: ubuntu-latest
outputs:
latest: ${{ steps.check.outputs.is_latest_stable }}
steps:
# Repository needs to be cloned to list branches
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0
- name: Check latest stable
shell: bash
id: check
run: |
ref="${GITHUB_REF#refs/tags/}"
if [[ "$ref" =~ ^v([0-9]+)\.([0-9]+)(\.[0-9]+)?$ ]]; then
current="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
else
echo "tag $ref is not semver"
echo "is_latest_stable=false" >> "$GITHUB_OUTPUT"
exit 0
fi
latest=$(git for-each-ref --format='%(refname:short)' "refs/remotes/origin/stable-*.*" \
| sed -E 's#^origin/stable-##' \
| sort -Vr \
| head -n1)
if [[ "$current" == "$latest" ]]; then
echo "is_latest_stable=true" >> "$GITHUB_OUTPUT"
else
echo "is_latest_stable=false" >> "$GITHUB_OUTPUT"
fi
build-image:
needs: check-latest-stable
uses: ./.github/workflows/build-container-image.yml
with:
file_to_build: Dockerfile
@@ -21,13 +58,14 @@ jobs:
# Only tag with latest when ran against the latest stable branch
# This needs to be updated after each minor version release
flavor: |
latest=${{ startsWith(github.ref, 'refs/tags/v4.3.') }}
latest=${{ needs.check-latest-stable.outputs.latest }}
tags: |
type=pep440,pattern={{raw}}
type=pep440,pattern=v{{major}}.{{minor}}
secrets: inherit
build-image-streaming:
needs: check-latest-stable
uses: ./.github/workflows/build-container-image.yml
with:
file_to_build: streaming/Dockerfile
@@ -39,7 +77,7 @@ jobs:
# Only tag with latest when ran against the latest stable branch
# This needs to be updated after each minor version release
flavor: |
latest=${{ startsWith(github.ref, 'refs/tags/v4.3.') }}
latest=${{ needs.check-latest-stable.outputs.latest }}
tags: |
type=pep440,pattern={{raw}}
type=pep440,pattern=v{{major}}.{{minor}}

View File

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

View File

@@ -21,7 +21,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- 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

@@ -1,31 +1,51 @@
name: 'Chromatic'
permissions:
contents: read
on:
push:
branches-ignore:
- renovate/*
- stable-*
paths:
- 'package.json'
- 'yarn.lock'
- '**/*.js'
- '**/*.jsx'
- '**/*.ts'
- '**/*.tsx'
- '**/*.css'
- '**/*.scss'
- '.github/workflows/chromatic.yml'
jobs:
pathcheck:
name: Check for relevant changes
runs-on: ubuntu-latest
outputs:
changed: ${{ steps.filter.outputs.src }}
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0
- uses: dorny/paths-filter@d1c1ffe0248fe513906c8e24db8ea791d46f8590 # v3
id: filter
with:
filters: |
src:
- 'package.json'
- 'yarn.lock'
- '**/*.js'
- '**/*.jsx'
- '**/*.ts'
- '**/*.tsx'
- '**/*.css'
- '**/*.scss'
- '.github/workflows/chromatic.yml'
chromatic:
name: Run Chromatic
runs-on: ubuntu-latest
if: github.repository == 'mastodon/mastodon'
needs: pathcheck
if: github.repository == 'mastodon/mastodon' && needs.pathcheck.outputs.changed == 'true'
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: 0
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
@@ -33,9 +53,10 @@ jobs:
run: yarn build-storybook
- name: Run Chromatic
uses: chromaui/action@v12
uses: chromaui/action@07791f8243f4cb2698bf4d00426baf4b2d1cb7e0 # v13
with:
# ⚠️ Make sure to configure a `CHROMATIC_PROJECT_TOKEN` repository secret
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
zip: true
storybookBuildDir: 'storybook-static'
exitOnceUploaded: true # Exit immediately after upload
autoAcceptChanges: 'main' # Auto-accept changes on main branch only

View File

@@ -25,17 +25,17 @@ jobs:
strategy:
fail-fast: false
matrix:
language: ['javascript', 'ruby']
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
language: ['actions', 'javascript', 'ruby']
# CodeQL supports [ 'actions', 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@9e0d7b8d25671d64c341c19c0152d693099fb5ba # 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@v3
uses: github/codeql-action/autobuild@9e0d7b8d25671d64c341c19c0152d693099fb5ba # 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@v3
uses: github/codeql-action/analyze@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4
with:
category: '/language:${{matrix.language}}'

View File

@@ -13,7 +13,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
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@8868a33591d21088edfc398968173a3b98d51706 # v2
with:
upload_sources: false
upload_translations: false
@@ -50,7 +50,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@v4
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@8868a33591d21088edfc398968173a3b98d51706 # v2
with:
upload_sources: false
upload_translations: false
@@ -52,7 +52,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@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # 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@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: crowdin action
uses: crowdin/github-action@v2
uses: crowdin/github-action@8868a33591d21088edfc398968173a3b98d51706 # v2
with:
upload_sources: true
upload_translations: false

View File

@@ -13,10 +13,10 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v4
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,24 +9,20 @@ on:
- 'package.json'
- 'yarn.lock'
- '.nvmrc'
- '.prettier*'
- 'stylelint.config.js'
- '**/*.css'
- '**/*.scss'
- '.github/workflows/lint-css.yml'
- '.github/stylelint-matcher.json'
pull_request:
paths:
- 'package.json'
- 'yarn.lock'
- '.nvmrc'
- '.prettier*'
- 'stylelint.config.js'
- '**/*.css'
- '**/*.scss'
- '.github/workflows/lint-css.yml'
- '.github/stylelint-matcher.json'
jobs:
lint:
@@ -34,7 +30,7 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript

View File

@@ -6,7 +6,6 @@ on:
- 'main'
- 'stable-*'
paths:
- '.github/workflows/haml-lint-problem-matcher.json'
- '.github/workflows/lint-haml.yml'
- '.haml-lint*.yml'
- '.rubocop*.yml'
@@ -16,7 +15,6 @@ on:
pull_request:
paths:
- '.github/workflows/haml-lint-problem-matcher.json'
- '.github/workflows/lint-haml.yml'
- '.haml-lint*.yml'
- '.rubocop*.yml'
@@ -33,14 +31,13 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Ruby
uses: ruby/setup-ruby@v1
uses: ruby/setup-ruby@afeafc3d1ab54a631816aba4c914a0081c12ff2f # 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@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript

View File

@@ -10,7 +10,6 @@ on:
- '.rubocop*.yml'
- '.ruby-version'
- 'bin/rubocop'
- 'config/brakeman.ignore'
- '**/*.rb'
- '**/*.rake'
- '.github/workflows/lint-ruby.yml'
@@ -21,7 +20,6 @@ on:
- '.rubocop*.yml'
- '.ruby-version'
- 'bin/rubocop'
- 'config/brakeman.ignore'
- '**/*.rb'
- '**/*.rake'
- '.github/workflows/lint-ruby.yml'
@@ -35,18 +33,15 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- name: Set up Ruby
uses: ruby/setup-ruby@v1
uses: ruby/setup-ruby@afeafc3d1ab54a631816aba4c914a0081c12ff2f # v1
with:
bundler-cache: true
- name: Set-up RuboCop Problem Matcher
uses: r7kamura/rubocop-problem-matchers-action@v1
- name: Run rubocop
run: bin/rubocop
run: bin/rubocop --format github
- name: Run brakeman
if: always() # Run both checks, even if the first failed

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@v4
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@v4
- 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@v4
- 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@27d5ce7f107fe9357f9df03efb73ab90386fccae # 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@v4
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
if: matrix.mode == 'test'
with:
path: |-
@@ -124,13 +124,13 @@ jobs:
fail-fast: false
matrix:
ruby-version:
- '3.2'
- '3.3'
- '3.4'
- '.ruby-version'
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
with:
path: './'
name: ${{ github.sha }}
@@ -151,7 +151,7 @@ jobs:
bin/flatware fan bin/rails db:test:prepare
- name: Cache RSpec persistence file
uses: actions/cache@v4
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
with:
path: |
tmp/rspec/examples.txt
@@ -163,103 +163,16 @@ jobs:
rspec-persistence-main
rspec-persistence
- run: bin/flatware rspec -r ./spec/flatware_helper.rb
- run: bin/flatware rspec
- name: Upload coverage reports to Codecov
if: matrix.ruby-version == '.ruby-version'
uses: codecov/codecov-action@v5
uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6
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@v4
- uses: actions/download-artifact@v4
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 +217,14 @@ jobs:
fail-fast: false
matrix:
ruby-version:
- '3.2'
- '3.3'
- '3.4'
- '.ruby-version'
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
with:
path: './'
name: ${{ github.sha }}
@@ -334,7 +247,7 @@ jobs:
- name: Cache Playwright Chromium browser
id: playwright-cache
uses: actions/cache@v4
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
with:
path: ~/.cache/ms-playwright
key: playwright-browsers-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
@@ -350,14 +263,14 @@ jobs:
- run: bin/rspec spec/system --tag streaming --tag js
- name: Archive logs
uses: actions/upload-artifact@v4
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@v4
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
if: failure()
with:
name: e2e-screenshots-${{ matrix.ruby-version }}
@@ -435,21 +348,21 @@ jobs:
fail-fast: false
matrix:
ruby-version:
- '3.2'
- '3.3'
- '3.4'
- '.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@v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7
with:
path: './'
name: ${{ github.sha }}
@@ -469,15 +382,8 @@ jobs:
- run: bin/rspec --tag search
- name: Archive logs
uses: actions/upload-artifact@v4
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@v4
if: failure()
with:
name: test-search-screenshots
path: tmp/capybara/

1
.gitignore vendored
View File

@@ -23,6 +23,7 @@
/public/packs
/public/packs-dev
/public/packs-test
stats.html
.env
.env.production
node_modules/

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 @@
22.19
24.15

92
.oxfmtrc.json Normal file
View File

@@ -0,0 +1,92 @@
{
"$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",
// 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",
// 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/**", "@/**"]
}
]
}
}

View File

@@ -1,86 +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

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.5
4.0.5

26
.simplecov Normal file
View File

@@ -0,0 +1,26 @@
# frozen_string_literal: true
SimpleCov.start 'rails' do
# During parallel runs, ensure unique names for post-run merge
command_name "job-#{ENV['TEST_ENV_NUMBER']}" if ENV['TEST_ENV_NUMBER']
if ENV['CI']
require 'simplecov-lcov'
formatter SimpleCov::Formatter::LcovFormatter
formatter.config.report_with_single_file = true
else
formatter SimpleCov::Formatter::HTMLFormatter
end
enable_coverage :branch
add_filter 'lib/linter'
add_group 'Libraries', 'lib'
add_group 'Policies', 'app/policies'
add_group 'Presenters', 'app/presenters'
add_group 'Search', 'app/chewy'
add_group 'Serializers', 'app/serializers'
add_group 'Services', 'app/services'
add_group 'Validators', 'app/validators'
end

View File

@@ -27,11 +27,12 @@ const config: StorybookConfig = {
'oops.gif',
'oops.png',
].map((path) => ({ from: `../public/${path}`, to: `/${path}` })),
{ from: '../app/javascript/images/logo.svg', to: '/custom-emoji/logo.svg' },
],
viteFinal(config) {
// For an unknown reason, Storybook does not use the root
// from the Vite config so we need to set it manually.
config.root = resolve(__dirname, '../app/javascript');
config.root = resolve(import.meta.dirname, '../app/javascript');
return config;
},
};

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

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

View File

@@ -11,19 +11,25 @@ import type { Preview } from '@storybook/react-vite';
import { initialize, mswLoader } from 'msw-storybook-addon';
import { action } from 'storybook/actions';
import {
importCustomEmojiData,
importLegacyShortcodes,
importEmojiData,
} from '@/mastodon/features/emoji/loader';
import type { LocaleData } from '@/mastodon/locales';
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({
@@ -34,25 +40,58 @@ 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 }) => {
(Story, { parameters, globals, args, argTypes }) => {
// Get the locale from the global toolbar
// and merge it with any parameters or args state.
const { locale } = globals as { locale: string };
const { state = {} } = parameters;
const argsState: Record<string, unknown> = {};
for (const [key, value] of Object.entries(args)) {
const argType = argTypes[key];
if (argType?.reduxPath) {
const reduxPath = Array.isArray(argType.reduxPath)
? argType.reduxPath.map((p) => p.toString())
: argType.reduxPath.split('.');
reduxPath.reduce((acc, key, i) => {
if (acc[key] === undefined) {
acc[key] = {};
}
if (i === reduxPath.length - 1) {
acc[key] = value;
}
return acc[key] as Record<string, unknown>;
}, argsState);
}
}
const reducer = reducerWithInitialState(
{
meta: {
@@ -60,7 +99,9 @@ const preview: Preview = {
},
},
state as Record<string, unknown>,
argsState,
);
const store = configureStore({
reducer,
middleware(getDefaultMiddleware) {
@@ -96,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 />
@@ -121,7 +165,12 @@ const preview: Preview = {
</MemoryRouter>
),
],
loaders: [mswLoader],
loaders: [
mswLoader,
importCustomEmojiData,
importLegacyShortcodes,
({ globals: { locale } }) => importEmojiData(locale as string),
],
parameters: {
layout: 'centered',
@@ -146,6 +195,13 @@ const preview: Preview = {
msw: {
handlers: mockHandlers,
},
chromatic: {
modes: {
dark: modes.darkTheme,
light: modes.lightTheme,
},
},
},
};

View File

@@ -7,8 +7,8 @@
* - Please do NOT modify this file.
*/
const PACKAGE_VERSION = '2.10.4'
const INTEGRITY_CHECKSUM = 'f5825c521429caf22a4dd13b66e243af'
const PACKAGE_VERSION = '2.12.14'
const INTEGRITY_CHECKSUM = '4db4a41e972cec1b64cc569c66952d82'
const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
const activeClientIds = new Set()
@@ -71,11 +71,6 @@ addEventListener('message', async function (event) {
break
}
case 'MOCK_DEACTIVATE': {
activeClientIds.delete(clientId)
break
}
case 'CLIENT_CLOSED': {
activeClientIds.delete(clientId)
@@ -94,6 +89,8 @@ addEventListener('message', async function (event) {
})
addEventListener('fetch', function (event) {
const requestInterceptedAt = Date.now()
// Bypass navigation requests.
if (event.request.mode === 'navigate') {
return
@@ -110,23 +107,29 @@ addEventListener('fetch', function (event) {
// Bypass all requests when there are no active clients.
// Prevents the self-unregistered worked from handling requests
// after it's been deleted (still remains active until the next reload).
// after it's been terminated (still remains active until the next reload).
if (activeClientIds.size === 0) {
return
}
const requestId = crypto.randomUUID()
event.respondWith(handleRequest(event, requestId))
event.respondWith(handleRequest(event, requestId, requestInterceptedAt))
})
/**
* @param {FetchEvent} event
* @param {string} requestId
* @param {number} requestInterceptedAt
*/
async function handleRequest(event, requestId) {
async function handleRequest(event, requestId, requestInterceptedAt) {
const client = await resolveMainClient(event)
const requestCloneForEvents = event.request.clone()
const response = await getResponse(event, client, requestId)
const response = await getResponse(
event,
client,
requestId,
requestInterceptedAt,
)
// Send back the response clone for the "response:*" life-cycle events.
// Ensure MSW is active and ready to handle the message, otherwise
@@ -202,9 +205,10 @@ async function resolveMainClient(event) {
* @param {FetchEvent} event
* @param {Client | undefined} client
* @param {string} requestId
* @param {number} requestInterceptedAt
* @returns {Promise<Response>}
*/
async function getResponse(event, client, requestId) {
async function getResponse(event, client, requestId, requestInterceptedAt) {
// Clone the request because it might've been already used
// (i.e. its body has been read and sent to the client).
const requestClone = event.request.clone()
@@ -255,6 +259,7 @@ async function getResponse(event, client, requestId) {
type: 'REQUEST',
payload: {
id: requestId,
interceptedAt: requestInterceptedAt,
...serializedRequest,
},
},

View File

@@ -1,7 +1,20 @@
// The addon package.json incorrectly exports types, so we need to override them here.
import type { RootState } from '@/mastodon/store';
// See: https://github.com/storybookjs/storybook/blob/v9.0.4/code/addons/vitest/package.json#L70-L76
declare module '@storybook/addon-vitest/vitest-plugin' {
export * from '@storybook/addon-vitest/dist/vitest-plugin/index';
}
type RootPathKeys = keyof RootState;
declare module 'storybook/internal/csf' {
export interface InputType {
reduxPath?:
| `${RootPathKeys}.${string}`
| [RootPathKeys, ...(string | number)[]];
}
}
export {};

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]);

View File

@@ -1,13 +0,0 @@
diff --git a/lib/index.js b/lib/index.js
index 16ed6be8be8f555cc99096c2ff60954b42dc313d..d009c069770d066ad0db7ad02de1ea473a29334e 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -99,7 +99,7 @@ function lodash(_ref) {
var node = _ref3;
- if ((0, _types.isModuleDeclaration)(node)) {
+ if ((0, _types.isImportDeclaration)(node) || (0, _types.isExportDeclaration)(node)) {
isModule = true;
break;
}

View File

@@ -538,7 +538,7 @@ and provided thanks to the work of the following contributors:
* [Drew Schuster](mailto:dtschust@gmail.com)
* [Dryusdan](mailto:dryusdan@dryusdan.fr)
* [Eai](mailto:eai@mizle.net)
* [Eashwar Ranganathan](mailto:eranganathan@lyft.com)
* [Eashwar Ranganathan](mailto:eashwar@eashwar.com)
* [Ed Knutson](mailto:knutsoned@gmail.com)
* [Elizabeth Martín Campos](mailto:me@elizabeth.sh)
* [Elizabeth Myers](mailto:elizabeth@interlinked.me)

File diff suppressed because it is too large Load Diff

View File

@@ -1,132 +1,83 @@
# Contributor Covenant Code of Conduct
# Contributor Covenant 3.0 Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to make our community welcoming, safe, and equitable for all.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
We are committed to fostering an environment that respects and promotes the dignity, rights, and contributions of all individuals, regardless of characteristics including race, ethnicity, caste, color, age, physical characteristics, neurodiversity, disability, sex or gender, gender identity or expression, sexual orientation, language, philosophy or religion, national or social origin, socio-economic position, level of education, or other status. The same privileges of participation are extended to everyone who participates in good faith and in accordance with this Covenant.
## Our Standards
## Encouraged Behaviors
Examples of behavior that contributes to a positive environment for our
community include:
While acknowledging differences in social norms, we all strive to meet our community's expectations for positive behavior. We also understand that our words and actions may be interpreted differently than we intend based on culture, background, or native language.
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall
community
With these considerations in mind, we agree to behave mindfully toward each other and act in ways that center our shared values, including:
Examples of unacceptable behavior include:
1. Respecting the **purpose of our community**, our activities, and our ways of gathering.
2. Engaging **kindly and honestly** with others.
3. Respecting **different viewpoints** and experiences.
4. **Taking responsibility** for our actions and contributions.
5. Gracefully giving and accepting **constructive feedback**.
6. Committing to **repairing harm** when it occurs.
7. Behaving in other ways that promote and sustain the **well-being of our community**.
- The use of sexualized language or imagery, and sexual attention or advances of
any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address,
without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Restricted Behaviors
## Enforcement Responsibilities
We agree to restrict the following behaviors in our community. Instances, threats, and promotion of these behaviors are violations of this Code of Conduct.
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
1. **Harassment.** Violating explicitly expressed boundaries or engaging in unnecessary personal attention after any clear request to stop.
2. **Character attacks.** Making insulting, demeaning, or pejorative comments directed at a community member or group of people.
3. **Stereotyping or discrimination.** Characterizing anyones personality or behavior on the basis of immutable identities or traits.
4. **Sexualization.** Behaving in a way that would generally be considered inappropriately intimate in the context or purpose of the community.
5. **Violating confidentiality**. Sharing or acting on someone's personal or private information without their permission.
6. **Endangerment.** Causing, encouraging, or threatening violence or other harm toward any person or group.
7. Behaving in other ways that **threaten the well-being** of our community.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
### Other Restrictions
1. **Misleading identity.** Impersonating someone else for any reason, or pretending to be someone else to evade enforcement actions.
2. **Failing to credit sources.** Not properly crediting the sources of content you contribute.
3. **Promotional materials**. Sharing marketing or other commercial content in a way that is outside the norms of the community.
4. **Irresponsible communication.** Failing to responsibly present content which includes, links or describes any other restricted behaviors.
## Reporting an Issue
Tensions can occur between community members even when they are trying their best to collaborate. Not every conflict represents a code of conduct violation, and this Code of Conduct reinforces encouraged behaviors and norms that can help avoid conflicts and minimize harm.
When an incident does occur, it is important to report it promptly. To report a possible violation, send an email describing the situation to hello@joinmastodon.org.
Community Moderators take reports of violations seriously and will make every effort to respond in a timely manner. They will investigate all reports of code of conduct violations, reviewing messages, logs, and recordings, or interviewing witnesses and other participants. Community Moderators will keep investigation and enforcement actions as transparent as possible while prioritizing safety and confidentiality. In order to honor these values, enforcement actions are carried out in private with the involved parties, but communicating to the whole community may be part of a mutually agreed upon resolution.
## Addressing and Repairing Harm
If an investigation by the Community Moderators finds that this Code of Conduct has been violated, the following enforcement ladder may be used to determine how best to repair harm, based on the incident's impact on the individuals involved and the community as a whole. Depending on the severity of a violation, lower rungs on the ladder may be skipped.
1. Warning
1. Event: A violation involving a single incident or series of incidents.
2. Consequence: A private, written warning from the Community Moderators.
3. Repair: Examples of repair include a private written apology, acknowledgement of responsibility, and seeking clarification on expectations.
2. Temporarily Limited Activities
1. Event: A repeated incidence of a violation that previously resulted in a warning, or the first incidence of a more serious violation.
2. Consequence: A private, written warning with a time-limited cooldown period designed to underscore the seriousness of the situation and give the community members involved time to process the incident. The cooldown period may be limited to particular communication channels or interactions with particular community members.
3. Repair: Examples of repair may include making an apology, using the cooldown period to reflect on actions and impact, and being thoughtful about re-entering community spaces after the period is over.
3. Temporary Suspension
1. Event: A pattern of repeated violation which the Community Moderators have tried to address with warnings, or a single serious violation.
2. Consequence: A private written warning with conditions for return from suspension. In general, temporary suspensions give the person being suspended time to reflect upon their behavior and possible corrective actions.
3. Repair: Examples of repair include respecting the spirit of the suspension, meeting the specified conditions for return, and being thoughtful about how to reintegrate with the community when the suspension is lifted.
4. Permanent Ban
1. Event: A pattern of repeated code of conduct violations that other steps on the ladder have failed to resolve, or a violation so serious that the Community Moderators determine there is no way to keep the community safe with this person as a member.
2. Consequence: Access to all community spaces, tools, and communication channels is removed. In general, permanent bans should be rarely used, should have strong reasoning behind them, and should only be resorted to if working through other remedies has failed to change the behavior.
3. Repair: There is no possible repair in cases of this severity.
This enforcement ladder is intended as a guideline. It does not limit the ability of Community Managers to use their discretion and judgment, in keeping with the best interests of our community.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[hello@joinmastodon.org](mailto:hello@joinmastodon.org).
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of
actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public or other spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
This Code of Conduct is adapted from the Contributor Covenant, version 3.0, permanently available at [https://www.contributor-covenant.org/version/3/0/](https://www.contributor-covenant.org/version/3/0/).
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
Contributor Covenant is stewarded by the Organization for Ethical Source and licensed under CC BY-SA 4.0. To view a copy of this license, visit [https://creativecommons.org/licenses/by-sa/4.0/](https://creativecommons.org/licenses/by-sa/4.0/)
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations
For answers to common questions about Contributor Covenant, see the FAQ at [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq). Translations are provided at [https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations). Additional enforcement and community guideline resources can be found at [https://www.contributor-covenant.org/resources](https://www.contributor-covenant.org/resources). The enforcement ladder was inspired by the work of [Mozillas code of conduct team](https://github.com/mozilla/inclusion).

View File

@@ -11,6 +11,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
@@ -41,7 +43,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
@@ -89,3 +91,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

@@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1.12
# syntax=docker/dockerfile:1.18
# This file is designed for production server deployment, not local development work
# For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/docs/DEVELOPMENT.md#docker
@@ -11,12 +11,12 @@ ARG TARGETPLATFORM=${TARGETPLATFORM}
ARG BUILDPLATFORM=${BUILDPLATFORM}
ARG BASE_REGISTRY="docker.io"
# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.4.x"]
# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="4.0.x"]
# renovate: datasource=docker depName=docker.io/ruby
ARG RUBY_VERSION="3.4.5"
# # Node.js version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="20"]
ARG RUBY_VERSION="4.0.5"
# # 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="22"
ARG NODE_MAJOR_VERSION="24"
# Debian image to use for base image, change with [--build-arg DEBIAN_VERSION="trixie"]
ARG DEBIAN_VERSION="trixie"
# Node.js image to use for base image based on combined variables (ex: 20-trixie-slim)
@@ -25,8 +25,8 @@ FROM ${BASE_REGISTRY}/node:${NODE_MAJOR_VERSION}-${DEBIAN_VERSION}-slim AS node
FROM ${BASE_REGISTRY}/ruby:${RUBY_VERSION}-slim-${DEBIAN_VERSION} AS ruby
# Resulting version string is vX.X.X-MASTODON_VERSION_PRERELEASE+MASTODON_VERSION_METADATA
# Example: v4.3.0-nightly.2023.11.09+pr-123456
# Overwrite existence of 'alpha.X' in version.rb [--build-arg MASTODON_VERSION_PRERELEASE="nightly.2023.11.09"]
# Example: v4.3.0-nightly.2023-11-09+pr-123456
# Overwrite existence of 'alpha.X' in version.rb [--build-arg MASTODON_VERSION_PRERELEASE="nightly.2023-11-09"]
ARG MASTODON_VERSION_PRERELEASE=""
# Append build metadata or fork information to version.rb [--build-arg MASTODON_VERSION_METADATA="pr-123456"]
ARG MASTODON_VERSION_METADATA=""
@@ -48,31 +48,27 @@ ARG GID="991"
# Apply Mastodon build options based on options above
ENV \
# Apply Mastodon version information
MASTODON_VERSION_PRERELEASE="${MASTODON_VERSION_PRERELEASE}" \
MASTODON_VERSION_METADATA="${MASTODON_VERSION_METADATA}" \
SOURCE_COMMIT="${SOURCE_COMMIT}" \
# Apply Mastodon static files and YJIT options
RAILS_SERVE_STATIC_FILES=${RAILS_SERVE_STATIC_FILES} \
RUBY_YJIT_ENABLE=${RUBY_YJIT_ENABLE} \
# Apply timezone
TZ=${TZ}
RAILS_SERVE_STATIC_FILES="${RAILS_SERVE_STATIC_FILES}" \
RUBY_YJIT_ENABLE="${RUBY_YJIT_ENABLE}" \
TZ="${TZ}"
# Configure runtime environment
# BIND: IP to bind Mastodon to when serving traffic
# NODE_ENV/RAILS_ENV: production settings for Node.js and Ruby on Rails
# DEBIAN_FRONTEND: suppress interactive prompts
# PATH: add Ruby and Mastodon installation directories
# MALLOC_CONF: optimize jemalloc 5.x performance
# MASTODON_SIDEKIQ_READY_FILENAME: Sidekiq readiness check filename for Kubernetes
ENV \
# Configure the IP to bind Mastodon to when serving traffic
BIND="0.0.0.0" \
# Use production settings for Yarn, Node.js and related tools
NODE_ENV="production" \
# Use production settings for Ruby on Rails
RAILS_ENV="production" \
# Add Ruby and Mastodon installation to the PATH
DEBIAN_FRONTEND="noninteractive" \
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
# Set default shell used for running commands
@@ -101,10 +97,10 @@ RUN \
# Mount Apt cache and lib directories from Docker buildx caches
--mount=type=cache,id=apt-cache-${TARGETPLATFORM},target=/var/cache/apt,sharing=locked \
--mount=type=cache,id=apt-lib-${TARGETPLATFORM},target=/var/lib/apt,sharing=locked \
# Apt update & upgrade to check for security updates to Debian image
# Update package list and upgrade system packages
apt-get update; \
apt-get dist-upgrade -yq; \
# Install jemalloc, curl and other necessary components
# Install jemalloc and other necessary components
apt-get install -y --no-install-recommends \
curl \
file \
@@ -114,215 +110,7 @@ RUN \
tini \
tzdata \
wget \
; \
# Patch Ruby to use jemalloc
patchelf --add-needed libjemalloc.so.2 /usr/local/bin/ruby; \
# Discard patchelf after use
apt-get purge -y \
patchelf \
;
# Create temporary build layer from base image
FROM ruby AS build
ARG TARGETPLATFORM
# hadolint ignore=DL3008
RUN \
# Mount Apt cache and lib directories from Docker buildx caches
--mount=type=cache,id=apt-cache-${TARGETPLATFORM},target=/var/cache/apt,sharing=locked \
--mount=type=cache,id=apt-lib-${TARGETPLATFORM},target=/var/lib/apt,sharing=locked \
# Install build tools and bundler dependencies from APT
apt-get install -y --no-install-recommends \
autoconf \
automake \
build-essential \
cmake \
git \
libgdbm-dev \
libglib2.0-dev \
libgmp-dev \
libicu-dev \
libidn-dev \
libpq-dev \
libssl-dev \
libtool \
libyaml-dev \
meson \
nasm \
pkg-config \
shared-mime-info \
xz-utils \
# libvips components
libcgif-dev \
libexif-dev \
libexpat1-dev \
libgirepository1.0-dev \
libheif-dev \
libhwy-dev \
libimagequant-dev \
libjpeg62-turbo-dev \
liblcms2-dev \
libspng-dev \
libtiff-dev \
libwebp-dev \
# ffmpeg components
libdav1d-dev \
liblzma-dev \
libmp3lame-dev \
libopus-dev \
libsnappy-dev \
libvorbis-dev \
libvpx-dev \
libx264-dev \
libx265-dev \
;
# Create temporary libvips specific build layer from build layer
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.2
# 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
WORKDIR /usr/local/libvips/src
# Download and extract libvips source code
ADD ${VIPS_URL}/v${VIPS_VERSION}/vips-${VIPS_VERSION}.tar.xz /usr/local/libvips/src/
RUN tar xf vips-${VIPS_VERSION}.tar.xz;
WORKDIR /usr/local/libvips/src/vips-${VIPS_VERSION}
# Configure and compile libvips
RUN \
meson setup build --prefix /usr/local/libvips --libdir=lib -Ddeprecated=false -Dintrospection=disabled -Dmodules=disabled -Dexamples=false; \
cd build; \
ninja; \
ninja install;
# Create temporary ffmpeg specific build layer from build layer
FROM build AS ffmpeg
# ffmpeg version to compile, change with [--build-arg FFMPEG_VERSION="7.0.x"]
# renovate: datasource=repology depName=ffmpeg packageName=openpkg_current/ffmpeg
ARG FFMPEG_VERSION=7.1.1
# ffmpeg download URL, change with [--build-arg FFMPEG_URL="https://ffmpeg.org/releases"]
ARG FFMPEG_URL=https://ffmpeg.org/releases
WORKDIR /usr/local/ffmpeg/src
# Download and extract ffmpeg source code
ADD ${FFMPEG_URL}/ffmpeg-${FFMPEG_VERSION}.tar.xz /usr/local/ffmpeg/src/
RUN tar xf ffmpeg-${FFMPEG_VERSION}.tar.xz;
WORKDIR /usr/local/ffmpeg/src/ffmpeg-${FFMPEG_VERSION}
# Configure and compile ffmpeg
RUN \
./configure \
--prefix=/usr/local/ffmpeg \
--toolchain=hardened \
--disable-debug \
--disable-devices \
--disable-doc \
--disable-ffplay \
--disable-network \
--disable-static \
--enable-ffmpeg \
--enable-ffprobe \
--enable-gpl \
--enable-libdav1d \
--enable-libmp3lame \
--enable-libopus \
--enable-libsnappy \
--enable-libvorbis \
--enable-libvpx \
--enable-libwebp \
--enable-libx264 \
--enable-libx265 \
--enable-shared \
--enable-version3 \
; \
make -j$(nproc); \
make install;
# Create temporary bundler specific build layer from build layer
FROM build AS bundler
ARG TARGETPLATFORM
# Copy Gemfile config into working directory
COPY Gemfile* /opt/mastodon/
RUN \
# Mount Ruby Gem caches
--mount=type=cache,id=gem-cache-${TARGETPLATFORM},target=/usr/local/bundle/cache/,sharing=locked \
# Configure bundle to prevent changes to Gemfile and Gemfile.lock
bundle config set --global frozen "true"; \
# Configure bundle to not cache downloaded Gems
bundle config set --global cache_all "false"; \
# Configure bundle to only process production Gems
bundle config set --local without "development test"; \
# Configure bundle to not warn about root user
bundle config set silence_root_warning "true"; \
# Download and install required Gems
bundle install -j"$(nproc)";
# Create temporary assets build layer from build layer
FROM build AS precompiler
ARG TARGETPLATFORM
# Copy Mastodon sources into layer
COPY . /opt/mastodon/
# Copy Node.js binaries/libraries into layer
COPY --from=node /usr/local/bin /usr/local/bin
COPY --from=node /usr/local/lib /usr/local/lib
RUN \
# Configure Corepack
rm /usr/local/bin/yarn*; \
corepack enable; \
corepack prepare --activate;
# hadolint ignore=DL3008
RUN \
--mount=type=cache,id=corepack-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/corepack,sharing=locked \
--mount=type=cache,id=yarn-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/yarn,sharing=locked \
# Install Node.js packages
yarn workspaces focus --production @mastodon/mastodon;
# Copy libvips components into layer for precompiler
COPY --from=libvips /usr/local/libvips/bin /usr/local/bin
COPY --from=libvips /usr/local/libvips/lib /usr/local/lib
# Copy bundler packages into layer for precompiler
COPY --from=bundler /opt/mastodon /opt/mastodon/
COPY --from=bundler /usr/local/bundle/ /usr/local/bundle/
RUN \
ldconfig; \
# Use Ruby on Rails to create Mastodon assets
SECRET_KEY_BASE_DUMMY=1 \
bundle exec rails assets:precompile; \
# Cleanup temporary files
rm -fr /opt/mastodon/tmp;
# Prep final Mastodon Ruby layer
FROM ruby AS mastodon
ARG TARGETPLATFORM
# hadolint ignore=DL3008
RUN \
# Mount Apt cache and lib directories from Docker buildx caches
--mount=type=cache,id=apt-cache-${TARGETPLATFORM},target=/var/cache/apt,sharing=locked \
--mount=type=cache,id=apt-lib-${TARGETPLATFORM},target=/var/lib/apt,sharing=locked \
# Mount Corepack and Yarn caches from Docker buildx caches
--mount=type=cache,id=corepack-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/corepack,sharing=locked \
--mount=type=cache,id=yarn-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/yarn,sharing=locked \
# Apt update install non-dev versions of necessary components
apt-get install -y --no-install-recommends \
# Mastodon components
libexpat1 \
libglib2.0-0t64 \
libicu76 \
@@ -358,8 +146,235 @@ RUN \
libvpx9 \
libx264-164 \
libx265-215 \
; \
# Patch Ruby to use jemalloc
patchelf --add-needed libjemalloc.so.2 /usr/local/bin/ruby; \
# Discard patchelf after use
apt-get purge -y \
patchelf \
;
# Build stage for media libraries (libvips, ffmpeg)
FROM ${BASE_REGISTRY}/ruby:${RUBY_VERSION}-slim-${DEBIAN_VERSION} AS media-build
ARG TARGETPLATFORM
# Set default shell used for running commands
SHELL ["/bin/bash", "-o", "pipefail", "-o", "errexit", "-c"]
# hadolint ignore=DL3008
RUN \
--mount=type=cache,id=apt-native-cache-${TARGETPLATFORM},target=/var/cache/apt,sharing=locked \
--mount=type=cache,id=apt-native-lib-${TARGETPLATFORM},target=/var/lib/apt,sharing=locked \
# Remove automatic apt cache Docker cleanup scripts
rm -f /etc/apt/apt.conf.d/docker-clean; \
# Install build tools for native libraries
apt-get update; \
apt-get install -y --no-install-recommends \
autoconf \
automake \
build-essential \
libtool \
meson \
nasm \
pkg-config \
xz-utils \
# libvips components
libcgif-dev \
libexif-dev \
libexpat1-dev \
libgirepository1.0-dev \
libglib2.0-dev \
libheif-dev \
libhwy-dev \
libimagequant-dev \
libjpeg62-turbo-dev \
liblcms2-dev \
libspng-dev \
libtiff-dev \
libwebp-dev \
# ffmpeg components
libdav1d-dev \
liblzma-dev \
libmp3lame-dev \
libopus-dev \
libsnappy-dev \
libvorbis-dev \
libvpx-dev \
libx264-dev \
libx265-dev \
;
# Create temporary libvips specific build layer
FROM media-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.18.2
# 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
WORKDIR /usr/local/libvips/src
# Download and extract libvips source code
ADD ${VIPS_URL}/v${VIPS_VERSION}/vips-${VIPS_VERSION}.tar.xz /usr/local/libvips/src/
RUN tar xf vips-${VIPS_VERSION}.tar.xz;
WORKDIR /usr/local/libvips/src/vips-${VIPS_VERSION}
# Configure libvips
RUN meson setup build --prefix /usr/local/libvips --libdir=lib -Ddeprecated=false -Dintrospection=disabled -Dmodules=disabled -Dexamples=false
WORKDIR /usr/local/libvips/src/vips-${VIPS_VERSION}/build
# Compile and install libvips
RUN ninja && ninja install
# Create temporary ffmpeg specific build layer
FROM media-build AS ffmpeg
# ffmpeg version to compile, change with [--build-arg FFMPEG_VERSION="7.0.x"]
# renovate: datasource=github-tags depName=FFmpeg/FFmpeg extractVersion=^n(?<version>\d+\.\d+(\.\d+)?)$
ARG FFMPEG_VERSION=8.1.1
# ffmpeg download URL, change with [--build-arg FFMPEG_URL="https://ffmpeg.org/releases"]
ARG FFMPEG_URL=https://github.com/FFmpeg/FFmpeg/archive/refs/tags
WORKDIR /usr/local/ffmpeg/src
# Download and extract ffmpeg source code
ADD ${FFMPEG_URL}/n${FFMPEG_VERSION}.tar.gz /usr/local/ffmpeg/src/
RUN tar xf n${FFMPEG_VERSION}.tar.gz && mv FFmpeg-n${FFMPEG_VERSION} ffmpeg-${FFMPEG_VERSION};
WORKDIR /usr/local/ffmpeg/src/ffmpeg-${FFMPEG_VERSION}
# Configure and compile ffmpeg
RUN \
./configure \
--prefix=/usr/local/ffmpeg \
--toolchain=hardened \
--disable-debug \
--disable-devices \
--disable-doc \
--disable-ffplay \
--disable-network \
--disable-static \
--enable-ffmpeg \
--enable-ffprobe \
--enable-gpl \
--enable-libdav1d \
--enable-libmp3lame \
--enable-libopus \
--enable-libsnappy \
--enable-libvorbis \
--enable-libvpx \
--enable-libwebp \
--enable-libx264 \
--enable-libx265 \
--enable-shared \
--enable-version3 \
; \
make -j"$(nproc)"; \
make install;
# Create temporary build layer from base image for Ruby dependencies
FROM ruby AS ruby-build
ARG TARGETPLATFORM
# hadolint ignore=DL3008
RUN \
# Mount Apt cache and lib directories from Docker buildx caches
--mount=type=cache,id=apt-cache-${TARGETPLATFORM},target=/var/cache/apt,sharing=locked \
--mount=type=cache,id=apt-lib-${TARGETPLATFORM},target=/var/lib/apt,sharing=locked \
# Install build tools and bundler dependencies from APT
apt-get install -y --no-install-recommends \
build-essential \
git \
libgdbm-dev \
libgmp-dev \
libicu-dev \
libidn-dev \
libpq-dev \
libssl-dev \
libyaml-dev \
shared-mime-info \
zlib1g-dev \
;
# Create temporary bundler specific build layer from build layer
FROM ruby-build AS bundler
ARG TARGETPLATFORM
# Copy Gemfile config into working directory
COPY Gemfile* /opt/mastodon/
# Copy libvips for gems that need it during install
COPY --from=libvips /usr/local/libvips/lib /usr/local/lib
COPY --from=libvips /usr/local/libvips/include /usr/local/include
RUN ldconfig
RUN \
# Mount Ruby Gem caches
--mount=type=cache,id=gem-cache-${TARGETPLATFORM},target=/usr/local/bundle/cache/,sharing=locked \
# Configure bundle to prevent changes to Gemfile and Gemfile.lock
bundle config set --global frozen "true"; \
# Configure bundle to not cache downloaded Gems
bundle config set --global cache_all "false"; \
# Configure bundle to only process production Gems
bundle config set --local without "development test"; \
# Configure bundle to not warn about root user
bundle config set silence_root_warning "true"; \
# Download and install required Gems
bundle install -j"$(nproc)";
# Create temporary assets build layer from build layer
FROM ruby-build AS precompiler
ARG TARGETPLATFORM
# Copy Mastodon sources into layer
COPY . /opt/mastodon/
# Copy Node.js binaries/libraries into layer
COPY --from=node /usr/local/bin /usr/local/bin
COPY --from=node /usr/local/lib /usr/local/lib
RUN \
# Mount local Corepack and Yarn caches from Docker buildx caches
--mount=type=cache,id=corepack-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/corepack,sharing=locked \
--mount=type=cache,id=yarn-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/yarn,sharing=locked \
# Remove pre-installed Yarn binaries (only present on Node <26)
rm -f /usr/local/bin/yarn*; \
# Install Corepack
npm i -g corepack;
# hadolint ignore=DL3008
RUN \
--mount=type=cache,id=corepack-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/corepack,sharing=locked \
--mount=type=cache,id=yarn-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/yarn,sharing=locked \
# Install Node.js packages
yarn workspaces focus --production @mastodon/mastodon;
# Copy libvips components into layer for precompiler
COPY --from=libvips /usr/local/libvips/bin /usr/local/bin
COPY --from=libvips /usr/local/libvips/lib /usr/local/lib
# Copy bundler packages into layer for precompiler
COPY --from=bundler /opt/mastodon /opt/mastodon/
COPY --from=bundler /usr/local/bundle/ /usr/local/bundle/
RUN \
ldconfig; \
# Use Ruby on Rails to create Mastodon assets
SECRET_KEY_BASE_DUMMY=1 \
bundle exec rails assets:precompile; \
# Cleanup temporary files
rm -fr /opt/mastodon/tmp;
# Prep final Mastodon Ruby layer
FROM ruby AS mastodon
ARG TARGETPLATFORM
# Copy Mastodon sources into final layer
COPY . /opt/mastodon/

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 |

71
Gemfile
View File

@@ -1,19 +1,19 @@
# frozen_string_literal: true
source 'https://rubygems.org'
ruby '>= 3.2.0', '< 3.5.0'
ruby '>= 3.3.0', '< 4.1.0'
gem 'propshaft'
gem 'puma', '~> 6.3'
gem 'rails', '~> 8.0'
gem 'puma'
gem 'rails', '~> 8.1.0'
gem 'thor', '~> 1.2'
gem 'dotenv'
gem 'haml-rails', '~>2.0'
gem 'haml-rails', '~>3.0'
gem 'pg', '~> 1.5'
gem 'pghero'
gem 'aws-sdk-core', '< 3.216.0', require: false # TODO: https://github.com/mastodon/mastodon/pull/34173#issuecomment-2733378873
gem 'aws-sdk-core', require: false
gem 'aws-sdk-s3', '~> 1.123', require: false
gem 'blurhash', '~> 0.1'
gem 'fog-core', '<= 2.6.0'
@@ -24,11 +24,11 @@ gem 'ruby-vips', '~> 2.2', require: false
gem 'active_model_serializers', '~> 0.10'
gem 'addressable', '~> 2.8'
gem 'bootsnap', '~> 1.18.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
@@ -40,7 +40,7 @@ gem 'net-ldap', '~> 0.18'
gem 'omniauth', '~> 2.0'
gem 'omniauth-cas', '~> 3.0.0.beta.1'
gem 'omniauth_openid_connect', '~> 0.8.0'
gem 'omniauth-rails_csrf_protection', '~> 1.0'
gem 'omniauth-rails_csrf_protection', '~> 2.0'
gem 'omniauth-saml', '~> 2.0'
gem 'color_diff', '~> 0.1'
@@ -50,15 +50,15 @@ gem 'doorkeeper', '~> 5.6'
gem 'faraday-httpclient'
gem 'fast_blank', '~> 1.0'
gem 'fastimage'
gem 'hiredis', '~> 0.6'
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'
gem 'ipaddr', '~> 1.2'
gem 'irb', '~> 1.8'
gem 'kaminari', '~> 1.2'
gem 'link_header', '~> 0.0'
@@ -67,17 +67,16 @@ 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'
gem 'public_suffix', '~> 6.0'
gem 'public_suffix', '~> 7.0'
gem 'pundit', '~> 2.3'
gem 'rack-attack', '~> 6.6'
gem 'rack-cors', require: 'rack/cors'
gem 'rails-i18n', '~> 8.0'
gem 'redcarpet', '~> 3.6'
gem 'redis', '~> 4.5', require: ['redis', 'redis/connection/hiredis']
gem 'redis', '~> 5'
gem 'rqrcode', '~> 3.0'
gem 'ruby-progressbar', '~> 1.13'
gem 'sanitize', '~> 7.0'
@@ -88,7 +87,7 @@ gem 'sidekiq-scheduler', '~> 6.0'
gem 'sidekiq-unique-jobs', '> 8'
gem 'simple_form', '~> 5.2'
gem 'simple-navigation', '~> 4.4'
gem 'stoplight', github: 'ClearlyClaire/stoplight', ref: 'f13e0c0d5e6d34af8d3cfc888871caa84237db42'
gem 'stoplight'
gem 'strong_migrations'
gem 'tty-prompt', '~> 0.23', require: false
gem 'twitter-text', '~> 3.1.0'
@@ -96,29 +95,30 @@ 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.6.0'
gem 'opentelemetry-api', '~> 1.10.0'
group :opentelemetry do
gem 'opentelemetry-exporter-otlp', '~> 0.30.0', require: false
gem 'opentelemetry-instrumentation-active_job', '~> 0.8.0', require: false
gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.22.0', require: false
gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.22.0', require: false
gem 'opentelemetry-instrumentation-excon', '~> 0.24.0', require: false
gem 'opentelemetry-instrumentation-faraday', '~> 0.28.0', require: false
gem 'opentelemetry-instrumentation-http', '~> 0.25.0', require: false
gem 'opentelemetry-instrumentation-http_client', '~> 0.24.0', require: false
gem 'opentelemetry-instrumentation-net_http', '~> 0.23.0', require: false
gem 'opentelemetry-instrumentation-pg', '~> 0.30.0', require: false
gem 'opentelemetry-instrumentation-rack', '~> 0.26.0', require: false
gem 'opentelemetry-instrumentation-rails', '~> 0.36.0', require: false
gem 'opentelemetry-instrumentation-redis', '~> 0.26.0', require: false
gem 'opentelemetry-instrumentation-sidekiq', '~> 0.26.0', require: false
gem 'opentelemetry-exporter-otlp', '~> 0.34.0', require: false
gem 'opentelemetry-instrumentation-active_job', '~> 0.12.0', require: false
gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.25.0', require: false
gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.25.0', require: false
gem 'opentelemetry-instrumentation-excon', '~> 0.29.0', require: false
gem 'opentelemetry-instrumentation-faraday', '~> 0.33.0', require: false
gem 'opentelemetry-instrumentation-http', '~> 0.30.0', require: false
gem 'opentelemetry-instrumentation-http_client', '~> 0.29.0', require: false
gem 'opentelemetry-instrumentation-net_http', '~> 0.29.0', require: false
gem 'opentelemetry-instrumentation-pg', '~> 0.36.0', require: false
gem 'opentelemetry-instrumentation-rack', '~> 0.31.0', require: false
gem 'opentelemetry-instrumentation-rails', '~> 0.42.0', require: false
gem 'opentelemetry-instrumentation-redis', '~> 0.29.0', require: false
gem 'opentelemetry-instrumentation-sidekiq', '~> 0.29.0', require: false
gem 'opentelemetry-sdk', '~> 1.4', require: false
end
@@ -129,15 +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.59.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'
@@ -159,6 +157,9 @@ group :test do
# Stub web requests for specs
gem 'webmock', '~> 3.18'
# Websocket driver for testing integration between rails/sidekiq and streaming
gem 'websocket-driver', '~> 0.8', require: false
end
group :development do
@@ -176,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

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
<p align="center">
<a style="text-decoration:none" href="https://www.youtube.com/watch?v=IPSbNdBmWKE">
<img alt="Mastodon hero image" src="https://github.com/user-attachments/assets/ef53f5e9-c0d8-484d-9f53-00efdebb92c3" />
<img alt="Mastodon hero image" src="./docs/hero-nodes.gif" />
</a>
</p>
@@ -56,10 +56,11 @@ Mastodon is a **free, open-source social network server** based on [ActivityPub]
### Requirements
- **Ruby** 3.2+
- **PostgreSQL** 13+
- **Ruby** 3.3+
- **PostgreSQL** 14+
- **Redis** 7.0+
- **Node.js** 20+
- **Node.js** 22+
- **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

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

5
Vagrantfile vendored
View File

@@ -12,7 +12,7 @@ sudo apt-add-repository 'deb https://dl.yarnpkg.com/debian/ stable main'
# Add repo for NodeJS
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
NODE_MAJOR=20
NODE_MAJOR=24
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt-get update
@@ -29,7 +29,6 @@ sudo apt-get install \
libpq-dev \
libxml2-dev \
libxslt1-dev \
imagemagick \
nodejs \
redis-server \
redis-tools \
@@ -116,7 +115,7 @@ gem install bundler foreman
bundle install
# Install node modules
sudo corepack enable
sudo npm i -g corepack
corepack prepare
yarn install

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
@@ -71,6 +73,10 @@ class AccountsController < ApplicationController
params[:username]
end
def account_id_param
params[:id]
end
def skip_temporary_suspension_response?
request.format == :json
end

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
@@ -39,7 +44,7 @@ class ActivityPub::InboxesController < ActivityPub::BaseController
return @body if defined?(@body)
@body = request.body.read
@body.force_encoding('UTF-8') if @body.present?
@body.presence&.force_encoding('UTF-8')
request.body.rewind if request.body.respond_to?(:rewind)

View File

@@ -22,13 +22,13 @@ class ActivityPub::LikesController < ActivityPub::BaseController
def set_status
@status = @account.statuses.find(params[:status_id])
authorize @status, :show?
rescue Mastodon::NotPermittedError
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
not_found
end
def likes_collection_presenter
ActivityPub::CollectionPresenter.new(
id: account_status_likes_url(@account, @status),
id: ActivityPub::TagManager.instance.likes_uri_for(@status),
type: :unordered,
size: @status.favourites_count
)

View File

@@ -73,6 +73,8 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController
end
def set_account
@account = params[:account_username].present? ? Account.find_local!(username_param) : Account.representative
return super if params[:account_username].present? || params[:account_id].present?
@account = Account.representative
end
end

View File

@@ -9,7 +9,7 @@ class ActivityPub::QuoteAuthorizationsController < ActivityPub::BaseController
before_action :set_quote_authorization
def show
expires_in 0, public: @quote.status.distributable? && public_fetch_mode?
expires_in 30.seconds, public: true if @quote.quoted_status.distributable? && public_fetch_mode?
render json: @quote, serializer: ActivityPub::QuoteAuthorizationSerializer, adapter: ActivityPub::Adapter, content_type: 'application/activity+json'
end
@@ -21,8 +21,10 @@ class ActivityPub::QuoteAuthorizationsController < ActivityPub::BaseController
def set_quote_authorization
@quote = Quote.accepted.where(quoted_account: @account).find(params[:id])
authorize @quote.status, :show?
rescue Mastodon::NotPermittedError
return not_found unless @quote.status.present? && @quote.quoted_status.present?
authorize @quote.quoted_status, :show?
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
not_found
end
end

View File

@@ -25,7 +25,7 @@ class ActivityPub::RepliesController < ActivityPub::BaseController
def set_status
@status = @account.statuses.find(params[:status_id])
authorize @status, :show?
rescue Mastodon::NotPermittedError
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
not_found
end
@@ -37,7 +37,7 @@ class ActivityPub::RepliesController < ActivityPub::BaseController
def replies_collection_presenter
page = ActivityPub::CollectionPresenter.new(
id: account_status_replies_url(@account, @status, page_params),
id: ActivityPub::TagManager.instance.replies_uri_for(@status, page_params),
type: :unordered,
part_of: account_status_replies_url(@account, @status),
next: next_page,
@@ -47,7 +47,7 @@ class ActivityPub::RepliesController < ActivityPub::BaseController
return page if page_requested?
ActivityPub::CollectionPresenter.new(
id: account_status_replies_url(@account, @status),
id: ActivityPub::TagManager.instance.replies_uri_for(@status),
type: :unordered,
first: page
)
@@ -66,8 +66,7 @@ class ActivityPub::RepliesController < ActivityPub::BaseController
# Only consider remote accounts
return nil if @replies.size < DESCENDANTS_LIMIT
account_status_replies_url(
@account,
ActivityPub::TagManager.instance.replies_uri_for(
@status,
page: true,
min_id: @replies&.last&.id,
@@ -77,8 +76,7 @@ class ActivityPub::RepliesController < ActivityPub::BaseController
# For now, we're serving only self-replies, but next page might be other accounts
next_only_other_accounts = @replies&.last&.account_id != @account.id || @replies.size < DESCENDANTS_LIMIT
account_status_replies_url(
@account,
ActivityPub::TagManager.instance.replies_uri_for(
@status,
page: true,
min_id: next_only_other_accounts ? nil : @replies&.last&.id,

View File

@@ -22,13 +22,13 @@ class ActivityPub::SharesController < ActivityPub::BaseController
def set_status
@status = @account.statuses.find(params[:status_id])
authorize @status, :show?
rescue Mastodon::NotPermittedError
rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError
not_found
end
def shares_collection_presenter
ActivityPub::CollectionPresenter.new(
id: account_status_shares_url(@account, @status),
id: ActivityPub::TagManager.instance.shares_uri_for(@status),
type: :unordered,
size: @status.reblogs_count
)

View File

@@ -0,0 +1,69 @@
# frozen_string_literal: true
module Admin
class CollectionsController < BaseController
before_action :set_account
before_action :set_collection, only: :show
before_action :set_collections, except: :show
PER_PAGE = 20
def index
authorize [:admin, :collection], :index?
@collection_batch_action = Admin::CollectionBatchAction.new
end
def show
authorize @collection, :show?
end
def batch
authorize [:admin, :collection], :index?
@collection_batch_action = Admin::CollectionBatchAction.new(admin_collection_batch_action_params.merge(current_account: current_account, report_id: params[:report_id], type: action_from_button))
@collection_batch_action.save!
rescue ActionController::ParameterMissing
flash[:alert] = I18n.t('admin.collections.no_collection_selected')
ensure
redirect_to after_create_redirect_path
end
private
def after_create_redirect_path
report_id = @collections_batch_action&.report_id || params[:report_id]
if report_id.present?
admin_report_path(report_id)
else
admin_account_collections_path(params[:account_id], params[:page])
end
end
def admin_collection_batch_action_params
params
.expect(admin_collection_batch_action: [collection_ids: []])
end
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
def set_collections
@collections = @account.collections.includes(accepted_collection_items: :account).page(params[:page]).per(PER_PAGE)
end
def action_from_button
if params[:report]
'report'
elsif params[:remove_from_report]
'remove_from_report'
end
end
end
end

View File

@@ -5,6 +5,15 @@ module Admin
def index
authorize :custom_emoji, :index?
# If filtering by local emojis, remove by_domain filter.
params.delete(:by_domain) if params[:local].present?
# If filtering by domain, ensure remote filter is set.
if params[:by_domain].present?
params.delete(:local)
params[:remote] = '1'
end
@custom_emojis = filtered_custom_emojis.eager_load(:local_counterpart).page(params[:page])
@form = Form::CustomEmojiBatch.new
end

View File

@@ -9,10 +9,16 @@ module Admin
@pending_appeals_count = Appeal.pending.async_count
@pending_reports_count = Report.unresolved.async_count
@pending_tags_count = Tag.pending_review.async_count
@pending_tags_count = pending_tags.async_count
@pending_users_count = User.pending.async_count
@system_checks = Admin::SystemCheck.perform(current_user)
@time_period = (29.days.ago.to_date...Time.now.utc.to_date)
end
private
def pending_tags
::Trends::TagFilter.new(status: :pending_review).results
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,7 +5,7 @@ module Admin
def index
authorize :email_domain_block, :index?
@email_domain_blocks = EmailDomainBlock.parents.includes(:children).order(id: :desc).page(params[:page])
@email_domain_blocks = filter_by_domain.page(params[:page])
@form = Form::EmailDomainBlockBatch.new
end
@@ -57,6 +57,12 @@ module Admin
private
def filter_by_domain
scope = EmailDomainBlock.parents.includes(:children).order(id: :desc)
scope.merge!(EmailDomainBlock.matches_domain(params[:domain])) if params[:domain].present?
scope
end
def set_resolved_records
@resolved_records = DomainResource.new(@email_domain_block.domain).mx
end

View File

@@ -0,0 +1,9 @@
# frozen_string_literal: true
class Admin::EmailSubscriptions::AdditionalFooterTextsController < Admin::SettingsController
private
def after_update_redirect_path
admin_email_subscriptions_path
end
end

View File

@@ -0,0 +1,34 @@
# frozen_string_literal: true
class Admin::EmailSubscriptions::SetupsController < Admin::BaseController
before_action :require_enabled!
def show
authorize :email_subscription, :enable?
@form = Form::EmailSubscriptionsConfirmation.new
end
def create
authorize :email_subscription, :enable?
@form = Form::EmailSubscriptionsConfirmation.new(resource_params)
if @form.valid?
Setting.email_subscriptions = true
redirect_to admin_email_subscriptions_path
else
render :show
end
end
private
def require_enabled!
raise ActionController::RoutingError, 'Feature disabled' unless Rails.application.config.x.email_subscriptions
end
def resource_params
params.expect(form_email_subscriptions_confirmation: [:agreement_email_volume, :agreement_privacy_and_terms])
end
end

View File

@@ -0,0 +1,23 @@
# frozen_string_literal: true
class Admin::EmailSubscriptionsController < Admin::BaseController
def index
authorize :email_subscription, :index?
@enabled = Setting.email_subscriptions
@roles = UserRole.where('permissions & ? != 0', UserRole::FLAGS[:manage_email_subscriptions] | UserRole::FLAGS[:administrator])
@accounts = Account.local.where.associated(:email_subscriptions).includes(:user)
end
def disable
authorize :email_subscription, :disable?
Setting.email_subscriptions = false
redirect_to admin_email_subscriptions_path, notice: I18n.t('admin.email_subscriptions.disabled_msg')
end
def purge
authorize :email_subscription, :purge?
Admin::EmailSubscriptionsPurgeWorker.perform_async
redirect_to admin_email_subscriptions_path, notice: I18n.t('admin.email_subscriptions.purged_msg')
end
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

@@ -16,6 +16,8 @@ module Admin
@report_notes = @report.notes.chronological.includes(:account)
@action_logs = @report.history.includes(:target)
@form = Admin::StatusBatchAction.new
@collection_form = Admin::CollectionBatchAction.new
@collections = @report.collections
@statuses = @report.statuses.with_includes
end
@@ -50,7 +52,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 +60,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, :collection_limit, permissions_as_keys: []])
end
end
end

View File

@@ -9,7 +9,7 @@ module Admin
@site_upload.destroy!
redirect_back fallback_location: admin_settings_path, notice: I18n.t('admin.site_uploads.destroyed_msg')
redirect_back_or_to admin_settings_path, notice: I18n.t('admin.site_uploads.destroyed_msg')
end
private

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,28 @@
# 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
rescue ActiveRecord::RecordInvalid => e
render json: ValidationErrorFormatter.new(e).as_json, status: 422
end
private
def set_account
@account = Account.local.find(params[:account_id])
end
def require_feature_enabled!
head 404 unless Rails.application.config.x.email_subscriptions && Setting.email_subscriptions
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

@@ -1,10 +1,12 @@
# frozen_string_literal: true
class Api::V1::AnnualReportsController < Api::BaseController
before_action -> { doorkeeper_authorize! :read, :'read:accounts' }, only: :index
before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, except: :index
include AsyncRefreshesConcern
before_action -> { doorkeeper_authorize! :read, :'read:accounts' }, except: [:read, :generate]
before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, only: [:read, :generate]
before_action :require_user!
before_action :set_annual_report, except: :index
before_action :set_annual_report, only: [:show, :read]
def index
with_read_replica do
@@ -28,6 +30,28 @@ class Api::V1::AnnualReportsController < Api::BaseController
relationships: @relationships
end
def state
render json: { state: report_state }
end
def generate
return render_empty unless year == AnnualReport.current_campaign
return render_empty if GeneratedAnnualReport.exists?(account_id: current_account.id, year: year)
async_refresh = AsyncRefresh.new(refresh_key)
if async_refresh.running?
add_async_refresh_header(async_refresh, retry_seconds: 2)
return head 202
end
add_async_refresh_header(AsyncRefresh.create(refresh_key), retry_seconds: 2)
GenerateAnnualReportWorker.perform_async(current_account.id, year)
head 202
end
def read
@annual_report.view!
render_empty
@@ -35,7 +59,21 @@ class Api::V1::AnnualReportsController < Api::BaseController
private
def report_state
AnnualReport.new(current_account, year).state do |async_refresh|
add_async_refresh_header(async_refresh, retry_seconds: 2)
end
end
def refresh_key
"wrapstodon:#{current_account.id}:#{year}"
end
def year
params[:id]&.to_i
end
def set_annual_report
@annual_report = GeneratedAnnualReport.find_by!(account_id: current_account.id, year: params[:id])
@annual_report = GeneratedAnnualReport.find_by!(account_id: current_account.id, year: year)
end
end

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

@@ -16,7 +16,7 @@ class Api::V1::NotificationsController < Api::BaseController
@relationships = StatusRelationshipsPresenter.new(target_statuses_from_notifications, current_user&.account_id)
end
render json: @notifications, each_serializer: REST::NotificationSerializer, relationships: @relationships
render json: @notifications, each_serializer: REST::NotificationSerializer, relationships: @relationships, supported_notification_types: params[:supported_types]
end
def unread_count
@@ -29,7 +29,7 @@ class Api::V1::NotificationsController < Api::BaseController
def show
@notification = current_account.notifications.without_suspended.find(params[:id])
render json: @notification, serializer: REST::NotificationSerializer
render json: @notification, serializer: REST::NotificationSerializer, supported_notification_types: params[:supported_types]
end
def clear
@@ -89,6 +89,8 @@ class Api::V1::NotificationsController < Api::BaseController
end
def pagination_params(core_params)
params.slice(:limit, :account_id, :types, :exclude_types, :include_filtered).permit(:limit, :account_id, :include_filtered, types: [], exclude_types: []).merge(core_params)
params.slice(:limit, :account_id, :types, :exclude_types, :include_filtered, :supported_types)
.permit(:limit, :account_id, :include_filtered, types: [], exclude_types: [], supported_types: [])
.merge(core_params)
end
end

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

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