Compare commits

...

1006 Commits

Author SHA1 Message Date
Claire 18eacc7a07
Merge pull request #2447 from ClearlyClaire/glitch-soc/merge-upstream 7 months ago
Renaud Chaput 5d9df170cf [Glitch] Do not display the navigation banner in the logo container 7 months ago
Claire cc000c8859 Merge commit '126cd7705dbeca5712da941a72661e26c189658b' into glitch-soc/merge-upstream 7 months ago
Claire 1c53aec00e
Merge pull request #2446 from ClearlyClaire/glitch-soc/merge-upstream 7 months ago
Brian Campbell 1a3248dc90 [Glitch] Consider shown and pending status in explore prompt calculation 7 months ago
Renaud Chaput 41f58e945c [Glitch] The `class` props should be `className` 7 months ago
Renaud Chaput 126cd7705d
Do not display the navigation banner in the logo container (#27476) 7 months ago
Claire 74fd46d3ab Merge commit '9f218c9924b883207a3463a29314c92032cf06df' into glitch-soc/merge-upstream 7 months ago
Claire 918137babc
Merge pull request #2444 from ClearlyClaire/glitch-soc/merge-upstream 7 months ago
Jeong Arm 68401fc426 [Glitch] Support "in:public" search filter 7 months ago
Matt Jankowski 9f218c9924
Refactor appeal partial to avoid brakeman XSS warning (#25880) 7 months ago
Matt Jankowski bcd0171e5e
Fix `Lint/UselessAssignment` cop (#27472) 7 months ago
Daniel M Brasil 7bc8f03162
Add test coverage for `Mastodon::CLI::Accounts#migrate` (#25284) 7 months ago
github-actions[bot] 1ffd5a98a9
New Crowdin Translations (automated) (#27465) 7 months ago
Brian Campbell f76e5111f0
Consider shown and pending status in explore prompt calculation (#27466) 7 months ago
Renaud Chaput 10df97c542
The `class` props should be `className` (#27462) 7 months ago
Claire 510845b6b9
Only enable github-rspec for pull_request events (#27456) 7 months ago
Matt Jankowski a1b27d8b61
Fix `Naming/VariableNumber` cop (#27447) 7 months ago
Emelia Smith 7c3fea7275
Feature: Allow token introspection without read scope (#27142) 7 months ago
github-actions[bot] 4612576c68
New Crowdin Translations (automated) (#27454) 7 months ago
Matt Jankowski 63a2a4b074
Fix `Performance/DeletePrefix` cop (#27448) 7 months ago
Daniel M Brasil 091a21e1bc
Add test coverage for `Mastodon::CLI::Accounts#prune` (#25204) 7 months ago
Claire e9dc30cdba
Fix duplicate github annotations for rspec failures (#27450) 7 months ago
Claire 0d18c47c18 Enable scheduled actions only on glitch-soc's repo 7 months ago
Claire 63179f0bf4 Merge commit '5ef26d8fd50081c642b858a82bf0c5431b1c7e83' into glitch-soc/merge-upstream 7 months ago
Stanislas Signoud 8bbbd012d4 [Glitch] Fix missing redirections to make sure /home redirect to the advanced UI 7 months ago
Claire c10a667ac2 Merge commit '935d54124e80e9fe5365c724e5c8827a2b3ed5b3' into glitch-soc/merge-upstream 7 months ago
Claire b867d4581e Merge commit 'c91c0175db1cc8b954a977d29472886234ce9586' into glitch-soc/merge-upstream 7 months ago
Claire 656a41db2a Merge commit '77098c6f1c25958960df98a1510b28352a39704f' into glitch-soc/merge-upstream 7 months ago
Nick Schonning 5ef26d8fd5
Add RSpec GitHub annotations gem (#24040) 7 months ago
Matt Jankowski 71447ab19f
Fix `Capybara/ClickLinkOrButtonStyle` cop in spec/features/admin area (#27445) 7 months ago
renovate[bot] 0036de46bc
Update dependency rubocop-performance to v1.19.1 (#26949) 7 months ago
Jeong Arm ad44d832b8
Support "in:public" search filter (#26976) 7 months ago
Matt Jankowski 2528a0721f
Update `rubocop-capybara` to version 2.19.0 (#26982) 7 months ago
renovate[bot] 1996fb6fd6
Update dependency puma to v6.4.0 (#27006) 7 months ago
Matt Jankowski 65cd0700e4
Refactor domains cli to remove model call from regex (#25878) 7 months ago
Claire b34a2b1b33
Fix errors in CLI specs (#27399) 7 months ago
Jeong Arm c0cda1adaf
Let use http_hidden_proxy on docker-compose (#27054) 7 months ago
Renaud Chaput 1fb4e40145
Run scheduled actions only on the main repo (#27343) 7 months ago
Stanislas Signoud 935d54124e
Fix missing redirections to make sure /home redirect to the advanced UI (#27378) 7 months ago
Victor Lee c4bddc9855
Add spec for poll model (#23399) 7 months ago
Matt Jankowski 12bb7be8b5
Spec speed ups on `AccountsController` spec (#25391) 7 months ago
Matt Jankowski d54fec24e5
Add coverage for `CLI::PreviewCards#remove` command (#27441) 7 months ago
Matt Jankowski 19900f647e
Add coverage for `UnreservedUsernameValidator` (#25590) 7 months ago
Claire 1084703417
Update changelog (#27440) 7 months ago
Matt Jankowski fc9ab61448
Expand spec coverage of `CLI::Media` (#27437) 7 months ago
Matt Jankowski 33b073f77d
Extract partials from `admin/reports/show` view (#27427) 7 months ago
Matt Jankowski 8d0f12f776
Extract partials from `admin/accounts/show` view (#27428) 7 months ago
Matt Jankowski 893b2f33fd
Extract shared example for cacheable response in specs (#25388) 7 months ago
Matt Jankowski 708299bb0d
Misc coverage improvements for `Admin::` and `Settings::` controllers (#25346) 7 months ago
Daniel M Brasil e0ed0f8c7c
Migrate to request specs in `/api/v1/notifications` (#25553) 7 months ago
Matt Jankowski 08a376cbcb
Fix `Style/CombinableLoops` cop (#27429) 7 months ago
Matt Jankowski c91c0175db
Extract `card` partial from `disputes/strikes/show` view (#27426) 7 months ago
Daniel M Brasil cafdaec6cf
Migrate to request specs in `/api/v1/lists/:id/accounts` (#25468) 7 months ago
Daniel M Brasil 8e6116503d
Migrate to request specs in `/api/v1/blocks` (#25517) 7 months ago
Daniel M Brasil d9caa6ed24
Migrate to request specs in `/api/v1/admin/accounts` (#25563) 7 months ago
Matt Jankowski f5bc1f20e2
Add coverage for `ExistingUsernameValidator` (#25592) 7 months ago
Matt Jankowski f8afa0f614
Remove unused stub json ld context (#25454) 7 months ago
Matt Jankowski 00e92b4038
Add coverage for `CLI::Statuses` command (#25321) 7 months ago
Claire 299aa71c8f
Fix handling of `inLanguage` attribute in preview card processing (#27423) 7 months ago
Wladimir Palant 23f8e93c64
Fixes #23135 - Allow cross origin request for /nodeinfo/2.0 API (#27413) 7 months ago
github-actions[bot] 13456efd7b
New Crowdin Translations (automated) (#27410) 7 months ago
renovate[bot] a00fc83701
Update dependency bufferutil to v4.0.8 (#27412) 7 months ago
renovate[bot] f0ef87b84d
Update dependency i18n-tasks to v1.0.13 (#27403) 7 months ago
Renaud Chaput e0da64bb4e
Fix empty ENV variables not using default nil value (#27400) 7 months ago
Daniel M Brasil 82beeb2f7e
Migrate to request specs in `/api/v1/admin/trends/links` (#25739) 7 months ago
Matt Jankowski 1b195ce115
Speed-up on `Rack::Attack` spec (#25542) 7 months ago
Claire 71cfdd7865
Fix duplicate tests (#27395) 7 months ago
Matt Jankowski cad8cc90ba
Speed-up on `MoveWorker` spec (#25528) 7 months ago
Daniel M Brasil 058f73a4f5
Add request specs for `/api/v1/reports` (#25475) 7 months ago
Matt Jankowski abf0e1fa39
Move `SignedReqestHelpers` rspec config to separate file (#25453) 7 months ago
Daniel M Brasil bc6cd27d9e
Migrate to request specs in `/api/v1/followed_tags` (#25472) 7 months ago
Matt Jankowski fd9dea21d0
DB speedup in `API::` controller/request specs (#25516) 7 months ago
Daniel M Brasil ecdb31d479
Migrate to request specs in `/api/v1/favourites` (#25518) 7 months ago
Daniel M Brasil 7664e3b692
Migrate to request specs in `/api/v1/statuses/:status_id/source` (#25634) 7 months ago
Daniel M Brasil 4230d1ee0a
Migrate to request specs in `/api/v1/timelines/tag/:hashtag` (#25797) 7 months ago
Renaud Chaput 77098c6f1c
Delete .github/FUNDING.yml (#27390) 7 months ago
renovate[bot] 5c287c4958
Update dependency rubocop to v1.57.1 (#27389) 7 months ago
KMY(雪あすか) 45bdd60f3c
Fix when unfollow a tag, my post also disappears from the home timeline (#27391) 7 months ago
github-actions[bot] 773d25e8df
New Crowdin Translations (automated) (#27388) 7 months ago
renovate[bot] 6a9aab38d7
Update dependency devise-two-factor to v4.1.1 (#27382) 7 months ago
Matt Jankowski 133f218a4d
Add system specs for admin area `batch` actions (#25027) 7 months ago
Claire c86ad45660
Change PWA start URL from `/home` to `/` (#27377) 7 months ago
Claire 45a19ddfe4
Merge pull request #2440 from ClearlyClaire/glitch-soc/merge-upstream 7 months ago
github-actions[bot] c348b904a5
New Crowdin Translations (automated) (#27376) 7 months ago
Matt Jankowski d4c2dca874
Fix haml-lint `InstanceVariables` rule for auth/sessions/two_factor/o… (#27372) 7 months ago
renovate[bot] 85b36fbbd3
Update dependency devise to v4.9.3 (#27373) 7 months ago
Matt Jankowski d7a8f6b658
Fix haml-lint `InstanceVariables` rule for relationships/account (#27342) 7 months ago
github-actions[bot] f1ae72ba46
New Crowdin Translations (automated) (#27364) 7 months ago
renovate[bot] d0a3331caa
Update dependency rubocop to v1.57.0 (#27371) 7 months ago
François Hodierne 608cd66239
Update README requirements from node 14 to node 16 (#27369) 7 months ago
renovate[bot] 1afb7f4104
Update dependency lograge to v0.14.0 (#27363) 7 months ago
Matt Jankowski f9abe700e7
Fix haml-lint `InstanceVariables` rule for auth/registrations/status (#27341) 7 months ago
renovate[bot] 0111e48893
Update dependency sidekiq to v6.5.12 (#27358) 7 months ago
Matt Jankowski 66becf9a1e
Fix haml-lint `InstanceVariables` rule for admin/reports/actions (#27339) 7 months ago
Claire 7d2cd7195b
Add variable delay before link verification of remote account links (#27351) 7 months ago
Claire 99c72830bc [Glitch] Fix scroll position in thread view reseting when closing a modal 7 months ago
Claire 3735e6f79d Merge commit '27e84c069112a3d2abfad947642457cc997a261a' into glitch-soc/merge-upstream 7 months ago
Claire 1a4a23b5c8
Merge pull request #2439 from ClearlyClaire/glitch-soc/merge-upstream 7 months ago
Claire 27e84c0691
Fix duplicate reports being sent when reporting some remote posts (#27355) 7 months ago
Claire 9d1c3d0678
Fix scroll position in thread view reseting when closing a modal (#27350) 7 months ago
github-actions[bot] 1a2a4c389f
New Crowdin Translations (automated) (#27347) 7 months ago
renovate[bot] 1745c582f8
Update dependency sidekiq to v6.5.11 (#27345) 7 months ago
Claire 05159d2f94 [Glitch] Fix clicking on already-loaded thread scrolling to the top of the thread 7 months ago
Claire 8ef1a95b1c Merge commit '4c2aca777f6ae6942d0cf11aee56a925694ccdef' into glitch-soc/merge-upstream 7 months ago
Renaud Chaput 7b325aa81b [Glitch] Autofix missing comma and indentation in JS files 7 months ago
Claire 4a9cdfb928 Merge commit '774e1189d26fffd914107a4236f6287043c988f8' into glitch-soc/merge-upstream 7 months ago
Claire b63d526590 [Glitch] Fix clicking on already-opened thread post scrolling to the top of the thread 7 months ago
Claire 3da7afdeed Merge commit 'c310374a2f83a890520ace50e41c1e3d046e15e1' into glitch-soc/merge-upstream 7 months ago
Claire 4c2aca777f
Fix clicking on already-loaded thread scrolling to the top of the thread (#27338) 7 months ago
Claire 9af24835f6
Merge pull request #2434 from ClearlyClaire/glitch-soc/merge-upstream 7 months ago
Renaud Chaput 774e1189d2
Change `eslint` config to autofix missing comma and indentation in JS files (#26711) 7 months ago
Claire c310374a2f
Fix clicking on already-opened thread post scrolling to the top of the thread (#27331) 7 months ago
github-actions[bot] 89b48681cf
New Crowdin Translations (automated) (#27321) 7 months ago
renovate[bot] 5fc5a548b4
Update DefinitelyTyped types (non-major) (#27327) 7 months ago
renovate[bot] eabe839744
Update eslint (non-major) (#27328) 7 months ago
Claire 967bd543bb [Glitch] Fix auto-loading-more when not scrolled 7 months ago
Claire 53f5b27bd1 Merge commit '640421f661ee4d7e76a2aab607e7b15687940b6f' into glitch-soc/merge-upstream 7 months ago
Claire 86c9c5afa0 Merge commit '40ba6e119b7457161fd43b449875d0fb9d473c1a' into glitch-soc/merge-upstream 7 months ago
Claire ac2370778a Merge commit 'c676bc91e9c3aa81eb7cfbce3c5c5e80b84d3d02' into glitch-soc/merge-upstream 7 months ago
Claire 74c27e33e3 Merge commit '37bbd3c1064380a756b4e821655d7697105f99f5' into glitch-soc/merge-upstream 7 months ago
Michael Stanclift 8eb09c6f72 [Glitch] Keep version string displayed without breakpoints in UI 7 months ago
Claire a5dbb1ee5a Merge commit '5a437edc7f22d5797e5af29d9b450a03eccec304' into glitch-soc/merge-upstream 7 months ago
Claire e83059fd9d [Glitch] Fix explore prompt appearing because of posts being received out of order 7 months ago
Claire e9a181c52c Merge commit 'e95d25e1013b6328457b81bd98e8d6a841d45ec2' into glitch-soc/merge-upstream 7 months ago
Claire 702d162998 Merge commit '5393be7a21331c8615ffb79c2271db92f6959458' into glitch-soc/merge-upstream 7 months ago
Claire d7fcd70023 Merge commit '2016c5d912f400ae98ee03ce269112de2f9ec62d' into glitch-soc/merge-upstream 7 months ago
Michael Stanclift cfc0da77ac [Glitch] Fix retention dashboard not displaying correct month 7 months ago
Claire 19ebf7797e Merge commit 'e6b903b21e0682c1156ffec583ac2836fda7d657' into glitch-soc/merge-upstream 7 months ago
Andy Piper 640421f661
Add 4.2.x to supported versions in SECURITY.md (#27317) 7 months ago
Claire 3262d1f1b6
Fix incorrect serialization of regional languages in `contentMap` (#27207) 7 months ago
Michael Stanclift 3171afc36a
Add Elasticsearch index size to Admin dashboard (#27301) 7 months ago
Claire 340c390849
Fix crash when filtering for “dormant” relationships (#27306) 7 months ago
Claire 4d59dfb1c6
Fix some remote posts getting truncated (#27307) 7 months ago
github-actions[bot] e0b54ed3e1
New Crowdin Translations (automated) (#27304) 7 months ago
renovate[bot] 027c1bef8d
Update dependency active_model_serializers to v0.10.14 (#27303) 7 months ago
Renaud Chaput c4cff3d762
Remove Capistrano (#27295) 7 months ago
Matt Jankowski 165ec6c779
Remove bundle audit skipping sidekiq CVE (#27291) 7 months ago
renovate[bot] 5606a17933
Update dependency sidekiq to v6.5.10 (#27287) 7 months ago
Claire 2b98e2ecd6
Fix auto-loading-more when not scrolled (#27286) 7 months ago
github-actions[bot] 32ab474472
New Crowdin Translations (automated) (#27277) 7 months ago
Claire 3c13d70600
Add mention of YJIT in admin dashboard if enabled (#27283) 7 months ago
renovate[bot] d22515861e
Update dependency @reduxjs/toolkit to v1.9.7 (#27275) 7 months ago
Claire 40ba6e119b
Fix Vary headers not being set on some redirects (#27272) 7 months ago
github-actions[bot] 8e4251f9e7
New Crowdin Translations (automated) (#27270) 7 months ago
Matt Jankowski 72cec47c13
Silence deprecation warning in CacheBuster spec (#27264) 7 months ago
gunchleoc 68ec1d180a
Fix language sorting in settings (#27158) 7 months ago
Matt Jankowski c676bc91e9
Dont match mention in url query string (#25656) 7 months ago
Matt Jankowski 2f8f92df48
Fix Elastic check deprecation warning about gem version (#27262) 7 months ago
Nick Schonning 85db392464
Autofix Rubocop cops for config/ (#24145) 7 months ago
Matt Jankowski e715da6d25
Fix haml-lint Rubocop `Rails/*` cops (#26042) 7 months ago
Nick Schonning 8bb4706e11
Move migration_helpers Rubocop ignore to config (#24236) 7 months ago
Claire 37bbd3c106
Fix double scroll bars in some columns in advanced interface (#27187) 7 months ago
Claire ceb365c419
Fix boosts of local users being filtered in account timelines (#27204) 7 months ago
Claire 4e55001e65
Add a short-lived lock to trend refresh scheduler (#27253) 7 months ago
Michael Stanclift 5a437edc7f
Keep version string displayed without breakpoints in UI (#26986) 7 months ago
David Aaron 6320c52630
Change min age of backup policy from 1 week to 6 days (#27200) 7 months ago
jsgoldstein ad637eacd1
Add a test case for ES8 (#27248) 7 months ago
renovate[bot] e836d078bb
Update dependency haml_lint to v0.51.0 (#27250) 7 months ago
Jakob Gillich 770fd993ec
Fix importer returning negative row estimates (#27258) 7 months ago
github-actions[bot] e95d25e101
New Crowdin Translations (automated) (#27260) 7 months ago
Claire 5e56f3db65
Change some worker lock TTLs (#27246) 7 months ago
Claire 7e7d6e695b
Fix incorrectly keeping outdated update notices absent from the API endpoint (#27021) 7 months ago
Claire 1e2d4975cf
Fix import progress not updating on certain failures (#27247) 7 months ago
github-actions[bot] ee866ec0e0
New Crowdin Translations (automated) (#27220) 7 months ago
Emelia Smith f68d540271
Fix websocket connections being incorrectly decremented twice on errors (#27238) 7 months ago
renovate[bot] 5f2d494f0d
Update dependency react-redux to v8.1.3 (#27229) 7 months ago
Jake Anto c2f13769cd
Add PWA shortcut to `/explore` page (#27235) 7 months ago
renovate[bot] bad1629dcd
Update dependency core-js to v3.33.0 (#27237) 7 months ago
renovate[bot] 73a92f9e7a
Update DefinitelyTyped types (non-major) (#27239) 7 months ago
renovate[bot] 829be02abe
Update Node.js to v20.8 (#27240) 7 months ago
Claire d80a819fc6
Fix explore prompt appearing because of posts being received out of order (#27211) 7 months ago
renovate[bot] 5393be7a21
Update eslint (non-major) to v6.7.3 (#27213) 7 months ago
renovate[bot] 48ef7d0f06
Update libretranslate/libretranslate Docker tag to v1.3.12 (#27214) 7 months ago
renovate[bot] 9b785877d2
Update DefinitelyTyped types (non-major) (#27212) 7 months ago
github-actions[bot] 695e42de0d
New Crowdin Translations (automated) (#27202) 7 months ago
renovate[bot] 665093a7b6
Update dependency postcss to v8.4.31 (#27199) 7 months ago
renovate[bot] a1becc9189
Update dependency node to 20.8 (#27201) 7 months ago
Matt Jankowski 340f1a68be
Simplify instance presenter view access (#26046) 7 months ago
Matt Jankowski 2016c5d912
Fix deprecation warning about `rewhere: true` being default behavior (Rails 7.1 prep) (#27190) 7 months ago
Matt Jankowski 99e289f03f
Fix include `Rails.application.routes.url_helpers` (Rails 7.1 prep) (#27189) 7 months ago
Matt Jankowski 89a17878ef
Fix haml-lint `InstanceVariables` rule for admin/roles/_form (#26063) 7 months ago
renovate[bot] f9eefb2785
Update dependency rubocop to v1.56.4 (#27188) 7 months ago
Matt Jankowski 9d56c1949b
Fix haml-lint `InstanceVariables` rule for admin/webhooks/_form (#26062) 7 months ago
Matt Jankowski 3060bfa4bd
Extract filename and csv helper methods from `Form::Import` (#26129) 7 months ago
Matt Jankowski 937dc42f10
Extract methods for file movement in `CLI::Upgrade` (#25120) 7 months ago
Matt Jankowski 56c0babc0b
Fix rubocop `Layout/ArgumentAlignment` cop (#26060) 7 months ago
Matt Jankowski e6b903b21e
Fix haml-lint `InstanceVariables` rule for invites/_form (#26064) 7 months ago
Claire 1da3c588ca
Fix link handling of mentions in user profiles when logged out (#27185) 7 months ago
Claire 686406cc2d
Fix filtering audit log for entries about disabling 2FA (#27186) 7 months ago
Claire f0c720cfc9
Bump version to v4.3.0-alpha.0 (#27022) 7 months ago
github-actions[bot] b93ce7d8b3
New Crowdin Translations (automated) (#27168) 7 months ago
Christian Schmidt 6d0767558a
Make notification respect reduce-motion (#27178) 7 months ago
renovate[bot] 66a7bc215c
Update dependency glob to v10.3.10 (#27169) 7 months ago
renovate[bot] 0f588a4a86
Update dependency axios to v1.5.1 (#27159) 7 months ago
Michael Stanclift 7fddeca190
Fix retention dashboard not displaying correct month (#27180) 7 months ago
renovate[bot] 2979a5924b
Update dependency @material-design-icons/svg to v0.14.13 (#27181) 7 months ago
gunchleoc ce79caca4e
Only strip country code when language not listed in SUPPORTED_LOCALES (#27099) 7 months ago
Georg Gadinger ebd2017524
fix Content-Security-Policy when using Azure storage (#2427) 8 months ago
Claire fde89a8fc0
Merge pull request #2426 from ClearlyClaire/glitch-soc/merge-upstream 8 months ago
Claire 1eeaa0d84f [Glitch] Fix width of large text icon buttons 8 months ago
gunchleoc ca7d16912e [Glitch] Fix line wrapping of language selection button with long locale codes 8 months ago
Claire 02e6d9f8f9 [Glitch] Fix explore prompt sometimes showing up when the home TL is loading 8 months ago
Renaud Chaput 919ed0e469 [Glitch] Convert `dropdown_menu` state to Typescript 8 months ago
Renaud Chaput b2d67fbe33 [Glitch] Improve modals reducer types 8 months ago
Claire abdb58840a Merge commit '57f592fed50747f3c97718a2761e17bafe6c8698' into glitch-soc/merge-upstream 8 months ago
Renaud Chaput 57f592fed5
Add Typescript types for some API objects (#26602) 8 months ago
renovate[bot] 2054ee7cd5
Update dependency glob to v10.3.9 (#27148) 8 months ago
Claire 82eaa26d87
Update `tootctl maintenance fix-duplicates` to Mastodon v4.2.0 (#27147) 8 months ago
renovate[bot] fdc9f971f7
Update dependency selenium-webdriver to v4.13.1 (#27141) 8 months ago
github-actions[bot] 5ea3e8e765
New Crowdin Translations (automated) (#27144) 8 months ago
renovate[bot] 33a066a952
Update dependency glob to v10.3.8 (#27145) 8 months ago
Essem bd810391d6
Properly remove tIME chunk from PNG uploads (#27111) 8 months ago
renovate[bot] 530f48610d
Update docker/setup-qemu-action action to v3 (#27124) 8 months ago
renovate[bot] cdd8c4eb2a
Update docker/setup-buildx-action action to v3 (#27123) 8 months ago
renovate[bot] 8ea98aa384
Update docker/metadata-action action to v5 (#27122) 8 months ago
renovate[bot] 19bc73b736
Update docker/login-action action to v3 (#27121) 8 months ago
renovate[bot] cf9230fa1c
Update docker/build-push-action action to v5 (#27120) 8 months ago
Claire 06444c86c7
Fix division by zero in video in bitrate computation code (#27129) 8 months ago
Claire a001ae2f39
Fix explore prompt sometimes showing up when the home TL is loading (#27062) 8 months ago
Claire 3de6dcf634
Add redirection on `/deck` URLs for logged-out users (#27128) 8 months ago
Claire 38753acaa5
Fix width of large text icon buttons (#27127) 8 months ago
Claire 1bd7455d81
Fix inefficient queries in “Follows and followers” as well as several admin pages (#27116) 8 months ago
gunchleoc 88fa8e710a
Fix line wrapping of language selection button with long locale codes (#27100) 8 months ago
renovate[bot] aeeddb9d46
Update DefinitelyTyped types (non-major) (#27109) 8 months ago
renovate[bot] 82c44f492d
Update dependency glob to v10.3.7 (#27078) 8 months ago
github-actions[bot] 736fe75346
New Crowdin Translations (automated) (#27080) 8 months ago
renovate[bot] c56d7d702f
Update dependency @reduxjs/toolkit to v1.9.6 (#27110) 8 months ago
renovate[bot] a4c29a4e51
Update Node.js to v20.7 (#27112) 8 months ago
renovate[bot] 1fa40cff70
Update eslint (non-major) (#27113) 8 months ago
Renaud Chaput 4b7bc1f07c
Convert `dropdown_menu` state to Typescript (#25585) 8 months ago
Renaud Chaput b93ffb74bb
Improve modals reducer types (#26610) 8 months ago
Claire 39da3d86f8
Fix ActiveRecord using two connection pools when no replica is defined (#27061) 8 months ago
github-actions[bot] e824585523
New Crowdin Translations (automated) (#27052) 8 months ago
Renaud Chaput 4aaaf0dde3
Fix the search documentation URL in system checks (#27036) 8 months ago
Renaud Chaput a011d3a7c6
Ignore CVE-2023-26141 (Sidekiq) from bundler audit (#27037) 8 months ago
Claire d0d06c99dc
Merge pull request #2422 from ClearlyClaire/glitch-soc/merge-upstream 8 months ago
Claire 86ec1e833e Merge branch 'main' into glitch-soc/merge-upstream 8 months ago
Claire 4fcc026f0f
Bump version to v4.2.0 (#27017) 8 months ago
Claire c04b08a34d
Merge pull request #2419 from ClearlyClaire/glitch-soc/merge-upstream 8 months ago
Claire b57ec6ad6b Fix some settings not being properly migrated when set to `false` 8 months ago
Claire 6760e67c64 [Glitch] Fix search results temporarily disappearing while scrolling and loading more results 8 months ago
Claire f05985f8ec Merge branch 'main' into glitch-soc/merge-upstream 8 months ago
Eugen Rochko 0fbefb6f67
Update AUTHORS.md (#27018) 8 months ago
Claire 8acc75435b
Change S3 checksum mode to be disabled by default (#27007) 8 months ago
aaaaalbert bb6c59a399
Fix #27010: update the copyright year in README (#27016) 8 months ago
Claire 5356ddbcca
Fix search results temporarily disappearing while scrolling and loading more results (#27014) 8 months ago
Claire 890e334703
Add migration tests for negative settings (#27012) 8 months ago
renovate[bot] c74670b4d3
Update dependency glob to v10.3.5 (#27002) 8 months ago
github-actions[bot] effe4728cf
New Crowdin Translations (automated) (#27005) 8 months ago
renovate[bot] 4ed9d9ca6f
Update dependency autoprefixer to v10.4.16 (#27000) 8 months ago
Claire 828eebad48
Add `hide_collections`, `discoverable` and `indexable` attributes to credentials API (#26998) 8 months ago
github-actions[bot] 61fe25fe74
New Crowdin Translations (automated) (#26988) 8 months ago
Claire 889c4d4bbb
Update changelog (#26992) 8 months ago
Claire 5efa6ac771
Merge pull request #2417 from ClearlyClaire/glitch-soc/merge-upstream 8 months ago
Claire 6a9e93ae19 Merge branch 'main' into glitch-soc/merge-upstream 8 months ago
Claire abcc0b38fa
Fix incorrect PostgreSQL version check (#26979) 8 months ago
Claire 57f47e50f0
Merge pull request #2416 from ClearlyClaire/glitch-soc/merge-upstream 8 months ago
Claire f546b0c999 Merge branch 'main' into glitch-soc/merge-upstream 8 months ago
Claire f4b780ba22
Bump version to v4.2.0-rc2 (#26974) 8 months ago
Claire eeab3560fc
Merge pull request from GHSA-v3xf-c9qf-j667 8 months ago
Claire ff32475f5f
Merge pull request from GHSA-2693-xr3m-jhqr 8 months ago
Claire 94893cf24f
Merge pull request from GHSA-hcqf-fw2r-52g4 8 months ago
github-actions[bot] 73ecc4de6e
New Crowdin Translations (automated) (#26978) 8 months ago
Claire 0cb343eec2
Tag nightly images as `latest` in glitch-soc, as it has no proper releases (#2414) 8 months ago
Claire 6f6586808e
Merge pull request #2413 from ClearlyClaire/glitch-soc/merge-upstream 8 months ago
Claire 22ee4e057d Merge commit 'a83615edc9fc1ce3363ddcf1fc676806421a5f65' into glitch-soc/merge-upstream 8 months ago
Claire 1e87575b70 Merge commit '6eb6209d02514c5271238a23601be643c7b9f52d' into glitch-soc/merge-upstream 8 months ago
Claire 7ea5a2c82c
Merge pull request #2411 from ClearlyClaire/glitch-soc/merge-upstream 8 months ago
renovate[bot] a83615edc9
Update eslint (non-major) (#26954) 8 months ago
Eugen Rochko 0f3f9b611f
Change video bitrate to always fit within size limit (#26970) 8 months ago
Claire 70cae19b6b
Fix hashtag bar being sometimes incorrectly hidden (#26960) 8 months ago
Emelia Smith fbfceb9c77
Add additional metrics for streaming (#26945) 8 months ago
renovate[bot] 6eb6209d02
Update DefinitelyTyped types (non-major) (#26953) 8 months ago
renovate[bot] c6a535a197
Update dependency node to 20.7 (#26963) 8 months ago
renovate[bot] 6f9f901153
Update dependency postcss to v8.4.30 (#26964) 8 months ago
github-actions[bot] 67eaaa4b90
New Crowdin Translations (automated) (#26966) 8 months ago
Rob Thomas 200312e8be
Fix crash when viewing a moderation appeal and the moderator account has been deleted (#25900) 8 months ago
github-actions[bot] 1b4902fabf
New Crowdin Translations (automated) (#26913) 8 months ago
Claire 31dedf4697 [Glitch] Fix Web UI making duplicate search queries when scrolling 8 months ago
Claire f61e29cc7e [Glitch] Fix error in Web UI when server rules cannot be fetched 8 months ago
Claire 9688c5fcc4 Merge branch 'main' into glitch-soc/merge-upstream 8 months ago
Claire 4c1518a6f3
Fix Web UI making duplicate search queries when scrolling (#26959) 8 months ago
Claire 893755f4cb
Fix error in Web UI when server rules cannot be fetched (#26957) 8 months ago
Claire 392c07f2bf
Fix `Setting.authorized_fetch` not being properly taken into consideration (#26958) 8 months ago
renovate[bot] 8b5c61ae3a
Update formatjs monorepo (#26955) 8 months ago
renovate[bot] 04623e2f34
Update babel monorepo to v7.22.20 (#26946) 8 months ago
Claire 743fede5be
Merge pull request #2406 from ClearlyClaire/glitch-soc/merge-upstream 8 months ago
Claire 60ecca6acb Revert tabs background color so they are easier to visually distinguish from contents 8 months ago
Claire d3f14dd7d4 [Glitch] Fix dismiss button overlapping with text in dismissable banners 8 months ago
Claire dfc05ec8df Merge commit '6273416292090b2f6bfda33f070cea325a1759df' into glitch-soc/merge-upstream 8 months ago
Claire 5ed72f668f Merge commit 'b90383d07388fe8513e59a6deb1a2391146c6561' into glitch-soc/merge-upstream 8 months ago
Claire cf8b242c4c [Glitch] Fix notification permissions being requested immediately after login 8 months ago
Santiago Kozak 0b5903af7c [Glitch] Fix recent search items not handling overflows correctly 8 months ago
Claire e193c848fe Merge commit '97e4011c3ce31c6d492d5f103e95a35b6ebdc9bd' into glitch-soc/merge-upstream 8 months ago
Eugen Rochko 7384015505 [Glitch] Add recent searches in web UI 8 months ago
Claire 263d601c25 [Glitch] Fix confusing behavior of mute button and volume slider in web UI 8 months ago
Eugen Rochko 58514651c3 [Glitch] Fix mute button and volume slider feeling disconnected in web UI 8 months ago
Eugen Rochko 15c865808a [Glitch] Change onboarding prompt to use full width of banner in web UI 8 months ago
Claire 08b495d95c Merge commit 'b1d89071384ef028c97a3d28cf8cf6bc0ca6c4ce' into glitch-soc/merge-upstream 8 months ago
Claire 9f3df3edee [Glitch] Add some information about Full-text search being disabled in search popout 8 months ago
Claire 5d8c65f2a7 Merge commit '398635c0c4987ec44d937e98431ff5dee331ea94' into glitch-soc/merge-upstream 8 months ago
Eugen Rochko 526f457ebc [Glitch] Add infinite scrolling for search results in web UI 8 months ago
Eugen Rochko f7a4d77d90 [Glitch] Add `in:` to search popout in web UI 8 months ago
Claire 3ca94f6d4a Merge commit '93d051e47d27b5bd10be922a81d4d4eb6c306330' into glitch-soc/merge-upstream 8 months ago
Claire e5269c6a65 [Glitch] Improve interaction modal error handling 8 months ago
Claire e14372c2d1 Merge commit '548c032dbb90ae9c06b05fc05724c49d0b552fd9' into glitch-soc/merge-upstream 8 months ago
Claire 6273416292
Fix post edits not being forwarded as expected (#26936) 8 months ago
Claire 2a4fcc51fd
Fix dismiss button overlapping with text in dismissable banners (#26935) 8 months ago
Claire e4f5114aaf
Fix obsolete cache key in status cache invalidation logic (#26934) 8 months ago
Renaud Chaput 5d93e98da4
Fix container build when cache is disabled (#26932) 8 months ago
Claire 9693c271f1
Fix processing of `min_id` and `max_id` parameters in `/api/v2/search` (#26927) 8 months ago
renovate[bot] 82015dbab6
Update dependency sass to v1.67.0 (#26914) 8 months ago
renovate[bot] 3103415364
Update dependency @babel/core to v7.22.19 (#26920) 8 months ago
Renaud Chaput ef8ca2fd72
Change Dockerfile to upgrade packages when building (#26922) 8 months ago
Claire b90383d073
Bump version to v4.2.0-rc1 (#26916) 8 months ago
Eugen Rochko fc6825055b
Change score half-life for trending posts from 2 hours to 1 hour (#26915) 8 months ago
Claire a04ae16201
Fix CSP when using `ONE_CLICK_SSO_LOGIN` (#26901) 8 months ago
github-actions[bot] 921c6fe654
New Crowdin Translations (automated) (#26498) 8 months ago
Robert R George 20666482ef
Added admin api for managing tags (#26872) 8 months ago
renovate[bot] 97e4011c3c
Update dependency rails to v7.0.8 (#26907) 8 months ago
Jeong Arm 97f3d7b662
Fix Version metadata have trailing dot (#2403) 8 months ago
Plastikmensch 075ee0b2d4
Fix wrong gradient color on collapsed private mentions (#2402) 8 months ago
Claire 520b570474
Fix notification permissions being requested immediately after login (#26472) 8 months ago
Claire 287520453c
Fix front-end bug when processing relationship-related account actions (#26902) 8 months ago
CSDUMMI 9a70cac9de
Fix #26849 by adding the domain of the current SSO provider to the form-action CSP (#26857) 8 months ago
renovate[bot] 93223633fc
Update dependency uuid to v9.0.1 (#26900) 8 months ago
Renaud Chaput 0712cc2b99
Fix Redux types (#26899) 8 months ago
renovate[bot] 9ac9aca142
Update dependency test-prof to v1.2.3 (#26894) 8 months ago
Jeong Arm 59af3c1310
Add PublicStatuses to tootctl search deploy --only option (#26896) 8 months ago
Santiago Kozak d2cfcdd09e
Fix recent search items not handling overflows correctly (#26893) 8 months ago
Claire 20ac5be1c1
Fix error on `status` type notification (bell icon) (#26884) 8 months ago
Renaud Chaput bd06c13204
Convert `actions/account_notes` into Typescript (#26601) 8 months ago
renovate[bot] 7730083611
Update dependency kt-paperclip to v7.2.1 (#26869) 8 months ago
renovate[bot] f3be4eb0dc
Update dependency @rails/ujs to v7.0.8 (#26871) 8 months ago
renovate[bot] 3679e67fad
Update dependency @babel/core to v7.22.17 (#26855) 8 months ago
renovate[bot] c10142ac3c
Update formatjs monorepo (#26874) 8 months ago
renovate[bot] 3d0331fc7a
Update actions/checkout action to v4 (#26882) 8 months ago
renovate[bot] b1d8907138
Update dependency @types/lodash to v4.14.198 (#26878) 8 months ago
renovate[bot] f333d1822b
Update docker.elastic.co/elasticsearch/elasticsearch Docker tag to v7.17.13 (#26879) 8 months ago
renovate[bot] 959ccf5682
Update eslint (non-major) (#26881) 8 months ago
renovate[bot] b98edfa4ba
Update dependency rubocop to v1.56.3 (#26883) 8 months ago
renovate[bot] d5155cbc21
Update dependency ws to v8.14.1 (#26862) 8 months ago
Claire 91040da871
Fix confusing behavior of mute button and volume slider in web UI (#26860) 8 months ago
Claire 33c8708a1a
Change `GET /api/v1/directory` to use database replica rather than primary (#26856) 8 months ago
jsgoldstein 4d9186a48c
Add search tests (#26703) 8 months ago
Eugen Rochko 3a679844e4
Fix `account_id`, `max_id` and `min_id` params not working in search (#26847) 8 months ago
Renaud Chaput e9b528eaee
Use NodeJS v20 by default (#26830) 8 months ago
renovate[bot] 712d96b207
Update dependency ws to v8.14.0 (#26821) 8 months ago
renovate[bot] d0f7d879a6
Update formatjs monorepo (#26844) 8 months ago
Claire 81caafbe84
Fix performances of profile directory (#26842) 8 months ago
renovate[bot] 858ad1f363
Update dependency core-js to v3.32.2 (#26841) 8 months ago
Claire 355e3fb529
Simplify `Account.by_recent_status` and `Account.by_recent_sign_in` scopes (#26840) 8 months ago
renovate[bot] b9e2eb5184
Update dependency @material-design-icons/svg to v0.14.12 (#26832) 8 months ago
Eugen Rochko 9b2bc3d1de
Add recent searches in web UI (#26834) 8 months ago
Eugen Rochko a90b0056cc
Fix `#hashtag` matching on individual components in search (#26835) 8 months ago
Colette Kerr 8a9d7aeb1e
Change DCT method used for JPEG encoding to float (#26675) 8 months ago
Eugen Rochko f3a2e15f8e
Fix mute button and volume slider feeling disconnected in web UI (#26827) 8 months ago
Eugen Rochko 1f141f656d
Change onboarding prompt to use full width of banner in web UI (#26829) 8 months ago
Eugen Rochko 398635c0c4
Fix paragraph margins resulting in irregular read-more cut-off in web UI (#26828) 8 months ago
renovate[bot] 9e3567bfbe
Update dependency webpack to v4.47.0 (#26825) 8 months ago
Claire 1f99d86287
Fix blocked domain appears from account feed (#26823) 8 months ago
gunchleoc 14f6798836
Link to hashtag timelines from the Trending hashtags moderation interface (#26724) 8 months ago
Claire 475783d567
Add timezone to datetimes in e-mails (#26822) 8 months ago
Claire 9c1ef8302a
Add some information about Full-text search being disabled in search popout (#26756) 8 months ago
Claire b83e487502
Fix moderator rights inconsistencies (#26729) 8 months ago
Claire 93d051e47d
Update FEDERATION.md (#26819) 8 months ago
Claire 223f9ca665
Fix crash when encountering invalid URL (#26814) 8 months ago
Claire 09ec9c6aa5
Downgrade signature verification debug logging from `warn` to `debug` (#26812) 8 months ago
Claire d881988372
Update supported versions in SECURITY.md (#26811) 8 months ago
renovate[bot] 8c321b8c3a
Update dependency pghero to v3.3.4 (#26808) 8 months ago
Claire ec48bc3610
Do not truncate backtrace when the `BACKTRACE` env variable is set (#26794) 8 months ago
Eugen Rochko d8bdba2f9f
Add `in:` to search popout in web UI (#26807) 8 months ago
Eugen Rochko 9d290c23d2
Remove obfuscation of reply count in web UI (#26768) 8 months ago
Eugen Rochko 5d20733d8d
Add infinite scrolling for search results in web UI (#26784) 8 months ago
Claire 548c032dbb
Improve interaction modal error handling (#26795) 8 months ago
Claire a1df9fdb06
Merge pull request #2397 from ClearlyClaire/glitch-soc/merge-upstream 8 months ago
Claire 77caba3789 Merge branch 'main' into glitch-soc/merge-upstream 8 months ago
Claire ea7de25de0
Fix video player not being displayed in reports interface (#26801) 8 months ago
Michael Stanclift b749de766f
Migrate Dockerfile to Bookworm (#26802) 8 months ago
Claire cab4cbfa5c
Fix “Scoped order is ignored, it's forced to be batch order.” warnings (#26793) 8 months ago
Claire e80b36d8d4
Merge pull request #2396 from ClearlyClaire/glitch-soc/merge-upstream 8 months ago
Claire 87b5f84625 Merge commit 'f80f426c57d5a5e1d289372ef7c323741d27c768' into glitch-soc/merge-upstream 8 months ago
Claire f80f426c57
Bump version to v4.2.0-beta3 (#26753) 8 months ago
Stanislas Signoud d6f5c27fa9 [Glitch] Fix light mode colors for advanced interface banner 8 months ago
Claire e66f961e05 Merge branch 'main' into glitch-soc/merge-upstream 8 months ago
renovate[bot] ddeca3b37b
Update babel monorepo to v7.22.15 (#26790) 8 months ago
Claire cddef4c485
Fix language settings for users having selected the `kmr` language (#26787) 8 months ago
Eugen Rochko ece1ff77d6
Add `in:library` syntax to search (#26760) 8 months ago
gunchleoc ac3f310f4b
Remove kmr from language selection (#26014) 8 months ago
renovate[bot] 3e6a6439b5
Update dependency stylelint-config-standard-scss to v11 (#26780) 8 months ago
renovate[bot] 59361dfde2
Update dependency rubocop to v1.56.2 (#26568) 8 months ago
Eugen Rochko 68b4e36c82
Fix `#hashtag` matching non-hashtagged posts in search (#26781) 8 months ago
Stanislas Signoud a106c46478
Fix light mode colors for advanced interface banner (#26759) 8 months ago
Christian Schmidt ea31929776
Fix invalid Content-Type header for WebP images (#26773) 8 months ago
renovate[bot] 1f92436745
Update DefinitelyTyped types (non-major) (#26785) 8 months ago
Eugen Rochko e52d0494ee
Fix `before:`, `after:` and `during:` failing when time zone not set (#26782) 8 months ago
renovate[bot] 173041f02c
Update dependency typescript to v5.2.2 (#26786) 8 months ago
Plastikmensch 6b0702a3b5
Add `recent` to search props (#2394) 8 months ago
Claire ee02b10e06
Merge pull request #2392 from ClearlyClaire/glitch-soc/merge-upstream 8 months ago
Claire 5c7df20c13 [Glitch] Add admin notifications for new Mastodon versions 8 months ago
Claire c107512fa6 Merge commit '05093266e6e3c54f9096da9cdcdafdc83703c578' into glitch-soc/merge-upstream 8 months ago
Claire 4371df7fbe [Glitch] Add `authorized_fetch` server setting in addition to env var 8 months ago
Eugen Rochko 728eb6a153
Fix wrong color on active icons with counters in web UI (#26767) 8 months ago
Claire 4ed629cd7e Merge commit 'be991f1d18006a4820c1e9ca6625bf2bd2bfedac' into glitch-soc/merge-upstream 8 months ago
Claire 4adb12ca91 Fix test failures due to different default settings in glitch-soc 8 months ago
Claire 807c0591e1 [Glitch] Fix search popout including full-text search instructions when full-text search is disabled 8 months ago
Santiago Kozak 64e661b930 [Glitch] Allow filter form in profiles directory to wrap 8 months ago
Stanislas Signoud 6c05ac4068 [Glitch] Add an explanation banner on switching to single column mode 8 months ago
Claire ac2dae0d11 Merge commit '6c4c72497a5722870e4432ef41dd4c9ec36a8928' into glitch-soc/merge-upstream 8 months ago
Claire f5bd2014e2 [Glitch] Fix sign up steps progress layout in right-to-left locales 8 months ago
Tim Rogers beb5fcd0dc [Glitch] Fix bug with reblogged view on Toots only showing latest reblogging accounts 8 months ago
Tim Rogers 871ab84854 [Glitch] Fix bug with favourited view on Toots only showing latest favouriting accounts 8 months ago
Claire ffb486648c Merge commit 'cb9f96036cf78835e22aafb30b80717b5a8b7394' into glitch-soc/merge-upstream 8 months ago
Claire afc3b12217 Merge commit '4ad1c5aa7174e5cef4ba9608a44429916a119bee' into glitch-soc/merge-upstream 8 months ago
Claire 6ee3e382df Merge commit '0719216368bf3a90fdb7ab27201a0607b63ea203' into glitch-soc/merge-upstream 8 months ago
Claire fbbe9f1c12 Merge commit 'a7d96e6affd4a2da65f09f3f4ffa1b9350bb9a42' into glitch-soc/merge-upstream 8 months ago
Eugen Rochko cb50d95c06 [Glitch] Add search options to search popout in web UI 8 months ago
Claire c8aa3d6d06 Merge commit 'dd72a8d28b4479afdc19ac73cac83609d85b5f9e' into glitch-soc/merge-upstream 8 months ago
Claire 3c7dbf3a16 Merge commit '5694e24bbf9afccbbf1b44d3a405a4e2bc0ff08d' into glitch-soc/merge-upstream 8 months ago
Claire 023673c0d9 [Glitch] Add `data-nosnippet` attribute to remote posts and local posts with `noindex` 8 months ago
Claire 6b7c47311d Merge commit '072112867b9a3ec090ad2c92d6363b47b2265d74' into glitch-soc/merge-upstream 8 months ago
Eugen Rochko 05093266e6
Fix some video encoding failing due to uneven dimensions (#26766) 8 months ago
Claire 16681e0f20
Add admin notifications for new Mastodon versions (#26582) 8 months ago
Gabriel Simmer be991f1d18
Move to ioredis for streaming (#26581) 8 months ago
Claire 9e26cd5503
Add `authorized_fetch` server setting in addition to env var (#25798) 8 months ago
Claire 6c4c72497a
Fix search popout including full-text search instructions when full-text search is disabled (#26755) 8 months ago
Claire 5c0a9aac3b
Revert to using primary database in IndexingScheduler (#26754) 8 months ago
renovate[bot] bb0edb178f
Update dependency pg to v1.5.4 (#26750) 8 months ago
renovate[bot] 630e558677
Update dependency oj to v3.16.1 (#26749) 8 months ago
Eugen Rochko e754083e8a
Fix unmatched quotes and prefixes causing search to fail (#26701) 8 months ago
Eugen Rochko 872145d1c2
Fix not being able to invoke phrase search using unicode quotation marks (#26687) 8 months ago
Eugen Rochko 0008458128
Fix search queries with slash causing or-condition (#26699) 8 months ago
Claire 9bb2fb6b14
Change importers to avoid a few inefficiencies (#26721) 8 months ago
Eugen Rochko ecd76fa413
Fix videos not playing in some browsers due to unsupported color space (#26745) 8 months ago
Claire 1471be8225
Fix `AddUniqueIndexOnPreviewCardsStatuses` migration requiring PostgreSQL 12+ in some cases (#26737) 8 months ago
Claire 6b58cfd8dd
Fix searching by username by reverting account verbatim tokenizer to `standard` (#26739) 8 months ago
Renaud Chaput cffc5d2b01
Fix comment in build image workflow (#26740) 8 months ago
Santiago Kozak f1d250135c
Allow filter form in profiles directory to wrap (#26682) 8 months ago
Daniel M Brasil ccca542db1
Fix `/api/v1/timelines/tag/:hashtag` allowing for unauthenticated access when public preview is disabled (#26237) 8 months ago
Tyler Deitz 336ec503c2
Add avatar image to webfinger responses (#26558) 8 months ago
Stanislas Signoud 40b69cc1cd
Add an explanation banner on switching to single column mode (#26019) 8 months ago
gunchleoc cb9f96036c
Add suggestion for secure cyphers to nginx.conf (#26349) 8 months ago
renovate[bot] 430eac3eb1
Update dependency @babel/preset-env to v7.22.14 (#26732) 8 months ago
renovate[bot] ef9a85a2d8
Update dependency webpack-bundle-analyzer to v4.9.1 (#26733) 8 months ago
renovate[bot] 15949e42c2
Update dependency glob to v10.3.4 (#26734) 8 months ago
Claire 5c38c3a9a1
Change text extraction in `PlainTextFormatter` to be faster (#26727) 8 months ago
Claire 21ec596dab
Fix sign up steps progress layout in right-to-left locales (#26728) 8 months ago
Eugen Rochko bba76e7267
Change `language:` to attempt to match to a known value in search (#26663) 8 months ago
renovate[bot] 0e1bff178e
Update dependency chewy to v7.3.4 (#26717) 8 months ago
renovate[bot] 24deaf2e4a
Update dependency postcss to v8.4.29 (#26720) 8 months ago
renovate[bot] 168688ef1c
Update dependency webmock to v3.19.1 (#26722) 8 months ago
Claire 9e77ab7db2
Change private statuses index to index without crutches (#26713) 8 months ago
Tim Rogers 74eb7dbf2d
Fix bug with reblogged view on Toots only showing latest reblogging accounts (#26574) 8 months ago
Claire c0605747ad
Fix N+1 in `tootctl search deploy` (#26710) 8 months ago
Tim Rogers ae6cf33321
Fix bug with favourited view on Toots only showing latest favouriting accounts (#26577) 8 months ago
renovate[bot] 4ad1c5aa71
Update dependency aws-sdk-s3 to v1.133.0 (#26616) 8 months ago
renovate[bot] a67cf439ee
Update dependency axios to v1.5.0 (#26680) 8 months ago
Claire 25bf640629
Add debug logging on signature verification failure (#26637) 8 months ago
Christian Schmidt 075cc8e8a6
Improve Codespaces port forwarding (#26400) 8 months ago
Christian Schmidt 286a21afdc
Support webpacker live-reloading on Docker (#26419) 8 months ago
Christian Schmidt 0719216368
Remove dead code from public.jsx (#26547) 8 months ago
Lukas Martini a7d96e6aff
Improve error messages when DeepL quota is exceeded (#26704) 8 months ago
github-actions[bot] 786e586686
New Crowdin translations (#2388) 8 months ago
Eugen Rochko 10b06436d1
Fix colors and typography on hashtag bar in web UI (#26666) 8 months ago
Eugen Rochko 01b87a1632
Change video compression parameters (#26631) 8 months ago
renovate[bot] dd72a8d28b
Update dependency stoplight to v3.0.2 (#26698) 8 months ago
Eugen Rochko 2304cc6456
Fix bad search type heuristic (#26673) 8 months ago
Claire 0cce7fb617
Fix incorrect call to `PublicStatusesIndex.import` (#26697) 8 months ago
Eugen Rochko bceb893159
Add search options to search popout in web UI (#26662) 9 months ago
Eugen Rochko 67166de865
Add `from:me` syntax to search (#26660) 9 months ago
renovate[bot] 9d9de8d219
Update dependency @testing-library/jest-dom to v6 (#26479) 9 months ago
Eugen Rochko 7bd5ebb0c5
Fix multiple issues with status index mappings (#26686) 9 months ago
renovate[bot] 4ea5db90da
Update DefinitelyTyped types (non-major) (#26693) 9 months ago
renovate[bot] b42fe5e338
Update dependency haml_lint to v0.50.0 (#26665) 9 months ago
Eugen Rochko 822a35b9d5
Fix not being able to negate prefix clauses in search (#26672) 9 months ago
renovate[bot] fc14d1f3b0
Update eslint (non-major) (#26694) 9 months ago
Eugen Rochko e263db276f
Change indexing jobs to use database replica (#26692) 9 months ago
Eugen Rochko 5694e24bbf
Fix unnecessary condition causing seqscan when indexing (#26689) 9 months ago
Eugen Rochko f8d2fea2e6
Change queue of job when opting into search from `default` to `pull` (#26688) 9 months ago
github-actions[bot] efb1888320
New Crowdin translations (#2376) 9 months ago
Claire 925c16adea
Fix nightly build version (#26676) 9 months ago
Eugen Rochko 71641766f2
Fix toast saying "published" instead of "saved" after editing post in web UI (#26664) 9 months ago
Claire f39847476c
Change the pre-release versioning scheme and associated environment variables (#26653) 9 months ago
Claire 072112867b
Fix dashboard check for Elasticsearch suggested command including incorrect names (#26658) 9 months ago
jsgoldstein 8e8747c564
Update ordering to use `id` from body of document instead of deprecated `_id` (#26659) 9 months ago
renovate[bot] e4c0ce18a3
Update dependency immutable to v4.3.4 (#26655) 9 months ago
Claire 82ec6f162b
Fix statuses search Elasticsearch query (#26657) 9 months ago
Claire f2ec2876a4
Add Elasticsearch/OpenSearch version to “Software” in admin dashboard (#26652) 9 months ago
Claire e3825a13c1
Add PublicStatusesCheck to Elasticsearch index check on admin dashboard (#26650) 9 months ago
Claire c3a42e1280
Add `data-nosnippet` attribute to remote posts and local posts with `noindex` (#26648) 9 months ago
renovate[bot] c66f756522
Update babel monorepo to v7.22.11 (#26640) 9 months ago
Claire d847c2060e
Merge pull request #2383 from ClearlyClaire/glitch-soc/merge-upstream 9 months ago
Claire 685270f3f7 [Glitch] Fix clicking “Explore” or “Live feeds” column headers to scroll in advanced mode 9 months ago
Claire 66e82cb8e1 [Glitch] Fix selecting domains to forward reports to not passing the information correctly 9 months ago
Claire 941a9df28a Merge commit '96bcee66fba582666259d1d7785c3a7f2a72b8aa' into glitch-soc/merge-upstream 9 months ago
Claire 80f89f9cf2 Merge commit '9974163776b3e65e7cfa41e6293876909a1635b7' into glitch-soc/merge-upstream 9 months ago
Antonin Del Fabbro 406f3942a9 [Glitch] Change opacity of the delete icon in the search field to be more visible 9 months ago
Claire 32e67e78a3 Merge commit 'e3fd07197379f1ac7fd4a761b3ff55effa1a2a6c' into glitch-soc/merge-upstream 9 months ago
Christian Schmidt def58f8ac3 [Glitch] Fix some React warnings 9 months ago
Claire b6b68b44a1 Merge commit 'b91724fb9d0839365391310e20c2589ff6062d4f' into glitch-soc/merge-upstream 9 months ago
Claire d65aa507ca Merge commit 'bd023a2637ce4df2102c4f760ca1d05ff2302d9f' into glitch-soc/merge-upstream 9 months ago
Claire bdce78187c [Glitch] Fix layout of the closed registrations modal 9 months ago
Christian Schmidt 9b094f3653 [Glitch] Fix profile picture preview 9 months ago
Claire 296b3d1560 Merge commit 'dc09c10fa8cc9230bf14e48d790c8f0c26043f8f' into glitch-soc/merge-upstream 9 months ago
Claire 389b7d23db
Fix changelog wording and missing items (#26638) 9 months ago
Claire 88ff45a3b2 Merge commit 'facfec1ba36cee27f232ebff90b990933719235a' into glitch-soc/merge-upstream 9 months ago
Claire fbfc4145fd Merge commit '1cdcd9dc08c91321f80ffe4822f6a3da15abeb2c' into glitch-soc/merge-upstream 9 months ago
Claire 1b5d3fdc5e Merge commit 'ee702e36e58d638bcf75b2eae2ca86499693465e' into glitch-soc/merge-upstream 9 months ago
Christian Schmidt e67c28a5fe [Glitch] Remove redundant ready() wrapper 9 months ago
Claire 7b09f585fa Merge commit 'bb51c0676d0cf27babc2c01ee337ca5fd24ae37c' into glitch-soc/merge-upstream 9 months ago
jsgoldstein 30c191aaa0
Add new public status index (#26344) 9 months ago
Claire 96bcee66fb
Change nightlies versioning from `v4.2.0+2023-08-23` to `v4.2.0-nightly.2023-08-23` (#26626) 9 months ago
Claire 163b004bb1
Change admin e-mail notification settins to be their own settings group (#26596) 9 months ago
Claire e90649b064
Fix clicking “Explore” or “Live feeds” column headers to scroll in advanced mode (#26633) 9 months ago
Claire b2ac93dd73
Fix selecting domains to forward reports to not passing the information correctly (#26636) 9 months ago
Jaehong Kang 2dbbeedc94
Fix: Workaround to load MASTODON_VERSION_* in Docker. (#26591) 9 months ago
renovate[bot] 24ea6f851f
Update dependency redis to v4.6.8 (#26630) 9 months ago
Matt Jankowski 9974163776
Consolidate inclusion of `admin` js pack link (#26628) 9 months ago
renovate[bot] e3fd071973
Update dependency rspec-sidekiq to v4 (#26627) 9 months ago
Claire 8eb09466aa
Merge pull request #2380 from ClearlyClaire/glitch-soc/merge-upstream 9 months ago
Antonin Del Fabbro 9a8190da4a
Change opacity of the delete icon in the search field to be more visible (#26449) 9 months ago
Daniel M Brasil f337008819
Fix timeout on invalid set of exclusionary parameters in `/api/v1/timelines/public` (#26239) 9 months ago
jsgoldstein b91724fb9d
Add elastic search installation into Vagrantfile (#26512) 9 months ago
renovate[bot] 34f5b90dc7
Update dependency sass to v1.66.1 (#26534) 9 months ago
renovate[bot] 060b554a9d
Update dependency oj to v3.16.0 (#26520) 9 months ago
renovate[bot] de8c2427a5
Update dependency immutable to v4.3.3 (#26622) 9 months ago
Claire 613cfd625c
Change hashtag bar tags to be de-emphasized (#26606) 9 months ago
Christian Schmidt 152b10b624
Fix some React warnings (#26609) 9 months ago
Renaud Chaput 44ba785242
Change the hashtag bar to be hidden when there is a CW and the post is not expanded (#26615) 9 months ago
jsgoldstein 85057865b4
Update Account Search to prioritize username over display name (#26623) 9 months ago
yufushiro 3aac12981c
Fix unexpected audio stream transcoding when uploaded video is eligible to passthrough (#26608) 9 months ago
Robert R George cf6f70799b
Add support for federating `memorial` attribute (#26583) 9 months ago
renovate[bot] ea1a221e2d
Update dependency react-textarea-autosize to v8.5.3 (#26607) 9 months ago
renovate[bot] 74b8b8ea14
Update dependency rails to v7.0.7.2 (#26612) 9 months ago
Renaud Chaput 58acaa9ae6
Better hashtag normalization when processing a post (#26614) 9 months ago
Claire 452f15be78 Move glitch-soc's “Hide followers count” setting to “Show followers count” under “Privacy and reach” tab 9 months ago
Claire c053bfc45a [Glitch] Fix “legal” report category not showing up in moderation interface 9 months ago
Claire bd023a2637
Fix admin dashboard check when using Elasticsearch with `ES_PREFIX` (#26605) 9 months ago
Claire 10404aece8 Merge commit '1cb978bcc3d291a045f367e072ca0af1a1c4dbbc' into glitch-soc/merge-upstream 9 months ago
Claire 245fe855be [Glitch] Fix unfollow icon styling in advanced column 9 months ago
Claire 2126812f65 Merge commit 'd9c21293aa6e105cedeff6b5e469af40a20909d9' into glitch-soc/merge-upstream 9 months ago
Claire 128daefc7a
Remove leftover `.orig` files that were mistakenly included (#2379) 9 months ago
gunchleoc 25dc01660d
Add Kalmyk to languages dropdown (#26013) 9 months ago
gunchleoc c01ecd0879
Add cherokee to languages dropdown (#26012) 9 months ago
renovate[bot] dc09c10fa8
Update dependency mime-types to v3.5.1 (#26595) 9 months ago
Renaud Chaput 3249c06c73
Update `SECURITY.md` to indicate issues can be reported on Github (#26599) 9 months ago
Renaud Chaput bb2db2aec0
Add `circular-dependency-plugin` to detect any circular deps issues (#26600) 9 months ago
Claire 4f1d22628d
Merge pull request #2378 from ClearlyClaire/glitch-soc/merge-upstream 9 months ago
Nick Schonning b970ed6098
Update rubocop and rubocop-rspec (#26329) 9 months ago
Claire fe31571965
Fix layout of the closed registrations modal (#26593) 9 months ago
mogaminsk 724d773844 [Glitch] Fix "Create Account" button in interaction modal 9 months ago
Claire 7e25e311d5 Merge commit '3a8370e1f459f5cf9695a610102ae6e53df36714' into glitch-soc/merge-upstream 9 months ago
Claire facfec1ba3
Bump version to v4.2.0-beta2 (#26579) 9 months ago
Renaud Chaput 061fd66ee6
Remove hashtags from the last line of a status if it only contains hashtags (#26499) 9 months ago
Claire ac0eb0533e
Add Elasticsearch cluster health check and indexes mismatch check to dashboard (#26448) 9 months ago
Claire 9ed0c91a37
Add auto-refresh of accounts we get new messages/edits of (#26510) 9 months ago
Claire 191d302b7f
Refactor `Api::V1::ProfilesController` into two separate controllers (#26573) 9 months ago
renovate[bot] 1cdcd9dc08
Update eslint (non-major) (#26567) 9 months ago
renovate[bot] d3b4422b94
Update dependency core-js to v3.32.1 (#26548) 9 months ago
Christian Schmidt 872fe2d62d
Do not start LibreTranslate and Elasticsearch on GitHub Codespaces (#26382) 9 months ago
Daniel M Brasil d24a87ce4f
Add ability to delete avatar or header picture via the API (#25124) 9 months ago
Christian Schmidt bb23116e8d
Fix profile picture preview (#26538) 9 months ago
Claire ee702e36e5
Change follow recommendation materialized view to be faster in most cases (#26545) 9 months ago
Claire e7bea8f004
Fix already initialized constant warning (#26542) 9 months ago
Emelia Smith 6375e390af
Fix: support both DATABASE_URL and DB_PASS (#26295) 9 months ago
Christian Schmidt bb51c0676d
Remove redundant ready() wrapper (#26533) 9 months ago
renovate[bot] 1cb978bcc3
Update dependency @material-design-icons/svg to v0.14.11 (#26536) 9 months ago
renovate[bot] 581ebf2bb5
Update dependency puma to v6.3.1 (#26537) 9 months ago
Nicolai Søborg 13ffe91c81
Fix `frame_rate` for videos where `ffprobe` reports 0/0 (#26500) 9 months ago
Renaud Chaput b95867ad1f
Allow setting a custom HTTP method in CacheBuster (#26528) 9 months ago
renovate[bot] b5acf13886
Update dependency pg to v8.11.3 (#26519) 9 months ago
Claire 60b9fa641d
Fix cached posts including stale stats (#26409) 9 months ago
Claire 3ed2bf92d0
Fix case-insensitive comparison of hashtags to do case-folding (#26525) 9 months ago
Claire cc4560d95b
Change “privacy and reach” settings so that unchecking boxes always increase privacy and checking them always increase reach (#26508) 9 months ago
Claire 0446394465
Fix “legal” report category not showing up in moderation interface (#26509) 9 months ago
Claire f0862bcf98
Fix hashtag bar sometimes including tags that appear in the post's body (#26506) 9 months ago
renovate[bot] 26eaf058e2
Update dependency postcss to v8.4.28 (#26502) 9 months ago
Santiago Kozak 85ecadb630
Fix hashtag bar display when status is in a thread (#26497) 9 months ago
Claire df6e719898
Add display of out-of-band hashtags in the web interface (#26492) 9 months ago
Claire d9c21293aa
Fix unfollow icon styling in advanced column (#26482) 9 months ago
Claire dd049fc37a
Fix ES_PRESET not being applied to Chewy's internal index (#26489) 9 months ago
Claire 90ec88d58b
Add support for `indexable` attribute on remote actors (#26485) 9 months ago
Claire fc5ab2dc83
Add privacy tab in profile settings (#26484) 9 months ago
Claire 3a8370e1f4
Fix `repo:changelog` task matching strings that are not Pull Request identifiers (#26280) 9 months ago
Claire f5778caa3a
Add `ES_PRESET` option to customize numbers of shards and replicas (#26483) 9 months ago
github-actions[bot] c452ccd913
New Crowdin Translations (automated) (#26444) 9 months ago
Renaud Chaput 9262cfc57f
Fix `lint:json` not processing `json5` extension (#26481) 9 months ago
renovate[bot] 07f43daadc
Update dependency nokogiri to v1.15.4 (#26476) 9 months ago
renovate[bot] c65032fb11
Update dependency autoprefixer to v10.4.15 (#26473) 9 months ago
renovate[bot] 273730c4e8
Update dependency faker to v3.2.1 (#26474) 9 months ago
HonkingGoose c48506d8d4
Improve Renovate configuration (#26306) 9 months ago
mogaminsk a664e15702
Fix "Create Account" button in interaction modal (#26459) 9 months ago
Renaud Chaput 1eac3a60de
Upgrade `@types/react` (#26457) 9 months ago
Claire 8c7f3c5332
Remove old non-unique index on preview_cards statuses join table (#26447) 9 months ago
Claire 86ba8d3e14
Merge pull request #2368 from ClearlyClaire/glitch-soc/merge-upstream 9 months ago
Claire 987f190839 [Glitch] Fix reply not preserving the language from the replied-to post 9 months ago
Claire 92df185be7 Merge commit '496eb6f7a4fa7de54f26da9642a76e6884648102' into glitch-soc/merge-upstream 9 months ago
Claire e28727aab3 [Glitch] Change the hashtag column to not display the hashtag header on pinned columns 9 months ago
Claire 7c4b115e7d [Glitch] Fix interaction modal layout 9 months ago
Eugen Rochko 0f8ddf367c [Glitch] Change header of hashtag timelines in web UI 9 months ago
Claire d9451feef0 [Glitch] Fix report modal secondary buttons style 9 months ago
Claire 2f50b77ae8 [Glitch] Fix confirmation when closing media edition modal with unsaved changes 9 months ago
Trevor Wolf f0ad745506 [Glitch] Fix light theme select option for hashtags 9 months ago
Eugen Rochko 03ae73bdc5 [Glitch] Change design of hidden media overlay (again) in web UI 9 months ago
Eugen Rochko 8247df3a8d [Glitch] Change reblogs to be excluded from "Posts and replies" tab in web UI 9 months ago
CSDUMMI 64fc66d3db [Glitch] Add direct link to the Single-Sign On provider if there is only one sign up method available (#26083) 9 months ago
Christian Schmidt 1461cc53ed [Glitch] Add alt text for preview card thumbnails 9 months ago
Claire 6530f9709c Merge commit '121443c0fca383268b8022c048dd137994785aff' into glitch-soc/main 9 months ago
Jeong Arm 496eb6f7a4
Add missing instances option to tootctl search deploy (#26461) 9 months ago
Claire 678fa1e6af
Merge pull request #2366 from ClearlyClaire/glitch-soc/merge-upstream 9 months ago
Eugen Rochko 57a4e7927a [Glitch] Add client-side timeout on resend confirmation button 9 months ago
Claire ea8802a05a Merge commit '3a4d3e9d4b573c400eec1743471d54cdccae50a5' into glitch-soc/merge-upstream 9 months ago
Claire 150cfcf3ae
Fix border-radius on “sensitive media” overlay for full-width media (#2364) 9 months ago
Claire 0dfc6ea3ef
Merge pull request #2365 from ClearlyClaire/glitch-soc/merge-upstream 9 months ago
Claire 34f3001278
Fix reply not preserving the language from the replied-to post (#26452) 9 months ago
Claire 882e770400 [Glitch] Change interaction modal input to disable browser spell-checking, capitalization and autocomplete 9 months ago
Claire 44a5f1b64a Merge commit '425d77f8124a50fc033e8fb3bdf7b89a6a25f4fa' into glitch-soc/merge-upstream 9 months ago
github-actions[bot] 3378bdb01f
New Crowdin translations (#2354) 9 months ago
Renaud Chaput 121443c0fc
Upgrade JS dev dependencies (#26442) 9 months ago
Nick Schonning 9dff838edc
Merge duplicate Gemfile groups (#26441) 9 months ago
Claire 4bc0dd751c
Add `S3_DISABLE_CHECKSUM_MODE` environment variable for compatibility with some S3-compatible providers (#26435) 9 months ago
renovate[bot] 3dd3c50811
Update dependency pg-connection-string to v2.6.2 (#26427) 9 months ago
renovate[bot] 27d8e9be4a
Update dependency eslint-import-resolver-typescript to v3.6.0 (#26429) 9 months ago
renovate[bot] 7572fa21a3
Update babel monorepo to v7.22.10 (#26421) 9 months ago
renovate[bot] 05022c9218
Update dependency pg to v8.11.2 (#26426) 9 months ago
renovate[bot] 700f948fc9
Update dependency @rails/ujs to v7.0.7 (#26422) 9 months ago
renovate[bot] 1a308d1a22
Update dependency rails to v7.0.7 (#26428) 9 months ago
renovate[bot] 54dfacafcb
Update dependency regenerator-runtime to ^0.14.0 (#26432) 9 months ago
renovate[bot] 43741ba2b9
Update dependency mime-types to '~> 3.5.0' (#26431) 9 months ago
renovate[bot] ba318a42fe
Update dependency sass to v1.65.1 (#26433) 9 months ago
renovate[bot] c645308c6e
Update dependency eslint-config-prettier to v9 (#26434) 9 months ago
renovate[bot] 65f56bd849
Update dependency haml_lint to v0.49.3 (#26424) 9 months ago
renovate[bot] 74c422ad0a
Update dependency immutable to v4.3.2 (#26425) 9 months ago
renovate[bot] 426ca4f76c
Update dependency aws-sdk-s3 to v1.132.1 (#26423) 9 months ago
github-actions[bot] 8cbf4a5296
New Crowdin Translations (automated) (#26373) 9 months ago
renovate[bot] 26fa4a6e82
Update eslint (non-major) (#26323) 9 months ago
renovate[bot] 59678c6d5d
Update dependency sass to v1.64.2 (#26315) 9 months ago
Claire 4caa9f0e69
Change the hashtag column to not display the hashtag header on pinned columns (#26416) 9 months ago
Matt Jankowski d9a9323968
Avoid connecting to a running ES instance in ES search check spec (#26413) 9 months ago
Foritus 405f141fe0
Change: Block GPTBot (#26396) 9 months ago
Matt Jankowski 2c88364222
Restore console behavior in `test` env (#26401) 9 months ago
Matt Jankowski 271d384fd0
Use migration classes in migrations where current definition conflicts with older (#26390) 9 months ago
Claire b12d75ef4f
Fix blocking subdomains of an already-blocked domain (#26392) 9 months ago
Claire dab54ccbba
Prepare v4.2.0-beta1 (#26339) 9 months ago
Claire 8b37dd2c86
Fix Content Security Policy sometimes unnecessarily allowing hCaptcha scripts (#26388) 9 months ago
Claire 2c204d904b
Change `DB_REPLICA_*` environment variables to `REPLICA_DB_*` (#26386) 9 months ago
Claire 4773d7b9aa
Fix `preview_cards_statuses_pkey` not being reindexed concurrently (#26384) 9 months ago
Eugen Rochko 0e2a4d3897
Fix adding column with default value taking longer on Postgres >= 11 (#26375) 9 months ago
Eugen Rochko 72423bc8f6
Change account search tokenizer and queries (#26378) 9 months ago
Matt Jankowski 60fbb0fe91
Omniauth 2.0 version bump (#24209) 9 months ago
Claire 30c64bf616
Fix list import concurrently creating lists of the same name (#26372) 9 months ago
Claire cd6f2b3cbc
Fix interaction modal layout (#26368) 9 months ago
Matt Jankowski c363978782
Spec media attachment speedups (#25416) 9 months ago
Eashwar Ranganathan 11f5a8e54b
Make mastodon-streaming systemd unit templated (#24751) 9 months ago
github-actions[bot] d2dbaba407
New Crowdin Translations (automated) (#26209) 9 months ago
Eugen Rochko e325443b02
Change header of hashtag timelines in web UI (#26362) 9 months ago
Claire 79936c584f
Fix report modal secondary buttons style (#26341) 9 months ago
Claire d5bee37c57
Fix missing cached preview cards attributes (#26343) 9 months ago
Emelia Smith 65096c1ccd
Change streaming `/metrics` to include additional metrics (#26299) 9 months ago
Claire b59053ff8c
Fix confirmation when closing media edition modal with unsaved changes (#26342) 9 months ago
Trevor Wolf 93372fee1e
Fix light theme select option for hashtags (#26311) 9 months ago
Claire 9405e9af58
Fix incorrect model annotation for List#exclusive (#26313) 9 months ago
Eugen Rochko 04e7efac3f
Change design of hidden media overlay (again) in web UI (#26330) 9 months ago
Eugen Rochko 9d719bcd85
Change reblogs to be excluded from "Posts and replies" tab in web UI (#26302) 9 months ago
Claire 12c43e4ab5
Re-add StatsD support through the `nsa` gem (#26310) 9 months ago
CSDUMMI 120f5802c0
Add direct link to the Single-Sign On provider if there is only one sign up method available (#26083) 9 months ago
renovate[bot] a5768d3ea6
Update dependency rack-attack to v6.7.0 (#26319) 9 months ago
renovate[bot] 912bc4655c
Update dependency selenium-webdriver to v4.10.0 (#26322) 9 months ago
Claire 3105fef21a
Rename “read” database to “replica” for consistency (#26326) 9 months ago
renovate[bot] 51cee42117
Update dependency lograge to v0.13.0 (#26318) 9 months ago
renovate[bot] f6e4137d7c
Update dependency core-js to v3.32.0 (#26317) 9 months ago
renovate[bot] a615c0cfc2
Update dependency test-prof to v1.2.2 (#26316) 9 months ago
renovate[bot] 670dae371a
Update dependency react-redux to v8.1.2 (#26314) 9 months ago
renovate[bot] 091c2f2e44
Update dependency rack to v2.2.8 (#26312) 9 months ago
Christian Schmidt 8da99ffb0d
Add alt text for preview card thumbnails (#26184) 9 months ago
renovate[bot] ca19ea30d4
Update dependency aws-sdk-s3 to v1.132.0 (#26227) 9 months ago
Daniel M Brasil 3a4d3e9d4b
Add `GET /api/v1/instance/languages` to REST API (#24443) 9 months ago
Claire 6b896b20cc
Add primary key to preview_cards_statuses join table (includes deduplication migration) (#25243) 9 months ago
Eugen Rochko a0fad5c8bb
Change indexing frequency from 5 minutes to 1 minute, add locks to schedulers (#26304) 9 months ago
Val Lorentz f55f0ab0c3
Allow spaces around commas in ALLOWED_PRIVATE_ADDRESSES (#26297) 9 months ago
Eugen Rochko 2f932cb2bb
Add client-side timeout on resend confirmation button (#26300) 9 months ago
Claire 425d77f812
Fix crash in `tootctl status remove` and some old migrations (#26210) 9 months ago
Trevor Wolf 6308dca76a
change column link to add a better keyboard focus indicator (#26278) 9 months ago
Emelia Smith e258b4cb64
Refactor: replace whitelist_mode mentions with limited_federation_mode (#26252) 9 months ago
Christian Schmidt 8891d8945d
Fix request URL normalisation for bare domain and 8-bit characters (#26285) 9 months ago
Eugen Rochko 2cbdff97ce
Change design of role badges in web UI (#26281) 9 months ago
Eugen Rochko 01f0cffc2c
Fix line clamp for link previews in web UI (#26286) 9 months ago
Eugen Rochko 4c999a736c
Fix wrong border radius on link cards in web UI (#26287) 9 months ago
Christian Schmidt ca342d4838
Add List-Unsubscribe email header (#26085) 9 months ago
Christian Schmidt f2257069b2
Fix AVIF attachments (#26264) 9 months ago
Claire 71fd70335a
Change interaction modal input to disable browser spell-checking, capitalization and autocomplete (#26267) 9 months ago
Claire 6c39125761
Change /api/v1/peers/search to be case-insensitive when using Elasticsearch (#26268) 9 months ago
Christian Schmidt fd284311e7
Do not normalize URL before fetching it (#26219) 9 months ago
Claire 51768de16e
Bump version to v4.1.6 (#26272) 9 months ago
Claire d82abc877a
Fix `Importer::BaseImporter#clean_up!` not using proper primary key (#26269) 9 months ago
github-actions[bot] 3b49b5a880
New Crowdin translations (#2348) 9 months ago
Plastikmensch e02510c428
Remove .orig files (#2347) 9 months ago
Claire e96a90480b
Merge pull request #2339 from ClearlyClaire/glitch-soc/merge-upstream 9 months ago
Plastikmensch ebfa184e74
Port search popout changes from upstream (#2333) 9 months ago
Claire 73a3228e0f Fix CSP tests in glitch-soc 9 months ago
Claire 403a5c0f3f [Glitch] Change the wording of the dismissable explore prompt 9 months ago
Claire aa1789f0dd [Glitch] Change interaction modal in web UI 9 months ago
Claire a1f1424e76 Fix interaction modal being broken because of glitch-soc's theming system 9 months ago
Claire 92fa9d34b0 Merge commit '3554c527954441fd924586a49c7d99a89101ac7e' into glitch-soc/merge-upstream 9 months ago
Christian Schmidt 879c7ed2d3 [Glitch] Fix missing GIF badge in account gallery 9 months ago
Christian Schmidt 88ba538aad [Glitch] Preserve translation on status re-import 9 months ago
Claire 454d8567d4 Merge commit '1814990a3d117555153321216fa593e4d9e84de3' into glitch-soc/merge-upstream 9 months ago
Eugen Rochko 450f75b6f7 [Glitch] Add published date and author to news on the explore screen in web UI 9 months ago
Claire 887a17bb83 [Glitch] Revert poll colors to green outside of compose form 9 months ago
Trevor Wolf e92dde0b16 [Glitch] fix poll input active style 9 months ago
Eugen Rochko e48a6a5f2c [Glitch] Fix missing action label on sensitive videos and embeds in web UI 9 months ago
Eugen Rochko 4b26e44ef4 [Glitch] Fix missing border on error screen in light theme in web UI 9 months ago
gol-cha 168fadb6b9 [Glitch] Fix UI Overlap with the loupe icon in the Explore Tab 9 months ago
Christian Schmidt 1d4df97049 [Glitch] Add `lang` attribute to trending links 9 months ago
Trevor Wolf f3bd96c91c [Glitch] change poll form element colors to fit with the rest of the ui 9 months ago
Claire bd349cb850 Merge commit 'ce1f35d7e213327549b960bb64f63c67a141ea40' into glitch-soc/merge-upstream 9 months ago
gunchleoc 09ebf7e37c [Glitch] Replace 'favourite' by 'favorite' for American English 9 months ago
Claire b2515feb29 Merge commit 'cfd50f30bb5dda4dd90e1ad01f3e62c99135c36f' into glitch-soc/merge-upstream 9 months ago
Claire 5914dfdd69 [Glitch] Change thread view to scroll to the selected post rather than the post being replied to 9 months ago
Claire 42f36aa55a Merge commit '5b457961fc1189a71599dc6c06b3f159b195a455' into glitch-soc/merge-upstream 9 months ago
Claire 7635c67450 Merge commit '144a406d332b034caa812ade2629df03ed4898d7' into glitch-soc/merge-upstream 9 months ago
Stanislas Signoud f05effeb8f [Glitch] Fix a missing redirection on getting-started in multi column mode 9 months ago
Christian Schmidt d3d6147286 [Glitch] Wrong count in response when removing favourite/reblog 9 months ago
Claire 993d0a9950 Merge commit '1e3b19230a48174acf524cf1a9f5a498e220ea7d' into glitch-soc/merge-upstream 9 months ago
github-actions[bot] 3a14104411
New Crowdin translations (#2338) 9 months ago
Eugen Rochko d4807a5e64
Change aspect ratios on link previews in web UI (#26250) 9 months ago
Christian Schmidt d76f79f647
Remove obsolete backport from Rails 7 (#26254) 9 months ago
Plastikmensch 4d3a129212
Fix public TL not indicating new toots when `onlyRemote` is enabled (#26247) 9 months ago
Plastikmensch 1cc3fcf7d0
Fix Public TL not indicating new toots when `onlyRemote` or `allowLocalOnly` is enabled (#2336) 9 months ago
Plastikmensch feaf3cf780
Fix firehose not indicating new toots in "All" (#2335) 10 months ago
Matt Jankowski 74903af7ce
Ignore the brakeman `PermitAttributes` check (#25915) 10 months ago
Matt Jankowski 8ac9e446df
Load `rspec-rails` gem in `test` + `development` (#25768) 10 months ago
Matt Jankowski 7581b1ff96
Profiling tools configuration improvement (#25383) 10 months ago
Matt Jankowski 6f1fa1364f
Fix `RSpec/EmptyExampleGroup` cop (#24735) 10 months ago
Matt Jankowski 660993b415
Add coverage for `URLValidator` (#25591) 10 months ago
Matt Jankowski 6602edf064
Add coverage for `LanguageValidator` (#25593) 10 months ago
Matt Jankowski ad81be6c8e
Update rubocop rules for linelength (#26190) 10 months ago
Matt Jankowski 30f5ec7303
Rubocop fix: `Perfomance/UnfreezeString` (#26217) 10 months ago
Renaud Chaput 4d1b67f664
Add end-to-end (system) tests (#25461) 10 months ago
Jay Prakash Kalia 8d5d707cc1
Update README.md (#25435) 10 months ago
gunchleoc b0134db6ff
Allow filtering for Chinese languages (#26066) 10 months ago
Christian Schmidt f96e4b3047
Use original URL in preview if it redirects to 4xx page (#26200) 10 months ago
Renaud Chaput 3554c52795
Fix missing return values in streaming (#26233) 10 months ago
Claire 446821a0dc
Swap debug statements in streaming server (#26231) 10 months ago
Emelia Smith 81cdc0f972
Fix: Streaming server memory leak in HTTP EventSource cleanup (#26228) 10 months ago
renovate[bot] 255606d2da
Update dependency haml_lint to v0.49.2 (#26222) 10 months ago
Plastikmensch e69fe94669
Fix "All" live feed not loading automatically. (#2332) 10 months ago
github-actions[bot] 8864d5b580
New Crowdin translations (#2327) 10 months ago
Claire 6256cee034
Change error boundary to upstream's (#2323) 10 months ago
Claire a4ec187a20
Change the wording of the dismissable explore prompt (#25917) 10 months ago
Claire bbea052935
Fix emoji picker button scrolling with textarea content in single-column view (#25304) 10 months ago
Emelia Smith 317cd26fba
Remove queued_at value from pubsub payloads (#26173) 10 months ago
Misty De Méo 12a6cf569e
Storage: add :azure to remaining callers (#26080) 10 months ago
Claire 6c3c5bbbc3
Fix crash when processing Flag activity with no status (#26189) 10 months ago
Claire b4e739ff0f
Change interaction modal in web UI (#26075) 10 months ago
Claire 1e4ccc655a
Add role badges to the WebUI (#25649) 10 months ago
Emelia Smith ddaf200c78
Refactor streaming's filtering logic & improve documentation (#26213) 10 months ago
Claire 1814990a3d
Fix wrong filters sometimes applying in streaming (#26159) 10 months ago
Daniel M Brasil 812a84ff5f
Migrate to request specs in `/api/v2/filters` (#25721) 10 months ago
Matt Jankowski f48d345de1
Use correct naming on controller concern specs (#26197) 10 months ago
Matt Jankowski b06763dc11
Remove the `sr` locale override .rb files (#25927) 10 months ago
github-actions[bot] b9adea9695
New Crowdin Translations (automated) (#26072) 10 months ago
Matt Jankowski 84d520ee80
Extract private methods in `StatusCacheHydrator` (#26177) 10 months ago
Matt Jankowski a2dca50ef3
Use heredoc SQL blocks in `AddFromAccountIdToNotifications` migration (#26178) 10 months ago
Matt Jankowski 8ac5a93a7d
Reformat large hash in `ContextHelper` module (#26180) 10 months ago
Matt Jankowski 2d9808f648
Reformat large key values in service specs (#26181) 10 months ago
Matt Jankowski bada7a65aa
Ignore long line in regex initializer (#26182) 10 months ago
Matt Jankowski 7d62e3b198
Reformat large text arg in `FetchLinkCardService` spec (#26183) 10 months ago
Christian Schmidt a4b69bec2e
Fix missing GIF badge in account gallery (#26166) 10 months ago
Christian Schmidt 6781dc6462
Preserve translation on status re-import (#26168) 10 months ago
Claire ce1f35d7e2
Revert poll colors to green outside of compose form (#26164) 10 months ago
renovate[bot] edc104c9ef
Update dependency sass to v1.64.1 (#26146) 10 months ago
Eugen Rochko 7bd8ef355c
Add `published_at` attribute to preview cards (#26153) 10 months ago
Trevor Wolf 49d2e8979f
fix poll input active style (#26162) 10 months ago
Matt Jankowski 50ff3d3342
Coverage for `Auth::OmniauthCallbacks` controller (#26147) 10 months ago
Eugen Rochko f826a95f6e
Add published date and author to news on the explore screen in web UI (#26155) 10 months ago
Christian Schmidt 4299208487
Fix `lang` for UI texts in link preview (#26149) 10 months ago
Eugen Rochko 714a20697f
Fix missing action label on sensitive videos and embeds in web UI (#26135) 10 months ago
Eugen Rochko d1a9f601c7
Fix missing border on error screen in light theme in web UI (#26152) 10 months ago
gol-cha 9a567ec1d1
Fix UI Overlap with the loupe icon in the Explore Tab (#26113) 10 months ago
Claire 2dfa8f797a
Fix LinkCrawlWorker crashing on `null` `created_at` (#26151) 10 months ago
Vyr Cossont 394d1f19b1
Add report.updated webhook (#24211) 10 months ago
renovate[bot] 173a268025
Update dependency aws-sdk-s3 to v1.131.0 (#26145) 10 months ago
Claire b629e21515
Fix unexpected redirection to /explore after sign-in (#26143) 10 months ago
renovate[bot] 3cbc69f13d
Update dependency postcss to v8.4.27 (#26144) 10 months ago
renovate[bot] e56dc936e3
Update dependency brakeman to v6.0.1 (#26141) 10 months ago
renovate[bot] d31b31afee
Update dependency rdf-normalize to v0.6.1 (#26130) 10 months ago
Christian Schmidt 76fce34ebb
Add `lang` attribute to trending links (#26111) 10 months ago
Trevor Wolf 80809ef33e
change poll form element colors to fit with the rest of the ui (#26139) 10 months ago
Eugen Rochko 6b2952d1dd
Change design of link previews in web UI (#26136) 10 months ago
Eugen Rochko 4d01d1a1ee
Remove 16:9 cropping from web UI (#26132) 10 months ago
Plastikmensch cf9affdeac
Apply padding to all notifications in notif-cleaning mode (#2325) 10 months ago
Eugen Rochko 5e8cbb5f82
Remove back button from bookmarks, favourites and lists screens in web UI (#26126) 10 months ago
Eugen Rochko cfd50f30bb
Fix focus and hover styles in web UI (#26125) 10 months ago
Nick Schonning 67016dd29d
Update haml-lint 0.49.1 (#26118) 10 months ago
Plastikmensch 51311c1978
Fix CW icon being on wrong side in app settings in RTL languages (#2324) 10 months ago
Christian Schmidt 3abe0fc5c8
Use valid email address for first account (#26114) 10 months ago
mogaminsk db310f383d
Fix missing translation strings for importing lists (#26120) 10 months ago
Jeong Arm 944c29033d
Fix relationship-tag background color (#2322) 10 months ago
github-actions[bot] 9ec43107f2
New Crowdin translations (#2319) 10 months ago
Claire 49767d20bd
Fix glitch local settings navigation items not being proper buttons (#2320) 10 months ago
Claire dd09535bda
Annotate doodle parameters to please eslint (#2321) 10 months ago
Claire 0078e7e760
Fix incorrect connect timeout in outgoing requests (#26116) 10 months ago
Claire 52500965cc
Fix “Open in advanced web interface” being shown on mobile view (#2318) 10 months ago
github-actions[bot] 9a45198ab0
New Crowdin translations (#2317) 10 months ago
Claire f2c683336b
Bump version to v4.1.5 (#26108) 10 months ago
наб 1b4cf0eba0
Favourits -> Favorites (#26109) 10 months ago
Christian Schmidt 296ec6cf57
Override default Action Mailer `preview_path` (#26110) 10 months ago
gunchleoc 217ef7f2af
Replace 'favourite' by 'favorite' for American English (#26009) 10 months ago
Claire 5b457961fc
Fix linting issue (#26106) 10 months ago
Claire e5f1000ad1
Fix CSP headers being unintendedly wide (#26105) 10 months ago
Claire 14fad60384
Use username as display name for suspended users or users with blank display names (#25276) 10 months ago
Trevor Wolf 59478a1b46
change focus ui for keyboard only input (#25935) 10 months ago
Claire 934c7b33d1
Change default KeyGenerator digest to SHA1 to fix cookies in rolling upgrades (#26023) 10 months ago
Claire e4ea80d808
Change thread view to scroll to the selected post rather than the post being replied to (#24685) 10 months ago
Claire 144a406d33
Clean up unused application records (#24871) 10 months ago
Claire 5cbc402687
Fix replica being used even if not explicitly defined (#26074) 10 months ago
Renaud Chaput 42698b4c5c
Fix the crossorigin attribute (#26096) 10 months ago
Renaud Chaput 4ea041fe67
Improve the bug report templates (#25621) 10 months ago
github-actions[bot] e7cb6c6c44
New Crowdin translations (#2314) 10 months ago
Claire 1e3b19230a
Add stricter protocol fields validation for accounts (#25937) 10 months ago
Matt Jankowski 1cceb62afd
Fix `Lint/Void` cop (#25922) 10 months ago
Matt Jankowski a5842df123
Fix haml-lint Rubocop `Lint/UnusedBlockArguments` cop (#26039) 10 months ago
Matt Jankowski 285a3df56c
Move localized subject mailer shared example to separate file (#25889) 10 months ago
gunchleoc cabe1ea560
Change casing for 'Server Settings' string (#26011) 10 months ago
Matt Jankowski df05ece265
Fix haml-lint Rubocop `Style/NumericPredicate` cop (#26040) 10 months ago
Stanislas Signoud 586b1c9dca
Fix a missing redirection on getting-started in multi column mode (#26070) 10 months ago
Misty De Méo b848ba3867
Paperclip: add support for Azure blob storage (#23607) 10 months ago
Christian Schmidt 4c18928a93
Wrong count in response when removing favourite/reblog (#24365) 10 months ago
Matt Jankowski 6edd404482
Cleanup unused portions of statuses/status partial (#26045) 10 months ago
github-actions[bot] 2649fbce04
New Crowdin translations (#2310) 10 months ago
Claire 949f1fc343
Fix Crowdin Github Action (#2311) 10 months ago
Claire a04a30f852
Merge pull request #2309 from ClearlyClaire/glitch-soc/merge-upstream 10 months ago
Claire 0092fe50ac Merge branch 'main' into glitch-soc/merge-upstream 10 months ago
Claire 111686c38b
New Crowdin updates (#2306) 10 months ago
github-actions[bot] 47832a1ac0
New Crowdin Translations (automated) (#26054) 10 months ago
Claire ff41e5426a
Change request timeout handling to use a longer deadline (#26055) 10 months ago
Matt Jankowski 6657695ec6
Fix haml-lint `InstanceVariables` rule for auth/registrations/edit (#26061) 10 months ago
Matt Jankowski f6dda59e5d
Fix haml-lint Rubocop `Style/SymbolProc` cop (#26059) 10 months ago
Matt Jankowski 39d9804119
Fix haml-lint Rubocop `Style/WordArray` cop (#26058) 10 months ago
Matt Jankowski b3f48089e6
Fix haml-lint rubocop style negation cops (#26057) 10 months ago
Renaud Chaput b8931311a0
Fixes to the new Image build actions (#26056) 10 months ago
Renaud Chaput 626a7b6a77
Add a Github Action to send translations to Crowdin for each merge in main (#25869) 10 months ago
Renaud Chaput d184524233
Rework the container image build actions (#26007) 10 months ago
Daniel M Brasil 59b38f9ee4
Migrate to request specs in `/api/v1/mutes` (#25622) 10 months ago
Matt Jankowski e663e6d2c2
Fix haml-lint `ConsecutiveSilentScripts` rule (#26043) 10 months ago
renovate[bot] 6245cec185
Update dependency ox to v2.14.17 (#26044) 10 months ago
Daniel M Brasil 58bfe8c43a
Migrate to request specs in `/api/v1/bookmarks` (#25520) 10 months ago
Daniel M Brasil 5a7c6c6597
Migrate to request specs in `/api/v1/timelines/public` (#25746) 10 months ago
forsamori 55cf18b689
Add MacOS M1/2 setup steps to README (#25682) 10 months ago
Claire 1a33f1df17
Merge pull request #2305 from ClearlyClaire/glitch-soc/merge-upstream 10 months ago
Claire 0c45bed333 [Glitch] Fix “Back” button sometimes redirecting out of Mastodon 10 months ago
Claire c04f2d0cf7 Merge branch 'main' into glitch-soc/merge-upstream 10 months ago
Claire 0e1d2e15a3
Merge pull request #2302 from ClearlyClaire/glitch-soc/merge-upstream 10 months ago
Matt Jankowski 4207c95d4f
Fix haml-lint Rubocop `Style/SlicingWithRange` cop (#25947) 10 months ago
Claire a442a1d1c6
Fix “Back” button sometimes redirecting out of Mastodon (#25281) 10 months ago
Matt Jankowski d0f00206dc
Fix haml-lint Rubocop `Style/StringLiterals` cop (#25948) 10 months ago
Daniel M Brasil 19208aa422
Migrate to request specs in `/api/v1/statuses/:status_id/favourite` (#25626) 10 months ago
Daniel M Brasil 6fb4a756ff
Migrate to request specs in `/api/v1/statuses/:status_id/bookmark` (#25624) 10 months ago
Daniel M Brasil 4859958a0c
Migrate to request specs in `/api/v1/polls` (#25596) 10 months ago
Daniel M Brasil 1aea938d3d
Migrate to request specs in `/api/v1/statuses/:status_id/pin` (#25635) 10 months ago
Daniel M Brasil 6cdc8408a9
Migrate to request specs in `/api/v1/emails/confirmations` (#25686) 10 months ago
Daniel M Brasil 8a1aabaac1
Migrate to request specs in `/api/v1/timelines/home` (#25743) 10 months ago
Nick Schonning c80ecf2ff7
Increase PR Rebase job retries (#25926) 10 months ago
Jeong Arm 664b0ca8cb
Check if json body is null on Activitipub::ProcessingWorker (#26021) 10 months ago
Matt Jankowski bd33efdf16
Fix haml-lint Rubocop `Style/MinMaxComparison` cop (#25974) 10 months ago
Matt Jankowski 361dd43235
Fix haml-lint Rubocop `lambda` cop (#25946) 10 months ago
Matt Jankowski 5096deb818
Fix haml lint Rubocop `Style/RedundantStringCoercion` cop (#25975) 10 months ago
renovate[bot] 2a9063e36a
Update dependency react-select to v5.7.4 (#26033) 10 months ago
Claire 943f27f437
Remove unfollowed hashtag posts from home feed (#26028) 10 months ago
Claire f18618d7f9
Fix some incorrect tests (#26035) 10 months ago
Michael Stanclift 12e7f5fabd [Glitch] Fix for "follows you" indicator in light web UI not readable 10 months ago
Terence Eden 27f7e5b0f3 [Glitch] Prevent split line between icon and number on reposts & favourites 10 months ago
Claire c943f17b1b Merge branch 'main' into glitch-soc/merge-upstream 10 months ago
renovate[bot] 626f9cf831
Update dependency public_suffix to v5.0.3 (#26032) 10 months ago
Nick Schonning bf9c1a65fa
Update rubocop 1.54.2 (#26002) 10 months ago
renovate[bot] cf18bfa090
Update dependency aws-sdk-s3 to v1.130.0 (#25967) 10 months ago
fusagiko / takayamaki ee8c8dbc6f
remove some file paths from rubocop_tobo.yml (#26022) 10 months ago
renovate[bot] 7b7a26c895
Update dependency postcss to v8.4.26 (#26030) 10 months ago
Claire c667fc5a4a
Fix ArgumentError in mailers when a user's timezone is blank (#26025) 10 months ago
Michael Stanclift 97ce47e451
Fix for "follows you" indicator in light web UI not readable (#25993) 10 months ago
renovate[bot] f17acbca33
Update dependency immutable to v4.3.1 (#26029) 10 months ago
renovate[bot] cdaca7a08b
Update babel monorepo to v7.22.9 (#26017) 10 months ago
Renaud Chaput 84ce94b100
Try to improve Renovatebot config (#26005) 10 months ago
Eugen Rochko 26e522ac55
Fix not actually connecting to the configured replica (#25977) 10 months ago
Claire 23197cebce
Reduce dropdown menu margin and padding (#2301) 10 months ago
Terence Eden b923a4c755
Prevent split line between icon and number on reposts & favourites (#26004) 10 months ago
Claire 2f6ac6b432
Merge pull request #2300 from ClearlyClaire/glitch-soc/merge-upstream 10 months ago
Claire c45a965bf7 [Glitch] Change “About” and “Privacy policy” links to open in a new tab in advanced interface 10 months ago
Stanislas Signoud 9bd012b7cb [Glitch] Change links in multi-column mode so tabs are open in single-column mode 10 months ago
Claire 0d61985713 Remove layout glitch-soc settings 10 months ago
Eugen Rochko f0d3267fbf [Glitch] Fix dropdowns being disabled for logged out users in web UI 10 months ago
Claire a98b5c2246 [Glitch] Fix embed dropdown menu item for unauthenticated users 10 months ago
Claire d9adda1a99 Merge commit '71db616fed817893d0efa363f0e7dbfcf23866a0' into glitch-soc/merge-upstream 10 months ago
Plastikmensch a0047184d7
Add eslint rule to forbid vanilla imports in glitch (#2293) 10 months ago
Plastikmensch 470ded3687
Fix notifications not loading when slow mode active (#2292) 10 months ago
Claire 3952d17518
Merge pull request #2296 from ClearlyClaire/glitch-soc/merge-upstream 10 months ago
Claire e271d018b7 Fix home timeline's regexp field 10 months ago
Claire 71db616fed
Change “About” and “Privacy policy” links to open in a new tab in advanced interface (#25973) 10 months ago
Stanislas Signoud 5fad7bd58a
Change links in multi-column mode so tabs are open in single-column mode (#25893) 10 months ago
Claire 41f65edb21
Fix embed dropdown menu item for unauthenticated users (#25964) 10 months ago
Matt Jankowski 644c5fddd8
Refactor `Status.tagged_with_all` for brakeman SQL injection warning (#25941) 10 months ago
Claire 98e5589ed4 [Glitch] Fix follow link style in embeds 10 months ago
Renaud Chaput 18f55567b0 [Glitch] Upgrade to `typescript-eslint` v6 10 months ago
Claire 3be4f4266d Fix incorrect types in DisplayName 10 months ago
Claire 25571b18ed Merge commit '5a3f174d561cbdc79a597cd2b9502ed058d372da' into glitch-soc/merge-upstream 10 months ago
Renaud Chaput 447ab7ab24 [Glitch] Convert Home timeline components to Typescript 10 months ago
Claire 177497b367 Merge commit '3ed9b55cb3987e3d32c56f857cb6903ca8bec3d4' into glitch-soc/merge-upstream 10 months ago
Claire 0870c7c95e [Glitch] Upgrade to Prettier 3 10 months ago
Claire 95a1fde6b6 Merge commit '73b64b89170cb72854a1709186c62ce31f476889' into glitch-soc/merge-upstream 10 months ago
Claire 2d09653d50 Merge commit '0d7340380cf3094335d8bc67f7c465e2b154566a' into glitch-soc/merge-upstream 10 months ago
Renaud Chaput 70cc7bdbba
Remove some recently-updated packages from Renovabot ignore config (#25960) 10 months ago
Claire 5a3f174d56
Fix follow link style in embeds (#25965) 10 months ago
renovate[bot] ba0649f042
Update dependency postcss to v8.4.25 (#25961) 10 months ago
renovate[bot] a4e6ff0d53
Update dependency react-textarea-autosize to v8.5.2 (#25962) 10 months ago
Renaud Chaput a7253075d1
Upgrade to `typescript-eslint` v6 (#25904) 10 months ago
renovate[bot] 3ed9b55cb3
Update dependency rubocop-rails to v2.20.1 (#25493) 10 months ago
Renaud Chaput a75138d073
Convert Home timeline components to Typescript (#25583) 10 months ago
Renaud Chaput 73b64b8917
Upgrade to Prettier 3 (#25902) 10 months ago
renovate[bot] 0d7340380c
Update dependency glob to v10.3.3 (#25959) 10 months ago
renovate[bot] 6be9f95a22
Update dependency core-js to v3.31.1 (#25958) 10 months ago
Michael Stanclift 063482a63f
Fix trending publishers table not rendering correctly on narrow screens (#25945) 10 months ago
Nick Schonning 1a6c2e450a
Update rubocop to v1.54.1 (#25627) 10 months ago
renovate[bot] e7b0d1e23c
Update dependency chewy to v7.3.3 (#25940) 10 months ago
Matt Jankowski ce43ed144c
Rails 7.0 update (#25668) 10 months ago
Claire bb98d970e3
Merge pull request #2291 from ClearlyClaire/glitch-soc/merge-upstream 10 months ago
Claire c2bfbf53a1 Fix various CSS issues 10 months ago
Eugen Rochko 8d0c69529a
Change markers API to use a replica (#25851) 10 months ago
Eugen Rochko fdc3ff7c2d
Change notifications API to use a replica (#25874) 10 months ago
Claire 9ae60f8738 Merge commit '82e477b184b5666fff7fb55933dce22ca2925db8' into glitch-soc/merge-upstream 10 months ago
Stanislas Signoud ec95f62cb4 [Glitch] Fix sounds not being loaded from assets host 10 months ago
Claire 2aadebc769 Merge commit '8e0fd2d619dac93c193da6a762564244e5622498' into glitch-soc/merge-upstream 10 months ago
Trevor Wolf 15f6fa8d47 [Glitch] fix buttons showing inconsistent styles 10 months ago
Claire c3af91ce48 [Glitch] Fix filters not applying to explore tab 10 months ago
Claire c699dc0908 [Glitch] Add `forward_to_domains` parameter to `POST /api/v1/reports` 10 months ago
Claire 075887e1d6 Merge commit 'ea10febd257b5b729a50aeb3218389763f5f4b97' into glitch-soc/merge-upstream 10 months ago
Eugen Rochko 71f8c45c18 [Glitch] Change label and design of sensitive and unavailable media in web UI 10 months ago
Claire dd0002e1fe Merge commit '610cf6c3713e414995ea1a57110db400ccb88dd2' into glitch-soc/merge-upstream 10 months ago
Eugen Rochko c250b37f0a [Glitch] Fix explore page being inaccessible when opted-out of trends in web UI 10 months ago
Claire 82eebd0482 Merge commit '41a505513fb36f7c28c8d8a4270d5ee192169462' into glitch-soc/merge-upstream 10 months ago
fusagiko / takayamaki 9e311f95aa [Glitch] simplify counters 10 months ago
alfe 5b9e43187c [Glitch] Rewrite `<ShortNumber />` as FC and TS 10 months ago
Renaud Chaput 55ea79165a [Glitch] Convert `<DismissableBanner>` to Typescript 10 months ago
Renaud Chaput 0bfa4a990f [Glitch] Fix translate button position 10 months ago
Claire 7e54a30f06 Merge commit '4534498a8e43f59980ee56e9938efab8580c78c8' into glitch-soc/merge-upstream 10 months ago
Claire 67055b0343
Fix import order inconsistencies (#2289) 10 months ago
renovate[bot] 82e477b184
Update dependency capistrano-rails to v1.6.3 (#25934) 10 months ago
Matt Jankowski 1ef014802b
Refactor `Trends::Query` to avoid brakeman sql injection warnings (#25881) 10 months ago
Renaud Chaput ecd8e0d612
Update Stylelint (#25819) 10 months ago
Renaud Chaput be34b437ed
Update `haml-lint` (#25929) 10 months ago
Matt Jankowski f831452037
Refactor `Snowflake` to avoid brakeman sql injection warnings (#25879) 10 months ago
Matt Jankowski 6c5a2233a8
Fix `RSpec/StubbedMock` cop (#25552) 10 months ago
Matt Jankowski 2e1391fdd2
Fix `Naming/MemoizedInstanceVariableName` cop (#25928) 10 months ago
Matt Jankowski 5134fc65e2
Fix `Naming/AccessorMethodName` cop (#25924) 10 months ago
Matt Jankowski b8b2470cf8
Fix `Style/SlicingWithRange` cop (#25923) 10 months ago
Matt Jankowski 658742b3cd
Fix `Lint/AmbiguousBlockAssociation` cop (#25921) 10 months ago
Matt Jankowski b786911c55
Fix `Lint/SendWithMixinArgument` cop (#25920) 10 months ago
Matt Jankowski 74806deb2c
Fix `RSpec/SubjectStub` cop (#25550) 10 months ago
Matt Jankowski 7824df0eca
Exclude `lib/linter` from simplecov report (#25916) 10 months ago
Matt Jankowski c75df62ccc
Fix `RSpec/SubjectDeclaration` cop (#25312) 10 months ago
Nick Schonning f134a5f9d8
Run Rubocop on Rakefile (#23871) 10 months ago
Nick Schonning 1d557305d2
Enable Rubocop Style/FrozenStringLiteralComment (#23793) 10 months ago
Nick Schonning 9e8bc56d5a
Enable Rubocop Style/Semicolon with config (#23652) 10 months ago
renovate[bot] 8e0fd2d619
Update babel monorepo (#25930) 10 months ago
Stanislas Signoud 1392f31ed8
Fix sounds not being loaded from assets host (#25931) 10 months ago
Stanislas Signoud ca955ada0b
Use invariant colors on notification toasts (#25919) 10 months ago
Claire 3b92499cbc
Fix incorrect syntax in Github action configuration (#25918) 10 months ago
Matt Jankowski a02ae37766
Run the rebase conflict checker once an hour (#25914) 10 months ago
Claire 9411fa4d36
Update brakeman ignores (#25912) 10 months ago
Nick Schonning e11032585b
Run brakeman in GitHub Actions (#23713) 10 months ago
trwnh 3aa153694e
Fix changelog referencing wrong API version (#25857) 10 months ago
Renaud Chaput 518890a9f1
Fixes `latest` Docker tag (#25812) 10 months ago
Trevor Wolf ea10febd25
fix buttons showing inconsistent styles (#25903) 10 months ago
jsgoldstein 99be47f8b9
Change searching with # to include account index (#25638) 10 months ago
Claire af54bf52c8
Fix filters not applying to explore tab (#25887) 10 months ago
Claire 999c343946
Fix remote accounts being possibly persisted to database with incomplete protocol values (#25886) 10 months ago
Claire 4b5851974c
Fix moderation interface for remote instances with a .zip TLD (#25885) 10 months ago
Claire c27b82a437
Add `forward_to_domains` parameter to `POST /api/v1/reports` (#25866) 10 months ago
Matt Jankowski f3fca78756
Refactor `NotificationMailer` to use parameterization (#25718) 10 months ago
Eugen Rochko a1f5188c8c
Change feed merge, unmerge and regeneration workers to use a replica (#25849) 10 months ago
Eugen Rochko 610cf6c371
Fix trend calculation working on too many items at a time (#25835) 10 months ago
Eugen Rochko 338a0e70cc
Change label and design of sensitive and unavailable media in web UI (#25712) 10 months ago
Matt Jankowski d6b387a0c4
Remove unused `NotificationMailer#digest` preview (#25719) 10 months ago
Matt Jankowski cf33028f35
Admin mailer parameterization (#25759) 10 months ago
Renaud Chaput 41a505513f
Remove unused `missed_update` state (#25832) 10 months ago
Eugen Rochko a7ca33ad96
Add toast with option to open post after publishing in web UI (#25564) 10 months ago
Eugen Rochko a8edbcf963
Fix dropdowns being disabled for logged out users in web UI (#25714) 10 months ago
Eugen Rochko ceeb2b8c41
Fix explore page being inaccessible when opted-out of trends in web UI (#25716) 10 months ago
Eugen Rochko 93e8a15415
Add forwarding of reported replies to servers being replied to (#25341) 10 months ago
Kurtis Rainbolt-Greene e4cfe4b3db
First pass at multi-database for read replica using Rails native adapter (#25693) 10 months ago
Renaud Chaput 4534498a8e
Convert `<DismissableBanner>` to Typescript (#25582) 10 months ago
alfe 20e85c0e83
Rewrite `<ShortNumber />` as FC and TS (#25492) 10 months ago
fusagiko / takayamaki e0d230fb37
simplify counters (#25541) 10 months ago
Matt Jankowski 0f9b803eb3
Regenerate brakeman ignore, pruning warnings (#25749) 10 months ago
Renaud Chaput 9f078e238d
Fix translate button position (#25807) 10 months ago
Claire a40529fa79
Merge pull request #2279 from ClearlyClaire/glitch-soc/merge-upstream 10 months ago
Claire b9aa228c54 Merge branch 'main' into glitch-soc/merge-upstream 10 months ago
Claire 0051128387
Bump version to v4.1.4 (#25805) 10 months ago
Renaud Chaput d481e72e85
Tag images with the latest tag only when running against the latest stable branch (#25803) 10 months ago
Claire b6d173b459
Fix crash in admin interface when viewing a remote user with verified links (#25796) 10 months ago
Claire 71d44949bf
Fix branding:generate_app_icons failing because of disallowed ICO coder (#25794) 10 months ago
nemobis dfedf0ec64
Fix typo in CHANGELOG.md (#25764) 10 months ago
renovate[bot] 8b624553ef
Update dependency sanitize to v6.0.2 [SECURITY] (#25777) 10 months ago
Claire 94fbac77e7
Fix processing of media files with unusual names (#25788) 10 months ago
Claire 513078de7a
Fix incorrect secondary button size (#2276) 10 months ago
  1. 3
      .bundler-audit.yml
  2. 4
      .devcontainer/Dockerfile
  3. 49
      .devcontainer/codespaces/devcontainer.json
  4. 28
      .devcontainer/devcontainer.json
  5. 3
      .devcontainer/docker-compose.yml
  6. 4
      .env.vagrant
  7. 29
      .eslintrc.js
  8. 3
      .github/FUNDING.yml
  9. 56
      .github/ISSUE_TEMPLATE/1.bug_report.yml
  10. 76
      .github/ISSUE_TEMPLATE/1.web_bug_report.yml
  11. 65
      .github/ISSUE_TEMPLATE/2.server_bug_report.yml
  12. 0
      .github/ISSUE_TEMPLATE/3.feature_request.yml
  13. 60
      .github/renovate.json5
  14. 99
      .github/workflows/build-container-image.yml
  15. 63
      .github/workflows/build-image.yml
  16. 74
      .github/workflows/build-nightly.yml
  17. 41
      .github/workflows/build-push-pr.yml
  18. 28
      .github/workflows/build-releases.yml
  19. 40
      .github/workflows/bundler-audit.yml
  20. 2
      .github/workflows/check-i18n.yml
  21. 2
      .github/workflows/codeql.yml
  22. 78
      .github/workflows/crowdin-download.yml
  23. 36
      .github/workflows/crowdin-upload.yml
  24. 2
      .github/workflows/lint-css.yml
  25. 2
      .github/workflows/lint-haml.yml
  26. 2
      .github/workflows/lint-js.yml
  27. 2
      .github/workflows/lint-json.yml
  28. 2
      .github/workflows/lint-md.yml
  29. 11
      .github/workflows/lint-ruby.yml
  30. 2
      .github/workflows/lint-yml.yml
  31. 15
      .github/workflows/rebase-needed.yml
  32. 21
      .github/workflows/test-image-build.yml
  33. 2
      .github/workflows/test-js.yml
  34. 2
      .github/workflows/test-migrations-one-step.yml
  35. 2
      .github/workflows/test-migrations-two-step.yml
  36. 224
      .github/workflows/test-ruby.yml
  37. 3
      .gitignore
  38. 89
      .haml-lint_todo.yml
  39. 2
      .nvmrc
  40. 3
      .prettierignore
  41. 28
      .rubocop.yml
  42. 742
      .rubocop_todo.yml
  43. 1654
      AUTHORS.md
  44. 400
      CHANGELOG.md
  45. 15
      Capfile
  46. 21
      Dockerfile
  47. 3
      FEDERATION.md
  48. 47
      Gemfile
  49. 402
      Gemfile.lock
  50. 2
      Procfile.dev
  51. 4
      Rakefile
  52. 20
      SECURITY.md
  53. 44
      Vagrantfile
  54. 11
      app/chewy/accounts_index.rb
  55. 12
      app/chewy/instances_index.rb
  56. 67
      app/chewy/public_statuses_index.rb
  57. 72
      app/chewy/statuses_index.rb
  58. 26
      app/chewy/tags_index.rb
  59. 8
      app/controllers/about_controller.rb
  60. 2
      app/controllers/accounts_controller.rb
  61. 2
      app/controllers/admin/domain_blocks_controller.rb
  62. 2
      app/controllers/admin/instances_controller.rb
  63. 18
      app/controllers/admin/software_updates_controller.rb
  64. 4
      app/controllers/api/base_controller.rb
  65. 1
      app/controllers/api/v1/accounts/credentials_controller.rb
  66. 74
      app/controllers/api/v1/admin/tags_controller.rb
  67. 6
      app/controllers/api/v1/apps/credentials_controller.rb
  68. 2
      app/controllers/api/v1/bookmarks_controller.rb
  69. 4
      app/controllers/api/v1/directories_controller.rb
  70. 2
      app/controllers/api/v1/favourites_controller.rb
  71. 4
      app/controllers/api/v1/instances/activity_controller.rb
  72. 2
      app/controllers/api/v1/instances/domain_blocks_controller.rb
  73. 4
      app/controllers/api/v1/instances/extended_descriptions_controller.rb
  74. 21
      app/controllers/api/v1/instances/languages_controller.rb
  75. 8
      app/controllers/api/v1/instances/peers_controller.rb
  76. 2
      app/controllers/api/v1/instances/privacy_policies_controller.rb
  77. 4
      app/controllers/api/v1/instances/rules_controller.rb
  78. 2
      app/controllers/api/v1/instances/translation_languages_controller.rb
  79. 4
      app/controllers/api/v1/instances_controller.rb
  80. 5
      app/controllers/api/v1/markers_controller.rb
  81. 8
      app/controllers/api/v1/notifications_controller.rb
  82. 47
      app/controllers/api/v1/peers/search_controller.rb
  83. 13
      app/controllers/api/v1/profile/avatars_controller.rb
  84. 13
      app/controllers/api/v1/profile/headers_controller.rb
  85. 2
      app/controllers/api/v1/reports_controller.rb
  86. 5
      app/controllers/api/v1/statuses/favourites_controller.rb
  87. 7
      app/controllers/api/v1/statuses/reblogs_controller.rb
  88. 10
      app/controllers/api/v1/statuses/translations_controller.rb
  89. 1
      app/controllers/api/v1/tags_controller.rb
  90. 7
      app/controllers/api/v1/timelines/home_controller.rb
  91. 5
      app/controllers/api/v1/timelines/tag_controller.rb
  92. 37
      app/controllers/api/web/embeds_controller.rb
  93. 8
      app/controllers/application_controller.rb
  94. 39
      app/controllers/auth/omniauth_callbacks_controller.rb
  95. 5
      app/controllers/auth/registrations_controller.rb
  96. 9
      app/controllers/auth/sessions_controller.rb
  97. 26
      app/controllers/authorize_interactions_controller.rb
  98. 2
      app/controllers/backups_controller.rb
  99. 6
      app/controllers/concerns/account_controller_concern.rb
  100. 2
      app/controllers/concerns/account_owned_concern.rb
  101. Some files were not shown because too many files have changed in this diff Show More

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

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

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

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

@ -25,6 +25,7 @@ services:
command: sleep infinity
ports:
- '127.0.0.1:3000:3000'
- '127.0.0.1:3035:3035'
- '127.0.0.1:4000:4000'
networks:
- external_network
@ -69,7 +70,7 @@ services:
hard: -1
libretranslate:
image: libretranslate/libretranslate:v1.3.11
image: libretranslate/libretranslate:v1.3.12
restart: unless-stopped
volumes:
- lt-data:/home/libretranslate/.local

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

@ -9,7 +9,6 @@ module.exports = {
'plugin:import/recommended',
'plugin:promise/recommended',
'plugin:jsdoc/recommended',
'plugin:prettier/recommended',
],
env: {
@ -63,7 +62,9 @@ module.exports = {
'consistent-return': 'error',
'dot-notation': 'error',
eqeqeq: ['error', 'always', { 'null': 'ignore' }],
'indent': ['error', 2],
'jsx-quotes': ['error', 'prefer-single'],
'semi': ['error', 'always'],
'no-case-declarations': 'off',
'no-catch-shadow': 'error',
'no-console': [
@ -247,7 +248,12 @@ module.exports = {
},
// Internal packages
{
pattern: '{mastodon/**,flavours/glitch-soc/**}',
pattern: '{mastodon/**}',
group: 'internal',
position: 'after',
},
{
pattern: '{flavours/glitch-soc/**}',
group: 'internal',
position: 'after',
},
@ -256,6 +262,18 @@ module.exports = {
},
],
// Forbid imports from vanilla in glitch flavour
'import/no-restricted-paths': [
'error',
{
zones: [{
target: 'app/javascript/flavours/glitch/',
from: 'app/javascript/mastodon/',
message: 'Import from /flavours/glitch/ instead'
}]
}
],
'promise/always-return': 'off',
'promise/catch-or-return': [
'error',
@ -325,8 +343,8 @@ module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/recommended-requiring-type-checking',
'plugin:@typescript-eslint/strict-type-checked',
'plugin:@typescript-eslint/stylistic-type-checked',
'plugin:react/recommended',
'plugin:react-hooks/recommended',
'plugin:jsx-a11y/recommended',
@ -338,7 +356,7 @@ module.exports = {
],
parserOptions: {
project: './tsconfig.json',
project: true,
tsconfigRootDir: __dirname,
},
@ -348,6 +366,7 @@ module.exports = {
'@typescript-eslint/consistent-type-definitions': ['warn', 'interface'],
'@typescript-eslint/consistent-type-exports': 'error',
'@typescript-eslint/consistent-type-imports': 'error',
"@typescript-eslint/prefer-nullish-coalescing": ['error', {ignorePrimitives: {boolean: true}}],
'jsdoc/require-jsdoc': 'off',

@ -1,3 +0,0 @@
patreon: mastodon
open_collective: mastodon
custom: https://sponsor.joinmastodon.org

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

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

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

@ -1,21 +1,23 @@
{
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
extends: [
'config:base',
':dependencyDashboard',
'config:recommended',
':labels(dependencies)',
':maintainLockFilesMonthly', // update non-direct dependencies monthly
':prConcurrentLimit10', // only 10 open PRs at the same time
':prConcurrentLimitNone', // Remove limit for open PRs at any time.
':prHourlyLimit2', // Rate limit PR creation to a maximum of two per hour.
],
stabilityDays: 3, // Wait 3 days after the package has been published before upgrading it
minimumReleaseAge: '3', // Wait 3 days after the package has been published before upgrading it
// packageRules order is important, they are applied from top to bottom and are merged,
// so for example grouping rules needs to be at the bottom
// meaning the most important ones must be at the bottom, for example grouping rules
// If we do not want a package to be grouped with others, we need to set its groupName
// to `null` after any other rule set it to something.
dependencyDashboardHeader: 'This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. Before approving any upgrade: read the description and comments in the [`renovate.json5` file](https://github.com/mastodon/mastodon/blob/main/.github/renovate.json5).',
packageRules: [
{
// Ignore major version bumps for these node packages
// Require Dependency Dashboard Approval for major version bumps of these node packages
matchManagers: ['npm'],
matchPackageNames: [
'@rails/ujs', // Needs to match the major Rails version
'tesseract.js', // Requires code changes
'react-hotkeys', // Requires code changes
@ -40,26 +42,21 @@
'react-router-dom',
],
matchUpdateTypes: ['major'],
enabled: false,
dependencyDashboardApproval: true,
},
{
// Ignore major version bumps for these Ruby packages
// Require Dependency Dashboard Approval for major version bumps of these Ruby packages
matchManagers: ['bundler'],
matchPackageNames: [
'rack', // Needs to be synced with Rails version
'sprockets', // Requires manual upgrade https://github.com/rails/sprockets/blob/master/UPGRADING.md#guide-to-upgrading-from-sprockets-3x-to-4x
'strong_migrations', // Requires manual upgrade
'sidekiq', // Requires manual upgrade
'sidekiq-unique-jobs', // Requires manual upgrades and sync with Sidekiq version
'redis', // Requires manual upgrade and sync with Sidekiq version
'fog-openstack', // TODO: was ignored in https://github.com/mastodon/mastodon/pull/13964
// Needs major Rails version bump
'rack',
'rails',
'rails-i18n',
],
matchUpdateTypes: ['major'],
enabled: false,
dependencyDashboardApproval: true,
},
{
// Update Github Actions and Docker images weekly
@ -67,36 +64,41 @@
extends: ['schedule:weekly'],
},
{
// Ignore major & minor bumps for the ruby image, this needs to be synced with .ruby-version
// Require Dependency Dashboard Approval for major & minor bumps for the ruby image, this needs to be synced with .ruby-version
matchManagers: ['dockerfile'],
matchPackageNames: ['moritzheiber/ruby-jemalloc'],
matchUpdateTypes: ['minor', 'major'],
enabled: false,
dependencyDashboardApproval: true,
},
{
// Ignore major bump for the node image, this needs to be synced with .nvmrc
// Require Dependency Dashboard Approval for major bumps for the node image, this needs to be synced with .nvmrc
matchManagers: ['dockerfile'],
matchPackageNames: ['node'],
matchUpdateTypes: ['major'],
enabled: false,
dependencyDashboardApproval: true,
},
{
// Ignore major postgres bumps in the docker-compose file, as those break dev environments
// Require Dependency Dashboard Approval for major postgres bumps in the docker-compose file, as those break dev environments
matchManagers: ['docker-compose'],
matchPackageNames: ['postgres'],
matchUpdateTypes: ['major'],
enabled: false,
dependencyDashboardApproval: true,
},
{
// Update devDependencies every week, with one grouped PR
matchDepTypes: 'devDependencies',
matchUpdateTypes: ['patch', 'minor'],
excludePackageNames: [
'typescript', // Typescript has many changes in minor versions, needs to be checked every time
],
groupName: 'devDependencies (non-major)',
extends: ['schedule:weekly'],
},
{
// Group all eslint-related packages with `eslint` in the same PR
matchManagers: ['npm'],
matchPackageNames: ['eslint'],
matchPackagePrefixes: ['eslint-', '@typescript-eslint/'],
matchUpdateTypes: ['patch', 'minor'],
groupName: 'eslint (non-major)',
},
{
// Update @types/* packages every week, with one grouped PR
matchPackagePrefixes: '@types/',
@ -105,6 +107,14 @@
extends: ['schedule:weekly'],
addLabels: ['typescript'],
},
{
// We want those packages to always have their own PR
matchManagers: ['npm'],
matchPackageNames: [
'typescript', // Typescript has code-impacting changes in minor versions
],
groupName: null, // We dont want them to belong to any group
},
// Add labels depending on package manager
{ matchManagers: ['npm', 'nvm'], addLabels: ['javascript'] },
{ matchManagers: ['bundler', 'ruby-version'], addLabels: ['ruby'] },

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

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

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

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

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

@ -0,0 +1,40 @@
name: Bundler Audit
on:
push:
branches-ignore:
- 'dependabot/**'
paths:
- 'Gemfile*'
- '.ruby-version'
- '.bundler-audit.yml'
- '.github/workflows/bundler-audit.yml'
pull_request:
paths:
- 'Gemfile*'
- '.ruby-version'
- '.bundler-audit.yml'
- '.github/workflows/bundler-audit.yml'
schedule:
- cron: '0 5 * * 1'
jobs:
security:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v4
- name: Install native Ruby dependencies
run: sudo apt-get install -y libicu-dev libidn11-dev
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: .ruby-version
bundler-cache: true
- name: Run bundler-audit
run: bundle exec bundler-audit

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

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

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

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

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

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

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

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

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

@ -8,7 +8,7 @@ on:
- 'Gemfile*'
- '.rubocop*.yml'
- '.ruby-version'
- '.bundler-audit.yml'
- 'config/brakeman.ignore'
- '**/*.rb'
- '**/*.rake'
- '.github/workflows/lint-ruby.yml'
@ -18,7 +18,7 @@ on:
- 'Gemfile*'
- '.rubocop*.yml'
- '.ruby-version'
- '.bundler-audit.yml'
- 'config/brakeman.ignore'
- '**/*.rb'
- '**/*.rake'
- '.github/workflows/lint-ruby.yml'
@ -29,7 +29,7 @@ jobs:
steps:
- name: Clone repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Install native Ruby dependencies
run: sudo apt-get install -y libicu-dev libidn11-dev
@ -46,5 +46,6 @@ jobs:
- name: Run rubocop
run: bundle exec rubocop
- name: Run bundler-audit
run: bundle exec bundler-audit
- name: Run brakeman
if: always() # Run both checks, even if the first failed
run: bundle exec brakeman

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

@ -1,17 +1,8 @@
name: PR Needs Rebase
on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
- 'l10n_main'
pull_request_target:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
- 'l10n_main'
types: [synchronize]
schedule:
- cron: '0 * * * *'
permissions:
pull-requests: write
@ -32,5 +23,5 @@ jobs:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
commentOnClean: This pull request has resolved merge conflicts and is ready for review.
commentOnDirty: This pull request has merge conflicts that must be resolved before it can be merged.
retryMax: 10
retryMax: 30
continueOnMissingPermissions: false

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

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

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

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

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

3
.gitignore vendored

@ -31,9 +31,6 @@
# Ignore Vagrant files
.vagrant/
# Ignore Capistrano customizations
/config/deploy/*
# Ignore IDE files
.vscode/
.idea/

@ -1,73 +1,23 @@
# This configuration was generated by
# `haml-lint --auto-gen-config`
# on 2023-03-15 00:55:01 -0400 using Haml-Lint version 0.45.0.
# on 2023-10-11 11:31:24 -0400 using Haml-Lint version 0.51.0.
# The point is for the user to remove these configuration records
# one by one as the lints are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of Haml-Lint, may require this file to be generated again.
linters:
# Offense count: 63
RuboCop:
exclude:
- 'app/views/accounts/_og.html.haml'
- 'app/views/admin/account_warnings/_account_warning.html.haml'
- 'app/views/admin/accounts/index.html.haml'
- 'app/views/admin/accounts/show.html.haml'
- 'app/views/admin/announcements/edit.html.haml'
- 'app/views/admin/announcements/new.html.haml'
- 'app/views/admin/disputes/appeals/_appeal.html.haml'
- 'app/views/admin/domain_blocks/edit.html.haml'
- 'app/views/admin/domain_blocks/new.html.haml'
- 'app/views/admin/ip_blocks/new.html.haml'
- 'app/views/admin/reports/actions/preview.html.haml'
- 'app/views/admin/reports/index.html.haml'
- 'app/views/admin/reports/show.html.haml'
- 'app/views/admin/roles/_form.html.haml'
- 'app/views/admin/settings/about/show.html.haml'
- 'app/views/admin/settings/appearance/show.html.haml'
- 'app/views/admin/settings/registrations/show.html.haml'
- 'app/views/admin/statuses/show.html.haml'
- 'app/views/auth/registrations/new.html.haml'
- 'app/views/disputes/strikes/show.html.haml'
- 'app/views/filters/_filter_fields.html.haml'
- 'app/views/invites/_form.html.haml'
- 'app/views/layouts/application.html.haml'
- 'app/views/layouts/error.html.haml'
- 'app/views/notification_mailer/_status.html.haml'
- 'app/views/settings/applications/_fields.html.haml'
- 'app/views/settings/imports/show.html.haml'
- 'app/views/settings/preferences/appearance/show.html.haml'
- 'app/views/settings/preferences/other/show.html.haml'
- 'app/views/statuses/_detailed_status.html.haml'
- 'app/views/statuses/_poll.html.haml'
- 'app/views/statuses/show.html.haml'
- 'app/views/statuses_cleanup/show.html.haml'
- 'app/views/user_mailer/warning.html.haml'
# Offense count: 913
# Offense count: 946
LineLength:
enabled: false
# Offense count: 22
UnnecessaryStringOutput:
exclude:
- 'app/views/accounts/show.html.haml'
- 'app/views/admin/custom_emojis/_custom_emoji.html.haml'
- 'app/views/admin/relays/_relay.html.haml'
- 'app/views/admin/rules/_rule.html.haml'
- 'app/views/admin/statuses/index.html.haml'
- 'app/views/auth/registrations/_sessions.html.haml'
- 'app/views/disputes/strikes/show.html.haml'
- 'app/views/notification_mailer/_status.html.haml'
- 'app/views/settings/two_factor_authentication_methods/index.html.haml'
- 'app/views/statuses/_detailed_status.html.haml'
- 'app/views/statuses/_poll.html.haml'
- 'app/views/statuses/_simple_status.html.haml'
- 'app/views/user_mailer/suspicious_sign_in.html.haml'
- 'app/views/user_mailer/webauthn_credential_added.html.haml'
- 'app/views/user_mailer/webauthn_credential_deleted.html.haml'
- 'app/views/user_mailer/welcome.html.haml'
enabled: false
# Offense count: 44
RuboCop:
enabled: false
# Offense count: 3
ViewLength:
@ -76,31 +26,8 @@ linters:
- 'app/views/admin/reports/show.html.haml'
- 'app/views/disputes/strikes/show.html.haml'
# Offense count: 41
InstanceVariables:
exclude:
- 'app/views/admin/reports/_actions.html.haml'
- 'app/views/admin/roles/_form.html.haml'
- 'app/views/admin/webhooks/_form.html.haml'
- 'app/views/auth/registrations/_sessions.html.haml'
- 'app/views/auth/registrations/_status.html.haml'
- 'app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml'
- 'app/views/authorize_interactions/_post_follow_actions.html.haml'
- 'app/views/invites/_form.html.haml'
- 'app/views/relationships/_account.html.haml'
- 'app/views/shared/_og.html.haml'
- 'app/views/statuses/_status.html.haml'
# Offense count: 6
ConsecutiveSilentScripts:
exclude:
- 'app/views/admin/settings/shared/_links.html.haml'
- 'app/views/settings/login_activities/_login_activity.html.haml'
- 'app/views/statuses/_poll.html.haml'
# Offense count: 3
# Offense count: 2
IdNames:
exclude:
- 'app/views/authorize_interactions/error.html.haml'
- 'app/views/oauth/authorizations/error.html.haml'
- 'app/views/shared/_error_messages.html.haml'

@ -1 +1 @@
16.20
20.8

@ -31,9 +31,6 @@
# Ignore Vagrant files
.vagrant/
# Ignore Capistrano customizations
/config/deploy/*
# Ignore IDE files
.vscode/
.idea/

@ -24,11 +24,11 @@ AllCops:
Exclude:
- db/schema.rb
- 'bin/*'
- 'Rakefile'
- 'node_modules/**/*'
- 'Vagrantfile'
- 'vendor/**/*'
- 'lib/json_ld/*' # Generated files
- 'lib/mastodon/migration_helpers.rb' # Vendored from GitLab
- 'lib/templates/**/*'
# Reason: Prefer Hashes without extreme indentation
@ -39,14 +39,7 @@ Layout/FirstHashElementIndentation:
# Reason: Currently disabled in .rubocop_todo.yml
# https://docs.rubocop.org/rubocop/cops_layout.html#layoutlinelength
Layout/LineLength:
AllowedPatterns:
# Allow comments to be long lines
- !ruby/regexp / \# .*$/
- !ruby/regexp /^\# .*$/
Exclude:
- 'lib/mastodon/cli/*.rb'
- db/*migrate/**/*
- db/seeds/**/*
Max: 320 # Default of 120 causes a duplicate entry in generated todo file
# Reason:
# https://docs.rubocop.org/rubocop/cops_lint.html#lintuselessaccessmodifier
@ -83,12 +76,6 @@ Metrics/AbcSize:
- 'lib/mastodon/cli/*.rb'
- db/*migrate/**/*
# Reason:
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsblocknesting
Metrics/BlockNesting:
Exclude:
- 'lib/mastodon/cli/*.rb'
# Reason: Currently disabled in .rubocop_todo.yml
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricscyclomaticcomplexity
Metrics/CyclomaticComplexity:
@ -132,12 +119,6 @@ RSpec/FilePath:
Exclude:
- 'spec/config/initializers/rack_attack_spec.rb' # namespaces usually have separate folder
- 'spec/lib/sanitize_config_spec.rb' # namespaces usually have separate folder
- 'spec/controllers/concerns/account_controller_concern_spec.rb' # Concerns describe ApplicationController and don't fit naming
- 'spec/controllers/concerns/export_controller_concern_spec.rb'
- 'spec/controllers/concerns/localized_spec.rb'
- 'spec/controllers/concerns/rate_limit_headers_spec.rb'
- 'spec/controllers/concerns/signature_verification_spec.rb'
- 'spec/controllers/concerns/user_tracking_concern_spec.rb'
# Reason:
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecnamedsubject
@ -192,6 +173,11 @@ Style/RedundantBegin:
Style/RescueStandardError:
EnforcedStyle: implicit
# Reason: Simplify some spec layouts
# https://docs.rubocop.org/rubocop/cops_style.html#stylesemicolon
Style/Semicolon:
AllowAsExpressionSeparator: true
# Reason: Originally disabled for CodeClimate, and no config consensus has been found
# https://docs.rubocop.org/rubocop/cops_style.html#stylesymbolarray
Style/SymbolArray:

@ -1,6 +1,6 @@
# This configuration was generated by
# `rubocop --auto-gen-config --auto-gen-only-exclude --no-exclude-limit --no-offense-counts --no-auto-gen-timestamp`
# using RuboCop version 1.52.1.
# using RuboCop version 1.56.1.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
@ -14,48 +14,11 @@ Bundler/OrderedGems:
- 'Gemfile'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, IndentationWidth.
# SupportedStyles: with_first_argument, with_fixed_indentation
Layout/ArgumentAlignment:
Exclude:
- 'config/initializers/cors.rb'
- 'config/initializers/session_store.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle.
# SupportedHashRocketStyles: key, separator, table
# SupportedColonStyles: key, separator, table
# SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit
Layout/HashAlignment:
Exclude:
- 'config/boot.rb'
- 'config/environments/production.rb'
- 'config/initializers/rack_attack.rb'
- 'config/routes.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowDoxygenCommentStyle, AllowGemfileRubyComment.
Layout/LeadingCommentSpace:
Exclude:
- 'config/application.rb'
- 'config/initializers/omniauth.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: require_no_space, require_space
Layout/SpaceInLambdaLiteral:
Exclude:
- 'config/environments/production.rb'
- 'config/initializers/content_security_policy.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowedMethods, AllowedPatterns.
Lint/AmbiguousBlockAssociation:
# Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
# URISchemes: http, https
Layout/LineLength:
Exclude:
- 'spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb'
- 'spec/controllers/settings/two_factor_authentication/otp_authentication_controller_spec.rb'
- 'spec/services/activitypub/process_status_update_service_spec.rb'
- 'spec/services/post_status_service_spec.rb'
- 'app/models/account.rb'
# Configuration parameters: AllowComments, AllowEmptyLambdas.
Lint/EmptyBlock:
@ -64,38 +27,8 @@ Lint/EmptyBlock:
- 'spec/fabricators/access_token_fabricator.rb'
- 'spec/fabricators/conversation_fabricator.rb'
- 'spec/fabricators/system_key_fabricator.rb'
- 'spec/helpers/admin/action_logs_helper_spec.rb'
- 'spec/lib/activitypub/adapter_spec.rb'
- 'spec/models/account_alias_spec.rb'
- 'spec/models/account_deletion_request_spec.rb'
- 'spec/models/account_moderation_note_spec.rb'
- 'spec/models/announcement_mute_spec.rb'
- 'spec/models/announcement_reaction_spec.rb'
- 'spec/models/announcement_spec.rb'
- 'spec/models/backup_spec.rb'
- 'spec/models/conversation_mute_spec.rb'
- 'spec/models/custom_filter_keyword_spec.rb'
- 'spec/models/custom_filter_spec.rb'
- 'spec/models/device_spec.rb'
- 'spec/models/encrypted_message_spec.rb'
- 'spec/models/featured_tag_spec.rb'
- 'spec/models/follow_recommendation_suppression_spec.rb'
- 'spec/models/list_account_spec.rb'
- 'spec/models/list_spec.rb'
- 'spec/models/login_activity_spec.rb'
- 'spec/models/mute_spec.rb'
- 'spec/models/preview_card_spec.rb'
- 'spec/models/preview_card_trend_spec.rb'
- 'spec/models/relay_spec.rb'
- 'spec/models/scheduled_status_spec.rb'
- 'spec/models/status_stat_spec.rb'
- 'spec/models/status_trend_spec.rb'
- 'spec/models/system_key_spec.rb'
- 'spec/models/tag_follow_spec.rb'
- 'spec/models/unavailable_domain_spec.rb'
- 'spec/models/user_invite_request_spec.rb'
- 'spec/models/user_role_spec.rb'
- 'spec/models/web/setting_spec.rb'
Lint/NonLocalExitFromIterator:
Exclude:
@ -106,11 +39,6 @@ Lint/OrAssignmentToConstant:
Exclude:
- 'lib/sanitize_ext/sanitize_config.rb'
# This cop supports safe autocorrection (--autocorrect).
Lint/SendWithMixinArgument:
Exclude:
- 'config/application.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
Lint/UnusedBlockArgument:
@ -120,37 +48,9 @@ Lint/UnusedBlockArgument:
- 'config/initializers/paperclip.rb'
- 'config/initializers/simple_form.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Lint/UselessAssignment:
Exclude:
- 'app/services/activitypub/process_status_update_service.rb'
- 'config/initializers/omniauth.rb'
- 'db/migrate/20190511134027_add_silenced_at_suspended_at_to_accounts.rb'
- 'db/post_migrate/20190511152737_remove_suspended_silenced_account_fields.rb'
- 'spec/controllers/api/v1/bookmarks_controller_spec.rb'
- 'spec/controllers/api/v1/favourites_controller_spec.rb'
- 'spec/controllers/concerns/account_controller_concern_spec.rb'
- 'spec/helpers/jsonld_helper_spec.rb'
- 'spec/models/account_spec.rb'
- 'spec/models/domain_block_spec.rb'
- 'spec/models/status_spec.rb'
- 'spec/models/user_spec.rb'
- 'spec/models/webauthn_credentials_spec.rb'
- 'spec/services/account_search_service_spec.rb'
- 'spec/services/post_status_service_spec.rb'
- 'spec/services/precompute_feed_service_spec.rb'
- 'spec/services/resolve_url_service_spec.rb'
- 'spec/views/statuses/show.html.haml_spec.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: CheckForMethodsWithNoSideEffects.
Lint/Void:
Exclude:
- 'spec/services/resolve_account_service_spec.rb'
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
Metrics/AbcSize:
Max: 150
Max: 144
Exclude:
- 'app/serializers/initial_state_serializer.rb'
@ -167,51 +67,12 @@ Metrics/CyclomaticComplexity:
Metrics/PerceivedComplexity:
Max: 27
Naming/AccessorMethodName:
Performance/MapMethodChain:
Exclude:
- 'app/controllers/auth/sessions_controller.rb'
# Configuration parameters: ExpectMatchingDefinition, CheckDefinitionPathHierarchy, CheckDefinitionPathHierarchyRoots, Regex, IgnoreExecutableScripts, AllowedAcronyms.
# CheckDefinitionPathHierarchyRoots: lib, spec, test, src
# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
Naming/FileName:
Exclude:
- 'config/locales/sr-Latn.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyleForLeadingUnderscores.
# SupportedStylesForLeadingUnderscores: disallowed, required, optional
Naming/MemoizedInstanceVariableName:
Exclude:
- 'app/controllers/api/v1/bookmarks_controller.rb'
- 'app/controllers/api/v1/favourites_controller.rb'
- 'app/controllers/concerns/rate_limit_headers.rb'
- 'app/lib/activitypub/activity.rb'
- 'app/services/resolve_url_service.rb'
- 'app/services/search_service.rb'
- 'config/initializers/rack_attack.rb'
# Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers, AllowedPatterns.
# SupportedStyles: snake_case, normalcase, non_integer
# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339, x86_64
Naming/VariableNumber:
Exclude:
- 'db/migrate/20180106000232_add_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb'
- 'db/migrate/20180514140000_revert_index_change_on_statuses_for_api_v1_accounts_account_id_statuses.rb'
- 'db/migrate/20190820003045_update_statuses_index.rb'
- 'db/migrate/20190823221802_add_local_index_to_statuses.rb'
- 'db/migrate/20200119112504_add_public_index_to_statuses.rb'
- 'spec/models/account_spec.rb'
- 'spec/models/domain_block_spec.rb'
- 'spec/models/user_spec.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Performance/UnfreezeString:
Exclude:
- 'app/lib/rss/builder.rb'
- 'app/lib/text_formatter.rb'
- 'app/validators/status_length_validator.rb'
- 'lib/tasks/mastodon.rake'
- 'app/models/feed.rb'
- 'lib/mastodon/cli/maintenance.rb'
- 'spec/services/bulk_import_service_spec.rb'
- 'spec/services/import_service_spec.rb'
RSpec/AnyInstance:
Exclude:
@ -228,46 +89,10 @@ RSpec/AnyInstance:
- 'spec/models/account_spec.rb'
- 'spec/models/setting_spec.rb'
- 'spec/services/activitypub/process_collection_service_spec.rb'
- 'spec/validators/blacklisted_email_validator_spec.rb'
- 'spec/validators/follow_limit_validator_spec.rb'
- 'spec/workers/activitypub/delivery_worker_spec.rb'
- 'spec/workers/web/push_notification_worker_spec.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
RSpec/EmptyExampleGroup:
Exclude:
- 'spec/helpers/admin/action_logs_helper_spec.rb'
- 'spec/models/account_alias_spec.rb'
- 'spec/models/account_deletion_request_spec.rb'
- 'spec/models/account_moderation_note_spec.rb'
- 'spec/models/announcement_mute_spec.rb'
- 'spec/models/announcement_reaction_spec.rb'
- 'spec/models/announcement_spec.rb'
- 'spec/models/backup_spec.rb'
- 'spec/models/conversation_mute_spec.rb'
- 'spec/models/custom_filter_keyword_spec.rb'
- 'spec/models/custom_filter_spec.rb'
- 'spec/models/device_spec.rb'
- 'spec/models/encrypted_message_spec.rb'
- 'spec/models/featured_tag_spec.rb'
- 'spec/models/follow_recommendation_suppression_spec.rb'
- 'spec/models/list_account_spec.rb'
- 'spec/models/list_spec.rb'
- 'spec/models/login_activity_spec.rb'
- 'spec/models/mute_spec.rb'
- 'spec/models/preview_card_spec.rb'
- 'spec/models/preview_card_trend_spec.rb'
- 'spec/models/relay_spec.rb'
- 'spec/models/scheduled_status_spec.rb'
- 'spec/models/status_stat_spec.rb'
- 'spec/models/status_trend_spec.rb'
- 'spec/models/system_key_spec.rb'
- 'spec/models/tag_follow_spec.rb'
- 'spec/models/unavailable_domain_spec.rb'
- 'spec/models/user_invite_request_spec.rb'
- 'spec/models/web/setting_spec.rb'
- 'spec/services/unmute_service_spec.rb'
# Configuration parameters: CountAsOne.
RSpec/ExampleLength:
Max: 22
@ -285,7 +110,6 @@ RSpec/HookArgument:
- 'spec/serializers/activitypub/note_serializer_spec.rb'
- 'spec/serializers/activitypub/update_poll_serializer_spec.rb'
- 'spec/services/import_service_spec.rb'
- 'spec/spec_helper.rb'
# Configuration parameters: AssignmentOnly.
RSpec/InstanceVariable:
@ -315,13 +139,10 @@ RSpec/LetSetup:
- 'spec/controllers/admin/reports/actions_controller_spec.rb'
- 'spec/controllers/admin/statuses_controller_spec.rb'
- 'spec/controllers/api/v1/accounts/statuses_controller_spec.rb'
- 'spec/controllers/api/v1/admin/accounts_controller_spec.rb'
- 'spec/controllers/api/v1/filters_controller_spec.rb'
- 'spec/controllers/api/v1/followed_tags_controller_spec.rb'
- 'spec/controllers/api/v2/admin/accounts_controller_spec.rb'
- 'spec/controllers/api/v2/filters/keywords_controller_spec.rb'
- 'spec/controllers/api/v2/filters/statuses_controller_spec.rb'
- 'spec/controllers/api/v2/filters_controller_spec.rb'
- 'spec/controllers/auth/confirmations_controller_spec.rb'
- 'spec/controllers/auth/passwords_controller_spec.rb'
- 'spec/controllers/auth/sessions_controller_spec.rb'
@ -331,6 +152,7 @@ RSpec/LetSetup:
- 'spec/controllers/oauth/tokens_controller_spec.rb'
- 'spec/controllers/settings/imports_controller_spec.rb'
- 'spec/lib/activitypub/activity/delete_spec.rb'
- 'spec/lib/vacuum/applications_vacuum_spec.rb'
- 'spec/lib/vacuum/preview_cards_vacuum_spec.rb'
- 'spec/models/account_spec.rb'
- 'spec/models/account_statuses_cleanup_policy_spec.rb'
@ -368,11 +190,7 @@ RSpec/MessageChain:
RSpec/MessageSpies:
Exclude:
- 'spec/controllers/admin/accounts_controller_spec.rb'
- 'spec/controllers/api/base_controller_spec.rb'
- 'spec/controllers/auth/registrations_controller_spec.rb'
- 'spec/helpers/admin/account_moderation_notes_helper_spec.rb'
- 'spec/helpers/application_helper_spec.rb'
- 'spec/lib/status_finder_spec.rb'
- 'spec/lib/webfinger_resource_spec.rb'
- 'spec/models/admin/account_action_spec.rb'
- 'spec/models/concerns/remotable_spec.rb'
@ -396,93 +214,13 @@ RSpec/MultipleMemoizedHelpers:
RSpec/NestedGroups:
Max: 6
RSpec/PendingWithoutReason:
Exclude:
- 'spec/models/account_spec.rb'
RSpec/StubbedMock:
Exclude:
- 'spec/controllers/api/base_controller_spec.rb'
- 'spec/controllers/api/v1/media_controller_spec.rb'
- 'spec/controllers/auth/registrations_controller_spec.rb'
- 'spec/helpers/application_helper_spec.rb'
- 'spec/lib/status_filter_spec.rb'
- 'spec/lib/status_finder_spec.rb'
- 'spec/lib/webfinger_resource_spec.rb'
- 'spec/services/activitypub/process_collection_service_spec.rb'
RSpec/SubjectDeclaration:
Exclude:
- 'spec/controllers/admin/domain_blocks_controller_spec.rb'
- 'spec/models/account_migration_spec.rb'
- 'spec/models/account_spec.rb'
- 'spec/models/relationship_filter_spec.rb'
- 'spec/models/user_role_spec.rb'
- 'spec/policies/account_moderation_note_policy_spec.rb'
- 'spec/policies/account_policy_spec.rb'
- 'spec/policies/backup_policy_spec.rb'
- 'spec/policies/custom_emoji_policy_spec.rb'
- 'spec/policies/domain_block_policy_spec.rb'
- 'spec/policies/email_domain_block_policy_spec.rb'
- 'spec/policies/instance_policy_spec.rb'
- 'spec/policies/invite_policy_spec.rb'
- 'spec/policies/relay_policy_spec.rb'
- 'spec/policies/report_note_policy_spec.rb'
- 'spec/policies/report_policy_spec.rb'
- 'spec/policies/settings_policy_spec.rb'
- 'spec/policies/tag_policy_spec.rb'
- 'spec/policies/user_policy_spec.rb'
- 'spec/services/activitypub/process_account_service_spec.rb'
RSpec/SubjectStub:
Exclude:
- 'spec/services/unallow_domain_service_spec.rb'
- 'spec/validators/blacklisted_email_validator_spec.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/ApplicationController:
Exclude:
- 'app/controllers/health_controller.rb'
# Configuration parameters: Database, Include.
# SupportedDatabases: mysql, postgresql
# Include: db/migrate/*.rb
Rails/BulkChangeTable:
Exclude:
- 'db/migrate/20160222143943_add_profile_fields_to_accounts.rb'
- 'db/migrate/20160223162837_add_metadata_to_statuses.rb'
- 'db/migrate/20160305115639_add_devise_to_users.rb'
- 'db/migrate/20160314164231_add_owner_to_application.rb'
- 'db/migrate/20160926213048_remove_owner_from_application.rb'
- 'db/migrate/20161003142332_add_confirmable_to_users.rb'
- 'db/migrate/20170112154826_migrate_settings.rb'
- 'db/migrate/20170127165745_add_devise_two_factor_to_users.rb'
- 'db/migrate/20170322143850_change_primary_key_to_bigint_on_statuses.rb'
- 'db/migrate/20170330021336_add_counter_caches.rb'
- 'db/migrate/20170425202925_add_oembed_to_preview_cards.rb'
- 'db/migrate/20170427011934_re_add_owner_to_application.rb'
- 'db/migrate/20170520145338_change_language_filter_to_opt_out.rb'
- 'db/migrate/20170624134742_add_description_to_session_activations.rb'
- 'db/migrate/20170718211102_add_activitypub_to_accounts.rb'
- 'db/migrate/20171006142024_add_uri_to_custom_emojis.rb'
- 'db/migrate/20180812123222_change_relays_enabled.rb'
- 'db/migrate/20190511134027_add_silenced_at_suspended_at_to_accounts.rb'
- 'db/migrate/20190805123746_add_capabilities_to_tags.rb'
- 'db/migrate/20190807135426_add_comments_to_domain_blocks.rb'
- 'db/migrate/20190815225426_add_last_status_at_to_tags.rb'
- 'db/migrate/20190901035623_add_max_score_to_tags.rb'
- 'db/migrate/20200417125749_add_storage_schema_version.rb'
- 'db/migrate/20200608113046_add_sign_in_token_to_users.rb'
- 'db/migrate/20211112011713_add_language_to_preview_cards.rb'
- 'db/migrate/20211231080958_add_category_to_reports.rb'
- 'db/migrate/20220202200743_add_trendable_to_accounts.rb'
- 'db/migrate/20220224010024_add_ips_to_email_domain_blocks.rb'
- 'db/migrate/20220227041951_add_last_used_at_to_oauth_access_tokens.rb'
- 'db/migrate/20220303000827_add_ordered_media_attachment_ids_to_status_edits.rb'
- 'db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb'
# Configuration parameters: Include.
# Include: db/migrate/*.rb
# Include: db/**/*.rb
Rails/CreateTableWithTimestamps:
Exclude:
- 'db/migrate/20170508230434_create_conversation_mutes.rb'
@ -637,7 +375,6 @@ Rails/SkipsModelValidations:
- 'lib/mastodon/cli/accounts.rb'
- 'lib/mastodon/cli/main.rb'
- 'lib/mastodon/cli/maintenance.rb'
- 'spec/controllers/api/v1/admin/accounts_controller_spec.rb'
- 'spec/lib/activitypub/activity/follow_spec.rb'
- 'spec/services/follow_service_spec.rb'
- 'spec/services/update_account_service_spec.rb'
@ -742,12 +479,6 @@ Style/ClassVars:
Exclude:
- 'config/initializers/devise.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/CombinableLoops:
Exclude:
- 'app/models/form/custom_emoji_batch.rb'
- 'app/models/form/ip_block_batch.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowedVars.
Style/FetchEnvVar:
@ -756,12 +487,12 @@ Style/FetchEnvVar:
- 'app/lib/translation_service.rb'
- 'config/environments/development.rb'
- 'config/environments/production.rb'
- 'config/initializers/2_whitelist_mode.rb'
- 'config/initializers/2_limited_federation_mode.rb'
- 'config/initializers/3_omniauth.rb'
- 'config/initializers/blacklists.rb'
- 'config/initializers/cache_buster.rb'
- 'config/initializers/content_security_policy.rb'
- 'config/initializers/devise.rb'
- 'config/initializers/omniauth.rb'
- 'config/initializers/paperclip.rb'
- 'config/initializers/vapid.rb'
- 'lib/mastodon/premailer_webpack_strategy.rb'
@ -779,406 +510,6 @@ Style/FormatStringToken:
- 'config/initializers/devise.rb'
- 'lib/paperclip/color_extractor.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: always, always_true, never
Style/FrozenStringLiteralComment:
Exclude:
- 'app/views/accounts/show.rss.ruby'
- 'app/views/tags/show.rss.ruby'
- 'app/views/well_known/host_meta/show.xml.ruby'
- 'config/application.rb'
- 'config/boot.rb'
- 'config/environment.rb'
- 'config/environments/development.rb'
- 'config/environments/production.rb'
- 'config/environments/test.rb'
- 'config/initializers/0_post_deployment_migrations.rb'
- 'config/initializers/active_model_serializers.rb'
- 'config/initializers/application_controller_renderer.rb'
- 'config/initializers/assets.rb'
- 'config/initializers/backtrace_silencers.rb'
- 'config/initializers/cache_logging.rb'
- 'config/initializers/chewy.rb'
- 'config/initializers/content_security_policy.rb'
- 'config/initializers/cookies_serializer.rb'
- 'config/initializers/cors.rb'
- 'config/initializers/devise.rb'
- 'config/initializers/doorkeeper.rb'
- 'config/initializers/fast_blank.rb'
- 'config/initializers/ffmpeg.rb'
- 'config/initializers/filter_parameter_logging.rb'
- 'config/initializers/http_client_proxy.rb'
- 'config/initializers/httplog.rb'
- 'config/initializers/inflections.rb'
- 'config/initializers/mail_delivery_job.rb'
- 'config/initializers/makara.rb'
- 'config/initializers/mime_types.rb'
- 'config/initializers/oj.rb'
- 'config/initializers/omniauth.rb'
- 'config/initializers/open_uri_redirection.rb'
- 'config/initializers/permissions_policy.rb'
- 'config/initializers/pghero.rb'
- 'config/initializers/preload_link_headers.rb'
- 'config/initializers/premailer_rails.rb'
- 'config/initializers/rack_attack_logging.rb'
- 'config/initializers/redis.rb'
- 'config/initializers/session_store.rb'
- 'config/initializers/simple_form.rb'
- 'config/initializers/stoplight.rb'
- 'config/initializers/trusted_proxies.rb'
- 'config/initializers/twitter_regex.rb'
- 'config/initializers/webauthn.rb'
- 'config/initializers/wrap_parameters.rb'
- 'config/locales/sr-Latn.rb'
- 'config/locales/sr.rb'
- 'config/puma.rb'
- 'db/migrate/20160220174730_create_accounts.rb'
- 'db/migrate/20160220211917_create_statuses.rb'
- 'db/migrate/20160221003140_create_users.rb'
- 'db/migrate/20160221003621_create_follows.rb'
- 'db/migrate/20160222122600_create_stream_entries.rb'
- 'db/migrate/20160222143943_add_profile_fields_to_accounts.rb'
- 'db/migrate/20160223162837_add_metadata_to_statuses.rb'
- 'db/migrate/20160223164502_make_uris_nullable_in_statuses.rb'
- 'db/migrate/20160223165723_add_url_to_statuses.rb'
- 'db/migrate/20160223165855_add_url_to_accounts.rb'
- 'db/migrate/20160223171800_create_favourites.rb'
- 'db/migrate/20160224223247_create_mentions.rb'
- 'db/migrate/20160227230233_add_attachment_avatar_to_accounts.rb'
- 'db/migrate/20160305115639_add_devise_to_users.rb'
- 'db/migrate/20160306172223_create_doorkeeper_tables.rb'
- 'db/migrate/20160312193225_add_attachment_header_to_accounts.rb'
- 'db/migrate/20160314164231_add_owner_to_application.rb'
- 'db/migrate/20160316103650_add_missing_indices.rb'
- 'db/migrate/20160322193748_add_avatar_remote_url_to_accounts.rb'
- 'db/migrate/20160325130944_add_admin_to_users.rb'
- 'db/migrate/20160826155805_add_superapp_to_oauth_applications.rb'
- 'db/migrate/20160905150353_create_media_attachments.rb'
- 'db/migrate/20160919221059_add_subscription_expires_at_to_accounts.rb'
- 'db/migrate/20160920003904_remove_verify_token_from_accounts.rb'
- 'db/migrate/20160926213048_remove_owner_from_application.rb'
- 'db/migrate/20161003142332_add_confirmable_to_users.rb'
- 'db/migrate/20161003145426_create_blocks.rb'
- 'db/migrate/20161006213403_rails_settings_migration.rb'
- 'db/migrate/20161009120834_create_domain_blocks.rb'
- 'db/migrate/20161027172456_add_silenced_to_accounts.rb'
- 'db/migrate/20161104173623_create_tags.rb'
- 'db/migrate/20161105130633_create_statuses_tags_join_table.rb'
- 'db/migrate/20161116162355_add_locale_to_users.rb'
- 'db/migrate/20161119211120_create_notifications.rb'
- 'db/migrate/20161122163057_remove_unneeded_indexes.rb'
- 'db/migrate/20161123093447_add_sensitive_to_statuses.rb'
- 'db/migrate/20161128103007_create_subscriptions.rb'
- 'db/migrate/20161130142058_add_last_successful_delivery_at_to_subscriptions.rb'
- 'db/migrate/20161130185319_add_visibility_to_statuses.rb'
- 'db/migrate/20161202132159_add_in_reply_to_account_id_to_statuses.rb'
- 'db/migrate/20161203164520_add_from_account_id_to_notifications.rb'
- 'db/migrate/20161205214545_add_suspended_to_accounts.rb'
- 'db/migrate/20161221152630_add_hidden_to_stream_entries.rb'
- 'db/migrate/20161222201034_add_locked_to_accounts.rb'
- 'db/migrate/20161222204147_create_follow_requests.rb'
- 'db/migrate/20170105224407_add_shortcode_to_media_attachments.rb'
- 'db/migrate/20170109120109_create_web_settings.rb'
- 'db/migrate/20170112154826_migrate_settings.rb'
- 'db/migrate/20170114194937_add_application_to_statuses.rb'
- 'db/migrate/20170114203041_add_website_to_oauth_application.rb'
- 'db/migrate/20170119214911_create_preview_cards.rb'
- 'db/migrate/20170123162658_add_severity_to_domain_blocks.rb'
- 'db/migrate/20170123203248_add_reject_media_to_domain_blocks.rb'
- 'db/migrate/20170125145934_add_spoiler_text_to_statuses.rb'
- 'db/migrate/20170127165745_add_devise_two_factor_to_users.rb'
- 'db/migrate/20170205175257_remove_devices.rb'
- 'db/migrate/20170209184350_add_reply_to_statuses.rb'
- 'db/migrate/20170214110202_create_reports.rb'
- 'db/migrate/20170217012631_add_reblog_of_id_foreign_key_to_statuses.rb'
- 'db/migrate/20170301222600_create_mutes.rb'
- 'db/migrate/20170303212857_add_last_emailed_at_to_users.rb'
- 'db/migrate/20170304202101_add_type_to_media_attachments.rb'
- 'db/migrate/20170317193015_add_search_index_to_accounts.rb'
- 'db/migrate/20170318214217_add_header_remote_url_to_accounts.rb'
- 'db/migrate/20170322021028_add_lowercase_index_to_accounts.rb'
- 'db/migrate/20170322143850_change_primary_key_to_bigint_on_statuses.rb'
- 'db/migrate/20170322162804_add_search_index_to_tags.rb'
- 'db/migrate/20170330021336_add_counter_caches.rb'
- 'db/migrate/20170330163835_create_imports.rb'
- 'db/migrate/20170330164118_add_attachment_data_to_imports.rb'
- 'db/migrate/20170403172249_add_action_taken_by_account_id_to_reports.rb'
- 'db/migrate/20170405112956_add_index_on_mentions_status_id.rb'
- 'db/migrate/20170406215816_add_notifications_and_favourites_indices.rb'
- 'db/migrate/20170409170753_add_last_webfingered_at_to_accounts.rb'
- 'db/migrate/20170414080609_add_devise_two_factor_backupable_to_users.rb'
- 'db/migrate/20170414132105_add_language_to_statuses.rb'
- 'db/migrate/20170418160728_add_indexes_to_reports_for_accounts.rb'
- 'db/migrate/20170423005413_add_allowed_languages_to_user.rb'
- 'db/migrate/20170424003227_create_account_domain_blocks.rb'
- 'db/migrate/20170424112722_add_status_id_index_to_statuses_tags.rb'
- 'db/migrate/20170425131920_add_media_attachment_meta.rb'
- 'db/migrate/20170425202925_add_oembed_to_preview_cards.rb'
- 'db/migrate/20170427011934_re_add_owner_to_application.rb'
- 'db/migrate/20170506235850_create_conversations.rb'
- 'db/migrate/20170507000211_add_conversation_id_to_statuses.rb'
- 'db/migrate/20170507141759_optimize_index_subscriptions.rb'
- 'db/migrate/20170508230434_create_conversation_mutes.rb'
- 'db/migrate/20170516072309_add_index_accounts_on_uri.rb'
- 'db/migrate/20170520145338_change_language_filter_to_opt_out.rb'
- 'db/migrate/20170601210557_add_index_on_media_attachments_account_id.rb'
- 'db/migrate/20170604144747_add_foreign_keys_for_accounts.rb'
- 'db/migrate/20170606113804_change_tag_search_index_to_btree.rb'
- 'db/migrate/20170609145826_remove_default_language_from_statuses.rb'
- 'db/migrate/20170610000000_add_statuses_index_on_account_id_id.rb'
- 'db/migrate/20170623152212_create_session_activations.rb'
- 'db/migrate/20170624134742_add_description_to_session_activations.rb'
- 'db/migrate/20170625140443_add_access_token_id_to_session_activations.rb'
- 'db/migrate/20170711225116_fix_null_booleans.rb'
- 'db/migrate/20170713112503_make_tag_search_case_insensitive.rb'
- 'db/migrate/20170713175513_create_web_push_subscriptions.rb'
- 'db/migrate/20170713190709_add_web_push_subscription_to_session_activations.rb'
- 'db/migrate/20170714184731_add_domain_to_subscriptions.rb'
- 'db/migrate/20170716191202_add_hide_notifications_to_mute.rb'
- 'db/migrate/20170718211102_add_activitypub_to_accounts.rb'
- 'db/migrate/20170720000000_add_index_favourites_on_account_id_and_id.rb'
- 'db/migrate/20170823162448_create_status_pins.rb'
- 'db/migrate/20170824103029_add_timestamps_to_status_pins.rb'
- 'db/migrate/20170829215220_remove_status_pins_account_index.rb'
- 'db/migrate/20170901141119_truncate_preview_cards.rb'
- 'db/migrate/20170901142658_create_join_table_preview_cards_statuses.rb'
- 'db/migrate/20170905044538_add_index_id_account_id_activity_type_on_notifications.rb'
- 'db/migrate/20170905165803_add_local_to_statuses.rb'
- 'db/migrate/20170913000752_create_site_uploads.rb'
- 'db/migrate/20170917153509_create_custom_emojis.rb'
- 'db/migrate/20170918125918_ids_to_bigints.rb'
- 'db/migrate/20170920024819_status_ids_to_timestamp_ids.rb'
- 'db/migrate/20170920032311_fix_reblogs_in_feeds.rb'
- 'db/migrate/20170924022025_ids_to_bigints2.rb'
- 'db/migrate/20170927215609_add_description_to_media_attachments.rb'
- 'db/migrate/20170928082043_create_email_domain_blocks.rb'
- 'db/migrate/20171005102658_create_account_moderation_notes.rb'
- 'db/migrate/20171005171936_add_disabled_to_custom_emojis.rb'
- 'db/migrate/20171006142024_add_uri_to_custom_emojis.rb'
- 'db/migrate/20171010023049_add_foreign_key_to_account_moderation_notes.rb'
- 'db/migrate/20171010025614_change_accounts_nonnullable_in_account_moderation_notes.rb'
- 'db/migrate/20171020084748_add_visible_in_picker_to_custom_emoji.rb'
- 'db/migrate/20171028221157_add_reblogs_to_follows.rb'
- 'db/migrate/20171107143332_add_memorial_to_accounts.rb'
- 'db/migrate/20171107143624_add_disabled_to_users.rb'
- 'db/migrate/20171109012327_add_moderator_to_accounts.rb'
- 'db/migrate/20171114080328_add_index_domain_to_email_domain_blocks.rb'
- 'db/migrate/20171114231651_create_lists.rb'
- 'db/migrate/20171116161857_create_list_accounts.rb'
- 'db/migrate/20171118012443_add_moved_to_account_id_to_accounts.rb'
- 'db/migrate/20171119172437_create_admin_action_logs.rb'
- 'db/migrate/20171122120436_add_index_account_and_reblog_of_id_to_statuses.rb'
- 'db/migrate/20171125024930_create_invites.rb'
- 'db/migrate/20171125031751_add_invite_id_to_users.rb'
- 'db/migrate/20171125185353_add_index_reblog_of_id_and_account_to_statuses.rb'
- 'db/migrate/20171125190735_remove_old_reblog_index_on_statuses.rb'
- 'db/migrate/20171129172043_add_index_on_stream_entries.rb'
- 'db/migrate/20171130000000_add_embed_url_to_preview_cards.rb'
- 'db/migrate/20171201000000_change_account_id_nonnullable_in_lists.rb'
- 'db/migrate/20171212195226_remove_duplicate_indexes_in_lists.rb'
- 'db/migrate/20171226094803_more_faster_index_on_notifications.rb'
- 'db/migrate/20180106000232_add_index_on_statuses_for_api_v1_accounts_account_id_statuses.rb'
- 'db/migrate/20180109143959_add_remember_token_to_users.rb'
- 'db/migrate/20180204034416_create_identities.rb'
- 'db/migrate/20180206000000_change_user_id_nonnullable.rb'
- 'db/migrate/20180211015820_create_backups.rb'
- 'db/migrate/20180304013859_add_featured_collection_url_to_accounts.rb'
- 'db/migrate/20180310000000_change_columns_in_notifications_nonnullable.rb'
- 'db/migrate/20180402031200_add_assigned_account_id_to_reports.rb'
- 'db/migrate/20180402040909_create_report_notes.rb'
- 'db/migrate/20180410204633_add_fields_to_accounts.rb'
- 'db/migrate/20180416210259_add_uri_to_relationships.rb'
- 'db/migrate/20180506221944_add_actor_type_to_accounts.rb'
- 'db/migrate/20180510214435_add_access_token_id_to_web_push_subscriptions.rb'
- 'db/migrate/20180510230049_migrate_web_push_subscriptions.rb'
- 'db/migrate/20180528141303_fix_accounts_unique_index.rb'
- 'db/migrate/20180608213548_reject_following_blocked_users.rb'
- 'db/migrate/20180609104432_migrate_web_push_subscriptions2.rb'
- 'db/migrate/20180615122121_add_autofollow_to_invites.rb'
- 'db/migrate/20180616192031_add_chosen_languages_to_users.rb'
- 'db/migrate/20180617162849_remove_unused_indexes.rb'
- 'db/migrate/20180628181026_create_custom_filters.rb'
- 'db/migrate/20180707154237_add_whole_word_to_custom_filter.rb'
- 'db/migrate/20180711152640_create_relays.rb'
- 'db/migrate/20180808175627_create_account_pins.rb'
- 'db/migrate/20180812123222_change_relays_enabled.rb'
- 'db/migrate/20180812162710_create_status_stats.rb'
- 'db/migrate/20180812173710_copy_status_stats.rb'
- 'db/migrate/20180814171349_add_confidential_to_doorkeeper_application.rb'
- 'db/migrate/20180831171112_create_bookmarks.rb'
- 'db/migrate/20180929222014_create_account_conversations.rb'
- 'db/migrate/20181007025445_create_pghero_space_stats.rb'
- 'db/migrate/20181010141500_add_silent_to_mentions.rb'
- 'db/migrate/20181017170937_add_reject_reports_to_domain_blocks.rb'
- 'db/migrate/20181018205649_add_unread_to_account_conversations.rb'
- 'db/migrate/20181024224956_migrate_account_conversations.rb'
- 'db/migrate/20181026034033_remove_faux_remote_account_duplicates.rb'
- 'db/migrate/20181116165755_create_account_stats.rb'
- 'db/migrate/20181116173541_copy_account_stats.rb'
- 'db/migrate/20181127130500_identity_id_to_bigint.rb'
- 'db/migrate/20181127165847_add_show_replies_to_lists.rb'
- 'db/migrate/20181203003808_create_accounts_tags_join_table.rb'
- 'db/migrate/20181203021853_add_discoverable_to_accounts.rb'
- 'db/migrate/20181204193439_add_last_status_at_to_account_stats.rb'
- 'db/migrate/20181204215309_create_account_tag_stats.rb'
- 'db/migrate/20181207011115_downcase_custom_emoji_domains.rb'
- 'db/migrate/20181213184704_create_account_warnings.rb'
- 'db/migrate/20181213185533_create_account_warning_presets.rb'
- 'db/migrate/20181219235220_add_created_by_application_id_to_users.rb'
- 'db/migrate/20181226021420_add_also_known_as_to_accounts.rb'
- 'db/migrate/20190103124649_create_scheduled_statuses.rb'
- 'db/migrate/20190103124754_add_scheduled_status_id_to_media_attachments.rb'
- 'db/migrate/20190117114553_create_tombstones.rb'
- 'db/migrate/20190201012802_add_overwrite_to_imports.rb'
- 'db/migrate/20190203180359_create_featured_tags.rb'
- 'db/migrate/20190225031541_create_polls.rb'
- 'db/migrate/20190225031625_create_poll_votes.rb'
- 'db/migrate/20190226003449_add_poll_id_to_statuses.rb'
- 'db/migrate/20190304152020_add_uri_to_poll_votes.rb'
- 'db/migrate/20190306145741_add_lock_version_to_polls.rb'
- 'db/migrate/20190307234537_add_approved_to_users.rb'
- 'db/migrate/20190314181829_migrate_open_registrations_setting.rb'
- 'db/migrate/20190316190352_create_account_identity_proofs.rb'
- 'db/migrate/20190317135723_add_uri_to_reports.rb'
- 'db/migrate/20190403141604_add_comment_to_invites.rb'
- 'db/migrate/20190409054914_create_user_invite_requests.rb'
- 'db/migrate/20190420025523_add_blurhash_to_media_attachments.rb'
- 'db/migrate/20190509164208_add_by_moderator_to_tombstone.rb'
- 'db/migrate/20190511134027_add_silenced_at_suspended_at_to_accounts.rb'
- 'db/migrate/20190529143559_preserve_old_layout_for_existing_users.rb'
- 'db/migrate/20190627222225_create_custom_emoji_categories.rb'
- 'db/migrate/20190627222826_add_category_id_to_custom_emojis.rb'
- 'db/migrate/20190701022101_add_trust_level_to_accounts.rb'
- 'db/migrate/20190705002136_create_domain_allows.rb'
- 'db/migrate/20190715164535_add_instance_actor.rb'
- 'db/migrate/20190726175042_add_case_insensitive_index_to_tags.rb'
- 'db/migrate/20190729185330_add_score_to_tags.rb'
- 'db/migrate/20190805123746_add_capabilities_to_tags.rb'
- 'db/migrate/20190807135426_add_comments_to_domain_blocks.rb'
- 'db/migrate/20190815225426_add_last_status_at_to_tags.rb'
- 'db/migrate/20190819134503_add_deleted_at_to_statuses.rb'
- 'db/migrate/20190820003045_update_statuses_index.rb'
- 'db/migrate/20190823221802_add_local_index_to_statuses.rb'
- 'db/migrate/20190901035623_add_max_score_to_tags.rb'
- 'db/migrate/20190904222339_create_markers.rb'
- 'db/migrate/20190914202517_create_account_migrations.rb'
- 'db/migrate/20190915194355_create_account_aliases.rb'
- 'db/migrate/20190927232842_add_voters_count_to_polls.rb'
- 'db/migrate/20191001213028_add_lock_version_to_account_stats.rb'
- 'db/migrate/20191007013357_update_pt_locales.rb'
- 'db/migrate/20191031163205_change_list_account_follow_nullable.rb'
- 'db/migrate/20191212003415_increase_backup_size.rb'
- 'db/migrate/20191212163405_add_hide_collections_to_accounts.rb'
- 'db/migrate/20191218153258_create_announcements.rb'
- 'db/migrate/20200113125135_create_announcement_mutes.rb'
- 'db/migrate/20200114113335_create_announcement_reactions.rb'
- 'db/migrate/20200119112504_add_public_index_to_statuses.rb'
- 'db/migrate/20200126203551_add_published_at_to_announcements.rb'
- 'db/migrate/20200306035625_add_processing_to_media_attachments.rb'
- 'db/migrate/20200309150742_add_forwarded_to_reports.rb'
- 'db/migrate/20200312144258_add_title_to_account_warning_presets.rb'
- 'db/migrate/20200312162302_add_status_ids_to_announcements.rb'
- 'db/migrate/20200312185443_add_parent_id_to_email_domain_blocks.rb'
- 'db/migrate/20200317021758_add_expires_at_to_mutes.rb'
- 'db/migrate/20200407201300_create_unavailable_domains.rb'
- 'db/migrate/20200407202420_migrate_unavailable_inboxes.rb'
- 'db/migrate/20200417125749_add_storage_schema_version.rb'
- 'db/migrate/20200508212852_reset_unique_jobs_locks.rb'
- 'db/migrate/20200510110808_reset_web_app_secret.rb'
- 'db/migrate/20200510181721_remove_duplicated_indexes_pghero.rb'
- 'db/migrate/20200516180352_create_devices.rb'
- 'db/migrate/20200516183822_create_one_time_keys.rb'
- 'db/migrate/20200518083523_create_encrypted_messages.rb'
- 'db/migrate/20200521180606_encrypted_message_ids_to_timestamp_ids.rb'
- 'db/migrate/20200529214050_add_devices_url_to_accounts.rb'
- 'db/migrate/20200601222558_create_system_keys.rb'
- 'db/migrate/20200605155027_add_blurhash_to_preview_cards.rb'
- 'db/migrate/20200608113046_add_sign_in_token_to_users.rb'
- 'db/migrate/20200614002136_add_sensitized_to_accounts.rb'
- 'db/migrate/20200620164023_add_fixed_lowercase_index_to_accounts.rb'
- 'db/migrate/20200622213645_media_attachment_ids_to_timestamp_ids.rb'
- 'db/migrate/20200627125810_add_thumbnail_columns_to_media_attachments.rb'
- 'db/migrate/20200628133322_create_account_notes.rb'
- 'db/migrate/20200630190240_create_webauthn_credentials.rb'
- 'db/migrate/20200630190544_add_webauthn_id_to_users.rb'
- 'db/migrate/20200908193330_create_account_deletion_requests.rb'
- 'db/migrate/20200917192924_add_notify_to_follows.rb'
- 'db/migrate/20200917193034_add_type_to_notifications.rb'
- 'db/migrate/20200917222316_add_index_notifications_on_type.rb'
- 'db/migrate/20201008202037_create_ip_blocks.rb'
- 'db/migrate/20201008220312_add_sign_up_ip_to_users.rb'
- 'db/migrate/20201017233919_add_suspension_origin_to_accounts.rb'
- 'db/migrate/20201206004238_create_instances.rb'
- 'db/migrate/20201218054746_add_obfuscate_to_domain_blocks.rb'
- 'db/migrate/20210221045109_create_rules.rb'
- 'db/migrate/20210306164523_account_ids_to_timestamp_ids.rb'
- 'db/migrate/20210322164601_create_account_summaries.rb'
- 'db/migrate/20210323114347_create_follow_recommendations.rb'
- 'db/migrate/20210324171613_create_follow_recommendation_suppressions.rb'
- 'db/migrate/20210416200740_create_canonical_email_blocks.rb'
- 'db/migrate/20210421121431_add_case_insensitive_btree_index_to_tags.rb'
- 'db/migrate/20210425135952_add_index_on_media_attachments_account_id_status_id.rb'
- 'db/migrate/20210505174616_update_follow_recommendations_to_version_2.rb'
- 'db/migrate/20210609202149_create_login_activities.rb'
- 'db/migrate/20210616214526_create_user_ips.rb'
- 'db/migrate/20210621221010_add_skip_sign_in_token_to_users.rb'
- 'db/migrate/20210630000137_fix_canonical_email_blocks_foreign_key.rb'
- 'db/migrate/20210722120340_create_account_statuses_cleanup_policies.rb'
- 'db/migrate/20210904215403_add_edited_at_to_statuses.rb'
- 'db/migrate/20210908220918_create_status_edits.rb'
- 'db/migrate/20211031031021_create_preview_card_providers.rb'
- 'db/migrate/20211112011713_add_language_to_preview_cards.rb'
- 'db/migrate/20211115032527_add_trendable_to_preview_cards.rb'
- 'db/migrate/20211123212714_add_link_type_to_preview_cards.rb'
- 'db/migrate/20211213040746_update_account_summaries_to_version_2.rb'
- 'db/migrate/20211231080958_add_category_to_reports.rb'
- 'db/migrate/20220105163928_remove_mentions_status_id_index.rb'
- 'db/migrate/20220115125126_add_report_id_to_account_warnings.rb'
- 'db/migrate/20220115125341_fix_account_warning_actions.rb'
- 'db/migrate/20220116202951_add_deleted_at_index_on_statuses.rb'
- 'db/migrate/20220124141035_create_appeals.rb'
- 'db/migrate/20220202200743_add_trendable_to_accounts.rb'
- 'db/migrate/20220202200926_add_trendable_to_statuses.rb'
- 'db/migrate/20220210153119_add_overruled_at_to_account_warnings.rb'
- 'db/migrate/20220224010024_add_ips_to_email_domain_blocks.rb'
- 'db/migrate/20220227041951_add_last_used_at_to_oauth_access_tokens.rb'
- 'db/migrate/20220302232632_add_ordered_media_attachment_ids_to_statuses.rb'
- 'db/migrate/20220303000827_add_ordered_media_attachment_ids_to_status_edits.rb'
- 'db/migrate/20220304195405_migrate_hide_network_preference.rb'
- 'db/migrate/20220307094650_fix_featured_tags_constraints.rb'
- 'db/migrate/20220309213005_fix_reblog_deleted_at.rb'
- 'db/migrate/20220316233212_update_kurdish_locales.rb'
- 'db/migrate/20220428112511_add_index_statuses_on_account_id.rb'
- 'db/migrate/20220428112727_add_index_statuses_pins_on_status_id.rb'
- 'db/migrate/20220428114454_add_index_reports_on_assigned_account_id.rb'
- 'db/migrate/20220428114902_add_index_reports_on_action_taken_by_account_id.rb'
- 'db/migrate/20220606044941_create_webhooks.rb'
- 'db/migrate/20220611210335_create_user_roles.rb'
- 'db/migrate/20220611212541_add_role_id_to_users.rb'
- 'db/migrate/20220710102457_add_display_name_to_tags.rb'
- 'db/migrate/20220714171049_create_tag_follows.rb'
- 'db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb'
- 'db/migrate/20220824233535_create_status_trends.rb'
- 'db/migrate/20220827195229_change_canonical_email_blocks_nullable.rb'
- 'db/migrate/20220829192633_add_languages_to_follows.rb'
- 'db/migrate/20220829192658_add_languages_to_follow_requests.rb'
- 'db/migrate/20221006061337_create_preview_card_trends.rb'
- 'db/migrate/20221012181003_add_blurhash_to_site_uploads.rb'
- 'db/migrate/20221021055441_add_index_featured_tags_on_account_id_and_tag_id.rb'
- 'db/migrate/20221025171544_add_index_ip_blocks_on_ip.rb'
- 'db/migrate/20221104133904_add_name_to_featured_tags.rb'
- 'db/post_migrate/20190519130537_remove_boosts_widening_audience.rb'
- 'db/post_migrate/20210308133107_remove_subscription_expires_at_from_accounts.rb'
- 'db/post_migrate/20220118183123_remove_rememberable_from_users.rb'
- 'db/seeds/01_web_app.rb'
- 'db/seeds/02_instance_actor.rb'
- 'db/seeds/03_roles.rb'
- 'db/seeds/04_admin.rb'
- 'lib/rails/engine_extensions.rb'
- 'lib/tasks/branding.rake'
- 'spec/fabricators_spec.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/GlobalStdStream:
Exclude:
@ -1277,7 +608,6 @@ Style/MutableConstant:
Exclude:
- 'app/models/tag.rb'
- 'app/services/delete_account_service.rb'
- 'config/initializers/twitter_regex.rb'
- 'lib/mastodon/migration_warning.rb'
# This cop supports safe autocorrection (--autocorrect).
@ -1319,8 +649,6 @@ Style/RedundantConstantBase:
Exclude:
- 'config/environments/production.rb'
- 'config/initializers/sidekiq.rb'
- 'config/locales/sr-Latn.rb'
- 'config/locales/sr.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: SafeForConstants.
@ -1332,6 +660,15 @@ Style/RedundantFetchBlock:
- 'config/initializers/paperclip.rb'
- 'config/puma.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowMultipleReturnValues.
Style/RedundantReturn:
Exclude:
- 'app/controllers/api/v1/directories_controller.rb'
- 'app/controllers/auth/confirmations_controller.rb'
- 'app/lib/ostatus/tag_manager.rb'
- 'app/models/form/import.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods, MaxChainLength.
# AllowedMethods: present?, blank?, presence, try, try!
@ -1340,13 +677,6 @@ Style/SafeNavigation:
- 'app/models/concerns/account_finder_concern.rb'
- 'app/models/status.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowAsExpressionSeparator.
Style/Semicolon:
Exclude:
- 'spec/services/activitypub/process_status_update_service_spec.rb'
- 'spec/validators/blacklisted_email_validator_spec.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: only_raise, only_fail, semantic
@ -1360,21 +690,6 @@ Style/SingleArgumentDig:
Exclude:
- 'lib/webpacker/manifest_extensions.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/SlicingWithRange:
Exclude:
- 'app/lib/emoji_formatter.rb'
- 'app/lib/text_formatter.rb'
- 'app/models/account_alias.rb'
- 'app/models/domain_block.rb'
- 'app/models/email_domain_block.rb'
- 'app/models/preview_card_provider.rb'
- 'app/validators/status_length_validator.rb'
- 'db/migrate/20190726175042_add_case_insensitive_index_to_tags.rb'
- 'lib/active_record/batches.rb'
- 'lib/mastodon/premailer_webpack_strategy.rb'
- 'lib/tasks/repo.rake'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: require_parentheses, require_no_parentheses
@ -1411,7 +726,7 @@ Style/StringLiterals:
# AllowedMethods: define_method, mail, respond_to
Style/SymbolProc:
Exclude:
- 'config/initializers/omniauth.rb'
- 'config/initializers/3_omniauth.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, AllowSafeAssignment.
@ -1441,12 +756,5 @@ Style/TrailingCommaInHashLiteral:
Style/WordArray:
Exclude:
- 'app/helpers/languages_helper.rb'
- 'config/initializers/cors.rb'
- 'spec/controllers/settings/imports_controller_spec.rb'
- 'spec/models/form/import_spec.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
# URISchemes: http, https
Layout/LineLength:
Max: 701

File diff suppressed because it is too large Load Diff

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

@ -1,15 +0,0 @@
# frozen_string_literal: true
require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/scm/git'
install_plugin Capistrano::SCM::Git
require 'capistrano/rbenv'
require 'capistrano/bundler'
require 'capistrano/yarn'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }

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

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

@ -4,14 +4,13 @@ source 'https://rubygems.org'
ruby '>= 3.0.0'
gem 'puma', '~> 6.3'
gem 'rails', '~> 6.1.7'
gem 'rails', '~> 7.0'
gem 'sprockets', '~> 3.7.2'
gem 'thor', '~> 1.2'
gem 'rack', '~> 2.2.7'
gem 'haml-rails', '~>2.0'
gem 'pg', '~> 1.5'
gem 'makara', '~> 0.5'
gem 'pghero'
gem 'dotenv-rails', '~> 2.8'
@ -19,6 +18,7 @@ gem 'aws-sdk-s3', '~> 1.123', require: false
gem 'fog-core', '<= 2.4.0'
gem 'fog-openstack', '~> 0.3', require: false
gem 'kt-paperclip', '~> 7.2'
gem 'md-paperclip-azure', '~> 2.2', require: false
gem 'blurhash', '~> 0.1'
gem 'active_model_serializers', '~> 0.10'
@ -35,11 +35,14 @@ group :pam_authentication, optional: true do
end
gem 'net-ldap', '~> 0.18'
gem 'omniauth-cas', '~> 2.0'
gem 'omniauth-saml', '~> 1.10'
# TODO: Point back at released omniauth-cas gem when PR merged
# https://github.com/dlindahl/omniauth-cas/pull/68
gem 'omniauth-cas', github: 'stanhu/omniauth-cas', ref: '4211e6d05941b4a981f9a36b49ec166cecd0e271'
gem 'omniauth-saml', '~> 2.0'
gem 'omniauth_openid_connect', '~> 0.6.1'
gem 'omniauth', '~> 1.9'
gem 'omniauth-rails_csrf_protection', '~> 0.1'
gem 'omniauth', '~> 2.0'
gem 'omniauth-rails_csrf_protection', '~> 1.0'
gem 'color_diff', '~> 0.1'
gem 'discard', '~> 1.2'
@ -56,8 +59,9 @@ gem 'httplog', '~> 1.6.2'
gem 'idn-ruby', require: 'idn'
gem 'kaminari', '~> 1.2'
gem 'link_header', '~> 0.0'
gem 'mime-types', '~> 3.4.1', require: 'mime/types/columnar'
gem 'mime-types', '~> 3.5.0', require: 'mime/types/columnar'
gem 'nokogiri', '~> 1.15'
gem 'nsa', github: 'jhawthorn/nsa', ref: 'e020fcc3a54d993ab45b7194d89ab720296c111b'
gem 'oj', '~> 3.14'
gem 'ox', '~> 2.14'
gem 'parslet'
@ -67,7 +71,7 @@ gem 'pundit', '~> 2.3'
gem 'premailer-rails'
gem 'rack-attack', '~> 6.6'
gem 'rack-cors', '~> 2.0', require: 'rack/cors'
gem 'rails-i18n', '~> 6.0'
gem 'rails-i18n', '~> 7.0'
gem 'rails-settings-cached', '~> 0.6', git: 'https://github.com/mastodon/rails-settings-cached.git', branch: 'v0.6.6-aliases-true'
gem 'redcarpet', '~> 3.6'
gem 'redis', '~> 4.5', require: ['redis', 'redis/connection/hiredis']
@ -99,20 +103,24 @@ gem 'rdf-normalize', '~> 0.5'
gem 'private_address_check', '~> 0.5'
group :test do
# RSpec runner for rails
gem 'rspec-rails', '~> 6.0'
# Used to split testing into chunks in CI
gem 'rspec_chunked', '~> 0.6'
# Adds RSpec Error/Warning annotations to GitHub PRs on the Files tab
gem 'rspec-github', '~> 2.4', require: false
# RSpec progress bar formatter
gem 'fuubar', '~> 2.5'
# Extra RSpec extenion methods and helpers for sidekiq
gem 'rspec-sidekiq', '~> 3.1'
gem 'rspec-sidekiq', '~> 4.0'
# Browser integration testing
gem 'capybara', '~> 3.39'
gem 'selenium-webdriver'
# Used to reset the database between system tests
gem 'database_cleaner-active_record'
# Used to mock environment variables
gem 'climate_control', '~> 0.2'
@ -159,24 +167,25 @@ group :development do
gem 'letter_opener_web', '~> 2.0'
# Security analysis CLI tools
gem 'brakeman', '~> 5.4', require: false
gem 'brakeman', '~> 6.0', require: false
gem 'bundler-audit', '~> 0.9', require: false
# Linter CLI for HAML files
gem 'haml_lint', require: false
# Deployment automation
gem 'capistrano', '~> 3.17'
gem 'capistrano-rails', '~> 1.6'
gem 'capistrano-rbenv', '~> 2.2'
gem 'capistrano-yarn', '~> 2.0'
# Validate missing i18n keys
gem 'i18n-tasks', '~> 1.0', require: false
end
group :development, :test do
# Profiling tools
gem 'memory_profiler', require: false
gem 'ruby-prof', require: false
gem 'stackprof', require: false
gem 'test-prof'
# RSpec runner for rails
gem 'rspec-rails', '~> 6.0'
end
group :production do

@ -7,6 +7,17 @@ GIT
hkdf (~> 0.2)
jwt (~> 2.0)
GIT
remote: https://github.com/jhawthorn/nsa.git
revision: e020fcc3a54d993ab45b7194d89ab720296c111b
ref: e020fcc3a54d993ab45b7194d89ab720296c111b
specs:
nsa (0.2.8)
activesupport (>= 4.2, < 7.2)
concurrent-ruby (~> 1.0, >= 1.0.2)
sidekiq (>= 3.5)
statsd-ruby (~> 1.4, >= 1.4.0)
GIT
remote: https://github.com/mastodon/rails-settings-cached.git
revision: 86328ef0bd04ce21cc0504ff5e334591e8c2ccab
@ -15,78 +26,92 @@ GIT
rails-settings-cached (0.6.6)
rails (>= 4.2.0)
GIT
remote: https://github.com/stanhu/omniauth-cas.git
revision: 4211e6d05941b4a981f9a36b49ec166cecd0e271
ref: 4211e6d05941b4a981f9a36b49ec166cecd0e271
specs:
omniauth-cas (2.0.0)
addressable (~> 2.3)
nokogiri (~> 1.5)
omniauth (>= 1.2, < 3)
GEM
remote: https://rubygems.org/
specs:
actioncable (6.1.7.4)
actionpack (= 6.1.7.4)
activesupport (= 6.1.7.4)
actioncable (7.0.8)
actionpack (= 7.0.8)
activesupport (= 7.0.8)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (6.1.7.4)
actionpack (= 6.1.7.4)
activejob (= 6.1.7.4)
activerecord (= 6.1.7.4)
activestorage (= 6.1.7.4)
activesupport (= 6.1.7.4)
actionmailbox (7.0.8)
actionpack (= 7.0.8)
activejob (= 7.0.8)
activerecord (= 7.0.8)
activestorage (= 7.0.8)
activesupport (= 7.0.8)
mail (>= 2.7.1)
actionmailer (6.1.7.4)
actionpack (= 6.1.7.4)
actionview (= 6.1.7.4)
activejob (= 6.1.7.4)
activesupport (= 6.1.7.4)
net-imap
net-pop
net-smtp
actionmailer (7.0.8)
actionpack (= 7.0.8)
actionview (= 7.0.8)
activejob (= 7.0.8)
activesupport (= 7.0.8)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.0)
actionpack (6.1.7.4)
actionview (= 6.1.7.4)
activesupport (= 6.1.7.4)
rack (~> 2.0, >= 2.0.9)
actionpack (7.0.8)
actionview (= 7.0.8)
activesupport (= 7.0.8)
rack (~> 2.0, >= 2.2.4)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actiontext (6.1.7.4)
actionpack (= 6.1.7.4)
activerecord (= 6.1.7.4)
activestorage (= 6.1.7.4)
activesupport (= 6.1.7.4)
actiontext (7.0.8)
actionpack (= 7.0.8)
activerecord (= 7.0.8)
activestorage (= 7.0.8)
activesupport (= 7.0.8)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (6.1.7.4)
activesupport (= 6.1.7.4)
actionview (7.0.8)
activesupport (= 7.0.8)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
active_model_serializers (0.10.13)
actionpack (>= 4.1, < 7.1)
activemodel (>= 4.1, < 7.1)
active_model_serializers (0.10.14)
actionpack (>= 4.1)
activemodel (>= 4.1)
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
activejob (6.1.7.4)
activesupport (= 6.1.7.4)
activejob (7.0.8)
activesupport (= 7.0.8)
globalid (>= 0.3.6)
activemodel (6.1.7.4)
activesupport (= 6.1.7.4)
activerecord (6.1.7.4)
activemodel (= 6.1.7.4)
activesupport (= 6.1.7.4)
activestorage (6.1.7.4)
actionpack (= 6.1.7.4)
activejob (= 6.1.7.4)
activerecord (= 6.1.7.4)
activesupport (= 6.1.7.4)
activemodel (7.0.8)
activesupport (= 7.0.8)
activerecord (7.0.8)
activemodel (= 7.0.8)
activesupport (= 7.0.8)
activestorage (7.0.8)
actionpack (= 7.0.8)
activejob (= 7.0.8)
activerecord (= 7.0.8)
activesupport (= 7.0.8)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (6.1.7.4)
activesupport (7.0.8)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
addressable (2.8.4)
addressable (2.8.5)
public_suffix (>= 2.0.2, < 6.0)
aes_key_wrap (1.1.0)
airbrussh (1.4.1)
sshkit (>= 1.6.1, != 1.7.0)
android_key_attestation (0.3.0)
annotate (3.2.0)
activerecord (>= 3.2, < 8.0)
@ -97,27 +122,36 @@ GEM
attr_required (1.0.1)
awrence (1.2.1)
aws-eventstream (1.2.0)
aws-partitions (1.780.0)
aws-sdk-core (3.175.0)
aws-partitions (1.809.0)
aws-sdk-core (3.181.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.67.0)
aws-sdk-core (~> 3, >= 3.174.0)
aws-sdk-kms (1.71.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.126.0)
aws-sdk-core (~> 3, >= 3.174.0)
aws-sdk-s3 (1.133.0)
aws-sdk-core (~> 3, >= 3.181.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
aws-sigv4 (1.5.2)
aws-sigv4 (~> 1.6)
aws-sigv4 (1.6.0)
aws-eventstream (~> 1, >= 1.0.2)
bcrypt (3.1.18)
azure-storage-blob (2.0.3)
azure-storage-common (~> 2.0)
nokogiri (~> 1, >= 1.10.8)
azure-storage-common (2.0.4)
faraday (~> 1.0)
faraday_middleware (~> 1.0, >= 1.0.0.rc1)
net-http-persistent (~> 4.0)
nokogiri (~> 1, >= 1.10.8)
base64 (0.1.1)
bcrypt (3.1.19)
better_errors (2.10.1)
erubi (>= 1.0.0)
rack (>= 0.9.0)
rouge (>= 1.0.0)
better_html (2.0.1)
better_html (2.0.2)
actionview (>= 6.0)
activesupport (>= 6.0)
ast (~> 2.0)
@ -130,7 +164,7 @@ GEM
blurhash (0.1.7)
bootsnap (1.16.0)
msgpack (~> 1.2)
brakeman (5.4.1)
brakeman (6.0.1)
browser (5.3.1)
brpoplpush-redis_script (0.1.3)
concurrent-ruby (~> 1.0, >= 1.0.5)
@ -139,21 +173,6 @@ GEM
bundler-audit (0.9.1)
bundler (>= 1.2.0, < 3)
thor (~> 1.0)
capistrano (3.17.3)
airbrussh (>= 1.0.0)
i18n
rake (>= 10.0.0)
sshkit (>= 1.9.0)
capistrano-bundler (2.1.0)
capistrano (~> 3.1)
capistrano-rails (1.6.2)
capistrano (~> 3.1)
capistrano-bundler (>= 1.1, < 3)
capistrano-rbenv (2.2.0)
capistrano (~> 3.1)
sshkit (~> 1.3)
capistrano-yarn (2.0.2)
capistrano (~> 3.0)
capybara (3.39.2)
addressable
matrix
@ -167,7 +186,7 @@ GEM
activesupport
cbor (0.5.9.6)
charlock_holmes (0.7.7)
chewy (7.3.2)
chewy (7.3.4)
activesupport (>= 5.2)
elasticsearch (>= 7.12.0, < 7.14.0)
elasticsearch-dsl
@ -185,19 +204,23 @@ GEM
crass (1.0.6)
css_parser (1.14.0)
addressable
database_cleaner-active_record (2.1.0)
activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
date (3.3.3)
debug_inspector (1.1.0)
devise (4.9.2)
devise (4.9.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
responders
warden (~> 1.2.3)
devise-two-factor (4.1.0)
activesupport (< 7.1)
devise-two-factor (4.1.1)
activesupport (~> 7.0)
attr_encrypted (>= 1.3, < 5, != 2)
devise (~> 4.0)
railties (< 7.1)
railties (~> 7.0)
rotp (~> 6.0)
devise_pam_authenticatable2 (9.2.0)
devise (>= 4.0.0)
@ -230,7 +253,7 @@ GEM
tzinfo
excon (0.100.0)
fabrication (2.30.0)
faker (3.2.0)
faker (3.2.1)
i18n (>= 1.8.11, < 2)
faraday (1.10.3)
faraday-em_http (~> 1.0)
@ -255,6 +278,8 @@ GEM
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.0)
faraday (~> 1.0)
fast_blank (1.0.1)
fastimage (2.2.7)
ffi (1.15.5)
@ -282,7 +307,7 @@ GEM
ruby-progressbar (~> 1.4)
globalid (1.1.0)
activesupport (>= 5.0)
haml (6.1.1)
haml (6.2.0)
temple (>= 0.8.2)
thor
tilt
@ -291,11 +316,11 @@ GEM
activesupport (>= 5.1)
haml (>= 4.0.6)
railties (>= 5.1)
haml_lint (0.45.0)
haml (>= 4.0, < 6.2)
haml_lint (0.51.0)
haml (>= 4.0)
parallel (~> 1.10)
rainbow
rubocop (>= 0.50.0)
rubocop (>= 1.0)
sysexits (~> 1.1)
hashdiff (1.0.1)
hashie (5.0.0)
@ -320,14 +345,14 @@ GEM
rainbow (>= 2.0.0)
i18n (1.14.1)
concurrent-ruby (~> 1.0)
i18n-tasks (1.0.12)
i18n-tasks (1.0.13)
activesupport (>= 4.0.2)
ast (>= 2.1.0)
better_html (>= 1.0, < 3.0)
erubi
highline (>= 2.0.0)
i18n
parser (>= 2.2.3.0)
parser (>= 3.2.2.1)
rails-i18n
rainbow (>= 2.2.2, < 4.0)
terminal-table (>= 1.5.1)
@ -367,12 +392,13 @@ GEM
activerecord
kaminari-core (= 1.2.2)
kaminari-core (1.2.2)
kt-paperclip (7.2.0)
kt-paperclip (7.2.1)
activemodel (>= 4.2.0)
activesupport (>= 4.2.0)
marcel (~> 1.0.1)
mime-types
terrapin (~> 0.6.0)
language_server-protocol (3.17.0.3)
launchy (2.5.2)
addressable (~> 2.8)
letter_opener (1.8.1)
@ -386,12 +412,12 @@ GEM
llhttp-ffi (0.4.0)
ffi-compiler (~> 1.0)
rake (~> 13.0)
lograge (0.12.0)
lograge (0.14.0)
actionpack (>= 4)
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
loofah (2.21.3)
loofah (2.21.4)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.8.1)
@ -399,26 +425,30 @@ GEM
net-imap
net-pop
net-smtp
makara (0.5.1)
activerecord (>= 5.2.0)
marcel (1.0.2)
mario-redis-lock (1.2.1)
redis (>= 3.0.5)
matrix (0.4.2)
md-paperclip-azure (2.2.0)
addressable (~> 2.5)
azure-storage-blob (~> 2.0.1)
hashie (~> 5.0)
memory_profiler (1.0.1)
method_source (1.0.0)
mime-types (3.4.1)
mime-types (3.5.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2023.0218.1)
mini_mime (1.1.2)
mini_portile2 (2.8.2)
minitest (5.18.1)
mime-types-data (3.2023.0808)
mini_mime (1.1.5)
mini_portile2 (2.8.4)
minitest (5.20.0)
msgpack (1.7.1)
multi_json (1.15.0)
multipart-post (2.3.0)
net-http (0.3.2)
uri
net-imap (0.3.6)
net-http-persistent (4.0.2)
connection_pool (~> 2.2)
net-imap (0.3.7)
date
net-protocol
net-ldap (0.18.0)
@ -426,29 +456,23 @@ GEM
net-protocol
net-protocol (0.2.1)
timeout
net-scp (4.0.0)
net-ssh (>= 2.6.5, < 8.0.0)
net-smtp (0.3.3)
net-protocol
net-ssh (7.1.0)
nio4r (2.5.9)
nokogiri (1.15.2)
nokogiri (1.15.4)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
oj (3.15.0)
omniauth (1.9.2)
oj (3.16.1)
omniauth (2.1.1)
hashie (>= 3.4.6)
rack (>= 1.6.2, < 3)
omniauth-cas (2.0.0)
addressable (~> 2.3)
nokogiri (~> 1.5)
omniauth (~> 1.2)
omniauth-rails_csrf_protection (0.1.2)
rack (>= 2.2.3)
rack-protection
omniauth-rails_csrf_protection (1.0.1)
actionpack (>= 4.2)
omniauth (>= 1.3.1)
omniauth-saml (1.10.3)
omniauth (~> 1.3, >= 1.3.2)
ruby-saml (~> 1.9)
omniauth (~> 2.0)
omniauth-saml (2.1.0)
omniauth (~> 2.0)
ruby-saml (~> 1.12)
omniauth_openid_connect (0.6.1)
omniauth (>= 1.9, < 3)
openid_connect (~> 1.1)
@ -467,16 +491,16 @@ GEM
openssl-signature_algorithm (1.3.0)
openssl (> 2.0)
orm_adapter (0.5.0)
ox (2.14.16)
ox (2.14.17)
parallel (1.23.0)
parser (3.2.2.3)
parser (3.2.2.4)
ast (~> 2.4.1)
racc
parslet (2.0.0)
pastel (0.8.0)
tty-color (~> 0.5)
pg (1.5.3)
pghero (3.3.3)
pg (1.5.4)
pghero (3.3.4)
activerecord (>= 6)
posix-spawn (0.3.15)
premailer (1.21.0)
@ -488,16 +512,16 @@ GEM
net-smtp
premailer (~> 1.7, >= 1.7.9)
private_address_check (0.5.0)
public_suffix (5.0.1)
puma (6.3.0)
public_suffix (5.0.3)
puma (6.4.0)
nio4r (~> 2.0)
pundit (2.3.0)
activesupport (>= 3.0.0)
raabro (1.4.0)
racc (1.7.1)
rack (2.2.7)
rack-attack (6.6.1)
rack (>= 1.0, < 3)
rack (2.2.8)
rack-attack (6.7.0)
rack (>= 1.0, < 4)
rack-cors (2.0.1)
rack (>= 2.0.0)
rack-oauth2 (1.21.3)
@ -506,49 +530,52 @@ GEM
httpclient
json-jwt (>= 1.11.0)
rack (>= 2.1.0)
rack-protection (3.0.5)
rack
rack-proxy (0.7.6)
rack
rack-test (2.1.0)
rack (>= 1.3)
rails (6.1.7.4)
actioncable (= 6.1.7.4)
actionmailbox (= 6.1.7.4)
actionmailer (= 6.1.7.4)
actionpack (= 6.1.7.4)
actiontext (= 6.1.7.4)
actionview (= 6.1.7.4)
activejob (= 6.1.7.4)
activemodel (= 6.1.7.4)
activerecord (= 6.1.7.4)
activestorage (= 6.1.7.4)
activesupport (= 6.1.7.4)
rails (7.0.8)
actioncable (= 7.0.8)
actionmailbox (= 7.0.8)
actionmailer (= 7.0.8)
actionpack (= 7.0.8)
actiontext (= 7.0.8)
actionview (= 7.0.8)
activejob (= 7.0.8)
activemodel (= 7.0.8)
activerecord (= 7.0.8)
activestorage (= 7.0.8)
activesupport (= 7.0.8)
bundler (>= 1.15.0)
railties (= 6.1.7.4)
sprockets-rails (>= 2.0.0)
railties (= 7.0.8)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
activesupport (>= 5.0.1.rc1)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
rails-dom-testing (2.2.0)
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
rails-html-sanitizer (1.6.0)
loofah (~> 2.21)
nokogiri (~> 1.14)
rails-i18n (6.0.0)
rails-i18n (7.0.8)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 7)
railties (6.1.7.4)
actionpack (= 6.1.7.4)
activesupport (= 6.1.7.4)
railties (>= 6.0.0, < 8)
railties (7.0.8)
actionpack (= 7.0.8)
activesupport (= 7.0.8)
method_source
rake (>= 12.2)
thor (~> 1.0)
zeitwerk (~> 2.5)
rainbow (3.1.1)
rake (13.0.6)
rdf (3.2.11)
link_header (~> 0.0, >= 0.0.8)
rdf-normalize (0.6.0)
rdf-normalize (0.6.1)
rdf (~> 3.2)
redcarpet (3.6.0)
redis (4.8.1)
@ -556,13 +583,13 @@ GEM
redis (>= 4)
redlock (1.3.2)
redis (>= 3.0.0, < 6.0)
regexp_parser (2.8.1)
regexp_parser (2.8.2)
request_store (1.5.1)
rack (>= 1.4)
responders (3.1.0)
responders (3.1.1)
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.2.5)
rexml (3.2.6)
rotp (6.2.2)
rouge (4.1.2)
rpam2 (4.0.2)
@ -575,6 +602,8 @@ GEM
rspec-expectations (3.12.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-github (2.4.0)
rspec-core (~> 3.0)
rspec-mocks (3.12.5)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
@ -586,38 +615,43 @@ GEM
rspec-expectations (~> 3.12)
rspec-mocks (~> 3.12)
rspec-support (~> 3.12)
rspec-sidekiq (3.1.0)
rspec-core (~> 3.0, >= 3.0.0)
sidekiq (>= 2.4.0)
rspec-support (3.12.0)
rspec-sidekiq (4.0.1)
rspec-core (~> 3.0)
rspec-expectations (~> 3.0)
rspec-mocks (~> 3.0)
sidekiq (>= 5, < 8)
rspec-support (3.12.1)
rspec_chunked (0.6)
rubocop (1.52.1)
rubocop (1.57.1)
base64 (~> 0.1.1)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.2.2.3)
parser (>= 3.2.2.4)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.28.0, < 2.0)
rubocop-ast (>= 1.28.1, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.29.0)
parser (>= 3.2.1.0)
rubocop-capybara (2.18.0)
rubocop-capybara (2.19.0)
rubocop (~> 1.41)
rubocop-factory_bot (2.23.1)
rubocop (~> 1.33)
rubocop-performance (1.18.0)
rubocop-performance (1.19.1)
rubocop (>= 1.7.0, < 2.0)
rubocop-ast (>= 0.4.0)
rubocop-rails (2.19.1)
rubocop-rails (2.20.2)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
rubocop-rspec (2.22.0)
rubocop-rspec (2.23.2)
rubocop (~> 1.33)
rubocop-capybara (~> 2.17)
rubocop-factory_bot (~> 2.22)
ruby-prof (1.6.3)
ruby-progressbar (1.13.0)
ruby-saml (1.15.0)
nokogiri (>= 1.13.10)
@ -628,14 +662,18 @@ GEM
fugit (~> 1.1, >= 1.1.6)
safety_net_attestation (0.4.0)
jwt (~> 2.0)
sanitize (6.0.1)
sanitize (6.0.2)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
scenic (1.7.0)
activerecord (>= 4.0.0)
railties (>= 4.0.0)
selenium-webdriver (4.13.1)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
semantic_range (3.0.0)
sidekiq (6.5.9)
sidekiq (6.5.12)
connection_pool (>= 2.2.5, < 3)
rack (~> 2.0)
redis (>= 4.5.0, < 5)
@ -670,11 +708,9 @@ GEM
actionpack (>= 5.2)
activesupport (>= 5.2)
sprockets (>= 3.0.0)
sshkit (1.21.4)
net-scp (>= 1.1.2)
net-ssh (>= 2.8.0)
stackprof (0.2.25)
stoplight (3.0.1)
statsd-ruby (1.5.0)
stoplight (3.0.2)
redlock (~> 1.0)
strong_migrations (0.8.0)
activerecord (>= 5.2)
@ -688,9 +724,10 @@ GEM
unicode-display_width (>= 1.1.1, < 3)
terrapin (0.6.0)
climate_control (>= 0.0.3, < 1.0)
test-prof (1.2.3)
thor (1.2.2)
tilt (2.2.0)
timeout (0.3.2)
tilt (2.3.0)
timeout (0.4.0)
tpm-key_attestation (0.12.0)
bindata (~> 2.4)
openssl (> 2.0)
@ -715,7 +752,7 @@ GEM
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (2.4.2)
unicode-display_width (2.5.0)
uri (0.12.2)
validate_email (0.1.6)
activemodel (>= 3.0)
@ -737,7 +774,7 @@ GEM
webfinger (1.2.0)
activesupport
httpclient (>= 2.4)
webmock (3.18.1)
webmock (3.19.1)
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
@ -746,14 +783,15 @@ GEM
rack-proxy (>= 0.6.1)
railties (>= 5.2)
semantic_range (>= 2.3.0)
websocket-driver (0.7.5)
websocket (1.2.10)
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
wisper (2.0.1)
xorcist (1.1.3)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.8)
zeitwerk (2.6.12)
PLATFORMS
ruby
@ -767,13 +805,9 @@ DEPENDENCIES
binding_of_caller (~> 1.0)
blurhash (~> 0.1)
bootsnap (~> 1.16.0)
brakeman (~> 5.4)
brakeman (~> 6.0)
browser
bundler-audit (~> 0.9)
capistrano (~> 3.17)
capistrano-rails (~> 1.6)
capistrano-rbenv (~> 2.2)
capistrano-yarn (~> 2.0)
capybara (~> 3.39)
charlock_holmes (~> 0.7.7)
chewy (~> 7.3)
@ -782,6 +816,7 @@ DEPENDENCIES
color_diff (~> 0.1)
concurrent-ruby
connection_pool
database_cleaner-active_record
devise (~> 4.9)
devise-two-factor (~> 4.1)
devise_pam_authenticatable2 (~> 9.2)
@ -815,18 +850,19 @@ DEPENDENCIES
letter_opener_web (~> 2.0)
link_header (~> 0.0)
lograge (~> 0.12)
makara (~> 0.5)
mario-redis-lock (~> 1.2)
md-paperclip-azure (~> 2.2)
memory_profiler
mime-types (~> 3.4.1)
mime-types (~> 3.5.0)
net-http (~> 0.3.2)
net-ldap (~> 0.18)
nokogiri (~> 1.15)
nsa!
oj (~> 3.14)
omniauth (~> 1.9)
omniauth-cas (~> 2.0)
omniauth-rails_csrf_protection (~> 0.1)
omniauth-saml (~> 1.10)
omniauth (~> 2.0)
omniauth-cas!
omniauth-rails_csrf_protection (~> 1.0)
omniauth-saml (~> 2.0)
omniauth_openid_connect (~> 0.6.1)
ox (~> 2.14)
parslet
@ -842,27 +878,30 @@ DEPENDENCIES
rack-attack (~> 6.6)
rack-cors (~> 2.0)
rack-test (~> 2.1)
rails (~> 6.1.7)
rails (~> 7.0)
rails-controller-testing (~> 1.0)
rails-i18n (~> 6.0)
rails-i18n (~> 7.0)
rails-settings-cached (~> 0.6)!
rdf-normalize (~> 0.5)
redcarpet (~> 3.6)
redis (~> 4.5)
redis-namespace (~> 1.10)
rqrcode (~> 2.2)
rspec-github (~> 2.4)
rspec-rails (~> 6.0)
rspec-sidekiq (~> 3.1)
rspec-sidekiq (~> 4.0)
rspec_chunked (~> 0.6)
rubocop
rubocop-capybara
rubocop-performance
rubocop-rails
rubocop-rspec
ruby-prof
ruby-progressbar (~> 1.13)
rubyzip (~> 2.3)
sanitize (~> 6.0)
scenic (~> 1.7)
selenium-webdriver
sidekiq (~> 6.5)
sidekiq-bulk (~> 0.2.0)
sidekiq-scheduler (~> 5.0)
@ -875,6 +914,7 @@ DEPENDENCIES
stackprof
stoplight (~> 3.0.1)
strong_migrations (~> 0.8)
test-prof
thor (~> 1.2)
tty-prompt (~> 0.23)
twitter-text (~> 3.1.0)

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

@ -1,6 +1,8 @@
# frozen_string_literal: true
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require File.expand_path('../config/application', __FILE__)
require File.expand_path('config/application', __dir__)
Rails.application.load_tasks

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

44
Vagrantfile vendored

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

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

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

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

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

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

@ -5,15 +5,7 @@ class AboutController < ApplicationController
skip_before_action :require_functional!
before_action :set_instance_presenter
def show
expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.day) unless user_signed_in?
end
private
def set_instance_presenter
@instance_presenter = InstancePresenter.new
end
end

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

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

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

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

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

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

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

@ -1,9 +1,9 @@
# frozen_string_literal: true
class Api::V1::Apps::CredentialsController < Api::BaseController
before_action -> { doorkeeper_authorize! :read }
def show
render json: doorkeeper_token.application, serializer: REST::ApplicationSerializer, fields: %i(name website vapid_key)
return doorkeeper_render_error unless valid_doorkeeper_token?
render json: doorkeeper_token.application, serializer: REST::ApplicationSerializer, fields: %i(name website vapid_key client_id scopes)
end
end

@ -21,7 +21,7 @@ class Api::V1::BookmarksController < Api::BaseController
end
def results
@_results ||= account_bookmarks.joins(:status).eager_load(:status).to_a_paginated_by_id(
@results ||= account_bookmarks.joins(:status).eager_load(:status).to_a_paginated_by_id(
limit_param(DEFAULT_STATUSES_LIMIT),
params_slice(:max_id, :since_id, :min_id)
)

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

@ -21,7 +21,7 @@ class Api::V1::FavouritesController < Api::BaseController
end
def results
@_results ||= account_favourites.joins(:status).eager_load(:status).to_a_paginated_by_id(
@results ||= account_favourites.joins(:status).eager_load(:status).to_a_paginated_by_id(
limit_param(DEFAULT_STATUSES_LIMIT),
params_slice(:max_id, :since_id, :min_id)
)

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

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

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

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

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

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

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

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

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

@ -7,7 +7,10 @@ class Api::V1::MarkersController < Api::BaseController
before_action :require_user!
def index
@markers = current_user.markers.where(timeline: Array(params[:timeline])).index_by(&:timeline)
with_read_replica do
@markers = current_user.markers.where(timeline: Array(params[:timeline])).index_by(&:timeline)
end
render json: serialize_map(@markers)
end

@ -9,8 +9,12 @@ class Api::V1::NotificationsController < Api::BaseController
DEFAULT_NOTIFICATIONS_LIMIT = 40
def index
@notifications = load_notifications
render json: @notifications, each_serializer: REST::NotificationSerializer, relationships: StatusRelationshipsPresenter.new(target_statuses_from_notifications, current_user&.account_id)
with_read_replica do
@notifications = load_notifications
@relationships = StatusRelationshipsPresenter.new(target_statuses_from_notifications, current_user&.account_id)
end
render json: @notifications, each_serializer: REST::NotificationSerializer, relationships: @relationships
end
def show

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

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

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

@ -23,6 +23,6 @@ class Api::V1::ReportsController < Api::BaseController
end
def report_params
params.permit(:account_id, :comment, :category, :forward, status_ids: [], rule_ids: [])
params.permit(:account_id, :comment, :category, :forward, forward_to_domains: [], status_ids: [], rule_ids: [])
end
end

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

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

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

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

@ -6,11 +6,14 @@ class Api::V1::Timelines::HomeController < Api::BaseController
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
def show
@statuses = load_statuses
with_read_replica do
@statuses = load_statuses
@relationships = StatusRelationshipsPresenter.new(@statuses, current_user&.account_id)
end
render json: @statuses,
each_serializer: REST::StatusSerializer,
relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id),
relationships: @relationships,
status: account_home_feed.regenerating? ? 206 : 200
end

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

@ -1,25 +1,36 @@
# frozen_string_literal: true
class Api::Web::EmbedsController < Api::Web::BaseController
before_action :require_user!
include Authorization
def create
status = StatusFinder.new(params[:url]).status
before_action :set_status
return not_found if status.hidden?
def show
return not_found if @status.hidden?
render json: status, serializer: OEmbedSerializer, width: 400
rescue ActiveRecord::RecordNotFound
oembed = FetchOEmbedService.new.call(params[:url])
if @status.local?
render json: @status, serializer: OEmbedSerializer, width: 400
else
return not_found unless user_signed_in?
return not_found if oembed.nil?
url = ActivityPub::TagManager.instance.url_for(@status)
oembed = FetchOEmbedService.new.call(url)
return not_found if oembed.nil?
begin
oembed[:html] = Sanitize.fragment(oembed[:html], Sanitize::Config::MASTODON_OEMBED)
rescue ArgumentError
return not_found
begin
oembed[:html] = Sanitize.fragment(oembed[:html], Sanitize::Config::MASTODON_OEMBED)
rescue ArgumentError
return not_found
end
render json: oembed
end
end
render json: oembed
def set_status
@status = Status.find(params[:id])
authorize @status, :show?
rescue Mastodon::NotPermittedError
not_found
end
end

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

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

@ -11,7 +11,6 @@ class Auth::RegistrationsController < Devise::RegistrationsController
before_action :set_pack
before_action :set_sessions, only: [:edit, :update]
before_action :set_strikes, only: [:edit, :update]
before_action :set_instance_presenter, only: [:new, :create, :update]
before_action :set_body_classes, only: [:new, :create, :edit, :update]
before_action :require_not_suspended!, only: [:update]
before_action :set_cache_headers, only: [:edit, :update]
@ -112,10 +111,6 @@ class Auth::RegistrationsController < Devise::RegistrationsController
use_pack %w(edit update).include?(action_name) ? 'admin' : 'auth'
end
def set_instance_presenter
@instance_presenter = InstancePresenter.new
end
def set_body_classes
@body_classes = %w(edit update).include?(action_name) ? 'admin' : 'lighter'
end

@ -12,7 +12,6 @@ class Auth::SessionsController < Devise::SessionsController
include TwoFactorAuthenticationConcern
before_action :set_instance_presenter, only: [:new]
before_action :set_body_classes
content_security_policy only: :new do |p|
@ -104,16 +103,12 @@ class Auth::SessionsController < Devise::SessionsController
use_pack 'auth'
end
def set_instance_presenter
@instance_presenter = InstancePresenter.new
end
def set_body_classes
@body_classes = 'lighter'
end
def home_paths(resource)
paths = [about_path]
paths = [about_path, '/explore']
paths << short_account_path(username: resource.account) if single_user_mode? && resource.is_a?(User)
@ -129,7 +124,7 @@ class Auth::SessionsController < Devise::SessionsController
redirect_to new_user_session_path, alert: I18n.t('devise.failure.timeout')
end
def set_attempt_session(user)
def register_attempt_in_session(user)
session[:attempt_user_id] = user.id
session[:attempt_user_updated_at] = user.updated_at.to_s
end

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

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

@ -9,17 +9,11 @@ module AccountControllerConcern
FOLLOW_PER_PAGE = 12
included do
before_action :set_instance_presenter
after_action :set_link_headers, if: -> { request.format.nil? || request.format == :html }
end
private
def set_instance_presenter
@instance_presenter = InstancePresenter.new
end
def set_link_headers
response.headers['Link'] = LinkHeader.new(
[

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

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

Loading…
Cancel
Save