Compare commits

...

867 Commits

Author SHA1 Message Date
Thor bedb91a2bd Merge remote-tracking branch 'upstream/main' into main 10 months ago
Claire c25ba31e95
Merge pull request #2274 from ClearlyClaire/glitch-soc/merge-upstream 10 months ago
Claire ff7aae3037 Merge branch 'main' into glitch-soc/merge-upstream 10 months ago
Claire 5e1752ce3f
Bump version to v4.1.3 (#25757) 10 months ago
Claire 610731b03d
Merge pull request from GHSA-55j9-c3mp-6fcq 10 months ago
Claire c5929798bf
Merge pull request from GHSA-9pxv-6qvf-pjwc 10 months ago
Claire dc8f1fbd97
Merge pull request from GHSA-9928-3cp5-93fm 10 months ago
Claire 6d8e0fae3e
Merge pull request from GHSA-ccm4-vgcc-73hp 10 months ago
Claire fed9cbfd2b
Add hardened headers to user-uploaded files (#25756) 10 months ago
Claire 30ad9d976b
Merge pull request #2272 from ClearlyClaire/glitch-soc/merge-upstream 10 months ago
Eugen Rochko c0fa85b8dd [Glitch] Fix regression of icon button colors in web UI 10 months ago
Trevor Wolf 4719d88117 [Glitch] Change button colors to increase hover/focus contrast and consistency 10 months ago
Eugen Rochko a117c953d0 [Glitch] Add button to see results for polls in web UI 10 months ago
Eugen Rochko b3f209370b [Glitch] Add canonical link tags in web UI 10 months ago
mogaminsk c6246807f5 [Glitch] Fix local live feeds does not expand 10 months ago
forsamori ac74374311 [Glitch] Add at-symbol prepended to mention span title 10 months ago
Eugen Rochko 0a5271629c [Glitch] Change labels of live feeds tabs in web UI 10 months ago
Claire 5de49e74d4 Merge branch 'main' into glitch-soc/merge-upstream 10 months ago
Eugen Rochko 000b835803
Add canonical link tags in web UI (#25715) 10 months ago
Eugen Rochko b7910bc751
Add button to see results for polls in web UI (#25726) 10 months ago
Claire eb2417ce99
Fix OAuth apps page crashing when listing apps with certain admin API scopes (#25713) 10 months ago
Claire 4658263b4a
Fix re-activated accounts being deleted by AccountDeletionWorker (#25711) 10 months ago
Trevor Wolf 182fd93a07
fix read more button overlapping thread line bug (#25706) 10 months ago
Claire 12fa24a885
Fix forgotten unconfirmed_email migration file (#25702) 10 months ago
mogaminsk 6268188543
Fix local live feeds does not expand (#25694) 10 months ago
forsamori d9a5c1acfa
Add at-symbol prepended to mention span title (#25684) 10 months ago
Eugen Rochko 54a10523e2
Change labels of live feeds tabs in web UI (#25683) 10 months ago
Daniel M Brasil 383c00819c
Fix `/api/v2/search` not working with following query param (#25681) 10 months ago
Eugen Rochko 69e124e2ed
Fix regression of icon button colors in web UI (#25679) 10 months ago
Plastikmensch ed15893eed
Add regex filter back to firehose (#2266) 10 months ago
Trevor Wolf 54cb679c19
Change button colors to increase hover/focus contrast and consistency (#25677) 10 months ago
Plastikmensch b422b5eebd
Fix showing local only toots in "All" (#2265) 10 months ago
Claire ed567c9de6
Merge pull request #2263 from ClearlyClaire/glitch-soc/merge-upstream 10 months ago
Claire 9f3c3f5209 Show local-only posts in “All” by default, and add back option to toggle it 10 months ago
Claire e6a8faae81
Add users index on unconfirmed_email (#25672) 10 months ago
Claire 933ba1a3eb
Add superapp index on `oauth_applications` (#25670) 10 months ago
Claire 180f0e6715
Fix inefficient query when requesting a new confirmation email from a logged-in account (#25669) 10 months ago
mogaminsk 587ddc2c7f [Glitch] Prevent duplicate concurrent calls of `/api/*/instance` in web UI 10 months ago
Eugen Rochko c49e339c89 [Glitch] Change dropdown icon above compose form from ellipsis to bars in web UI 10 months ago
Claire 7cc2c1be29 [Glitch] Change local and federated timelines to be in a single firehose column 10 months ago
Renaud Chaput eb1cb8224a [Glitch] Use an Immutable Record as the root state 10 months ago
Claire 2ba4773ebe [Glitch] Fix onboarding prompt being displayed because of disconnection gaps 10 months ago
Claire b75aa6b819 [Glitch] Remove the search button from UI header when logged out 10 months ago
Claire 44e98a2740 Merge branch 'main' into glitch-soc/merge-upstream 10 months ago
Eugen Rochko ba06a2f104
Revert "Rails 7 update" (#25667) 10 months ago
mogaminsk 5b46345459
Prevent duplicate concurrent calls of `/api/*/instance` in web UI (#25663) 10 months ago
Eugen Rochko 0512537eb6
Change dropdown icon above compose form from ellipsis to bars in web UI (#25661) 10 months ago
Matt Jankowski 50c2a03695
Rails 7 update (#24241) 10 months ago
Daniel M Brasil 4fe2d7cb59
Fix HTTP 500 in `/api/v1/emails/check_confirmation` (#25595) 10 months ago
Claire cea9db5a0b
Change local and federated timelines to be in a single firehose column (#25641) 10 months ago
Matt Jankowski 0139b1c8e1
Update uri to version 0.12.2 (CVE fix) (#25657) 10 months ago
Vivianne 155fc459e3
Fixing an issue with a missing argument (#2261) 10 months ago
Matt Jankowski f8bd581126
Remove unused routes (#25578) 10 months ago
Matt Jankowski 683ba5ecb1
Fix rails `rewhere` deprecation warning in directories api controller (#25625) 10 months ago
Matt Jankowski c47cdf6e17
Add index to backups on `user_id` column (#25647) 10 months ago
Renaud Chaput 78ba12f0bf
Use an Immutable Record as the root state (#25584) 10 months ago
Claire 9934949fc4
Fix onboarding prompt being displayed because of disconnection gaps (#25617) 10 months ago
Eugen Rochko 8bfbd19d2b Update Crowdin configuration file 10 months ago
Renaud Chaput c4a8c332b2
Remove `pkg-config` gem dependency (#25615) 10 months ago
Claire a209d1e683
Fix ResolveURLService not resolving local URLs for remote content (#25637) 10 months ago
jsgoldstein 4581a528f7
Change account search to match by text when opted-in (#25599) 10 months ago
Claire 285a691936
Remove the search button from UI header when logged out (#25631) 11 months ago
Claire 8b4df95dbe
Merge pull request #2258 from ClearlyClaire/glitch-soc/merge-upstream 11 months ago
Renaud Chaput c43cfd2406 [Glitch] Improve dismissable banner buttons when they dont fit on 1 line 11 months ago
Eugen Rochko 4faa4eb3c4 [Glitch] Fix onboarding prompt flashing while home feed is loading in web UI 11 months ago
Eugen Rochko 2f996375e5 [Glitch] Fix search not being easily findable on smaller screens in web UI 11 months ago
Claire 80a5c16ae1 Merge branch 'main' into glitch-soc/merge-upstream 11 months ago
Claire c7c6f02ae6
Fix suspending an already-limited domain (#25603) 11 months ago
renovate[bot] ceca93d0d1
Update dependency glob to v10.3.0 (#25608) 11 months ago
renovate[bot] a9ba8263a0
Update mcr.microsoft.com/devcontainers/ruby Docker tag to v1 (#25613) 11 months ago
renovate[bot] dbd37f129d
Update dependency pg to v8.11.1 (#25604) 11 months ago
renovate[bot] b7f6280ef4
Update dependency pg-connection-string to v2.6.1 (#25605) 11 months ago
renovate[bot] a90190f813
Update dependency react-textarea-autosize to v8.5.0 (#25610) 11 months ago
renovate[bot] ccaa676452
Update dependency sass to v1.63.6 (#25607) 11 months ago
renovate[bot] d9b07b6a11
Update dependency rails to v6.1.7.4 (#25606) 11 months ago
Claire 0ccf6c0eb7
Fix batch attachment deletion leaving empty directories (#25587) 11 months ago
renovate[bot] 9caa0475f8
Update dependency react-redux to v8.1.1 (#25432) 11 months ago
S.H 7a25af64dd
Remove media attachment only when file was exist (#25586) 11 months ago
Eugen Rochko bb4756c823
Change files to be deleted in batches instead of one-by-one (#23302) 11 months ago
Renaud Chaput ae30a60b1f
Improve dismissable banner buttons when they dont fit on 1 line (#25580) 11 months ago
Claire ed96e28c9e
Fix compose form not being shown when clicking “Make your first post” on mobile (#25581) 11 months ago
Eugen Rochko 7b024baf50
Change header backgrounds to use fewer different colors in web UI (#25577) 11 months ago
Eugen Rochko 65aa04647a
Fix onboarding prompt flashing while home feed is loading in web UI (#25579) 11 months ago
Eugen Rochko 2b78c07ef1
Fix search not being easily findable on smaller screens in web UI (#25576) 11 months ago
Claire b052a7ed95
Merge pull request #2256 from ClearlyClaire/glitch-soc/merge-upstream 11 months ago
Claire 5def74a436 [Glitch] Remove unique accounts condition from Home onboarding prompt 11 months ago
Eugen Rochko 6fb34258a4 [Glitch] Add onboarding prompt when home feed too slow in web UI 11 months ago
Claire 7d160d2272 [Glitch] Fix j/k keyboard shortcuts on some status lists 11 months ago
mogaminsk 222713a768 [Glitch] Fix custom signup URL may not loaded 11 months ago
Ian 6fe345c383 [Glitch] Change emoji picker icon 11 months ago
たいち ひ c71fc42f4e [Glitch] Rewrite `<AutosuggestHashtag />` as FC and TS 11 months ago
Claire 178e151019 Merge commit '55e7c08a83547424024bac311d5459cb82cf6dae' into glitch-soc/merge-upstream 11 months ago
Claire 55e7c08a83
Fix verified badge in account lists potentially including rel="me" links (#25561) 11 months ago
Eugen Rochko a985d587e1
Change labels and styles on the onboarding screen in web UI (#25559) 11 months ago
Claire 0842a68532
Remove unique accounts condition from Home onboarding prompt (#25556) 11 months ago
Eugen Rochko 00ec43914a
Add onboarding prompt when home feed too slow in web UI (#25267) 11 months ago
Claire 1d622c8033
Add POST /api/v1/conversations/:id/unread (#25509) 11 months ago
Matt Jankowski c9cd634184
Use default `bootsnap/setup` in boot.rb (#25502) 11 months ago
Claire a8c1c8bd37
Fix j/k keyboard shortcuts on some status lists (#25554) 11 months ago
Claire a5b6f6da80
Change /api/v1/statuses/:id/history to always return at least one item (#25510) 11 months ago
Matt Jankowski 05f9e39b32
Fix `RSpec/VerifiedDoubles` cop (#25469) 11 months ago
Matt Jankowski 38433ccd0b
Reduce `Admin::Reports::Actions` spec db activity (#25465) 11 months ago
Claire 602c458ab6
Add finer permission requirements for managing webhooks (#25463) 11 months ago
Matt Jankowski 63d15d5330
Speed-up on `StatusesController` spec (#25549) 11 months ago
mogaminsk 8d2c26834f
Fix custom signup URL may not loaded (#25531) 11 months ago
Matt Jankowski 0b39b9abee
Speed-up on `BackupService` spec (#25527) 11 months ago
Daniel M Brasil 6ac271c2a0
Migrate to request specs in `/api/v1/suggestions` (#25540) 11 months ago
Ian 69db507924
Change emoji picker icon (#25479) 11 months ago
Claire 37a9c2258a
Add per-test timeouts to AutoStatusesCleanupScheduler tests (#24841) 11 months ago
Claire ebfeaebedb
Fix /api/v1/conversations sometimes returning empty accounts (#25499) 11 months ago
Claire ec91ea4457
Fix missing validation on `default_privacy` setting (#25513) 11 months ago
Daniel M Brasil e53eb38a8d
Migrate to request specs in `/api/v1/admin/account_actions` (#25514) 11 months ago
Claire fd23f50243
Fix wrong view being displayed when a webhook fails validation (#25464) 11 months ago
Claire c78280a8ce
Add translate="no" to outgoing mentions and links (#25524) 11 months ago
Emelia Smith 3a91603b15
Prevent UserCleanupScheduler from overwhelming streaming (#25519) 11 months ago
Plastikmensch eba3411bfa
Re-allow title attribute in <abbr> (#2254) 11 months ago
Claire dd07393e75
Fix user settings not getting validated (#25508) 11 months ago
たいち ひ 804488d38e
Rewrite `<AutosuggestHashtag />` as FC and TS (#25481) 11 months ago
Matt Jankowski e1c9d52e91
Reduce `sleep` time in request pool spec (#25470) 11 months ago
renovate[bot] cec4f1d506
Update dependency dotenv to v16.2.0 (#25506) 11 months ago
Matt Jankowski 3a65fb044f
Add coverage for `UserMailer` methods (#25484) 11 months ago
Matt Jankowski e835198b26
Combine assertions in api/v1/notifications spec (#25486) 11 months ago
Matt Jankowski 155ec185b2
Remove unused `picture_hint` helper method (#25485) 11 months ago
renovate[bot] a0d7ae257d
Update dependency aws-sdk-s3 to v1.126.0 (#25480) 11 months ago
Daniel M Brasil b9bc9d0bda
Fix incorrect pagination headers in `/api/v2/admin/accounts` (#25477) 11 months ago
Daniel M Brasil 0a0a1f1495
Migrate to request specs in `/api/v1/tags` (#25439) 11 months ago
Claire 4ddb736d95
Merge pull request #2252 from ClearlyClaire/glitch-soc/merge-upstream 11 months ago
Claire dc68306b8e Merge branch 'main' into glitch-soc/merge-upstream 11 months ago
Claire f3c2035fce
Merge pull request #2251 from ClearlyClaire/glitch-soc/merge-upstream 11 months ago
Claire 64f7a11658
Fix cross-origin loading of locales (#25498) 11 months ago
Claire 3b04e39534 [Glitch] Fix non-interactive upload container being given a `button` role and tabIndex 11 months ago
Claire e5978184a6 Fix glitch-soc-only test being broken by refactor of the surrounding tests 11 months ago
Claire 6c99479ef4 Merge commit '9e245d147bcb2c72cc552ff8c276a1c34e2f686d' into glitch-soc/merge-upstream 11 months ago
Eugen Rochko d795c2c70c [Glitch] Fix CAPTCHA page not following design pattern of sign-up flow 11 months ago
たいち ひ b1b95ddd1f [Glitch] Rewrite `emoji_mart_data_light` as TS 11 months ago
alfe 9bf63257fb [Glitch] Rewrite `<LoadingIndicator/>` as FC and TS (#25364) 11 months ago
Renaud Chaput 0a212cfa7f [Glitch] Add missing report category translation 11 months ago
alfe cdec45eca9 [Glitch] Rewrite <LoadPending /> as FC and TS 11 months ago
Eugen Rochko f815bd5fd9 [Glitch] Change "bot" label to "automated" 11 months ago
Claire 65cbcce997 Merge commit '39110d1d0af5e3d9cf452ae47496a52797249fd0' into glitch-soc/merge-upstream 11 months ago
renovate[bot] 9e245d147b
Update dependency aws-sdk-s3 to v1.125.0 (#25458) 11 months ago
Claire c9d06d10d4
Fix non-interactive upload container being given a `button` role and tabIndex (#25462) 11 months ago
Matt Jankowski b276b3bb83
Remove Ruby GC config from spec helper (#25455) 11 months ago
renovate[bot] e686a54064
Update dependency better_errors to v2.10.1 (#25445) 11 months ago
Daniel M Brasil b10c05e702
Migrate to request specs in `/api/v1/lists` (#25443) 11 months ago
renovate[bot] 8b2048d0c8
Lock file maintenance (#25434) 11 months ago
renovate[bot] a6d7abb29d
Update dependency intl-messageformat to v10.5.0 (#25431) 11 months ago
renovate[bot] 36566e9245
Update dependency core-js to v3.31.0 (#25430) 11 months ago
renovate[bot] 478687fc49
Update libretranslate/libretranslate Docker tag to v1.3.11 (#25428) 11 months ago
renovate[bot] 841e35e291
Update devDependencies (non-major) (#25427) 11 months ago
Matt Jankowski 4c5aa0e470
Update rubocop-rspec to version 2.22.0, fix `RSpec/IndexedLet` cop (#24698) 11 months ago
Daniel M Brasil 24015ef0cc
Migrate to request specs in `/api/v1/domain_blocks` (#25414) 11 months ago
Daniel M Brasil 87aff5aad8
Migrate to request specs in `/api/v1/follow_requests` (#25411) 11 months ago
Daniel M Brasil d9c6f70cc6
Fix `ArgumentError` in `/api/v1/admin/accounts/:id/action` (#25386) 11 months ago
renovate[bot] b9e8d2b352
Update dependency sass to v1.63.3 (#25422) 11 months ago
renovate[bot] 95b84874f3
Update dependency redis-namespace to v1.11.0 (#25421) 11 months ago
renovate[bot] 360759df7b
Update formatjs monorepo (#25418) 11 months ago
renovate[bot] f10f4f2359
Update dependency glob to v10.2.7 (#25417) 11 months ago
Matt Jankowski ae9f5379d1
Reduce factory data created in spec/models/trends/statuses spec (#25410) 11 months ago
Matt Jankowski 31d5bc89d1
Speed improvement for `AccountsStatusesCleanupScheduler` spec (#25406) 11 months ago
Daniel M Brasil a5b62e56d0
Migrate to request specs in `/api/v1/apps/verify_credentials` (#25404) 11 months ago
Daniel M Brasil a6407aa662
Migrate to request specs in `/api/v1/apps` (#25401) 11 months ago
Matt Jankowski 4c5f62de99
Extract shared examples from api specs (#25387) 11 months ago
renovate[bot] ae2790d84f
Update babel monorepo to v7.22.5 (#25405) 11 months ago
renovate[bot] a99201c735
Update dependency capybara to v3.39.2 (#25407) 11 months ago
renovate[bot] 780d54e5c3
Update dependency aws-sdk-s3 to v1.124.0 (#25297) 11 months ago
Eugen Rochko f20698000f
Fix always redirecting to onboarding in web UI (#25396) 11 months ago
Claire ec59166844
Fix ArgumentError when loading newer Private Mentions (#25399) 11 months ago
Eugen Rochko bca649ba79
Change edit profile page (#25413) 11 months ago
Eugen Rochko 39110d1d0a
Fix CAPTCHA page not following design pattern of sign-up flow (#25395) 11 months ago
たいち ひ 3b5e302f7f
Rewrite `emoji_mart_data_light` as TS (#25138) 11 months ago
alfe a86886b1fd
Rewrite `<LoadingIndicator/>` as FC and TS (#25364) 11 months ago
Nick Schonning 72590e601a
Update Rubocop 1.52.1 (#25376) 11 months ago
Renaud Chaput 1cb4514d0e
Add missing report category translation (#25400) 11 months ago
Matt Jankowski 10746af82f
Remove unused shared examples for scoped settings (#25389) 11 months ago
Matt Jankowski 25c66fa640
Enable paperclip for account attachment examples (#25381) 11 months ago
Eugen Rochko 6637ef7852
Add unsubscribe link to e-mails (#25378) 11 months ago
Plastikmensch fefdc3244c
[Glitch] Change "direct message" nomenclature to "private mention" in web UI (#2158) 11 months ago
Claire af97a6ac5a
Merge pull request #2246 from ClearlyClaire/glitch-soc/merge-upstream 11 months ago
alfe dfaf59d99a
Rewrite <LoadPending /> as FC and TS (#25363) 11 months ago
Eugen Rochko 432a5d2d4b
Change "bot" label to "automated" (#25356) 11 months ago
Claire 20718a8b59 Fix some translation strings inconsistencies 11 months ago
Claire 42a0898f16 Merge commit '3a2a15c6ea4d4603469861ed9be09da12a122e45' into glitch-soc/merge-upstream 11 months ago
Matt Jankowski 62c996b52d
Reduce `RSpec/MultipleExpectations` cop max to 8 (#25313) 11 months ago
Matt Jankowski b5675e265e
Add coverage for `CLI::Feeds` command (#25319) 11 months ago
Matt Jankowski 07933db788
Add coverage for `CLI::Cache` command (#25238) 11 months ago
Emelia Smith 215081240f
Add logging of websocket send errors (#25280) 11 months ago
fusagiko / takayamaki b19a695608
migrate test for `GET /api/v1/accounts/{account_id}` to request spec (#25322) 11 months ago
Daniel M Brasil 99216e34e5
Migrate to request specs in `/api/v1/admin/canonical_email_blocks` (#25330) 11 months ago
Daniel M Brasil b4e19f9610
Migrate to request specs in `/api/v1/admin/ip_blocks` (#25331) 11 months ago
Daniel M Brasil 4301d8cbb3
Migrate to request specs in `/api/v1/admin/domain_allows` (#25333) 11 months ago
Daniel M Brasil 841c220c40
Migrate to request specs in `/api/v1/admin/domain_blocks` (#25335) 11 months ago
Daniel M Brasil 0e200d4e2f
Migrate to request specs in `/api/v1/admin/reports` (#25355) 11 months ago
Matt Jankowski 3a2a15c6ea
Use `build` where possible in fabricators (#25360) 11 months ago
Matt Jankowski c94bb9ba9a
Disable paperclip processing in specs (#25359) 11 months ago
Emelia Smith c81f59583c
Fix logging of messages that are binary before closing their connection (#25361) 11 months ago
Claire 34efd1a24c Switch to using a `common` runtime chunk rather than `locales` 11 months ago
Claire 8c26d49cbd Merge commit '16dd3f08c1e5396d5f9ff3f13417901bc4e4b8b9' into glitch-soc/merge-upstream 11 months ago
Eugen Rochko fb0d2de8fe [Glitch] Change design of dropdowns in web UI 11 months ago
alfe 83ae40e192 [Glitch] Rewrite `<LoadMore />` as FC and TS 11 months ago
Claire c48ec9cb8c Merge commit 'b85c387c5c0527b0ad31c27031a09d361826c5fc' into glitch-soc/merge-upstream 11 months ago
Claire 88c5ad3136 [Glitch] Add data-nosnippet so Google doesn't use trending posts in snippets for / 11 months ago
S.H 5a961f84cf [Glitch] Fix not shown announcements in hometimeline. 11 months ago
Claire 475185a2ee [Glitch] Fix design issues with recent react-intl upgrade 11 months ago
Darius Kazemi a8a30f1298 [Glitch] Add exclusive lists 11 months ago
Claire bf23afa059 [Glitch] Add card with who invited you to join when displaying rules on sign-up 11 months ago
Jed Fox 753385d3e0 [Glitch] Fix spacing of middle dots in the detailed status meta section 11 months ago
Claire d8b0a732aa Merge commit '1483a3ddfe74e4fb81d87447a1781943eab86c60' into glitch-soc/merge-upstream 11 months ago
Renaud Chaput 9e66c07be7 [Glitch] Fix `/share` and cleanup and reorganize frontend locale loading 11 months ago
Claire 734e186717 Merge commit 'b0780cfeeda641645ea65da257a72ec507e71647' into glitch-soc/merge-upstream 11 months ago
S.H a4d7a17089 [Glitch] Fix using Date.now() instead of intl.now() 11 months ago
Claire aa57f7e3e2 Merge commit '5fae2de454806730742b7be7435ae1c4fb97cf3c' into glitch-soc/merge-upstream 11 months ago
Claire 9af04d5a46 [Glitch] Add a confirmation screen when suspending a domain 11 months ago
Claire b27a9a5903 Merge commit 'e9385e93e9b4601c87d1f5d6b8ddfd815f7aedcb' into glitch-soc/merge-upstream 11 months ago
Renaud Chaput 8188522bde [Glitch] Fix prev/next buttons color in media viewer 11 months ago
Christian Schmidt 7e25fd9b0c [Glitch] Translate CW, poll options and media descriptions 11 months ago
Claire 93c714417f Merge commit 'b922ad7a1b4bc8d968d0df2c7f307d4fec53435d' into glitch-soc/merge-upstream 11 months ago
Renaud Chaput 9e133e2527 [Glitch] Upgrade react-intl 11 months ago
Claire 85722a918d Merge commit '44cd88adc4e2f4028dcc2b08b98368f0dc90cee4' into glitch-soc/merge-upstream 11 months ago
Eugen Rochko 4c9406bdb0
Add time zone preference (#25342) 11 months ago
Emelia Smith 16dd3f08c1
Fix performance of streaming by parsing message JSON once (#25278) 11 months ago
Renaud Chaput e34142782f
Add Ruby & Bundler versions to Gemfile.lock (#25317) 11 months ago
Matt Jankowski 75e299f440
Remove unused `redis_info` method Admin::Dashboard (#25345) 11 months ago
Daniel M Brasil 4aff1d2974
Migrate to request specs in `/api/v1/admin/email_domain_blocks` (#25337) 11 months ago
jsgoldstein 18f092d927
Fix translations for changing theme (#25340) 11 months ago
Matt Jankowski b85c387c5c
Remove reference to deleted statsd config file (#25336) 11 months ago
renovate[bot] db047e323b
Update dependency webpack-bundle-analyzer to v4.9.0 (#25327) 11 months ago
renovate[bot] 5265655549
Update dependency dotenv to v16.1.3 (#25302) 11 months ago
renovate[bot] 7e22287caa
Update dependency sass-loader to v10.4.1 (#25315) 11 months ago
Claire f378f10404
Fix compatibility of recent migration with PostgreSQL 10 (#25324) 11 months ago
Eugen Rochko 67d17ce194
Add `legal` as report category (#23941) 11 months ago
Eugen Rochko e4fd9503ec
Change design of dropdowns in web UI (#25107) 11 months ago
Renaud Chaput ed04c277b4
Configure RenovateBot to add proper language labels (#25316) 11 months ago
Matt Jankowski 6c0e3f490a
Fix RSpec/MissingExampleGroupArgument cop (#25310) 11 months ago
Matt Jankowski b74c3cd708
Fix `RSpec/DescribedClass` cop missed items (#25309) 11 months ago
Nick Schonning c66250abf1
Autofix Rubocop Regex Style rules (#23690) 11 months ago
renovate[bot] 9a653899e9
Update dependency redis to v4.6.7 (#25300) 11 months ago
Matt Jankowski c42591356d
Fix `RSpec/DescribedClass` cop (#25104) 11 months ago
Matt Jankowski 1e243e2df7
Misc spec coverage for `Admin::` area controllers (#25282) 11 months ago
Daniel M Brasil eb6f8181e1
Add test coverage for `Mastodon::CLI::Accounts#reset_relationships` (#25194) 11 months ago
Matt Jankowski b22bfae4f9
Add coverage for `DomainBlock#public_domain` method (#25283) 11 months ago
alfe fb5bf5cbf8
Rewrite `<LoadMore />` as FC and TS (#25259) 11 months ago
renovate[bot] 50a8f5b8a7
Update dependency react-redux to v8.0.7 (#25298) 11 months ago
Claire 6833732852
Fix autocomplete suggestions being cut off in compose form (#25275) 11 months ago
Eugen Rochko 4eda233e09
Add webhook templating (#23289) 11 months ago
renovate[bot] a80efb449e
Configure Renovate (#25255) 11 months ago
Eugen Rochko 0ddc895282
Change follow button in account row to be more obvious in web UI (#24956) 11 months ago
Claire d907e79140
Merge pull request #2242 from ClearlyClaire/glitch-soc/merge-upstream 11 months ago
Matt Jankowski af135bddd0
Update `Admin::Metrics::Measure` classes for Rails 7 (#25236) 11 months ago
Claire e428670e61
Fix CSP headers when S3_ALIAS_HOST includes a path component (#25273) 11 months ago
Claire 1483a3ddfe
Add data-nosnippet so Google doesn't use trending posts in snippets for / (#25279) 11 months ago
Matt Jankowski 3b21c13dcc
Rails 7 compatibility fix for `Admin::Metrics::Dimension` classes (#25277) 11 months ago
Daniel M Brasil 70cd2d6000
Add test coverage for `Mastodon::CLI::Accounts#cull` (#25250) 11 months ago
S.H a6c898f501
Fix not shown announcements in hometimeline. (#25251) 11 months ago
Nick Schonning a8310b15ed
Update kt-paperclip 7.2 from sha (#25274) 11 months ago
dependabot[bot] 7fc1297c3e [Glitch] Bump eslint-plugin-jsdoc from 44.2.5 to 45.0.0 11 months ago
Claire 5e876c2901 [Glitch] Fix `null` signUp URL in various places 11 months ago
y.takahashi 4993b6e800 [Glitch] Handle Surrogate Pairs in truncate() 11 months ago
Claire c22fc2fa80 Merge commit '00c222377db0e305ac3f4a15bf1c18eb89c1f45f' into glitch-soc/merge-upstream 11 months ago
Claire c2c396157f
Fix design issues with recent react-intl upgrade (#25272) 11 months ago
Darius Kazemi bacb674921
Add exclusive lists (#22048) 11 months ago
Matt Jankowski 0daf78f903
Add `allow_other_host: true` to backups controller (#25266) 11 months ago
Matt Jankowski 5c87c66504
Add coverage for CLI::CanonicalEmailBlocks command (#25239) 11 months ago
Daniel M Brasil 03a707f6a6
Add test coverage for `Mastodon::CLI::Accounts#merge` (#25199) 11 months ago
Matt Jankowski e49819142f
Remove unmaintained `nsa` gem (#25265) 11 months ago
Eugen Rochko 4a5464f360
Change "Follow 7 people" to "Find at least 7 people to follow" in web UI (#24954) 11 months ago
Claire ee771f5bad
Fix closeModal invocation (#2239) 11 months ago
Nick Schonning aea67d448b
Cleanup old translationRunner (#25241) 11 months ago
Jed Fox 768b00c4d0
Consistently use middle dot (·) instead of bullet (•) to separate items (#25248) 11 months ago
Claire 0766c9a631
Add card with who invited you to join when displaying rules on sign-up (#23475) 11 months ago
Claire 94329f28e1
Change wording of “Content cache retention period” setting to highlight destructive implications (#23261) 11 months ago
Jed Fox acc419b81b
Fix spacing of middle dots in the detailed status meta section (#25247) 11 months ago
Renaud Chaput b0780cfeed
Fix `/share` and cleanup and reorganize frontend locale loading (#25240) 11 months ago
Claire 5fae2de454
Fix overflow behavior of account rows (#25131) 11 months ago
Claire 8884d1ece0
Add support for importing lists (#25203) 11 months ago
dependabot[bot] d91607feee
Bump sidekiq-scheduler from 5.0.2 to 5.0.3 (#25228) 11 months ago
Matt Jankowski cd4f0feab8
Extract verify options method in search cli (#25121) 11 months ago
Nick Schonning b489c200a6
Update yarn.lock for audit issues (#25152) 11 months ago
Matt Jankowski 35c1c3e57a
Add CLI area progress bar helper (#25208) 11 months ago
Daniel M Brasil 2a353200ad
Add test coverage for `Mastodon::CLI::Accounts#rotate` (#25212) 11 months ago
dependabot[bot] 3182ecc24c
Bump puma from 6.2.2 to 6.3.0 (#25229) 11 months ago
S.H b3f9a0da52
Fix using Date.now() instead of intl.now() (#25234) 11 months ago
Renaud Chaput 942d850b0a
Allow carets in URL search params (#25216) 11 months ago
Claire dac460f43f
Bump workbox from 6.6.1 to 7.0.0 (#25232) 11 months ago
dependabot[bot] c15c8c7aa8
Bump rspec-rails from 6.0.2 to 6.0.3 (#25223) 11 months ago
Daniel M Brasil f906e21a4f
Add test coverage for `Mastodon::CLI::Accounts#refresh` (#25196) 11 months ago
Claire fe84f7e323
Add missing primary keys to `accounts_tags` and `statuses_tags` (#25210) 11 months ago
Matt Jankowski f84037ae2b
Remove unused #hash_to_object method in SettingsHelper (#25213) 11 months ago
dependabot[bot] e7e1b46ce8
Bump aws-sdk-s3 from 1.122.0 to 1.123.0 (#25230) 11 months ago
dependabot[bot] 5a50983654
Bump eslint-plugin-jsdoc from 45.0.0 to 46.1.0 (#25222) 11 months ago
dependabot[bot] b05bbd91d0
Bump @types/jest from 29.5.1 to 29.5.2 (#25220) 11 months ago
Claire e9385e93e9
Add a confirmation screen when suspending a domain (#25144) 11 months ago
Claire fca2dff2e2
Merge pull request #2237 from ClearlyClaire/glitch-soc/merge-upstream 11 months ago
Claire b922ad7a1b
Fix crash when S3_ALIAS_HOST or S3_CLOUDFRONT_HOST have a path component (#25018) 11 months ago
Claire 2b45fecde1
Fix multiple N+1s in ConversationsController (#25134) 11 months ago
Renaud Chaput 675672feb6
Fix prev/next buttons color in media viewer (#25231) 11 months ago
Nick Schonning d39bce963f
Add fix/lint helper dev targets (#23561) 11 months ago
Christian Schmidt 69057467cb
Translate CW, poll options and media descriptions (#24175) 11 months ago
Renaud Chaput 44cd88adc4
Upgrade react-intl (#24906) 11 months ago
Matt Jankowski 00c222377d
Remove unused Settings::Extend module (#25214) 11 months ago
Renaud Chaput b7d995cb00
Disable some metrics cops (#25215) 11 months ago
Matt Jankowski b0104e4c33
Silence output to stdout during cli specs (#25211) 11 months ago
Matt Jankowski dc26140d54
Use thor methods instead of tty prompt in maintenance cli (#25207) 11 months ago
Daniel M Brasil 3c41547f49
Add test coverage for `Mastodon::CLI::Accounts#backup` (#25163) 11 months ago
Matt Jankowski 8b1bfaed3e
Add specs for admin/webhooks CRUD actions (#25133) 11 months ago
Matt Jankowski 665bb237a8
Increase spec coverage for controllers - admin/ip_blocks, admin/relays, admin/rules (#25192) 11 months ago
dependabot[bot] 82f6d4c418
Bump @babel/core and @types/babel__core (#25183) 11 months ago
Claire b6519ab3f5
Fix inconsistent naming of Instance.by_domain_and_subdomain (#25159) 11 months ago
dependabot[bot] b86f3596ba
Bump @babel/plugin-transform-runtime from 7.21.4 to 7.22.4 (#25173) 11 months ago
dependabot[bot] e24adacea1
Bump @babel/preset-react from 7.18.6 to 7.22.3 (#25171) 11 months ago
dependabot[bot] e1d0343354
Bump @babel/runtime from 7.21.5 to 7.22.3 (#25170) 11 months ago
dependabot[bot] 0ed8164777
Bump @babel/preset-env from 7.21.5 to 7.22.4 (#25167) 11 months ago
Daniel M Brasil bf9a7ce8e8
Add test coverage for `Mastodon::CLI::Accounts#unfollow` (#25162) 11 months ago
Renaud Chaput 98e5e011aa
Upgrade Workbox to 6.6.0 (#25197) 11 months ago
dependabot[bot] 89d6341c80
Bump eslint-plugin-jsdoc from 44.2.5 to 45.0.0 (#25172) 11 months ago
Renaud Chaput c2ea0dc65f
Drop support for Node.js 14 (#25198) 11 months ago
Claire 14bb6bb29a
Fix `null` signUp URL in various places (#25190) 11 months ago
Matt Jankowski 1baf40077b
Fix FormatStringToken cop in CLI (#25122) 11 months ago
Daniel M Brasil dbc44be0ca
Add test coverage for `Mastodon::CLI::Accounts#follow` (#25161) 11 months ago
Matt Jankowski 80c7de9984
Fix Rails/WhereExists cop in CLI (#25123) 11 months ago
Matt Jankowski b7b96efd17
Extract helper method for error report in cli/accounts command (#25119) 11 months ago
Matt Jankowski 2cecb2dc9e
Increment index which was previously not used in maintenance CLI loop (#25118) 11 months ago
Matt Jankowski ec9bc7e604
Consistent usage of CLI `dry_run?` method (#25116) 11 months ago
Daniel M Brasil 3d253b9830
Add test coverage for `Mastodon::CLI::Accounts#approve` (#25160) 11 months ago
Daniel M Brasil bbbcdc083f
Add test coverage for `Mastodon::CLI::Accounts#delete` (#25146) 12 months ago
dependabot[bot] 44eaa979d4
Bump @types/react from 18.2.6 to 18.2.7 (#25166) 12 months ago
dependabot[bot] 4869384fa0
Bump jsdom from 22.0.0 to 22.1.0 (#25178) 12 months ago
dependabot[bot] 05c2d4dab2
Bump nokogiri from 1.14.3 to 1.15.2 (#25177) 12 months ago
dependabot[bot] 66c1ad8be9
Bump @types/react-motion from 0.0.33 to 0.0.34 (#25185) 12 months ago
dependabot[bot] 5f1a03fdba
Bump @typescript-eslint/parser from 5.59.7 to 5.59.8 (#25175) 12 months ago
dependabot[bot] 6d41cdcc6a
Bump @typescript-eslint/eslint-plugin from 5.59.7 to 5.59.8 (#25182) 12 months ago
dependabot[bot] 8ff2d61add
Bump @types/lodash from 4.14.194 to 4.14.195 (#25184) 12 months ago
dependabot[bot] b91aeeb94f
Bump sidekiq from 6.5.8 to 6.5.9 (#25176) 12 months ago
dependabot[bot] 37dc48c3a1
Bump postcss from 8.4.23 to 8.4.24 (#25169) 12 months ago
S.H 8c183a9831
Align argument type to keyword argument for private process method in FetchResourceService (#25189) 12 months ago
Daniel M Brasil bdc7548652
Add test coverage for `Mastodon::CLI::Accounts#modify` (#25145) 12 months ago
y.takahashi 64b960b6b3
Handle Surrogate Pairs in truncate() (#25148) 12 months ago
Daniel M Brasil 11b8336418
Add test coverage for `Mastodon::CLI::Accounts#create` (#25143) 12 months ago
Claire 5ed48e6878 Fix extraneous newlines 12 months ago
fusagiko / takayamaki 382b2a506a [Glitch] Rewrite actions/modal and reducers/modal with typescript 12 months ago
たいち ひ 6a592083f1 [Glitch] Fix export style of `<LoadGap />` based on `<Domain />` 12 months ago
Renaud Chaput 0009b4b574 [Glitch] Update inconsistent `defaultMessage` 12 months ago
Claire 0669783da8 Merge branch 'main' into glitch-soc/merge-upstream 12 months ago
Eugen Rochko e7dc375aab [Glitch] Change share action from being in action bar to being in dropdown in web UI 12 months ago
Renaud Chaput 7bec63e6e2 [Glitch] Fix `null` signUp URL handling from #25014 12 months ago
たいち ひ 017fbc7a74 [Glitch] Rewrite `<LoadGap />` as FC and TS 12 months ago
Claire 0e7466717f Merge commit '391c089d0db58d731765dba730a5e1f2fe8570a6' into glitch-soc/merge-upstream 12 months ago
Claire 7d7db8977b Fix import order with ESLint 12 months ago
Claire 1cd7f5ff17 Merge commit 'd27216dc4616d80659c0cc5d2a55394e0e1ae874' into glitch-soc/merge-upstream 12 months ago
Claire 9e5278ea7b [Glitch] Add support for custom sign-up URLs 12 months ago
Claire 8f380a33fc [Glitch] Fix video player offering to expand in a lightbox when it's in an iframe 12 months ago
Claire 6dbd44faea Merge commit 'b896b16cb3c8626fbee12a7eda7f882114b1a040' into glitch-soc/merge-upstream 12 months ago
Claire a0bc0619ca [Glitch] Use JSX syntax for Fragments 12 months ago
Claire 8278907ff7 Merge commit '5a16bd7bf4591feb852364da9b84407438c9b7d6' into glitch-soc/merge-upstream 12 months ago
Claire 6001f5ff36 [Glitch] Use the new JSX transform everywhere 12 months ago
Claire 9381f78166 Merge commit '8f66126b1010e0aaaa8b5f2a2f4ea8a28824e2b7' into glitch-soc/merge-upstream 12 months ago
Claire 0222df6047
Merge pull request #2236 from ClearlyClaire/glitch-soc/merge-upstream 12 months ago
Claire 1347ca6eb0 fixup! [Glitch] Upgrade to React 18 12 months ago
Matt Jankowski 55785b1603
Extract methods for user de-duping in maintenance CLI (#25117) 12 months ago
Matt Jankowski 0f2c16ac4b
Fix RSpec/NoExpectationExample cop (#25103) 12 months ago
Claire 61f6cd45e3 Fix glitch-soc-only tests being broken because of test refactor 12 months ago
たいち ひ 60c7e559d8 [Glitch] Rewrite `<TimelineHint />` as FC and TS 12 months ago
たいち ひ 6746e5d430 [Glitch] Rewrite `<Skeleton/>` as FC and TS 12 months ago
Claire 892b3c16f5 [Glitch] Allow scripts in post embed previews 12 months ago
Claire e2ab9d4dad Merge commit 'e387175fc9a3ebfd72ab45ebfe43ecfabef7b0c3' into glitch-soc/merge-upstream 12 months ago
Renaud Chaput 3b375ee395 [Glitch] Upgrade to React 18 12 months ago
Claire 45d7358100 Merge commit '8d6aea33260dedeacb3d22ac1a6d2f9cc3856a5e' into glitch-soc/merge-upstream 12 months ago
Claire 2e02d03524 Merge commit '4a22e72b9b1b8f14792efcc649b0db8bc27f0df2' into glitch-soc/merge-upstream 12 months ago
Claire ad1098970b Merge commit 'bec6a1cad4c509c53deb378c7ba984ba7e2de5a9' into glitch-soc/merge-upstream 12 months ago
Claire ba73f0ea3a [Glitch] Add polling and automatic redirection to `/start` on email confirmation 12 months ago
Claire f959f6cdbb Merge commit 'e60414792d86a99c0f401f3c1bab92ee37835d39' into glitch-soc/merge-upstream 12 months ago
Claire b0ec3bfcf9 [Glitch] Fix being unable to load past a full page of filtered posts in Home timeline 12 months ago
Christian Schmidt 4a1f4cb6a2 [Glitch] Fix UI crash in moderation interface when opening the media modal 12 months ago
Eugen Rochko d728222121 [Glitch] Change "Sign in" to "Login" 12 months ago
Claire 602ae7f2f6 [Glitch] Fix videos being improperly positioned on safari 12 months ago
Renaud Chaput e6a7cfd12e [Glitch] Add stricter ESLint rules for Typescript files 12 months ago
Nick Schonning e8fc445e14 [Glitch] Enable ESLint react/no-deprecated 12 months ago
Renaud Chaput 79c43b61a6 [Glitch] Disable RTK safety middlewares 12 months ago
fusagiko / takayamaki 7d9b7f28b8 [Glitch] Add type annotation for DisplayName component 12 months ago
fusagiko / takayamaki ea1f9b4223 [Glitch] Rename Image component to ServerHeroImage 12 months ago
Claire b735954971 Merge commit '2ce0b666a139726dc406e6c1887728553b947e59' into glitch-soc/merge-upstream 12 months ago
Claire 646cde71d1
Change captcha to be presented even for invited users (#2227) 12 months ago
Claire 69903b5830
Fix margins around small avatars (reply indicators, autocompletion suggestion) (#2231) 12 months ago
Claire cb6f445b90
Greatly simplify history management code (#2230) 12 months ago
Claire 2f2f74efd8
[Glitch] Update style of captcha confirmation page to match sign-up form (#2226) 12 months ago
fusagiko / takayamaki 38c6216082
Rewrite actions/modal and reducers/modal with typescript (#24833) 12 months ago
たいち ひ 4197b5e4c8
Fix export style of `<LoadGap />` based on `<Domain />` (#25128) 12 months ago
Claire 1d588d58f1
Improve various queries against account domains (#25126) 12 months ago
Renaud Chaput e58c36d308
Update inconsistent `defaultMessage` (#25114) 12 months ago
dependabot[bot] 391c089d0d
Bump eslint from 8.40.0 to 8.41.0 (#25081) 12 months ago
Matt Jankowski 384345b0de
Add CLI Base class for command line code (#25106) 12 months ago
Matt Jankowski d2e5430d4a
Fix RSpec/ExpectChange cop (#25101) 12 months ago
Eugen Rochko 1caa5ff39e
Change share action from being in action bar to being in dropdown in web UI (#25105) 12 months ago
dependabot[bot] f7d93f95e1
Bump capistrano from 3.17.2 to 3.17.3 (#25113) 12 months ago
dependabot[bot] 2e3b1ef13e
Bump eslint-plugin-jsdoc from 44.2.4 to 44.2.5 (#25112) 12 months ago
dependabot[bot] ac98e9fdbc
Bump fastimage from 2.2.6 to 2.2.7 (#25111) 12 months ago
Renaud Chaput 342daeb389
Update `react-redux` (#25110) 12 months ago
Renaud Chaput 40b948a1fb
Fix `null` signUp URL handling from #25014 (#25108) 12 months ago
たいち ひ 7336f3648b
Rewrite `<LoadGap />` as FC and TS (#25042) 12 months ago
Renaud Chaput d27216dc46
Enforce import order with ESLint (#25096) 12 months ago
Matt Jankowski b896b16cb3
Fix RSpec/PredicateMatcher cop (#25102) 12 months ago
Matt Jankowski 778e4a7bf7
Fix RSpec/ExpectInHook cop (#25100) 12 months ago
Matt Jankowski b6b4ea4ca5
Move the mastodon/*_cli files to mastodon/cli/* (#24139) 12 months ago
Matt Jankowski c9f980b268
Add request spec for backups download (#25099) 12 months ago
Claire ca66e61b93
Add support for custom sign-up URLs (#25014) 12 months ago
Claire dfa5889fc0
Change Identity to not destroy associated User on destroy (#25098) 12 months ago
Claire 100840c06e
Fix video player offering to expand in a lightbox when it's in an iframe (#25067) 12 months ago
Claire 9017df7178
Remove dead code in Api::V1::FeaturedTagsController (#25073) 12 months ago
Claire fea0830614
Remove invalid X-Frame-Options: ALLOWALL (#25070) 12 months ago
Matt Jankowski 541f64b2bb
Fix Rails/Exit cop (#24743) 12 months ago
Renaud Chaput 5a16bd7bf4
Use JSX syntax for Fragments (#25093) 12 months ago
Renaud Chaput 8f66126b10
Use the new JSX transform (#25064) 12 months ago
Matt Jankowski e387175fc9
Fix RSpec/RepeatedExample cop (#24849) 12 months ago
Matt Jankowski 9f5deb310b
Fix Performance/MapCompact cop (#24797) 12 months ago
Matt Jankowski 0664704cd9
Fix Performance/StartWith cop (#24818) 12 months ago
たいち ひ 9a472efe7c
Rewrite `<TimelineHint />` as FC and TS (#25091) 12 months ago
Matt Jankowski 2877c80dbc
Add specs for admin/announcements CRUD actions (#25077) 12 months ago
dependabot[bot] 753e6df04a
Bump rubocop from 1.50.2 to 1.51.0 (#24995) 12 months ago
dependabot[bot] 5b332112fc
Bump stylelint from 15.6.1 to 15.6.2 (#25078) 12 months ago
dependabot[bot] c37ecbcd10
Bump aws-sdk-s3 from 1.121.0 to 1.122.0 (#24923) 12 months ago
dependabot[bot] c2cbe90a89
Bump rimraf from 5.0.0 to 5.0.1 (#25082) 12 months ago
dependabot[bot] 9e59186f78
Bump glob from 10.2.2 to 10.2.6 (#25083) 12 months ago
dependabot[bot] c7cbded282
Bump webpack-merge from 5.8.0 to 5.9.0 (#25084) 12 months ago
dependabot[bot] d7fd2c5763
Bump rqrcode from 2.1.2 to 2.2.0 (#25086) 12 months ago
dependabot[bot] 4ea24537cf
Bump rubocop-performance from 1.17.1 to 1.18.0 (#25089) 12 months ago
dependabot[bot] 7cfa6424f1
Bump @typescript-eslint/eslint-plugin from 5.59.6 to 5.59.7 (#25085) 12 months ago
dependabot[bot] 16d3e76a71
Bump @typescript-eslint/parser from 5.59.6 to 5.59.7 (#25080) 12 months ago
dependabot[bot] 9628d949ef
Bump connection_pool from 2.4.0 to 2.4.1 (#25088) 12 months ago
dependabot[bot] a5fa30a2d2
Bump rspec-rails from 6.0.1 to 6.0.2 (#25092) 12 months ago
Daniel M Brasil b473df9a14
Improve test coverage for `/api/v1/featured_tags` (#25076) 12 months ago
Nick Schonning 520e00a3c1
Don't run Rubocop excluded files for lint-staged (#25090) 12 months ago
たいち ひ 8066118d1f
Rewrite `<Skeleton/>` as FC and TS (#25055) 12 months ago
Claire 711a037660
Allow scripts in post embed previews (#25071) 12 months ago
Daniel M Brasil 785e650ab4
Fix uncaught TypeError in POST `/api/v1/featured_tags` (#25072) 12 months ago
Daniel M Brasil 45d98959ac
Fix uncaught NoMethodError in POST `/api/v1/featured_tags` (#25063) 12 months ago
Claire 2a61f14753
Fix account confirmation flow not returning to app after captcha validation (#25057) 12 months ago
Renaud Chaput 8d6aea3326
Upgrade to React 18 (#24916) 12 months ago
Daniel M Brasil 4a22e72b9b
Improve test coverage for `/api/v1/admin/canonical_email_blocks` (#24985) 12 months ago
Matt Jankowski 325d5f0183
Regenerate rubocop-todo (#24846) 12 months ago
Claire e13d2edd47
Fix “Authorized applications” inefficiently and incorrectly getting last use date (#25060) 12 months ago
Daniel M Brasil ce8b5899ae
Fix POST `/api/v1/admin/domain_allows` returning 200 when no domain is specified (#24958) 12 months ago
Matt Jankowski e328ab7e5a
Implement pending specs for StatusesController (#23969) 12 months ago
Daniel M Brasil f3feb4c891
Improve test coverage for `/api/v1/admin/email_domain_blocks` (#25017) 12 months ago
Nick Schonning c0b9664a31
Autofix Rubocop spacing in config (#25022) 12 months ago
Emelia Smith 19f9098551
Allow reports with long comments from remote instances, but truncate (#25028) 12 months ago
Daniel M Brasil d51464283c
Improve test coverage for `/api/v1/admin/ip_blocks_controller` (#25031) 12 months ago
Nick Schonning 23a4ecf444
Remove duplicate JPG type (#25054) 12 months ago
Nick Schonning 7d805cfa90
Remove requestAnimationFrame test polyfill (#25056) 12 months ago
Claire 7bb8030cc1
Change OpenGraph-based embeds to allow fullscreen (#25058) 12 months ago
Frankie Roberto 36a77748b4
Order sessions by most-recent to least-recently updated (#25005) 12 months ago
Nick Schonning c1e70a2072
Cleanup and document bundle test/dev deps (#24457) 12 months ago
Nick Schonning ed349b14e2
Add Postgres 15 testing for migrations (#23887) 12 months ago
Nick Schonning 99e2e9b81f
Fix minor typos in comments and spec names (#21831) 12 months ago
Claire b805b7f021
Add tests for avatar/header in backup service (#25037) 12 months ago
dependabot[bot] 27ec8f297d
Bump jsdom from 21.1.2 to 22.0.0 (#24828) 12 months ago
Essem 5fd8d1e417
Fix oversight in backup service (#25034) 12 months ago
Matt Jankowski d34d94d08f
Add spec for migration warning module (#25033) 12 months ago
Claire 058898802a
Fix AvatarComposite and DisplayName referencing undefined props (#2222) 12 months ago
Claire 45ba9ada34
Fix race condition when reblogging a status (#25016) 12 months ago
Claire 5cd55d8aaf
Fix being able to vote on your own polls (#25015) 12 months ago
Claire bec6a1cad4
Add hCaptcha support (#25019) 12 months ago
Claire e60414792d
Add polling and automatic redirection to `/start` on email confirmation (#25013) 12 months ago
dependabot[bot] 2ce0b666a1
Bump pg-connection-string from 2.5.0 to 2.6.0 (#24999) 12 months ago
Claire 7b54e47d03
Fix being unable to load past a full page of filtered posts in Home timeline (#24930) 12 months ago
Claire aa4c9730f6
Change composer highlight border size to be more noticeable (#25010) 12 months ago
Claire 3ed3d54bf3
Fix reports not being closed when performing batch suspensions (#24988) 12 months ago
dependabot[bot] 6ce4fd1cf2
Bump thor from 1.2.1 to 1.2.2 (#25001) 12 months ago
dependabot[bot] e95e896f10
Bump capybara from 3.39.0 to 3.39.1 (#25004) 12 months ago
Nick Schonning cee4369cf5
Autofix Rubocop Lint/AmbiguousOperatorPrecedence (#25002) 12 months ago
dependabot[bot] 520462799f
Bump @typescript-eslint/eslint-plugin from 5.59.5 to 5.59.6 (#24998) 12 months ago
dependabot[bot] bbe4800b04
Bump @typescript-eslint/parser from 5.59.5 to 5.59.6 (#25000) 12 months ago
dependabot[bot] 4d6a8ee34a
Bump eslint-plugin-jsdoc from 43.1.1 to 44.2.4 (#24994) 12 months ago
Steven Munn 52d36f0f98
Fix spelling of "Lets" on the onboarding page after clicking the confirmation email (#24959) 12 months ago
Matt Jankowski 604e1c2b11
Remove usage of random sample values in specs (#24869) 12 months ago
Matt Jankowski b84bc2de5d
Replace i18n view spec with helper spec (#24966) 12 months ago
Renaud Chaput 2e1c6e93ad
Bump `mkdirp` major version (#24978) 1 year ago
Claire 054df2d67e
Merge pull request #2216 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
dependabot[bot] 713d217384
Bump eslint from 8.39.0 to 8.40.0 (#24919) 1 year ago
Matt Jankowski 679aca46da
I18n pluralization errors (#24963) 1 year ago
Daniel M Brasil 433ab0c9a3
Fix uncaught NoMethodError error in `/api/v1/admin/canonical_email_blocks/test` (#24947) 1 year ago
Claire 9015c2d646
Change profile updates to be sent to recently-mentioned servers (#24852) 1 year ago
Matt Jankowski 2c2d924942
Fix RSpec/RepeatedExampleGroupDescription cop (#24850) 1 year ago
Matt Jankowski bf3ebeb42f
Fix RSpec/SharedContext cop (#24847) 1 year ago
Christian Schmidt 5241f7b2fd
Fix UI crash in moderation interface when opening the media modal (#24816) 1 year ago
Matt Jankowski a610a02d4f
Fix RSpec/ScatteredSetup cop (#24848) 1 year ago
Daniel M Brasil 9cbda99941
Add test coverage for `Mastodon::IpBlocksCLI` (#24935) 1 year ago
Emelia Smith b8a2430642
Fix Onboarding Errors (#24883) 1 year ago
Claire 6b0942d107
Change AccessTokensVacuum to also delete expired tokens (#24868) 1 year ago
Eugen Rochko 3869e8c210
Change "Sign in" to "Login" (#24942) 1 year ago
Claire 0eed06073f
Fix videos being improperly positioned on safari (#24943) 1 year ago
Renaud Chaput 5eeb40bdbe
Add stricter ESLint rules for Typescript files (#24926) 1 year ago
Nick Schonning b878e3d8df
Enable ESLint react/no-deprecated (#24471) 1 year ago
たいち ひ 2d5e257938
Rewrite `logo.tsx` as FC (#24909) 1 year ago
Renaud Chaput 6f8db56a01
Disable RTK safety middlewares (#24936) 1 year ago
Claire f371464639 Remove our copy of image.d.ts as tsconfig already uses upstream's 1 year ago
Claire 96e99e2170 Run prettier on Typescript files 1 year ago
Claire facc7ab03c Merge commit '51b83ed19536b06ce3f57b260400ecec2d1dd187' into glitch-soc/merge-upstream 1 year ago
Renaud Chaput 5aa08826cf [Glitch] Type Redux store and middleware 1 year ago
Renaud Chaput a56c71faba [Glitch] Remove unused iOS agent sniffing function 1 year ago
Renaud Chaput 526fe33e2f [Glitch] Rework polyfills loading 1 year ago
fusagiko / takayamaki e22a88b512 [Glitch] Add more detailed type annotation for Account 1 year ago
Claire 1a664560cc Merge commit '6aeb162927e6f9bbfd597632a10d82d9656c2385' into glitch-soc/merge-upstream 1 year ago
fusagiko / takayamaki 349cae0b57
Add type annotation for DisplayName component (#24752) 1 year ago
fusagiko / takayamaki ab7716cff4
Rename Image component to ServerHeroImage (#24894) 1 year ago
Claire 0fff2b67de Disable broken onboarding code 1 year ago
Renaud Chaput 5f2071d055 [Glitch] Enforce stricter rules for Typescript files 1 year ago
Renaud Chaput b509b96504 [Glitch] Enforce React Rules of Hooks with eslint 1 year ago
Renaud Chaput 108720d7b0 [Glitch] Dont use CommonJS (`require`, `module.exports`) anywhere 1 year ago
Claire c81d1b0d38 Merge commit 'c8181eb0a41c4f5c1655d4e400cab071aee4182a' into glitch-soc/merge-upstream 1 year ago
たいち ひ 887112a065 [Glitch] Add TypeScript support for `mastodon` alias and image imports 1 year ago
Claire 42bdc2add9 Copy hooks/useHovering.ts to glitch-soc 1 year ago
Claire 8e806b6e88 Fix IconButton prop types in glitch-soc 1 year ago
Renaud Chaput 6415981056 [Glitch] Mark `wheel` events on scrollable list as passive 1 year ago
fusagiko / takayamaki f94eb65cf9 [Glitch] Rewrite Domain component as function component 1 year ago
fusagiko / takayamaki 468dfffd26 [Glitch] Use LayoutType from is_mobile in actions/app 1 year ago
たいち ひ 87a704f70b [Glitch] Rewrite RadioButton component as FC 1 year ago
たいち ひ bd851d3b58 [Glitch] Rewrite Image component as function component 1 year ago
たいち ひ 1edaf58fb9 [Glitch] Rewrite <NotSignedInIndicator /> as FC 1 year ago
Claire 8b568755ad Merge commit '89269e4b713e3291a5c8c29b8d2e7b950b60eb35' into glitch-soc/merge-upstream 1 year ago
Nick Schonning 51b83ed195
Use Prettier for ESLint formatting TypeScript (#23631) 1 year ago
Renaud Chaput 6aeb162927
Type Redux store and middleware (#24843) 1 year ago
Claire e1f466fbbe
Fix javascript on moderation interface (#24933) 1 year ago
Renaud Chaput 224d458f7e
Remove unused iOS agent sniffing function (#24931) 1 year ago
dependabot[bot] 72dcb2ef58
Bump @typescript-eslint/eslint-plugin from 5.59.2 to 5.59.5 (#24922) 1 year ago
dependabot[bot] a5ba98d2df
Bump @typescript-eslint/parser from 5.59.2 to 5.59.5 (#24921) 1 year ago
eggplants af7bf59b3e
Fix wrong documentation link (#24924) 1 year ago
Renaud Chaput a3a2414f0e
Rework polyfills loading (#24907) 1 year ago
Claire f08f6d20e6
Merge pull request #2215 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Daniel M Brasil 536dd046d4
Add ability to block sign-ups from IP using the CLI (#24870) 1 year ago
Daniel M Brasil ffb3fef7db
Fix uncaught `ActiveRecord::StatementInvalid` in Mastodon::IpBlocksCLI (#24861) 1 year ago
Renaud Chaput aec486b4ec
Upgrade `uuid` to 9.0.0 (#24917) 1 year ago
fusagiko / takayamaki 6579e3af7d
Add more detailed type annotation for Account (#24815) 1 year ago
Renaud Chaput c8181eb0a4
Enforce stricter rules for Typescript files (#24910) 1 year ago
Renaud Chaput 64ec41d89c
Make Webpack fail on failed imports (#24908) 1 year ago
Renaud Chaput d9b93bd15e
Enforce React Rules of Hooks with eslint (#24911) 1 year ago
Renaud Chaput 955179fc55
Dont use CommonJS (`require`, `module.exports`) anywhere (#24913) 1 year ago
Renaud Chaput 89269e4b71
Mark `wheel` events on scrollable list as passive (#24914) 1 year ago
Renaud Chaput ea04f33f50 [Glitch] Fixes build errors from some previous TS-related commits 1 year ago
fusagiko / takayamaki 3d9e35375c [Glitch] Rewrite actions/app.ts and reducers/missed_updates.ts with createAction 1 year ago
Renaud Chaput a33d6c946a [Glitch] Remove MastodonMap TS type 1 year ago
fusagiko / takayamaki e8243d5bbd [Glitch] Add type annotation for some js files 1 year ago
Claire 5f0d2b6e3b Copy Typescript type definitions to glitch-soc 1 year ago
Claire f3af434c25 [Glitch] Fix incorrect import of redux store 1 year ago
fusagiko / takayamaki f4e3e309b1 [Glitch] use configureStore of redux-toolkit instead of createStore of redux 1 year ago
Eugen Rochko bbd0e9caa6 [Glitch] Add ALT badges to media that has alternative text in web UI 1 year ago
Claire a8939e9098 [Glitch] Change media elements to use aspect-ratio rather than compute height themselves 1 year ago
Claire 10f5329ddf [Glitch] Fix incorrect box shadow on avatar in thread view 1 year ago
fusagiko / takayamaki 9ab89bb832 [Glitch] Add type annotation for Blurhash component 1 year ago
fusagiko / takayamaki 20f1f3aa7d [Glitch] Add type annotation for IconButton component 1 year ago
Claire 8b31030fe4 Fix rubocop issues in glitch-soc-specific code 1 year ago
Claire d77fbbed73 Merge commit 'f877aa9d70d0d600961989b8e97c0e0ce3ac1db6' into glitch-soc/merge-upstream 1 year ago
Claire f89f3a8566
Fix glitch-soc's thread line styling (#2214) 1 year ago
Claire 61f3e0e95e
Merge pull request #2213 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Eugen Rochko 8bf9bd5ac8 [Glitch] Fix n+1 query in settings migration 1 year ago
Eugen Rochko 75e28731a5 [Glitch] Fix transaction around settings migration 1 year ago
fusagiko / takayamaki aff2d55b80 [Glitch] Add type annotation for RelativeTimestamp component 1 year ago
fusagiko / takayamaki a49707dacb [Glitch] Rewrite Icon and IconWithBadge with typescript 1 year ago
Eugen Rochko 7835f8fd22 [Glitch] Fix icons having an image role 1 year ago
Claire e9eab013e7 [Glitch] Fix audio player width in thread view 1 year ago
Nick Schonning 51479f5c28 [Glitch] Add eslint-plugin-jsdoc 1 year ago
Christian Schmidt 09054f5485 [Glitch] Fix media description not being cleared 1 year ago
Claire 2d029dedd9 Merge commit '0ad2413b35287958f59073a5b63aecc659a64d98' into glitch-soc/merge-upstream 1 year ago
Claire 5d18840ab9
Fix more JS linting issues (#2212) 1 year ago
fusagiko / takayamaki 9818f34273
Rewrite Domain component as function component (#24896) 1 year ago
fusagiko / takayamaki 5bc8e2d1fd
Use LayoutType from is_mobile in actions/app (#24863) 1 year ago
Claire 16c5354b8c
Fix some more JS linting issues (#2211) 1 year ago
たいち ひ 7c1305b3a4
Add TypeScript support for `mastodon` alias and image imports (#24895) 1 year ago
たいち ひ 76264e3fe8
Rewrite RadioButton component as FC (#24897) 1 year ago
たいち ひ a65d2d1045
Rewrite Image component as function component (#24893) 1 year ago
たいち ひ 490ccbf40b
Rewrite <NotSignedInIndicator /> as FC (#24903) 1 year ago
たいち ひ 6fdbee240c
Rewrite <Check /> as FC (#24901) 1 year ago
Claire de74acbe0c
Fix some more Javascript linting issues and discrepancies with upstream (#2209) 1 year ago
Claire ed0a407888
Fix thread lines not being properly updated when new posts are received (#2210) 1 year ago
Plastikmensch 179e38cf15
Reset language to default when cancelling a reply (#2114) 1 year ago
Claire 3fb7fe14c6
Fix some of the Javascript linting issues, as well as bugs and unneeded divergences with upstream (#2208) 1 year ago
Claire 9b59748679
Fix rubocop warnings (#2206) 1 year ago
Claire 6f64c79ca4
Fix SCSS linting issues (#2207) 1 year ago
Claire a6207d243b
New Crowdin updates (#2202) 1 year ago
fusagiko / takayamaki 140aa6b054
Rewrite VerifiedBadge component as function component (#24892) 1 year ago
Matt Jankowski f877aa9d70
Use released version 4.1.0 of devise-two-factor (#24875) 1 year ago
Claire 746979f75d
Fix compose textarea scroll behavior (#24872) 1 year ago
Tim Campbell f258478395
Fixed mastodon version injection into containers via github actions (#24873) 1 year ago
mogaminsk c9e040fb24
Fix import data field type (#24874) 1 year ago
S.H 5811ccc611
Fix column back button error (#24867) 1 year ago
zunda c0ea33e3fc
Make it possible to upload audio and video to Heroku app (#24866) 1 year ago
Nick Schonning e675c10d19
Add production asset compile (#24839) 1 year ago
Tim Campbell ac41a9712e
Fixed mastodon version injection into containers via github actions (#24858) 1 year ago
Daniel M Brasil c9210af3ee
Add test coverage for `Mastodon::SettingsCLI` (#24856) 1 year ago
dependabot[bot] 64fae0efb5
Bump @babel/core from 7.21.5 to 7.21.8 (#24831) 1 year ago
Matt Jankowski 0b249ebdb0
Extract StatusSafeReblogInsert concern from Status (#24821) 1 year ago
Renaud Chaput 830e6cefae
Add version suffixes to nightly & edge image builds (#24823) 1 year ago
Nick Schonning 569b39256b
Bump rubocop-rails 2.19.1 with update .rubocop_todo.yml (#24469) 1 year ago
dependabot[bot] 880e661d53
Bump stylelint from 15.6.0 to 15.6.1 (#24829) 1 year ago
dependabot[bot] ff974395c2
Bump react-select from 5.7.2 to 5.7.3 (#24830) 1 year ago
dependabot[bot] 849d93e50a
Bump json-ld from 3.2.4 to 3.2.5 (#24832) 1 year ago
Claire c3c7d59072
Fix infinite loop in AccountsStatusesCleanupScheduler (#24840) 1 year ago
Nick Schonning f95125bd04
Fail ESLint for Warnings in CI (#24836) 1 year ago
Florin 27bafabb64
Fix Back button going outside the app (#24835) 1 year ago
Nick Schonning e1ebcc007d
Regenerate rubocop-todo (#24834) 1 year ago
Nick Schonning ff3b7069cf
Autofix Rubocop Style/ConcatArrayLiterals (#23755) 1 year ago
Nick Schonning da3bd913ae
Autofix Rubocop Style/HashSyntax (#23754) 1 year ago
Nick Schonning d5a185d721
Autofix Rubocop Style/CaseLikeIf (#23756) 1 year ago
Nick Schonning 1fe04f740a
Enable Rubocop Rails/FilePath (#23854) 1 year ago
Matt Jankowski c97b611b6b
Fix RSpec/InferredSpecType cop (#24736) 1 year ago
Matt Jankowski 710745e16b
Fix RSpec/ContextWording cop (#24739) 1 year ago
Matt Jankowski cf18cc2891
Fix RSpec/MultipleSubjects cop (#24738) 1 year ago
Matt Jankowski bdcd8a9e88
Misc spec cleanup (#24822) 1 year ago
Matt Jankowski 08fb9d300a
Spec coverage for settings/preferences/* controllers (#24825) 1 year ago
Matt Jankowski 2c6c398c60
Fix Performance/CollectionLiteralInLoop cop (#24819) 1 year ago
Matt Jankowski a1cca1c8b6
Update capistrano config lock version to match bundle (#24820) 1 year ago
Matt Jankowski d9a958fcf7
Fix Performance/RedundantMerge cop (#24817) 1 year ago
Nick Schonning b25860c509
Revert "Bump better_errors from 2.9.1 to 2.10.0 (#24779)" (#24827) 1 year ago
Claire a2a22bad23
Fix various edge cases with local moves (#24812) 1 year ago
Claire 1e75eb690d
Fix own posts not getting delivered to own lists (#24810) 1 year ago
Renaud Chaput 45579a26cf
Fixes build errors from some previous TS-related commits (#24811) 1 year ago
fusagiko / takayamaki 0999cb4601
Rewrite actions/app.ts and reducers/missed_updates.ts with createAction (#24801) 1 year ago
Claire c98b012583
Change Move handler to also move list memberships (#24808) 1 year ago
Renaud Chaput 9a52a7f7a0
Remove MastodonMap TS type (#24807) 1 year ago
fusagiko / takayamaki e38b391940
Add type annotation for some js files (#24787) 1 year ago
dependabot[bot] 9b8cb947a7
Bump better_errors from 2.9.1 to 2.10.0 (#24779) 1 year ago
Matt Jankowski 3df665fd23
Fix Lint/ConstantDefinitionInBlock cop (#24763) 1 year ago
Claire 8b636a29c6
Improve automatic post cleanup worker performances (#24785) 1 year ago
Matt Jankowski a0c9f2447e
Fix Performance/MethodObjectAsBlock cop (#24798) 1 year ago
Matt Jankowski 97385f27bd
Fix Performance/RedundantEqualityComparisonBlock cop (#24799) 1 year ago
Claire 9c1929efad
Fix incorrect import of redux store (#24805) 1 year ago
Claire d37c0a1060
Fix incorrect box shadow on avatar in thread view (#24800) 1 year ago
Matt Jankowski 668a19a2f3
Fix Performance/DeletePrefix cop (#24796) 1 year ago
Matt Jankowski 05e3abe9d9
Fix Lint/EmptyClass cop (#24795) 1 year ago
dependabot[bot] 8d61d2b0da
Bump axios from 1.3.6 to 1.4.0 (#24775) 1 year ago
dependabot[bot] 8f7c172eb8
Bump @babel/preset-typescript from 7.21.4 to 7.21.5 (#24776) 1 year ago
dependabot[bot] b0ebaeb691
Bump @babel/preset-env from 7.21.4 to 7.21.5 (#24773) 1 year ago
dependabot[bot] 1d49718a84
Bump @babel/runtime from 7.21.0 to 7.21.5 (#24771) 1 year ago
dependabot[bot] 14a7e414fc
Bump @babel/core from 7.21.4 to 7.21.5 (#24778) 1 year ago
fusagiko / takayamaki 8227af8dcc
use configureStore of redux-toolkit instead of createStore of redux (#24790) 1 year ago
dependabot[bot] 2839fbc733
Bump eslint-plugin-formatjs from 4.10.0 to 4.10.1 (#24770) 1 year ago
dependabot[bot] 4acf5f8971
Bump @typescript-eslint/eslint-plugin from 5.59.1 to 5.59.2 (#24768) 1 year ago
dependabot[bot] 4b87e2a8db
Bump @typescript-eslint/parser from 5.59.1 to 5.59.2 (#24774) 1 year ago
dependabot[bot] b75c353962
Bump yargs from 17.7.1 to 17.7.2 (#24769) 1 year ago
dependabot[bot] 18f58f4284
Bump jsdom from 21.1.1 to 21.1.2 (#24767) 1 year ago
Matt Jankowski 24491abf6d
Fix Rails/DeprecatedActiveModelErrorsMethods cop (#24742) 1 year ago
Matt Jankowski b5c4b47746
Fix Rails/ActiveRecordCallbacksOrder cop (#24689) 1 year ago
Matt Jankowski 38b2974a83
Extract AccountSearch concern from Account (#24716) 1 year ago
Matt Jankowski f1c1dd0118
Rename `with_lock` to `with_redis_lock` to avoid confusion with ActiveRecord's method (#24741) 1 year ago
Matt Jankowski a7df578f97
ApplicationHelper spec coverage, unused removal, tiny refactor (#24762) 1 year ago
dependabot[bot] c26b1b0a1c
Bump pg from 1.5.2 to 1.5.3 (#24772) 1 year ago
dependabot[bot] 389f0443c8
Bump cssnano from 6.0.0 to 6.0.1 (#24777) 1 year ago
Matt Jankowski 570079f8ce
Fix Performance/TimesMap cop (#24789) 1 year ago
Matt Jankowski bae694108a
Fix Performance/Count cop (#24793) 1 year ago
Claire 9189e90ff2
Add fallback redirection when getting a webfinger query `LOCAL_DOMAIN@LOCAL_DOMAIN` (#23600) 1 year ago
Matt Jankowski 5e060e1f44
Fix Performance/Sum cop (#24788) 1 year ago
Matt Jankowski 41eb49b984
Extract large route namespace blocks to separate files (#23914) 1 year ago
Claire a89b02af92
Check domain suspensions before trying to fetch resources (#24535) 1 year ago
Claire 1ed0ff30d3
Fix `tootctl accounts cull` crashing when encountering a domain resolving to a private address (#23378) 1 year ago
Claire b233da5996
Optimize archive export service and export zip files instead of gzipped tar files (#23360) 1 year ago
Eugen Rochko 8131a5b330
Add ALT badges to media that has alternative text in web UI (#24782) 1 year ago
Claire 6693a4fe7c
Change lists to be able to include accounts with pending follow requests (#19727) 1 year ago
Claire 598e63dad2
Change media elements to use aspect-ratio rather than compute height themselves (#24686) 1 year ago
Claire 1eb51bd749
Add request specs for caching behavior (#24592) 1 year ago
Matt Jankowski 88d33f361f
Fix Lint/DuplicateBranch cop (#24766) 1 year ago
fusagiko / takayamaki f50105779b
Add type annotation for Blurhash component (#24750) 1 year ago
fusagiko / takayamaki 5a5975d7f7
Add type annotation for IconButton component (#24753) 1 year ago
Claire 32a030dd74
Rewrite import feature (#21054) 1 year ago
Eugen Rochko 0ad2413b35
Fix n+1 query in settings migration (#24783) 1 year ago
Eugen Rochko f1c1fa1411
Fix transaction around settings migration (#24761) 1 year ago
Nick Schonning fc56eda94b
Bump stylelint-config-standard-scss from 7.0.1 to 9.0.0 (#24755) 1 year ago
fusagiko / takayamaki 15fd712464
Add type annotation for RelativeTimestamp component (#24749) 1 year ago
fusagiko / takayamaki 81f75b1e0e
Rewrite Icon and IconWithBadge with typescript (#24747) 1 year ago
Matt Jankowski c53fe9b753
Fix RSpec/BeforeAfterAll cop (#24737) 1 year ago
Matt Jankowski d902a707a3
Fix Rails/CompactBlank cop (#24690) 1 year ago
Matt Jankowski d00e45a7d3
Fix Rails/I18nLocaleAssignment cop (#24693) 1 year ago
Matt Jankowski af824db398
Fix Rails/InverseOf cop (#24732) 1 year ago
Claire c18884de32
Merge pull request #2198 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Nick Schonning 6b95aaaa65
Remove empty HTTP error translations (#24210) 1 year ago
Josh McKinney 89c01383f9
fix: remove port 80 mapping in devcontainer (#24658) 1 year ago
Eugen Rochko 0a08e9d3d3
New Crowdin updates (#24678) 1 year ago
Mark Roszko c23d285b16
Remove the u in Favorite for non-gb english (#24667) 1 year ago
João Pedro Marques 8f6e290c7a
Adds new follower/following routes (#24601) 1 year ago
dependabot[bot] 0669822ae8
Bump eslint from 8.38.0 to 8.39.0 (#24636) 1 year ago
dependabot[bot] 242d7864f1
Bump @types/jest from 29.4.2 to 29.5.1 (#24630) 1 year ago
dependabot[bot] 56cf092058
Bump @types/yargs from 17.0.22 to 17.0.24 (#24388) 1 year ago
dependabot[bot] fa14976a5d
Bump connection_pool from 2.3.0 to 2.4.0 (#24290) 1 year ago
dependabot[bot] 819daeb651
Bump @types/lodash from 4.14.191 to 4.14.194 (#24576) 1 year ago
dependabot[bot] 921bef6799
Bump stylelint from 15.3.0 to 15.6.0 (#24635) 1 year ago
Daniel M Brasil e8fe941015
Fix `tootctl accounts approve --number N` not aproving N earliest registrations (#24605) 1 year ago
Matt Jankowski 2e43461100
Fix Rails/Output cop (#24687) 1 year ago
Matt Jankowski 5a2aa06a51
Fix Rails/Present cop (#24688) 1 year ago
Matt Jankowski bdc74086e6
Fix Rails/ContentTag cop (#24691) 1 year ago
Matt Jankowski 6e226f5a32
Fix Rails/ActionOrder cop (#24692) 1 year ago
Nick Schonning 470b8abb69
Run Rubocop with lint-staged on commit (#24644) 1 year ago
Matt Jankowski 60ac9e8634
Fix Rails/SquishedSQLHeredocs cop (#24694) 1 year ago
Matt Jankowski 8dcfb6e0ea
Fix Rails/HttpPositionalArguments cop (#24699) 1 year ago
Claire 678d836c7d
Fix pop-in player placeholder layout in thread view (#24715) 1 year ago
Claire cf1bc4bb93
Fix audio player width in thread view (#24713) 1 year ago
Nick Schonning f22b4e556c
Add eslint-plugin-jsdoc (#24719) 1 year ago
Christian Schmidt bfeccf6748
Fix media description not being cleared (#24720) 1 year ago
Matt Jankowski 274d561430
Enable local account key generation spec (#24728) 1 year ago
mogaminsk e0d075713f
Change i18n-fallbacks to English (#24727) 1 year ago
Matt Jankowski 4cfe52635c
Add pending spec for User.those_who_can (#24724) 1 year ago
Claire e79998a11a Restore translations from not-yet-ported onboarding changes as glitch-soc translations 1 year ago
Eugen Rochko 38eeed6cbf [Glitch] Change logo version in header based on screen size in web UI 1 year ago
Nick Schonning 1033598416 [Glitch] Enable formatjs/prefer-pound-in-plural 1 year ago
Claire edec08b970 Disable full-width media in thread view 1 year ago
Claire cb97a92954 [Glitch] Fix thread lines in right-to-left locales (#24714) 1 year ago
Claire 103b6de8b2 [Glitch] Fix sass warning about deprecated slash as division (#24653) 1 year ago
Eugen Rochko 7b01b7c3bf [Glitch] Add lines to threads in web UI 1 year ago
Eugen Rochko 8015297f9e [Glitch] Change label from "For you" to "People" on explore screen in web UI 1 year ago
Chike Nwaenie 374a109546 [Glitch] Change styling of the recommended accounts to allow bio to be more visible 1 year ago
Christian Schmidt 0091b28ffe [Glitch] Use CSS to trim long card descriptions 1 year ago
Claire 11b34a903a [Glitch] Fix infinite loop in emoji replacement code 1 year ago
Claire 0a813d96db [Glitch] Fix characters being emojified even when using Variation Selector 15 (text) 1 year ago
fusagiko / takayamaki 66bda4713e [Glitch] Allow `==` when null checking 1 year ago
Claire 612a1ee697 Fix `body_classes` test for glitch-soc 1 year ago
Claire 12b935fadf Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire 105f8687e4
Fix thread lines in right-to-left locales (#24714) 1 year ago
Claire 2a3a110f00
Fix wrong classes `audio` and `video` instead of `audio-player` and `video-player` in CSS (#24711) 1 year ago
Claire faa336e3f7
Change logged-out WebUI HTML pages to be cached for a few seconds (#24708) 1 year ago
Eugen Rochko 8979b70975
Add default post text to onboarding flow in web UI (#24705) 1 year ago
Claire 1c61869eed
Fix /api/v1/custom_emojis being cached even when unauthenticated API access is disallowed (#24665) 1 year ago
Eugen Rochko 6028d047b9
Change logo version in header based on screen size in web UI (#24707) 1 year ago
Eugen Rochko 2b0f1f365a
Remove display name input from sign-up form (#24704) 1 year ago
Eugen Rochko 7cf963eec2
Change label from "For you" to "People" on explore screen in web UI (#24706) 1 year ago
Claire a5bc4ea550
Fix refering to unused `preview-card` CSS class instead of `status-card` (#24696) 1 year ago
Matt Jankowski ece38b9318
Remove duplicate react helper method definitions (#24700) 1 year ago
Nick Schonning 8e514b1965
Unignore stuck Dependabot updates (#24670) 1 year ago
dependabot[bot] d9e9579832
Bump tesseract.js from 2.1.1 to 2.1.5 (#19084) 1 year ago
Daniel M Brasil 1d9969fadf
Fix `tootctl accounts create --reattach --force` not working with confirmed accounts (#24680) 1 year ago
Nick Schonning 49fad26eca
Drop EOL Ruby 2.7 (#24237) 1 year ago
Claire d8a06c1375
Fix preview cards layout in thread view (#24677) 1 year ago
Eugen Rochko d4511f2a76
New Crowdin updates (#24617) 1 year ago
Plastikmensch 1565af1caf
[Glitch] [Proposal] Make able to write React in Typescript (#2190) 1 year ago
Nick Schonning 5841f1af8c
Autofix Rubocop RSpec/MatchArray (#24675) 1 year ago
Nick Schonning a3393d0d07
Autofix Rubocop RSpec/MatchArray (#24050) 1 year ago
Matt Jankowski 91a8cd21d8
React component helper specs (#24072) 1 year ago
dependabot[bot] 3029aeb838
Bump pg from 1.4.6 to 1.5.2 (#24671) 1 year ago
dependabot[bot] 185a71f281
Bump rack from 2.2.6.4 to 2.2.7 (#24672) 1 year ago
dependabot[bot] b839babb39
Bump sass from 1.62.0 to 1.62.1 (#24668) 1 year ago
dependabot[bot] 785b0349eb
Bump lint-staged from 13.2.1 to 13.2.2 (#24669) 1 year ago
dependabot[bot] 872c4e1ef2
Bump glob from 10.0.0 to 10.2.2 (#24632) 1 year ago
Nick Schonning 90beba57d8
Autofix Rubocop Rails/ResponseParsedBody (#24051) 1 year ago
dependabot[bot] c7cd891e86
Bump brakeman from 5.4.0 to 5.4.1 (#24006) 1 year ago
Nick Schonning 6403d7841e
Add Dependabot ignores for stuck updates and those needing manual interventions (#23966) 1 year ago
Matias Lago Evia 93a84f4704
Add S3 region list reference to Scalingo config (#24152) 1 year ago
dependabot[bot] 2f5608e9e5
Bump sass from 1.61.0 to 1.62.0 (#24574) 1 year ago
dependabot[bot] 5f624954be
Bump @typescript-eslint/eslint-plugin from 5.59.0 to 5.59.1 (#24633) 1 year ago
dependabot[bot] 9650a5738a
Bump @typescript-eslint/parser from 5.59.0 to 5.59.1 (#24638) 1 year ago
Nick Schonning dcdc614bd2
Remove postcss-scss devDep (#24223) 1 year ago
dependabot[bot] b31ee9ab38
Bump json-schema from 3.0.0 to 4.0.0 (#24642) 1 year ago
dependabot[bot] 1820b55a11
Bump postcss from 8.4.22 to 8.4.23 (#24629) 1 year ago
dependabot[bot] 0c66358601
Bump prettier from 2.8.7 to 2.8.8 (#24631) 1 year ago
dependabot[bot] 855cf7802d
Bump chewy from 7.3.0 to 7.3.2 (#24637) 1 year ago
dependabot[bot] fba60094a2
Bump axios from 1.3.5 to 1.3.6 (#24640) 1 year ago
Claire b0bf6216e6
Fix /api/v1/instance/domain_blocks being unconditionally cached (#24662) 1 year ago
Claire 62ab7506d6
Fix /actor needlessly reading session cookie and varying on Signature (#24664) 1 year ago
Emelia Smith 301e03eb8c
Remove clustering from streaming API (#24655) 1 year ago
Tim Campbell 36631e40cc
Inf 123 dated nightly containers (#24656) 1 year ago
Claire 1527b02c6d
Fix sass warning about deprecated slash as division (#24653) 1 year ago
Claire 1419f90ef2
Fix some user-independent endpoints potentially reading session cookies (#24650) 1 year ago
Plastikmensch 678480d4d3
Fix small mistakes in RTL layout (#2182) 1 year ago
Plastikmensch aea7866161
Change `drawer--header` to `drawer__header` (#2189) 1 year ago
Claire 276c39361b
Fix anonymous visitors getting a session cookie on first visit (#24584) 1 year ago
Eugen Rochko 6084461cd0
Change unauthenticated responses to be cached in REST API (#24348) 1 year ago
Eugen Rochko c35e3cb6ac
Add more tips to onboarding flow in web UI (#24646) 1 year ago
Eugen Rochko 8099ba04be
Change hashtags and mentions in bios to open in-app in web UI (#24643) 1 year ago
Claire e9a79d46cd
Fix crash when SSO_ACCOUNT_SETTINGS is not defined (#24628) 1 year ago
Matt Jankowski 1ac9219b31
Update `attr_encrypted` & `devise-two-factor` gems (#24626) 1 year ago
Matt Jankowski 930d84d40e
Gem version bumps (#24131) 1 year ago
Claire f45961aa98
Add feature test for OAuth access grant (#24624) 1 year ago
Eugen Rochko 804aa8d501
Fix cutting off first letter of hashtag links sometimes in web UI (#24623) 1 year ago
Nick Schonning 2daa5a1549
Enable formatjs/prefer-pound-in-plural (#24622) 1 year ago
Eugen Rochko 290e4aba31
Add lines to threads in web UI (#24549) 1 year ago
dependabot[bot] 0c81eec239
Bump @typescript-eslint/eslint-plugin from 5.58.0 to 5.59.0 (#24573) 1 year ago
dependabot[bot] 03ea084f0d
Bump @typescript-eslint/parser from 5.58.0 to 5.59.0 (#24568) 1 year ago
Nick Schonning 0bfd9f7f73
Update Contributor Covenant to 2.1 (#23980) 1 year ago
Christian Schmidt 5141697323
Remove `tai` locale (#23880) 1 year ago
Nick Schonning 2904fd0fdd
Update Stylelint disable settings and ignores (#23776) 1 year ago
Nick Schonning 0c7ce98ff6
Add eslint-plugin-formatjs (#23976) 1 year ago
Nick Schonning ef3675d688
Remove empty Kushubian (csb) local files (#24151) 1 year ago
Matt Jankowski 0a5f0a8b20
Remove instance variables from helper usage (#24203) 1 year ago
Chike Nwaenie e1b4eeb636
Change styling of the recommended accounts to allow bio to be more visible (#24480) 1 year ago
Christian Schmidt e713c545b8
Use CSS to trim long card descriptions (#24265) 1 year ago
Nick Schonning 4687967176
Autofix Rubocop Style/NumericLiterals (#24468) 1 year ago
Claire 528b8e7e3a
Fix crash in `tootctl accounts create --reattach --force` (#24557) 1 year ago
Claire 58a1b2e330
Fix caching logic with regards to Accept-Language, Cookie, and Signature (#24604) 1 year ago
Claire 5dc3173ef8
Fix AccountsStatusesCleanupScheduler not spreading deletes across accounts correctly (#24607) 1 year ago
Eugen Rochko 0461f83320
Add new onboarding flow to web UI (#24619) 1 year ago
Claire 5b58ebb04f
Fix JS crashing if initial-state is not set (#2193) 1 year ago
Claire 2ebbfebfe9
Merge pull request #2192 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Eugen Rochko 9d75b03ba4
New Crowdin updates (#24517) 1 year ago
fusagiko / takayamaki 9ef32ea570 [Glitch] Rewrite AnimatedNumber component with React hooks 1 year ago
fusagiko / takayamaki 799e9917e4 [Glitch] Rewrite GIFV component with React hooks 1 year ago
Eugen Rochko 6ea9137233 [Glitch] Add client-side validation for taken username in sign-up form 1 year ago
Claire bc7b3399fb [Glitch] Fix crash when trying to open the filter modal 1 year ago
Eugen Rochko 2f3dffb057 [Glitch] Add progress indicator to sign-up flow 1 year ago
Ivan Rodriguez a21a875dba [Glitch] Fix status title for statuses without text 1 year ago
Nick Schonning f2797276b2 [Glitch] typo: collapsable -> collapsible 1 year ago
Claire abfdafef1e Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire 501d6197c4
Change automatic post deletion thresholds and load detection (#24614) 1 year ago
Claire fbb4de3dbc
Fix infinite loop in emoji replacement code (#24615) 1 year ago
Claire b0eba1a060
Minor clean up and optimization of the automatic post deletion code (#24613) 1 year ago
dependabot[bot] 88ce59505e
Bump rubocop from 1.49.0 to 1.50.2 (#24580) 1 year ago
Claire 37886c28da
Fix characters being emojified even when using Variation Selector 15 (text) (#20949) 1 year ago
Daniel M Brasil faf657d709
Fix uncaught ActiveRecord::StatementInvalid exception in `Mastodon::AccountsCLI#approve` (#24590) 1 year ago
Tim Campbell c62604b5f6
Added manual running to nightly image build (#24598) 1 year ago
Tim Campbell e798b8615c
Added job to build nightly container (#24595) 1 year ago
fusagiko / takayamaki c1a7e38d2b
Allow `==` when null checking (#24593) 1 year ago
Eugen Rochko e98c86050a
Refactor `Cache-Control` and `Vary` definitions (#24347) 1 year ago
Robert R George 4db8230194
Add trend management to admin API (#24257) 1 year ago
dependabot[bot] 1153531e92
Bump faker from 3.1.1 to 3.2.0 (#24579) 1 year ago
dependabot[bot] 426e3cc3bc
Bump reselect from 4.1.7 to 4.1.8 (#24565) 1 year ago
dependabot[bot] fe1ac6b0b0
Bump postcss from 8.4.21 to 8.4.22 (#24570) 1 year ago
dependabot[bot] 2c72396feb
Bump json-ld from 3.2.3 to 3.2.4 (#24571) 1 year ago
dependabot[bot] 88ef71e971
Bump pghero from 3.3.1 to 3.3.2 (#24572) 1 year ago
dependabot[bot] a5e9128b74
Bump http-link-header from 1.1.0 to 1.1.1 (#24575) 1 year ago
dependabot[bot] 10ef3d9b41
Bump ox from 2.14.14 to 2.14.16 (#24577) 1 year ago
Daniel M Brasil 3afa1fda7a
Fix email confirmation skip option in `tootctl accounts modify USERNAME --email EMAIL --confirm` (#24578) 1 year ago
Heitor de Melo Cardozo bc75e62ca6
Change moderation search an account using the username with @ (#24242) 1 year ago
fusagiko / takayamaki ab740f464a
Rewrite AnimatedNumber component with React hooks (#24559) 1 year ago
Claire 85b1b45820
Fix crash in NotifyService when trying to send an email notification for polls (#24558) 1 year ago
Claire f30c5e7f15
Merge pull request #2181 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Heitor de Melo Cardozo 4601e0dcbb
Add user handle to notification mail recipient address (#24240) 1 year ago
Claire bc4745f482
Fix crash when trying to open the filter modal (#24556) 1 year ago
Nick Schonning ca447d3007
Update Jest testing to include Typescript (#24555) 1 year ago
fusagiko / takayamaki 9f8d34620b
Rewrite AvatarOverlay component with React hooks (#24543) 1 year ago
Eugen Rochko 34f8e696e2 [Glitch] Change all components to use the same error page in web UI 1 year ago
Claire a3c05640f7 [Glitch] Add “In Memoriam” banner back to profiles 1 year ago
Claire cb0562f32c [Glitch] Fix tab arrows on RTL layouts 1 year ago
Claire f9a9f9344b Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
fusagiko / takayamaki cf3fa1e814
Rewrite GIFV component with React hooks (#24552) 1 year ago
Eugen Rochko e5c0b16735
Add progress indicator to sign-up flow (#24545) 1 year ago
Eugen Rochko 955ec252a4
Add client-side validation for taken username in sign-up form (#24546) 1 year ago
Ivan Rodriguez f05fb51ecb
Fix status title for statuses without text (#24359) 1 year ago
Matt Jankowski 10f0de4212
Refactor race condition reblog service spec (#24526) 1 year ago
Daniel M Brasil b0800d602e
tootctl: add --approve option to tootctl accounts create (#24533) 1 year ago
Nick Schonning d02aa274be
typo: collapsable -> collapsible (#24521) 1 year ago
Claire af49d93fd6
Fix tab arrows on RTL layouts (#24520) 1 year ago
Claire 8f0b0435ab
Fix missing translation strings in en.json and defaultMessages.json (#24518) 1 year ago
Claire 7a0a79e6b3
Fix check-i18n when there are missing strings in other languages than english (#24519) 1 year ago
Claire 86ad43173f
Add “In Memoriam” banner back to profiles (#23614) 1 year ago
dependabot[bot] 722c0011d1
Bump chewy from 7.2.7 to 7.3.0 (#24507) 1 year ago
Eugen Rochko c5eba06d8c
New Crowdin updates (#24447) 1 year ago
Claire f53d009778
Refactor `Status._insert_record` slightly and tighten the test around reblogs of discarded statuses (#24516) 1 year ago
Eugen Rochko cee357d538
Change all components to use the same error page in web UI (#24512) 1 year ago
Kuba Suder aca2cd1528
fixed typo in a constant name (#24511) 1 year ago
Eugen Rochko f9940eba2f
Bump nokogiri from 1.14.2 to 1.14.3 (#24510) 1 year ago
dependabot[bot] ce50f04f0a
Bump glob from 9.3.4 to 10.0.0 (#24490) 1 year ago
dependabot[bot] 458e49c40c
Bump @typescript-eslint/eslint-plugin from 5.55.0 to 5.58.0 (#24488) 1 year ago
dependabot[bot] 8ffa11740f
Bump @typescript-eslint/parser from 5.55.0 to 5.58.0 (#24494) 1 year ago
dependabot[bot] 0765aeba38
Bump eslint from 8.36.0 to 8.38.0 (#24493) 1 year ago
Claire 4c457a350b
Fix check-i18n task complaining about translated files (#24501) 1 year ago
Claire 8eeb0ae7c0
Explicitly enable `@babel/plugin-proposal-optional-chaining` to fix build failures (#24504) 1 year ago
dependabot[bot] fe841b6bb6
Bump sass from 1.60.0 to 1.61.0 (#24487) 1 year ago
dependabot[bot] b9efca65e3
Bump net-ldap from 0.17.1 to 0.18.0 (#24484) 1 year ago
dependabot[bot] b6e353fde1
Bump rimraf from 4.4.1 to 5.0.0 (#24492) 1 year ago
dependabot[bot] 6502fcb5cf
Bump aws-sdk-s3 from 1.120.0 to 1.120.1 (#24483) 1 year ago
dependabot[bot] 4a23ee4b9d
Bump addressable from 2.8.2 to 2.8.4 (#24482) 1 year ago
dependabot[bot] ccd74ecd10
Bump @babel/plugin-transform-runtime from 7.21.0 to 7.21.4 (#24394) 1 year ago
dependabot[bot] b178fd3f92
Bump @babel/preset-env from 7.20.2 to 7.21.4 (#24382) 1 year ago
dependabot[bot] 7d7cfeaa06
Bump @babel/preset-typescript from 7.21.0 to 7.21.4 (#24396) 1 year ago
dependabot[bot] 999d992c10
Bump @babel/core from 7.21.3 to 7.21.4 (#24386) 1 year ago
Matt Jankowski 36eeb70d53
Spec coverage on Settings/ controllers specs (#24221) 1 year ago
Matt Jankowski a2a66300d9
Clean up the post deployment migration generator (#24233) 1 year ago
dependabot[bot] 3c7053a2db
Bump axios from 1.3.4 to 1.3.5 (#24485) 1 year ago
dependabot[bot] 881326ff61
Bump typescript from 5.0.3 to 5.0.4 (#24489) 1 year ago
dependabot[bot] 08d318909c
Bump lint-staged from 13.2.0 to 13.2.1 (#24491) 1 year ago
dependabot[bot] d1aee44ff8
Bump oj from 3.14.2 to 3.14.3 (#24496) 1 year ago
dependabot[bot] 738e179a88
Bump rubocop-performance from 1.16.0 to 1.17.1 (#24497) 1 year ago
dependabot[bot] 376b429f94
Bump stackprof from 0.2.24 to 0.2.25 (#24498) 1 year ago
  1. 2
      .devcontainer/Dockerfile
  2. 3
      .devcontainer/docker-compose.yml
  3. 175
      .eslintrc.js
  4. 114
      .github/renovate.json5
  5. 7
      .github/workflows/build-image.yml
  6. 60
      .github/workflows/build-nightly.yml
  7. 3
      .github/workflows/check-i18n.yml
  8. 3
      .github/workflows/lint-css.yml
  9. 1
      .github/workflows/lint-haml.yml
  10. 5
      .github/workflows/lint-js.yml
  11. 3
      .github/workflows/lint-json.yml
  12. 6
      .github/workflows/lint-md.yml
  13. 1
      .github/workflows/lint-ruby.yml
  14. 3
      .github/workflows/lint-yml.yml
  15. 2
      .github/workflows/rebase-needed.yml
  16. 7
      .github/workflows/test-js.yml
  17. 11
      .github/workflows/test-migrations-one-step.yml
  18. 11
      .github/workflows/test-migrations-two-step.yml
  19. 21
      .github/workflows/test-ruby.yml
  20. 5
      .haml-lint.yml
  21. 4
      .prettierignore
  22. 3
      .prettierrc.js
  23. 2
      .profile
  24. 134
      .rubocop.yml
  25. 1162
      .rubocop_todo.yml
  26. 1
      Aptfile
  27. 48
      CHANGELOG.md
  28. 10
      Dockerfile
  29. 108
      Gemfile
  30. 357
      Gemfile.lock
  31. 52
      app/chewy/accounts_index.rb
  32. 2
      app/controllers/about_controller.rb
  33. 5
      app/controllers/accounts_controller.rb
  34. 4
      app/controllers/activitypub/base_controller.rb
  35. 3
      app/controllers/activitypub/collections_controller.rb
  36. 3
      app/controllers/activitypub/followers_synchronizations_controller.rb
  37. 8
      app/controllers/activitypub/outboxes_controller.rb
  38. 3
      app/controllers/activitypub/replies_controller.rb
  39. 8
      app/controllers/admin/announcements_controller.rb
  40. 6
      app/controllers/admin/base_controller.rb
  41. 10
      app/controllers/admin/dashboard_controller.rb
  42. 44
      app/controllers/admin/domain_blocks_controller.rb
  43. 8
      app/controllers/admin/roles_controller.rb
  44. 8
      app/controllers/admin/rules_controller.rb
  45. 8
      app/controllers/admin/warning_presets_controller.rb
  46. 23
      app/controllers/admin/webhooks_controller.rb
  47. 9
      app/controllers/api/base_controller.rb
  48. 1
      app/controllers/api/v1/accounts/follower_accounts_controller.rb
  49. 1
      app/controllers/api/v1/accounts/following_accounts_controller.rb
  50. 1
      app/controllers/api/v1/accounts/lookup_controller.rb
  51. 1
      app/controllers/api/v1/accounts/statuses_controller.rb
  52. 3
      app/controllers/api/v1/accounts_controller.rb
  53. 2
      app/controllers/api/v1/admin/canonical_email_blocks_controller.rb
  54. 22
      app/controllers/api/v1/admin/domain_allows_controller.rb
  55. 20
      app/controllers/api/v1/admin/domain_blocks_controller.rb
  56. 18
      app/controllers/api/v1/admin/email_domain_blocks_controller.rb
  57. 14
      app/controllers/api/v1/admin/ip_blocks_controller.rb
  58. 72
      app/controllers/api/v1/admin/trends/links/preview_card_providers_controller.rb
  59. 31
      app/controllers/api/v1/admin/trends/links_controller.rb
  60. 31
      app/controllers/api/v1/admin/trends/statuses_controller.rb
  61. 23
      app/controllers/api/v1/admin/trends/tags_controller.rb
  62. 20
      app/controllers/api/v1/conversations_controller.rb
  63. 4
      app/controllers/api/v1/custom_emojis_controller.rb
  64. 35
      app/controllers/api/v1/directories_controller.rb
  65. 12
      app/controllers/api/v1/emails/confirmations_controller.rb
  66. 6
      app/controllers/api/v1/featured_tags_controller.rb
  67. 8
      app/controllers/api/v1/filters_controller.rb
  68. 5
      app/controllers/api/v1/instances/activity_controller.rb
  69. 9
      app/controllers/api/v1/instances/domain_blocks_controller.rb
  70. 10
      app/controllers/api/v1/instances/extended_descriptions_controller.rb
  71. 11
      app/controllers/api/v1/instances/peers_controller.rb
  72. 4
      app/controllers/api/v1/instances/privacy_policies_controller.rb
  73. 9
      app/controllers/api/v1/instances/rules_controller.rb
  74. 4
      app/controllers/api/v1/instances/translation_languages_controller.rb
  75. 11
      app/controllers/api/v1/instances_controller.rb
  76. 2
      app/controllers/api/v1/lists_controller.rb
  77. 11
      app/controllers/api/v1/media_controller.rb
  78. 1
      app/controllers/api/v1/polls_controller.rb
  79. 8
      app/controllers/api/v1/push/subscriptions_controller.rb
  80. 1
      app/controllers/api/v1/statuses/favourited_by_accounts_controller.rb
  81. 7
      app/controllers/api/v1/statuses/histories_controller.rb
  82. 1
      app/controllers/api/v1/statuses/reblogged_by_accounts_controller.rb
  83. 6
      app/controllers/api/v1/statuses/reblogs_controller.rb
  84. 3
      app/controllers/api/v1/statuses_controller.rb
  85. 1
      app/controllers/api/v1/tags_controller.rb
  86. 1
      app/controllers/api/v1/timelines/public_controller.rb
  87. 1
      app/controllers/api/v1/timelines/tag_controller.rb
  88. 3
      app/controllers/api/v1/trends/links_controller.rb
  89. 3
      app/controllers/api/v1/trends/statuses_controller.rb
  90. 1
      app/controllers/api/v1/trends/tags_controller.rb
  91. 8
      app/controllers/api/v2/admin/accounts_controller.rb
  92. 8
      app/controllers/api/v2/filters/keywords_controller.rb
  93. 8
      app/controllers/api/v2/filters/statuses_controller.rb
  94. 8
      app/controllers/api/v2/filters_controller.rb
  95. 2
      app/controllers/api/v2/instances_controller.rb
  96. 3
      app/controllers/api/v2/media_controller.rb
  97. 4
      app/controllers/api/v2/search_controller.rb
  98. 31
      app/controllers/application_controller.rb
  99. 7
      app/controllers/auth/confirmations_controller.rb
  100. 12
      app/controllers/auth/registrations_controller.rb
  101. Some files were not shown because too many files have changed in this diff Show More

@ -1,5 +1,5 @@
# For details, see https://github.com/devcontainers/images/tree/main/src/ruby
FROM mcr.microsoft.com/devcontainers/ruby:0-3.2-bullseye
FROM mcr.microsoft.com/devcontainers/ruby:1-3.2-bullseye
# Install Rails
# RUN gem install rails webdrivers

@ -26,7 +26,6 @@ services:
ports:
- '127.0.0.1:3000:3000'
- '127.0.0.1:4000:4000'
- '127.0.0.1:80:3000'
networks:
- external_network
- internal_network
@ -70,7 +69,7 @@ services:
hard: -1
libretranslate:
image: libretranslate/libretranslate:v1.3.10
image: libretranslate/libretranslate:v1.3.11
restart: unless-stopped
volumes:
- lt-data:/home/libretranslate/.local

@ -4,9 +4,12 @@ module.exports = {
extends: [
'eslint:recommended',
'plugin:react/recommended',
'plugin:react-hooks/recommended',
'plugin:jsx-a11y/recommended',
'plugin:import/recommended',
'plugin:promise/recommended',
'plugin:jsdoc/recommended',
'plugin:prettier/recommended',
],
env: {
@ -27,6 +30,7 @@ module.exports = {
'import',
'promise',
'@typescript-eslint',
'formatjs',
],
parserOptions: {
@ -51,28 +55,14 @@ module.exports = {
'\\.(css|scss|json)$',
],
'import/resolver': {
node: {
paths: ['app/javascript'],
extensions: ['.js', '.jsx', '.ts', '.tsx'],
},
typescript: {},
},
},
rules: {
'brace-style': 'warn',
'comma-dangle': ['error', 'always-multiline'],
'comma-spacing': [
'warn',
{
before: false,
after: true,
},
],
'comma-style': ['warn', 'last'],
'consistent-return': 'error',
'dot-notation': 'error',
eqeqeq: 'error',
indent: ['warn', 2],
eqeqeq: ['error', 'always', { 'null': 'ignore' }],
'jsx-quotes': ['error', 'prefer-single'],
'no-case-declarations': 'off',
'no-catch-shadow': 'error',
@ -91,8 +81,16 @@ module.exports = {
{ property: 'substring', message: 'Use .slice instead of .substring.' },
{ property: 'substr', message: 'Use .slice instead of .substr.' },
],
'no-restricted-syntax': [
'error',
{
// eslint-disable-next-line no-restricted-syntax
selector: 'Literal[value=/•/], JSXText[value=/•/]',
// eslint-disable-next-line no-restricted-syntax
message: "Use '·' (middle dot) instead of '•' (bullet)",
},
],
'no-self-assign': 'off',
'no-trailing-spaces': 'warn',
'no-unused-expressions': 'error',
'no-unused-vars': 'off',
'@typescript-eslint/no-unused-vars': [
@ -100,34 +98,26 @@ module.exports = {
{
vars: 'all',
args: 'after-used',
destructuredArrayIgnorePattern: '^_',
ignoreRestSiblings: true,
},
],
'object-curly-spacing': ['error', 'always'],
'padded-blocks': [
'error',
{
classes: 'always',
},
],
quotes: ['error', 'single'],
semi: 'error',
'valid-typeof': 'error',
'react/jsx-filename-extension': ['error', { extensions: ['.jsx', 'tsx'] }],
'react/jsx-boolean-value': 'error',
'react/jsx-closing-bracket-location': ['error', 'line-aligned'],
'react/jsx-curly-spacing': 'error',
'react/display-name': 'off',
'react/jsx-fragments': ['error', 'syntax'],
'react/jsx-equals-spacing': 'error',
'react/jsx-first-prop-new-line': ['error', 'multiline-multiprop'],
'react/jsx-indent': ['error', 2],
'react/jsx-no-bind': 'error',
'react/jsx-no-useless-fragment': 'error',
'react/jsx-no-target-blank': 'off',
'react/jsx-tag-spacing': 'error',
'react/jsx-uses-react': 'off', // not needed with new JSX transform
'react/jsx-wrap-multilines': 'error',
'react/no-deprecated': 'off',
'react/no-unknown-property': 'off',
'react/react-in-jsx-scope': 'off', // not needed with new JSX transform
'react/self-closing-comp': 'error',
// recommended values found in https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/src/index.js
@ -190,11 +180,14 @@ module.exports = {
{
js: 'never',
jsx: 'never',
mjs: 'never',
ts: 'never',
tsx: 'never',
},
],
'import/first': 'error',
'import/newline-after-import': 'error',
'import/no-anonymous-default-export': 'error',
'import/no-extraneous-dependencies': [
'error',
{
@ -206,8 +199,63 @@ module.exports = {
],
},
],
'import/no-amd': 'error',
'import/no-commonjs': 'error',
'import/no-import-module-exports': 'error',
'import/no-relative-packages': 'error',
'import/no-self-import': 'error',
'import/no-useless-path-segments': 'error',
'import/no-webpack-loader-syntax': 'error',
'import/order': [
'error',
{
alphabetize: { order: 'asc' },
'newlines-between': 'always',
groups: [
'builtin',
'external',
'internal',
'parent',
['index', 'sibling'],
'object',
],
pathGroups: [
// React core packages
{
pattern: '{react,react-dom,react-dom/client,prop-types}',
group: 'builtin',
position: 'after',
},
// I18n
{
pattern: '{react-intl,intl-messageformat}',
group: 'builtin',
position: 'after',
},
// Common React utilities
{
pattern: '{classnames,react-helmet,react-router-dom}',
group: 'external',
position: 'before',
},
// Immutable / Redux / data store
{
pattern: '{immutable,react-redux,react-immutable-proptypes,react-immutable-pure-component,reselect}',
group: 'external',
position: 'before',
},
// Internal packages
{
pattern: '{mastodon/**,flavours/glitch-soc/**}',
group: 'internal',
position: 'after',
},
],
pathGroupsExcludedImportTypes: [],
},
],
'promise/always-return': 'off',
'promise/catch-or-return': [
'error',
@ -218,6 +266,33 @@ module.exports = {
'promise/no-callback-in-promise': 'off',
'promise/no-nesting': 'off',
'promise/no-promise-in-callback': 'off',
'formatjs/blocklist-elements': 'error',
'formatjs/enforce-default-message': ['error', 'literal'],
'formatjs/enforce-description': 'off', // description values not currently used
'formatjs/enforce-id': 'off', // Explicit IDs are used in the project
'formatjs/enforce-placeholders': 'off', // Issues in short_number.jsx
'formatjs/enforce-plural-rules': 'error',
'formatjs/no-camel-case': 'off', // disabledAccount is only non-conforming
'formatjs/no-complex-selectors': 'error',
'formatjs/no-emoji': 'error',
'formatjs/no-id': 'off', // IDs are used for translation keys
'formatjs/no-invalid-icu': 'error',
'formatjs/no-literal-string-in-jsx': 'off', // Should be looked at, but mainly flagging punctuation outside of strings
'formatjs/no-multiple-plurals': 'off', // Only used by hashtag.jsx
'formatjs/no-multiple-whitespaces': 'error',
'formatjs/no-offset': 'error',
'formatjs/no-useless-message': 'error',
'formatjs/prefer-formatted-message': 'error',
'formatjs/prefer-pound-in-plural': 'error',
'jsdoc/check-types': 'off',
'jsdoc/no-undefined-types': 'off',
'jsdoc/require-jsdoc': 'off',
'jsdoc/require-param-description': 'off',
'jsdoc/require-property-description': 'off',
'jsdoc/require-returns-description': 'off',
'jsdoc/require-returns': 'off',
},
overrides: [
@ -226,6 +301,8 @@ module.exports = {
'*.config.js',
'.*rc.js',
'ide-helper.js',
'config/webpack/**/*',
'config/formatjs-formatter.js',
],
env: {
@ -235,6 +312,10 @@ module.exports = {
parserOptions: {
sourceType: 'script',
},
rules: {
'import/no-commonjs': 'off',
},
},
{
files: [
@ -245,15 +326,39 @@ module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/recommended-requiring-type-checking',
'plugin:react/recommended',
'plugin:react-hooks/recommended',
'plugin:jsx-a11y/recommended',
'plugin:import/recommended',
'plugin:import/typescript',
'plugin:promise/recommended',
'plugin:jsdoc/recommended-typescript',
'plugin:prettier/recommended',
],
parserOptions: {
project: './tsconfig.json',
tsconfigRootDir: __dirname,
},
rules: {
'@typescript-eslint/no-explicit-any': 'off',
'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
'@typescript-eslint/consistent-type-definitions': ['warn', 'interface'],
'@typescript-eslint/consistent-type-exports': 'error',
'@typescript-eslint/consistent-type-imports': 'error',
'jsdoc/require-jsdoc': 'off',
// Those rules set stricter rules for TS files
// to enforce better practices when converting from JS
'import/no-default-export': 'warn',
'react/prefer-stateless-function': 'warn',
'react/function-component-definition': ['error', { namedComponents: 'arrow-function' }],
'react/jsx-uses-react': 'off', // not needed with new JSX transform
'react/react-in-jsx-scope': 'off', // not needed with new JSX transform
'react/prop-types': 'off',
},
},
{
@ -266,5 +371,13 @@ module.exports = {
jest: true,
},
},
{
files: [
'streaming/**/*',
],
rules: {
'import/no-commonjs': 'off',
},
},
],
};

@ -0,0 +1,114 @@
{
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
extends: [
'config:base',
':dependencyDashboard',
':labels(dependencies)',
':maintainLockFilesMonthly', // update non-direct dependencies monthly
':prConcurrentLimit10', // only 10 open PRs at the same time
],
stabilityDays: 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
packageRules: [
{
// Ignore major version bumps for 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
// Requires Webpacker upgrade or replacement
'@types/webpack',
'babel-loader',
'compression-webpack-plugin',
'css-loader',
'imports-loader',
'mini-css-extract-plugin',
'postcss-loader',
'sass-loader',
'terser-webpack-plugin',
'webpack',
'webpack-assets-manifest',
'webpack-bundle-analyzer',
'webpack-dev-server',
'webpack-cli',
// react-router: Requires manual upgrade
'history',
'react-router-dom',
],
matchUpdateTypes: ['major'],
enabled: false,
},
{
// Ignore major version bumps for these Ruby packages
matchManagers: ['bundler'],
matchPackageNames: [
'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,
},
{
// Update Github Actions and Docker images weekly
matchManagers: ['github-actions', 'dockerfile', 'docker-compose'],
extends: ['schedule:weekly'],
},
{
// Ignore 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,
},
{
// Ignore major bump for the node image, this needs to be synced with .nvmrc
matchManagers: ['dockerfile'],
matchPackageNames: ['node'],
matchUpdateTypes: ['major'],
enabled: false,
},
{
// Ignore major postgres bumps in the docker-compose file, as those break dev environments
matchManagers: ['docker-compose'],
matchPackageNames: ['postgres'],
matchUpdateTypes: ['major'],
enabled: false,
},
{
// 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'],
},
{
// Update @types/* packages every week, with one grouped PR
matchPackagePrefixes: '@types/',
matchUpdateTypes: ['patch', 'minor'],
groupName: 'DefinitelyTyped types (non-major)',
extends: ['schedule:weekly'],
addLabels: ['typescript'],
},
// Add labels depending on package manager
{ matchManagers: ['npm', 'nvm'], addLabels: ['javascript'] },
{ matchManagers: ['bundler', 'ruby-version'], addLabels: ['ruby'] },
{ matchManagers: ['docker-compose', 'dockerfile'], addLabels: ['docker'] },
{ matchManagers: ['github-actions'], addLabels: ['github_actions'] },
],
}

@ -43,9 +43,16 @@ jobs:
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 }}

@ -0,0 +1,60 @@
name: Build nightly container image
on:
workflow_dispatch:
schedule:
- cron: '0 2 * * *' # run at 2 AM UTC
permissions:
contents: read
packages: write
jobs:
build-nightly-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 }}
- 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
run: |
echo mastodon_version_suffix=+nightly-$(date +'%Y%m%d') >> $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.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

@ -41,8 +41,7 @@ jobs:
- name: Check for missing strings in English JSON
run: |
yarn build:development
yarn manage:translations
yarn i18n:extract --throws
git diff --exit-code
- name: Check locale file normalization

@ -3,6 +3,7 @@ on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
paths:
- 'package.json'
- 'yarn.lock'
@ -48,4 +49,4 @@ jobs:
- run: echo "::add-matcher::.github/stylelint-matcher.json"
- name: Stylelint
run: yarn test:lint:sass
run: yarn lint:sass

@ -3,6 +3,7 @@ on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
paths:
- '.github/workflows/haml-lint-problem-matcher.json'
- '.github/workflows/lint-haml.yml'

@ -3,6 +3,7 @@ on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
paths:
- 'package.json'
- 'yarn.lock'
@ -48,7 +49,7 @@ jobs:
run: yarn --frozen-lockfile
- name: ESLint
run: yarn test:lint:js
run: yarn lint:js --max-warnings 0
- name: Typecheck
run: yarn test:typecheck
run: yarn typecheck

@ -3,6 +3,7 @@ on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
paths:
- 'package.json'
- 'yarn.lock'
@ -40,4 +41,4 @@ jobs:
run: yarn --frozen-lockfile
- name: Prettier
run: yarn prettier --check "**/*.json"
run: yarn lint:json

@ -3,8 +3,10 @@ on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
paths:
- '.github/workflows/lint-md.yml'
- '.nvmrc'
- '.prettier*'
- '**/*.md'
- '!AUTHORS.md'
@ -14,6 +16,7 @@ on:
pull_request:
paths:
- '.github/workflows/lint-md.yml'
- '.nvmrc'
- '.prettier*'
- '**/*.md'
- '!AUTHORS.md'
@ -32,9 +35,10 @@ jobs:
uses: actions/setup-node@v3
with:
cache: yarn
node-version-file: '.nvmrc'
- name: Install all yarn packages
run: yarn --frozen-lockfile
- name: Prettier
run: yarn prettier --check "**/*.md"
run: yarn lint:md

@ -3,6 +3,7 @@ on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
paths:
- 'Gemfile*'
- '.rubocop*.yml'

@ -3,6 +3,7 @@ on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
paths:
- 'package.json'
- 'yarn.lock'
@ -42,4 +43,4 @@ jobs:
run: yarn --frozen-lockfile
- name: Prettier
run: yarn prettier --check "**/*.{yml,yaml}"
run: yarn lint:yml

@ -4,10 +4,12 @@ on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
- 'l10n_main'
pull_request_target:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
- 'l10n_main'
types: [synchronize]

@ -3,12 +3,15 @@ on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
paths:
- 'package.json'
- 'yarn.lock'
- '.nvmrc'
- '**/*.js'
- '**/*.jsx'
- '**/*.ts'
- '**/*.tsx'
- '**/*.snap'
- '.github/workflows/test-js.yml'
@ -19,6 +22,8 @@ on:
- '.nvmrc'
- '**/*.js'
- '**/*.jsx'
- '**/*.ts'
- '**/*.tsx'
- '**/*.snap'
- '.github/workflows/test-js.yml'
@ -40,4 +45,4 @@ jobs:
run: yarn --frozen-lockfile
- name: Jest testing
run: yarn test:jest --reporters github-actions summary
run: yarn jest --reporters github-actions summary

@ -3,6 +3,7 @@ on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
pull_request:
jobs:
@ -23,9 +24,17 @@ jobs:
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
strategy:
fail-fast: false
matrix:
postgres:
- 14-alpine
- 15-alpine
services:
postgres:
image: postgres:14-alpine
image: postgres:${{ matrix.postgres}}
env:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres

@ -3,6 +3,7 @@ on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
pull_request:
jobs:
@ -23,9 +24,17 @@ jobs:
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
strategy:
fail-fast: false
matrix:
postgres:
- 14-alpine
- 15-alpine
services:
postgres:
image: postgres:14-alpine
image: postgres:${{ matrix.postgres}}
env:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres

@ -4,12 +4,12 @@ on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
pull_request:
env:
BUNDLE_CLEAN: true
BUNDLE_FROZEN: true
BUNDLE_WITHOUT: 'development production'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@ -19,8 +19,17 @@ jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
mode:
- production
- test
env:
RAILS_ENV: test
RAILS_ENV: ${{ matrix.mode }}
BUNDLE_WITH: ${{ matrix.mode }}
OTP_SECRET: precompile_placeholder
SECRET_KEY_BASE: precompile_placeholder
steps:
- uses: actions/checkout@v3
@ -50,6 +59,7 @@ jobs:
./bin/rails assets:precompile
- uses: actions/upload-artifact@v3
if: matrix.mode == 'test'
with:
path: |-
./public/assets
@ -97,14 +107,13 @@ jobs:
PAM_ENABLED: true
PAM_DEFAULT_SERVICE: pam_test
PAM_CONTROLLED_SERVICE: pam_test_controlled
BUNDLE_WITH: 'pam_authentication'
BUNDLE_WITH: 'pam_authentication test'
CI_JOBS: ${{ matrix.ci_job }}/4
strategy:
fail-fast: false
matrix:
ruby-version:
- '2.7'
- '3.0'
- '3.1'
- '.ruby-version'
@ -136,10 +145,6 @@ jobs:
ruby-version: ${{ matrix.ruby-version}}
bundler-cache: true
- name: Update system gems
if: matrix.ruby-version == '2.7'
run: gem update --system
- name: Load database schema
run: './bin/rails db:create db:schema:load db:seed'

@ -4,6 +4,11 @@ exclude:
- 'vendor/**/*'
- lib/templates/haml/scaffold/_form.html.haml
require:
- ./lib/linter/haml_middle_dot.rb
linters:
AltText:
enabled: true
MiddleDot:
enabled: true

@ -61,7 +61,7 @@ docker-compose.override.yml
/app/javascript/mastodon/features/emoji/emoji_map.json
# Ignore locale files
/app/javascript/mastodon/locales
/app/javascript/mastodon/locales/*.json
/config/locales
# Ignore vendored CSS reset
@ -70,8 +70,6 @@ app/javascript/styles/mastodon/reset.scss
# Ignore Javascript pending https://github.com/mastodon/mastodon/pull/23631
*.js
*.jsx
*.ts
*.tsx
# Ignore HTML till cleaned and included in CI
*.html

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

@ -1 +1 @@
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/app/.apt/lib/x86_64-linux-gnu:/app/.apt/usr/lib/x86_64-linux-gnu/mesa:/app/.apt/usr/lib/x86_64-linux-gnu/pulseaudio
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/app/.apt/lib/x86_64-linux-gnu:/app/.apt/usr/lib/x86_64-linux-gnu/mesa:/app/.apt/usr/lib/x86_64-linux-gnu/pulseaudio:/app/.apt/usr/lib/x86_64-linux-gnu/openblas-pthread

@ -11,9 +11,10 @@ require:
- rubocop-rspec
- rubocop-performance
- rubocop-capybara
- ./lib/linter/rubocop_middle_dot
AllCops:
TargetRubyVersion: 2.7 # Set to minimum supported version of CI
TargetRubyVersion: 3.0 # Set to minimum supported version of CI
DisplayCopNames: true
DisplayStyleGuide: true
ExtraDetails: true
@ -43,7 +44,7 @@ Layout/LineLength:
- !ruby/regexp / \# .*$/
- !ruby/regexp /^\# .*$/
Exclude:
- lib/**/*cli*.rb
- 'lib/mastodon/cli/*.rb'
- db/*migrate/**/*
- db/seeds/**/*
@ -53,123 +54,69 @@ Lint/UselessAccessModifier:
ContextCreatingMethods:
- class_methods
## Disable most Metrics/*Length cops
# Reason: those are often triggered and force significant refactors when this happend
# but the team feel they are not really improving the code quality.
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsblocklength
Metrics/BlockLength:
Enabled: false
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsclasslength
Metrics/ClassLength:
Enabled: false
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsmethodlength
Metrics/MethodLength:
Enabled: false
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsmodulelength
Metrics/ModuleLength:
Enabled: false
## End Disable Metrics/*Length cops
# Reason: Currently disabled in .rubocop_todo.yml
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsabcsize
Metrics/AbcSize:
Exclude:
- 'lib/**/*cli*.rb'
- 'lib/mastodon/cli/*.rb'
- db/*migrate/**/*
# Reason: Some functions cannot be broken up, but others may be refactor candidates
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsblocklength
Metrics/BlockLength:
CountAsOne: ['array', 'hash', 'heredoc', 'method_call']
Exclude:
- 'lib/mastodon/*_cli.rb'
- 'lib/tasks/*.rake'
- 'app/models/concerns/account_associations.rb'
- 'app/models/concerns/account_interactions.rb'
- 'app/models/concerns/ldap_authenticable.rb'
- 'app/models/concerns/omniauthable.rb'
- 'app/models/concerns/pam_authenticable.rb'
- 'app/models/concerns/remotable.rb'
- 'app/services/suspend_account_service.rb'
- 'app/services/unsuspend_account_service.rb'
- 'app/views/accounts/show.rss.ruby'
- 'app/views/tags/show.rss.ruby'
- 'config/environments/development.rb'
- 'config/environments/production.rb'
- 'config/initializers/devise.rb'
- 'config/initializers/doorkeeper.rb'
- 'config/initializers/omniauth.rb'
- 'config/initializers/simple_form.rb'
- 'config/navigation.rb'
- 'config/routes.rb'
- 'db/post_migrate/20221101190723_backfill_admin_action_logs.rb'
- 'db/post_migrate/20221206114142_backfill_admin_action_logs_again.rb'
- 'lib/paperclip/gif_transcoder.rb'
# Reason:
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsblocknesting
Metrics/BlockNesting:
Exclude:
- 'lib/mastodon/*_cli.rb'
# Reason: Some Excluded files would be candidates for refactoring but not currently addressed
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsclasslength
Metrics/ClassLength:
CountAsOne: ['array', 'hash', 'heredoc', 'method_call']
Exclude:
- 'lib/mastodon/*_cli.rb'
- 'app/controllers/admin/accounts_controller.rb'
- 'app/controllers/api/base_controller.rb'
- 'app/controllers/api/v1/admin/accounts_controller.rb'
- 'app/controllers/application_controller.rb'
- 'app/controllers/auth/registrations_controller.rb'
- 'app/controllers/auth/sessions_controller.rb'
- 'app/lib/activitypub/activity.rb'
- 'app/lib/activitypub/activity/create.rb'
- 'app/lib/activitypub/tag_manager.rb'
- 'app/lib/feed_manager.rb'
- 'app/lib/link_details_extractor.rb'
- 'app/lib/request.rb'
- 'app/lib/text_formatter.rb'
- 'app/lib/user_settings_decorator.rb'
- 'app/mailers/user_mailer.rb'
- 'app/models/account.rb'
- 'app/models/admin/account_action.rb'
- 'app/models/form/account_batch.rb'
- 'app/models/media_attachment.rb'
- 'app/models/status.rb'
- 'app/models/tag.rb'
- 'app/models/user.rb'
- 'app/serializers/activitypub/actor_serializer.rb'
- 'app/serializers/activitypub/note_serializer.rb'
- 'app/serializers/rest/status_serializer.rb'
- 'app/services/account_search_service.rb'
- 'app/services/activitypub/process_account_service.rb'
- 'app/services/activitypub/process_status_update_service.rb'
- 'app/services/backup_service.rb'
- 'app/services/delete_account_service.rb'
- 'app/services/fan_out_on_write_service.rb'
- 'app/services/fetch_link_card_service.rb'
- 'app/services/import_service.rb'
- 'app/services/notify_service.rb'
- 'app/services/post_status_service.rb'
- 'app/services/update_status_service.rb'
- 'lib/paperclip/color_extractor.rb'
- 'lib/mastodon/cli/*.rb'
# Reason: Currently disabled in .rubocop_todo.yml
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricscyclomaticcomplexity
Metrics/CyclomaticComplexity:
Exclude:
- lib/mastodon/*cli*.rb
- lib/mastodon/cli/*.rb
- db/*migrate/**/*
# Reason: Currently disabled in .rubocop_todo.yml
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsmethodlength
Metrics/MethodLength:
CountAsOne: [array, heredoc]
Exclude:
- 'lib/mastodon/*_cli.rb'
# Reason:
# https://docs.rubocop.org/rubocop/cops_style.html#stylerescuestandarderror
Metrics/ModuleLength:
CountAsOne: [array, heredoc]
# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsparameterlists
Metrics/ParameterLists:
CountKeywordArgs: false
# Reason: Prevailing style is argument file paths
# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsfilepath
Rails/FilePath:
EnforcedStyle: arguments
# Reason: Prevailing style uses numeric status codes, matches RSpec/Rails/HttpStatus
# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railshttpstatus
Rails/HttpStatus:
EnforcedStyle: numeric
# Reason: Allowed only in the `tootctl` CLI application code
# Reason: Allowed in `tootctl` CLI code and in boot ENV checker
# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsexit
Rails/Exit:
Exclude:
- 'lib/mastodon/*_cli.rb'
- 'lib/mastodon/cli_helper.rb'
- 'lib/cli.rb'
- 'config/boot.rb'
- 'lib/mastodon/cli/*.rb'
# Reason: Some single letter camel case files shouldn't be split
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath
@ -259,3 +206,6 @@ Style/TrailingCommaInArrayLiteral:
# https://docs.rubocop.org/rubocop/cops_style.html#styletrailingcommainhashliteral
Style/TrailingCommaInHashLiteral:
EnforcedStyleForMultiline: 'comma'
Style/MiddleDot:
Enabled: true

File diff suppressed because it is too large Load Diff

@ -1,4 +1,5 @@
ffmpeg
libopenblas0-pthread
libpq-dev
libxdamage1
libxfixes3

@ -2,6 +2,54 @@
All notable changes to this project will be documented in this file.
## [4.1.3] - 2023-07-06
### Added
- Add fallback redirection when getting a webfinger query `LOCAL_DOMAIN@LOCAL_DOMAIN` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23600))
### Changed
- Change OpenGraph-based embeds to allow fullscreen ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25058))
- Change AccessTokensVacuum to also delete expired tokens ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24868))
- Change profile updates to be sent to recently-mentioned servers ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24852))
- Change automatic post deletion thresholds and load detection ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24614))
- Change `/api/v1/statuses/:id/history` to always return at least one item ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25510))
- Change auto-linking to allow carets in URL query params ([renchap](https://github.com/mastodon/mastodon/pull/25216))
### Removed
- Remove invalid `X-Frame-Options: ALLOWALL` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25070))
### Fixed
- Fix wrong view being displayed when a webhook fails validation ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25464))
- Fix soft-deleted post cleanup scheduler overwhelming the streaming server ([ThisIsMissEm](https://github.com/mastodon/mastodon/pull/25519))
- Fix incorrect pagination headers in `/api/v2/admin/accounts` ([danielmbrasil](https://github.com/mastodon/mastodon/pull/25477))
- 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 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))
- Fix “Authorized applications” inefficiently and incorrectly getting last use date ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25060))
- Fix “Authorized applications” crashing when listing apps with certain admin API scopes ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25713))
- Fix multiple N+1s in ConversationsController ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25134), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25399), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/25499))
- Fix user archive takeouts when using OpenStack Swift ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/24431))
- Fix searching for remote content by URL not working under certain conditions ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25637))
- Fix inefficiencies in indexing content for search ([VyrCossont](https://github.com/mastodon/mastodon/pull/24285), [VyrCossont](https://github.com/mastodon/mastodon/pull/24342))
### Security
- Add finer permission requirements for managing webhooks ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25463))
- Update dependencies
- Add hardening headers for user-uploaded files ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/25756))
- Fix verified links possibly hiding important parts of the URL (CVE-2023-36462)
- Fix timeout handling of outbound HTTP requests (CVE-2023-36461)
- Fix arbitrary file creation through media processing (CVE-2023-36460)
- Fix possible XSS in preview cards (CVE-2023-36459)
## [4.1.2] - 2023-04-04
### Fixed

@ -41,6 +41,10 @@ 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 UID="991"
ARG GID="991"
@ -51,7 +55,7 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ENV DEBIAN_FRONTEND="noninteractive" \
PATH="${PATH}:/opt/ruby/bin:/opt/mastodon/bin"
# Ignoreing these here since we don't want to pin any versions and the Debian image removes apt-get content after use
# Ignoring these here since we don't want to pin any versions and the Debian image removes apt-get content after use
# hadolint ignore=DL3008,DL3009
RUN apt-get update && \
echo "Etc/UTC" > /etc/localtime && \
@ -84,7 +88,9 @@ COPY --chown=mastodon:mastodon --from=build /opt/mastodon /opt/mastodon
ENV RAILS_ENV="production" \
NODE_ENV="production" \
RAILS_SERVE_STATIC_FILES="true" \
BIND="0.0.0.0"
BIND="0.0.0.0" \
MASTODON_VERSION_FLAGS="${MASTODON_VERSION_FLAGS}" \
MASTODON_VERSION_SUFFIX="${MASTODON_VERSION_SUFFIX}"
# Set the run user
USER mastodon

@ -1,26 +1,24 @@
# frozen_string_literal: true
source 'https://rubygems.org'
ruby '>= 2.7.0', '< 3.3.0'
ruby '>= 3.0.0'
gem 'pkg-config', '~> 1.5'
gem 'puma', '~> 6.2'
gem 'puma', '~> 6.3'
gem 'rails', '~> 6.1.7'
gem 'sprockets', '~> 3.7.2'
gem 'thor', '~> 1.2'
gem 'rack', '~> 2.2.6'
gem 'rack', '~> 2.2.7'
gem 'haml-rails', '~>2.0'
gem 'pg', '~> 1.4'
gem 'pg', '~> 1.5'
gem 'makara', '~> 0.5'
gem 'pghero'
gem 'dotenv-rails', '~> 2.8'
gem 'aws-sdk-s3', '~> 1.120', require: false
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.1', github: 'kreeti/kt-paperclip', ref: '11abf222dc31bff71160a1d138b445214f434b2b'
gem 'kt-paperclip', '~> 7.2'
gem 'blurhash', '~> 0.1'
gem 'active_model_serializers', '~> 0.10'
@ -28,15 +26,15 @@ gem 'addressable', '~> 2.8'
gem 'bootsnap', '~> 1.16.0', require: false
gem 'browser'
gem 'charlock_holmes', '~> 0.7.7'
gem 'chewy', '~> 7.2'
gem 'chewy', '~> 7.3'
gem 'devise', '~> 4.9'
gem 'devise-two-factor', '~> 4.0'
gem 'devise-two-factor', '~> 4.1'
group :pam_authentication, optional: true do
gem 'devise_pam_authenticatable2', '~> 9.2'
end
gem 'net-ldap', '~> 0.17'
gem 'net-ldap', '~> 0.18'
gem 'omniauth-cas', '~> 2.0'
gem 'omniauth-saml', '~> 1.10'
gem 'omniauth_openid_connect', '~> 0.6.1'
@ -59,8 +57,7 @@ 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 'nokogiri', '~> 1.14'
gem 'nsa', '~> 0.2'
gem 'nokogiri', '~> 1.15'
gem 'oj', '~> 3.14'
gem 'ox', '~> 2.14'
gem 'parslet'
@ -75,8 +72,8 @@ gem 'rails-settings-cached', '~> 0.6', git: 'https://github.com/mastodon/rails-s
gem 'redcarpet', '~> 3.6'
gem 'redis', '~> 4.5', require: ['redis', 'redis/connection/hiredis']
gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
gem 'rqrcode', '~> 2.1'
gem 'ruby-progressbar', '~> 1.11'
gem 'rqrcode', '~> 2.2'
gem 'ruby-progressbar', '~> 1.13'
gem 'sanitize', '~> 6.0'
gem 'scenic', '~> 1.7'
gem 'sidekiq', '~> 6.5'
@ -99,54 +96,87 @@ gem 'json-ld'
gem 'json-ld-preloaded', '~> 3.2'
gem 'rdf-normalize', '~> 0.5'
group :development, :test do
gem 'fabrication', '~> 2.30'
gem 'fuubar', '~> 2.5'
gem 'i18n-tasks', '~> 1.0', require: false
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'
gem 'rubocop-capybara', require: false
gem 'rubocop-performance', require: false
gem 'rubocop-rails', require: false
gem 'rubocop-rspec', require: false
gem 'rubocop', require: false
end
# RSpec progress bar formatter
gem 'fuubar', '~> 2.5'
group :production, :test do
gem 'private_address_check', '~> 0.5'
end
# Extra RSpec extenion methods and helpers for sidekiq
gem 'rspec-sidekiq', '~> 3.1'
group :test do
# Browser integration testing
gem 'capybara', '~> 3.39'
gem 'climate_control'
gem 'faker', '~> 3.1'
gem 'json-schema', '~> 3.0'
gem 'rack-test', '~> 2.1'
# Used to mock environment variables
gem 'climate_control', '~> 0.2'
# Generating fake data for specs
gem 'faker', '~> 3.2'
# Generate test objects for specs
gem 'fabrication', '~> 2.30'
# Add back helpers functions removed in Rails 5.1
gem 'rails-controller-testing', '~> 1.0'
gem 'rspec_junit_formatter', '~> 0.6'
gem 'rspec-sidekiq', '~> 3.1'
# Validate schemas in specs
gem 'json-schema', '~> 4.0'
# Test harness fo rack components
gem 'rack-test', '~> 2.1'
# Coverage formatter for RSpec test if DISABLE_SIMPLECOV is false
gem 'simplecov', '~> 0.22', require: false
# Stub web requests for specs
gem 'webmock', '~> 3.18'
end
group :development do
# Code linting CLI and plugins
gem 'rubocop', require: false
gem 'rubocop-capybara', require: false
gem 'rubocop-performance', require: false
gem 'rubocop-rails', require: false
gem 'rubocop-rspec', require: false
# Annotates modules with schema
gem 'annotate', '~> 3.2'
# Enhanced error message pages for development
gem 'better_errors', '~> 2.9'
gem 'binding_of_caller', '~> 1.0'
# Preview mail in the browser
gem 'letter_opener', '~> 1.8'
gem 'letter_opener_web', '~> 2.0'
gem 'memory_profiler'
# Security analysis CLI tools
gem 'brakeman', '~> 5.4', 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'
gem 'stackprof'
# Validate missing i18n keys
gem 'i18n-tasks', '~> 1.0', require: false
# Profiling tools
gem 'memory_profiler', require: false
gem 'stackprof', require: false
end
group :production do
@ -157,7 +187,9 @@ gem 'concurrent-ruby', require: false
gem 'connection_pool', require: false
gem 'xorcist', '~> 1.1'
gem 'hcaptcha', '~> 7.1'
gem 'cocoon', '~> 1.2'
gem 'net-http', '~> 0.3.2'
gem 'rubyzip', '~> 2.3'
gem 'hcaptcha', '~> 7.1'

@ -7,18 +7,6 @@ GIT
hkdf (~> 0.2)
jwt (~> 2.0)
GIT
remote: https://github.com/kreeti/kt-paperclip.git
revision: 11abf222dc31bff71160a1d138b445214f434b2b
ref: 11abf222dc31bff71160a1d138b445214f434b2b
specs:
kt-paperclip (7.1.1)
activemodel (>= 4.2.0)
activesupport (>= 4.2.0)
marcel (~> 1.0.1)
mime-types
terrapin (~> 0.6.0)
GIT
remote: https://github.com/mastodon/rails-settings-cached.git
revision: 86328ef0bd04ce21cc0504ff5e334591e8c2ccab
@ -30,40 +18,40 @@ GIT
GEM
remote: https://rubygems.org/
specs:
actioncable (6.1.7.3)
actionpack (= 6.1.7.3)
activesupport (= 6.1.7.3)
actioncable (6.1.7.4)
actionpack (= 6.1.7.4)
activesupport (= 6.1.7.4)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (6.1.7.3)
actionpack (= 6.1.7.3)
activejob (= 6.1.7.3)
activerecord (= 6.1.7.3)
activestorage (= 6.1.7.3)
activesupport (= 6.1.7.3)
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)
mail (>= 2.7.1)
actionmailer (6.1.7.3)
actionpack (= 6.1.7.3)
actionview (= 6.1.7.3)
activejob (= 6.1.7.3)
activesupport (= 6.1.7.3)
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)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (6.1.7.3)
actionview (= 6.1.7.3)
activesupport (= 6.1.7.3)
actionpack (6.1.7.4)
actionview (= 6.1.7.4)
activesupport (= 6.1.7.4)
rack (~> 2.0, >= 2.0.9)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actiontext (6.1.7.3)
actionpack (= 6.1.7.3)
activerecord (= 6.1.7.3)
activestorage (= 6.1.7.3)
activesupport (= 6.1.7.3)
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)
nokogiri (>= 1.8.5)
actionview (6.1.7.3)
activesupport (= 6.1.7.3)
actionview (6.1.7.4)
activesupport (= 6.1.7.4)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
@ -73,28 +61,28 @@ GEM
activemodel (>= 4.1, < 7.1)
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
activejob (6.1.7.3)
activesupport (= 6.1.7.3)
activejob (6.1.7.4)
activesupport (= 6.1.7.4)
globalid (>= 0.3.6)
activemodel (6.1.7.3)
activesupport (= 6.1.7.3)
activerecord (6.1.7.3)
activemodel (= 6.1.7.3)
activesupport (= 6.1.7.3)
activestorage (6.1.7.3)
actionpack (= 6.1.7.3)
activejob (= 6.1.7.3)
activerecord (= 6.1.7.3)
activesupport (= 6.1.7.3)
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)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (6.1.7.3)
activesupport (6.1.7.4)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
addressable (2.8.2)
addressable (2.8.4)
public_suffix (>= 2.0.2, < 6.0)
aes_key_wrap (1.1.0)
airbrussh (1.4.1)
@ -104,31 +92,31 @@ GEM
activerecord (>= 3.2, < 8.0)
rake (>= 10.4, < 14.0)
ast (2.4.2)
attr_encrypted (3.1.0)
attr_encrypted (4.0.0)
encryptor (~> 3.0.0)
attr_required (1.0.1)
awrence (1.2.1)
aws-eventstream (1.2.0)
aws-partitions (1.739.0)
aws-sdk-core (3.171.0)
aws-partitions (1.780.0)
aws-sdk-core (3.175.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.63.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-kms (1.67.0)
aws-sdk-core (~> 3, >= 3.174.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.120.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-s3 (1.126.0)
aws-sdk-core (~> 3, >= 3.174.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
aws-sigv4 (1.5.2)
aws-eventstream (~> 1, >= 1.0.2)
bcrypt (3.1.18)
better_errors (2.9.1)
coderay (>= 1.0.0)
better_errors (2.10.1)
erubi (>= 1.0.0)
rack (>= 0.9.0)
rouge (>= 1.0.0)
better_html (2.0.1)
actionview (>= 6.0)
activesupport (>= 6.0)
@ -142,7 +130,7 @@ GEM
blurhash (0.1.7)
bootsnap (1.16.0)
msgpack (~> 1.2)
brakeman (5.4.0)
brakeman (5.4.1)
browser (5.3.1)
brpoplpush-redis_script (0.1.3)
concurrent-ruby (~> 1.0, >= 1.0.5)
@ -151,12 +139,12 @@ GEM
bundler-audit (0.9.1)
bundler (>= 1.2.0, < 3)
thor (~> 1.0)
capistrano (3.17.2)
capistrano (3.17.3)
airbrussh (>= 1.0.0)
i18n
rake (>= 10.0.0)
sshkit (>= 1.9.0)
capistrano-bundler (2.0.1)
capistrano-bundler (2.1.0)
capistrano (~> 3.1)
capistrano-rails (1.6.2)
capistrano (~> 3.1)
@ -166,7 +154,7 @@ GEM
sshkit (~> 1.3)
capistrano-yarn (2.0.2)
capistrano (~> 3.0)
capybara (3.39.0)
capybara (3.39.2)
addressable
matrix
mini_mime (>= 0.1.3)
@ -179,36 +167,35 @@ GEM
activesupport
cbor (0.5.9.6)
charlock_holmes (0.7.7)
chewy (7.2.7)
chewy (7.3.2)
activesupport (>= 5.2)
elasticsearch (>= 7.12.0, < 7.14.0)
elasticsearch-dsl
chunky_png (1.4.0)
climate_control (0.2.0)
cocoon (1.2.15)
coderay (1.1.3)
color_diff (0.1)
concurrent-ruby (1.2.2)
connection_pool (2.3.0)
connection_pool (2.4.1)
cose (1.3.0)
cbor (~> 0.5.9)
openssl-signature_algorithm (~> 1.0)
crack (0.4.5)
rexml
crass (1.0.6)
css_parser (1.12.0)
css_parser (1.14.0)
addressable
date (3.3.3)
debug_inspector (1.0.0)
debug_inspector (1.1.0)
devise (4.9.2)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
responders
warden (~> 1.2.3)
devise-two-factor (4.0.2)
devise-two-factor (4.1.0)
activesupport (< 7.1)
attr_encrypted (>= 1.3, < 4, != 2)
attr_encrypted (>= 1.3, < 5, != 2)
devise (~> 4.0)
railties (< 7.1)
rotp (~> 6.0)
@ -241,9 +228,9 @@ GEM
erubi (1.12.0)
et-orbi (1.2.7)
tzinfo
excon (0.95.0)
excon (0.100.0)
fabrication (2.30.0)
faker (3.1.1)
faker (3.2.0)
i18n (>= 1.8.11, < 2)
faraday (1.10.3)
faraday-em_http (~> 1.0)
@ -269,7 +256,7 @@ GEM
faraday-rack (1.0.0)
faraday-retry (1.0.3)
fast_blank (1.0.1)
fastimage (2.2.6)
fastimage (2.2.7)
ffi (1.15.5)
ffi-compiler (1.0.1)
ffi (>= 1.0.0)
@ -314,7 +301,7 @@ GEM
hashie (5.0.0)
hcaptcha (7.1.0)
json
highline (2.0.3)
highline (2.1.0)
hiredis (0.6.3)
hkdf (0.3.0)
htmlentities (4.3.4)
@ -331,7 +318,7 @@ GEM
httplog (1.6.2)
rack (>= 2.0)
rainbow (>= 2.0.0)
i18n (1.12.0)
i18n (1.14.1)
concurrent-ruby (~> 1.0)
i18n-tasks (1.0.12)
activesupport (>= 4.0.2)
@ -348,26 +335,26 @@ GEM
ipaddress (0.8.3)
jmespath (1.6.2)
json (2.6.3)
json-canonicalization (0.3.0)
json-canonicalization (0.3.2)
json-jwt (1.15.3)
activesupport (>= 4.2)
aes_key_wrap
bindata
httpclient
json-ld (3.2.3)
json-ld (3.2.5)
htmlentities (~> 4.3)
json-canonicalization (~> 0.3)
json-canonicalization (~> 0.3, >= 0.3.2)
link_header (~> 0.0, >= 0.0.8)
multi_json (~> 1.15)
rack (~> 2.2)
rdf (~> 3.2, >= 3.2.9)
rack (>= 2.2, < 4)
rdf (~> 3.2, >= 3.2.10)
json-ld-preloaded (3.2.2)
json-ld (~> 3.2)
rdf (~> 3.2)
json-schema (3.0.0)
json-schema (4.0.0)
addressable (>= 2.8)
jsonapi-renderer (0.2.2)
jwt (2.7.0)
jwt (2.7.1)
kaminari (1.2.2)
activesupport (>= 4.1.0)
kaminari-actionview (= 1.2.2)
@ -380,8 +367,14 @@ GEM
activerecord
kaminari-core (= 1.2.2)
kaminari-core (1.2.2)
launchy (2.5.0)
addressable (~> 2.7)
kt-paperclip (7.2.0)
activemodel (>= 4.2.0)
activesupport (>= 4.2.0)
marcel (~> 1.0.1)
mime-types
terrapin (~> 0.6.0)
launchy (2.5.2)
addressable (~> 2.8)
letter_opener (1.8.1)
launchy (>= 2.2, < 3)
letter_opener_web (2.0.0)
@ -398,9 +391,9 @@ GEM
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
loofah (2.20.0)
loofah (2.21.3)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
nokogiri (>= 1.12.0)
mail (2.8.1)
mini_mime (>= 0.1.1)
net-imap
@ -416,19 +409,19 @@ GEM
method_source (1.0.0)
mime-types (3.4.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2022.0105)
mime-types-data (3.2023.0218.1)
mini_mime (1.1.2)
mini_portile2 (2.8.1)
minitest (5.18.0)
msgpack (1.6.0)
mini_portile2 (2.8.2)
minitest (5.18.1)
msgpack (1.7.1)
multi_json (1.15.0)
multipart-post (2.3.0)
net-http (0.3.2)
uri
net-imap (0.3.4)
net-imap (0.3.6)
date
net-protocol
net-ldap (0.17.1)
net-ldap (0.18.0)
net-pop (0.1.2)
net-protocol
net-protocol (0.2.1)
@ -437,17 +430,12 @@ GEM
net-ssh (>= 2.6.5, < 8.0.0)
net-smtp (0.3.3)
net-protocol
net-ssh (7.0.1)
net-ssh (7.1.0)
nio4r (2.5.9)
nokogiri (1.14.2)
mini_portile2 (~> 2.8.0)
nokogiri (1.15.2)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
nsa (0.2.8)
activesupport (>= 4.2, < 7)
concurrent-ruby (~> 1.0, >= 1.0.2)
sidekiq (>= 3.5)
statsd-ruby (~> 1.4, >= 1.4.0)
oj (3.14.2)
oj (3.15.0)
omniauth (1.9.2)
hashie (>= 3.4.6)
rack (>= 1.6.2, < 3)
@ -479,19 +467,19 @@ GEM
openssl-signature_algorithm (1.3.0)
openssl (> 2.0)
orm_adapter (0.5.0)
ox (2.14.14)
parallel (1.22.1)
parser (3.2.2.0)
ox (2.14.16)
parallel (1.23.0)
parser (3.2.2.3)
ast (~> 2.4.1)
racc
parslet (2.0.0)
pastel (0.8.0)
tty-color (~> 0.5)
pg (1.4.6)
pghero (3.3.1)
pg (1.5.3)
pghero (3.3.3)
activerecord (>= 6)
pkg-config (1.5.1)
posix-spawn (0.3.15)
premailer (1.18.0)
premailer (1.21.0)
addressable
css_parser (>= 1.12.0)
htmlentities (>= 4.0.0)
@ -501,13 +489,13 @@ GEM
premailer (~> 1.7, >= 1.7.9)
private_address_check (0.5.0)
public_suffix (5.0.1)
puma (6.2.1)
puma (6.3.0)
nio4r (~> 2.0)
pundit (2.3.0)
activesupport (>= 3.0.0)
raabro (1.4.0)
racc (1.6.2)
rack (2.2.6.4)
racc (1.7.1)
rack (2.2.7)
rack-attack (6.6.1)
rack (>= 1.0, < 3)
rack-cors (2.0.1)
@ -522,20 +510,20 @@ GEM
rack
rack-test (2.1.0)
rack (>= 1.3)
rails (6.1.7.3)
actioncable (= 6.1.7.3)
actionmailbox (= 6.1.7.3)
actionmailer (= 6.1.7.3)
actionpack (= 6.1.7.3)
actiontext (= 6.1.7.3)
actionview (= 6.1.7.3)
activejob (= 6.1.7.3)
activemodel (= 6.1.7.3)
activerecord (= 6.1.7.3)
activestorage (= 6.1.7.3)
activesupport (= 6.1.7.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)
bundler (>= 1.15.0)
railties (= 6.1.7.3)
railties (= 6.1.7.4)
sprockets-rails (>= 2.0.0)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
@ -544,95 +532,99 @@ GEM
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.5.0)
loofah (~> 2.19, >= 2.19.1)
rails-html-sanitizer (1.6.0)
loofah (~> 2.21)
nokogiri (~> 1.14)
rails-i18n (6.0.0)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 7)
railties (6.1.7.3)
actionpack (= 6.1.7.3)
activesupport (= 6.1.7.3)
railties (6.1.7.4)
actionpack (= 6.1.7.4)
activesupport (= 6.1.7.4)
method_source
rake (>= 12.2)
thor (~> 1.0)
rainbow (3.1.1)
rake (13.0.6)
rdf (3.2.9)
rdf (3.2.11)
link_header (~> 0.0, >= 0.0.8)
rdf-normalize (0.5.1)
rdf-normalize (0.6.0)
rdf (~> 3.2)
redcarpet (3.6.0)
redis (4.8.1)
redis-namespace (1.10.0)
redis-namespace (1.11.0)
redis (>= 4)
redlock (1.3.2)
redis (>= 3.0.0, < 6.0)
regexp_parser (2.7.0)
regexp_parser (2.8.1)
request_store (1.5.1)
rack (>= 1.4)
responders (3.1.0)
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.2.5)
rotp (6.2.0)
rotp (6.2.2)
rouge (4.1.2)
rpam2 (4.0.2)
rqrcode (2.1.2)
rqrcode (2.2.0)
chunky_png (~> 1.0)
rqrcode_core (~> 1.0)
rqrcode_core (1.2.0)
rspec-core (3.12.1)
rspec-core (3.12.2)
rspec-support (~> 3.12.0)
rspec-expectations (3.12.2)
rspec-expectations (3.12.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-mocks (3.12.3)
rspec-mocks (3.12.5)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-rails (6.0.1)
rspec-rails (6.0.3)
actionpack (>= 6.1)
activesupport (>= 6.1)
railties (>= 6.1)
rspec-core (~> 3.11)
rspec-expectations (~> 3.11)
rspec-mocks (~> 3.11)
rspec-support (~> 3.11)
rspec-core (~> 3.12)
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_chunked (0.6)
rspec_junit_formatter (0.6.0)
rspec-core (>= 2, < 4, != 2.12.0)
rubocop (1.49.0)
rubocop (1.52.1)
json (~> 2.3)
parallel (~> 1.10)
parser (>= 3.2.0.0)
parser (>= 3.2.2.3)
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)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.28.0)
rubocop-ast (1.29.0)
parser (>= 3.2.1.0)
rubocop-capybara (2.17.1)
rubocop-capybara (2.18.0)
rubocop (~> 1.41)
rubocop-performance (1.16.0)
rubocop-factory_bot (2.23.1)
rubocop (~> 1.33)
rubocop-performance (1.18.0)
rubocop (>= 1.7.0, < 2.0)
rubocop-ast (>= 0.4.0)
rubocop-rails (2.18.0)
rubocop-rails (2.19.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
rubocop-rspec (2.19.0)
rubocop-rspec (2.22.0)
rubocop (~> 1.33)
rubocop-capybara (~> 2.17)
rubocop-factory_bot (~> 2.22)
ruby-progressbar (1.13.0)
ruby-saml (1.13.0)
nokogiri (>= 1.10.5)
ruby-saml (1.15.0)
nokogiri (>= 1.13.10)
rexml
ruby2_keywords (0.0.5)
rufus-scheduler (3.8.2)
rubyzip (2.3.2)
rufus-scheduler (3.9.1)
fugit (~> 1.1, >= 1.1.6)
safety_net_attestation (0.4.0)
jwt (~> 2.0)
@ -643,13 +635,13 @@ GEM
activerecord (>= 4.0.0)
railties (>= 4.0.0)
semantic_range (3.0.0)
sidekiq (6.5.8)
sidekiq (6.5.9)
connection_pool (>= 2.2.5, < 3)
rack (~> 2.0)
redis (>= 4.5.0, < 5)
sidekiq-bulk (0.2.0)
sidekiq
sidekiq-scheduler (5.0.2)
sidekiq-scheduler (5.0.3)
rufus-scheduler (~> 3.2)
sidekiq (>= 6, < 8)
tilt (>= 1.4.0)
@ -681,8 +673,7 @@ GEM
sshkit (1.21.4)
net-scp (>= 1.1.2)
net-ssh (>= 2.8.0)
stackprof (0.2.24)
statsd-ruby (1.5.0)
stackprof (0.2.25)
stoplight (3.0.1)
redlock (~> 1.0)
strong_migrations (0.8.0)
@ -692,13 +683,13 @@ GEM
attr_required (>= 0.0.5)
httpclient (>= 2.4)
sysexits (1.2.0)
temple (0.10.0)
temple (0.10.2)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
terrapin (0.6.0)
climate_control (>= 0.0.3, < 1.0)
thor (1.2.1)
tilt (2.1.0)
thor (1.2.2)
tilt (2.2.0)
timeout (0.3.2)
tpm-key_attestation (0.12.0)
bindata (~> 2.4)
@ -725,7 +716,7 @@ GEM
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (2.4.2)
uri (0.12.1)
uri (0.12.2)
validate_email (0.1.6)
activemodel (>= 3.0)
mail (>= 2.2.5)
@ -762,7 +753,7 @@ GEM
xorcist (1.1.3)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.7)
zeitwerk (2.6.8)
PLATFORMS
ruby
@ -771,7 +762,7 @@ DEPENDENCIES
active_model_serializers (~> 0.10)
addressable (~> 2.8)
annotate (~> 3.2)
aws-sdk-s3 (~> 1.120)
aws-sdk-s3 (~> 1.123)
better_errors (~> 2.9)
binding_of_caller (~> 1.0)
blurhash (~> 0.1)
@ -785,21 +776,21 @@ DEPENDENCIES
capistrano-yarn (~> 2.0)
capybara (~> 3.39)
charlock_holmes (~> 0.7.7)
chewy (~> 7.2)
climate_control
chewy (~> 7.3)
climate_control (~> 0.2)
cocoon (~> 1.2)
color_diff (~> 0.1)
concurrent-ruby
connection_pool
devise (~> 4.9)
devise-two-factor (~> 4.0)
devise-two-factor (~> 4.1)
devise_pam_authenticatable2 (~> 9.2)
discard (~> 1.2)
doorkeeper (~> 5.6)
dotenv-rails (~> 2.8)
ed25519 (~> 1.3)
fabrication (~> 2.30)
faker (~> 3.1)
faker (~> 3.2)
fast_blank (~> 1.0)
fastimage
fog-core (<= 2.4.0)
@ -817,9 +808,9 @@ DEPENDENCIES
idn-ruby
json-ld
json-ld-preloaded (~> 3.2)
json-schema (~> 3.0)
json-schema (~> 4.0)
kaminari (~> 1.2)
kt-paperclip (~> 7.1)!
kt-paperclip (~> 7.2)
letter_opener (~> 1.8)
letter_opener_web (~> 2.0)
link_header (~> 0.0)
@ -829,9 +820,8 @@ DEPENDENCIES
memory_profiler
mime-types (~> 3.4.1)
net-http (~> 0.3.2)
net-ldap (~> 0.17)
nokogiri (~> 1.14)
nsa (~> 0.2)
net-ldap (~> 0.18)
nokogiri (~> 1.15)
oj (~> 3.14)
omniauth (~> 1.9)
omniauth-cas (~> 2.0)
@ -840,16 +830,15 @@ DEPENDENCIES
omniauth_openid_connect (~> 0.6.1)
ox (~> 2.14)
parslet
pg (~> 1.4)
pg (~> 1.5)
pghero
pkg-config (~> 1.5)
posix-spawn
premailer-rails
private_address_check (~> 0.5)
public_suffix (~> 5.0)
puma (~> 6.2)
puma (~> 6.3)
pundit (~> 2.3)
rack (~> 2.2.6)
rack (~> 2.2.7)
rack-attack (~> 6.6)
rack-cors (~> 2.0)
rack-test (~> 2.1)
@ -861,17 +850,17 @@ DEPENDENCIES
redcarpet (~> 3.6)
redis (~> 4.5)
redis-namespace (~> 1.10)
rqrcode (~> 2.1)
rqrcode (~> 2.2)
rspec-rails (~> 6.0)
rspec-sidekiq (~> 3.1)
rspec_chunked (~> 0.6)
rspec_junit_formatter (~> 0.6)
rubocop
rubocop-capybara
rubocop-performance
rubocop-rails
rubocop-rspec
ruby-progressbar (~> 1.11)
ruby-progressbar (~> 1.13)
rubyzip (~> 2.3)
sanitize (~> 6.0)
scenic (~> 1.7)
sidekiq (~> 6.5)
@ -895,3 +884,9 @@ DEPENDENCIES
webpacker (~> 5.4)
webpush!
xorcist (~> 1.1)
RUBY VERSION
ruby 3.2.2p53
BUNDLED WITH
2.4.13

@ -2,8 +2,37 @@
class AccountsIndex < Chewy::Index
settings index: { refresh_interval: '30s' }, analysis: {
filter: {
english_stop: {
type: 'stop',
stopwords: '_english_',
},
english_stemmer: {
type: 'stemmer',
language: 'english',
},
english_possessive_stemmer: {
type: 'stemmer',
language: 'possessive_english',
},
},
analyzer: {
content: {
natural: {
tokenizer: 'uax_url_email',
filter: %w(
english_possessive_stemmer
lowercase
asciifolding
cjk_width
english_stop
english_stemmer
),
},
verbatim: {
tokenizer: 'whitespace',
filter: %w(lowercase asciifolding cjk_width),
},
@ -26,18 +55,13 @@ class AccountsIndex < Chewy::Index
index_scope ::Account.searchable.includes(:account_stat)
root date_detection: false do
field :id, type: 'long'
field :display_name, type: 'text', analyzer: 'content' do
field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content'
end
field :acct, type: 'text', analyzer: 'content', value: ->(account) { [account.username, account.domain].compact.join('@') } do
field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content'
end
field :following_count, type: 'long', value: ->(account) { account.following_count }
field :followers_count, type: 'long', value: ->(account) { account.followers_count }
field :last_status_at, type: 'date', value: ->(account) { account.last_status_at || account.created_at }
field(:id, type: 'long')
field(:following_count, type: 'long')
field(:followers_count, type: 'long')
field(:properties, type: 'keyword', value: ->(account) { account.searchable_properties })
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' }
end
end

@ -8,7 +8,7 @@ class AboutController < ApplicationController
before_action :set_instance_presenter
def show
expires_in 0, public: true unless user_signed_in?
expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.day) unless user_signed_in?
end
private

@ -7,8 +7,9 @@ class AccountsController < ApplicationController
include AccountControllerConcern
include SignatureAuthentication
vary_by -> { public_fetch_mode? ? 'Accept, Accept-Language, Cookie' : 'Accept, Accept-Language, Cookie, Signature' }
before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? }
before_action :set_cache_headers
skip_around_action :set_locale, if: -> { [:json, :rss].include?(request.format&.to_sym) }
skip_before_action :require_functional!, unless: :whitelist_mode?
@ -16,7 +17,7 @@ class AccountsController < ApplicationController
def show
respond_to do |format|
format.html do
expires_in 0, public: true unless user_signed_in?
expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.hour) unless user_signed_in?
@rss_url = rss_url
end

@ -7,10 +7,6 @@ class ActivityPub::BaseController < Api::BaseController
private
def set_cache_headers
response.headers['Vary'] = 'Signature' if authorized_fetch_mode?
end
def skip_temporary_suspension_response?
false
end

@ -4,11 +4,12 @@ class ActivityPub::CollectionsController < ActivityPub::BaseController
include SignatureVerification
include AccountOwnedConcern
vary_by -> { 'Signature' if authorized_fetch_mode? }
before_action :require_account_signature!, if: :authorized_fetch_mode?
before_action :set_items
before_action :set_size
before_action :set_type
before_action :set_cache_headers
def show
expires_in 3.minutes, public: public_fetch_mode?

@ -4,9 +4,10 @@ class ActivityPub::FollowersSynchronizationsController < ActivityPub::BaseContro
include SignatureVerification
include AccountOwnedConcern
vary_by -> { 'Signature' if authorized_fetch_mode? }
before_action :require_account_signature!
before_action :set_items
before_action :set_cache_headers
def show
expires_in 0, public: false

@ -6,9 +6,10 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController
include SignatureVerification
include AccountOwnedConcern
vary_by -> { 'Signature' if authorized_fetch_mode? || page_requested? }
before_action :require_account_signature!, if: :authorized_fetch_mode?
before_action :set_statuses
before_action :set_cache_headers
def show
if page_requested?
@ -16,6 +17,7 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController
else
expires_in(3.minutes, public: public_fetch_mode?)
end
render json: outbox_presenter, serializer: ActivityPub::OutboxSerializer, adapter: ActivityPub::Adapter, content_type: 'application/activity+json'
end
@ -80,8 +82,4 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController
def set_account
@account = params[:account_username].present? ? Account.find_local!(username_param) : Account.representative
end
def set_cache_headers
response.headers['Vary'] = 'Signature' if authorized_fetch_mode? || page_requested?
end
end

@ -7,9 +7,10 @@ class ActivityPub::RepliesController < ActivityPub::BaseController
DESCENDANTS_LIMIT = 60
vary_by -> { 'Signature' if authorized_fetch_mode? }
before_action :require_account_signature!, if: :authorized_fetch_mode?
before_action :set_status
before_action :set_cache_headers
before_action :set_replies
def index

@ -14,6 +14,10 @@ class Admin::AnnouncementsController < Admin::BaseController
@announcement = Announcement.new
end
def edit
authorize :announcement, :update?
end
def create
authorize :announcement, :create?
@ -28,10 +32,6 @@ class Admin::AnnouncementsController < Admin::BaseController
end
end
def edit
authorize :announcement, :update?
end
def update
authorize :announcement, :update?

@ -9,6 +9,8 @@ module Admin
before_action :set_pack
before_action :set_body_classes
before_action :set_cache_headers
after_action :verify_authorized
private
@ -21,6 +23,10 @@ module Admin
use_pack 'admin'
end
def set_cache_headers
response.cache_control.replace(private: true, no_store: true)
end
def set_user
@user = Account.find(params[:account_id]).user || raise(ActiveRecord::RecordNotFound)
end

@ -14,15 +14,5 @@ module Admin
@pending_tags_count = Tag.pending_review.count
@pending_appeals_count = Appeal.pending.count
end
private
def redis_info
@redis_info ||= if redis.is_a?(Redis::Namespace)
redis.redis.info
else
redis.info
end
end
end
end

@ -31,31 +31,41 @@ module Admin
@domain_block = DomainBlock.new(resource_params)
existing_domain_block = resource_params[:domain].present? ? DomainBlock.rule_for(resource_params[:domain]) : nil
# Disallow accidentally downgrading a domain block
if existing_domain_block.present? && !@domain_block.stricter_than?(existing_domain_block)
@domain_block.save
flash.now[:alert] = I18n.t('admin.domain_blocks.existing_domain_block_html', name: existing_domain_block.domain, unblock_url: admin_domain_block_path(existing_domain_block)).html_safe # rubocop:disable Rails/OutputSafety
flash.now[:alert] = I18n.t('admin.domain_blocks.existing_domain_block_html', name: existing_domain_block.domain, unblock_url: admin_domain_block_path(existing_domain_block)).html_safe
@domain_block.errors.delete(:domain)
render :new
return render :new
end
# Allow transparently upgrading a domain block
if existing_domain_block.present?
@domain_block = existing_domain_block
@domain_block.assign_attributes(resource_params)
end
# Require explicit confirmation when suspending
return render :confirm_suspension if requires_confirmation?
if @domain_block.save
DomainBlockWorker.perform_async(@domain_block.id)
log_action :create, @domain_block
redirect_to admin_instances_path(limited: '1'), notice: I18n.t('admin.domain_blocks.created_msg')
else
if existing_domain_block.present?
@domain_block = existing_domain_block
@domain_block.update(resource_params)
end
if @domain_block.save
DomainBlockWorker.perform_async(@domain_block.id)
log_action :create, @domain_block
redirect_to admin_instances_path(limited: '1'), notice: I18n.t('admin.domain_blocks.created_msg')
else
render :new
end
render :new
end
end
def update
authorize :domain_block, :update?
if @domain_block.update(update_params)
@domain_block.assign_attributes(update_params)
# Require explicit confirmation when suspending
return render :confirm_suspension if requires_confirmation?
if @domain_block.save
DomainBlockWorker.perform_async(@domain_block.id, @domain_block.severity_previously_changed?)
log_action :update, @domain_block
redirect_to admin_instances_path(limited: '1'), notice: I18n.t('admin.domain_blocks.created_msg')
@ -92,5 +102,9 @@ module Admin
def action_from_button
'save' if params[:save]
end
def requires_confirmation?
@domain_block.valid? && (@domain_block.new_record? || @domain_block.severity_changed?) && @domain_block.severity.to_s == 'suspend' && !params[:confirm]
end
end
end

@ -16,6 +16,10 @@ module Admin
@role = UserRole.new
end
def edit
authorize @role, :update?
end
def create
authorize :user_role, :create?
@ -30,10 +34,6 @@ module Admin
end
end
def edit
authorize @role, :update?
end
def update
authorize @role, :update?

@ -11,6 +11,10 @@ module Admin
@rule = Rule.new
end
def edit
authorize @rule, :update?
end
def create
authorize :rule, :create?
@ -24,10 +28,6 @@ module Admin
end
end
def edit
authorize @rule, :update?
end
def update
authorize @rule, :update?

@ -11,6 +11,10 @@ module Admin
@warning_preset = AccountWarningPreset.new
end
def edit
authorize @warning_preset, :update?
end
def create
authorize :account_warning_preset, :create?
@ -24,10 +28,6 @@ module Admin
end
end
def edit
authorize @warning_preset, :update?
end
def update
authorize @warning_preset, :update?

@ -10,16 +10,25 @@ module Admin
@webhooks = Webhook.page(params[:page])
end
def show
authorize @webhook, :show?
end
def new
authorize :webhook, :create?
@webhook = Webhook.new
end
def edit
authorize @webhook, :update?
end
def create
authorize :webhook, :create?
@webhook = Webhook.new(resource_params)
@webhook.current_account = current_account
if @webhook.save
redirect_to admin_webhook_path(@webhook)
@ -28,21 +37,15 @@ module Admin
end
end
def show
authorize @webhook, :show?
end
def edit
authorize @webhook, :update?
end
def update
authorize @webhook, :update?
@webhook.current_account = current_account
if @webhook.update(resource_params)
redirect_to admin_webhook_path(@webhook)
else
render :show
render :edit
end
end
@ -71,7 +74,7 @@ module Admin
end
def resource_params
params.require(:webhook).permit(:url, events: [])
params.require(:webhook).permit(:url, :template, events: [])
end
end
end

@ -6,13 +6,14 @@ class Api::BaseController < ApplicationController
include RateLimitHeaders
include AccessTokenTrackingConcern
include ApiCachingConcern
skip_before_action :store_current_location
skip_before_action :require_functional!, unless: :whitelist_mode?
before_action :require_authenticated_user!, if: :disallow_unauthenticated_api_access?
before_action :require_not_suspended!
before_action :set_cache_headers
vary_by 'Authorization'
protect_from_forgery with: :null_session
@ -148,10 +149,6 @@ class Api::BaseController < ApplicationController
doorkeeper_authorize!(*scopes) if doorkeeper_token
end
def set_cache_headers
response.headers['Cache-Control'] = 'private, no-store'
end
def disallow_unauthenticated_api_access?
ENV['DISALLOW_UNAUTHENTICATED_API_ACCESS'] == 'true' || Rails.configuration.x.whitelist_mode
end

@ -6,6 +6,7 @@ class Api::V1::Accounts::FollowerAccountsController < Api::BaseController
after_action :insert_pagination_headers
def index
cache_if_unauthenticated!
@accounts = load_accounts
render json: @accounts, each_serializer: REST::AccountSerializer
end

@ -6,6 +6,7 @@ class Api::V1::Accounts::FollowingAccountsController < Api::BaseController
after_action :insert_pagination_headers
def index
cache_if_unauthenticated!
@accounts = load_accounts
render json: @accounts, each_serializer: REST::AccountSerializer
end

@ -5,6 +5,7 @@ class Api::V1::Accounts::LookupController < Api::BaseController
before_action :set_account
def show
cache_if_unauthenticated!
render json: @account, serializer: REST::AccountSerializer
end

@ -7,6 +7,7 @@ class Api::V1::Accounts::StatusesController < Api::BaseController
after_action :insert_pagination_headers, unless: -> { truthy_param?(:pinned) }
def index
cache_if_unauthenticated!
@statuses = load_statuses
render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id)
end

@ -18,6 +18,7 @@ class Api::V1::AccountsController < Api::BaseController
override_rate_limit_headers :follow, family: :follows
def show
cache_if_unauthenticated!
render json: @account, serializer: REST::AccountSerializer
end
@ -89,7 +90,7 @@ class Api::V1::AccountsController < Api::BaseController
end
def account_params
params.permit(:username, :email, :password, :agreement, :locale, :reason)
params.permit(:username, :email, :password, :agreement, :locale, :reason, :time_zone)
end
def check_enabled_registrations

@ -58,7 +58,7 @@ class Api::V1::Admin::CanonicalEmailBlocksController < Api::BaseController
end
def set_canonical_email_blocks_from_test
@canonical_email_blocks = CanonicalEmailBlock.matching_email(params[:email])
@canonical_email_blocks = CanonicalEmailBlock.matching_email(params.require(:email))
end
def set_canonical_email_block

@ -16,10 +16,20 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController
PAGINATION_PARAMS = %i(limit).freeze
def index
authorize :domain_allow, :index?
render json: @domain_allows, each_serializer: REST::Admin::DomainAllowSerializer
end
def show
authorize @domain_allow, :show?
render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer
end
def create
authorize :domain_allow, :create?
@domain_allow = DomainAllow.find_by(resource_params)
@domain_allow = DomainAllow.find_by(domain: resource_params[:domain])
if @domain_allow.nil?
@domain_allow = DomainAllow.create!(resource_params)
@ -29,16 +39,6 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController
render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer
end
def index
authorize :domain_allow, :index?
render json: @domain_allows, each_serializer: REST::Admin::DomainAllowSerializer
end
def show
authorize @domain_allow, :show?
render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer
end
def destroy
authorize @domain_allow, :destroy?
UnallowDomainService.new.call(@domain_allow)

@ -16,6 +16,16 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
PAGINATION_PARAMS = %i(limit).freeze
def index
authorize :domain_block, :index?
render json: @domain_blocks, each_serializer: REST::Admin::DomainBlockSerializer
end
def show
authorize @domain_block, :show?
render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer
end
def create
authorize :domain_block, :create?
@ -28,16 +38,6 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer
end
def index
authorize :domain_block, :index?
render json: @domain_blocks, each_serializer: REST::Admin::DomainBlockSerializer
end
def show
authorize @domain_block, :show?
render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer
end
def update
authorize @domain_block, :update?
@domain_block.update!(domain_block_params)

@ -18,15 +18,6 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController
limit
).freeze
def create
authorize :email_domain_block, :create?
@email_domain_block = EmailDomainBlock.create!(resource_params)
log_action :create, @email_domain_block
render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer
end
def index
authorize :email_domain_block, :index?
render json: @email_domain_blocks, each_serializer: REST::Admin::EmailDomainBlockSerializer
@ -37,6 +28,15 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController
render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer
end
def create
authorize :email_domain_block, :create?
@email_domain_block = EmailDomainBlock.create!(resource_params)
log_action :create, @email_domain_block
render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer
end
def destroy
authorize @email_domain_block, :destroy?
@email_domain_block.destroy!

@ -18,13 +18,6 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController
limit
).freeze
def create
authorize :ip_block, :create?
@ip_block = IpBlock.create!(resource_params)
log_action :create, @ip_block
render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
end
def index
authorize :ip_block, :index?
render json: @ip_blocks, each_serializer: REST::Admin::IpBlockSerializer
@ -35,6 +28,13 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController
render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
end
def create
authorize :ip_block, :create?
@ip_block = IpBlock.create!(resource_params)
log_action :create, @ip_block
render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
end
def update
authorize @ip_block, :update?
@ip_block.update(resource_params)

@ -0,0 +1,72 @@
# frozen_string_literal: true
class Api::V1::Admin::Trends::Links::PreviewCardProvidersController < Api::BaseController
include Authorization
LIMIT = 100
before_action -> { authorize_if_got_token! :'admin:read' }, only: :index
before_action -> { authorize_if_got_token! :'admin:write' }, except: :index
before_action :set_providers, only: :index
after_action :verify_authorized
after_action :insert_pagination_headers, only: :index
PAGINATION_PARAMS = %i(limit).freeze
def index
authorize :preview_card_provider, :index?
render json: @providers, each_serializer: REST::Admin::Trends::Links::PreviewCardProviderSerializer
end
def approve
authorize :preview_card_provider, :review?
provider = PreviewCardProvider.find(params[:id])
provider.update(trendable: true, reviewed_at: Time.now.utc)
render json: provider, serializer: REST::Admin::Trends::Links::PreviewCardProviderSerializer
end
def reject
authorize :preview_card_provider, :review?
provider = PreviewCardProvider.find(params[:id])
provider.update(trendable: false, reviewed_at: Time.now.utc)
render json: provider, serializer: REST::Admin::Trends::Links::PreviewCardProviderSerializer
end
private
def set_providers
@providers = PreviewCardProvider.all.to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id))
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_admin_trends_links_preview_card_providers_url(pagination_params(max_id: pagination_max_id)) if records_continue?
end
def prev_path
api_v1_admin_trends_links_preview_card_providers_url(pagination_params(min_id: pagination_since_id)) unless @providers.empty?
end
def pagination_max_id
@providers.last.id
end
def pagination_since_id
@providers.first.id
end
def records_continue?
@providers.size == limit_param(LIMIT)
end
def pagination_params(core_params)
params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params)
end
end

@ -1,7 +1,36 @@
# frozen_string_literal: true
class Api::V1::Admin::Trends::LinksController < Api::V1::Trends::LinksController
before_action -> { authorize_if_got_token! :'admin:read' }
include Authorization
before_action -> { authorize_if_got_token! :'admin:read' }, only: :index
before_action -> { authorize_if_got_token! :'admin:write' }, except: :index
after_action :verify_authorized, except: :index
def index
if current_user&.can?(:manage_taxonomies)
render json: @links, each_serializer: REST::Admin::Trends::LinkSerializer
else
super
end
end
def approve
authorize :preview_card, :review?
link = PreviewCard.find(params[:id])
link.update(trendable: true)
render json: link, serializer: REST::Admin::Trends::LinkSerializer
end
def reject
authorize :preview_card, :review?
link = PreviewCard.find(params[:id])
link.update(trendable: false)
render json: link, serializer: REST::Admin::Trends::LinkSerializer
end
private

@ -1,7 +1,36 @@
# frozen_string_literal: true
class Api::V1::Admin::Trends::StatusesController < Api::V1::Trends::StatusesController
before_action -> { authorize_if_got_token! :'admin:read' }
include Authorization
before_action -> { authorize_if_got_token! :'admin:read' }, only: :index
before_action -> { authorize_if_got_token! :'admin:write' }, except: :index
after_action :verify_authorized, except: :index
def index
if current_user&.can?(:manage_taxonomies)
render json: @statuses, each_serializer: REST::Admin::Trends::StatusSerializer
else
super
end
end
def approve
authorize [:admin, :status], :review?
status = Status.find(params[:id])
status.update(trendable: true)
render json: status, serializer: REST::Admin::Trends::StatusSerializer
end
def reject
authorize [:admin, :status], :review?
status = Status.find(params[:id])
status.update(trendable: false)
render json: status, serializer: REST::Admin::Trends::StatusSerializer
end
private

@ -1,7 +1,12 @@
# frozen_string_literal: true
class Api::V1::Admin::Trends::TagsController < Api::V1::Trends::TagsController
before_action -> { authorize_if_got_token! :'admin:read' }
include Authorization
before_action -> { authorize_if_got_token! :'admin:read' }, only: :index
before_action -> { authorize_if_got_token! :'admin:write' }, except: :index
after_action :verify_authorized, except: :index
def index
if current_user&.can?(:manage_taxonomies)
@ -11,6 +16,22 @@ class Api::V1::Admin::Trends::TagsController < Api::V1::Trends::TagsController
end
end
def approve
authorize :tag, :review?
tag = Tag.find(params[:id])
tag.update(trendable: true, reviewed_at: Time.now.utc)
render json: tag, serializer: REST::Admin::TagSerializer
end
def reject
authorize :tag, :review?
tag = Tag.find(params[:id])
tag.update(trendable: false, reviewed_at: Time.now.utc)
render json: tag, serializer: REST::Admin::TagSerializer
end
private
def enabled?

@ -11,7 +11,7 @@ class Api::V1::ConversationsController < Api::BaseController
def index
@conversations = paginated_conversations
render json: @conversations, each_serializer: REST::ConversationSerializer
render json: @conversations, each_serializer: REST::ConversationSerializer, relationships: StatusRelationshipsPresenter.new(@conversations.map(&:last_status), current_user&.account_id)
end
def read
@ -19,6 +19,11 @@ class Api::V1::ConversationsController < Api::BaseController
render json: @conversation, serializer: REST::ConversationSerializer
end
def unread
@conversation.update!(unread: true)
render json: @conversation, serializer: REST::ConversationSerializer
end
def destroy
@conversation.destroy!
render_empty
@ -32,6 +37,19 @@ class Api::V1::ConversationsController < Api::BaseController
def paginated_conversations
AccountConversation.where(account: current_account)
.includes(
account: :account_stat,
last_status: [
:media_attachments,
:preview_cards,
:status_stat,
:tags,
{
active_mentions: [account: :account_stat],
account: :account_stat,
},
]
)
.to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id))
end

@ -1,10 +1,10 @@
# frozen_string_literal: true
class Api::V1::CustomEmojisController < Api::BaseController
skip_before_action :set_cache_headers
vary_by '', unless: :disallow_unauthenticated_api_access?
def index
expires_in 3.minutes, public: true
cache_even_if_authenticated! unless disallow_unauthenticated_api_access?
render_with_cache(each_serializer: REST::CustomEmojiSerializer) { CustomEmoji.listed.includes(:category) }
end
end

@ -5,6 +5,7 @@ class Api::V1::DirectoriesController < Api::BaseController
before_action :set_accounts
def show
cache_if_unauthenticated!
render json: @accounts, each_serializer: REST::AccountSerializer
end
@ -20,11 +21,35 @@ class Api::V1::DirectoriesController < Api::BaseController
def accounts_scope
Account.discoverable.tap do |scope|
scope.merge!(Account.local) if truthy_param?(:local)
scope.merge!(Account.by_recent_status) if params[:order].blank? || params[:order] == 'active'
scope.merge!(Account.order(id: :desc)) if params[:order] == 'new'
scope.merge!(Account.not_excluded_by_account(current_account)) if current_account
scope.merge!(Account.not_domain_blocked_by_account(current_account)) if current_account && !truthy_param?(:local)
scope.merge!(account_order_scope)
scope.merge!(local_account_scope) if local_accounts?
scope.merge!(account_exclusion_scope) if current_account
scope.merge!(account_domain_block_scope) if current_account && !local_accounts?
end
end
def local_accounts?
truthy_param?(:local)
end
def account_order_scope
case params[:order]
when 'new'
Account.order(id: :desc)
when 'active', nil
Account.by_recent_status
end
end
def local_account_scope
Account.local
end
def account_exclusion_scope
Account.not_excluded_by_account(current_account)
end
def account_domain_block_scope
Account.not_domain_blocked_by_account(current_account)
end
end

@ -1,9 +1,11 @@
# frozen_string_literal: true
class Api::V1::Emails::ConfirmationsController < Api::BaseController
before_action -> { doorkeeper_authorize! :write, :'write:accounts' }
before_action :require_user_owned_by_application!
before_action :require_user_not_confirmed!
before_action -> { authorize_if_got_token! :read, :'read:accounts' }, only: :check
before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, except: :check
before_action :require_user_owned_by_application!, except: :check
before_action :require_user_not_confirmed!, except: :check
before_action :require_authenticated_user!, only: :check
def create
current_user.update!(email: params[:email]) if params.key?(:email)
@ -12,6 +14,10 @@ class Api::V1::Emails::ConfirmationsController < Api::BaseController
render_empty
end
def check
render json: current_user.confirmed?
end
private
def require_user_owned_by_application!

@ -13,7 +13,7 @@ class Api::V1::FeaturedTagsController < Api::BaseController
end
def create
featured_tag = CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name])
featured_tag = CreateFeaturedTagService.new.call(current_account, params.require(:name))
render json: featured_tag, serializer: REST::FeaturedTagSerializer
end
@ -31,8 +31,4 @@ class Api::V1::FeaturedTagsController < Api::BaseController
def set_featured_tags
@featured_tags = current_account.featured_tags.order(statuses_count: :desc)
end
def featured_tag_params
params.permit(:name)
end
end

@ -11,6 +11,10 @@ class Api::V1::FiltersController < Api::BaseController
render json: @filters, each_serializer: REST::V1::FilterSerializer
end
def show
render json: @filter, serializer: REST::V1::FilterSerializer
end
def create
ApplicationRecord.transaction do
filter_category = current_account.custom_filters.create!(filter_params)
@ -20,10 +24,6 @@ class Api::V1::FiltersController < Api::BaseController
render json: @filter, serializer: REST::V1::FilterSerializer
end
def show
render json: @filter, serializer: REST::V1::FilterSerializer
end
def update
ApplicationRecord.transaction do
@filter.update!(keyword_params)

@ -3,11 +3,12 @@
class Api::V1::Instances::ActivityController < Api::BaseController
before_action :require_enabled_api!
skip_before_action :set_cache_headers
skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
vary_by ''
def show
expires_in 1.day, public: true
cache_even_if_authenticated!
render_with_cache json: :activity, expires_in: 1.day
end

@ -6,8 +6,15 @@ class Api::V1::Instances::DomainBlocksController < Api::BaseController
before_action :require_enabled_api!
before_action :set_domain_blocks
vary_by '', if: -> { Setting.show_domain_blocks == 'all' }
def index
expires_in 3.minutes, public: true
if Setting.show_domain_blocks == 'all'
cache_even_if_authenticated!
else
cache_if_unauthenticated!
end
render json: @domain_blocks, each_serializer: REST::DomainBlockSerializer, with_comment: (Setting.show_domain_blocks_rationale == 'all' || (Setting.show_domain_blocks_rationale == 'users' && user_signed_in?))
end

@ -2,11 +2,19 @@
class Api::V1::Instances::ExtendedDescriptionsController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
skip_around_action :set_locale
before_action :set_extended_description
vary_by ''
# Override `current_user` to avoid reading session cookies unless in whitelist mode
def current_user
super if whitelist_mode?
end
def show
expires_in 3.minutes, public: true
cache_even_if_authenticated!
render json: @extended_description, serializer: REST::ExtendedDescriptionSerializer
end

@ -3,11 +3,18 @@
class Api::V1::Instances::PeersController < Api::BaseController
before_action :require_enabled_api!
skip_before_action :set_cache_headers
skip_before_action :require_authenticated_user!, unless: :whitelist_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?
end
def index
expires_in 1.day, public: true
cache_even_if_authenticated!
render_with_cache(expires_in: 1.day) { Instance.where.not(domain: DomainBlock.select(:domain)).pluck(:domain) }
end

@ -5,8 +5,10 @@ class Api::V1::Instances::PrivacyPoliciesController < Api::BaseController
before_action :set_privacy_policy
vary_by ''
def show
expires_in 1.day, public: true
cache_even_if_authenticated!
render json: @privacy_policy, serializer: REST::PrivacyPolicySerializer
end

@ -2,10 +2,19 @@
class Api::V1::Instances::RulesController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
skip_around_action :set_locale
before_action :set_rules
vary_by ''
# Override `current_user` to avoid reading session cookies unless in whitelist mode
def current_user
super if whitelist_mode?
end
def index
cache_even_if_authenticated!
render json: @rules, each_serializer: REST::RuleSerializer
end

@ -5,8 +5,10 @@ class Api::V1::Instances::TranslationLanguagesController < Api::BaseController
before_action :set_languages
vary_by ''
def show
expires_in 1.day, public: true
cache_even_if_authenticated!
render json: @languages
end

@ -1,11 +1,18 @@
# frozen_string_literal: true
class Api::V1::InstancesController < Api::BaseController
skip_before_action :set_cache_headers
skip_before_action :require_authenticated_user!, unless: :whitelist_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?
end
def show
expires_in 3.minutes, public: true
cache_even_if_authenticated!
render_with_cache json: InstancePresenter.new, serializer: REST::V1::InstanceSerializer, root: 'instance'
end
end

@ -42,6 +42,6 @@ class Api::V1::ListsController < Api::BaseController
end
def list_params
params.permit(:title, :replies_policy)
params.permit(:title, :replies_policy, :exclusive)
end
end

@ -6,19 +6,20 @@ class Api::V1::MediaController < Api::BaseController
before_action :set_media_attachment, except: [:create]
before_action :check_processing, except: [:create]
def show
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_code_for_media_attachment
end
def create
@media_attachment = current_account.media_attachments.create!(media_attachment_params)
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
render json: file_type_error, status: 422
rescue Paperclip::Error
rescue Paperclip::Error => e
Rails.logger.error "#{e.class}: #{e.message}"
render json: processing_error, status: 500
end
def show
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_code_for_media_attachment
end
def update
@media_attachment.update!(updateable_media_attachment_params)
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_code_for_media_attachment

@ -8,6 +8,7 @@ class Api::V1::PollsController < Api::BaseController
before_action :refresh_poll
def show
cache_if_unauthenticated!
render json: @poll, serializer: REST::PollSerializer, include_results: true
end

@ -6,6 +6,10 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController
before_action :set_push_subscription
before_action :check_push_subscription, only: [:show, :update]
def show
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
end
def create
@push_subscription&.destroy!
@ -21,10 +25,6 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
end
def show
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
end
def update
@push_subscription.update!(data: data_params)
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer

@ -8,6 +8,7 @@ class Api::V1::Statuses::FavouritedByAccountsController < Api::BaseController
after_action :insert_pagination_headers
def index
cache_if_unauthenticated!
@accounts = load_accounts
render json: @accounts, each_serializer: REST::AccountSerializer
end

@ -7,11 +7,16 @@ class Api::V1::Statuses::HistoriesController < Api::BaseController
before_action :set_status
def show
render json: @status.edits.includes(:account, status: [:account]), each_serializer: REST::StatusEditSerializer
cache_if_unauthenticated!
render json: status_edits, each_serializer: REST::StatusEditSerializer
end
private
def status_edits
@status.edits.includes(:account, status: [:account]).to_a.presence || [@status.build_snapshot(at_time: @status.edited_at || @status.created_at)]
end
def set_status
@status = Status.find(params[:status_id])
authorize @status, :show?

@ -8,6 +8,7 @@ class Api::V1::Statuses::RebloggedByAccountsController < Api::BaseController
after_action :insert_pagination_headers
def index
cache_if_unauthenticated!
@accounts = load_accounts
render json: @accounts, each_serializer: REST::AccountSerializer
end

@ -2,6 +2,8 @@
class Api::V1::Statuses::ReblogsController < Api::BaseController
include Authorization
include Redisable
include Lockable
before_action -> { doorkeeper_authorize! :write, :'write:statuses' }
before_action :require_user!
@ -10,7 +12,9 @@ class Api::V1::Statuses::ReblogsController < Api::BaseController
override_rate_limit_headers :create, family: :statuses
def create
@status = ReblogService.new.call(current_account, @reblog, reblog_params)
with_redis_lock("reblog:#{current_account.id}:#{@reblog.id}") do
@status = ReblogService.new.call(current_account, @reblog, reblog_params)
end
render json: @status, serializer: REST::StatusSerializer
end

@ -24,11 +24,14 @@ class Api::V1::StatusesController < Api::BaseController
DESCENDANTS_DEPTH_LIMIT = 20
def show
cache_if_unauthenticated!
@status = cache_collection([@status], Status).first
render json: @status, serializer: REST::StatusSerializer
end
def context
cache_if_unauthenticated!
ancestors_limit = CONTEXT_LIMIT
descendants_limit = CONTEXT_LIMIT
descendants_depth_limit = nil

@ -8,6 +8,7 @@ class Api::V1::TagsController < Api::BaseController
override_rate_limit_headers :follow, family: :follows
def show
cache_if_unauthenticated!
render json: @tag, serializer: REST::TagSerializer
end

@ -5,6 +5,7 @@ class Api::V1::Timelines::PublicController < Api::BaseController
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
def show
cache_if_unauthenticated!
@statuses = load_statuses
render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id)
end

@ -5,6 +5,7 @@ class Api::V1::Timelines::TagController < Api::BaseController
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
def show
cache_if_unauthenticated!
@statuses = load_statuses
render json: @statuses, each_serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new(@statuses, current_user&.account_id)
end

@ -1,6 +1,8 @@
# frozen_string_literal: true
class Api::V1::Trends::LinksController < Api::BaseController
vary_by 'Authorization, Accept-Language'
before_action :set_links
after_action :insert_pagination_headers
@ -8,6 +10,7 @@ class Api::V1::Trends::LinksController < Api::BaseController
DEFAULT_LINKS_LIMIT = 10
def index
cache_if_unauthenticated!
render json: @links, each_serializer: REST::Trends::LinkSerializer
end

@ -1,11 +1,14 @@
# frozen_string_literal: true
class Api::V1::Trends::StatusesController < Api::BaseController
vary_by 'Authorization, Accept-Language'
before_action :set_statuses
after_action :insert_pagination_headers
def index
cache_if_unauthenticated!
render json: @statuses, each_serializer: REST::StatusSerializer
end

@ -8,6 +8,7 @@ class Api::V1::Trends::TagsController < Api::BaseController
DEFAULT_TAGS_LIMIT = (ENV['MAX_TRENDING_TAGS'] || 10).to_i
def index
cache_if_unauthenticated!
render json: @tags, each_serializer: REST::TagSerializer, relationships: TagRelationshipsPresenter.new(@tags, current_user&.account_id)
end

@ -18,6 +18,14 @@ class Api::V2::Admin::AccountsController < Api::V1::Admin::AccountsController
private
def next_path
api_v2_admin_accounts_url(pagination_params(max_id: pagination_max_id)) if records_continue?
end
def prev_path
api_v2_admin_accounts_url(pagination_params(min_id: pagination_since_id)) unless @accounts.empty?
end
def filtered_accounts
AccountFilter.new(translated_filter_params).results
end

@ -12,13 +12,13 @@ class Api::V2::Filters::KeywordsController < Api::BaseController
render json: @keywords, each_serializer: REST::FilterKeywordSerializer
end
def create
@keyword = current_account.custom_filters.find(params[:filter_id]).keywords.create!(resource_params)
def show
render json: @keyword, serializer: REST::FilterKeywordSerializer
end
def show
def create
@keyword = current_account.custom_filters.find(params[:filter_id]).keywords.create!(resource_params)
render json: @keyword, serializer: REST::FilterKeywordSerializer
end

@ -12,13 +12,13 @@ class Api::V2::Filters::StatusesController < Api::BaseController
render json: @status_filters, each_serializer: REST::FilterStatusSerializer
end
def create
@status_filter = current_account.custom_filters.find(params[:filter_id]).statuses.create!(resource_params)
def show
render json: @status_filter, serializer: REST::FilterStatusSerializer
end
def show
def create
@status_filter = current_account.custom_filters.find(params[:filter_id]).statuses.create!(resource_params)
render json: @status_filter, serializer: REST::FilterStatusSerializer
end

@ -11,13 +11,13 @@ class Api::V2::FiltersController < Api::BaseController
render json: @filters, each_serializer: REST::FilterSerializer, rules_requested: true
end
def create
@filter = current_account.custom_filters.create!(resource_params)
def show
render json: @filter, serializer: REST::FilterSerializer, rules_requested: true
end
def show
def create
@filter = current_account.custom_filters.create!(resource_params)
render json: @filter, serializer: REST::FilterSerializer, rules_requested: true
end

@ -2,7 +2,7 @@
class Api::V2::InstancesController < Api::V1::InstancesController
def show
expires_in 3.minutes, public: true
cache_even_if_authenticated!
render_with_cache json: InstancePresenter.new, serializer: REST::InstanceSerializer, root: 'instance'
end
end

@ -6,7 +6,8 @@ class Api::V2::MediaController < Api::V1::MediaController
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: @media_attachment.not_processed? ? 202 : 200
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
render json: file_type_error, status: 422
rescue Paperclip::Error
rescue Paperclip::Error => e
Rails.logger.error "#{e.class}: #{e.message}"
render json: processing_error, status: 500
end
end

@ -34,11 +34,11 @@ class Api::V2::SearchController < Api::BaseController
params[:q],
current_account,
limit_param(RESULTS_LIMIT),
search_params.merge(resolve: truthy_param?(:resolve), exclude_unreviewed: truthy_param?(:exclude_unreviewed))
search_params.merge(resolve: truthy_param?(:resolve), exclude_unreviewed: truthy_param?(:exclude_unreviewed), following: truthy_param?(:following))
)
end
def search_params
params.permit(:type, :offset, :min_id, :max_id, :account_id)
params.permit(:type, :offset, :min_id, :max_id, :account_id, :following)
end
end

@ -21,6 +21,8 @@ class ApplicationController < ActionController::Base
helper_method :omniauth_only?
helper_method :sso_account_settings
helper_method :whitelist_mode?
helper_method :body_class_string
helper_method :skip_csrf_meta_tags?
rescue_from ActionController::ParameterMissing, Paperclip::AdapterRegistry::NoHandlerError, with: :bad_request
rescue_from Mastodon::NotPermittedError, with: :forbidden
@ -37,9 +39,11 @@ class ApplicationController < ActionController::Base
service_unavailable
end
before_action :store_current_location, except: :raise_not_found, unless: :devise_controller?
before_action :store_referrer, except: :raise_not_found, if: :devise_controller?
before_action :require_functional!, if: :user_signed_in?
before_action :set_cache_control_defaults
skip_before_action :verify_authenticity_token, only: :raise_not_found
def raise_not_found
@ -56,14 +60,25 @@ class ApplicationController < ActionController::Base
!authorized_fetch_mode?
end
def store_current_location
store_location_for(:user, request.url) unless [:json, :rss].include?(request.format&.to_sym)
def store_referrer
return if request.referer.blank?
redirect_uri = URI(request.referer)
return if redirect_uri.path.start_with?('/auth')
stored_url = redirect_uri.to_s if redirect_uri.host == request.host && redirect_uri.port == request.port
store_location_for(:user, stored_url)
end
def require_functional!
redirect_to edit_user_registration_path unless current_user.functional?
end
def skip_csrf_meta_tags?
false
end
def after_sign_out_path_for(_resource_or_scope)
if ENV['OMNIAUTH_ONLY'] == 'true' && ENV['OIDC_ENABLED'] == 'true'
'/auth/auth/openid_connect/logout'
@ -127,7 +142,7 @@ class ApplicationController < ActionController::Base
end
def sso_account_settings
ENV.fetch('SSO_ACCOUNT_SETTINGS')
ENV.fetch('SSO_ACCOUNT_SETTINGS', nil)
end
def current_account
@ -142,6 +157,10 @@ class ApplicationController < ActionController::Base
@current_session = SessionActivation.find_by(session_id: cookies.signed['_session_id']) if cookies.signed['_session_id'].present?
end
def body_class_string
@body_classes || ''
end
def respond_with_error(code)
respond_to do |format|
format.any do
@ -151,4 +170,8 @@ class ApplicationController < ActionController::Base
format.json { render json: { error: Rack::Utils::HTTP_STATUS_CODES[code] }, status: code }
end
end
def set_cache_control_defaults
response.cache_control.replace(private: true, no_store: true)
end
end

@ -57,9 +57,6 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController
def captcha_user_bypass?
return true if @confirmation_user.nil? || @confirmation_user.confirmed?
invite = Invite.find(@confirmation_user.invite_id) if @confirmation_user.invite_id.present?
invite.present? && !invite.max_uses.nil?
end
def set_pack
@ -91,8 +88,10 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController
def after_confirmation_path_for(_resource_name, user)
if user.created_by_application && truthy_param?(:redirect_to_app)
user.created_by_application.confirmation_redirect_uri
elsif user_signed_in?
web_url('start')
else
super
new_user_session_path
end
end
end

@ -25,16 +25,16 @@ class Auth::RegistrationsController < Devise::RegistrationsController
super(&:build_invite_request)
end
def destroy
not_found
end
def update
super do |resource|
resource.clear_other_sessions(current_session.session_id) if resource.saved_change_to_encrypted_password?
end
end
def destroy
not_found
end
protected
def update_resource(resource, params)
@ -132,7 +132,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController
end
def set_sessions
@sessions = current_user.session_activations
@sessions = current_user.session_activations.order(updated_at: :desc)
end
def set_strikes
@ -157,6 +157,6 @@ class Auth::RegistrationsController < Devise::RegistrationsController
end
def set_cache_headers
response.headers['Cache-Control'] = 'private, no-store'
response.cache_control.replace(private: true, no_store: true)
end
end

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

Loading…
Cancel
Save