Compare commits

...

318 commits

Author SHA1 Message Date
8c9764a026 Merge branch 'main' into bark-prod
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-25 12:10:15 +01:00
32414a51e9 Merge remote-tracking branch 'upstream/main'
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-25 11:42:07 +01:00
Eugen Rochko
8e7e86ee35
Add ability to reorder uploaded media before posting in web UI (#28456) 2024-03-25 10:29:55 +00:00
Renaud Chaput
6c381f20b1
Restore advanced filter bar setting (#29737) 2024-03-24 14:17:06 +00:00
Claire
81a04ac25c
Improve specs for severed relationships (#29688) 2024-03-22 16:25:36 +00:00
Claire
37ca59815c
Remove setting for unfollow confirmation modal, and make it unconditional (#29373) 2024-03-22 16:24:04 +00:00
renovate[bot]
119c7aa0df
Update dependency rails-i18n to v7.0.9 (#29564)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-22 16:22:52 +00:00
Claire
58376eedda
Remove obsolete admin and moderator columns from users table (#29718) 2024-03-22 16:22:36 +00:00
Claire
d71d26a3c9
Reattribute notification-related records if possible when merging accounts (#29694) 2024-03-22 16:21:53 +00:00
Claire
de6c9e0fcd
Change new modals to allow vertical scrolling (#29644) 2024-03-22 16:21:50 +00:00
Claire
387c78ddf9
Change icon of severed relationships notifications (#29712) 2024-03-22 15:45:04 +00:00
Claire
dfa43707eb
Change AccountRelationshipSeveranceEvent model to store lost followers and following counts separately (#29714) 2024-03-22 15:44:31 +00:00
Matt Jankowski
34f293475e
Fix results/query in api/v1/featured_tags/suggestions (#29597) 2024-03-22 15:08:27 +00:00
github-actions[bot]
5db5fa879b
New Crowdin Translations (automated) (#29708)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-22 14:50:03 +00:00
Matt Jankowski
8c1d29df7e
Use has_many through instead of delegate for ARSE<>SR (#29672) 2024-03-22 14:43:35 +00:00
Renaud Chaput
ec1e770fea
Add the role ID to the badge component (#29707) 2024-03-22 11:59:35 +00:00
Claire
05eda8d193
Remove severed relationship notifications for single account suspensions (#29700) 2024-03-21 21:53:24 +00:00
Claire
70a8fcf07d
Fix notification policy migration not preserving filter_private_mentions correctly (#29699) 2024-03-21 21:52:29 +00:00
Matt Jankowski
142c018cfa
Add ruby 3.3 to CI test matrix (#29705) 2024-03-21 21:48:41 +00:00
renovate[bot]
ec6d016da1
Update dependency ox to v2.14.18 (#29701)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 18:09:45 +00:00
renovate[bot]
7f5e930bd2
Update dependency strong_migrations to v1.8.0 (#29556)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 18:09:26 +00:00
renovate[bot]
f5444c8fe4
Update dependency rspec-rails to v6.1.2 (#29691)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 18:06:32 +00:00
renovate[bot]
05abefe989
Update RuboCop (non-major) to v1.62.1 (#29692)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 17:39:27 +00:00
Claire
814a48517f
Add some more tests for notification policies (#29698) 2024-03-21 16:46:38 +00:00
Matt Jankowski
a59f5694fe
Add empty line after magic frozen string comment (#29696) 2024-03-21 14:12:50 +00:00
Claire
75f34b80a8
Clean up notification requests when deleting accounts (#29693) 2024-03-21 14:12:26 +00:00
renovate[bot]
1df00d4e76
Update dependency pino-pretty to v11 (#29662)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 10:46:14 +00:00
renovate[bot]
2ec3fcaffe
Update dependency rack to v2.2.9 (#29685)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 10:43:37 +00:00
renovate[bot]
a506b09de0
Update dependency @reduxjs/toolkit to v2.2.2 (#29681)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 10:41:47 +00:00
renovate[bot]
1feb228275
Update dependency express to v4.19.1 (#29663)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 10:40:38 +00:00
Nick Schonning
d13cdced1e
Add Renovate grouped updates for RSpec and RuboCop (#29621) 2024-03-21 10:35:12 +00:00
Claire
885d0faf83
Fix duplicate translation string for severed relationships (#29689) 2024-03-21 10:06:21 +00:00
github-actions[bot]
c007dd5dd2
New Crowdin Translations (automated) (#29687)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-21 09:57:45 +00:00
Matt Jankowski
77897cd24c
Use existing SeveredRelationship.about_local_account scope in more places (#29673) 2024-03-21 08:36:49 +00:00
Matt Jankowski
718ee72c80
Use db_table_exists? method in new cli/maintenance area (#29677) 2024-03-21 08:32:40 +00:00
Matt Jankowski
cdd168f5d3
Update enum away from deprecated (#29678) 2024-03-21 08:32:35 +00:00
renovate[bot]
01464074c9
Update dependency autoprefixer to v10.4.19 (#29682)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 08:32:31 +00:00
renovate[bot]
3f363c61bc
Update dependency postcss to v8.4.38 (#29684)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-21 08:32:25 +00:00
Claire
7434c9c276
Fix the relationships controller spec, since it requires an extra model now (#29671) 2024-03-21 08:28:37 +00:00
Matt Jankowski
39bac24cb7
Remove reference to deleted haml lint todo file (#29675) 2024-03-20 22:12:11 +00:00
Matt Jankowski
62722238c9
Lock i18n gem to version 1.14.1 (#29674) 2024-03-20 22:10:50 +00:00
Eugen Rochko
be52633ee4
Change back button to always appear in advanced web UI (#29669) 2024-03-20 17:21:03 +00:00
Claire
f4d753aedf
Fix error in severed relationship event serializer (#29670) 2024-03-20 17:14:53 +00:00
Claire
98a2bb8be2
Fix issue with severed relationships notifications (#29668) 2024-03-20 17:02:09 +00:00
Claire
954b470fbc
Fix error when attempting to delete posts that triggered a notification request (#29666) 2024-03-20 16:48:24 +00:00
Claire
d4449cc682
Fix account_relationship_severance_events unique indexes (#29665) 2024-03-20 16:08:34 +00:00
renovate[bot]
99c9db5f67
Update babel monorepo to v7.24.3 (#29660)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-20 15:48:24 +00:00
renovate[bot]
27a6fa7b0e
Update dependency cssnano to v6.1.1 (#29661)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-20 15:44:36 +00:00
Claire
44bf7b8128
Add notifications of severed relationships (#27511) 2024-03-20 15:37:21 +00:00
Claire
8a1423a474
Allow unblocking email addresses from any matching account (#29305) 2024-03-20 14:38:00 +00:00
Matt Jankowski
0a33be39c1
Reduce LineLength for react_admin_component helpers (#29650) 2024-03-20 13:45:34 +00:00
Claire
3211e960ac
Fix “Explore” icon in navigation bar not being filled when selected (#29649) 2024-03-20 13:31:31 +00:00
Claire
50fd94f481
Fix blockquote color in reply indicator (#29659) 2024-03-20 11:20:23 +00:00
Claire
a68dd889fe
Add back support for old browsers (#29654) 2024-03-20 11:07:10 +00:00
Claire
94f7ae192b
Fix emoji picker placement on limited-height viewports (#29651) 2024-03-20 11:07:02 +00:00
Claire
e36e7ea243
Fix emoji picker dropdown background and borders (#29653) 2024-03-20 11:06:50 +00:00
Claire
a583317df6
Fix icon and styling in browser notifications banner (#29658) 2024-03-20 11:06:44 +00:00
github-actions[bot]
6c0b1a41a1
New Crowdin Translations (automated) (#29657)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-20 08:39:42 +00:00
renovate[bot]
5f1380415f
Update dependency postcss to v8.4.37 (#29656)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-20 08:19:08 +00:00
Matt Jankowski
4c84891453
Pull out full li element into admin/status_edits/status_edit partial (#29499) 2024-03-19 16:11:10 +00:00
Claire
ffc5be4820
Change filtered icon from “archive” to “inventory 2” (#29652) 2024-03-19 15:39:26 +00:00
Matt Jankowski
62e266fbd6
Add BrowserDetection model concern (#29513) 2024-03-19 15:39:14 +00:00
Matt Jankowski
d7ab5655ef
Replace render_symbol method with inline_svg_tag usage (#29647) 2024-03-19 14:17:18 +00:00
Claire
bc6f9befde
Change “Notifications” settings page to “E-mail notifications” (#29646) 2024-03-19 13:40:16 +00:00
Claire
bd06963c16
Slightly increase font weight of favorite/boost numbers in detailed statuses (#29648) 2024-03-19 13:39:30 +00:00
renovate[bot]
42cdd0c095
Update babel monorepo to v7.24.1 (#29645)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-19 13:00:39 +00:00
95a990fb6d Merge remote-tracking branch 'upstream/main'
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-19 13:41:44 +01:00
renovate[bot]
caee5e4d6a
Update dependency core-js to v3.36.1 (#29642)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-19 09:11:38 +00:00
Matt Jankowski
6c68c3c0ce
Introduce inline_svg gem, minimal usage, prep for material design icons (#29612) 2024-03-19 09:03:15 +00:00
github-actions[bot]
4e61bce4e9
New Crowdin Translations (automated) (#29641)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-19 08:36:52 +00:00
Matt Jankowski
72e1162eb3
Flatten olm section of context helper extension map (#29638) 2024-03-19 08:22:46 +00:00
Claire
cf08a438e7
Add badge on account card in report moderation interface when account is already suspended (#29592) 2024-03-19 08:20:53 +00:00
Jeong Arm
39839baec3
Fix mute for 30 days (#29640) 2024-03-19 08:18:14 +00:00
renovate[bot]
4ce714adea
Update dependency irb to v1.12.0 (#29519)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 14:09:18 +00:00
Matt Jankowski
6d2986017e
Remove unused active_nav_class helper method (#29617) 2024-03-18 13:24:59 +00:00
Claire
d5063072c3
Revert friends-of-friends follow recommendation query to using a CTE (#29619) 2024-03-18 12:57:21 +00:00
Matt Jankowski
b5115850bb
Move repeated insert_pagination_headers method to api base class (#29606) 2024-03-18 10:11:53 +00:00
renovate[bot]
58ce0002cd
Update dependency typescript to v5.4.2 (#29632)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 10:00:29 +00:00
renovate[bot]
7f17162242
Update dependency cssnano to v6.1.0 (#29514)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 10:00:13 +00:00
renovate[bot]
0dd1c772a8
Update dependency cocoon-js-vanilla to v1.5.1 (#29461)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 09:59:45 +00:00
renovate[bot]
6ebb971aad
Update dependency async-mutex to ^0.5.0 (#29552)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 09:59:31 +00:00
Claire
9142805ca8
Remove deprecated @types/… packages (#29633) 2024-03-18 09:58:28 +00:00
renovate[bot]
a732ef21b0
Update dependency json-schema to v4.2.0 (#29604)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 09:37:33 +00:00
renovate[bot]
1164c7005e
Update dependency http-link-header to v1.1.3 (#29625)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 09:33:54 +00:00
Matt Jankowski
f279ff3bd6
Update rspec-* gems (#29616) 2024-03-18 09:19:38 +00:00
renovate[bot]
307efe41c6
Update dependency axios to v1.6.8 (#29613)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 09:15:03 +00:00
Matt Jankowski
92855948a0
Remove unused show_landing_strip? helper method (#29618) 2024-03-18 08:55:54 +00:00
Matt Jankowski
ecdbf15ebe
Remove unused link_to_older and link_to_newer helper methods (#29620) 2024-03-18 08:54:46 +00:00
renovate[bot]
97a229d5f4
Update dependency nokogiri to v1.16.3 (#29622)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 08:53:29 +00:00
renovate[bot]
a0fcac9652
Update dependency postcss to v8.4.36 (#29628)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 08:49:34 +00:00
renovate[bot]
2f653174b1
Update libretranslate/libretranslate Docker tag to v1.5.6 (#29629)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 08:49:18 +00:00
renovate[bot]
cf7d412367
Update peter-evans/create-pull-request action to v6.0.2 (#29630)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 08:48:37 +00:00
renovate[bot]
5d3d525d0e
Update DefinitelyTyped types (non-major) (#29631)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-18 08:48:13 +00:00
github-actions[bot]
04817e965a
New Crowdin Translations (automated) (#29623)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-18 08:47:48 +00:00
Claire
82c2af0356
Fix user_mailer.welcome.hashtags_recent_count not having plural form (#29607) 2024-03-16 16:38:20 +00:00
Claire
726e7ad024
Fix extra separator besides favourite count on private posts (#29605) 2024-03-16 01:11:59 +00:00
Claire
d702a03a0c
Add “Learn more” on block modal to inform of federation caveats (#29614) 2024-03-15 19:09:21 +00:00
Eugen Rochko
ec19d0a14b
Change mute, block and domain block confirmations in web UI (#29576) 2024-03-15 17:36:41 +00:00
Claire
be7a68b095
Change Explore icon to compass in advanced interface (#29610) 2024-03-15 16:06:48 +00:00
Matt Jankowski
4f4132f1a1
Add diagnostic message for failure during CLI search deploy (#29462) 2024-03-15 14:26:23 +00:00
Renaud Chaput
c76ae7a5c0
Convert packs/public.jsx to Typescript (#29501) 2024-03-15 13:16:45 +00:00
Eugen Rochko
407287573c
Add domain information to profiles in web UI (#29602)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-03-15 13:08:38 +00:00
renovate[bot]
52200b6bbf
Update dependency sass to v1.72.0 (#29586)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-15 11:41:55 +00:00
Matt Jankowski
f445d33fd6
Fix haml-lint LineLength cops in app/views/admin (#28680) 2024-03-15 11:19:00 +00:00
Matt Jankowski
7720c684c5
Move common module inclusion in sub classes to ActivityPub::BaseController (#29560) 2024-03-15 10:40:21 +00:00
Matt Jankowski
2e91a9bd34
Add include_pagination_headers matcher to check Link header in api specs (#29596) 2024-03-15 10:17:45 +00:00
ffae506e12 Merge remote-tracking branch 'upstream/main'
Some checks reported errors
continuous-integration/drone/push Build was killed
continuous-integration/drone Build is passing
2024-03-15 11:06:28 +01:00
github-actions[bot]
6865fda593
New Crowdin Translations (automated) (#29603)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-15 10:02:10 +00:00
Matt Jankowski
e75b55a6d7
Extract target account on list method in bulk import row service spec (#29601) 2024-03-15 09:31:25 +00:00
Matt Jankowski
838b0bdf2d
Remove unused Account::Interactions#endorsed? method (#29463) 2024-03-15 09:00:26 +00:00
Matt Jankowski
d39d625561
Use inclusive range in ActivityTracker#get (#29413) 2024-03-14 21:21:01 +00:00
Matt Jankowski
df6086d402
Extract file size sql calc from media storage cli (#29577) 2024-03-14 15:22:52 +00:00
Matt Jankowski
6c3e718b86
Remove setting of sensitive value (default false, not null) in Status model (#29589) 2024-03-14 13:56:59 +00:00
Matt Jankowski
974c7672e5
Extract shared behavior methods in oauth feature spec (#28360) 2024-03-14 13:42:59 +00:00
Matt Jankowski
14aa7f1e15
Use Account.activitypub generated scope (#28157) 2024-03-14 13:19:20 +00:00
Matt Jankowski
049d9171eb
Use with_options for shared option in accounts#show routing block (#28914) 2024-03-14 10:03:38 +00:00
Eugen Rochko
30483d618f
Fix back button appearing in column header unexpectedly in web UI (#29551) 2024-03-14 10:01:55 +00:00
Claire
95a5713ff7
Fix accounts not getting imported into redux store for some filtered notification types (#29588) 2024-03-14 09:34:36 +00:00
Matt Jankowski
0bc17a3d48
Use enum-generated public_visibility scope on Status (#28156) 2024-03-14 09:31:57 +00:00
Matt Jankowski
19cbadfbd6
Use enum-generated scope for IpBlock in CLI (#28144) 2024-03-14 09:31:15 +00:00
Matt Jankowski
681a89f684
Readability clean up in ImportVacuum spec (#28955) 2024-03-14 09:24:00 +00:00
Matt Jankowski
79e7590578
Clean up activitypub module route scope near instance actor (#29579) 2024-03-14 09:18:46 +00:00
Matt Jankowski
65e8349980
Clean up activitypub module route scope near collections/boxes (#29580) 2024-03-14 09:18:41 +00:00
Matt Jankowski
18ffd4d925
Add module instances route scope in api routes (#29581) 2024-03-14 09:18:36 +00:00
Matt Jankowski
01ecc80118
Add module accounts route scope in api routes (#29582) 2024-03-14 09:18:31 +00:00
Eugen Rochko
4991198b70
Change design of metadata underneath posts in web UI (#29585) 2024-03-14 09:18:24 +00:00
Matt Jankowski
f9100743ec
Add Api::ErrorHandling concern for api/base controller (#29574) 2024-03-14 09:09:47 +00:00
Eugen Rochko
1e1d97a787
Fix wrong background color on search results in web UI (#29584) 2024-03-14 09:07:29 +00:00
github-actions[bot]
5aea35de13
New Crowdin Translations (automated) (#29587)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-14 09:00:42 +00:00
Matt Jankowski
42875fee52
Add coverage for bad args/options in CLI::Domains#purge (#29578) 2024-03-14 08:58:53 +00:00
mogaminsk
3156d04ec1
Use sender's username to column title in notification request if it's display_name is not set (#29575) 2024-03-14 08:58:44 +00:00
Claire
a32a126cac
Hide media by default in notification requests (#29572) 2024-03-13 16:47:48 +00:00
Matt Jankowski
71e5f0f48c
Add coverage for suspended instance actor scenario (#29571) 2024-03-13 15:43:40 +00:00
Matt Jankowski
6262ceeb70
Fix RSpec/DescribedClass cop (#29472) 2024-03-13 15:42:39 +00:00
Matt Jankowski
c09b8a7164
Add Account.without_internal scope (#29559)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-03-13 14:11:23 +00:00
Renaud Chaput
acf3f410ae
Fix navigation panel icons missing classes (#29569) 2024-03-13 12:54:50 +00:00
github-actions[bot]
171948b910
New Crowdin Translations (automated) (#29563)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-13 12:42:44 +00:00
Erik Uden
268856d5d9
Fix toggle button color for light (and dark/default) theme (#29553) 2024-03-13 11:45:20 +00:00
Claire
b43eaa4517
Refactor notification filtering behavior definition (#29567) 2024-03-13 10:35:49 +00:00
Claire
27fd084cb5
Exempt some notification types from notification filtering (#29565) 2024-03-13 10:17:55 +00:00
Matt Jankowski
46e902f1f3
Merge api/v1/accounts/credentials controller spec into existing request spec (#29006) 2024-03-13 09:22:43 +00:00
Matt Jankowski
2c0441acd7
Use rails built-in tag methods in TextFormatter.shortened_link (#28976) 2024-03-13 09:19:54 +00:00
Matt Jankowski
7e6eb64f1e
Use full snowflake range in admin/metrics classes (#29416) 2024-03-13 08:56:37 +00:00
Matt Jankowski
9754967d5f
Move pagination_max_id and pagination_since_id into api/base controller (#28844) 2024-03-13 08:51:44 +00:00
Matt Jankowski
01b624c4a0
Use normalizes on CustomFilter#context value (#27602) 2024-03-13 08:50:21 +00:00
Matt Jankowski
71eecbfa1f
Move api/v2/filters/* to request spec (#28956) 2024-03-13 08:47:09 +00:00
Matt Jankowski
8349b45d60
Accept extra args that we wont verify in ap/activity/add_spec (#29005) 2024-03-13 08:46:11 +00:00
Matt Jankowski
469028b6d3
Remove unneeded type: :service from spec/services files (#29304) 2024-03-13 08:39:26 +00:00
Matt Jankowski
3eaac3af73
Use before_all block to setup requests/cache_spec data (#29437) 2024-03-13 08:38:57 +00:00
Matt Jankowski
19f0590795
Add basic coverage for TagSearchService class (#29319) 2024-03-13 08:33:03 +00:00
Matt Jankowski
96013cd576
Reduce RSpec/ExampleLength in CSP request spec (#29104) 2024-03-13 08:22:32 +00:00
Matt Jankowski
00d94f3ffa
Use vanilla JS to get Rails CSRF values (#29403) 2024-03-12 17:10:37 +00:00
Matt Jankowski
d4ed7e466c
Extract by_domain_length scope in DomainNormalizable concern (#29517) 2024-03-12 13:09:11 +00:00
2ed4a45528 Merge remote-tracking branch 'upstream/main'
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-12 13:34:44 +01:00
Eugen Rochko
5b60d4b696
Change background color in web UI (#29522) 2024-03-12 09:51:30 +00:00
Renaud Chaput
af4e44e30a
Fix i18n typo (#29557) 2024-03-12 09:42:51 +00:00
cuithon
0ba9f58e17
chore: fix some typos (#29555)
Signed-off-by: cuithon <dscs@outlook.com>
2024-03-12 09:40:29 +00:00
github-actions[bot]
dc36b961aa
New Crowdin Translations (automated) (#29554)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-12 09:03:51 +00:00
Matt Jankowski
216cea1e27
Fix incorrect frequency value in FriendsOfFriendsSource data (#29550) 2024-03-12 08:38:32 +00:00
Matt Jankowski
24319836de
Convert request-based setup into factory setup in push/subscriptions request spec (#29489) 2024-03-11 15:46:25 +00:00
Matt Jankowski
a38e424185
Use unchanging github links in docs/comments (#29545) 2024-03-11 15:14:55 +00:00
Eugen Rochko
c10bbf5fe3
Add notification policies and notification requests in web UI (#29433) 2024-03-11 15:02:21 +00:00
Eugen Rochko
19efa1b9f1
Change action button to be last on profiles in web UI (#29533) 2024-03-11 14:33:48 +00:00
Eugen Rochko
16c856729b
Change icons in navigation panel to be filled when active in web UI (#29537) 2024-03-11 13:35:23 +00:00
Jeong Arm
4a6ddbc9c0
Normalize idna domain before account unblock domain (#29530) 2024-03-11 09:28:08 +00:00
Matt Jankowski
a7284690fc
Add coverage for admin/metrics base classes, simplify subclass generation (#29527) 2024-03-11 09:16:19 +00:00
Renaud Chaput
b9722dfe2b
Use the server setting to get the max number of poll options in UI (#29490) 2024-03-11 09:13:35 +00:00
renovate[bot]
6984f94044
Update dependency autoprefixer to v10.4.18 (#29475)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-11 09:05:07 +00:00
Eugen Rochko
2347ea813e
Change dropdown menu icon to not be replaced by close icon when open in web UI (#29532) 2024-03-11 08:57:23 +00:00
Eugen Rochko
5b3a8737d6
Add hints for rules (#29539) 2024-03-11 08:57:07 +00:00
Matt Jankowski
98ef38e34e
Ensure unique values in fabricators (#29515) 2024-03-11 08:53:24 +00:00
renovate[bot]
6f8ec6d7f8
Update dependency test-prof to v1.3.2 (#29528)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-11 08:50:54 +00:00
renovate[bot]
7b89d6842e
Update DefinitelyTyped types (non-major) (#29543)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-11 08:49:07 +00:00
renovate[bot]
df3798a6fa
Update dependency eslint-plugin-jsdoc to v48.2.1 (#29544)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-11 08:49:04 +00:00
github-actions[bot]
f85168b189
New Crowdin Translations (automated) (#29467)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-03-11 07:37:04 +00:00
gunchleoc
81400b02b1
Add nds locale to posting languages (#27434) 2024-03-10 10:25:13 +00:00
Eugen Rochko
e85a2aa18d
Fix interaction settings migration error when encountering no settings (#29529) 2024-03-08 09:10:07 +00:00
renovate[bot]
e8605a69d2
Update omniauth packages (#25306)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Renaud Chaput <renchap@gmail.com>
2024-03-07 18:02:24 +00:00
renovate[bot]
509528e2dc
Update dependency pg to v1.5.6 (#29477)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-07 17:33:54 +00:00
Eugen Rochko
50b17f7e10
Add notification policies and notification requests (#29366) 2024-03-07 14:53:37 +00:00
Renaud Chaput
653ce43abe
Update json-jwt gem to fix CVE-2023-51774 (#29520) 2024-03-07 11:11:14 +00:00
gunchleoc
c01f4cebed
Add Mohawk to posting languages (#27115) 2024-03-07 11:04:31 +00:00
gunchleoc
995e15c24a
Add Jawi Malay to posting languages (#29098) 2024-03-07 11:03:41 +00:00
Mashiro
b8bd94ca8e
Fix unhandled nullable attachments limitation counter (#29183) 2024-03-06 12:53:54 +00:00
renovate[bot]
f89512fbed
Update dependency rack-cors to v2.0.2 [SECURITY] (#29507)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 15:09:52 +01:00
renovate[bot]
7265d47342
Update peter-evans/create-pull-request action to v6.0.1 (#29503)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 09:42:49 +00:00
renovate[bot]
4c138ee4eb
Update DefinitelyTyped types (non-major) (#29502)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 09:42:26 +00:00
renovate[bot]
cb0f3ecc28
Update eslint (non-major) (#29505)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 09:41:31 +00:00
renovate[bot]
0f7f257139
Update Yarn to v4.1.1 (#29508)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-05 09:39:12 +00:00
2cc89b04b4 Merge remote-tracking branch 'upstream/main'
All checks were successful
continuous-integration/drone/push Build is passing
2024-03-04 13:53:47 +01:00
Claire
ee8d0b9447
Fix follow suggestions potentially including silenced or blocked accounts (#29306) 2024-03-04 06:35:20 +00:00
renovate[bot]
68600893d2
Update babel monorepo to v7.24.0 (#29434)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-03-02 18:33:33 +00:00
Matt Jankowski
64b8ba36bb
Add bin/dev script to launch foreman (#28242) 2024-03-02 18:31:43 +00:00
Dave MacLeod
b6b94c971f
Add Interlingue to available_locales (#28630) 2024-03-01 17:51:22 +00:00
gunchleoc
1d5de8b26a
Add Vai to posting languages (#27136) 2024-03-01 17:41:49 +00:00
gunchleoc
5ab944af95
Rename Panjabi to Punjabi (#27117) 2024-03-01 17:40:48 +00:00
Helge
8d22599318
Add Pennsylvania Dutch to languages dropdown (#26634) 2024-03-01 17:36:00 +00:00
Krzysztof Piwowar
b4af3639e8
Add Kashubian to languages dropdown (#26024) 2024-03-01 17:35:35 +00:00
Matt Jankowski
18945f62e0
Convert more API specs from controller->request style (#29004) 2024-03-01 16:24:45 +00:00
Daniel M Brasil
a25014de8f
Improve IpBlock model test coverage (#29460) 2024-03-01 16:17:40 +00:00
Claire
1d721b21e1
Add attribution to Tabler.io icons used in the new mailer designs (#29470) 2024-03-01 14:51:01 +00:00
HTeuMeuLeu
934cab7508
New welcome email (#28883)
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
2024-03-01 12:16:53 +00:00
Matt Jankowski
3389c41b58
Move nobody position in UserRole magic number to constant (#29465) 2024-03-01 11:05:24 +00:00
Claire
ec953bf378
Fix regression in handling select elements in packs/admin.tsx (#29469) 2024-03-01 10:16:35 +00:00
Matt Jankowski
b9940eb977
Disable codecov comments on PRs (#29464) 2024-02-29 23:25:04 +00:00
Renaud Chaput
958a810553
Convert packs/admin.jsx to Typescript (#29425) 2024-02-29 15:21:03 +00:00
renovate[bot]
6dfe318f34
Update dependency express to v4.18.3 (#29458)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-29 15:20:39 +00:00
Matt Jankowski
eb1b8f69de
Allow pagination Link headers on API accounts/statuses when pinned true (#29442) 2024-02-29 14:21:56 +00:00
Claire
edd6aa70e1
Fix regression with search bar icon position (#29456) 2024-02-29 13:54:06 +00:00
Claire
f24c62a5c8
Fix preview card player getting embedded when clicking on the external link button (#29457) 2024-02-29 13:54:02 +00:00
Matt Jankowski
6675bf574a
Extract parsed_uri_query_values helper in ap/replies controller spec (#29410) 2024-02-29 13:47:38 +00:00
Matt Jankowski
e1fcb02867
Align TagServersMeasure to use WITH query style similar to others (#29435) 2024-02-29 11:00:58 +00:00
Matt Jankowski
14c65180df
Use sequence in software_update fabricator to allow multiple (#29438) 2024-02-29 10:51:11 +00:00
Renaud Chaput
4185f3792c
Fix full date display not respecting the locale 12/24h format (#29448) 2024-02-29 09:40:13 +00:00
github-actions[bot]
cdf5098166
New Crowdin Translations (automated) (#29452)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-02-29 09:38:33 +00:00
github-actions[bot]
7f84bbfd92
New Crowdin Translations (automated) (#29430)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-02-28 12:14:42 +00:00
Jeong Arm
deffb8ecb6
Show comments in the admin/instances page (#29240)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-02-28 12:07:06 +00:00
Roni Laukkarinen
edfc53856f
Fix the regression with the search icon position (#29417) 2024-02-28 12:01:18 +00:00
Matt Jankowski
8f3c91fc3c
Add change block expectation to admin/invites#deactivate_all spec (#29412) 2024-02-27 16:25:58 +00:00
Matt Jankowski
ea8e7f3e9d
Align TagServersMeasure query style with other classes (#29414) 2024-02-27 16:25:12 +00:00
Renaud Chaput
3b31447408
Rework Prettier invocation (#28851) 2024-02-27 16:09:27 +00:00
renovate[bot]
dc4427dc9b
Update devDependencies (non-major) (#29089)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Renaud Chaput <renchap@gmail.com>
2024-02-27 16:07:43 +00:00
Renaud Chaput
899eac1a92
Use modern ES syntax rather than .call (#29368) 2024-02-27 15:42:05 +00:00
Claire
6f7615ba86
Add basic end-to-end test for admin moderation interface (#29424) 2024-02-27 15:18:06 +00:00
Renaud Chaput
036f5a05e3
Convert the streaming server to ESM (#29389)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-02-27 14:59:20 +00:00
github-actions[bot]
bc4c5ed918
New Crowdin Translations (automated) (#29423)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-02-27 14:53:53 +00:00
Matt Jankowski
76d256138e
Wrap media attachment size calculation in COALESCE (#29415) 2024-02-27 11:52:37 +00:00
Matt Jankowski
9e78129e6e
Use "cacheable response" shared example in more places (#29419) 2024-02-27 11:50:21 +00:00
renovate[bot]
54e3a82f1d
Update dependency thor to v1.3.1 (#29421)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-27 11:48:42 +00:00
Claire
90573c3abb
Change behavior of privacy dropdown to only change value on validation (#29406) 2024-02-27 11:41:19 +00:00
Matt Jankowski
9fa7338b6e
Use github reporter on haml-lint runs on CI (#29375) 2024-02-27 10:48:38 +00:00
Evan Paterakis
213c87ae59
Fix filters title and keywords overflow (#29396) 2024-02-27 10:46:58 +00:00
zunda
a30cdfd4d4
Specify 410 for code when responding as json while self-destruction (#29420) 2024-02-26 22:43:07 +00:00
Matt Jankowski
8156113d58
Use response_vary_headers method in requests/cache_spec (#29411) 2024-02-26 16:27:07 +00:00
Damien Mathieu
1540f42522
Better tests for auth/registrations#update (#29303) 2024-02-26 16:09:56 +00:00
Wolfgang Fournès
d51c3ac087
Add a missing spec to SessionsController#webauthn_options (#29277) 2024-02-26 16:09:40 +00:00
Matt Jankowski
c7555271a6
Remove unused media-spoiler-* JS/CSS (#29407) 2024-02-26 15:30:58 +00:00
Roni Laukkarinen
10fdd88288
Change new explore compass icon CSS class to explore (#29395) 2024-02-26 15:28:38 +00:00
Matt Jankowski
8429d07454
Add RankedTrend concern for trends classes (#29388) 2024-02-26 13:45:39 +00:00
github-actions[bot]
98e3dc2578
New Crowdin Translations (automated) (#29382)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-02-26 13:03:06 +00:00
renovate[bot]
b829d261ba
Update DefinitelyTyped types (non-major) (#29404)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-26 12:52:03 +00:00
renovate[bot]
e57d321097
Update dependency httplog to v1.6.3 (#29399)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-26 12:51:37 +00:00
Jason Punyon
1ad3cffaea
Missed a .to_date (#29390) 2024-02-26 12:42:09 +00:00
renovate[bot]
8fd8b30c24
Update dependency cssnano to v6.0.5 (#29385)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-26 12:41:34 +00:00
Roni Laukkarinen
1cb74eeec0
Fix search icon position on mobile (#29384) 2024-02-26 00:57:48 +00:00
Roni Laukkarinen
bbf6cb66f6
Improve alt text form accessibility with long texts (#27095) 2024-02-26 00:57:13 +00:00
Paolo Melchiorre
aca691726b
Fix #21492 Add missing WebP hint in avatar/header localizations (#22395) 2024-02-23 22:10:46 +00:00
Claire
cfa71a4d16
Fix admin account created by mastodon:setup not being auto-approved (#29379) 2024-02-23 19:04:57 +00:00
Claire
25ffe0af45
Fix pixel alignment for some composer icons (#29372) 2024-02-23 15:32:13 +00:00
github-actions[bot]
bba4118ddd
New Crowdin Translations (automated) (#29369)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-02-23 15:21:02 +00:00
Matt Jankowski
b0064ddda7
Add basic coverage for MoveService class (#29301) 2024-02-23 09:59:29 +00:00
renovate[bot]
baa23738a8
Update dependency webmock to v3.22.0 (#29313)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-23 09:57:26 +00:00
Matt Jankowski
45f71e3954
Update @rails/ujs to version 7.1.3-2 (#29359) 2024-02-22 21:35:14 +00:00
renovate[bot]
82e2370f5f
Update dependency cssnano to v6.0.4 (#29367)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-22 21:34:08 +00:00
Matt Jankowski
a6ed148769
Use heredoc on the HTML blocks in verify link spec (#29365) 2024-02-22 21:26:48 +00:00
Claire
9d8dfeb5fb
Fix processing of Link objects in Image objects (#29335) 2024-02-22 22:27:24 +01:00
Claire
5152dd869e
Fix link verifications when page size exceeds 1MB (#29358) 2024-02-22 17:31:50 +00:00
Claire
a9496882fc
Fix auto-close email being sent to users with devops permissions instead of settings permissions (#29355) 2024-02-22 14:52:14 +00:00
Claire
b71904816a
Change registrations to be disabled by default for new servers (#29280) 2024-02-22 13:28:19 +00:00
Emelia Smith
491dd97642
Streaming: refactor to custom Error classes (#28632)
Co-authored-by: Renaud Chaput <renchap@gmail.com>
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
2024-02-22 13:20:20 +00:00
renovate[bot]
ebe2086087
Update dependency haml_lint to v0.57.0 (#29181)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-22 11:26:48 +00:00
Matt Jankowski
e9b0f0c314
Add basic coverage for RemoveDomainsFromFollowersService class (#29327) 2024-02-22 10:53:38 +00:00
Matt Jankowski
7c7dfe7de3
Add basic coverage for RemoveFeaturedTagService class (#29328) 2024-02-22 10:51:04 +00:00
Matt Jankowski
6342ddd698
Add basic coverage for UnfavouriteService class (#29329) 2024-02-22 10:48:42 +00:00
Matt Jankowski
f70905f127
Add basic coverage for UnmuteService class (#29330) 2024-02-22 10:48:09 +00:00
Matt Jankowski
a69fe534e3
Add basic coverage for WebhookService class (#29331) 2024-02-22 10:46:20 +00:00
Matt Jankowski
d1602c017d
Add basic coverage for ApproveAppealService class (#29333) 2024-02-22 10:40:07 +00:00
Matt Jankowski
ab2ef63a03
Add basic coverage for VoteService class (#29334) 2024-02-22 10:39:18 +00:00
renovate[bot]
fa1c3a0915
Update dependency rack to v2.2.8.1 (#29341)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-22 10:37:54 +00:00
renovate[bot]
96d5c44db2
Update dependency rails to v7.1.3.2 (#29342)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-22 10:37:52 +00:00
github-actions[bot]
449fcf1ae7
New Crowdin Translations (automated) (#29343)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-02-22 10:37:48 +00:00
renovate[bot]
53a4648db1
Update dependency pino to v8.19.0 (#29253)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-22 09:03:13 +00:00
Matt Jankowski
006aa4e35a
Update husky and remove deprecated features (#29338) 2024-02-22 09:02:15 +00:00
renovate[bot]
c63567a214
Update typescript-eslint monorepo to v7 (major) (#29179)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-21 22:06:17 +00:00
renovate[bot]
638861b2a3
Update dependency http-link-header to v1.1.2 (#29340)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-21 21:31:09 +00:00
renovate[bot]
aed60df80e
Update dependency sass to v1.71.1 (#29238)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-21 21:29:41 +00:00
renovate[bot]
bcc0860100
Update dependency core-js to v3.36.0 (#29197)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-21 21:28:53 +00:00
renovate[bot]
df4ed60331
Update dependency dotenv to v16.4.5 (#29190)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-21 21:28:10 +00:00
renovate[bot]
38d0292281
Update dependency @reduxjs/toolkit to v2.2.1 (#29178)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-21 21:27:28 +00:00
renovate[bot]
d48d824d9a
Update DefinitelyTyped types (non-major) (#29165)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-21 21:27:00 +00:00
Matt Jankowski
581f14e56f
Update yarn to version 4.1.0 (#29339) 2024-02-21 21:18:01 +00:00
Claire
2751acb6cd
Automatically switch from open to approved registrations in absence of moderators (#29318) 2024-02-21 17:45:06 +00:00
Matt Jankowski
08342ad40c
Add basic coverage for AfterUnallowDomainService class (#29324) 2024-02-21 17:13:11 +00:00
Matt Jankowski
8f61e32569
Add basic coverage for AppealService class (#29322) 2024-02-21 17:12:31 +00:00
Matt Jankowski
b73932461f
Add basic coverage for CreateFeaturedTagService class (#29321) 2024-02-21 16:58:19 +00:00
Matt Jankowski
5f19e7e799
Add basic coverage for ProcessHashtagsService class (#29320) 2024-02-21 16:57:45 +00:00
Matt Jankowski
1f648fdf1a
Remove erroneous service type on TagFeed model spec (#29302) 2024-02-21 11:25:33 +00:00
github-actions[bot]
fd2b6c29c6
New Crowdin Translations (automated) (#29311)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-02-21 11:24:44 +00:00
Wojciech Maj
36fd47ac57
Remove unused dependencies (#29289) 2024-02-20 10:10:58 +00:00
Matt Jankowski
937dad1ee6
Extract ES query and filter hashes into private methods in TagSearchService (#29288) 2024-02-20 10:08:32 +00:00
github-actions[bot]
9a2b9d1484
New Crowdin Translations (automated) (#29298)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-02-20 09:23:40 +00:00
Matt Jankowski
0ef44ee720
Move AccountSuggestions::Source subclasses default limit value to constant (#29282) 2024-02-20 09:21:49 +00:00
renovate[bot]
e1cee84e58
Update dependency cocoon-js-vanilla to v1.4.0 (#29293)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-20 09:19:41 +00:00
Claire
bde4df6be6
Remove CSS definitions for some unused classes (#29279) 2024-02-20 09:18:44 +00:00
Matt Jankowski
785e2f9399
Add scope providing_styles to UserRole (#29286) 2024-02-20 09:18:05 +00:00
renovate[bot]
5d9d0d174a
Update dependency selenium-webdriver to v4.18.1 (#29287)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-20 09:17:41 +00:00
renovate[bot]
6e4c1e172b
Update dependency webmock to v3.21.2 (#29290)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-20 09:11:22 +00:00
Eugen Rochko
b8b2f20b16
Change explore icon from hashtag to compass in web UI (#29294) 2024-02-20 09:10:44 +00:00
Matt Jankowski
64f9939e39
Use capture_emails helper to improve email assertions in specs (#29245) 2024-02-19 15:57:47 +00:00
Wolfgang Fournès
86627ea2e4
Add a missing thread example to the statuses spec (#29278) 2024-02-19 13:35:58 +00:00
Matt Jankowski
72b0c9e20b
Re-enable fixed Style/Semicolon cop (#29212) 2024-02-19 13:35:13 +00:00
Hinaloe
c645490d55
Fix sensitive flag not being removed when removing CW in new compose form (#29248) 2024-02-19 13:31:16 +00:00
github-actions[bot]
ad16362efe
New Crowdin Translations (automated) (#29255)
Co-authored-by: GitHub Actions <noreply@github.com>
2024-02-19 13:25:45 +00:00
renovate[bot]
fe6c055f35
Update dependency eslint-plugin-jsdoc to v48.1.0 (#29275)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-19 11:10:03 +00:00
Eugen Rochko
63f4ea055a
Change follow suggestions design in web UI (#29272) 2024-02-19 11:09:58 +00:00
Matt Jankowski
245064bb98
Move "everyone" role and "instance actor" account magic number IDs to constants (#29260) 2024-02-19 11:09:43 +00:00
6cb18320c0 Merge remote-tracking branch 'upstream/main'
All checks were successful
continuous-integration/drone/push Build is passing
2024-02-17 13:01:40 +01:00
Claire
96ddf1d482
Fix flaky end-to-end OCR test (#29244) 2024-02-16 16:57:23 +00:00
Wolfgang Fournès
cfadb87077
Update enum syntax to use the new Rails 7.0 style (#29217) 2024-02-16 14:54:23 +00:00
Matt Jankowski
1d9d14b8de
Use abort instead of warn(); exit in boot.rb env check (#29209) 2024-02-16 14:29:24 +00:00
Matt Jankowski
1946e171e6
Reduce round trips in admin/disputes/appeals spec (#29234) 2024-02-16 13:46:28 +00:00
Matt Jankowski
3454fcbd71
Reduce round trips in auth/sessions spec (#29233) 2024-02-16 13:38:49 +00:00
Matt Jankowski
a316c0e38d
Reduce round trips in disputes/appeals spec (#29232) 2024-02-16 13:01:15 +00:00
Matt Jankowski
117b507df5
Extract subject from User#mark_email_as_confirmed! spec (#29231) 2024-02-16 13:01:04 +00:00
Matt Jankowski
1690fb39e6
Reduce RSpec/MultipleExpectations in instance_actors_controller spec (#29229) 2024-02-16 13:00:11 +00:00
Matt Jankowski
bba488c189
Reduce RSpec/MultipleExpectations in media_attachment spec (#29228) 2024-02-16 13:00:09 +00:00
renovate[bot]
e140d05a6a
Update dependency doorkeeper to v5.6.9 (#29196)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-16 12:59:51 +00:00
ff5beb6a60 Merge remote-tracking branch 'upstream/main'
All checks were successful
continuous-integration/drone/push Build is passing
2024-02-12 08:46:58 +01:00
915 changed files with 22232 additions and 11463 deletions

View file

@ -1,7 +1,9 @@
[production]
defaults
not IE 11
> 0.2%
ios >= 15.6
not dead
not OperaMini all
[development]
supports es6-module

View file

@ -5,7 +5,7 @@
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
"features": {
"ghcr.io/devcontainers/features/sshd:1": {},
"ghcr.io/devcontainers/features/sshd:1": {}
},
"runServices": ["app", "db", "redis"],
@ -15,16 +15,16 @@
"portsAttributes": {
"3000": {
"label": "web",
"onAutoForward": "notify",
"onAutoForward": "notify"
},
"4000": {
"label": "stream",
"onAutoForward": "silent",
},
"onAutoForward": "silent"
}
},
"otherPortsAttributes": {
"onAutoForward": "silent",
"onAutoForward": "silent"
},
"remoteEnv": {
@ -33,7 +33,7 @@
"STREAMING_API_BASE_URL": "https://${localEnv:CODESPACE_NAME}-4000.app.github.dev",
"DISABLE_FORGERY_REQUEST_PROTECTION": "true",
"ES_ENABLED": "",
"LIBRE_TRANSLATE_ENDPOINT": "",
"LIBRE_TRANSLATE_ENDPOINT": ""
},
"onCreateCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
@ -43,7 +43,7 @@
"customizations": {
"vscode": {
"settings": {},
"extensions": ["EditorConfig.EditorConfig", "webben.browserslist"],
},
},
"extensions": ["EditorConfig.EditorConfig", "webben.browserslist"]
}
}
}

View file

@ -5,7 +5,7 @@
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
"features": {
"ghcr.io/devcontainers/features/sshd:1": {},
"ghcr.io/devcontainers/features/sshd:1": {}
},
"forwardPorts": [3000, 4000],
@ -14,17 +14,17 @@
"3000": {
"label": "web",
"onAutoForward": "notify",
"requireLocalPort": true,
"requireLocalPort": true
},
"4000": {
"label": "stream",
"onAutoForward": "silent",
"requireLocalPort": true,
},
"requireLocalPort": true
}
},
"otherPortsAttributes": {
"onAutoForward": "silent",
"onAutoForward": "silent"
},
"onCreateCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
@ -34,7 +34,7 @@
"customizations": {
"vscode": {
"settings": {},
"extensions": ["EditorConfig.EditorConfig", "webben.browserslist"],
},
},
"extensions": ["EditorConfig.EditorConfig", "webben.browserslist"]
}
}
}

View file

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

View file

@ -123,7 +123,7 @@ module.exports = defineConfig({
'react/react-in-jsx-scope': 'off', // not needed with new JSX transform
'react/self-closing-comp': 'error',
// recommended values found in https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/src/index.js
// recommended values found in https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/v6.8.0/src/index.js#L46
'jsx-a11y/accessible-emoji': 'warn',
'jsx-a11y/click-events-have-key-events': 'off',
'jsx-a11y/label-has-associated-control': 'off',
@ -176,7 +176,7 @@ module.exports = defineConfig({
},
],
// See https://github.com/import-js/eslint-plugin-import/blob/main/config/recommended.js
// See https://github.com/import-js/eslint-plugin-import/blob/v2.29.1/config/recommended.js
'import/extensions': [
'error',
'always',
@ -338,7 +338,6 @@ module.exports = defineConfig({
'plugin:import/typescript',
'plugin:promise/recommended',
'plugin:jsdoc/recommended-typescript',
'plugin:prettier/recommended',
],
parserOptions: {
@ -347,6 +346,9 @@ module.exports = defineConfig({
},
rules: {
// Disable formatting rules that have been enabled in the base config
'indent': 'off',
'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
'@typescript-eslint/consistent-type-definitions': ['warn', 'interface'],

4
.github/codecov.yml vendored
View file

@ -1,3 +1,4 @@
comment: false # Do not leave PR comments
coverage:
status:
project:
@ -8,6 +9,3 @@ coverage:
default:
# Github status check is not blocking
informational: true
comment:
# Only write a comment in PR if there are changes
require_changes: true

View file

@ -125,6 +125,22 @@
],
groupName: null, // We dont want them to belong to any group
},
{
// Group all RuboCop packages with `rubocop` in the same PR
matchManagers: ['bundler'],
matchPackageNames: ['rubocop'],
matchPackagePrefixes: ['rubocop-'],
matchUpdateTypes: ['patch', 'minor'],
groupName: 'RuboCop (non-major)',
},
{
// Group all RSpec packages with `rspec` in the same PR
matchManagers: ['bundler'],
matchPackageNames: ['rspec'],
matchPackagePrefixes: ['rspec-'],
matchUpdateTypes: ['patch', 'minor'],
groupName: 'RSpec (non-major)',
},
// Add labels depending on package manager
{ matchManagers: ['npm', 'nvm'], addLabels: ['javascript'] },
{ matchManagers: ['bundler', 'ruby-version'], addLabels: ['ruby'] },

View file

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

18
.github/workflows/format-check.yml vendored Normal file
View file

@ -0,0 +1,18 @@
name: Check formatting
on:
push:
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v4
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: Check formatting with Prettier
run: yarn format:check

View file

@ -43,4 +43,4 @@ jobs:
- run: echo "::add-matcher::.github/stylelint-matcher.json"
- name: Stylelint
run: yarn lint:sass
run: yarn lint:css

View file

@ -36,4 +36,4 @@ jobs:
- name: Run haml-lint
run: |
echo "::add-matcher::.github/workflows/haml-lint-problem-matcher.json"
bundle exec haml-lint
bundle exec haml-lint --reporter github

View file

@ -1,38 +0,0 @@
name: JSON Linting
on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
paths:
- 'package.json'
- 'yarn.lock'
- '.nvmrc'
- '.prettier*'
- '**/*.json'
- '.github/workflows/lint-json.yml'
- '!app/javascript/mastodon/locales/*.json'
pull_request:
paths:
- 'package.json'
- 'yarn.lock'
- '.nvmrc'
- '.prettier*'
- '**/*.json'
- '.github/workflows/lint-json.yml'
- '!app/javascript/mastodon/locales/*.json'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v4
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: Prettier
run: yarn lint:json

View file

@ -1,38 +0,0 @@
name: Markdown Linting
on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
paths:
- '.github/workflows/lint-md.yml'
- '.nvmrc'
- '.prettier*'
- '**/*.md'
- '!AUTHORS.md'
- 'package.json'
- 'yarn.lock'
pull_request:
paths:
- '.github/workflows/lint-md.yml'
- '.nvmrc'
- '.prettier*'
- '**/*.md'
- '!AUTHORS.md'
- 'package.json'
- 'yarn.lock'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v4
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: Prettier
run: yarn lint:md

View file

@ -1,40 +0,0 @@
name: YML Linting
on:
push:
branches-ignore:
- 'dependabot/**'
- 'renovate/**'
paths:
- 'package.json'
- 'yarn.lock'
- '.nvmrc'
- '.prettier*'
- '**/*.yaml'
- '**/*.yml'
- '.github/workflows/lint-yml.yml'
- '!config/locales/*.yml'
pull_request:
paths:
- 'package.json'
- 'yarn.lock'
- '.nvmrc'
- '.prettier*'
- '**/*.yaml'
- '**/*.yml'
- '.github/workflows/lint-yml.yml'
- '!config/locales/*.yml'
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v4
- name: Set up Javascript environment
uses: ./.github/actions/setup-javascript
- name: Prettier
run: yarn lint:yml

View file

@ -114,6 +114,7 @@ jobs:
- '3.0'
- '3.1'
- '.ruby-version'
- '3.3'
steps:
- uses: actions/checkout@v4
@ -189,6 +190,7 @@ jobs:
- '3.0'
- '3.1'
- '.ruby-version'
- '3.3'
steps:
- uses: actions/checkout@v4
@ -288,6 +290,7 @@ jobs:
- '3.0'
- '3.1'
- '.ruby-version'
- '3.3'
search-image:
- docker.elastic.co/elasticsearch/elasticsearch:7.17.13
include:

View file

@ -1,5 +1,3 @@
inherits_from: .haml-lint_todo.yml
exclude:
- 'vendor/**/*'
- lib/templates/haml/scaffold/_form.html.haml
@ -14,3 +12,5 @@ linters:
enabled: true
LineLength:
max: 320
ViewLength:
max: 200 # Override default value of 100 inherited from rubocop

View file

@ -1,13 +0,0 @@
# This configuration was generated by
# `haml-lint --auto-gen-config`
# on 2024-01-09 11:30:07 -0500 using Haml-Lint version 0.53.0.
# The point is for the user to remove these configuration records
# one by one as the lints are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of Haml-Lint, may require this file to be generated again.
linters:
# Offense count: 1
LineLength:
exclude:
- 'app/views/admin/roles/_form.html.haml'

View file

@ -1,4 +1 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
yarn lint-staged

View file

@ -54,6 +54,13 @@
# Ignore Docker option files
docker-compose.override.yml
# Ignore public
/public/assets
/public/emoji
/public/packs
/public/packs-test
/public/system
# Ignore emoji map file
/app/javascript/mastodon/features/emoji/emoji_map.json
@ -74,4 +81,5 @@ app/javascript/styles/mastodon/reset.scss
# Ignore the generated AUTHORS.md
AUTHORS.md
# Process a few selected JS files
!lint-staged.config.js

View file

@ -96,12 +96,6 @@ Rails/FilePath:
Rails/HttpStatus:
EnforcedStyle: numeric
# Reason: Allowed in boot ENV checker
# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsexit
Rails/Exit:
Exclude:
- 'config/boot.rb'
# Reason: Conflicts with `Lint/UselessMethodDefinition` for inherited controller actions
# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railslexicallyscopedactionfilter
Rails/LexicallyScopedActionFilter:
@ -216,11 +210,6 @@ Style/RedundantBegin:
Style/RescueStandardError:
EnforcedStyle: implicit
# Reason: Simplify some spec layouts
# https://docs.rubocop.org/rubocop/cops_style.html#stylesemicolon
Style/Semicolon:
AllowAsExpressionSeparator: true
# Reason: Originally disabled for CodeClimate, and no config consensus has been found
# https://docs.rubocop.org/rubocop/cops_style.html#stylesymbolarray
Style/SymbolArray:

View file

@ -20,7 +20,7 @@ FROM docker.io/ruby:${RUBY_VERSION}-slim-${DEBIAN_VERSION} as ruby
# Resulting version string is vX.X.X-MASTODON_VERSION_PRERELEASE+MASTODON_VERSION_METADATA
# Example: v4.2.0-nightly.2023.11.09+something
# Overwrite existance of 'alpha.0' in version.rb [--build-arg MASTODON_VERSION_PRERELEASE="nightly.2023.11.09"]
# Overwrite existence of 'alpha.0' in version.rb [--build-arg MASTODON_VERSION_PRERELEASE="nightly.2023.11.09"]
ARG MASTODON_VERSION_PRERELEASE="bark"
# Append build metadata or fork information to version.rb [--build-arg MASTODON_VERSION_METADATA="something"]
ARG MASTODON_VERSION_METADATA="prod"
@ -29,7 +29,7 @@ ARG MASTODON_VERSION_METADATA="prod"
# See: https://docs.joinmastodon.org/admin/config/#rails_serve_static_files
ARG RAILS_SERVE_STATIC_FILES="true"
# Allow to use YJIT compiler
# See: https://github.com/ruby/ruby/blob/master/doc/yjit/yjit.md
# See: https://github.com/ruby/ruby/blob/v3_2_3/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"

View file

@ -58,7 +58,9 @@ gem 'htmlentities', '~> 4.3'
gem 'http', '~> 5.1'
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 'idn-ruby', require: 'idn'
gem 'inline_svg'
gem 'kaminari', '~> 1.2'
gem 'link_header', '~> 0.0'
gem 'mime-types', '~> 3.5.0', require: 'mime/types/columnar'
@ -88,7 +90,7 @@ gem 'sidekiq-bulk', '~> 0.2.0'
gem 'simple-navigation', '~> 4.4'
gem 'simple_form', '~> 5.2'
gem 'stoplight', '~> 3.0.1'
gem 'strong_migrations', '1.7.0'
gem 'strong_migrations', '1.8.0'
gem 'tty-prompt', '~> 0.23', require: false
gem 'twitter-text', '~> 3.1.0'
gem 'tzinfo-data', '~> 1.2023'
@ -112,7 +114,7 @@ group :test do
# RSpec helpers for email specs
gem 'email_spec'
# Extra RSpec extenion methods and helpers for sidekiq
# Extra RSpec extension methods and helpers for sidekiq
gem 'rspec-sidekiq', '~> 4.0'
# Browser integration testing

View file

@ -10,35 +10,35 @@ GIT
GEM
remote: https://rubygems.org/
specs:
actioncable (7.1.3)
actionpack (= 7.1.3)
activesupport (= 7.1.3)
actioncable (7.1.3.2)
actionpack (= 7.1.3.2)
activesupport (= 7.1.3.2)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
actionmailbox (7.1.3)
actionpack (= 7.1.3)
activejob (= 7.1.3)
activerecord (= 7.1.3)
activestorage (= 7.1.3)
activesupport (= 7.1.3)
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)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
actionmailer (7.1.3)
actionpack (= 7.1.3)
actionview (= 7.1.3)
activejob (= 7.1.3)
activesupport (= 7.1.3)
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)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.2)
actionpack (7.1.3)
actionview (= 7.1.3)
activesupport (= 7.1.3)
actionpack (7.1.3.2)
actionview (= 7.1.3.2)
activesupport (= 7.1.3.2)
nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4)
@ -46,15 +46,15 @@ GEM
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
actiontext (7.1.3)
actionpack (= 7.1.3)
activerecord (= 7.1.3)
activestorage (= 7.1.3)
activesupport (= 7.1.3)
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)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.1.3)
activesupport (= 7.1.3)
actionview (7.1.3.2)
activesupport (= 7.1.3.2)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
@ -64,22 +64,22 @@ GEM
activemodel (>= 4.1)
case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
activejob (7.1.3)
activesupport (= 7.1.3)
activejob (7.1.3.2)
activesupport (= 7.1.3.2)
globalid (>= 0.3.6)
activemodel (7.1.3)
activesupport (= 7.1.3)
activerecord (7.1.3)
activemodel (= 7.1.3)
activesupport (= 7.1.3)
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)
timeout (>= 0.4.0)
activestorage (7.1.3)
actionpack (= 7.1.3)
activejob (= 7.1.3)
activerecord (= 7.1.3)
activesupport (= 7.1.3)
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)
marcel (~> 1.0)
activesupport (7.1.3)
activesupport (7.1.3.2)
base64
bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2)
@ -139,7 +139,7 @@ GEM
erubi (~> 1.4)
parser (>= 2.4)
smart_properties
bigdecimal (3.1.6)
bigdecimal (3.1.7)
bindata (2.4.15)
binding_of_caller (1.0.0)
debug_inspector (>= 0.0.1)
@ -213,20 +213,19 @@ GEM
devise_pam_authenticatable2 (9.2.0)
devise (>= 4.0.0)
rpam2 (~> 4.0)
diff-lcs (1.5.0)
diff-lcs (1.5.1)
discard (1.3.0)
activerecord (>= 4.2, < 8)
docile (1.4.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
doorkeeper (5.6.8)
doorkeeper (5.6.9)
railties (>= 5)
dotenv (2.8.1)
dotenv-rails (2.8.1)
dotenv (= 2.8.1)
railties (>= 3.2)
drb (2.2.0)
ruby2_keywords
drb (2.2.1)
ed25519 (1.3.0)
elasticsearch (7.13.3)
elasticsearch-api (= 7.13.3)
@ -309,7 +308,7 @@ GEM
activesupport (>= 5.1)
haml (>= 4.0.6)
railties (>= 5.1)
haml_lint (0.56.0)
haml_lint (0.57.0)
haml (>= 5.0)
parallel (~> 1.10)
rainbow
@ -333,7 +332,7 @@ GEM
http-form_data (2.3.0)
http_accept_language (2.1.1)
httpclient (2.8.3)
httplog (1.6.2)
httplog (1.6.3)
rack (>= 2.0)
rainbow (>= 2.0.0)
i18n (1.14.1)
@ -350,14 +349,17 @@ GEM
rainbow (>= 2.2.2, < 4.0)
terminal-table (>= 1.5.1)
idn-ruby (0.1.5)
inline_svg (1.9.0)
activesupport (>= 3.0)
nokogiri (>= 1.6)
io-console (0.7.2)
irb (1.11.2)
irb (1.12.0)
rdoc
reline (>= 0.4.2)
jmespath (1.6.2)
json (2.7.1)
json-canonicalization (1.0.0)
json-jwt (1.15.3)
json-jwt (1.15.3.1)
activesupport (>= 4.2)
aes_key_wrap
bindata
@ -372,7 +374,7 @@ GEM
json-ld-preloaded (3.3.0)
json-ld (~> 3.3)
rdf (~> 3.3)
json-schema (4.1.1)
json-schema (4.2.0)
addressable (>= 2.8)
jsonapi-renderer (0.2.2)
jwt (2.7.1)
@ -435,7 +437,7 @@ GEM
mime-types-data (3.2023.1205)
mini_mime (1.1.5)
mini_portile2 (2.8.5)
minitest (5.21.2)
minitest (5.22.3)
msgpack (1.7.2)
multi_json (1.15.0)
multipart-post (2.3.0)
@ -444,7 +446,7 @@ GEM
uri
net-http-persistent (4.0.2)
connection_pool (~> 2.2)
net-imap (0.4.9.1)
net-imap (0.4.10)
date
net-protocol
net-ldap (0.19.0)
@ -455,7 +457,7 @@ GEM
net-smtp (0.4.0.1)
net-protocol
nio4r (2.5.9)
nokogiri (1.16.2)
nokogiri (1.16.3)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
nsa (0.3.0)
@ -465,11 +467,11 @@ GEM
statsd-ruby (~> 1.4, >= 1.4.0)
oj (3.16.3)
bigdecimal (>= 3.0)
omniauth (2.1.1)
omniauth (2.1.2)
hashie (>= 3.4.6)
rack (>= 2.2.3)
rack-protection
omniauth-cas (3.0.0.beta.1)
omniauth-cas (3.0.0)
addressable (~> 2.8)
nokogiri (~> 1.12)
omniauth (~> 2.1)
@ -497,7 +499,7 @@ GEM
openssl-signature_algorithm (1.3.0)
openssl (> 2.0)
orm_adapter (0.5.0)
ox (2.14.17)
ox (2.14.18)
parallel (1.24.0)
parser (3.3.0.5)
ast (~> 2.4.1)
@ -505,7 +507,7 @@ GEM
parslet (2.0.0)
pastel (0.8.0)
tty-color (~> 0.5)
pg (1.5.5)
pg (1.5.6)
pghero (3.4.1)
activerecord (>= 6)
posix-spawn (0.3.15)
@ -532,10 +534,10 @@ GEM
activesupport (>= 3.0.0)
raabro (1.4.0)
racc (1.7.3)
rack (2.2.8)
rack (2.2.9)
rack-attack (6.7.0)
rack (>= 1.0, < 4)
rack-cors (2.0.1)
rack-cors (2.0.2)
rack (>= 2.0.0)
rack-oauth2 (1.21.3)
activesupport
@ -543,8 +545,9 @@ GEM
httpclient
json-jwt (>= 1.11.0)
rack (>= 2.1.0)
rack-protection (3.0.5)
rack
rack-protection (3.2.0)
base64 (>= 0.1.0)
rack (~> 2.2, >= 2.2.4)
rack-proxy (0.7.6)
rack
rack-session (1.0.2)
@ -554,20 +557,20 @@ GEM
rackup (1.0.0)
rack (< 3)
webrick
rails (7.1.3)
actioncable (= 7.1.3)
actionmailbox (= 7.1.3)
actionmailer (= 7.1.3)
actionpack (= 7.1.3)
actiontext (= 7.1.3)
actionview (= 7.1.3)
activejob (= 7.1.3)
activemodel (= 7.1.3)
activerecord (= 7.1.3)
activestorage (= 7.1.3)
activesupport (= 7.1.3)
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)
bundler (>= 1.15.0)
railties (= 7.1.3)
railties (= 7.1.3.2)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
@ -579,12 +582,12 @@ GEM
rails-html-sanitizer (1.6.0)
loofah (~> 2.21)
nokogiri (~> 1.14)
rails-i18n (7.0.8)
rails-i18n (7.0.9)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
railties (7.1.3)
actionpack (= 7.1.3)
activesupport (= 7.1.3)
railties (7.1.3.2)
actionpack (= 7.1.3.2)
activesupport (= 7.1.3.2)
irb
rackup (>= 1.0.0)
rake (>= 12.2)
@ -597,7 +600,7 @@ GEM
link_header (~> 0.0, >= 0.0.8)
rdf-normalize (0.7.0)
rdf (~> 3.3)
rdoc (6.6.2)
rdoc (6.6.3.1)
psych (>= 4.0.0)
redcarpet (3.6.0)
redis (4.8.1)
@ -606,7 +609,7 @@ GEM
redlock (1.3.2)
redis (>= 3.0.0, < 6.0)
regexp_parser (2.9.0)
reline (0.4.2)
reline (0.4.3)
io-console (~> 0.5)
request_store (1.5.1)
rack (>= 1.4)
@ -621,31 +624,31 @@ GEM
chunky_png (~> 1.0)
rqrcode_core (~> 1.0)
rqrcode_core (1.2.0)
rspec-core (3.12.2)
rspec-support (~> 3.12.0)
rspec-expectations (3.12.3)
rspec-core (3.13.0)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-support (~> 3.13.0)
rspec-github (2.4.0)
rspec-core (~> 3.0)
rspec-mocks (3.12.6)
rspec-mocks (3.13.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-rails (6.1.1)
rspec-support (~> 3.13.0)
rspec-rails (6.1.2)
actionpack (>= 6.1)
activesupport (>= 6.1)
railties (>= 6.1)
rspec-core (~> 3.12)
rspec-expectations (~> 3.12)
rspec-mocks (~> 3.12)
rspec-support (~> 3.12)
rspec-core (~> 3.13)
rspec-expectations (~> 3.13)
rspec-mocks (~> 3.13)
rspec-support (~> 3.13)
rspec-sidekiq (4.1.0)
rspec-core (~> 3.0)
rspec-expectations (~> 3.0)
rspec-mocks (~> 3.0)
sidekiq (>= 5, < 8)
rspec-support (3.12.1)
rubocop (1.60.2)
rspec-support (3.13.1)
rubocop (1.62.1)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
@ -653,24 +656,24 @@ GEM
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8, < 3.0)
rexml (>= 3.2.5, < 4.0)
rubocop-ast (>= 1.30.0, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.30.0)
parser (>= 3.2.1.0)
rubocop-ast (1.31.2)
parser (>= 3.3.0.4)
rubocop-capybara (2.20.0)
rubocop (~> 1.41)
rubocop-factory_bot (2.25.0)
rubocop (~> 1.33)
rubocop-factory_bot (2.25.1)
rubocop (~> 1.41)
rubocop-performance (1.20.2)
rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
rubocop-rails (2.23.1)
rubocop-rails (2.24.0)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0)
rubocop-rspec (2.26.1)
rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rspec (2.27.1)
rubocop (~> 1.40)
rubocop-capybara (~> 2.17)
rubocop-factory_bot (~> 2.22)
@ -691,7 +694,7 @@ GEM
scenic (1.7.0)
activerecord (>= 4.0.0)
railties (>= 4.0.0)
selenium-webdriver (4.17.0)
selenium-webdriver (4.18.1)
base64 (~> 0.2)
rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0)
@ -731,7 +734,7 @@ GEM
stoplight (3.0.2)
redlock (~> 1.0)
stringio (3.1.0)
strong_migrations (1.7.0)
strong_migrations (1.8.0)
activerecord (>= 5.2)
swd (1.3.0)
activesupport (>= 3)
@ -743,8 +746,8 @@ GEM
unicode-display_width (>= 1.1.1, < 3)
terrapin (1.0.1)
climate_control
test-prof (1.3.1)
thor (1.3.0)
test-prof (1.3.2)
thor (1.3.1)
tilt (2.3.0)
timeout (0.4.1)
tpm-key_attestation (0.12.0)
@ -793,7 +796,7 @@ GEM
webfinger (1.2.0)
activesupport
httpclient (>= 2.4)
webmock (3.20.0)
webmock (3.22.0)
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
@ -811,7 +814,7 @@ GEM
xorcist (1.1.3)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.6.12)
zeitwerk (2.6.13)
PLATFORMS
ruby
@ -862,8 +865,10 @@ DEPENDENCIES
http (~> 5.1)
http_accept_language (~> 2.1)
httplog (~> 1.6.2)
i18n (= 1.14.1)
i18n-tasks (~> 1.0)
idn-ruby
inline_svg
irb (~> 1.8)
json-ld
json-ld-preloaded (~> 3.2)
@ -935,7 +940,7 @@ DEPENDENCIES
simplecov-lcov (~> 0.8)
stackprof
stoplight (~> 3.0.1)
strong_migrations (= 1.7.0)
strong_migrations (= 1.8.0)
test-prof
thor (~> 1.2)
tty-prompt (~> 0.23)

View file

@ -83,23 +83,19 @@ A **Vagrant** configuration is included for development purposes. To use it, com
- Install Vagrant and Virtualbox
- Install the `vagrant-hostsupdater` plugin: `vagrant plugin install vagrant-hostsupdater`
- Run `vagrant up`
- Run `vagrant ssh -c "cd /vagrant && foreman start"`
- Run `vagrant ssh -c "cd /vagrant && bin/dev"`
- Open `http://mastodon.local` in your browser
### MacOS
To set up **MacOS** for native development, complete the following steps:
- Install the latest stable Ruby version (use a Ruby version manager for easy installation and management of Ruby versions)
- Run `brew install postgresql@14`
- Run `brew install redis`
- Run `brew install imagemagick`
- Run `brew install libidn`
- Install Foreman or a similar tool (such as [overmind](https://github.com/DarthSim/overmind)) to handle multiple process launching.
- Navigate to Mastodon's root directory and run `brew install nvm` then `nvm use` to use the version from .nvmrc
- Use a Ruby version manager to install the specified version from `.ruby-version`
- 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 `corepack enable && corepack prepare`
- Run `bundle exec rails db:setup` (optionally prepend `RAILS_ENV=development` to target the dev environment)
- Finally, run `overmind start -f Procfile.dev`
- Finally, run `bin/dev` which will launch the local services via `overmind` (if installed) or `foreman`
### Docker
@ -108,7 +104,7 @@ For development with **Docker**, complete the following steps:
- Install Docker Desktop
- Run `docker compose -f .devcontainer/docker-compose.yml up -d`
- Run `docker compose -f .devcontainer/docker-compose.yml exec app .devcontainer/post-create.sh`
- Finally, run `docker compose -f .devcontainer/docker-compose.yml exec app foreman start -f Procfile.dev`
- Finally, run `docker compose -f .devcontainer/docker-compose.yml exec app bin/dev`
If you are using an IDE with [support for the Development Container specification](https://containers.dev/supporting), it will run the above `docker compose` commands automatically. For **Visual Studio Code** this requires the [Dev Container extension](https://containers.dev/supporting#dev-containers).
@ -119,7 +115,7 @@ To get you coding in just a few minutes, GitHub Codespaces provides a web-based
- Click this button to create a new codespace:<br>
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=52281283&devcontainer_path=.devcontainer%2Fcodespaces%2Fdevcontainer.json)
- Wait for the environment to build. This will take a few minutes.
- When the editor is ready, run `foreman start -f Procfile.dev` in the terminal.
- When the editor is ready, run `bin/dev` in the terminal.
- After a few seconds, a popup will appear with a button labeled _Open in Browser_. This will open Mastodon.
- On the _Ports_ tab, right click on the “stream” row and select _Port visibility__Public_.

2
Vagrantfile vendored
View file

@ -188,7 +188,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.post_up_message = <<MESSAGE
To start server
$ vagrant ssh -c "cd /vagrant && foreman start"
$ vagrant ssh -c "cd /vagrant && bin/dev"
MESSAGE
end

View file

@ -1,6 +1,9 @@
# frozen_string_literal: true
class ActivityPub::BaseController < Api::BaseController
include SignatureVerification
include AccountOwnedConcern
skip_before_action :require_authenticated_user!
skip_before_action :require_not_suspended!
skip_around_action :set_locale

View file

@ -1,9 +1,6 @@
# frozen_string_literal: true
class ActivityPub::ClaimsController < ActivityPub::BaseController
include SignatureVerification
include AccountOwnedConcern
skip_before_action :authenticate_user!
before_action :require_account_signature!

View file

@ -1,9 +1,6 @@
# frozen_string_literal: true
class ActivityPub::CollectionsController < ActivityPub::BaseController
include SignatureVerification
include AccountOwnedConcern
vary_by -> { 'Signature' if authorized_fetch_mode? }
before_action :require_account_signature!, if: :authorized_fetch_mode?

View file

@ -1,9 +1,6 @@
# frozen_string_literal: true
class ActivityPub::FollowersSynchronizationsController < ActivityPub::BaseController
include SignatureVerification
include AccountOwnedConcern
vary_by -> { 'Signature' if authorized_fetch_mode? }
before_action :require_account_signature!

View file

@ -1,9 +1,7 @@
# frozen_string_literal: true
class ActivityPub::InboxesController < ActivityPub::BaseController
include SignatureVerification
include JsonLdHelper
include AccountOwnedConcern
before_action :skip_unknown_actor_activity
before_action :require_actor_signature!

View file

@ -3,9 +3,6 @@
class ActivityPub::OutboxesController < ActivityPub::BaseController
LIMIT = 20
include SignatureVerification
include AccountOwnedConcern
vary_by -> { 'Signature' if authorized_fetch_mode? || page_requested? }
before_action :require_account_signature!, if: :authorized_fetch_mode?

View file

@ -1,9 +1,7 @@
# frozen_string_literal: true
class ActivityPub::RepliesController < ActivityPub::BaseController
include SignatureVerification
include Authorization
include AccountOwnedConcern
DESCENDANTS_LIMIT = 60

View file

@ -128,7 +128,7 @@ module Admin
def unblock_email
authorize @account, :unblock_email?
CanonicalEmailBlock.where(reference_account: @account).delete_all
CanonicalEmailBlock.matching_account(@account).delete_all
log_action :unblock_email, @account

View file

@ -53,7 +53,7 @@ module Admin
end
def resource_params
params.require(:rule).permit(:text, :priority)
params.require(:rule).permit(:text, :hint, :priority)
end
end
end

View file

@ -8,6 +8,7 @@ class Api::BaseController < ApplicationController
include Api::AccessTokenTrackingConcern
include Api::CachingConcern
include Api::ContentSecurityPolicy
include Api::ErrorHandling
skip_before_action :require_functional!, unless: :limited_federation_mode?
@ -18,51 +19,6 @@ class Api::BaseController < ApplicationController
protect_from_forgery with: :null_session
rescue_from ActiveRecord::RecordInvalid, Mastodon::ValidationError do |e|
render json: { error: e.to_s }, status: 422
end
rescue_from ActiveRecord::RecordNotUnique do
render json: { error: 'Duplicate record' }, status: 422
end
rescue_from Date::Error do
render json: { error: 'Invalid date supplied' }, status: 422
end
rescue_from ActiveRecord::RecordNotFound do
render json: { error: 'Record not found' }, status: 404
end
rescue_from HTTP::Error, Mastodon::UnexpectedResponseError do
render json: { error: 'Remote data could not be fetched' }, status: 503
end
rescue_from OpenSSL::SSL::SSLError do
render json: { error: 'Remote SSL certificate could not be verified' }, status: 503
end
rescue_from Mastodon::NotPermittedError do
render json: { error: 'This action is not allowed' }, status: 403
end
rescue_from Seahorse::Client::NetworkingError do |e|
Rails.logger.warn "Storage server error: #{e}"
render json: { error: 'There was a temporary problem serving your request, please try again' }, status: 503
end
rescue_from Mastodon::RaceConditionError, Stoplight::Error::RedLight do
render json: { error: 'There was a temporary problem serving your request, please try again' }, status: 503
end
rescue_from Mastodon::RateLimitExceededError do
render json: { error: I18n.t('errors.429') }, status: 429
end
rescue_from ActionController::ParameterMissing, Mastodon::InvalidParameterError do |e|
render json: { error: e.to_s }, status: 400
end
def doorkeeper_unauthorized_render_options(error: nil)
{ json: { error: error.try(:description) || 'Not authorized' } }
end
@ -73,6 +29,14 @@ 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
@ -140,6 +104,10 @@ 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

View file

@ -41,10 +41,6 @@ class Api::V1::Accounts::FollowerAccountsController < Api::BaseController
)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_account_followers_url pagination_params(max_id: pagination_max_id) if records_continue?
end

View file

@ -41,10 +41,6 @@ class Api::V1::Accounts::FollowingAccountsController < Api::BaseController
)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_account_following_index_url pagination_params(max_id: pagination_max_id) if records_continue?
end

View file

@ -4,7 +4,7 @@ class Api::V1::Accounts::StatusesController < Api::BaseController
before_action -> { authorize_if_got_token! :read, :'read:statuses' }
before_action :set_account
after_action :insert_pagination_headers, unless: -> { truthy_param?(:pinned) }
after_action :insert_pagination_headers
def index
cache_if_unauthenticated!
@ -35,10 +35,6 @@ class Api::V1::Accounts::StatusesController < Api::BaseController
params.slice(:limit, *AccountStatusesFilter::KEYS).permit(:limit, *AccountStatusesFilter::KEYS).merge(core_params)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_account_statuses_url pagination_params(max_id: pagination_max_id) if records_continue?
end
@ -51,11 +47,7 @@ class Api::V1::Accounts::StatusesController < Api::BaseController
@statuses.size == limit_param(DEFAULT_STATUSES_LIMIT)
end
def pagination_max_id
@statuses.last.id
end
def pagination_since_id
@statuses.first.id
def pagination_collection
@statuses
end
end

View file

@ -125,10 +125,6 @@ class Api::V1::Admin::AccountsController < Api::BaseController
translated_params
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_admin_accounts_url(pagination_params(max_id: pagination_max_id)) if records_continue?
end
@ -137,12 +133,8 @@ class Api::V1::Admin::AccountsController < Api::BaseController
api_v1_admin_accounts_url(pagination_params(min_id: pagination_since_id)) unless @accounts.empty?
end
def pagination_max_id
@accounts.last.id
end
def pagination_since_id
@accounts.first.id
def pagination_collection
@accounts
end
def records_continue?

View file

@ -65,10 +65,6 @@ class Api::V1::Admin::CanonicalEmailBlocksController < Api::BaseController
@canonical_email_block = CanonicalEmailBlock.find(params[:id])
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_admin_canonical_email_blocks_url(pagination_params(max_id: pagination_max_id)) if records_continue?
end
@ -77,12 +73,8 @@ class Api::V1::Admin::CanonicalEmailBlocksController < Api::BaseController
api_v1_admin_canonical_email_blocks_url(pagination_params(min_id: pagination_since_id)) unless @canonical_email_blocks.empty?
end
def pagination_max_id
@canonical_email_blocks.last.id
end
def pagination_since_id
@canonical_email_blocks.first.id
def pagination_collection
@canonical_email_blocks
end
def records_continue?

View file

@ -61,10 +61,6 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController
DomainAllow.all
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_admin_domain_allows_url(pagination_params(max_id: pagination_max_id)) if records_continue?
end
@ -73,12 +69,8 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController
api_v1_admin_domain_allows_url(pagination_params(min_id: pagination_since_id)) unless @domain_allows.empty?
end
def pagination_max_id
@domain_allows.last.id
end
def pagination_since_id
@domain_allows.first.id
def pagination_collection
@domain_allows
end
def records_continue?

View file

@ -72,10 +72,6 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
params.permit(:severity, :reject_media, :reject_reports, :private_comment, :public_comment, :obfuscate)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_admin_domain_blocks_url(pagination_params(max_id: pagination_max_id)) if records_continue?
end
@ -84,12 +80,8 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
api_v1_admin_domain_blocks_url(pagination_params(min_id: pagination_since_id)) unless @domain_blocks.empty?
end
def pagination_max_id
@domain_blocks.last.id
end
def pagination_since_id
@domain_blocks.first.id
def pagination_collection
@domain_blocks
end
def records_continue?

View file

@ -58,10 +58,6 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController
params.permit(:domain, :allow_with_approval)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_admin_email_domain_blocks_url(pagination_params(max_id: pagination_max_id)) if records_continue?
end
@ -70,12 +66,8 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController
api_v1_admin_email_domain_blocks_url(pagination_params(min_id: pagination_since_id)) unless @email_domain_blocks.empty?
end
def pagination_max_id
@email_domain_blocks.last.id
end
def pagination_since_id
@email_domain_blocks.first.id
def pagination_collection
@email_domain_blocks
end
def records_continue?

View file

@ -63,10 +63,6 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController
params.permit(:ip, :severity, :comment, :expires_in)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_admin_ip_blocks_url(pagination_params(max_id: pagination_max_id)) if records_continue?
end
@ -75,12 +71,8 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController
api_v1_admin_ip_blocks_url(pagination_params(min_id: pagination_since_id)) unless @ip_blocks.empty?
end
def pagination_max_id
@ip_blocks.last.id
end
def pagination_since_id
@ip_blocks.first.id
def pagination_collection
@ip_blocks
end
def records_continue?

View file

@ -89,10 +89,6 @@ class Api::V1::Admin::ReportsController < Api::BaseController
params.permit(*FILTER_PARAMS)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_admin_reports_url(pagination_params(max_id: pagination_max_id)) if records_continue?
end
@ -101,12 +97,8 @@ class Api::V1::Admin::ReportsController < Api::BaseController
api_v1_admin_reports_url(pagination_params(min_id: pagination_since_id)) unless @reports.empty?
end
def pagination_max_id
@reports.last.id
end
def pagination_since_id
@reports.first.id
def pagination_collection
@reports
end
def records_continue?

View file

@ -44,10 +44,6 @@ class Api::V1::Admin::TagsController < Api::BaseController
params.permit(:display_name, :trendable, :usable, :listable)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_admin_tags_url(pagination_params(max_id: pagination_max_id)) if records_continue?
end
@ -56,12 +52,8 @@ class Api::V1::Admin::TagsController < Api::BaseController
api_v1_admin_tags_url(pagination_params(min_id: pagination_since_id)) unless @tags.empty?
end
def pagination_max_id
@tags.last.id
end
def pagination_since_id
@tags.first.id
def pagination_collection
@tags
end
def records_continue?

View file

@ -42,10 +42,6 @@ class Api::V1::Admin::Trends::Links::PreviewCardProvidersController < Api::BaseC
@providers = PreviewCardProvider.all.to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id))
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_admin_trends_links_preview_card_providers_url(pagination_params(max_id: pagination_max_id)) if records_continue?
end
@ -54,12 +50,8 @@ class Api::V1::Admin::Trends::Links::PreviewCardProvidersController < Api::BaseC
api_v1_admin_trends_links_preview_card_providers_url(pagination_params(min_id: pagination_since_id)) unless @providers.empty?
end
def pagination_max_id
@providers.last.id
end
def pagination_since_id
@providers.first.id
def pagination_collection
@providers
end
def records_continue?

View file

@ -28,10 +28,6 @@ class Api::V1::BlocksController < Api::BaseController
)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_blocks_url pagination_params(max_id: pagination_max_id) if records_continue?
end
@ -40,12 +36,8 @@ class Api::V1::BlocksController < Api::BaseController
api_v1_blocks_url pagination_params(since_id: pagination_since_id) unless paginated_blocks.empty?
end
def pagination_max_id
paginated_blocks.last.id
end
def pagination_since_id
paginated_blocks.first.id
def pagination_collection
paginated_blocks
end
def records_continue?

View file

@ -31,10 +31,6 @@ class Api::V1::BookmarksController < Api::BaseController
current_account.bookmarks
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_bookmarks_url pagination_params(max_id: pagination_max_id) if records_continue?
end
@ -43,12 +39,8 @@ class Api::V1::BookmarksController < Api::BaseController
api_v1_bookmarks_url pagination_params(min_id: pagination_since_id) unless results.empty?
end
def pagination_max_id
results.last.id
end
def pagination_since_id
results.first.id
def pagination_collection
results
end
def records_continue?

View file

@ -53,10 +53,6 @@ class Api::V1::ConversationsController < Api::BaseController
.to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id))
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_conversations_url pagination_params(max_id: pagination_max_id) if records_continue?
end

View file

@ -29,10 +29,6 @@ class Api::V1::Crypto::EncryptedMessagesController < Api::BaseController
@encrypted_messages = @current_device.encrypted_messages.to_a_paginated_by_id(limit_param(LIMIT), params_slice(:max_id, :since_id, :min_id))
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_crypto_encrypted_messages_url pagination_params(max_id: pagination_max_id) if records_continue?
end
@ -41,12 +37,8 @@ class Api::V1::Crypto::EncryptedMessagesController < Api::BaseController
api_v1_crypto_encrypted_messages_url pagination_params(min_id: pagination_since_id) unless @encrypted_messages.empty?
end
def pagination_max_id
@encrypted_messages.last.id
end
def pagination_since_id
@encrypted_messages.first.id
def pagination_collection
@encrypted_messages
end
def records_continue?

View file

@ -38,10 +38,6 @@ class Api::V1::DomainBlocksController < Api::BaseController
current_account.domain_blocks
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_domain_blocks_url pagination_params(max_id: pagination_max_id) if records_continue?
end
@ -50,12 +46,8 @@ class Api::V1::DomainBlocksController < Api::BaseController
api_v1_domain_blocks_url pagination_params(since_id: pagination_since_id) unless @blocks.empty?
end
def pagination_max_id
@blocks.last.id
end
def pagination_since_id
@blocks.first.id
def pagination_collection
@blocks
end
def records_continue?

View file

@ -28,10 +28,6 @@ class Api::V1::EndorsementsController < Api::BaseController
current_account.endorsed_accounts.includes(:account_stat, :user).without_suspended
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
return if unlimited?
@ -44,12 +40,8 @@ class Api::V1::EndorsementsController < Api::BaseController
api_v1_endorsements_url pagination_params(since_id: pagination_since_id) unless @accounts.empty?
end
def pagination_max_id
@accounts.last.id
end
def pagination_since_id
@accounts.first.id
def pagination_collection
@accounts
end
def records_continue?

View file

@ -31,10 +31,6 @@ class Api::V1::FavouritesController < Api::BaseController
current_account.favourites
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_favourites_url pagination_params(max_id: pagination_max_id) if records_continue?
end
@ -43,12 +39,8 @@ class Api::V1::FavouritesController < Api::BaseController
api_v1_favourites_url pagination_params(min_id: pagination_since_id) unless results.empty?
end
def pagination_max_id
results.last.id
end
def pagination_since_id
results.first.id
def pagination_collection
results
end
def records_continue?

View file

@ -12,6 +12,10 @@ class Api::V1::FeaturedTags::SuggestionsController < Api::BaseController
private
def set_recently_used_tags
@recently_used_tags = Tag.recently_used(current_account).where.not(id: current_account.featured_tags).limit(10)
@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)
end
end

View file

@ -48,10 +48,6 @@ class Api::V1::FollowRequestsController < Api::BaseController
)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_follow_requests_url pagination_params(max_id: pagination_max_id) if records_continue?
end

View file

@ -22,10 +22,6 @@ class Api::V1::FollowedTagsController < Api::BaseController
)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_followed_tags_url pagination_params(max_id: pagination_max_id) if records_continue?
end
@ -34,12 +30,8 @@ class Api::V1::FollowedTagsController < Api::BaseController
api_v1_followed_tags_url pagination_params(since_id: pagination_since_id) unless @results.empty?
end
def pagination_max_id
@results.last.id
end
def pagination_since_id
@results.first.id
def pagination_collection
@results
end
def records_continue?

View file

@ -55,10 +55,6 @@ class Api::V1::Lists::AccountsController < Api::BaseController
params.permit(account_ids: [])
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
return if unlimited?
@ -71,12 +67,8 @@ class Api::V1::Lists::AccountsController < Api::BaseController
api_v1_list_accounts_url pagination_params(since_id: pagination_since_id) unless @accounts.empty?
end
def pagination_max_id
@accounts.last.id
end
def pagination_since_id
@accounts.first.id
def pagination_collection
@accounts
end
def records_continue?

View file

@ -28,10 +28,6 @@ class Api::V1::MutesController < Api::BaseController
)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_mutes_url pagination_params(max_id: pagination_max_id) if records_continue?
end
@ -40,12 +36,8 @@ class Api::V1::MutesController < Api::BaseController
api_v1_mutes_url pagination_params(since_id: pagination_since_id) unless paginated_mutes.empty?
end
def pagination_max_id
paginated_mutes.last.id
end
def pagination_since_id
paginated_mutes.first.id
def pagination_collection
paginated_mutes
end
def records_continue?

View file

@ -0,0 +1,37 @@
# frozen_string_literal: true
class Api::V1::Notifications::PoliciesController < Api::BaseController
before_action -> { doorkeeper_authorize! :read, :'read:notifications' }, only: :show
before_action -> { doorkeeper_authorize! :write, :'write:notifications' }, only: :update
before_action :require_user!
before_action :set_policy
def show
render json: @policy, serializer: REST::NotificationPolicySerializer
end
def update
@policy.update!(resource_params)
render json: @policy, serializer: REST::NotificationPolicySerializer
end
private
def set_policy
@policy = NotificationPolicy.find_or_initialize_by(account: current_account)
with_read_replica do
@policy.summarize!
end
end
def resource_params
params.permit(
:filter_not_following,
:filter_not_followers,
:filter_new_accounts,
:filter_private_mentions
)
end
end

View file

@ -0,0 +1,75 @@
# frozen_string_literal: true
class Api::V1::Notifications::RequestsController < Api::BaseController
before_action -> { doorkeeper_authorize! :read, :'read:notifications' }, only: :index
before_action -> { doorkeeper_authorize! :write, :'write:notifications' }, except: :index
before_action :require_user!
before_action :set_request, except: :index
after_action :insert_pagination_headers, only: :index
def index
with_read_replica do
@requests = load_requests
@relationships = relationships
end
render json: @requests, each_serializer: REST::NotificationRequestSerializer, relationships: @relationships
end
def show
render json: @request, serializer: REST::NotificationRequestSerializer
end
def accept
AcceptNotificationRequestService.new.call(@request)
render_empty
end
def dismiss
@request.update!(dismissed: true)
render_empty
end
private
def load_requests
requests = NotificationRequest.where(account: current_account).where(dismissed: truthy_param?(:dismissed) || false).includes(:last_status, from_account: [:account_stat, :user]).to_a_paginated_by_id(
limit_param(DEFAULT_ACCOUNTS_LIMIT),
params_slice(:max_id, :since_id, :min_id)
)
NotificationRequest.preload_cache_collection(requests) do |statuses|
cache_collection(statuses, Status)
end
end
def relationships
StatusRelationshipsPresenter.new(@requests.map(&:last_status), current_user&.account_id)
end
def set_request
@request = NotificationRequest.where(account: current_account).find(params[:id])
end
def next_path
api_v1_notifications_requests_url pagination_params(max_id: pagination_max_id) unless @requests.empty?
end
def prev_path
api_v1_notifications_requests_url pagination_params(min_id: pagination_since_id) unless @requests.empty?
end
def pagination_max_id
@requests.last.id
end
def pagination_since_id
@requests.first.id
end
def pagination_params(core_params)
params.slice(:dismissed).permit(:dismissed).merge(core_params)
end
end

View file

@ -49,7 +49,8 @@ class Api::V1::NotificationsController < Api::BaseController
current_account.notifications.without_suspended.browserable(
types: Array(browserable_params[:types]),
exclude_types: Array(browserable_params[:exclude_types]),
from_account_id: browserable_params[:account_id]
from_account_id: browserable_params[:account_id],
include_filtered: truthy_param?(:include_filtered)
)
end
@ -57,10 +58,6 @@ class Api::V1::NotificationsController < Api::BaseController
@notifications.reject { |notification| notification.target_status.nil? }.map(&:target_status)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_notifications_url pagination_params(max_id: pagination_max_id) unless @notifications.empty?
end
@ -69,19 +66,15 @@ class Api::V1::NotificationsController < Api::BaseController
api_v1_notifications_url pagination_params(min_id: pagination_since_id) unless @notifications.empty?
end
def pagination_max_id
@notifications.last.id
end
def pagination_since_id
@notifications.first.id
def pagination_collection
@notifications
end
def browserable_params
params.permit(:account_id, types: [], exclude_types: [])
params.permit(:account_id, :include_filtered, types: [], exclude_types: [])
end
def pagination_params(core_params)
params.slice(:limit, :account_id, :types, :exclude_types).permit(:limit, :account_id, types: [], exclude_types: []).merge(core_params)
params.slice(:limit, :account_id, :types, :exclude_types, :include_filtered).permit(:limit, :account_id, :include_filtered, types: [], exclude_types: []).merge(core_params)
end
end

View file

@ -47,10 +47,6 @@ class Api::V1::ScheduledStatusesController < Api::BaseController
params.slice(:limit).permit(:limit).merge(core_params)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_scheduled_statuses_url pagination_params(max_id: pagination_max_id) if records_continue?
end
@ -63,11 +59,7 @@ class Api::V1::ScheduledStatusesController < Api::BaseController
@statuses.size == limit_param(DEFAULT_STATUSES_LIMIT)
end
def pagination_max_id
@statuses.last.id
end
def pagination_since_id
@statuses.first.id
def pagination_collection
@statuses
end
end

View file

@ -34,10 +34,6 @@ class Api::V1::Statuses::FavouritedByAccountsController < Api::V1::Statuses::Bas
)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_status_favourited_by_index_url pagination_params(max_id: pagination_max_id) if records_continue?
end

View file

@ -30,10 +30,6 @@ class Api::V1::Statuses::RebloggedByAccountsController < Api::V1::Statuses::Base
)
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def next_path
api_v1_status_reblogged_by_index_url pagination_params(max_id: pagination_max_id) if records_continue?
end

View file

@ -5,16 +5,8 @@ class Api::V1::Timelines::BaseController < Api::BaseController
private
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def pagination_max_id
@statuses.last.id
end
def pagination_since_id
@statuses.first.id
def pagination_collection
@statuses
end
def next_path_params

View file

@ -34,10 +34,6 @@ class Api::V1::Trends::LinksController < Api::BaseController
scope
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def pagination_params(core_params)
params.slice(:limit).permit(:limit).merge(core_params)
end

View file

@ -32,10 +32,6 @@ class Api::V1::Trends::StatusesController < Api::BaseController
scope
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def pagination_params(core_params)
params.slice(:limit).permit(:limit).merge(core_params)
end

View file

@ -30,10 +30,6 @@ class Api::V1::Trends::TagsController < Api::BaseController
Trends.tags.query.allowed
end
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
def pagination_params(core_params)
params.slice(:limit).permit(:limit).merge(core_params)
end

View file

@ -129,7 +129,7 @@ class ApplicationController < ActionController::Base
end
def single_user_mode?
@single_user_mode ||= Rails.configuration.x.single_user_mode && Account.where('id > 0').exists?
@single_user_mode ||= Rails.configuration.x.single_user_mode && Account.without_internal.exists?
end
def use_seamless_external_login?
@ -178,7 +178,7 @@ class ApplicationController < ActionController::Base
respond_to do |format|
format.any { render 'errors/self_destruct', layout: 'auth', status: 410, formats: [:html] }
format.json { render json: { error: Rack::Utils::HTTP_STATUS_CODES[410] }, status: code }
format.json { render json: { error: Rack::Utils::HTTP_STATUS_CODES[410] }, status: 410 }
end
end

View file

@ -0,0 +1,52 @@
# frozen_string_literal: true
module Api::ErrorHandling
extend ActiveSupport::Concern
included do
rescue_from ActiveRecord::RecordInvalid, Mastodon::ValidationError do |e|
render json: { error: e.to_s }, status: 422
end
rescue_from ActiveRecord::RecordNotUnique do
render json: { error: 'Duplicate record' }, status: 422
end
rescue_from Date::Error do
render json: { error: 'Invalid date supplied' }, status: 422
end
rescue_from ActiveRecord::RecordNotFound do
render json: { error: 'Record not found' }, status: 404
end
rescue_from HTTP::Error, Mastodon::UnexpectedResponseError do
render json: { error: 'Remote data could not be fetched' }, status: 503
end
rescue_from OpenSSL::SSL::SSLError do
render json: { error: 'Remote SSL certificate could not be verified' }, status: 503
end
rescue_from Mastodon::NotPermittedError do
render json: { error: 'This action is not allowed' }, status: 403
end
rescue_from Seahorse::Client::NetworkingError do |e|
Rails.logger.warn "Storage server error: #{e}"
render json: { error: 'There was a temporary problem serving your request, please try again' }, status: 503
end
rescue_from Mastodon::RaceConditionError, Stoplight::Error::RedLight do
render json: { error: 'There was a temporary problem serving your request, please try again' }, status: 503
end
rescue_from Mastodon::RateLimitExceededError do
render json: { error: I18n.t('errors.429') }, status: 429
end
rescue_from ActionController::ParameterMissing, Mastodon::InvalidParameterError do |e|
render json: { error: e.to_s }, status: 400
end
end
end

View file

@ -16,6 +16,6 @@ class CustomCssController < ActionController::Base # rubocop:disable Rails/Appli
helper_method :custom_css_styles
def set_user_roles
@user_roles = UserRole.where(highlighted: true).where.not(color: [nil, ''])
@user_roles = UserRole.providing_styles
end
end

View file

@ -6,6 +6,8 @@ class InstanceActorsController < ActivityPub::BaseController
serialization_scope nil
before_action :set_account
skip_before_action :authenticate_user! # From `AccountOwnedConcern`
skip_before_action :require_functional!
skip_before_action :update_user_sign_in
@ -16,6 +18,11 @@ class InstanceActorsController < ActivityPub::BaseController
private
# Skips various `before_action` from `AccountOwnedConcern`
def account_required?
false
end
def set_account
@account = Account.representative
end

View file

@ -0,0 +1,61 @@
# frozen_string_literal: true
class SeveredRelationshipsController < ApplicationController
layout 'admin'
before_action :authenticate_user!
before_action :set_body_classes
before_action :set_cache_headers
before_action :set_event, only: [:following, :followers]
def index
@events = AccountRelationshipSeveranceEvent.where(account: current_account)
end
def following
respond_to do |format|
format.csv { send_data following_data, filename: "following-#{@event.target_name}-#{@event.created_at.to_date.iso8601}.csv" }
end
end
def followers
respond_to do |format|
format.csv { send_data followers_data, filename: "followers-#{@event.target_name}-#{@event.created_at.to_date.iso8601}.csv" }
end
end
private
def set_event
@event = AccountRelationshipSeveranceEvent.find(params[:id])
end
def following_data
CSV.generate(headers: ['Account address', 'Show boosts', 'Notify on new posts', 'Languages'], write_headers: true) do |csv|
@event.severed_relationships.active.about_local_account(current_account).includes(:remote_account).reorder(id: :desc).each do |follow|
csv << [acct(follow.target_account), follow.show_reblogs, follow.notify, follow.languages&.join(', ')]
end
end
end
def followers_data
CSV.generate(headers: ['Account address'], write_headers: true) do |csv|
@event.severed_relationships.passive.about_local_account(current_account).includes(:remote_account).reorder(id: :desc).each do |follow|
csv << [acct(follow.account)]
end
end
end
def acct(account)
account.local? ? account.local_username_and_domain : account.acct
end
def set_body_classes
@body_classes = 'admin'
end
def set_cache_headers
response.cache_control.replace(private: true, no_store: true)
end
end

View file

@ -28,14 +28,6 @@ module ApplicationHelper
number_to_human(number, **options)
end
def active_nav_class(*paths)
paths.any? { |path| current_page?(path) } ? 'active' : ''
end
def show_landing_strip?
!user_signed_in? && !single_user_mode?
end
def open_registrations?
Setting.registrations_mode == 'open'
end
@ -122,7 +114,7 @@ module ApplicationHelper
end
def check_icon
content_tag(:svg, tag.path('fill-rule': 'evenodd', 'clip-rule': 'evenodd', d: 'M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z'), xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 20 20', fill: 'currentColor')
inline_svg_tag 'check.svg'
end
def visibility_icon(status)
@ -213,7 +205,7 @@ module ApplicationHelper
state_params[:moved_to_account] = current_account.moved_to_account
end
state_params[:owner] = Account.local.without_suspended.where('id > 0').first if single_user_mode?
state_params[:owner] = Account.local.without_suspended.without_internal.first if single_user_mode?
json = ActiveModelSerializers::SerializableResource.new(InitialStatePresenter.new(state_params), serializer: InitialStateSerializer).to_json
# rubocop:disable Rails/OutputSafety

View file

@ -21,15 +21,4 @@ module BrandingHelper
def render_logo
image_pack_tag('logo.svg', alt: 'Mastodon', class: 'logo logo--icon')
end
def render_symbol(version = :icon)
path = case version
when :icon
'logo-symbol-icon.svg'
when :wordmark
'logo-symbol-wordmark.svg'
end
render(file: Rails.root.join('app', 'javascript', 'images', path)).html_safe # rubocop:disable Rails/OutputSafety
end
end

View file

@ -24,12 +24,21 @@ module ContextHelper
memorial: { 'toot' => 'http://joinmastodon.org/ns#', 'memorial' => 'toot:memorial' },
voters_count: { 'toot' => 'http://joinmastodon.org/ns#', 'votersCount' => 'toot:votersCount' },
olm: {
'toot' => 'http://joinmastodon.org/ns#', 'Device' => 'toot:Device', 'Ed25519Signature' => 'toot:Ed25519Signature', 'Ed25519Key' => 'toot:Ed25519Key', 'Curve25519Key' => 'toot:Curve25519Key', 'EncryptedMessage' => 'toot:EncryptedMessage', 'publicKeyBase64' => 'toot:publicKeyBase64', 'deviceId' => 'toot:deviceId',
'toot' => 'http://joinmastodon.org/ns#',
'Device' => 'toot:Device',
'Ed25519Signature' => 'toot:Ed25519Signature',
'Ed25519Key' => 'toot:Ed25519Key',
'Curve25519Key' => 'toot:Curve25519Key',
'EncryptedMessage' => 'toot:EncryptedMessage',
'publicKeyBase64' => 'toot:publicKeyBase64',
'deviceId' => 'toot:deviceId',
'claim' => { '@type' => '@id', '@id' => 'toot:claim' },
'fingerprintKey' => { '@type' => '@id', '@id' => 'toot:fingerprintKey' },
'identityKey' => { '@type' => '@id', '@id' => 'toot:identityKey' },
'devices' => { '@type' => '@id', '@id' => 'toot:devices' },
'messageFranking' => 'toot:messageFranking', 'messageType' => 'toot:messageType', 'cipherText' => 'toot:cipherText'
'messageFranking' => 'toot:messageFranking',
'messageType' => 'toot:messageType',
'cipherText' => 'toot:cipherText',
},
suspended: { 'toot' => 'http://joinmastodon.org/ns#', 'suspended' => 'toot:suspended' },
}.freeze

View file

@ -109,6 +109,7 @@ module LanguagesHelper
mn: ['Mongolian', 'Монгол хэл'].freeze,
mr: ['Marathi', 'मराठी'].freeze,
ms: ['Malay', 'Bahasa Melayu'].freeze,
'ms-Arab': ['Jawi Malay', 'بهاس ملايو'].freeze,
mt: ['Maltese', 'Malti'].freeze,
my: ['Burmese', 'ဗမာစာ'].freeze,
na: ['Nauru', 'Ekakairũ Naoero'].freeze,
@ -127,7 +128,7 @@ module LanguagesHelper
om: ['Oromo', 'Afaan Oromoo'].freeze,
or: ['Oriya', 'ଓଡ଼ିଆ'].freeze,
os: ['Ossetian', 'ирон æвзаг'].freeze,
pa: ['Panjabi', 'ਪੰਜਾਬੀ'].freeze,
pa: ['Punjabi', 'ਪੰਜਾਬੀ'].freeze,
pi: ['Pāli', 'पाऴि'].freeze,
pl: ['Polish', 'Polski'].freeze,
ps: ['Pashto', 'پښتو'].freeze,
@ -191,15 +192,20 @@ module LanguagesHelper
chr: ['Cherokee', 'ᏣᎳᎩ ᎦᏬᏂᎯᏍᏗ'].freeze,
ckb: ['Sorani (Kurdish)', 'سۆرانی'].freeze,
cnr: ['Montenegrin', 'crnogorski'].freeze,
csb: ['Kashubian', 'Kaszëbsczi'].freeze,
jbo: ['Lojban', 'la .lojban.'].freeze,
kab: ['Kabyle', 'Taqbaylit'].freeze,
ldn: ['Láadan', 'Láadan'].freeze,
lfn: ['Lingua Franca Nova', 'lingua franca nova'].freeze,
moh: ['Mohawk', 'Kanienʼkéha'].freeze,
nds: ['Low German', 'Plattdüütsch'].freeze,
pdc: ['Pennsylvania Dutch', 'Pennsilfaani-Deitsch'].freeze,
sco: ['Scots', 'Scots'].freeze,
sma: ['Southern Sami', 'Åarjelsaemien Gïele'].freeze,
smj: ['Lule Sami', 'Julevsámegiella'].freeze,
szl: ['Silesian', 'ślůnsko godka'].freeze,
tok: ['Toki Pona', 'toki pona'].freeze,
vai: ['Vai', 'ꕙꔤ'].freeze,
xal: ['Kalmyk', 'Хальмг келн'].freeze,
zba: ['Balaibalan', 'باليبلن'].freeze,
zgh: ['Standard Moroccan Tamazight', 'ⵜⴰⵎⴰⵣⵉⵖⵜ'].freeze,

View file

@ -4,14 +4,6 @@ module StatusesHelper
EMBEDDED_CONTROLLER = 'statuses'
EMBEDDED_ACTION = 'embed'
def link_to_newer(url)
link_to t('statuses.show_newer'), url, class: 'load-more load-gap'
end
def link_to_older(url)
link_to t('statuses.show_older'), url, class: 'load-more load-gap'
end
def nothing_here(extra_classes = '')
content_tag(:div, class: "nothing-here #{extra_classes}") do
t('accounts.nothing_here')

View file

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z" />
</svg>

After

Width:  |  Height:  |  Size: 293 B

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020-2024 Paweł Kuna
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -0,0 +1 @@
Images in this folder are based on [Tabler.io icons](https://tabler.io/icons).

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020-2024 Paweł Kuna
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -0,0 +1 @@
Images in this folder are based on [Tabler.io icons](https://tabler.io/icons).

View file

Before

Width:  |  Height:  |  Size: 547 B

After

Width:  |  Height:  |  Size: 547 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

View file

Before

Width:  |  Height:  |  Size: 505 B

After

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

Before

Width:  |  Height:  |  Size: 688 B

After

Width:  |  Height:  |  Size: 688 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

Before

Width:  |  Height:  |  Size: 709 B

After

Width:  |  Height:  |  Size: 709 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

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