Compare commits

..

630 Commits

Author SHA1 Message Date
Claire
efab184980 Change mastodon-streaming nightly builds to be tagged as latest
glitch-soc does not have releases, so it tags nightly container builds as latest; but we were not doing the same thing for the new `mastodon-streaming` container
2023-12-26 10:42:14 +01:00
Claire
ea6c187fca Fix media attachment order of remote posts (#28469) 2023-12-22 18:45:36 +01:00
Claire
72ff0d30d8 Fix submitting post from content warning field not working properly (#2538) 2023-12-22 17:23:15 +01:00
Claire
e676b57831 Merge pull request #2537 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to b7bdcd4f39
2023-12-22 17:22:39 +01:00
Claire
f96e713522 Fix trying to push mastodon-streaming docker images to upstream's ghcr repo (#2541) 2023-12-22 13:01:08 +01:00
Claire
5bd61a3fc5 Don't try to push images to Mastodon's dockerhub (#2540) 2023-12-22 12:13:53 +01:00
Claire
d4c87ff5b8 Disable use of missing native arm64 docker builder for the streaming image (#2539) 2023-12-22 08:45:37 +01:00
Claire
92aa6e2ec9 Merge commit 'b7bdcd4f395aaa1e85930940975439d10b570f40' into glitch-soc/merge-upstream 2023-12-21 19:42:13 +01:00
Claire
30ee7339d3 Merge commit '7d9b209fe84b00eff348ea9d54905cbfffa79788' into glitch-soc/merge-upstream
Conflicts:
- `app/models/form/admin_settings.rb`:
  Upstream changed code style change, including on a line modified by glitch-soc.
  Kept glitch-soc's line but with the code style change applied.
2023-12-21 19:31:12 +01:00
Claire
f2eb5038a6 Fix linting warning in glitch-soc-only migration 2023-12-21 19:25:12 +01:00
Claire
f5b7307890 Merge commit 'f99e05710ea06cf10bbd3fb64ae8c00b095cb455' into glitch-soc/merge-upstream
Conflicts:
- `.rubocop_todo.yml`:
  Took upstream's version of the conflicting lines.
2023-12-21 19:24:10 +01:00
Claire
7a0be26367 [Glitch] Fix empty column explainer getting cropped under certain conditions
Port 3f1ec16377 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-21 19:08:43 +01:00
Claire
a60b9acf3c Merge commit 'b2f915b31ae884e3893e93a99da4e2b8d7e9ef7b' into glitch-soc/merge-upstream 2023-12-21 19:04:20 +01:00
Claire
dac2b56932 Merge pull request #2535 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 4a7395d989
2023-12-21 19:03:29 +01:00
Claire
6e56f95285 Merge commit '4a7395d989e40c3bd4ef18173aa5ea850c8ddcdd' into glitch-soc/merge-upstream
Conflicts:
- `README.md`:
  Upstream modified its README, we have a completely different one.
  Kept our README file.
2023-12-21 18:17:17 +01:00
Claire
d668b85dcd Merge pull request #2532 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 0b4a3a0437
2023-12-21 18:13:49 +01:00
Claire
9ac13bbc9c Fix glitch-only HAML linting issue 2023-12-20 22:27:29 +01:00
Claire
b2961dad2b Fix lint issue in glitch-soc-only file 2023-12-20 22:25:23 +01:00
Matt Jankowski
01e77a0f34 [Glitch] Enable the eslint react/no-unknown-property rule
Port ee83d5c760 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-20 22:24:40 +01:00
Claire
077e0c6812 Merge commit '0b4a3a04378ce43f2f314b9446b5053f6b374c6d' into glitch-soc/merge-upstream
Conflicts:
- `Gemfile.lock`:
  Conflict caused by the `json` gem thing once again.
  Updated as upstream did, but keeping the most recent `json` version.
- `spec/helpers/application_helper_spec.rb`:
  Upstream refactored a bunch of specs, including one place that differs
  because of glitch-soc's theming system.
  Refactored as upstream did, adapting it for glitch-soc's theming system.
2023-12-20 22:16:50 +01:00
Claire
75580360cd Merge commit '272592d16d40e804ec325ef3b5e6de9bbad5f2dd' into glitch-soc/merge-upstream
Conflicts:
- `.rubocop_todo.yml`:
  Upstream fixed a bunch lint issues, and changed the `Max` parameter of the
  `Metrics/AbcSize` cop.
  Glitch-soc has different code and slightly higher `AbcSize` complexity,
  modified the `.rubocop_todo.yml` file accordingly.
- `app/policies/status_policy.rb`:
  Upstream changed `account.suspended?` to `account.unavailable?` to prepare
  for delete flags. Glitch-soc has additional local-only conditions.
  Ported upstream's refactor while keeping glitch-soc's additional condition.
- `app/serializers/initial_state_serializer.rb`:
  Upstream refactored a bunch of stuff while glitch-soc has more settings.
  Refactored as upstream did while keeping glitch-soc's settings.
2023-12-20 22:05:31 +01:00
Claire
5de551002d [Glitch] Fix onboarding step descriptions being truncated on narrow screens
Port b20af17a2c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-20 21:59:58 +01:00
Claire
8a5f2442cc Merge commit '0530ce5e9575c09464847412f43852f438b0494e' into glitch-soc/merge-upstream 2023-12-20 21:58:18 +01:00
Claire
b41af99673 [Glitch] Change dismissed banners to be stored server-side
Port 7faa27e17d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-20 20:40:47 +01:00
Claire
b8209c3b96 Merge commit '85662a5a57531af5402a6777d0b1089e78c56815' into glitch-soc/merge-upstream
Conflicts:
- `config/initializers/content_security_policy.rb`:
  Upstream reworked the CSP, we kept our version for now.
- `spec/requests/content_security_policy_spec.rb`:
  Upstream reworked the CSP, we kept our version for now.
2023-12-20 20:10:45 +01:00
Claire
f425a1e637 Merge pull request #2519 from ClearlyClaire/glitch-soc/immutable-record-redux
Use Immutable `Record` for accounts in Redux state
2023-12-20 20:06:49 +01:00
Renaud Chaput
a4a728b01d [Glitch] Fix the loading bar with the new Redux actions
Port 8b1eeb2f90 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-20 19:49:44 +01:00
Claire
93c71e2c7c [Glitch] Fix notification sounds
Port f3864db409 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-20 19:49:44 +01:00
Claire
70652e49eb [Glitch] Fix error when muting users from Web UI
Port 32319187ee to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-20 19:49:44 +01:00
Renaud Chaput
e94fecdcc8 [Glitch] Fix the notificationsUpdate call
Port f476d9dab2 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-20 19:49:44 +01:00
Renaud Chaput
79678cf841 [Glitch] Fixes website not loading for unlogged users
Port 6712bf86cd to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-20 19:49:44 +01:00
Renaud Chaput
7fe5623a27 [Glitch] Use Immutable Record for accounts in Redux state
Port 3bf2a7296e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-20 19:49:44 +01:00
Renaud Chaput
3b7caa00e2 [Glitch] Add Typescript types for some API objects
Port 57f592fed5 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-20 19:49:44 +01:00
Claire
a3a58c041e Merge pull request #2527 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 8ebc94dd22
2023-12-20 19:48:45 +01:00
Essem
b7cb17fecf Fix the poll option add button attempting to submit a form (#2530) 2023-12-20 08:24:28 +01:00
Claire
9bfb699c4c [Glitch] Change search popout to not list unusable search options when logged out
Port 6e70819840 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-19 21:25:55 +01:00
Claire
b135b6ba8f Merge commit '8ebc94dd22a18c28c4c9763b909e92e6ba64e242' into glitch-soc/merge-upstream
Conflicts:
- `app/views/admin/custom_emojis/new.html.haml`:
  Conflict caused by glitch-soc having a different file size limit constant
  name.
  Updated like upstream did while keeping glitch-soc's constant name.
2023-12-19 21:24:01 +01:00
Claire
6c00d5b0c4 Fix test failure caused by glitch-soc changes 2023-12-19 21:14:39 +01:00
Claire
2e786e13cb Merge commit '973597c6f1e25b16c592e5573304319aeaa375e1' into glitch-soc/merge-upstream
Conflicts:
- `app/validators/status_pin_validator.rb`:
  Upstream refactored that file, while glitch-soc had configurable limits for
  pinned statuses.
  Updated the code with upstream's refactor, while keeping glitch-soc's
  configurability.
2023-12-19 20:51:37 +01:00
Claire
d288a6162a Merge commit '12c22ee5e71ae0220ea10199e4d10deb4140ec44' into glitch-soc/merge-upstream 2023-12-19 20:40:05 +01:00
Claire
7db68e2dca [Glitch] Fix upper border radius of onboarding columns
Port 0a6ec048a8 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-19 20:26:22 +01:00
Claire
b24f676cf1 Merge commit '1526e54ac6f08431c8c833f20b4be8882355967c' into glitch-soc/merge-upstream 2023-12-19 20:24:57 +01:00
Jeong Arm
94c4c7f330 [Glitch] Fix open status on media modal
Port 922f086253 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-19 20:17:45 +01:00
Claire
3ad92e8d0d Merge commit 'bd575a1dd69d87ca0f69873f7badf28d38e8b9ed' into glitch-soc/merge-upstream 2023-12-19 20:17:23 +01:00
Claire
8afd313807 Merge commit '15b2d7eec59c745b418debf63907d8bd08c4a730' into glitch-soc/merge-upstream
Conflicts:
- `package.json`:
  Upstream split some dependencies, including `express`, to
  `streaming/package.json`.
  However, glitch-soc had extra dependencies textually close to `express`.
  Kept the extra dependencies and moved `express` to streaming.
- `yarn.lock`:
  Upstream split some dependencies, including `express`, to
  `streaming/package.json`.
  However, glitch-soc had extra dependencies textually close to `express`.
  Kept the extra dependencies and moved `express` to streaming.
2023-12-19 20:06:32 +01:00
Claire
cd1e3ac2c7 Merge commit '7e1a77ea51e6dc4aecbf678f8928aa96698fa072' into glitch-soc/merge-upstream
Conflicts:
- `app/controllers/api/v1/timelines/public_controller.rb`:
  Upstream refactored this code, the conflict was because of an extra supported
  parameter, `allow_local_only`.
  Updated the controller to follow upstream's refactor, and moved the extra
  parameter definition accordingly.
2023-12-19 19:51:40 +01:00
Claire
4fdbffc57c Merge pull request #2522 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to b2c5b20ef2
2023-12-19 18:20:34 +01:00
renovate[bot]
b7bdcd4f39 Update dependency @material-symbols/svg-600 to v0.14.3 (#28276)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-19 10:56:23 +00:00
Matt Jankowski
c28976d89e Handle negative offset param in api/v2/search (#28282) 2023-12-19 10:55:39 +00:00
Renaud Chaput
7b1d390734 Fixes dropdown target without a buttonRef (edit history) (#28427) 2023-12-19 10:47:53 +00:00
github-actions[bot]
fa987db738 New Crowdin Translations (automated) (#28423)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-12-19 09:40:37 +00:00
Claire
3598c2e1db Revert "Feature - Prevents multiple audio/video attachments from being played at the same time (#24717)" (#28251) 2023-12-19 05:08:52 +00:00
Renaud Chaput
8b1eeb2f90 Fix the loading bar with the new Redux actions (#28422) 2023-12-18 23:19:27 +00:00
Matt Jankowski
7cfc078198 Fix rails mailer preview not honouring locale (#28418) 2023-12-18 21:49:17 +00:00
Brian Holley
4259f4a4aa [Glitch] Fix "Hide these posts from home" list setting not refreshing when switching lists
Port 4aa06cbdbf to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-18 20:59:33 +01:00
Claire
a111fd7a0b Merge commit 'b2c5b20ef27edd948eca8d6bd2014b7a5efaec11' into glitch-soc/merge-upstream 2023-12-18 20:47:27 +01:00
pajowu
6261db2a26 [Glitch] Fix modal content not being selectable
Port ed79713f3a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-18 19:15:57 +01:00
Claire
d6ad9d351e Merge commit 'a36b59be8ad7656b7ceab9751c9ec5b3563e3a30' into glitch-soc/merge-upstream 2023-12-18 19:10:43 +01:00
Claire
60eb57ce1b Fix HAML listing issue 2023-12-18 19:07:15 +01:00
Claire
f5de9fe99a [Glitch] Allow viewing and severing relationships with suspended accounts
Port c451bbe249 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-18 18:49:48 +01:00
Aleks Xhuvani
dee28c3fbf [Glitch] Do not try to update an undefined video element
Port 7840c6b75b to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-18 18:42:30 +01:00
Aleks Xhuvani
372c455218 [Glitch] Add volume saving/reuse to video player
Port 58f01a5c9a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-18 18:42:07 +01:00
Claire
b474cbbd28 Merge commit '7840c6b75b61e64d89d7fd9f291277fb177e513f' into glitch-soc/merge-upstream
Conflicts:
- `app/controllers/api/v1/accounts/relationships_controller.rb`:
  We differed by listing suspended users when requesting relationships.
  Updated to upstream's code.
2023-12-18 18:40:58 +01:00
Claire
46ddaffd40 Merge commit 'b87bfb8c96c8491f1228e0258d05119f3420db05' into glitch-soc/merge-upstream 2023-12-18 18:34:25 +01:00
Claire
cd2ee0ec5f Merge commit '757d7c73c0ca3750ac9e74a7e962f71c535a7bd0' into glitch-soc/merge-upstream
Conflicts:
- `README.md`:
  Upstream updated its README, we have a completely different one.
  Kept ours.
- `yarn.lock`:
  Upstream changed from yarn 1 to yarn 4, but we had some different
  dependencies.
  Updated to yarn 4 and re-added our dependencies.
2023-12-18 18:25:33 +01:00
Claire
bc33be0342 Merge commit '23e32a4b3031d1da8b911e0145d61b4dd47c4f96' into glitch-soc/merge-upstream
Conflicts:
- `Gemfile.lock`:
  Conflict because we had updated the `json-ld` gem to fix a yanked dependency.
  Kept our version of `json-ld` while updating other dependencies.
2023-12-18 18:07:24 +01:00
Matt Jankowski
476d1237d4 Typo fix in json ld helper spec (#28417) 2023-12-18 16:47:22 +00:00
renovate[bot]
ab1201c9d9 Update dependency regenerator-runtime to v0.14.1 (#28393)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-18 16:21:54 +00:00
Claire
7d9b209fe8 Fix call to inefficient delete_matched cache method in domain blocks (#28374) 2023-12-18 16:14:43 +00:00
Yamagishi Kazutoshi
f4b9c2ba40 Group artifact actions (#28413) 2023-12-18 14:02:19 +00:00
Matt Jankowski
af366f65ee Add spec coverage for models/form/custom_emoji_batch class (#28388) 2023-12-18 12:41:37 +00:00
renovate[bot]
b2ca71f733 Update dependency rubocop-performance to v1.20.0 (#28395)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-18 12:41:22 +00:00
Matt Jankowski
0b42cf2979 Opt out of Rails/NegateInclude cop (#28370) 2023-12-18 12:21:45 +00:00
Claire
3d3fa75c81 Reduce composer differences with upstream and simplify code (#2518) 2023-12-18 13:20:08 +01:00
Claire
18856371be Merge pull request #2520 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to f476d9dab2
2023-12-18 13:19:45 +01:00
Matt Jankowski
1820bad646 Fix Performance/StringIdentifierArgument cop (#28399) 2023-12-18 10:26:09 +00:00
Matt Jankowski
2bd8d343cf Fix Style/SoleNestedConditional and Style/IfInsideElse cops, regenerate haml todo (#28384) 2023-12-18 10:06:42 +00:00
Matt Jankowski
8e9e7d57d8 Opt out of Rails/UnusedIgnoredColumns cop (#28385) 2023-12-18 09:58:53 +00:00
Matt Jankowski
0e5b8fc46b Fix Style/RedundantReturn cop (#28391) 2023-12-18 09:50:51 +00:00
Matt Jankowski
89d468ada7 Fix Style/StderrPuts cop (#28389) 2023-12-18 09:36:08 +00:00
Matt Jankowski
e56fb9e489 Fix Style/SymbolProc cop (#28386) 2023-12-18 09:32:02 +00:00
renovate[bot]
fc4eaa779a Update dependency cssnano to v6.0.2 (#28382)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-18 09:31:21 +00:00
renovate[bot]
fad7dca0e4 Update dependency prom-client to v15.1.0 (#28394)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-18 09:29:41 +00:00
renovate[bot]
43f637c130 Update dependency rubocop-rails to v2.23.0 (#28396)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-18 09:28:19 +00:00
renovate[bot]
287384b3bb Update DefinitelyTyped types (non-major) (#28407)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-18 09:28:10 +00:00
renovate[bot]
d099cf67c0 Update eslint (non-major) (#28408)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-18 09:28:06 +00:00
github-actions[bot]
f99e05710e New Crowdin Translations (automated) (#28373)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-12-18 08:25:21 +00:00
Claire
33dd5d8179 Fix Ruby lint issues 2023-12-17 23:17:55 +01:00
Claire
4113fbf6e8 Merge commit 'f476d9dab2f5cca6ae44b95961df6b6557d66dab' into glitch-soc/merge-upstream
Conflicts:
- `lib/sanitize_ext/sanitize_config.rb`:
  Upstream enforced new code style rules, where we had different code.
  Applied the new code style rules.
2023-12-17 23:04:16 +01:00
Claire
c8fe36c349 Merge pull request #2517 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 3bf896c973
2023-12-17 20:06:18 +01:00
mogaminsk
cc265f760e [Glitch] Fix inserting emojis from emoji picker fails with TypeError
Port ac8e4ed38d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-17 18:03:22 +01:00
Claire
bb4fa0c374 [Glitch] Rewrite AutosuggestTextarea as Functional Component
Port 9c8891b39a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-17 17:59:33 +01:00
Renaud Chaput
e22c3cd768 [Glitch] Improve Babel configuration and automatically load polyfills
Port 0e3401bc1c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-17 17:50:31 +01:00
Claire
ddf3ad9541 Merge commit '3bf896c973404261f4f7b25c25ea22adb1a85e7d' into glitch-soc/main
Conflicts:
- `package.json`:
  Upstream removed a dependency textually close to a glitch-only dependency.
  Updated as upstream while keeping our dependency.
2023-12-17 17:43:30 +01:00
Claire
537b88330d Merge pull request #2514 from ClearlyClaire/glitch-soc/main
Merge upstream changes up to a916251d8a
2023-12-17 17:42:22 +01:00
Claire
f62bafc7a1 Fix HAML linting issue 2023-12-17 16:37:11 +01:00
Claire
1474318691 Merge commit 'a916251d8a8fffcaeb6be80eacf50138a53650dc' into glitch-soc/main
Conflicts:
- `app/models/trends/statuses.rb`:
  Upstream fixed a bug in the trending post condition.
  Glitch-soc's condition is different because we potentially allow CWed content
  to trend.
  Ported upstream's fix while keeping glitch-soc's change.
- `config/initializers/content_security_policy.rb`:
  Kept our version for now, we will switch to upstream later down the road.
2023-12-17 15:32:29 +01:00
Matt Jankowski
b1dec09d20 Fix Style/InverseMethods cop (#28377) 2023-12-15 15:52:00 +00:00
Matt Jankowski
3e336fe706 Opt out of Rails/SkipsModelValidations cop in db/migrate (#28371) 2023-12-15 14:38:12 +00:00
Matt Jankowski
e5717c9bc6 Fix Style/Lambda cop (#28378) 2023-12-15 14:34:24 +00:00
Matt Jankowski
1ee8d1e50e Assign a proc to Rack::Request.ip_filter instead of patching method (#28380) 2023-12-15 14:33:56 +00:00
Matt Jankowski
db897eaa5a Unwind map on single-item array in spec/services/delete_account_service spec (#28358) 2023-12-14 14:07:54 +00:00
Matt Jankowski
e17faedffb Move default meta options from InitialStateSerializer to private method (AbcSize reduction) (#28355) 2023-12-14 14:04:55 +00:00
Matt Jankowski
1c3b5f4a78 Fix reference to non-existent var in CLI maintenance command (#28363) 2023-12-14 14:02:33 +00:00
Matt Jankowski
ef9797a395 Un-nest contexts in settings/2fa/webauthn spec (#28359) 2023-12-14 10:46:43 +00:00
Matt Jankowski
adbfd40a1b Convert api/v1/directories controller spec to request spec (#28356) 2023-12-14 10:38:06 +00:00
Matt Jankowski
cd9ebf5f0f Update stylelint to version 16.0.2 (#28354) 2023-12-14 10:35:54 +00:00
Matt Jankowski
28e1a7a394 Improve spec coverage for models/announcement class (#28350) 2023-12-14 10:29:10 +00:00
renovate[bot]
d791b47058 Update dependency chewy to v7.4.0 (#28349)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-14 10:26:28 +00:00
Matt Jankowski
8a3d8c6c14 Remove the stub_stdout wrapper around CLI specs (#28340) 2023-12-13 10:14:19 +00:00
renovate[bot]
3a59365e40 Update dependency test-prof to v1.3.1 (#28342)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-13 09:52:43 +00:00
renovate[bot]
49150e2f1d Update dependency ws to v8.15.1 (#28343)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-13 09:52:40 +00:00
github-actions[bot]
b2f915b31a New Crowdin Translations (automated) (#28344)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-12-13 09:52:37 +00:00
renovate[bot]
aae4b5644f Update dependency haml_lint to v0.52.0 (#28345)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-13 09:52:33 +00:00
Claire
dcc24db793 Fix N+1s because of association preloaders not actually getting called (#28339) 2023-12-13 07:47:32 +00:00
Claire
b7248485b1 Merge pull request #2477 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 2e6bf60f15
2023-12-12 19:45:18 +01:00
Claire
3f1ec16377 Fix empty column explainer getting cropped under certain conditions (#28337) 2023-12-12 14:31:37 +00:00
renovate[bot]
db3220ff77 Update dependency rubocop to v1.59.0 (#28320)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-12 14:18:30 +00:00
Claire
f37c93f3d7 Change cookie rotator to use SHA1 digest for new cookies (#27392) 2023-12-12 12:01:08 +00:00
Claire
393e851649 Change Rails' cache format to 7.0 (#27393) 2023-12-12 12:00:23 +00:00
Matt Jankowski
4a7395d989 Add migrator_version method to CLI maintenance script (#28323) 2023-12-12 11:56:39 +00:00
renovate[bot]
ca51e41239 Update dependency stylelint-config-standard-scss to v12 (#28333)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-12 11:45:39 +00:00
github-actions[bot]
14e64bc880 New Crowdin Translations (automated) (#28334)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-12-12 11:45:10 +00:00
renovate[bot]
8078520c76 Update dependency oj to v3.16.3 (#28332)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-12 10:40:54 +00:00
Claire
89a496b42f Fix status edits not always being streamed to mentioned users (#28324) 2023-12-12 10:39:21 +00:00
Claire
a8a5c6514f Fix LinkCrawlWorker error when encountering empty OEmbed response (#28268) 2023-12-12 08:29:46 +00:00
Matt Jankowski
2c6369918c Fix Style/RedundantArgument cop (#28321) 2023-12-11 14:58:29 +00:00
renovate[bot]
9dfa940636 Update babel monorepo to v7.23.6 (#28319)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-11 14:58:10 +00:00
Claire
f3864db409 Fix notification sounds (#28316) 2023-12-11 14:23:30 +00:00
Matt Jankowski
b5a1013ae3 Combine CLI::... spec example subjects (#28285) 2023-12-11 10:23:45 +00:00
renovate[bot]
4ad2e87c48 Update dependency debug to v1.9.0 (#28315)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-11 08:45:30 +00:00
github-actions[bot]
79a81da69c New Crowdin Translations (automated) (#28291)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-12-11 08:22:52 +00:00
Matt Jankowski
0e4233de9d Controller spec to request spec: api/v2/suggestions (#28297) 2023-12-11 08:13:57 +00:00
Matt Jankowski
0c64092500 Controller spec to request spec: api/v1/accounts/search (#28299) 2023-12-11 08:13:28 +00:00
Matt Jankowski
253393f3a8 Only attempt to remove indexes that exist in CLI::Maintenance script (#28286) 2023-12-11 08:04:45 +00:00
renovate[bot]
f5d6143aa1 Update dependency addressable to v2.8.6 (#28296)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-11 08:01:17 +00:00
Matt Jankowski
16ede59d0a Controller spec to request spec: api/v1/featured_tags/suggestions (#28298) 2023-12-11 08:00:41 +00:00
Matt Jankowski
809506bdd4 Controller spec to request spec: api/v1/accounts/pins (#28300) 2023-12-11 07:59:40 +00:00
Matt Jankowski
94cc707ab3 Controller spec to request spec: api/v1/accounts/notes (#28301) 2023-12-11 07:58:48 +00:00
Matt Jankowski
e544b6df42 Controller spec to request spec: api/v1/accounts/lookup (#28302) 2023-12-11 07:57:33 +00:00
Matt Jankowski
a968898dc7 Controller spec to request spec: api/v1/accounts/lists (#28303) 2023-12-11 07:56:47 +00:00
Matt Jankowski
8f94502e7d Controller spec to request spec: api/v1/accounts/identify_proofs (#28304) 2023-12-11 07:56:13 +00:00
Matt Jankowski
78347d2556 Controller spec to request spec: api/v1/accounts/familiar_followers (#28305) 2023-12-11 07:55:45 +00:00
Matt Jankowski
11d2bd9716 Fix intermittent failure from unspecified order in api/v1/accounts/relationships spec (#28306) 2023-12-11 07:55:07 +00:00
renovate[bot]
b82fc8a2ca Update dependency ws to v8.15.0 (#28308)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-11 07:54:22 +00:00
renovate[bot]
a117155728 Update DefinitelyTyped types (non-major) (#28310)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-11 07:54:01 +00:00
renovate[bot]
7ddd937330 Update dependency prettier to v3.1.1 (#28311)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-11 07:53:32 +00:00
renovate[bot]
d0e7999a90 Update dependency typescript to v5.3.3 (#28312)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-11 07:53:13 +00:00
renovate[bot]
bd88883b6e Update eslint (non-major) (#28313)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-11 07:52:53 +00:00
Michael Stanclift
afc8550b63 Change preview card deletes to be done using batch method (#28183) 2023-12-11 07:49:10 +00:00
Claire
9f92b05bd2 Merge commit '2e6bf60f1549e5c1f1cfea2d614f978bea17b8a2' into glitch-soc/merge-upstream
Conflicts:
- `README.md`:
  Upstream has updated their README but we have a completely different one.
  Kept our version of `README.md`
2023-12-10 18:05:02 +01:00
Claire
98f50429d5 Merge pull request #2511 from ClearlyClaire/glitch-soc/cleanup-2
Further reduce code differences with upstream
2023-12-10 18:03:04 +01:00
Claire
df5c64fe57 Further reduce differences with upstream 2023-12-09 21:19:43 +01:00
Claire
cc1d68ace8 [Glitch] Show announcements in reverse chronological order
Port f1f0400adc and 8e2530ea16 to glitch-soc

Co-Authored-By: Darius Kazemi <darius.kazemi@gmail.com>
2023-12-09 21:19:43 +01:00
Claire
4b2ddaf106 Further reduce differences with upstream 2023-12-09 21:19:43 +01:00
Claire
408d4710ed Further reduce differences with upstream 2023-12-09 20:58:50 +01:00
Claire
a27abb4802 Further reduce code differences with upstream (#2509) 2023-12-09 20:29:23 +01:00
Claire
1ddf2012ee Fix status avatar size discrepancies (#2510)
Follow-up to #2508
2023-12-09 20:29:15 +01:00
Claire
b2647bc3f2 [Glitch] Update Avatar, AvatarComposite, and AvatarOverlay components (#2508)
Various ports including 8dfe5179ee,
d1de7fb7fa and
9f8d34620b.

Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
Co-authored-by: fusagiko / takayamaki <24884114+takayamaki@users.noreply.github.com>
2023-12-09 18:33:42 +01:00
Matt Jankowski
490e4969a1 Correct section naming in maintenance cli script (#28279) 2023-12-08 13:54:48 +00:00
Matt Jankowski
a3cbb4b2f1 Add spec for CLI::Search#deploy command (#28272) 2023-12-08 13:54:20 +00:00
github-actions[bot]
ca1b7efb06 New Crowdin Translations (automated) (#28275)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-12-08 09:52:32 +00:00
JakePaustian
f37a1535ef Update CONTRIBUTING.md with additional requirements for API additions (#28274)
Co-authored-by: Jake Paustian <jake1500@iastate.edu>
2023-12-08 09:52:28 +00:00
Matt Jankowski
8de86eabbf Add spec for CLI::Domains#crawl command (#28271) 2023-12-08 09:51:57 +00:00
Matt Jankowski
7e514688b3 Convert api/v2/search controller spec to request spec (#28269) 2023-12-08 09:27:33 +00:00
Matt Jankowski
8d8ae05a18 Add spec coverage for CLI::Media#lookup command (#28266) 2023-12-07 15:27:41 +00:00
Matt Jankowski
3918dc68c7 Use composite primary key for PreviewCardsStatus model (#28208) 2023-12-07 14:49:05 +00:00
Michael Stanclift
da3d8aff79 Error handling for attachment batch delete process (#28184)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-12-07 14:40:44 +00:00
Matt Jankowski
ad34d33bfd Formalize some patterns in cli specs (#28255) 2023-12-07 13:49:14 +00:00
Ken Greeff
5d97a897c8 Add note to install libidn on MacOS (#28259) 2023-12-07 12:45:55 +00:00
Matt Jankowski
0b4a3a0437 Remove remaining without_partial_double_verification usage (#28127) 2023-12-07 12:15:50 +00:00
Matt Jankowski
1d7b8234c9 Remove useless reorder(nil) call in tootctl statuses (#28141) 2023-12-07 09:41:00 +00:00
github-actions[bot]
e0dacf6b4c New Crowdin Translations (automated) (#28264)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-12-07 09:38:44 +00:00
Claire
7593465c23 Fix error when processing link preview with an array as inLanguage (#28252) 2023-12-07 09:05:08 +00:00
renovate[bot]
336d6260ba Update dependency chewy to v7.3.5 (#28253)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 08:44:45 +00:00
renovate[bot]
54db2006a9 Update dependency sass-loader to v10.5.0 (#28254)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 08:44:16 +00:00
renovate[bot]
5e8a38e254 Update dependency oj to v3.16.2 (#28263)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-07 08:42:47 +00:00
Claire
658ad7a6ca Fix flaky tests related to file creation (#28248) 2023-12-06 22:22:25 +00:00
Matt Jankowski
af66d3d836 Use following and followers scopes in CLI (#28154) 2023-12-06 14:15:54 +00:00
renovate[bot]
23b16aaab0 Update dependency selenium-webdriver to v4.16.0 (#28246)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-06 13:50:59 +00:00
Matt Jankowski
ee83d5c760 Enable the eslint react/no-unknown-property rule (#28217) 2023-12-06 13:42:12 +00:00
Claire
c0e562916c Fix glitch-soc being uninstallable because of yanked dependency (#2507) 2023-12-06 13:32:27 +01:00
Matt Jankowski
42afd30324 Replace Sprockets with Propshaft (#28239) 2023-12-06 10:19:24 +00:00
github-actions[bot]
954169966b New Crowdin Translations (automated) (#28245)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-12-06 08:52:55 +00:00
Matt Jankowski
0e8ba19113 Add spec coverage for CLI::Emoji class (#28182) 2023-12-06 08:52:30 +00:00
Matt Jankowski
ed7b5c091b Remove double subject call in services/delete_account_service spec (#28212) 2023-12-06 08:51:09 +00:00
Matt Jankowski
be6bb1a10d Remove double subject call in services/suspend_account_service spec (#28213) 2023-12-06 08:45:19 +00:00
Matt Jankowski
5517df61de Remove double subject call in services/activitypub/process_account_service spec (#28214) 2023-12-06 08:44:51 +00:00
Matt Jankowski
faffd81976 Remove double subject call in services/unsuspend_account_service spec (#28215) 2023-12-06 08:44:07 +00:00
renovate[bot]
3b710b96cf Update dependency irb to v1.10.1 (#28240)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-06 08:33:27 +00:00
renovate[bot]
996c13a24d Update dependency core-js to v3.34.0 (#28241)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-06 08:33:11 +00:00
github-actions[bot]
4238ec844d New Crowdin Translations (automated) (#28120)
Co-authored-by: GitHub Actions <noreply@github.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-12-05 16:07:53 +00:00
Jonathan de Jong
d0a5ebf914 Fix error when encountering malformed Tag objects from Kbin (#28235) 2023-12-05 13:59:15 +00:00
renovate[bot]
2d2e23c68d Update dependency brakeman to v6.1.0 (#28231)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-05 12:59:31 +00:00
renovate[bot]
f944a767c4 Update dependency json-ld to v3.3.1 (#28229)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-05 12:57:16 +00:00
Matt Jankowski
89a8e6e622 Remove 2x double subject call in models/form/account_batch spec (#28209) 2023-12-04 15:41:43 +00:00
Matt Jankowski
71e5a16eba Remove triple subject call in api/v1/lists spec (#28210) 2023-12-04 15:28:19 +00:00
Matt Jankowski
cca19f5fbb Use the Admin::ActionLog fabricator in admin/action_logs spec (#28194) 2023-12-04 12:56:28 +00:00
Claire
9fcf5d4192 [Glitch] Fix emoji picker button scrolling with textarea content in single-column view (#2501)
Port bbea052935 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-04 13:30:27 +01:00
Essem
a46b6af1d6 Fix constant redirects to onboarding page (#2505) 2023-12-04 13:30:17 +01:00
Matt Jankowski
b3b009e6aa Add spec coverage for CLI::EmailDomainBlocks commands (#28181) 2023-12-04 09:44:54 +00:00
renovate[bot]
829457212e Update dependency rubocop to v1.58.0 (#28170)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-04 09:38:49 +00:00
Claire
a2bcfeb887 Fix Style/HashEachMethods cop in HAML files (#28178) 2023-12-04 09:09:43 +00:00
Matt Jankowski
9603198982 Add spec coverage for CLI::Domains#purge command (#28179) 2023-12-04 09:09:05 +00:00
Matt Jankowski
1bf2230fd1 Add spec coverage for CLI::Upgrade#storage_schema command (#28180) 2023-12-04 09:08:47 +00:00
Matt Jankowski
19ad51253d Prevent triple-subject run in admin/domain_blocks spec (#28195) 2023-12-04 09:02:40 +00:00
renovate[bot]
154fb95e44 Update dependency postcss to v8.4.32 (#28185)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-04 08:52:53 +00:00
Matt Jankowski
d848d8d87c Add helper methods for domains allow and export blocks files (#28196) 2023-12-04 08:52:21 +00:00
renovate[bot]
3ec263bf15 Update dependency irb to v1.10.0 (#28198)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-04 08:51:08 +00:00
renovate[bot]
b4fef6c26f Update DefinitelyTyped types (non-major) (#28199)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-04 08:50:43 +00:00
renovate[bot]
0ca7a50e96 Update devDependencies (non-major) (#28200)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-04 08:50:28 +00:00
Claire
23ee393fdd Merge pull request #2499 from ClearlyClaire/glitch-soc/port-toasts
Port upstream's toast changes
2023-12-03 20:57:42 +01:00
Claire
13902903d3 Merge pull request #2497 from ClearlyClaire/glitch-soc/ports/account_notes-typescript
Port upstream's TypeScript refactor of account_notes
2023-12-03 20:57:23 +01:00
Eugen Rochko
cede2f533c [Glitch] Fix toast saying "published" instead of "saved" after editing post in web UI
Port 71641766f2 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 19:39:08 +01:00
Renaud Chaput
9ac73a1fbf [Glitch] Change eslint config to autofix missing comma and indentation in JS files
Partial port of 774e1189d2 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 16:44:40 +01:00
Christian Schmidt
ea004108b8 [Glitch] Make notification respect reduce-motion
Port 6d0767558a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 16:38:41 +01:00
Stanislas Signoud
811b8b200e [Glitch] Use invariant colors on notification toasts
Port ca955ada0b to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 16:38:41 +01:00
Eugen Rochko
3bbe39f233 [Glitch] Add toast with option to open post after publishing in web UI
Port a7ca33ad96 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 16:38:41 +01:00
Claire
046cb408b7 [Glitch] Fix front-end bug when processing relationship-related account actions
Port 287520453c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 13:19:10 +01:00
Renaud Chaput
c3a0d5aca3 [Glitch] Fix Redux types
Port 0712cc2b99 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 13:19:10 +01:00
Renaud Chaput
6fb5fafd28 [Glitch] Convert actions/account_notes into Typescript
Port bd06c13204 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 13:19:10 +01:00
Claire
c82d4cfb71 Merge pull request #2493 from ClearlyClaire/glitch-soc/even-more-painful-backports
Port onboarding changes from upstream
2023-12-03 13:18:50 +01:00
Claire
ee58f680e8 [Glitch] Fix autocomplete suggestions being cut off in compose form
Port 6833732852 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
Claire
6269a5336f [Glitch] Change composer highlight border size to be more noticeable
Port aa4c9730f6 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
Claire
204fe83fcc [Glitch] Fix compose textarea scroll behavior
Port 746979f75d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
Claire
a8f6a5b40f Update translation strings 2023-12-03 11:23:12 +01:00
Claire
786b42e2b5 Fix SCSS and JS linting issues 2023-12-03 11:23:12 +01:00
Claire
a0943b8f6d Remove glitch-soc's old onboarding modal 2023-12-03 11:23:12 +01:00
Renaud Chaput
6dc812dd51 [Glitch] Upgrade to react-router v5 in onboarding code
Port 1b70d7ed7c to glitch-soc

Co-authored-by: Claire <claire.github-309c@sitedethib.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
Eugen Rochko
06e819537b [Glitch] Change labels and styles on the onboarding screen in web UI
Port a985d587e1 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
Eugen Rochko
d5bad93460 [Glitch] Change "Follow 7 people" to "Find at least 7 people to follow" in web UI
Port 4a5464f360 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
たいち ひ
c2c25122e8 [Glitch] Rewrite <Check /> as FC
Port 6fdbee240c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
Renaud Chaput
a1667ba796 [Glitch] Upgrade react-intl usage in onboarding code
Port remaining of 44cd88adc4 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
Claire
e47c582283 Fix import order 2023-12-03 11:23:12 +01:00
Renaud Chaput
ba4c8a9b41 [Glitch] Use the new JSX transform in onboarding code
Port the remaining of 8f66126b10 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
Steven Munn
6e4497ab2d [Glitch] Fix spelling of "Lets" on the onboarding page after clicking the confirmation email
Port 52d36f0f98 to glitch-soc

Co-authored-by: Steven Munn <stevenjmunn@gmail.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
Emelia Smith
1cb8df655b [Glitch] Fix Onboarding Errors
Port b8a2430642 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
Renaud Chaput
0b1556b7f7 [Glitch] Enforce stricter rules for Typescript files
Port c8181eb0a4 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
Eugen Rochko
542f2fb1e0 [Glitch] Add default post text to onboarding flow in web UI
Port 8979b70975 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
Eugen Rochko
e0b401e295 [Glitch] Add more tips to onboarding flow in web UI
Port c35e3cb6ac to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
Eugen Rochko
4537b4b961 [Glitch] Add new onboarding flow to web UI
Port 0461f83320 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-03 11:23:12 +01:00
Claire
335cfab32f Change account note design to match upstream's (#2495) 2023-12-03 11:22:38 +01:00
Claire
046141d2a4 Fix i18n unused check being tripped by no in YAML files (#2496) 2023-12-03 11:21:34 +01:00
Claire
f1241b4a3a Fix translation string for status.favourite not having been changed everywhere (#2494) 2023-12-03 09:51:29 +01:00
Claire
edd96ce786 Merge pull request #2492 from ClearlyClaire/glitch-soc/painful-backports
Port account rows design change from upstream
2023-12-03 09:51:07 +01:00
Claire
21df2a68ac Hide followers count when hidden by instance or user 2023-12-02 17:38:07 +01:00
Claire
09062d393f Fix more styling issues 2023-12-02 17:38:07 +01:00
Claire
28d4f3ab70 Fix account component styling wrt. upstream 2023-12-02 17:05:54 +01:00
fusagiko / takayamaki
dc917cfcdf [Glitch] Fix account.jsx imports (#25541)
Port remaining part of e0d230fb37,
20e85c0e83 and
9d45a444f9 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-02 16:59:40 +01:00
Eugen Rochko
17372a3ec0 [Glitch] Change labels and styles on the onboarding screen in Account component
Partial port of a985d587e1 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-02 16:59:40 +01:00
Eugen Rochko
0421b44f22 [Glitch] Change follow button in account row to be more obvious in web UI (#24956)
Port 0ddc895282 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-02 16:59:40 +01:00
Claire
f1691eca55 [Glitch] Fix overflow behavior of account rows
Port 5fae2de454 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-02 16:59:40 +01:00
Renaud Chaput
98a7b95058 [Glitch] Update inconsistent defaultMessage in Account component
Partial port of e58c36d308 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-02 16:59:40 +01:00
Claire
b047b981cd [Glitch] Enforce import order with ESLint
Port d27216dc46 to glitch-soc
2023-12-02 16:59:40 +01:00
Emelia Smith
b8cbaba283 [Glitch] Split EmptyAccount out of Account component
Partial port of b8a2430642 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-02 16:59:40 +01:00
Claire
32ec0d2472 [Glitch] Fix verified badge in account lists potentially including rel="me" links
Port 55e7c08a83 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-02 16:59:40 +01:00
Renaud Chaput
e7ec2641a0 [Glitch] Fix linting issues with VerifiedBadge component
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-02 16:59:40 +01:00
fusagiko / takayamaki
2efb22f455 [Glitch] Rewrite VerifiedBadge component as function component
Port 140aa6b054 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-02 16:59:40 +01:00
Eugen Rochko
00db5c8ade [Glitch] Split VerifiedBadge from Account component
Partial port of 0461f83320 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-02 16:59:40 +01:00
Eugen Rochko
e0aba64a64 [Glitch] Fix regressions from change in account row design in web UI
Port 46483ae849

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-02 16:59:40 +01:00
Eugen Rochko
a262f990f8 Change design of account rows in web UI (#24247)
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-12-02 16:59:40 +01:00
Claire
73a94c3b3f Fix self-destruct page not using theme styles (#2490) 2023-12-02 14:54:35 +01:00
Plastikmensch
5b0382abc5 Remove redundant asset preload (#2488)
* Remove redundant asset preload

preloading these is already handled by glitch-soc theming system, meaning glitch packs get preloaded and if the user is signed in, vanilla packs.

The theming system preloads these unconditionally though.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>

* Remove preload of getting started

This matches upstreams preloads

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>

---------

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-12-02 14:54:26 +01:00
renovate[bot]
456597dae5 Update dependency doorkeeper to v5.6.8 (#28177)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-01 16:22:15 +00:00
Matt Jankowski
469ee2ae36 Fix Style/HashEachMethods cop (#28173) 2023-12-01 16:07:19 +00:00
Matt Jankowski
3bc437b99a Fix Style/RedundantParentheses cop (#28176) 2023-12-01 16:00:44 +00:00
Matt Jankowski
5631f139c1 Fix Lint/SymbolConversion cop (#28175) 2023-12-01 15:53:35 +00:00
Matt Jankowski
aa8563d43d Fix Style/SuperWithArgsParentheses cop (#28174) 2023-12-01 15:53:15 +00:00
Matt Jankowski
d83d01eb1e Fix Lint/RedundantSafeNavigation cop (#28172) 2023-12-01 15:52:56 +00:00
Matt Jankowski
a98fccf84e Fix Style/SelfAssignment cop (#28171) 2023-12-01 15:52:52 +00:00
Matt Jankowski
f70f39dd04 Add explicit dependent: nil to associations (#28169) 2023-12-01 15:52:47 +00:00
Matt Jankowski
1564799952 Add spec coverage for media CLI refresh command (#28166) 2023-12-01 14:18:45 +00:00
Matt Jankowski
7753e5f715 Add shared example for CLI command specs (#28165) 2023-12-01 12:00:34 +00:00
Matt Jankowski
92fa9b109f Add spec coverage for media CLI usage command (#28167) 2023-12-01 11:56:47 +00:00
Michael Stanclift
272592d16d Change startup command for Puma in Docker Compose (#28138) 2023-12-01 11:06:37 +00:00
Matt Jankowski
440b80b2e7 Model concerns organization into module namespaces (#28149) 2023-12-01 11:00:41 +00:00
Matt Jankowski
b751078fcd Eliminate double subject call in admin/ controller specs (#28158) 2023-12-01 10:38:15 +00:00
Michael Stanclift
8710bdb183 Fix mastodon user not being owner of tmp folder in Dockerfile (#28137) 2023-11-30 16:11:21 +00:00
Claire
963354978a Add Account#unavailable? and Account#permanently_unavailable? aliases (#28053) 2023-11-30 15:43:26 +00:00
Matt Jankowski
35deaaf90b Reduce AbcSize complexity in InitialStateSerializer (#27782) 2023-11-30 15:41:26 +00:00
Matt Jankowski
1f1c75bba5 File cleanup/organization in controllers/concerns (#27846) 2023-11-30 14:39:41 +00:00
Matt Jankowski
0530ce5e95 Convert accounts controller spec to request spec (#28126) 2023-11-30 14:28:05 +00:00
Matt Jankowski
e7c340a634 Spec coverage for missing q param and error conditions in api/v2/search controller (#27842) 2023-11-30 13:59:46 +00:00
Matt Jankowski
a8473f582d Add zeitwerk inflector for cli->CLI (#27635) 2023-11-30 13:55:20 +00:00
Claire
b20af17a2c Fix onboarding step descriptions being truncated on narrow screens (#28021) 2023-11-30 13:47:07 +00:00
Claire
85662a5a57 Change img-src and media-src CSP directives to not include https: (#28025) 2023-11-30 13:47:01 +00:00
Matt Jankowski
bb0efe16e6 Remove default_scope from MediaAttachment class (#28043) 2023-11-30 13:30:35 +00:00
renovate[bot]
02a98210e8 fix(deps): update dependency jsdom to v23.0.1 (#28135)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-30 13:22:40 +00:00
renovate[bot]
0212e0cfbf fix(deps): update dependency @babel/runtime to v7.23.5 (#28136)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-30 13:22:25 +00:00
Claire
7faa27e17d Change dismissed banners to be stored server-side (#27055) 2023-11-30 11:45:54 +00:00
Matt Jankowski
ce78a9c9ac Clean up two_factor_authentication/confirmations controller spec (#28128) 2023-11-30 11:44:42 +00:00
Filippo Giunchedi
e6fd9a59e6 Fix FamiliarFollowersController test response comparison (#28121)
Co-authored-by: Filippo Giunchedi <filippo@debian.org>
2023-11-30 10:58:40 +00:00
renovate[bot]
c761cc4738 fix(deps): update babel monorepo to v7.23.5 (#28122)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-30 10:53:49 +00:00
Matt Jankowski
b696ca6b1a Move self destruct CLI command definition code to module (#28131) 2023-11-30 10:48:46 +00:00
Filippo Giunchedi
6e55ff9643 Change Vagrant to install Node 20 (#28100)
Co-authored-by: Filippo Giunchedi <filippo@debian.org>
2023-11-30 10:46:06 +00:00
Matt Jankowski
e48ecd2929 Remove default_scope from Admin::ActionLog (#28026) 2023-11-29 10:39:59 +00:00
Matt Jankowski
291dc04e67 Remove un-needed action and template options to render in controllers (#28022) 2023-11-29 10:38:05 +00:00
Matt Jankowski
a1636fce7f Move lib/devise/* to lib/devise/strategies/* (#27638) 2023-11-29 10:10:21 +00:00
Matt Jankowski
31bef99b9e Move lib/mastodon/premailer_webpack_strategy to lib/ (#27636) 2023-11-29 10:08:55 +00:00
Matt Jankowski
72b7cd349c Extract helper methods for form label in admin/ area views (#27575) 2023-11-29 10:06:19 +00:00
Matt Jankowski
9b47c5d53c Extract helper methods for labels from filters/_filter_fields (#27574) 2023-11-29 10:02:59 +00:00
Matt Jankowski
186895fc88 Refactor, lint fix, and bug fix on admin/roles/form partial (#27558) 2023-11-29 10:00:52 +00:00
renovate[bot]
3e1e41054b chore(deps): update dependency pghero to v3.4.0 (#28117)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-29 09:00:07 +00:00
Emelia Smith
603b245cc6 Add VAPID public key to instance serializer (#28006)
Co-authored-by: Renaud Chaput <renchap@gmail.com>
2023-11-29 08:34:36 +00:00
Michael Stanclift
c40cfc5d09 Fix apt cache not being properly utilized in Dockerfile (#28115) 2023-11-28 22:23:44 +00:00
Michael Stanclift
7a3b41eb54 Fix incorrect apt-get install block in Dockerfile (#28112) 2023-11-28 20:44:04 +00:00
Matt Jankowski
6b46bf9953 Handle scenario when webfinger response subject is missing host value (#28088) 2023-11-28 18:37:54 +00:00
Matt Jankowski
b9492d84a0 Update bcrypt to version 3.1.20 (#28084) 2023-11-28 18:36:21 +00:00
Matt Jankowski
b45fe15c06 Update temple to version 0.10.3 (#28086) 2023-11-28 18:36:16 +00:00
Josh Goldberg ✨
3a7f10c3f1 Converted hashtag.jsx to TypeScript (#27872)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
Co-authored-by: Renaud Chaput <renchap@gmail.com>
2023-11-28 18:20:10 +00:00
Josh Goldberg ✨
1142f4c79e Converted app/javascript/mastodon/utils/ folder to TypeScript (#27895) 2023-11-28 17:47:55 +00:00
Renaud Chaput
cdc7894243 Fix devcontainer by not forcing NODE_ENV (#28099) 2023-11-28 14:47:32 +00:00
Emelia Smith
a4de0e364b Refactor streaming to simplify for logging change (#28056) 2023-11-28 14:24:41 +00:00
Emelia Smith
4949b6da58 Fix streaming eslint configuration (#28055) 2023-11-28 14:09:21 +00:00
Michael Stanclift
a80530d1df Dockerfile rewrite based on Ruby image with performance optimizations and size reduction, dedicated Streaming image (#26850)
Co-authored-by: “Michael <“mx@vmstan.com>
Co-authored-by: Emelia Smith <ThisIsMissEm@users.noreply.github.com>
2023-11-28 10:04:40 +00:00
Renaud Chaput
8ebc94dd22 Ignore @svgr/webpack updates as they require a Webpacker upgrade (#28098) 2023-11-28 10:03:32 +00:00
Matt Jankowski
baf3b71e3b Extract path_without_format private methd in accounts controller (#28091) 2023-11-28 09:17:26 +00:00
renovate[bot]
c824d98cec chore(deps): update dependency fabrication to v2.31.0 (#28089)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-28 09:17:00 +00:00
github-actions[bot]
af02484714 New Crowdin Translations (automated) (#28096)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-28 08:59:48 +00:00
Matt Jankowski
9072896ae5 Avoid unnecessary i-var for account rss page url generation (#28092) 2023-11-28 08:19:08 +00:00
Matt Jankowski
dfc7154767 Remove unused cached_filtered_status_page method from accounts controller (#28090) 2023-11-28 07:43:16 +00:00
Matt Jankowski
2d536bb05f Use admin_mailer layout with initial salutation (#28085) 2023-11-28 07:41:26 +00:00
6543
10b879bd5e nodeinfo: add instance name and description (#28079) 2023-11-28 00:51:22 +00:00
Claire
f1657e6d62 Clamp dates when serializing to Elasticsearch API (#28081) 2023-11-27 13:25:54 +00:00
renovate[bot]
7b56085f11 Update dependency typescript to v5.3.2 (#28078)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-27 12:55:29 +00:00
Matt Jankowski
9b8ba9b350 Remove unused plain_mailer layout (#28065) 2023-11-27 10:40:03 +00:00
renovate[bot]
b8fe77353e Update dependency aws-sdk-s3 to v1.140.0 (#28080)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-27 10:07:14 +00:00
renovate[bot]
228b668446 Update DefinitelyTyped types (non-major) (#28077)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-27 10:07:01 +00:00
June
97e677f993 Fix not all legal images showing in file picker when uploading custom emoji (#28076) 2023-11-27 10:06:48 +00:00
renovate[bot]
73ab080608 Update dependency jsdom to v23 (#28075)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-27 10:06:40 +00:00
github-actions[bot]
fad9343bab New Crowdin Translations (automated) (#28069)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-27 10:06:35 +00:00
Claire
660372d130 Revert recent CSP changes (#2485)
* Revert "Fix image and media loading when using external storage server"

This reverts commit 6cfa0245ca.

* Revert "Change glitch-soc's CSP config to match upstream's closer (#2474)"

This reverts commit d59196e170.
2023-11-26 15:32:35 +01:00
Jeong Arm
b3581d1e2f Fix @rails/ujs import on public.jsx (#2482)
Related: 8a131fb7bc
2023-11-24 17:40:31 +01:00
github-actions[bot]
8521238677 New Crowdin Translations (automated) (#28060)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-24 10:25:39 +00:00
Claire
3a24754229 Change GIF max matrix size error to explicitly mention GIF files (#27927) 2023-11-24 09:31:28 +00:00
Claire
6e70819840 Change search popout to not list unusable search options when logged out (#27918) 2023-11-24 09:27:54 +00:00
Matt Jankowski
19baf22683 Add missing email previews for AdminMailer (#28044) 2023-11-23 12:32:50 +00:00
renovate[bot]
bf7e8e81de Update dependency doorkeeper to v5.6.7 (#28051)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-23 10:37:05 +00:00
renovate[bot]
1ee3314f58 Update dependency @types/npmlog to v7 (#28048)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-23 10:28:52 +00:00
Kevin Bongart
7877fcd83c Deduplicate IDs in relationships and familiar_followers APIs (#27982) 2023-11-23 10:00:09 +00:00
Matt Jankowski
973597c6f1 Consolidate configuration of Sidekiq::Testing.fake! setup (#28046) 2023-11-23 09:43:43 +00:00
github-actions[bot]
c810b197ad New Crowdin Translations (automated) (#28050)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-23 09:34:50 +00:00
Matt Jankowski
4be12791e6 Remove default_scope from StatusEdit class (#28042) 2023-11-23 09:26:11 +00:00
renovate[bot]
990c63b440 Update dependency aws-sdk-s3 to v1.139.0 (#28047)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-23 09:24:48 +00:00
github-actions[bot]
d3ed03fd6b New Crowdin Translations (automated) (#28036)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-22 15:48:12 +00:00
Matt Jankowski
9742bccbe7 Add coverage for api/v2/media endpoint (#28027) 2023-11-22 15:39:34 +00:00
renovate[bot]
183afc2465 Update dependency aws-sdk-s3 to v1.138.0 (#28031)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-22 15:28:14 +00:00
renovate[bot]
c3d3ada07b Update dependency test-prof to v1.3.0 (#28032)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-22 15:27:54 +00:00
Eugen Rochko
cdc57c74b7 Fix unsupported time zone or locale preventing sign-up (#28035)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-11-22 11:38:07 +00:00
Emelia Smith
c9ffdcbaa2 Add debug + irb gems to assist with debugging in development and tests (#27960) 2023-11-21 16:41:04 +00:00
Claire
a21fe8687e Merge pull request #2480 from ClearlyClaire/glitch-soc/fixes/csp
Fix image and media loading when using external storage server
2023-11-21 17:36:09 +01:00
Matt Jankowski
67fd3187b3 Update rspec fixture path config to silence deprecation warning (#28018) 2023-11-21 15:51:40 +00:00
Matt Jankowski
30ee4aaff4 Convert measurement api/v1/admin/* controller specs to request specs (#28005) 2023-11-21 14:25:07 +00:00
renovate[bot]
f91e751383 Update dependency rspec-rails to v6.1.0 (#28017)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 13:23:23 +00:00
Matt Jankowski
32e19e3af6 Reduce .times usage in request and controller specs (#27949) 2023-11-21 13:05:59 +00:00
Matt Jankowski
f7cb64a184 Add coverage for settings/privacy controller (#28000) 2023-11-21 13:02:37 +00:00
Claire
6cfa0245ca Fix image and media loading when using external storage server
Fixes #2479
2023-11-21 13:45:29 +01:00
Claire
32319187ee Fix error when muting users from Web UI (#28016) 2023-11-21 11:16:16 +00:00
renovate[bot]
c836e71218 Update dependency aws-sdk-s3 to v1.137.0 (#27961)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 11:05:41 +00:00
Matt Jankowski
b2e8af8889 Add coverage for settings/verifications controller (#28001) 2023-11-21 11:00:22 +00:00
Matt Jankowski
6d51ac246b Update partials for the AdminMailer.new_trends mailer (#28011) 2023-11-21 10:52:20 +00:00
github-actions[bot]
3c3e0c25ef New Crowdin Translations (automated) (#28015)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-21 10:35:02 +00:00
Matt Jankowski
a6d446e6a7 Add coverage for remote_interaction_helper (#28002) 2023-11-21 10:28:55 +00:00
renovate[bot]
e1bb79718b Update babel monorepo to v7.23.4 (#28004)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-21 10:20:23 +00:00
Claire
769ab0ce47 Merge pull request #2475 from ClearlyClaire/glitch-soc/cleanup
Further reduce differences with upstream
2023-11-20 13:39:56 +01:00
Claire
f00fcda785 Reduce differences with upstream in Account component 2023-11-20 13:24:02 +01:00
Claire
9ab1aa15e9 Change ReplyIndicator implementation and markup to match upstream's 2023-11-20 13:24:02 +01:00
Claire
d59196e170 Change glitch-soc's CSP config to match upstream's closer (#2474) 2023-11-20 13:02:49 +01:00
Matt Jankowski
876f5b1d12 Convert /instances/* controller specs to request specs (#27988)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-11-20 11:05:28 +00:00
Matt Jankowski
718c95e7af Convert api/v1/custom_emojis controller spec to request spec (#27985)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-11-20 11:05:24 +00:00
Claire
c260a68f54 Clean up some Mastodon::CLI::Accounts tests (#27473) 2023-11-20 10:46:02 +00:00
renovate[bot]
18cb1f9196 Update actions/setup-node action to v4 (#27996)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 10:17:13 +00:00
Matt Jankowski
17582d36d5 Convert api/v1/preferences controller spec to request spec (#27987) 2023-11-20 09:39:45 +00:00
Matt Jankowski
9a01a260a0 Convert api/v1/scheduled_statuses controller spec to request spec (#27986) 2023-11-20 09:36:49 +00:00
Matt Jankowski
b9fb47aeb1 Convert api/v1/endorsements controller spec to request spec (#27984) 2023-11-20 09:32:28 +00:00
renovate[bot]
3a8dc9a5c6 Update dependency nokogiri to v1.15.5 (#27939)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 09:29:46 +00:00
Matt Jankowski
371f355719 Reduce .times usage in AccountStatusesCleanupPolicy (#27947) 2023-11-20 09:08:54 +00:00
Matt Jankowski
d2aacea8da Reduce .times usage in AccountSearch spec, use constant for default limit (#27946) 2023-11-20 09:08:22 +00:00
Matt Jankowski
00c6ebd86f Reduce .times usage in StatusPin and add PIN_LIMIT constant in validator (#27945) 2023-11-20 09:07:25 +00:00
Matt Jankowski
1fabf20a88 Reduce .times usage in lib/mastodon/cli/accounts spec (#27944) 2023-11-20 09:04:46 +00:00
renovate[bot]
12c22ee5e7 Update eslint (non-major) (#27995)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 08:53:14 +00:00
renovate[bot]
6464b7cc45 Update dependency public_suffix to v5.0.4 (#27931)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 08:50:00 +00:00
Matt Jankowski
09a2db3f6c Move api/v2/filters spec to correct path location (#27950) 2023-11-20 08:48:56 +00:00
github-actions[bot]
8ceae2bce6 New Crowdin Translations (automated) (#27966)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-20 08:47:34 +00:00
renovate[bot]
135c4d8250 Update dependency rubocop-rails to v2.22.2 (#27975)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 08:46:18 +00:00
renovate[bot]
d75c7ac5a8 Update dependency core-js to v3.33.3 (#27980)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 08:46:00 +00:00
renovate[bot]
6d60b936ad Update devDependencies (non-major) (#27992)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-20 08:44:36 +00:00
Claire
c34a3a83e1 Merge pull request #2471 from ClearlyClaire/glitch-soc/cleanup
Clean up some more and reduce unwarranted differences with upstream further
2023-11-19 21:05:34 +01:00
Tim Campbell
60f143e41f Fixed yarn not installing node packages for streaming (#27967) 2023-11-18 10:14:51 +00:00
Matt Jankowski
e892efbc40 Configure elastic search integration with rspec tag (#27882) 2023-11-17 11:52:20 +00:00
Claire
297839c10c Rewrite /api/v1/statuses tests as request specs (#27891) 2023-11-17 11:36:04 +00:00
Claire
9257737675 Rewrite /api/v1/accounts tests as request specs (#27888) 2023-11-17 11:34:49 +00:00
Eugen Rochko
0e9801443f Change to single opt-in during profile setup in onboarding in web UI (#27876) 2023-11-17 10:37:04 +00:00
Matt Jankowski
549e8e7baf Add email_spec and speedup/cleanup to spec/mailers (#27902) 2023-11-17 09:50:19 +00:00
github-actions[bot]
9c68741f46 New Crowdin Translations (automated) (#27914)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-17 09:16:12 +00:00
Matt Jankowski
1526e54ac6 Add spec coverage for workers/redownload_* worker classes (#27892) 2023-11-17 09:03:46 +00:00
renovate[bot]
6c2e78f1b1 Update dependency @material-symbols/svg-600 to v0.14.1 (#27907)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-17 08:56:39 +00:00
renovate[bot]
94178e2f68 Update dependency react-redux-loading-bar to v5.0.5 (#27916)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-17 08:56:23 +00:00
Claire
d3ae5b21d2 Reduce code and markup discrepancies on reply indicator 2023-11-16 18:33:16 +01:00
Claire
e023acfd00 Remove unnecessary proptype discrepancy 2023-11-16 17:57:13 +01:00
Claire
7f5b164326 Merge pull request #2470 from ClearlyClaire/glitch-soc/cleanup
Clean up some more and reduce unwarranted differences with upstream further
2023-11-16 17:49:36 +01:00
Matt Jankowski
cb1a4a8713 Reduce expectations for RSpec/MultipleExpectations cop in spec/presenters specs (#27881) 2023-11-16 14:37:52 +00:00
Matt Jankowski
155fb84141 Improve spec coverage for collection of workers/ classes (#27874) 2023-11-16 14:36:59 +00:00
Claire
0a6ec048a8 Fix upper border radius of onboarding columns (#27890) 2023-11-16 13:43:02 +00:00
Claire
c94bedf4e6 Use container queries to hide profile share button (#27889) 2023-11-16 11:59:45 +00:00
Eugen Rochko
87696ea26e Add prominent share/copy button on profiles in web UI (#27865) 2023-11-16 10:23:14 +00:00
github-actions[bot]
7232d4750d New Crowdin Translations (automated) (#27884)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-16 10:08:22 +00:00
Matt Jankowski
8a285413f7 Reduce expectations for RSpec/MultipleExpectations cop in MoveWorker spec (#27880) 2023-11-16 10:03:51 +00:00
Matt Jankowski
3f0c1566c3 Reduce expectations for RSpec/MultipleExpectations cop in api/v1/accounts/relationships spec (#27879) 2023-11-16 09:55:50 +00:00
Matt Jankowski
c1f93def40 Reduce expectations for RSpec/MultipleExpectations cop in controllers/statuses spec (#27875) 2023-11-16 09:54:51 +00:00
renovate[bot]
669a7157cb Update dependency webpack-bundle-analyzer to v4.10.1 (#27885)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-16 09:52:23 +00:00
renovate[bot]
91a05f3cad Update libretranslate/libretranslate Docker tag to v1.5.2 (#27716)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-16 09:33:54 +00:00
Matt Jankowski
04121bd020 Disable simplecov enable_coverage_for_eval option, move to standalone file (#27869) 2023-11-15 23:09:31 +00:00
Claire
36f25ea067 Fix more import discrepancies 2023-11-15 22:50:23 +01:00
Claire
4101057b9a Fix various code discrepancies 2023-11-15 22:50:23 +01:00
Claire
09a5a78527 Fix discrepancy for autosuggest-emoji class 2023-11-15 22:50:23 +01:00
Claire
f69f1e9429 Fix code discrepancies with upstream 2023-11-15 21:52:19 +01:00
Claire
d358a3cc61 Merge pull request #2468 from ClearlyClaire/glitch-soc/cleanup
Clean up some more and reduce unwarranted differences with upstream further
2023-11-15 21:49:50 +01:00
Claire
61df4f9cbf Merge pull request #2469 from ClearlyClaire/glitch-soc/fixes/compose-form-checkbox
[Glitch] Change compose form checkbox to native input with `appearance: none`
2023-11-15 20:27:37 +01:00
Matt Jankowski
3de9145613 Move controller specs for well-known endpoints to request specs (#27855) 2023-11-15 19:12:02 +00:00
Claire
0d877a3076 [Glitch] Change compose form checkbox to native input with appearance: none
Port d3b4d4d4f3 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-11-15 17:20:44 +01:00
Claire
e7b3598f04 No need to have a separate localStorage key for home instance 2023-11-15 17:16:21 +01:00
Claire
0c727a6790 Fix more import style discrepancies 2023-11-15 17:16:21 +01:00
Claire
50eb673494 Fix some markup discrepancies 2023-11-15 17:16:21 +01:00
Claire
349579e318 Fix more code discrepancies 2023-11-15 17:16:21 +01:00
Claire
1023c2f90b Fix more whitespace and comment discrepancies 2023-11-15 17:16:21 +01:00
Claire
7e5d00720b Merge pull request #2391 from ClearlyClaire/glitch-soc/port-upstream-hashtags
Port upstream's hashtag handling to glitch-soc
2023-11-15 17:15:21 +01:00
Claire
7a877ae3d8 Merge pull request #2467 from ClearlyClaire/glitch-soc/cleanup
Misc cleanup and backports
2023-11-15 17:14:14 +01:00
Claire
bd575a1dd6 Add banner for forwarded reports made by remote users about remote content (#27549) 2023-11-15 14:18:43 +00:00
Matt Jankowski
12a5b7391d Add spec for well known change password endpoint (#27856) 2023-11-15 13:21:18 +00:00
Matt Jankowski
fe58ac8d9f Improve spec coverage for api/web/push_subscriptions controller (#27858)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-11-15 13:14:51 +00:00
Claire
cd3a636b7f [Glitch] Fix some remote posts getting truncated
Port 4d59dfb1c6 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-11-15 12:59:06 +01:00
Eugen Rochko
6a8623588a [Glitch] Fix colors and typography on hashtag bar in web UI
Port 10b06436d1 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-11-15 12:56:58 +01:00
Claire
c226d00490 Fix interaction between CWs and hashtag bars 2023-11-15 12:56:58 +01:00
Claire
7ae45676c8 Fix hashtag bar styling 2023-11-15 12:56:58 +01:00
Claire
45690b01d1 [Glitch] Change hashtag bar tags to be de-emphasized
Port 613cfd625c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-11-15 12:56:58 +01:00
Renaud Chaput
fc514fa8c6 [Glitch] Better hashtag normalization when processing a post
Port 58acaa9ae6 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-11-15 12:56:58 +01:00
Renaud Chaput
18462ee4b6 [Glitch] Remove hashtags from the last line of a status if it only contains hashtags
Port 061fd66ee6 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-11-15 12:56:58 +01:00
Claire
2ce03420d6 [Glitch] Fix case-insensitive comparison of hashtags to do case-folding
Port 3ed2bf92d0 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-11-15 12:56:58 +01:00
Claire
fe8d9f6221 [Glitch] Fix hashtag bar sometimes including tags that appear in the post's body
Port f0862bcf98

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-11-15 12:56:58 +01:00
Claire
a81ed84453 [Glitch] Add display of out-of-band hashtags in the web interface
Port df6e719898 to glitch-soc

Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-11-15 12:56:58 +01:00
Claire
3b210e093a Fix more code style discrepancies 2023-11-15 12:53:21 +01:00
Claire
542d95c2bc Fix import style discrepancy 2023-11-15 12:53:21 +01:00
Claire
8b24a9a507 Fix missed relative import discrepancy 2023-11-15 12:53:21 +01:00
Claire
b1f0457cb8 Fix whitespace and comment discrepancies 2023-11-15 12:53:21 +01:00
Eugen Rochko
08ac91c40b [Glitch] Fix follow relationships not loading after notifications fetch
Port 4f7f6b3922 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-11-15 12:53:21 +01:00
Eugen Rochko
103c0ca4f7 [Glitch] Hide loading bar on status interactions
Port eb2425b53b to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-11-15 12:53:21 +01:00
Claire
21653beb30 Reduce more unwarranted differences with upstream 2023-11-15 12:53:21 +01:00
Claire
7b922c2d90 Reduce unwarranted differences with upstream
Ports part of 0758b00bfd and 897199910f
2023-11-15 12:53:21 +01:00
Claire
2f61b65b1e Remove dead code 2023-11-15 12:53:11 +01:00
Claire
9bbb0f13e0 Fix inconsistent React imports in JSX files (#2466) 2023-11-15 12:52:30 +01:00
Eugen Rochko
d67bd44ca1 Add profile setup to onboarding in web UI (#27829) 2023-11-15 11:13:53 +00:00
Claire
a97b722ad5 Reduce differences with upstream due to import style (#2465)
Fix relative / VS absolute style imports, and fix whitespace discrepancies
2023-11-15 12:01:51 +01:00
github-actions[bot]
d8074128f9 New Crowdin Translations (automated) (#27866)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-15 09:41:24 +00:00
Jeong Arm
922f086253 Fix open status on media modal (#27867) 2023-11-15 09:29:10 +00:00
renovate[bot]
5d75799afa Update dependency axios to v1.6.2 (#27861)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-15 09:21:25 +00:00
Renaud Chaput
b6f29106ea Improve codecov config (#27860) 2023-11-15 09:20:24 +00:00
Matt Jankowski
7c72944661 Use Lcov simplecov formatter on CI and HTML elsewhere (#27859) 2023-11-15 09:11:02 +00:00
Claire
f7d3b74e03 Merge pull request #2389 from glitch-soc/i18n/crowdin/translations
New Crowdin Translations (automated)
2023-11-15 09:42:30 +01:00
Claire
02582f7e50 Merge pull request #2464 from neatchee/pr/glitch/mobile_singlecolumn_warning_fix
Fix recurring "switch to advanced interface" warning by adding missing…
2023-11-15 07:21:16 +01:00
renovate[bot]
998f068499 Update Yarn to v4.0.2 (#27857)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-14 17:52:34 +00:00
Emelia Smith
15b2d7eec5 Split streaming server from web server (#24702) 2023-11-14 17:43:20 +00:00
Nick Schonning
36d7d1781f Add CodeCov for Ruby coverage reports (#23868) 2023-11-14 16:53:38 +00:00
renovate[bot]
35b9749b95 Update dependency webpack-bundle-analyzer to v4.10.0 (#27852)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-14 16:53:15 +00:00
ppnplus
2b038b4f89 Added Thai diacritics and tone marks in HASHTAG_INVALID_CHARS_RE (#26576) 2023-11-14 15:33:59 +00:00
Matt Jankowski
7e1a77ea51 Add base class for api/v1/timelines/* controllers (#27840) 2023-11-14 14:53:31 +00:00
Matt Jankowski
b2c5b20ef2 Fix RSpec/AnyInstance cop (#27810) 2023-11-14 14:52:59 +00:00
Matt Jankowski
d562fb8459 Specs for minimal CSP policy in Api:: controllers (#27845) 2023-11-14 14:34:30 +00:00
renovate[bot]
4eb4e8b22c Update Yarn to v4.0.2 (#27851)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-14 11:07:13 +00:00
github-actions[bot]
c1e071f634 New Crowdin Translations (automated) (#27848)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-14 10:53:47 +00:00
Matt Jankowski
1f8173ac5a Extract private methods in api/v1/instances/domain_blocks (#27844) 2023-11-14 10:31:59 +00:00
renovate[bot]
373aa95ddd Update formatjs monorepo (#27849)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-14 10:30:39 +00:00
Matt Jankowski
5e2ecc736d Remove double subject in api/v1/accounts/relationships spec (#27839) 2023-11-14 10:29:33 +00:00
Brian Holley
4aa06cbdbf Fix "Hide these posts from home" list setting not refreshing when switching lists (#27763) 2023-11-14 00:39:54 +00:00
Matt Jankowski
b7807f3d84 Use normalizes to prepare Webhook#events value (#27605) 2023-11-13 22:47:44 +00:00
neatchee
bd6da814b5 Fix recurring "switch to advanced interface" warning by adding missing class to the navigation-panel__banner element 2023-11-13 13:20:51 -08:00
Claire
bac9e0b55d Add variable delay before link verification of remote account links (#27774) 2023-11-13 16:17:05 +00:00
Matt Jankowski
49ba5a9f94 Use hash_including to check AccountFilter setup in admin/accounts controller spec (#27838) 2023-11-13 16:01:24 +00:00
Matt Jankowski
0945e25b8f Add Api::V1::Statuses::BaseController base controller class (#27794) 2023-11-13 14:53:22 +00:00
renovate[bot]
da59407520 Update eslint (non-major) (#27831)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-13 14:40:50 +00:00
renovate[bot]
a1b48460e4 Update DefinitelyTyped types (non-major) (#27830)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-13 14:40:10 +00:00
Eugen Rochko
7e3c10dec6 Add icons for private and disabled boost in web UI (#27817)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-11-13 14:39:45 +00:00
Matt Jankowski
a36b59be8a Spec coverage for api/v1/trends controllers (#27837) 2023-11-13 14:32:36 +00:00
renovate[bot]
0c98a9d9be Update devDependencies (non-major) (#25612)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-13 14:01:07 +00:00
pajowu
ed79713f3a Fix modal content not being selectable (#27813) 2023-11-13 13:27:50 +00:00
Claire
07a4059901 Add support for invite codes in the registration API (#27805) 2023-11-13 13:27:00 +00:00
renovate[bot]
5bca5c4c5b Update formatjs monorepo (#27823)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-13 13:24:14 +00:00
github-actions[bot]
e5a7b73ef4 New Crowdin Translations (automated) (#27815)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-13 13:21:02 +00:00
renovate[bot]
a7117bbef6 Update dependency @rails/ujs to v7.1.2 (#27811)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-13 13:13:57 +00:00
renovate[bot]
3b989e4d64 Update dependency rails to v7.1.2 (#27812)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-13 13:13:53 +00:00
Renaud Chaput
da4f37020b Fix Jest config (#27834) 2023-11-13 12:19:41 +00:00
Eugen Rochko
0d14fcebae Change link previews to keep original URL from the status (#27312) 2023-11-13 09:58:28 +00:00
GitHub Actions
46a28fc41f New Crowdin translations 2023-11-11 04:27:29 +00:00
Matt Jankowski
9dc3ce878b Speed-up in Settings:: controllers specs (#27808) 2023-11-10 15:13:42 +00:00
github-actions[bot]
ac62b995ef New Crowdin Translations (automated) (#27804)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-10 13:07:04 +00:00
Matt Jankowski
43e2f763b2 Extract crutches_active_mentions from FeedManager (#27785) 2023-11-10 12:47:38 +00:00
Matt Jankowski
ac69f90098 Add Api::V1::Instances::BaseController base controller class (#27797) 2023-11-10 12:46:00 +00:00
renovate[bot]
fba838d61a Update dependency @material-symbols/svg-600 to ^0.14.0 (#27803)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-10 12:45:19 +00:00
Aleks Xhuvani
7840c6b75b Do not try to update an undefined video element (#27798) 2023-11-09 22:35:53 +00:00
Matt Jankowski
e79bf1b1e7 Minor speed improvement on controllers/accounts spec (#27679) 2023-11-09 16:21:11 +00:00
Matt Jankowski
9429e30d75 Disable sidekiq unique jobs in test env (#27737) 2023-11-09 16:19:04 +00:00
Claire
c451bbe249 Allow viewing and severing relationships with suspended accounts (#27667) 2023-11-09 14:50:25 +00:00
Michael Stanclift
b87bfb8c96 Fix Yarn version in devcontainer (#27788) 2023-11-09 14:30:07 +00:00
Matt Jankowski
548bb30b2a Consolidate html page title output logic into helper (#27563) 2023-11-09 13:05:57 +00:00
Claire
9b06c0f24a Fix Web UI not displaying appropriate explanation when a user hides their follows/followers (#27791) 2023-11-09 12:58:02 +00:00
Matt Jankowski
63c9102f8a Fix RSpec/MessageChain cop (#27776) 2023-11-09 12:57:23 +00:00
renovate[bot]
dec2796a4a Update dependency lint-staged to v15 (#27407)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-09 10:16:53 +00:00
renovate[bot]
4812832620 Update dependency axios to v1.6.1 (#27773)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-09 10:16:44 +00:00
renovate[bot]
23d88aa943 Update babel monorepo to v7.23.3 (#27789)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-09 10:16:36 +00:00
Yamagishi Kazutoshi
220a2e8fbf Run yarn dedupe when updating with Renovate (#27786) 2023-11-09 10:15:58 +00:00
github-actions[bot]
d6c971e158 New Crowdin Translations (automated) (#27787)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-09 09:54:14 +00:00
Matt Jankowski
ce1bd81c85 Reduce complexity in StatusCacheHydrator (#27783) 2023-11-09 09:53:44 +00:00
Matt Jankowski
c9204b792c Fix Rails/I18nLocaleTexts cop (#27779) 2023-11-09 09:46:39 +00:00
Matt Jankowski
c875dfc90b Fix Lint/UnusedBlockArgument cop (#27777) 2023-11-09 09:43:26 +00:00
renovate[bot]
5af47fbff8 Update dependency fog-openstack to v1 (#25968)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-09 09:06:57 +00:00
Matt Jankowski
69d00e2721 Fix RSpec/InstanceVariable cop (#27766) 2023-11-08 15:42:30 +00:00
Matt Jankowski
4329616c53 Ignore block result of send method and remove rubocop:disable in deepl spec (#27741) 2023-11-08 14:43:17 +00:00
Jaehong Kang
c73d5a6075 Using Sidekiq concurrency for default db pool value (#26488) 2023-11-08 13:15:43 +00:00
Matt Jankowski
13c3e59601 Use helper method to build batched status edits in admin/statuses/show (#27739) 2023-11-08 13:04:52 +00:00
Matt Jankowski
b05575e242 Move RSpec config for streaming/search managers to be near classes (#27761) 2023-11-08 13:04:17 +00:00
Matt Jankowski
ce91d14d48 Fix Style/WordArray cop (#27770) 2023-11-08 13:03:44 +00:00
Matt Jankowski
c03bd2a238 Don't stub SUT in FollowLimitValidator spec (#27760) 2023-11-08 12:49:46 +00:00
github-actions[bot]
5c328ae674 New Crowdin Translations (automated) (#27768)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-08 12:40:09 +00:00
Matt Jankowski
9b7b4d748f Simplify request cache spec shared examples (#27673) 2023-11-08 12:37:29 +00:00
Matt Jankowski
7d6bcc0615 Remove unmatched rubocop:enable declaration (#27769) 2023-11-08 12:02:09 +00:00
Matt Jankowski
33cc3ae8fa Fix Style/StabbyLambdaParentheses cop (#27771) 2023-11-08 12:01:18 +00:00
Renaud Chaput
757d7c73c0 Upgrade to Yarn 4, remove support for Node 16 (#27073) 2023-11-08 10:57:21 +00:00
Claire
23e32a4b30 Fix format-dependent redirects being cached regardless of requested format (#27632) 2023-11-08 10:31:05 +00:00
Matt Jankowski
e545978076 Use framework helpers instead of i-vars in controller specs (#27767) 2023-11-08 08:17:43 +00:00
Matt Jankowski
790f6356be Deduplicate yarn lock file (#27670) 2023-11-08 07:49:06 +00:00
João Pedro Marques
d3cd37d73e Feature - Prevents multiple audio/video attachments from being played at the same time (#24717) 2023-11-07 23:37:58 +00:00
renovate[bot]
389a6cc4c0 Update dependency net-http to '~> 0.4.0' (#27721)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-07 22:07:12 +00:00
renovate[bot]
14e49e5e36 Update dependency react-select to v5.8.0 (#27722)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-07 22:05:36 +00:00
renovate[bot]
565d9a6cf3 Update dependency sanitize to v6.1.0 (#27723)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-07 22:05:13 +00:00
renovate[bot]
8b0d86d407 Update dependency simple_form to v5.3.0 (#27725)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-07 22:04:40 +00:00
renovate[bot]
ac9f92bd73 Update formatjs monorepo (#27746)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-07 22:04:25 +00:00
renovate[bot]
b36b35318a Update dependency selenium-webdriver to v4.15.0 (#27649)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-07 22:03:31 +00:00
renovate[bot]
bcdfb72686 Update dependency json-ld-preloaded to v3.3.0 (#26763)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-07 22:03:09 +00:00
renovate[bot]
4b8aee7ad8 Update dependency thor to v1.3.0 (#27464)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-07 22:02:28 +00:00
renovate[bot]
1341790207 Update dependency sidekiq-unique-jobs to v7.1.30 (#26091)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-07 22:02:04 +00:00
renovate[bot]
b2619a10a5 Update dependency json-ld to v3.3.0 (#26762)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-07 22:01:09 +00:00
renovate[bot]
110ace0474 Update dependency json-schema to v4.1.1 (#26933)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-07 22:00:34 +00:00
renovate[bot]
feea257f44 Update dependency aws-sdk-s3 to v1.136.0 (#26999)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-07 22:00:13 +00:00
renovate[bot]
b41e9b1d29 Update dependency strong_migrations to v1.6.4 (#27631)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-07 21:59:35 +00:00
Jasmin Johal
27cbdc6f22 Change alt text to empty string for avatars (#21875)
Co-authored-by: Renaud Chaput <renchap@gmail.com>
2023-11-07 21:46:08 +00:00
Aleks Xhuvani
58f01a5c9a Add volume saving/reuse to video player (#27488) 2023-11-07 18:15:38 +00:00
Matt Jankowski
ee57bb4b44 Account statuses filter spec speedup (#27674) 2023-11-07 15:47:01 +00:00
Matt Jankowski
ae7c20b00c Move search and streaming spec manager classes to separate support files (#27727) 2023-11-07 15:25:49 +00:00
Matt Jankowski
02d27de5ce Move i18n locale configuration to separate initializer (#27571) 2023-11-07 15:22:14 +00:00
Matt Jankowski
370802ce48 Add coverage for CLI::Maintenance#fix_duplicates command (#25252) 2023-11-07 15:21:58 +00:00
Matt Jankowski
1d51e10510 Consolidate JSON parsing in serializers specs (#27693) 2023-11-07 15:20:24 +00:00
Matt Jankowski
a688a9ed20 Use strings instead of numeric literals and remove rubocop:disable in cache spec (#27742) 2023-11-07 15:20:00 +00:00
Matt Jankowski
dc0bf87090 Remove unused before block from settings/branding spec (#27759) 2023-11-07 15:19:17 +00:00
Renaud Chaput
f476d9dab2 Fix the notificationsUpdate call (#27758) 2023-11-07 14:18:59 +00:00
Matt Jankowski
45770c9306 Fix Performance/MapMethodChain cop (#27744) 2023-11-07 13:01:09 +00:00
Matt Jankowski
bbad5b6456 Remove false positive cop detection (#27457) 2023-11-07 10:44:15 +00:00
Matt Jankowski
49e2772064 Fix RSpec/MessageSpies cop (#27751) 2023-11-07 09:46:28 +00:00
Renaud Chaput
ae0d551d33 Do not copy public/packs-test into Docker (#27736) 2023-11-07 09:22:04 +00:00
Matt Jankowski
2862ad701f Stub controller methods and remove rubocop:disable in captcha feature spec (#27743) 2023-11-07 09:15:30 +00:00
Matt Jankowski
2d39268bc5 Fix Lint/OrAssignmentToConstant cop (#27750) 2023-11-07 09:11:50 +00:00
Matt Jankowski
cfa14ec6d1 Fix Lint/EmptyBlock cop (#27748) 2023-11-07 09:11:04 +00:00
Matt Jankowski
b06284c572 Fix RSpec/HookArgument cop (#27747) 2023-11-07 09:10:36 +00:00
github-actions[bot]
1b28ab7263 New Crowdin Translations (automated) (#27687)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-07 09:03:59 +00:00
Matt Jankowski
d6f50839e1 Fix RSpec/SpecFilePathFormat cops (#27730) 2023-11-06 16:25:40 +00:00
Matt Jankowski
c501d626e8 Fix Rails/BulkChangeTable cop (#26890) 2023-11-06 16:15:48 +00:00
Matt Jankowski
0c4e7c06dc Fix Rails/FindEach cop (#26886) 2023-11-06 15:53:29 +00:00
Matt Jankowski
fe26f33e0a Fix Rails/RedundantActiveRecordAllMethod cop (#26885) 2023-11-06 15:51:52 +00:00
Matt Jankowski
949f5eb860 Fix RSpec/MetadataStyle cop in spec/ (#27729) 2023-11-06 14:28:20 +00:00
zunda
e4e752c26e Adjust transform origin for favorite star (#27700) 2023-11-06 11:14:46 +00:00
renovate[bot]
9c34bb4d54 Update Node.js to v20.9 (#27714)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-06 10:27:42 +00:00
renovate[bot]
0ca27b2d81 Update DefinitelyTyped types (non-major) (#27713)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-06 10:27:19 +00:00
renovate[bot]
22b4713d2e Update eslint (non-major) (#27715)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-06 10:26:18 +00:00
Renaud Chaput
3bf896c973 Disable Babel polyfill injection in dev (#27691) 2023-11-06 10:24:41 +00:00
renovate[bot]
1416745a2b Update dependency faker to v3.2.2 (#27718)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-06 09:54:59 +00:00
renovate[bot]
afd1371fa3 Update dependency rubocop to v1.57.2 (#27719)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-06 09:53:13 +00:00
renovate[bot]
ef140da349 Update dependency discard to v1.3.0 (#27720)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-11-06 09:52:50 +00:00
Claire
c0989b78f8 Fix incoming status creation date not being restricted to standard ISO8601 (#27655) 2023-11-06 09:28:14 +00:00
Renaud Chaput
6712bf86cd Fixes website not loading for unlogged users (#27698) 2023-11-04 21:52:56 +00:00
Renaud Chaput
3bf2a7296e Use Immutable Record for accounts in Redux state (#26559) 2023-11-03 15:00:03 +00:00
Matt Jankowski
9d799d40ba Reduce CI job matrix job count (#27660) 2023-11-03 14:58:33 +00:00
Matt Jankowski
5d9e71ebe0 Archive uploaded CI assets into single file between build/test (#27668) 2023-11-03 14:12:14 +00:00
github-actions[bot]
2d548e273e New Crowdin Translations (automated) (#27646)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-11-03 10:10:13 +00:00
Claire
0337df3a42 Fix posts from threads received out-of-order sometimes not being inserted into timelines (#27653) 2023-11-02 14:58:37 +00:00
Renaud Chaput
2aa28e06d1 Mark version 4.0 as no longer supported (#27627) 2023-11-01 13:53:14 +00:00
mogaminsk
ac8e4ed38d Fix inserting emojis from emoji picker fails with TypeError (#27647) 2023-11-01 07:22:02 +00:00
Renaud Chaput
277e6968f5 Use helpers to check environment in frontend (#27633) 2023-10-31 16:05:44 +00:00
Matt Jankowski
7ef56d6e50 Move json_ld context loaders to config/initializers (#27590) 2023-10-31 15:21:23 +00:00
Matt Jankowski
3107a9410c Silence deprecation warning about secrets/credentials with Devise patch (#27578) 2023-10-31 11:10:15 +00:00
Matt Jankowski
b264318431 Update strong_migrations to version 1.3.0 (#25991) 2023-10-31 11:09:32 +00:00
Renaud Chaput
0e3401bc1c Improve Babel configuration and automatically load polyfills (#27333) 2023-10-31 10:55:13 +00:00
Claire
9c8891b39a Rewrite AutosuggestTextarea as Functional Component (#27618) 2023-10-31 10:17:37 +00:00
Matt Jankowski
a916251d8a Update haml-lint line length configuration to match rubocop value (#27570) 2023-10-31 09:47:16 +00:00
Claire
d649bbf28f Add some more tests and clean up domain block controller (#27469) 2023-10-31 09:40:30 +00:00
github-actions[bot]
e5b7ae9576 New Crowdin Translations (automated) (#27630)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-10-31 08:43:17 +00:00
renovate[bot]
147417a6d0 Update dependency rspec-sidekiq to v4.1.0 (#27593)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-31 08:26:21 +00:00
renovate[bot]
204c00b5c6 Update dependency bootsnap to '~> 1.17.0' (#27617)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-31 08:24:04 +00:00
Matt Jankowski
beee9ea991 Fix RSpec/LetSetup cop in spec/controllers/admin area (#27619) 2023-10-31 08:22:19 +00:00
Claire
6c52f8286b Fix posts from force-sensitized accounts being able to trend (#27620) 2023-10-30 22:32:25 +00:00
renovate[bot]
b8adb08f92 Update dependency axios to v1.6.0 (#27580)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-30 22:31:32 +00:00
renovate[bot]
372494e553 Update dependency punycode to v2.3.1 (#27625)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-30 22:31:22 +00:00
renovate[bot]
547d3c1b9b Update dependency core-js to v3.33.2 (#27624)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-30 22:30:26 +00:00
renovate[bot]
c2cc1df5ef Update dependency @types/react to v18.2.33 (#27615)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-30 22:30:02 +00:00
github-actions[bot]
a918208ec6 New Crowdin Translations (automated) (#27596)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-10-30 14:19:25 +00:00
renovate[bot]
bf1d452978 Update libretranslate/libretranslate Docker tag to v1.4.1 (#27616)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-30 14:19:20 +00:00
Ricardo Trindade
33f8c1c5eb Remove version check from update cache_concern.rb (#27592) 2023-10-30 14:04:12 +00:00
Matt Jankowski
eae5c7334a Extract class from CSP configuration/initialization (#26905) 2023-10-27 16:20:40 +00:00
Matt Jankowski
2e6bf60f15 Use deliveries.size in mailer-related examples in controller specs (#27589) 2023-10-27 15:33:52 +00:00
Jonathan de Jong
1cc512909c Have Follow activities bypass availability (#27586)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2023-10-27 14:55:00 +00:00
Claire
93e4cdc31b Fix hashtag matching pattern matching some URLs (#27584) 2023-10-27 14:04:51 +00:00
SouthFox
08bdd5751e Fix account click on detailed status (#27587) 2023-10-27 14:03:21 +00:00
renovate[bot]
15ef654e9a Update dependency pundit to v2.3.1 (#27585)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-27 13:43:00 +00:00
Renaud Chaput
13d310e64d Simplify column headers (#27557) 2023-10-27 13:21:07 +00:00
Matt Jankowski
1f5187e2e2 Misc spec/refactor to user mailer and user mailer spec (#27486) 2023-10-27 09:57:16 +00:00
renovate[bot]
37929b9707 Update libretranslate/libretranslate Docker tag to v1.4.0 (#27504)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-27 09:56:45 +00:00
github-actions[bot]
8ca16f032e New Crowdin Translations (automated) (#27583)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-10-27 09:38:04 +00:00
Claire
bbf46cc418 Fix error and incorrect URLs in /api/v1/accounts/:id/featured_tags for remote accounts (#27459) 2023-10-27 08:35:21 +00:00
Jeong Arm
8f998cd96a Handle featured collections without items (#27581) 2023-10-27 02:36:22 +00:00
Eugen Rochko
fa7e64df1d Fix various icon styles in web UI (#27579) 2023-10-26 23:37:58 +00:00
Matt Jankowski
12550a6a28 Use Rails.env.local? shorthand method to check env (#27519) 2023-10-26 21:20:41 +00:00
Matt Jankowski
4aa05d45fc Capture minimum postgres version 12 (#27528) 2023-10-26 20:35:15 +00:00
Simon Rapilly
2d8f759a34 Add HTML lang attribute to preview card descriptions (#27503) 2023-10-26 20:34:15 +00:00
Claire
d2f52f7f64 Fix report processing notice not mentioning the report number when performing a custom action (#27442) 2023-10-26 17:03:31 +00:00
Mark T. Tomczak
ba8dcb50fe Issue 26048: swap "muting" and "blocking" list options in settings -> Data Exports (#26088) 2023-10-26 14:08:25 +00:00
Claire
75255c01fc Fix error when trying to delete already-deleted file with OpenStack Swift (#27569) 2023-10-26 13:09:48 +00:00
github-actions[bot]
3427b51d63 New Crowdin Translations (automated) (#27567)
Co-authored-by: GitHub Actions <noreply@github.com>
2023-10-26 11:05:47 +00:00
Renaud Chaput
537442853f Use a context to propagate column-related Props, and remove forceUpdate usage (#27548) 2023-10-26 11:00:10 +00:00
Matt Jankowski
3ca974e101 Use next keyword in field loop in admin/accounts/index view (#27559) 2023-10-26 10:52:14 +00:00
renovate[bot]
400f5c9174 Update dependency @material-symbols/svg-600 to v0.13.2 (#27565)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-26 10:49:39 +00:00
renovate[bot]
6e018f7228 Update dependency sass to v1.69.5 (#27566)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-10-26 10:48:55 +00:00
Claire
49b8433c56 Fix confusing screen when visiting a confirmation link for an already-confirmed email (#27368) 2023-10-25 21:33:44 +00:00
1372 changed files with 42688 additions and 25759 deletions

View File

@@ -4,7 +4,7 @@ FROM mcr.microsoft.com/devcontainers/ruby:1-3.2-bullseye
# Install Rails
# RUN gem install rails webdrivers
ARG NODE_VERSION="16"
ARG NODE_VERSION="20"
RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"
# [Optional] Uncomment this section to install additional OS packages.
@@ -15,6 +15,6 @@ RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
RUN gem install foreman
# [Optional] Uncomment this line to install global node packages.
RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g yarn" 2>&1
RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && corepack enable" 2>&1
COPY welcome-message.txt /usr/local/etc/vscode-dev-containers/first-run-notice.txt

View File

@@ -70,7 +70,7 @@ services:
hard: -1
libretranslate:
image: libretranslate/libretranslate:v1.3.12
image: libretranslate/libretranslate:v1.5.2
restart: unless-stopped
volumes:
- lt-data:/home/libretranslate/.local

View File

@@ -11,7 +11,8 @@ bundle install
git checkout -- Gemfile.lock
# Fetch Javascript dependencies
yarn --frozen-lockfile
corepack prepare
yarn install --immutable
# [re]create, migrate, and seed the test database
RAILS_ENV=test ./bin/rails db:setup
@@ -23,4 +24,4 @@ RAILS_ENV=development ./bin/rails db:setup
RAILS_ENV=development ./bin/rails assets:precompile
# Precompile assets for test
RAILS_ENV=test NODE_ENV=tests ./bin/rails assets:precompile
RAILS_ENV=test ./bin/rails assets:precompile

View File

@@ -8,6 +8,7 @@
public/system
public/assets
public/packs
public/packs-test
node_modules
neo4j
vendor/bundle

View File

@@ -1,5 +1,5 @@
# Node.js
NODE_ENV=tests
# In test, compile the NodeJS code as if we are in production
NODE_ENV=production
# Federation
LOCAL_DOMAIN=cb6e6126.ngrok.io
LOCAL_HTTPS=true

View File

@@ -1,4 +1,7 @@
module.exports = {
// @ts-check
const { defineConfig } = require('eslint-define-config');
module.exports = defineConfig({
root: true,
extends: [
@@ -117,7 +120,6 @@ module.exports = {
'react/jsx-uses-react': 'off', // not needed with new JSX transform
'react/jsx-wrap-multilines': 'error',
'react/no-deprecated': 'off',
'react/no-unknown-property': 'off',
'react/react-in-jsx-scope': 'off', // not needed with new JSX transform
'react/self-closing-comp': 'error',
@@ -193,6 +195,7 @@ module.exports = {
'error',
{
devDependencies: [
'.eslintrc.js',
'config/webpack/**',
'app/javascript/mastodon/performance.js',
'app/javascript/mastodon/test_setup.js',
@@ -297,7 +300,6 @@ module.exports = {
'formatjs/no-id': 'off', // IDs are used for translation keys
'formatjs/no-invalid-icu': 'error',
'formatjs/no-literal-string-in-jsx': 'off', // Should be looked at, but mainly flagging punctuation outside of strings
'formatjs/no-multiple-plurals': 'off', // Only used by hashtag.jsx
'formatjs/no-multiple-whitespaces': 'error',
'formatjs/no-offset': 'error',
'formatjs/no-useless-message': 'error',
@@ -316,6 +318,7 @@ module.exports = {
overrides: [
{
files: [
'.eslintrc.js',
'*.config.js',
'.*rc.js',
'ide-helper.js',
@@ -366,7 +369,7 @@ module.exports = {
'@typescript-eslint/consistent-type-definitions': ['warn', 'interface'],
'@typescript-eslint/consistent-type-exports': 'error',
'@typescript-eslint/consistent-type-imports': 'error',
"@typescript-eslint/prefer-nullish-coalescing": ['error', {ignorePrimitives: {boolean: true}}],
"@typescript-eslint/prefer-nullish-coalescing": ['error', { ignorePrimitives: { boolean: true } }],
'jsdoc/require-jsdoc': 'off',
@@ -389,14 +392,6 @@ module.exports = {
env: {
jest: true,
},
},
{
files: [
'streaming/**/*',
],
rules: {
'import/no-commonjs': 'off',
},
},
}
],
};
});

View File

@@ -9,11 +9,34 @@ runs:
using: 'composite'
steps:
- name: Set up Node.js
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
cache: yarn
node-version-file: '.nvmrc'
# The following is needed because we can not use `cache: true` for `setup-node`, as it does not support Corepack yet and mess up with the cache location if ran after Node is installed
- name: Enable corepack
shell: bash
run: corepack enable
- name: Get yarn cache directory path
id: yarn-cache-dir-path
shell: bash
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install all yarn packages
shell: bash
run: yarn --frozen-lockfile ${{ inputs.onlyProduction != 'false' && '--production' || '' }}
run: yarn install --immutable
if: inputs.onlyProduction == 'false'
- name: Install all production yarn packages
shell: bash
run: yarn workspaces focus --production
if: inputs.onlyProduction != 'false'

13
.github/codecov.yml vendored Normal file
View File

@@ -0,0 +1,13 @@
coverage:
status:
project:
default:
# Github status check is not blocking
informational: true
patch:
default:
# Github status check is not blocking
informational: true
comment:
# Only write a comment in PR if there are changes
require_changes: true

View File

@@ -12,6 +12,7 @@
// If we do not want a package to be grouped with others, we need to set its groupName
// to `null` after any other rule set it to something.
dependencyDashboardHeader: 'This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. Before approving any upgrade: read the description and comments in the [`renovate.json5` file](https://github.com/mastodon/mastodon/blob/main/.github/renovate.json5).',
postUpdateOptions: ['yarnDedupeHighest'],
packageRules: [
{
// Require Dependency Dashboard Approval for major version bumps of these node packages
@@ -21,6 +22,7 @@
'react-hotkeys', // Requires code changes
// Requires Webpacker upgrade or replacement
'@svgr/webpack',
'@types/webpack',
'babel-loader',
'compression-webpack-plugin',
@@ -48,7 +50,6 @@
matchManagers: ['bundler'],
matchPackageNames: [
'rack', // Needs to be synced with Rails version
'sprockets', // Requires manual upgrade https://github.com/rails/sprockets/blob/master/UPGRADING.md#guide-to-upgrading-from-sprockets-3x-to-4x
'strong_migrations', // Requires manual upgrade
'sidekiq', // Requires manual upgrade
'sidekiq-unique-jobs', // Requires manual upgrades and sync with Sidekiq version
@@ -98,6 +99,16 @@
matchUpdateTypes: ['patch', 'minor'],
groupName: 'eslint (non-major)',
},
{
// Group actions/*-artifact in the same PR
matchManagers: ['github-actions'],
matchPackageNames: [
'actions/download-artifact',
'actions/upload-artifact',
],
matchUpdateTypes: ['major'],
groupName: 'artifact actions (major)',
},
{
// Update @types/* packages every week, with one grouped PR
matchPackagePrefixes: '@types/',

View File

@@ -21,6 +21,8 @@ on:
type: string
labels:
type: string
file_to_build:
type: string
jobs:
build-image:
@@ -86,6 +88,7 @@ jobs:
- uses: docker/build-push-action@v5
with:
context: .
file: ${{ inputs.file_to_build }}
build-args: |
MASTODON_VERSION_PRERELEASE=${{ inputs.version_prerelease }}
MASTODON_VERSION_METADATA=${{ inputs.version_metadata }}

View File

@@ -25,6 +25,7 @@ jobs:
needs: compute-suffix
uses: ./.github/workflows/build-container-image.yml
with:
file_to_build: Dockerfile
platforms: linux/amd64,linux/arm64
use_native_arm64_builder: false
cache: false
@@ -40,3 +41,24 @@ jobs:
type=raw,value=nightly
type=schedule,pattern=${{ needs.compute-suffix.outputs.prerelease }}
secrets: inherit
build-image-streaming:
needs: compute-suffix
uses: ./.github/workflows/build-container-image.yml
with:
file_to_build: streaming/Dockerfile
platforms: linux/amd64,linux/arm64
use_native_arm64_builder: false
cache: false
push_to_images: |
ghcr.io/${{ github.repository_owner }}/mastodon-streaming
version_prerelease: ${{ needs.compute-suffix.outputs.prerelease }}
labels: |
org.opencontainers.image.description=Nightly build image used for testing purposes
flavor: |
latest=true
tags: |
type=raw,value=edge
type=raw,value=nightly
type=schedule,pattern=${{ needs.compute-suffix.outputs.prerelease }}
secrets: inherit

View File

@@ -29,6 +29,7 @@ jobs:
needs: compute-suffix
uses: ./.github/workflows/build-container-image.yml
with:
file_to_build: Dockerfile
platforms: linux/amd64,linux/arm64
use_native_arm64_builder: false
push_to_images: |
@@ -39,3 +40,19 @@ jobs:
tags: |
type=ref,event=pr
secrets: inherit
build-image-streaming:
needs: compute-suffix
uses: ./.github/workflows/build-container-image.yml
with:
file_to_build: streaming/Dockerfile
platforms: linux/amd64,linux/arm64
use_native_arm64_builder: false
push_to_images: |
ghcr.io/${{ github.repository_owner }}/mastodon-streaming
version_metadata: ${{ needs.compute-suffix.outputs.metadata }}
flavor: |
latest=auto
tags: |
type=ref,event=pr
secrets: inherit

View File

@@ -12,6 +12,7 @@ jobs:
build-image:
uses: ./.github/workflows/build-container-image.yml
with:
file_to_build: Dockerfile
platforms: linux/amd64,linux/arm64
use_native_arm64_builder: false
push_to_images: |
@@ -26,3 +27,23 @@ jobs:
type=pep440,pattern={{raw}}
type=pep440,pattern=v{{major}}.{{minor}}
secrets: inherit
build-image-streaming:
if: startsWith(github.ref, 'refs/tags/v4.3.')
uses: ./.github/workflows/build-container-image.yml
with:
file_to_build: streaming/Dockerfile
platforms: linux/amd64,linux/arm64
use_native_arm64_builder: false
push_to_images: |
ghcr.io/${{ github.repository_owner }}/mastodon-streaming
# Do not use cache when building releases, so apt update is always ran and the release always contain the latest packages
cache: false
# Only tag with latest when ran against the latest stable branch
# This needs to be updated after each minor version release
flavor: |
latest=${{ startsWith(github.ref, 'refs/tags/v4.3.') }}
tags: |
type=pep440,pattern={{raw}}
type=pep440,pattern=v{{major}}.{{minor}}
secrets: inherit

View File

@@ -7,6 +7,7 @@ on:
- .github/workflows/build-releases.yml
- .github/workflows/test-image-build.yml
- Dockerfile
- streaming/Dockerfile
permissions:
contents: read
@@ -18,4 +19,17 @@ jobs:
uses: ./.github/workflows/build-container-image.yml
with:
file_to_build: Dockerfile
platforms: linux/amd64 # Testing only on native platform so it is performant
cache: true
build-image-streaming:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-streaming
cancel-in-progress: true
uses: ./.github/workflows/build-container-image.yml
with:
file_to_build: streaming/Dockerfile
platforms: linux/amd64 # Testing only on native platform so it is performant
cache: true

View File

@@ -48,12 +48,15 @@ jobs:
run: |-
./bin/rails assets:precompile
- name: Archive asset artifacts
run: |
tar --exclude={"*.br","*.gz"} -zcf artifacts.tar.gz public/assets public/packs*
- uses: actions/upload-artifact@v3
if: matrix.mode == 'test'
with:
path: |-
./public/assets
./public/packs-test
./artifacts.tar.gz
name: ${{ github.sha }}
retention-days: 0
@@ -91,7 +94,7 @@ jobs:
DB_HOST: localhost
DB_USER: postgres
DB_PASS: postgres
DISABLE_SIMPLECOV: true
DISABLE_SIMPLECOV: ${{ matrix.ruby-version != '.ruby-version' }}
RAILS_ENV: test
ALLOW_NOPAM: true
PAM_ENABLED: true
@@ -102,7 +105,6 @@ jobs:
SAML_ENABLED: true
CAS_ENABLED: true
BUNDLE_WITH: 'pam_authentication test'
CI_JOBS: ${{ matrix.ci_job }}/4
GITHUB_RSPEC: ${{ matrix.ruby-version == '.ruby-version' && github.event.pull_request && 'true' }}
strategy:
@@ -112,19 +114,18 @@ jobs:
- '3.0'
- '3.1'
- '.ruby-version'
ci_job:
- 1
- 2
- 3
- 4
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
with:
path: './public'
path: './'
name: ${{ github.sha }}
- name: Expand archived asset artifacts
run: |
tar xvzf artifacts.tar.gz
- name: Set up Ruby environment
uses: ./.github/actions/setup-ruby
with:
@@ -134,7 +135,13 @@ jobs:
- name: Load database schema
run: './bin/rails db:create db:schema:load db:seed'
- run: bundle exec rake rspec_chunked
- run: bin/rspec
- name: Upload coverage reports to Codecov
if: matrix.ruby-version == '.ruby-version'
uses: codecov/codecov-action@v3
with:
files: coverage/lcov/mastodon.lcov
test-e2e:
name: End to End testing
@@ -220,7 +227,7 @@ jobs:
path: tmp/screenshots/
test-search:
name: Testing search
name: Elastic Search integration testing
runs-on: ubuntu-latest
needs:
@@ -307,7 +314,7 @@ jobs:
- name: Load database schema
run: './bin/rails db:create db:schema:load db:seed'
- run: bundle exec rake spec:search
- run: bin/rspec --tag search
- name: Archive logs
uses: actions/upload-artifact@v3

9
.gitignore vendored
View File

@@ -55,6 +55,15 @@ npm-debug.log
yarn-error.log
yarn-debug.log
# From https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
# Ignore vagrant log files
*-cloudimg-console.log

View File

@@ -12,3 +12,5 @@ linters:
enabled: true
MiddleDot:
enabled: true
LineLength:
max: 320

View File

@@ -1,21 +1,21 @@
# This configuration was generated by
# `haml-lint --auto-gen-config`
# on 2023-10-25 08:29:48 -0400 using Haml-Lint version 0.51.0.
# on 2023-12-15 11:02:19 -0500 using Haml-Lint version 0.52.0.
# The point is for the user to remove these configuration records
# one by one as the lints are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of Haml-Lint, may require this file to be generated again.
linters:
# Offense count: 945
# Offense count: 11
LineLength:
enabled: false
# Offense count: 10
RuboCop:
exclude:
- 'app/views/admin/accounts/_buttons.html.haml'
- 'app/views/admin/accounts/_local_account.html.haml'
- 'app/views/admin/accounts/index.html.haml'
- 'app/views/admin/roles/_form.html.haml'
- 'app/views/layouts/application.html.haml'
- 'app/views/auth/registrations/edit.html.haml'
- 'app/views/auth/registrations/new.html.haml'
- 'app/views/media/player.html.haml'
- 'app/views/settings/applications/_fields.html.haml'
- 'app/views/settings/imports/index.html.haml'
- 'app/views/settings/preferences/appearance/show.html.haml'
- 'app/views/settings/preferences/notifications/show.html.haml'
- 'app/views/settings/preferences/other/show.html.haml'

View File

@@ -27,7 +27,7 @@ AllCops:
- 'node_modules/**/*'
- 'Vagrantfile'
- 'vendor/**/*'
- 'lib/json_ld/*' # Generated files
- 'config/initializers/json_ld*' # Generated files
- 'lib/mastodon/migration_helpers.rb' # Vendored from GitLab
- 'lib/templates/**/*'
@@ -105,20 +105,30 @@ Rails/Exit:
- 'config/boot.rb'
- 'lib/mastodon/cli/*.rb'
Rails/SkipsModelValidations:
Exclude:
- 'db/*migrate/**/*'
# Reason: We want to preserve the ability to migrate from arbitrary old versions,
# and cannot guarantee that every installation has run every migration as they upgrade.
# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsunusedignoredcolumns
Rails/UnusedIgnoredColumns:
Enabled: false
# Reason: Prevailing style choice
# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsnegateinclude
Rails/NegateInclude:
Enabled: false
# Reason: Some single letter camel case files shouldn't be split
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath
RSpec/FilePath:
CustomTransform:
ActivityPub: activitypub # Ignore the snake_case due to the amount of files to rename
ActivityPub: activitypub
DeepL: deepl
FetchOEmbedService: fetch_oembed_service
JsonLdHelper: jsonld_helper
OEmbedController: oembed_controller
OStatus: ostatus
NodeInfoController: nodeinfo_controller # NodeInfo isn't snake_cased for any of the instances
Exclude:
- 'spec/config/initializers/rack_attack_spec.rb' # namespaces usually have separate folder
- 'spec/lib/sanitize_config_spec.rb' # namespaces usually have separate folder
# Reason:
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecnamedsubject
@@ -135,6 +145,16 @@ RSpec/NotToNot:
RSpec/Rails/HttpStatus:
EnforcedStyle: numeric
# Reason: Match overrides from Rspec/FilePath rule above
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecspecfilepathformat
RSpec/SpecFilePathFormat:
CustomTransform:
ActivityPub: activitypub
DeepL: deepl
FetchOEmbedService: fetch_oembed_service
OEmbedController: oembed_controller
OStatus: ostatus
# Reason:
# https://docs.rubocop.org/rubocop/cops_style.html#styleclassandmodulechildren
Style/ClassAndModuleChildren:

View File

@@ -1,6 +1,6 @@
# This configuration was generated by
# `rubocop --auto-gen-config --auto-gen-only-exclude --no-exclude-limit --no-offense-counts --no-auto-gen-timestamp`
# using RuboCop version 1.57.1.
# using RuboCop version 1.57.2.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
@@ -20,39 +20,13 @@ Layout/LineLength:
Exclude:
- 'app/models/account.rb'
# Configuration parameters: AllowComments, AllowEmptyLambdas.
Lint/EmptyBlock:
Exclude:
- 'spec/controllers/api/v2/search_controller_spec.rb'
- 'spec/fabricators/access_token_fabricator.rb'
- 'spec/fabricators/conversation_fabricator.rb'
- 'spec/fabricators/system_key_fabricator.rb'
- 'spec/lib/activitypub/adapter_spec.rb'
- 'spec/models/user_role_spec.rb'
Lint/NonLocalExitFromIterator:
Exclude:
- 'app/helpers/jsonld_helper.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Lint/OrAssignmentToConstant:
Exclude:
- 'lib/sanitize_ext/sanitize_config.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
Lint/UnusedBlockArgument:
Exclude:
- 'config/initializers/content_security_policy.rb'
- 'config/initializers/doorkeeper.rb'
- 'config/initializers/paperclip.rb'
- 'config/initializers/simple_form.rb'
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
Metrics/AbcSize:
Max: 144
Exclude:
- 'app/serializers/initial_state_serializer.rb'
Max: 100
# Configuration parameters: CountBlocks, Max.
Metrics/BlockNesting:
@@ -67,76 +41,12 @@ Metrics/CyclomaticComplexity:
Metrics/PerceivedComplexity:
Max: 27
Performance/MapMethodChain:
Exclude:
- 'app/models/feed.rb'
- 'lib/mastodon/cli/maintenance.rb'
- 'spec/services/bulk_import_service_spec.rb'
- 'spec/services/import_service_spec.rb'
RSpec/AnyInstance:
Exclude:
- 'spec/controllers/activitypub/inboxes_controller_spec.rb'
- 'spec/controllers/admin/accounts_controller_spec.rb'
- 'spec/controllers/admin/resets_controller_spec.rb'
- 'spec/controllers/admin/settings/branding_controller_spec.rb'
- 'spec/controllers/auth/sessions_controller_spec.rb'
- 'spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb'
- 'spec/controllers/settings/two_factor_authentication/recovery_codes_controller_spec.rb'
- 'spec/lib/request_spec.rb'
- 'spec/lib/status_filter_spec.rb'
- 'spec/models/account_spec.rb'
- 'spec/models/setting_spec.rb'
- 'spec/services/activitypub/process_collection_service_spec.rb'
- 'spec/validators/follow_limit_validator_spec.rb'
- 'spec/workers/activitypub/delivery_worker_spec.rb'
- 'spec/workers/web/push_notification_worker_spec.rb'
# Configuration parameters: CountAsOne.
RSpec/ExampleLength:
Max: 22
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: implicit, each, example
RSpec/HookArgument:
Exclude:
- 'spec/controllers/api/v1/streaming_controller_spec.rb'
- 'spec/controllers/well_known/webfinger_controller_spec.rb'
- 'spec/helpers/instance_helper_spec.rb'
- 'spec/models/user_spec.rb'
- 'spec/rails_helper.rb'
- 'spec/serializers/activitypub/note_serializer_spec.rb'
- 'spec/serializers/activitypub/update_poll_serializer_spec.rb'
- 'spec/services/import_service_spec.rb'
# Configuration parameters: AssignmentOnly.
RSpec/InstanceVariable:
Exclude:
- 'spec/controllers/api/v1/streaming_controller_spec.rb'
- 'spec/controllers/auth/confirmations_controller_spec.rb'
- 'spec/controllers/auth/passwords_controller_spec.rb'
- 'spec/controllers/auth/sessions_controller_spec.rb'
- 'spec/controllers/concerns/export_controller_concern_spec.rb'
- 'spec/controllers/home_controller_spec.rb'
- 'spec/controllers/settings/two_factor_authentication/webauthn_credentials_controller_spec.rb'
- 'spec/controllers/statuses_cleanup_controller_spec.rb'
- 'spec/models/concerns/account_finder_concern_spec.rb'
- 'spec/models/concerns/account_interactions_spec.rb'
- 'spec/models/public_feed_spec.rb'
- 'spec/serializers/activitypub/note_serializer_spec.rb'
- 'spec/serializers/activitypub/update_poll_serializer_spec.rb'
- 'spec/services/remove_status_service_spec.rb'
- 'spec/services/search_service_spec.rb'
- 'spec/services/unblock_domain_service_spec.rb'
RSpec/LetSetup:
Exclude:
- 'spec/controllers/admin/accounts_controller_spec.rb'
- 'spec/controllers/admin/action_logs_controller_spec.rb'
- 'spec/controllers/admin/instances_controller_spec.rb'
- 'spec/controllers/admin/reports/actions_controller_spec.rb'
- 'spec/controllers/admin/statuses_controller_spec.rb'
- 'spec/controllers/api/v1/accounts/statuses_controller_spec.rb'
- 'spec/controllers/api/v1/filters_controller_spec.rb'
- 'spec/controllers/api/v2/admin/accounts_controller_spec.rb'
@@ -177,30 +87,6 @@ RSpec/LetSetup:
- 'spec/services/unsuspend_account_service_spec.rb'
- 'spec/workers/scheduler/user_cleanup_scheduler_spec.rb'
RSpec/MessageChain:
Exclude:
- 'spec/models/concerns/remotable_spec.rb'
- 'spec/models/session_activation_spec.rb'
- 'spec/models/setting_spec.rb'
# Configuration parameters: EnforcedStyle.
# SupportedStyles: have_received, receive
RSpec/MessageSpies:
Exclude:
- 'spec/controllers/admin/accounts_controller_spec.rb'
- 'spec/helpers/admin/account_moderation_notes_helper_spec.rb'
- 'spec/lib/webfinger_resource_spec.rb'
- 'spec/models/admin/account_action_spec.rb'
- 'spec/models/concerns/remotable_spec.rb'
- 'spec/models/follow_request_spec.rb'
- 'spec/models/identity_spec.rb'
- 'spec/models/session_activation_spec.rb'
- 'spec/models/setting_spec.rb'
- 'spec/services/activitypub/fetch_replies_service_spec.rb'
- 'spec/services/activitypub/process_collection_service_spec.rb'
- 'spec/spec_helper.rb'
- 'spec/validators/status_length_validator_spec.rb'
RSpec/MultipleExpectations:
Max: 8
@@ -217,41 +103,15 @@ Rails/ApplicationController:
Exclude:
- 'app/controllers/health_controller.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: Severity.
Rails/DuplicateAssociation:
Exclude:
- 'app/serializers/activitypub/collection_serializer.rb'
- 'app/serializers/activitypub/note_serializer.rb'
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/HasAndBelongsToMany:
Exclude:
- 'app/models/concerns/account_associations.rb'
- 'app/models/concerns/account/associations.rb'
- 'app/models/preview_card.rb'
- 'app/models/status.rb'
- 'app/models/tag.rb'
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/HasManyOrHasOneDependent:
Exclude:
- 'app/models/concerns/account_counters.rb'
- 'app/models/conversation.rb'
- 'app/models/custom_emoji.rb'
- 'app/models/custom_emoji_category.rb'
- 'app/models/domain_block.rb'
- 'app/models/invite.rb'
- 'app/models/status.rb'
- 'app/models/user.rb'
- 'app/models/web/push_subscription.rb'
Rails/I18nLocaleTexts:
Exclude:
- 'lib/tasks/mastodon.rake'
- 'spec/helpers/flashes_helper_spec.rb'
# Configuration parameters: Include.
# Include: app/controllers/**/*.rb, app/mailers/**/*.rb
Rails/LexicallyScopedActionFilter:
@@ -259,23 +119,6 @@ Rails/LexicallyScopedActionFilter:
- 'app/controllers/auth/passwords_controller.rb'
- 'app/controllers/auth/registrations_controller.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Rails/NegateInclude:
Exclude:
- 'app/controllers/concerns/signature_verification.rb'
- 'app/helpers/jsonld_helper.rb'
- 'app/lib/activitypub/activity/create.rb'
- 'app/lib/activitypub/activity/move.rb'
- 'app/lib/feed_manager.rb'
- 'app/lib/link_details_extractor.rb'
- 'app/models/concerns/attachmentable.rb'
- 'app/models/concerns/remotable.rb'
- 'app/models/custom_filter.rb'
- 'app/services/activitypub/process_status_update_service.rb'
- 'app/services/fetch_link_card_service.rb'
- 'app/workers/web/push_notification_worker.rb'
- 'lib/paperclip/color_extractor.rb'
Rails/OutputSafety:
Exclude:
- 'config/initializers/simple_form.rb'
@@ -298,7 +141,7 @@ Rails/SkipsModelValidations:
Exclude:
- 'app/controllers/admin/invites_controller.rb'
- 'app/controllers/concerns/session_tracking_concern.rb'
- 'app/models/concerns/account_merging.rb'
- 'app/models/concerns/account/merging.rb'
- 'app/models/concerns/expireable.rb'
- 'app/models/status.rb'
- 'app/models/trends/links.rb'
@@ -321,24 +164,7 @@ Rails/SkipsModelValidations:
- 'app/workers/move_worker.rb'
- 'app/workers/scheduler/ip_cleanup_scheduler.rb'
- 'app/workers/scheduler/scheduled_statuses_scheduler.rb'
- 'db/migrate/20161203164520_add_from_account_id_to_notifications.rb'
- 'db/migrate/20170105224407_add_shortcode_to_media_attachments.rb'
- 'db/migrate/20170209184350_add_reply_to_statuses.rb'
- 'db/migrate/20170304202101_add_type_to_media_attachments.rb'
- 'db/migrate/20180528141303_fix_accounts_unique_index.rb'
- 'db/migrate/20180609104432_migrate_web_push_subscriptions2.rb'
- 'db/migrate/20181207011115_downcase_custom_emoji_domains.rb'
- 'db/migrate/20190511134027_add_silenced_at_suspended_at_to_accounts.rb'
- 'db/migrate/20191007013357_update_pt_locales.rb'
- 'db/migrate/20220316233212_update_kurdish_locales.rb'
- 'db/post_migrate/20190511152737_remove_suspended_silenced_account_fields.rb'
- 'db/post_migrate/20200917193528_migrate_notifications_type.rb'
- 'db/post_migrate/20201017234926_fill_account_suspension_origin.rb'
- 'db/post_migrate/20220617202502_migrate_roles.rb'
- 'db/post_migrate/20221101190723_backfill_admin_action_logs.rb'
- 'db/post_migrate/20221206114142_backfill_admin_action_logs_again.rb'
- 'lib/mastodon/cli/accounts.rb'
- 'lib/mastodon/cli/main.rb'
- 'lib/mastodon/cli/maintenance.rb'
- 'spec/lib/activitypub/activity/follow_spec.rb'
- 'spec/services/follow_service_spec.rb'
@@ -353,19 +179,6 @@ Rails/UniqueValidationWithoutIndex:
- 'app/models/identity.rb'
- 'app/models/webauthn_credential.rb'
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/UnusedIgnoredColumns:
Exclude:
- 'app/models/account.rb'
- 'app/models/account_stat.rb'
- 'app/models/admin/action_log.rb'
- 'app/models/custom_filter.rb'
- 'app/models/email_domain_block.rb'
- 'app/models/report.rb'
- 'app/models/status_edit.rb'
- 'app/models/user.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: exists, where
@@ -379,7 +192,7 @@ Rails/WhereExists:
- 'app/lib/feed_manager.rb'
- 'app/lib/status_cache_hydrator.rb'
- 'app/lib/suspicious_sign_in_detector.rb'
- 'app/models/concerns/account_interactions.rb'
- 'app/models/concerns/account/interactions.rb'
- 'app/models/featured_tag.rb'
- 'app/models/poll.rb'
- 'app/models/session_activation.rb'
@@ -431,11 +244,10 @@ Style/FetchEnvVar:
- 'config/initializers/3_omniauth.rb'
- 'config/initializers/blacklists.rb'
- 'config/initializers/cache_buster.rb'
- 'config/initializers/content_security_policy.rb'
- 'config/initializers/devise.rb'
- 'config/initializers/paperclip.rb'
- 'config/initializers/vapid.rb'
- 'lib/mastodon/premailer_webpack_strategy.rb'
- 'lib/premailer_webpack_strategy.rb'
- 'lib/mastodon/redis_config.rb'
- 'lib/tasks/repo.rake'
- 'spec/features/profile_spec.rb'
@@ -470,8 +282,8 @@ Style/GuardClause:
- 'app/lib/request_pool.rb'
- 'app/lib/webfinger.rb'
- 'app/lib/webfinger_resource.rb'
- 'app/models/concerns/account_counters.rb'
- 'app/models/concerns/ldap_authenticable.rb'
- 'app/models/concerns/account/counters.rb'
- 'app/models/concerns/user/ldap_authenticable.rb'
- 'app/models/tag.rb'
- 'app/models/user.rb'
- 'app/services/fan_out_on_write_service.rb'
@@ -485,8 +297,8 @@ Style/GuardClause:
- 'config/initializers/devise.rb'
- 'db/migrate/20170901141119_truncate_preview_cards.rb'
- 'db/post_migrate/20220704024901_migrate_settings_to_user_roles.rb'
- 'lib/devise/two_factor_ldap_authenticatable.rb'
- 'lib/devise/two_factor_pam_authenticatable.rb'
- 'lib/devise/strategies/two_factor_ldap_authenticatable.rb'
- 'lib/devise/strategies/two_factor_pam_authenticatable.rb'
- 'lib/mastodon/cli/accounts.rb'
- 'lib/mastodon/cli/maintenance.rb'
- 'lib/mastodon/cli/media.rb'
@@ -500,8 +312,8 @@ Style/HashAsLastArrayItem:
Exclude:
- 'app/controllers/admin/statuses_controller.rb'
- 'app/controllers/api/v1/statuses_controller.rb'
- 'app/models/concerns/account_counters.rb'
- 'app/models/concerns/status_threading_concern.rb'
- 'app/models/concerns/account/counters.rb'
- 'app/models/concerns/status/threading_concern.rb'
- 'app/models/status.rb'
- 'app/services/batched_remove_status_service.rb'
- 'app/services/notify_service.rb'
@@ -520,22 +332,6 @@ Style/IfUnlessModifier:
- 'config/initializers/devise.rb'
- 'config/initializers/ffmpeg.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: InverseMethods, InverseBlocks.
Style/InverseMethods:
Exclude:
- 'app/models/custom_filter.rb'
- 'app/services/update_account_service.rb'
- 'spec/controllers/activitypub/replies_controller_spec.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: line_count_dependent, lambda, literal
Style/Lambda:
Exclude:
- 'config/initializers/simple_form.rb'
- 'config/routes.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/MapToHash:
Exclude:
@@ -600,48 +396,26 @@ Style/RedundantFetchBlock:
- 'config/initializers/paperclip.rb'
- 'config/puma.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowMultipleReturnValues.
Style/RedundantReturn:
Exclude:
- 'app/controllers/api/v1/directories_controller.rb'
- 'app/controllers/auth/confirmations_controller.rb'
- 'app/lib/ostatus/tag_manager.rb'
- 'app/models/form/import.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods, MaxChainLength.
# AllowedMethods: present?, blank?, presence, try, try!
Style/SafeNavigation:
Exclude:
- 'app/models/concerns/account_finder_concern.rb'
- 'app/models/concerns/account/finder_concern.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: only_raise, only_fail, semantic
Style/SignalException:
Exclude:
- 'lib/devise/two_factor_ldap_authenticatable.rb'
- 'lib/devise/two_factor_pam_authenticatable.rb'
- 'lib/devise/strategies/two_factor_ldap_authenticatable.rb'
- 'lib/devise/strategies/two_factor_pam_authenticatable.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/SingleArgumentDig:
Exclude:
- 'lib/webpacker/manifest_extensions.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: require_parentheses, require_no_parentheses
Style/StabbyLambdaParentheses:
Exclude:
- 'config/environments/production.rb'
- 'config/initializers/content_security_policy.rb'
# This cop supports safe autocorrection (--autocorrect).
Style/StderrPuts:
Exclude:
- 'config/boot.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Mode.
Style/StringConcatenation:
@@ -660,13 +434,6 @@ Style/StringLiterals:
- 'config/initializers/webauthn.rb'
- 'config/routes.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowMethodsWithArguments, AllowedMethods, AllowedPatterns, AllowComments.
# AllowedMethods: define_method, mail, respond_to
Style/SymbolProc:
Exclude:
- 'config/initializers/3_omniauth.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, AllowSafeAssignment.
# SupportedStyles: require_parentheses, require_no_parentheses, require_parentheses_when_complex
@@ -695,5 +462,3 @@ Style/TrailingCommaInHashLiteral:
Style/WordArray:
Exclude:
- 'app/helpers/languages_helper.rb'
- 'spec/controllers/settings/imports_controller_spec.rb'
- 'spec/models/form/import_spec.rb'

22
.simplecov Normal file
View File

@@ -0,0 +1,22 @@
# frozen_string_literal: true
if ENV['CI']
require 'simplecov-lcov'
SimpleCov::Formatter::LcovFormatter.config.report_with_single_file = true
SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter
else
SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
end
SimpleCov.start 'rails' do
enable_coverage :branch
add_filter 'lib/linter'
add_group 'Libraries', 'lib'
add_group 'Policies', 'app/policies'
add_group 'Presenters', 'app/presenters'
add_group 'Serializers', 'app/serializers'
add_group 'Services', 'app/services'
add_group 'Validators', 'app/validators'
end

3
.watchmanconfig Normal file
View File

@@ -0,0 +1,3 @@
{
"ignore_dirs": ["node_modules/", "public/"]
}

0
.yarn/.gitkeep Normal file
View File

View File

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

View File

@@ -0,0 +1,22 @@
diff --git a/dist/index.js b/dist/index.js
index 57e375592d984e9a429bcd9f800fa2d15cd662e4..0c47d96df3608e23adfd77d887a8f72abbd501c0 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
});
exports.default = void 0;
-var _crypto = _interopRequireDefault(require("crypto"));
+var _createHash = _interopRequireDefault(require("webpack/lib/util/createHash"));
var _path = _interopRequireDefault(require("path"));
@@ -227,7 +227,7 @@ class CompressionPlugin {
originalAlgorithm: this.options.algorithm,
compressionOptions: this.options.compressionOptions,
name,
- contentHash: _crypto.default.createHash("md4").update(input).digest("hex")
+ contentHash: _createHash.default("md4").update(input).digest("hex")
};
} else {
cacheData.name = (0, _serializeJavascript.default)({

View File

@@ -1,49 +0,0 @@
# test directories
__tests__
test
tests
powered-test
# asset directories
docs
doc
website
images
# assets
# examples
example
examples
# code coverage directories
coverage
.nyc_output
# build scripts
Makefile
Gulpfile.js
Gruntfile.js
# configs
.tern-project
.gitattributes
.editorconfig
.*ignore
.eslintrc
.jshintrc
.flowconfig
.documentup.json
.yarn-metadata.json
.*.yml
*.yml
# misc
*.gz
*.md
# for specific ignore
!.svgo.yml
!sass-lint/**/*.yml
# breaks lint-staged or generally anything using https://github.com/eemeli/yaml/issues/384
!**/yaml/dist/**/doc

1
.yarnrc.yml Normal file
View File

@@ -0,0 +1 @@
nodeLinker: node-modules

View File

@@ -50,6 +50,10 @@ You can contribute in the following ways:
If your contributions are accepted into Mastodon, you can request to be paid through [our OpenCollective](https://opencollective.com/mastodon).
## API Changes and Additions
Please note that any changes or additions made to the API should have an accompanying pull request on [our documentation repository](https://github.com/mastodon/documentation).
## Bug reports
Bug reports and feature suggestions must use descriptive and concise titles and be submitted to [GitHub Issues](https://github.com/mastodon/mastodon/issues). Please use the search function to make sure that you are not submitting duplicates, and that a similar report or request has not already been resolved or rejected.

View File

@@ -1,105 +1,259 @@
# syntax=docker/dockerfile:1.4
# This needs to be bookworm-slim because the Ruby image is built on bookworm-slim
ARG NODE_VERSION="20.8-bookworm-slim"
FROM ghcr.io/moritzheiber/ruby-jemalloc:3.2.2-slim as ruby
FROM node:${NODE_VERSION} as build
# Please see https://docs.docker.com/engine/reference/builder for information about
# the extended buildx capabilities used in this file.
# Make sure multiarch TARGETPLATFORM is available for interpolation
# See: https://docs.docker.com/build/building/multi-platform/
ARG TARGETPLATFORM=${TARGETPLATFORM}
ARG BUILDPLATFORM=${BUILDPLATFORM}
COPY --link --from=ruby /opt/ruby /opt/ruby
# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.2.2"]
ARG RUBY_VERSION="3.2.2"
# # Node version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="20"]
ARG NODE_MAJOR_VERSION="20"
# Debian image to use for base image, change with [--build-arg DEBIAN_VERSION="bookworm"]
ARG DEBIAN_VERSION="bookworm"
# Node image to use for base image based on combined variables (ex: 20-bookworm-slim)
FROM docker.io/node:${NODE_MAJOR_VERSION}-${DEBIAN_VERSION}-slim as node
# Ruby image to use for base image based on combined variables (ex: 3.2.2-slim-bookworm)
FROM docker.io/ruby:${RUBY_VERSION}-slim-${DEBIAN_VERSION} as ruby
ENV DEBIAN_FRONTEND="noninteractive" \
PATH="${PATH}:/opt/ruby/bin"
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
WORKDIR /opt/mastodon
COPY Gemfile* package.json yarn.lock /opt/mastodon/
# hadolint ignore=DL3008
RUN apt-get update && \
apt-get -yq dist-upgrade && \
apt-get install -y --no-install-recommends build-essential \
git \
libicu-dev \
libidn-dev \
libpq-dev \
libjemalloc-dev \
zlib1g-dev \
libgdbm-dev \
libgmp-dev \
libssl-dev \
libyaml-dev \
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 --production --network-timeout 600000 && \
yarn cache clean
FROM node:${NODE_VERSION}
# Use those args to specify your own version flags & suffixes
# Resulting version string is vX.X.X-MASTODON_VERSION_PRERELEASE+MASTODON_VERSION_METADATA
# Example: v4.2.0-nightly.2023.11.09+something
# Overwrite existance of 'alpha.0' in version.rb [--build-arg MASTODON_VERSION_PRERELEASE="nightly.2023.11.09"]
ARG MASTODON_VERSION_PRERELEASE=""
# Append build metadata or fork information to version.rb [--build-arg MASTODON_VERSION_METADATA="something"]
ARG MASTODON_VERSION_METADATA=""
# Allow Ruby on Rails to serve static files
# See: https://docs.joinmastodon.org/admin/config/#rails_serve_static_files
ARG RAILS_SERVE_STATIC_FILES="true"
# Allow to use YJIT compiler
# See: https://github.com/ruby/ruby/blob/master/doc/yjit/yjit.md
ARG RUBY_YJIT_ENABLE="1"
# Timezone used by the Docker container and runtime, change with [--build-arg TZ=Europe/Berlin]
ARG TZ="Etc/UTC"
# Linux UID (user id) for the mastodon user, change with [--build-arg UID=1234]
ARG UID="991"
# Linux GID (group id) for the mastodon user, change with [--build-arg GID=1234]
ARG GID="991"
COPY --link --from=ruby /opt/ruby /opt/ruby
# Apply Mastodon build options based on options above
ENV \
# Apply Mastodon version information
MASTODON_VERSION_PRERELEASE="${MASTODON_VERSION_PRERELEASE}" \
MASTODON_VERSION_METADATA="${MASTODON_VERSION_METADATA}" \
# Apply Mastodon static files and YJIT options
RAILS_SERVE_STATIC_FILES=${RAILS_SERVE_STATIC_FILES} \
RUBY_YJIT_ENABLE=${RUBY_YJIT_ENABLE} \
# Apply timezone
TZ=${TZ}
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ENV \
# Configure the IP to bind Mastodon to when serving traffic
BIND="0.0.0.0" \
# Use production settings for Yarn, Node and related nodejs based tools
NODE_ENV="production" \
# Use production settings for Ruby on Rails
RAILS_ENV="production" \
# Add Ruby and Mastodon installation to the PATH
DEBIAN_FRONTEND="noninteractive" \
PATH="${PATH}:/opt/ruby/bin:/opt/mastodon/bin" \
# Optimize jemalloc 5.x performance
MALLOC_CONF="narenas:2,background_thread:true,thp:never,dirty_decay_ms:1000,muzzy_decay_ms:0"
ENV DEBIAN_FRONTEND="noninteractive" \
PATH="${PATH}:/opt/ruby/bin:/opt/mastodon/bin"
# Set default shell used for running commands
SHELL ["/bin/bash", "-o", "pipefail", "-o", "errexit", "-c"]
# Ignoring these here since we don't want to pin any versions and the Debian image removes apt-get content after use
# hadolint ignore=DL3008,DL3009
RUN apt-get update && \
echo "Etc/UTC" > /etc/localtime && \
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 \
libssl3 \
libpq5 \
imagemagick \
ffmpeg \
libjemalloc2 \
libicu72 \
libidn12 \
libyaml-0-2 \
file \
ca-certificates \
tzdata \
libreadline8 \
tini && \
ln -s /opt/mastodon /mastodon
ARG TARGETPLATFORM
# 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 echo "Target platform is $TARGETPLATFORM"
COPY --chown=mastodon:mastodon . /opt/mastodon
COPY --chown=mastodon:mastodon --from=build /opt/mastodon /opt/mastodon
RUN \
# Remove automatic apt cache Docker cleanup scripts
rm -f /etc/apt/apt.conf.d/docker-clean; \
# Sets timezone
echo "${TZ}" > /etc/localtime; \
# Creates mastodon user/group and sets home directory
groupadd -g "${GID}" mastodon; \
useradd -l -u "${UID}" -g "${GID}" -m -d /opt/mastodon mastodon; \
# Creates /mastodon symlink to /opt/mastodon
ln -s /opt/mastodon /mastodon;
ENV RAILS_ENV="production" \
NODE_ENV="production" \
RAILS_SERVE_STATIC_FILES="true" \
BIND="0.0.0.0" \
MASTODON_VERSION_PRERELEASE="${MASTODON_VERSION_PRERELEASE}" \
MASTODON_VERSION_METADATA="${MASTODON_VERSION_METADATA}"
# Set the run user
USER mastodon
# Set /opt/mastodon as working directory
WORKDIR /opt/mastodon
# Precompile assets
RUN OTP_SECRET=precompile_placeholder SECRET_KEY_BASE=precompile_placeholder rails assets:precompile
# hadolint ignore=DL3008,DL3005
RUN \
# Mount Apt cache and lib directories from Docker buildx caches
--mount=type=cache,id=apt-cache-${TARGETPLATFORM},target=/var/cache/apt,sharing=locked \
--mount=type=cache,id=apt-lib-${TARGETPLATFORM},target=/var/lib/apt,sharing=locked \
# Apt update & upgrade to check for security updates to Debian image
apt-get update; \
apt-get dist-upgrade -yq; \
# Install jemalloc, curl and other necessary components
apt-get install -y --no-install-recommends \
ca-certificates \
curl \
ffmpeg \
file \
imagemagick \
libjemalloc2 \
patchelf \
procps \
tini \
tzdata \
; \
# Patch Ruby to use jemalloc
patchelf --add-needed libjemalloc.so.2 /usr/local/bin/ruby; \
# Discard patchelf after use
apt-get purge -y \
patchelf \
;
# Set the work dir and the container entry point
ENTRYPOINT ["/usr/bin/tini", "--"]
EXPOSE 3000 4000
# Create temporary build layer from base image
FROM ruby as build
# Copy Node package configuration files into working directory
COPY package.json yarn.lock .yarnrc.yml /opt/mastodon/
COPY .yarn /opt/mastodon/.yarn
COPY --from=node /usr/local/bin /usr/local/bin
COPY --from=node /usr/local/lib /usr/local/lib
ARG TARGETPLATFORM
# hadolint ignore=DL3008
RUN \
# Mount Apt cache and lib directories from Docker buildx caches
--mount=type=cache,id=apt-cache-${TARGETPLATFORM},target=/var/cache/apt,sharing=locked \
--mount=type=cache,id=apt-lib-${TARGETPLATFORM},target=/var/lib/apt,sharing=locked \
# Install build tools and bundler dependencies from APT
apt-get install -y --no-install-recommends \
g++ \
gcc \
git \
libgdbm-dev \
libgmp-dev \
libicu-dev \
libidn-dev \
libpq-dev \
libssl-dev \
make \
shared-mime-info \
zlib1g-dev \
;
RUN \
# Configure Corepack
rm /usr/local/bin/yarn*; \
corepack enable; \
corepack prepare --activate;
# Create temporary bundler specific build layer from build layer
FROM build as bundler
ARG TARGETPLATFORM
# Copy Gemfile config into working directory
COPY Gemfile* /opt/mastodon/
RUN \
# Mount Ruby Gem caches
--mount=type=cache,id=gem-cache-${TARGETPLATFORM},target=/usr/local/bundle/cache/,sharing=locked \
# Configure bundle to prevent changes to Gemfile and Gemfile.lock
bundle config set --global frozen "true"; \
# Configure bundle to not cache downloaded Gems
bundle config set --global cache_all "false"; \
# Configure bundle to only process production Gems
bundle config set --local without "development test"; \
# Configure bundle to not warn about root user
bundle config set silence_root_warning "true"; \
# Download and install required Gems
bundle install -j"$(nproc)";
# Create temporary node specific build layer from build layer
FROM build as yarn
ARG TARGETPLATFORM
# Copy Node package configuration files into working directory
COPY package.json yarn.lock .yarnrc.yml /opt/mastodon/
COPY streaming/package.json /opt/mastodon/streaming/
COPY .yarn /opt/mastodon/.yarn
# hadolint ignore=DL3008
RUN \
--mount=type=cache,id=corepack-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/corepack,sharing=locked \
--mount=type=cache,id=yarn-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/yarn,sharing=locked \
# Install Node packages
yarn workspaces focus --production @mastodon/mastodon;
# Create temporary assets build layer from build layer
FROM build as precompiler
# Copy Mastodon sources into precompiler layer
COPY . /opt/mastodon/
# Copy bundler and node packages from build layer to container
COPY --from=yarn /opt/mastodon /opt/mastodon/
COPY --from=bundler /opt/mastodon /opt/mastodon/
COPY --from=bundler /usr/local/bundle/ /usr/local/bundle/
ARG TARGETPLATFORM
RUN \
# Use Ruby on Rails to create Mastodon assets
OTP_SECRET=precompile_placeholder SECRET_KEY_BASE=precompile_placeholder bundle exec rails assets:precompile; \
# Cleanup temporary files
rm -fr /opt/mastodon/tmp;
# Prep final Mastodon Ruby layer
FROM ruby as mastodon
ARG TARGETPLATFORM
# hadolint ignore=DL3008
RUN \
# Mount Apt cache and lib directories from Docker buildx caches
--mount=type=cache,id=apt-cache-${TARGETPLATFORM},target=/var/cache/apt,sharing=locked \
--mount=type=cache,id=apt-lib-${TARGETPLATFORM},target=/var/lib/apt,sharing=locked \
# Mount Corepack and Yarn caches from Docker buildx caches
--mount=type=cache,id=corepack-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/corepack,sharing=locked \
--mount=type=cache,id=yarn-cache-${TARGETPLATFORM},target=/usr/local/share/.cache/yarn,sharing=locked \
# Apt update install non-dev versions of necessary components
apt-get install -y --no-install-recommends \
libssl3 \
libpq5 \
libicu72 \
libidn12 \
libreadline8 \
libyaml-0-2 \
;
# Copy Mastodon sources into final layer
COPY . /opt/mastodon/
# Copy compiled assets to layer
COPY --from=precompiler /opt/mastodon/public/packs /opt/mastodon/public/packs
COPY --from=precompiler /opt/mastodon/public/assets /opt/mastodon/public/assets
# Copy bundler components to layer
COPY --from=bundler /usr/local/bundle/ /usr/local/bundle/
RUN \
# Precompile bootsnap code for faster Rails startup
bundle exec bootsnap precompile --gemfile app/ lib/;
RUN \
# Pre-create and chown system volume to Mastodon user
mkdir -p /opt/mastodon/public/system; \
chown mastodon:mastodon /opt/mastodon/public/system; \
# Set Mastodon user as owner of tmp folder
chown -R mastodon:mastodon /opt/mastodon/tmp;
# Set the running user for resulting container
USER mastodon
# Expose default Puma ports
EXPOSE 3000
# Set container tini as default entry point
ENTRYPOINT ["/usr/bin/tini", "--"]

24
Gemfile
View File

@@ -5,10 +5,13 @@ ruby '>= 3.0.0'
gem 'puma', '~> 6.3'
gem 'rails', '~> 7.1.1'
gem 'sprockets', '~> 3.7.2'
gem 'propshaft'
gem 'thor', '~> 1.2'
gem 'rack', '~> 2.2.7'
# For why irb is in the Gemfile, see: https://ruby.social/@st0012/111444685161478182
gem 'irb', '~> 1.8'
gem 'haml-rails', '~>2.0'
gem 'pg', '~> 1.5'
gem 'pghero'
@@ -16,14 +19,14 @@ gem 'dotenv-rails', '~> 2.8'
gem 'aws-sdk-s3', '~> 1.123', require: false
gem 'fog-core', '<= 2.4.0'
gem 'fog-openstack', '~> 0.3', require: false
gem 'fog-openstack', '~> 1.0', require: false
gem 'kt-paperclip', '~> 7.2'
gem 'md-paperclip-azure', '~> 2.2', require: false
gem 'blurhash', '~> 0.1'
gem 'active_model_serializers', '~> 0.10'
gem 'addressable', '~> 2.8'
gem 'bootsnap', '~> 1.16.0', require: false
gem 'bootsnap', '~> 1.17.0', require: false
gem 'browser'
gem 'charlock_holmes', '~> 0.7.7'
gem 'chewy', '~> 7.3'
@@ -86,9 +89,8 @@ gem 'sidekiq-unique-jobs', '~> 7.1'
gem 'sidekiq-bulk', '~> 0.2.0'
gem 'simple-navigation', '~> 4.4'
gem 'simple_form', '~> 5.2'
gem 'sprockets-rails', '~> 3.4', require: 'sprockets/railtie'
gem 'stoplight', '~> 3.0.1'
gem 'strong_migrations', '~> 0.8'
gem 'strong_migrations', '1.6.4'
gem 'tty-prompt', '~> 0.23', require: false
gem 'twitter-text', '~> 3.1.0'
gem 'tzinfo-data', '~> 1.2023'
@@ -103,15 +105,15 @@ gem 'rdf-normalize', '~> 0.5'
gem 'private_address_check', '~> 0.5'
group :test do
# Used to split testing into chunks in CI
gem 'rspec_chunked', '~> 0.6'
# Adds RSpec Error/Warning annotations to GitHub PRs on the Files tab
gem 'rspec-github', '~> 2.4', require: false
# RSpec progress bar formatter
gem 'fuubar', '~> 2.5'
# RSpec helpers for email specs
gem 'email_spec'
# Extra RSpec extenion methods and helpers for sidekiq
gem 'rspec-sidekiq', '~> 4.0'
@@ -142,6 +144,7 @@ group :test do
# Coverage formatter for RSpec test if DISABLE_SIMPLECOV is false
gem 'simplecov', '~> 0.22', require: false
gem 'simplecov-lcov', '~> 0.8', require: false
# Stub web requests for specs
gem 'webmock', '~> 3.18'
@@ -178,6 +181,9 @@ group :development do
end
group :development, :test do
# Interactive Debugging tools
gem 'debug', '~> 1.8'
# Profiling tools
gem 'memory_profiler', require: false
gem 'ruby-prof', require: false
@@ -198,7 +204,7 @@ gem 'xorcist', '~> 1.1'
gem 'cocoon', '~> 1.2'
gem 'net-http', '~> 0.3.2'
gem 'net-http', '~> 0.4.0'
gem 'rubyzip', '~> 2.3'
gem 'hcaptcha', '~> 7.1'

View File

@@ -39,50 +39,51 @@ GIT
GEM
remote: https://rubygems.org/
specs:
actioncable (7.1.1)
actionpack (= 7.1.1)
activesupport (= 7.1.1)
actioncable (7.1.2)
actionpack (= 7.1.2)
activesupport (= 7.1.2)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
actionmailbox (7.1.1)
actionpack (= 7.1.1)
activejob (= 7.1.1)
activerecord (= 7.1.1)
activestorage (= 7.1.1)
activesupport (= 7.1.1)
actionmailbox (7.1.2)
actionpack (= 7.1.2)
activejob (= 7.1.2)
activerecord (= 7.1.2)
activestorage (= 7.1.2)
activesupport (= 7.1.2)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
actionmailer (7.1.1)
actionpack (= 7.1.1)
actionview (= 7.1.1)
activejob (= 7.1.1)
activesupport (= 7.1.1)
actionmailer (7.1.2)
actionpack (= 7.1.2)
actionview (= 7.1.2)
activejob (= 7.1.2)
activesupport (= 7.1.2)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.2)
actionpack (7.1.1)
actionview (= 7.1.1)
activesupport (= 7.1.1)
actionpack (7.1.2)
actionview (= 7.1.2)
activesupport (= 7.1.2)
nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4)
rack-session (>= 1.0.1)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
actiontext (7.1.1)
actionpack (= 7.1.1)
activerecord (= 7.1.1)
activestorage (= 7.1.1)
activesupport (= 7.1.1)
actiontext (7.1.2)
actionpack (= 7.1.2)
activerecord (= 7.1.2)
activestorage (= 7.1.2)
activesupport (= 7.1.2)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.1.1)
activesupport (= 7.1.1)
actionview (7.1.2)
activesupport (= 7.1.2)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
@@ -92,22 +93,22 @@ GEM
activemodel (>= 4.1)
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
activejob (7.1.1)
activesupport (= 7.1.1)
activejob (7.1.2)
activesupport (= 7.1.2)
globalid (>= 0.3.6)
activemodel (7.1.1)
activesupport (= 7.1.1)
activerecord (7.1.1)
activemodel (= 7.1.1)
activesupport (= 7.1.1)
activemodel (7.1.2)
activesupport (= 7.1.2)
activerecord (7.1.2)
activemodel (= 7.1.2)
activesupport (= 7.1.2)
timeout (>= 0.4.0)
activestorage (7.1.1)
actionpack (= 7.1.1)
activejob (= 7.1.1)
activerecord (= 7.1.1)
activesupport (= 7.1.1)
activestorage (7.1.2)
actionpack (= 7.1.2)
activejob (= 7.1.2)
activerecord (= 7.1.2)
activesupport (= 7.1.2)
marcel (~> 1.0)
activesupport (7.1.1)
activesupport (7.1.2)
base64
bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2)
@@ -117,7 +118,7 @@ GEM
minitest (>= 5.1)
mutex_m
tzinfo (~> 2.0)
addressable (2.8.5)
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
aes_key_wrap (1.1.0)
android_key_attestation (0.3.0)
@@ -129,21 +130,21 @@ GEM
encryptor (~> 3.0.0)
attr_required (1.0.1)
awrence (1.2.1)
aws-eventstream (1.2.0)
aws-partitions (1.809.0)
aws-sdk-core (3.181.0)
aws-eventstream (1.3.0)
aws-partitions (1.857.0)
aws-sdk-core (3.188.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.5)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.71.0)
aws-sdk-core (~> 3, >= 3.177.0)
aws-sdk-kms (1.73.0)
aws-sdk-core (~> 3, >= 3.188.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.133.0)
aws-sdk-core (~> 3, >= 3.181.0)
aws-sdk-s3 (1.140.0)
aws-sdk-core (~> 3, >= 3.188.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.6)
aws-sigv4 (1.6.0)
aws-sigv4 (1.7.0)
aws-eventstream (~> 1, >= 1.0.2)
azure-storage-blob (2.0.3)
azure-storage-common (~> 2.0)
@@ -153,8 +154,9 @@ GEM
faraday_middleware (~> 1.0, >= 1.0.0.rc1)
net-http-persistent (~> 4.0)
nokogiri (~> 1, >= 1.10.8)
base64 (0.1.1)
bcrypt (3.1.19)
base64 (0.2.0)
bcp47_spec (0.2.1)
bcrypt (3.1.20)
better_errors (2.10.1)
erubi (>= 1.0.0)
rack (>= 0.9.0)
@@ -166,14 +168,14 @@ GEM
erubi (~> 1.4)
parser (>= 2.4)
smart_properties
bigdecimal (3.1.4)
bigdecimal (3.1.5)
bindata (2.4.15)
binding_of_caller (1.0.0)
debug_inspector (>= 0.0.1)
blurhash (0.1.7)
bootsnap (1.16.0)
bootsnap (1.17.0)
msgpack (~> 1.2)
brakeman (6.0.1)
brakeman (6.1.0)
browser (5.3.1)
brpoplpush-redis_script (0.1.3)
concurrent-ruby (~> 1.0, >= 1.0.5)
@@ -195,7 +197,7 @@ GEM
activesupport
cbor (0.5.9.6)
charlock_holmes (0.7.7)
chewy (7.3.4)
chewy (7.4.0)
activesupport (>= 5.2)
elasticsearch (>= 7.12.0, < 7.14.0)
elasticsearch-dsl
@@ -217,7 +219,10 @@ GEM
activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
date (3.3.3)
date (3.3.4)
debug (1.9.0)
irb (~> 1.10)
reline (>= 0.3.8)
debug_inspector (1.1.0)
devise (4.9.3)
bcrypt (~> 3.0)
@@ -235,18 +240,18 @@ GEM
devise (>= 4.0.0)
rpam2 (~> 4.0)
diff-lcs (1.5.0)
discard (1.2.1)
discard (1.3.0)
activerecord (>= 4.2, < 8)
docile (1.4.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
doorkeeper (5.6.6)
doorkeeper (5.6.8)
railties (>= 5)
dotenv (2.8.1)
dotenv-rails (2.8.1)
dotenv (= 2.8.1)
railties (>= 3.2)
drb (2.1.1)
drb (2.2.0)
ruby2_keywords
ed25519 (1.3.0)
elasticsearch (7.13.3)
@@ -258,13 +263,17 @@ GEM
elasticsearch-transport (7.13.3)
faraday (~> 1)
multi_json
email_spec (2.2.2)
htmlentities (~> 4.3.3)
launchy (~> 2.1)
mail (~> 2.7)
encryptor (3.0.0)
erubi (1.12.0)
et-orbi (1.2.7)
tzinfo
excon (0.100.0)
fabrication (2.30.0)
faker (3.2.1)
excon (0.104.0)
fabrication (2.31.0)
faker (3.2.2)
i18n (>= 1.8.11, < 2)
faraday (1.10.3)
faraday-em_http (~> 1.0)
@@ -297,19 +306,18 @@ GEM
ffi-compiler (1.0.1)
ffi (>= 1.0.0)
rake
fog-core (2.1.0)
fog-core (2.3.0)
builder
excon (~> 0.58)
formatador (~> 0.2)
excon (~> 0.71)
formatador (>= 0.2, < 2.0)
mime-types
fog-json (1.2.0)
fog-core
multi_json (~> 1.10)
fog-openstack (0.3.10)
fog-core (>= 1.45, <= 2.1.0)
fog-openstack (1.1.0)
fog-core (~> 2.1)
fog-json (>= 1.0)
ipaddress (>= 0.8)
formatador (0.3.0)
formatador (1.1.0)
fugit (1.8.1)
et-orbi (~> 1, >= 1.2.7)
raabro (~> 1.4)
@@ -318,7 +326,7 @@ GEM
ruby-progressbar (~> 1.4)
globalid (1.2.1)
activesupport (>= 6.1)
haml (6.2.0)
haml (6.3.0)
temple (>= 0.8.2)
thor
tilt
@@ -327,7 +335,7 @@ GEM
activesupport (>= 5.1)
haml (>= 4.0.6)
railties (>= 5.1)
haml_lint (0.51.0)
haml_lint (0.52.0)
haml (>= 4.0)
parallel (~> 1.10)
rainbow
@@ -369,29 +377,28 @@ GEM
terminal-table (>= 1.5.1)
idn-ruby (0.1.5)
io-console (0.6.0)
ipaddress (0.8.3)
irb (1.8.1)
irb (1.10.1)
rdoc
reline (>= 0.3.8)
jmespath (1.6.2)
json (2.6.3)
json-canonicalization (0.3.2)
json (2.7.1)
json-canonicalization (1.0.0)
json-jwt (1.15.3)
activesupport (>= 4.2)
aes_key_wrap
bindata
httpclient
json-ld (3.2.5)
json-ld (3.3.1)
htmlentities (~> 4.3)
json-canonicalization (~> 0.3, >= 0.3.2)
json-canonicalization (~> 1.0)
link_header (~> 0.0, >= 0.0.8)
multi_json (~> 1.15)
rack (>= 2.2, < 4)
rdf (~> 3.2, >= 3.2.10)
json-ld-preloaded (3.2.2)
json-ld (~> 3.2)
rdf (~> 3.2)
json-schema (4.0.0)
rdf (~> 3.3)
json-ld-preloaded (3.3.0)
json-ld (~> 3.3)
rdf (~> 3.3)
json-schema (4.1.1)
addressable (>= 2.8)
jsonapi-renderer (0.2.2)
jwt (2.7.1)
@@ -432,7 +439,7 @@ GEM
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
loofah (2.21.4)
loofah (2.22.0)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.8.1)
@@ -451,33 +458,34 @@ GEM
memory_profiler (1.0.1)
mime-types (3.5.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2023.0808)
mime-types-data (3.2023.1003)
mini_mime (1.1.5)
mini_portile2 (2.8.4)
mini_portile2 (2.8.5)
minitest (5.20.0)
msgpack (1.7.1)
msgpack (1.7.2)
multi_json (1.15.0)
multipart-post (2.3.0)
mutex_m (0.1.2)
net-http (0.3.2)
mutex_m (0.2.0)
net-http (0.4.0)
uri
net-http-persistent (4.0.2)
connection_pool (~> 2.2)
net-imap (0.4.1)
net-imap (0.4.4)
date
net-protocol
net-ldap (0.18.0)
net-pop (0.1.2)
net-protocol
net-protocol (0.2.1)
net-protocol (0.2.2)
timeout
net-smtp (0.4.0)
net-protocol
nio4r (2.5.9)
nokogiri (1.15.4)
nokogiri (1.15.5)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
oj (3.16.1)
oj (3.16.3)
bigdecimal (>= 3.0)
omniauth (2.1.1)
hashie (>= 3.4.6)
rack (>= 2.2.3)
@@ -507,7 +515,7 @@ GEM
openssl (> 2.0)
orm_adapter (0.5.0)
ox (2.14.17)
parallel (1.23.0)
parallel (1.24.0)
parser (3.2.2.4)
ast (~> 2.4.1)
racc
@@ -515,7 +523,7 @@ GEM
pastel (0.8.0)
tty-color (~> 0.5)
pg (1.5.4)
pghero (3.3.4)
pghero (3.4.0)
activerecord (>= 6)
posix-spawn (0.3.15)
premailer (1.21.0)
@@ -527,15 +535,20 @@ GEM
net-smtp
premailer (~> 1.7, >= 1.7.9)
private_address_check (0.5.0)
psych (5.1.1)
propshaft (0.8.0)
actionpack (>= 7.0.0)
activesupport (>= 7.0.0)
rack
railties (>= 7.0.0)
psych (5.1.1.1)
stringio
public_suffix (5.0.3)
public_suffix (5.0.4)
puma (6.4.0)
nio4r (~> 2.0)
pundit (2.3.0)
pundit (2.3.1)
activesupport (>= 3.0.0)
raabro (1.4.0)
racc (1.7.1)
racc (1.7.3)
rack (2.2.8)
rack-attack (6.7.0)
rack (>= 1.0, < 4)
@@ -558,20 +571,20 @@ GEM
rackup (1.0.0)
rack (< 3)
webrick
rails (7.1.1)
actioncable (= 7.1.1)
actionmailbox (= 7.1.1)
actionmailer (= 7.1.1)
actionpack (= 7.1.1)
actiontext (= 7.1.1)
actionview (= 7.1.1)
activejob (= 7.1.1)
activemodel (= 7.1.1)
activerecord (= 7.1.1)
activestorage (= 7.1.1)
activesupport (= 7.1.1)
rails (7.1.2)
actioncable (= 7.1.2)
actionmailbox (= 7.1.2)
actionmailer (= 7.1.2)
actionpack (= 7.1.2)
actiontext (= 7.1.2)
actionview (= 7.1.2)
activejob (= 7.1.2)
activemodel (= 7.1.2)
activerecord (= 7.1.2)
activestorage (= 7.1.2)
activesupport (= 7.1.2)
bundler (>= 1.15.0)
railties (= 7.1.1)
railties (= 7.1.2)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
@@ -586,21 +599,22 @@ GEM
rails-i18n (7.0.8)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
railties (7.1.1)
actionpack (= 7.1.1)
activesupport (= 7.1.1)
railties (7.1.2)
actionpack (= 7.1.2)
activesupport (= 7.1.2)
irb
rackup (>= 1.0.0)
rake (>= 12.2)
thor (~> 1.0, >= 1.2.2)
zeitwerk (~> 2.6)
rainbow (3.1.1)
rake (13.0.6)
rdf (3.2.11)
rake (13.1.0)
rdf (3.3.1)
bcp47_spec (~> 0.2)
link_header (~> 0.0, >= 0.0.8)
rdf-normalize (0.6.1)
rdf (~> 3.2)
rdoc (6.5.0)
rdoc (6.6.1)
psych (>= 4.0.0)
redcarpet (3.6.0)
redis (4.8.1)
@@ -608,8 +622,8 @@ GEM
redis (>= 4)
redlock (1.3.2)
redis (>= 3.0.0, < 6.0)
regexp_parser (2.8.2)
reline (0.3.9)
regexp_parser (2.8.3)
reline (0.4.1)
io-console (~> 0.5)
request_store (1.5.1)
rack (>= 1.4)
@@ -631,10 +645,10 @@ GEM
rspec-support (~> 3.12.0)
rspec-github (2.4.0)
rspec-core (~> 3.0)
rspec-mocks (3.12.5)
rspec-mocks (3.12.6)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-rails (6.0.3)
rspec-rails (6.1.0)
actionpack (>= 6.1)
activesupport (>= 6.1)
railties (>= 6.1)
@@ -642,15 +656,13 @@ GEM
rspec-expectations (~> 3.12)
rspec-mocks (~> 3.12)
rspec-support (~> 3.12)
rspec-sidekiq (4.0.1)
rspec-sidekiq (4.1.0)
rspec-core (~> 3.0)
rspec-expectations (~> 3.0)
rspec-mocks (~> 3.0)
sidekiq (>= 5, < 8)
rspec-support (3.12.1)
rspec_chunked (0.6)
rubocop (1.57.1)
base64 (~> 0.1.1)
rubocop (1.59.0)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
@@ -658,24 +670,25 @@ GEM
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.28.1, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.29.0)
rubocop-ast (1.30.0)
parser (>= 3.2.1.0)
rubocop-capybara (2.19.0)
rubocop (~> 1.41)
rubocop-factory_bot (2.23.1)
rubocop-factory_bot (2.24.0)
rubocop (~> 1.33)
rubocop-performance (1.19.1)
rubocop (>= 1.7.0, < 2.0)
rubocop-ast (>= 0.4.0)
rubocop-rails (2.20.2)
rubocop-performance (1.20.0)
rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
rubocop-rails (2.23.0)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
rubocop-rspec (2.23.2)
rubocop (~> 1.33)
rubocop-ast (>= 1.30.0, < 2.0)
rubocop-rspec (2.25.0)
rubocop (~> 1.40)
rubocop-capybara (~> 2.17)
rubocop-factory_bot (~> 2.22)
ruby-prof (1.6.3)
@@ -689,13 +702,13 @@ GEM
fugit (~> 1.1, >= 1.1.6)
safety_net_attestation (0.4.0)
jwt (~> 2.0)
sanitize (6.0.2)
sanitize (6.1.0)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
scenic (1.7.0)
activerecord (>= 4.0.0)
railties (>= 4.0.0)
selenium-webdriver (4.13.1)
selenium-webdriver (4.16.0)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
websocket (~> 1.0)
@@ -710,7 +723,7 @@ GEM
rufus-scheduler (~> 3.2)
sidekiq (>= 6, < 8)
tilt (>= 1.4.0)
sidekiq-unique-jobs (7.1.29)
sidekiq-unique-jobs (7.1.30)
brpoplpush-redis_script (> 0.1.1, <= 2.0.0)
concurrent-ruby (~> 1.0, >= 1.0.5)
redis (< 5.0)
@@ -718,7 +731,7 @@ GEM
thor (>= 0.20, < 3.0)
simple-navigation (4.4.0)
activesupport (>= 2.3.2)
simple_form (5.2.0)
simple_form (5.3.0)
actionpack (>= 5.2)
activemodel (>= 5.2)
simplecov (0.22.0)
@@ -726,36 +739,30 @@ GEM
simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1)
simplecov-html (0.12.3)
simplecov-lcov (0.8.0)
simplecov_json_formatter (0.1.4)
smart_properties (1.17.0)
sprockets (3.7.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.4.2)
actionpack (>= 5.2)
activesupport (>= 5.2)
sprockets (>= 3.0.0)
stackprof (0.2.25)
statsd-ruby (1.5.0)
stoplight (3.0.2)
redlock (~> 1.0)
stringio (3.0.8)
strong_migrations (0.8.0)
stringio (3.1.0)
strong_migrations (1.6.4)
activerecord (>= 5.2)
swd (1.3.0)
activesupport (>= 3)
attr_required (>= 0.0.5)
httpclient (>= 2.4)
sysexits (1.2.0)
temple (0.10.2)
temple (0.10.3)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
terrapin (0.6.0)
climate_control (>= 0.0.3, < 1.0)
test-prof (1.2.3)
thor (1.2.2)
test-prof (1.3.1)
thor (1.3.0)
tilt (2.3.0)
timeout (0.4.0)
timeout (0.4.1)
tpm-key_attestation (0.12.0)
bindata (~> 2.4)
openssl (> 2.0)
@@ -833,7 +840,7 @@ DEPENDENCIES
better_errors (~> 2.9)
binding_of_caller (~> 1.0)
blurhash (~> 0.1)
bootsnap (~> 1.16.0)
bootsnap (~> 1.17.0)
brakeman (~> 6.0)
browser
bundler-audit (~> 0.9)
@@ -846,6 +853,7 @@ DEPENDENCIES
concurrent-ruby
connection_pool
database_cleaner-active_record
debug (~> 1.8)
devise (~> 4.9)
devise-two-factor (~> 4.1)
devise_pam_authenticatable2 (~> 9.2)
@@ -853,12 +861,13 @@ DEPENDENCIES
doorkeeper (~> 5.6)
dotenv-rails (~> 2.8)
ed25519 (~> 1.3)
email_spec
fabrication (~> 2.30)
faker (~> 3.2)
fast_blank (~> 1.0)
fastimage
fog-core (<= 2.4.0)
fog-openstack (~> 0.3)
fog-openstack (~> 1.0)
fuubar (~> 2.5)
haml-rails (~> 2.0)
haml_lint
@@ -870,6 +879,7 @@ DEPENDENCIES
httplog (~> 1.6.2)
i18n-tasks (~> 1.0)
idn-ruby
irb (~> 1.8)
json-ld
json-ld-preloaded (~> 3.2)
json-schema (~> 4.0)
@@ -883,7 +893,7 @@ DEPENDENCIES
md-paperclip-azure (~> 2.2)
memory_profiler
mime-types (~> 3.5.0)
net-http (~> 0.3.2)
net-http (~> 0.4.0)
net-ldap (~> 0.18)
nokogiri (~> 1.15)
nsa!
@@ -900,6 +910,7 @@ DEPENDENCIES
posix-spawn
premailer-rails
private_address_check (~> 0.5)
propshaft
public_suffix (~> 5.0)
puma (~> 6.3)
pundit (~> 2.3)
@@ -919,7 +930,6 @@ DEPENDENCIES
rspec-github (~> 2.4)
rspec-rails (~> 6.0)
rspec-sidekiq (~> 4.0)
rspec_chunked (~> 0.6)
rubocop
rubocop-capybara
rubocop-performance
@@ -938,11 +948,10 @@ DEPENDENCIES
simple-navigation (~> 4.4)
simple_form (~> 5.2)
simplecov (~> 0.22)
sprockets (~> 3.7.2)
sprockets-rails (~> 3.4)
simplecov-lcov (~> 0.8)
stackprof
stoplight (~> 3.0.1)
strong_migrations (~> 0.8)
strong_migrations (= 1.6.4)
test-prof
thor (~> 1.2)
tty-prompt (~> 0.23)

View File

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

View File

@@ -17,6 +17,6 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through
| ------- | ---------------- |
| 4.2.x | Yes |
| 4.1.x | Yes |
| 4.0.x | Until 2023-10-31 |
| 4.0.x | No |
| 3.5.x | Until 2023-12-31 |
| < 3.5 | No |

10
Vagrantfile vendored
View File

@@ -10,7 +10,11 @@ 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_16.x | sudo bash -
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
NODE_MAJOR=20
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt-get update
# 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"]}
@@ -112,11 +116,11 @@ bundle install
# Install node modules
sudo corepack enable
yarn set version classic
corepack prepare
yarn install
# Build Mastodon
export RAILS_ENV=development
export RAILS_ENV=development
export $(cat ".env.vagrant" | xargs)
bundle exec rails db:setup

View File

@@ -1,6 +1,8 @@
# frozen_string_literal: true
class AccountsIndex < Chewy::Index
include DatetimeClampingConcern
settings index: index_preset(refresh_interval: '30s'), analysis: {
filter: {
english_stop: {
@@ -60,7 +62,7 @@ class AccountsIndex < Chewy::Index
field(:following_count, type: 'long')
field(:followers_count, type: 'long')
field(:properties, type: 'keyword', value: ->(account) { account.searchable_properties })
field(:last_status_at, type: 'date', value: ->(account) { account.last_status_at || account.created_at })
field(:last_status_at, type: 'date', value: ->(account) { clamp_date(account.last_status_at || account.created_at) })
field(:display_name, type: 'text', analyzer: 'verbatim') { field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'verbatim' }
field(:username, type: 'text', analyzer: 'verbatim', value: ->(account) { [account.username, account.domain].compact.join('@') }) { field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'verbatim' }
field(:text, type: 'text', analyzer: 'verbatim', value: ->(account) { account.searchable_text }) { field :stemmed, type: 'text', analyzer: 'natural' }

View File

@@ -0,0 +1,14 @@
# frozen_string_literal: true
module DatetimeClampingConcern
extend ActiveSupport::Concern
MIN_ISO8601_DATETIME = '0000-01-01T00:00:00Z'.to_datetime.freeze
MAX_ISO8601_DATETIME = '9999-12-31T23:59:59Z'.to_datetime.freeze
class_methods do
def clamp_date(datetime)
datetime.clamp(MIN_ISO8601_DATETIME, MAX_ISO8601_DATETIME)
end
end
end

View File

@@ -1,6 +1,8 @@
# frozen_string_literal: true
class PublicStatusesIndex < Chewy::Index
include DatetimeClampingConcern
settings index: index_preset(refresh_interval: '30s', number_of_shards: 5), analysis: {
filter: {
english_stop: {
@@ -53,7 +55,7 @@ class PublicStatusesIndex < Chewy::Index
index_scope ::Status.unscoped
.kept
.indexable
.includes(:media_attachments, :preloadable_poll, :preview_cards, :tags)
.includes(:media_attachments, :preloadable_poll, :tags, preview_cards_status: :preview_card)
root date_detection: false do
field(:id, type: 'long')
@@ -62,6 +64,6 @@ class PublicStatusesIndex < Chewy::Index
field(:tags, type: 'text', analyzer: 'hashtag', value: ->(status) { status.tags.map(&:display_name) })
field(:language, type: 'keyword')
field(:properties, type: 'keyword', value: ->(status) { status.searchable_properties })
field(:created_at, type: 'date')
field(:created_at, type: 'date', value: ->(status) { clamp_date(status.created_at) })
end
end

View File

@@ -1,6 +1,8 @@
# frozen_string_literal: true
class StatusesIndex < Chewy::Index
include DatetimeClampingConcern
settings index: index_preset(refresh_interval: '30s', number_of_shards: 5), analysis: {
filter: {
english_stop: {
@@ -50,7 +52,7 @@ class StatusesIndex < Chewy::Index
},
}
index_scope ::Status.unscoped.kept.without_reblogs.includes(:media_attachments, :preview_cards, :local_mentioned, :local_favorited, :local_reblogged, :local_bookmarked, :tags, preloadable_poll: :local_voters), delete_if: ->(status) { status.searchable_by.empty? }
index_scope ::Status.unscoped.kept.without_reblogs.includes(:media_attachments, :local_mentioned, :local_favorited, :local_reblogged, :local_bookmarked, :tags, preview_cards_status: :preview_card, preloadable_poll: :local_voters), delete_if: ->(status) { status.searchable_by.empty? }
root date_detection: false do
field(:id, type: 'long')
@@ -60,6 +62,6 @@ class StatusesIndex < Chewy::Index
field(:searchable_by, type: 'long', value: ->(status) { status.searchable_by })
field(:language, type: 'keyword')
field(:properties, type: 'keyword', value: ->(status) { status.searchable_properties })
field(:created_at, type: 'date')
field(:created_at, type: 'date', value: ->(status) { clamp_date(status.created_at) })
end
end

View File

@@ -1,6 +1,8 @@
# frozen_string_literal: true
class TagsIndex < Chewy::Index
include DatetimeClampingConcern
settings index: index_preset(refresh_interval: '30s'), analysis: {
analyzer: {
content: {
@@ -42,6 +44,6 @@ class TagsIndex < Chewy::Index
field(:name, type: 'text', analyzer: 'content', value: :display_name) { field(:edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content') }
field(:reviewed, type: 'boolean', value: ->(tag) { tag.reviewed? })
field(:usage, type: 'long', value: ->(tag, crutches) { tag.history.aggregate(crutches.time_period).accounts })
field(:last_status_at, type: 'date', value: ->(tag) { tag.last_status_at || tag.created_at })
field(:last_status_at, type: 'date', value: ->(tag) { clamp_date(tag.last_status_at || tag.created_at) })
end
end

View File

@@ -18,8 +18,6 @@ class AccountsController < ApplicationController
respond_to do |format|
format.html do
expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.hour) unless user_signed_in?
@rss_url = rss_url
end
format.rss do
@@ -52,7 +50,7 @@ class AccountsController < ApplicationController
end
def only_media_scope
Status.joins(:media_attachments).merge(@account.media_attachments.reorder(nil)).group(:id)
Status.joins(:media_attachments).merge(@account.media_attachments).group(:id)
end
def no_replies_scope
@@ -84,29 +82,21 @@ class AccountsController < ApplicationController
short_account_url(@account, format: 'rss')
end
end
helper_method :rss_url
def media_requested?
request.path.split('.').first.end_with?('/media') && !tag_requested?
path_without_format.end_with?('/media') && !tag_requested?
end
def replies_requested?
request.path.split('.').first.end_with?('/with_replies') && !tag_requested?
path_without_format.end_with?('/with_replies') && !tag_requested?
end
def tag_requested?
request.path.split('.').first.end_with?(Addressable::URI.parse("/tagged/#{params[:tag]}").normalize)
path_without_format.end_with?(Addressable::URI.parse("/tagged/#{params[:tag]}").normalize)
end
def cached_filtered_status_page
cache_collection_paginated_by_id(
filtered_statuses,
Status,
PAGE_SIZE,
params_slice(:max_id, :min_id, :since_id)
)
end
def params_slice(*keys)
params.slice(*keys).permit(*keys)
def path_without_format
request.path.split('.').first
end
end

View File

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

View File

@@ -16,7 +16,7 @@ module Admin
@moderation_notes = @account.targeted_moderation_notes.latest
@warnings = @account.strikes.custom.latest
render template: 'admin/accounts/show'
render 'admin/accounts/show'
end
end

View File

@@ -6,7 +6,7 @@ module Admin
def index
authorize :audit_log, :index?
@auditable_accounts = Account.where(id: Admin::ActionLog.reorder(nil).select('distinct account_id')).select(:id, :username)
@auditable_accounts = Account.where(id: Admin::ActionLog.select('distinct account_id')).select(:id, :username)
end
private

View File

@@ -20,7 +20,7 @@ class Admin::Disputes::AppealsController < Admin::BaseController
authorize @appeal, :approve?
log_action :reject, @appeal
@appeal.reject!(current_account)
UserMailer.appeal_rejected(@appeal.account.user, @appeal)
UserMailer.appeal_rejected(@appeal.account.user, @appeal).deliver_later
redirect_to disputes_strike_path(@appeal.strike)
end

View File

@@ -33,7 +33,7 @@ module Admin
# Disallow accidentally downgrading a domain block
if existing_domain_block.present? && !@domain_block.stricter_than?(existing_domain_block)
@domain_block.save
@domain_block.validate
flash.now[:alert] = I18n.t('admin.domain_blocks.existing_domain_block_html', name: existing_domain_block.domain, unblock_url: admin_domain_block_path(existing_domain_block)).html_safe
@domain_block.errors.delete(:domain)
return render :new

View File

@@ -4,7 +4,7 @@ require 'csv'
module Admin
class ExportDomainAllowsController < BaseController
include AdminExportControllerConcern
include Admin::ExportControllerConcern
before_action :set_dummy_import!, only: [:new]

View File

@@ -4,7 +4,7 @@ require 'csv'
module Admin
class ExportDomainBlocksController < BaseController
include AdminExportControllerConcern
include Admin::ExportControllerConcern
before_action :set_dummy_import!, only: [:new]

View File

@@ -24,7 +24,7 @@ module Admin
@relay.enable!
redirect_to admin_relays_path
else
render action: :new
render :new
end
end

View File

@@ -26,7 +26,7 @@ module Admin
@form = Admin::StatusBatchAction.new
@statuses = @report.statuses.with_includes
render template: 'admin/reports/show'
render 'admin/reports/show'
end
end

View File

@@ -31,6 +31,11 @@ module Admin
private
def batched_ordered_status_edits
@status.edits.includes(:account, status: [:account]).find_each(order: :asc)
end
helper_method :batched_ordered_status_edits
def admin_status_batch_action_params
params.require(:admin_status_batch_action).permit(status_ids: [])
end

View File

@@ -4,9 +4,10 @@ class Api::BaseController < ApplicationController
DEFAULT_STATUSES_LIMIT = 20
DEFAULT_ACCOUNTS_LIMIT = 40
include RateLimitHeaders
include AccessTokenTrackingConcern
include ApiCachingConcern
include Api::RateLimitHeaders
include Api::AccessTokenTrackingConcern
include Api::CachingConcern
include Api::ContentSecurityPolicy
skip_before_action :require_functional!, unless: :limited_federation_mode?
@@ -17,26 +18,6 @@ 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
@@ -83,7 +64,7 @@ class Api::BaseController < ApplicationController
end
def doorkeeper_unauthorized_render_options(error: nil)
{ json: { error: (error.try(:description) || 'Not authorized') } }
{ json: { error: error.try(:description) || 'Not authorized' } }
end
def doorkeeper_forbidden_render_options(*)
@@ -124,7 +105,11 @@ class Api::BaseController < ApplicationController
end
def require_not_suspended!
render json: { error: 'Your login is currently disabled' }, status: 403 if current_user&.account&.suspended?
render json: { error: 'Your login is currently disabled' }, status: 403 if current_user&.account&.unavailable?
end
def require_valid_pagination_options!
render json: { error: 'Pagination values for `offset` and `limit` must be positive' }, status: 400 if pagination_options_invalid?
end
def require_user!
@@ -155,6 +140,10 @@ class Api::BaseController < ApplicationController
private
def pagination_options_invalid?
params.slice(:limit, :offset).values.map(&:to_i).any?(&:negative?)
end
def respond_with_error(code)
render json: { error: Rack::Utils::HTTP_STATUS_CODES[code] }, status: code
end

View File

@@ -16,6 +16,8 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController
current_user.update(user_params) if user_params
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
render json: @account, serializer: REST::CredentialAccountSerializer
rescue ActiveRecord::RecordInvalid => e
render json: ValidationErrorFormatter.new(e).as_json, status: 422
end
private

View File

@@ -12,7 +12,7 @@ class Api::V1::Accounts::FamiliarFollowersController < Api::BaseController
private
def set_accounts
@accounts = Account.without_suspended.where(id: account_ids).select('id, hide_collections').index_by(&:id).values_at(*account_ids).compact
@accounts = Account.without_suspended.where(id: account_ids).select('id, hide_collections')
end
def familiar_followers

View File

@@ -26,7 +26,7 @@ class Api::V1::Accounts::FollowerAccountsController < Api::BaseController
end
def hide_results?
@account.suspended? || (@account.hides_followers? && current_account&.id != @account.id) || (current_account && @account.blocking?(current_account))
@account.unavailable? || (@account.hides_followers? && current_account&.id != @account.id) || (current_account && @account.blocking?(current_account))
end
def default_accounts

View File

@@ -26,7 +26,7 @@ class Api::V1::Accounts::FollowingAccountsController < Api::BaseController
end
def hide_results?
@account.suspended? || (@account.hides_following? && current_account&.id != @account.id) || (current_account && @account.blocking?(current_account))
@account.unavailable? || (@account.hides_following? && current_account&.id != @account.id) || (current_account && @account.blocking?(current_account))
end
def default_accounts

View File

@@ -25,6 +25,6 @@ class Api::V1::Accounts::NotesController < Api::BaseController
end
def relationships_presenter
AccountRelationshipsPresenter.new([@account.id], current_user.account_id)
AccountRelationshipsPresenter.new([@account], current_user.account_id)
end
end

View File

@@ -25,6 +25,6 @@ class Api::V1::Accounts::PinsController < Api::BaseController
end
def relationships_presenter
AccountRelationshipsPresenter.new([@account.id], current_user.account_id)
AccountRelationshipsPresenter.new([@account], current_user.account_id)
end
end

View File

@@ -5,10 +5,8 @@ class Api::V1::Accounts::RelationshipsController < Api::BaseController
before_action :require_user!
def index
accounts = Account.where(id: account_ids).select('id')
# .where doesn't guarantee that our results are in the same order
# we requested them, so return the "right" order to the requestor.
@accounts = accounts.index_by(&:id).values_at(*account_ids).compact
@accounts = Account.where(id: account_ids).select(:id, :domain)
@accounts.merge!(Account.without_suspended) unless truthy_param?(:with_suspended)
render json: @accounts, each_serializer: REST::RelationshipSerializer, relationships: relationships
end

View File

@@ -19,7 +19,7 @@ class Api::V1::Accounts::StatusesController < Api::BaseController
end
def load_statuses
@account.suspended? ? [] : cached_account_statuses
@account.unavailable? ? [] : cached_account_statuses
end
def cached_account_statuses

View File

@@ -1,6 +1,8 @@
# frozen_string_literal: true
class Api::V1::AccountsController < Api::BaseController
include RegistrationHelper
before_action -> { authorize_if_got_token! :read, :'read:accounts' }, except: [:create, :follow, :unfollow, :remove_from_followers, :block, :unblock, :mute, :unmute]
before_action -> { doorkeeper_authorize! :follow, :write, :'write:follows' }, only: [:follow, :unfollow, :remove_from_followers]
before_action -> { doorkeeper_authorize! :follow, :write, :'write:mutes' }, only: [:mute, :unmute]
@@ -47,7 +49,7 @@ class Api::V1::AccountsController < Api::BaseController
end
def mute
MuteService.new.call(current_user.account, @account, notifications: truthy_param?(:notifications), duration: (params[:duration]&.to_i || 0))
MuteService.new.call(current_user.account, @account, notifications: truthy_param?(:notifications), duration: params[:duration].to_i)
render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships
end
@@ -86,22 +88,18 @@ class Api::V1::AccountsController < Api::BaseController
end
def relationships(**options)
AccountRelationshipsPresenter.new([@account.id], current_user.account_id, **options)
AccountRelationshipsPresenter.new([@account], current_user.account_id, **options)
end
def account_params
params.permit(:username, :email, :password, :agreement, :locale, :reason, :time_zone)
params.permit(:username, :email, :password, :agreement, :locale, :reason, :time_zone, :invite_code)
end
def invite
Invite.find_by(code: params[:invite_code]) if params[:invite_code].present?
end
def check_enabled_registrations
forbidden if single_user_mode? || omniauth_only? || !allowed_registrations?
end
def allowed_registrations?
Setting.registrations_mode != 'none'
end
def omniauth_only?
ENV['OMNIAUTH_ONLY'] == 'true'
forbidden unless allowed_registration?(request.remote_ip, invite)
end
end

View File

@@ -41,10 +41,10 @@ class Api::V1::ConversationsController < Api::BaseController
account: :account_stat,
last_status: [
:media_attachments,
:preview_cards,
:status_stat,
:tags,
{
preview_cards_status: :preview_card,
active_mentions: [account: :account_stat],
account: :account_stat,
},

View File

@@ -12,7 +12,7 @@ class Api::V1::DirectoriesController < Api::BaseController
private
def require_enabled!
return not_found unless Setting.profile_directory
not_found unless Setting.profile_directory
end
def set_accounts

View File

@@ -25,11 +25,11 @@ class Api::V1::FollowRequestsController < Api::BaseController
private
def account
Account.find(params[:id])
@account ||= Account.find(params[:id])
end
def relationships(**options)
AccountRelationshipsPresenter.new([params[:id]], current_user.account_id, **options)
AccountRelationshipsPresenter.new([account], current_user.account_id, **options)
end
def load_accounts

View File

@@ -1,11 +1,9 @@
# frozen_string_literal: true
class Api::V1::Instances::ActivityController < Api::BaseController
class Api::V1::Instances::ActivityController < Api::V1::Instances::BaseController
before_action :require_enabled_api!
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
vary_by ''
WEEKS_OF_ACTIVITY = 12
def show
cache_even_if_authenticated!
@@ -15,23 +13,40 @@ class Api::V1::Instances::ActivityController < Api::BaseController
private
def activity
statuses_tracker = ActivityTracker.new('activity:statuses:local', :basic)
logins_tracker = ActivityTracker.new('activity:logins', :unique)
registrations_tracker = ActivityTracker.new('activity:accounts:local', :basic)
(0...12).map do |i|
start_of_week = i.weeks.ago
end_of_week = start_of_week + 6.days
{
week: start_of_week.to_i.to_s,
statuses: statuses_tracker.sum(start_of_week, end_of_week).to_s,
logins: logins_tracker.sum(start_of_week, end_of_week).to_s,
registrations: registrations_tracker.sum(start_of_week, end_of_week).to_s,
}
activity_weeks.map do |weeks_ago|
activity_json(*week_edge_days(weeks_ago))
end
end
def activity_json(start_of_week, end_of_week)
{
week: start_of_week.to_i.to_s,
statuses: statuses_tracker.sum(start_of_week, end_of_week).to_s,
logins: logins_tracker.sum(start_of_week, end_of_week).to_s,
registrations: registrations_tracker.sum(start_of_week, end_of_week).to_s,
}
end
def activity_weeks
0...WEEKS_OF_ACTIVITY
end
def week_edge_days(num)
[num.weeks.ago, num.weeks.ago + 6.days]
end
def statuses_tracker
ActivityTracker.new('activity:statuses:local', :basic)
end
def logins_tracker
ActivityTracker.new('activity:logins', :unique)
end
def registrations_tracker
ActivityTracker.new('activity:accounts:local', :basic)
end
def require_enabled_api!
head 404 unless Setting.activity_api_enabled && !limited_federation_mode?
end

View File

@@ -0,0 +1,8 @@
# frozen_string_literal: true
class Api::V1::Instances::BaseController < Api::BaseController
skip_before_action :require_authenticated_user!,
unless: :limited_federation_mode?
vary_by ''
end

View File

@@ -1,8 +1,6 @@
# frozen_string_literal: true
class Api::V1::Instances::DomainBlocksController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
class Api::V1::Instances::DomainBlocksController < Api::V1::Instances::BaseController
before_action :require_enabled_api!
before_action :set_domain_blocks
@@ -15,16 +13,40 @@ class Api::V1::Instances::DomainBlocksController < Api::BaseController
cache_if_unauthenticated!
end
render json: @domain_blocks, each_serializer: REST::DomainBlockSerializer, with_comment: (Setting.show_domain_blocks_rationale == 'all' || (Setting.show_domain_blocks_rationale == 'users' && user_signed_in?))
render json: @domain_blocks, each_serializer: REST::DomainBlockSerializer, with_comment: show_rationale_in_response?
end
private
def require_enabled_api!
head 404 unless Setting.show_domain_blocks == 'all' || (Setting.show_domain_blocks == 'users' && user_signed_in?)
head 404 unless api_enabled?
end
def api_enabled?
show_domain_blocks_for_all? || show_domain_blocks_to_user?
end
def show_domain_blocks_for_all?
Setting.show_domain_blocks == 'all'
end
def show_domain_blocks_to_user?
Setting.show_domain_blocks == 'users' && user_signed_in?
end
def set_domain_blocks
@domain_blocks = DomainBlock.with_user_facing_limitations.by_severity
end
def show_rationale_in_response?
always_show_rationale? || show_rationale_for_user?
end
def always_show_rationale?
Setting.show_domain_blocks_rationale == 'all'
end
def show_rationale_for_user?
Setting.show_domain_blocks_rationale == 'users' && user_signed_in?
end
end

View File

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

View File

@@ -1,13 +1,10 @@
# frozen_string_literal: true
class Api::V1::Instances::LanguagesController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
class Api::V1::Instances::LanguagesController < Api::V1::Instances::BaseController
skip_around_action :set_locale
before_action :set_languages
vary_by ''
def show
cache_even_if_authenticated!
render json: @languages, each_serializer: REST::LanguageSerializer

View File

@@ -1,13 +1,10 @@
# frozen_string_literal: true
class Api::V1::Instances::PeersController < Api::BaseController
class Api::V1::Instances::PeersController < Api::V1::Instances::BaseController
before_action :require_enabled_api!
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
skip_around_action :set_locale
vary_by ''
# Override `current_user` to avoid reading session cookies unless in whitelist mode
def current_user
super if limited_federation_mode?

View File

@@ -1,12 +1,8 @@
# frozen_string_literal: true
class Api::V1::Instances::PrivacyPoliciesController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
class Api::V1::Instances::PrivacyPoliciesController < Api::V1::Instances::BaseController
before_action :set_privacy_policy
vary_by ''
def show
cache_even_if_authenticated!
render json: @privacy_policy, serializer: REST::PrivacyPolicySerializer

View File

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

View File

@@ -1,12 +1,8 @@
# frozen_string_literal: true
class Api::V1::Instances::TranslationLanguagesController < Api::BaseController
skip_before_action :require_authenticated_user!, unless: :limited_federation_mode?
class Api::V1::Instances::TranslationLanguagesController < Api::V1::Instances::BaseController
before_action :set_languages
vary_by ''
def show
cache_even_if_authenticated!
render json: @languages

View File

@@ -0,0 +1,30 @@
# frozen_string_literal: true
class Api::V1::InvitesController < Api::BaseController
include RegistrationHelper
skip_before_action :require_authenticated_user!
skip_around_action :set_locale
before_action :set_invite
before_action :check_enabled_registrations!
# Override `current_user` to avoid reading session cookies
def current_user; end
def show
render json: { invite_code: params[:invite_code], instance_api_url: api_v2_instance_url }, status: 200
end
private
def set_invite
@invite = Invite.find_by!(code: params[:invite_code])
end
def check_enabled_registrations!
return render json: { error: I18n.t('invites.invalid') }, status: 401 unless @invite.valid_for_use?
raise Mastodon::NotPermittedError unless allowed_registration?(request.remote_ip, @invite)
end
end

View File

@@ -0,0 +1,16 @@
# frozen_string_literal: true
class Api::V1::Statuses::BaseController < Api::BaseController
include Authorization
before_action :set_status
private
def set_status
@status = Status.find(params[:status_id])
authorize @status, :show?
rescue Mastodon::NotPermittedError
not_found
end
end

View File

@@ -1,11 +1,9 @@
# frozen_string_literal: true
class Api::V1::Statuses::BookmarksController < Api::BaseController
include Authorization
class Api::V1::Statuses::BookmarksController < Api::V1::Statuses::BaseController
before_action -> { doorkeeper_authorize! :write, :'write:bookmarks' }
before_action :require_user!
before_action :set_status, only: [:create]
skip_before_action :set_status, only: [:destroy]
def create
current_account.bookmarks.find_or_create_by!(account: current_account, status: @status)
@@ -28,13 +26,4 @@ class Api::V1::Statuses::BookmarksController < Api::BaseController
rescue Mastodon::NotPermittedError
not_found
end
private
def set_status
@status = Status.find(params[:status_id])
authorize @status, :show?
rescue Mastodon::NotPermittedError
not_found
end
end

View File

@@ -1,10 +1,7 @@
# frozen_string_literal: true
class Api::V1::Statuses::FavouritedByAccountsController < Api::BaseController
include Authorization
class Api::V1::Statuses::FavouritedByAccountsController < Api::V1::Statuses::BaseController
before_action -> { authorize_if_got_token! :read, :'read:accounts' }
before_action :set_status
after_action :insert_pagination_headers
def index
@@ -61,13 +58,6 @@ class Api::V1::Statuses::FavouritedByAccountsController < Api::BaseController
@accounts.size == limit_param(DEFAULT_ACCOUNTS_LIMIT)
end
def set_status
@status = Status.find(params[:status_id])
authorize @status, :show?
rescue Mastodon::NotPermittedError
not_found
end
def pagination_params(core_params)
params.slice(:limit).permit(:limit).merge(core_params)
end

View File

@@ -1,11 +1,9 @@
# frozen_string_literal: true
class Api::V1::Statuses::FavouritesController < Api::BaseController
include Authorization
class Api::V1::Statuses::FavouritesController < Api::V1::Statuses::BaseController
before_action -> { doorkeeper_authorize! :write, :'write:favourites' }
before_action :require_user!
before_action :set_status, only: [:create]
skip_before_action :set_status, only: [:destroy]
def create
FavouriteService.new.call(current_account, @status)
@@ -30,13 +28,4 @@ class Api::V1::Statuses::FavouritesController < Api::BaseController
rescue Mastodon::NotPermittedError
not_found
end
private
def set_status
@status = Status.find(params[:status_id])
authorize @status, :show?
rescue Mastodon::NotPermittedError
not_found
end
end

View File

@@ -1,10 +1,7 @@
# frozen_string_literal: true
class Api::V1::Statuses::HistoriesController < Api::BaseController
include Authorization
class Api::V1::Statuses::HistoriesController < Api::V1::Statuses::BaseController
before_action -> { authorize_if_got_token! :read, :'read:statuses' }
before_action :set_status
def show
cache_if_unauthenticated!
@@ -14,13 +11,6 @@ class Api::V1::Statuses::HistoriesController < Api::BaseController
private
def status_edits
@status.edits.includes(:account, status: [:account]).to_a.presence || [@status.build_snapshot(at_time: @status.edited_at || @status.created_at)]
end
def set_status
@status = Status.find(params[:status_id])
authorize @status, :show?
rescue Mastodon::NotPermittedError
not_found
@status.edits.ordered.includes(:account, status: [:account]).to_a.presence || [@status.build_snapshot(at_time: @status.edited_at || @status.created_at)]
end
end

View File

@@ -1,11 +1,8 @@
# frozen_string_literal: true
class Api::V1::Statuses::MutesController < Api::BaseController
include Authorization
class Api::V1::Statuses::MutesController < Api::V1::Statuses::BaseController
before_action -> { doorkeeper_authorize! :write, :'write:mutes' }
before_action :require_user!
before_action :set_status
before_action :set_conversation
def create
@@ -24,13 +21,6 @@ class Api::V1::Statuses::MutesController < Api::BaseController
private
def set_status
@status = Status.find(params[:status_id])
authorize @status, :show?
rescue Mastodon::NotPermittedError
not_found
end
def set_conversation
@conversation = @status.conversation
raise Mastodon::ValidationError if @conversation.nil?

View File

@@ -1,11 +1,8 @@
# frozen_string_literal: true
class Api::V1::Statuses::PinsController < Api::BaseController
include Authorization
class Api::V1::Statuses::PinsController < Api::V1::Statuses::BaseController
before_action -> { doorkeeper_authorize! :write, :'write:accounts' }
before_action :require_user!
before_action :set_status
def create
StatusPin.create!(account: current_account, status: @status)
@@ -26,10 +23,6 @@ class Api::V1::Statuses::PinsController < Api::BaseController
private
def set_status
@status = Status.find(params[:status_id])
end
def distribute_add_activity!
json = ActiveModelSerializers::SerializableResource.new(
@status,

View File

@@ -1,10 +1,7 @@
# frozen_string_literal: true
class Api::V1::Statuses::RebloggedByAccountsController < Api::BaseController
include Authorization
class Api::V1::Statuses::RebloggedByAccountsController < Api::V1::Statuses::BaseController
before_action -> { authorize_if_got_token! :read, :'read:accounts' }
before_action :set_status
after_action :insert_pagination_headers
def index
@@ -57,13 +54,6 @@ class Api::V1::Statuses::RebloggedByAccountsController < Api::BaseController
@accounts.size == limit_param(DEFAULT_ACCOUNTS_LIMIT)
end
def set_status
@status = Status.find(params[:status_id])
authorize @status, :show?
rescue Mastodon::NotPermittedError
not_found
end
def pagination_params(core_params)
params.slice(:limit).permit(:limit).merge(core_params)
end

View File

@@ -1,13 +1,13 @@
# frozen_string_literal: true
class Api::V1::Statuses::ReblogsController < Api::BaseController
include Authorization
class Api::V1::Statuses::ReblogsController < Api::V1::Statuses::BaseController
include Redisable
include Lockable
before_action -> { doorkeeper_authorize! :write, :'write:statuses' }
before_action :require_user!
before_action :set_reblog, only: [:create]
skip_before_action :set_status
override_rate_limit_headers :create, family: :statuses

View File

@@ -1,21 +1,9 @@
# frozen_string_literal: true
class Api::V1::Statuses::SourcesController < Api::BaseController
include Authorization
class Api::V1::Statuses::SourcesController < Api::V1::Statuses::BaseController
before_action -> { doorkeeper_authorize! :read, :'read:statuses' }
before_action :set_status
def show
render json: @status, serializer: REST::StatusSourceSerializer
end
private
def set_status
@status = Status.find(params[:status_id])
authorize @status, :show?
rescue Mastodon::NotPermittedError
not_found
end
end

View File

@@ -1,10 +1,7 @@
# frozen_string_literal: true
class Api::V1::Statuses::TranslationsController < Api::BaseController
include Authorization
class Api::V1::Statuses::TranslationsController < Api::V1::Statuses::BaseController
before_action -> { doorkeeper_authorize! :read, :'read:statuses' }
before_action :set_status
before_action :set_translation
rescue_from TranslationService::NotConfiguredError, with: :not_found
@@ -24,13 +21,6 @@ class Api::V1::Statuses::TranslationsController < Api::BaseController
private
def set_status
@status = Status.find(params[:status_id])
authorize @status, :show?
rescue Mastodon::NotPermittedError
not_found
end
def set_translation
@translation = TranslateStatusService.new.call(@status, content_locale)
end

View File

@@ -0,0 +1,33 @@
# frozen_string_literal: true
class Api::V1::Timelines::BaseController < Api::BaseController
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
private
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def pagination_max_id
@statuses.last.id
end
def pagination_since_id
@statuses.first.id
end
def next_path_params
permitted_params.merge(max_id: pagination_max_id)
end
def prev_path_params
permitted_params.merge(min_id: pagination_since_id)
end
def permitted_params
params
.slice(*self.class::PERMITTED_PARAMS)
.permit(*self.class::PERMITTED_PARAMS)
end
end

View File

@@ -1,9 +1,10 @@
# frozen_string_literal: true
class Api::V1::Timelines::HomeController < Api::BaseController
class Api::V1::Timelines::HomeController < Api::V1::Timelines::BaseController
before_action -> { doorkeeper_authorize! :read, :'read:statuses' }, only: [:show]
before_action :require_user!, only: [:show]
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
PERMITTED_PARAMS = %i(local limit).freeze
def show
with_read_replica do
@@ -40,27 +41,11 @@ class Api::V1::Timelines::HomeController < Api::BaseController
HomeFeed.new(current_account)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def pagination_params(core_params)
params.slice(:local, :limit).permit(:local, :limit).merge(core_params)
end
def next_path
api_v1_timelines_home_url pagination_params(max_id: pagination_max_id)
api_v1_timelines_home_url next_path_params
end
def prev_path
api_v1_timelines_home_url pagination_params(min_id: pagination_since_id)
end
def pagination_max_id
@statuses.last.id
end
def pagination_since_id
@statuses.first.id
api_v1_timelines_home_url prev_path_params
end
end

View File

@@ -1,12 +1,12 @@
# frozen_string_literal: true
class Api::V1::Timelines::ListController < Api::BaseController
class Api::V1::Timelines::ListController < Api::V1::Timelines::BaseController
before_action -> { doorkeeper_authorize! :read, :'read:lists' }
before_action :require_user!
before_action :set_list
before_action :set_statuses
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
PERMITTED_PARAMS = %i(limit).freeze
def show
render json: @statuses,
@@ -41,27 +41,11 @@ class Api::V1::Timelines::ListController < Api::BaseController
ListFeed.new(@list)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def pagination_params(core_params)
params.slice(:limit).permit(:limit).merge(core_params)
end
def next_path
api_v1_timelines_list_url params[:id], pagination_params(max_id: pagination_max_id)
api_v1_timelines_list_url params[:id], next_path_params
end
def prev_path
api_v1_timelines_list_url params[:id], pagination_params(min_id: pagination_since_id)
end
def pagination_max_id
@statuses.last.id
end
def pagination_since_id
@statuses.first.id
api_v1_timelines_list_url params[:id], prev_path_params
end
end

View File

@@ -1,8 +1,9 @@
# frozen_string_literal: true
class Api::V1::Timelines::PublicController < Api::BaseController
class Api::V1::Timelines::PublicController < Api::V1::Timelines::BaseController
before_action :require_user!, only: [:show], if: :require_auth?
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
PERMITTED_PARAMS = %i(local remote limit only_media allow_local_only).freeze
def show
cache_if_unauthenticated!
@@ -45,27 +46,11 @@ class Api::V1::Timelines::PublicController < Api::BaseController
)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def pagination_params(core_params)
params.slice(:local, :remote, :limit, :only_media, :allow_local_only).permit(:local, :remote, :limit, :only_media, :allow_local_only).merge(core_params)
end
def next_path
api_v1_timelines_public_url pagination_params(max_id: pagination_max_id)
api_v1_timelines_public_url next_path_params
end
def prev_path
api_v1_timelines_public_url pagination_params(min_id: pagination_since_id)
end
def pagination_max_id
@statuses.last.id
end
def pagination_since_id
@statuses.first.id
api_v1_timelines_public_url prev_path_params
end
end

View File

@@ -1,9 +1,10 @@
# frozen_string_literal: true
class Api::V1::Timelines::TagController < Api::BaseController
class Api::V1::Timelines::TagController < Api::V1::Timelines::BaseController
before_action -> { doorkeeper_authorize! :read, :'read:statuses' }, only: :show, if: :require_auth?
before_action :load_tag
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
PERMITTED_PARAMS = %i(local limit only_media).freeze
def show
cache_if_unauthenticated!
@@ -51,27 +52,11 @@ class Api::V1::Timelines::TagController < Api::BaseController
)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def pagination_params(core_params)
params.slice(:local, :limit, :only_media).permit(:local, :limit, :only_media).merge(core_params)
end
def next_path
api_v1_timelines_tag_url params[:id], pagination_params(max_id: pagination_max_id)
api_v1_timelines_tag_url params[:id], next_path_params
end
def prev_path
api_v1_timelines_tag_url params[:id], pagination_params(min_id: pagination_since_id)
end
def pagination_max_id
@statuses.last.id
end
def pagination_since_id
@statuses.first.id
api_v1_timelines_tag_url params[:id], prev_path_params
end
end

View File

@@ -2,12 +2,22 @@
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: @media_attachment.not_processed? ? 202 : 200
@media_attachment = current_account.media_attachments.create!(media_and_delay_params)
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_from_media_processing
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
render json: file_type_error, status: 422
rescue Paperclip::Error => e
Rails.logger.error "#{e.class}: #{e.message}"
render json: processing_error, status: 500
end
private
def media_and_delay_params
{ delay_processing: true }.merge(media_attachment_params)
end
def status_from_media_processing
@media_attachment.not_processed? ? 202 : 200
end
end

View File

@@ -8,6 +8,12 @@ class Api::V2::SearchController < Api::BaseController
before_action -> { authorize_if_got_token! :read, :'read:search' }
before_action :validate_search_params!
with_options unless: :user_signed_in? do
before_action :query_pagination_error, if: :pagination_requested?
before_action :remote_resolve_error, if: :remote_resolve_requested?
end
before_action :require_valid_pagination_options!
def index
@search = Search.new(search_results)
render json: @search, serializer: REST::SearchSerializer
@@ -21,12 +27,22 @@ class Api::V2::SearchController < Api::BaseController
def validate_search_params!
params.require(:q)
end
return if user_signed_in?
def query_pagination_error
render json: { error: 'Search queries pagination is not supported without authentication' }, status: 401
end
return render json: { error: 'Search queries pagination is not supported without authentication' }, status: 401 if params[:offset].present?
def remote_resolve_error
render json: { error: 'Search queries that resolve remote resources are not supported without authentication' }, status: 401
end
render json: { error: 'Search queries that resolve remote resources are not supported without authentication' }, status: 401 if truthy_param?(:resolve)
def remote_resolve_requested?
truthy_param?(:resolve)
end
def pagination_requested?
params[:offset].present?
end
def search_results
@@ -34,7 +50,15 @@ class Api::V2::SearchController < Api::BaseController
params[:q],
current_account,
limit_param(RESULTS_LIMIT),
search_params.merge(resolve: truthy_param?(:resolve), exclude_unreviewed: truthy_param?(:exclude_unreviewed), following: truthy_param?(:following))
combined_search_params
)
end
def combined_search_params
search_params.merge(
resolve: truthy_param?(:resolve),
exclude_unreviewed: truthy_param?(:exclude_unreviewed),
following: truthy_param?(:following)
)
end

View File

@@ -3,37 +3,13 @@
class Api::Web::PushSubscriptionsController < Api::Web::BaseController
before_action :require_user!
before_action :set_push_subscription, only: :update
before_action :destroy_previous_subscriptions, only: :create, if: :prior_subscriptions?
after_action :update_session_with_subscription, only: :create
def create
active_session = current_session
@push_subscription = ::Web::PushSubscription.create!(web_push_subscription_params)
unless active_session.web_push_subscription.nil?
active_session.web_push_subscription.destroy!
active_session.update!(web_push_subscription: nil)
end
# Mobile devices do not support regular notifications, so we enable push notifications by default
alerts_enabled = active_session.detection.device.mobile? || active_session.detection.device.tablet?
data = {
policy: 'all',
alerts: Notification::TYPES.index_with { alerts_enabled },
}
data.deep_merge!(data_params) if params[:data]
push_subscription = ::Web::PushSubscription.create!(
endpoint: subscription_params[:endpoint],
key_p256dh: subscription_params[:keys][:p256dh],
key_auth: subscription_params[:keys][:auth],
data: data,
user_id: active_session.user_id,
access_token_id: active_session.access_token_id
)
active_session.update!(web_push_subscription: push_subscription)
render json: push_subscription, serializer: REST::WebPushSubscriptionSerializer
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
end
def update
@@ -43,6 +19,41 @@ class Api::Web::PushSubscriptionsController < Api::Web::BaseController
private
def active_session
@active_session ||= current_session
end
def destroy_previous_subscriptions
active_session.web_push_subscription.destroy!
active_session.update!(web_push_subscription: nil)
end
def prior_subscriptions?
active_session.web_push_subscription.present?
end
def subscription_data
default_subscription_data.tap do |data|
data.deep_merge!(data_params) if params[:data]
end
end
def default_subscription_data
{
policy: 'all',
alerts: Notification::TYPES.index_with { alerts_enabled },
}
end
def alerts_enabled
# Mobile devices do not support regular notifications, so we enable push notifications by default
active_session.detection.device.mobile? || active_session.detection.device.tablet?
end
def update_session_with_subscription
active_session.update!(web_push_subscription: @push_subscription)
end
def set_push_subscription
@push_subscription = ::Web::PushSubscription.find(params[:id])
end
@@ -51,6 +62,17 @@ class Api::Web::PushSubscriptionsController < Api::Web::BaseController
@subscription_params ||= params.require(:subscription).permit(:endpoint, keys: [:auth, :p256dh])
end
def web_push_subscription_params
{
access_token_id: active_session.access_token_id,
data: subscription_data,
endpoint: subscription_params[:endpoint],
key_auth: subscription_params[:keys][:auth],
key_p256dh: subscription_params[:keys][:p256dh],
user_id: active_session.user_id,
}
end
def data_params
@data_params ||= params.require(:data).permit(:policy, alerts: Notification::TYPES)
end

View File

@@ -176,7 +176,10 @@ class ApplicationController < ActionController::Base
return unless self_destruct?
respond_to do |format|
format.any { render 'errors/self_destruct', layout: 'auth', status: 410, formats: [:html] }
format.any do
use_pack 'error'
render 'errors/self_destruct', layout: 'auth', status: 410, formats: [:html]
end
format.json { render json: { error: Rack::Utils::HTTP_STATUS_CODES[410] }, status: code }
end
end

View File

@@ -1,7 +1,7 @@
# frozen_string_literal: true
class Auth::ConfirmationsController < Devise::ConfirmationsController
include CaptchaConcern
include Auth::CaptchaConcern
layout 'auth'
@@ -40,6 +40,12 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController
show
end
def redirect_to_app?
truthy_param?(:redirect_to_app)
end
helper_method :redirect_to_app?
private
def require_captcha_if_needed!
@@ -57,7 +63,7 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController
end
def captcha_user_bypass?
return true if @confirmation_user.nil? || @confirmation_user.confirmed?
@confirmation_user.nil? || @confirmation_user.confirmed?
end
def set_pack
@@ -87,7 +93,7 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController
end
def after_confirmation_path_for(_resource_name, user)
if user.created_by_application && truthy_param?(:redirect_to_app)
if user.created_by_application && redirect_to_app?
user.created_by_application.confirmation_redirect_uri
elsif user_signed_in?
web_url('start')

View File

@@ -1,7 +1,8 @@
# frozen_string_literal: true
class Auth::RegistrationsController < Devise::RegistrationsController
include RegistrationSpamConcern
include RegistrationHelper
include Auth::RegistrationSpamConcern
layout :determine_layout
@@ -83,19 +84,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController
end
def check_enabled_registrations
redirect_to root_path if single_user_mode? || omniauth_only? || !allowed_registrations? || ip_blocked?
end
def allowed_registrations?
Setting.registrations_mode != 'none' || @invite&.valid_for_use?
end
def omniauth_only?
ENV['OMNIAUTH_ONLY'] == 'true'
end
def ip_blocked?
IpBlock.where(severity: :sign_up_block).where('ip >>= ?', request.remote_ip.to_s).exists?
redirect_to root_path unless allowed_registration?(request.remote_ip, @invite)
end
def invite_code
@@ -136,7 +125,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController
end
def require_not_suspended!
forbidden if current_account.suspended?
forbidden if current_account.unavailable?
end
def set_rules

View File

@@ -11,7 +11,7 @@ class Auth::SessionsController < Devise::SessionsController
prepend_before_action :set_pack
prepend_before_action :check_suspicious!, only: [:create]
include TwoFactorAuthenticationConcern
include Auth::TwoFactorAuthenticationConcern
before_action :set_body_classes

View File

@@ -34,8 +34,8 @@ module AccountOwnedConcern
end
def check_account_suspension
if @account.suspended_permanently?
permanent_suspension_response
if @account.permanently_unavailable?
permanent_unavailability_response
elsif @account.suspended? && !skip_temporary_suspension_response?
temporary_suspension_response
end
@@ -45,7 +45,7 @@ module AccountOwnedConcern
false
end
def permanent_suspension_response
def permanent_unavailability_response
expires_in(3.minutes, public: true)
gone
end

View File

@@ -1,6 +1,6 @@
# frozen_string_literal: true
module AdminExportControllerConcern
module Admin::ExportControllerConcern
extend ActiveSupport::Concern
private

View File

@@ -1,6 +1,6 @@
# frozen_string_literal: true
module AccessTokenTrackingConcern
module Api::AccessTokenTrackingConcern
extend ActiveSupport::Concern
ACCESS_TOKEN_UPDATE_FREQUENCY = 24.hours.freeze

View File

@@ -1,6 +1,6 @@
# frozen_string_literal: true
module ApiCachingConcern
module Api::CachingConcern
extend ActiveSupport::Concern
def cache_if_unauthenticated!

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