Compare commits

..

1251 commits

Author SHA1 Message Date
Jeremy Kescher
6c28810b39
[Glitch+Emoji reactions] Use modern React context for for identity for emoji reaction code 2024-05-20 21:50:13 -05:00
Essem
48b9837ad8
Fix building on systems with ICU 75
See brianmario/charlock_holmes#172
2024-05-20 21:36:49 -05:00
Essem
9b0c46ebf2
Merge remote-tracking branch 'upstream/main' 2024-05-20 21:35:02 -05:00
Claire
e853355f24
Merge pull request #2714 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 0a2110b9af
2024-05-20 20:23:13 +02:00
Claire
20fdf8e22c Merge commit '0a2110b9af52005798251dc9d245a66dd5dd20fa' into glitch-soc/merge-upstream 2024-05-20 17:47:48 +02:00
Claire
7b3eef4cb1
Merge pull request #2713 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to de4815afda
2024-05-20 17:27:55 +02:00
Matt Jankowski
0a2110b9af
Add coverage for custom filters (#30347) 2024-05-20 15:00:09 +00:00
Claire
00cf8d3748
Change older Paperclip database migrations for consistency (#30204) 2024-05-20 14:59:27 +00:00
Claire
2bcbeed951
Add some error handling to OTP secret migration (#30344) 2024-05-20 14:59:23 +00:00
Renaud Chaput
ca5955ed76 [Glitch] Use a modern React context for identity in the app
Port a178ba7cd5 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-20 12:53:52 +02:00
Claire
e46321e63d Merge commit 'de4815afda0809bf999519aabda1cd14c67278da' into glitch-soc/merge-upstream 2024-05-20 12:17:36 +02:00
Claire
de4815afda
Add more tests for self-destruct mode (#30374) 2024-05-20 10:06:51 +00:00
Matt Jankowski
def6b686ff
Fix Rails/WhereRange cop (#30343) 2024-05-20 09:37:36 +00:00
Matt Jankowski
70608f824e
Add coverage for AdminMailer#auto_close_registrations (#30349) 2024-05-20 08:03:39 +00:00
Renaud Chaput
9658d3e580
Use the job class as span name for Sidekiq root spans (#30353) 2024-05-20 08:01:04 +00:00
renovate[bot]
0ce22859a5
fix(deps): update dependency @rails/ujs to v7.1.3 (#30356)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-20 07:56:28 +00:00
github-actions[bot]
8b75d18371
New Crowdin Translations (automated) (#30358)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-05-20 07:41:38 +00:00
renovate[bot]
814d00cf4b
chore(deps): update dependency @formatjs/cli to v6.2.12 (#30370)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-20 07:40:37 +00:00
renovate[bot]
778bd96a52
chore(deps): update dependency @types/lodash to v4.17.4 (#30371)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-20 07:40:20 +00:00
Renaud Chaput
990a0c19a9
Fix a warning when running JS Tests because of FakeIdentityContext using deprecated context API (#30368) 2024-05-20 07:29:27 +00:00
Nick Schonning
0f07e1cd4c
Fix yarn.lock diff (#30366) 2024-05-19 19:37:49 +00:00
renovate[bot]
0a343b9a91
fix(deps): update react monorepo to v18.3.1 (#30074)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-19 17:15:06 +00:00
Renaud Chaput
a178ba7cd5
Use a modern React context for identity in the app (#30098) 2024-05-19 17:07:32 +00:00
Joshua Byrd
6282b6da77
Fix og:image requests when html in a web page is over 1.megabyte (#30362) 2024-05-19 16:30:05 +00:00
Claire
93a617236e
Merge pull request #2712 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 12472e7f40
2024-05-17 18:05:32 +02:00
Emelia Smith
2da2a1dae9
Support multiple redirect_uris when creating OAuth 2.0 Applications (#29192) 2024-05-17 13:46:12 +00:00
Claire
57fb2cf948 Merge commit '12472e7f407c42bcff6ee204b9f1887b5824734f' into glitch-soc/merge-upstream 2024-05-17 12:33:41 +02:00
Claire
9668ac5acd
Merge pull request #2711 from ClearlyClaire/glitch-soc/merge-upstream
Port upstream changes up to b2388be71e
2024-05-17 12:32:59 +02:00
Claire
12472e7f40
Add emphasis on ActiveRecord Encryption configuration values being secret (#30340) 2024-05-17 09:28:40 +00:00
Jeong Arm
a627219b25
Fix moderation action logs (#30342) 2024-05-17 09:18:54 +00:00
github-actions[bot]
bff7769f5f
New Crowdin Translations (automated) (#30336)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-05-17 08:41:35 +00:00
Matt Jankowski
a6d12299f2
Remove duplicate method def ApplicationHelper#instance_presenter (#30331) 2024-05-17 08:29:13 +00:00
renovate[bot]
fc166d07f0
chore(deps): update dependency rails to v7.1.3.3 (#30334)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-17 08:28:22 +00:00
renovate[bot]
3286ad5226
chore(deps): update dependency selenium-webdriver to v4.21.1 (#30335)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-17 08:28:01 +00:00
renovate[bot]
f7f5b9dadd
fix(deps): update dependency @rails/ujs to v7.1.3-3 (#30337)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-17 08:27:45 +00:00
renovate[bot]
226d7a7bad
fix(deps): update dependency sass to v1.77.2 (#30338)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-17 08:27:03 +00:00
Claire
87b5cfc60e
Merge pull request #2710 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to b2388be71e
2024-05-16 21:30:31 +02:00
Claire
7b078b46a2 [Glitch] Fix Web UI trying to save user settings when logged out
Port 66906a1bc1 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-16 19:34:50 +02:00
David Lapshin
061464a563 [Glitch] Fix incorrect element selector from #30221
Port 94493cff92 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-16 19:34:17 +02:00
Claire
2810231180 Merge commit 'b2388be71eb0031ef9e47c492b1c038231cd8bc0' into glitch-soc/merge-upstream
Conflicts:
- `app/controllers/activitypub/collections_controller.rb`:
  Upstream renamed a helper method everywhere.
  There was one glitch-soc line involving changes because of the local-only post
  feature.
  Ported upstream's change.
2024-05-16 19:30:10 +02:00
renovate[bot]
b2388be71e
chore(deps): update dependency selenium-webdriver to v4.21.0 (#30325)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-16 13:45:17 +00:00
Claire
66906a1bc1
Fix Web UI trying to save user settings when logged out (#30324) 2024-05-16 13:01:01 +00:00
Matt Jankowski
1b6eb2c7f0
Enable YJIT when available (#30310) 2024-05-16 09:56:48 +00:00
Renaud Chaput
283a891e92
Allow to customise the OTEL service name prefix (#30322) 2024-05-16 09:28:10 +00:00
Matt Jankowski
65e82211cd
Rename cache_* methods to preload_* in controller concern (#30209) 2024-05-16 08:03:46 +00:00
Emelia Smith
f0d6dc4519
Fix: Mark redirect uris field in Development > Application form as required (#30311) 2024-05-16 07:59:46 +00:00
renovate[bot]
356bbbaa7f
fix(deps): update dependency @reduxjs/toolkit to v2.2.5 (#30320)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-16 07:57:19 +00:00
github-actions[bot]
cdb042ae86
New Crowdin Translations (automated) (#30319)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-05-16 07:50:19 +00:00
Matt Jankowski
c9ee1437c0
Use ruby language constants to build version string in software version dimension (#30309) 2024-05-16 07:43:35 +00:00
renovate[bot]
60b423b3f7
chore(deps): update dependency rspec-sidekiq to v5 (#30314)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-16 07:43:31 +00:00
David Lapshin
94493cff92
Fix incorrect element selector from #30221 (#30307) 2024-05-16 07:33:29 +00:00
Matt Jankowski
ca560c1095
Disable Style/RedundantFetchBlock cop (#30207) 2024-05-15 13:57:13 +00:00
renovate[bot]
d5d3a0fc57
fix(deps): update dependency pino to v9.1.0 (#30283)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-15 13:38:51 +00:00
Emelia Smith
5fd56512de
Improve Report Notes and Account Moderation Notes (#30288) 2024-05-15 13:38:36 +00:00
Claire
c2ca3d152f
Fix off-by-one in tootctl media commands (#30306) 2024-05-15 13:11:13 +00:00
renovate[bot]
4e085dff52
chore(deps): update dependency aws-sdk-s3 to v1.151.0 (#30287)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-15 13:05:05 +00:00
Claire
19ed3d9441
Merge pull request #2709 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 1bf661cddb
2024-05-15 12:10:10 +02:00
Jason Punyon
85c625d319
Fix repetitive database queries from #30040 (#30259) 2024-05-15 09:38:16 +00:00
Matt Jankowski
6beead3867
Move simplecov config into rails_helper (#30302) 2024-05-15 09:33:36 +00:00
github-actions[bot]
aad5e841b5
New Crowdin Translations (automated) (#30290)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-05-15 08:53:57 +00:00
renovate[bot]
78a8263f73
fix(deps): update dependency postcss-preset-env to v9.5.13 (#30286)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-15 08:34:58 +00:00
renovate[bot]
7f7eba8753
chore(deps): update dependency letter_opener_web to v3 (#30296)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-15 08:34:50 +00:00
Renaud Chaput
40639510f8
Retain unconfirmed users longer (1 week) (#30285) 2024-05-15 08:27:34 +00:00
renovate[bot]
44e855db78
chore(deps): update dependency nokogiri to v1.16.5 [security] (#30289)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-15 08:26:22 +00:00
renovate[bot]
508e93eb64
chore(deps): update dependency fog-openstack to v1.1.1 (#30295)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-15 08:25:50 +00:00
renovate[bot]
38a330f963
fix(deps): update dependency core-js to v3.37.1 (#30293)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-15 08:25:34 +00:00
Essem
4f37b4873f
Merge remote-tracking branch 'upstream/main' 2024-05-14 21:20:27 -05:00
Renaud Chaput
47ce5f4ca9 [Glitch] Fix missing prop warning for <Account>
Port 1bf661cddb to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-14 20:53:40 +02:00
David Lapshin
160823716a [Glitch] Add active animation to header settings button
Port cb93c1edf0 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-14 20:53:01 +02:00
Claire
666760f450 Merge commit '1bf661cddbc614d4076e9d9e855575fc29e976c0' into glitch-soc/merge-upstream
Conflicts:
- `package.json`:
  Upstream fixed a command we have modified in glitch-soc.
  Updated as upstream did.
2024-05-14 20:47:14 +02:00
Renaud Chaput
1bf661cddb
Fix missing prop warning for <Account> (#30291) 2024-05-14 18:15:42 +00:00
Claire
b5b84fad65
Fix OpenSearch compatibility issue (#30278) 2024-05-14 17:54:28 +00:00
github-actions[bot]
3a7aec2807
New Crowdin Translations (automated) (#30254)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-05-13 11:30:41 +00:00
Nick Schonning
13fb54920b
Enable Style/IfUnlessModifier RuboCop (#30260) 2024-05-13 09:54:15 +00:00
Nick Schonning
9ec7c1f892
Fix i18n:extract flags (#30261) 2024-05-13 09:42:47 +00:00
renovate[bot]
6e1b8b33f5
Update opentelemetry-ruby (non-major) (#30262)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-13 09:42:08 +00:00
Jeen Broekstra
b429c9b8a7
fix(bin/dev): makes conditional for launching overmind POSIX-compliant (#30271) 2024-05-13 09:40:14 +00:00
renovate[bot]
c66fdb3dff
Update dependency immutable to v4.3.6 (#30276)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-13 09:39:06 +00:00
David Lapshin
cb93c1edf0
Add active animation to header settings button (#30221) 2024-05-13 09:19:42 +00:00
renovate[bot]
f66c9faca0
Update dependency sass to v1.77.1 (#30252)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-13 09:11:55 +00:00
renovate[bot]
123108b1cc
Update dependency postcss-preset-env to v9.5.12 (#30256)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-13 09:11:39 +00:00
renovate[bot]
5e7d88a85d
Update dependency glob to v10.3.15 (#30263)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-13 09:10:53 +00:00
renovate[bot]
471728d6dd
Update DefinitelyTyped types (non-major) (#30272)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-13 09:10:26 +00:00
renovate[bot]
ab4efa3bf8
Update dependency @testing-library/react to v15.0.7 (#30273)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-13 09:10:09 +00:00
renovate[bot]
807cf354fc
Update dependency eslint-plugin-jsdoc to v48.2.4 (#30274)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-13 09:09:39 +00:00
Claire
5ed6622a00
Merge pull request #2706 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 1959365c2f
2024-05-12 21:35:25 +02:00
Chee Aun
f65a6d50f1 [Glitch] Fix typo
Port c36a8786c1 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-11 22:44:41 +02:00
Claire
f35ba6963d Merge commit '1959365c2f410aa82874c5c05ab92c4eca4c4055' into glitch-soc/merge-upstream 2024-05-11 22:10:56 +02:00
Claire
1959365c2f
Add missing on_delete: :cascade on notification_policies (#30251) 2024-05-10 20:00:25 +00:00
renovate[bot]
346530732c
Update dependency utf-8-validate to v6.0.4 (#30248)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-10 19:19:47 +00:00
renovate[bot]
9920f41c0f
Update opentelemetry-ruby (non-major) (#30249)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-10 19:18:53 +00:00
Renaud Chaput
d09b02efb6
Group Ruby OTEL packages in Renovate PRs (#30242) 2024-05-10 16:33:10 +00:00
renovate[bot]
482d1087c5
Update dependency opentelemetry-instrumentation-faraday to v0.24.3 (#30237)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-10 14:19:41 +00:00
renovate[bot]
af71f236a2
Update dependency opentelemetry-instrumentation-excon to v0.22.2 (#30236)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-10 13:16:05 +00:00
renovate[bot]
d933e6b6ae
Update dependency opentelemetry-instrumentation-concurrent_ruby to v0.21.3 (#30235)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-10 13:16:02 +00:00
renovate[bot]
ded11eca4f
Update dependency pundit to v2.3.2 (#30222)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-10 13:15:54 +00:00
Renaud Chaput
68b9fe824d
Add OpenTelemetry instrumentation (#30130)
Co-authored-by: Juliano Costa <juliano.costa@datadoghq.com>
Co-authored-by: Robb Kidd <robbkidd@honeycomb.io>
2024-05-10 12:40:20 +00:00
Matt Jankowski
0d397db5dd
Consolidate system specs into single directory, use rspec tags for configuration (#30206) 2024-05-10 12:36:09 +00:00
Joshua Young
164b09bfcc
Update README.md setup steps (#30063) 2024-05-10 12:34:32 +00:00
Matt Jankowski
e20f2e7300
Update i18n to version 1.14.5 (#30198) 2024-05-10 12:34:20 +00:00
renovate[bot]
f3f63107f2
Update dependency @reduxjs/toolkit to v2.2.4 (#30223)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-10 09:59:15 +00:00
Matt Jankowski
fa43a6c835
Use more accurate redirect_uri in oauth spec (#30212) 2024-05-10 09:43:59 +00:00
Matt Jankowski
040aaf3a48
Use default: ... assignment for Devise config, fixes Style/ClassVars cop (#30214) 2024-05-10 09:42:01 +00:00
github-actions[bot]
c9557bdd3b
New Crowdin Translations (automated) (#30215)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-05-10 09:34:48 +00:00
renovate[bot]
3a5a1b2e58
Update dependency node to 20.13 (#30211)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-10 09:25:07 +00:00
renovate[bot]
1aa3976f28
Update dependency pino-http to v10.1.0 (#30199)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-10 09:23:45 +00:00
renovate[bot]
0a4a93038f
Update Yarn to v4.2.2 (#30220)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-10 09:22:47 +00:00
Chee Aun
c36a8786c1
Fix typo (#30224) 2024-05-10 09:19:27 +00:00
renovate[bot]
6ccee2600b
Update dependency rubocop to v1.63.5 (#30225)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-10 09:19:06 +00:00
renovate[bot]
6819bcc4b6
Update dependency glob to v10.3.14 (#30230)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-10 09:18:52 +00:00
Renaud Chaput
5a3062f723
Pass the CodeCov token from the secret to the action (#30219) 2024-05-10 08:00:02 +00:00
Essem
012698f97a
Fix video sizing in edit media modal 2024-05-09 23:35:20 -05:00
Essem
ac041ceefa
Remove custom favicon/app icons
Upstream now includes a way to change them from the admin UI.
2024-05-08 14:12:58 -05:00
Essem
f26fba7473
Merge remote-tracking branch 'upstream/main' 2024-05-08 13:58:54 -05:00
Claire
3286daa807
Merge pull request #2704 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to d8c4284723
2024-05-07 21:10:52 +02:00
Claire
21c904b0f6 Merge commit 'd8c428472356abd70aaf1f514b99114464ee7f61' into glitch-soc/merge-upstream 2024-05-07 20:30:17 +02:00
Claire
d8c4284723
Ensure custom favicon is converted to PNG and ICO (#30208) 2024-05-07 18:15:17 +00:00
renovate[bot]
c9ccba7045
Update dependency sass to v1.77.0 (#30200)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-07 12:43:11 +00:00
Claire
f7dadc9f0b Merge commit '5cd13ee4f19c112ea855063c2495e2874746f23a' into glitch-soc/merge-upstream 2024-05-07 12:13:02 +02:00
renovate[bot]
5cd13ee4f1
Update dependency aws-sdk-s3 to v1.149.1 (#30196)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-07 09:39:20 +00:00
renovate[bot]
8540004f7b
Update dependency dotenv to v3.1.2 (#30197)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-07 09:39:04 +00:00
github-actions[bot]
ed556db395
New Crowdin Translations (automated) (#30201)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-05-07 09:36:16 +00:00
Claire
96fb6e491f
Revert "Migrate paperclip _file_size columns to bigint (#29263)" (#30203) 2024-05-07 08:46:05 +00:00
Claire
996292cd55
Fix db:encryption:init requiring ActiveRecord encryption variables to be set (#30202) 2024-05-07 08:41:53 +00:00
Essem
b636ca2099
Merge remote-tracking branch 'upstream/main' 2024-05-06 22:12:42 -05:00
renovate[bot]
6167894547
Update dependency pino-http to v10 (#30191)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 17:14:46 +00:00
Claire
016d194274 Merge commit '2fe1b8d1695d8faa452a69872fde94ccc4611576' into glitch-soc/merge-upstream
Conflicts:
- `app/helpers/application_helper.rb`:
  Not a real conflict, upstream added helpers right next to glitch-soc only
  helpers.
  Added upstream's helpers.
- `spec/models/status_spec.rb`:
  Not a real conflict, upstream added specs right next to glitch-soc only
  specs.
  Added upstream's tests.
2024-05-06 17:53:51 +02:00
Claire
2fe1b8d169
Add API to get multiple accounts and statuses (#27871)
Co-authored-by: noellabo <noel.yoshiba@gmail.com>
2024-05-06 15:19:15 +00:00
Fawaz Farid
bc24c4792d
Allow admins to configure instance favicon and logo (#30040) 2024-05-06 15:06:52 +00:00
Matt Jankowski
b152f936c1
Migrate paperclip _file_size columns to bigint (#29263)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-05-06 15:05:12 +00:00
Fawaz Farid
05126d106f
Redirect back after site upload deletion (#30141) 2024-05-06 13:31:39 +00:00
Emelia Smith
116f01ec7d
Implement RFC 8414 for OAuth 2.0 server metadata (#29191) 2024-05-06 13:17:56 +00:00
Claire
30ef9fccf0
Fix hashtag matching pattern matching some link anchors (#30190) 2024-05-06 12:47:19 +00:00
Claire
8e4fea77e3
Fix race condition in POST /api/v1/push/subscription (#30166) 2024-05-06 12:41:14 +00:00
Matt Jankowski
dbaa4ed891
Use chewy which relaxes ES version reqs (#30157) 2024-05-06 11:50:45 +00:00
Claire
e5062b7135
Fix post deletion not being deferred when those are part of an account warning (#30163) 2024-05-06 09:52:34 +00:00
renovate[bot]
4f0d18168c
Update DefinitelyTyped types (non-major) (#30184)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 08:46:43 +00:00
renovate[bot]
00c34070ae
Update eslint (non-major) (#30186)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 08:46:22 +00:00
renovate[bot]
86f17e4b32
Update devDependencies (non-major) (#30185)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 08:46:17 +00:00
github-actions[bot]
9be2c02e52
New Crowdin Translations (automated) (#30169)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-05-06 08:36:29 +00:00
renovate[bot]
a96b828023
Update dependency postcss-preset-env to v9.5.11 (#30171)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 08:26:33 +00:00
renovate[bot]
d544b83f91
Update formatjs monorepo (#30175)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 08:26:28 +00:00
renovate[bot]
e4841ca82b
Update dependency irb to v1.13.1 (#30177)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-06 08:26:12 +00:00
Claire
e9cca1cc09
Merge pull request #2701 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to b7902225d6
2024-05-05 18:32:37 +02:00
Tim Rogers
2f73e486b7
Switched HTMLEntities to the expanded flavor which supports a larger … (#30173) 2024-05-05 02:24:10 +00:00
Renaud Chaput
c59f6ef5b8 [Glitch] Convert entrypoints/two_factor_authentication to Typescript
Port 9e260014c7 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-04 16:30:24 +02:00
mogaminsk
b6ada33ad4 [Glitch] Fix word breaking in filtered notifications badge
Port 616e2f2666 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-04 16:30:05 +02:00
Claire
3789d9f825 Merge commit 'b7902225d698a107df2cf8b4ca221caad38fa464' into glitch-soc/merge-upstream
Conflicts:
- `spec/validators/status_length_validator_spec.rb`:
  Upstream refactored tests to stub `StatusLengthValidator::MAX_CHARS`
  while glitch-soc had custom code to read from `MAX_TOOT_CHARS`.
  Switched to using upstream's implementation of the tests.
2024-05-04 16:28:30 +02:00
Claire
4b82dc84f5 [Glitch] Change width breakpoint for mobile placement behavior
Port 26e10aa203 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-04 16:16:22 +02:00
Claire
6662d604c1 [Glitch] Add loading indicator and empty result message to advanced interface search
Port 7d3fe2b4c3 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-04 16:15:54 +02:00
Renaud Chaput
e62595c966 [Glitch] Remove usage of deprecated defaultTypes on React functional components
Port b9b4db483c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-04 16:15:16 +02:00
Claire
f09f5b35f2 Merge commit 'd97d31cce664281d868e4c661451687a301c97c8' into glitch-soc/merge-upstream
Conflicts:
- `app/models/account.rb`:
  Upstream refactored this file a bit, moving validation limits to constants.
  We already had a similar change, although with different constant names.
  Updated to match upstream's code.

The following files were also modified accordingly:
- `app/views/settings/profiles/show.html.haml`
- `spec/requests/api/v1/accounts/credentials_spec.rb`
2024-05-04 16:12:51 +02:00
Renaud Chaput
494d28bb56 [Glitch] Convert entrypoints/sign_up to Typescript
Port 4527e012da to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-04 15:51:58 +02:00
Renaud Chaput
fe7db7905f [Glitch] Convert easy entrypoints files to Typescript
Port 36909065b5 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-04 15:49:30 +02:00
David Beck
defd1e4024 [Glitch] Remove home marker updates
Port 4f4b77920e to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-04 15:42:33 +02:00
Claire
a76980a229 Merge commit 'f0c9cbaf3b079700b8179222d409c644dfd8ff66' into glitch-soc/merge-upstream 2024-05-04 15:40:07 +02:00
Renaud Chaput
552e09d57f [Glitch] Fix marker thunks to not ignore eslint directives for the whole file
Port 65093c619f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-04 15:30:18 +02:00
Claire
a4ce53df27 [Glitch] Change moderation warning notification icon
Port de4a7bf531 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-04 15:29:51 +02:00
Claire
aac59a34ed [Glitch] Add in-app notifications for moderation actions/warnings
Port 4ef0b48b95 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-04 15:29:29 +02:00
Eugen Rochko
8dbcf8a287 [Glitch] Change design of people tab on explore in web UI
Port 0ec061aa8f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-04 15:28:17 +02:00
Claire
d6f9c97ae4 Merge commit '7201f99cf83a74331febd1624ca9aaace68af5e6' into glitch-soc/merge-upstream 2024-05-04 15:24:22 +02:00
Eugen Rochko
333905b2d5 [Glitch] Change mute options to be in dropdown on muted users list in web UI
Port 74012831f6 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-04 15:15:00 +02:00
Claire
bac4026d80 Merge commit '85fdbd0ad53837c9209acf3fb45811d5bae41cd9' into glitch-soc/merge-upstream 2024-05-04 15:10:54 +02:00
Claire
bceb45adda Merge commit '3f6887557b23d363e7f8f18518db4447739d64bb' into glitch-soc/merge-upstream
Conflicts:
- `app/javascript/entrypoints/common.js`:
  Upstream moved everything from `app/javascript/packs` to
  `app/javascript/entrypoints` while this file was a glitch-soc
  addition. Moved it like the rest.
- `tsconfig.json`:
  Conflict due to glitch-soc's flavor.
  Updated like upstream.

Also moved and updated the following files accordingly:
- `app/javascript/flavours/vanilla/theme.yml`
- `app/javascript/flavours/glitch/theme.yml`
- everything in `app/javascript/flavours/glitch/packs`
2024-05-04 14:59:00 +02:00
Matt Jankowski
b7902225d6
Use built-in github annotation output for stylelint (#30165) 2024-05-03 14:56:48 +00:00
Claire
33368e3e79
Change ActiveRecordEncryption variable to be more explicit (#30151) 2024-05-03 09:26:24 +00:00
Râu Cao
9aa31be8d3
Fix local account search on LDAP login being case-sensitive (#30113)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-05-03 09:22:48 +00:00
github-actions[bot]
d5444a2c6c
New Crowdin Translations (automated) (#30160)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-05-03 09:15:06 +00:00
renovate[bot]
9380805fc1
Update dependency rubocop-rspec to v2.29.2 (#30158)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-03 08:48:09 +00:00
Essem
a7b905d573
Merge remote-tracking branch 'upstream/main' 2024-05-02 23:31:54 -05:00
renovate[bot]
4b2054ee57
Update Yarn to v4.2.1 (#30153)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-02 21:22:26 +00:00
Claire
253ead3aa7
Fix not being able to block a subdomain of an already-blocked domain through the API (#30119) 2024-05-02 20:56:21 +00:00
Renaud Chaput
9e260014c7
Convert entrypoints/two_factor_authentication to Typescript (#30105) 2024-05-02 12:02:13 +00:00
Claire
e7b09486ed
Merge pull request #2699 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to a2399046ca
2024-05-02 12:55:04 +02:00
mogaminsk
616e2f2666
Fix word breaking in filtered notifications badge (#30114) 2024-05-02 09:40:18 +00:00
Matt Jankowski
88882fbbee
Move Rails/HABTM cop out of todo (#30118) 2024-05-02 09:40:05 +00:00
Matt Jankowski
1e7d5d2957
Update devise-two-factor to version 5.0.0 (#28325)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-05-02 09:31:41 +00:00
github-actions[bot]
309f352e6a
New Crowdin Translations (automated) (#30140)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-05-02 08:57:30 +00:00
Matt Jankowski
2447497a4c
Status length validation spec updates (#30132) 2024-05-02 08:31:06 +00:00
renovate[bot]
d97d31cce6
Update dependency irb to v1.13.0 (#30143)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-02 08:28:13 +00:00
renovate[bot]
ac1d830e6c
Update dependency aws-sdk-s3 to v1.149.0 (#30136)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-02 08:27:47 +00:00
renovate[bot]
474e5ffaae
Update dependency dotenv to v3.1.1 (#30133)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-02 08:15:49 +00:00
renovate[bot]
62992ba54a
Update dependency sass to v1.76.0 (#30138)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-02 08:14:45 +00:00
renovate[bot]
a9dd68b90a
Update dependency react-redux to v9.1.2 (#30146)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-05-02 08:00:43 +00:00
Claire
b039e62194 Merge commit 'a2399046ca600d492b492b8dae88011de687bece' into glitch-soc/merge-upstream 2024-05-01 19:49:59 +02:00
Claire
eeefb7cdbc Merge commit 'a15139bc02d279b9ef85e95990f41e3e88838d20' into glitch-soc/merge-upstream 2024-05-01 19:42:34 +02:00
Claire
6204d13a2e Merge commit 'ec71c02c4b028c3541742f023729aeb295a51559' into glitch-soc/merge-upstream
Conflicts:
- `Gemfile`:
  There was an extra newline in glitch-soc for some reason.
  Removed it.
2024-05-01 19:38:34 +02:00
Claire
360590ecd8 Merge commit 'a3902997440c71f161e392f1ad6c5cdcf6aba95d' into glitch-soc/merge-upstream
Conflicts:
- `app/controllers/accounts_controller.rb`:
  Conflict due to glitch-soc's local-only posting feature.
  Refactored as upstream did but kept local changes.
- `app/lib/account_statuses_filter.rb`:
  Conflict due to glitch-soc's local-only posting feature.
  Refactored as upstream did but kept local changes.
2024-05-01 19:30:41 +02:00
Claire
df933836ca [Glitch] Fix incorrect label for filtered notifications badge
Port 66ee0d4a1f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 19:18:06 +02:00
Claire
62b3f284db [Glitch] Fix unfollow button being out of frame on small screens on old browsers
Port 4117c8f6b8 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 19:17:28 +02:00
Claire
946bd2e7e1 Merge commit '0622107449e72d35b22afeeba2f0ba983e914803' into glitch-soc/merge-upstream 2024-05-01 19:16:48 +02:00
renovate[bot]
ac5113d524 [Glitch] Update eslint (non-major)
Port 37d984b8bf to glitch-soc

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Renaud Chaput <renchap@gmail.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 19:04:59 +02:00
Claire
e76ddf79bc [Glitch] Add / keyboard shortcut to focus the search field
Port c386c36866 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 18:57:39 +02:00
Claire
6f342a6d4c Merge commit '34e826f373d20f6230d1ef0aa03ad41a3bdf5998' into glitch-soc/merge-upstream
Conflicts:
- `app/helpers/theme_helper.rb`:
  Conflict caused by our different theme systems.
  Ported upstream's changes.
- `app/models/account.rb`:
  Upstream basically made a change we already made.
  Moved constant declaration to match upstream.
2024-05-01 18:56:48 +02:00
Renaud Chaput
2d43547934 [Glitch] Fix webpack warnings due to unhandled extensions (LICENCE and README.md)
Port 730e2127e1 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 18:43:37 +02:00
Claire
9ce82a35cb Merge commit '20b1e55f24a87868d661fc7b033bbbbd48b1a918' into glitch-soc/merge-upstream 2024-05-01 18:42:26 +02:00
Claire
555e33a392 Merge commit 'b61ae28f8d4b6f269f50a05c3e65ec7f2c846d32' into glitch-soc/merge-upstream
Conflicts:
- `app/helpers/application_helper.rb`:
  Conflict because of our different theming systems.
  Updated accordingly, along with `app/helpers/theme_helper.rb`
  and `app/helpers/theme_helper_spec.rb`.
2024-05-01 18:38:55 +02:00
Michael Stanclift
3739dda2f6 [Glitch] Add purple border to active compose field search inputs
Port 1c87cb8019 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 17:31:39 +02:00
Claire
0fb469e2f3 Merge commit '52ab8a59c6e77b6409a7d4d81b15751732b3af91' into glitch-soc/merge-upstream 2024-05-01 17:30:52 +02:00
nicolas
41c43168fb [Glitch] Makes the star icon rotate around its actual centre axis
Port c6da3ee828 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 17:27:59 +02:00
Michael Stanclift
b21322b406 [Glitch] Fix blue border on emoji/language search in Safari & Chrome
Port e284417349 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 17:27:29 +02:00
Michael Stanclift
4543bb9384 [Glitch] Fix language and emoji search field background colors on light theme
Port 5d67247061 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 17:27:10 +02:00
Claire
3503fe1865 Merge commit '4045c069f8f91200d0e7c64a8097e425aee71041' into glitch-soc/merge-upstream 2024-05-01 17:26:21 +02:00
Claire
46cc9141c9 [Glitch] Fix contrast in notification request badge
Port 0b9d4103cb to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 17:23:07 +02:00
Claire
15f6d2d038 Merge commit 'd27eb181f6ab419d1745a1fe9b94094be17a618f' into glitch-soc/merge-upstream
Conflicts:
- `spec/requests/api/v2/instance_spec.rb`:
  Conflict due to glitch-soc having a different default site name.
  Updated the tests as upstream did, keeping glitch-soc's default name.
2024-05-01 17:22:02 +02:00
Renaud Chaput
87b9b23025 [Glitch] Use integers and not numbers in notification policy API counters
Port b4d991adaa to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 17:12:57 +02:00
Renaud Chaput
c316852a65 [Glitch] Add API types for status and related objects
Port e47a3d00fe to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 17:12:16 +02:00
Renaud Chaput
297c8c37b1 [Glitch] Fix Redux Middleware types
Port 07635228e2 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 17:08:44 +02:00
Michael Stanclift
0f756eaed2 [Glitch] Fix search box color on light theme
Port fa9574086d to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 17:08:05 +02:00
Claire
2c386d4cfe Merge commit 'c70c39cad03824c64564fa7d241e6bf01acbab76' into glitch-soc/merge-upstream 2024-05-01 17:06:49 +02:00
Claire
d52263e0e3 Merge commit '143d9553fa0187b9950a802cdedaea5c8cd12f75' into glitch-soc/merge-upstream
Conflicts:
- `yarn.lock`:
  Upstream updated dependencies textually close to a glitch-soc-only dependency.
  Updated the dependencies as well.
2024-05-01 17:04:33 +02:00
Michael Stanclift
3b1c8d56b2 [Glitch] Fix light theme header on mobile
Port 90eb4a5d01 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 16:49:21 +02:00
Michael Stanclift
1783820acd [Glitch] Fix background tint in single column light theme
Port 430da03160 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 16:48:55 +02:00
Renaud Chaput
375bd52d97 [Glitch] Handle createAppAsyncThunk rejected actions in the errors middleware
Port 69e5771881 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 16:48:27 +02:00
Claire
7f404fd635 Merge commit '90eb4a5d01f1f1e8a76e7dc814eae992a9c1ee16' into glitch-soc/merge-upstream 2024-05-01 16:47:25 +02:00
Renaud Chaput
b3d5567bd0 [Glitch] Remove global boosts state and convert boosts modal to Typescript
Port 67442f9039 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 16:42:20 +02:00
Claire
0f90e624c5 Merge commit '672c9f5f05bde788877ae0dcdb6668366c4c8941' into glitch-soc/merge-upstream
Conflicts:
- `app/helpers/application_helper.rb`:
  Conflict due to our theming system being different.
  Ported upstream's changes.
2024-05-01 16:10:45 +02:00
Claire
bc370938ef [Glitch] Fix logo pushing header buttons out of view on certain conditions in mobile layout
Port 4f068d4fcc to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 15:56:38 +02:00
Renaud Chaput
cc720cd38f [Glitch] Fix <RelativeTimestamp> types
Port 961bb84e4c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 15:56:37 +02:00
Renaud Chaput
0ab212f6a9 [Glitch] Fix props for <Button>
Port d088964761 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 15:56:37 +02:00
Renaud Chaput
02f9ce9ce3 [Glitch] Fix PropTypes for some record objects
Port f2fd1da23f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 15:56:37 +02:00
Claire
5cb4adbf4e [Glitch] Fix language picker and privacy picker not having a backdrop filter
Port c913e2f3e5 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 15:56:37 +02:00
Renaud Chaput
555f45f249 [Glitch] Fix notifications marker fetch
Port b9982ce578 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 15:56:37 +02:00
Renaud Chaput
371c5e59eb [Glitch] Rewrite PIP state in Typescript
Port 9fbe8d3a0c to glitch-soc

Co-authored-by: Claire <claire.github-309c@sitedethib.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 15:56:37 +02:00
Renaud Chaput
059e10e546 [Glitch] Rewrite markers reducer in Typescript
Port 27d014a7fa to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 14:55:03 +02:00
Claire
3f61981f5d Merge commit '8a498f4e65ecf27cc2c992d02b47f890dafef20b' into glitch-soc/merge-upstream 2024-05-01 14:50:16 +02:00
Claire
03af271d3d [Glitch] Fix column borders disappearing in advanced interface on low width viewports
Port b2d841ce9a to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 14:32:29 +02:00
Claire
7b46517c38 Merge commit 'd49343ed11b3c08c4e81ecd70e17e01bd30154a6' into glitch-soc/merge-upstream 2024-05-01 14:31:14 +02:00
Renaud Chaput
d63c0a2879 [Glitch] Support "system" theme setting (light/dark theme depending on user system preference)
Port 02ea161506 to glitch-soc

Co-authored-by: Nishiki Liu <hello@nshki.com>
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2024-05-01 14:25:51 +02:00
Claire
a6147a831f Merge commit '02ea16150647ac3baf0bb8a89203ccc7200b4a2f' into glitch-soc/merge-upstream
Conflicts:
- `app/lib/themes.rb`
- `app/views/layouts/application.html.haml`
- `app/views/layouts/embedded.html.haml`
- `app/views/layouts/error.html.haml`
- `config/settings.yml`

All these conflicts are because glitch-soc and upstream have different theming
systems and upstream changed a few things to have dynamic theme selection based
on system settings.

Conflicts were solved to take that into account, and `current_theme` has been
changed in the process to return a tuple of `[flavour, skin]` to be used in
the `theme_style_tags` helper.
2024-05-01 14:25:47 +02:00
Claire
3024212403
Merge pull request #2698 from ClearlyClaire/glitch-soc/refactor/index-application
Rename `app/javascript/flavours/glitch/styles/index.scss` to `application.scss`
2024-05-01 13:09:43 +02:00
Claire
26e10aa203
Change width breakpoint for mobile placement behavior (#30131) 2024-04-30 23:39:28 +00:00
Claire
d6048d3a6c Add compatibility app/javascript/flavours/glitch/styles/index.scss 2024-04-30 21:27:04 +02:00
Claire
8a34c42341 Rename app/javascript/flavours/glitch/styles/index.scss to application.scss
This is just to reduce differences with upstream.
2024-04-30 21:03:04 +02:00
Claire
6f74ede26b
Merge pull request #2697 from ClearlyClaire/glitch-soc/refactor/revamp-theming-system
Simplify glitch-soc's theming system
2024-04-30 20:41:38 +02:00
Matt Jankowski
75470f1256
Use implicit dotenv load (#30121) 2024-04-30 13:00:39 +00:00
renovate[bot]
f3ea90b89e
Update workbox monorepo to v7.1.0 (#30047)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-30 09:12:25 +00:00
github-actions[bot]
56821ed879
New Crowdin Translations (automated) (#30128)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-30 09:05:53 +00:00
Shlee
40d7a553d2
Minor phrasing on tootcli statuses remove (#30122) 2024-04-30 08:51:39 +00:00
renovate[bot]
f5376c477d
Update babel monorepo to v7.24.5 (#30124)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-30 08:50:42 +00:00
Emelia Smith
81f0002e76
Fix missing destory audit logs for Domain Allows (#30125) 2024-04-30 08:48:02 +00:00
Shlee
b8f0a50435
docker-compose.yml version is obsolete (#30120) 2024-04-29 17:31:14 +00:00
renovate[bot]
f5d6362e90
Update dependency ws to v8.17.0 (#30097)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-29 15:48:34 +00:00
Matt Jankowski
924af400da
Remove unused memoization in CustomFilter#expires_in method (#30117) 2024-04-29 12:49:31 +00:00
Matt Jankowski
f1a4b4e228
Disable Style/SignalException cop (#30064) 2024-04-29 12:32:06 +00:00
Claire
7d3fe2b4c3
Add loading indicator and empty result message to advanced interface search (#30085) 2024-04-29 09:55:41 +00:00
Matt Jankowski
ac7f4d57bb
Use composable query in Status.without_replies scope (#30086) 2024-04-29 09:55:37 +00:00
Claire
95e9de5777
Prevent accidental serialization of Account and User records (#30079) 2024-04-29 09:45:58 +00:00
Matt Jankowski
e336466894
Use shared form partial for admin/rules views (#30067) 2024-04-29 09:33:27 +00:00
Matt Jankowski
a9816f051d
Use shared form partial for admin/warning_presets views (#30069) 2024-04-29 09:33:06 +00:00
Renaud Chaput
b9b4db483c
Remove usage of deprecated defaultTypes on React functional components (#30099) 2024-04-29 09:29:59 +00:00
Matt Jankowski
2739d8d5a4
Use shorter render call in admin/webhooks view (#30071) 2024-04-29 09:10:23 +00:00
Matt Jankowski
bbf1b603e0
Remove unused Account.popular scope (#30068) 2024-04-29 09:04:35 +00:00
renovate[bot]
6931cf5727
Update dependency aws-sdk-s3 to v1.148.0 (#30076)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-29 09:03:27 +00:00
Matt Jankowski
2123281f7c
Move Account limits to constants (#30087) 2024-04-29 09:02:47 +00:00
Matt Jankowski
f0c9cbaf3b
Use EXPIRATION_DURATIONS constant in CustomFilter class (#30088) 2024-04-29 09:01:46 +00:00
Renaud Chaput
4527e012da
Convert entrypoints/sign_up to Typescript (#30106) 2024-04-29 08:23:05 +00:00
github-actions[bot]
9be7efedf0
New Crowdin Translations (automated) (#30092)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-29 08:15:43 +00:00
renovate[bot]
00aec2f33a
Update peter-evans/create-pull-request action to v6.0.5 (#30112)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-29 08:10:20 +00:00
renovate[bot]
0efa9854a1
Update libretranslate/libretranslate Docker tag to v1.5.7 (#30111)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-29 08:10:04 +00:00
renovate[bot]
23223369e0
Update eslint (non-major) (#30110)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-29 08:09:50 +00:00
renovate[bot]
c0584a6f4f
Update devDependencies (non-major) (#30109)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-29 08:09:27 +00:00
renovate[bot]
31f3dd57e0
Update dependency rubocop to v1.63.4 (#30096)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-29 08:08:58 +00:00
renovate[bot]
d8a4cea41b
Update dependency haml_lint to v0.58.0 (#30094)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-29 08:08:43 +00:00
Renaud Chaput
36909065b5
Convert easy entrypoints files to Typescript (#30102) 2024-04-29 08:02:41 +00:00
David Beck
4f4b77920e
Remove home marker updates (#22721) 2024-04-29 07:55:58 +00:00
Matt Jankowski
7201f99cf8
Change default ruby version to 3.3.1 (#28013) 2024-04-29 07:41:59 +00:00
Claire
e0a3662d7b Drop hardcoded reliance on vanilla flavor 2024-04-28 22:38:11 +02:00
Claire
7208edbd37 Replace use_pack, layouts/theme and @theme by new helpers
Packs are now loaded from views, just like upstream, and are
identified by their filenames. The definition of `theme.yml` has
changed as such:
- `pack_directory` is now required
- `pack` is now unused
- `signed_in_preload` has been introduced
2024-04-28 15:45:42 +02:00
Claire
c3e12a4dfa Change how theme style packs are loaded
Load the `common` style pack, and then charge the style pack for the current
skin, independent from any selected JS pack.
2024-04-28 15:45:41 +02:00
Claire
93cdc66e64 Make common inheritence unconditional and simplify theming code 2024-04-28 15:06:48 +02:00
Claire
dee57982f1 Rename “home” pack to “application” 2024-04-28 15:06:41 +02:00
Claire
9a8be8cf49 Remove theme fallback mechanism
Remove the `fallback` property and do not fallback to using another flavour
when a pack is not available in the selected flavour.

Flavours should define all packs, and should they wish to piggy-back on
another one, they can import that other one's pack explicitly instead.
2024-04-28 15:05:16 +02:00
Claire
62bc36416f Get rid of app/javascript/core
Have all flavors implement everything they need instead.
2024-04-28 15:04:52 +02:00
Renaud Chaput
65093c619f
Fix marker thunks to not ignore eslint directives for the whole file (#30089) 2024-04-26 17:11:27 +00:00
Claire
de4a7bf531
Change moderation warning notification icon (#30081) 2024-04-26 15:33:15 +00:00
renovate[bot]
0cf6cf457d
Update dependency selenium-webdriver to v4.20.1 (#30060)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-26 15:32:48 +00:00
renovate[bot]
17e0a31fe3
Update dependency cssnano to v7 (#30061)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-26 15:32:38 +00:00
Michael Stanclift
bb8c6346fb
Reword and rearrange Content Retention page (#27733) 2024-04-26 15:17:41 +00:00
Matt Jankowski
b67b61b963
Ignore dotenv *.local files (#29932) 2024-04-26 14:50:39 +00:00
renovate[bot]
ac82f34f7d
Update dependency pino to v9 (#30057)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-26 14:49:54 +00:00
Claire
91ca90e25b
Fix Idempotency-Key ignored when scheduling a post (#30084) 2024-04-26 13:19:02 +00:00
Claire
e845594878
Fix moderator account being exposed in account moderation notification (#30082) 2024-04-26 12:42:06 +00:00
github-actions[bot]
5201882a23
New Crowdin Translations (automated) (#30077)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-26 10:05:18 +00:00
Essem
122be8305f
Merge remote-tracking branch 'upstream/main' 2024-04-25 12:59:20 -05:00
Claire
4ef0b48b95
Add in-app notifications for moderation actions/warnings (#30065) 2024-04-25 17:26:05 +00:00
Eugen Rochko
0ec061aa8f
Change design of people tab on explore in web UI (#30059) 2024-04-25 16:25:33 +00:00
github-actions[bot]
85fdbd0ad5
New Crowdin Translations (automated) (#30062)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-25 08:50:54 +00:00
Claire
113c931cda
Fix follow request notifications not being displayed (#2695) 2024-04-24 17:00:48 +02:00
Claire
b79df709a8
Merge pull request #2693 from glitch-soc/i18n/crowdin/translations
New Crowdin Translations (automated)
2024-04-24 17:00:31 +02:00
Matt Jankowski
d9eee9bf9a
Remove column defaults for status_pins timestamp columns (#29261) 2024-04-24 14:56:54 +00:00
Claire
0e071edccc Fix bogus translation files 2024-04-24 12:36:32 +02:00
Tim Rogers
b128474625
Fixed rendering of excess whitespace in status card titles (#30017) 2024-04-24 09:09:21 +00:00
Matt Jankowski
f4a53f3fb4
Extract constants for column size length validation limits (#30045) 2024-04-24 08:56:28 +00:00
github-actions[bot]
ebcf9840f4
New Crowdin Translations (automated) (#30050)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-24 08:45:24 +00:00
Eugen Rochko
74012831f6
Change mute options to be in dropdown on muted users list in web UI (#30049) 2024-04-24 08:45:12 +00:00
Matt Jankowski
b903e6909e
Disable Style/HashAsLastArrayItem cop (#30041) 2024-04-24 08:32:18 +00:00
Renaud Chaput
0e585b9a52
Update to Ruby 3.2.4 (#30036) 2024-04-24 08:21:05 +00:00
Matt Jankowski
3f6887557b
Move JS source from packs to entrypoints (#30037) 2024-04-23 16:45:12 +00:00
Matt Jankowski
32ead51e5a
Add material design icons to admin/settings views (#27780)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-04-23 16:43:49 +00:00
Claire
a2399046ca
Fix string interpolation for software updates admin mailer (#30035) 2024-04-23 12:54:52 +00:00
Emelia Smith
049b159beb
Add read:me OAuth 2.0 scope, allowing more limited access to user data (#29087) 2024-04-23 11:47:00 +00:00
github-actions[bot]
d754b15afb
New Crowdin Translations (automated) (#30034)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-23 09:07:05 +00:00
renovate[bot]
91c7406b59
Update dependency postcss-preset-env to v9.5.9 (#30029)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-23 08:41:50 +00:00
renovate[bot]
1471c0d4e0
Update dependency rubocop to v1.63.3 (#30031)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-23 08:41:33 +00:00
renovate[bot]
483fabf48a
Update dependency http to '~> 5.2.0' (#30027)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-04-22 14:02:47 +00:00
Claire
2ef098d01c
Revert "Rely on dotenv autoload instead of explicit call (#30007)" (#30028) 2024-04-22 14:02:24 +00:00
Matt Jankowski
33e829763d
Use shared form partial for admin/domain_blocks views (#29609) 2024-04-22 12:22:16 +00:00
Matt Jankowski
ffbbf74c50
Limit http gem version to 5.1.x series (#30010) 2024-04-22 09:01:36 +00:00
Matt Jankowski
56b095edeb
Update Gemfile.lock ruby and bundler versions (#30011) 2024-04-22 09:01:24 +00:00
Tim Rogers
1ca6ff8ca5
Fixed crash when supplying FFMPEG_BINARY environment variable (#30022) 2024-04-22 09:00:24 +00:00
Tim Rogers
75163d9daf
Fixed rendering error on /start when not logged in (#30023) 2024-04-22 08:53:08 +00:00
github-actions[bot]
3655fb6a22
New Crowdin Translations (automated) (#30014)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-22 08:42:35 +00:00
Matt Jankowski
18737aad49
Rely on dotenv autoload instead of explicit call (#30007) 2024-04-22 08:31:20 +00:00
Matt Jankowski
a15139bc02
Fix intermittent order based failure in UpdateStatusService spec (#30008) 2024-04-22 08:30:38 +00:00
renovate[bot]
24e67c4394
Update dependency postcss-preset-env to v9.5.8 (#30018)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-22 08:24:08 +00:00
renovate[bot]
3e21af3e4a
Update dependency @types/react to v18.2.79 (#30024)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-22 08:14:09 +00:00
renovate[bot]
88f946890d
Update peter-evans/create-pull-request action to v6.0.4 (#30025)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-22 08:13:28 +00:00
renovate[bot]
223936c2e8
Update eslint (non-major) to v7.7.0 (#30026)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-22 08:13:04 +00:00
Matt Jankowski
2ec9bff36e
Fix Rubocop Rails/UniqueValidationWithoutIndex cop (#27461)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-04-22 08:04:05 +00:00
GitHub Actions
c61130af33 New Crowdin translations 2024-04-22 04:27:38 +00:00
Matt Jankowski
35b517c207
Remove remnants of capistrano (#30009) 2024-04-19 20:53:01 +00:00
Matt Jankowski
369b2ef0ed
Fix Style/TrailingCommaInHashLiteral cop (#30004) 2024-04-19 20:52:01 +00:00
Matt Jankowski
c7384adc00
Fix Style/TrailingCommaInArguments cop (#30003) 2024-04-19 20:37:18 +00:00
Matt Jankowski
b6f04aed35
Silence warning about requiring rubocop-rspec_rails (#30002) 2024-04-19 20:35:00 +00:00
Matt Jankowski
933189887b
Fix Style/StringLiterals cop (#30005) 2024-04-19 20:33:00 +00:00
Matt Jankowski
8d47ba893a
Fix Style/PercentLiteralDelimiters cop (#30006) 2024-04-19 20:32:26 +00:00
renovate[bot]
d24462c81a
Update dependency test-prof to v1.3.3 (#30000)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-19 19:46:13 +00:00
Matt Jankowski
fa5e154ee3
Indirect deps gem version bumps (#29998) 2024-04-19 19:45:41 +00:00
Matt Jankowski
f5d341382e
Add any_args to have_enqueued_sidekiq_job call (quiets deprecation) (#29999) 2024-04-19 19:44:59 +00:00
Matt Jankowski
f386eb6c63
Replace deprecated dotenv-rails gem with dotenv gem (#29173) 2024-04-19 14:25:14 +00:00
github-actions[bot]
ec71c02c4b
New Crowdin Translations (automated) (#29994)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-19 13:57:43 +00:00
Matt Jankowski
4837bfcc6a
Use shared form partial for admin/announcements views (#29608) 2024-04-19 13:57:32 +00:00
renovate[bot]
e5d5bd7ff1
Update dependency postcss-preset-env to v9.5.6 (#29983)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-18 16:24:55 +00:00
Matt Jankowski
75f9c652e2
Fix Bundler/OrderedGems cop (#28400) 2024-04-18 16:24:22 +00:00
github-actions[bot]
443186ff40
New Crowdin Translations (automated) (#29980)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-18 11:18:39 +00:00
Matt Jankowski
11e0049b08
Use enum-generated scopes/queries for BulkImport (#29975) 2024-04-18 10:13:35 +00:00
renovate[bot]
630572323f
Update dependency ioredis to v5.4.1 (#29977)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-17 21:52:26 +00:00
renovate[bot]
1ad119941f
Update dependency rspec-sidekiq to v4.2.0 (#29964)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-17 11:14:09 +00:00
Claire
8bece467f8
Change have_enqueued_sidekiq_job usage to always make argument expectations explicit (#29974) 2024-04-17 11:13:52 +00:00
Matt Jankowski
013671f29f
Rename JS testing section in GH Actions config (#29931) 2024-04-17 10:23:07 +00:00
Matt Jankowski
650c548c31
Add not_featured_by scope to Tag (#28815) 2024-04-17 10:05:38 +00:00
Matt Jankowski
1d3ecd3fba
Add API::Pagination concern (#28826) 2024-04-17 09:22:45 +00:00
Matt Jankowski
828299e71c
Enable AR Encryption (#29831) 2024-04-17 09:19:02 +00:00
renovate[bot]
a390299744
Update dependency ioredis to v5.4.0 (#29969)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-17 09:08:19 +00:00
renovate[bot]
ee8f999a7b
Update dependency core-js to v3.37.0 (#29968)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-17 09:08:08 +00:00
github-actions[bot]
c35042b7eb
New Crowdin Translations (automated) (#29972)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-17 09:07:13 +00:00
Claire
fc89ecc6ca
Change /api/v1/announcements to return regular Status entities (#26736) 2024-04-17 09:06:23 +00:00
Matt Jankowski
9ae2594726
Add reusable duplicate ID finder methods in maintenance CLI (#28910) 2024-04-17 09:00:08 +00:00
renovate[bot]
03abff3b30
Update dependency aws-sdk-s3 to v1.147.0 (#29967)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-17 08:30:58 +00:00
Matt Jankowski
9ce2db4136
Combine double subject runs and DRY up change check in bulk import service spec (#29402) 2024-04-17 08:23:25 +00:00
Matt Jankowski
6fed108703
Use Rails upsert to generate update_count! query in Counters concern (#28738)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-04-17 08:16:51 +00:00
Claire
5915bd7f45
Fix development environment admin account not being auto-approved (#29958) 2024-04-16 17:30:32 +00:00
Matt Jankowski
caad1e2628
Add scope Status.distributable_visibility (#29950) 2024-04-16 13:16:54 +00:00
renovate[bot]
0622107449
Update dependency @testing-library/react to v15 (#29893)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-16 09:44:02 +00:00
Matt Jankowski
6b33d3f81b
Add CustomFilter.unexpired scope (#29896) 2024-04-16 09:29:34 +00:00
Claire
66ee0d4a1f
Fix incorrect label for filtered notifications badge (#29922) 2024-04-16 09:25:23 +00:00
Matt Jankowski
3159c0a547
Add scope Status.list_eligible_visibility (#29951) 2024-04-16 09:17:03 +00:00
renovate[bot]
e6927db2fe
Update dependency rubocop to v1.63.2 (#29959)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-16 08:58:04 +00:00
renovate[bot]
6ee1b034b6
Update dependency prom-client to v15.1.2 (#29957)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-16 08:45:20 +00:00
github-actions[bot]
285d4123b5
New Crowdin Translations (automated) (#29955)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-16 08:36:21 +00:00
Matt Jankowski
7fed4a9740
Pull out repeated setup to shared setup in statusus/show view spec (#29927) 2024-04-15 15:24:31 +00:00
Claire
4117c8f6b8
Fix unfollow button being out of frame on small screens on old browsers (#29923) 2024-04-15 11:56:48 +00:00
Matt Jankowski
1549e6a9dc
Drop support for Ruby 3.0 (reaching EOL) (#29702) 2024-04-15 10:19:23 +00:00
github-actions[bot]
4e78cb9988
New Crowdin Translations (automated) (#29939)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-15 09:29:39 +00:00
Matt Jankowski
0d9ad96d3f
Rename PremailerWebpackStrategy -> PremailerBundledAssetStrategy (#29934) 2024-04-15 09:16:59 +00:00
Matt Jankowski
bf5d948237
Fix Style/SingleArgumentDig cop in webpacker/manifest_extensions (#29929) 2024-04-15 09:15:32 +00:00
Renaud Chaput
67dd1763bb
Fix PostCSS config (#29926) 2024-04-15 09:06:06 +00:00
Renaud Chaput
ee4ea83a87
Remove image_pack_tag usage (#29925) 2024-04-15 09:05:19 +00:00
renovate[bot]
34e826f373
Update dependency typescript to v5.4.5 (#29945)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-15 07:28:29 +00:00
renovate[bot]
1906330d13
Update dependency react-redux to v9.1.1 (#29943)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-15 07:27:56 +00:00
renovate[bot]
80edd7a317
Update DefinitelyTyped types (non-major) (#29944)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-15 07:27:33 +00:00
renovate[bot]
e3dd60cce1
Update peter-evans/create-pull-request action to v6.0.3 (#29946)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-15 07:26:57 +00:00
renovate[bot]
86c53e175d
Update dependency @testing-library/react to v14.3.1 (#29947)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-15 07:26:41 +00:00
renovate[bot]
c4d6e10115
Update dependency rubocop to v1.63.1 (#29878)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-12 10:57:37 +00:00
renovate[bot]
67a37c7279
Update dependency sass to v1.75.0 (#29919)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-12 10:56:49 +00:00
Matt Jankowski
61d108f415
Extract header_tags method in statuses/show view spec (#29907) 2024-04-12 09:50:46 +00:00
renovate[bot]
8986e3b088
Update dependency webpack-bundle-analyzer to v4.10.2 (#29909)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-12 09:48:13 +00:00
Claire
c386c36866
Add / keyboard shortcut to focus the search field (#29921) 2024-04-12 09:42:12 +00:00
renovate[bot]
3f821e0d5e
Update dependency postcss-preset-env to v9.5.5 (#29912)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-12 09:41:44 +00:00
Matt Jankowski
da6b9238f5
Expand coverage for admin/metrics/measure/* classes (#29914) 2024-04-12 09:38:24 +00:00
Matt Jankowski
ec5a0e0f5e
Expand coverage for admin/metrics/dimension/* classes (#29913) 2024-04-12 09:18:35 +00:00
Matt Jankowski
13bbde2246
Use existing DEFAULT_FIELDS_SIZE constant to limit Account#fields (#29911) 2024-04-12 09:04:23 +00:00
github-actions[bot]
5992df0762
New Crowdin Translations (automated) (#29920)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-12 08:19:48 +00:00
Matt Jankowski
449f99e168
Fix repeated concat output buffer duplicating layout markup (#29918) 2024-04-11 23:37:07 +00:00
github-actions[bot]
20b1e55f24
New Crowdin Translations (automated) (#29903)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-11 10:30:31 +00:00
renovate[bot]
4826c1da8a
Update dependency devise to v4.9.4 (#29890)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-11 09:00:15 +00:00
Matt Jankowski
576554b19b
Use fabrication sequence in domain values (#29895) 2024-04-11 08:59:01 +00:00
renovate[bot]
96bdeeed0e
Update dependency nokogiri to v1.16.4 (#29900)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-11 08:50:34 +00:00
Essem
ce98ee9b00
Merge remote-tracking branch 'upstream/main' 2024-04-10 17:36:38 -05:00
github-actions[bot]
db5a5636d9
New Crowdin Translations (automated) (#29888)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-10 13:03:40 +00:00
Matt Jankowski
4565015615
Fix Style/MapIntoArray cop in cli progress helper (#29884) 2024-04-10 12:46:43 +00:00
Matt Jankowski
b57ee5cf5b
Fix Style/MapIntoArray cop in context helper (#29885) 2024-04-10 12:46:39 +00:00
Matt Jankowski
4948a063d2
Use tt extension for form scaffold template (#29676) 2024-04-10 09:20:21 +00:00
renovate[bot]
b8dca8d22a
Update dependency typescript to v5.4.4 (#29875)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-08 14:08:32 +00:00
Matt Jankowski
285f63c02e
Use composable query in User.active scope (#29775) 2024-04-08 13:53:49 +00:00
Claire
babbf6017d
Remove caching in cache_collection (#29862) 2024-04-08 13:46:13 +00:00
Claire
f3430eebbb
Fix hashtag string interpolation in welcome email (#29879) 2024-04-08 13:45:25 +00:00
github-actions[bot]
13faf26315
New Crowdin Translations (automated) (#29859)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-08 13:44:54 +00:00
Renaud Chaput
730e2127e1
Fix webpack warnings due to unhandled extensions (LICENCE and README.md) (#29869) 2024-04-08 08:17:51 +00:00
renovate[bot]
a1277a9b2b
Update eslint (non-major) (#29877)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-08 08:17:23 +00:00
renovate[bot]
2441fe6fd4
Update dependency stylelint-config-standard-scss to v13.1.0 (#29876)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-08 08:16:57 +00:00
renovate[bot]
b06510d579
Update DefinitelyTyped types (non-major) (#29874)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-08 08:16:36 +00:00
renovate[bot]
499b184fcd
Update dependency pino to v8.20.0 (#29865)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-08 08:16:20 +00:00
renovate[bot]
79bbb2023d
Update dependency react-intl to v6.6.5 (#29864)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-08 08:15:46 +00:00
Essem
06953f83d9
Merge remote-tracking branch 'upstream/main' 2024-04-06 13:20:25 -05:00
Claire
e73cf356d2
Move OAuth flow tests from feature tests to system tests (#29837) 2024-04-05 16:52:05 +00:00
Matt Jankowski
b61ae28f8d
Separate methods for theme style and meta color tags (#29802) 2024-04-05 09:52:43 +00:00
ache
52ab8a59c6
Forward 3035 port (#29710) 2024-04-05 09:19:43 +00:00
Matt Jankowski
c0fe8a9f13
Extract shared callback behaviour to CustomFilterCache concern (#29695) 2024-04-05 09:17:58 +00:00
renovate[bot]
285a87a77f
Update dependency scenic to v1.8.0 (#29794)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-05 09:04:10 +00:00
Matt Jankowski
59da591d13
Improve spec for dimension/languages admin metric (#29842) 2024-04-05 08:54:11 +00:00
Renaud Chaput
6ac90d4c5d
Add tests for our number formatting function (#29852) 2024-04-05 08:06:31 +00:00
Renaud Chaput
906a399634
Fix wrong extension for a test file (#29853) 2024-04-05 07:57:44 +00:00
renovate[bot]
c7378218ba
Update dependency rubocop-rspec to v2.29.1 (#29858)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-05 07:57:20 +00:00
Claire
38b9d31f63
Improve email address validation (#29838) 2024-04-05 07:48:45 +00:00
Claire
1f11aa5f04
Add stub for trending tags in user mailer spec (#29850) 2024-04-05 07:48:07 +00:00
Matt Jankowski
601834d746
Use partial collection render for welcome mailer features (#29843) 2024-04-04 16:13:10 +00:00
Matt Jankowski
191bf5876e
Add coverage for sanitize failure path in api/web/embeds spec (#29851) 2024-04-04 16:07:16 +00:00
Michael Stanclift
1c87cb8019
Add purple border to active compose field search inputs (#29839) 2024-04-04 11:51:06 +00:00
Matt Jankowski
966d7f5bf9
Add missing snowflake range correction (#29841) 2024-04-04 11:33:17 +00:00
Jeong Arm
4045c069f8
Use public_visibility (#29847) 2024-04-04 07:31:30 +00:00
renovate[bot]
91d3b3fb25
Update dependency sass to v1.74.1 (#29846)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-04 07:25:30 +00:00
renovate[bot]
58dfc12af2
Update babel monorepo to v7.24.4 (#29840)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-04 07:23:53 +00:00
nicolas
c6da3ee828
Makes the star icon rotate around its actual centre axis (#29844) 2024-04-03 21:10:02 +00:00
Matt Jankowski
cde3206478
Simplify feature loop in welcome mailer (#29760) 2024-04-03 20:10:59 +00:00
renovate[bot]
37d984b8bf
Update eslint (non-major) (#29820)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Renaud Chaput <renchap@gmail.com>
2024-04-03 18:05:39 +00:00
Michael Stanclift
e284417349
Fix blue border on emoji/language search in Safari & Chrome (#29832) 2024-04-03 15:19:10 +00:00
Michael Stanclift
5d67247061
Fix language and emoji search field background colors on light theme (#29828) 2024-04-03 14:22:50 +00:00
github-actions[bot]
56d13069cd
New Crowdin Translations (automated) (#29836)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-03 09:04:29 +00:00
renovate[bot]
4233ee1f59
Update dependency pg to v8.11.5 (#29833)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 21:33:43 +00:00
renovate[bot]
54c7d1ad14
Update dependency pg-connection-string to v2.6.4 (#29814)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 21:22:22 +00:00
Matt Jankowski
a7b637768e
Regenerate rubocop todo with version 1.62.1 (#29830) 2024-04-02 19:56:54 +00:00
renovate[bot]
88c3664889
Update dependency rubocop-performance to v1.21.0 (#29804)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 17:00:07 +00:00
Matt Jankowski
d27eb181f6
Reduce LineLength from 320 to 300 (#29636) 2024-04-02 15:50:57 +00:00
renovate[bot]
f8b03c3925
Update dependency faker to v3.3.1 (#29829)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 15:48:27 +00:00
Matt Jankowski
edde54e991
Update stoplight to version 4.1.0 (#28366) 2024-04-02 15:47:40 +00:00
Matt Jankowski
921c4c1273
Match comment style of FeedManager list/tags checks (#29639)
Co-authored-by: Renaud Chaput <renchap@gmail.com>
2024-04-02 14:07:31 +00:00
Claire
0b9d4103cb
Fix contrast in notification request badge (#29826) 2024-04-02 14:05:46 +00:00
Matt Jankowski
f87959ab50
Fix RSpec/LetSetup cop in api/v1/timelines/public spec (#28972) 2024-04-02 14:05:02 +00:00
Claire
54119570e6
Remove dependency on posix-spawn (#18559) 2024-04-02 14:02:07 +00:00
Matt Jankowski
34489591ec
Add max_pinned_statuses to instances serializer and api response (#29441) 2024-04-02 13:54:11 +00:00
Matt Jankowski
f56309f5f0
Add by_latest_used scope, move admin area recent IPs to partial (#29497) 2024-04-02 13:51:34 +00:00
renovate[bot]
c70c39cad0
Update docker/dockerfile Docker tag to v1.7 (#27993)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 13:47:15 +00:00
renovate[bot]
b0692d994f
Update dependency letter_opener to v1.10.0 (#29189)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 13:31:03 +00:00
renovate[bot]
695dded7ed
Update dependency aws-sdk-s3 to v1.146.1 (#28961)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 13:29:46 +00:00
renovate[bot]
f6e24bbd79
Update dependency postcss-preset-env to v9.5.4 (#29825)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 12:13:43 +00:00
Renaud Chaput
b4d991adaa
Use integers and not numbers in notification policy API counters (#29810) 2024-04-02 10:06:26 +00:00
renovate[bot]
d05f62391d
Update dependency public_suffix to v5.0.5 (#29824)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 10:04:32 +00:00
Renaud Chaput
e47a3d00fe
Add API types for status and related objects (#29792) 2024-04-02 10:03:33 +00:00
Renaud Chaput
07635228e2
Fix Redux Middleware types (#29800) 2024-04-02 09:56:03 +00:00
Matt Jankowski
a3fe82e359
Rename cop RSpec/Rails/HttpStatus to RSpecRails/HttpStatus (#29806) 2024-04-02 09:34:44 +00:00
github-actions[bot]
c717747603
New Crowdin Translations (automated) (#29812)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-04-02 09:26:06 +00:00
Michael Stanclift
fa9574086d
Fix search box color on light theme (#29808) 2024-04-02 09:15:31 +00:00
renovate[bot]
143d9553fa
Update dependency fastimage to v2.3.1 (#29822)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 09:15:24 +00:00
renovate[bot]
a4158be4d7
Update devDependencies (non-major) (#29819)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 08:59:52 +00:00
renovate[bot]
2f7a2d4df7
Update DefinitelyTyped types (non-major) (#29818)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 08:59:26 +00:00
renovate[bot]
b58666e12e
Update dependency @reduxjs/toolkit to v2.2.3 (#29817)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 08:59:05 +00:00
renovate[bot]
9611023380
Update dependency postcss-preset-env to v9.5.3 (#29816)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 08:58:00 +00:00
renovate[bot]
173adb04e2
Update dependency pg to v8.11.4 (#29813)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-04-02 08:57:14 +00:00
renovate[bot]
589e34d00c
Update dependency selenium-webdriver to v4.19.0 (#29776)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-04-02 08:53:44 +00:00
Michael Stanclift
90eb4a5d01
Fix light theme header on mobile (#29809) 2024-03-29 21:03:30 +00:00
Michael Stanclift
430da03160
Fix background tint in single column light theme (#29803) 2024-03-29 17:16:51 +00:00
Renaud Chaput
69e5771881
Handle createAppAsyncThunk rejected actions in the errors middleware (#29791) 2024-03-29 13:57:39 +00:00
github-actions[bot]
f96648d41c
New Crowdin Translations (automated) (#29796)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-29 13:35:50 +00:00
Renaud Chaput
672c9f5f05
Change the theme-color value automatically when using a built-in theme (#29795) 2024-03-29 13:32:07 +00:00
renovate[bot]
671167f6da
Update dependency glob to v10.3.12 (#29790)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-29 13:31:13 +00:00
renovate[bot]
cd9d11dda6
Update dependency debug to v1.9.2 (#29799)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-29 13:30:52 +00:00
Renaud Chaput
67442f9039
Remove global boosts state and convert boosts modal to Typescript (#29774) 2024-03-28 15:33:15 +00:00
github-actions[bot]
8a498f4e65
New Crowdin Translations (automated) (#29785)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-28 14:48:09 +00:00
Claire
4f068d4fcc
Fix logo pushing header buttons out of view on certain conditions in mobile layout (#29787) 2024-03-28 14:00:57 +00:00
Matt Jankowski
e85f24174e
Simplify checklist step loop in welcome mailer (#29761) 2024-03-28 10:56:33 +00:00
renovate[bot]
d44e7a8578
Update dependency node to 20.12 (#29765)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-28 10:54:16 +00:00
Renaud Chaput
961bb84e4c
Fix <RelativeTimestamp> types (#29781) 2024-03-28 10:07:01 +00:00
Renaud Chaput
d088964761
Fix props for <Button> (#29780) 2024-03-28 10:06:25 +00:00
Renaud Chaput
f2fd1da23f
Fix PropTypes for some record objects (#29786) 2024-03-28 10:05:16 +00:00
github-actions[bot]
1025fff6b9
New Crowdin Translations (automated) (#29772)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-27 21:19:03 +00:00
Claire
c913e2f3e5
Fix language picker and privacy picker not having a backdrop filter (#29779) 2024-03-27 16:32:00 +00:00
Renaud Chaput
b9982ce578
Fix notifications marker fetch (#29777) 2024-03-27 15:49:02 +00:00
Renaud Chaput
9fbe8d3a0c
Rewrite PIP state in Typescript (#27645)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-03-27 15:19:33 +00:00
Matt Jankowski
b016f03637
Pull out constant from AccountWarning.recent scope (#29767) 2024-03-27 14:08:04 +00:00
Renaud Chaput
27d014a7fa
Rewrite markers reducer in Typescript (#27644) 2024-03-27 12:47:09 +00:00
renovate[bot]
d49343ed11
Update dependency react-intl to v6.6.4 (#29771)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-27 09:59:54 +00:00
renovate[bot]
86f999c1f2
Update dependency json-schema to v4.3.0 (#29769)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-27 09:59:50 +00:00
Matt Jankowski
1d0a43f6a3
Use composable query in Status.not_domain_blocked_by_account scope (#29766) 2024-03-27 09:59:45 +00:00
renovate[bot]
c5692d2f2f
Update dependency prom-client to v15.1.1 (#29764)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-27 09:59:42 +00:00
Essem
a2ffb4fbac
Hack to make the sidebar background visible 2024-03-26 20:07:54 -05:00
Claire
b2d841ce9a
Fix column borders disappearing in advanced interface on low width viewports (#29763) 2024-03-26 23:14:11 +00:00
Matt Jankowski
c4feba4347
Use existing MascotHelper#instance_presenter instead of local var in welcome email template (#29759) 2024-03-26 15:58:48 +00:00
Claire
de740dfb9c
Use upsert_all and insert_all to reduce back-and-forth in costly migrations (#29752) 2024-03-26 15:57:08 +00:00
Claire
9c24f2d6b1
Undo notification permissions on individual and domain blocks (#29570) 2024-03-26 14:46:38 +00:00
Claire
7508472d84
Fix admin interface repeating rule title instead of showing hint text (#29758) 2024-03-26 14:46:05 +00:00
Claire
cfea9cc172
Add list of pending releases directly in mail notifications for version updates (#29436) 2024-03-26 14:45:19 +00:00
Matt Jankowski
32938dadd7
Add not_allowed scope for PreviewCardTrend (#29599) 2024-03-26 13:21:20 +00:00
Matt Jankowski
cf76380c91
Add AccountStat.by_recent_status, use in Account (#29704) 2024-03-26 13:12:09 +00:00
renovate[bot]
b34c089591
Update dependency csv to v3.3.0 (#29715)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-26 13:09:35 +00:00
github-actions[bot]
b3d970bdb8
New Crowdin Translations (automated) (#29756)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-26 09:49:19 +00:00
Matt Jankowski
c3e3c60069
Remove extraneous Lint/UselessAccessModifier config (#29749) 2024-03-26 09:33:07 +00:00
Matt Jankowski
5e6a600b64
Bundler version update and misc gem version bumps (#29717) 2024-03-26 09:31:24 +00:00
Emelia Smith
eb926b7e60
Ensure case-insensitive fields are converted to lowercase in user imports (#29740) 2024-03-26 09:30:10 +00:00
Emelia Smith
a3e8b78250
Ensure case-insensitive fields are converted to lowercase in Admin Imports (#29739) 2024-03-26 09:30:07 +00:00
renovate[bot]
06fc2b3fde
Update dependency faker to v3.3.0 (#29755)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-26 09:29:38 +00:00
renovate[bot]
572a8ef7f9
Update dependency rubocop-rails to v2.24.1 (#29745)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-26 09:27:41 +00:00
renovate[bot]
3002a1e89b
Update dependency express to v4.19.2 (#29750)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-26 09:27:23 +00:00
renovate[bot]
36bc57de95
Update dependency cssnano to v6.1.2 (#29754)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-26 09:27:05 +00:00
Renaud Chaput
02ea161506
Support "system" theme setting (light/dark theme depending on user system preference) (#29748)
Co-authored-by: Nishiki Liu <hello@nshki.com>
2024-03-26 09:25:49 +00:00
Essem
1a1ff228b3
Update to mastomodern 1.10.5 2024-03-25 23:35:10 -05:00
Essem
aaf54c6395
Merge remote-tracking branch 'upstream/main' 2024-03-20 16:41:33 -05:00
Essem
2d07a29632
Merge remote-tracking branch 'upstream/main' 2024-03-17 00:13:58 -05:00
Essem
b2660e4670
Use a consumer for identity 2024-03-14 20:51:15 -05:00
Essem
fd1f0891d9
Merge remote-tracking branch 'upstream/main' 2024-03-14 20:36:26 -05:00
Essem
32308b6536
Merge remote-tracking branch 'upstream/main' 2024-03-09 18:22:55 -06:00
Essem
4fb9a34830
Merge remote-tracking branch 'upstream/main' 2024-03-04 22:55:35 -06:00
Essem
9a4b0c8365
mastomodern 1.10.3 2024-02-29 16:43:39 -06:00
Essem
c609845d47
Merge remote-tracking branch 'upstream/main' 2024-02-29 16:35:17 -06:00
Essem
cdb366cbc6
Use openURL function from upstream 2024-02-28 23:40:02 -06:00
Essem
ea51af8eca
Add Tenor GIF picker
Co-authored-by: koyu <me@koyu.space>
2024-02-28 23:10:57 -06:00
Essem
54a3fc3ac5
Merge remote-tracking branch 'upstream/main' 2024-02-28 22:36:41 -06:00
Essem
1aff1b9f4c
Merge remote-tracking branch 'upstream/main' 2024-02-26 14:51:36 -06:00
Essem
a5308ac5b6
Update to mastomodern 1.10.2 2024-02-25 18:56:49 -06:00
Essem
521d4147a4
Fix "threaded more" typo 2024-02-25 17:09:45 -06:00
Essem
681a52f632
Fix i18n 2024-02-25 15:27:31 -06:00
Essem
db52ab33f0
Fix reaction picker dropdown appearance 2024-02-25 14:10:32 -06:00
Essem
2d5d3cd4db
Merge fixes 2024-02-25 14:10:08 -06:00
Essem
b19fce9530
Allow posting media alongside polls 2024-02-25 14:09:47 -06:00
Essem
fd6bd9c87b
Merge remote-tracking branch 'upstream/main' 2024-02-25 12:15:38 -06:00
Essem
42e86de3b0
Update to mastomodern 1.10.1 2024-02-21 18:03:43 -06:00
Essem
271096cee6
Profile fields style hotfix
Not exactly correct, but it should at least work for now.
2024-02-20 20:49:33 -06:00
Essem
3e93d6b90a
Fix status prepend messages in modern theme 2024-02-20 20:24:40 -06:00
Essem
15050d51c0
Merge remote-tracking branch 'upstream/main' 2024-02-20 19:05:36 -06:00
Essem
97e6e2e421
Merge remote-tracking branch 'upstream/main' 2024-02-18 21:17:02 -06:00
Essem
e9e0b1bf2f
Fix newline split 2024-02-18 12:10:02 -06:00
Essem
06bfae71d2
Remove duplicate "others" settings page 2024-02-18 11:51:19 -06:00
丈槍由紀
4574958a98
Fix blurhash for GlitchSoc 2024-02-18 11:45:00 -06:00
noellabo
3a483775bb
Add reject blurhash to Admin setting 2024-02-18 11:44:57 -06:00
noellabo
66ce3f9a5e
Add reject pattern to Admin setting 2024-02-18 11:44:54 -06:00
Essem
bcc8f0c032
Merge remote-tracking branch 'upstream/main' 2024-02-18 11:44:06 -06:00
Emelia Smith
de18f3069c
Enable rejection of Create Activities if the status includes unusable hashtags 2024-02-17 22:44:00 -06:00
Essem
c866e48f69
Fix indent in other settings page 2024-02-17 09:57:05 -06:00
丈槍由紀
d0a44917a0
Add Reject Pattern to Other Page on GlitchSoc 2024-02-17 09:40:03 -06:00
noellabo
45279418c5
Add reject pattern to Admin setting (Ported to Glitch Soc)
# Conflicts:
#	app/views/admin/settings/shared/_links.html.haml
#	config/routes/admin.rb
2024-02-17 09:39:59 -06:00
Essem
ac25c657e1
Merge remote-tracking branch 'upstream/main' 2024-02-17 09:38:57 -06:00
Essem
2867791776
Merge remote-tracking branch 'upstream/main' 2024-02-16 09:38:10 -06:00
Essem
c16136bfd9
Merge remote-tracking branch 'upstream/main' 2024-02-14 09:55:13 -06:00
Essem
76f1b63b71
Merge remote-tracking branch 'upstream/main' 2024-02-13 20:40:03 -06:00
Essem
170b07d56b
Hydrate reactions on streaming API 2024-02-09 21:00:59 -06:00
Essem
b51d0750c6
Purge status reactions on account delete 2024-02-07 17:14:16 -06:00
Essem
9e06c87265
Merge remote-tracking branch 'upstream/main' 2024-02-06 16:56:05 -06:00
Essem
227b5e57a3
Merge remote-tracking branch 'upstream/main' 2024-02-01 13:33:09 -06:00
Essem
bb14e271d8
Merge remote-tracking branch 'upstream/main' 2024-02-01 11:15:22 -06:00
Essem
b1b5ab92a4
Merge remote-tracking branch 'upstream/main' 2024-02-01 09:33:51 -06:00
Essem
12a9338db8
Merge remote-tracking branch 'upstream/main' 2024-01-30 19:05:54 -06:00
Essem
ab40fa1efb
Fix doodle modal icons 2024-01-30 19:00:21 -06:00
Essem
7c2d13dcfb
Fix rubocop lint issue 2024-01-28 14:51:10 -06:00
Essem
acae7d57e4
Fix JS linting issues 2024-01-28 13:52:08 -06:00
Essem
7940b067b9
Remove space between emojis in usernames 2024-01-28 13:35:35 -06:00
Essem
a71cd0c7ab
Merge remote-tracking branch 'upstream/main' 2024-01-28 12:53:56 -06:00
Essem
3add1ded91
Merge remote-tracking branch 'upstream/main' 2024-01-27 15:31:24 -06:00
Essem
dd7de07232
Merge remote-tracking branch 'upstream/main' 2024-01-26 21:57:28 -06:00
Essem
69e4361a1d
Merge remote-tracking branch 'upstream/main' 2024-01-24 21:09:39 -06:00
Essem
b875f804c0
Refactor status reactions query
This was done to announcement reactions in 1b0cb3b54d. Might as well do it here too.
2024-01-24 17:50:58 -06:00
Essem
e211e4e0ce
Simplify reactions API controller 2024-01-23 22:59:42 -06:00
Essem
54fb7c54c4
Merge remote-tracking branch 'upstream/main' 2024-01-19 14:59:02 -06:00
Essem
b6ec4af6f3
Update reaction emails
Reaction icon made by @t3rminus@calamity.world
2024-01-18 21:38:39 -06:00
Essem
adfa7877c3
Merge remote-tracking branch 'upstream/main' 2024-01-18 18:15:06 -06:00
Essem
d983bae9d2
Revert variant selector normalization
Probably worth tackling later, but for now it's not worth worrying about; some other implementations (e.g. Misskey's) look to have the same behavior anyways.
2024-01-17 18:04:36 -06:00
Essem
d96fd9f28f
Merge remote-tracking branch 'upstream/main' 2024-01-16 13:04:33 -06:00
Essem
dd7d7cb80a
Fix embed GIF icons 2024-01-14 17:22:38 -06:00
Essem
16839a6398
Update to mastomodern 1.9.1 2024-01-14 16:40:51 -06:00
Essem
2a6cc053f9
Move reaction normalization to API controller 2024-01-14 15:59:27 -06:00
Essem
e499c3f8b9
Merge remote-tracking branch 'upstream/main' 2024-01-14 15:44:01 -06:00
Essem
ac71680dcb
Merge remote-tracking branch 'upstream/main' 2024-01-14 15:41:16 -06:00
Essem
7374678aa7
Make name of like content parser function more general 2024-01-13 18:18:36 -06:00
Essem
faeff75a88
Normalize emojis with variant selectors 2024-01-13 18:16:57 -06:00
Essem
2ad9a4c50d
Update readme 2024-01-13 16:30:15 -06:00
Essem
d84bafcdc0
Merge remote-tracking branch 'upstream/main' 2024-01-13 16:28:34 -06:00
Essem
f436a11c4e
Merge remote-tracking branch 'upstream/main' 2024-01-12 11:21:43 -06:00
Essem
326a043c71
Update readme 2024-01-11 20:52:24 -06:00
Essem
843725b25b
Merge remote-tracking branch 'upstream/main' 2024-01-11 20:51:45 -06:00
Essem
3553a71aa7
Expose poll media support in instance api endpoint 2024-01-06 23:28:58 -06:00
Essem
34db0c743b
Expose conversation_id on statuses 2024-01-06 19:50:01 -06:00
Essem
063d10f7dc
Add install note to readme 2024-01-03 17:26:25 -06:00
Essem
84d1e8c0fd
Merge remote-tracking branch 'upstream/main' 2024-01-03 17:22:43 -06:00
Essem
70cedf5c0e
Merge remote-tracking branch 'upstream/main' 2024-01-03 17:21:22 -06:00
Essem
835b9efb93
Update readme 2024-01-03 13:14:52 -06:00
Essem
36e09fbd6d
Merge remote-tracking branch 'upstream/main' 2024-01-02 15:37:44 -06:00
Essem
174f1e7c2c
Merge remote-tracking branch 'upstream/main' 2023-12-30 13:56:14 -06:00
Essem
978cd69dd4
Merge remote-tracking branch 'upstream/main' 2023-12-29 12:50:42 -06:00
Essem
99e37ec353
Check for content attribute in Misskey likes 2023-12-26 19:00:13 -06:00
Essem
fc9a14dee9
Merge remote-tracking branch 'upstream/main' 2023-12-26 18:59:52 -06:00
Essem
a2e4c7bc74
Fix rubocop complaint 2023-12-22 16:09:43 -06:00
Essem
8860d937ce
Merge remote-tracking branch 'upstream/main' 2023-12-22 16:07:42 -06:00
Essem
5fdd18ead1
Merge remote-tracking branch 'upstream/main' 2023-12-20 15:01:05 -06:00
Essem
724ea24a5d
Fix the poll option add button attempting to submit a form 2023-12-19 23:35:48 -06:00
Essem
cc676636f4
Merge remote-tracking branch 'upstream/main' 2023-12-19 15:24:52 -06:00
Essem
95377058c2
Fix CSP tests 2023-12-19 15:17:31 -06:00
Essem
99b0ee27fa
Fix locales even more 2023-12-18 20:10:59 -06:00
Essem
1807bdbb4d
Fix locales 2023-12-18 20:03:10 -06:00
Essem
fe768435d6
Fix jsdoc 2023-12-18 19:55:34 -06:00
Essem
a5a5437a29
Remove "disabled" prop from emoji dropdown on vanilla flavor 2023-12-18 19:45:34 -06:00
Essem
f84f397807
Remove post reactions from vanilla flavor
This is mainly for cleanup and parity with the current PR. Not much reason to modify something that should be "vanilla" anyways.
2023-12-18 19:42:35 -06:00
Essem
59e8b9faa5
Linting fixes 2023-12-18 18:29:39 -06:00
Essem
f628ebad02
Merge remote-tracking branch 'upstream/main' 2023-12-18 18:05:23 -06:00
Essem
b60c006900
Enable nightly container builds 2023-12-17 23:15:32 -06:00
Essem
b37cd28bd1
Update readme 2023-12-17 19:53:27 -06:00
Essem
bbf2dbaf56
Merge remote-tracking branch 'upstream/main' 2023-12-17 19:48:56 -06:00
hazycora
2dde7a25a4 allow dashes in emoji shortcodes 2023-12-17 17:42:15 -06:00
hazycora
2eab76cbcc allow side-by-side emoji
(Let's see how this goes :woozycat:)
2023-12-17 17:42:15 -06:00
Essem
dfe6628e4b
Add new emojis from jdecked/twemoji 15.0 2023-12-16 16:25:22 -06:00
Essem
1ef832e0dc
Allow polls with one option 2023-12-12 20:52:01 -06:00
Essem
00dae881c5
Merge remote-tracking branch 'upstream/main' 2023-12-12 20:30:34 -06:00
Essem
ce1c652623
Merge remote-tracking branch 'upstream/main' 2023-12-10 23:28:41 -06:00
Essem
9002a71161
Merge remote-tracking branch 'upstream/main' 2023-12-04 11:38:50 -06:00
Essem
c898e29623
Fix constant redirects to onboarding page 2023-12-04 00:28:52 -06:00
Essem
8f2327095e
Merge branch 'main' of https://github.com/glitch-soc/mastodon 2023-12-03 21:12:22 -06:00
Essem
d58be1516f
Fix CSP for Tenor
Probably want to look into properly proxying it at some point.
2023-11-29 11:07:07 -06:00
Essem
291de8ba6e
wow that really was a bad idea 2023-11-29 00:13:53 -06:00
Essem
76894ccb58
Update readme 2023-11-28 23:36:31 -06:00
Essem
e797b43a32
Allow posting media alongside polls 2023-11-28 23:33:17 -06:00
Essem
570a8c00a2
Vertical status buttons fix 2023-11-27 10:31:51 -06:00
Essem
6aafe6c541
Merge branch 'main' of https://github.com/glitch-soc/mastodon 2023-11-27 10:22:34 -06:00
Essem
7a638e3225
Update mastomodern 2023-11-25 20:27:38 -06:00
Essem
6dd12b9cd2
Merge remote-tracking branch 'upstream/main' 2023-11-21 19:38:13 -06:00
Essem
97317db66c
[Glitch] Fix open status on media modal 2023-11-16 19:11:26 -06:00
Jeong Arm
7ed31b511a
Fix open status on media modal (#27867) 2023-11-16 19:10:31 -06:00
Essem
8d611ef932
Merge remote-tracking branch 'upstream/main' 2023-11-16 18:12:13 -06:00
Essem
9ed7ccc809
Update README 2023-11-15 11:05:13 -06:00
Essem
19def877be
Merge remote-tracking branch 'upstream/main' 2023-11-15 11:04:05 -06:00
Essem
5526ded863
Refactor react services 2023-11-12 21:00:00 -06:00
Essem
050212c35d
Fix reblog reactions 2023-11-10 17:37:22 -06:00
Essem
5222d41546
Add notification emails for reactions 2023-11-10 15:16:29 -06:00
Essem
19f2dabbba
Count gifvs as videos in attachment counts 2023-11-09 23:04:57 -06:00
Essem
5cf7306ed5
Merge remote-tracking branch 'plastikmensch/fix-onboarding-modal-opening-page-two' 2023-11-09 18:27:45 -06:00
Essem
1483b2b13d
More cleanup 2023-11-05 22:29:44 -06:00
Essem
c774bf9204
Merge branch 'feature/gif-picker' 2023-11-05 21:18:58 -06:00
Essem
3370394510
Add Tenor GIF picker
Co-authored-by: koyu <me@koyu.space>
2023-11-05 21:09:26 -06:00
Essem
4200584ff3
A bit of cleanup 2023-11-05 20:10:42 -06:00
Essem
759ab62c7b
Quick hotfix for mastomodern buttons? 2023-11-05 19:37:47 -06:00
Essem
bc5d74cc16
Fix advanced toggle banner visibility on mobile 2023-11-05 15:17:15 -06:00
Essem
1b64242fa5
Update to mastomodern upstream 2023-11-01 22:42:03 -05:00
Essem
c2033b5a86
Fix large icons in vanilla mastomodern 2023-11-01 17:33:45 -05:00
Essem
0868c11651
Merge branch 'main' of https://github.com/glitch-soc/mastodon 2023-10-30 14:42:53 -05:00
Essem
a2e88f3544
[Glitch] Fix some remote posts getting truncated
Port 4d59dfb to glitch-soc
2023-10-24 10:19:12 -05:00
Essem
27c641a848
Merge branch 'main' of https://github.com/glitch-soc/mastodon 2023-10-24 10:16:17 -05:00
Essem
c10194fc82
Merge branch 'main' of https://github.com/glitch-soc/mastodon 2023-10-20 11:48:03 -05:00
Essem
7d7d8e0c82
Fix mastomodern bottom bar 2023-10-19 11:13:52 -05:00
Essem
9990da927b
Merge branch 'main' of https://github.com/glitch-soc/mastodon 2023-10-12 13:42:12 -05:00
Essem
9c0a4a6937
Update mastomodern to 1.8.1 2023-10-11 11:09:27 -05:00
Essem
84ea1a19fa
Merge branch 'main' of https://github.com/glitch-soc/mastodon 2023-10-11 11:07:33 -05:00
Essem
fc8d62cf93
Fix rubocop config 2023-10-11 11:07:18 -05:00
Essem
9b73910346
Revert "Update mastomodern to 1.8.0"
This reverts commit 0aea24cfb7.
2023-10-10 12:25:47 -05:00
Essem
29f2a7d9f4
Merge branch 'main' of https://github.com/glitch-soc/mastodon 2023-10-10 12:24:32 -05:00
Essem
eef26a5066
Revert "Change score half-life for trending posts from 2 hours to 1 hour (#26915)"
This reverts commit fc6825055b.
2023-10-06 23:02:38 -05:00
Essem
0aea24cfb7
Update mastomodern to 1.8.0 2023-10-06 17:39:27 -05:00
Essem
ac7e36cdd3
Set oEmbed author to content when video is present
Discord won't show post content when a video is attached.
This essentially copies what FixTweet does to work around that.
2023-10-05 17:05:15 -05:00
gunchleoc
c85a1b83b3
Only strip country code when language not listed in SUPPORTED_LOCALES (#27099) 2023-09-28 11:49:27 -05:00
Essem
8d776b9aa5
Merge remote-tracking branch 'upstream/main' 2023-09-26 20:03:35 -05:00
Essem
b9e42c7cda
Update readme 2023-09-24 21:14:06 -05:00
Essem
26c343df42
Properly remove tIME chunk from PNG uploads 2023-09-24 21:13:49 -05:00
Essem
940ee54641
Merge remote-tracking branch 'upstream/main' 2023-09-21 12:33:23 -05:00
Essem
4e8a66b240
Merge remote-tracking branch 'upstream/main' 2023-09-19 10:15:12 -05:00
Essem
1007c16320
Merge remote-tracking branch 'upstream/main' 2023-09-19 10:05:45 -05:00
Essem
81c06b286f
Merge branch 'main' of https://github.com/glitch-soc/mastodon 2023-09-16 11:27:11 -05:00
Essem
08c8c856b3
Bump client-side max resize resolution to 3840x2160 2023-09-13 21:03:39 -05:00
Essem
4d9832b211
Merge remote-tracking branch 'upstream/main' 2023-09-07 08:52:29 -05:00
Essem
c57f803db7
Merge remote-tracking branch 'claire/glitch-soc/port-upstream-hashtags' 2023-09-04 19:10:42 -05:00
Essem
b871816f0e
Merge remote-tracking branch 'upstream/main' 2023-09-04 19:00:18 -05:00
Plastikmensch
abdc6ae28b
Fix onboarding modal always opening page 2
When opening the onboarding modal in the webUI, it always opens on page 2, as `handleSwipe` is called on load with 'focus', changing `currentIndex` from 0 to 1.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-09-03 02:47:50 +02:00
Eugen Rochko
04220ff7e8 [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-09-02 15:34:20 +02:00
Claire
670f55e83c Fix interaction between CWs and hashtag bars 2023-09-02 11:44:58 +02:00
Claire
d05e100f56 Fix hashtag bar styling 2023-09-02 11:44:58 +02:00
Claire
cbf9b0d8b1 [Glitch] Change hashtag bar tags to be de-emphasized
Port 613cfd625c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-02 11:44:58 +02:00
Renaud Chaput
5153b5e862 [Glitch] Better hashtag normalization when processing a post
Port 58acaa9ae6 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-09-02 11:44:58 +02:00
Renaud Chaput
0412a9d775 [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-09-02 11:44:58 +02:00
Claire
a547453059 [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-09-02 11:44:58 +02:00
Claire
03580d3443 [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-09-02 11:44:58 +02:00
Claire
58cfd200a5 [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-09-02 11:44:58 +02:00
Essem
9da802a271
Fix mastomodern hashtag bar 2023-08-28 19:54:04 -05:00
Essem
1fe16ad546
Merge remote-tracking branch 'claire/glitch-soc/merge-upstream' 2023-08-27 00:24:46 -05:00
Essem
7f94e0a8a7
Merge remote-tracking branch 'upstream/main' 2023-08-27 00:23:51 -05:00
Claire
9b958a707f Fix interaction between CWs and hashtag bars 2023-08-25 21:54:15 +02:00
Claire
27812cb158 Fix hashtag bar styling 2023-08-25 21:46:43 +02:00
Claire
f5b0cca7d0 [Glitch] Change hashtag bar tags to be de-emphasized
Port 613cfd625c to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-25 21:42:04 +02:00
Renaud Chaput
5485c87def [Glitch] Better hashtag normalization when processing a post
Port 58acaa9ae6 to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
2023-08-25 21:40:52 +02:00
Renaud Chaput
7402adf6e2 [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-08-25 21:38:24 +02:00
Claire
bd02fbcbcc [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-08-25 21:25:04 +02:00
Claire
d11b6dcbfc [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-08-25 21:24:37 +02:00
Claire
f5a557a4b9 [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-08-25 21:18:48 +02:00
Essem
b153bf8eda
yeah 2023-08-24 13:54:16 -05:00
Essem
0451c28535
Merge remote-tracking branch 'upstream/main' 2023-08-24 13:51:53 -05:00
Essem
f43bd5ca21
Bump mastomodern 2023-08-22 17:10:56 -05:00
Essem
958fe2b770
Merge remote-tracking branch 'upstream/main' 2023-08-22 17:05:43 -05:00
Essem
f75dfa5b7c
what 2023-08-15 17:28:40 -05:00
Essem
64bd79c862
Update mastomodern 2023-08-15 17:24:45 -05:00
Essem
e8ba9a39d7
Merge remote-tracking branch 'upstream/main' 2023-08-15 17:18:04 -05:00
Essem
1ec905149e
Merge remote-tracking branch 'upstream/main' 2023-08-12 16:44:23 -05:00
Essem
9ca86ed7db
mastomodern 1.6.11 2023-08-11 17:30:00 -05:00
Essem
840315e3c6
Merge remote-tracking branch 'upstream/main' 2023-08-11 17:28:56 -05:00
Essem
0f41d99d5f
Set Markdown as default content type 2023-08-10 12:47:43 -05:00
Essem
695d86d3e9
Merge remote-tracking branch 'plastikmensch/set-default-content-type-from-settings-yml' 2023-08-10 12:46:13 -05:00
Essem
0f69f072dd
Update mastomodern 2023-08-09 21:29:48 -05:00
Plastikmensch
c57d730d5b
Set default_content_type default from settings.yml
Glitch-soc used to allow setting the default content type for new users by changing the setting in settings.yml.

Since the refactor of user settings, changing it had no effect.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-08-09 16:22:48 +02:00
Essem
59adebb665
Add info to readme 2023-08-08 14:25:02 -05:00
Essem
621b6cf6b1
Update mastomodern to 1.6.8 2023-08-08 13:35:18 -05:00
Essem
9d7f0c6005
how 2023-08-08 11:32:59 -05:00
Essem
5185f738e2
Add Mastodon Modern theme by Freeplay
Added with permission/under CC BY-SA 4.0.
Original repo: https://codeberg.org/Freeplay/Mastodon-Modern
2023-08-08 11:28:35 -05:00
Essem
d9ea6abec0
Merge remote-tracking branch 'upstream/main' 2023-07-31 12:24:48 -05:00
Essem
e036958642
Point to Chuckya repo URL by default 2023-07-17 10:26:33 -05:00
neatchee
84075be6a1
Try fixing emoji in Ruby7 2023-07-17 10:25:01 -05:00
Essem
e64c00ec84
Merge remote-tracking branch 'upstream/main' 2023-07-17 10:24:20 -05:00
Essem
03a1d99706
Merge remote-tracking branch 'catstodon/feature/emoji_reactions' 2023-07-08 23:08:24 -05:00
Essem
d05e10f121
Merge remote-tracking branch 'upstream/main' 2023-07-08 22:20:11 -05:00
Jeremy Kescher
6315a70c23
Fix translations 2023-07-07 21:57:41 +02:00
Jeremy Kescher
b3a8cdd468
Move status_reactions.js to status_reactions.jsx 2023-07-07 21:57:41 +02:00
Plastikmensch
f1f8012745
Add missing name param.
Follow-up to 3a91f535fa
Missed these while porting changes.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-07 21:57:41 +02:00
Jeremy Kescher
87c1a75191
Use named import for AnimatedNumber 2023-07-07 21:57:41 +02:00
Jeremy Kescher
0cef59e954
Fix some RubyCop offenses 2023-07-07 21:57:41 +02:00
Plastikmensch
0ac7b22532
Fix being able to bypass MAX_REACTIONS
When reacting with different custom emojis with the same shortcode, it would count as an already present reaction and processed, bypassing the limit.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-07 21:57:41 +02:00
Plastikmensch
1a42ad69f7
Refactor emoji reactions
Instead of processing tag and then look for the custom emoji, let the processing return an emoji.

Add `name` to `process_emoji_tags` to check if it matches the shortcode.

Removed `process_single_emoji` and added its code to `process_emoji_tags`

Removed arg from `maybe_process_misskey_reaction`.
Ideally, `original_status` should be a global object, but I wanted to modify vanilla code as little as possible.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-07 21:57:41 +02:00
Plastikmensch
f4f1cc9eab
Only allow reacting with remote emojis when status is local
Handling remote reactions with foreign emojis would require an extensive rewrite of vanilla code, so instead prevent reactions with remote emojis when the status is not local.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-07 21:57:41 +02:00
Plastikmensch
51b00dd034
Don't set me to true for remote reactions
When an account and a remote account reacted with a custom emoji with the same shortcode, the `me` attribute was also true for the remote reaction, despite being a different emoji.

This query should probably be optimised, but it works.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-07 21:57:41 +02:00
Plastikmensch
e90ab798a1
Don't allow reactions with disabled custom emojis
Also doesn't set custom_emoji to a local variant of name when not given.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-07 21:57:41 +02:00
Plastikmensch
63facd7c8e
Handle Undo from Misskey
Right now Misskey users were able to react, but couldn't remove their reactions.
delegates `Undo` for a `Like` to `undo_emoji_react` when there is no favourite found.

(Misskey `Like` activities can still create a fav when the emoji tag is invalid, I don't see the point though)

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-07 21:57:41 +02:00
Plastikmensch
03845b0be2
Only process single custom emoji
Processing all custom emojis is neither wise nor necessary as both `Like` and `EmojiReact` only expect a single custom emoji

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-07 21:57:40 +02:00
Plastikmensch
21975a11fd
Rescue uncaught RecordInvalid errors
These occur when an account tries to react with disabled custom emojis.
In both `EmojiReact` and `Like? activities, the activity is discarded.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-07 21:57:40 +02:00
Plastikmensch
762d9bbb97
Add custom_emoji to reacted?
Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-07 21:57:40 +02:00
Jeremy Kescher
029e18f9b8
ReactionsController: Don't check for status reaction existence in destroy
UnreactService checks for its existence in the background anyway, so remove redundant checks.
2023-07-07 21:57:40 +02:00
Jeremy Kescher
4cb90c6bf0
Fix invalidating status reactions when they already exist
Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-07 21:57:40 +02:00
Jeremy Kescher
4113237eb1
status_reaction_fabricator: Use a unicode emoji instead of "MyString"
Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-07 21:57:40 +02:00
Jeremy Kescher
ae37d47de5
api.rb: Remove resources line that wasn't in routes.rb anymore
Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-07-07 21:57:40 +02:00
Jeremy Kescher
e93f2941de
Remove German translation for setting_visible_reactions 2023-07-07 21:57:40 +02:00
Jeremy Kescher
2d2130bce6
Remove old french emoji reaction-related strings 2023-07-07 21:57:40 +02:00
Jeremy Kescher
bf7a20b77c
Introduce visible reactions default setting 2023-07-07 21:57:40 +02:00
Jeremy Kescher
cf6e8134f5
Fix visible reactions setting not applying 2023-07-07 21:57:40 +02:00
Jeremy Kescher
13657de04e
eslint fix 2023-07-07 21:57:40 +02:00
Jeremy Kescher
b6a646d10c
Remove further leftover makeCustomEmojiMap references 2023-07-07 21:57:40 +02:00
Jeremy Kescher
cd6702280c
Remove duplicate notification_mailer definition 2023-07-07 21:57:40 +02:00
Jeremy Kescher
224ced2cc0
Fix n+1 query for move emoji reaction settings migration 2023-07-07 21:57:40 +02:00
Jeremy Kescher
c781b34278
Run rubocop -a 2023-07-07 21:57:40 +02:00
Jeremy Kescher
31d9da6172
Removed unused imports in status_container.js 2023-07-07 21:57:40 +02:00
Jeremy Kescher
87d8579fa4
Add back missing visibleReactions variable to both initial_state.js files 2023-07-07 21:57:40 +02:00
Jeremy Kescher
0839dcdc7b
Add missing visible_reactions to vanilla initial_state typedef 2023-07-07 21:57:40 +02:00
Jeremy Kescher
0fe3bc4309
Fix max_reactions typedef 2023-07-07 21:57:40 +02:00
Jeremy Kescher
af549a7d8d
Move reaction endpoints from route.rb to api.rb 2023-07-07 21:57:40 +02:00
neatchee
290e1cb42d
Remove stale/missed references to makeCustomEmojiMap / EmojiMap 2023-07-07 21:57:40 +02:00
Jeremy Kescher
9268c0923d
Reactions: Return 404 when status should not be visible, asynchronous unreact 2023-07-07 21:57:40 +02:00
Jeremy Kescher
6e0d17cc7d
Add missing authorization to ReactService 2023-07-07 21:57:40 +02:00
neatchee
c47aa90717
Restore loc files for non-English languages; CrowdIn should handle this 2023-07-07 21:57:40 +02:00
Jeremy Kescher
bcab2d89ca
Update emoji reaction patches 2023-07-07 21:57:40 +02:00
neatchee
f214cd2938
Fix placement of reactions bar for new threading UI 2023-07-07 21:57:40 +02:00
Jeremy Kescher
c6d04be51a
Migrate emoji reactions 2023-07-07 21:57:40 +02:00
neatchee
08264918bf
Remove old .js locale files accidentally restored during rebase 2023-07-07 21:57:40 +02:00
Ivan Rodriguez
76da89a262
Keep emoji picker within screen bounds
Adds the `flip` prop to `<Overlay>`. Fixes #40
2023-07-07 21:57:40 +02:00
neatchee
8a0264bdf4
Fix rebase issues 2023-07-07 21:57:40 +02:00
neatchee
253c489177
Per PR suggestion, split name and domain, and look for emoji ID, for unreact, so remote emoji's can be unreacted 2023-07-07 21:57:40 +02:00
fef
c1f7ff6129
move emoji reaction strings to locales-glitch 2023-07-07 21:57:40 +02:00
Jeremy Kescher
eb696396a1
Fix status reactions preventing an on_cascade delete 2023-07-07 21:57:40 +02:00
fef
370a5d2cd1
bypass reaction limit for foreign accounts 2023-07-07 21:57:40 +02:00
fef
1a85f0274e
fix 404 when reacting with Keycap Number Sign
The Unicode sequence for this emoji starts with an
ASCII # character, which the browser's URI parser
truncates before sending the request to the
backend.
2023-07-07 21:57:40 +02:00
fef
ff712b7aa5
fix status action bar after upstream changes 2023-07-07 21:57:39 +02:00
fef
e54ccf57c7
fix schema after rebase 2023-07-07 21:57:39 +02:00
fef
168cb08ba6
delete reaction notifications when deleting status 2023-07-07 21:57:39 +02:00
fef
3540af41db
support reacting with foreign custom emojis 2023-07-07 21:57:39 +02:00
fef
0b6cb441ad
properly disable reactions when not logged in 2023-07-07 21:57:39 +02:00
fef
4b9075e65b
serialize custom emoji reactions properly for AP
Akkoma and possibly others expect the `tag` field
in an EmojiReact activity to be an array, not just
a single object, so it's being wrapped into one
now.  I'm not entirely sure whether this is the
idiomatic way of doing it tbh, but it works fine.
2023-07-07 21:57:39 +02:00
fef
04fa964a10
also disable reaction buttons in vanilla flavour 2023-07-07 21:57:39 +02:00
fef
695d93adf9
disable reaction button when not signed in 2023-07-07 21:57:39 +02:00
fef
53e8307a6b
fix image for new custom emoji reactions 2023-07-07 21:57:39 +02:00
fef
bad5b2d485
run i18n-tasks normalize 2023-07-07 21:57:39 +02:00
fef
a5c96afeac
display external custom emoji reactions properly
Using an emoji map was completely unnecessary in
the first place, because the reaction list from
the API response includes URLs for every custom
emoji anyway.  The reaction list now also contains
a boolean field indicating whether it is an
external custom emoji, which is required because
people should only be able to react with Unicode
emojis and local custom ones, not with custom
emojis from other servers.
2023-07-07 21:57:39 +02:00
fef
56617243b5
handle incoming custom emoji reactions properly 2023-07-07 21:57:39 +02:00
fef
4026e40b32
support Undo action for EmojiReaction 2023-07-07 21:57:39 +02:00
fef
2cf232c1ac
download remote custom emojis from reactions
Emoji reactions containing custom emojis from
remote instances were assumed to already have
been downloaded and stored in the database.
This might obviously not be the case.
2023-07-07 21:57:39 +02:00
fef
c38ce09d74
sanitize setting for number of visible reactions
This is kind of a hack, but the lack of
validation for settings unfortunately makes it
necessary.
2023-07-07 21:57:39 +02:00
Jeremy Kescher
3c84fc19d4
Add reaction limit to instance serializer 2023-07-07 21:57:39 +02:00
fef
9ea349ea92
fix padding on posts without reactions
The margins of the elements above and below the
main reaction list element overlapped before
reactions were added.  Adding display: none to
empty reaction bars restores this exact look.
2023-07-07 21:57:39 +02:00
fef
a05d93da6d
rename nop handler to handleNoOp
This also adds the comment in action_bar.js to
status_action_bar.js, clarifying that a future
version could improve this code by modifying
EmojiPickerDropdown.
2023-07-07 21:57:39 +02:00
fef
ef97a35161
cleanup JS imports and other minor stuff 2023-07-07 21:57:39 +02:00
fef
01cc5133e0
remove unnecessary parameter 2023-07-07 21:57:39 +02:00
fef
b978e10bef
change reaction api to match other interactions
Status reactions had an API similar to that of
announcement reactions, using PUT and DELETE at a
single endpoint.  I believe that for statuses, it
makes more sense to follow the convention of the
other interactions and use separate POST endpoints
for create and destroy respectively.
2023-07-07 21:57:39 +02:00
fef
5d94cbfc31
fix reaction deletion bug and clean up controller
Turns out the strange error where it would delete
the wrong reaction occurred because I forgot to
pass the emoji name to the query, which resulted
in the database deleting the first reaction it
found.  Also, this removes the unused set_reaction
callback and includes the Authorization module for
the status reactions controller.
2023-07-07 21:57:39 +02:00
fef
f1c26962f0
remove outdated comments 2023-07-07 21:57:39 +02:00
fef
82c137c726
clean up new imports in vanilla flavour 2023-07-07 21:57:39 +02:00
fef
3313ab8651
rebase with upstream 2023-07-07 21:57:39 +02:00
fef
956321b863
make number of visible reactions a vanilla setting
Reactions will be backported to the vanilla
flavour, which requires all related settings to
be accessible from the vanilla settings page
rather than the glitch specific settings modal.
2023-07-07 21:57:39 +02:00
fef
759435f6a8
make number of displayed reactions a setting
This adds an extra item to the local settings for
specifying the number of reactions shown in toots.
The detailed status view always shows all
reactions.
2023-07-07 21:57:39 +02:00
fef
5526b1b39b
change default reaction limit to 1 2023-07-07 21:57:39 +02:00
fef
661c1bb360
limit number of reactions displayed
Too many reactions on a single post quickly get
spammy, so they are now sorted by count and only
the first MAX_REACTIONS number of different
emojis are actually displayed.
2023-07-07 21:57:39 +02:00
fef
02c69ca9f7
fix reaction margins and paddings 2023-07-07 21:57:39 +02:00
fef
622e384aa4
cleanup frontend emoji reaction code 2023-07-07 21:57:39 +02:00
fef
da177d6c9d
cleanup backend emoji reaction code 2023-07-07 21:57:38 +02:00
fef
a14c84b553
fix padding for reaction button 2023-07-07 21:57:38 +02:00
fef
2dbdc74771
handle misskey reactions properly
misskey federates emoji reactions as likes.
2023-07-07 21:57:38 +02:00
fef
db2f6172ee
move react button to action bar 2023-07-07 21:57:38 +02:00
fef
4750a8005d
cherry-pick emoji reaction changes 2023-07-07 21:57:38 +02:00
fef
c633dd7d0f
make frontend fetch reaction limit
the maximum number of reactions was previously
hardcoded to 8.  this commit also fixes an
incorrect query in StatusReactionValidator where
it didn't count per-user reactions but the total
amount of different ones.
2023-07-07 21:57:38 +02:00
fef
953ee687ef
make status reaction count limit configurable 2023-07-07 21:57:38 +02:00
fef
16e4a10cb4
remove accidentally created file 2023-07-07 21:57:38 +02:00
fef
5230a2c7bc
federate emoji reactions
this is kind of experimental, but it should work
in theory.  at least i tested it with a remove
akkoma instance and it didn't crash.
2023-07-07 21:57:38 +02:00
fef
0dc02acd05
show reactions in detailed status view 2023-07-07 21:57:38 +02:00
fef
c02ab227d0
add frontend for emoji reactions
this is still pretty bare bones but hey, it works.
2023-07-07 21:57:38 +02:00
fef
6038222aa7
add backend support for status emoji reactions
turns out we can just reuse the code for
announcement reactions.
2023-07-07 21:57:38 +02:00
Essem
fca73c6e53
okay it *actually* works now 2023-07-06 21:02:16 -05:00
Essem
ddabbbb199
Dirty workaround for video embeds in Discord 2023-07-06 20:34:30 -05:00
Essem
d0b25fb9a8
Merge remote-tracking branch 'upstream/main' 2023-07-06 08:45:06 -05:00
Essem
9a33572bef
Merge remote-tracking branch 'upstream/main' 2023-07-05 12:48:40 -05:00
Essem
f14fb534d1
Merge branch 'glitch-soc:main' into main 2023-07-01 23:32:55 -05:00
Essem
b1c38ebaee
Remove duplicate function 2023-07-01 19:45:50 -05:00
Essem
f426885fa2
Merge remote-tracking branch 'upstream/main' 2023-07-01 19:45:24 -05:00
Essem
bda3bbf777
Merge remote-tracking branch 'upstream/main' 2023-06-14 19:34:26 -05:00
Essem
c140e9acb6
Revert to using mp3 for audio (god dammit apple) 2023-06-14 19:19:29 -05:00
Essem
d76c36ac14
GIF modal fixes 2023-06-06 00:23:12 -05:00
Essem
c6f492b4cd
Merge remote-tracking branch 'upstream/main' 2023-06-05 23:44:57 -05:00
Essem
cae549beda
missed one 2023-06-03 12:32:36 -05:00
Essem
3ae88ab107
Change favicon to fit instance theming 2023-06-03 12:16:13 -05:00
Essem
f0e15bdb85
Merge remote-tracking branch 'upstream/main' 2023-06-03 12:15:36 -05:00
Essem
b763a47623
Merge remote-tracking branch 'catstodon/feature/emoji_reactions' 2023-05-28 10:45:57 -05:00
Essem
7cbfc6b4ac
Merge remote-tracking branch 'upstream/main' 2023-05-28 10:40:04 -05:00
Jeremy Kescher
3b3bfecba6
Fix translations 2023-05-27 14:12:04 +02:00
Jeremy Kescher
fd5e5a759e
Move status_reactions.js to status_reactions.jsx 2023-05-27 13:55:17 +02:00
Plastikmensch
3dc590a327
Add missing name param.
Follow-up to 3a91f535fa
Missed these while porting changes.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-27 13:32:45 +02:00
Jeremy Kescher
55199ec150
Use named import for AnimatedNumber 2023-05-27 13:32:45 +02:00
Jeremy Kescher
0e1ef3efd0
Fix some RubyCop offenses 2023-05-27 13:32:43 +02:00
Plastikmensch
2a13d27be4
Fix being able to bypass MAX_REACTIONS
When reacting with different custom emojis with the same shortcode, it would count as an already present reaction and processed, bypassing the limit.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-27 12:01:13 +02:00
Plastikmensch
3a91f535fa
Refactor emoji reactions
Instead of processing tag and then look for the custom emoji, let the processing return an emoji.

Add `name` to `process_emoji_tags` to check if it matches the shortcode.

Removed `process_single_emoji` and added its code to `process_emoji_tags`

Removed arg from `maybe_process_misskey_reaction`.
Ideally, `original_status` should be a global object, but I wanted to modify vanilla code as little as possible.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-27 12:01:13 +02:00
Plastikmensch
4e15a89b39
Only allow reacting with remote emojis when status is local
Handling remote reactions with foreign emojis would require an extensive rewrite of vanilla code, so instead prevent reactions with remote emojis when the status is not local.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-27 12:01:13 +02:00
Plastikmensch
ea10f2e1e0
Don't set me to true for remote reactions
When an account and a remote account reacted with a custom emoji with the same shortcode, the `me` attribute was also true for the remote reaction, despite being a different emoji.

This query should probably be optimised, but it works.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-27 12:01:13 +02:00
Plastikmensch
b326dcab78
Don't allow reactions with disabled custom emojis
Also doesn't set custom_emoji to a local variant of name when not given.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-27 12:01:13 +02:00
Plastikmensch
f9730eba77
Handle Undo from Misskey
Right now Misskey users were able to react, but couldn't remove their reactions.
delegates `Undo` for a `Like` to `undo_emoji_react` when there is no favourite found.

(Misskey `Like` activities can still create a fav when the emoji tag is invalid, I don't see the point though)

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-27 12:01:13 +02:00
Plastikmensch
8cecb468b0
Only process single custom emoji
Processing all custom emojis is neither wise nor necessary as both `Like` and `EmojiReact` only expect a single custom emoji

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-27 12:01:13 +02:00
Plastikmensch
239170830e
Rescue uncaught RecordInvalid errors
These occur when an account tries to react with disabled custom emojis.
In both `EmojiReact` and `Like? activities, the activity is discarded.

Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-27 12:01:13 +02:00
Plastikmensch
051bb17de8
Add custom_emoji to reacted?
Signed-off-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-27 12:01:13 +02:00
Jeremy Kescher
88cb32e766
ReactionsController: Don't check for status reaction existence in destroy
UnreactService checks for its existence in the background anyway, so remove redundant checks.
2023-05-27 12:01:13 +02:00
Jeremy Kescher
a801d5035c
Fix invalidating status reactions when they already exist
Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-27 12:01:13 +02:00
Jeremy Kescher
245e212ba1
status_reaction_fabricator: Use a unicode emoji instead of "MyString"
Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-27 12:01:13 +02:00
Jeremy Kescher
241d61af52
api.rb: Remove resources line that wasn't in routes.rb anymore
Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-27 12:01:13 +02:00
Jeremy Kescher
ab5d17c9fa
Remove German translation for setting_visible_reactions 2023-05-27 12:01:13 +02:00
Jeremy Kescher
69a5c9483b
Remove old french emoji reaction-related strings 2023-05-27 12:01:13 +02:00
Jeremy Kescher
9be1967d05
Introduce visible reactions default setting 2023-05-27 12:01:13 +02:00
Jeremy Kescher
00d74e293a
Re-apply schema version 2023-05-27 12:01:13 +02:00
Jeremy Kescher
7f21afa5b8
Fix visible reactions setting not applying 2023-05-27 12:01:13 +02:00
Jeremy Kescher
956ce75185
eslint fix 2023-05-27 12:01:13 +02:00
Jeremy Kescher
4ba93c2c10
Remove further leftover makeCustomEmojiMap references 2023-05-27 12:01:13 +02:00
Jeremy Kescher
d18ca9eef6
Remove duplicate notification_mailer definition 2023-05-27 12:01:13 +02:00
Jeremy Kescher
9da713f009
Fix n+1 query for move emoji reaction settings migration 2023-05-27 12:01:13 +02:00
Jeremy Kescher
bf7945f15b
Run rubocop -a 2023-05-27 12:01:13 +02:00
Jeremy Kescher
263f10fd3e
Removed unused imports in status_container.js 2023-05-27 12:01:13 +02:00
Jeremy Kescher
ffd8aa6a2a
Add back missing visibleReactions variable to both initial_state.js files 2023-05-27 12:01:13 +02:00
Jeremy Kescher
672c123211
Add missing visible_reactions to vanilla initial_state typedef 2023-05-27 12:01:13 +02:00
Jeremy Kescher
0859f5b511
Fix max_reactions typedef 2023-05-27 12:01:13 +02:00
Jeremy Kescher
c4d82b4170
Move reaction endpoints from route.rb to api.rb 2023-05-27 12:01:13 +02:00
neatchee
20da97252d
Remove stale/missed references to makeCustomEmojiMap / EmojiMap 2023-05-27 12:01:13 +02:00
Jeremy Kescher
92fea0e028
Reactions: Return 404 when status should not be visible, asynchronous unreact 2023-05-27 12:01:13 +02:00
Jeremy Kescher
38f39b422a
Add missing authorization to ReactService 2023-05-27 12:01:13 +02:00
neatchee
f08f3c9eb8
Restore loc files for non-English languages; CrowdIn should handle this 2023-05-27 12:01:13 +02:00
Jeremy Kescher
7f1b0f43e9
Update emoji reaction patches 2023-05-27 12:01:13 +02:00
neatchee
9133f5af9d
Fix placement of reactions bar for new threading UI 2023-05-27 12:01:13 +02:00
Jeremy Kescher
83e1c8e742
Migrate emoji reactions 2023-05-27 12:01:13 +02:00
neatchee
8e71bfde83
Remove old .js locale files accidentally restored during rebase 2023-05-27 12:01:13 +02:00
Ivan Rodriguez
1987dd766a
Keep emoji picker within screen bounds
Adds the `flip` prop to `<Overlay>`. Fixes #40
2023-05-27 12:01:13 +02:00
neatchee
bbce42a7cb
Fix rebase issues 2023-05-27 12:01:13 +02:00
neatchee
ee4e497cc6
Per PR suggestion, split name and domain, and look for emoji ID, for unreact, so remote emoji's can be unreacted 2023-05-27 12:01:13 +02:00
fef
9c69772dc6
move emoji reaction strings to locales-glitch 2023-05-27 12:01:13 +02:00
Jeremy Kescher
e8c9054e74
Fix status reactions preventing an on_cascade delete 2023-05-27 12:01:13 +02:00
fef
5e46bec485
bypass reaction limit for foreign accounts 2023-05-27 12:01:13 +02:00
fef
5ec5a782d4
fix 404 when reacting with Keycap Number Sign
The Unicode sequence for this emoji starts with an
ASCII # character, which the browser's URI parser
truncates before sending the request to the
backend.
2023-05-27 12:01:13 +02:00
fef
8d9105e4c2
fix status action bar after upstream changes 2023-05-27 12:01:13 +02:00
fef
4226a5ddc8
fix schema after rebase 2023-05-27 12:01:13 +02:00
fef
6fa408f1a0
delete reaction notifications when deleting status 2023-05-27 12:01:13 +02:00
fef
f87de8770b
support reacting with foreign custom emojis 2023-05-27 12:01:13 +02:00
fef
e688fac3ec
properly disable reactions when not logged in 2023-05-27 12:01:13 +02:00
fef
55e741df7d
serialize custom emoji reactions properly for AP
Akkoma and possibly others expect the `tag` field
in an EmojiReact activity to be an array, not just
a single object, so it's being wrapped into one
now.  I'm not entirely sure whether this is the
idiomatic way of doing it tbh, but it works fine.
2023-05-27 12:01:13 +02:00
fef
2a64c4d028
also disable reaction buttons in vanilla flavour 2023-05-27 12:01:13 +02:00
fef
804bf4aa38
disable reaction button when not signed in 2023-05-27 12:01:13 +02:00
fef
4454aa7e99
fix image for new custom emoji reactions 2023-05-27 12:01:12 +02:00
fef
75cccfb53e
run i18n-tasks normalize 2023-05-27 12:01:12 +02:00
fef
1ca69c2513
display external custom emoji reactions properly
Using an emoji map was completely unnecessary in
the first place, because the reaction list from
the API response includes URLs for every custom
emoji anyway.  The reaction list now also contains
a boolean field indicating whether it is an
external custom emoji, which is required because
people should only be able to react with Unicode
emojis and local custom ones, not with custom
emojis from other servers.
2023-05-27 12:01:12 +02:00
fef
3df2d0b1f1
handle incoming custom emoji reactions properly 2023-05-27 12:01:12 +02:00
fef
50cd1cc5f7
support Undo action for EmojiReaction 2023-05-27 12:01:12 +02:00
fef
7500ba8102
download remote custom emojis from reactions
Emoji reactions containing custom emojis from
remote instances were assumed to already have
been downloaded and stored in the database.
This might obviously not be the case.
2023-05-27 12:01:12 +02:00
fef
3ae691ad31
sanitize setting for number of visible reactions
This is kind of a hack, but the lack of
validation for settings unfortunately makes it
necessary.
2023-05-27 12:01:12 +02:00
Jeremy Kescher
e02b9efd45
Add reaction limit to instance serializer 2023-05-27 12:01:12 +02:00
fef
d04be8a958
fix padding on posts without reactions
The margins of the elements above and below the
main reaction list element overlapped before
reactions were added.  Adding display: none to
empty reaction bars restores this exact look.
2023-05-27 12:01:12 +02:00
fef
adc1cd4823
rename nop handler to handleNoOp
This also adds the comment in action_bar.js to
status_action_bar.js, clarifying that a future
version could improve this code by modifying
EmojiPickerDropdown.
2023-05-27 12:01:12 +02:00
fef
6ea8080771
cleanup JS imports and other minor stuff 2023-05-27 12:01:10 +02:00
fef
4690c67bdc
remove unnecessary parameter 2023-05-27 11:59:32 +02:00
fef
48ca4fa744
change reaction api to match other interactions
Status reactions had an API similar to that of
announcement reactions, using PUT and DELETE at a
single endpoint.  I believe that for statuses, it
makes more sense to follow the convention of the
other interactions and use separate POST endpoints
for create and destroy respectively.
2023-05-27 11:59:32 +02:00
fef
ca89c02dec
fix reaction deletion bug and clean up controller
Turns out the strange error where it would delete
the wrong reaction occurred because I forgot to
pass the emoji name to the query, which resulted
in the database deleting the first reaction it
found.  Also, this removes the unused set_reaction
callback and includes the Authorization module for
the status reactions controller.
2023-05-27 11:59:32 +02:00
fef
c80a2f0df0
remove outdated comments 2023-05-27 11:59:32 +02:00
fef
2efb74cea8
clean up new imports in vanilla flavour 2023-05-27 11:59:32 +02:00
fef
a0c91c47c6
rebase with upstream 2023-05-27 11:59:32 +02:00
fef
b796afc818
make number of visible reactions a vanilla setting
Reactions will be backported to the vanilla
flavour, which requires all related settings to
be accessible from the vanilla settings page
rather than the glitch specific settings modal.
2023-05-27 11:59:32 +02:00
fef
f1421b6d7d
make number of displayed reactions a setting
This adds an extra item to the local settings for
specifying the number of reactions shown in toots.
The detailed status view always shows all
reactions.
2023-05-27 11:59:32 +02:00
fef
5103b384dd
change default reaction limit to 1 2023-05-27 11:59:32 +02:00
fef
0bb2d62c96
limit number of reactions displayed
Too many reactions on a single post quickly get
spammy, so they are now sorted by count and only
the first MAX_REACTIONS number of different
emojis are actually displayed.
2023-05-27 11:59:32 +02:00
fef
b25d27667c
fix reaction margins and paddings 2023-05-27 11:59:32 +02:00
fef
50f91f5510
cleanup frontend emoji reaction code 2023-05-27 11:59:32 +02:00
fef
4a8b6b83aa
cleanup backend emoji reaction code 2023-05-27 11:59:32 +02:00
fef
1791024b73
fix padding for reaction button 2023-05-27 11:59:32 +02:00
fef
86e058d00e
handle misskey reactions properly
misskey federates emoji reactions as likes.
2023-05-27 11:59:32 +02:00
fef
ed636f695f
move react button to action bar 2023-05-27 11:59:30 +02:00
fef
f9b72463b4
cherry-pick emoji reaction changes 2023-05-27 11:58:20 +02:00
fef
f1952244d1
make frontend fetch reaction limit
the maximum number of reactions was previously
hardcoded to 8.  this commit also fixes an
incorrect query in StatusReactionValidator where
it didn't count per-user reactions but the total
amount of different ones.
2023-05-27 11:58:20 +02:00
fef
c369bd3154
make status reaction count limit configurable 2023-05-27 11:58:20 +02:00
fef
1bbfad0512
remove accidentally created file 2023-05-27 11:58:20 +02:00
fef
7f0e61fb8d
federate emoji reactions
this is kind of experimental, but it should work
in theory.  at least i tested it with a remove
akkoma instance and it didn't crash.
2023-05-27 11:58:20 +02:00
fef
9c7ddeedbb
show reactions in detailed status view 2023-05-27 11:58:20 +02:00
fef
44154d2c07
add frontend for emoji reactions
this is still pretty bare bones but hey, it works.
2023-05-27 11:58:20 +02:00
fef
871d6c594e
add backend support for status emoji reactions
turns out we can just reuse the code for
announcement reactions.
2023-05-27 11:58:20 +02:00
Essem
91004e4bc5
More fixes 2023-05-18 13:37:02 -05:00
Essem
c601c78e0d
Fix backups 2023-05-18 13:29:40 -05:00
Essem
640c1d2c42
Merge remote-tracking branch 'catstodon/feature/emoji_reactions' 2023-05-18 13:25:09 -05:00
Essem
1b3c8e3f05
Merge remote-tracking branch 'upstream/main' 2023-05-18 13:24:54 -05:00
Jeremy Kescher
0f96d0fbb7
ReactionsController: Don't check for status reaction existence in destroy
UnreactService checks for its existence in the background anyway, so remove redundant checks.
2023-05-11 13:40:24 +02:00
Jeremy Kescher
5d0a1a7b74
Fix invalidating status reactions when they already exist
Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-10 21:07:32 +02:00
Jeremy Kescher
bcc8e89b08
status_reaction_fabricator: Use a unicode emoji instead of "MyString"
Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-10 21:07:24 +02:00
Jeremy Kescher
a167d715c9
api.rb: Remove resources line that wasn't in routes.rb anymore
Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
2023-05-10 21:07:17 +02:00
Essem
2cf4b3a95b
Merge remote-tracking branch 'catstodon/feature/emoji_reactions' 2023-05-09 22:37:07 -05:00
Jeremy Kescher
531ae61398
api.rb: Remove resources line that wasn't in routes.rb anymore 2023-05-10 00:49:41 +02:00
Jeremy Kescher
e2865c0781
Remove German translation for setting_visible_reactions 2023-05-10 00:43:56 +02:00
Jeremy Kescher
873e183d4d
Remove old french emoji reaction-related strings 2023-05-10 00:34:52 +02:00
Jeremy Kescher
2742a9958b
Introduce visible reactions default setting 2023-05-10 00:19:41 +02:00
Jeremy Kescher
bf2c39ec7f
Re-apply schema version 2023-05-10 00:18:32 +02:00
Jeremy Kescher
300c2288ba
Fix visible reactions setting not applying 2023-05-10 00:15:19 +02:00
Jeremy Kescher
c50ccdf69d
eslint fix 2023-05-10 00:11:26 +02:00
Jeremy Kescher
63e9572b94
Remove further leftover makeCustomEmojiMap references 2023-05-10 00:05:39 +02:00
Jeremy Kescher
a1395de405
Remove duplicate notification_mailer definition 2023-05-10 00:02:17 +02:00
Jeremy Kescher
f28f2bf216
Fix n+1 query for move emoji reaction settings migration 2023-05-10 00:00:06 +02:00
Jeremy Kescher
845d1be5ca
Run rubocop -a 2023-05-09 23:41:48 +02:00
Jeremy Kescher
f3c8de9379
Removed unused imports in status_container.js 2023-05-09 23:37:40 +02:00
Jeremy Kescher
3ecb6ce63e
Add back missing visibleReactions variable to both initial_state.js files 2023-05-09 23:37:34 +02:00
Jeremy Kescher
711fee1508
Add missing visible_reactions to vanilla initial_state typedef 2023-05-09 23:20:44 +02:00
Jeremy Kescher
010569da7b
Fix max_reactions typedef 2023-05-09 23:18:20 +02:00
Jeremy Kescher
42d494dda3
Move reaction endpoints from route.rb to api.rb 2023-05-09 23:08:13 +02:00
neatchee
81c3d63f01
Remove stale/missed references to makeCustomEmojiMap / EmojiMap 2023-05-09 22:58:59 +02:00
Jeremy Kescher
530167dff5
Reactions: Return 404 when status should not be visible, asynchronous unreact 2023-05-09 22:58:58 +02:00
Jeremy Kescher
5fd81b6144
Add missing authorization to ReactService 2023-05-09 22:58:58 +02:00
neatchee
6af0296abc
Restore loc files for non-English languages; CrowdIn should handle this 2023-05-09 22:58:58 +02:00
Jeremy Kescher
92d6dc61eb
Update emoji reaction patches 2023-05-09 22:58:58 +02:00
neatchee
214eee241b
Fix placement of reactions bar for new threading UI 2023-05-09 22:58:58 +02:00
Jeremy Kescher
5b7d1d5281
Migrate emoji reactions 2023-05-09 22:58:56 +02:00
neatchee
1b76bb6bcc
Remove old .js locale files accidentally restored during rebase 2023-05-09 22:58:42 +02:00
Ivan Rodriguez
55303adfef
Keep emoji picker within screen bounds
Adds the `flip` prop to `<Overlay>`. Fixes #40
2023-05-09 22:58:42 +02:00
neatchee
f577764472
Fix rebase issues 2023-05-09 22:58:42 +02:00
neatchee
a789208939
Per PR suggestion, split name and domain, and look for emoji ID, for unreact, so remote emoji's can be unreacted 2023-05-09 22:58:42 +02:00
fef
ba68e3e0dc
move emoji reaction strings to locales-glitch 2023-05-09 22:58:39 +02:00
Jeremy Kescher
d23b8adc8b
Fix status reactions preventing an on_cascade delete 2023-05-09 22:56:46 +02:00
fef
bec3c13cad
bypass reaction limit for foreign accounts 2023-05-09 22:56:46 +02:00
fef
9b2cfc3191
fix 404 when reacting with Keycap Number Sign
The Unicode sequence for this emoji starts with an
ASCII # character, which the browser's URI parser
truncates before sending the request to the
backend.
2023-05-09 22:56:46 +02:00
fef
b7d563611f
fix status action bar after upstream changes 2023-05-09 22:56:46 +02:00
fef
9d1467a364
fix schema after rebase 2023-05-09 22:56:46 +02:00
fef
c05db8c765
delete reaction notifications when deleting status 2023-05-09 22:56:46 +02:00
fef
c2209aca12
support reacting with foreign custom emojis 2023-05-09 22:56:44 +02:00
fef
b46adb9a1d
properly disable reactions when not logged in 2023-05-09 22:56:07 +02:00
fef
9ad49a191c
serialize custom emoji reactions properly for AP
Akkoma and possibly others expect the `tag` field
in an EmojiReact activity to be an array, not just
a single object, so it's being wrapped into one
now.  I'm not entirely sure whether this is the
idiomatic way of doing it tbh, but it works fine.
2023-05-09 22:56:07 +02:00
fef
f0d129fabe
also disable reaction buttons in vanilla flavour 2023-05-09 22:56:07 +02:00
fef
245f5b3f2f
disable reaction button when not signed in 2023-05-09 22:56:07 +02:00
fef
01723aef2b
fix image for new custom emoji reactions 2023-05-09 22:56:07 +02:00
fef
122abba7bc
run i18n-tasks normalize 2023-05-09 22:56:05 +02:00
fef
83bffa8b3c
display external custom emoji reactions properly
Using an emoji map was completely unnecessary in
the first place, because the reaction list from
the API response includes URLs for every custom
emoji anyway.  The reaction list now also contains
a boolean field indicating whether it is an
external custom emoji, which is required because
people should only be able to react with Unicode
emojis and local custom ones, not with custom
emojis from other servers.
2023-05-09 22:55:28 +02:00
fef
38346d52ef
handle incoming custom emoji reactions properly 2023-05-09 22:55:28 +02:00
fef
fe084475e9
support Undo action for EmojiReaction 2023-05-09 22:55:28 +02:00
fef
d800559866
download remote custom emojis from reactions
Emoji reactions containing custom emojis from
remote instances were assumed to already have
been downloaded and stored in the database.
This might obviously not be the case.
2023-05-09 22:55:28 +02:00
fef
7792235a89
sanitize setting for number of visible reactions
This is kind of a hack, but the lack of
validation for settings unfortunately makes it
necessary.
2023-05-09 22:55:28 +02:00
Jeremy Kescher
5482045c22
Add reaction limit to instance serializer 2023-05-09 22:55:28 +02:00
fef
a97b0fd62b
fix padding on posts without reactions
The margins of the elements above and below the
main reaction list element overlapped before
reactions were added.  Adding display: none to
empty reaction bars restores this exact look.
2023-05-09 22:55:28 +02:00
fef
9ac20598db
rename nop handler to handleNoOp
This also adds the comment in action_bar.js to
status_action_bar.js, clarifying that a future
version could improve this code by modifying
EmojiPickerDropdown.
2023-05-09 22:55:28 +02:00
fef
c53ff0fecc
cleanup JS imports and other minor stuff 2023-05-09 22:55:26 +02:00
fef
c898de9aba
remove unnecessary parameter 2023-05-09 22:55:14 +02:00
fef
ef5396ce65
change reaction api to match other interactions
Status reactions had an API similar to that of
announcement reactions, using PUT and DELETE at a
single endpoint.  I believe that for statuses, it
makes more sense to follow the convention of the
other interactions and use separate POST endpoints
for create and destroy respectively.
2023-05-09 22:55:12 +02:00
fef
99f03f2d1c
fix reaction deletion bug and clean up controller
Turns out the strange error where it would delete
the wrong reaction occurred because I forgot to
pass the emoji name to the query, which resulted
in the database deleting the first reaction it
found.  Also, this removes the unused set_reaction
callback and includes the Authorization module for
the status reactions controller.
2023-05-09 22:54:35 +02:00
fef
9702fa0a99
remove outdated comments 2023-05-09 22:54:35 +02:00
fef
c32386f15a
clean up new imports in vanilla flavour 2023-05-09 22:54:35 +02:00
fef
5aa74e9aae
rebase with upstream 2023-05-09 22:54:35 +02:00
fef
5d5fd9457d
make number of visible reactions a vanilla setting
Reactions will be backported to the vanilla
flavour, which requires all related settings to
be accessible from the vanilla settings page
rather than the glitch specific settings modal.
2023-05-09 22:54:33 +02:00
fef
4d7340472b
make number of displayed reactions a setting
This adds an extra item to the local settings for
specifying the number of reactions shown in toots.
The detailed status view always shows all
reactions.
2023-05-09 22:53:50 +02:00
fef
fdb5d35c7c
change default reaction limit to 1 2023-05-09 22:53:23 +02:00
fef
fbace10f99
limit number of reactions displayed
Too many reactions on a single post quickly get
spammy, so they are now sorted by count and only
the first MAX_REACTIONS number of different
emojis are actually displayed.
2023-05-09 22:53:23 +02:00
fef
2e312d28e8
fix reaction margins and paddings 2023-05-09 22:53:23 +02:00
fef
46179ed6be
cleanup frontend emoji reaction code 2023-05-09 22:53:23 +02:00
fef
42490e21f8
cleanup backend emoji reaction code 2023-05-09 22:53:23 +02:00
fef
4653f9830d
fix padding for reaction button 2023-05-09 22:53:23 +02:00
fef
abd60c57f7
handle misskey reactions properly
misskey federates emoji reactions as likes.
2023-05-09 22:53:23 +02:00
fef
2ec91c6d0f
move react button to action bar 2023-05-09 22:53:23 +02:00
fef
c5befd7c1a
cherry-pick emoji reaction changes 2023-05-09 22:53:21 +02:00
fef
dd4762f3ca
make frontend fetch reaction limit
the maximum number of reactions was previously
hardcoded to 8.  this commit also fixes an
incorrect query in StatusReactionValidator where
it didn't count per-user reactions but the total
amount of different ones.
2023-05-09 22:51:38 +02:00
fef
e210fccb9d
make status reaction count limit configurable 2023-05-09 22:51:38 +02:00
fef
ad6b92df8d
remove accidentally created file 2023-05-09 22:51:38 +02:00
fef
add68d9291
federate emoji reactions
this is kind of experimental, but it should work
in theory.  at least i tested it with a remove
akkoma instance and it didn't crash.
2023-05-09 22:51:38 +02:00
fef
6eeda52a8e
show reactions in detailed status view 2023-05-09 22:51:38 +02:00
fef
a445e38694
add frontend for emoji reactions
this is still pretty bare bones but hey, it works.
2023-05-09 22:51:38 +02:00
fef
4829f96113
add backend support for status emoji reactions
turns out we can just reuse the code for
announcement reactions.
2023-05-09 22:51:34 +02:00
Essem
a61794d914
Merge remote-tracking branch 'neatchee/feat/emoji_reactions' 2023-05-08 00:01:26 -05:00
neatchee
f560ee44e9 Fix appearance/show.html.haml 2023-05-07 16:52:52 -07:00
neatchee
5bd0c35304 Revert "Fix appearance/show.html.haml"
This reverts commit 34f9e54f9f.
2023-05-07 16:30:59 -07:00
neatchee
eb68f6250c Revert "Fix missed merge conflict text in version.rb"
This reverts commit 2a8b66ad40.
2023-05-07 16:30:45 -07:00
neatchee
730878a587 Remove stale/missed references to makeCustomEmojiMap / EmojiMap 2023-05-07 16:26:37 -07:00
neatchee
2a8b66ad40 Fix missed merge conflict text in version.rb 2023-05-07 16:12:37 -07:00
Jeremy Kescher
4bd3c80038 Reactions: Return 404 when status should not be visible, asynchronous unreact 2023-05-07 15:36:34 -07:00
Jeremy Kescher
ec687d7edb Remove failing skip_before_action from v1/custom_emojis_controller.rb
Fixes incorrect merge at 9eb149477a24daf6e17a72ef550c76d4cf6ad506
2023-05-07 15:36:06 -07:00
Jeremy Kescher
b0b593d525 Add missing authorization to ReactService 2023-05-07 15:34:48 -07:00
neatchee
fa0a5a70c7 Restore loc files for non-English languages; CrowdIn should handle this 2023-05-07 15:33:50 -07:00
Jeremy Kescher
e0db7dc35a Update emoji reaction patches 2023-05-07 15:27:26 -07:00
neatchee
7d7eff8f75 Restoring missing db migrate for reactions. How did this even go missing??? 2023-05-07 15:08:26 -07:00
neatchee
759a27781d Fix placement of reactions bar for new threading UI 2023-05-07 15:08:26 -07:00
Jeremy Kescher
34f9e54f9f Fix appearance/show.html.haml 2023-05-07 15:08:26 -07:00
Jeremy Kescher
0c230226e4 Migrate emoji reactions 2023-05-07 15:08:26 -07:00
neatchee
f718c027b0 Remove old .js locale files accidentally restored during rebase 2023-05-07 15:08:26 -07:00
Ivan Rodriguez
b78ea8b4a3 Keep emoji picker within screen bounds
Adds the `flip` prop to `<Overlay>`. Fixes #40
2023-05-07 15:08:26 -07:00
neatchee
98eab315c1 Fix rebase issues 2023-05-07 15:08:26 -07:00
neatchee
26646218c7 Per PR suggestion, split name and domain, and look for emoji ID, for unreact, so remote emoji's can be unreacted 2023-05-07 15:08:26 -07:00
fef
49b25c5153 move emoji reaction strings to locales-glitch 2023-05-07 15:08:26 -07:00
Jeremy Kescher
b753263ba7 Fix status reactions preventing an on_cascade delete 2023-05-07 15:08:26 -07:00
fef
275a67b5a3 bypass reaction limit for foreign accounts 2023-05-07 15:08:26 -07:00
fef
79ff467687 fix 404 when reacting with Keycap Number Sign
The Unicode sequence for this emoji starts with an
ASCII # character, which the browser's URI parser
truncates before sending the request to the
backend.
2023-05-07 15:08:26 -07:00
fef
4761bd3e69 fix status action bar after upstream changes 2023-05-07 15:08:26 -07:00
fef
ed60e5b915 fix schema after rebase 2023-05-07 15:08:26 -07:00
fef
215a76cca0 delete reaction notifications when deleting status 2023-05-07 15:08:26 -07:00
fef
3eab0d0cd0 support reacting with foreign custom emojis 2023-05-07 15:08:26 -07:00
fef
f6b1ec0f3d properly disable reactions when not logged in 2023-05-07 15:08:26 -07:00
fef
13b5375fb7 serialize custom emoji reactions properly for AP
Akkoma and possibly others expect the `tag` field
in an EmojiReact activity to be an array, not just
a single object, so it's being wrapped into one
now.  I'm not entirely sure whether this is the
idiomatic way of doing it tbh, but it works fine.
2023-05-07 15:08:26 -07:00
fef
588315ab24 also disable reaction buttons in vanilla flavour 2023-05-07 15:08:26 -07:00
fef
6a1c43856e disable reaction button when not signed in 2023-05-07 15:08:26 -07:00
fef
799fb2812a fix image for new custom emoji reactions 2023-05-07 15:08:26 -07:00
fef
eac272d80f run i18n-tasks normalize 2023-05-07 15:08:26 -07:00
fef
d0f3f649f5 display external custom emoji reactions properly
Using an emoji map was completely unnecessary in
the first place, because the reaction list from
the API response includes URLs for every custom
emoji anyway.  The reaction list now also contains
a boolean field indicating whether it is an
external custom emoji, which is required because
people should only be able to react with Unicode
emojis and local custom ones, not with custom
emojis from other servers.
2023-05-07 15:08:25 -07:00
fef
dbbfea1b48 handle incoming custom emoji reactions properly 2023-05-07 15:05:56 -07:00
fef
7349a5a2f5 support Undo action for EmojiReaction 2023-05-07 15:05:56 -07:00
fef
16e08e1e3f download remote custom emojis from reactions
Emoji reactions containing custom emojis from
remote instances were assumed to already have
been downloaded and stored in the database.
This might obviously not be the case.
2023-05-07 15:05:56 -07:00
fef
d8205100c8 sanitize setting for number of visible reactions
This is kind of a hack, but the lack of
validation for settings unfortunately makes it
necessary.
2023-05-07 15:05:56 -07:00
Jeremy Kescher
d5ccf3b438 Add reaction limit to instance serializer 2023-05-07 15:05:56 -07:00
fef
8aadf99a54 fix padding on posts without reactions
The margins of the elements above and below the
main reaction list element overlapped before
reactions were added.  Adding display: none to
empty reaction bars restores this exact look.
2023-05-07 15:05:56 -07:00
fef
9f6a880c96 rename nop handler to handleNoOp
This also adds the comment in action_bar.js to
status_action_bar.js, clarifying that a future
version could improve this code by modifying
EmojiPickerDropdown.
2023-05-07 15:05:56 -07:00
fef
4452ddbc88 cleanup JS imports and other minor stuff 2023-05-07 15:05:56 -07:00
fef
490c1a2244 remove unnecessary parameter 2023-05-07 15:05:56 -07:00
fef
be710b6a5f change reaction api to match other interactions
Status reactions had an API similar to that of
announcement reactions, using PUT and DELETE at a
single endpoint.  I believe that for statuses, it
makes more sense to follow the convention of the
other interactions and use separate POST endpoints
for create and destroy respectively.
2023-05-07 15:05:56 -07:00
fef
946debee55 fix reaction deletion bug and clean up controller
Turns out the strange error where it would delete
the wrong reaction occurred because I forgot to
pass the emoji name to the query, which resulted
in the database deleting the first reaction it
found.  Also, this removes the unused set_reaction
callback and includes the Authorization module for
the status reactions controller.
2023-05-07 15:05:56 -07:00
fef
a8afee509b remove outdated comments 2023-05-07 15:05:56 -07:00
fef
49c8048b98 clean up new imports in vanilla flavour 2023-05-07 15:05:56 -07:00
fef
7403e91a6e rebase with upstream 2023-05-07 15:05:56 -07:00
fef
573f12ef46 make number of visible reactions a vanilla setting
Reactions will be backported to the vanilla
flavour, which requires all related settings to
be accessible from the vanilla settings page
rather than the glitch specific settings modal.
2023-05-07 15:05:56 -07:00
fef
c3a18c6fff make number of displayed reactions a setting
This adds an extra item to the local settings for
specifying the number of reactions shown in toots.
The detailed status view always shows all
reactions.
2023-05-07 15:05:56 -07:00
fef
b6f8093a9d change default reaction limit to 1 2023-05-07 15:05:56 -07:00
fef
78e0e74fa7 limit number of reactions displayed
Too many reactions on a single post quickly get
spammy, so they are now sorted by count and only
the first MAX_REACTIONS number of different
emojis are actually displayed.
2023-05-07 15:05:56 -07:00
fef
4951abefb3 fix reaction margins and paddings 2023-05-07 15:05:56 -07:00
fef
299b501db4 cleanup frontend emoji reaction code 2023-05-07 15:05:56 -07:00
fef
98682312e1 cleanup backend emoji reaction code 2023-05-07 15:05:56 -07:00
fef
0ae702a331 fix padding for reaction button 2023-05-07 15:05:56 -07:00
fef
256a07ef40 handle misskey reactions properly
misskey federates emoji reactions as likes.
2023-05-07 15:05:56 -07:00
fef
c96110a037 move react button to action bar 2023-05-07 15:05:56 -07:00
fef
f61c649318 cherry-pick emoji reaction changes 2023-05-07 15:05:56 -07:00
fef
6bd06460f4 make frontend fetch reaction limit
the maximum number of reactions was previously
hardcoded to 8.  this commit also fixes an
incorrect query in StatusReactionValidator where
it didn't count per-user reactions but the total
amount of different ones.
2023-05-07 15:05:56 -07:00
fef
4f4237c58e make status reaction count limit configurable 2023-05-07 15:05:56 -07:00
fef
6646d36d1b remove accidentally created file 2023-05-07 15:05:56 -07:00
fef
a1685c4a83 federate emoji reactions
this is kind of experimental, but it should work
in theory.  at least i tested it with a remove
akkoma instance and it didn't crash.
2023-05-07 15:05:56 -07:00
fef
56cb7ff931 show reactions in detailed status view 2023-05-07 15:05:56 -07:00
fef
671fb4c3ed add frontend for emoji reactions
this is still pretty bare bones but hey, it works.
2023-05-07 15:05:55 -07:00
fef
9fccc8ca76 add backend support for status emoji reactions
turns out we can just reuse the code for
announcement reactions.
2023-05-07 15:05:29 -07:00
Essem
cd71462f92
Merge remote-tracking branch 'neatchee/feat/emoji_reactions' 2023-05-07 15:08:48 -05:00
Essem
708df4cc2a
Merge remote-tracking branch 'upstream/main' 2023-05-07 15:05:29 -05:00
neatchee
3fffa8a04b Fix placement of reactions bar for new threading UI 2023-05-07 01:10:49 -07:00
Jeremy Kescher
74184e0359 Fix appearance/show.html.haml 2023-05-07 01:01:49 -07:00
Jeremy Kescher
b06a233ee8 Migrate emoji reactions 2023-05-07 01:01:49 -07:00
neatchee
5ccfbf6ee3 Remove old .js locale files accidentally restored during rebase 2023-05-07 01:01:49 -07:00
Ivan Rodriguez
09c808ae99 Keep emoji picker within screen bounds
Adds the `flip` prop to `<Overlay>`. Fixes #40
2023-05-07 01:01:49 -07:00
neatchee
54a2372897 Fix rebase issues 2023-05-07 01:01:49 -07:00
neatchee
12d95fcebe Per PR suggestion, split name and domain, and look for emoji ID, for unreact, so remote emoji's can be unreacted 2023-05-07 01:01:49 -07:00
fef
4559e8aa33 move emoji reaction strings to locales-glitch 2023-05-07 01:01:49 -07:00
Jeremy Kescher
5328d58a7c Fix status reactions preventing an on_cascade delete 2023-05-07 01:01:49 -07:00
fef
8744bb10a3 bypass reaction limit for foreign accounts 2023-05-07 01:01:49 -07:00
fef
cf7850f0d2 fix 404 when reacting with Keycap Number Sign
The Unicode sequence for this emoji starts with an
ASCII # character, which the browser's URI parser
truncates before sending the request to the
backend.
2023-05-07 01:01:49 -07:00
fef
f55666786b fix status action bar after upstream changes 2023-05-07 01:01:49 -07:00
fef
3fb33bdc7d fix schema after rebase 2023-05-07 01:01:49 -07:00
fef
17c8841513 delete reaction notifications when deleting status 2023-05-07 01:01:49 -07:00
fef
2e2430ad49 support reacting with foreign custom emojis 2023-05-07 01:01:49 -07:00
fef
fffe4af3b7 properly disable reactions when not logged in 2023-05-07 01:01:49 -07:00
fef
f33147e152 serialize custom emoji reactions properly for AP
Akkoma and possibly others expect the `tag` field
in an EmojiReact activity to be an array, not just
a single object, so it's being wrapped into one
now.  I'm not entirely sure whether this is the
idiomatic way of doing it tbh, but it works fine.
2023-05-07 01:01:49 -07:00
fef
7ce619b13c also disable reaction buttons in vanilla flavour 2023-05-07 01:01:49 -07:00
fef
8f64167661 disable reaction button when not signed in 2023-05-07 01:01:49 -07:00
fef
ba4984e15d fix image for new custom emoji reactions 2023-05-07 01:01:49 -07:00
fef
705598c780 run i18n-tasks normalize 2023-05-07 01:01:49 -07:00
fef
2568ea1fe1 display external custom emoji reactions properly
Using an emoji map was completely unnecessary in
the first place, because the reaction list from
the API response includes URLs for every custom
emoji anyway.  The reaction list now also contains
a boolean field indicating whether it is an
external custom emoji, which is required because
people should only be able to react with Unicode
emojis and local custom ones, not with custom
emojis from other servers.
2023-05-07 01:01:49 -07:00
fef
6afbc6d226 handle incoming custom emoji reactions properly 2023-05-07 01:01:49 -07:00
fef
61547fd28a support Undo action for EmojiReaction 2023-05-07 01:01:49 -07:00
fef
d5e8133904 download remote custom emojis from reactions
Emoji reactions containing custom emojis from
remote instances were assumed to already have
been downloaded and stored in the database.
This might obviously not be the case.
2023-05-07 01:01:49 -07:00
fef
5d682cc93b sanitize setting for number of visible reactions
This is kind of a hack, but the lack of
validation for settings unfortunately makes it
necessary.
2023-05-07 01:01:49 -07:00
Jeremy Kescher
8f262bbd37 Add reaction limit to instance serializer 2023-05-07 01:01:49 -07:00
fef
35ff0c4d94 fix padding on posts without reactions
The margins of the elements above and below the
main reaction list element overlapped before
reactions were added.  Adding display: none to
empty reaction bars restores this exact look.
2023-05-07 01:01:49 -07:00
fef
2102a08780 rename nop handler to handleNoOp
This also adds the comment in action_bar.js to
status_action_bar.js, clarifying that a future
version could improve this code by modifying
EmojiPickerDropdown.
2023-05-07 01:01:49 -07:00
fef
aa8d77ba0e cleanup JS imports and other minor stuff 2023-05-07 01:01:49 -07:00
fef
dfd0c0b992 remove unnecessary parameter 2023-05-07 01:01:14 -07:00
fef
223edf4023 change reaction api to match other interactions
Status reactions had an API similar to that of
announcement reactions, using PUT and DELETE at a
single endpoint.  I believe that for statuses, it
makes more sense to follow the convention of the
other interactions and use separate POST endpoints
for create and destroy respectively.
2023-05-07 01:01:14 -07:00
fef
4f9cb8cd54 fix reaction deletion bug and clean up controller
Turns out the strange error where it would delete
the wrong reaction occurred because I forgot to
pass the emoji name to the query, which resulted
in the database deleting the first reaction it
found.  Also, this removes the unused set_reaction
callback and includes the Authorization module for
the status reactions controller.
2023-05-07 01:01:14 -07:00
fef
25999d39dd remove outdated comments 2023-05-07 01:01:14 -07:00
fef
a33a698ab7 clean up new imports in vanilla flavour 2023-05-07 01:01:14 -07:00
fef
88f2423ca4 rebase with upstream 2023-05-07 01:01:12 -07:00
fef
92384b1563 make number of visible reactions a vanilla setting
Reactions will be backported to the vanilla
flavour, which requires all related settings to
be accessible from the vanilla settings page
rather than the glitch specific settings modal.
2023-05-07 00:58:56 -07:00
fef
7908581d43 make number of displayed reactions a setting
This adds an extra item to the local settings for
specifying the number of reactions shown in toots.
The detailed status view always shows all
reactions.
2023-05-07 00:58:56 -07:00
fef
64dcd84409 change default reaction limit to 1 2023-05-07 00:58:56 -07:00
fef
092d8ad5ab limit number of reactions displayed
Too many reactions on a single post quickly get
spammy, so they are now sorted by count and only
the first MAX_REACTIONS number of different
emojis are actually displayed.
2023-05-07 00:58:56 -07:00
fef
e220736cac fix reaction margins and paddings 2023-05-07 00:58:56 -07:00
fef
d52593b591 cleanup frontend emoji reaction code 2023-05-07 00:58:55 -07:00
fef
5ef952eebb cleanup backend emoji reaction code 2023-05-07 00:58:28 -07:00
fef
896ed10527 fix padding for reaction button 2023-05-07 00:58:28 -07:00
fef
d7a49f057c handle misskey reactions properly
misskey federates emoji reactions as likes.
2023-05-07 00:58:28 -07:00
fef
3ed18a4c01 move react button to action bar 2023-05-07 00:58:28 -07:00
fef
88f6ccf950 cherry-pick emoji reaction changes 2023-05-07 00:58:28 -07:00
fef
2b4e922c33 make frontend fetch reaction limit
the maximum number of reactions was previously
hardcoded to 8.  this commit also fixes an
incorrect query in StatusReactionValidator where
it didn't count per-user reactions but the total
amount of different ones.
2023-05-07 00:58:28 -07:00
fef
f2d942571c make status reaction count limit configurable 2023-05-07 00:58:28 -07:00
fef
ee6927a2dc remove accidentally created file 2023-05-07 00:58:28 -07:00
fef
0fee4ad5ea federate emoji reactions
this is kind of experimental, but it should work
in theory.  at least i tested it with a remove
akkoma instance and it didn't crash.
2023-05-07 00:58:28 -07:00
fef
e5b03ea1d3 show reactions in detailed status view 2023-05-07 00:58:27 -07:00
fef
531c5c9185 add frontend for emoji reactions
this is still pretty bare bones but hey, it works.
2023-05-07 00:58:02 -07:00
fef
445a7a8086 add backend support for status emoji reactions
turns out we can just reuse the code for
announcement reactions.
2023-05-07 00:58:02 -07:00
Essem
58bcfafe2f
injectIntl in GIF modal 2023-05-02 22:43:11 -05:00
koyu
78f5368ad7
Fix GIF modal 2023-05-02 22:41:54 -05:00
Essem
94c2fae695
Merge remote-tracking branch 'upstream/main' 2023-05-02 13:13:59 -05:00
Essem
2b892698ec
Merge remote-tracking branch 'upstream/main' 2023-04-19 12:24:54 -05:00
Essem
7b70fabb10
Revert "Merge remote-tracking branch 'vyr/extended-search-final-glitch'"
This reverts commit 734b252307, reversing
changes made to 445f81cbbb.
2023-04-19 12:22:10 -05:00
Essem
2501ac1cc7
Fix copy/paste error 2023-04-11 22:11:07 -05:00
Essem
734b252307
Merge remote-tracking branch 'vyr/extended-search-final-glitch' 2023-04-11 21:59:54 -05:00
Vyr Cossont
7ef3e28a95 Add search reference page to Glitch UI 2023-04-11 11:02:02 -07:00
Vyr Cossont
bf6f975237 Add visibility: search operator 2023-04-11 10:30:06 -07:00
Vyr Cossont
82aff41ddd Extended post and account search 2023-04-11 10:30:06 -07:00
Essem
445f81cbbb
Remove psych fix 2023-04-10 15:58:22 -05:00
Essem
04f418672a
Merge remote-tracking branch 'neatchee/feat/emoji_reactions' 2023-04-10 15:20:30 -05:00
Essem
d8e2598ae2
Merge remote-tracking branch 'upstream/main' 2023-04-10 15:12:42 -05:00
Jeremy Kescher
59848e2709 Fix appearance/show.html.haml 2023-04-04 15:24:57 -07:00
Jeremy Kescher
9fda65a4ca Migrate emoji reactions 2023-04-04 15:23:54 -07:00
neatchee
5810ccb622 Remove old .js locale files accidentally restored during rebase 2023-04-04 15:22:12 -07:00
Ivan Rodriguez
869f74484a Keep emoji picker within screen bounds
Adds the `flip` prop to `<Overlay>`. Fixes #40
2023-04-04 15:22:12 -07:00
neatchee
34d037efae Fix rebase issues 2023-04-04 15:22:12 -07:00
neatchee
896d69dea1 Per PR suggestion, split name and domain, and look for emoji ID, for unreact, so remote emoji's can be unreacted 2023-04-04 15:22:12 -07:00
fef
54b973456b move emoji reaction strings to locales-glitch 2023-04-04 15:22:12 -07:00
Jeremy Kescher
12e7b2174a Fix status reactions preventing an on_cascade delete 2023-04-04 15:22:12 -07:00
fef
55f320f703 bypass reaction limit for foreign accounts 2023-04-04 15:22:12 -07:00
fef
79646a499a fix 404 when reacting with Keycap Number Sign
The Unicode sequence for this emoji starts with an
ASCII # character, which the browser's URI parser
truncates before sending the request to the
backend.
2023-04-04 15:22:12 -07:00
fef
c3248a72c0 fix status action bar after upstream changes 2023-04-04 15:22:12 -07:00
fef
35504c853e fix schema after rebase 2023-04-04 15:22:12 -07:00
fef
81a12e2c18 delete reaction notifications when deleting status 2023-04-04 15:22:12 -07:00
fef
c31b59012e support reacting with foreign custom emojis 2023-04-04 15:22:12 -07:00
fef
54b6ae4f8a properly disable reactions when not logged in 2023-04-04 15:22:12 -07:00
fef
5c1f1d60c3 serialize custom emoji reactions properly for AP
Akkoma and possibly others expect the `tag` field
in an EmojiReact activity to be an array, not just
a single object, so it's being wrapped into one
now.  I'm not entirely sure whether this is the
idiomatic way of doing it tbh, but it works fine.
2023-04-04 15:22:12 -07:00
fef
0468afdba4 also disable reaction buttons in vanilla flavour 2023-04-04 15:22:12 -07:00
fef
b01c1f4822 disable reaction button when not signed in 2023-04-04 15:22:12 -07:00
fef
6ca3f312b7 fix image for new custom emoji reactions 2023-04-04 15:22:12 -07:00
fef
6a2f9d9597 run i18n-tasks normalize 2023-04-04 15:22:12 -07:00
fef
49324217c3 display external custom emoji reactions properly
Using an emoji map was completely unnecessary in
the first place, because the reaction list from
the API response includes URLs for every custom
emoji anyway.  The reaction list now also contains
a boolean field indicating whether it is an
external custom emoji, which is required because
people should only be able to react with Unicode
emojis and local custom ones, not with custom
emojis from other servers.
2023-04-04 15:22:12 -07:00
fef
728083ab53 handle incoming custom emoji reactions properly 2023-04-04 15:22:12 -07:00
fef
57d9f63bc0 support Undo action for EmojiReaction 2023-04-04 15:22:12 -07:00
fef
751909d348 download remote custom emojis from reactions
Emoji reactions containing custom emojis from
remote instances were assumed to already have
been downloaded and stored in the database.
This might obviously not be the case.
2023-04-04 15:22:12 -07:00
fef
613d247a0a sanitize setting for number of visible reactions
This is kind of a hack, but the lack of
validation for settings unfortunately makes it
necessary.
2023-04-04 15:22:00 -07:00
Jeremy Kescher
d645eb2654 Add reaction limit to instance serializer 2023-04-04 15:21:12 -07:00
fef
77e2cc11ff fix padding on posts without reactions
The margins of the elements above and below the
main reaction list element overlapped before
reactions were added.  Adding display: none to
empty reaction bars restores this exact look.
2023-04-04 15:21:12 -07:00
fef
3a5c456aa8 rename nop handler to handleNoOp
This also adds the comment in action_bar.js to
status_action_bar.js, clarifying that a future
version could improve this code by modifying
EmojiPickerDropdown.
2023-04-04 15:21:12 -07:00
fef
eab49f22c0 cleanup JS imports and other minor stuff 2023-04-04 15:21:11 -07:00
fef
2b43aba58c remove unnecessary parameter 2023-04-04 15:20:34 -07:00
fef
d38c56ab16 change reaction api to match other interactions
Status reactions had an API similar to that of
announcement reactions, using PUT and DELETE at a
single endpoint.  I believe that for statuses, it
makes more sense to follow the convention of the
other interactions and use separate POST endpoints
for create and destroy respectively.
2023-04-04 15:20:34 -07:00
fef
df673abeea fix reaction deletion bug and clean up controller
Turns out the strange error where it would delete
the wrong reaction occurred because I forgot to
pass the emoji name to the query, which resulted
in the database deleting the first reaction it
found.  Also, this removes the unused set_reaction
callback and includes the Authorization module for
the status reactions controller.
2023-04-04 15:20:34 -07:00
fef
3588c37413 remove outdated comments 2023-04-04 15:20:34 -07:00
fef
de4967add7 clean up new imports in vanilla flavour 2023-04-04 15:20:34 -07:00
fef
465404b4b1 rebase with upstream 2023-04-04 15:20:34 -07:00
fef
869bc2f469 make number of visible reactions a vanilla setting
Reactions will be backported to the vanilla
flavour, which requires all related settings to
be accessible from the vanilla settings page
rather than the glitch specific settings modal.
2023-04-04 15:20:34 -07:00
fef
92aebbb7f3 make number of displayed reactions a setting
This adds an extra item to the local settings for
specifying the number of reactions shown in toots.
The detailed status view always shows all
reactions.
2023-04-04 15:18:14 -07:00
fef
dd0b09273a change default reaction limit to 1 2023-04-04 15:18:14 -07:00
fef
5b7514a17f limit number of reactions displayed
Too many reactions on a single post quickly get
spammy, so they are now sorted by count and only
the first MAX_REACTIONS number of different
emojis are actually displayed.
2023-04-04 15:18:14 -07:00
fef
5ada827029 fix reaction margins and paddings 2023-04-04 15:18:14 -07:00
fef
d249994de8 cleanup frontend emoji reaction code 2023-04-04 15:18:14 -07:00
fef
1b3305c3db cleanup backend emoji reaction code 2023-04-04 15:18:14 -07:00
fef
2d8e3e9b9b fix padding for reaction button 2023-04-04 15:18:14 -07:00
fef
f9b15866af handle misskey reactions properly
misskey federates emoji reactions as likes.
2023-04-04 15:18:14 -07:00
fef
b37da9e59f move react button to action bar 2023-04-04 15:18:14 -07:00
fef
6f49b19f16 cherry-pick emoji reaction changes 2023-04-04 15:18:14 -07:00
fef
f4be9f729a make frontend fetch reaction limit
the maximum number of reactions was previously
hardcoded to 8.  this commit also fixes an
incorrect query in StatusReactionValidator where
it didn't count per-user reactions but the total
amount of different ones.
2023-04-04 15:18:14 -07:00
fef
69662f53be make status reaction count limit configurable 2023-04-04 15:18:13 -07:00
fef
a5784922b5 remove accidentally created file 2023-04-04 15:18:13 -07:00
fef
7f7c635f62 federate emoji reactions
this is kind of experimental, but it should work
in theory.  at least i tested it with a remove
akkoma instance and it didn't crash.
2023-04-04 15:18:13 -07:00
fef
f152cb0e58 show reactions in detailed status view 2023-04-04 15:18:13 -07:00
fef
73c6e0a443 add frontend for emoji reactions
this is still pretty bare bones but hey, it works.
2023-04-04 15:18:13 -07:00
fef
ce8b8d9b78 add backend support for status emoji reactions
turns out we can just reuse the code for
announcement reactions.
2023-04-04 15:18:13 -07:00
Essem
86bd81a2b1
Revert GIF changes 2023-03-30 09:23:33 -05:00
Essem
2017add317
Merge remote-tracking branch 'upstream/main' 2023-03-27 11:58:10 -05:00
Essem
4921cf0aa0
Merge in media changes from unstodon 2023-03-27 11:47:18 -05:00
Essem
7868fead64
Squashed commit of the following:
commit 13bca8d5b7344445633ff3c8a162086be8215379
Merge: 1e2782647 ff157b237
Author: Essem <smswessem@gmail.com>
Date:   Thu Mar 16 11:51:32 2023 -0500

    Merge branch 'feat/emoji_reactions' of https://github.com/neatchee/mastodon into feat/emoji_reactions

commit ff157b2378a15a786763d7e13ad2de4ff223dc03
Author: neatchee <neatchee@gmail.com>
Date:   Wed Mar 8 13:27:25 2023 -0800

    Remove old .js locale files accidentally restored during rebase

commit 52beb88a19626c0b17d0945a43bf8725ceae4b04
Author: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com>
Date:   Tue Mar 7 23:21:32 2023 -0600

    Keep emoji picker within screen bounds

    Adds the `flip` prop to `<Overlay>`. Fixes #40

commit 7707004cf3d5bacd3ef830ef734dd003b607c2af
Author: neatchee <neatchee@gmail.com>
Date:   Thu Jan 26 11:32:03 2023 -0800

    Fix rebase issues

commit ce40bbbce1e5e9ab7770f89dd7cffd87d3ceb177
Author: neatchee <neatchee@gmail.com>
Date:   Thu Jan 26 10:22:15 2023 -0800

    Per PR suggestion, split name and domain, and look for emoji ID, for unreact, so remote emoji's can be unreacted

commit fc9f34a39fa40b3eda4ccfc0cc8e5c028b9ebe79
Author: fef <owo@fef.moe>
Date:   Tue Dec 20 17:19:56 2022 +0000

    move emoji reaction strings to locales-glitch

commit af0f50ca74631e9f2dafde0f0e08417f906c04a0
Author: Jeremy Kescher <jeremy@kescher.at>
Date:   Sun Dec 18 04:23:42 2022 +0100

    Fix status reactions preventing an on_cascade delete

commit 2e713c7792438f17ef026f6d79465be25a5fb7db
Author: fef <owo@fef.moe>
Date:   Thu Dec 15 15:27:54 2022 +0000

    bypass reaction limit for foreign accounts

commit 907e1e490ed9b2373eb18f92af9fda4426274713
Author: fef <owo@fef.moe>
Date:   Sun Dec 11 13:26:23 2022 +0000

    fix 404 when reacting with Keycap Number Sign

    The Unicode sequence for this emoji starts with an
    ASCII # character, which the browser's URI parser
    truncates before sending the request to the
    backend.

commit 9028d3841f7d5d2eb1b06bc210ded055c53fc1d2
Author: fef <owo@fef.moe>
Date:   Thu Dec 8 09:48:55 2022 +0000

    fix status action bar after upstream changes

commit 4ce5095d8c187947805ecf21c90ad494440e904a
Author: fef <owo@fef.moe>
Date:   Wed Dec 7 21:52:53 2022 +0100

    fix schema after rebase

commit 63b9e4392adbb13fe0ce71de4d28419df0f36bb1
Author: fef <owo@fef.moe>
Date:   Wed Dec 7 12:47:03 2022 +0000

    delete reaction notifications when deleting status

commit e407cc12b64a664c66717ce06d65342dd8bc609e
Author: fef <owo@fef.moe>
Date:   Wed Dec 7 12:19:36 2022 +0000

    support reacting with foreign custom emojis

commit b2dbb4dbe4996426a6cdb90e8da27e5096b3e88c
Author: fef <owo@fef.moe>
Date:   Sun Dec 4 12:33:47 2022 +0000

    properly disable reactions when not logged in

commit ec790f3b1e243e33ccd22685b8e3c017ca7f9273
Author: fef <owo@fef.moe>
Date:   Sun Dec 4 10:52:02 2022 +0000

    serialize custom emoji reactions properly for AP

    Akkoma and possibly others expect the `tag` field
    in an EmojiReact activity to be an array, not just
    a single object, so it's being wrapped into one
    now.  I'm not entirely sure whether this is the
    idiomatic way of doing it tbh, but it works fine.

commit 2637d9b77a6e696face0851328c5bd2e80d1dab2
Author: fef <owo@fef.moe>
Date:   Sun Dec 4 08:47:24 2022 +0000

    also disable reaction buttons in vanilla flavour

commit 0b4d5f700b74c0a6c8344321e491082511128f48
Author: fef <owo@fef.moe>
Date:   Sat Dec 3 16:55:37 2022 +0000

    disable reaction button when not signed in

commit afd0bb2c05be38477df1a808b32cece5c7e4b416
Author: fef <owo@fef.moe>
Date:   Sat Dec 3 16:20:29 2022 +0000

    fix image for new custom emoji reactions

commit b1dcd0eb6ce2f097fab310cdf32cd509426fcfba
Author: fef <owo@fef.moe>
Date:   Sat Dec 3 14:23:55 2022 +0000

    run i18n-tasks normalize

commit e4e7837bf30082185b2f14e8d60741261f7085f4
Author: fef <owo@fef.moe>
Date:   Sat Dec 3 11:57:00 2022 +0000

    display external custom emoji reactions properly

    Using an emoji map was completely unnecessary in
    the first place, because the reaction list from
    the API response includes URLs for every custom
    emoji anyway.  The reaction list now also contains
    a boolean field indicating whether it is an
    external custom emoji, which is required because
    people should only be able to react with Unicode
    emojis and local custom ones, not with custom
    emojis from other servers.

commit 6d3e364fa22370ab80f16a311dce15d93976464a
Author: fef <owo@fef.moe>
Date:   Sat Dec 3 10:22:15 2022 +0000

    handle incoming custom emoji reactions properly

commit 0a47a05905adc3e9d1dc1e7e619891b884b9e512
Author: fef <owo@fef.moe>
Date:   Sat Dec 3 08:24:23 2022 +0000

    support Undo action for EmojiReaction

commit b81f4537aced99e427cb30fd54a33c852839e08a
Author: fef <owo@fef.moe>
Date:   Fri Dec 2 17:02:06 2022 +0000

    download remote custom emojis from reactions

    Emoji reactions containing custom emojis from
    remote instances were assumed to already have
    been downloaded and stored in the database.
    This might obviously not be the case.

commit ff246bda3731753f58f7e499aae036c331953d0b
Author: fef <owo@fef.moe>
Date:   Fri Dec 2 10:17:59 2022 +0000

    fix integer cast bug

    Gotta love Rails.

commit 40a645aab9e8071698051751d88262bb9e10199a
Author: fef <owo@fef.moe>
Date:   Fri Dec 2 09:37:56 2022 +0000

    sanitize setting for number of visible reactions

    This is kind of a hack, but the lack of
    validation for settings unfortunately makes it
    necessary.

commit 391c6e22f2170f990d30d975c4a5ffb966484c17
Author: Jeremy Kescher <jeremy@kescher.at>
Date:   Fri Dec 2 08:05:10 2022 +0100

    Add reaction limit to instance serializer

commit 501ae9e2e1578ef80709ff38910dc46f483c5942
Author: fef <owo@fef.moe>
Date:   Fri Dec 2 01:52:59 2022 +0000

    fix padding on posts without reactions

    The margins of the elements above and below the
    main reaction list element overlapped before
    reactions were added.  Adding display: none to
    empty reaction bars restores this exact look.

commit 956edd3ca7cd04a3524addc2c5b6ddc475358734
Author: fef <owo@fef.moe>
Date:   Fri Dec 2 01:00:08 2022 +0000

    rename nop handler to handleNoOp

    This also adds the comment in action_bar.js to
    status_action_bar.js, clarifying that a future
    version could improve this code by modifying
    EmojiPickerDropdown.

commit 2c93f1840f6cc74eef628b370b2c7b8485028cc8
Author: fef <owo@fef.moe>
Date:   Thu Dec 1 23:30:39 2022 +0100

    cleanup JS imports and other minor stuff

commit 4a2f91e3de2dfdb53e1a3f09430c6e0eabbf49be
Author: fef <owo@fef.moe>
Date:   Thu Dec 1 04:26:13 2022 +0000

    remove unnecessary parameter

commit 91d26c871786708f8c2c0188f82318ff2c438127
Author: fef <owo@fef.moe>
Date:   Thu Dec 1 02:24:08 2022 +0000

    change reaction api to match other interactions

    Status reactions had an API similar to that of
    announcement reactions, using PUT and DELETE at a
    single endpoint.  I believe that for statuses, it
    makes more sense to follow the convention of the
    other interactions and use separate POST endpoints
    for create and destroy respectively.

commit c74e050e3d77920000d7226ae26966d27291e790
Author: fef <owo@fef.moe>
Date:   Thu Dec 1 01:41:47 2022 +0000

    fix reaction deletion bug and clean up controller

    Turns out the strange error where it would delete
    the wrong reaction occurred because I forgot to
    pass the emoji name to the query, which resulted
    in the database deleting the first reaction it
    found.  Also, this removes the unused set_reaction
    callback and includes the Authorization module for
    the status reactions controller.

commit e7ed7e37d7995d4bf39ad44c7a738290c81fa9dc
Author: fef <owo@fef.moe>
Date:   Wed Nov 30 19:29:56 2022 +0000

    remove outdated comments

commit d33f8330c019898f948334453b75fc2802fab9f8
Author: fef <owo@fef.moe>
Date:   Wed Nov 30 17:09:16 2022 +0000

    clean up new imports in vanilla flavour

commit 45f803e23f019dbe5246daa3131548acdb99a757
Author: fef <owo@fef.moe>
Date:   Wed Nov 30 17:25:36 2022 +0100

    rebase with upstream

commit 8b339e4a2d2632a269dccdba1a60e69b6b38a053
Author: fef <owo@fef.moe>
Date:   Wed Nov 30 14:59:37 2022 +0000

    make number of visible reactions a vanilla setting

    Reactions will be backported to the vanilla
    flavour, which requires all related settings to
    be accessible from the vanilla settings page
    rather than the glitch specific settings modal.

commit 56323209b519a90f9dbf10b1c45a320de4d6aaa5
Author: fef <owo@fef.moe>
Date:   Wed Nov 30 13:20:20 2022 +0000

    make number of displayed reactions a setting

    This adds an extra item to the local settings for
    specifying the number of reactions shown in toots.
    The detailed status view always shows all
    reactions.

commit e96fb97770877749b5c6bca8fe3e6136fffa309a
Author: fef <owo@fef.moe>
Date:   Wed Nov 30 12:01:34 2022 +0000

    change default reaction limit to 1

commit 30ae2ad2612bae2abb48c49205bbe71b97435dda
Author: fef <owo@fef.moe>
Date:   Wed Nov 30 09:06:14 2022 +0000

    limit number of reactions displayed

    Too many reactions on a single post quickly get
    spammy, so they are now sorted by count and only
    the first MAX_REACTIONS number of different
    emojis are actually displayed.

commit 84fb0f3cc252cabfa374b31f8a34e021a3ad8677
Author: fef <owo@fef.moe>
Date:   Tue Nov 29 09:07:10 2022 +0000

    fix reaction margins and paddings

commit 53b685ff1d4589915655da5cafa3a2dd9ee06a51
Author: fef <owo@fef.moe>
Date:   Tue Nov 29 08:54:35 2022 +0000

    cleanup frontend emoji reaction code

commit 2b0a474a73a84a3e841ddf44854fa5c2e0681a0f
Author: fef <owo@fef.moe>
Date:   Tue Nov 29 08:15:52 2022 +0000

    cleanup backend emoji reaction code

commit 3bfd5ceba17c42bee27ff0f10514332caa814332
Author: fef <owo@fef.moe>
Date:   Tue Nov 29 06:25:43 2022 +0000

    fix padding for reaction button

commit deabc28e182acc208bffe6fb57430b97c5bc7c6c
Author: fef <owo@fef.moe>
Date:   Tue Nov 29 05:21:53 2022 +0000

    handle misskey reactions properly

    misskey federates emoji reactions as likes.

commit 4d47b9929852493b208fdf13dee38e27dde50b8c
Author: fef <owo@fef.moe>
Date:   Tue Nov 29 04:37:44 2022 +0000

    move react button to action bar

commit 151bcea7d4497086823adc0bca6c674ea78a8d8f
Author: fef <owo@fef.moe>
Date:   Tue Nov 29 04:31:22 2022 +0100

    cherry-pick emoji reaction changes

commit f150fd0dc8761c2a992875948a2736244e5f7076
Author: fef <owo@fef.moe>
Date:   Tue Nov 29 00:39:40 2022 +0000

    make frontend fetch reaction limit

    the maximum number of reactions was previously
    hardcoded to 8.  this commit also fixes an
    incorrect query in StatusReactionValidator where
    it didn't count per-user reactions but the total
    amount of different ones.

commit 12886aa19ae5be6c7077ff1704b1b4c75c15eae6
Author: fef <owo@fef.moe>
Date:   Mon Nov 28 23:16:56 2022 +0000

    make status reaction count limit configurable

commit 25806c568a57e9193b43427df80b60a88143a5eb
Author: fef <owo@fef.moe>
Date:   Mon Nov 28 22:25:12 2022 +0000

    remove accidentally created file

commit f3784cfef551ad1d9d0df0001b2b480bfc656b14
Author: fef <owo@fef.moe>
Date:   Mon Nov 28 22:23:13 2022 +0000

    federate emoji reactions

    this is kind of experimental, but it should work
    in theory.  at least i tested it with a remove
    akkoma instance and it didn't crash.

commit d32f3f8c2fb9e8a29e676e54c98d2cac85841728
Author: fef <owo@fef.moe>
Date:   Fri Nov 25 23:02:40 2022 +0000

    show reactions in detailed status view

commit 5e9bbb0be253b5b56c6d7b5ee8d843f401995b7c
Author: fef <owo@fef.moe>
Date:   Thu Nov 24 17:30:52 2022 +0000

    add frontend for emoji reactions

    this is still pretty bare bones but hey, it works.

commit 85756b572a169857a09d7668ce9f2c856ebefd27
Author: fef <owo@fef.moe>
Date:   Thu Nov 24 11:50:32 2022 +0000

    add backend support for status emoji reactions

    turns out we can just reuse the code for
    announcement reactions.
2023-03-16 11:54:49 -05:00
Essem
eeee52b6c8
Merge branch 'main' of https://github.com/glitch-soc/mastodon 2023-03-15 12:55:46 -05:00
Essem
7ec191754c
Remove duplicate index 2023-03-12 17:08:27 -05:00
Essem
acf81e56d0
Fix YAML loading on Ruby 3.1 2023-03-07 12:46:45 -06:00
Essem
67bb8ea535
Merge branch 'main' of https://github.com/glitch-soc/mastodon 2023-02-28 13:44:40 -06:00
Essem
cf28f8b185
Change version suffix 2023-02-16 15:58:07 -06:00
Essem
d811f06f82
Implement a bad idea 2023-02-16 15:51:44 -06:00
Essem
7c50316b68
Merge branch 'feat/emoji_reactions' 2023-02-16 15:19:51 -06:00
Essem
784c49d854
wait a second 2023-02-16 15:12:09 -06:00
koyu
2bf445d1e4
Fixing some errors 2023-02-16 13:21:34 -06:00
koyu
d659e6e37e
Add alt text to GIFs 2023-02-16 13:19:43 -06:00
koyu
59b4901143
Hopefully fix GIF picker 2023-02-16 13:19:06 -06:00
koyu
cae29231b3
Disable content filter on GIFs 2023-02-16 13:18:59 -06:00
koyu
3545ebaf0f
Make GIF modal look nicer 2023-02-16 13:17:02 -06:00
koyu
cb0adf81f1
Move from Giphy to Tenor 2023-02-16 13:16:50 -06:00
koyu
4d57353991
Add translations, close button and make Giphy modal more beautiful 2023-02-16 13:14:18 -06:00
koyu
6da827ace9
Fix up some weird issues with file formats on Giphy (10MB warning) 2023-02-16 13:13:58 -06:00
koyu
84904de71c
Add Giphy support 2023-02-16 13:13:49 -06:00
neatchee
1e27826472 Fix rebase issues 2023-01-26 11:32:03 -08:00
neatchee
74bad9a4cb Per PR suggestion, split name and domain, and look for emoji ID, for unreact, so remote emoji's can be unreacted 2023-01-26 10:22:15 -08:00
fef
0ac4ccfc3a move emoji reaction strings to locales-glitch 2023-01-25 13:55:05 -08:00
Jeremy Kescher
88257fe15c Fix status reactions preventing an on_cascade delete 2023-01-25 13:51:13 -08:00
fef
5173613890 bypass reaction limit for foreign accounts 2023-01-25 13:51:13 -08:00
fef
c1f4e493e9 fix 404 when reacting with Keycap Number Sign
The Unicode sequence for this emoji starts with an
ASCII # character, which the browser's URI parser
truncates before sending the request to the
backend.
2023-01-25 13:51:13 -08:00
fef
ac31a8d48d fix status action bar after upstream changes 2023-01-25 13:51:13 -08:00
fef
9ec39f98af fix schema after rebase 2023-01-25 13:51:13 -08:00
fef
48b00c2bdc delete reaction notifications when deleting status 2023-01-25 13:51:13 -08:00
fef
e27fb1b632 support reacting with foreign custom emojis 2023-01-25 13:51:13 -08:00
fef
76a519f83e properly disable reactions when not logged in 2023-01-25 13:51:13 -08:00
fef
8304dc14a7 serialize custom emoji reactions properly for AP
Akkoma and possibly others expect the `tag` field
in an EmojiReact activity to be an array, not just
a single object, so it's being wrapped into one
now.  I'm not entirely sure whether this is the
idiomatic way of doing it tbh, but it works fine.
2023-01-25 13:51:13 -08:00
fef
cbc7bc95ef also disable reaction buttons in vanilla flavour 2023-01-25 13:51:13 -08:00
fef
0eec369211 disable reaction button when not signed in 2023-01-25 13:51:13 -08:00
fef
1ad2c68912 fix image for new custom emoji reactions 2023-01-25 13:51:13 -08:00
fef
615ecb3161 run i18n-tasks normalize 2023-01-25 13:51:13 -08:00
fef
2ffa61db05 display external custom emoji reactions properly
Using an emoji map was completely unnecessary in
the first place, because the reaction list from
the API response includes URLs for every custom
emoji anyway.  The reaction list now also contains
a boolean field indicating whether it is an
external custom emoji, which is required because
people should only be able to react with Unicode
emojis and local custom ones, not with custom
emojis from other servers.
2023-01-25 13:51:10 -08:00
fef
4516cb47ac handle incoming custom emoji reactions properly 2023-01-25 13:44:21 -08:00
fef
102fbc25be support Undo action for EmojiReaction 2023-01-25 13:44:21 -08:00
fef
48a5f5f250 download remote custom emojis from reactions
Emoji reactions containing custom emojis from
remote instances were assumed to already have
been downloaded and stored in the database.
This might obviously not be the case.
2023-01-25 13:44:21 -08:00
fef
29627a4c6c fix integer cast bug
Gotta love Rails.
2023-01-25 13:44:21 -08:00
fef
59f73df49d sanitize setting for number of visible reactions
This is kind of a hack, but the lack of
validation for settings unfortunately makes it
necessary.
2023-01-25 13:44:21 -08:00
Jeremy Kescher
3431edd68b Add reaction limit to instance serializer 2023-01-25 13:44:21 -08:00
fef
0f59ce3e56 fix padding on posts without reactions
The margins of the elements above and below the
main reaction list element overlapped before
reactions were added.  Adding display: none to
empty reaction bars restores this exact look.
2023-01-25 13:44:21 -08:00
fef
3956154a16 rename nop handler to handleNoOp
This also adds the comment in action_bar.js to
status_action_bar.js, clarifying that a future
version could improve this code by modifying
EmojiPickerDropdown.
2023-01-25 13:44:21 -08:00
fef
d61c47edb0 cleanup JS imports and other minor stuff 2023-01-25 13:44:20 -08:00
fef
97043dce21 remove unnecessary parameter 2023-01-25 13:43:25 -08:00
fef
3fd6173203 change reaction api to match other interactions
Status reactions had an API similar to that of
announcement reactions, using PUT and DELETE at a
single endpoint.  I believe that for statuses, it
makes more sense to follow the convention of the
other interactions and use separate POST endpoints
for create and destroy respectively.
2023-01-25 13:43:25 -08:00
fef
aa76853d51 fix reaction deletion bug and clean up controller
Turns out the strange error where it would delete
the wrong reaction occurred because I forgot to
pass the emoji name to the query, which resulted
in the database deleting the first reaction it
found.  Also, this removes the unused set_reaction
callback and includes the Authorization module for
the status reactions controller.
2023-01-25 13:43:25 -08:00
fef
5e8f805447 remove outdated comments 2023-01-25 13:43:25 -08:00
fef
341c663d29 clean up new imports in vanilla flavour 2023-01-25 13:43:25 -08:00
fef
b7c8a2b7b7 rebase with upstream 2023-01-25 13:43:24 -08:00
fef
6ff67a6775 make number of visible reactions a vanilla setting
Reactions will be backported to the vanilla
flavour, which requires all related settings to
be accessible from the vanilla settings page
rather than the glitch specific settings modal.
2023-01-25 13:39:00 -08:00
fef
20166444de make number of displayed reactions a setting
This adds an extra item to the local settings for
specifying the number of reactions shown in toots.
The detailed status view always shows all
reactions.
2023-01-25 13:38:59 -08:00
fef
7fc71af0cc change default reaction limit to 1 2023-01-25 13:32:37 -08:00
fef
63c03cf902 limit number of reactions displayed
Too many reactions on a single post quickly get
spammy, so they are now sorted by count and only
the first MAX_REACTIONS number of different
emojis are actually displayed.
2023-01-25 13:32:37 -08:00
fef
fff8112a5f fix reaction margins and paddings 2023-01-25 13:32:37 -08:00
fef
aa6abec827 cleanup frontend emoji reaction code 2023-01-25 13:32:36 -08:00
fef
a88d98f7d7 cleanup backend emoji reaction code 2023-01-25 13:30:24 -08:00
fef
26972e3947 fix padding for reaction button 2023-01-25 13:30:24 -08:00
fef
79b741ea93 handle misskey reactions properly
misskey federates emoji reactions as likes.
2023-01-25 13:30:24 -08:00
fef
cafc95381c move react button to action bar 2023-01-25 13:30:22 -08:00
fef
0f29c1fa8f cherry-pick emoji reaction changes 2023-01-25 13:23:43 -08:00
fef
d65c974741 make frontend fetch reaction limit
the maximum number of reactions was previously
hardcoded to 8.  this commit also fixes an
incorrect query in StatusReactionValidator where
it didn't count per-user reactions but the total
amount of different ones.
2023-01-25 11:51:23 -08:00
fef
0e5bb30222 make status reaction count limit configurable 2023-01-25 11:51:23 -08:00
fef
64defa3eed remove accidentally created file 2023-01-25 11:51:23 -08:00
fef
cb75d43185 federate emoji reactions
this is kind of experimental, but it should work
in theory.  at least i tested it with a remove
akkoma instance and it didn't crash.
2023-01-25 11:51:23 -08:00
fef
9958664f55 show reactions in detailed status view 2023-01-25 11:51:21 -08:00
fef
5df48a4d8a add frontend for emoji reactions
this is still pretty bare bones but hey, it works.
2023-01-25 11:47:55 -08:00
fef
9410d00d7b add backend support for status emoji reactions
turns out we can just reuse the code for
announcement reactions.
2023-01-25 11:42:52 -08:00
960 changed files with 25549 additions and 7059 deletions

View file

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

4
.env.development Normal file
View file

@ -0,0 +1,4 @@
# Required by ActiveRecord encryption feature
ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=fkSxKD2bF396kdQbrP1EJ7WbU7ZgNokR
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=r0hvVmzBVsjxC7AMlwhOzmtc36ZCOS1E
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=PhdFyyfy5xJ7WVd2lWBpcPScRQHzRTNr

View file

@ -3,3 +3,9 @@ NODE_ENV=production
# Federation
LOCAL_DOMAIN=cb6e6126.ngrok.io
LOCAL_HTTPS=true
# Secret values required by ActiveRecord encryption feature
# Use `bin/rails db:encryption:init` to generate fresh secrets
ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=test_determinist_key_DO_NOT_USE_IN_PRODUCTION
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=test_salt_DO_NOT_USE_IN_PRODUCTION
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=test_primary_key_DO_NOT_USE_IN_PRODUCTION

View file

@ -380,6 +380,7 @@ module.exports = defineConfig({
"message": "Use typed hooks `useAppDispatch` and `useAppSelector` instead."
}
],
"@typescript-eslint/restrict-template-expressions": ['warn', { allowNumber: true }],
'jsdoc/require-jsdoc': 'off',
// Those rules set stricter rules for TS files

View file

@ -141,6 +141,13 @@
matchUpdateTypes: ['patch', 'minor'],
groupName: 'RSpec (non-major)',
},
{
// Group all opentelemetry-ruby packages in the same PR
matchManagers: ['bundler'],
matchPackagePrefixes: ['opentelemetry-'],
matchUpdateTypes: ['patch', 'minor'],
groupName: 'opentelemetry-ruby (non-major)',
},
// Add labels depending on package manager
{ matchManagers: ['npm', 'nvm'], addLabels: ['javascript'] },
{ matchManagers: ['bundler', 'ruby-version'], addLabels: ['ruby'] },

View file

@ -1,21 +0,0 @@
{
"problemMatcher": [
{
"owner": "stylelint",
"pattern": [
{
"regexp": "^([^\\s].*)$",
"file": 1
},
{
"regexp": "^\\s+((\\d+):(\\d+))?\\s+(✖|×)\\s+(.*)\\s{2,}(.*)$",
"line": 2,
"column": 3,
"message": 5,
"code": 6,
"loop": true
}
]
}
]
}

View file

@ -11,7 +11,7 @@ permissions:
jobs:
compute-suffix:
runs-on: ubuntu-latest
if: github.repository == 'glitch-soc/mastodon'
if: github.repository == 'TheEssem/mastodon'
steps:
- id: version_vars
env:

View file

@ -53,7 +53,7 @@ jobs:
# Create or update the pull request
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6.0.2
uses: peter-evans/create-pull-request@v6.0.5
with:
commit-message: 'New Crowdin translations'
title: 'New Crowdin Translations (automated)'

View file

@ -38,9 +38,5 @@ jobs:
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- uses: xt0rted/stylelint-problem-matcher@v1
- run: echo "::add-matcher::.github/stylelint-matcher.json"
- name: Stylelint
run: yarn lint:css
run: yarn lint:css -f github

View file

@ -38,5 +38,5 @@ jobs:
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: Jest testing
- name: JavaScript testing
run: yarn jest --reporters github-actions summary

View file

@ -28,6 +28,9 @@ jobs:
env:
RAILS_ENV: ${{ matrix.mode }}
BUNDLE_WITH: ${{ matrix.mode }}
ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY: precompile_placeholder
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT: precompile_placeholder
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY: precompile_placeholder
OTP_SECRET: precompile_placeholder
SECRET_KEY_BASE: precompile_placeholder
@ -111,10 +114,9 @@ jobs:
fail-fast: false
matrix:
ruby-version:
- '3.0'
- '3.1'
- '3.2'
- '.ruby-version'
- '3.3'
steps:
- uses: actions/checkout@v4
@ -143,6 +145,8 @@ jobs:
uses: codecov/codecov-action@v4
with:
files: coverage/lcov/mastodon.lcov
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
test-e2e:
name: End to End testing
@ -182,15 +186,16 @@ jobs:
DISABLE_SIMPLECOV: true
RAILS_ENV: test
BUNDLE_WITH: test
LOCAL_DOMAIN: localhost:3000
LOCAL_HTTPS: false
strategy:
fail-fast: false
matrix:
ruby-version:
- '3.0'
- '3.1'
- '3.2'
- '.ruby-version'
- '3.3'
steps:
- uses: actions/checkout@v4
@ -212,7 +217,7 @@ jobs:
- name: Load database schema
run: './bin/rails db:create db:schema:load db:seed'
- run: bundle exec rake spec:system
- run: bin/rspec spec/system --tag streaming --tag js
- name: Archive logs
uses: actions/upload-artifact@v4
@ -259,8 +264,8 @@ jobs:
ports:
- 6379:6379
search:
image: ${{ matrix.search-image }}
elasticsearch:
image: ${{ contains(matrix.search-image, 'elasticsearch') && matrix.search-image || '' }}
env:
discovery.type: single-node
xpack.security.enabled: false
@ -272,6 +277,20 @@ jobs:
ports:
- 9200:9200
opensearch:
image: ${{ contains(matrix.search-image, 'opensearch') && matrix.search-image || '' }}
env:
discovery.type: single-node
DISABLE_INSTALL_DEMO_CONFIG: true
DISABLE_SECURITY_PLUGIN: true
options: >-
--health-cmd "curl http://localhost:9200/_cluster/health"
--health-interval 10s
--health-timeout 5s
--health-retries 10
ports:
- 9200:9200
env:
DB_HOST: localhost
DB_USER: postgres
@ -287,15 +306,16 @@ jobs:
fail-fast: false
matrix:
ruby-version:
- '3.0'
- '3.1'
- '3.2'
- '.ruby-version'
- '3.3'
search-image:
- docker.elastic.co/elasticsearch/elasticsearch:7.17.13
include:
- ruby-version: '.ruby-version'
search-image: docker.elastic.co/elasticsearch/elasticsearch:8.10.2
- ruby-version: '.ruby-version'
search-image: opensearchproject/opensearch:2
steps:
- uses: actions/checkout@v4

4
.gitignore vendored
View file

@ -24,7 +24,6 @@
/public/packs-test
.env
.env.production
.env.development
/node_modules/
/build/
@ -69,3 +68,6 @@ yarn-debug.log
# Ignore Docker option files
docker-compose.override.yml
# Ignore dotenv .local files
.env*.local

View file

@ -1,6 +1,5 @@
exclude:
- 'vendor/**/*'
- lib/templates/haml/scaffold/_form.html.haml
require:
- ./lib/linter/haml_middle_dot.rb
@ -11,6 +10,6 @@ linters:
MiddleDot:
enabled: true
LineLength:
max: 320
max: 300
ViewLength:
max: 200 # Override default value of 100 inherited from rubocop

2
.nvmrc
View file

@ -1 +1 @@
20.11
20.13

View file

@ -96,3 +96,8 @@ app/javascript/flavours/glitch/styles/reset.scss
# Ignore win95 theme
app/javascript/styles/win95.scss
# Ignore mastomodern theme
app/javascript/styles/modern/style.scss
app/javascript/flavours/glitch/styles/modern/style.scss
app/javascript/flavours/glitch/styles/modern/glitch-fixes.scss

View file

@ -9,12 +9,13 @@ inherit_mode:
require:
- rubocop-rails
- rubocop-rspec
- rubocop-rspec_rails
- rubocop-performance
- rubocop-capybara
- ./lib/linter/rubocop_middle_dot
AllCops:
TargetRubyVersion: 3.0 # Set to minimum supported version of CI
TargetRubyVersion: 3.1 # Set to minimum supported version of CI
DisplayCopNames: true
DisplayStyleGuide: true
ExtraDetails: true
@ -39,13 +40,7 @@ Layout/FirstHashElementIndentation:
# Reason: Currently disabled in .rubocop_todo.yml
# https://docs.rubocop.org/rubocop/cops_layout.html#layoutlinelength
Layout/LineLength:
Max: 320 # Default of 120 causes a duplicate entry in generated todo file
# Reason:
# https://docs.rubocop.org/rubocop/cops_lint.html#lintuselessaccessmodifier
Lint/UselessAccessModifier:
ContextCreatingMethods:
- class_methods
Max: 300 # Default of 120 causes a duplicate entry in generated todo file
## Disable most Metrics/*Length cops
# Reason: those are often triggered and force significant refactors when this happend
@ -86,6 +81,11 @@ Metrics/CyclomaticComplexity:
Metrics/ParameterLists:
CountKeywordArgs: false
# Reason: Prefer seeing a variable name
# https://docs.rubocop.org/rubocop/cops_naming.html#namingblockforwarding
Naming/BlockForwarding:
EnforcedStyle: explicit
# Reason: Prevailing style is argument file paths
# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsfilepath
Rails/FilePath:
@ -148,11 +148,6 @@ RSpec/NamedSubject:
RSpec/NotToNot:
EnforcedStyle: to_not
# Reason: Prevailing style uses numeric status codes, matches Rails/HttpStatus
# https://docs.rubocop.org/rubocop-rspec/cops_rspec_rails.html#rspecrailshttpstatus
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:
@ -163,6 +158,11 @@ RSpec/SpecFilePathFormat:
OEmbedController: oembed_controller
OStatus: ostatus
# Reason: Prevailing style uses numeric status codes, matches Rails/HttpStatus
# https://docs.rubocop.org/rubocop-rspec/cops_rspec_rails.html#rspecrailshttpstatus
RSpecRails/HttpStatus:
EnforcedStyle: numeric
# Reason:
# https://docs.rubocop.org/rubocop/cops_style.html#styleclassandmodulechildren
Style/ClassAndModuleChildren:
@ -182,10 +182,16 @@ Style/FormatStringToken:
AllowedMethods:
- redirect_with_vary
# Reason: Prevailing style choice
# https://docs.rubocop.org/rubocop/cops_style.html#stylehashaslastarrayitem
Style/HashAsLastArrayItem:
Enabled: false
# Reason: Enforce modern Ruby style
# https://docs.rubocop.org/rubocop/cops_style.html#stylehashsyntax
Style/HashSyntax:
EnforcedStyle: ruby19_no_mixed_keys
EnforcedShorthandSyntax: either
# Reason:
# https://docs.rubocop.org/rubocop/cops_style.html#stylenumericliterals
@ -205,6 +211,11 @@ Style/PercentLiteralDelimiters:
Style/RedundantBegin:
Enabled: false
# Reason: Prevailing style choice
# https://docs.rubocop.org/rubocop/cops_style.html#styleredundantfetchblock
Style/RedundantFetchBlock:
Enabled: false
# Reason: Overridden to reduce implicit StandardError rescues
# https://docs.rubocop.org/rubocop/cops_style.html#stylerescuestandarderror
Style/RescueStandardError:

View file

@ -1,18 +1,11 @@
# 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.60.2.
# using RuboCop version 1.63.5.
# 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
# versions of RuboCop, may require this file to be generated again.
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: TreatCommentsAsGroupSeparators, ConsiderPunctuation, Include.
# Include: **/*.gemfile, **/Gemfile, **/gems.rb
Bundler/OrderedGems:
Exclude:
- 'Gemfile'
Lint/NonLocalExitFromIterator:
Exclude:
- 'app/helpers/jsonld_helper.rb'
@ -36,7 +29,7 @@ Metrics/PerceivedComplexity:
# Configuration parameters: CountAsOne.
RSpec/ExampleLength:
Max: 20 # Override default of 5
Max: 18
RSpec/MultipleExpectations:
Max: 7
@ -49,27 +42,10 @@ RSpec/MultipleMemoizedHelpers:
RSpec/NestedGroups:
Max: 6
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/HasAndBelongsToMany:
Exclude:
- 'app/models/concerns/account/associations.rb'
- 'app/models/status.rb'
- 'app/models/tag.rb'
Rails/OutputSafety:
Exclude:
- 'config/initializers/simple_form.rb'
# Configuration parameters: Include.
# Include: app/models/**/*.rb
Rails/UniqueValidationWithoutIndex:
Exclude:
- 'app/models/account_alias.rb'
- 'app/models/custom_filter_status.rb'
- 'app/models/identity.rb'
- 'app/models/webauthn_credential.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: AllowedMethods, AllowedPatterns.
# AllowedMethods: ==, equal?, eql?
@ -78,17 +54,12 @@ Style/ClassEqualityComparison:
- 'app/helpers/jsonld_helper.rb'
- 'app/serializers/activitypub/outbox_serializer.rb'
Style/ClassVars:
Exclude:
- 'config/initializers/devise.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: AllowedVars.
Style/FetchEnvVar:
Exclude:
- 'app/lib/redis_configuration.rb'
- 'app/lib/translation_service.rb'
- 'config/environments/development.rb'
- 'config/environments/production.rb'
- 'config/initializers/2_limited_federation_mode.rb'
- 'config/initializers/3_omniauth.rb'
@ -98,9 +69,8 @@ Style/FetchEnvVar:
- 'config/initializers/paperclip.rb'
- 'config/initializers/vapid.rb'
- 'lib/mastodon/redis_config.rb'
- 'lib/premailer_webpack_strategy.rb'
- 'lib/tasks/repo.rake'
- 'spec/features/profile_spec.rb'
- 'spec/system/profile_spec.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, MaxUnannotatedPlaceholdersAllowed, AllowedMethods, AllowedPatterns.
@ -144,35 +114,14 @@ Style/GuardClause:
- 'lib/mastodon/cli/accounts.rb'
- 'lib/mastodon/cli/maintenance.rb'
- 'lib/mastodon/cli/media.rb'
- 'lib/paperclip/attachment_extensions.rb'
- 'lib/tasks/repo.rake'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: braces, no_braces
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/status.rb'
- 'app/services/batched_remove_status_service.rb'
- 'app/services/notify_service.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/HashTransformValues:
Exclude:
- 'app/serializers/rest/web_push_subscription_serializer.rb'
- 'app/services/import_service.rb'
# This cop supports safe autocorrection (--autocorrect).
Style/IfUnlessModifier:
Exclude:
- 'config/environments/production.rb'
- 'config/initializers/devise.rb'
- 'config/initializers/ffmpeg.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
Style/MapToHash:
Exclude:
@ -207,13 +156,6 @@ Style/OptionalBooleanParameter:
- 'app/workers/unfollow_follow_worker.rb'
- 'lib/mastodon/redis_config.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: PreferredDelimiters.
Style/PercentLiteralDelimiters:
Exclude:
- 'config/deploy.rb'
- 'config/initializers/doorkeeper.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: EnforcedStyle.
# SupportedStyles: short, verbose
@ -227,16 +169,6 @@ Style/RedundantConstantBase:
- 'config/environments/production.rb'
- 'config/initializers/sidekiq.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: SafeForConstants.
Style/RedundantFetchBlock:
Exclude:
- 'config/initializers/1_hosts.rb'
- 'config/initializers/chewy.rb'
- 'config/initializers/devise.rb'
- 'config/initializers/paperclip.rb'
- 'config/puma.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods, MaxChainLength.
# AllowedMethods: present?, blank?, presence, try, try!
@ -244,52 +176,12 @@ Style/SafeNavigation:
Exclude:
- '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/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 unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Mode.
Style/StringConcatenation:
Exclude:
- 'config/initializers/paperclip.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
# SupportedStyles: single_quotes, double_quotes
Style/StringLiterals:
Exclude:
- 'config/environments/production.rb'
- 'config/initializers/backtrace_silencers.rb'
- 'config/initializers/http_client_proxy.rb'
- 'config/initializers/rack_attack.rb'
- 'config/initializers/webauthn.rb'
- 'config/routes.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyleForMultiline.
# SupportedStylesForMultiline: comma, consistent_comma, no_comma
Style/TrailingCommaInArguments:
Exclude:
- 'config/initializers/paperclip.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: EnforcedStyleForMultiline.
# SupportedStylesForMultiline: comma, consistent_comma, no_comma
Style/TrailingCommaInHashLiteral:
Exclude:
- 'config/environments/production.rb'
- 'config/environments/test.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: WordRegex.
# SupportedStyles: percent, brackets

View file

@ -1 +1 @@
3.2.3
3.3.1

View file

@ -1,22 +0,0 @@
# 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

23
.solargraph.yml Normal file
View file

@ -0,0 +1,23 @@
---
include:
- '**/*.rb'
exclude:
- spec/**/*
- test/**/*
- vendor/**/*
- '.bundle/**/*'
require: []
domains: []
reporters:
- rubocop
- require_not_found
formatter:
rubocop:
cops: safe
except: []
only: []
extra_args: []
require_paths: []
plugins:
- solargraph-rails
max_files: 5000

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1.4
# syntax=docker/dockerfile:1.7
# Please see https://docs.docker.com/engine/reference/builder for information about
# the extended buildx capabilities used in this file.
@ -7,15 +7,15 @@
ARG TARGETPLATFORM=${TARGETPLATFORM}
ARG BUILDPLATFORM=${BUILDPLATFORM}
# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.2.3"]
ARG RUBY_VERSION="3.2.3"
# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.3.1"]
ARG RUBY_VERSION="3.3.1"
# # 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.3-slim-bookworm)
# Ruby image to use for base image based on combined variables (ex: 3.3.1-slim-bookworm)
FROM docker.io/ruby:${RUBY_VERSION}-slim-${DEBIAN_VERSION} as ruby
# Resulting version string is vX.X.X-MASTODON_VERSION_PRERELEASE+MASTODON_VERSION_METADATA
@ -29,7 +29,7 @@ ARG MASTODON_VERSION_METADATA=""
# 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/v3_2_3/doc/yjit/yjit.md
# See: https://github.com/ruby/ruby/blob/v3_2_4/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"
@ -205,7 +205,12 @@ 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; \
ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=precompile_placeholder \
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=precompile_placeholder \
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=precompile_placeholder \
OTP_SECRET=precompile_placeholder \
SECRET_KEY_BASE=precompile_placeholder \
bundle exec rails assets:precompile; \
# Cleanup temporary files
rm -fr /opt/mastodon/tmp;
@ -257,4 +262,4 @@ USER mastodon
# Expose default Puma ports
EXPOSE 3000
# Set container tini as default entry point
ENTRYPOINT ["/usr/bin/tini", "--"]
ENTRYPOINT ["/usr/bin/tini", "--"]

68
Gemfile
View file

@ -1,37 +1,37 @@
# frozen_string_literal: true
source 'https://rubygems.org'
ruby '>= 3.0.0'
ruby '>= 3.1.0'
gem 'puma', '~> 6.3'
gem 'rails', '~> 7.1.1'
gem 'propshaft'
gem 'thor', '~> 1.2'
gem 'puma', '~> 6.3'
gem 'rack', '~> 2.2.7'
gem 'rails', '~> 7.1.1'
gem 'thor', '~> 1.2'
# For why irb is in the Gemfile, see: https://ruby.social/@st0012/111444685161478182
gem 'irb', '~> 1.8'
gem 'dotenv'
gem 'haml-rails', '~>2.0'
gem 'pg', '~> 1.5'
gem 'pghero'
gem 'dotenv-rails', '~> 2.8'
gem 'aws-sdk-s3', '~> 1.123', require: false
gem 'blurhash', '~> 0.1'
gem 'fog-core', '<= 2.4.0'
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.18.0', require: false
gem 'browser'
gem 'charlock_holmes', '~> 0.7.7'
gem 'charlock_holmes', github: 'TheEssem/charlock_holmes', ref: '226932af4b03eb60d2e31d58b6c3efd72a3ace68'
gem 'chewy', '~> 7.3'
gem 'devise', '~> 4.9'
gem 'devise-two-factor', '~> 4.1'
gem 'devise-two-factor'
group :pam_authentication, optional: true do
gem 'devise_pam_authenticatable2', '~> 9.2'
@ -39,11 +39,11 @@ end
gem 'net-ldap', '~> 0.18'
gem 'omniauth-cas', '~> 3.0.0.beta.1'
gem 'omniauth-saml', '~> 2.0'
gem 'omniauth_openid_connect', '~> 0.6.1'
gem 'omniauth', '~> 2.0'
gem 'omniauth-cas', '~> 3.0.0.beta.1'
gem 'omniauth_openid_connect', '~> 0.6.1'
gem 'omniauth-rails_csrf_protection', '~> 1.0'
gem 'omniauth-saml', '~> 2.0'
gem 'color_diff', '~> 0.1'
gem 'csv', '~> 3.2'
@ -53,50 +53,49 @@ gem 'ed25519', '~> 1.3'
gem 'fast_blank', '~> 1.0'
gem 'fastimage'
gem 'hiredis', '~> 0.6'
gem 'redis-namespace', '~> 1.10'
gem 'htmlentities', '~> 4.3'
gem 'http', '~> 5.1'
gem 'http', '~> 5.2.0'
gem 'http_accept_language', '~> 2.1'
gem 'httplog', '~> 1.6.2'
gem 'i18n', '1.14.1' # TODO: Remove version when resolved: https://github.com/glebm/i18n-tasks/issues/552 / https://github.com/ruby-i18n/i18n/pull/688
gem 'i18n'
gem 'idn-ruby', require: 'idn'
gem 'inline_svg'
gem 'kaminari', '~> 1.2'
gem 'link_header', '~> 0.0'
gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
gem 'mime-types', '~> 3.5.0', require: 'mime/types/columnar'
gem 'nokogiri', '~> 1.15'
gem 'nsa'
gem 'oj', '~> 3.14'
gem 'ox', '~> 2.14'
gem 'parslet'
gem 'posix-spawn'
gem 'premailer-rails'
gem 'public_suffix', '~> 5.0'
gem 'pundit', '~> 2.3'
gem 'premailer-rails'
gem 'rack-attack', '~> 6.6'
gem 'rack-cors', '~> 2.0', require: 'rack/cors'
gem 'rails-i18n', '~> 7.0'
gem 'redcarpet', '~> 3.6'
gem 'redis', '~> 4.5', require: ['redis', 'redis/connection/hiredis']
gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
gem 'redis-namespace', '~> 1.10'
gem 'rqrcode', '~> 2.2'
gem 'ruby-progressbar', '~> 1.13'
gem 'sanitize', '~> 6.0'
gem 'scenic', '~> 1.7'
gem 'sidekiq', '~> 6.5'
gem 'sidekiq-bulk', '~> 0.2.0'
gem 'sidekiq-scheduler', '~> 5.0'
gem 'sidekiq-unique-jobs', '~> 7.1'
gem 'sidekiq-bulk', '~> 0.2.0'
gem 'simple-navigation', '~> 4.4'
gem 'simple_form', '~> 5.2'
gem 'stoplight', '~> 3.0.1'
gem 'simple-navigation', '~> 4.4'
gem 'stoplight', '~> 4.1'
gem 'strong_migrations', '1.8.0'
gem 'tty-prompt', '~> 0.23', require: false
gem 'twitter-text', '~> 3.1.0'
gem 'tzinfo-data', '~> 1.2023'
gem 'webauthn', '~> 3.0'
gem 'webpacker', '~> 5.4'
gem 'webpush', github: 'ClearlyClaire/webpush', ref: 'f14a4d52e201128b1b00245d11b6de80d6cfdcd9'
gem 'webauthn', '~> 3.0'
gem 'json-ld'
gem 'json-ld-preloaded', '~> 3.2'
@ -104,6 +103,24 @@ gem 'rdf-normalize', '~> 0.5'
gem 'private_address_check', '~> 0.5'
group :opentelemetry do
gem 'opentelemetry-exporter-otlp', '~> 0.26.3', require: false
gem 'opentelemetry-instrumentation-active_job', '~> 0.7.1', require: false
gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.20.1', require: false
gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.21.2', require: false
gem 'opentelemetry-instrumentation-excon', '~> 0.22.0', require: false
gem 'opentelemetry-instrumentation-faraday', '~> 0.24.1', require: false
gem 'opentelemetry-instrumentation-http', '~> 0.23.2', require: false
gem 'opentelemetry-instrumentation-http_client', '~> 0.22.3', require: false
gem 'opentelemetry-instrumentation-net_http', '~> 0.22.4', require: false
gem 'opentelemetry-instrumentation-pg', '~> 0.27.1', require: false
gem 'opentelemetry-instrumentation-rack', '~> 0.24.1', require: false
gem 'opentelemetry-instrumentation-rails', '~> 0.30.0', require: false
gem 'opentelemetry-instrumentation-redis', '~> 0.25.3', require: false
gem 'opentelemetry-instrumentation-sidekiq', '~> 0.25.2', require: false
gem 'opentelemetry-sdk', '~> 1.4', require: false
end
group :test do
# Adds RSpec Error/Warning annotations to GitHub PRs on the Files tab
gem 'rspec-github', '~> 2.4', require: false
@ -115,7 +132,7 @@ group :test do
gem 'email_spec'
# Extra RSpec extension methods and helpers for sidekiq
gem 'rspec-sidekiq', '~> 4.0'
gem 'rspec-sidekiq', '~> 5.0'
# Browser integration testing
gem 'capybara', '~> 3.39'
@ -161,7 +178,7 @@ group :development do
# Preview mail in the browser
gem 'letter_opener', '~> 1.8'
gem 'letter_opener_web', '~> 2.0'
gem 'letter_opener_web', '~> 3.0'
# Security analysis CLI tools
gem 'brakeman', '~> 6.0', require: false
@ -198,13 +215,14 @@ group :production do
gem 'lograge', '~> 0.12'
end
gem 'cocoon', '~> 1.2'
gem 'concurrent-ruby', require: false
gem 'connection_pool', require: false
gem 'xorcist', '~> 1.1'
gem 'cocoon', '~> 1.2'
gem 'net-http', '~> 0.4.0'
gem 'rubyzip', '~> 2.3'
gem 'hcaptcha', '~> 7.1'
gem 'mail', '~> 2.8'

View file

@ -7,38 +7,45 @@ GIT
hkdf (~> 0.2)
jwt (~> 2.0)
GIT
remote: https://github.com/TheEssem/charlock_holmes.git
revision: 226932af4b03eb60d2e31d58b6c3efd72a3ace68
ref: 226932af4b03eb60d2e31d58b6c3efd72a3ace68
specs:
charlock_holmes (0.7.7)
GEM
remote: https://rubygems.org/
specs:
actioncable (7.1.3.2)
actionpack (= 7.1.3.2)
activesupport (= 7.1.3.2)
actioncable (7.1.3.3)
actionpack (= 7.1.3.3)
activesupport (= 7.1.3.3)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
actionmailbox (7.1.3.2)
actionpack (= 7.1.3.2)
activejob (= 7.1.3.2)
activerecord (= 7.1.3.2)
activestorage (= 7.1.3.2)
activesupport (= 7.1.3.2)
actionmailbox (7.1.3.3)
actionpack (= 7.1.3.3)
activejob (= 7.1.3.3)
activerecord (= 7.1.3.3)
activestorage (= 7.1.3.3)
activesupport (= 7.1.3.3)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
actionmailer (7.1.3.2)
actionpack (= 7.1.3.2)
actionview (= 7.1.3.2)
activejob (= 7.1.3.2)
activesupport (= 7.1.3.2)
actionmailer (7.1.3.3)
actionpack (= 7.1.3.3)
actionview (= 7.1.3.3)
activejob (= 7.1.3.3)
activesupport (= 7.1.3.3)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.2)
actionpack (7.1.3.2)
actionview (= 7.1.3.2)
activesupport (= 7.1.3.2)
actionpack (7.1.3.3)
actionview (= 7.1.3.3)
activesupport (= 7.1.3.3)
nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4)
@ -46,15 +53,15 @@ GEM
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
actiontext (7.1.3.2)
actionpack (= 7.1.3.2)
activerecord (= 7.1.3.2)
activestorage (= 7.1.3.2)
activesupport (= 7.1.3.2)
actiontext (7.1.3.3)
actionpack (= 7.1.3.3)
activerecord (= 7.1.3.3)
activestorage (= 7.1.3.3)
activesupport (= 7.1.3.3)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.1.3.2)
activesupport (= 7.1.3.2)
actionview (7.1.3.3)
activesupport (= 7.1.3.3)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
@ -64,22 +71,22 @@ GEM
activemodel (>= 4.1)
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
activejob (7.1.3.2)
activesupport (= 7.1.3.2)
activejob (7.1.3.3)
activesupport (= 7.1.3.3)
globalid (>= 0.3.6)
activemodel (7.1.3.2)
activesupport (= 7.1.3.2)
activerecord (7.1.3.2)
activemodel (= 7.1.3.2)
activesupport (= 7.1.3.2)
activemodel (7.1.3.3)
activesupport (= 7.1.3.3)
activerecord (7.1.3.3)
activemodel (= 7.1.3.3)
activesupport (= 7.1.3.3)
timeout (>= 0.4.0)
activestorage (7.1.3.2)
actionpack (= 7.1.3.2)
activejob (= 7.1.3.2)
activerecord (= 7.1.3.2)
activesupport (= 7.1.3.2)
activestorage (7.1.3.3)
actionpack (= 7.1.3.3)
activejob (= 7.1.3.3)
activerecord (= 7.1.3.3)
activesupport (= 7.1.3.3)
marcel (~> 1.0)
activesupport (7.1.3.2)
activesupport (7.1.3.3)
base64
bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2)
@ -97,22 +104,20 @@ GEM
activerecord (>= 3.2, < 8.0)
rake (>= 10.4, < 14.0)
ast (2.4.2)
attr_encrypted (4.0.0)
encryptor (~> 3.0.0)
attr_required (1.0.1)
attr_required (1.0.2)
awrence (1.2.1)
aws-eventstream (1.3.0)
aws-partitions (1.873.0)
aws-sdk-core (3.190.1)
aws-partitions (1.929.0)
aws-sdk-core (3.196.1)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8)
jmespath (~> 1, >= 1.6.1)
aws-sdk-kms (1.75.0)
aws-sdk-core (~> 3, >= 3.188.0)
aws-sdk-kms (1.81.0)
aws-sdk-core (~> 3, >= 3.193.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.142.0)
aws-sdk-core (~> 3, >= 3.189.0)
aws-sdk-s3 (1.151.0)
aws-sdk-core (~> 3, >= 3.194.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.8)
aws-sigv4 (1.8.0)
@ -132,17 +137,10 @@ GEM
erubi (>= 1.0.0)
rack (>= 0.9.0)
rouge (>= 1.0.0)
better_html (2.0.2)
actionview (>= 6.0)
activesupport (>= 6.0)
ast (~> 2.0)
erubi (~> 1.4)
parser (>= 2.4)
smart_properties
bigdecimal (3.1.7)
bindata (2.4.15)
binding_of_caller (1.0.0)
debug_inspector (>= 0.0.1)
bigdecimal (3.1.8)
bindata (2.5.0)
binding_of_caller (1.0.1)
debug_inspector (>= 1.2.0)
blurhash (0.1.7)
bootsnap (1.18.3)
msgpack (~> 1.2)
@ -167,11 +165,10 @@ GEM
xpath (~> 3.2)
case_transform (0.2)
activesupport
cbor (0.5.9.6)
charlock_holmes (0.7.7)
chewy (7.5.1)
cbor (0.5.9.8)
chewy (7.6.0)
activesupport (>= 5.2)
elasticsearch (>= 7.12.0, < 7.14.0)
elasticsearch (>= 7.14.0, < 8)
elasticsearch-dsl
chunky_png (1.4.0)
climate_control (1.2.0)
@ -182,31 +179,30 @@ GEM
cose (1.3.0)
cbor (~> 0.5.9)
openssl-signature_algorithm (~> 1.0)
crack (0.4.6)
crack (1.0.0)
bigdecimal
rexml
crass (1.0.6)
css_parser (1.14.0)
css_parser (1.17.1)
addressable
csv (3.2.8)
csv (3.3.0)
database_cleaner-active_record (2.1.0)
activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
date (3.3.4)
debug (1.9.1)
debug (1.9.2)
irb (~> 1.10)
reline (>= 0.3.8)
debug_inspector (1.1.0)
devise (4.9.3)
debug_inspector (1.2.0)
devise (4.9.4)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
responders
warden (~> 1.2.3)
devise-two-factor (4.1.1)
devise-two-factor (5.0.0)
activesupport (~> 7.0)
attr_encrypted (>= 1.3, < 5, != 2)
devise (~> 4.0)
railties (~> 7.0)
rotp (~> 6.0)
@ -217,36 +213,31 @@ GEM
discard (1.3.0)
activerecord (>= 4.2, < 8)
docile (1.4.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
domain_name (0.6.20240107)
doorkeeper (5.6.9)
railties (>= 5)
dotenv (2.8.1)
dotenv-rails (2.8.1)
dotenv (= 2.8.1)
railties (>= 3.2)
dotenv (3.1.2)
drb (2.2.1)
ed25519 (1.3.0)
elasticsearch (7.13.3)
elasticsearch-api (= 7.13.3)
elasticsearch-transport (= 7.13.3)
elasticsearch-api (7.13.3)
elasticsearch (7.17.10)
elasticsearch-api (= 7.17.10)
elasticsearch-transport (= 7.17.10)
elasticsearch-api (7.17.10)
multi_json
elasticsearch-dsl (0.1.10)
elasticsearch-transport (7.13.3)
faraday (~> 1)
elasticsearch-transport (7.17.10)
faraday (>= 1, < 3)
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)
et-orbi (1.2.11)
tzinfo
excon (0.109.0)
excon (0.110.0)
fabrication (2.31.0)
faker (3.2.3)
faker (3.3.1)
i18n (>= 1.8.11, < 2)
faraday (1.10.3)
faraday-em_http (~> 1.0)
@ -274,10 +265,10 @@ GEM
faraday_middleware (1.2.0)
faraday (~> 1.0)
fast_blank (1.0.1)
fastimage (2.3.0)
ffi (1.15.5)
ffi-compiler (1.0.1)
ffi (>= 1.0.0)
fastimage (2.3.1)
ffi (1.16.3)
ffi-compiler (1.3.2)
ffi (>= 1.15.5)
rake
fog-core (2.4.0)
builder
@ -287,11 +278,11 @@ GEM
fog-json (1.2.0)
fog-core
multi_json (~> 1.10)
fog-openstack (1.1.0)
fog-openstack (1.1.1)
fog-core (~> 2.1)
fog-json (>= 1.0)
formatador (1.1.0)
fugit (1.8.1)
fugit (1.10.1)
et-orbi (~> 1, >= 1.2.7)
raabro (~> 1.4)
fuubar (2.5.1)
@ -299,6 +290,9 @@ GEM
ruby-progressbar (~> 1.4)
globalid (1.2.1)
activesupport (>= 6.1)
google-protobuf (3.25.3)
googleapis-common-protos-types (1.14.0)
google-protobuf (~> 3.18)
haml (6.3.0)
temple (>= 0.8.2)
thor
@ -308,7 +302,7 @@ GEM
activesupport (>= 5.1)
haml (>= 4.0.6)
railties (>= 5.1)
haml_lint (0.57.0)
haml_lint (0.58.0)
haml (>= 5.0)
parallel (~> 1.10)
rainbow
@ -318,15 +312,16 @@ GEM
hashie (5.0.0)
hcaptcha (7.1.0)
json
highline (2.1.0)
highline (3.0.1)
hiredis (0.6.3)
hkdf (0.3.0)
htmlentities (4.3.4)
http (5.1.1)
http (5.2.0)
addressable (~> 2.8)
base64 (~> 0.1)
http-cookie (~> 1.0)
http-form_data (~> 2.2)
llhttp-ffi (~> 0.4.0)
llhttp-ffi (~> 0.5.0)
http-cookie (1.0.5)
domain_name (~> 0.5)
http-form_data (2.3.0)
@ -335,12 +330,11 @@ GEM
httplog (1.6.3)
rack (>= 2.0)
rainbow (>= 2.0.0)
i18n (1.14.1)
i18n (1.14.5)
concurrent-ruby (~> 1.0)
i18n-tasks (1.0.13)
i18n-tasks (1.0.14)
activesupport (>= 4.0.2)
ast (>= 2.1.0)
better_html (>= 1.0, < 3.0)
erubi
highline (>= 2.0.0)
i18n
@ -353,11 +347,11 @@ GEM
activesupport (>= 3.0)
nokogiri (>= 1.6)
io-console (0.7.2)
irb (1.12.0)
rdoc
irb (1.13.1)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
jmespath (1.6.2)
json (2.7.1)
json (2.7.2)
json-canonicalization (1.0.0)
json-jwt (1.15.3.1)
activesupport (>= 4.2)
@ -374,7 +368,7 @@ GEM
json-ld-preloaded (3.3.0)
json-ld (~> 3.3)
rdf (~> 3.3)
json-schema (4.2.0)
json-schema (4.3.0)
addressable (>= 2.8)
jsonapi-renderer (0.2.2)
jwt (2.7.1)
@ -399,15 +393,15 @@ GEM
language_server-protocol (3.17.0.3)
launchy (2.5.2)
addressable (~> 2.8)
letter_opener (1.8.1)
launchy (>= 2.2, < 3)
letter_opener_web (2.0.0)
actionmailer (>= 5.2)
letter_opener (~> 1.7)
railties (>= 5.2)
letter_opener (1.10.0)
launchy (>= 2.2, < 4)
letter_opener_web (3.0.0)
actionmailer (>= 6.1)
letter_opener (~> 1.9)
railties (>= 6.1)
rexml
link_header (0.0.8)
llhttp-ffi (0.4.0)
llhttp-ffi (0.5.0)
ffi-compiler (~> 1.0)
rake (~> 13.0)
lograge (0.14.0)
@ -423,7 +417,7 @@ GEM
net-imap
net-pop
net-smtp
marcel (1.0.2)
marcel (1.0.4)
mario-redis-lock (1.2.1)
redis (>= 3.0.5)
matrix (0.4.2)
@ -434,19 +428,19 @@ GEM
memory_profiler (1.0.1)
mime-types (3.5.2)
mime-types-data (~> 3.2015)
mime-types-data (3.2023.1205)
mime-types-data (3.2024.0507)
mini_mime (1.1.5)
mini_portile2 (2.8.5)
mini_portile2 (2.8.6)
minitest (5.22.3)
msgpack (1.7.2)
multi_json (1.15.0)
multipart-post (2.3.0)
multipart-post (2.4.0)
mutex_m (0.2.0)
net-http (0.4.1)
uri
net-http-persistent (4.0.2)
connection_pool (~> 2.2)
net-imap (0.4.10)
net-imap (0.4.11)
date
net-protocol
net-ldap (0.19.0)
@ -454,10 +448,10 @@ GEM
net-protocol
net-protocol (0.2.2)
timeout
net-smtp (0.4.0.1)
net-smtp (0.5.0)
net-protocol
nio4r (2.5.9)
nokogiri (1.16.3)
nio4r (2.7.3)
nokogiri (1.16.5)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
nsa (0.3.0)
@ -498,10 +492,100 @@ GEM
openssl (3.2.0)
openssl-signature_algorithm (1.3.0)
openssl (> 2.0)
opentelemetry-api (1.2.5)
opentelemetry-common (0.20.1)
opentelemetry-api (~> 1.0)
opentelemetry-exporter-otlp (0.26.3)
google-protobuf (~> 3.14)
googleapis-common-protos-types (~> 1.3)
opentelemetry-api (~> 1.1)
opentelemetry-common (~> 0.20)
opentelemetry-sdk (~> 1.2)
opentelemetry-semantic_conventions
opentelemetry-helpers-sql-obfuscation (0.1.0)
opentelemetry-common (~> 0.20)
opentelemetry-instrumentation-action_pack (0.9.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-rack (~> 0.21)
opentelemetry-instrumentation-action_view (0.7.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-active_support (~> 0.1)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-active_job (0.7.1)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-active_model_serializers (0.20.1)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-active_record (0.7.2)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-active_support (0.5.1)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-base (0.22.3)
opentelemetry-api (~> 1.0)
opentelemetry-registry (~> 0.1)
opentelemetry-instrumentation-concurrent_ruby (0.21.3)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-excon (0.22.1)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.20.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-faraday (0.24.2)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.20.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-http (0.23.3)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-http_client (0.22.4)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.20.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-net_http (0.22.4)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.20.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-pg (0.27.3)
opentelemetry-api (~> 1.0)
opentelemetry-helpers-sql-obfuscation
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-rack (0.24.3)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.20.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-rails (0.30.1)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-action_pack (~> 0.9.0)
opentelemetry-instrumentation-action_view (~> 0.7.0)
opentelemetry-instrumentation-active_job (~> 0.7.0)
opentelemetry-instrumentation-active_record (~> 0.7.0)
opentelemetry-instrumentation-active_support (~> 0.5.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-redis (0.25.4)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.20.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-instrumentation-sidekiq (0.25.3)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.20.0)
opentelemetry-instrumentation-base (~> 0.22.1)
opentelemetry-registry (0.3.1)
opentelemetry-api (~> 1.1)
opentelemetry-sdk (1.4.1)
opentelemetry-api (~> 1.1)
opentelemetry-common (~> 0.20)
opentelemetry-registry (~> 0.2)
opentelemetry-semantic_conventions
opentelemetry-semantic_conventions (1.10.0)
opentelemetry-api (~> 1.0)
orm_adapter (0.5.0)
ox (2.14.18)
parallel (1.24.0)
parser (3.3.0.5)
parser (3.3.1.0)
ast (~> 2.4.1)
racc
parslet (2.0.0)
@ -510,8 +594,7 @@ GEM
pg (1.5.6)
pghero (3.4.1)
activerecord (>= 6)
posix-spawn (0.3.15)
premailer (1.21.0)
premailer (1.23.0)
addressable
css_parser (>= 1.12.0)
htmlentities (>= 4.0.0)
@ -527,10 +610,10 @@ GEM
railties (>= 7.0.0)
psych (5.1.2)
stringio
public_suffix (5.0.4)
public_suffix (5.0.5)
puma (6.4.2)
nio4r (~> 2.0)
pundit (2.3.1)
pundit (2.3.2)
activesupport (>= 3.0.0)
raabro (1.4.0)
racc (1.7.3)
@ -548,7 +631,7 @@ GEM
rack-protection (3.2.0)
base64 (>= 0.1.0)
rack (~> 2.2, >= 2.2.4)
rack-proxy (0.7.6)
rack-proxy (0.7.7)
rack
rack-session (1.0.2)
rack (< 3)
@ -557,20 +640,20 @@ GEM
rackup (1.0.0)
rack (< 3)
webrick
rails (7.1.3.2)
actioncable (= 7.1.3.2)
actionmailbox (= 7.1.3.2)
actionmailer (= 7.1.3.2)
actionpack (= 7.1.3.2)
actiontext (= 7.1.3.2)
actionview (= 7.1.3.2)
activejob (= 7.1.3.2)
activemodel (= 7.1.3.2)
activerecord (= 7.1.3.2)
activestorage (= 7.1.3.2)
activesupport (= 7.1.3.2)
rails (7.1.3.3)
actioncable (= 7.1.3.3)
actionmailbox (= 7.1.3.3)
actionmailer (= 7.1.3.3)
actionpack (= 7.1.3.3)
actiontext (= 7.1.3.3)
actionview (= 7.1.3.3)
activejob (= 7.1.3.3)
activemodel (= 7.1.3.3)
activerecord (= 7.1.3.3)
activestorage (= 7.1.3.3)
activesupport (= 7.1.3.3)
bundler (>= 1.15.0)
railties (= 7.1.3.2)
railties (= 7.1.3.3)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
@ -585,16 +668,16 @@ GEM
rails-i18n (7.0.9)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
railties (7.1.3.2)
actionpack (= 7.1.3.2)
activesupport (= 7.1.3.2)
railties (7.1.3.3)
actionpack (= 7.1.3.3)
activesupport (= 7.1.3.3)
irb
rackup (>= 1.0.0)
rake (>= 12.2)
thor (~> 1.0, >= 1.2.2)
zeitwerk (~> 2.6)
rainbow (3.1.1)
rake (13.1.0)
rake (13.2.1)
rdf (3.3.1)
bcp47_spec (~> 0.2)
link_header (~> 0.0, >= 0.0.8)
@ -609,16 +692,17 @@ GEM
redlock (1.3.2)
redis (>= 3.0.0, < 6.0)
regexp_parser (2.9.0)
reline (0.4.3)
reline (0.5.7)
io-console (~> 0.5)
request_store (1.5.1)
request_store (1.6.0)
rack (>= 1.4)
responders (3.1.1)
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.2.6)
rexml (3.2.8)
strscan (>= 3.0.9)
rotp (6.3.0)
rouge (4.1.2)
rouge (4.2.1)
rpam2 (4.0.2)
rqrcode (2.2.0)
chunky_png (~> 1.0)
@ -631,7 +715,7 @@ GEM
rspec-support (~> 3.13.0)
rspec-github (2.4.0)
rspec-core (~> 3.0)
rspec-mocks (3.13.0)
rspec-mocks (3.13.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-rails (6.1.2)
@ -642,13 +726,13 @@ GEM
rspec-expectations (~> 3.13)
rspec-mocks (~> 3.13)
rspec-support (~> 3.13)
rspec-sidekiq (4.1.0)
rspec-sidekiq (5.0.0)
rspec-core (~> 3.0)
rspec-expectations (~> 3.0)
rspec-mocks (~> 3.0)
sidekiq (>= 5, < 8)
rspec-support (3.13.1)
rubocop (1.62.1)
rubocop (1.63.5)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
@ -659,27 +743,30 @@ GEM
rubocop-ast (>= 1.31.1, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.31.2)
parser (>= 3.3.0.4)
rubocop-ast (1.31.3)
parser (>= 3.3.1.0)
rubocop-capybara (2.20.0)
rubocop (~> 1.41)
rubocop-factory_bot (2.25.1)
rubocop (~> 1.41)
rubocop-performance (1.20.2)
rubocop-performance (1.21.0)
rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
rubocop-rails (2.24.0)
rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rails (2.24.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rspec (2.27.1)
rubocop-rspec (2.29.2)
rubocop (~> 1.40)
rubocop-capybara (~> 2.17)
rubocop-factory_bot (~> 2.22)
rubocop-rspec_rails (~> 2.28)
rubocop-rspec_rails (2.28.3)
rubocop (~> 1.40)
ruby-prof (1.7.0)
ruby-progressbar (1.13.0)
ruby-saml (1.15.0)
ruby-saml (1.16.0)
nokogiri (>= 1.13.10)
rexml
ruby2_keywords (0.0.5)
@ -691,10 +778,10 @@ GEM
sanitize (6.1.0)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
scenic (1.7.0)
scenic (1.8.0)
activerecord (>= 4.0.0)
railties (>= 4.0.0)
selenium-webdriver (4.18.1)
selenium-webdriver (4.21.1)
base64 (~> 0.2)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
@ -728,14 +815,14 @@ GEM
simplecov-html (0.12.3)
simplecov-lcov (0.8.0)
simplecov_json_formatter (0.1.4)
smart_properties (1.17.0)
stackprof (0.2.26)
statsd-ruby (1.5.0)
stoplight (3.0.2)
stoplight (4.1.0)
redlock (~> 1.0)
stringio (3.1.0)
strong_migrations (1.8.0)
activerecord (>= 5.2)
strscan (3.1.0)
swd (1.3.0)
activesupport (>= 3)
attr_required (>= 0.0.5)
@ -746,7 +833,7 @@ GEM
unicode-display_width (>= 1.1.1, < 3)
terrapin (1.0.1)
climate_control
test-prof (1.3.2)
test-prof (1.3.3)
thor (1.3.1)
tilt (2.3.0)
timeout (0.4.1)
@ -763,7 +850,7 @@ GEM
tty-cursor (~> 0.7)
tty-screen (~> 0.8)
wisper (~> 2.0)
tty-screen (0.8.1)
tty-screen (0.8.2)
twitter-text (3.1.0)
idn-ruby
unf (~> 0.1.0)
@ -773,9 +860,9 @@ GEM
tzinfo (>= 1.0.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.8.2)
unf_ext (0.0.9.1)
unicode-display_width (2.5.0)
uri (0.12.2)
uri (0.13.0)
validate_email (0.1.6)
activemodel (>= 3.0)
mail (>= 2.2.5)
@ -796,7 +883,7 @@ GEM
webfinger (1.2.0)
activesupport
httpclient (>= 2.4)
webmock (3.22.0)
webmock (3.23.0)
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
@ -814,7 +901,7 @@ GEM
xorcist (1.1.3)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.13)
zeitwerk (2.6.14)
PLATFORMS
ruby
@ -832,7 +919,7 @@ DEPENDENCIES
browser
bundler-audit (~> 0.9)
capybara (~> 3.39)
charlock_holmes (~> 0.7.7)
charlock_holmes!
chewy (~> 7.3)
climate_control
cocoon (~> 1.2)
@ -843,11 +930,11 @@ DEPENDENCIES
database_cleaner-active_record
debug (~> 1.8)
devise (~> 4.9)
devise-two-factor (~> 4.1)
devise-two-factor
devise_pam_authenticatable2 (~> 9.2)
discard (~> 1.2)
doorkeeper (~> 5.6)
dotenv-rails (~> 2.8)
dotenv
ed25519 (~> 1.3)
email_spec
fabrication (~> 2.30)
@ -862,10 +949,10 @@ DEPENDENCIES
hcaptcha (~> 7.1)
hiredis (~> 0.6)
htmlentities (~> 4.3)
http (~> 5.1)
http (~> 5.2.0)
http_accept_language (~> 2.1)
httplog (~> 1.6.2)
i18n (= 1.14.1)
i18n
i18n-tasks (~> 1.0)
idn-ruby
inline_svg
@ -876,9 +963,10 @@ DEPENDENCIES
kaminari (~> 1.2)
kt-paperclip (~> 7.2)
letter_opener (~> 1.8)
letter_opener_web (~> 2.0)
letter_opener_web (~> 3.0)
link_header (~> 0.0)
lograge (~> 0.12)
mail (~> 2.8)
mario-redis-lock (~> 1.2)
md-paperclip-azure (~> 2.2)
memory_profiler
@ -893,11 +981,25 @@ DEPENDENCIES
omniauth-rails_csrf_protection (~> 1.0)
omniauth-saml (~> 2.0)
omniauth_openid_connect (~> 0.6.1)
opentelemetry-exporter-otlp (~> 0.26.3)
opentelemetry-instrumentation-active_job (~> 0.7.1)
opentelemetry-instrumentation-active_model_serializers (~> 0.20.1)
opentelemetry-instrumentation-concurrent_ruby (~> 0.21.2)
opentelemetry-instrumentation-excon (~> 0.22.0)
opentelemetry-instrumentation-faraday (~> 0.24.1)
opentelemetry-instrumentation-http (~> 0.23.2)
opentelemetry-instrumentation-http_client (~> 0.22.3)
opentelemetry-instrumentation-net_http (~> 0.22.4)
opentelemetry-instrumentation-pg (~> 0.27.1)
opentelemetry-instrumentation-rack (~> 0.24.1)
opentelemetry-instrumentation-rails (~> 0.30.0)
opentelemetry-instrumentation-redis (~> 0.25.3)
opentelemetry-instrumentation-sidekiq (~> 0.25.2)
opentelemetry-sdk (~> 1.4)
ox (~> 2.14)
parslet
pg (~> 1.5)
pghero
posix-spawn
premailer-rails
private_address_check (~> 0.5)
propshaft
@ -918,7 +1020,7 @@ DEPENDENCIES
rqrcode (~> 2.2)
rspec-github (~> 2.4)
rspec-rails (~> 6.0)
rspec-sidekiq (~> 4.0)
rspec-sidekiq (~> 5.0)
rubocop
rubocop-capybara
rubocop-performance
@ -939,7 +1041,7 @@ DEPENDENCIES
simplecov (~> 0.22)
simplecov-lcov (~> 0.8)
stackprof
stoplight (~> 3.0.1)
stoplight (~> 4.1)
strong_migrations (= 1.8.0)
test-prof
thor (~> 1.2)
@ -953,7 +1055,7 @@ DEPENDENCIES
xorcist (~> 1.1)
RUBY VERSION
ruby 3.2.2p53
ruby 3.3.1p55
BUNDLED WITH
2.5.4
2.5.9

View file

@ -1,3 +1,29 @@
# <img src="https://github.com/TheEssem/mastodon/raw/main/public/chuckya.png" width="128"> Chuckya
Chuckya is a close-to-upstream soft fork of Mastodon Glitch Edition (more commonly known as glitch-soc) that aims to introduce more experimental features/fixes with the goal of making the overall experience more enjoyable. Although it's mainly developed for and used on the [wetdry.world](https://wetdry.world) instance, it can be deployed by any server admin as a drop-in, backwards-compatible replacement for Mastodon.
Here are some of the changes compared to glitch-soc:
- Emoji reactions (glitch-soc/mastodon#2462)
- Tenor GIF picker (originally from [koyu.space](https://github.com/koyuspace/mastodon))
- Mastodon Modern theme (licensed under CC-BY-SA 4.0, [original repo](https://codeberg.org/Freeplay/Mastodon-Modern))
- Workaround for OpenGraph video embeds when using [Jortage](https://jortage.com)
- Multiple fixes for oEmbed/OpenGraph embeds
- Polls can be posted alongside media (glitch-soc/mastodon#2524)
- Polls can have only one option
- Restores status trend half-life to 2 hours
- Allows dashes in custom emote names
- Emojis can be put side-by-side
- Minor media attachment tweaks
Changes previously in Chuckya that made their way into vanilla Mastodon:
- Unicode emojis use [`jdecked/twemoji`](https://github.com/jdecked/twemoji) v15 graphics (mastodon/mastodon#28404)
Setup instructions are the same as [glitch-soc's](https://glitch-soc.github.io/docs); just replace the glitch-soc repo URL with `https://github.com/TheEssem/mastodon`.
Original glitch-soc readme is below.
# Mastodon Glitch Edition
[![Ruby Testing](https://github.com/glitch-soc/mastodon/actions/workflows/test-ruby.yml/badge.svg)](https://github.com/glitch-soc/mastodon/actions/workflows/test-ruby.yml)
@ -85,8 +111,8 @@ Mastodon acts as an OAuth2 provider, so 3rd party apps can use the REST and Stre
- **PostgreSQL** 12+
- **Redis** 4+
- **Ruby** 3.0+
- **Node.js** 16+
- **Ruby** 3.1+
- **Node.js** 18+
The repository includes deployment configurations for **Docker and docker-compose** as well as specific platforms like **Heroku**, **Scalingo**, and **Nanobox**. For Helm charts, reference the [mastodon/chart repository](https://github.com/mastodon/chart). The [**standalone** installation guide](https://docs.joinmastodon.org/admin/install/) is available in the documentation.
@ -107,10 +133,12 @@ A **Vagrant** configuration is included for development purposes. To use it, com
To set up **MacOS** for native development, complete the following steps:
- Use a Ruby version manager to install the specified version from `.ruby-version`
- Run `bundle` to install required gems
- Run `brew install postgresql@14 redis imagemagick libidn` to install required dependencies
- Navigate to Mastodon's root directory and run `brew install nvm` then `nvm use` to use the version from `.nvmrc`
- Run `yarn` to install required packages
- Run `corepack enable && corepack prepare`
- Run `bundle exec rails db:setup` (optionally prepend `RAILS_ENV=development` to target the dev environment)
- Run `RAILS_ENV=development bundle exec rails db:setup`
- Finally, run `bin/dev` which will launch the local services via `overmind` (if installed) or `foreman`
### Docker

1
Vagrantfile vendored
View file

@ -173,6 +173,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Otherwise, you can access the site at http://localhost:3000 and http://localhost:4000 , http://localhost:8080
config.vm.network :forwarded_port, guest: 3000, host: 3000
config.vm.network :forwarded_port, guest: 3035, host: 3035
config.vm.network :forwarded_port, guest: 4000, host: 4000
config.vm.network :forwarded_port, guest: 8080, host: 8080
config.vm.network :forwarded_port, guest: 9200, host: 9200

View file

@ -25,7 +25,7 @@ class AccountsController < ApplicationController
limit = params[:limit].present? ? [params[:limit].to_i, PAGE_SIZE_MAX].min : PAGE_SIZE
@statuses = filtered_statuses.without_reblogs.limit(limit)
@statuses = cache_collection(@statuses, Status)
@statuses = preload_collection(@statuses, Status)
end
format.json do
@ -46,7 +46,7 @@ class AccountsController < ApplicationController
end
def default_statuses
@account.statuses.not_local_only.where(visibility: [:public, :unlisted])
@account.statuses.not_local_only.distributable_visibility
end
def only_media_scope

View file

@ -18,7 +18,7 @@ class ActivityPub::CollectionsController < ActivityPub::BaseController
def set_items
case params[:id]
when 'featured'
@items = for_signed_account { cache_collection(@account.pinned_statuses.not_local_only, Status) }
@items = for_signed_account { preload_collection(@account.pinned_statuses.not_local_only, Status) }
@items = @items.map { |item| item.distributable? ? item : ActivityPub::TagManager.instance.uri_for(item) }
when 'tags'
@items = for_signed_account { @account.featured_tags }

View file

@ -60,7 +60,7 @@ class ActivityPub::OutboxesController < ActivityPub::BaseController
def set_statuses
return unless page_requested?
@statuses = cache_collection_paginated_by_id(
@statuses = preload_collection_paginated_by_id(
AccountStatusesFilter.new(@account, signed_request_account).results,
Status,
LIMIT,

View file

@ -31,7 +31,7 @@ class ActivityPub::RepliesController < ActivityPub::BaseController
def set_replies
@replies = only_other_accounts? ? Status.where.not(account_id: @account.id).joins(:account).merge(Account.without_suspended) : @account.statuses
@replies = @replies.where(in_reply_to_id: @status.id, visibility: [:public, :unlisted])
@replies = @replies.distributable_visibility.where(in_reply_to_id: @status.id)
@replies = @replies.paginate_by_min_id(DESCENDANTS_LIMIT, params[:min_id])
end

View file

@ -7,7 +7,6 @@ module Admin
layout 'admin'
before_action :set_pack
before_action :set_body_classes
before_action :set_cache_headers
@ -19,10 +18,6 @@ module Admin
@body_classes = 'admin'
end
def set_pack
use_pack 'admin'
end
def set_cache_headers
response.cache_control.replace(private: true, no_store: true)
end

View file

@ -25,6 +25,8 @@ class Admin::DomainAllowsController < Admin::BaseController
def destroy
authorize @domain_allow, :destroy?
UnallowDomainService.new.call(@domain_allow)
log_action :destroy, @domain_allow
redirect_to admin_instances_path, notice: I18n.t('admin.domain_allows.destroyed_msg')
end

View file

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

View file

@ -9,6 +9,7 @@ class Api::BaseController < ApplicationController
include Api::CachingConcern
include Api::ContentSecurityPolicy
include Api::ErrorHandling
include Api::Pagination
skip_before_action :require_functional!, unless: :limited_federation_mode?
@ -29,21 +30,6 @@ class Api::BaseController < ApplicationController
protected
def pagination_max_id
pagination_collection.last.id
end
def pagination_since_id
pagination_collection.first.id
end
def set_pagination_headers(next_path = nil, prev_path = nil)
links = []
links << [next_path, [%w(rel next)]] if next_path
links << [prev_path, [%w(rel prev)]] if prev_path
response.headers['Link'] = LinkHeader.new(links) unless links.empty?
end
def limit_param(default_limit)
return default_limit unless params[:limit]
@ -72,10 +58,6 @@ class Api::BaseController < ApplicationController
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!
if !current_user
render json: { error: 'This method requires an authenticated user' }, status: 422
@ -104,14 +86,6 @@ class Api::BaseController < ApplicationController
private
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
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

@ -1,7 +1,7 @@
# frozen_string_literal: true
class Api::V1::Accounts::CredentialsController < Api::BaseController
before_action -> { doorkeeper_authorize! :read, :'read:accounts' }, except: [:update]
before_action -> { doorkeeper_authorize! :read, :'read:accounts', :'read:me' }, except: [:update]
before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, only: [:update]
before_action :require_user!

View file

@ -19,11 +19,11 @@ class Api::V1::Accounts::StatusesController < Api::BaseController
end
def load_statuses
@account.unavailable? ? [] : cached_account_statuses
@account.unavailable? ? [] : preloaded_account_statuses
end
def cached_account_statuses
cache_collection_paginated_by_id(
def preloaded_account_statuses
preload_collection_paginated_by_id(
AccountStatusesFilter.new(@account, current_account, params).results,
Status,
limit_param(DEFAULT_STATUSES_LIMIT),

View file

@ -9,16 +9,22 @@ class Api::V1::AccountsController < Api::BaseController
before_action -> { doorkeeper_authorize! :follow, :write, :'write:blocks' }, only: [:block, :unblock]
before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, only: [:create]
before_action :require_user!, except: [:show, :create]
before_action :set_account, except: [:create]
before_action :check_account_approval, except: [:create]
before_action :check_account_confirmation, except: [:create]
before_action :require_user!, except: [:index, :show, :create]
before_action :set_account, except: [:index, :create]
before_action :set_accounts, only: [:index]
before_action :check_account_approval, except: [:index, :create]
before_action :check_account_confirmation, except: [:index, :create]
before_action :check_enabled_registrations, only: [:create]
before_action :check_accounts_limit, only: [:index]
skip_before_action :require_authenticated_user!, only: :create
override_rate_limit_headers :follow, family: :follows
def index
render json: @accounts, each_serializer: REST::AccountSerializer
end
def show
cache_if_unauthenticated!
render json: @account, serializer: REST::AccountSerializer
@ -79,6 +85,10 @@ class Api::V1::AccountsController < Api::BaseController
@account = Account.find(params[:id])
end
def set_accounts
@accounts = Account.where(id: account_ids).without_unapproved
end
def check_account_approval
raise(ActiveRecord::RecordNotFound) if @account.local? && @account.user_pending?
end
@ -87,10 +97,22 @@ class Api::V1::AccountsController < Api::BaseController
raise(ActiveRecord::RecordNotFound) if @account.local? && !@account.user_confirmed?
end
def check_accounts_limit
raise(Mastodon::ValidationError) if account_ids.size > DEFAULT_ACCOUNTS_LIMIT
end
def relationships(**options)
AccountRelationshipsPresenter.new([@account], current_user.account_id, **options)
end
def account_ids
Array(accounts_params[:ids]).uniq.map(&:to_i)
end
def accounts_params
params.permit(ids: [])
end
def account_params
params.permit(:username, :email, :password, :agreement, :locale, :reason, :time_zone, :invite_code)
end

View file

@ -29,10 +29,11 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
def create
authorize :domain_block, :create?
@domain_block = DomainBlock.new(resource_params)
existing_domain_block = resource_params[:domain].present? ? DomainBlock.rule_for(resource_params[:domain]) : nil
return render json: existing_domain_block, serializer: REST::Admin::ExistingDomainBlockErrorSerializer, status: 422 if existing_domain_block.present?
return render json: existing_domain_block, serializer: REST::Admin::ExistingDomainBlockErrorSerializer, status: 422 if conflicts_with_existing_block?(@domain_block, existing_domain_block)
@domain_block = DomainBlock.create!(resource_params)
@domain_block.save!
DomainBlockWorker.perform_async(@domain_block.id)
log_action :create, @domain_block
render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer
@ -55,6 +56,10 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
private
def conflicts_with_existing_block?(domain_block, existing_domain_block)
existing_domain_block.present? && (existing_domain_block.domain == TagManager.instance.normalize_domain(domain_block.domain) || !domain_block.stricter_than?(existing_domain_block))
end
def set_domain_blocks
@domain_blocks = filtered_domain_blocks.order(id: :desc).to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id))
end

View file

@ -4,6 +4,6 @@ class Api::V1::Apps::CredentialsController < Api::BaseController
def show
return doorkeeper_render_error unless valid_doorkeeper_token?
render json: doorkeeper_token.application, serializer: REST::ApplicationSerializer, fields: %i(name website vapid_key client_id scopes)
render json: doorkeeper_token.application, serializer: REST::ApplicationSerializer
end
end

View file

@ -5,7 +5,7 @@ class Api::V1::AppsController < Api::BaseController
def create
@app = Doorkeeper::Application.create!(application_options)
render json: @app, serializer: REST::ApplicationSerializer
render json: @app, serializer: REST::CredentialApplicationSerializer
end
private
@ -24,6 +24,6 @@ class Api::V1::AppsController < Api::BaseController
end
def app_params
params.permit(:client_name, :redirect_uris, :scopes, :website)
params.permit(:client_name, :scopes, :website, :redirect_uris, redirect_uris: [])
end
end

View file

@ -13,11 +13,11 @@ class Api::V1::BookmarksController < Api::BaseController
private
def load_statuses
cached_bookmarks
preloaded_bookmarks
end
def cached_bookmarks
cache_collection(results.map(&:status), Status)
def preloaded_bookmarks
preload_collection(results.map(&:status), Status)
end
def results

View file

@ -13,11 +13,11 @@ class Api::V1::FavouritesController < Api::BaseController
private
def load_statuses
cached_favourites
preloaded_favourites
end
def cached_favourites
cache_collection(results.map(&:status), Status)
def preloaded_favourites
preload_collection(results.map(&:status), Status)
end
def results

View file

@ -12,10 +12,6 @@ class Api::V1::FeaturedTags::SuggestionsController < Api::BaseController
private
def set_recently_used_tags
@recently_used_tags = Tag.recently_used(current_account).where.not(id: featured_tag_ids).limit(10)
end
def featured_tag_ids
current_account.featured_tags.pluck(:tag_id)
@recently_used_tags = Tag.suggestions_for_account(current_account).limit(10)
end
end

View file

@ -41,7 +41,7 @@ class Api::V1::Notifications::RequestsController < Api::BaseController
)
NotificationRequest.preload_cache_collection(requests) do |statuses|
cache_collection(statuses, Status)
preload_collection(statuses, Status)
end
end

View file

@ -50,7 +50,7 @@ class Api::V1::NotificationsController < Api::BaseController
)
Notification.preload_cache_collection_target_statuses(notifications) do |target_statuses|
cache_collection(target_statuses, Status)
preload_collection(target_statuses, Status)
end
end

View file

@ -1,9 +1,12 @@
# frozen_string_literal: true
class Api::V1::Push::SubscriptionsController < Api::BaseController
include Redisable
include Lockable
before_action -> { doorkeeper_authorize! :push }
before_action :require_user!
before_action :set_push_subscription
before_action :set_push_subscription, only: [:show, :update]
before_action :check_push_subscription, only: [:show, :update]
def show
@ -11,16 +14,18 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController
end
def create
@push_subscription&.destroy!
with_redis_lock("push_subscription:#{current_user.id}") do
destroy_web_push_subscriptions!
@push_subscription = Web::PushSubscription.create!(
endpoint: subscription_params[:endpoint],
key_p256dh: subscription_params[:keys][:p256dh],
key_auth: subscription_params[:keys][:auth],
data: data_params,
user_id: current_user.id,
access_token_id: doorkeeper_token.id
)
@push_subscription = Web::PushSubscription.create!(
endpoint: subscription_params[:endpoint],
key_p256dh: subscription_params[:keys][:p256dh],
key_auth: subscription_params[:keys][:auth],
data: data_params,
user_id: current_user.id,
access_token_id: doorkeeper_token.id
)
end
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
end
@ -31,14 +36,18 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController
end
def destroy
@push_subscription&.destroy!
destroy_web_push_subscriptions!
render_empty
end
private
def destroy_web_push_subscriptions!
doorkeeper_token.web_push_subscriptions.destroy_all
end
def set_push_subscription
@push_subscription = Web::PushSubscription.find_by(access_token_id: doorkeeper_token.id)
@push_subscription = doorkeeper_token.web_push_subscriptions.first
end
def check_push_subscription

View file

@ -23,7 +23,7 @@ class Api::V1::Statuses::RebloggedByAccountsController < Api::V1::Statuses::Base
end
def paginated_statuses
Status.where(reblog_of_id: @status.id).where(visibility: [:public, :unlisted]).paginate_by_max_id(
Status.where(reblog_of_id: @status.id).distributable_visibility.paginate_by_max_id(
limit_param(DEFAULT_ACCOUNTS_LIMIT),
params[:max_id],
params[:since_id]

View file

@ -5,9 +5,11 @@ class Api::V1::StatusesController < Api::BaseController
before_action -> { authorize_if_got_token! :read, :'read:statuses' }, except: [:create, :update, :destroy]
before_action -> { doorkeeper_authorize! :write, :'write:statuses' }, only: [:create, :update, :destroy]
before_action :require_user!, except: [:show, :context]
before_action :set_status, only: [:show, :context]
before_action :set_thread, only: [:create]
before_action :require_user!, except: [:index, :show, :context]
before_action :set_statuses, only: [:index]
before_action :set_status, only: [:show, :context]
before_action :set_thread, only: [:create]
before_action :check_statuses_limit, only: [:index]
override_rate_limit_headers :create, family: :statuses
override_rate_limit_headers :update, family: :statuses
@ -23,9 +25,14 @@ class Api::V1::StatusesController < Api::BaseController
DESCENDANTS_LIMIT = 60
DESCENDANTS_DEPTH_LIMIT = 20
def index
@statuses = preload_collection(@statuses, Status)
render json: @statuses, each_serializer: REST::StatusSerializer
end
def show
cache_if_unauthenticated!
@status = cache_collection([@status], Status).first
@status = preload_collection([@status], Status).first
render json: @status, serializer: REST::StatusSerializer
end
@ -44,8 +51,8 @@ class Api::V1::StatusesController < Api::BaseController
ancestors_results = @status.in_reply_to_id.nil? ? [] : @status.ancestors(ancestors_limit, current_account)
descendants_results = @status.descendants(descendants_limit, current_account, descendants_depth_limit)
loaded_ancestors = cache_collection(ancestors_results, Status)
loaded_descendants = cache_collection(descendants_results, Status)
loaded_ancestors = preload_collection(ancestors_results, Status)
loaded_descendants = preload_collection(descendants_results, Status)
@context = Context.new(ancestors: loaded_ancestors, descendants: loaded_descendants)
statuses = [@status] + @context.ancestors + @context.descendants
@ -113,6 +120,10 @@ class Api::V1::StatusesController < Api::BaseController
private
def set_statuses
@statuses = Status.permitted_statuses_from_ids(status_ids, current_account)
end
def set_status
@status = Status.find(params[:id])
authorize @status, :show?
@ -127,6 +138,18 @@ class Api::V1::StatusesController < Api::BaseController
render json: { error: I18n.t('statuses.errors.in_reply_not_found') }, status: 404
end
def check_statuses_limit
raise(Mastodon::ValidationError) if status_ids.size > DEFAULT_STATUSES_LIMIT
end
def status_ids
Array(statuses_params[:ids]).uniq.map(&:to_i)
end
def statuses_params
params.permit(ids: [])
end
def status_params
params.permit(
:status,

View file

@ -15,11 +15,11 @@ class Api::V1::Timelines::DirectController < Api::BaseController
private
def load_statuses
cached_direct_statuses
preloaded_direct_statuses
end
def cached_direct_statuses
cache_collection direct_statuses, Status
def preloaded_direct_statuses
preload_collection direct_statuses, Status
end
def direct_statuses

View file

@ -21,11 +21,11 @@ class Api::V1::Timelines::HomeController < Api::V1::Timelines::BaseController
private
def load_statuses
cached_home_statuses
preloaded_home_statuses
end
def cached_home_statuses
cache_collection home_statuses, Status
def preloaded_home_statuses
preload_collection home_statuses, Status
end
def home_statuses

View file

@ -21,11 +21,11 @@ class Api::V1::Timelines::ListController < Api::V1::Timelines::BaseController
end
def set_statuses
@statuses = cached_list_statuses
@statuses = preloaded_list_statuses
end
def cached_list_statuses
cache_collection list_statuses, Status
def preloaded_list_statuses
preload_collection list_statuses, Status
end
def list_statuses

View file

@ -18,11 +18,11 @@ class Api::V1::Timelines::PublicController < Api::V1::Timelines::BaseController
end
def load_statuses
cached_public_statuses_page
preloaded_public_statuses_page
end
def cached_public_statuses_page
cache_collection(public_statuses, Status)
def preloaded_public_statuses_page
preload_collection(public_statuses, Status)
end
def public_statuses

View file

@ -23,11 +23,11 @@ class Api::V1::Timelines::TagController < Api::V1::Timelines::BaseController
end
def load_statuses
cached_tagged_statuses
preloaded_tagged_statuses
end
def cached_tagged_statuses
@tag.nil? ? [] : cache_collection(tag_timeline_statuses, Status)
def preloaded_tagged_statuses
@tag.nil? ? [] : preload_collection(tag_timeline_statuses, Status)
end
def tag_timeline_statuses

View file

@ -20,7 +20,7 @@ class Api::V1::Trends::StatusesController < Api::BaseController
def set_statuses
@statuses = if enabled?
cache_collection(statuses_from_trends.offset(offset_param).limit(limit_param(DEFAULT_STATUSES_LIMIT)), Status)
preload_collection(statuses_from_trends.offset(offset_param).limit(limit_param(DEFAULT_STATUSES_LIMIT)), Status)
else
[]
end

View file

@ -9,6 +9,7 @@ class ApplicationController < ActionController::Base
include UserTrackingConcern
include SessionTrackingConcern
include CacheConcern
include PreloadingConcern
include DomainControlHelper
include ThemingConcern
include DatabaseHelper
@ -19,6 +20,7 @@ class ApplicationController < ActionController::Base
helper_method :current_session
helper_method :current_flavour
helper_method :current_skin
helper_method :current_theme
helper_method :single_user_mode?
helper_method :use_seamless_external_login?
helper_method :omniauth_only?
@ -164,10 +166,7 @@ class ApplicationController < ActionController::Base
def respond_with_error(code)
respond_to do |format|
format.any do
use_pack 'error'
render "errors/#{code}", layout: 'error', status: code, formats: [:html]
end
format.any { render "errors/#{code}", layout: 'error', status: code, formats: [:html] }
format.json { render json: { error: Rack::Utils::HTTP_STATUS_CODES[code] }, status: code }
end
end
@ -176,10 +175,7 @@ class ApplicationController < ActionController::Base
return unless self_destruct?
respond_to do |format|
format.any do
use_pack 'error'
render 'errors/self_destruct', layout: 'auth', status: 410, formats: [:html]
end
format.any { render 'errors/self_destruct', layout: 'auth', status: 410, formats: [:html] }
format.json { render json: { error: Rack::Utils::HTTP_STATUS_CODES[410] }, status: 410 }
end
end

View file

@ -5,7 +5,6 @@ class Auth::ChallengesController < ApplicationController
layout 'auth'
before_action :set_pack
before_action :authenticate_user!
skip_before_action :check_self_destruct!
@ -21,10 +20,4 @@ class Auth::ChallengesController < ApplicationController
render_challenge
end
end
private
def set_pack
use_pack 'auth'
end
end

View file

@ -6,7 +6,6 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController
layout 'auth'
before_action :set_body_classes
before_action :set_pack
before_action :set_confirmation_user!, only: [:show, :confirm_captcha]
before_action :redirect_confirmed_user, if: :signed_in_confirmed_user?
@ -66,10 +65,6 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController
@confirmation_user.nil? || @confirmation_user.confirmed?
end
def set_pack
use_pack 'auth'
end
def redirect_confirmed_user
redirect_to(current_user.approved? ? root_path : edit_user_registration_path)
end

View file

@ -3,7 +3,6 @@
class Auth::PasswordsController < Devise::PasswordsController
skip_before_action :check_self_destruct!
before_action :redirect_invalid_reset_token, only: :edit, unless: :reset_password_token_is_valid?
before_action :set_pack
before_action :set_body_classes
layout 'auth'
@ -32,8 +31,4 @@ class Auth::PasswordsController < Devise::PasswordsController
def reset_password_token_is_valid?
resource_class.with_reset_password_token(params[:reset_password_token]).present?
end
def set_pack
use_pack 'auth'
end
end

View file

@ -9,7 +9,6 @@ class Auth::RegistrationsController < Devise::RegistrationsController
before_action :set_invite, only: [:new, :create]
before_action :check_enabled_registrations, only: [:new, :create]
before_action :configure_sign_up_params, only: [:create]
before_action :set_pack
before_action :set_sessions, only: [:edit, :update]
before_action :set_strikes, only: [:edit, :update]
before_action :set_body_classes, only: [:new, :create, :edit, :update]
@ -97,10 +96,6 @@ class Auth::RegistrationsController < Devise::RegistrationsController
private
def set_pack
use_pack %w(edit update).include?(action_name) ? 'admin' : 'auth'
end
def set_body_classes
@body_classes = %w(edit update).include?(action_name) ? 'admin' : 'lighter'
end

View file

@ -12,7 +12,6 @@ class Auth::SessionsController < Devise::SessionsController
skip_before_action :require_functional!
skip_before_action :update_user_sign_in
prepend_before_action :set_pack
prepend_before_action :check_suspicious!, only: [:create]
include Auth::TwoFactorAuthenticationConcern
@ -104,10 +103,6 @@ class Auth::SessionsController < Devise::SessionsController
private
def set_pack
use_pack 'auth'
end
def set_body_classes
@body_classes = 'lighter'
end

View file

@ -3,7 +3,6 @@
class Auth::SetupController < ApplicationController
layout 'auth'
before_action :set_pack
before_action :authenticate_user!
before_action :require_unconfirmed_or_pending!
before_action :set_body_classes
@ -43,8 +42,4 @@ class Auth::SetupController < ApplicationController
def user_params
params.require(:user).permit(:email)
end
def set_pack
use_pack 'sign_up'
end
end

View file

@ -0,0 +1,36 @@
# frozen_string_literal: true
module Api::Pagination
extend ActiveSupport::Concern
protected
def pagination_max_id
pagination_collection.last.id
end
def pagination_since_id
pagination_collection.first.id
end
def set_pagination_headers(next_path = nil, prev_path = nil)
links = []
links << [next_path, [%w(rel next)]] if next_path
links << [prev_path, [%w(rel prev)]] if prev_path
response.headers['Link'] = LinkHeader.new(links) unless links.empty?
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
private
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def pagination_options_invalid?
params.slice(:limit, :offset).values.map(&:to_i).any?(&:negative?)
end
end

View file

@ -83,8 +83,6 @@ module Auth::TwoFactorAuthenticationConcern
def prompt_for_two_factor(user)
register_attempt_in_session(user)
use_pack 'auth'
@body_classes = 'lighter'
@webauthn_enabled = user.webauthn_enabled?
@scheme_type = if user.webauthn_enabled? && user_params[:otp_attempt].blank?

View file

@ -45,28 +45,4 @@ module CacheConcern
Rails.cache.write(key, response.body, expires_in: expires_in, raw: true)
end
end
def cache_collection(raw, klass)
return raw unless klass.respond_to?(:with_includes)
raw = raw.cache_ids.to_a if raw.is_a?(ActiveRecord::Relation)
return [] if raw.empty?
cached_keys_with_value = Rails.cache.read_multi(*raw).transform_keys(&:id)
uncached_ids = raw.map(&:id) - cached_keys_with_value.keys
klass.reload_stale_associations!(cached_keys_with_value.values) if klass.respond_to?(:reload_stale_associations!)
unless uncached_ids.empty?
uncached = klass.where(id: uncached_ids).with_includes.index_by(&:id)
Rails.cache.write_multi(uncached.values.to_h { |i| [i, i] })
end
raw.filter_map { |item| cached_keys_with_value[item.id] || uncached[item.id] }
end
def cache_collection_paginated_by_id(raw, klass, limit, options)
cache_collection raw.cache_ids.to_a_paginated_by_id(limit, options), klass
end
end

View file

@ -0,0 +1,17 @@
# frozen_string_literal: true
module PreloadingConcern
extend ActiveSupport::Concern
def preload_collection(scope, klass)
return scope unless klass.respond_to?(:preload_cacheable_associations)
scope.to_a.tap do |records|
klass.preload_cacheable_associations(records)
end
end
def preload_collection_paginated_by_id(scope, klass, limit, options)
preload_collection scope.to_a_paginated_by_id(limit, options), klass
end
end

View file

@ -66,7 +66,7 @@ module SignatureVerification
compare_signed_string = build_signed_string(include_query_string: false)
return actor unless verify_signature(actor, signature, compare_signed_string).nil?
actor = stoplight_wrap_request { actor_refresh_key!(actor) }
actor = stoplight_wrapper.run { actor_refresh_key!(actor) }
raise SignatureVerificationError, "Could not refresh public key #{signature_params['keyId']}" if actor.nil?
@ -226,10 +226,10 @@ module SignatureVerification
end
if key_id.start_with?('acct:')
stoplight_wrap_request { ResolveAccountService.new.call(key_id.delete_prefix('acct:'), suppress_errors: false) }
stoplight_wrapper.run { ResolveAccountService.new.call(key_id.delete_prefix('acct:'), suppress_errors: false) }
elsif !ActivityPub::TagManager.instance.local_uri?(key_id)
account = ActivityPub::TagManager.instance.uri_to_actor(key_id)
account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, suppress_errors: false) }
account ||= stoplight_wrapper.run { ActivityPub::FetchRemoteKeyService.new.call(key_id, suppress_errors: false) }
account
end
rescue Mastodon::PrivateNetworkAddressError => e
@ -238,12 +238,11 @@ module SignatureVerification
raise SignatureVerificationError, e.message
end
def stoplight_wrap_request(&block)
Stoplight("source:#{request.remote_ip}", &block)
def stoplight_wrapper
Stoplight("source:#{request.remote_ip}")
.with_threshold(1)
.with_cool_off_time(5.minutes.seconds)
.with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) }
.run
end
def actor_refresh_key!(actor)

View file

@ -3,87 +3,22 @@
module ThemingConcern
extend ActiveSupport::Concern
def use_pack(pack_name)
@core = resolve_pack_with_common(Themes.instance.core, pack_name)
@theme = resolve_pack_with_common(Themes.instance.flavour(current_flavour), pack_name, current_skin)
end
private
def current_flavour
[current_user&.setting_flavour, Setting.flavour, 'glitch', 'vanilla'].find { |flavour| Themes.instance.flavours.include?(flavour) }
@current_flavour ||= [current_user&.setting_flavour, Setting.flavour, 'glitch', 'vanilla'].find { |flavour| Themes.instance.flavours.include?(flavour) }
end
def current_skin
skins = Themes.instance.skins_for(current_flavour)
[current_user&.setting_skin, Setting.skin, 'default'].find { |skin| skins.include?(skin) }
end
def valid_pack_data?(data, pack_name)
data['pack'].is_a?(Hash) && data['pack'][pack_name].present?
end
def nil_pack(data)
{
use_common: true,
flavour: data['name'],
pack: nil,
preload: nil,
skin: nil,
supported_locales: data['locales'],
}
end
def pack(data, pack_name, skin)
pack_data = {
use_common: true,
flavour: data['name'],
pack: pack_name,
preload: nil,
skin: nil,
supported_locales: data['locales'],
}
return pack_data unless data['pack'][pack_name].is_a?(Hash)
pack_data[:use_common] = false if data['pack'][pack_name]['use_common'] == false
pack_data[:pack] = nil unless data['pack'][pack_name]['filename']
preloads = data['pack'][pack_name]['preload']
pack_data[:preload] = [preloads] if preloads.is_a?(String)
pack_data[:preload] = preloads if preloads.is_a?(Array)
if skin != 'default' && data['skin'][skin]
pack_data[:skin] = skin if data['skin'][skin].include?(pack_name)
elsif data['pack'][pack_name]['stylesheet']
pack_data[:skin] = 'default'
@current_skin ||= begin
skins = Themes.instance.skins_for(current_flavour)
[current_user&.setting_skin, Setting.skin, 'system', 'default'].find { |skin| skins.include?(skin) }
end
pack_data
end
def resolve_pack(data, pack_name, skin)
return pack(data, pack_name, skin) if valid_pack_data?(data, pack_name)
return if data['name'].blank?
fallbacks = []
if data.key?('fallback')
fallbacks = data['fallback'] if data['fallback'].is_a?(Array)
fallbacks = [data['fallback']] if data['fallback'].is_a?(String)
elsif data['name'] != Setting.default_settings['flavour']
fallbacks = [Setting.default_settings['flavour']]
end
fallbacks.each do |fallback|
return resolve_pack(Themes.instance.flavour(fallback), pack_name, skin) if Themes.instance.flavour(fallback)
end
nil
end
def resolve_pack_with_common(data, pack_name, skin = 'default')
result = resolve_pack(data, pack_name, skin) || nil_pack(data)
result[:common] = resolve_pack(data, 'common', skin) if result.delete(:use_common)
result
def current_theme
# NOTE: this is slightly different from upstream, as it's a derived value used
# for the sole purpose of pointing to the appropriate stylesheet pack
[current_flavour, current_skin]
end
end

View file

@ -7,7 +7,6 @@ module WebAppControllerConcern
vary_by 'Accept, Accept-Language, Cookie'
before_action :redirect_unauthenticated_to_permalinks!
before_action :set_pack
before_action :set_app_body_class
end
@ -37,8 +36,4 @@ module WebAppControllerConcern
end
end
end
def set_pack
use_pack 'home'
end
end

View file

@ -9,15 +9,10 @@ class Disputes::BaseController < ApplicationController
before_action :set_body_classes
before_action :authenticate_user!
before_action :set_pack
before_action :set_cache_headers
private
def set_pack
use_pack 'admin'
end
def set_body_classes
@body_classes = 'admin'
end

View file

@ -6,7 +6,6 @@ class Filters::StatusesController < ApplicationController
before_action :authenticate_user!
before_action :set_filter
before_action :set_status_filters
before_action :set_pack
before_action :set_body_classes
before_action :set_cache_headers
@ -27,10 +26,6 @@ class Filters::StatusesController < ApplicationController
private
def set_pack
use_pack 'admin'
end
def set_filter
@filter = current_account.custom_filters.find(params[:filter_id])
end

View file

@ -5,7 +5,6 @@ class FiltersController < ApplicationController
before_action :authenticate_user!
before_action :set_filter, only: [:edit, :update, :destroy]
before_action :set_pack
before_action :set_body_classes
before_action :set_cache_headers
@ -45,10 +44,6 @@ class FiltersController < ApplicationController
private
def set_pack
use_pack 'settings'
end
def set_filter
@filter = current_account.custom_filters.find(params[:id])
end

View file

@ -6,7 +6,6 @@ class InvitesController < ApplicationController
layout 'admin'
before_action :authenticate_user!
before_action :set_pack
before_action :set_body_classes
before_action :set_cache_headers
@ -40,10 +39,6 @@ class InvitesController < ApplicationController
private
def set_pack
use_pack 'settings'
end
def invites
current_user.invites.order(id: :desc)
end

View file

@ -10,7 +10,6 @@ class MediaController < ApplicationController
before_action :verify_permitted_status!
before_action :check_playable, only: :player
before_action :allow_iframing, only: :player
before_action :set_pack, only: :player
content_security_policy only: :player do |policy|
policy.frame_ancestors(false)
@ -48,8 +47,4 @@ class MediaController < ApplicationController
def allow_iframing
response.headers.delete('X-Frame-Options')
end
def set_pack
use_pack 'public'
end
end

View file

@ -5,7 +5,6 @@ class Oauth::AuthorizationsController < Doorkeeper::AuthorizationsController
before_action :store_current_location
before_action :authenticate_resource_owner!
before_action :set_pack
before_action :set_cache_headers
content_security_policy do |p|
@ -20,10 +19,6 @@ class Oauth::AuthorizationsController < Doorkeeper::AuthorizationsController
store_location_for(:user, request.url)
end
def set_pack
use_pack 'auth'
end
def render_success
if skip_authorization? || (matching_token? && !truthy_param?('force_login'))
redirect_or_render authorize_response

View file

@ -5,7 +5,6 @@ class Oauth::AuthorizedApplicationsController < Doorkeeper::AuthorizedApplicatio
before_action :store_current_location
before_action :authenticate_resource_owner!
before_action :set_pack
before_action :require_not_suspended!, only: :destroy
before_action :set_body_classes
before_action :set_cache_headers
@ -31,10 +30,6 @@ class Oauth::AuthorizedApplicationsController < Doorkeeper::AuthorizedApplicatio
store_location_for(:user, request.url)
end
def set_pack
use_pack 'settings'
end
def require_not_suspended!
forbidden if current_account.unavailable?
end

View file

@ -3,7 +3,6 @@
class Redirect::BaseController < ApplicationController
vary_by 'Accept-Language'
before_action :set_pack
before_action :set_resource
before_action :set_app_body_class
@ -22,8 +21,4 @@ class Redirect::BaseController < ApplicationController
def set_resource
raise NotImplementedError
end
def set_pack
use_pack 'public'
end
end

View file

@ -5,7 +5,6 @@ class RelationshipsController < ApplicationController
before_action :authenticate_user!
before_action :set_accounts, only: :show
before_action :set_pack
before_action :set_relationships, only: :show
before_action :set_body_classes
before_action :set_cache_headers
@ -73,10 +72,6 @@ class RelationshipsController < ApplicationController
@body_classes = 'admin'
end
def set_pack
use_pack 'admin'
end
def set_cache_headers
response.cache_control.replace(private: true, no_store: true)
end

View file

@ -13,7 +13,7 @@ class Settings::ApplicationsController < Settings::BaseController
def new
@application = Doorkeeper::Application.new(
redirect_uri: Doorkeeper.configuration.native_redirect_uri,
scopes: 'read write follow'
scopes: 'read:me'
)
end

View file

@ -1,7 +1,6 @@
# frozen_string_literal: true
class Settings::BaseController < ApplicationController
before_action :set_pack
layout 'admin'
before_action :authenticate_user!
@ -10,10 +9,6 @@ class Settings::BaseController < ApplicationController
private
def set_pack
use_pack 'settings'
end
def set_body_classes
@body_classes = 'admin'
end

View file

@ -38,7 +38,7 @@ class Settings::FeaturedTagsController < Settings::BaseController
end
def set_recently_used_tags
@recently_used_tags = Tag.recently_used(current_account).where.not(id: @featured_tags.map(&:id)).limit(10)
@recently_used_tags = Tag.suggestions_for_account(current_account).limit(10)
end
def featured_tag_params

View file

@ -31,7 +31,7 @@ class Settings::ImportsController < Settings::BaseController
def show; end
def failures
@bulk_import = current_account.bulk_imports.where(state: :finished).find(params[:id])
@bulk_import = current_account.bulk_imports.state_finished.find(params[:id])
respond_to do |format|
format.csv do
@ -92,7 +92,7 @@ class Settings::ImportsController < Settings::BaseController
end
def set_bulk_import
@bulk_import = current_account.bulk_imports.where(state: :unconfirmed).find(params[:id])
@bulk_import = current_account.bulk_imports.state_unconfirmed.find(params[:id])
end
def set_recent_imports

View file

@ -7,10 +7,4 @@ class Settings::LoginActivitiesController < Settings::BaseController
def index
@login_activities = LoginActivity.where(user: current_user).order(id: :desc).page(params[:page])
end
private
def set_pack
use_pack 'settings'
end
end

View file

@ -85,10 +85,6 @@ module Settings
private
def set_pack
use_pack 'auth'
end
def redirect_invalid_otp
flash[:error] = t('webauthn_credentials.otp_required')
redirect_to settings_two_factor_authentication_methods_path

View file

@ -4,17 +4,12 @@ class SharesController < ApplicationController
layout 'modal'
before_action :authenticate_user!
before_action :set_pack
before_action :set_body_classes
def show; end
private
def set_pack
use_pack 'share'
end
def set_body_classes
@body_classes = 'modal-layout compose-standalone'
end

View file

@ -6,7 +6,6 @@ class StatusesCleanupController < ApplicationController
before_action :authenticate_user!
before_action :set_policy
before_action :set_body_classes
before_action :set_pack
before_action :set_cache_headers
def show; end
@ -27,10 +26,6 @@ class StatusesCleanupController < ApplicationController
private
def set_pack
use_pack 'settings'
end
def set_policy
@policy = current_account.statuses_cleanup_policy || current_account.build_statuses_cleanup_policy(enabled: false)
end

View file

@ -41,7 +41,6 @@ class StatusesController < ApplicationController
end
def embed
use_pack 'embed'
return not_found if @status.hidden? || @status.reblog?
expires_in 180, public: true

View file

@ -45,7 +45,7 @@ class TagsController < ApplicationController
end
def set_statuses
@statuses = cache_collection(TagFeed.new(@tag, nil, local: @local).get(limit_param), Status)
@statuses = preload_collection(TagFeed.new(@tag, nil, local: @local).get(limit_param), Status)
end
def limit_param

View file

@ -0,0 +1,23 @@
# frozen_string_literal: true
module WellKnown
class OauthMetadataController < ActionController::Base # rubocop:disable Rails/ApplicationController
include CacheConcern
# Prevent `active_model_serializer`'s `ActionController::Serialization` from calling `current_user`
# and thus re-issuing session cookies
serialization_scope nil
def show
# Due to this document potentially changing between Mastodon versions (as
# new OAuth scopes are added), we don't use expires_in to cache upstream,
# instead just caching in the rails cache:
render_with_cache(
json: ::OauthMetadataPresenter.new,
serializer: ::OauthMetadataSerializer,
content_type: 'application/json',
expires_in: 15.minutes
)
end
end
end

View file

@ -113,6 +113,14 @@ module ApplicationHelper
content_tag(:i, nil, attributes.merge(class: class_names.join(' ')))
end
def material_symbol(icon, attributes = {})
inline_svg_tag(
"400-24px/#{icon}.svg",
class: %w(icon).concat(attributes[:class].to_s.split),
role: :img
)
end
def check_icon
inline_svg_tag 'check.svg'
end
@ -233,6 +241,41 @@ module ApplicationHelper
EmojiFormatter.new(html, custom_emojis, other_options.merge(animate: prefers_autoplay?)).to_s
end
def mascot_url
full_asset_url(instance_presenter.mascot&.file&.url || frontend_asset_path('images/elephant_ui_plane.svg'))
end
def instance_presenter
@instance_presenter ||= InstancePresenter.new
end
def favicon_path(size = '48')
instance_presenter.favicon&.file&.url(size)
end
def app_icon_path(size = '48')
instance_presenter.app_icon&.file&.url(size)
end
# glitch-soc addition to handle the multiple flavors
def preload_locale_pack
supported_locales = Themes.instance.flavour(current_flavour)['locales']
preload_pack_asset "locales/#{current_flavour}/#{I18n.locale}-json.js" if supported_locales.include?(I18n.locale.to_s)
end
def flavoured_javascript_pack_tag(pack_name, **options)
javascript_pack_tag("flavours/#{current_flavour}/#{pack_name}", **options)
end
def flavoured_stylesheet_pack_tag(pack_name, **options)
stylesheet_pack_tag("flavours/#{current_flavour}/#{pack_name}", **options)
end
def preload_signed_in_js_packs
preload_files = Themes.instance.flavour(current_flavour)&.fetch('signed_in_preload', nil) || []
safe_join(preload_files.map { |entry| preload_pack_asset entry })
end
private
def storage_host_var

View file

@ -19,6 +19,6 @@ module BrandingHelper
end
def render_logo
image_pack_tag('logo.svg', alt: 'Mastodon', class: 'logo logo--icon')
image_tag(frontend_asset_path('images/logo.svg'), alt: 'Mastodon', class: 'logo logo--icon')
end
end

View file

@ -49,13 +49,11 @@ module ContextHelper
end
def serialized_context(named_contexts_map, context_extensions_map)
context_array = []
named_contexts = named_contexts_map.keys
context_extensions = context_extensions_map.keys
named_contexts.each do |key|
context_array << NAMED_CONTEXT_MAP[key]
context_array = named_contexts.map do |key|
NAMED_CONTEXT_MAP[key]
end
extensions = context_extensions.each_with_object({}) do |key, h|

View file

@ -1,11 +0,0 @@
# frozen_string_literal: true
module MascotHelper
def mascot_url
full_asset_url(instance_presenter.mascot&.file&.url || frontend_asset_path('images/elephant_ui_plane.svg'))
end
def instance_presenter
@instance_presenter ||= InstancePresenter.new
end
end

View file

@ -14,6 +14,12 @@ module RoutingHelper
end
end
def redirect_asset_url(source)
Request.new(:head, source, follow: false).perform do |res|
res.code == 301 ? res.headers['location'] : source
end
end
def full_asset_url(source, **options)
source = ActionController::Base.helpers.asset_url(source, **options) unless use_storage?

View file

@ -10,11 +10,11 @@ module StatusesHelper
end
end
def media_summary(status)
def attachment_types(status)
attachments = { image: 0, video: 0, audio: 0 }
status.ordered_media_attachments.each do |media|
if media.video?
if media.video? || media.gifv?
attachments[:video] += 1
elsif media.audio?
attachments[:audio] += 1
@ -23,6 +23,12 @@ module StatusesHelper
end
end
attachments
end
def media_summary(status)
attachments = attachment_types(status)
text = attachments.to_a.reject { |_, value| value.zero? }.map { |key, value| I18n.t("statuses.attached.#{key}", count: value) }.join(' · ')
return if text.blank?

View file

@ -0,0 +1,31 @@
# frozen_string_literal: true
module ThemeHelper
def theme_style_tags(flavour_and_skin)
flavour, theme = flavour_and_skin
if theme == 'system'
stylesheet_pack_tag("skins/#{flavour}/mastodon-light", media: 'not all and (prefers-color-scheme: dark)', crossorigin: 'anonymous') +
stylesheet_pack_tag("skins/#{flavour}/default", media: '(prefers-color-scheme: dark)', crossorigin: 'anonymous')
else
stylesheet_pack_tag "skins/#{flavour}/#{theme}", media: 'all', crossorigin: 'anonymous'
end
end
def theme_color_tags(flavour_and_skin)
_, theme = flavour_and_skin
if theme == 'system'
tag.meta(name: 'theme-color', content: Themes::THEME_COLORS[:dark], media: '(prefers-color-scheme: dark)') +
tag.meta(name: 'theme-color', content: Themes::THEME_COLORS[:light], media: '(prefers-color-scheme: light)')
else
tag.meta name: 'theme-color', content: theme_color_for(theme)
end
end
private
def theme_color_for(theme)
theme == 'mastodon-light' ? Themes::THEME_COLORS[:light] : Themes::THEME_COLORS[:dark]
end
end

View file

@ -1,3 +0,0 @@
import 'packs/public-path';
import './settings';
import './two_factor_authentication';

View file

@ -1,6 +0,0 @@
// This file will be loaded on all pages, regardless of theme.
import 'packs/public-path';
import 'font-awesome/css/font-awesome.css';
require.context('../images/', true);

View file

@ -1,41 +0,0 @@
// This file will be loaded on embed pages, regardless of theme.
import 'packs/public-path';
import ready from '../mastodon/ready';
interface SetHeightMessage {
type: 'setHeight';
id: string;
height: number;
}
function isSetHeightMessage(data: unknown): data is SetHeightMessage {
if (
data &&
typeof data === 'object' &&
'type' in data &&
data.type === 'setHeight'
)
return true;
else return false;
}
window.addEventListener('message', (e) => {
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- typings are not correct, it can be null in very rare cases
if (!e.data || !isSetHeightMessage(e.data) || !window.parent) return;
const data = e.data;
ready(() => {
window.parent.postMessage(
{
type: 'setHeight',
id: data.id,
height: document.getElementsByTagName('html')[0].scrollHeight,
},
'*',
);
}).catch((e) => {
console.error('Error in setHeightMessage postMessage', e);
});
});

View file

@ -1,70 +0,0 @@
// This file will be loaded on settings pages, regardless of theme.
import 'packs/public-path';
import Rails from '@rails/ujs';
Rails.delegate(
document,
'#edit_profile input[type=file]',
'change',
({ target }) => {
if (!(target instanceof HTMLInputElement)) return;
const avatar = document.querySelector<HTMLImageElement>(
`img#${target.id}-preview`,
);
if (!avatar) return;
let file: File | undefined;
if (target.files) file = target.files[0];
const url = file ? URL.createObjectURL(file) : avatar.dataset.originalSrc;
if (url) avatar.src = url;
},
);
Rails.delegate(document, '.input-copy input', 'click', ({ target }) => {
if (!(target instanceof HTMLInputElement)) return;
target.focus();
target.select();
target.setSelectionRange(0, target.value.length);
});
Rails.delegate(document, '.input-copy button', 'click', ({ target }) => {
if (!(target instanceof HTMLButtonElement)) return;
const input = target.parentNode?.querySelector<HTMLInputElement>(
'.input-copy__wrapper input',
);
if (!input) return;
const oldReadOnly = input.readOnly;
input.readOnly = false;
input.focus();
input.select();
input.setSelectionRange(0, input.value.length);
try {
if (document.execCommand('copy')) {
input.blur();
const parent = target.parentElement;
if (!parent) return;
parent.classList.add('copied');
setTimeout(() => {
parent.classList.remove('copied');
}, 700);
}
} catch (err) {
console.error(err);
}
input.readOnly = oldReadOnly;
});

View file

@ -1,24 +0,0 @@
# These packs will be loaded on every appropriate page, regardless of
# theme.
pack:
about:
admin: admin.ts
auth: auth.js
common:
filename: common.js
stylesheet: true
embed: embed.ts
error:
home:
inert:
filename: inert.js
stylesheet: true
mailer:
filename: mailer.js
stylesheet: true
modal:
public:
settings: settings.ts
sign_up:
share:
remote_interaction_helper: remote_interaction_helper.ts

View file

@ -1,121 +0,0 @@
import 'packs/public-path';
import * as WebAuthnJSON from '@github/webauthn-json';
import axios from 'axios';
import ready from '../mastodon/ready';
import 'regenerator-runtime/runtime';
function getCSRFToken() {
var CSRFSelector = document.querySelector('meta[name="csrf-token"]');
if (CSRFSelector) {
return CSRFSelector.getAttribute('content');
} else {
return null;
}
}
function hideFlashMessages() {
Array.from(document.getElementsByClassName('flash-message')).forEach(function(flashMessage) {
flashMessage.classList.add('hidden');
});
}
function callback(url, body) {
axios.post(url, JSON.stringify(body), {
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-CSRF-Token': getCSRFToken(),
},
credentials: 'same-origin',
}).then(function(response) {
window.location.replace(response.data.redirect_path);
}).catch(function(error) {
if (error.response.status === 422) {
const errorMessage = document.getElementById('security-key-error-message');
errorMessage.classList.remove('hidden');
console.error(error.response.data.error);
} else {
console.error(error);
}
});
}
ready(() => {
if (!WebAuthnJSON.supported()) {
const unsupported_browser_message = document.getElementById('unsupported-browser-message');
if (unsupported_browser_message) {
unsupported_browser_message.classList.remove('hidden');
document.querySelector('.btn.js-webauthn').disabled = true;
}
}
const webAuthnCredentialRegistrationForm = document.getElementById('new_webauthn_credential');
if (webAuthnCredentialRegistrationForm) {
webAuthnCredentialRegistrationForm.addEventListener('submit', (event) => {
event.preventDefault();
var nickname = event.target.querySelector('input[name="new_webauthn_credential[nickname]"]');
if (nickname.value) {
axios.get('/settings/security_keys/options')
.then((response) => {
const credentialOptions = response.data;
WebAuthnJSON.create({ 'publicKey': credentialOptions }).then((credential) => {
var params = { 'credential': credential, 'nickname': nickname.value };
callback('/settings/security_keys', params);
}).catch((error) => {
const errorMessage = document.getElementById('security-key-error-message');
errorMessage.classList.remove('hidden');
console.error(error);
});
}).catch((error) => {
console.error(error.response.data.error);
});
} else {
nickname.focus();
}
});
}
const webAuthnCredentialAuthenticationForm = document.getElementById('webauthn-form');
if (webAuthnCredentialAuthenticationForm) {
webAuthnCredentialAuthenticationForm.addEventListener('submit', (event) => {
event.preventDefault();
axios.get('sessions/security_key_options')
.then((response) => {
const credentialOptions = response.data;
WebAuthnJSON.get({ 'publicKey': credentialOptions }).then((credential) => {
var params = { 'user': { 'credential': credential } };
callback('sign_in', params);
}).catch((error) => {
const errorMessage = document.getElementById('security-key-error-message');
errorMessage.classList.remove('hidden');
console.error(error);
});
}).catch((error) => {
console.error(error.response.data.error);
});
});
const otpAuthenticationForm = document.getElementById('otp-authentication-form');
const linkToOtp = document.getElementById('link-to-otp');
linkToOtp.addEventListener('click', () => {
webAuthnCredentialAuthenticationForm.classList.add('hidden');
otpAuthenticationForm.classList.remove('hidden');
hideFlashMessages();
});
const linkToWebAuthn = document.getElementById('link-to-webauthn');
linkToWebAuthn.addEventListener('click', () => {
otpAuthenticationForm.classList.add('hidden');
webAuthnCredentialAuthenticationForm.classList.remove('hidden');
hideFlashMessages();
});
}
});

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