Compare commits

...

1173 Commits

Author SHA1 Message Date
Thor 11f39db9e0 Merge remote-tracking branch 'origin/main' into local 1 year ago
Thor 6b224840bc Merge remote-tracking branch 'upstream/main' into main 1 year ago
Thor abfbb2d3f2 Make 'tootctl media remove-orphans' retry file listings 1 year ago
Claire dc02a93d04
Merge pull request #2105 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire 87419f9307 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire 61c5dfb929
Update changelog (#23515) 1 year ago
Claire 70c0d754a6
Bump version to 4.1.0 (#23471) 1 year ago
Claire 0c9eac80d8
Fix unbounded recursion in post discovery (#23506) 1 year ago
Nick Schonning 719bb799be
Remove DesspSouce config (#23513) 1 year ago
Claire bae17ebe5e
Fix attached media uploads not being cleared when replying to a post (#23504) 1 year ago
Eugen Rochko 71ae17e8f5
New Crowdin updates (#23413) 1 year ago
Claire 4ceadc65b0 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire a9c220242b
Fix admin-set follow recommandations being case-sensitive (#23500) 1 year ago
Claire 67de888bad
Fix server status URL being a required server setting (#23499) 1 year ago
Nick Schonning f23d30100a
Cleanup unused i18n strings (#23426) 1 year ago
cadars 5e37906083 [Glitch] Add scrolling to Compare history modal 1 year ago
Christian Schmidt 2dfbdc3f9d [Glitch] Show spinner while loading follow requests 1 year ago
Christian Schmidt 8fd6c36243 [Glitch] Spell check input fields 1 year ago
Eugen Rochko 95e2cab22e [Glitch] Add setting for status page URL 1 year ago
Claire 85558a5e18 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Eugen Rochko c5a4d8c82d
Add information about database pool to metrics endpoint in streaming API (#23469) 1 year ago
Eugen Rochko 4cb7647516
Add database pool configuration over `DB_POOL` to streaming API (#23470) 1 year ago
Claire 832595d1e7
Remove posts count and last posts from ActivityPub representation of hashtag collections (#23460) 1 year ago
dependabot[bot] 08001e387b
Bump axios from 1.2.6 to 1.3.2 (#23420) 1 year ago
Nick Schonning 0592937264
Apply Rubocop Rails/WhereNot (#23448) 1 year ago
Nick Schonning 11557d1c5a
Apply Rubocop Rails/RootPublicPath (#23447) 1 year ago
Nick Schonning 0d1f192c54
Apply Rubocop Performance/BlockGivenWithExplicitBlock (#23441) 1 year ago
Nick Schonning 26ac2447b4
Apply Rubocop Style/EmptyElse (#23449) 1 year ago
Nick Schonning f68bb52556
Apply Rubocop Style/NegatedIfElseCondition (#23451) 1 year ago
Nick Schonning 8c1b65c7dd
Apply Rubocop Style/RedundantAssignment (#23452) 1 year ago
Nick Schonning 1487fcde93
Apply Rubocop Style/ExpandPathArguments (#23450) 1 year ago
Nick Schonning d3f59f52c3
Apply Rubocop Performance/StringReplacement (#23445) 1 year ago
Nick Schonning 203739dd3a
Apply Rubocop Performance/StringIdentifierArgument (#23444) 1 year ago
Nick Schonning 2e652aa81c
Apply Rubocop Performance/RedundantSplitRegexpArgument (#23443) 1 year ago
Nick Schonning ef8988aef2
Apply Rubocop Performance/DoubleStartEndWith (#23442) 1 year ago
Nick Schonning c92e033cdd
Apply Rubocop Performance/BindCall (#23437) 1 year ago
Nick Schonning cec005068f
Apply Rubocop Performance/RedundantBlockCall (#23440) 1 year ago
dependabot[bot] f31d9a590d
Bump sass from 1.57.1 to 1.58.0 (#23421) 1 year ago
dependabot[bot] e559d1e672
Bump rubocop-performance from 1.15.2 to 1.16.0 (#23418) 1 year ago
dependabot[bot] 1e2f839543
Bump immutable from 4.2.2 to 4.2.4 (#23419) 1 year ago
dependabot[bot] ea4ff7e786
Bump doorkeeper from 5.6.3 to 5.6.4 (#23422) 1 year ago
dependabot[bot] fb7919e4ec
Bump webpacker from 5.4.3 to 5.4.4 (#23424) 1 year ago
dependabot[bot] 4f14957723
Bump faker from 3.1.0 to 3.1.1 (#23425) 1 year ago
Nick Schonning ed570050c6
Autofix Rails/EagerEvaluationLogMessage (#23429) 1 year ago
mon1kasenpai 6a71bb23c2
Update README.md (#23409) 1 year ago
Claire 9edefc779f
Fix `UserCleanupScheduler` crash when an unconfirmed account has a moderation note (#23318) 1 year ago
Jeong Arm 523a86618f
Fix account serializer crash if account doesn't have a user (#23428) 1 year ago
Claire bb89f0af8a
Fix ActivityPub::ProcessingWorker error on incoming malformed JSON-LD (#23416) 1 year ago
Eugen Rochko e2207af3d7
New Crowdin updates (#23393) 1 year ago
cadars e8cb3ee827
Add scrolling to Compare history modal (#23396) 1 year ago
Christian Schmidt c1f32c9c14
Show spinner while loading follow requests (#23386) 1 year ago
Claire 76b4e7727b
Merge pull request #2101 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire fa433ac5a6 Further JS code style changes 1 year ago
Christian Schmidt 67744ee779
Spell check input fields (#23395) 1 year ago
dependabot[bot] 1f9f8035e4
Bump bootsnap from 1.15.0 to 1.16.0 (#23340) 1 year ago
Eugen Rochko 8651ef751e
New Crowdin updates (#23356) 1 year ago
Eugen Rochko 8f590b0a21
Add setting for status page URL (#23390) 1 year ago
Eugen Rochko 01584f03e8
Add metrics endpoint to streaming API (#23388) 1 year ago
Claire 3c451cf88f [Glitch] Fix useless regular-expression character escape detected by CodeQL 1 year ago
Akira Ouchi 8ce02aa6e8 [Glitch] autofocus the compose form again on /share 1 year ago
Nick Schonning 372fa3fe36 [Glitch] Update hasOwnProperty calls for ESLint 1 year ago
Claire 155424e52f [Glitch] Run eslint --fix 1 year ago
Nick Schonning ed7cb79723 [Glitch] Remove extra semicolons with ESLint autofix 1 year ago
TAKAHASHI Shuuji 1d5395498d [Glitch] chore: remove intersection-observer for old Safari support 1 year ago
Christian Schmidt fb9c786baf [Glitch] Add lang attribute to image description textarea and poll option field 1 year ago
Claire aeacebb3d7 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire 79ca19e9b2
Bump version to 4.1.0rc3 (#23384) 1 year ago
Eugen Rochko f98e4c662e
Change link previews for statuses to never use avatar as fallback (#23376) 1 year ago
Elizabeth Martín Campos 7e04b15ad8
fix(web-push-notifications): fix favourite push notifications (#23286) 1 year ago
Claire 20a479ff7c
Change `POST /settings/applications/:id` to regenerate token on scopes change (#23359) 1 year ago
Nick Schonning 6a5e447753
Address check-i18n warnings (#23313) 1 year ago
Eugen Rochko c6ef56fd5e
Change rate limits to 1,500/5m per user, 300/5m per app (#23347) 1 year ago
Yamagishi Kazutoshi 420f33ccb9
Skip locales linting (#23352) 1 year ago
Claire 1c335ac53a
Fix official docker images nto being compatible with some cloud providers (#23354) 1 year ago
dependabot[bot] 9400bdbce5
Bump docker/build-push-action from 3 to 4 (#23333) 1 year ago
Eugen Rochko b8c31f8110
New Crowdin updates (#23221) 1 year ago
dependabot[bot] e79babe6a3
Bump jest-environment-jsdom from 29.3.1 to 29.4.1 (#23329) 1 year ago
dependabot[bot] fe4e2e0bd1
Bump babel-jest from 29.3.1 to 29.4.1 (#23331) 1 year ago
dependabot[bot] 842d89fda8
Bump jest from 29.3.1 to 29.4.1 (#23335) 1 year ago
dependabot[bot] 05f5e5ae6f
Bump nokogiri from 1.14.0 to 1.14.1 (#23330) 1 year ago
dependabot[bot] 91ceb8af11
Bump ox from 2.14.13 to 2.14.14 (#23338) 1 year ago
Eugen Rochko 4c919812b9
Change number of stored items in home feed from 400 to 800 (#23349) 1 year ago
Eugen Rochko 21780c0204
Change notifications per page from 15 to 40 in REST API (#23348) 1 year ago
dependabot[bot] 41baf4b217
Bump redcarpet from 3.5.1 to 3.6.0 (#23339) 1 year ago
dependabot[bot] 784961059c
Bump eslint-plugin-react from 7.32.1 to 7.32.2 (#23336) 1 year ago
dependabot[bot] c38d685c41
Bump axios from 1.2.3 to 1.2.6 (#23334) 1 year ago
dependabot[bot] fa379a993d
Bump aws-sdk-s3 from 1.118.0 to 1.119.0 (#23341) 1 year ago
dependabot[bot] 723412ac5e
Bump rubocop from 1.44.0 to 1.44.1 (#23337) 1 year ago
dependabot[bot] 597daed17a
Bump rimraf from 4.1.1 to 4.1.2 (#23332) 1 year ago
dependabot[bot] f684ff72f2
Bump utf-8-validate from 6.0.1 to 6.0.2 (#23327) 1 year ago
dependabot[bot] 801a209e06
Bump simple_form from 5.1.0 to 5.2.0 (#23328) 1 year ago
dependabot[bot] d49879cc7b
Bump rails from 6.1.7.1 to 6.1.7.2 (#23326) 1 year ago
dependabot[bot] 4b6bd4bc0d
Bump redux from 4.2.0 to 4.2.1 (#23325) 1 year ago
dependabot[bot] 409fcd1985
Bump doorkeeper from 5.6.2 to 5.6.3 (#23324) 1 year ago
dependabot[bot] 081f14b361
Bump mkdirp from 1.0.4 to 2.1.3 (#23228) 1 year ago
dependabot[bot] 1ca3127a1d
Bump gitlab-omniauth-openid-connect from 0.10.0 to 0.10.1 (#23241) 1 year ago
Akira Ouchi e73b55184b
autofocus the compose form again on /share (#23094) 1 year ago
Nick Schonning 96d26a9417
Enable ESLint jsx-a11y/recommended ruleset (#23309) 1 year ago
Nick Schonning 1032d45644
Ignore ESLint nested ternary (#23310) 1 year ago
dependabot[bot] f8bdfa2f19
Bump punycode from 2.2.0 to 2.3.0 (#23230) 1 year ago
dependabot[bot] 84c72cb21f
Bump eslint-plugin-jsx-a11y from 6.6.1 to 6.7.1 (#23121) 1 year ago
Nick Schonning cbf5ea39d0
Enable ESLint react/recommended ruleset (#22460) 1 year ago
Nick Schonning 131e6403cc
Update hasOwnProperty calls for ESLint (#23307) 1 year ago
Nick Schonning 56d1af753d
Only build latest commit on branch for image (#23306) 1 year ago
dependabot[bot] ea1507ee85
Bump aws-sdk-s3 from 1.117.2 to 1.118.0 (#23202) 1 year ago
dependabot[bot] 8ce2a4220c
Bump eslint-plugin-import from 2.26.0 to 2.27.5 (#23120) 1 year ago
Nick Schonning e6192eab9b
Remove unused ESLint disable directives (#22427) 1 year ago
Nick Schonning c49213f0ea
Upgrade ESlint to v8 (#23305) 1 year ago
Nick Schonning b58bf74e35
Filter Superlinter to Ruby files only (#21976) 1 year ago
Nick Schonning 4917e38d94
Separate Stylelint from Superlinter (#23303) 1 year ago
Nick Schonning d9088ef327
Separate ESLint CI from Superlinter (#23029) 1 year ago
TAKAHASHI Shuuji 9cdd643564
chore: remove intersection-observer for old Safari support (#23284) 1 year ago
Christian Schmidt 2a4f2216d6
Add lang attribute to image description textarea and poll option field (#23293) 1 year ago
Thor 491d398c90 Merge remote-tracking branch 'origin/main' into local 1 year ago
Thor 100b278a99 Merge remote-tracking branch 'upstream/main' into main 1 year ago
Eugen Rochko d3f3810fe1
Fix unserialized `role` on account entities in admin API (#23290) 1 year ago
Claire ec26f7c1b1
New translations en.json (German) (#2097) 1 year ago
dependabot[bot] 1708167dd3
Bump sanitize from 6.0.0 to 6.0.1 (#23281) 1 year ago
Claire d9a078e6d3
Add role badges to WebUI (#2096) 1 year ago
Claire cfa92c4ec0
Merge pull request #2095 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
neatchee 20abef6590
Allow users to set the trigger height for lengthy toot auto-collapse (#2070) 1 year ago
Claire fad6633156 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire 7acf26e777
Merge pull request #2094 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire 13a2abacc8
Add `roles` attribute to Account entities in REST API (#23255) 1 year ago
Claire 2093436349 [Glitch] Fix styling of featured tags in light theme 1 year ago
Claire 0f4637981b Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire e5ae75bf6a
Fix styling of featured tags in light theme (#23252) 1 year ago
Claire 2f112432e6
Bump version to 4.1.0rc2 (#23220) 1 year ago
Claire ffea668076 [Glitch] Fix missing filtering on some notification types 1 year ago
Claire 853d0f28c5 [Glitch] Add lang attribute to compose textarea and CW field 1 year ago
Mina Her 78b822c61d [Glitch] Make <Audio> to handle volume change 1 year ago
Claire cf3ad10e75 [Glitch] Fix upload area display in single-column mode 1 year ago
Claire 3074338d79 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire a5a00d7f7a
Fix email with empty domain name labels passing validation (#23246) 1 year ago
Claire dd58db64d8
Change email address input to be disabled for logged-in users when requesting a new confirmation e-mail (#23247) 1 year ago
Claire 6883fddb19
Fix account activation being triggered before email confirmation (#23245) 1 year ago
Claire 4725191d3c
Fix moderation audit log items for warnings having incorrect links (#23242) 1 year ago
Claire 83a8efa9ca
Add lang attribute to compose textarea and CW field (#23240) 1 year ago
dependabot[bot] dcdf081c6f
Bump @babel/runtime from 7.20.7 to 7.20.13 (#23226) 1 year ago
Mina Her 3cf60ba267
Make <Audio> to handle volume change (#23187) 1 year ago
dependabot[bot] 624d7ae51d
Bump @babel/plugin-proposal-decorators from 7.20.7 to 7.20.13 (#23235) 1 year ago
dependabot[bot] 6319845141
Bump jsdom from 21.0.0 to 21.1.0 (#23227) 1 year ago
dependabot[bot] 3579c9a842
Bump rimraf from 4.0.7 to 4.1.1 (#23225) 1 year ago
dependabot[bot] 24f446d70b
Bump eslint-plugin-react from 7.31.11 to 7.32.1 (#23231) 1 year ago
dependabot[bot] 7424dd0010
Bump axios from 1.2.2 to 1.2.3 (#23232) 1 year ago
dependabot[bot] 637a7c78e6
Bump utf-8-validate from 6.0.0 to 6.0.1 (#23233) 1 year ago
dependabot[bot] aed9d4f567
Bump hadolint/hadolint-action from 3.0.0 to 3.1.0 (#23234) 1 year ago
dependabot[bot] 23a2451576
Bump concurrent-ruby from 1.1.10 to 1.2.0 (#23236) 1 year ago
dependabot[bot] 95fb53c53e
Bump rubocop from 1.43.0 to 1.44.0 (#23213) 1 year ago
Claire 54e798a5a0
Fix upload area display in single-column mode (#23217) 1 year ago
Eugen Rochko 958955cda4
New Crowdin updates (#23150) 1 year ago
Claire 98779535fe
Fix missing filtering on some notification types (#23211) 1 year ago
dependabot[bot] 77c2ea1f0f
Bump rubocop-rspec from 2.18.0 to 2.18.1 (#23203) 1 year ago
Markus Unterwaditzer f2a6e71bb6
Suppress AddressFamilyError in link verification (#23204) 1 year ago
Claire 448be26b34
Add missing `policy` attribute to `WebPushSubscriptionSerializer` (#23210) 1 year ago
Kaspar V 9b795a25cd
fix(pghero): update because CVE-2023-22626 (#23190) 1 year ago
Claire 368d6fe54f
Merge pull request #2092 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire 3c76f1f6c2 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire 628dcbb732
Revert "Remove LDSignature on actor Delete activities (#21466)" (#23185) 1 year ago
Eugen Rochko a4090ab646 [Glitch] Fix wrong text color on some buttons in light theme in web UI 1 year ago
Eugen Rochko 0d20b38da7 [Glitch] Fix wrong padding in RTL layout in web UI 1 year ago
Claire 3fd3e88b25 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Jeong Arm a1abda39dd
Fix Account Strike causing PG not null validation error (#23178) 1 year ago
Claire 8180f7ba19
Bump version to 4.1.0rc1 (#23112) 1 year ago
Vyr Cossont c4a5e0ca0e
Advertise supported MIME types for statuses (#2090) 1 year ago
Eugen Rochko 13e9d91ba7
Fix wrong text color on some buttons in light theme in web UI (#23156) 1 year ago
Eugen Rochko 4894deca7e
Fix wrong padding in RTL layout in web UI (#23157) 1 year ago
Claire 26c2b401a5
Fix missing admin CSS in glitch-soc flavor (#2088) 1 year ago
Claire 01405bc6f8
Merge pull request #2087 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Eugen Rochko a3f176423f
New Crowdin updates (#23052) 1 year ago
Claire 3f74235ac5 [Glitch] Fix confusing wording in the sign in banner 1 year ago
Connor Shea 00cc1536f2 [Glitch] Add listing of followed hashtags 1 year ago
Claire 55e368c02f [Glitch] Add option to make the landing page be /about even when trends are enabled 1 year ago
Claire b5c6a116a7 [Glitch] Add support for editing media description and focus point of already-posted statuses 1 year ago
Claire 9b4afb320a [Glitch] Change account moderation notes to make links clickable 1 year ago
Peter Simonsson 9205b4e32f [Glitch] Add checkmark symbol to checkbox 1 year ago
JT Olio a5fd2fe1cb
Add Storj DCS to cloud object storage options (#21929) 1 year ago
Jeong Arm c87b1a20c7 [Glitch] Make visible change for new post notification setting icon 1 year ago
Claire 473fed2cdf [Glitch] Fix /api/v1/admin/trends/tags using wrong serializer 1 year ago
Claire 60abcb3c4c Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire 3588fbc766
Fix confusing wording in the sign in banner (#22490) 1 year ago
Claire cb4e28f405
Add `tootctl domains purge` options to select subdomains and keep domain blocks (#22063) 1 year ago
Claire 68dcbcb7bf
Add more specific error messages to HTTP signature verification (#21617) 1 year ago
Connor Shea 30e895299c
Add listing of followed hashtags (#21773) 1 year ago
Claire 3970a6f433
Add option to make the landing page be /about even when trends are enabled (#20808) 1 year ago
Claire 343e1fe8e9
Add confirmation screen when handling reports (#22375) 1 year ago
Claire 4b92e59f4f
Add support for editing media description and focus point of already-posted statuses (#20878) 1 year ago
Claire d1387579b9
Fix situations in which instance actor can be set to a Mastodon-incompatible name (#22307) 1 year ago
Claire 9b3e22c40d
Change account moderation notes to make links clickable (#22553) 1 year ago
Peter Simonsson 7e6ffa085f
Add checkmark symbol to checkbox (#22795) 1 year ago
Jeong Arm 1b2ef60cec
Make visible change for new post notification setting icon (#22541) 1 year ago
Claire b034dc42be
Fix /api/v1/admin/trends/tags using wrong serializer (#18943) 1 year ago
Claire 0405be69d2
Fix REST API serializer for Account not including `moved` when the moved account has itself moved (#22483) 1 year ago
Claire d4f590d6bb
Fix scheduled_at input not using datetime-local when editing announcements (#21896) 1 year ago
Claire 41517a4845
Fix spurious admin dashboard warning when using ElasticSearch 7.x (#23064) 1 year ago
Claire fcc4c9b34a
Change domain block CSV parsing to be more robust and handle more lists (#21470) 1 year ago
Claire 472fd4307f
New Crowdin updates (#2069) 1 year ago
Claire c16aadf718
Merge pull request #2086 from ClearlyClaire/glitch-soc/merge 1 year ago
Claire 6ae97bba25 Merge branch 'main' into glitch-soc/merge 1 year ago
dependabot[bot] 302fcb9788
Bump rails from 6.1.7 to 6.1.7.1 (#23144) 1 year ago
dependabot[bot] 9b32ca583e
Bump ox from 2.14.12 to 2.14.13 (#23143) 1 year ago
dependabot[bot] c6cda209d5
Bump rack from 2.2.5 to 2.2.6.2 (#23142) 1 year ago
dependabot[bot] 8276274bf6
Bump rubocop-rspec from 2.16.0 to 2.18.0 (#23122) 1 year ago
dependabot[bot] 23fcf7869e
Bump rubocop from 1.42.0 to 1.43.0 (#23119) 1 year ago
dependabot[bot] d047e93f47
Bump nokogiri from 1.13.10 to 1.14.0 (#23128) 1 year ago
dependabot[bot] 0512780e0d
Bump rimraf from 3.0.2 to 4.0.7 (#23118) 1 year ago
dependabot[bot] 6a9c74a7af
Bump prettier from 2.8.2 to 2.8.3 (#23123) 1 year ago
dependabot[bot] cfb9450d20
Bump glob from 8.0.3 to 8.1.0 (#23125) 1 year ago
dependabot[bot] 1554e0e66a
Bump punycode from 2.1.1 to 2.2.0 (#23126) 1 year ago
Claire 13227e1daf
Merge pull request #2081 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire ab59743c13 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Jeong Arm d66dfc7b3c
Change confirm prompt for relationships management (#19411) 1 year ago
Jeong Arm 0e8f8a1a1c
Implement tootctl accounts prune (#18397) 1 year ago
Darius Kazemi 507e1d22f5
Allow admins to toggle public statistics API (#22833) 1 year ago
Claire 745bdb11a0
Add `tootctl accounts migrate` (#22330) 1 year ago
Darius Kazemi d35fe3d5e3
Add peers API endpoint toggle to Server Settings (#22810) 1 year ago
Carl Schwan f33e22ae4c
Allow changing hide_collections setting with the api (#22790) 1 year ago
David Freedman ff70e50199
Don't crash on unobtainable avatars (#22462) 1 year ago
nametoolong 332a411fad
Remove title from mailer layout (#23078) 1 year ago
Claire afd0d424da
Merge pull request #2080 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire f79c200f7e
Change wording of admin report handling actions (#18388) 1 year ago
Claire 21a1a8ee88
Fix crash when marking statuses as sensitive while some statuses are deleted (#22134) 1 year ago
Claire b52dc5f69d Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire a3a5aa1597
Fix incorrect env file generation in mastodon:setup (#23072) 1 year ago
Claire 598888a7c4 [Glitch] Remove hardcoded width from dropdown overlays 1 year ago
Claire cef87ba86c Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire f4a6365f55
Remove hardcoded width from dropdown overlays (#23062) 1 year ago
Claire ebe2c10932
Change wording of the OAuth scopes descriptions (#22491) 1 year ago
Peter Simonsson a36dfbb2aa [Glitch] Fix dropdown menu positions when scrolling 1 year ago
Claire 3e63fcd4f0 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire 15b88a83ab
Fix sanitizer parsing link text as HTML when stripping unsupported links (#22558) 1 year ago
Markus Unterwaditzer 0c689b9d01
fix: allow verification when page size exceeds 1MB (using HTML5 parser) (#22879) 1 year ago
Peter Simonsson fd33bcb3b2
Fix dropdown menu positions when scrolling (#22916) 1 year ago
Kaspar V ae62e5fa53
Fix/remove calling private method with send in model (#22951) 1 year ago
Claire a65f86ae55
Fix `$` not being escaped in `.env.production` file generated by `mastodon:setup` (#23012) 1 year ago
Claire 2ba14097ff
Change trending tags admin interface to always show batch actions (#23013) 1 year ago
dependabot[bot] 7101bc534c
Bump ws from 8.11.0 to 8.12.0 (#23023) 1 year ago
dependabot[bot] f9655d6850
Bump @babel/core from 7.20.7 to 7.20.12 (#23020) 1 year ago
dependabot[bot] f0fd8c5c38
Bump prettier from 2.8.1 to 2.8.2 (#23022) 1 year ago
dependabot[bot] 167b073087
Bump immutable from 4.2.1 to 4.2.2 (#23021) 1 year ago
dependabot[bot] 2f4dae26ee
Bump postcss from 8.4.20 to 8.4.21 (#23019) 1 year ago
dependabot[bot] a66cf52448
Bump jsdom from 20.0.3 to 21.0.0 (#23018) 1 year ago
dependabot[bot] 973e4756e8
Bump utf-8-validate from 5.0.10 to 6.0.0 (#23017) 1 year ago
Eugen Rochko f6e34ca134
New Crowdin updates (#22953) 1 year ago
Claire 932a22219a
Merge pull request #2077 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire a7bf439cfd Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire cff7d967f9
Fix CSRF protection (#23037) 1 year ago
Holden Foreman fdabfb9d0e [Glitch] Fix footer link circle dividers' screen reader accessibility by adding aria-hidden 1 year ago
Akira Ouchi b6a928cd04 [Glitch] Add variable autoFocus to video 1 year ago
Claire 9765d2b3f8 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire aefefc74c4
Change referrer-policy to no-referrer application-wide (#23014) 1 year ago
Holden Foreman 2bcb081ce8
Fix footer link circle dividers' screen reader accessibility by adding aria-hidden (#22576) 1 year ago
Akira Ouchi 2195f21524
Add variable autoFocus to video (#15281) (#22778) 1 year ago
n0toose 105e1f0ca6
Correct hashtag warning (#22827) 1 year ago
Jim Myhrberg 85ec615393
feat(puma): enable setting min puma threads in addition to max (#21048) 1 year ago
Darius Kazemi 264655c53a
Fix account search not returning followed accounts first (#22956) 1 year ago
Claire ad17e1944a
Merge pull request #2071 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Eugen Rochko d11d15748c
New Crowdin updates (#22901) 1 year ago
Claire c4649ae9d4 [Glitch] Add dropdown menu item to open admin interface for remote domains 1 year ago
Sean Whalen 1219c57209 [Glitch] Replace hide toot with hide post 1 year ago
Holden Foreman 4404a7f065 [Glitch] Add aria-hidden to content warning field when dimmed so that it is not confusing to screen reader users 1 year ago
Holden Foreman 4f335da8f8 [Glitch] Add aria-hidden to 'Hide image' button in MediaGallery since the button is useless to screen reader users 1 year ago
Jed Fox 1702907a9d [Glitch] Improve the contrast of the chart in “poll has ended” notifications 1 year ago
TAKAHASHI Shuuji 009fee7954 Remove object-fit polyfill for the old Microsoft Edge 1 year ago
Claire 6c20dad201 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire 18d00055f4
Add dropdown menu item to open admin interface for remote domains (#21895) 1 year ago
Claire bf5fc20858
Downgrade Node.js requirement to 14+ (#22342) 1 year ago
Claire 18fb01ef7c
Fix possible race conditions when suspending/unsuspending accounts (#22363) 1 year ago
Claire 8683a082dd
Remove needlessly specific Ruby/Bundler versions from Gemfile.lock (#22341) 1 year ago
Nick Schonning a29cd2cdc2
Move Prettier CI checks to filtered jobs (#22376) 1 year ago
Sean Whalen 8cff96d94d
Replace hide toot with hide post (#22385) 1 year ago
Vyr Cossont 06f979098c
Check OpenSearch compatibility version instead of regular version (#22422) 1 year ago
David Freedman ce74991bb2
Bump ruby-jwt and json-jwt to support OpenSSL 3.0 (#22457) 1 year ago
Claire a3b24d483e
Fix “Add new domain block” button using last submitted instead of current search value (#22485) 1 year ago
Nick Schonning 558ac411c4
Expand Stylelint glob to include CSS files (#22469) 1 year ago
Claire acec1fb745
Fix site upload validations (#22479) 1 year ago
Claire 42f9693d00
Fix PermalinkRedirector not applying to users with moved accounts (#22497) 1 year ago
Holden Foreman 83888739fd
Add aria-hidden to content warning field when dimmed so that it is not confusing to screen reader users (#22568) 1 year ago
Sean 583df59df8
Add reference to mastodon/chart (#22589) 1 year ago
Holden Foreman c5da2f8c43
Add aria-hidden to 'Hide image' button in MediaGallery since the button is useless to screen reader users (#22513) 1 year ago
Effy Elden 4dc9152b3e
Be more lenient with OEmbed detection and validation (#22533) 1 year ago
Nikita Karamov 70b3207e33
Add a11y tags to the modal (#22549) 1 year ago
Claire b8ad446f77
Fix incorrectly formatted datetime in account moderation note timestamp (#22555) 1 year ago
Jed Fox b81b646e3b
Improve the contrast of the chart in “poll has ended” notifications (#22575) 1 year ago
Claire 3654c94583
Strip spaces around URL when adding a relay (#22655) 1 year ago
kyori19 b3ab0014e6
Install SSH server into devcontainer image (#22679) 1 year ago
Claire 7e9d5bdbb9
[Glitch] Fix unnecessary re-rendering of various components when typing in web UI (#2063) 1 year ago
TAKAHASHI Shuuji d68c12648c
Remove object-fit polyfill for the old Microsoft Edge (#22693) 1 year ago
Jed Fox 0e7549b82d
Add `reading:autoplay:gifs` to /api/v1/preferences (#22706) 1 year ago
Jeong Arm fdd1facba1
Fix home TL could contain post from who blocked me (#22849) 1 year ago
Alexander Ivanov 8eb29741b4
Add webhook `account.approved` (#22938) 1 year ago
Claire 3a94668d87
Fix root key for glitch-soc pt-PT and pt-BR yaml translations (#2065) 1 year ago
Claire cba7158085
Fix prettifier/lint issues (#2066) 1 year ago
dependabot[bot] 17f79082b0
Bump stylelint from 14.14.0 to 14.16.1 (#22910) 1 year ago
dependabot[bot] 2432b94cfe
Bump rubocop from 1.39.0 to 1.42.0 (#22912) 1 year ago
Plastikmensch 910d2d9f6b
Prevent doodle from closing on outside click (#2047) 1 year ago
dependabot[bot] 1717d708e6
Bump axios from 1.2.1 to 1.2.2 (#22911) 1 year ago
dependabot[bot] 897617d6e2
Bump ox from 2.14.11 to 2.14.12 (#22914) 1 year ago
dependabot[bot] f837b56997
Bump json5 from 1.0.1 to 1.0.2 (#22925) 1 year ago
dependabot[bot] e32a37138a
Bump bullet from 7.0.4 to 7.0.7 (#22927) 1 year ago
Partho Ghosh 115ab2869b
Fix ・ detection in hashtag regex to construct hashtag correctly (#22888) 1 year ago
Aaron Patterson 546e301bcd
Remove microformats gem dependency (#22923) 1 year ago
Claire de67b567ad
Merge pull request #2059 from ClearlyClaire/glitch-soc/merge 1 year ago
Darius Kazemi 476c131946 [Glitch] Replace flex styling with sensible layout rules 1 year ago
Claire b4aabf3cf1 Merge branch 'main' into glitch-soc/merge 1 year ago
Eugen Rochko 41fe7576bf
New Crowdin updates (#22560) 1 year ago
Claire 498cde7dc6
New Crowdin updates (#2048) 1 year ago
Darius Kazemi ef4d29c879
Replace flex styling with sensible layout rules (#22803) 1 year ago
dependabot[bot] 536d55c6ad
Bump redis-namespace from 1.9.0 to 1.10.0 (#22765) 1 year ago
dependabot[bot] 6deab78c5c
Bump rack from 2.2.4 to 2.2.5 (#22777) 1 year ago
dependabot[bot] 29155dc9fd
Bump @babel/plugin-proposal-decorators from 7.20.5 to 7.20.7 (#22764) 1 year ago
dependabot[bot] 178af9b9c7
Bump @babel/runtime from 7.20.6 to 7.20.7 (#22767) 1 year ago
dependabot[bot] bd730cee2d
Bump @babel/core from 7.20.5 to 7.20.7 (#22768) 1 year ago
dependabot[bot] f1726a8a51
Bump @babel/core from 7.20.5 to 7.20.7 (#22768) 1 year ago
dependabot[bot] fae29d1eaa
Bump immutable from 4.1.0 to 4.2.1 (#22774) 1 year ago
dependabot[bot] 8ce011cdcb
Bump sass from 1.57.0 to 1.57.1 (#22770) 1 year ago
dependabot[bot] eb28b41922
Bump simplecov from 0.21.2 to 0.22.0 (#22773) 1 year ago
dependabot[bot] 620e875b55
Bump faker from 3.0.0 to 3.1.0 (#22762) 1 year ago
Claire cbfeb105a8
New Crowdin updates (#2045) 1 year ago
Plastikmensch 08837f730d
Use wrapper div as a spacer (#2046) 1 year ago
Plastikmensch 4b51d1386b
Realign timestamps (#2044) 1 year ago
Claire 05b3907b0c
New Crowdin updates (#2043) 1 year ago
Claire 4eacf6c75f
New Crowdin updates (#2042) 1 year ago
prplecake 6cde3dd08b
Wraps status timestamps in a `div` (#2038) 1 year ago
Claire db420fb779
New Crowdin updates (#2041) 1 year ago
Claire fe3c816a10
Remove unused translation string (#2039) 1 year ago
Claire f79ab85a6a
New Crowdin updates (#2037) 1 year ago
Claire 8b8ca8d71b
New Crowdin updates (#2036) 1 year ago
Claire dbc3890489
New Crowdin updates (#2035) 1 year ago
Claire deb804c954
New Crowdin updates (#2034) 1 year ago
Claire 22d9306edc
Add links to glitch-soc's Crowdin (#2033) 1 year ago
Claire 0b71a4770f
New Crowdin updates (#2032) 1 year ago
Claire e79981936f
Add crowdin configuration file (#2030) 1 year ago
Claire a5e446a4a0
Change locales file generation to use JSON sources (#2028) 1 year ago
Claire 18bcabf26a
Change i18n-tasks config to consider glitch-soc translation files (#2027) 1 year ago
Claire 2f2ef1d4fe
Merge pull request #2029 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire b248aa4d3e Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
dependabot[bot] c4a429ed47
Bump fog-openstack from 0.3.2 to 0.3.10 (#22597) 1 year ago
dependabot[bot] fbe2c95ff1
Bump fog-core from 2.1.0 to 2.3.0 (#22596) 1 year ago
dependabot[bot] a0af356df6
Bump fog-openstack from 0.3.2 to 0.3.10 (#22593) 1 year ago
dependabot[bot] dac312a11a
Bump fog-core from 2.1.0 to 2.3.0 (#22544) 1 year ago
Eugen Rochko de21695162
New Crowdin updates (#22354) 1 year ago
www-cat ba15694003
Add ukrainian translations (#1959) 1 year ago
Plastikmensch ee71d42c29
Add missing translation keys (#2010) 1 year ago
Claire 749c360ba0
Reuse upstream's “Posts and replies” as column heading (#2023) 1 year ago
dependabot[bot] 628b350516
Bump fog-openstack from 0.3.2 to 0.3.10 (#22542) 1 year ago
dependabot[bot] 919747322f
Bump scenic from 1.6.0 to 1.7.0 (#22258) 1 year ago
dependabot[bot] c04b762b9c
Bump http from 5.1.0 to 5.1.1 (#22515) 1 year ago
dependabot[bot] ef09016f35
Bump pundit from 2.2.0 to 2.3.0 (#22516) 1 year ago
dependabot[bot] fcaeae7761
Bump fog-core from 2.1.0 to 2.3.0 (#22521) 1 year ago
dependabot[bot] 6a1d41635b
Bump sass from 1.56.2 to 1.57.0 (#22519) 1 year ago
Claire c1de673060
Fix suspension worker crashing on S3-compatible setups without ACL support (#22487) 1 year ago
Kai 2bad619d17
Change HTTP to HTTPS for links in CODE_OF_CONDUCT (#22465) 1 year ago
Nick Schonning 06b68490d1
Enable eslint:recommended ruleset (#22433) 1 year ago
Jeremy Kescher 719a0951af
[Glitch] Fix being unable to react with the keycap number sign emoji (#2004) 1 year ago
Claire 7ca0a71601
Merge pull request #2014 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Eugen Rochko 2889c68610
New Crowdin updates (#22182) 1 year ago
Nick Schonning 3c70f0a9c9
Run Prettier on YML files (#22345) 1 year ago
Claire 0912fb736d [Glitch] Add follow request banner on account header 1 year ago
Holden Foreman c459625119 [Glitch] Fix language surrounding disability in prompts for alt text and other media descriptions 1 year ago
Bramus! 1ced365371 [Glitch] Fix media markup 1 year ago
Claire cdba1ec5f4 [Glitch] Fix being stuck in edit mode when deleting the edited status 1 year ago
Rens Groothuijsen d7a6a9393a [Glitch] Display search popout at fixed screen position 1 year ago
Terence Eden 89d3d85cf2 [Glitch] Add transparancy to modal background for accessibility 1 year ago
Mina Her 0f5ecb3860 [Glitch] Fix margin for search field on medium window size 1 year ago
Meisam 7883ba34bb [Glitch] set activation for tag follow button 1 year ago
Claire 602f18103c [Glitch] Fix the top action bar appearing in multi-column layout 1 year ago
Nick Schonning 57eab6dbee [Glitch] Fix typo in handler function call name 1 year ago
Connor Shea e76fb9b2c4 [Glitch] Increase the width of the unread notification border. 1 year ago
Francis Murillo b22da94a65 [Glitch] Render current day formats in the client timezone 1 year ago
Yamagishi Kazutoshi 9f3cc9e555 [Glitch] `FormattedMessage` must be used directly 1 year ago
Pleclown 98f7b3657a [Glitch] Adding 12 hours option for polls 1 year ago
Alex Stine aad42cfc35 [Glitch] Fix hidden label causing accessibility issue for search inputs 1 year ago
Riedler 8cd7b95559 [Glitch] Fix profile avatar being slightly offset into left border 1 year ago
Claire 65cc5cb891 [Glitch] Change dropdown menu to contain “Copy link to post” even for non-public posts 1 year ago
Claire 1e8aff072a [Glitch] Fix wasteful request to /api/v1/custom_emojis when not logged in 1 year ago
Claire b70c2e2167 Fix issue with glitch-soc theming 1 year ago
Claire f3a4d57be1 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Yamagishi Kazutoshi f847f67410
Add Western Frisian support (#18602) 1 year ago
Claire d13702ac06
Fix status cache hydration discrepancy (#19879) 1 year ago
zunda 10370d316a
Remove packages that are provided by Heroku stacks (#19836) 1 year ago
Douglas Blank 2c7df002fa
Add left and right margin to emojis (#20464) 1 year ago
Claire 70415714f1
Add follow request banner on account header (#20785) 1 year ago
Matt Williams 7a3c6bb888
Dont use reserved foldername (#20582) 1 year ago
Holden Foreman c761e7a5ef
Fix language surrounding disability in prompts for alt text and other media descriptions (#20923) 1 year ago
Jullan-M b4fe2d1004
Add Southern Sami, and Lule Sami to language list under the ISO-639-3 standard (#21262) 1 year ago
Christopher Nethercott c649f4d386
fix: remove SMTP_SERVER (#21342) 1 year ago
Claire bf1c7e2122
Ensure exact match is the first result in hashtag searches (#21315) 1 year ago
Bramus! 7fbc17afa2
Fix media markup (#21420) 1 year ago
Shlee 99d2693071
Update circleci (#21880) 1 year ago
Claire 2644a28cb3
Change remote media files to be downloaded outside of transactions (#21796) 1 year ago
Brian Campbell 2d12948220
Fix idempotency when database writes are slow (#21840) 1 year ago
Claire ebf1d74e40
Fix being stuck in edit mode when deleting the edited status (#22126) 1 year ago
Claire 8556a649d5
Fix changing domain block severity not undoing individual account effects (#22135) 1 year ago
Effy Elden 1e49be3328
Align everything to Node.js 16 (#22223) 1 year ago
Claire fb1d9789db
Fix attachment rendering of edited posts in OpenGraph (#22270) 1 year ago
Avdi Grimm 8a56587d62
Improve devcontainer for running tests (#22277) 1 year ago
Rens Groothuijsen 726c7dea31
Display search popout at fixed screen position (#16463) 1 year ago
Terence Eden ff414a5489
Add transparancy to modal background for accessibility (#18081) 1 year ago
Arnout Engelen 9f63c428e1
Don't autofocus the compose form (#16517) 1 year ago
Jeong Arm 3656a6b9cc
Add "disabled" user filter for admin/accounts UI (#21282) 1 year ago
Mina Her cedf138313
Fix margin for search field on medium window size (#21606) 1 year ago
David Vega 1b5d207131
Fix single name variables on controller folder (#20092) 1 year ago
Jeong Arm d412147d02
Save avatar or header correctly even if other one fails (#18465) 1 year ago
Luxiaba 8f8c0fe88c
Remove inline-css in logo (#20814) 1 year ago
Yurii Izorkin 7972e5981c
Add brotli compression (#19025) 1 year ago
Matthías Páll Gissurarson 1e95fa3df5
Fix punycoded local domains not being prettified in initial state (#21440) 1 year ago
Meisam 059d64a59e
set activation for tag follow button (#21629) 1 year ago
Claire 673c54f114
Fix inability to use local LibreTranslate without setting ALLOWED_PRIVATE_ADDRESSES (#21926) 1 year ago
Claire bbc49f15e0
Add explanation text to log-in page (#20946) 1 year ago
Fries 725f21662f
Add Montenegrin (cnr) (#21013) 1 year ago
Claire 38596e49d4
Fix the top action bar appearing in multi-column layout (#20943) 1 year ago
Claire 623d3d2e32
Change CSP directives on API to be tight and concise (#20960) 1 year ago
Kaspar V 19f78ea8fa
linting: RuboCop update, config fixes (#20574) 1 year ago
Neil Matatall 1f5740e65c
Use Rails tag API to build RSS feed for spoilers and polls (#20163) 1 year ago
Dan Peterson 3d3429243f
Fix default S3_HOSTNAME used in mastodon:setup (#19932) 1 year ago
Colin Mitchell 22e36271c5
Add environment variable to configure sidekiq concurrency (#19589) 1 year ago
Nick Schonning 72a8af8088
Fix typo in handler function call name (#21829) 1 year ago
Connor Shea 08c0e43b6f
Increase the width of the unread notification border. (#21692) 1 year ago
Francis Murillo c50e9d078a
Render current day formats in the client timezone (#21878) 1 year ago
trwnh f0cebaee00
Add localization for new admin scopes (#20979) 1 year ago
Ikko Ashimine baecdf2882
Fix typo in application_helper_spec.rb (#20981) 1 year ago
Yamagishi Kazutoshi 58200132d0
`FormattedMessage` must be used directly (#20982) 1 year ago
Pleclown 3a59ffde8d
Adding 12 hours option for polls (#21131) 1 year ago
Alex Stine 903e5a3f45
Fix hidden label causing accessibility issue for search inputs (#21275) 1 year ago
Matt Hodges 4114a7088a
Embed js height fix (#22141) 1 year ago
Jeremy Kescher 04c611daa1
Fix being unable to react with the keycap number sign emoji (#22231) 1 year ago
nametoolong 63b379c2d9
Fix N+1 queries from in NotificationsController (#21202) 1 year ago
luzpaz 596923da4a
Fix typos in source documentation (#21046) 1 year ago
Moritz Heiber a0813806d6
Add hadolint as Dockerfile linter (#20993) 1 year ago
Riedler c3388f4ab1
Fix profile avatar being slightly offset into left border (fixes #20822) (#20994) 1 year ago
s0 52540771b0
Fix crash in elasticsearch_check.rb (#21006) 1 year ago
Effy Elden 441cac758f
Allow adding relays while secure mode & limited federation mode are enabled (#22324) 1 year ago
Claire 7b68e6409b
Fix invalid CSS for links in warning and strike cards (#22302) 1 year ago
Jeong Arm e8cc63105f
Don't delivery a reply to domains which are blocked by author (#22117) 1 year ago
Justin Hutchings e5d15a5b56
Add CodeQL workflow (#21894) 1 year ago
Claire bae6ef315e
Fix missing Javascript in domain block import confirmation page (#21471) 1 year ago
Francis Murillo 5fb1c3e934
Revoke all authorized applications on password reset (#21325) 1 year ago
Claire fe9eab51d1
Change dropdown menu to contain “Copy link to post” even for non-public posts (#21316) 1 year ago
Meisam 6cdbc345f4
Validate nodeinfo response by schema (#21395) 1 year ago
Claire f239d31f23
Add --email and --dry-run options to `tootctl accounts delete` (#22328) 1 year ago
Claire 5917b46c05
Allow admins to refresh remotely-suspended accounts (#22327) 1 year ago
Claire 1f762f4271
Fix wasteful request to /api/v1/custom_emojis when not logged in (#22326) 1 year ago
Evan 78ef635980
Add command to remove avatar and header images of inactive remote accounts from the local database (#22149) 1 year ago
Claire 3868ba683d
Merge pull request #2007 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire ccc01559de Fix invalid CSS for links in warning and strike cards 1 year ago
Rin 21ee6a777d [Glitch] fix missing style in warning and strike cards 1 year ago
cadars 32b8b3355b [Glitch] Make handle more easily selectable on profile page 1 year ago
Claire bc91069e08 [Glitch] Change default reply language to be default language when replying to a translated reply 1 year ago
Claire 47c75c29da Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
dependabot[bot] a9bd5f65bb
Bump postcss from 8.4.19 to 8.4.20 (#22256) 1 year ago
dependabot[bot] 1133e05e3d
Bump rails-html-sanitizer from 1.4.3 to 1.4.4 (#22279) 1 year ago
dependabot[bot] 44739096ec
Bump loofah from 2.19.0 to 2.19.1 (#22278) 1 year ago
dependabot[bot] 062197a193
Bump public_suffix from 5.0.0 to 5.0.1 (#22259) 1 year ago
dependabot[bot] 7e2d5e8aa7
Bump sass from 1.56.1 to 1.56.2 (#22257) 1 year ago
dependabot[bot] 364f5f1f45
Bump prettier from 2.8.0 to 2.8.1 (#22255) 1 year ago
zunda 09191dee66
Add single splat to callback method definitions to avoid ArgumentError (#22246) 1 year ago
Rin 42e16ea52d
fix missing style in warning and strike cards (#22177) 1 year ago
Claire 55b210b3e5
Fix crash and incorrect behavior in tootctl domains crawl (#19004) 1 year ago
cadars 52a50c5e43
Make handle more easily selectable on profile page (#21479) 1 year ago
Claire f70bdba926
Change default reply language to be default language when replying to a translated reply (#22272) 1 year ago
Claire b0ef980aa1
Merge pull request #2005 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire dcae9edb14 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Nick Schonning 736b4283b0
Update Node 16.18.1 for latest security release (#22019) 1 year ago
prplecake 714e68db38
Add noindex setting to Admin settings Discovery page (#22205) 1 year ago
Claire 5d95e6debb
Merge pull request #2001 from ClearlyClaire/glitch-soc/main 1 year ago
dependabot[bot] ad568924c0
Bump axios from 1.2.0 to 1.2.1 (#22076) 1 year ago
dependabot[bot] 2b0112aab1
Bump sidekiq-unique-jobs from 7.1.27 to 7.1.29 (#22078) 1 year ago
Claire 3ea445bb5c [Glitch] Fix potential duplicate statuses in Explore tab 1 year ago
Claire e877bb47b8 Merge branch 'main' into glitch-soc/main 1 year ago
dependabot[bot] 4555ecf995
Bump nokogiri from 1.13.9 to 1.13.10 (#22145) 1 year ago
Eugen Rochko 97b6e38a7d
New Crowdin updates (#21954) 1 year ago
Nick Schonning e8481e67a7
Add CI job to label PRs with merge conflicts (#22020) 1 year ago
Erik Sundell 64bea71714
helm: cleanup helm chart, now in mastodon/chart (#21801) 1 year ago
Michal Dvorak 859db01268
initial translation of Glitch-specific texts into Czech (#1997) 1 year ago
Claire ed07f10ca8
Fix failure when “Require a reason to join” is set with open registrations (#22127) 1 year ago
Claire c52263f6f8
Fix deprecation warning in `tootctl accounts rotate` (#22120) 1 year ago
Claire c8a1faa86b
Fix potential duplicate statuses in Explore tab (#22121) 1 year ago
Claire 0194bd33fe
Merge pull request #1995 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Juan Xavier Gomez 16fb604c52 [Glitch] Fix hidden overflow on interaction modal 1 year ago
Claire 4642f7d830 [Glitch] Fix UI header overflow on mobile 1 year ago
Claire 0e70215c40 [Glitch] Fix “Sign up” button with closed registrations not opening modal on mobile 1 year ago
Claire 9a3d91f629 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire b59fb28e90
Fix 500 error when trying to migrate to an invalid address (#21462) 1 year ago
Juan Xavier Gomez 21b208afcb
Fix hidden overflow on interaction modal (#21763) 1 year ago
Claire 76454cc638
Fix UI header overflow on mobile (#21783) 1 year ago
Claire 3d40282f1b
Change postgres connection timeout (#21790) 1 year ago
Yamagishi Kazutoshi e538584fbe
See version file in GitHub Actions (#21927) 1 year ago
Claire 51098035ed
Fix “Sign up” button with closed registrations not opening modal on mobile (#22060) 1 year ago
Francis Murillo f6492a7c4d
Log admin approve and reject account (#22088) 1 year ago
Claire c8849d6cee
Fix unbounded recursion in account discovery (#22025) 1 year ago
Jonathan Hawkes 98a9347dd7
Update Ubuntu, Node versions, dependencies (#22075) 1 year ago
Claire 69137f4a90
Fix irreversible and whole_word parameters handling in /api/v1/filters (#21988) 1 year ago
Mikhail Paulyshka f80c3d40e8
enable be locale (#22022) 1 year ago
Jed Fox 33f06a4ae7
Fix the top border of verified account fields (#22006) 1 year ago
Claire 66a70ebb6e
Fix pre-4.0 admin action logs (#22091) 1 year ago
Claire fe523a3045
Fix unbounded recursion in account discovery (#1994) 1 year ago
Claire f4879c4481
Fix content-type being reset when editing toots (#1993) 1 year ago
Claire e7ff8111b1
Merge pull request #1991 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire 3be6aff1a8 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Nick Schonning 05d4c50f64
Fix spacing warning from ESLint (#22005) 1 year ago
Nick Schonning f77ed3a6b2
Correct prettier calls for YML/JSON (#21832) 1 year ago
dependabot[bot] 2413e5f3f0
Bump faker from 2.23.0 to 3.0.0 (#20039) 1 year ago
dependabot[bot] 855b611879
Bump jest from 29.2.2 to 29.3.1 (#20686) 1 year ago
dependabot[bot] 3ca73302a9
Bump react-select from 5.6.1 to 5.7.0 (#21955) 1 year ago
dependabot[bot] a75c86a89e
Bump react-textarea-autosize from 8.3.4 to 8.4.0 (#20683) 1 year ago
dependabot[bot] 758b5c7217
Bump react-select from 5.5.4 to 5.6.1 (#21346) 1 year ago
dependabot[bot] 43bd2ad820
Bump rdf-normalize from 0.5.0 to 0.5.1 (#21812) 1 year ago
dependabot[bot] 68dc60bd54
Bump doorkeeper from 5.6.0 to 5.6.2 (#21950) 1 year ago
dependabot[bot] 0759d921aa
Bump tzinfo-data from 1.2022.6 to 1.2022.7 (#21951) 1 year ago
dependabot[bot] a22cfbb470
Bump stackprof from 0.2.22 to 0.2.23 (#21952) 1 year ago
dependabot[bot] 3b6eee5437
Bump stoplight from 3.0.0 to 3.0.1 (#21953) 1 year ago
dependabot[bot] 41c1ff9933
Bump decode-uri-component from 0.2.0 to 0.2.2 (#21947) 1 year ago
dependabot[bot] 62ccc99af7
Bump axios from 1.1.3 to 1.2.0 (#21817) 1 year ago
dependabot[bot] 7618e12333
Bump aws-sdk-s3 from 1.117.1 to 1.117.2 (#21949) 1 year ago
dependabot[bot] beb380c9c7
Bump prettier from 2.7.1 to 2.8.0 (#21815) 1 year ago
dependabot[bot] ca4211ff47
Bump http-link-header from 1.0.5 to 1.1.0 (#20685) 1 year ago
dependabot[bot] f3934f2fff
Bump pkg-config from 1.4.9 to 1.5.1 (#21820) 1 year ago
dependabot[bot] ea3d3505d0
Bump @babel/plugin-proposal-decorators from 7.20.2 to 7.20.5 (#21813) 1 year ago
dependabot[bot] 7b067ad95c
Bump @babel/core from 7.20.2 to 7.20.5 (#21811) 1 year ago
dependabot[bot] 71185763bd
Bump @babel/runtime from 7.20.1 to 7.20.6 (#21819) 1 year ago
dependabot[bot] d0dbc54c9e
Bump doorkeeper from 5.6.0 to 5.6.1 (#21816) 1 year ago
dependabot[bot] 03ec81eedc
Bump postcss-scss from 4.0.5 to 4.0.6 (#21814) 1 year ago
dependabot[bot] ca832c8dff
Bump bootsnap from 1.14.0 to 1.15.0 (#21810) 1 year ago
dependabot[bot] 17d197787c
Bump bullet from 7.0.3 to 7.0.4 (#21809) 1 year ago
dependabot[bot] b1768153b2
Bump premailer-rails from 1.11.1 to 1.12.0 (#20588) 1 year ago
dependabot[bot] 31ab9b1115
Bump aws-sdk-s3 from 1.114.0 to 1.117.1 (#20043) 1 year ago
Eugen Rochko 6119668e45
New Crowdin updates (#21599) 1 year ago
kibigo! 2cabc5d188
Use a tree‐based approach for advanced text formatting (#1907) 1 year ago
Claire 4ac6601476
Port navigation bar from upstream (#1986) 1 year ago
Claire 105d9743ae
Merge pull request #1984 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire fd6f9bf7a7 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Nick Schonning 491ab8de89
Fix GitHub form label type (#21833) 1 year ago
Claire 68d1df8bc3
Fix some performance issues with /admin/instances (#21907) 1 year ago
Claire fc0e11abdb
Merge pull request #1983 from ClearlyClaire/glitch-soc/features/translation 1 year ago
Claire e64909d8bf Move translate button above media attachments/preview cards 1 year ago
Claire afdd75e1f9 Fix translate button not being shown when the toot has no Content Warning 1 year ago
Claire 620b079a78 Fix inconsistent with “translate” button padding 1 year ago
Eugen Rochko f7684a31fe [Glitch] Change design of translations in web UI 1 year ago
Claire 44c0ba445a [Glitch] Add mention of the translation provider when translating a post 1 year ago
Claire 47bd934061 [Glitch] Change “Translate” button to only show up when a translation backend is configured 1 year ago
Eugen Rochko e8d0a1b320 [Glitch] Fix showing translate button when status has no language in web UI 1 year ago
Eugen Rochko 5e143db13a [Glitch] Don't show translate button to logged-out users 1 year ago
Eugen Rochko b5ee275ed9 [Glitch] Fix translations not being formatted, other issues in web UI 1 year ago
Eugen Rochko a3052dad04 [Glitch] Add user content translations with configurable backends 1 year ago
Claire f3ce9653eb
Merge pull request #1982 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire fe111a8bad Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
mhkhung 1122697b37
3.0.5 version of cimg/ruby:3.0-node upgraded to node 18 (#21873) 1 year ago
Claire 2d4d99f135
Fix expanded statuses not always being scrolled into view (#21797) 1 year ago
Claire 1a7aa37b60
Merge pull request #1976 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Connor Shea f51990bd62 [Glitch] Make the 'Trending now' header a link to Explore. 1 year ago
Claire 98c5ca1037 [Glitch] Fix infinite loading instead of soft 404 for non-existing remote accounts 1 year ago
James Adney 2815ac4155 [Glitch] fix gif autoplay on iOS 1 year ago
Claire c0bf90ac19 [Glitch] Fix “Share @{name}'s profile” profile menu item 1 year ago
kedama 32b43a96a7 [Glitch] Fix status mismatch of sensitive check 1 year ago
Claire a2e7997592 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Connor Shea cec1e902e0
Make the 'Trending now' header a link to Explore. (#21759) 1 year ago
Claire 3ffaa966b0
Fix infinite loading instead of soft 404 for non-existing remote accounts (#21303) 1 year ago
Claire 57b893d505
Fix spaces not being stripped in admin account search (#21324) 1 year ago
James Adney c0dcf15d1e
fix gif autoplay on iOS (#21422) 1 year ago
Bramus! e617ee7fd9
Add user profile OG tag on status page (#21423) 1 year ago
Claire f4f2b062ec
Remove LDSignature on actor Delete activities (#21466) 1 year ago
Claire fe421257e5
Fix “Share @{name}'s profile” profile menu item (#21490) 1 year ago
Claire 098ced7420
Remove support for Ruby 2.6 (#21477) 1 year ago
Kaspar V 47f0d7021e
refactor(vacuum statuses): reduce amount of db queries and load for each query - improve performance (#21487) 1 year ago
Claire 625216d8e1
Fix attachments of edited statuses not being fetched (#21565) 1 year ago
Claire d587a268fd
Add logging for Rails cache timeouts (#21667) 1 year ago
kedama 14e2354eea
Fix status mismatch of sensitive check (#21724) 1 year ago
afontenot f17fc5742e
Clear voter count when poll is reset (#21700) 1 year ago
dependabot[bot] 95b24c51ec
Bump sass from 1.55.0 to 1.56.1 (#20681) 1 year ago
dependabot[bot] 4ed2b3590b
Bump webpack-bundle-analyzer from 4.6.1 to 4.7.0 (#19604) 1 year ago
dependabot[bot] 593a652090
Bump babel-loader from 8.2.5 to 8.3.0 (#20059) 1 year ago
dependabot[bot] 00466763e2
Bump capybara from 3.37.1 to 3.38.0 (#20036) 1 year ago
dependabot[bot] 7b86e3a6ce
Bump @babel/runtime from 7.19.4 to 7.20.1 (#20038) 1 year ago
dependabot[bot] dc7a49ddf6
Bump @babel/preset-env from 7.19.4 to 7.20.2 (#20037) 1 year ago
dependabot[bot] 08a50d3a71
Bump @babel/plugin-proposal-decorators from 7.19.6 to 7.20.2 (#20061) 1 year ago
dependabot[bot] 99428cba55
Bump @babel/core from 7.19.6 to 7.20.2 (#20051) 1 year ago
dependabot[bot] 86cbee77d6
Bump brakeman from 5.3.1 to 5.4.0 (#21351) 1 year ago
dependabot[bot] fefda70ee0
Bump bootsnap from 1.13.0 to 1.14.0 (#21344) 1 year ago
Skyler Hawthorne 5b2ff8d32d
fix media uploads with ffmpeg 5 (#21191) 1 year ago
Claire 6517b7b9f0
Fix pillbar buttons in light theme (#1972) 1 year ago
Eugen Rochko 3d906d8e62
New Crowdin updates (#20942) 1 year ago
Chris Funderburg 8acf18a960
Fix the command to create the admin user (#19827) 1 year ago
Sheogorath cddcafec31
Helm: Major refactoring regarding Deployments, Environment variables and more (#20733) 1 year ago
dependabot[bot] 75bbe3b1b8
Bump regenerator-runtime from 0.13.10 to 0.13.11 (#21343) 1 year ago
dependabot[bot] 8654603b3f
Bump jsdom from 20.0.2 to 20.0.3 (#21347) 1 year ago
dependabot[bot] e5cd79cd9c
Bump idn-ruby from 0.1.4 to 0.1.5 (#21348) 1 year ago
dependabot[bot] f83166ae74
Bump eslint-plugin-react from 7.31.10 to 7.31.11 (#21349) 1 year ago
dependabot[bot] b02cda69e8
Bump pg from 1.4.4 to 1.4.5 (#21350) 1 year ago
dependabot[bot] 94fe9c3075
Bump httplog from 1.6.0 to 1.6.2 (#21345) 1 year ago
Claire 43dbc62568
Fix privacy dropdown in boost modal on mobile (#1967) 1 year ago
Claire bdc61d467d
Merge pull request #1966 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire ff42233aae Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
BtbN f343ed42ff
Add missing procps package to Dockerfile (#21028) 1 year ago
Claire 51a33ce77a
Fix not being able to follow more than one hashtag (#21285) 1 year ago
David Leadbeater 69378eac99
Don't allow URLs that contain non-normalized paths to be verified (#20999) 1 year ago
Claire e0e7a09cfe
Merge pull request #1955 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire 597a783742 Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire 48e136605a
Fix form-action CSP directive for external login (#20962) 1 year ago
Claire f233b5ed25
Merge pull request #1954 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire 367db8222f Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire 4ae97a2e4c
Fix OAuth flow being broken by recent CSP change (#20958) 1 year ago
Effy Elden 231e3ec552
Remove blank line from start of Dockerfile breaking syntax declaration (#20948) 1 year ago
Eugen Rochko 0a78631e86
New Crowdin updates (#20759) 1 year ago
Claire 381137c94e
Merge pull request #1951 from ClearlyClaire/glitch-soc/merge-upstream 1 year ago
Claire c22f3a87a3 [Glitch] Remove use of DOMParser in front-end emoji rewriting code 1 year ago
Levi Bard 4b449fff23 [Glitch] Make the button that expands the publish form differentiable from the button that publishes a post 1 year ago
nyura123dev 87929ad866 [Glitch] Fix safari explore disappearing tabs 1 year ago
Moritz Heiber 1b5ed32085
Split off Dockerfile components for faster build times (#20933) 1 year ago
Claire 5ef92dff57 Remove glitch-soc-specific translations of upstreamed feature (domain block import) 1 year ago
Claire aec61a703f Merge branch 'main' into glitch-soc/merge-upstream 1 year ago
Claire ab7d99e035
Fix various issues with domain block import (#1944) 1 year ago
Claire 585cc1a604
Remove use of DOMParser in front-end emoji rewriting code (#20758) 1 year ago
Rose 4f15fd0ba1
Fix style for hashes (#20518) 1 year ago
lenore gilbert c373148b3d
Support for import/export of instance-level domain blocks/allows for 4.x w/ additional fixes (#20597) 1 year ago
Ell Bradshaw e7deea62d1
Remove last references to "silencing" in UI text (#20637) 1 year ago
Kohei Ota (inductor) 92734e3df1
Use buildx functions for faster build (#20692) 1 year ago
Joshua Wood daf6f3453e
Handle links with no href in VerifyLinkService (#20741) 1 year ago
Claire cbb0153bd0
Fix invalid/empty RSS feed link on account pages (#20772) 1 year ago
trwnh 7fdeed5fbc
Make tag following idempotent (#20860) 1 year ago
trwnh 72618ebf03
Fix getting a single EmailDomainBlock (#20846) 1 year ago
Claire 00b2720ef0
Change automatic post deletion configuration to be accessible to redirected users (#20774) 1 year ago
Claire 7955d4b959
Add form-action CSP directive (#20781) 1 year ago
Claire eb80789b0b
Fix misleading wording about waitlists (#20850) 1 year ago
trwnh e1f819fd78
Fix pagination of followed tags (#20861) 1 year ago
Levi Bard 654d348aac
Make the button that expands the publish form differentiable from the button that publishes a post (#20864) 1 year ago
Alex Nordlund 642870c82b
Bump Helm chart version to account for mastodon 4 (#20886) 1 year ago
Claire 0cc77263fc
Change batch account suspension to create a strike (#20897) 1 year ago
Chris Johnson 413481f953
Add maskable icon support for Android (#20904) 1 year ago
trwnh a2931d19ae
Add missing admin scopes (fix #20892) (#20918) 1 year ago
nyura123dev aaca78da78
Fix safari explore disappearing tabs (#20917) 1 year ago
Claire 23ea0e7508
Add aria-label and title attributes to local settings navigation items (#1949) 1 year ago
Claire 8c56441b4a
Add form-action CSP directive (#1948) 1 year ago
Thor c661961f21 Merge remote-tracking branch 'origin/main' into local 1 year ago
Thor 22e9559aa2 Merge remote-tracking branch 'upstream/main' into main 1 year ago
Effy Elden f890fdca41
Bump Helm app version to 4.0.2 (#20697) 2 years ago
Claire ad84fd25f1
Merge pull request #1941 from ClearlyClaire/glitch-soc/merge-upstream 2 years ago
Effy Elden 7efe2cf00f
Modify image build workflow for Glitch workflows (#1942) 2 years ago
Claire 1901829f9a Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Daniel Axtens 4d85c27d1a
Add 'private' to Cache-Control, match Rails expectations (#20608) 2 years ago
dependabot[bot] ac7a29f068
Bump loader-utils from 1.4.1 to 1.4.2 (#20826) 2 years ago
dependabot[bot] f7d261cac7
Bump sidekiq from 6.5.7 to 6.5.8 (#20035) 2 years ago
dependabot[bot] 575bf3fa20
Bump oj from 3.13.21 to 3.13.23 (#20046) 2 years ago
dependabot[bot] dde60e2634
Bump object.values from 1.1.5 to 1.1.6 (#20047) 2 years ago
dependabot[bot] f32c2de6af
Bump pg from 1.4.3 to 1.4.4 (#19597) 2 years ago
dependabot[bot] acbf4d0dfe
Bump jsdom from 20.0.1 to 20.0.2 (#19603) 2 years ago
dependabot[bot] dd360e653e
Bump blurhash from 2.0.3 to 2.0.4 (#19601) 2 years ago
dependabot[bot] ca6106603b
Bump array-includes from 3.1.5 to 3.1.6 (#20680) 2 years ago
dependabot[bot] dba1645bf0
Bump postcss from 8.4.18 to 8.4.19 (#20684) 2 years ago
dependabot[bot] 9f95c419d2
Bump yargs from 17.6.0 to 17.6.2 (#20063) 2 years ago
dependabot[bot] 3301aadba8
Bump redux-thunk from 2.4.1 to 2.4.2 (#20060) 2 years ago
dependabot[bot] 4ef4db2a5a
Bump loader-utils from 1.4.0 to 1.4.1 (#20085) 2 years ago
dependabot[bot] fc4452104c
Bump json-ld-preloaded from 3.2.0 to 3.2.2 (#20058) 2 years ago
dependabot[bot] c76f29ae45
Bump tzinfo-data from 1.2022.4 to 1.2022.6 (#20056) 2 years ago
dependabot[bot] 61264e52cc
Bump memory_profiler from 1.0.0 to 1.0.1 (#20054) 2 years ago
dependabot[bot] 3b82d1ef68
Bump reselect from 4.1.6 to 4.1.7 (#20052) 2 years ago
dependabot[bot] 66a22ab391
Bump promise.prototype.finally from 3.1.3 to 3.1.4 (#20050) 2 years ago
Eugen Rochko a1738f8991
New Crowdin updates (#20580) 2 years ago
Eugen Rochko 03b0f3ac83
Bump version to 4.0.2 (#20725) 2 years ago
Eugen Rochko 43b0b2f3f4
Fix wrong directive `unsafe-wasm-eval` to `wasm-unsafe-eval` (#20729) 2 years ago
prplecake b46b7c3d5e
Use "unsafe-wasm-eval" instead of "unsafe-eval" in script-src CSP (#20606) 2 years ago
dependabot[bot] b59683c156
Bump nokogiri from 1.13.8 to 1.13.9 (#20041) 2 years ago
Eugen Rochko 17bd9a87b9
Fix wrong color on mentions hidden behind content warning in web UI (#20724) 2 years ago
Claire eb675af0fb
Merge pull request #1932 from ClearlyClaire/glitch-soc/merge-upstream 2 years ago
Claire 66461ae79a Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Claire 8c3c6dcae9
Fix filters from other users being used in the streaming service (#20719) 2 years ago
Claire ceafd1f68f
Fix infinite loop when system emoji font is enabled (#1931) 2 years ago
Claire e589afa0ef
Merge pull request #1929 from ClearlyClaire/glitch-soc/merge-upstream 2 years ago
Claire 8aa56aedfd [Glitch] Fix nodes order being sometimes mangled when rewriting emoji 2 years ago
Claire b5698af25f Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Eugen Rochko 4415dd6036
Bump version to 4.0.1 (#20696) 2 years ago
Claire ccbca50a25
Fix nodes order being sometimes mangled when rewriting emoji (#20677) 2 years ago
Claire 7a8cd0cb0a
Merge pull request #1928 from ClearlyClaire/glitch-soc/merge-upstream 2 years ago
Claire 71982e5c83 [Glitch] Fix emoji substitution not applying only to text nodes in Web UI 2 years ago
Claire 767630be24 Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Eugen Rochko fb389bd73c
Bump version to 4.0.0 (#20636) 2 years ago
Eugen Rochko 21fd25a269
Fix rate limiting for paths with formats (#20675) 2 years ago
Claire 71c92d3f56
Fix emoji substitution not applying only to text nodes in backend code (#20641) 2 years ago
Claire 625e086996
Fix emoji substitution not applying only to text nodes in Web UI (#20640) 2 years ago
Claire a34aa2a5f9
Merge pull request #1927 from ClearlyClaire/glitch-soc/merge-upstream 2 years ago
Claire 96c1ef6d50 [Glitch] Fix media metadata being only editable once 2 years ago
Claire 9ab4e3fc6d Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Claire 2d54986a03
Fix media metadata being only editable once (#20665) 2 years ago
Claire 7233569474
Merge pull request #1923 from ClearlyClaire/glitch-soc/merge-upstream 2 years ago
trwnh c31e756644 [Glitch] Move V2 Filter methods under /api/v2 prefix 2 years ago
Eugen Rochko 9db90d2ebe [Glitch] Fix dropdown menu on profiles not being accessible on narrow screens in web UI 2 years ago
Samuel Kaiser 9fd866f38e [Glitch] Stick batch table toolbar to the top 2 years ago
Claire cd713cac81 Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Eugen Rochko 75299a042c
Bump version to 4.0.0rc4 (#20634) 2 years ago
Claire 32c70d2f09 Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
trwnh b59ce0a60f
Move V2 Filter methods under /api/v2 prefix (#20622) 2 years ago
Claire 457c37e47a
Fix index name in fix-duplicates task (#20632) 2 years ago
Eugen Rochko 1e83092e47
Update AUTHORS.md (#20630) 2 years ago
Eugen Rochko 552d69ad96
Fix error when invalid domain name is submitted (#19474) 2 years ago
Eugen Rochko 523e106cbf
Fix style of username in navigation bar above compose form in web UI (#20628) 2 years ago
Eugen Rochko b31afc6294
Fix error when passing unknown filter param in REST API (#20626) 2 years ago
Eugen Rochko 5c826c408d
Fix image type not being set after conversion for convertible image types (#20624) 2 years ago
Eugen Rochko 167d86d21d
Fix `role_ids` not accepting arrays in admin API (#20625) 2 years ago
Eugen Rochko 2e2ba39abf
Fix rules with same priority being sorted non-deterministically (#20623) 2 years ago
Eugen Rochko 6da9df774e
Fix dropdown menu on profiles not being accessible on narrow screens in web UI (#20620) 2 years ago
Hampton Lintorn-Catlin 147d8bd8fc
Support UTF-8 Characters in Domains During CSV Import (#20592) 2 years ago
Matt Corallo 9d039209cc
Add `Cache-Control` header to openstack-stored files (#20610) 2 years ago
Eugen Rochko d0b7bd4250
Fix wrong cut-off point for "Read more" in web UI (#20599) 2 years ago
Eugen Rochko 24b2c60beb
Fix icons having an image role (#20600) 2 years ago
Erik Sundell 87fbd08f74
helm: Add helm chart tests (#20394) 2 years ago
trwnh 07229089a6
Change in-app links to keep you in-app (#20540) 2 years ago
Cees-Jan Kiewiet ad66bbed62
Add the option to configure external postgresql port (#20370) 2 years ago
Alex Nordlund 82c663300a
Helm: support statsd publishing (#20455) 2 years ago
Samuel Kaiser e62b514e95
Stick batch table toolbar to the top (#20442) 2 years ago
Emily Strickland c2231539c7
Test blank account field verifiability (#20458) 2 years ago
Claire bd806a3090
Update fix-duplicates (#20502) 2 years ago
Nicholas La Roux a6186da983
Clean up GitHub sourced gem entry (#20542) 2 years ago
Claire cd5e98dbdb
Fix public/local timeline posts not being properly filtered (#20567) 2 years ago
Claire 3d3bd344cb
Fix announcement dates not being validated client-side (#20577) 2 years ago
Arthur Isac 1af482659d
Copied Spaces support from packer .rake (#20573) 2 years ago
Eugen Rochko cf36ee99bb
New Crowdin updates (#20476) 2 years ago
David Hewitt 290d78cea4
Allow unsetting x-amz-acl S3 Permission headers (#20510) 2 years ago
Claire cf77d938f8
Fix saving server registration settings redirecting to branding settings (#20505) 2 years ago
helloworldstack e9e4938bc9
Fix casing and spacing of words (#20504) 2 years ago
Claire 81b1d32d5b
Merge pull request #1920 from ClearlyClaire/glitch-soc/merge-upstream 2 years ago
Claire a808ac1fd8 [Glitch] Fix WebUI crash when listing server blocks and rationale is not available 2 years ago
Claire 9255bfb908 [Glitch] Add the ability to edit media attachment metadata for any unattached media 2 years ago
Cutls e2315876f4 [Glitch] Do not show drag&drop dialog when not logined 2 years ago
Claire 8ac4165c72 [Glitch] Remove “No description added” media warning in edit mode 2 years ago
Eugen Rochko 400d168310 [Glitch] Fix domain blocks on about page not working well on small screens in web UI 2 years ago
Connor Shea d525ae4bdd [Glitch] Only remove padding when listing applications 2 years ago
Yamagishi Kazutoshi 0071582c6d [Glitch] Delay workbox import 2 years ago
Claire 5394ca6807 [Glitch] Fix unnecessary service worker registration and preloading when logged out 2 years ago
Claire 487689f062 [Glitch] Remove preview cards from fav and boost notifications 2 years ago
Claire 3fa6c603ba [Glitch] Fix color of the “No description added“ media upload warning on light theme 2 years ago
Claire 93912f0498 Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Claire d37f426f95
Add back missing glitch-soc admin settings (#1919) 2 years ago
Jared Allard e88f4f5e57
ci: write permissions to packages (#1906) 2 years ago
Claire 210341fba1
Merge pull request #1918 from ClearlyClaire/glitch-soc/features/glitch-label 2 years ago
Claire af89b14628 Add extended description for glitch-soc only “hide followers count" setting 2 years ago
Claire 6a96b17a2d Add “Glitch-only” label to glitch-specific settings 2 years ago
Claire c813df2ebb
Merge pull request #1917 from ClearlyClaire/glitch-soc/fixes/not-recommended-label 2 years ago
Claire 0d43d9926a Make trendable_by_default not apply to posts 2 years ago
Claire 1ce29aeabf Change "Allow trends without prior review' setting to include statuses 2 years ago
Eugen Rochko d26c1cb2fe
Fix missing "not recommended" label on "Allow trends without review" (#20480) 2 years ago
Claire fdfacb0ec0 Revert "Revert "Change "Allow trends without prior review" setting to include statuses (#17977)"" 2 years ago
Claire 73b68fcabb
Fix styling of advanced options dropdown (#1916) 2 years ago
Eugen Rochko e1af21cfd0
New Crowdin updates (#20258) 2 years ago
Alex Nordlund 628b3fa449
Uppercase chart readme.md to help tools discover it (#20438) 2 years ago
Bearice Ren 28cda42af5
fixes ArgumentError when proxy is used (#20420) 2 years ago
Jeong Arm c4c1bee880
Fix trendable status without review (#20214) 2 years ago
Claire 93a6ebc83d
Fix WebUI crash when listing server blocks and rationale is not available (#20408) 2 years ago
Emily Strickland 96f51e593f
Guard against error extracting `body` from URL (#20428) 2 years ago
Claire 31005aad12
Add the ability to edit media attachment metadata for any unattached media (#20402) 2 years ago
Cutls 553b169d48
Do not show drag&drop dialog when not logined (#20400) 2 years ago
Claire 5e796dc6f8
Remove “No description added” media warning in edit mode (#20393) 2 years ago
Eugen Rochko 9bc0a6c861
Fix metadata scrubbing removing color profile from images (#20389) 2 years ago
Eugen Rochko 53028af10e
Bump version to 4.0.0rc3 (#20378) 2 years ago
Eugen Rochko 6774c339b2
Fix domain blocks on about page not working well on small screens in web UI (#20391) 2 years ago
Pierre Bourdon 36bc90e8aa
blurhash_transcoder: prevent out-of-bound reads with <8bpp images (#20388) 2 years ago
Eugen Rochko 73fecc3358
Change e-mail in SECURITY.md (#20384) 2 years ago
Connor Shea cf4992c918
Only remove padding when listing applications (#20382) 2 years ago
F 97f657f818
Note that CircleCI auth may be required to run PR pipelines (#20371) 2 years ago
Yamagishi Kazutoshi 53d26cfc1c
Delay workbox import (#20376) 2 years ago
Yamagishi Kazutoshi 19a8563905
Fix `ENV` (#20377) 2 years ago
F d4f973227c
Test the native_locale_name of a non-standard locale (#20284) 2 years ago
Erik Sundell 302a58c22b
helm: fix consistent indentation, chomping, and use of with (#19918) 2 years ago
Claire 86f6631d28
Remove dead code and refactor status threading code (#20357) 2 years ago
F a02a453a40
Add Scots to the supported locales (#20283) 2 years ago
Eugen Rochko c6c7c6223d
Change verification to only work for https links (#20304) 2 years ago
F 9feba112a7
Make enable_starttls configurable by envvars (#20321) 2 years ago
Claire 1615c3eb6e
Change logged out /api/v1/statuses/:id/context logged out limits (#20355) 2 years ago
Claire 894ce3726a
Fix unnecessary service worker registration and preloading when logged out (#20341) 2 years ago
Alex Nordlund 397845453e
Update Helm README and bump version (#20346) 2 years ago
Claire 8e1e7fe2e0
Add old logo files back (#20332) 2 years ago
Claire 99734ac936
Remove preview cards from fav and boost notifications (#20335) 2 years ago
Joe Friedl 86232e68a8
Give web container time to start (#19828) 2 years ago
mickkael 6c7cdedb24
Helm chart improved for ingress (#19826) 2 years ago
Alex Nordlund 60c4df3d1d
Bump next Helm chart to 2.1.0 (#20155) 2 years ago
Sheogorath e868f41923
fix(chart): Fix gitops-incompatible random rolling (#20184) 2 years ago
Alex Nordlund 86d4b6f7c9
Helm update readme.md (#20154) 2 years ago
Alex Nordlund b907871604
Helm update readme.md (#20154) 2 years ago
atsuchan 6df9d388e7
Update Flavour 'ja' Translation (#1911) 2 years ago
Eugen Rochko f8e8e622e5
Change incoming activity processing to happen in `ingress` queue (#20264) 2 years ago
Claire 89a6b76f99
Fix color of the “No description added“ media upload warning on light theme (#20328) 2 years ago
Claire ee7e49d1b1
Merge pull request #1910 from ClearlyClaire/glitch-soc/merge-upstream 2 years ago
Eugen Rochko c4d2c72924 [Glitch] Add option to open original page in dropdowns of remote content in web UI 2 years ago
Sasha Sorokin 099b3011aa [Glitch] Remove aria-pressed where it's redundant 2 years ago
Eugen Rochko 65b6c4f6df [Glitch] Change larger reblogs/favourites numbers to be shortened in web UI 2 years ago
Effy Elden c722c4cce8 [Glitch] Remove unused timeline_container to fix linter errors 2 years ago
Eugen Rochko 41ea39903d [Glitch] Fix confusing wording in interaction modal in web UI 2 years ago
Eugen Rochko d3a29a136c [Glitch] Fix profile header being cut off in light theme in web UI 2 years ago
Claire c118918520 Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Effy Elden 8fdbb4d00d
Remove unused timeline_container to fix linter errors (#20305) 2 years ago
Eugen Rochko 7bdb2433f1
Change larger reblogs/favourites numbers to be shortened in web UI (#20303) 2 years ago
Eugen Rochko 16122761c5
Fix confusing wording in interaction modal in web UI (#20302) 2 years ago
Eugen Rochko ef582dc4f2
Add option to open original page in dropdowns of remote content in web UI (#20299) 2 years ago
Eugen Rochko e37e8deb0f
Fix profile header being cut off in light theme in web UI (#20298) 2 years ago
Eugen Rochko 9965a23b04
Change link verification to ignore IDN domains (#20295) 2 years ago
James Tucker 78a6b871fe
Improve performance by avoiding regex construction (#20215) 2 years ago
Eugen Rochko 0cd0786aef
Revert filtering public timelines by locale by default (#20294) 2 years ago
trwnh b280a255c4
Change `master` branch to `main` branch (#20290) 2 years ago
Eugen Rochko 45ce858fd9
Fix `mailers` queue not being used for mailers (#20274) 2 years ago
Claire a5394980f2
Fix NameError in Webfinger redirect handling in ActivityPub::FetchRemoteActorService (#20260) 2 years ago
Eugen Rochko cd0a87f170
New Crowdin updates (#20016) 2 years ago
Vyr Cossont 104157bd01
Add Balaibalan, Láadan, Lingua Franca Nova, Lojban, Toki Pona to language list (#20168) 2 years ago
trwnh 029b5cd5b1
Fix GET /api/v1/admin/ip_blocks/:id (#20207) 2 years ago
Claire 5333447be0
Change account deletion requests to spread out over time (#20222) 2 years ago
Eugen Rochko e98833748e
Fix being able to spoof link verification (#20217) 2 years ago
keiya 53817294fc
Fix nginx location matching (#20198) 2 years ago
Claire dd7176a4b5
Fix redirects from /web/ discarding everything after a dot (#20148) 2 years ago
luzpaz 6ba52306f9
Fix typos (#19849) 2 years ago
Christian Clauss 6f1559ed0f
CHANGELOG.md: Fix typos (#19838) 2 years ago
Sasha Sorokin d055d75172
Remove aria-pressed where it's redundant (#19912) 2 years ago
Claire d70303bba6
Add server-side route so that legacy /web/statuses/:id URLs keep being supported (#19978) 2 years ago
trwnh b1a48e05b6
Change Report category to "violation" if rule IDs are provided (#20137) 2 years ago
Claire c476dfc725
Fix nodeinfo metadata attribute being an array instead of an object (#20114) 2 years ago
Alex Nordlund 476e74b4c4
Assign unique set of labels to k8s deployments #19703 (#19706) 2 years ago
Sheogorath f4b78028a3
chore(chart): Update appVersion in helm chart (#19653) 2 years ago
Moritz Hedtke f7613febb3
helm: Fix ingress pathType (#19729) 2 years ago
Alex Nordlund fd3c482104
Roll pods to pick up db migrations even if podAnnotations is empty (#19702) 2 years ago
Alex Nordlund d3afd7a2f1
Fix helm postgresql secret (#19678) 2 years ago
k.bigwheel (kazufumi nishida) 9358fd295d
Add postgresql password settings hint (#19112) 2 years ago
trwnh c374729225
Add `sensitized` to Admin::Account serializer (fix #19148) (#20094) 2 years ago
Claire b2a25d446a
Merge pull request #1905 from ClearlyClaire/glitch-soc/merge-upstream 2 years ago
trwnh 89e1974f30
Make account endorsements idempotent (fix #19045) (#20118) 2 years ago
trwnh 455a754081
Fix missing cast of status and rule IDs to string (fix #19048) (#20122) 2 years ago
trwnh 68d9dcd425
Fix uncaught 500 error on invalid `replies_policy` (Fix #19097) (#20126) 2 years ago
Claire c989faaa62
Change Request connection logic to try both IPv6 and IPv4 when available (#20108) 2 years ago
Roni Laukkarinen 36b0ff57b7
Fix grammar (#20106) 2 years ago
Claire 9b6d6a919f [Glitch] Fix redrafting a currently-editing post not leaving edit mode 2 years ago
Claire fe1b694128 [Glitch] Fix opening the language picker scrolling the single-column view to the top 2 years ago
Zach Flanders 6eac1cfccd [Glitch] Fix spoiler buttons css not rendering correct color in light theme 2 years ago
Claire a8c854b3ea Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Claire 782b6835f7
Fix redrafting a currently-editing post not leaving edit mode (#20023) 2 years ago
James Tucker 833d9c2f1c
Improve performance by avoiding method cache busts (#19957) 2 years ago
Claire 9f4930ec11
Add password autocomplete hints (#20071) 2 years ago
Claire 608343c135
Fix opening the language picker scrolling the single-column view to the top (#19983) 2 years ago
Postmodern ca80beb653
Micro-optimization: use `if`/`else` instead of `Array#compact` and `Array#min` (#19906) 2 years ago
Zach Flanders 0beb095a4b
Fix spoiler buttons css not rendering correct color in light theme (#19960) 2 years ago
Claire bbf74498f5
Fix validation error in SynchronizeFeaturedTagsCollectionWorker (#20018) 2 years ago
Claire ac219dd1f6
Merge pull request #1903 from ClearlyClaire/glitch-soc/merge-upstream 2 years ago
Claire 2bc22be66c [Glitch] Add aria-expanded to content warning toggle button 2 years ago
Claire be7032b9cf Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Claire 3114c826a7
Fix filter handling in status cache hydration (#19963) 2 years ago
Postmodern 106648b456
Micro-optimization: only split `acct` into two Strings (#19901) 2 years ago
Eugen Rochko 86a80acf40
New Crowdin updates (#19771) 2 years ago
Claire 622f603ac7
Add aria-expanded to content warning toggle button (#19975) 2 years ago
Claire 1e1289b024
Fix crash when external auth provider has no display_name set (#19962) 2 years ago
Claire e1227457f1
Fix links to the Web UI in notifications (#19981) 2 years ago
Sunny Ripert 8515bc7962
Add form element on focal point modal (#19834) 2 years ago
Claire 5925a31b78
Fix followers count not being updated when migrating follows (#19998) 2 years ago
Claire c493c967d6
Fix light theme issues with the favourite modal and some background colors (#1902) 2 years ago
Claire b67e0c94a6
Merge pull request #1899 from ClearlyClaire/glitch-soc/merge-upstream 2 years ago
Sunny Ripert 7ba13dddfa [Glitch] Fix double button to clear emoji search input 2 years ago
Sunny Ripert 71e68dac4e [Glitch] Fix JavaScript console error on Getting Started column 2 years ago
Sunny Ripert d13a2f7901 [Glitch] Fix console log error on column settings load 2 years ago
Claire 6c0a6097ff Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Chris Rose a70e2cd649
Tag the OTP field with autocomplete for password managers (#19946) 2 years ago
Sunny Ripert 4b7f32a2a6
Fix double button to clear emoji search input (#19888) 2 years ago
Jeremy Kescher 02a34252ba
Add null check on application in dispute viewer (#19851) 2 years ago
Sunny Ripert ffe735344b
Fix JavaScript console error on Getting Started column (#19891) 2 years ago
Sunny Ripert 34c269310d
Fix console log error on column settings load (#19886) 2 years ago
Claire 4cb2323458
Fix crash in legacy filter creation controller (#19878) 2 years ago
nightpool 54f0f1b9ef
Skip Webfinger cache during migrations as well (#19883) 2 years ago
Rob Petti 8c81db5a41
allow /api/v1/streaming to be used as per documentation (#19896) 2 years ago
rcombs e53fc34e9a
Set autocomplete attr for email field on signup page (#19833) 2 years ago
Claire 54101563bb
Merge pull request #1892 from ClearlyClaire/glitch-soc/merge-upstream 2 years ago
Claire 21d6bc1689 Fix status cache hydration discrepancy 2 years ago
Claire 0be6da42d3 Change glitch-soc composer classes to match upstream 2 years ago
Eugen Rochko c199387558 [Glitch] Fix colors in light theme 2 years ago
Eugen Rochko cbfa5ad5dd [Glitch] Fix wrong colors in the high-contrast theme 2 years ago
Eugen Rochko c883799a1f [Glitch] Change design of link footer 2 years ago
Eugen Rochko d29172a682 [Glitch] Fix missing interpolation of domain in disabled account banner in web UI 2 years ago
Claire b6c0ef70a2 [Glitch] Change sign-in banner to reflect disabled or moved account status 2 years ago
Eugen Rochko 0437159056 [Glitch] Fix showing profile's featured tags on individual statuses 2 years ago
Claire fa293f03fa [Glitch] Fix handling of duplicate and out-of-order notifications in WebUI 2 years ago
Yamagishi Kazutoshi bd220c32f1
Update SECURITY.md (#19869) 2 years ago
Eugen Rochko 01e0cb1cd5 [Glitch] Add assets from Twemoji 14.0 2 years ago
Sunny Ripert 8368f4857c [Glitch] Fix JavaScript console warning when loading notifications 2 years ago
Sunny Ripert 93ccb4a29e [Glitch] Fix JavaScript console error on upload editing status 2 years ago
Eugen Rochko 81334e2bfb [Glitch] Fix limited account hint referencing "your" server when logged out 2 years ago
Claire 6b498fae46 [Glitch] Fix being unable to withdraw follow request when confirmation modal is disabled (#19687) 2 years ago
Claire e42875d195 [Glitch] Fix edits not being immediately reflected 2 years ago
Claire 0ad919b192 Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Eugen Rochko 5187e4e758
Bump version to 4.0.0rc2 (#19831) 2 years ago
Eugen Rochko 3151b260e2
Fix not using GIN index for account search queries (#19830) 2 years ago
Eugen Rochko 58fc889c6f
Update changelog for 4.0.0rc1 (#19814) 2 years ago
Eugen Rochko ca8d52c2a4
Change design of new list form in web UI (#19801) 2 years ago
Justin Thomas 18ac5f1cc8
version emoji-mart (#19715) 2 years ago
Eugen Rochko b5b1a202cc
Fix missing string in admin UI (#19809) 2 years ago
Hayden c8bf6192e4
Heroku fix (#19807) 2 years ago
Eugen Rochko 3a41fccc43
Change `AUTHORIZED_FETCH` to not block unauthenticated REST API access (#19803) 2 years ago
Eugen Rochko d0c9ac3919
Fix indexing scheduler trying to index when Elasticsearch is disabled (#19805) 2 years ago
Eugen Rochko d54e7ee61e
Fix n+1 queries when rendering initial state JSON (#19795) 2 years ago
Moritz Hedtke c64be9758f
helm: Add documentation to run tootctl commands (#19791) 2 years ago
Eugen Rochko d1de7fb7fa
Fix rendering empty avatar in web UI (#19798) 2 years ago
Eugen Rochko a442f481f8
Fix missing interpolation of domain in disabled account banner in web UI (#19788) 2 years ago
Eugen Rochko 7c65f52692
Change design of moved account banner in web UI (#19790) 2 years ago
eai04191 30e786225e
Remove word-break:keep-all from Dismissable banner message (#19799) 2 years ago
Claire 312d616371
Change sign-in banner to reflect disabled or moved account status (#19773) 2 years ago
Alex Nordlund 0498b106c9
Add S3 existing secret to sidekiq (#19778) 2 years ago
Yarden Shoham 29604763d7
Remove broken link references to bug bounty program (#19779) 2 years ago
Sunny Ripert 887976814a
Fix JavaScript console warning when loading notifications (#19772) 2 years ago
Sunny Ripert c95d9aab56
Fix JavaScript console error on upload editing status (#19769) 2 years ago
Claire 9616f5bb22
Fix compose form submission reloading web interface (#19762) 2 years ago
Claire 2f8fb49d13
Fix users not being able to change their hide_followers_count setting (#1889) 2 years ago
Eugen Rochko 1e7ea50f4c
New Crowdin updates (#19627) 2 years ago
prplecake 34ba7612d1
Fix 'App settings' label visible in sidebar on mobile UI (#1888) 2 years ago
Eugen Rochko c4b92b1aee
Fix n+1 query during status removal (#19753) 2 years ago
Claire bb89f83cc0
Fix additional issues with status cache hydration (#19747) 2 years ago
Claire 03b991de6c
Fix various issues with store hydration (#19746) 2 years ago
Sunny Ripert 0165449e3a
A11y: Explicit <form> element around compose area (#19742) 2 years ago
Claire c2170991c7
Fix reblogs being discarded after the reblogged status (#19731) 2 years ago
Eugen Rochko e02812d5b6
Add assets from Twemoji 14.0 (#19733) 2 years ago
Eugen Rochko b1a219552e
Fix featured tags not saving preferred casing (#19732) 2 years ago
Jeong Arm f002878c95
Make word-break: keep-all for dismissable banner (#19719) 2 years ago
Eugen Rochko 5f9e47be34
Add caching for payload serialization during fan-out (#19642) 2 years ago
Claire b8f6f03956
Fix /users/:username/statuses/:id leading to a soft 404 in web app (#19724) 2 years ago
Claire 4fb0aae636
Change mentions of blocked users to not be processed (#19725) 2 years ago
Eugen Rochko 20aa8881dc
Fix colors in light theme (#19714) 2 years ago
Eugen Rochko 139ea4c981
Fix limited account hint referencing "your" server when logged out (#19711) 2 years ago
Eugen Rochko bfafb114a2
Fix showing profile's featured tags on individual statuses (#19712) 2 years ago
Eugen Rochko 1c3192df6b
Fix wrong colors in the high-contrast theme (#19708) 2 years ago
Eugen Rochko 5825402ed5
Fix design of verified links in web UI (#19709) 2 years ago
Claire 7c8e2b9859
Fix handling of duplicate and out-of-order notifications in WebUI (#19693) 2 years ago
SJang1 053dac2afa
Remove meta tag for official iOS app (#19656) 2 years ago
Claire 9387beb3b3
Change flaky AccountSearchService test (#19650) 2 years ago
Claire 1dca08b76f
Fix admin action logs page (#19649) 2 years ago
Claire cbb440bbc2
Fix being unable to withdraw follow request when confirmation modal is disabled (#19687) 2 years ago
Claire 125322718b
Fix inaccurate admin log entry for re-sending confirmation e-mails (#19674) 2 years ago
Claire 74d40c7d8f
Fix edits not being immediately reflected (#19673) 2 years ago
Claire e0eb39d41b
Fix bookmark import stopping at the first failure (#19669) 2 years ago
Claire e91418436a
Fix mastodon:setup not setting the admin's role properly (#19670) 2 years ago
Claire cb27d89997
Change migration to migrate admins to Owner role rather than Admin role (#19671) 2 years ago
prplecake f359b15303
Allow number of trending hashtags to be customizable (#1884) 2 years ago
txt-file 0f5e6dd02b
Add support for AVIF uploads (#19647) 2 years ago
prplecake 56eb1da0f5
Fix CharacterCount in vanilla UI (#1883) 2 years ago
Eugen Rochko ae07cfb868
Add support for HEIC uploads (#19618) 2 years ago
Claire 6804228fdf
Fix N+1 on mentions in PushUpdateWorker (#19637) 2 years ago
Eugen Rochko 15bae3e0e4
Change post-processing to be deferred only for large media types (#19617) 2 years ago
pea-sys c68e6b52d9
png optimization(loss less) (#19630) 2 years ago
Jeong Arm 55f54be23c
Add translatable scripts (js) (#19624) 2 years ago
Eugen Rochko d0ba77047e
Change max. thumbnail dimensions to 640x360px (360p) (#19619) 2 years ago
Claire 03d9618595
Fix UserCleanupScheduler crash when an unconfirmed account has a moderation note (#19629) 2 years ago
Eugen Rochko fea142fb9a
New Crowdin updates (#19517) 2 years ago
prplecake fc340c9154
Change ul, ol margin-left to 2em (#1879) 2 years ago
prplecake c199556f64
Fix 'App settings' link in basic web UI (#1880) 2 years ago
Jeremy Kescher 41885c8715
Remove/update old "tootsuite" references, except those needed for Docker (#1860) 2 years ago
Claire 968f343006
Merge pull request #1876 from ClearlyClaire/glitch-soc/merge-upstream 2 years ago
Claire bb1ef11c30
Change featured hashtag deletion to be done synchronously (#19590) 2 years ago
Eugen Rochko 2d9a85db6e
Change design of link footer (#19562) 2 years ago
Claire 1fe4e5e38c Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Eugen Rochko 26478f461c
Remove language filtering from hashtag timelines (#19563) 2 years ago
Claire 5fd758fad1 Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Claire a529d6d93e
Fix invites (#19560) 2 years ago
Eugen Rochko 8048874a3a [Glitch] Fix sidebar and tabs on settings on small screens in admin UI 2 years ago
Eugen Rochko ebfe393e9c [Glitch] Fix upload progress not communicating processing phase in web UI 2 years ago
Eugen Rochko eb307ec1bd [Glitch] Fix logged out search and changed logged-in search placeholder 2 years ago
Claire eee36267d6 Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Eugen Rochko ac9fb0d654
Add reputation and followers score boost to SQL-only account search (#19251) 2 years ago
Eugen Rochko 40c7f3e830
Fix account action type validation (#19476) 2 years ago
Eugen Rochko 276b85bc91
Fix admin APIs returning deleted object instead of empty object upon delete (#19479) 2 years ago
Eugen Rochko 5724da0780
Fix language not being saved when editing status (#19543) 2 years ago
Eugen Rochko 3b024c563c
Fix not being able to input featured tag with `#` (#19535) 2 years ago
Eugen Rochko ad83e64795
Fix sidebar and tabs on settings on small screens in admin UI (#19533) 2 years ago
Ben Hardill 6094a916b1
Fix helm chart use of Postgres Password (#19537) 2 years ago
Eugen Rochko 30ef110224
Fix upload progress not communicating processing phase in web UI (#19530) 2 years ago
Yurii Izorkin a449ee8654
nginx: optimize locations (#19438) 2 years ago
Eugen Rochko f910f0dc92
Fix wrong host being used for custom.css when asset host configured (#19521) 2 years ago
Matthias Bethke 7926cb1bc7
fix name of Lao language (#19520) 2 years ago
Eugen Rochko 55af04b253
Fix logged out search and changed logged-in search placeholder (#19514) 2 years ago
Eugen Rochko e6d415bb1f
New Crowdin updates (#19425) 2 years ago
Eugen Rochko dc5c86add7
Fix account migration form ever using outdated account data (#18429) 2 years ago
Eugen Rochko 317ec06dc7
Fix error when uploading malformed CSV import (#19509) 2 years ago
Claire 26ff48ee48 Fix domain block export not exporting blocks with only media rejection 2 years ago
Claire bbdf61c9e4 Revert Home controller test to upstream 2 years ago
Eugen Rochko 8814a1b949 [Glitch] Fix closed registrations message not appearing in web UI 2 years ago
Eugen Rochko 9f6c175550 [Glitch] Fix number of uses being shown again on trending hashtags in web UI 2 years ago
Claire 2cb3dd9364 [Glitch] Change admin announcement edition interface to use datetime-local 2 years ago
Robert Laurenz 047a2f1f1b [Glitch] fix(component): adjust style of counter button to fix overflow issue 2 years ago
Claire b514998dc1 Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Eugen Rochko 5fa340931e
Fix closed registrations message not appearing in web UI (#19508) 2 years ago
Claire 592147b902 Remove local settings items that make no sense anymore 2 years ago
Claire f405ad69b3 [Glitch] Remove navigation links to /explore when trends are disabled 2 years ago
Eugen Rochko 89fdfb8fe6 [Glitch] Fix redirecting to `/publish` when compose form is visible in web UI 2 years ago
Eugen Rochko 80b53623e1 [Glitch] Change settings area to be separated into categories in admin UI 2 years ago
Eugen Rochko 58e2b0973d [Glitch] Fix media, following and followers tabs in web UI 2 years ago
Eugen Rochko c9d3c7d63a [Glitch] Fix too many featured tags causing navigation panel scroll in web UI 2 years ago
Eugen Rochko 7bb1b917b2 [Glitch] Change featured hashtags to be displayed in navigation panel 2 years ago
Eugen Rochko 2cea6e5564 [Glitch] Remove volume number from hashtags in web UI 2 years ago
Takeshi Umeda 8be350cc82 [Glitch] Add featured tags selector for WebUI 2 years ago
Eugen Rochko a2942fd0b8 [Glitch] Fix `nofollow` rel being removed in web UI 2 years ago
Eugen Rochko e9ccee38a7 [Glitch] Change floating action button to be a button in header in web UI 2 years ago
Claire 05c1dd9114 [Glitch] Add closed registrations modal 2 years ago
Eugen Rochko ce27c6502b [Glitch] Fix notifications about deleted reports not being also deleted 2 years ago
Eugen Rochko 5dfb7ba35c [Glitch] Fix missing delete and redraft link in web UI 2 years ago
Eugen Rochko b36c58b99e [Glitch] Change post editing to be enabled in web UI 2 years ago
Eugen Rochko 2d731dbde6 [Glitch] Add ability to view previous edits of a status in admin UI 2 years ago
Claire d9f182e5f3 [Glitch] Fix WebUI notification settings for new user and new report notifications 2 years ago
Eugen Rochko bfa47eb7d6 [Glitch] Fix language dropdown causing zoom on mobile devices in web UI 2 years ago
Eugen Rochko 1315c149c0 [Glitch] Add error boundary around routes in web UI 2 years ago
Eugen Rochko 92385da9c3 [Glitch] Fix reply not opening compose page on certain screen sizes in web UI 2 years ago
Eugen Rochko 7d3acb1f2c [Glitch] Fix error when rendering limited account in web UI 2 years ago
Claire bda5040085 [Glitch] Change landing page to be /about instead of /explore when trends are disabled 2 years ago
Eugen Rochko f9f0949bd3 [Glitch] Fix case-sensitive look-up for profiles in web UI 2 years ago
Eugen Rochko 5f4f37f432 [Glitch] Fix error on profile in web UI 2 years ago
prplecake b9195f8fb7 [Glitch] Don't use "unfollow language" when cancelling follow requests 2 years ago
Claire 7cfb319283 fixup! [Glitch] Fix logged-out web UI on smaller screens 2 years ago
Claire 885389d279 fixup! [Glitch] Change public accounts pages to mount the web UI 2 years ago
Claire 89e9ec8ae2 fixup! [Glitch] Fix intermediary responsive layout, accessibility on navigation in web UI 2 years ago
Eugen Rochko 9363e5c24e [Glitch] Change public accounts pages to mount the web UI 2 years ago
Eugen Rochko 6013eeea4c [Glitch] Fix missing rules in report modal in web UI 2 years ago
Eugen Rochko 2aa70c112a [Glitch] Fix error while server rules are loading in report modal in web UI 2 years ago
Yamagishi Kazutoshi 39ec0e8398 [Glitch] Fix missing `isCancel` 2 years ago
Yamagishi Kazutoshi e301cfb463 [Glitch] Replace `CancelToken` to `AbortSignal` 2 years ago
Eugen Rochko 67b4ecdd21 [Glitch] Change about page to be mounted in the web UI 2 years ago
Yamagishi Kazutoshi 5d4d4a69f6 [Glitch] Redirect non-logged-in user to owner statuses on single user mode 2 years ago
Yamagishi Kazutoshi 1850166de9 [Glitch] Hide list panel from nav bar in mobile layout 2 years ago
Yamagishi Kazutoshi 1e7f819c85 [Glitch] Fix `ColumnLink` labels not disappearing in mobile UI 2 years ago
Yamagishi Kazutoshi 492ceeceb0 [Glitch] Fix fedi/local timeline nav link always hide 2 years ago
Eugen Rochko c36f28ba77 [Glitch] Fix intermediary responsive layout, accessibility on navigation in web UI 2 years ago
Eugen Rochko dea951cce8 [Glitch] Add dismissable hints to various timelines in web UI 2 years ago
Yamagishi Kazutoshi e5720cd540 [Glitch] Add title to pages with missing title in Web UI 2 years ago
Yamagishi Kazutoshi 8491a3532d [Glitch] Remove timeline preview link from nav panel when not signed-in 2 years ago
Eugen Rochko 07df273f37 [Glitch] Change privacy policy to be rendered in web UI, add REST API 2 years ago
Eugen Rochko b68b96a0cc [Glitch] Add server rules to sign-up flow 2 years ago
Eugen Rochko 206e9593ac [Glitch] Fix logged-out web UI on smaller screens 2 years ago
Eugen Rochko 14ddb85c3b [Glitch] Remove code for rendering public and hashtag timelines outside the web UI 2 years ago
Claire 84da970d6b Fix assets compilation 2 years ago
Claire cb19be67d1 Merge branch 'main' into glitch-soc/merge-upstream 2 years ago
Kangwook Lee (이강욱) dae954ef11
Fix PostgreSQL password reference for jobs (#19504) 2 years ago
Kangwook Lee (이강욱) 223e152312
Add option to enable single user mode (#19503) 2 years ago
Kangwook Lee (이강욱) 9bf6a8af82
Fix PostgreSQL password reference (#19502) 2 years ago
Eugen Rochko 923f06a07c
Fix number of uses being shown again on trending hashtags in web UI (#19484) 2 years ago
Claire d9d722d74b
Change admin announcement edition interface to use datetime-local (#18321) 2 years ago
Robert Laurenz 10922294ff
fix(component): adjust style of counter button to fix overflow issue (#19494) 2 years ago
Claire 371563b0e2
Revert notification design (#1875) 2 years ago
Claire 19765216a1
Fix status prepend design (#1874) 2 years ago
Eugen Rochko 8dfe5179ee
Fix avatars not using image tags in web UI (#19488) 2 years ago
Eugen Rochko 07cc201acc
Fix using wrong policy on status-related actions in admin UI (#19490) 2 years ago
Eugen Rochko 8ae0936ddd
Bump version to 4.0.0rc1 (#19473) 2 years ago
Eugen Rochko 5f733ad83a
Remove unused method `searchable?` on accounts (#19489) 2 years ago
Eugen Rochko 09f04d710d
Change `closed_registrations_message` to `message` and add Markdown (#19486) 2 years ago
Eugen Rochko 371d969403
Fix missing delete and redraft link in web UI (#19485) 2 years ago
Shlee c7bab3318e
Remove duplicate HSTS headers from nginx.conf (#19018) 2 years ago
Eugen Rochko d7595adbf4
Add `--remove-role` option to `tootctl accounts modify` (#19477) 2 years ago
Eugen Rochko 3e18e05330
Fix uncaught error when invalid date is supplied to API (#19480) 2 years ago
Eugen Rochko d2eb726962
Fix notifications about deleted reports not being also deleted (#19475) 2 years ago
Eugen Rochko f6bcf86caf
Fix wrong math function used in search query (#19481) 2 years ago
zunda 52ebfb7792
Store integer settings as integer (#19478) 2 years ago
Eugen Rochko 1546538de9
Fix improperly checking for blocked domain on followed hashtags (#19472) 2 years ago
Claire 2277913f3f
Add closed registrations modal (#19437) 2 years ago
Thor 8be9ee756a Merge remote-tracking branch 'upstream/main' into main 2 years ago
prplecake aafbc82d88
Add "unsafe-eval" to script-src CSP (#18817) 2 years ago
Yamagishi Kazutoshi eebbc5439a
Disable media cache on service worker (#19471) 2 years ago
Yamagishi Kazutoshi 31e23269f9
Fix `/web` prefix (#19468) 2 years ago
Eugen Rochko 8ebff0efcb
Change post editing to be enabled in web UI (#19103) 2 years ago
dependabot[bot] d96fac8b93
Bump utf-8-validate from 5.0.9 to 5.0.10 (#19449) 2 years ago
dependabot[bot] 1f986d2e52
Bump @babel/plugin-proposal-decorators from 7.19.3 to 7.19.6 (#19445) 2 years ago
Eugen Rochko ca6e92fdb8
Fix warning about constants in routes (#19466) 2 years ago
dependabot[bot] 1ce17cf316
Bump jest from 29.1.2 to 29.2.2 (#19467) 2 years ago
Eugen Rochko f8ca3bb2a1
Add ability to view previous edits of a status in admin UI (#19462) 2 years ago
dependabot[bot] dee69be60e
Bump jest-environment-jsdom from 29.1.2 to 29.2.1 (#19393) 2 years ago
dependabot[bot] 3de6c9c02d
Bump babel-jest from 29.1.2 to 29.2.1 (#19444) 2 years ago
dependabot[bot] 940e80a81b
Bump ws from 8.9.0 to 8.10.0 (#19450) 2 years ago
dependabot[bot] 945f44fb6e
Bump npmlog from 7.0.0 to 7.0.1 (#19447) 2 years ago
dependabot[bot] 2015e6b331
Bump react-select from 5.5.1 to 5.5.4 (#19451) 2 years ago
dependabot[bot] 1a05258cd1
Bump eslint-plugin-promise from 6.1.0 to 6.1.1 (#19443) 2 years ago
dependabot[bot] 89fbdcdf30
Bump @babel/plugin-transform-runtime from 7.19.1 to 7.19.6 (#19446) 2 years ago
dependabot[bot] 0f02e97c01
Bump @babel/core from 7.19.3 to 7.19.6 (#19448) 2 years ago
dependabot[bot] 54189e9fc4
Bump bufferutil from 4.0.6 to 4.0.7 (#19442) 2 years ago
Eugen Rochko 7d25f72b9f
Fix negatives values in search index causing queries to fail (#19464) 2 years ago
Eugen Rochko bf0ab3e0fa
Fix vacuum scheduler missing lock, locks never expiring (#19458) 2 years ago
Eugen Rochko 1ae508bf2f
Change unauthenticated search to not support pagination in REST API (#19326) 2 years ago
Eugen Rochko 8f07381856
Revert "Remove preference to aggregate reblogs in home/list feeds (#18112)" (#19463) 2 years ago
Eugen Rochko 487d81fb92
Fix IP blocks not having a unique index (#19456) 2 years ago
Eugen Rochko 6f01111863
Fix wrong size of avatars in admin UI (#19457) 2 years ago
Claire 267978d4fe
Remove navigation links to /explore when trends are disabled (#19415) 2 years ago
Eugen Rochko 0ca29eaa3f
Change layout of posts in web UI (#19423) 2 years ago
Eugen Rochko fcca781aae
Change design of translations in web UI (#19453) 2 years ago
Eugen Rochko 9757c917da
Fix `nofollow` rel being removed in web UI (#19455) 2 years ago
Claire 30453fab80
Add mention of the translation provider when translating a post (#19433) 2 years ago
Claire 8046cf34d6
Change “Translate” button to only show up when a translation backend is configured (#19434) 2 years ago
Claire dd76bbf8b7
Fix WebUI notification settings for new user and new report notifications (#19436) 2 years ago
Eugen Rochko 3ad0a2ae3d
Fix language dropdown causing zoom on mobile devices in web UI (#19428) 2 years ago
Eugen Rochko 73de39e632
Fix media, following and followers tabs in web UI (#19426) 2 years ago
Eugen Rochko 5452af2188
Fix redirecting to `/publish` when compose form is visible in web UI (#19427) 2 years ago
Eugen Rochko 3124f946ee
New Crowdin updates (#19405) 2 years ago
Eugen Rochko 1fd6460b02
Change floating action button to be a button in header in web UI (#19422) 2 years ago
Eugen Rochko c2c14331b2
Fix PWA manifest using `/web` paths (#19421) 2 years ago
Eugen Rochko a43a823768
Add error boundary around routes in web UI (#19412) 2 years ago
Eugen Rochko 56efa8d22f
Fix reply not opening compose page on certain screen sizes in web UI (#19417) 2 years ago
Yamagishi Kazutoshi 45d3b32488
Fix `Settings::FeaturedTagsController` (#19418) 2 years ago
Takeshi Umeda 74ead7d106
Change featured tag updates to add/remove activity (#19409) 2 years ago
Eugen Rochko 73a48318a1
Fix error when rendering limited account in web UI (#19413) 2 years ago
Claire 062b3c9090
Change landing page to be /about instead of /explore when trends are disabled (#19414) 2 years ago
Takeshi Umeda 53e86747e4
Fix duplicate featured tags (#19403) 2 years ago
Takeshi Umeda 1d34eff63f
Add featured tag add/remove activity handler (#19408) 2 years ago
Eugen Rochko 7c152acb2c
Change settings area to be separated into categories in admin UI (#19407) 2 years ago
Eugen Rochko abf6c87ee8
Fix remote account in contact account setting not being used (#19351) 2 years ago
dependabot[bot] c60f9cb865
Bump npmlog from 6.0.2 to 7.0.0 (#19376) 2 years ago
Eugen Rochko e623c07372
New Crowdin updates (#19350) 2 years ago
Takeshi Umeda 7777524145
Fix featured tag display name in setting (#19404) 2 years ago
dependabot[bot] 6faa51edc7
Bump regenerator-runtime from 0.13.9 to 0.13.10 (#19371) 2 years ago
dependabot[bot] 6e1be17b61
Bump stackprof from 0.2.21 to 0.2.22 (#19367) 2 years ago
prplecake b3030187a4
Use DEFAULT_FIELDS_SIZE/MAX_PROFILE_FIELDS value in settings form hint (#1870) 2 years ago
Yamagishi Kazutoshi 94feb2b93f
Fix `FetchFeaturedCollectionService` spec (#19401) 2 years ago
Eugen Rochko 5e908c5a95
Fix case-sensitive look-up for profiles in web UI (#19397) 2 years ago
Eugen Rochko 23d367f544
Fix too many featured tags causing navigation panel scroll in web UI (#19398) 2 years ago
dependabot[bot] 9215ad5f19
Bump postcss from 8.4.17 to 8.4.18 (#19375) 2 years ago
dependabot[bot] 21af674fb2
Bump axios from 1.1.2 to 1.1.3 (#19372) 2 years ago
Eugen Rochko 74738b4993
Fix error on profile in web UI (#19396) 2 years ago
Eugen Rochko 839f893168
Change public accounts pages to mount the web UI (#19319) 2 years ago
Takeshi Umeda b0e3f0312c
Add synchronization of remote featured tags (#19380) 2 years ago
dependabot[bot] d19c7f4a4c
Bump eslint-plugin-react from 7.31.9 to 7.31.10 (#19370) 2 years ago
dependabot[bot] 4d9a3f8ab0
Bump react-select from 5.4.0 to 5.5.1 (#19377) 2 years ago
dependabot[bot] 2792184907
Bump stylelint from 14.13.0 to 14.14.0 (#19373) 2 years ago
dependabot[bot] 7d3d29c418
Bump eslint-plugin-promise from 6.0.1 to 6.1.0 (#19369) 2 years ago
Claire 1e772c984b
Actually fix config/locales-glitch not overriding translation strings (#1872) 2 years ago
Claire f7155becd0
Fix config/locales-glitch not overriding translation strings (#1871) 2 years ago
Eugen Rochko aefa9253d6
Change featured hashtags to be displayed in navigation panel (#19382) 2 years ago
prplecake 1b83040bd4
Don't use "unfollow language" when cancelling follow requests (#19363) 2 years ago
Eugen Rochko 4adb267f91
Fix showing translate button when status has no language in web UI (#19388) 2 years ago
Eugen Rochko 9c7f4ab8e8
Fix missing rules in report modal in web UI (#19387) 2 years ago
Eugen Rochko dd5d99f83f
Fix error on migration page (#19386) 2 years ago
Eugen Rochko 8a1d10cb35
Fix error while server rules are loading in report modal in web UI (#19385) 2 years ago
Yamagishi Kazutoshi 3702afec9f
Add detailed description section to issue template (#19365) 2 years ago
Takeshi Umeda 4c7b5fb6c1
Add featured tags selector for WebUI (#19358) 2 years ago
prplecake c618d3a0a5
Make "No $entity selected" errors more accurate (#19356) 2 years ago
Yamagishi Kazutoshi e02bdc14fd
Fix missing `isCancel` (#19354) 2 years ago
Yamagishi Kazutoshi 219c38b921
Replace `CancelToken` to `AbortSignal` (#19352) 2 years ago
Eugen Rochko f01310dadb
Fix trending statuses returning more than one post by the same author (#19349) 2 years ago
Eugen Rochko 8a9d774a84
New Crowdin updates (#19344) 2 years ago
Eugen Rochko 1bd00036c2
Change about page to be mounted in the web UI (#19345) 2 years ago
Eugen Rochko b04633a961
Add image processing and generate blurhash for server thumbnail (#19348) 2 years ago
Yamagishi Kazutoshi 7afc6a630c
Redirect non-logged-in user to owner statuses on single user mode (#19333) 2 years ago
dependabot[bot] 5f6c0d63e3
Bump axios from 0.27.2 to 1.1.2 (#19341) 2 years ago
dependabot[bot] de345e70d8
Bump express from 4.18.1 to 4.18.2 (#19340) 2 years ago
dependabot[bot] 7f036be169
Bump eslint-plugin-react from 7.31.8 to 7.31.9 (#19342) 2 years ago
dependabot[bot] d868c1ced5
Bump @babel/preset-env from 7.19.3 to 7.19.4 (#19339) 2 years ago
dependabot[bot] adf6fdf0a9
Bump @babel/runtime from 7.19.0 to 7.19.4 (#19343) 2 years ago
Eugen Rochko c70bffd89f
New Crowdin updates (#19330) 2 years ago
Yamagishi Kazutoshi d787343325
Hide list panel from nav bar in mobile layout (#19337) 2 years ago
Yamagishi Kazutoshi 05148e2c77
Fix missing `skip_review?` (#19335) 2 years ago
Yamagishi Kazutoshi 3eef8a7a81
Fix `ColumnLink` labels not disappearing in mobile UI (#19334) 2 years ago
Jeremy Kescher 5f79200a5e
Remove/update old "tootsuite" references, except those needed for Docker (#19327) 2 years ago
Yamagishi Kazutoshi 32c3bd3c53
Use pep440 for Docker image tag rules (#19332) 2 years ago
Yamagishi Kazutoshi d3f1a010e5
Fix fedi/local timeline nav link always hide (#19329) 2 years ago
Eugen Rochko f879c42747
New Crowdin updates (#19317) 2 years ago
Eugen Rochko 0765324622
Fix intermediary responsive layout, accessibility on navigation in web UI (#19324) 2 years ago
Claire 2b00ccdbd5
Fix button to dismiss suggestions not showing up in search results (#19325) 2 years ago
Eugen Rochko f41ec9af05
Add dismissable hints to various timelines in web UI (#19315) 2 years ago
Yamagishi Kazutoshi a5112b51fd
Add title to pages with missing title in Web UI (#19322) 2 years ago
Yamagishi Kazutoshi e82467ca41
Remove timeline preview link from nav panel when not signed-in (#19320) 2 years ago
Eugen Rochko 45ebdb72ca
Add support for language preferences for trending statuses and links (#18288) 2 years ago
Eugen Rochko 678fc4d292
Fix privacy policy being empty if custom setting exists but is empty (#19318) 2 years ago
Eugen Rochko d4b0aa7450
Fix trying to connect to streaming API when logged out in web UI (#19316) 2 years ago
dependabot[bot] d84c53e769
Bump sidekiq-scheduler from 4.0.2 to 4.0.3 (#19314) 2 years ago
Eugen Rochko 9a685e2f8c
New Crowdin updates (#19297) 2 years ago
Eugen Rochko a2ba011326
Change privacy policy to be rendered in web UI, add REST API (#19310) 2 years ago
Eugen Rochko 7fb738c837
Add interaction modal to logged-out web UI (#19306) 2 years ago
trwnh 99a43f0282
Fix #19304 (#19305) 2 years ago
dependabot[bot] 402ee73e24
Bump jest from 29.0.3 to 29.1.2 (#19285) 2 years ago
dependabot[bot] 021ccf46af
Bump babel-jest from 29.0.3 to 29.1.2 (#19275) 2 years ago
dependabot[bot] 34c8707dec
Bump jest-environment-jsdom from 29.0.3 to 29.1.2 (#19282) 2 years ago
Eugen Rochko 93f340a4bf
Remove setting that disables account deletes (#17683) 2 years ago
Eugen Rochko 62782babd0
Change public statuses pages to mount the web UI (#19301) 2 years ago
Eugen Rochko 58d5b28cb0
Remove previous landing page (#19300) 2 years ago
Eugen Rochko 5fd46dddd7
Remove unnecessary sections from welcome e-mail (#19299) 2 years ago
Eugen Rochko 679274465b
Add server rules to sign-up flow (#19296) 2 years ago
Eugen Rochko 26f2586b62
New Crowdin updates (#19289) 2 years ago
Eugen Rochko 0e41d360c0
Change font size of active users in server banner to be larger in web UI (#19295) 2 years ago
Eugen Rochko 9f65909f42
Change public timelines to be filtered by current locale by default (#19291) 2 years ago
Eugen Rochko d2528b26b6
Add server banner to web app, add `GET /api/v2/instance` to REST API (#19294) 2 years ago
Claire cedcece0cc
Fix deleted pinned posts potentially counting towards the pinned posts limit (#19005) 2 years ago
Eugen Rochko 02ba9cfa35
Remove code for rendering public and hashtag timelines outside the web UI (#19257) 2 years ago
Eugen Rochko e2b561e3a5
Fix logged-out web UI on smaller screens (#19263) 2 years ago
  1. 16
      .circleci/config.yml
  2. 23
      .deepsource.toml
  3. 2
      .devcontainer/Dockerfile
  4. 10
      .devcontainer/devcontainer.json
  5. 4
      .devcontainer/docker-compose.yml
  6. 21
      .devcontainer/post-create.sh
  7. 10
      .env.production.sample
  8. 101
      .eslintrc.js
  9. 16
      .github/ISSUE_TEMPLATE/1.bug_report.yml
  10. 2
      .github/ISSUE_TEMPLATE/2.feature_request.yml
  11. 3
      .github/ISSUE_TEMPLATE/config.yml
  12. 23
      .github/workflows/build-image.yml
  13. 4
      .github/workflows/check-i18n.yml
  14. 62
      .github/workflows/codeql.yml
  15. 48
      .github/workflows/lint-css.yml
  16. 40
      .github/workflows/lint-js.yml
  17. 40
      .github/workflows/lint-json.yml
  18. 41
      .github/workflows/lint-ruby.yml
  19. 42
      .github/workflows/lint-yml.yml
  20. 83
      .github/workflows/linter.yml
  21. 17
      .github/workflows/rebase-needed.yml
  22. 3
      .gitignore
  23. 2
      .nvmrc
  24. 13
      .prettierignore
  25. 206
      .rubocop.yml
  26. 1065
      AUTHORS.md
  27. 22
      Aptfile
  28. 431
      CHANGELOG.md
  29. 6
      CODE_OF_CONDUCT.md
  30. 10
      CONTRIBUTING.md
  31. 182
      Dockerfile
  32. 56
      Gemfile
  33. 383
      Gemfile.lock
  34. 15
      SECURITY.md
  35. 71
      Vagrantfile
  36. 7
      app.json
  37. 61
      app/controllers/about_controller.rb
  38. 12
      app/controllers/account_follow_controller.rb
  39. 12
      app/controllers/account_unfollow_controller.rb
  40. 59
      app/controllers/accounts_controller.rb
  41. 2
      app/controllers/admin/account_actions_controller.rb
  42. 2
      app/controllers/admin/accounts_controller.rb
  43. 2
      app/controllers/admin/confirmations_controller.rb
  44. 2
      app/controllers/admin/custom_emojis_controller.rb
  45. 12
      app/controllers/admin/domain_blocks_controller.rb
  46. 2
      app/controllers/admin/email_domain_blocks_controller.rb
  47. 6
      app/controllers/admin/export_domain_allows_controller.rb
  48. 28
      app/controllers/admin/export_domain_blocks_controller.rb
  49. 4
      app/controllers/admin/instances_controller.rb
  50. 2
      app/controllers/admin/ip_blocks_controller.rb
  51. 6
      app/controllers/admin/relays_controller.rb
  52. 17
      app/controllers/admin/reports/actions_controller.rb
  53. 9
      app/controllers/admin/settings/about_controller.rb
  54. 9
      app/controllers/admin/settings/appearance_controller.rb
  55. 9
      app/controllers/admin/settings/branding_controller.rb
  56. 9
      app/controllers/admin/settings/content_retention_controller.rb
  57. 9
      app/controllers/admin/settings/discovery_controller.rb
  58. 9
      app/controllers/admin/settings/other_controller.rb
  59. 9
      app/controllers/admin/settings/registrations_controller.rb
  60. 10
      app/controllers/admin/settings_controller.rb
  61. 2
      app/controllers/admin/site_uploads_controller.rb
  62. 16
      app/controllers/admin/statuses_controller.rb
  63. 2
      app/controllers/admin/trends/links/preview_card_providers_controller.rb
  64. 3
      app/controllers/admin/trends/links_controller.rb
  65. 7
      app/controllers/admin/trends/statuses_controller.rb
  66. 2
      app/controllers/admin/trends/tags_controller.rb
  67. 30
      app/controllers/api/base_controller.rb
  68. 12
      app/controllers/api/v1/accounts/credentials_controller.rb
  69. 2
      app/controllers/api/v1/accounts/pins_controller.rb
  70. 7
      app/controllers/api/v1/admin/accounts_controller.rb
  71. 6
      app/controllers/api/v1/admin/canonical_email_blocks_controller.rb
  72. 2
      app/controllers/api/v1/admin/domain_allows_controller.rb
  73. 9
      app/controllers/api/v1/admin/domain_blocks_controller.rb
  74. 4
      app/controllers/api/v1/admin/email_domain_blocks_controller.rb
  75. 8
      app/controllers/api/v1/admin/ip_blocks_controller.rb
  76. 8
      app/controllers/api/v1/admin/trends/tags_controller.rb
  77. 6
      app/controllers/api/v1/featured_tags_controller.rb
  78. 4
      app/controllers/api/v1/filters_controller.rb
  79. 6
      app/controllers/api/v1/followed_tags_controller.rb
  80. 23
      app/controllers/api/v1/instances/domain_blocks_controller.rb
  81. 18
      app/controllers/api/v1/instances/extended_descriptions_controller.rb
  82. 18
      app/controllers/api/v1/instances/privacy_policies_controller.rb
  83. 4
      app/controllers/api/v1/lists_controller.rb
  84. 4
      app/controllers/api/v1/notifications_controller.rb
  85. 30
      app/controllers/api/v1/statuses_controller.rb
  86. 6
      app/controllers/api/v1/streaming_controller.rb
  87. 4
      app/controllers/api/v1/tags_controller.rb
  88. 4
      app/controllers/api/v1/trends/links_controller.rb
  89. 2
      app/controllers/api/v1/trends/tags_controller.rb
  90. 2
      app/controllers/api/v2/admin/accounts_controller.rb
  91. 2
      app/controllers/api/v2/filters/keywords_controller.rb
  92. 2
      app/controllers/api/v2/filters/statuses_controller.rb
  93. 2
      app/controllers/api/v2/media_controller.rb
  94. 14
      app/controllers/api/v2/search_controller.rb
  95. 3
      app/controllers/auth/omniauth_callbacks_controller.rb
  96. 2
      app/controllers/auth/passwords_controller.rb
  97. 21
      app/controllers/auth/registrations_controller.rb
  98. 4
      app/controllers/auth/sessions_controller.rb
  99. 3
      app/controllers/concerns/account_controller_concern.rb
  100. 10
      app/controllers/concerns/admin_export_controller_concern.rb
  101. Some files were not shown because too many files have changed in this diff Show More

@ -1,8 +1,8 @@
version: 2.1
orbs:
ruby: circleci/ruby@1.4.1
node: circleci/node@5.0.1
ruby: circleci/ruby@2.0.0
node: circleci/node@5.0.3
executors:
default:
@ -19,11 +19,11 @@ executors:
DB_USER: root
DISABLE_SIMPLECOV: true
RAILS_ENV: test
- image: cimg/postgres:14.0
- image: cimg/postgres:14.5
environment:
POSTGRES_USER: root
POSTGRES_HOST_AUTH_METHOD: trust
- image: cimg/redis:6.2
- image: cimg/redis:7.0
commands:
install-system-dependencies:
@ -45,7 +45,7 @@ commands:
bundle config without 'development production'
name: Set bundler settings
- ruby/install-deps:
bundler-version: '2.3.8'
bundler-version: '2.3.26'
key: ruby<< parameters.ruby-version >>-gems-v1
wait-db:
steps:
@ -68,7 +68,9 @@ jobs:
cache-version: v1
pkg-manager: yarn
- run:
command: ./bin/rails assets:precompile
command: |
export NODE_OPTIONS=--openssl-legacy-provider
./bin/rails assets:precompile
name: Precompile assets
- persist_to_workspace:
paths:
@ -219,5 +221,5 @@ workflows:
pkg-manager: yarn
requires:
- build
version: lts
version: '16.18'
yarn-run: test:jest

@ -1,23 +0,0 @@
version = 1
test_patterns = ["app/javascript/mastodon/**/__tests__/**"]
exclude_patterns = [
"db/migrate/**",
"db/post_migrate/**"
]
[[analyzers]]
name = "ruby"
enabled = true
[[analyzers]]
name = "javascript"
enabled = true
[analyzers.meta]
environment = [
"browser",
"jest",
"nodejs"
]

@ -9,7 +9,7 @@ FROM mcr.microsoft.com/vscode/devcontainers/ruby:${VARIANT}
# The value is a comma-separated list of allowed domains
ENV RAILS_DEVELOPMENT_HOSTS=".githubpreview.dev"
# [Choice] Node.js version: lts/*, 16, 14, 12, 10
# [Choice] Node.js version: lts/*, 18, 16, 14
ARG NODE_VERSION="lts/*"
RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"

@ -2,7 +2,7 @@
"name": "Mastodon",
"dockerComposeFile": "docker-compose.yml",
"service": "app",
"workspaceFolder": "/workspaces/mastodon",
"workspaceFolder": "/mastodon",
// Set *default* container specific settings.json values on container create.
"settings": {},
@ -15,12 +15,18 @@
"webben.browserslist"
],
"features": {
"ghcr.io/devcontainers/features/sshd:1": {
"version": "latest"
}
},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// This can be used to network with other containers or the host.
"forwardPorts": [3000, 4000],
// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "bundle install --path vendor/bundle && yarn install && git checkout -- Gemfile.lock && ./bin/rails db:setup",
"postCreateCommand": ".devcontainer/post-create.sh",
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode"

@ -11,9 +11,9 @@ services:
# Use -bullseye variants on local arm64/Apple Silicon.
VARIANT: '3.0-bullseye'
# Optional Node.js version to install
NODE_VERSION: '14'
NODE_VERSION: '16'
volumes:
- ..:/workspaces/mastodon:cached
- ..:/mastodon:cached
environment:
RAILS_ENV: development
NODE_ENV: development

@ -0,0 +1,21 @@
#!/bin/bash
set -e # Fail the whole script on first error
# Fetch Ruby gem dependencies
bundle install --path vendor/bundle --with='development test'
# Fetch Javascript dependencies
yarn install
# Make Gemfile.lock pristine again
git checkout -- Gemfile.lock
# [re]create, migrate, and seed the test database
RAILS_ENV=test ./bin/rails db:setup
# Precompile assets for development
RAILS_ENV=development ./bin/rails assets:precompile
# Precompile assets for test
RAILS_ENV=test NODE_ENV=tests ./bin/rails assets:precompile

@ -17,7 +17,7 @@
LOCAL_DOMAIN=example.com
# Use this only if you need to run mastodon on a different domain than the one used for federation.
# You can read more about this option on https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Serving_a_different_domain.md
# You can read more about this option on https://docs.joinmastodon.org/admin/config/#web-domain
# DO *NOT* USE THIS UNLESS YOU KNOW *EXACTLY* WHAT YOU ARE DOING.
# WEB_DOMAIN=mastodon.example.com
@ -103,7 +103,7 @@ VAPID_PUBLIC_KEY=
# Sending mail
# ------------
SMTP_SERVER=smtp.mailgun.org
SMTP_SERVER=
SMTP_PORT=587
SMTP_LOGIN=
SMTP_PASSWORD=
@ -247,7 +247,7 @@ SMTP_FROM_ADDRESS=notifications@example.com
# ---------------
# Various ways to customize Mastodon's behavior
# ---------------
# Maximum allowed character count
MAX_TOOT_CHARS=500
@ -279,6 +279,10 @@ MAX_POLL_OPTION_CHARS=100
# Only relevant when elasticsearch is installed
# MAX_SEARCH_RESULTS=20
# Maximum hashtags to display
# Customize the number of hashtags shown in 'Explore'
# MAX_TRENDING_TAGS=10
# Maximum custom emoji file sizes
# If undefined or smaller than MAX_EMOJI_SIZE, the value
# of MAX_EMOJI_SIZE will be used for MAX_REMOTE_EMOJI_SIZE

@ -1,6 +1,12 @@
module.exports = {
root: true,
extends: [
'eslint:recommended',
'plugin:react/recommended',
'plugin:jsx-a11y/recommended',
],
env: {
browser: true,
node: true,
@ -64,8 +70,8 @@ module.exports = {
eqeqeq: 'error',
indent: ['warn', 2],
'jsx-quotes': ['error', 'prefer-single'],
'no-case-declarations': 'off',
'no-catch-shadow': 'error',
'no-cond-assign': 'error',
'no-console': [
'warn',
{
@ -75,18 +81,14 @@ module.exports = {
],
},
],
'no-fallthrough': 'error',
'no-irregular-whitespace': 'error',
'no-mixed-spaces-and-tabs': 'warn',
'no-nested-ternary': 'warn',
'no-empty': 'off',
'no-restricted-properties': [
'error',
{ property: 'substring', message: 'Use .slice instead of .substring.' },
{ property: 'substr', message: 'Use .slice instead of .substr.' },
],
'no-self-assign': 'off',
'no-trailing-spaces': 'warn',
'no-undef': 'error',
'no-unreachable': 'error',
'no-unused-expressions': 'error',
'no-unused-vars': [
'error',
@ -96,6 +98,7 @@ module.exports = {
ignoreRestSiblings: true,
},
],
'no-useless-escape': 'off',
'object-curly-spacing': ['error', 'always'],
'padded-blocks': [
'error',
@ -105,61 +108,47 @@ module.exports = {
],
quotes: ['error', 'single'],
semi: 'error',
strict: 'off',
'valid-typeof': 'error',
'react/jsx-boolean-value': 'error',
'react/jsx-closing-bracket-location': ['error', 'line-aligned'],
'react/jsx-curly-spacing': 'error',
'react/display-name': 'off',
'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-duplicate-props': 'error',
'react/jsx-no-undef': 'error',
'react/jsx-no-target-blank': 'off',
'react/jsx-tag-spacing': 'error',
'react/jsx-uses-react': 'error',
'react/jsx-uses-vars': 'error',
'react/jsx-wrap-multilines': 'error',
'react/no-multi-comp': 'off',
'react/no-string-refs': 'error',
'react/prop-types': 'error',
'react/no-deprecated': 'off',
'react/no-unknown-property': 'off',
'react/self-closing-comp': 'error',
// recommended values found in https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/src/index.js
'jsx-a11y/accessible-emoji': 'warn',
'jsx-a11y/alt-text': 'warn',
'jsx-a11y/anchor-has-content': 'warn',
'jsx-a11y/anchor-is-valid': [
'warn',
{
components: [
'Link',
'NavLink',
],
specialLink: [
'to',
],
aspect: [
'noHref',
'invalidHref',
'preferButton',
],
},
],
'jsx-a11y/aria-activedescendant-has-tabindex': 'warn',
'jsx-a11y/aria-props': 'warn',
'jsx-a11y/aria-proptypes': 'warn',
'jsx-a11y/aria-role': 'warn',
'jsx-a11y/aria-unsupported-elements': 'warn',
'jsx-a11y/heading-has-content': 'warn',
'jsx-a11y/html-has-lang': 'warn',
'jsx-a11y/iframe-has-title': 'warn',
'jsx-a11y/img-redundant-alt': 'warn',
'jsx-a11y/interactive-supports-focus': 'warn',
'jsx-a11y/label-has-for': 'off',
'jsx-a11y/mouse-events-have-key-events': 'warn',
'jsx-a11y/no-access-key': 'warn',
'jsx-a11y/no-distracting-elements': 'warn',
'jsx-a11y/click-events-have-key-events': 'off',
'jsx-a11y/label-has-associated-control': 'off',
'jsx-a11y/media-has-caption': 'off',
'jsx-a11y/no-autofocus': 'off',
// recommended rule is:
// 'jsx-a11y/no-interactive-element-to-noninteractive-role': [
// 'error',
// {
// tr: ['none', 'presentation'],
// canvas: ['img'],
// },
// ],
'jsx-a11y/no-interactive-element-to-noninteractive-role': 'off',
// recommended rule is:
// 'jsx-a11y/no-noninteractive-element-interactions': [
// 'error',
// {
// body: ['onError', 'onLoad'],
// iframe: ['onError', 'onLoad'],
// img: ['onError', 'onLoad'],
// },
// ],
'jsx-a11y/no-noninteractive-element-interactions': [
'warn',
{
@ -168,8 +157,18 @@ module.exports = {
],
},
],
// recommended rule is:
// 'jsx-a11y/no-noninteractive-tabindex': [
// 'error',
// {
// tags: [],
// roles: ['tabpanel'],
// allowExpressionValues: true,
// },
// ],
'jsx-a11y/no-noninteractive-tabindex': 'off',
'jsx-a11y/no-onchange': 'warn',
'jsx-a11y/no-redundant-roles': 'warn',
// recommended is full 'error'
'jsx-a11y/no-static-element-interactions': [
'warn',
{
@ -178,10 +177,6 @@ module.exports = {
],
},
],
'jsx-a11y/role-has-required-aria-props': 'warn',
'jsx-a11y/role-supports-aria-props': 'off',
'jsx-a11y/scope': 'warn',
'jsx-a11y/tabindex-no-positive': 'warn',
'import/extensions': [
'error',

@ -1,6 +1,6 @@
name: Bug Report
description: If something isn't working as expected
labels: bug
labels: [bug]
body:
- type: markdown
attributes:
@ -31,6 +31,11 @@ body:
description: What happened?
validations:
required: true
- type: textarea
attributes:
label: Detailed description
validations:
required: false
- type: textarea
attributes:
label: Specifications
@ -38,5 +43,14 @@ body:
What version or commit hash of Mastodon did you find this bug in?
If a front-end issue, what browser and operating systems were you using?
placeholder: |
Mastodon 3.5.3 (or Edge)
Ruby 2.7.6 (or v3.1.2)
Node.js 16.18.0
Google Chrome 106.0.5249.119
Firefox 105.0.3
etc...
validations:
required: true

@ -1,6 +1,6 @@
name: Feature Request
description: I have a suggestion
labels: suggestion
labels: [suggestion]
body:
- type: markdown
attributes:

@ -3,6 +3,3 @@ contact_links:
- name: GitHub Discussions
url: https://github.com/mastodon/mastodon/discussions
about: Please ask and answer questions here.
- name: Bug Bounty Program
url: https://app.intigriti.com/programs/mastodon/mastodonio/detail
about: Please report security vulnerabilities here.

@ -4,20 +4,25 @@ on:
push:
branches:
- 'main'
tags:
- '*'
pull_request:
paths:
- .github/workflows/build-image.yml
- Dockerfile
permissions:
contents: read
packages: write
jobs:
build-image:
runs-on: ubuntu-latest
concurrency:
group: ${{ 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
- uses: docker/login-action@v2
@ -30,17 +35,17 @@ jobs:
id: meta
with:
images: ghcr.io/${{ github.repository_owner }}/mastodon
flavor: |
latest=auto
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=edge,branch=main
type=match,pattern=v(.*),group=0
type=ref,event=pr
- uses: docker/build-push-action@v3
type=sha,prefix=,format=long
- uses: docker/build-push-action@v4
with:
context: .
platforms: linux/amd64,linux/arm64
provenance: false
builder: ${{ steps.buildx.outputs.name }}
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/mastodon:latest
cache-to: type=inline
cache-from: type=gha
cache-to: type=gha,mode=max

@ -25,12 +25,12 @@ jobs:
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0'
ruby-version: .ruby-version
bundler-cache: true
- name: Check locale file normalization
run: bundle exec i18n-tasks check-normalized
- name: Check for unused strings
run: bundle exec i18n-tasks unused -l en
run: bundle exec i18n-tasks unused
- name: Check for wrong string interpolations
run: bundle exec i18n-tasks check-consistent-interpolations
- name: Check that all required locale files exist

@ -0,0 +1,62 @@
name: 'CodeQL'
on:
push:
branches: ['main']
pull_request:
# The branches below must be a subset of the branches above
branches: ['main']
schedule:
- cron: '22 6 * * 1'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: ['javascript', 'ruby']
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# ℹ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# If the Autobuild fails above, remove it and uncomment the following three lines.
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
# - run: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: '/language:${{matrix.language}}'

@ -0,0 +1,48 @@
name: CSS Linting
on:
push:
branches-ignore:
- 'dependabot/**'
paths:
- 'package.json'
- 'yarn.lock'
- '.prettier*'
- 'stylelint.config.js'
- '**/*.css'
- '**/*.scss'
- '.github/workflows/lint-css.yml'
- '.github/stylelint-matcher.json'
pull_request:
paths:
- 'package.json'
- 'yarn.lock'
- '.prettier*'
- 'stylelint.config.js'
- '**/*.css'
- '**/*.scss'
- '.github/workflows/lint-css.yml'
- '.github/stylelint-matcher.json'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
- name: Install all yarn packages
run: yarn --frozen-lockfile
- uses: xt0rted/stylelint-problem-matcher@v1
- run: echo "::add-matcher::.github/stylelint-matcher.json"
- name: Stylelint
run: yarn test:lint:sass

@ -0,0 +1,40 @@
name: JavaScript Linting
on:
push:
branches-ignore:
- 'dependabot/**'
paths:
- 'package.json'
- 'yarn.lock'
- '.prettier*'
- '.eslint*'
- '**/*.js'
- '.github/workflows/lint-js.yml'
pull_request:
paths:
- 'package.json'
- 'yarn.lock'
- '.prettier*'
- '.eslint*'
- '**/*.js'
- '.github/workflows/lint-js.yml'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
- name: Install all yarn packages
run: yarn --frozen-lockfile
- name: ESLint
run: yarn test:lint:js

@ -0,0 +1,40 @@
name: JSON Linting
on:
push:
branches-ignore:
- 'dependabot/**'
paths:
- 'package.json'
- 'yarn.lock'
- '.prettier*'
- '**/*.json'
- '.github/workflows/lint-json.yml'
- '!app/javascript/mastodon/locales/*.json'
pull_request:
paths:
- 'package.json'
- 'yarn.lock'
- '.prettier*'
- '**/*.json'
- '.github/workflows/lint-json.yml'
- '!app/javascript/mastodon/locales/*.json'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
- name: Install all yarn packages
run: yarn --frozen-lockfile
- name: Prettier
run: yarn prettier --check "**/*.json"

@ -0,0 +1,41 @@
name: Ruby Linting
on:
push:
branches-ignore:
- 'dependabot/**'
paths:
- 'Gemfile*'
- '.rubocop.yml'
- '**/*.rb'
- '**/*.rake'
- '.github/workflows/lint-ruby.yml'
pull_request:
paths:
- 'Gemfile*'
- '.rubocop.yml'
- '**/*.rb'
- '**/*.rake'
- '.github/workflows/lint-ruby.yml'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set-up RuboCop Problem Mathcher
uses: r7kamura/rubocop-problem-matchers-action@v1
- name: Run rubocop
uses: github/super-linter@v4
env:
DEFAULT_BRANCH: main
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
LINTER_RULES_PATH: .
RUBY_CONFIG_FILE: .rubocop.yml
VALIDATE_ALL_CODEBASE: false
VALIDATE_RUBY: true

@ -0,0 +1,42 @@
name: YML Linting
on:
push:
branches-ignore:
- 'dependabot/**'
paths:
- 'package.json'
- 'yarn.lock'
- '.prettier*'
- '**/*.yaml'
- '**/*.yml'
- '.github/workflows/lint-yml.yml'
- '!config/locales/*.yml'
pull_request:
paths:
- 'package.json'
- 'yarn.lock'
- '.prettier*'
- '**/*.yaml'
- '**/*.yml'
- '.github/workflows/lint-yml.yml'
- '!config/locales/*.yml'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
cache: yarn
- name: Install all yarn packages
run: yarn --frozen-lockfile
- name: Prettier
run: yarn prettier --check "**/*.{yml,yaml}"

@ -1,83 +0,0 @@
---
#################################
#################################
## Super Linter GitHub Actions ##
#################################
#################################
name: Lint Code Base
#
# Documentation:
# https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions
#
#############################
# Start the job on all push #
#############################
on:
push:
branches-ignore: [main]
# Remove the line above to run when pushing to master
pull_request:
branches: [main]
###############
# Set the Job #
###############
permissions:
checks: write
contents: read
pull-requests: write
statuses: write
jobs:
build:
# Name the Job
name: Lint Code Base
# Set the agent to run on
runs-on: ubuntu-latest
##################
# Load all steps #
##################
steps:
##########################
# Checkout the code base #
##########################
- name: Checkout Code
uses: actions/checkout@v3
with:
# Full git history is needed to get a proper list of changed files within `super-linter`
fetch-depth: 0
- name: Set-up Node.js
uses: actions/setup-node@v3
with:
node-version: 16.x
cache: yarn
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Set-up RuboCop Problem Mathcher
uses: r7kamura/rubocop-problem-matchers-action@v1
- name: Set-up Stylelint Problem Matcher
uses: xt0rted/stylelint-problem-matcher@v1
# https://github.com/xt0rted/stylelint-problem-matcher/issues/360
- run: echo "::add-matcher::.github/stylelint-matcher.json"
################################
# Run Linter against code base #
################################
- name: Lint Code Base
uses: github/super-linter@v4
env:
CSS_FILE_NAME: stylelint.config.js
DEFAULT_BRANCH: main
NO_COLOR: 1 # https://github.com/xt0rted/stylelint-problem-matcher/issues/360
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
JAVASCRIPT_ES_CONFIG_FILE: .eslintrc.js
LINTER_RULES_PATH: .
RUBY_CONFIG_FILE: .rubocop.yml
VALIDATE_ALL_CODEBASE: false
VALIDATE_CSS: true
VALIDATE_JAVASCRIPT_ES: true
VALIDATE_RUBY: true

@ -0,0 +1,17 @@
name: PR Needs Rebase
on:
push:
pull_request_target:
types: [synchronize]
jobs:
label-rebase-needed:
runs-on: ubuntu-latest
steps:
- name: Check for merge conflicts
uses: eps1lon/actions-label-merge-conflict@releases/2.x
with:
dirtyLabel: 'rebase needed :construction:'
repoToken: '${{ secrets.GITHUB_TOKEN }}'
commentOnDirty: This pull request has merge conflicts that must be resolved before it can be merged.

3
.gitignore vendored

@ -44,9 +44,6 @@
/redis
/elasticsearch
# ignore Helm dependency charts
/chart/charts/*.tgz
# Ignore Apple files
.DS_Store

@ -1 +1 @@
14
16

@ -44,9 +44,6 @@
/redis
/elasticsearch
# ignore Helm dependency charts
/chart/charts/*.tgz
# Ignore Apple files
.DS_Store
@ -67,12 +64,16 @@ yarn-debug.log
# Ignore Docker option files
docker-compose.override.yml
# Ignore Helm files
/chart
# Ignore emoji map file
/app/javascript/mastodon/features/emoji/emoji_map.json
# Ignore locale files
/app/javascript/mastodon/locales
/config/locales
# Ignore glitch-soc locale files
/app/javascript/flavours/glitch/locales
/config/locales-glitch
# Ignore glitch-soc emoji map file
/app/javascript/flavours/glitch/features/emoji/emoji_map.json

@ -1,12 +1,18 @@
require:
- rubocop-rails
- rubocop-rspec
- rubocop-performance
AllCops:
TargetRubyVersion: 2.5
NewCops: disable
TargetRubyVersion: 2.7
DisplayCopNames: true
DisplayStyleGuide: true
ExtraDetails: true
UseCache: true
CacheRootDirectory: tmp
NewCops: enable
Exclude:
- 'spec/**/*'
- 'db/**/*'
- db/schema.rb
- 'app/views/**/*'
- 'config/**/*'
- 'bin/*'
@ -67,15 +73,57 @@ Lint/UselessAccessModifier:
- class_methods
Metrics/AbcSize:
Max: 115
Max: 34 # RuboCop default 17
Exclude:
- 'lib/mastodon/*_cli.rb'
- 'lib/**/*cli*.rb'
- db/*migrate/**/*
- lib/paperclip/color_extractor.rb
- app/workers/scheduler/follow_recommendations_scheduler.rb
- app/services/activitypub/fetch*_service.rb
- lib/paperclip/**/*
CountRepeatedAttributes: false
AllowedMethods:
- update_media_attachments!
- account_link_to
- attempt_oembed
- build_crutches
- calculate_scores
- cc
- dump_actor!
- filter_from_home?
- hydrate
- import_bookmarks!
- import_relationships!
- initialize
- link_to_mention
- log_target
- matches_time_window?
- parse_metadata
- perform_statuses_search!
- privatize_media_attachments!
- process_update
- publish_media_attachments!
- remotable_attachment
- render_initial_state
- render_with_cache
- searchable_by
- self.cached_filters_for
- set_fetchable_attributes!
- signed_request_actor
- statuses_to_delete
- update_poll!
Metrics/BlockLength:
Max: 55
Exclude:
- 'lib/tasks/**/*'
- 'lib/mastodon/*_cli.rb'
CountComments: false
CountAsOne: [array, heredoc]
AllowedMethods:
- task
- namespace
- class_methods
- included
Metrics/BlockNesting:
Max: 3
@ -85,34 +133,144 @@ Metrics/BlockNesting:
Metrics/ClassLength:
CountComments: false
Max: 500
CountAsOne: [array, heredoc]
Exclude:
- 'lib/mastodon/*_cli.rb'
Metrics/CyclomaticComplexity:
Max: 25
Max: 12
Exclude:
- 'lib/mastodon/*_cli.rb'
- lib/mastodon/*cli*.rb
- db/*migrate/**/*
AllowedMethods:
- attempt_oembed
- blocked?
- build_crutches
- calculate_scores
- cc
- discover_endpoint!
- filter_from_home?
- hydrate
- klass
- link_to_mention
- log_target
- matches_time_window?
- patch_for_forwarding!
- preprocess_attributes!
- process_update
- remotable_attachment
- scan_text!
- self.cached_filters_for
- set_fetchable_attributes!
- setup_redis_env_url
- update_media_attachments!
Layout/LineLength:
Max: 140 # RuboCop default 120
AllowHeredoc: true
AllowURI: true
Enabled: false
IgnoreCopDirectives: true
AllowedPatterns:
# Allow comments to be long lines
- !ruby/regexp / \# .*$/
- !ruby/regexp /^\# .*$/
Exclude:
- lib/**/*cli*.rb
- db/*migrate/**/*
- db/seeds/**/*
Metrics/MethodLength:
CountComments: false
Max: 65
CountAsOne: [array, heredoc]
Max: 25 # RuboCop default 10
Exclude:
- 'lib/mastodon/*_cli.rb'
AllowedMethods:
- account_link_to
- attempt_oembed
- body_with_limit
- build_crutches
- cached_filters_for
- calculate_scores
- check_webfinger!
- clean_feeds!
- collection_items
- collection_presenter
- copy_account_notes!
- deduplicate_accounts!
- deduplicate_conversations!
- deduplicate_local_accounts!
- deduplicate_statuses!
- deduplicate_tags!
- deduplicate_users!
- discover_endpoint!
- extract_extra_uris_with_indices
- extract_hashtags_with_indices
- extract_mentions_or_lists_with_indices
- filter_from_home?
- from_elasticsearch
- handle_explicit_update!
- handle_mark_as_sensitive!
- hsl_to_rgb
- import_bookmarks!
- import_domain_blocks!
- import_relationships!
- ldap_options
- matches_time_window?
- outbox_presenter
- pam_get_user
- parallelize_with_progress
- parse_and_transform
- patch_for_forwarding!
- populate_home
- post_process_style
- preload_cache_collection_target_statuses
- privatize_media_attachments!
- provides_callback_for
- publish_media_attachments!
- relevant_account_timestamp
- remotable_attachment
- rgb_to_hsl
- rss_status_content_format
- set_fetchable_attributes!
- setup_redis_env_url
- signed_request_actor
- to_preview_card_attributes
- upgrade_storage_filesystem
- upgrade_storage_s3
- user_settings_params
- hydrate
- cc
- self_destruct
Metrics/ModuleLength:
CountComments: false
Max: 200
CountAsOne: [array, heredoc]
Metrics/ParameterLists:
Max: 5
CountKeywordArgs: true
Max: 5 # RuboCop default 5
CountKeywordArgs: true # RuboCop default true
MaxOptionalParameters: 3 # RuboCop default 3
Exclude:
- app/models/concerns/account_interactions.rb
- app/services/activitypub/fetch_remote_account_service.rb
- app/services/activitypub/fetch_remote_actor_service.rb
Metrics/PerceivedComplexity:
Max: 25
Max: 16 # RuboCop default 8
AllowedMethods:
- attempt_oembed
- build_crutches
- calculate_scores
- deduplicate_users!
- discover_endpoint!
- filter_from_home?
- hydrate
- patch_for_forwarding!
- process_update
- remove_orphans
- update_media_attachments!
Naming/MemoizedInstanceVariableName:
Enabled: false
@ -243,6 +401,10 @@ Style/HashTransformKeys:
Style/HashTransformValues:
Enabled: false
Style/HashSyntax:
Enabled: true
EnforcedStyle: ruby19_no_mixed_keys
Style/IfUnlessModifier:
Enabled: false
@ -263,9 +425,6 @@ Style/PercentLiteralDelimiters:
Style/PerlBackrefs:
AutoCorrect: false
Style/RedundantAssignment:
Enabled: false
Style/RedundantFetchBlock:
Enabled: true
@ -288,7 +447,7 @@ Style/RegexpLiteral:
Enabled: false
Style/RescueStandardError:
Enabled: false
Enabled: true
Style/SignalException:
Enabled: false
@ -307,3 +466,14 @@ Style/TrailingCommaInHashLiteral:
Style/UnpackFirst:
Enabled: false
RSpec/ScatteredSetup:
Enabled: false
RSpec/ImplicitExpect:
Enabled: false
RSpec/NamedSubject:
Enabled: false
RSpec/DescribeClass:
Enabled: false
RSpec/LetSetup:
Enabled: false

File diff suppressed because it is too large Load Diff

@ -1,26 +1,4 @@
ffmpeg
libicu[0-9][0-9]
libicu-dev
libidn11
libidn11-dev
libpq-dev
libxdamage1
libxfixes3
zlib1g-dev
libcairo2
libcroco3
libdatrie1
libgdk-pixbuf2.0-0
libgraphite2-3
libharfbuzz0b
libpango-1.0-0
libpangocairo-1.0-0
libpangoft2-1.0-0
libpixman-1-0
librsvg2-2
libthai-data
libthai0
libvpx[5-9]
libxcb-render0
libxcb-shm0
libxrender1

@ -3,6 +3,431 @@ Changelog
All notable changes to this project will be documented in this file.
## [4.1.0] - 2023-02-10
### Added
- **Add support for importing/exporting server-wide domain blocks** ([enbylenore](https://github.com/mastodon/mastodon/pull/20597), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/21471), [dariusk](https://github.com/mastodon/mastodon/pull/22803), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/21470))
- **Add listing of followed hashtags** ([connorshea](https://github.com/mastodon/mastodon/pull/21773))
- **Add support for editing media description and focus point of already-sent posts** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20878))
- Previously, you could add and remove attachments, but not edit media description of already-attached media
- REST API changes:
- `PUT /api/v1/statuses/:id` now takes an extra `media_attributes[]` array parameter with the `id` of the updated media and their updated `description`, `focus`, and `thumbnail`
- **Add follow request banner on account header** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20785))
- REST API changes:
- `Relationship` entities have an extra `requested_by` boolean attribute representing whether the represented user has requested to follow you
- **Add confirmation screen when handling reports** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22375), [Gargron](https://github.com/mastodon/mastodon/pull/23156), [tribela](https://github.com/mastodon/mastodon/pull/23178))
- Add option to make the landing page be `/about` even when trends are enabled ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20808))
- Add `noindex` setting back to the admin interface ([prplecake](https://github.com/mastodon/mastodon/pull/22205))
- Add instance peers API endpoint toggle back to the admin interface ([dariusk](https://github.com/mastodon/mastodon/pull/22810))
- Add instance activity API endpoint toggle back to the admin interface ([dariusk](https://github.com/mastodon/mastodon/pull/22833))
- Add setting for status page URL ([Gargron](https://github.com/mastodon/mastodon/pull/23390), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/23499))
- REST API changes:
- Add `configuration.urls.status` attribute to the object returned by `GET /api/v1/instance`
- Add `account.approved` webhook ([Saiv46](https://github.com/mastodon/mastodon/pull/22938))
- Add 12 hours option to polls ([Pleclown](https://github.com/mastodon/mastodon/pull/21131))
- Add dropdown menu item to open admin interface for remote domains ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21895))
- Add `--remove-headers`, `--prune-profiles` and `--include-follows` flags to `tootctl media remove` ([evanphilip](https://github.com/mastodon/mastodon/pull/22149))
- Add `--email` and `--dry-run` options to `tootctl accounts delete` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22328))
- Add `tootctl accounts migrate` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22330))
- Add `tootctl accounts prune` ([tribela](https://github.com/mastodon/mastodon/pull/18397))
- Add `tootctl domains purge` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22063))
- Add `SIDEKIQ_CONCURRENCY` environment variable ([muffinista](https://github.com/mastodon/mastodon/pull/19589))
- Add `DB_POOL` environment variable support for streaming server ([Gargron](https://github.com/mastodon/mastodon/pull/23470))
- Add `MIN_THREADS` environment variable to set minimum Puma threads ([jimeh](https://github.com/mastodon/mastodon/pull/21048))
- Add explanation text to log-in page ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20946))
- Add user profile OpenGraph tag on post pages ([bramus](https://github.com/mastodon/mastodon/pull/21423))
- Add maskable icon support for Android ([workeffortwaste](https://github.com/mastodon/mastodon/pull/20904))
- Add Belarusian to supported languages ([Mixaill](https://github.com/mastodon/mastodon/pull/22022))
- Add Western Frisian to supported languages ([ykzts](https://github.com/mastodon/mastodon/pull/18602))
- Add Montenegrin to the language picker ([ayefries](https://github.com/mastodon/mastodon/pull/21013))
- Add Southern Sami and Lule Sami to the language picker ([Jullan-M](https://github.com/mastodon/mastodon/pull/21262))
- Add logging for Rails cache timeouts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21667))
- Add color highlight for active hashtag “follow” button ([MFTabriz](https://github.com/mastodon/mastodon/pull/21629))
- Add brotli compression to `assets:precompile` ([Izorkin](https://github.com/mastodon/mastodon/pull/19025))
- Add “disabled” account filter to the `/admin/accounts` UI ([tribela](https://github.com/mastodon/mastodon/pull/21282))
- Add transparency to modal background for accessibility ([edent](https://github.com/mastodon/mastodon/pull/18081))
- Add `lang` attribute to image description textarea and poll option field ([c960657](https://github.com/mastodon/mastodon/pull/23293))
- Add `spellcheck` attribute to Content Warning and poll option input fields ([c960657](https://github.com/mastodon/mastodon/pull/23395))
- Add `title` attribute to video elements in media attachments ([bramus](https://github.com/mastodon/mastodon/pull/21420))
- Add left and right margins to emojis ([dsblank](https://github.com/mastodon/mastodon/pull/20464))
- Add `roles` attribute to `Account` entities in REST API ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23255), [tribela](https://github.com/mastodon/mastodon/pull/23428))
- Add `reading:autoplay:gifs` to `/api/v1/preferences` ([j-f1](https://github.com/mastodon/mastodon/pull/22706))
- Add `hide_collections` parameter to `/api/v1/accounts/credentials` ([CarlSchwan](https://github.com/mastodon/mastodon/pull/22790))
- Add `policy` attribute to web push subscription objects in REST API at `/api/v1/push/subscriptions` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23210))
- Add metrics endpoint to streaming API ([Gargron](https://github.com/mastodon/mastodon/pull/23388), [Gargron](https://github.com/mastodon/mastodon/pull/23469))
- Add more specific error messages to HTTP signature verification ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21617))
- Add Storj DCS to cloud object storage options in the `mastodon:setup` rake task ([jtolio](https://github.com/mastodon/mastodon/pull/21929))
- Add checkmark symbol in the checkbox for sensitive media ([sidp](https://github.com/mastodon/mastodon/pull/22795))
- Add missing accessibility attributes to logout link in modals ([kytta](https://github.com/mastodon/mastodon/pull/22549))
- Add missing accessibility attributes to “Hide image” button in `MediaGallery` ([hs4man21](https://github.com/mastodon/mastodon/pull/22513))
- Add missing accessibility attributes to hide content warning field when disabled ([hs4man21](https://github.com/mastodon/mastodon/pull/22568))
- Add `aria-hidden` to footer circle dividers to improve accessibility ([hs4man21](https://github.com/mastodon/mastodon/pull/22576))
- Add `lang` attribute to compose form inputs ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23240))
### Changed
- **Ensure exact match is the first result in hashtag searches** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21315))
- Change account search to return followed accounts first ([dariusk](https://github.com/mastodon/mastodon/pull/22956))
- Change batch account suspension to create a strike ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20897))
- Change default reply language to match the default language when replying to a translated post ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22272))
- Change misleading wording about waitlists ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20850))
- Increase width of the unread notification border ([connorshea](https://github.com/mastodon/mastodon/pull/21692))
- Change new post notification button on profiles to make it more apparent when it is enabled ([tribela](https://github.com/mastodon/mastodon/pull/22541))
- Change trending tags admin interface to always show batch action controls ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23013))
- Change wording of some OAuth scope descriptions ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22491))
- Change wording of admin report handling actions ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18388))
- Change confirm prompts for relationships management ([tribela](https://github.com/mastodon/mastodon/pull/19411))
- Change language surrounding disability in prompts for media descriptions ([hs4man21](https://github.com/mastodon/mastodon/pull/20923))
- Change confusing wording in the sign in banner ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22490))
- Change `POST /settings/applications/:id` to regenerate token on scopes change ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23359))
- Change account moderation notes to make links clickable ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22553))
- Change link previews for statuses to never use avatar as fallback ([Gargron](https://github.com/mastodon/mastodon/pull/23376))
- Change email address input to be read-only for logged-in users when requesting a new confirmation e-mail ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23247))
- Change notifications per page from 15 to 40 in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/23348))
- Change number of stored items in home feed from 400 to 800 ([Gargron](https://github.com/mastodon/mastodon/pull/23349))
- Change API rate limits from 300/5min per user to 1500/5min per user, 300/5min per app ([Gargron](https://github.com/mastodon/mastodon/pull/23347))
- Save avatar or header correctly even if the other one fails ([tribela](https://github.com/mastodon/mastodon/pull/18465))
- Change `referrer-policy` to `same-origin` application-wide ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23014), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/23037))
- Add 'private' to `Cache-Control`, match Rails expectations ([daxtens](https://github.com/mastodon/mastodon/pull/20608))
- Make the button that expands the compose form differentiable from the button that publishes a post ([Tak](https://github.com/mastodon/mastodon/pull/20864))
- Change automatic post deletion configuration to be accessible to moved users ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20774))
- Make tag following idempotent ([trwnh](https://github.com/mastodon/mastodon/pull/20860), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/21285))
- Use buildx functions for faster builds ([inductor](https://github.com/mastodon/mastodon/pull/20692))
- Split off Dockerfile components for faster builds ([moritzheiber](https://github.com/mastodon/mastodon/pull/20933), [ineffyble](https://github.com/mastodon/mastodon/pull/20948), [BtbN](https://github.com/mastodon/mastodon/pull/21028))
- Change last occurrence of “silence” to “limit” in UI text ([cincodenada](https://github.com/mastodon/mastodon/pull/20637))
- Change “hide toot” to “hide post” ([seanthegeek](https://github.com/mastodon/mastodon/pull/22385))
- Don't allow URLs that contain non-normalized paths to be verified ([dgl](https://github.com/mastodon/mastodon/pull/20999))
- Change the “Trending now” header to be a link to the Explore page ([connorshea](https://github.com/mastodon/mastodon/pull/21759))
- Change PostgreSQL connection timeout from 2 minutes to 15 seconds ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21790))
- Make handle more easily selectable on profile page ([cadars](https://github.com/mastodon/mastodon/pull/21479))
- Allow admins to refresh remotely-suspended accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22327))
- Change dropdown menu to contain “Copy link to post” even for non-public posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21316))
- Allow adding relays in secure mode and limited federation mode ([ineffyble](https://github.com/mastodon/mastodon/pull/22324))
- Change timestamps to be displayed using the user's timezone throughout the moderation interface ([FrancisMurillo](https://github.com/mastodon/mastodon/pull/21878), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/22555))
- Change CSP directives on API to be tight and concise ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20960))
- Change web UI to not autofocus the compose form ([raboof](https://github.com/mastodon/mastodon/pull/16517), [Akkiesoft](https://github.com/mastodon/mastodon/pull/23094))
- Change idempotency key handling for posting when database access is slow ([lambda](https://github.com/mastodon/mastodon/pull/21840))
- Change remote media files to be downloaded outside of transactions ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21796))
- Improve contrast of charts in “poll has ended” notifications ([j-f1](https://github.com/mastodon/mastodon/pull/22575))
- Change OEmbed detection and validation to be somewhat more lenient ([ineffyble](https://github.com/mastodon/mastodon/pull/22533))
- Widen ElasticSearch version detection to not display a warning for OpenSearch ([VyrCossont](https://github.com/mastodon/mastodon/pull/22422), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/23064))
- Change link verification to allow pages larger than 1MB as long as the link is in the first 1MB ([untitaker](https://github.com/mastodon/mastodon/pull/22879))
- Update default Node.js version to Node.js 16 ([ineffyble](https://github.com/mastodon/mastodon/pull/22223), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/22342))
### Removed
- Officially remove support for Ruby 2.6 ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21477))
- Remove `object-fit` polyfill used for old versions of Microsoft Edge ([shuuji3](https://github.com/mastodon/mastodon/pull/22693))
- Remove `intersection-observer` polyfill for old Safari support ([shuuji3](https://github.com/mastodon/mastodon/pull/23284))
- Remove empty `title` tag from mailer layout ([nametoolong](https://github.com/mastodon/mastodon/pull/23078))
- Remove post count and last posts from ActivityPub representation of hashtag collections ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23460))
### Fixed
- **Fix changing domain block severity not undoing individual account effects** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22135))
- Fix suspension worker crashing on S3-compatible setups without ACL support ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22487))
- Fix possible race conditions when suspending/unsuspending accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22363))
- Fix being stuck in edit mode when deleting the edited posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22126))
- Fix attached media uploads not being cleared when replying to a post ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23504))
- Fix filters not being applied to some notification types ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23211))
- Fix incorrect link in push notifications for some event types ([elizabeth-dev](https://github.com/mastodon/mastodon/pull/23286))
- Fix some performance issues with `/admin/instances` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21907))
- Fix some pre-4.0 admin audit logs ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22091))
- Fix moderation audit log items for warnings having incorrect links ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23242))
- Fix account activation being sometimes triggered before email confirmation ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23245))
- Fix missing OAuth scopes for admin APIs ([trwnh](https://github.com/mastodon/mastodon/pull/20918), [trwnh](https://github.com/mastodon/mastodon/pull/20979))
- Fix voter count not being cleared when a poll is reset ([afontenot](https://github.com/mastodon/mastodon/pull/21700))
- Fix attachments of edited posts not being fetched ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21565))
- Fix irreversible and whole_word parameters handling in `/api/v1/filters` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21988))
- Fix 500 error when marking posts as sensitive while some of them are deleted ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22134))
- Fix expanded posts not always being scrolled into view ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21797))
- Fix not being able to scroll the remote interaction modal on small screens ([xendke](https://github.com/mastodon/mastodon/pull/21763))
- Fix not being able to scroll in post history modal ([cadars](https://github.com/mastodon/mastodon/pull/23396))
- Fix audio player volume control on Safari ([minacle](https://github.com/mastodon/mastodon/pull/23187))
- Fix disappearing “Explore” tabs on Safari ([nyura](https://github.com/mastodon/mastodon/pull/20917), [ykzts](https://github.com/mastodon/mastodon/pull/20982))
- Fix wrong padding in RTL layout ([Gargron](https://github.com/mastodon/mastodon/pull/23157))
- Fix drag & drop upload area display in single-column mode ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23217))
- Fix being unable to get a single EmailDomainBlock from the admin API ([trwnh](https://github.com/mastodon/mastodon/pull/20846))
- Fix admin-set follow recommandations being case-sensitive ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23500))
- Fix unserialized `role` on account entities in admin API ([Gargron](https://github.com/mastodon/mastodon/pull/23290))
- Fix pagination of followed tags ([trwnh](https://github.com/mastodon/mastodon/pull/20861))
- Fix dropdown menu positions when scrolling ([sidp](https://github.com/mastodon/mastodon/pull/22916), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/23062))
- Fix email with empty domain name labels passing validation ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23246))
- Fix mysterious registration failure when “Require a reason to join” is set with open registrations ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22127))
- Fix attachment rendering of edited posts in OpenGraph ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22270))
- Fix invalid/empty RSS feed link on account pages ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20772))
- Fix error in `VerifyLinkService` when processing links with no href ([joshuap](https://github.com/mastodon/mastodon/pull/20741))
- Fix error in `VerifyLinkService` when processing links with invalid URLs ([untitaker](https://github.com/mastodon/mastodon/pull/23204))
- Fix media uploads with FFmpeg 5 ([dead10ck](https://github.com/mastodon/mastodon/pull/21191))
- Fix sensitive flag not being set when replying to a post with a content warning under certain conditions ([kedamaDQ](https://github.com/mastodon/mastodon/pull/21724))
- Fix misleading message briefly showing up when loading follow requests under some conditions ([c960657](https://github.com/mastodon/mastodon/pull/23386))
- Fix “Share @:user's profile” profile menu item not working ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21490))
- Fix crash and incorrect behavior in `tootctl domains crawl` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19004))
- Fix autoplay on iOS ([jamesadney](https://github.com/mastodon/mastodon/pull/21422))
- Fix user clean-up scheduler crash when an unconfirmed account has a moderation note ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23318))
- Fix spaces not being stripped in admin account search ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21324))
- Fix spaces not being stripped when adding relays ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22655))
- Fix infinite loading spinner instead of soft 404 for non-existing remote accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21303))
- Fix minor visual issue with the top border of verified account fields ([j-f1](https://github.com/mastodon/mastodon/pull/22006))
- Fix pending account approval and rejection not being recorded in the admin audit log ([FrancisMurillo](https://github.com/mastodon/mastodon/pull/22088))
- Fix “Sign up” button with closed registrations not opening modal on mobile ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22060))
- Fix UI header overflowing on mobile ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21783))
- Fix 500 error when trying to migrate to an invalid address ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21462))
- Fix crash when trying to fetch unobtainable avatar of user using external authentication ([lochiiconnectivity](https://github.com/mastodon/mastodon/pull/22462))
- Fix processing error on incoming malformed JSON-LD under some situations ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23416))
- Fix potential duplicate posts in Explore tab ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22121))
- Fix deprecation warning in `tootctl accounts rotate` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22120))
- Fix styling of featured tags in light theme ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23252))
- Fix missing style in warning and strike cards ([AtelierSnek](https://github.com/mastodon/mastodon/pull/22177), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/22302))
- Fix wasteful request to `/api/v1/custom_emojis` when not logged in ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22326))
- Fix replies sometimes being delivered to user-blocked domains ([tribela](https://github.com/mastodon/mastodon/pull/22117))
- Fix admin dashboard crash when using some ElasticSearch replacements ([cortices](https://github.com/mastodon/mastodon/pull/21006))
- Fix profile avatar being slightly offset into left border ([RiedleroD](https://github.com/mastodon/mastodon/pull/20994))
- Fix N+1 queries in `NotificationsController` ([nametoolong](https://github.com/mastodon/mastodon/pull/21202))
- Fix being unable to react to announcements with the keycap number sign emoji ([kescherCode](https://github.com/mastodon/mastodon/pull/22231))
- Fix height computation of post embeds ([hodgesmr](https://github.com/mastodon/mastodon/pull/22141))
- Fix accessibility issue of the search bar due to hidden placeholder ([alexstine](https://github.com/mastodon/mastodon/pull/21275))
- Fix layout change handler not being removed due to a typo ([nschonni](https://github.com/mastodon/mastodon/pull/21829))
- Fix typo in the default `S3_HOSTNAME` used in the `mastodon:setup` rake task ([danp](https://github.com/mastodon/mastodon/pull/19932))
- Fix the top action bar appearing in the multi-column layout ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20943))
- Fix inability to use local LibreTranslate without setting `ALLOWED_PRIVATE_ADDRESSES` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21926))
- Fix punycoded local domains not being prettified in initial state ([Tritlo](https://github.com/mastodon/mastodon/pull/21440))
- Fix CSP violation warning by removing inline CSS from SVG logo ([luxiaba](https://github.com/mastodon/mastodon/pull/20814))
- Fix margin for search field on medium window size ([minacle](https://github.com/mastodon/mastodon/pull/21606))
- Fix search popout scrolling with the page in single-column mode ([rgroothuijsen](https://github.com/mastodon/mastodon/pull/16463))
- Fix minor post cache hydration discrepancy ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19879))
- Fix `・` detection in hashtags ([parthoghosh24](https://github.com/mastodon/mastodon/pull/22888))
- Fix hashtag follows bypassing user blocks ([tribela](https://github.com/mastodon/mastodon/pull/22849))
- Fix moved accounts being incorrectly redirected to account settings when trying to view a remote profile ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22497))
- Fix site upload validations ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22479))
- Fix “Add new domain block” button using last submitted search value instead of the current one ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22485))
- Fix misleading hashtag warning when posting with “Followers only” or “Mentioned people only” visibility ([n0toose](https://github.com/mastodon/mastodon/pull/22827))
- Fix embedded posts with videos grabbing focus ([Akkiesoft](https://github.com/mastodon/mastodon/pull/22778))
- Fix `$` not being escaped in `.env.production` files generated by the `mastodon:setup` rake task ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/23012), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/23072))
- Fix sanitizer parsing link text as HTML when stripping unsupported links ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22558))
- Fix `scheduled_at` input not using `datetime-local` when editing announcements ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/21896))
- Fix REST API serializer for `Account` not including `moved` when the moved account has itself moved ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22483))
- Fix `/api/v1/admin/trends/tags` using wrong serializer ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18943))
- Fix situations in which instance actor can be set to a Mastodon-incompatible name ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22307))
### Security
- Add `form-action` CSP directive ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20781), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/20958), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/20962))
- Fix unbounded recursion in account discovery ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/22025))
- Revoke all authorized applications on password reset ([FrancisMurillo](https://github.com/mastodon/mastodon/pull/21325))
- Fix unbounded recursion in post discovery ([ClearlyClaire,nametoolong](https://github.com/mastodon/mastodon/pull/23506))
## [4.0.2] - 2022-11-15
### Fixed
- Fix wrong color on mentions hidden behind content warning in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/20724))
- Fix filters from other users being used in the streaming service ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20719))
- Fix `unsafe-eval` being used when `wasm-unsafe-eval` is enough in Content Security Policy ([Gargron](https://github.com/mastodon/mastodon/pull/20729), [prplecake](https://github.com/mastodon/mastodon/pull/20606))
## [4.0.1] - 2022-11-14
### Fixed
- Fix nodes order being sometimes mangled when rewriting emoji ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20677))
## [4.0.0] - 2022-11-14
Some of the features in this release have been funded through the [NGI0 Discovery](https://nlnet.nl/discovery) Fund, a fund established by [NLnet](https://nlnet.nl/) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu/) programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 825322.
### Added
- Add ability to filter followed accounts' posts by language ([Gargron](https://github.com/mastodon/mastodon/pull/19095), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19268))
- **Add ability to follow hashtags** ([Gargron](https://github.com/mastodon/mastodon/pull/18809), [Gargron](https://github.com/mastodon/mastodon/pull/18862), [Gargron](https://github.com/mastodon/mastodon/pull/19472), [noellabo](https://github.com/mastodon/mastodon/pull/18924))
- Add ability to filter individual posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18945))
- **Add ability to translate posts** ([Gargron](https://github.com/mastodon/mastodon/pull/19218), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19433), [Gargron](https://github.com/mastodon/mastodon/pull/19453), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19434), [Gargron](https://github.com/mastodon/mastodon/pull/19388), [ykzts](https://github.com/mastodon/mastodon/pull/19244), [Gargron](https://github.com/mastodon/mastodon/pull/19245))
- Add featured tags to web UI ([noellabo](https://github.com/mastodon/mastodon/pull/19408), [noellabo](https://github.com/mastodon/mastodon/pull/19380), [noellabo](https://github.com/mastodon/mastodon/pull/19358), [noellabo](https://github.com/mastodon/mastodon/pull/19409), [Gargron](https://github.com/mastodon/mastodon/pull/19382), [ykzts](https://github.com/mastodon/mastodon/pull/19418), [noellabo](https://github.com/mastodon/mastodon/pull/19403), [noellabo](https://github.com/mastodon/mastodon/pull/19404), [Gargron](https://github.com/mastodon/mastodon/pull/19398), [Gargron](https://github.com/mastodon/mastodon/pull/19712), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/20018))
- **Add support for language preferences for trending statuses and links** ([Gargron](https://github.com/mastodon/mastodon/pull/18288), [Gargron](https://github.com/mastodon/mastodon/pull/19349), [ykzts](https://github.com/mastodon/mastodon/pull/19335))
- Previously, you could only see trends in your current language
- For less popular languages, that meant empty trends
- Now, trends in your preferred languages' are shown on top, with others beneath
- Add server rules to sign-up flow ([Gargron](https://github.com/mastodon/mastodon/pull/19296))
- Add privacy icons to report modal in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19190))
- Add `noopener` to links to remote profiles in web UI ([shleeable](https://github.com/mastodon/mastodon/pull/19014))
- Add option to open original page in dropdowns of remote content in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/20299))
- Add warning for sensitive audio posts in web UI ([rgroothuijsen](https://github.com/mastodon/mastodon/pull/17885))
- Add language attribute to posts in web UI ([tribela](https://github.com/mastodon/mastodon/pull/18544))
- Add support for uploading WebP files ([Saiv46](https://github.com/mastodon/mastodon/pull/18506))
- Add support for uploading `audio/vnd.wave` files ([tribela](https://github.com/mastodon/mastodon/pull/18737))
- Add support for uploading AVIF files ([txt-file](https://github.com/mastodon/mastodon/pull/19647))
- Add support for uploading HEIC files ([Gargron](https://github.com/mastodon/mastodon/pull/19618))
- Add more debug information when processing remote accounts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/15605), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19209))
- **Add retention policy for cached content and media** ([Gargron](https://github.com/mastodon/mastodon/pull/19232), [zunda](https://github.com/mastodon/mastodon/pull/19478), [Gargron](https://github.com/mastodon/mastodon/pull/19458), [Gargron](https://github.com/mastodon/mastodon/pull/19248))
- Set for how long remote posts or media should be cached on your server
- Hands-off alternative to `tootctl` commands
- **Add customizable user roles** ([Gargron](https://github.com/mastodon/mastodon/pull/18641), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18812), [Gargron](https://github.com/mastodon/mastodon/pull/19040), [tribela](https://github.com/mastodon/mastodon/pull/18825), [tribela](https://github.com/mastodon/mastodon/pull/18826), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18776), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18777), [unextro](https://github.com/mastodon/mastodon/pull/18786), [tribela](https://github.com/mastodon/mastodon/pull/18824), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19436))
- Previously, there were 3 hard-coded roles, user, moderator, and admin
- Create your own roles and decide which permissions they should have
- Add notifications for new reports ([Gargron](https://github.com/mastodon/mastodon/pull/18697), [Gargron](https://github.com/mastodon/mastodon/pull/19475))
- Add ability to select all accounts matching search for batch actions in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/19053), [Gargron](https://github.com/mastodon/mastodon/pull/19054))
- Add ability to view previous edits of a status in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/19462))
- Add ability to block sign-ups from IP ([Gargron](https://github.com/mastodon/mastodon/pull/19037))
- **Add webhooks to admin UI** ([Gargron](https://github.com/mastodon/mastodon/pull/18510))
- Add admin API for managing domain allows ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18668))
- Add admin API for managing domain blocks ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18247))
- Add admin API for managing e-mail domain blocks ([Gargron](https://github.com/mastodon/mastodon/pull/19066))
- Add admin API for managing canonical e-mail blocks ([Gargron](https://github.com/mastodon/mastodon/pull/19067))
- Add admin API for managing IP blocks ([Gargron](https://github.com/mastodon/mastodon/pull/19065), [trwnh](https://github.com/mastodon/mastodon/pull/20207))
- Add `sensitized` attribute to accounts in admin REST API ([trwnh](https://github.com/mastodon/mastodon/pull/20094))
- Add `services` and `metadata` to the NodeInfo endpoint ([MFTabriz](https://github.com/mastodon/mastodon/pull/18563))
- Add `--remove-role` option to `tootctl accounts modify` ([Gargron](https://github.com/mastodon/mastodon/pull/19477))
- Add `--days` option to `tootctl media refresh` ([tribela](https://github.com/mastodon/mastodon/pull/18425))
- Add `EMAIL_DOMAIN_LISTS_APPLY_AFTER_CONFIRMATION` environment variable ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18642))
- Add `IP_RETENTION_PERIOD` and `SESSION_RETENTION_PERIOD` environment variables ([kescherCode](https://github.com/mastodon/mastodon/pull/18757))
- Add `http_hidden_proxy` environment variable ([tribela](https://github.com/mastodon/mastodon/pull/18427))
- Add `ENABLE_STARTTLS` environment variable ([erbridge](https://github.com/mastodon/mastodon/pull/20321))
- Add caching for payload serialization during fan-out ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19637), [Gargron](https://github.com/mastodon/mastodon/pull/19642), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19746), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19747), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19963))
- Add assets from Twemoji 14.0 ([Gargron](https://github.com/mastodon/mastodon/pull/19733))
- Add reputation and followers score boost to SQL-only account search ([Gargron](https://github.com/mastodon/mastodon/pull/19251))
- Add Scots, Balaibalan, Láadan, Lingua Franca Nova, Lojban, Toki Pona to languages list ([VyrCossont](https://github.com/mastodon/mastodon/pull/20168))
- Set autocomplete hints for e-mail, password and OTP fields ([rcombs](https://github.com/mastodon/mastodon/pull/19833), [offbyone](https://github.com/mastodon/mastodon/pull/19946), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/20071))
- Add support for DigitalOcean Spaces in setup wizard ([v-aisac](https://github.com/mastodon/mastodon/pull/20573))
### Changed
- **Change brand color and logotypes** ([Gargron](https://github.com/mastodon/mastodon/pull/18592), [Gargron](https://github.com/mastodon/mastodon/pull/18639), [Gargron](https://github.com/mastodon/mastodon/pull/18691), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18634), [Gargron](https://github.com/mastodon/mastodon/pull/19254), [mayaeh](https://github.com/mastodon/mastodon/pull/18710))
- **Change post editing to be enabled in web UI** ([Gargron](https://github.com/mastodon/mastodon/pull/19103))
- **Change web UI to work for logged-out users** ([Gargron](https://github.com/mastodon/mastodon/pull/18961), [Gargron](https://github.com/mastodon/mastodon/pull/19250), [Gargron](https://github.com/mastodon/mastodon/pull/19294), [Gargron](https://github.com/mastodon/mastodon/pull/19306), [Gargron](https://github.com/mastodon/mastodon/pull/19315), [ykzts](https://github.com/mastodon/mastodon/pull/19322), [Gargron](https://github.com/mastodon/mastodon/pull/19412), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19437), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19415), [Gargron](https://github.com/mastodon/mastodon/pull/19348), [Gargron](https://github.com/mastodon/mastodon/pull/19295), [Gargron](https://github.com/mastodon/mastodon/pull/19422), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19414), [Gargron](https://github.com/mastodon/mastodon/pull/19319), [Gargron](https://github.com/mastodon/mastodon/pull/19345), [Gargron](https://github.com/mastodon/mastodon/pull/19310), [Gargron](https://github.com/mastodon/mastodon/pull/19301), [Gargron](https://github.com/mastodon/mastodon/pull/19423), [ykzts](https://github.com/mastodon/mastodon/pull/19471), [ykzts](https://github.com/mastodon/mastodon/pull/19333), [ykzts](https://github.com/mastodon/mastodon/pull/19337), [ykzts](https://github.com/mastodon/mastodon/pull/19272), [ykzts](https://github.com/mastodon/mastodon/pull/19468), [Gargron](https://github.com/mastodon/mastodon/pull/19466), [Gargron](https://github.com/mastodon/mastodon/pull/19457), [Gargron](https://github.com/mastodon/mastodon/pull/19426), [Gargron](https://github.com/mastodon/mastodon/pull/19427), [Gargron](https://github.com/mastodon/mastodon/pull/19421), [Gargron](https://github.com/mastodon/mastodon/pull/19417), [Gargron](https://github.com/mastodon/mastodon/pull/19413), [Gargron](https://github.com/mastodon/mastodon/pull/19397), [Gargron](https://github.com/mastodon/mastodon/pull/19387), [Gargron](https://github.com/mastodon/mastodon/pull/19396), [Gargron](https://github.com/mastodon/mastodon/pull/19385), [ykzts](https://github.com/mastodon/mastodon/pull/19334), [ykzts](https://github.com/mastodon/mastodon/pull/19329), [Gargron](https://github.com/mastodon/mastodon/pull/19324), [Gargron](https://github.com/mastodon/mastodon/pull/19318), [Gargron](https://github.com/mastodon/mastodon/pull/19316), [Gargron](https://github.com/mastodon/mastodon/pull/19263), [trwnh](https://github.com/mastodon/mastodon/pull/19305), [ykzts](https://github.com/mastodon/mastodon/pull/19273), [Gargron](https://github.com/mastodon/mastodon/pull/19801), [Gargron](https://github.com/mastodon/mastodon/pull/19790), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19773), [Gargron](https://github.com/mastodon/mastodon/pull/19798), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19724), [Gargron](https://github.com/mastodon/mastodon/pull/19709), [Gargron](https://github.com/mastodon/mastodon/pull/19514), [Gargron](https://github.com/mastodon/mastodon/pull/19562), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19981), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19978), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/20148), [Gargron](https://github.com/mastodon/mastodon/pull/20302), [cutls](https://github.com/mastodon/mastodon/pull/20400))
- The web app can now be accessed without being logged in
- No more `/web` prefix on web app paths
- Profiles, posts, and other public pages now use the same interface for logged in and logged out users
- The web app displays a server information banner
- Pop-up windows for remote interaction have been replaced with a modal window
- No need to type in your username for remote interaction, copy-paste-to-search method explained
- Various hints throughout the app explain what the different timelines are
- New about page design
- New privacy policy page design shows when the policy was last updated
- All sections of the web app now have appropriate window titles
- The layout of the interface has been streamlined between different screen sizes
- Posts now use more horizontal space
- Change label of publish button to be "Publish" again in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/18583))
- Change language to be carried over on reply in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18557))
- Change "Unfollow" to "Cancel follow request" when request still pending in web UI ([prplecake](https://github.com/mastodon/mastodon/pull/19363))
- **Change post filtering system** ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18058), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19050), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18894), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19051), [noellabo](https://github.com/mastodon/mastodon/pull/18923), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18956), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18744), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/19878), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/20567))
- Filtered keywords and phrases can now be grouped into named categories
- Filtered posts show which exact filter was hit
- Individual posts can be added to a filter
- You can peek inside filtered posts anyway
- Change path of privacy policy page from `/terms` to `/privacy-policy` ([Gargron](https://github.com/mastodon/mastodon/pull/19249))
- Change how hashtags are normalized ([Gargron](https://github.com/mastodon/mastodon/pull/18795), [Gargron](https://github.com/mastodon/mastodon/pull/18863), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18854))
- Change settings area to be separated into categories in admin UI ([Gargron](https://github.com/mastodon/mastodon/pull/19407), [Gargron](https://github.com/mastodon/mastodon/pull/19533))
- Change "No accounts selected" errors to use the appropriate noun in admin UI ([prplecake](https://github.com/mastodon/mastodon/pull/19356))
- Change e-mail domain blocks to match subdomains of blocked domains ([Gargron](https://github.com/mastodon/mastodon/pull/18979))
- Change custom emoji file size limit from 50 KB to 256 KB ([Gargron](https://github.com/mastodon/mastodon/pull/18788))
- Change "Allow trends without prior review" setting to also work for trending posts ([Gargron](https://github.com/mastodon/mastodon/pull/17977))
- Change admin announcements form to use single inputs for date and time in admin UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18321))
- Change search API to be accessible without being logged in ([Gargron](https://github.com/mastodon/mastodon/pull/18963), [Gargron](https://github.com/mastodon/mastodon/pull/19326))
- Change following and followers API to be accessible without being logged in ([Gargron](https://github.com/mastodon/mastodon/pull/18964))
- Change `AUTHORIZED_FETCH` to not block unauthenticated REST API access ([Gargron](https://github.com/mastodon/mastodon/pull/19803))
- Change Helm configuration ([deepy](https://github.com/mastodon/mastodon/pull/18997), [jgsmith](https://github.com/mastodon/mastodon/pull/18415), [deepy](https://github.com/mastodon/mastodon/pull/18941))
- Change mentions of blocked users to not be processed ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19725))
- Change max. thumbnail dimensions to 640x360px (360p) ([Gargron](https://github.com/mastodon/mastodon/pull/19619))
- Change post-processing to be deferred only for large media types ([Gargron](https://github.com/mastodon/mastodon/pull/19617))
- Change link verification to only work for https links without unicode ([Gargron](https://github.com/mastodon/mastodon/pull/20304), [Gargron](https://github.com/mastodon/mastodon/pull/20295))
- Change account deletion requests to spread out over time ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20222))
- Change larger reblogs/favourites numbers to be shortened in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/20303))
- Change incoming activity processing to happen in `ingress` queue ([Gargron](https://github.com/mastodon/mastodon/pull/20264))
- Change notifications to not link show preview cards in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20335))
- Change amount of replies returned for logged out users in REST API ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20355))
- Change in-app links to keep you in-app in web UI ([trwnh](https://github.com/mastodon/mastodon/pull/20540), [Gargron](https://github.com/mastodon/mastodon/pull/20628))
- Change table header to be sticky in admin UI ([sk22](https://github.com/mastodon/mastodon/pull/20442))
### Removed
- Remove setting that disables account deletes ([Gargron](https://github.com/mastodon/mastodon/pull/17683))
- Remove digest e-mails ([Gargron](https://github.com/mastodon/mastodon/pull/17985))
- Remove unnecessary sections from welcome e-mail ([Gargron](https://github.com/mastodon/mastodon/pull/19299))
- Remove item titles from RSS feeds ([Gargron](https://github.com/mastodon/mastodon/pull/18640))
- Remove volume number from hashtags in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19253))
- Remove Nanobox configuration ([tonyjiang](https://github.com/mastodon/mastodon/pull/17881))
### Fixed
- Fix rules with same priority being sorted non-deterministically ([Gargron](https://github.com/mastodon/mastodon/pull/20623))
- Fix error when invalid domain name is submitted ([Gargron](https://github.com/mastodon/mastodon/pull/19474))
- Fix icons having an image role ([Gargron](https://github.com/mastodon/mastodon/pull/20600))
- Fix connections to IPv6-only servers ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20108))
- Fix unnecessary service worker registration and preloading when logged out in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20341))
- Fix unnecessary and slow regex construction ([raggi](https://github.com/mastodon/mastodon/pull/20215))
- Fix `mailers` queue not being used for mailers ([Gargron](https://github.com/mastodon/mastodon/pull/20274))
- Fix error in webfinger redirect handling ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20260))
- Fix report category not being set to `violation` if rule IDs are provided ([trwnh](https://github.com/mastodon/mastodon/pull/20137))
- Fix nodeinfo metadata attribute being an array instead of an object ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20114))
- Fix account endorsements not being idempotent ([trwnh](https://github.com/mastodon/mastodon/pull/20118))
- Fix status and rule IDs not being strings in admin reports REST API ([trwnh](https://github.com/mastodon/mastodon/pull/20122))
- Fix error on invalid `replies_policy` in REST API ([trwnh](https://github.com/mastodon/mastodon/pull/20126))
- Fix redrafting a currently-editing post not leaving edit mode in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20023))
- Fix performance by avoiding method cache busts ([raggi](https://github.com/mastodon/mastodon/pull/19957))
- Fix opening the language picker scrolling the single-column view to the top in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19983))
- Fix content warning button missing `aria-expanded` attribute in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19975))
- Fix redundant `aria-pressed` attributes in web UI ([Brawaru](https://github.com/mastodon/mastodon/pull/19912))
- Fix crash when external auth provider has no display name set ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19962))
- Fix followers count not being updated when migrating follows ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19998))
- Fix double button to clear emoji search input in web UI ([sunny](https://github.com/mastodon/mastodon/pull/19888))
- Fix missing null check on applications on strike disputes ([kescherCode](https://github.com/mastodon/mastodon/pull/19851))
- Fix featured tags not saving preferred casing ([Gargron](https://github.com/mastodon/mastodon/pull/19732))
- Fix language not being saved when editing status ([Gargron](https://github.com/mastodon/mastodon/pull/19543))
- Fix not being able to input featured tag with hash symbol ([Gargron](https://github.com/mastodon/mastodon/pull/19535))
- Fix user clean-up scheduler crash when an unconfirmed account has a moderation note ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19629))
- Fix being unable to withdraw follow request when confirmation modal is disabled in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19687))
- Fix inaccurate admin log entry for re-sending confirmation e-mails ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19674))
- Fix edits not being immediately reflected ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19673))
- Fix bookmark import stopping at the first failure ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19669))
- Fix account action type validation ([Gargron](https://github.com/mastodon/mastodon/pull/19476))
- Fix upload progress not communicating processing phase in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19530))
- Fix wrong host being used for custom.css when asset host configured ([Gargron](https://github.com/mastodon/mastodon/pull/19521))
- Fix account migration form ever using outdated account data ([Gargron](https://github.com/mastodon/mastodon/pull/18429), [nightpool](https://github.com/mastodon/mastodon/pull/19883))
- Fix error when uploading malformed CSV import ([Gargron](https://github.com/mastodon/mastodon/pull/19509))
- Fix avatars not using image tags in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19488))
- Fix handling of duplicate and out-of-order notifications in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19693))
- Fix reblogs being discarded after the reblogged status ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19731))
- Fix indexing scheduler trying to index when Elasticsearch is disabled ([Gargron](https://github.com/mastodon/mastodon/pull/19805))
- Fix n+1 queries when rendering initial state JSON ([Gargron](https://github.com/mastodon/mastodon/pull/19795))
- Fix n+1 query during status removal ([Gargron](https://github.com/mastodon/mastodon/pull/19753))
- Fix OCR not working due to Content Security Policy in web UI ([prplecake](https://github.com/mastodon/mastodon/pull/18817))
- Fix `nofollow` rel being removed in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19455))
- Fix language dropdown causing zoom on mobile devices in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19428))
- Fix button to dismiss suggestions not showing up in search results in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19325))
- Fix language dropdown sometimes not appearing in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/19246))
- Fix quickly switching notification filters resulting in empty or incorrect list in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19052), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18960))
- Fix media modal link button in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18877))
- Fix error upon successful account migration ([Gargron](https://github.com/mastodon/mastodon/pull/19386))
- Fix negatives values in search index causing queries to fail ([Gargron](https://github.com/mastodon/mastodon/pull/19464), [Gargron](https://github.com/mastodon/mastodon/pull/19481))
- Fix error when searching for invalid URL ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18580))
- Fix IP blocks not having a unique index ([Gargron](https://github.com/mastodon/mastodon/pull/19456))
- Fix remote account in contact account setting not being used ([Gargron](https://github.com/mastodon/mastodon/pull/19351))
- Fix swallowing mentions of unconfirmed/unapproved users ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19191))
- Fix incorrect and slow cache invalidation when blocking domain and removing media attachments ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19062))
- Fix HTTPs redirect behaviour when running as I2P service ([gi-yt](https://github.com/mastodon/mastodon/pull/18929))
- Fix deleted pinned posts potentially counting towards the pinned posts limit ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19005))
- Fix compatibility with OpenSSL 3.0 ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18449))
- Fix error when a remote report includes a private post the server has no access to ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18760))
- Fix suspicious sign-in mails never being sent ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18599))
- Fix fallback locale when somehow user's locale is an empty string ([tribela](https://github.com/mastodon/mastodon/pull/18543))
- Fix avatar/header not being deleted locally when deleted on remote account ([tribela](https://github.com/mastodon/mastodon/pull/18973))
- Fix missing `,` in Blurhash validation ([noellabo](https://github.com/mastodon/mastodon/pull/18660))
- Fix order by most recent not working for relationships page in admin UI ([tribela](https://github.com/mastodon/mastodon/pull/18996))
- Fix uncaught error when invalid date is supplied to API ([Gargron](https://github.com/mastodon/mastodon/pull/19480))
- Fix REST API sometimes returning HTML on error ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/19135))
- Fix ambiguous column names in `tootctl media refresh` ([tribela](https://github.com/mastodon/mastodon/pull/19206))
- Fix ambiguous column names in `tootctl search deploy` ([mashirozx](https://github.com/mastodon/mastodon/pull/18993))
- Fix `CDN_HOST` not being used in some asset URLs ([tribela](https://github.com/mastodon/mastodon/pull/18662))
- Fix `CAS_DISPLAY_NAME`, `SAML_DISPLAY_NAME` and `OIDC_DISPLAY_NAME` being ignored ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18568))
- Fix various typos in comments throughout the codebase ([luzpaz](https://github.com/mastodon/mastodon/pull/18604))
- Fix CSV import error when rows include unicode characters ([HamptonMakes](https://github.com/mastodon/mastodon/pull/20592))
### Security
- Fix being able to spoof link verification ([Gargron](https://github.com/mastodon/mastodon/pull/20217))
- Fix emoji substitution not applying only to text nodes in backend code ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20641))
- Fix emoji substitution not applying only to text nodes in web UI ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/20640))
- Fix rate limiting for paths with formats ([Gargron](https://github.com/mastodon/mastodon/pull/20675))
- Fix out-of-bound reads in blurhash transcoder ([delroth](https://github.com/mastodon/mastodon/pull/20388))
## [3.5.3] - 2022-05-26
### Added
@ -75,7 +500,7 @@ All notable changes to this project will be documented in this file.
- Remove IP matching from e-mail domain blocks ([Gargron](https://github.com/mastodon/mastodon/pull/18190))
- The IPs of the blocked e-mail domain or its MX records are no longer checked
- Previously it was too easy to block e-mail providers by mistake
## Fixed
- Fix compatibility with Friendica's pinned posts ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18254), [ClearlyClaire](https://github.com/mastodon/mastodon/pull/18260))
@ -122,7 +547,7 @@ All notable changes to this project will be documented in this file.
### Fixed
- Fix error resposes for `from` search prefix ([single-right-quote](https://github.com/mastodon/mastodon/pull/17963))
- Fix error responses for `from` search prefix ([single-right-quote](https://github.com/mastodon/mastodon/pull/17963))
- Fix dangling language-specific trends ([Gargron](https://github.com/mastodon/mastodon/pull/17997))
- Fix extremely rare race condition when deleting a status or account ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17994))
- Fix trends returning less results per page when filtered in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17996))
@ -257,7 +682,7 @@ All notable changes to this project will be documented in this file.
- Remove profile directory link from main navigation panel in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/17688))
- **Remove language detection through cld3** ([Gargron](https://github.com/mastodon/mastodon/pull/17478), [ykzts](https://github.com/mastodon/mastodon/pull/17539), [Gargron](https://github.com/mastodon/mastodon/pull/17496), [Gargron](https://github.com/mastodon/mastodon/pull/17722))
- cld3 is very inaccurate on short-form content even with unique alphabets
- Post language can be overriden individually using `language` param
- Post language can be overridden individually using `language` param
- Otherwise, it defaults to the user's interface language
- Remove support for `OAUTH_REDIRECT_AT_SIGN_IN` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17287))
- Use `OMNIAUTH_ONLY` instead

@ -40,7 +40,7 @@ Project maintainers who do not follow or enforce the Code of Conduct in good fai
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
[homepage]: https://contributor-covenant.org
[version]: https://contributor-covenant.org/version/1/4/

@ -6,6 +6,12 @@ Here are some guidelines, and ways you can help.
> (This document is a bit of a work-in-progress, so please bear with us.
> If you don't see what you're looking for here, please don't hesitate to reach out!)
## Translations
You can submit glitch-soc-specific translations via [Crowdin](https://crowdin.com/project/glitch-soc). They are periodically merged into the codebase.
[![Crowdin](https://badges.crowdin.net/glitch-soc/localized.svg)](https://crowdin.com/project/glitch-soc)
## Planning ##
Right now a lot of the planning for this project takes place in our development Discord, or through GitHub Issues and Projects.
@ -27,7 +33,7 @@ See the guidelines below.
- - -
You should also try to follow the guidelines set out in the original `CONTRIBUTING.md` from `tootsuite/mastodon`, reproduced below.
You should also try to follow the guidelines set out in the original `CONTRIBUTING.md` from `mastodon/mastodon`, reproduced below.
<blockquote>
@ -76,6 +82,8 @@ It is not always possible to phrase every change in such a manner, but it is des
- Code style rules (rubocop, eslint)
- Normalization of locale files (i18n-tasks)
**Note**: You may need to log in and authorise the GitHub account your fork of this repository belongs to with CircleCI to enable some of the automated checks to run.
## Documentation
The [Mastodon documentation](https://docs.joinmastodon.org) is a statically generated site. You can [submit merge requests to mastodon/documentation](https://github.com/mastodon/documentation).

@ -1,121 +1,99 @@
FROM ubuntu:20.04 as build-dep
# Use bash for the shell
SHELL ["/bin/bash", "-c"]
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
# Install Node v16 (LTS)
ENV NODE_VER="16.17.1"
RUN ARCH= && \
dpkgArch="$(dpkg --print-architecture)" && \
case "${dpkgArch##*-}" in \
amd64) ARCH='x64';; \
ppc64el) ARCH='ppc64le';; \
s390x) ARCH='s390x';; \
arm64) ARCH='arm64';; \
armhf) ARCH='armv7l';; \
i386) ARCH='x86';; \
*) echo "unsupported architecture"; exit 1 ;; \
esac && \
echo "Etc/UTC" > /etc/localtime && \
apt-get update && \
apt-get install -y --no-install-recommends ca-certificates wget python3 apt-utils && \
cd ~ && \
wget -q https://nodejs.org/download/release/v$NODE_VER/node-v$NODE_VER-linux-$ARCH.tar.gz && \
tar xf node-v$NODE_VER-linux-$ARCH.tar.gz && \
rm node-v$NODE_VER-linux-$ARCH.tar.gz && \
mv node-v$NODE_VER-linux-$ARCH /opt/node
# Install Ruby 3.0
ENV RUBY_VER="3.0.4"
RUN apt-get update && \
apt-get install -y --no-install-recommends build-essential \
bison libyaml-dev libgdbm-dev libreadline-dev libjemalloc-dev \
libncurses5-dev libffi-dev zlib1g-dev libssl-dev && \
cd ~ && \
wget https://cache.ruby-lang.org/pub/ruby/${RUBY_VER%.*}/ruby-$RUBY_VER.tar.gz && \
tar xf ruby-$RUBY_VER.tar.gz && \
cd ruby-$RUBY_VER && \
./configure --prefix=/opt/ruby \
--with-jemalloc \
--with-shared \
--disable-install-doc && \
make -j"$(nproc)" > /dev/null && \
make install && \
rm -rf ../ruby-$RUBY_VER.tar.gz ../ruby-$RUBY_VER
ENV PATH="${PATH}:/opt/ruby/bin:/opt/node/bin"
RUN npm install -g npm@latest && \
npm install -g yarn && \
gem install bundler && \
apt-get update && \
apt-get install -y --no-install-recommends git libicu-dev libidn11-dev \
libpq-dev shared-mime-info
# syntax=docker/dockerfile:1.4
# This needs to be bullseye-slim because the Ruby image is built on bullseye-slim
ARG NODE_VERSION="16.18.1-bullseye-slim"
COPY Gemfile* package.json yarn.lock /opt/mastodon/
FROM ghcr.io/moritzheiber/ruby-jemalloc:3.0.4-slim as ruby
FROM node:${NODE_VERSION} as build
RUN cd /opt/mastodon && \
bundle config set --local deployment 'true' && \
bundle config set --local without 'development test' && \
bundle config set silence_root_warning true && \
bundle install -j"$(nproc)" && \
yarn install --pure-lockfile
COPY --link --from=ruby /opt/ruby /opt/ruby
FROM ubuntu:20.04
ENV DEBIAN_FRONTEND="noninteractive" \
PATH="${PATH}:/opt/ruby/bin"
# Copy over all the langs needed for runtime
COPY --from=build-dep /opt/node /opt/node
COPY --from=build-dep /opt/ruby /opt/ruby
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# Add more PATHs to the PATH
ENV PATH="${PATH}:/opt/ruby/bin:/opt/node/bin:/opt/mastodon/bin"
WORKDIR /opt/mastodon
COPY Gemfile* package.json yarn.lock /opt/mastodon/
# Create the mastodon user
ARG UID=991
ARG GID=991
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# hadolint ignore=DL3008
RUN apt-get update && \
echo "Etc/UTC" > /etc/localtime && \
apt-get install -y --no-install-recommends whois wget && \
addgroup --gid $GID mastodon && \
useradd -m -u $UID -g $GID -d /opt/mastodon mastodon && \
echo "mastodon:$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 24 | mkpasswd -s -m sha-256)" | chpasswd && \
rm -rf /var/lib/apt/lists/*
# Install mastodon runtime deps
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
apt-get install -y --no-install-recommends build-essential \
ca-certificates \
git \
libicu-dev \
libidn11-dev \
libpq-dev \
libjemalloc-dev \
zlib1g-dev \
libgdbm-dev \
libgmp-dev \
libssl-dev \
libyaml-0-2 \
ca-certificates \
libreadline8 \
python3 \
shared-mime-info && \
bundle config set --local deployment 'true' && \
bundle config set --local without 'development test' && \
bundle config set silence_root_warning true && \
bundle install -j"$(nproc)" && \
yarn install --pure-lockfile --network-timeout 600000
FROM node:${NODE_VERSION}
ARG UID="991"
ARG GID="991"
COPY --link --from=ruby /opt/ruby /opt/ruby
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
# hadolint ignore=DL3008,DL3009
RUN apt-get update && \
apt-get -y --no-install-recommends install \
libssl1.1 libpq5 imagemagick ffmpeg libjemalloc2 \
libicu66 libidn11 libyaml-0-2 \
file ca-certificates tzdata libreadline8 gcc tini apt-utils && \
ln -s /opt/mastodon /mastodon && \
gem install bundler && \
rm -rf /var/cache && \
rm -rf /var/lib/apt/lists/*
# Copy over mastodon source, and dependencies from building, and set permissions
COPY --chown=mastodon:mastodon . /opt/mastodon
COPY --from=build-dep --chown=mastodon:mastodon /opt/mastodon /opt/mastodon
echo "Etc/UTC" > /etc/localtime && \
groupadd -g "${GID}" mastodon && \
useradd -l -u "$UID" -g "${GID}" -m -d /opt/mastodon mastodon && \
apt-get -y --no-install-recommends install whois \
wget \
procps \
libssl1.1 \
libpq5 \
imagemagick \
ffmpeg \
libjemalloc2 \
libicu67 \
libidn11 \
libyaml-0-2 \
file \
ca-certificates \
tzdata \
libreadline8 \
tini && \
ln -s /opt/mastodon /mastodon
# Note: no, cleaning here since Debian does this automatically
# See the file /etc/apt/apt.conf.d/docker-clean within the Docker image's filesystem
# Run mastodon services in prod mode
ENV RAILS_ENV="production"
ENV NODE_ENV="production"
COPY --chown=mastodon:mastodon . /opt/mastodon
COPY --chown=mastodon:mastodon --from=build /opt/mastodon /opt/mastodon
# Tell rails to serve static files
ENV RAILS_SERVE_STATIC_FILES="true"
ENV BIND="0.0.0.0"
ENV RAILS_ENV="production" \
NODE_ENV="production" \
RAILS_SERVE_STATIC_FILES="true" \
BIND="0.0.0.0"
# Set the run user
USER mastodon
WORKDIR /opt/mastodon
# Precompile assets
RUN cd ~ && \
OTP_SECRET=precompile_placeholder SECRET_KEY_BASE=precompile_placeholder rails assets:precompile && \
yarn cache clean
RUN OTP_SECRET=precompile_placeholder SECRET_KEY_BASE=precompile_placeholder rails assets:precompile && \
yarn cache clean
# Set the work dir and the container entry point
WORKDIR /opt/mastodon
ENTRYPOINT ["/usr/bin/tini", "--"]
EXPOSE 3000 4000

@ -1,32 +1,32 @@
# frozen_string_literal: true
source 'https://rubygems.org'
ruby '>= 2.6.0', '< 3.1.0'
ruby '>= 2.7.0', '< 3.1.0'
gem 'pkg-config', '~> 1.4'
gem 'pkg-config', '~> 1.5'
gem 'rexml', '~> 3.2'
gem 'puma', '~> 5.6'
gem 'rails', '~> 6.1.7'
gem 'sprockets', '~> 3.7.2'
gem 'thor', '~> 1.2'
gem 'rack', '~> 2.2.4'
gem 'rack', '~> 2.2.6'
gem 'hamlit-rails', '~> 0.2'
gem 'pg', '~> 1.4'
gem 'makara', '~> 0.5'
gem 'pghero', '~> 2.8'
gem 'pghero'
gem 'dotenv-rails', '~> 2.8'
gem 'aws-sdk-s3', '~> 1.114', require: false
gem 'fog-core', '<= 2.1.0'
gem 'aws-sdk-s3', '~> 1.119', require: false
gem 'fog-core', '<= 2.4.0'
gem 'fog-openstack', '~> 0.3', require: false
gem 'kt-paperclip', '~> 7.1'
gem 'blurhash', '~> 0.1'
gem 'active_model_serializers', '~> 0.10'
gem 'addressable', '~> 2.8'
gem 'bootsnap', '~> 1.13.0', require: false
gem 'bootsnap', '~> 1.16.0', require: false
gem 'browser'
gem 'charlock_holmes', '~> 0.7.7'
gem 'chewy', '~> 7.2'
@ -40,7 +40,7 @@ end
gem 'net-ldap', '~> 0.17'
gem 'omniauth-cas', '~> 2.0'
gem 'omniauth-saml', '~> 1.10'
gem 'gitlab-omniauth-openid-connect', '~>0.10.0', require: 'omniauth_openid_connect'
gem 'gitlab-omniauth-openid-connect', '~>0.10.1', require: 'omniauth_openid_connect'
gem 'omniauth', '~> 1.9'
gem 'omniauth-rails_csrf_protection', '~> 0.1'
@ -51,55 +51,55 @@ gem 'ed25519', '~> 1.3'
gem 'fast_blank', '~> 1.0'
gem 'fastimage'
gem 'hiredis', '~> 0.6'
gem 'redis-namespace', '~> 1.9'
gem 'redis-namespace', '~> 1.10'
gem 'htmlentities', '~> 4.3'
gem 'http', '~> 5.1'
gem 'http_accept_language', '~> 2.1'
gem 'httplog', '~> 1.6.0'
gem 'httplog', '~> 1.6.2'
gem 'idn-ruby', require: 'idn'
gem 'kaminari', '~> 1.2'
gem 'link_header', '~> 0.0'
gem 'mime-types', '~> 3.4.1', require: 'mime/types/columnar'
gem 'nokogiri', '~> 1.13'
gem 'nokogiri', '~> 1.14'
gem 'nsa', '~> 0.2'
gem 'oj', '~> 3.13'
gem 'ox', '~> 2.14'
gem 'parslet'
gem 'posix-spawn'
gem 'pundit', '~> 2.2'
gem 'public_suffix', '~> 5.0'
gem 'pundit', '~> 2.3'
gem 'premailer-rails'
gem 'rack-attack', '~> 6.6'
gem 'rack-cors', '~> 1.1', require: 'rack/cors'
gem 'rails-i18n', '~> 6.0'
gem 'rails-settings-cached', '~> 0.6'
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 'sanitize', '~> 6.0'
gem 'scenic', '~> 1.6'
gem 'scenic', '~> 1.7'
gem 'sidekiq', '~> 6.5'
gem 'sidekiq-scheduler', '~> 4.0'
gem 'sidekiq-unique-jobs', '~> 7.1'
gem 'sidekiq-bulk', '~> 0.2.0'
gem 'simple-navigation', '~> 4.4'
gem 'simple_form', '~> 5.1'
gem 'simple_form', '~> 5.2'
gem 'sprockets-rails', '~> 3.4', require: 'sprockets/railtie'
gem 'stoplight', '~> 3.0.0'
gem 'stoplight', '~> 3.0.1'
gem 'strong_migrations', '~> 0.7'
gem 'tty-prompt', '~> 0.23', require: false
gem 'twitter-text', '~> 3.1.0'
gem 'tzinfo-data', '~> 1.2022'
gem 'webpacker', '~> 5.4'
gem 'webpush', git: 'https://github.com/ClearlyClaire/webpush.git', ref: 'f14a4d52e201128b1b00245d11b6de80d6cfdcd9'
gem 'webpush', github: 'ClearlyClaire/webpush', ref: 'f14a4d52e201128b1b00245d11b6de80d6cfdcd9'
gem 'webauthn', '~> 2.5'
gem 'json-ld'
gem 'json-ld-preloaded', '~> 3.2'
gem 'rdf-normalize', '~> 0.5'
gem 'redcarpet', '~> 3.5'
group :development, :test do
gem 'fabrication', '~> 2.30'
gem 'fuubar', '~> 2.5'
@ -107,6 +107,10 @@ group :development, :test do
gem 'pry-byebug', '~> 3.10'
gem 'pry-rails', '~> 0.3'
gem 'rspec-rails', '~> 5.1'
gem 'rubocop-performance', require: false
gem 'rubocop-rails', require: false
gem 'rubocop-rspec', require: false
gem 'rubocop', require: false
end
group :production, :test do
@ -114,15 +118,16 @@ group :production, :test do
end
group :test do
gem 'capybara', '~> 3.37'
gem 'capybara', '~> 3.38'
gem 'climate_control', '~> 0.2'
gem 'faker', '~> 2.23'
gem 'microformats', '~> 4.4'
gem 'faker', '~> 3.1'
gem 'json-schema', '~> 3.0'
gem 'rack-test', '~> 2.0'
gem 'rails-controller-testing', '~> 1.0'
gem 'rspec_junit_formatter', '~> 0.6'
gem 'rspec-sidekiq', '~> 3.1'
gem 'simplecov', '~> 0.21', require: false
gem 'simplecov', '~> 0.22', require: false
gem 'webmock', '~> 3.18'
gem 'rspec_junit_formatter', '~> 0.6'
end
group :development do
@ -134,9 +139,7 @@ group :development do
gem 'letter_opener', '~> 1.8'
gem 'letter_opener_web', '~> 2.0'
gem 'memory_profiler'
gem 'rubocop', '~> 1.30', require: false
gem 'rubocop-rails', '~> 2.15', require: false
gem 'brakeman', '~> 5.3', require: false
gem 'brakeman', '~> 5.4', require: false
gem 'bundler-audit', '~> 0.9', require: false
gem 'capistrano', '~> 3.17'
@ -153,7 +156,6 @@ end
gem 'concurrent-ruby', require: false
gem 'connection_pool', require: false
gem 'xorcist', '~> 1.1'
gem 'hcaptcha', '~> 7.1'

@ -10,40 +10,40 @@ GIT
GEM
remote: https://rubygems.org/
specs:
actioncable (6.1.7)
actionpack (= 6.1.7)
activesupport (= 6.1.7)
actioncable (6.1.7.2)
actionpack (= 6.1.7.2)
activesupport (= 6.1.7.2)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (6.1.7)
actionpack (= 6.1.7)
activejob (= 6.1.7)
activerecord (= 6.1.7)
activestorage (= 6.1.7)
activesupport (= 6.1.7)
actionmailbox (6.1.7.2)
actionpack (= 6.1.7.2)
activejob (= 6.1.7.2)
activerecord (= 6.1.7.2)
activestorage (= 6.1.7.2)
activesupport (= 6.1.7.2)
mail (>= 2.7.1)
actionmailer (6.1.7)
actionpack (= 6.1.7)
actionview (= 6.1.7)
activejob (= 6.1.7)
activesupport (= 6.1.7)
actionmailer (6.1.7.2)
actionpack (= 6.1.7.2)
actionview (= 6.1.7.2)
activejob (= 6.1.7.2)
activesupport (= 6.1.7.2)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (6.1.7)
actionview (= 6.1.7)
activesupport (= 6.1.7)
actionpack (6.1.7.2)
actionview (= 6.1.7.2)
activesupport (= 6.1.7.2)
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)
actionpack (= 6.1.7)
activerecord (= 6.1.7)
activestorage (= 6.1.7)
activesupport (= 6.1.7)
actiontext (6.1.7.2)
actionpack (= 6.1.7.2)
activerecord (= 6.1.7.2)
activestorage (= 6.1.7.2)
activesupport (= 6.1.7.2)
nokogiri (>= 1.8.5)
actionview (6.1.7)
activesupport (= 6.1.7)
actionview (6.1.7.2)
activesupport (= 6.1.7.2)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
@ -54,22 +54,22 @@ GEM
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
active_record_query_trace (1.8)
activejob (6.1.7)
activesupport (= 6.1.7)
activejob (6.1.7.2)
activesupport (= 6.1.7.2)
globalid (>= 0.3.6)
activemodel (6.1.7)
activesupport (= 6.1.7)
activerecord (6.1.7)
activemodel (= 6.1.7)
activesupport (= 6.1.7)
activestorage (6.1.7)
actionpack (= 6.1.7)
activejob (= 6.1.7)
activerecord (= 6.1.7)
activesupport (= 6.1.7)
activemodel (6.1.7.2)
activesupport (= 6.1.7.2)
activerecord (6.1.7.2)
activemodel (= 6.1.7.2)
activesupport (= 6.1.7.2)
activestorage (6.1.7.2)
actionpack (= 6.1.7.2)
activejob (= 6.1.7.2)
activerecord (= 6.1.7.2)
activesupport (= 6.1.7.2)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (6.1.7)
activesupport (6.1.7.2)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
@ -90,20 +90,20 @@ GEM
attr_required (1.0.1)
awrence (1.2.1)
aws-eventstream (1.2.0)
aws-partitions (1.587.0)
aws-sdk-core (3.130.2)
aws-partitions (1.701.0)
aws-sdk-core (3.170.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.525.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.62.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1)
jmespath (~> 1.0)
aws-sdk-kms (1.56.0)
aws-sdk-core (~> 3, >= 3.127.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.114.0)
aws-sdk-core (~> 3, >= 3.127.0)
aws-sdk-s3 (1.119.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
aws-sigv4 (1.5.0)
aws-sigv4 (1.5.2)
aws-eventstream (~> 1, >= 1.0.2)
bcrypt (3.1.17)
better_errors (2.9.1)
@ -117,20 +117,20 @@ GEM
erubi (~> 1.4)
parser (>= 2.4)
smart_properties
bindata (2.4.10)
bindata (2.4.14)
binding_of_caller (1.0.0)
debug_inspector (>= 0.0.1)
blurhash (0.1.6)
ffi (~> 1.14)
bootsnap (1.13.0)
bootsnap (1.16.0)
msgpack (~> 1.2)
brakeman (5.3.1)
brakeman (5.4.0)
browser (4.2.0)
brpoplpush-redis_script (0.1.2)
brpoplpush-redis_script (0.1.3)
concurrent-ruby (~> 1.0, >= 1.0.5)
redis (>= 1.0, <= 5.0)
redis (>= 1.0, < 6)
builder (3.2.4)
bullet (7.0.3)
bullet (7.0.7)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.11)
bundler-audit (0.9.1)
@ -152,7 +152,7 @@ GEM
sshkit (~> 1.3)
capistrano-yarn (2.0.2)
capistrano (~> 3.0)
capybara (3.37.1)
capybara (3.38.0)
addressable
matrix
mini_mime (>= 0.1.3)
@ -174,7 +174,7 @@ GEM
cocoon (1.2.15)
coderay (1.1.3)
color_diff (0.1)
concurrent-ruby (1.1.10)
concurrent-ruby (1.2.0)
connection_pool (2.3.0)
cose (1.2.1)
cbor (~> 0.5.9)
@ -182,8 +182,9 @@ GEM
crack (0.4.5)
rexml
crass (1.0.6)
css_parser (1.7.1)
css_parser (1.12.0)
addressable
date (3.3.3)
debug_inspector (1.0.0)
devise (4.8.1)
bcrypt (~> 3.0)
@ -203,10 +204,10 @@ GEM
diff-lcs (1.5.0)
discard (1.2.1)
activerecord (>= 4.2, < 8)
docile (1.3.4)
docile (1.4.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
doorkeeper (5.6.0)
doorkeeper (5.6.4)
railties (>= 5)
dotenv (2.8.1)
dotenv-rails (2.8.1)
@ -223,12 +224,12 @@ GEM
faraday (~> 1)
multi_json
encryptor (3.0.0)
erubi (1.11.0)
erubi (1.12.0)
et-orbi (1.2.7)
tzinfo
excon (0.76.0)
excon (0.95.0)
fabrication (2.30.0)
faker (2.23.0)
faker (3.1.1)
i18n (>= 1.8.11, < 2)
faraday (1.9.3)
faraday-em_http (~> 1.0)
@ -271,18 +272,18 @@ GEM
fog-core (>= 1.45, <= 2.1.0)
fog-json (>= 1.0)
ipaddress (>= 0.8)
formatador (0.2.5)
fugit (1.5.3)
formatador (0.3.0)
fugit (1.7.1)
et-orbi (~> 1, >= 1.2.7)
raabro (~> 1.4)
fuubar (2.5.1)
rspec-core (~> 3.0)
ruby-progressbar (~> 1.4)
gitlab-omniauth-openid-connect (0.10.0)
gitlab-omniauth-openid-connect (0.10.1)
addressable (~> 2.7)
omniauth (>= 1.9, < 3)
openid_connect (~> 1.2)
globalid (1.0.0)
globalid (1.1.0)
activesupport (>= 5.0)
hamlit (2.13.0)
temple (>= 0.8.2)
@ -301,7 +302,7 @@ GEM
hiredis (0.6.3)
hkdf (0.3.0)
htmlentities (4.3.4)
http (5.1.0)
http (5.1.1)
addressable (~> 2.8)
http-cookie (~> 1.0)
http-form_data (~> 2.2)
@ -311,7 +312,7 @@ GEM
http-form_data (2.3.0)
http_accept_language (2.1.1)
httpclient (2.8.3)
httplog (1.6.0)
httplog (1.6.2)
rack (>= 2.0)
rainbow (>= 2.0.0)
i18n (1.12.0)
@ -327,15 +328,16 @@ GEM
rails-i18n
rainbow (>= 2.2.2, < 4.0)
terminal-table (>= 1.5.1)
idn-ruby (0.1.4)
idn-ruby (0.1.5)
ipaddress (0.8.3)
jmespath (1.6.1)
json (2.6.2)
jmespath (1.6.2)
json (2.6.3)
json-canonicalization (0.3.0)
json-jwt (1.13.0)
json-jwt (1.15.3)
activesupport (>= 4.2)
aes_key_wrap
bindata
httpclient
json-ld (3.2.3)
htmlentities (~> 4.3)
json-canonicalization (~> 0.3)
@ -343,11 +345,13 @@ GEM
multi_json (~> 1.15)
rack (~> 2.2)
rdf (~> 3.2, >= 3.2.9)
json-ld-preloaded (3.2.0)
json-ld-preloaded (3.2.2)
json-ld (~> 3.2)
rdf (~> 3.2)
json-schema (3.0.0)
addressable (>= 2.8)
jsonapi-renderer (0.2.2)
jwt (2.4.1)
jwt (2.5.0)
kaminari (1.2.2)
activesupport (>= 4.1.0)
kaminari-actionview (= 1.2.2)
@ -384,37 +388,46 @@ GEM
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
loofah (2.19.0)
loofah (2.19.1)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
mail (2.8.0.1)
mini_mime (>= 0.1.1)
net-imap
net-pop
net-smtp
makara (0.5.1)
activerecord (>= 5.2.0)
marcel (1.0.2)
mario-redis-lock (1.2.1)
redis (>= 3.0.5)
matrix (0.4.2)
memory_profiler (1.0.0)
memory_profiler (1.0.1)
method_source (1.0.0)
microformats (4.4.1)
json (~> 2.2)
nokogiri (~> 1.10)
mime-types (3.4.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2022.0105)
mini_mime (1.1.2)
mini_portile2 (2.8.0)
minitest (5.16.3)
msgpack (1.5.4)
mini_portile2 (2.8.1)
minitest (5.17.0)
msgpack (1.6.0)
multi_json (1.15.0)
multipart-post (2.1.1)
net-imap (0.3.4)
date
net-protocol
net-ldap (0.17.1)
net-pop (0.1.2)
net-protocol
net-protocol (0.2.1)
timeout
net-scp (4.0.0.rc1)
net-ssh (>= 2.6.5, < 8.0.0)
net-smtp (0.3.3)
net-protocol
net-ssh (7.0.1)
nio4r (2.5.8)
nokogiri (1.13.8)
nokogiri (1.14.1)
mini_portile2 (~> 2.8.0)
racc (~> 1.4)
nsa (0.2.8)
@ -422,7 +435,7 @@ GEM
concurrent-ruby (~> 1.0, >= 1.0.2)
sidekiq (>= 3.5)
statsd-ruby (~> 1.4, >= 1.4.0)
oj (3.13.21)
oj (3.13.23)
omniauth (1.9.2)
hashie (>= 3.4.6)
rack (>= 1.6.2, < 3)
@ -436,38 +449,40 @@ GEM
omniauth-saml (1.10.3)
omniauth (~> 1.3, >= 1.3.2)
ruby-saml (~> 1.9)
openid_connect (1.3.0)
openid_connect (1.4.2)
activemodel
attr_required (>= 1.0.0)
json-jwt (>= 1.5.0)
rack-oauth2 (>= 1.6.1)
swd (>= 1.0.0)
json-jwt (>= 1.15.0)
net-smtp
rack-oauth2 (~> 1.21)
swd (~> 1.3)
tzinfo
validate_email
validate_url
webfinger (>= 1.0.1)
webfinger (~> 1.2)
openssl (3.0.0)
openssl-signature_algorithm (1.2.1)
openssl (> 2.0, < 3.1)
orm_adapter (0.5.0)
ox (2.14.11)
ox (2.14.14)
parallel (1.22.1)
parser (3.1.2.1)
parser (3.2.0.0)
ast (~> 2.4.1)
parslet (2.0.0)
pastel (0.8.0)
tty-color (~> 0.5)
pg (1.4.3)
pghero (2.8.3)
activerecord (>= 5)
pkg-config (1.4.9)
pg (1.4.5)
pghero (3.1.0)
activerecord (>= 6)
pkg-config (1.5.1)
posix-spawn (0.3.15)
premailer (1.14.2)
premailer (1.18.0)
addressable
css_parser (>= 1.6.0)
css_parser (>= 1.12.0)
htmlentities (>= 4.0.0)
premailer-rails (1.11.1)
premailer-rails (1.12.0)
actionmailer (>= 3)
net-smtp
premailer (~> 1.7, >= 1.7.9)
private_address_check (0.5.0)
pry (0.14.1)
@ -478,42 +493,42 @@ GEM
pry (>= 0.13, < 0.15)
pry-rails (0.3.9)
pry (>= 0.10.4)
public_suffix (5.0.0)
public_suffix (5.0.1)
puma (5.6.5)
nio4r (~> 2.0)
pundit (2.2.0)
pundit (2.3.0)
activesupport (>= 3.0.0)
raabro (1.4.0)
racc (1.6.0)
rack (2.2.4)
racc (1.6.2)
rack (2.2.6.2)
rack-attack (6.6.1)
rack (>= 1.0, < 3)
rack-cors (1.1.1)
rack (>= 2.0.0)
rack-oauth2 (1.19.0)
rack-oauth2 (1.21.3)
activesupport
attr_required
httpclient
json-jwt (>= 1.11.0)
rack (>= 2.1.0)
rack-proxy (0.7.0)
rack-proxy (0.7.6)
rack
rack-test (2.0.2)
rack (>= 1.3)
rails (6.1.7)
actioncable (= 6.1.7)
actionmailbox (= 6.1.7)
actionmailer (= 6.1.7)
actionpack (= 6.1.7)
actiontext (= 6.1.7)
actionview (= 6.1.7)
activejob (= 6.1.7)
activemodel (= 6.1.7)
activerecord (= 6.1.7)
activestorage (= 6.1.7)
activesupport (= 6.1.7)
rails (6.1.7.2)
actioncable (= 6.1.7.2)
actionmailbox (= 6.1.7.2)
actionmailer (= 6.1.7.2)
actionpack (= 6.1.7.2)
actiontext (= 6.1.7.2)
actionview (= 6.1.7.2)
activejob (= 6.1.7.2)
activemodel (= 6.1.7.2)
activerecord (= 6.1.7.2)
activestorage (= 6.1.7.2)
activesupport (= 6.1.7.2)
bundler (>= 1.15.0)
railties (= 6.1.7)
railties (= 6.1.7.2)
sprockets-rails (>= 2.0.0)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
@ -522,16 +537,16 @@ GEM
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.4.3)
loofah (~> 2.3)
rails-html-sanitizer (1.5.0)
loofah (~> 2.19, >= 2.19.1)
rails-i18n (6.0.0)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 7)
rails-settings-cached (0.6.6)
rails (>= 4.2.0)
railties (6.1.7)
actionpack (= 6.1.7)
activesupport (= 6.1.7)
railties (6.1.7.2)
actionpack (= 6.1.7.2)
activesupport (= 6.1.7.2)
method_source
rake (>= 12.2)
thor (~> 1.0)
@ -539,13 +554,15 @@ GEM
rake (13.0.6)
rdf (3.2.9)
link_header (~> 0.0, >= 0.0.8)
rdf-normalize (0.5.0)
rdf-normalize (0.5.1)
rdf (~> 3.2)
redcarpet (3.5.1)
redcarpet (3.6.0)
redis (4.5.1)
redis-namespace (1.9.0)
redis-namespace (1.10.0)
redis (>= 4)
regexp_parser (2.5.0)
redlock (1.3.2)
redis (>= 3.0.0, < 6.0)
regexp_parser (2.6.2)
request_store (1.5.1)
rack (>= 1.4)
responders (3.0.1)
@ -580,64 +597,74 @@ GEM
rspec-support (3.11.1)
rspec_junit_formatter (0.6.0)
rspec-core (>= 2, < 4, != 2.12.0)
rubocop (1.30.1)
rubocop (1.44.1)
json (~> 2.3)
parallel (~> 1.10)
parser (>= 3.1.0.0)
parser (>= 3.2.0.0)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.18.0, < 2.0)
rubocop-ast (>= 1.24.1, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 3.0)
rubocop-ast (1.18.0)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.24.1)
parser (>= 3.1.1.0)
rubocop-rails (2.15.0)
rubocop-capybara (2.17.0)
rubocop (~> 1.41)
rubocop-performance (1.16.0)
rubocop (>= 1.7.0, < 2.0)
rubocop-ast (>= 0.4.0)
rubocop-rails (2.17.4)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.7.0, < 2.0)
rubocop (>= 1.33.0, < 2.0)
rubocop-rspec (2.18.1)
rubocop (~> 1.33)
rubocop-capybara (~> 2.17)
ruby-progressbar (1.11.0)
ruby-saml (1.13.0)
nokogiri (>= 1.10.5)
rexml
ruby2_keywords (0.0.5)
rufus-scheduler (3.8.1)
rufus-scheduler (3.8.2)
fugit (~> 1.1, >= 1.1.6)
safety_net_attestation (0.4.0)
jwt (~> 2.0)
sanitize (6.0.0)
sanitize (6.0.1)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
scenic (1.6.0)
scenic (1.7.0)
activerecord (>= 4.0.0)
railties (>= 4.0.0)
semantic_range (3.0.0)
sidekiq (6.5.7)
connection_pool (>= 2.2.5)
sidekiq (6.5.8)
connection_pool (>= 2.2.5, < 3)
rack (~> 2.0)
redis (>= 4.5.0, < 5)
sidekiq-bulk (0.2.0)
sidekiq
sidekiq-scheduler (4.0.2)
sidekiq-scheduler (4.0.3)
redis (>= 4.2.0)
rufus-scheduler (~> 3.2)
sidekiq (>= 4)
sidekiq (>= 4, < 7)
tilt (>= 1.4.0)
sidekiq-unique-jobs (7.1.27)
sidekiq-unique-jobs (7.1.29)
brpoplpush-redis_script (> 0.1.1, <= 2.0.0)
concurrent-ruby (~> 1.0, >= 1.0.5)
sidekiq (>= 5.0, < 8.0)
redis (< 5.0)
sidekiq (>= 5.0, < 7.0)
thor (>= 0.20, < 3.0)
simple-navigation (4.4.0)
activesupport (>= 2.3.2)
simple_form (5.1.0)
simple_form (5.2.0)
actionpack (>= 5.2)
activemodel (>= 5.2)
simplecov (0.21.2)
simplecov (0.22.0)
docile (~> 1.1)
simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1)
simplecov-html (0.12.3)
simplecov_json_formatter (0.1.2)
simplecov_json_formatter (0.1.4)
smart_properties (1.17.0)
sprockets (3.7.2)
concurrent-ruby (~> 1.0)
@ -649,9 +676,10 @@ GEM
sshkit (1.21.2)
net-scp (>= 1.1.2)
net-ssh (>= 2.8.0)
stackprof (0.2.21)
stackprof (0.2.23)
statsd-ruby (1.5.0)
stoplight (3.0.0)
stoplight (3.0.1)
redlock (~> 1.0)
strong_migrations (0.7.9)
activerecord (>= 5)
swd (1.3.0)
@ -664,7 +692,8 @@ GEM
terrapin (0.6.0)
climate_control (>= 0.0.3, < 1.0)
thor (1.2.1)
tilt (2.0.10)
tilt (2.0.11)
timeout (0.3.1)
tpm-key_attestation (0.11.0)
bindata (~> 2.4)
openssl (> 2.0, < 3.1)
@ -682,14 +711,14 @@ GEM
twitter-text (3.1.0)
idn-ruby
unf (~> 0.1.0)
tzinfo (2.0.5)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
tzinfo-data (1.2022.4)
tzinfo-data (1.2022.7)
tzinfo (>= 1.0.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unicode-display_width (2.3.0)
unicode-display_width (2.4.2)
uniform_notifier (1.16.0)
validate_email (0.1.6)
activemodel (>= 3.0)
@ -715,7 +744,7 @@ GEM
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
webpacker (5.4.3)
webpacker (5.4.4)
activesupport (>= 5.2)
rack-proxy (>= 0.6.1)
railties (>= 5.2)
@ -727,7 +756,7 @@ GEM
xorcist (1.1.3)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.0)
zeitwerk (2.6.6)
PLATFORMS
ruby
@ -737,12 +766,12 @@ DEPENDENCIES
active_record_query_trace (~> 1.8)
addressable (~> 2.8)
annotate (~> 3.2)
aws-sdk-s3 (~> 1.114)
aws-sdk-s3 (~> 1.119)
better_errors (~> 2.9)
binding_of_caller (~> 1.0)
blurhash (~> 0.1)
bootsnap (~> 1.13.0)
brakeman (~> 5.3)
bootsnap (~> 1.16.0)
brakeman (~> 5.4)
browser
bullet (~> 7.0)
bundler-audit (~> 0.9)
@ -750,7 +779,7 @@ DEPENDENCIES
capistrano-rails (~> 1.6)
capistrano-rbenv (~> 2.2)
capistrano-yarn (~> 2.0)
capybara (~> 3.37)
capybara (~> 3.38)
charlock_holmes (~> 0.7.7)
chewy (~> 7.2)
climate_control (~> 0.2)
@ -766,24 +795,25 @@ DEPENDENCIES
dotenv-rails (~> 2.8)
ed25519 (~> 1.3)
fabrication (~> 2.30)
faker (~> 2.23)
faker (~> 3.1)
fast_blank (~> 1.0)
fastimage
fog-core (<= 2.1.0)
fog-core (<= 2.4.0)
fog-openstack (~> 0.3)
fuubar (~> 2.5)
gitlab-omniauth-openid-connect (~> 0.10.0)
gitlab-omniauth-openid-connect (~> 0.10.1)
hamlit-rails (~> 0.2)
hcaptcha (~> 7.1)
hiredis (~> 0.6)
htmlentities (~> 4.3)
http (~> 5.1)
http_accept_language (~> 2.1)
httplog (~> 1.6.0)
httplog (~> 1.6.2)
i18n-tasks (~> 1.0)
idn-ruby
json-ld
json-ld-preloaded (~> 3.2)
json-schema (~> 3.0)
kaminari (~> 1.2)
kt-paperclip (~> 7.1)
letter_opener (~> 1.8)
@ -793,10 +823,9 @@ DEPENDENCIES
makara (~> 0.5)
mario-redis-lock (~> 1.2)
memory_profiler
microformats (~> 4.4)
mime-types (~> 3.4.1)
net-ldap (~> 0.17)
nokogiri (~> 1.13)
nokogiri (~> 1.14)
nsa (~> 0.2)
oj (~> 3.13)
omniauth (~> 1.9)
@ -806,47 +835,51 @@ DEPENDENCIES
ox (~> 2.14)
parslet
pg (~> 1.4)
pghero (~> 2.8)
pkg-config (~> 1.4)
pghero
pkg-config (~> 1.5)
posix-spawn
premailer-rails
private_address_check (~> 0.5)
pry-byebug (~> 3.10)
pry-rails (~> 0.3)
public_suffix (~> 5.0)
puma (~> 5.6)
pundit (~> 2.2)
rack (~> 2.2.4)
pundit (~> 2.3)
rack (~> 2.2.6)
rack-attack (~> 6.6)
rack-cors (~> 1.1)
rack-test (~> 2.0)
rails (~> 6.1.7)
rails-controller-testing (~> 1.0)
rails-i18n (~> 6.0)
rails-settings-cached (~> 0.6)
rdf-normalize (~> 0.5)
redcarpet (~> 3.5)
redcarpet (~> 3.6)
redis (~> 4.5)
redis-namespace (~> 1.9)
redis-namespace (~> 1.10)
rexml (~> 3.2)
rqrcode (~> 2.1)
rspec-rails (~> 5.1)
rspec-sidekiq (~> 3.1)
rspec_junit_formatter (~> 0.6)
rubocop (~> 1.30)
rubocop-rails (~> 2.15)
rubocop
rubocop-performance
rubocop-rails
rubocop-rspec
ruby-progressbar (~> 1.11)
sanitize (~> 6.0)
scenic (~> 1.6)
scenic (~> 1.7)
sidekiq (~> 6.5)
sidekiq-bulk (~> 0.2.0)
sidekiq-scheduler (~> 4.0)
sidekiq-unique-jobs (~> 7.1)
simple-navigation (~> 4.4)
simple_form (~> 5.1)
simplecov (~> 0.21)
simple_form (~> 5.2)
simplecov (~> 0.22)
sprockets (~> 3.7.2)
sprockets-rails (~> 3.4)
stackprof
stoplight (~> 3.0.0)
stoplight (~> 3.0.1)
strong_migrations (~> 0.7)
thor (~> 1.2)
tty-prompt (~> 0.23)

@ -1,6 +1,6 @@
# Security Policy
If you believe you've identified a security vulnerability in Mastodon (a bug that allows something to happen that shouldn't be possible), you should submit the report through our [Bug Bounty Program][bug-bounty]. Alternatively, you can reach us at <hello@joinmastodon.org>.
If you believe you've identified a security vulnerability in Mastodon (a bug that allows something to happen that shouldn't be possible), you can reach us at <security@joinmastodon.org>.
You should *not* report such issues on GitHub or in other public spaces to give us time to publish a fix for the issue without exposing Mastodon's users to increased risk.
@ -10,11 +10,8 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through
## Supported Versions
| Version | Supported |
| ------- | ------------------ |
| 3.5.x | Yes |
| 3.4.x | Yes |
| 3.3.x | No |
| < 3.3 | No |
[bug-bounty]: https://app.intigriti.com/programs/mastodon/mastodonio/detail
| Version | Supported |
| ------- | ----------|
| 4.0.x | Yes |
| 3.5.x | Yes |
| < 3.5 | No |

71
Vagrantfile vendored

@ -3,16 +3,14 @@
ENV["PORT"] ||= "3000"
$provision = <<SCRIPT
cd /vagrant # This is where the host folder/repo is mounted
$provisionA = <<SCRIPT
# Add the yarn repo + yarn repo keys
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
sudo apt-add-repository 'deb https://dl.yarnpkg.com/debian/ stable main'
# Add repo for NodeJS
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
curl -sL https://deb.nodesource.com/setup_16.x | sudo bash -
# Add firewall rule to redirect 80 to PORT and save
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port #{ENV["PORT"]}
@ -33,32 +31,56 @@ sudo apt-get install \
redis-tools \
postgresql \
postgresql-contrib \
yarn \
libicu-dev \
libidn11-dev \
libreadline-dev \
libpam0g-dev \
libreadline6-dev \
autoconf \
bison \
build-essential \
ffmpeg \
file \
gcc \
libffi-dev \
libgdbm-dev \
libjemalloc-dev \
libncurses5-dev \
libprotobuf-dev \
libssl-dev \
libyaml-dev \
pkg-config \
protobuf-compiler \
zlib1g-dev \
-y
# Install rvm
read RUBY_VERSION < .ruby-version
sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt-get install rvm -y
curl -sSL https://rvm.io/mpapis.asc | gpg --import
curl -sSL https://rvm.io/pkuczynski.asc | gpg --import
sudo usermod -a -G rvm $USER
SCRIPT
curl -sSL https://raw.githubusercontent.com/rvm/rvm/stable/binscripts/rvm-installer | bash -s stable --ruby=$RUBY_VERSION
source /home/vagrant/.rvm/scripts/rvm
$provisionB = <<SCRIPT
source "/etc/profile.d/rvm.sh"
# Install Ruby
rvm reinstall ruby-$RUBY_VERSION --disable-binary
read RUBY_VERSION < /vagrant/.ruby-version
rvm install ruby-$RUBY_VERSION --disable-binary
# Configure database
sudo -u postgres createuser -U postgres vagrant -s
sudo -u postgres createdb -U postgres mastodon_development
# Install gems and node modules
cd /vagrant # This is where the host folder/repo is mounted
# Install gems
gem install bundler foreman
bundle install
# Install node modules
sudo corepack enable
yarn set version classic
yarn install
# Build Mastodon
@ -72,18 +94,11 @@ echo 'export $(cat "/vagrant/.env.vagrant" | xargs)' >> ~/.bash_profile
SCRIPT
$start = <<SCRIPT
echo 'To start server'
echo ' $ vagrant ssh -c "cd /vagrant && foreman start"'
SCRIPT
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.box = "ubuntu/focal64"
config.vm.provider :virtualbox do |vb|
vb.name = "mastodon"
@ -100,7 +115,6 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Use "virtio" network interfaces for better performance.
vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
vb.customize ["modifyvm", :id, "--nictype2", "virtio"]
end
# This uses the vagrant-hostsupdater plugin, and lets you
@ -118,7 +132,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
end
if config.vm.networks.any? { |type, options| type == :private_network }
config.vm.synced_folder ".", "/vagrant", type: "nfs", mount_options: ['rw', 'vers=3', 'tcp', 'actimeo=1']
config.vm.synced_folder ".", "/vagrant", type: "nfs", mount_options: ['rw', 'actimeo=1']
else
config.vm.synced_folder ".", "/vagrant"
end
@ -129,9 +143,12 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.network :forwarded_port, guest: 8080, host: 8080
# Full provisioning script, only runs on first 'vagrant up' or with 'vagrant provision'
config.vm.provision :shell, inline: $provision, privileged: false
config.vm.provision :shell, inline: $provisionA, privileged: false, reset: true
config.vm.provision :shell, inline: $provisionB, privileged: false
# Start up script, runs on every 'vagrant up'
config.vm.provision :shell, inline: $start, run: 'always', privileged: false
config.vm.post_up_message = <<MESSAGE
To start server
$ vagrant ssh -c "cd /vagrant && foreman start"
MESSAGE
end

@ -79,8 +79,13 @@
"description": "SMTP server certificate verification mode. Defaults is 'peer'.",
"required": false
},
"SMTP_ENABLE_STARTTLS": {
"description": "Enable STARTTLS? Default is 'auto'.",
"value": "auto",
"required": false
},
"SMTP_ENABLE_STARTTLS_AUTO": {
"description": "Enable STARTTLS if SMTP server supports it? Default is true.",
"description": "Enable STARTTLS if SMTP server supports it? Deprecated by SMTP_ENABLE_STARTTLS.",
"required": false
}
},

@ -1,72 +1,19 @@
# frozen_string_literal: true
class AboutController < ApplicationController
include RegistrationSpamConcern
include WebAppControllerConcern
before_action :set_pack
skip_before_action :require_functional!
layout 'public'
before_action :require_open_federation!, only: [:show, :more]
before_action :set_body_classes, only: :show
before_action :set_instance_presenter
before_action :set_expires_in, only: [:more]
before_action :set_registration_form_time, only: :show
skip_before_action :require_functional!, only: [:more]
def show; end
def more
flash.now[:notice] = I18n.t('about.instance_actor_flash') if params[:instance_actor]
toc_generator = TOCGenerator.new(@instance_presenter.extended_description)
@rules = Rule.ordered
@contents = toc_generator.html
@table_of_contents = toc_generator.toc
@blocks = DomainBlock.with_user_facing_limitations.by_severity if display_blocks?
def show
expires_in 0, public: true unless user_signed_in?
end
helper_method :display_blocks?
helper_method :display_blocks_rationale?
helper_method :public_fetch_mode?
helper_method :new_user
private
def require_open_federation!
not_found if whitelist_mode?
end
def display_blocks?
Setting.show_domain_blocks == 'all' || (Setting.show_domain_blocks == 'users' && user_signed_in?)
end
def display_blocks_rationale?
Setting.show_domain_blocks_rationale == 'all' || (Setting.show_domain_blocks_rationale == 'users' && user_signed_in?)
end
def new_user
User.new.tap do |user|
user.build_account
user.build_invite_request
end
end
def set_pack
use_pack 'public'
end
def set_instance_presenter
@instance_presenter = InstancePresenter.new
end
def set_body_classes
@hide_navbar = true
end
def set_expires_in
expires_in 0, public: true
end
end

@ -1,12 +0,0 @@
# frozen_string_literal: true
class AccountFollowController < ApplicationController
include AccountControllerConcern
before_action :authenticate_user!
def create
FollowService.new.call(current_user.account, @account, with_rate_limit: true)
redirect_to account_path(@account)
end
end

@ -1,12 +0,0 @@
# frozen_string_literal: true
class AccountUnfollowController < ApplicationController
include AccountControllerConcern
before_action :authenticate_user!
def create
UnfollowService.new.call(current_user.account, @account)
redirect_to account_path(@account)
end
end

@ -9,7 +9,6 @@ class AccountsController < ApplicationController
before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? }
before_action :set_cache_headers
before_action :set_body_classes
skip_around_action :set_locale, if: -> { [:json, :rss].include?(request.format&.to_sym) }
skip_before_action :require_functional!, unless: :whitelist_mode?
@ -17,26 +16,9 @@ class AccountsController < ApplicationController
def show
respond_to do |format|
format.html do
use_pack 'public'
expires_in 0, public: true unless user_signed_in?
@pinned_statuses = []
@endorsed_accounts = @account.endorsed_accounts.to_a.sample(4)
@featured_hashtags = @account.featured_tags.order(statuses_count: :desc)
if current_account && @account.blocking?(current_account)
@statuses = []
return
end
@pinned_statuses = cached_filtered_status_pins if show_pinned_statuses?
@statuses = cached_filtered_status_page
@rss_url = rss_url
unless @statuses.empty?
@older_url = older_url if @statuses.last.id > filtered_statuses.last.id
@newer_url = newer_url if @statuses.first.id < filtered_statuses.first.id
end
@rss_url = rss_url
end
format.rss do
@ -56,18 +38,6 @@ class AccountsController < ApplicationController
private
def set_body_classes
@body_classes = 'with-modals'
end
def show_pinned_statuses?
[replies_requested?, media_requested?, tag_requested?, params[:max_id].present?, params[:min_id].present?].none?
end
def filtered_pinned_statuses
@account.pinned_statuses.not_local_only.where(visibility: [:public, :unlisted])
end
def filtered_statuses
default_statuses.tap do |statuses|
statuses.merge!(hashtag_scope) if tag_requested?
@ -114,26 +84,6 @@ class AccountsController < ApplicationController
end
end
def older_url
pagination_url(max_id: @statuses.last.id)
end
def newer_url
pagination_url(min_id: @statuses.first.id)
end
def pagination_url(max_id: nil, min_id: nil)
if tag_requested?
short_account_tag_url(@account, params[:tag], max_id: max_id, min_id: min_id)
elsif media_requested?
short_account_media_url(@account, max_id: max_id, min_id: min_id)
elsif replies_requested?
short_account_with_replies_url(@account, max_id: max_id, min_id: min_id)
else
short_account_url(@account, max_id: max_id, min_id: min_id)
end
end
def media_requested?
request.path.split('.').first.end_with?('/media') && !tag_requested?
end
@ -146,13 +96,6 @@ class AccountsController < ApplicationController
request.path.split('.').first.end_with?(Addressable::URI.parse("/tagged/#{params[:tag]}").normalize)
end
def cached_filtered_status_pins
cache_collection(
filtered_pinned_statuses,
Status
)
end
def cached_filtered_status_page
cache_collection_paginated_by_id(
filtered_statuses,

@ -21,7 +21,7 @@ module Admin
account_action.save!
if account_action.with_report?
redirect_to admin_reports_path
redirect_to admin_reports_path, notice: I18n.t('admin.reports.processed_msg', id: params[:report_id])
else
redirect_to admin_account_path(@account.id)
end

@ -55,12 +55,14 @@ module Admin
def approve
authorize @account.user, :approve?
@account.user.approve!
log_action :approve, @account.user
redirect_to admin_accounts_path(status: 'pending'), notice: I18n.t('admin.accounts.approved_msg', username: @account.acct)
end
def reject
authorize @account.user, :reject?
DeleteAccountService.new.call(@account, reserve_email: false, reserve_username: false)
log_action :reject, @account.user
redirect_to admin_accounts_path(status: 'pending'), notice: I18n.t('admin.accounts.rejected_msg', username: @account.acct)
end

@ -17,7 +17,7 @@ module Admin
@user.resend_confirmation_instructions
log_action :confirm, @user
log_action :resend, @user
flash[:notice] = I18n.t('admin.accounts.resend_confirmation.success')
redirect_to admin_accounts_path

@ -34,7 +34,7 @@ module Admin
@form = Form::CustomEmojiBatch.new(form_custom_emoji_batch_params.merge(current_account: current_account, action: action_from_button))
@form.save
rescue ActionController::ParameterMissing
flash[:alert] = I18n.t('admin.accounts.no_account_selected')
flash[:alert] = I18n.t('admin.custom_emojis.no_emoji_selected')
rescue Mastodon::NotPermittedError
flash[:alert] = I18n.t('admin.custom_emojis.not_permitted')
rescue ActiveRecord::RecordInvalid => e

@ -9,9 +9,9 @@ module Admin
@form = Form::DomainBlockBatch.new(form_domain_block_batch_params.merge(current_account: current_account, action: action_from_button))
@form.save
rescue ActionController::ParameterMissing
flash[:alert] = I18n.t('admin.email_domain_blocks.no_domain_block_selected')
flash[:alert] = I18n.t('admin.domain_blocks.no_domain_block_selected')
rescue Mastodon::NotPermittedError
flash[:alert] = I18n.t('admin.domain_blocks.created_msg')
flash[:alert] = I18n.t('admin.domain_blocks.not_permitted')
else
redirect_to admin_instances_path(limited: '1'), notice: I18n.t('admin.domain_blocks.created_msg')
end
@ -55,12 +55,8 @@ module Admin
def update
authorize :domain_block, :update?
@domain_block.update(update_params)
severity_changed = @domain_block.severity_changed?
if @domain_block.save
DomainBlockWorker.perform_async(@domain_block.id, severity_changed)
if @domain_block.update(update_params)
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')
else

@ -19,7 +19,7 @@ module Admin
rescue ActionController::ParameterMissing
flash[:alert] = I18n.t('admin.email_domain_blocks.no_email_domain_block_selected')
rescue Mastodon::NotPermittedError
flash[:alert] = I18n.t('admin.custom_emojis.not_permitted')
flash[:alert] = I18n.t('admin.email_domain_blocks.not_permitted')
ensure
redirect_to admin_email_domain_blocks_path
end

@ -8,8 +8,6 @@ module Admin
before_action :set_dummy_import!, only: [:new]
ROWS_PROCESSING_LIMIT = 20_000
def new
authorize :domain_allow, :create?
end
@ -23,9 +21,9 @@ module Admin
authorize :domain_allow, :create?
begin
@import = Admin::Import.new(import_params)
parse_import_data!(export_headers)
return render :new unless @import.validate
@data.take(ROWS_PROCESSING_LIMIT).each do |row|
@import.csv_rows.each do |row|
domain = row['#domain'].strip
next if DomainAllow.allowed?(domain)

@ -8,8 +8,6 @@ module Admin
before_action :set_dummy_import!, only: [:new]
ROWS_PROCESSING_LIMIT = 20_000
def new
authorize :domain_block, :create?
end
@ -23,24 +21,32 @@ module Admin
authorize :domain_block, :create?
@import = Admin::Import.new(import_params)
parse_import_data!(export_headers)
return render :new unless @import.validate
@global_private_comment = I18n.t('admin.export_domain_blocks.import.private_comment_template', source: @import.data_file_name, date: I18n.l(Time.now.utc))
@form = Form::DomainBlockBatch.new
@domain_blocks = @data.take(ROWS_PROCESSING_LIMIT).filter_map do |row|
@domain_blocks = @import.csv_rows.filter_map do |row|
domain = row['#domain'].strip
next if DomainBlock.rule_for(domain).present?
domain_block = DomainBlock.new(domain: domain,
severity: row['#severity'].strip,
reject_media: row['#reject_media'].strip,
reject_reports: row['#reject_reports'].strip,
severity: row.fetch('#severity', :suspend),
reject_media: row.fetch('#reject_media', false),
reject_reports: row.fetch('#reject_reports', false),
private_comment: @global_private_comment,
public_comment: row['#public_comment']&.strip,
obfuscate: row['#obfuscate'].strip)
public_comment: row['#public_comment'],
obfuscate: row.fetch('#obfuscate', false))
if domain_block.invalid?
flash.now[:alert] = I18n.t('admin.export_domain_blocks.invalid_domain_block', error: domain_block.errors.full_messages.join(', '))
next
end
domain_block if domain_block.valid?
domain_block
rescue ArgumentError => e
flash.now[:alert] = I18n.t('admin.export_domain_blocks.invalid_domain_block', error: e.message)
next
end
@warning_domains = Instance.where(domain: @domain_blocks.map(&:domain)).where('EXISTS (SELECT 1 FROM follows JOIN accounts ON follows.account_id = accounts.id OR follows.target_account_id = accounts.id WHERE accounts.domain = instances.domain)').pluck(:domain)
@ -62,7 +68,7 @@ module Admin
def export_data
CSV.generate(headers: export_headers, write_headers: true) do |content|
DomainBlock.with_user_facing_limitations.each do |instance|
DomainBlock.with_limitations.each do |instance|
content << [instance.domain, instance.severity, instance.reject_media, instance.reject_reports, instance.public_comment, instance.obfuscate]
end
end

@ -49,7 +49,7 @@ module Admin
private
def set_instance
@instance = Instance.find(params[:id])
@instance = Instance.find(TagManager.instance.normalize_domain(params[:id]&.strip))
end
def set_instances
@ -57,7 +57,7 @@ module Admin
end
def preload_delivery_failures!
warning_domains_map = DeliveryFailureTracker.warning_domains_map
warning_domains_map = DeliveryFailureTracker.warning_domains_map(@instances.map(&:domain))
@instances.each do |instance|
instance.failure_days = warning_domains_map[instance.domain]

@ -5,7 +5,7 @@ module Admin
def index
authorize :ip_block, :index?
@ip_blocks = IpBlock.page(params[:page])
@ip_blocks = IpBlock.order(ip: :asc).page(params[:page])
@form = Form::IpBlockBatch.new
end

@ -3,7 +3,7 @@
module Admin
class RelaysController < BaseController
before_action :set_relay, except: [:index, :new, :create]
before_action :require_signatures_enabled!, only: [:new, :create, :enable]
before_action :warn_signatures_not_enabled!, only: [:new, :create, :enable]
def index
authorize :relay, :update?
@ -56,8 +56,8 @@ module Admin
params.require(:relay).permit(:inbox_url)
end
def require_signatures_enabled!
redirect_to admin_relays_path, alert: I18n.t('admin.relays.signatures_not_enabled') if authorized_fetch_mode?
def warn_signatures_not_enabled!
flash.now[:error] = I18n.t('admin.relays.signatures_not_enabled') if authorized_fetch_mode?
end
end
end

@ -3,6 +3,11 @@
class Admin::Reports::ActionsController < Admin::BaseController
before_action :set_report
def preview
authorize @report, :show?
@moderation_action = action_from_button
end
def create
authorize @report, :show?
@ -13,7 +18,8 @@ class Admin::Reports::ActionsController < Admin::BaseController
status_ids: @report.status_ids,
current_account: current_account,
report_id: @report.id,
send_email_notification: !@report.spam?
send_email_notification: !@report.spam?,
text: params[:text]
)
status_batch_action.save!
@ -23,13 +29,16 @@ class Admin::Reports::ActionsController < Admin::BaseController
report_id: @report.id,
target_account: @report.target_account,
current_account: current_account,
send_email_notification: !@report.spam?
send_email_notification: !@report.spam?,
text: params[:text]
)
account_action.save!
else
return redirect_to admin_report_path(@report), alert: I18n.t('admin.reports.unknown_action_msg', action: action_from_button)
end
redirect_to admin_reports_path
redirect_to admin_reports_path, notice: I18n.t('admin.reports.processed_msg', id: @report.id)
end
private
@ -47,6 +56,8 @@ class Admin::Reports::ActionsController < Admin::BaseController
'silence'
elsif params[:suspend]
'suspend'
elsif params[:moderation_action]
params[:moderation_action]
end
end
end

@ -0,0 +1,9 @@
# frozen_string_literal: true
class Admin::Settings::AboutController < Admin::SettingsController
private
def after_update_redirect_path
admin_settings_about_path
end
end

@ -0,0 +1,9 @@
# frozen_string_literal: true
class Admin::Settings::AppearanceController < Admin::SettingsController
private
def after_update_redirect_path
admin_settings_appearance_path
end
end

@ -0,0 +1,9 @@
# frozen_string_literal: true
class Admin::Settings::BrandingController < Admin::SettingsController
private
def after_update_redirect_path
admin_settings_branding_path
end
end

@ -0,0 +1,9 @@
# frozen_string_literal: true
class Admin::Settings::ContentRetentionController < Admin::SettingsController
private
def after_update_redirect_path
admin_settings_content_retention_path
end
end

@ -0,0 +1,9 @@
# frozen_string_literal: true
class Admin::Settings::DiscoveryController < Admin::SettingsController
private
def after_update_redirect_path
admin_settings_discovery_path
end
end

@ -0,0 +1,9 @@
# frozen_string_literal: true
class Admin::Settings::OtherController < Admin::SettingsController
private
def after_update_redirect_path
admin_settings_other_path
end
end

@ -0,0 +1,9 @@
# frozen_string_literal: true
class Admin::Settings::RegistrationsController < Admin::SettingsController
private
def after_update_redirect_path
admin_settings_registrations_path
end
end

@ -2,7 +2,7 @@
module Admin
class SettingsController < BaseController
def edit
def show
authorize :settings, :show?
@admin_settings = Form::AdminSettings.new
@ -15,14 +15,18 @@ module Admin
if @admin_settings.save
flash[:notice] = I18n.t('generic.changes_saved_msg')
redirect_to edit_admin_settings_path
redirect_to after_update_redirect_path
else
render :edit
render :show
end
end
private
def after_update_redirect_path
raise NotImplementedError
end
def settings_params
params.require(:form_admin_settings).permit(*Form::AdminSettings::KEYS)
end

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

@ -3,18 +3,23 @@
module Admin
class StatusesController < BaseController
before_action :set_account
before_action :set_statuses
before_action :set_statuses, except: :show
before_action :set_status, only: :show
PER_PAGE = 20
def index
authorize :status, :index?
authorize [:admin, :status], :index?
@status_batch_action = Admin::StatusBatchAction.new
end
def show
authorize [:admin, @status], :show?
end
def batch
authorize :status, :index?
authorize [:admin, :status], :index?
@status_batch_action = Admin::StatusBatchAction.new(admin_status_batch_action_params.merge(current_account: current_account, report_id: params[:report_id], type: action_from_button))
@status_batch_action.save!
@ -32,6 +37,7 @@ module Admin
def after_create_redirect_path
report_id = @status_batch_action&.report_id || params[:report_id]
if report_id.present?
admin_report_path(report_id)
else
@ -43,6 +49,10 @@ module Admin
@account = Account.find(params[:account_id])
end
def set_status
@status = @account.statuses.find(params[:id])
end
def set_statuses
@statuses = Admin::StatusFilter.new(@account, filter_params).results.preload(:application, :preloadable_poll, :media_attachments, active_mentions: :account, reblog: [:account, :application, :preloadable_poll, :media_attachments, active_mentions: :account]).page(params[:page]).per(PER_PAGE)
end

@ -14,7 +14,7 @@ class Admin::Trends::Links::PreviewCardProvidersController < Admin::BaseControll
@form = Trends::PreviewCardProviderBatch.new(trends_preview_card_provider_batch_params.merge(current_account: current_account, action: action_from_button))
@form.save
rescue ActionController::ParameterMissing
flash[:alert] = I18n.t('admin.accounts.no_account_selected')
flash[:alert] = I18n.t('admin.trends.links.publishers.no_publisher_selected')
ensure
redirect_to admin_trends_links_preview_card_providers_path(filter_params)
end

@ -4,6 +4,7 @@ class Admin::Trends::LinksController < Admin::BaseController
def index
authorize :preview_card, :review?
@locales = PreviewCardTrend.pluck('distinct language')
@preview_cards = filtered_preview_cards.page(params[:page])
@form = Trends::PreviewCardBatch.new
end
@ -14,7 +15,7 @@ class Admin::Trends::LinksController < Admin::BaseController
@form = Trends::PreviewCardBatch.new(trends_preview_card_batch_params.merge(current_account: current_account, action: action_from_button))
@form.save
rescue ActionController::ParameterMissing
flash[:alert] = I18n.t('admin.accounts.no_account_selected')
flash[:alert] = I18n.t('admin.trends.links.no_link_selected')
ensure
redirect_to admin_trends_links_path(filter_params)
end

@ -2,19 +2,20 @@
class Admin::Trends::StatusesController < Admin::BaseController
def index
authorize :status, :review?
authorize [:admin, :status], :review?
@locales = StatusTrend.pluck('distinct language')
@statuses = filtered_statuses.page(params[:page])
@form = Trends::StatusBatch.new
end
def batch
authorize :status, :review?
authorize [:admin, :status], :review?
@form = Trends::StatusBatch.new(trends_status_batch_params.merge(current_account: current_account, action: action_from_button))
@form.save
rescue ActionController::ParameterMissing
flash[:alert] = I18n.t('admin.accounts.no_account_selected')
flash[:alert] = I18n.t('admin.trends.statuses.no_status_selected')
ensure
redirect_to admin_trends_statuses_path(filter_params)
end

@ -14,7 +14,7 @@ class Admin::Trends::TagsController < Admin::BaseController
@form = Trends::TagBatch.new(trends_tag_batch_params.merge(current_account: current_account, action: action_from_button))
@form.save
rescue ActionController::ParameterMissing
flash[:alert] = I18n.t('admin.accounts.no_account_selected')
flash[:alert] = I18n.t('admin.trends.tags.no_tag_selected')
ensure
redirect_to admin_trends_tags_path(filter_params)
end

@ -16,6 +16,26 @@ class Api::BaseController < ApplicationController
protect_from_forgery with: :null_session
content_security_policy do |p|
# Set every directive that does not have a fallback
p.default_src :none
p.frame_ancestors :none
p.form_action :none
# Disable every directive with a fallback to cut on response size
p.base_uri false
p.font_src false
p.img_src false
p.style_src false
p.media_src false
p.frame_src false
p.manifest_src false
p.connect_src false
p.script_src false
p.child_src false
p.worker_src false
end
rescue_from ActiveRecord::RecordInvalid, Mastodon::ValidationError do |e|
render json: { error: e.to_s }, status: 422
end
@ -24,6 +44,10 @@ class Api::BaseController < ApplicationController
render json: { error: 'Duplicate record' }, status: 422
end
rescue_from Date::Error do
render json: { error: 'Invalid date supplied' }, status: 422
end
rescue_from ActiveRecord::RecordNotFound do
render json: { error: 'Record not found' }, status: 404
end
@ -53,7 +77,7 @@ class Api::BaseController < ApplicationController
render json: { error: I18n.t('errors.429') }, status: 429
end
rescue_from ActionController::ParameterMissing do |e|
rescue_from ActionController::ParameterMissing, Mastodon::InvalidParameterError do |e|
render json: { error: e.to_s }, status: 400
end
@ -125,11 +149,11 @@ class Api::BaseController < ApplicationController
end
def set_cache_headers
response.headers['Cache-Control'] = 'no-cache, no-store, max-age=0, must-revalidate'
response.headers['Cache-Control'] = 'private, no-store'
end
def disallow_unauthenticated_api_access?
authorized_fetch_mode?
ENV['DISALLOW_UNAUTHENTICATED_API_ACCESS'] == 'true' || Rails.configuration.x.whitelist_mode
end
private

@ -21,7 +21,17 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController
private
def account_params
params.permit(:display_name, :note, :avatar, :header, :locked, :bot, :discoverable, fields_attributes: [:name, :value])
params.permit(
:display_name,
:note,
:avatar,
:header,
:locked,
:bot,
:discoverable,
:hide_collections,
fields_attributes: [:name, :value]
)
end
def user_settings_params

@ -8,7 +8,7 @@ class Api::V1::Accounts::PinsController < Api::BaseController
before_action :set_account
def create
AccountPin.create!(account: current_account, target_account: @account)
AccountPin.find_or_create_by!(account: current_account, target_account: @account)
render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships_presenter
end

@ -54,20 +54,21 @@ class Api::V1::Admin::AccountsController < Api::BaseController
def approve
authorize @account.user, :approve?
@account.user.approve!
log_action :approve, @account.user
render json: @account, serializer: REST::Admin::AccountSerializer
end
def reject
authorize @account.user, :reject?
DeleteAccountService.new.call(@account, reserve_email: false, reserve_username: false)
render json: @account, serializer: REST::Admin::AccountSerializer
log_action :reject, @account.user
render_empty
end
def destroy
authorize @account, :destroy?
json = render_to_body json: @account, serializer: REST::Admin::AccountSerializer
Admin::AccountDeletionWorker.perform_async(@account.id)
render json: json
render_empty
end
def unsensitive

@ -35,20 +35,16 @@ class Api::V1::Admin::CanonicalEmailBlocksController < Api::BaseController
def create
authorize :canonical_email_block, :create?
@canonical_email_block = CanonicalEmailBlock.create!(resource_params)
log_action :create, @canonical_email_block
render json: @canonical_email_block, serializer: REST::Admin::CanonicalEmailBlockSerializer
end
def destroy
authorize @canonical_email_block, :destroy?
@canonical_email_block.destroy!
log_action :destroy, @canonical_email_block
render json: @canonical_email_block, serializer: REST::Admin::CanonicalEmailBlockSerializer
render_empty
end
private

@ -43,7 +43,7 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController
authorize @domain_allow, :destroy?
UnallowDomainService.new.call(@domain_allow)
log_action :destroy, @domain_allow
render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer
render_empty
end
private

@ -40,11 +40,8 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
def update
authorize @domain_block, :update?
@domain_block.update(domain_block_params)
severity_changed = @domain_block.severity_changed?
@domain_block.save!
DomainBlockWorker.perform_async(@domain_block.id, severity_changed)
@domain_block.update!(domain_block_params)
DomainBlockWorker.perform_async(@domain_block.id, @domain_block.severity_previously_changed?)
log_action :update, @domain_block
render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer
end
@ -53,7 +50,7 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
authorize @domain_block, :destroy?
UnblockDomainService.new.call(@domain_block)
log_action :destroy, @domain_block
render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer
render_empty
end
private

@ -39,11 +39,9 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController
def destroy
authorize @email_domain_block, :destroy?
@email_domain_block.destroy!
log_action :destroy, @email_domain_block
render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer
render_empty
end
private

@ -20,10 +20,8 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController
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
@ -39,20 +37,16 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController
def update
authorize @ip_block, :update?
@ip_block.update(resource_params)
log_action :update, @ip_block
render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
end
def destroy
authorize @ip_block, :destroy?
@ip_block.destroy!
log_action :destroy, @ip_block
render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
render_empty
end
private

@ -3,6 +3,14 @@
class Api::V1::Admin::Trends::TagsController < Api::V1::Trends::TagsController
before_action -> { authorize_if_got_token! :'admin:read' }
def index
if current_user&.can?(:manage_taxonomies)
render json: @tags, each_serializer: REST::Admin::TagSerializer
else
super
end
end
private
def enabled?

@ -13,12 +13,12 @@ class Api::V1::FeaturedTagsController < Api::BaseController
end
def create
@featured_tag = current_account.featured_tags.create!(featured_tag_params)
render json: @featured_tag, serializer: REST::FeaturedTagSerializer
featured_tag = CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name])
render json: featured_tag, serializer: REST::FeaturedTagSerializer
end
def destroy
@featured_tag.destroy!
RemoveFeaturedTagWorker.perform_async(current_account.id, @featured_tag.id)
render_empty
end

@ -13,7 +13,7 @@ class Api::V1::FiltersController < Api::BaseController
def create
ApplicationRecord.transaction do
filter_category = current_account.custom_filters.create!(resource_params)
filter_category = current_account.custom_filters.create!(filter_params)
@filter = filter_category.keywords.create!(keyword_params)
end
@ -56,7 +56,7 @@ class Api::V1::FiltersController < Api::BaseController
end
def filter_params
resource_params.slice(:expires_in, :irreversible, :context)
resource_params.slice(:phrase, :expires_in, :irreversible, :context)
end
def keyword_params

@ -3,11 +3,11 @@
class Api::V1::FollowedTagsController < Api::BaseController
TAGS_LIMIT = 100
before_action -> { doorkeeper_authorize! :follow, :read, :'read:follows' }, except: :show
before_action -> { doorkeeper_authorize! :follow, :read, :'read:follows' }
before_action :require_user!
before_action :set_results
after_action :insert_pagination_headers, only: :show
after_action :insert_pagination_headers
def index
render json: @results.map(&:tag), each_serializer: REST::TagSerializer, relationships: TagRelationshipsPresenter.new(@results.map(&:tag), current_user&.account_id)
@ -43,7 +43,7 @@ class Api::V1::FollowedTagsController < Api::BaseController
end
def records_continue?
@results.size == limit_param(TAG_LIMIT)
@results.size == limit_param(TAGS_LIMIT)
end
def pagination_params(core_params)

@ -0,0 +1,23 @@
# frozen_string_literal: true
class Api::V1::Instances::DomainBlocksController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
before_action :require_enabled_api!
before_action :set_domain_blocks
def index
expires_in 3.minutes, public: true
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
private
def require_enabled_api!
head 404 unless Setting.show_domain_blocks == 'all' || (Setting.show_domain_blocks == 'users' && user_signed_in?)
end
def set_domain_blocks
@domain_blocks = DomainBlock.with_user_facing_limitations.by_severity
end
end

@ -0,0 +1,18 @@
# frozen_string_literal: true
class Api::V1::Instances::ExtendedDescriptionsController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
before_action :set_extended_description
def show
expires_in 3.minutes, public: true
render json: @extended_description, serializer: REST::ExtendedDescriptionSerializer
end
private
def set_extended_description
@extended_description = ExtendedDescription.current
end
end

@ -0,0 +1,18 @@
# frozen_string_literal: true
class Api::V1::Instances::PrivacyPoliciesController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
before_action :set_privacy_policy
def show
expires_in 1.day, public: true
render json: @privacy_policy, serializer: REST::PrivacyPolicySerializer
end
private
def set_privacy_policy
@privacy_policy = PrivacyPolicy.current
end
end

@ -7,6 +7,10 @@ class Api::V1::ListsController < Api::BaseController
before_action :require_user!
before_action :set_list, except: [:index, :create]
rescue_from ArgumentError do |e|
render json: { error: e.to_s }, status: 422
end
def index
@lists = List.where(account: current_account).all
render json: @lists, each_serializer: REST::ListSerializer

@ -6,7 +6,7 @@ class Api::V1::NotificationsController < Api::BaseController
before_action :require_user!
after_action :insert_pagination_headers, only: :index
DEFAULT_NOTIFICATIONS_LIMIT = 15
DEFAULT_NOTIFICATIONS_LIMIT = 40
def index
@notifications = load_notifications
@ -40,7 +40,7 @@ class Api::V1::NotificationsController < Api::BaseController
private
def load_notifications
notifications = browserable_account_notifications.includes(from_account: :account_stat).to_a_paginated_by_id(
notifications = browserable_account_notifications.includes(from_account: [:account_stat, :user]).to_a_paginated_by_id(
limit_param(DEFAULT_NOTIFICATIONS_LIMIT),
params_slice(:max_id, :since_id, :min_id)
)

@ -18,14 +18,29 @@ class Api::V1::StatusesController < Api::BaseController
# than this anyway
CONTEXT_LIMIT = 4_096
# This remains expensive and we don't want to show everything to logged-out users
ANCESTORS_LIMIT = 40
DESCENDANTS_LIMIT = 60
DESCENDANTS_DEPTH_LIMIT = 20
def show
@status = cache_collection([@status], Status).first
render json: @status, serializer: REST::StatusSerializer
end
def context
ancestors_results = @status.in_reply_to_id.nil? ? [] : @status.ancestors(CONTEXT_LIMIT, current_account)
descendants_results = @status.descendants(CONTEXT_LIMIT, current_account)
ancestors_limit = CONTEXT_LIMIT
descendants_limit = CONTEXT_LIMIT
descendants_depth_limit = nil
if current_account.nil?
ancestors_limit = ANCESTORS_LIMIT
descendants_limit = DESCENDANTS_LIMIT
descendants_depth_limit = DESCENDANTS_DEPTH_LIMIT
end
ancestors_results = @status.in_reply_to_id.nil? ? [] : @status.ancestors(ancestors_limit, current_account)
descendants_results = @status.descendants(descendants_limit, current_account, descendants_depth_limit)
loaded_ancestors = cache_collection(ancestors_results, Status)
loaded_descendants = cache_collection(descendants_results, Status)
@ -65,7 +80,9 @@ class Api::V1::StatusesController < Api::BaseController
current_account.id,
text: status_params[:status],
media_ids: status_params[:media_ids],
media_attributes: status_params[:media_attributes],
sensitive: status_params[:sensitive],
language: status_params[:language],
spoiler_text: status_params[:spoiler_text],
poll: status_params[:poll],
content_type: status_params[:content_type]
@ -78,7 +95,8 @@ class Api::V1::StatusesController < Api::BaseController
@status = Status.where(account: current_account).find(params[:id])
authorize @status, :destroy?
@status.discard
@status.discard_with_reblogs
StatusPin.find_by(status: @status)&.destroy
@status.account.statuses_count = @status.account.statuses_count - 1
json = render_to_body json: @status, serializer: REST::StatusSerializer, source_requested: true
@ -114,6 +132,12 @@ class Api::V1::StatusesController < Api::BaseController
:scheduled_at,
:content_type,
media_ids: [],
media_attributes: [
:id,
:thumbnail,
:description,
:focus,
],
poll: [
:multiple,
:hide_totals,

@ -2,10 +2,10 @@
class Api::V1::StreamingController < Api::BaseController
def index
if Rails.configuration.x.streaming_api_base_url != request.host
redirect_to streaming_api_url, status: 301
else
if Rails.configuration.x.streaming_api_base_url == request.host
not_found
else
redirect_to streaming_api_url, status: 301
end
end

@ -12,7 +12,7 @@ class Api::V1::TagsController < Api::BaseController
end
def follow
TagFollow.create!(tag: @tag, account: current_account, rate_limit: true)
TagFollow.create_with(rate_limit: true).find_or_create_by!(tag: @tag, account: current_account)
render json: @tag, serializer: REST::TagSerializer
end
@ -24,7 +24,7 @@ class Api::V1::TagsController < Api::BaseController
private
def set_or_create_tag
return not_found unless /\A(#{Tag::HASHTAG_NAME_RE})\z/.match?(params[:id])
return not_found unless Tag::HASHTAG_NAME_RE.match?(params[:id])
@tag = Tag.find_normalized(params[:id]) || Tag.new(name: Tag.normalize(params[:id]), display_name: params[:id])
end
end

@ -28,7 +28,9 @@ class Api::V1::Trends::LinksController < Api::BaseController
end
def links_from_trends
Trends.links.query.allowed.in_locale(content_locale)
scope = Trends.links.query.allowed.in_locale(content_locale)
scope = scope.filtered_for(current_account) if user_signed_in?
scope
end
def insert_pagination_headers

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

@ -33,7 +33,7 @@ class Api::V2::Admin::AccountsController < Api::V1::Admin::AccountsController
end
def filter_params
params.permit(*FILTER_PARAMS)
params.permit(*FILTER_PARAMS, role_ids: [])
end
def pagination_params(core_params)

@ -1,6 +1,6 @@
# frozen_string_literal: true
class Api::V1::Filters::KeywordsController < Api::BaseController
class Api::V2::Filters::KeywordsController < Api::BaseController
before_action -> { doorkeeper_authorize! :read, :'read:filters' }, only: [:index, :show]
before_action -> { doorkeeper_authorize! :write, :'write:filters' }, except: [:index, :show]
before_action :require_user!

@ -1,6 +1,6 @@
# frozen_string_literal: true
class Api::V1::Filters::StatusesController < Api::BaseController
class Api::V2::Filters::StatusesController < Api::BaseController
before_action -> { doorkeeper_authorize! :read, :'read:filters' }, only: [:index, :show]
before_action -> { doorkeeper_authorize! :write, :'write:filters' }, except: [:index, :show]
before_action :require_user!

@ -3,7 +3,7 @@
class Api::V2::MediaController < Api::V1::MediaController
def create
@media_attachment = current_account.media_attachments.create!({ delay_processing: true }.merge(media_attachment_params))
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: 202
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

@ -5,8 +5,8 @@ class Api::V2::SearchController < Api::BaseController
RESULTS_LIMIT = (ENV['MAX_SEARCH_RESULTS'] || 20).to_i
before_action -> { doorkeeper_authorize! :read, :'read:search' }
before_action :require_user!
before_action -> { authorize_if_got_token! :read, :'read:search' }
before_action :validate_search_params!
def index
@search = Search.new(search_results)
@ -19,6 +19,16 @@ class Api::V2::SearchController < Api::BaseController
private
def validate_search_params!
params.require(:q)
return if user_signed_in?
return render json: { error: 'Search queries pagination is not supported without authentication' }, status: 401 if params[:offset].present?
render json: { error: 'Search queries that resolve remote resources are not supported without authentication' }, status: 401 if truthy_param?(:resolve)
end
def search_results
SearchService.new.call(
params[:q],

@ -18,7 +18,8 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController
)
sign_in_and_redirect @user, event: :authentication
set_flash_message(:notice, :success, kind: Devise.omniauth_configs[provider].strategy.display_name.capitalize) if is_navigational_format?
label = Devise.omniauth_configs[provider]&.strategy&.display_name.presence || I18n.t("auth.providers.#{provider}", default: provider.to_s.chomp('_oauth2').capitalize)
set_flash_message(:notice, :success, kind: label) if is_navigational_format?
else
session["devise.#{provider}_data"] = request.env['omniauth.auth']
redirect_to new_user_registration_url

@ -11,6 +11,8 @@ class Auth::PasswordsController < Devise::PasswordsController
super do |resource|
if resource.errors.empty?
resource.session_activations.destroy_all
resource.revoke_access!
end
end
end

@ -15,6 +15,8 @@ class Auth::RegistrationsController < Devise::RegistrationsController
before_action :set_body_classes, only: [:new, :create, :edit, :update]
before_action :require_not_suspended!, only: [:update]
before_action :set_cache_headers, only: [:edit, :update]
before_action :set_rules, only: :new
before_action :require_rules_acceptance!, only: :new
before_action :set_registration_form_time, only: :new
skip_before_action :require_functional!, only: [:edit, :update]
@ -55,8 +57,8 @@ class Auth::RegistrationsController < Devise::RegistrationsController
end
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up) do |u|
u.permit({ account_attributes: [:username], invite_request_attributes: [:text] }, :email, :password, :password_confirmation, :invite_code, :agreement, :website, :confirm_password)
devise_parameter_sanitizer.permit(:sign_up) do |user_params|
user_params.permit({ account_attributes: [:username, :display_name], invite_request_attributes: [:text] }, :email, :password, :password_confirmation, :invite_code, :agreement, :website, :confirm_password)
end
end
@ -143,7 +145,20 @@ class Auth::RegistrationsController < Devise::RegistrationsController
forbidden if current_account.suspended?
end
def set_rules
@rules = Rule.ordered
end
def require_rules_acceptance!
return if @rules.empty? || (session[:accept_token].present? && params[:accept] == session[:accept_token])
@accept_token = session[:accept_token] = SecureRandom.hex
@invite_code = invite_code
set_locale { render :rules }
end
def set_cache_headers
response.headers['Cache-Control'] = 'no-cache, no-store, max-age=0, must-revalidate'
response.headers['Cache-Control'] = 'private, no-store'
end
end

@ -15,6 +15,10 @@ class Auth::SessionsController < Devise::SessionsController
before_action :set_instance_presenter, only: [:new]
before_action :set_body_classes
content_security_policy only: :new do |p|
p.form_action(false)
end
def check_suspicious!
user = find_user
@login_is_suspicious = suspicious_sign_in?(user) unless user.nil?

@ -3,13 +3,12 @@
module AccountControllerConcern
extend ActiveSupport::Concern
include WebAppControllerConcern
include AccountOwnedConcern
FOLLOW_PER_PAGE = 12
included do
layout 'public'
before_action :set_instance_presenter
before_action :set_link_headers, if: -> { request.format.nil? || request.format == :html }
end

@ -26,14 +26,4 @@ module AdminExportControllerConcern
def import_params
params.require(:admin_import).permit(:data)
end
def import_data
Paperclip.io_adapters.for(@import.data).read
end
def parse_import_data!(default_headers)
data = CSV.parse(import_data, headers: true)
data = CSV.parse(import_data, headers: default_headers) unless data.headers&.first&.strip&.include?(default_headers[0])
@data = data.reject(&:blank?)
end
end

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

Loading…
Cancel
Save