]> Untitled Git - lemmy.git/log
lemmy.git
10 months agoReduce amount of columns selected (#3755)
dullbananas [Tue, 8 Aug 2023 09:41:10 +0000 (02:41 -0700)]
Reduce amount of columns selected (#3755)

* PostAggregatesNotInPost

* CommentAggregatesNotInComment

* CommunityPersonBanAdditionalInfo (partial)

* Revert "CommunityPersonBanAdditionalInfo (partial)"

This reverts commit 158f7f0cd9a07392fb1f457ac43c8d7c57e4190d.

* Replace some nullable parts of selection with id::nullable().is_not_null()

* CommunityFollower::select_subscribed_type

* WithoutId

* Add WithoutId derives

* Update Cargo.toml

* rerun ci

* Fix syntatx errors

* rerun ci

* Add missing "|" in private_message_report_view.rs

* rerun ci

* cargo fmt

* rerun ci

* Only derive WithoutId for Community with "full" feature

* rerun ci

* Fix attribute filtering in WithoutId macro

* rerun ci

* Update without_id.rs

* rerun ci

* Update without_id.rs

* rerun ci

* Fix errors

* rerun ci

* cargo fmt

* Fix errors

* rerun ci

* Move WithoutId to lib.rs

* rerun ci

* Remove macro_use for paste

* rerun ci

* Update comment_reply_view.rs

* rerun ci

* Update registration_application_view.rs

* rerun ci

* Revert "Update registration_application_view.rs"

This reverts commit 2e98e4bb8385b4630ed2d1dfdd8da9a35c0126b2.

* Revert "Update comment_reply_view.rs"

This reverts commit 857bf9f5a2413ff0e6e6c95e1157e8ce6bf9c0c3.

* Revert "Remove macro_use for paste"

This reverts commit 13247279ed9090f2d3c5c6525b9611529217d605.

* Revert "Move WithoutId to lib.rs"

This reverts commit 0c23e5213be1366bb64029e2007e97194e126676.

* Revert "Fix errors"

This reverts commit a283d155e5622bba0b6df8b07649fc246df8bb77.

* Revert "cargo fmt"

This reverts commit 36a5210352809b3ca417ec3b869ae4baaca17e16.

* Revert "Fix errors"

This reverts commit c9102c14f466a5d6175732625e74183579ee2be5.

* Revert "Update without_id.rs"

This reverts commit 19adb2fcc805f92f6720a439f3b2c80a2b866938.

* Revert "Update without_id.rs"

This reverts commit e26107a2fe30cc2ec81797830e3a34a1676619e4.

* Revert "Fix attribute filtering in WithoutId macro"

This reverts commit acaa4902b0e7e33205c5d287cd22b83732a1a401.

* Revert "Only derive WithoutId for Community with "full" feature"

This reverts commit de0e9c6fdc3c9344998d9d72e5e361a7f009c829.

* Revert "cargo fmt"

This reverts commit 5e1bd1ce58e997e9431f212fd2ee0283faaf6da3.

* Revert "Add missing "|" in private_message_report_view.rs"

This reverts commit c7ae9f1cd50dfead0fbc363d93692f82274ff870.

* Revert "Fix syntatx errors"

This reverts commit d942f099de8128b5a02fe74f5af43a4453a06350.

* Revert "Update Cargo.toml"

This reverts commit 23cdb6f6d3df6d2db06173f066c117a0c96dd8e1.

* Revert "Add WithoutId derives"

This reverts commit 06006d6ad338e946410962f4276f67fe5096ad5a.

* Revert "WithoutId"

This reverts commit 5e86922b0fd5bf08d114a8eee5d1e10b2ea534ee.

* Revert "CommentAggregatesNotInComment"

This reverts commit 603aede7cecacd246664f7f3f0047202f80d9938.

* Revert "PostAggregatesNotInPost"

This reverts commit 1ee3fcaeab8705e4e0e849ae6b93b45716aa9cc0.

* Restore original position of options.saved_only filter

* rerun ci

* Update post_view.rs

* rerun ci

10 months agoAllow filtering posts and comments by whether they were liked/disliked - fixes #3401...
Piotr Juszczyk [Tue, 8 Aug 2023 09:40:28 +0000 (11:40 +0200)]
Allow filtering posts and comments by whether they were liked/disliked - fixes #3401 (#3523)

* Allow filtering posts and comments by whether they were liked/disliked

* Switch to 2 args - liked_only, disliked_only - taking bools

* Make liked_only and disliked_only Option<bool>

* Fix unrelated is_profile_view compilation error

10 months agoAllow filtering PMs by sender (#3770)
Alex Lavallee [Tue, 8 Aug 2023 09:07:41 +0000 (02:07 -0700)]
Allow filtering PMs by sender (#3770)

* Allow filtering PMs by sender

* Fix retreiving own messages when filtering pm creator id

* Add tests

* Undo rename

* Fix PM tests

* Fix formatting for PMs

* Fix PM test formatting

* Rename PM creator_id field

* Fix PM formatting

11 months agoRevert "Version 0.18.4-rc.2"
Felix Ableitner [Mon, 7 Aug 2023 15:12:09 +0000 (17:12 +0200)]
Revert "Version 0.18.4-rc.2"

This reverts commit 48466b68264ad1ac9ee09e712f6f31782a547076.

11 months agoVersion 0.18.4-rc.2
Felix Ableitner [Mon, 7 Aug 2023 15:09:10 +0000 (17:09 +0200)]
Version 0.18.4-rc.2

11 months agoFix sanitize_html whitespaces (#3829)
maxime.io [Mon, 7 Aug 2023 12:22:52 +0000 (14:22 +0200)]
Fix sanitize_html whitespaces (#3829)

11 months agoRevert "Attempt to fix CI building wrong commits (#3830)"
Felix Ableitner [Mon, 7 Aug 2023 11:19:07 +0000 (13:19 +0200)]
Revert "Attempt to fix CI building wrong commits (#3830)"

This reverts commit 5e9930bdccb07b172b05dcda9eb742d01e52ac5c.

11 months agoAttempt to fix CI building wrong commits (#3830)
dullbananas [Mon, 7 Aug 2023 10:40:50 +0000 (03:40 -0700)]
Attempt to fix CI building wrong commits (#3830)

* Attempt to fix CI building wrong commits

* Update .woodpecker.yml

* Update .woodpecker.yml

11 months agoFix ordering when doing a comment_parent type `list_comments` (#3823)
Dessalines [Mon, 7 Aug 2023 09:11:07 +0000 (05:11 -0400)]
Fix ordering when doing a comment_parent type `list_comments` (#3823)

* Fix ordering when doing a comment_parent type GetPost.

* Fix missing options.

11 months agoRemove unused db view options (#3787)
Nutomic [Fri, 4 Aug 2023 15:36:36 +0000 (17:36 +0200)]
Remove unused db view options (#3787)

* Remove unused db view options

* fix tests

* ci

11 months agoRemove form_id params (#3812)
Nutomic [Fri, 4 Aug 2023 13:22:43 +0000 (15:22 +0200)]
Remove form_id params (#3812)

11 months agoUpdate QUESTION.yml, remove UI (#3807)
Maarten Vercruysse [Thu, 3 Aug 2023 09:12:21 +0000 (11:12 +0200)]
Update QUESTION.yml, remove UI (#3807)

11 months agoFixing broken SQL migration formatting. (#3800)
Dessalines [Thu, 3 Aug 2023 09:07:35 +0000 (05:07 -0400)]
Fixing broken SQL migration formatting. (#3800)

* Fixing SQL format.

* Fixing clippy lints.

* Fixing clippy lint 2.

11 months agoDont use sha hash for password reset token (fixes #3491) (#3795)
Nutomic [Wed, 2 Aug 2023 17:02:53 +0000 (19:02 +0200)]
Dont use sha hash for password reset token (fixes #3491) (#3795)

11 months agoRewrite remaining federation actions, get rid of PerformCrud trait (#3794)
Nutomic [Wed, 2 Aug 2023 16:52:41 +0000 (18:52 +0200)]
Rewrite remaining federation actions, get rid of PerformCrud trait (#3794)

* Rewrite ban actions

* Rewrite delete/remove actions

* Rewrite remove/delete community

* Rewrite report actions

* Rewrite feature/lock post

* Rewrite update community actions

* Rewrite remaining federation actions

* Get rid of PerformCrud trait

* clippy

11 months agoAdding SQL format checking via `pg_format` / pgFormatter (#3740)
Dessalines [Wed, 2 Aug 2023 16:44:51 +0000 (12:44 -0400)]
Adding SQL format checking via `pg_format` / pgFormatter (#3740)

* SQL format checking, 1.

* SQL format checking, 2.

* SQL format checking, 3.

* SQL format checking, 4.

* SQL format checking, 5.

* Running pg_format

* Getting rid of comment.

* Upping pg_format version.

* Using git ls-files for sql format check.

* Fixing sql lints.

* Addressing PR comments.

11 months agoDo not hide read posts when it is a user profile view (#3791)
RocketDerp [Wed, 2 Aug 2023 16:31:28 +0000 (09:31 -0700)]
Do not hide read posts when it is a user profile view (#3791)

11 months agoOnly run slow CI checks for actual code changes (attempt 2) (#3759)
Nutomic [Wed, 2 Aug 2023 16:29:21 +0000 (18:29 +0200)]
Only run slow CI checks for actual code changes (attempt 2) (#3759)

* Only run slow CI checks for actual code changes (attempt 2)

* use when path include

* change rust

* update

* x

* y

* zsad

* remove println

* fmt

* readme

* Revert "readme"

This reverts commit d58b6ad9731d8c6009d8680d0126d9e9f0af3103.

* ci

* gitmodules

11 months agoRemove follow community traits (#3737)
Louis GERARD [Wed, 2 Aug 2023 09:32:16 +0000 (11:32 +0200)]
Remove follow community traits (#3737)

* chore(FollowCommunity): remove Perform and Send Activity traits

* chore(FollowCommunity): avoid fetching community and person from db

11 months agoDefault imprementations for read and delete in Crud trait (#3707)
dullbananas [Tue, 1 Aug 2023 14:34:10 +0000 (07:34 -0700)]
Default imprementations for read and delete in Crud trait (#3707)

* h

* Start doing stuff

* Default impl for Crud::read

* Simplify Crud::read lifetimes

* fmt

* Stuff

* Stuff

* Successfully make default read implementation work

* Restore Person::read

* Clean up default Crud::read and rename 'query2

* Replace filter with find

* Attempt default Crud::create

* Change Crud to Crud<'a> (won't compile)

* Revert "Change Crud to Crud<'a> (won't compile)"

This reverts commit 7ed20f5f713600bd48c85aad0848d8dbaae56503.

* Default Crud::delete

* Remove Crud::delete definitions that match default

* Remove commented Site::read

* Insert trait

* Revert "Insert trait"

This reverts commit 9d780c24035d3a9fb12968d3009a28724046dc3a.

* Use non-borrowed forms

* Revert "Use non-borrowed forms"

This reverts commit d2dd4425634b54ef105aab44f1c37cc10a32491e.

* Revert "Revert "Change Crud to Crud<'a> (won't compile)""

This reverts commit 25a27165a8ef56495e9f605ac15c9924b101d1bf.

* Fix lifetime for everything except Crud::delete

* Fix Crud::delete

* Add comment about futures

* Attempt Crud::create

* Attempt separate CrudBounds

* Revert "Attempt separate CrudBounds"

This reverts commit 1b4ca321c3d2a1d045e2f4c542c593582e9c6d80.

* Try to fix Crud::create

* Move lifetime parameters to associated types

* Revert "Move lifetime parameters to associated types"

This reverts commit af1bc858ce5e1dacddc4bbded2da7e4b7237e237.

* Revert "Try to fix Crud::create"

This reverts commit eec238496c38127cbf3d542b7cfd57ec55622d1f.

* Revert "Revert "Attempt separate CrudBounds""

This reverts commit 1ec33ce5022c58a5ad079ed7f5c220fafe5f0a5f.

* Revert "Attempt separate CrudBounds"

This reverts commit 1b4ca321c3d2a1d045e2f4c542c593582e9c6d80.

* Revert "Attempt Crud::create"

This reverts commit 47e8071b6826f27e2a562680b4948c37dffa68cb.

* Revert "Add comment about futures"

This reverts commit b266b1465393995b3be51d5ba207d5249560884f.

* Revert "Fix Crud::delete"

This reverts commit 3abcce2eec55208993dd9c7c3e51cff83412d15a.

* Revert "Fix lifetime for everything except Crud::delete"

This reverts commit c1ad7a161bbc8495dbfb8b52073f35ae88519da6.

* Revert "Revert "Revert "Change Crud to Crud<'a> (won't compile)"""

This reverts commit 3129cd0fc302f34bc0aad59987b9d0eb1139076c.

* Clean up

* Update site.rs

11 months agoRewrite some federation actions to remove Perform/SendActivity (ref #3670) (#3758)
Nutomic [Tue, 1 Aug 2023 13:53:36 +0000 (15:53 +0200)]
Rewrite some federation actions to remove Perform/SendActivity (ref #3670) (#3758)

11 months agoEnhanced testing of comments. Validate reply notifications, mentions (#3686)
RocketDerp [Tue, 1 Aug 2023 13:14:40 +0000 (06:14 -0700)]
Enhanced testing of comments. Validate reply notifications, mentions (#3686)

* shared.ts first test of getReplies

* comment testing now validates reply notifications and mentions, some code comment cleanup in other functions

* comments revised

* first use of getUnreadCount in testing

* test notification of new comment replies, clarify usage of getReplies

* killall moved earlier in bash script

* api-test jest run does not need directory prefix, make consistent with other jest runs

* do not put my testing system password into script

* fix, killall exits script when no process found

* killall now moved to parent script to release locks before database create

* need to run killall a second time, before database drop

* first use of getReplies getPosts saveUserSettings

* accidental duplication of functions, removed

* try to sync shared library with main

* Nutomic feedback: Better to rename the var instead of putting a comment which can easily get outdated.

* Correct logic to meet join-lemmy requirement, don't have closed signups. Allows Open and Applications. (#3761)

Co-authored-by: Josh Bernardini <josh.bernardini@cologix.com>
* Fix fetch instance software version from nodeinfo (#3772)

Fixes #3771

* remove unused code, revert killall change

---------

Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
Co-authored-by: figure-0e <133478007+figure-0e@users.noreply.github.com>
Co-authored-by: Josh Bernardini <josh.bernardini@cologix.com>
Co-authored-by: Denis Dzyubenko <denis@ddenis.info>
Co-authored-by: Felix Ableitner <me@nutomic.com>
11 months agoFix fetch instance software version from nodeinfo (#3772)
Denis Dzyubenko [Tue, 1 Aug 2023 08:55:28 +0000 (10:55 +0200)]
Fix fetch instance software version from nodeinfo (#3772)

Fixes #3771

11 months agoCorrect logic to meet join-lemmy requirement, don't have closed signups. Allows Open...
figure-0e [Tue, 1 Aug 2023 08:40:42 +0000 (02:40 -0600)]
Correct logic to meet join-lemmy requirement, don't have closed signups. Allows Open and Applications. (#3761)

Co-authored-by: Josh Bernardini <josh.bernardini@cologix.com>
11 months agoRevert "Only run slow CI checks for actual code changes (#3750)"
Felix Ableitner [Fri, 28 Jul 2023 20:44:45 +0000 (22:44 +0200)]
Revert "Only run slow CI checks for actual code changes (#3750)"

This reverts commit a34e0d477eb8bcc9acc5b3df44f843bf636b173a.

11 months agoUpdate CODEOWNERS (#3748)
Nutomic [Fri, 28 Jul 2023 15:16:18 +0000 (17:16 +0200)]
Update CODEOWNERS (#3748)

11 months agoDelete migrations_testing folder (#3751)
Nutomic [Fri, 28 Jul 2023 15:14:26 +0000 (17:14 +0200)]
Delete migrations_testing folder (#3751)

Its completely unused as far as I can see

11 months agoMove entry from .rgignore to .gitignore (#3752)
Nutomic [Fri, 28 Jul 2023 15:11:18 +0000 (17:11 +0200)]
Move entry from .rgignore to .gitignore (#3752)

rg command respects gitignore, and sql dumps should be ignored by
git as well. So theres no reason to have a separate file.

11 months agoRewrite some API handlers to remove Perform trait (#3735)
Nutomic [Fri, 28 Jul 2023 14:39:38 +0000 (16:39 +0200)]
Rewrite some API handlers to remove Perform trait (#3735)

* Rewrite some API handlers to remove Perform trait

* Convert CreateComment

* ci

11 months agoAdding 0.18.3 Release notes. (#3753)
Dessalines [Fri, 28 Jul 2023 14:33:45 +0000 (10:33 -0400)]
Adding 0.18.3 Release notes. (#3753)

11 months agoOnly run slow CI checks for actual code changes (#3750)
Nutomic [Fri, 28 Jul 2023 13:33:23 +0000 (15:33 +0200)]
Only run slow CI checks for actual code changes (#3750)

* Only run slow CI checks for actual code changes

Its a waste of time to compile Rust and run tests when only
something like the readme was changed.

* also make cache restore/rebuild conditional

* remove unused condition

11 months agoRestore markdown quotes after sanitize (#3708) (#3749)
Nutomic [Fri, 28 Jul 2023 12:23:46 +0000 (14:23 +0200)]
Restore markdown quotes after sanitize (#3708) (#3749)

11 months agoUse same table join code for both read and list functions (#3663)
dullbananas [Fri, 28 Jul 2023 08:36:50 +0000 (01:36 -0700)]
Use same table join code for both read and list functions (#3663)

* Try stuff

* Revert "Try stuff"

This reverts commit 3da5f83a8b4928368bf58e0061091c270259a226.

* Revert "Revert "Try stuff""

This reverts commit 178bd43cac8c7674d30d2c285ed47ca0493ad659.

* Revert "Revert "Revert "Try stuff"""

This reverts commit b9f9a2316e7cd37082319608c606a1c7db057206.

* Revert "Revert "Revert "Revert "Try stuff""""

This reverts commit ccd498dd7228050ae05d2022e9106034fd4132f8.

* Try more stuff

* Add queries function

* Simplify queries function

* Move aliases to db_schema

* Revert "Move aliases to db_schema"

This reverts commit 69afed05c1807c3fef8d5b5872546fa22e60b4d0.

* Add ReadFuture and ListFuture

* Refactor queries function and add Queries struct

* Box futures in Queries::new

* Use from_tuple

* Add comment_view::queries and improve comment_report_view::queries

* Add local_user_view::queries

* Add post_report_view::queries

* Ad post_view::queries

* Add private_message_report_view::queries

* private_message_view, registration_application_view

* Use 'a in BoxedQuery

* comment_reply_view, community_view

* Change aliases to inline module

* person_mention_view

* person_view

* Use separate community_person_ban joins instead of including boolean literal in join-on clause

* Fix comment_view

* rerun ci

11 months agoremove n^2 part of person triggers, improve community aggregate trigger (#3739)
phiresky [Thu, 27 Jul 2023 21:36:51 +0000 (23:36 +0200)]
remove n^2 part of person triggers, improve community aggregate trigger (#3739)

* remove n^2 part of person triggers, improve community aggregate trigger

* comment out comment_score tests since previously they only accidentally succeeded

* empty

11 months agoremove performance-problematic and buggy duplicate site aggregates (#3732)
phiresky [Thu, 27 Jul 2023 21:35:53 +0000 (23:35 +0200)]
remove performance-problematic and buggy duplicate site aggregates (#3732)

11 months agoChange readme installation link (#3736)
Nutomic [Thu, 27 Jul 2023 13:42:52 +0000 (15:42 +0200)]
Change readme installation link (#3736)

Replaces https://github.com/LemmyNet/lemmy/pull/3551

11 months agoFederation tests replication round1 - demonstrate absent replication of comment delet...
RocketDerp [Thu, 27 Jul 2023 10:17:40 +0000 (03:17 -0700)]
Federation tests replication round1 - demonstrate absent replication of comment deletes (#3657)

* more robust test of unlike a comment, confirm replication to instance downstream from community home

* more robust 'delete a comment' test, confirm replication

* Far more robust "Report a comment" test. Many comments about situation, this is currently failing because gamma does not get the report

* typo and actually have Gamma comment check use gamma, not alpha

* prepare-drone-federation-test.sh has some more echo output and note about the LEMMY_DATABASE_URL format (#3651)

* Add http cache for webfingers (#3317)

* Add http cache for webfingers

* Remove the outgoing cache middleware & adjust the cache headers directive

* Use 1h & 3day cache header

* Update routes and adjust the cache headers location

* revert apub caching

---------

Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
Co-authored-by: Felix Ableitner <me@nutomic.com>
* Rewrite activity lists to fix delete federation (fixes #3625)

* Revert "typo and actually have Gamma comment check use gamma, not alpha"

This reverts commit 7dfb6ee0f4885da3a2d10316422f5b510772806c.

* Revert "Far more robust "Report a comment" test. Many comments about situation, this is currently failing because gamma does not get the report"

This reverts commit 7bd3b20ae08a64324029491ddb3ce4295ba16787.

* prettier TypeScript

* revised comments, as ResolveObject isn't using routine replication

* fmt

* fix api tests

* remove comment

---------

Co-authored-by: cetra3 <cetra3@hotmail.com>
Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
Co-authored-by: Felix Ableitner <me@nutomic.com>
11 months agoOmit local instance from federated instances list (#3712)
Bao [Thu, 27 Jul 2023 10:12:18 +0000 (05:12 -0500)]
Omit local instance from federated instances list (#3712)

Co-authored-by: Nutomic <me@nutomic.com>
11 months agoadd trigram index to search (#3719)
phiresky [Thu, 27 Jul 2023 10:11:00 +0000 (12:11 +0200)]
add trigram index to search (#3719)

* add trigram index to search

* add community index

11 months agoSanitize html (#3708)
Nutomic [Wed, 26 Jul 2023 18:01:15 +0000 (20:01 +0200)]
Sanitize html (#3708)

* HTML sanitization in apub code

* Sanitize API inputs

* fmt

* Dont allow html a, img tags

---------

Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
11 months agoAdd moderator view parameter to list posts (#3176)
biosfood [Wed, 26 Jul 2023 17:51:11 +0000 (19:51 +0200)]
Add moderator view parameter to list posts (#3176)

* add option to only show posts from moderated communities

* rename moderated_only to moderator_view and show blocked users in moderator view

* add test for moderator view

* bump lemmy-js-client version for moderation view tests

* fix yarn lockfile

* retry build

* Delete logfile

* retry checks

* remove unused select statement from list posts

---------

Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
11 months agoAdd controversial ranking (#3205)
Pavlos Smith [Wed, 26 Jul 2023 17:07:05 +0000 (20:07 +0300)]
Add controversial ranking (#3205)

* Added controversy rank property to posts and comments, and ability to sort by it

* Triggers instead of schedules tasks, integer -> double, TODO: comments don't seem to get updated with floats, divide SortTypes

* Created PersonSortType

* PersonSortType::MostComments case

* Removed unused PartialOrd trait

* Added new person sort type mappings

* SortType -> PersonSortType

* fixes

* cargo fmt

* fixes after merge with main

* Fixed bug in controversy rank trigger, removed TopX sorts from PersonSortType and added CommentScore instead

* Uncovered enum case

* clippy

* reset translation changes

* translations

* translations

* Added additional hot ordering on controversial posts and comments

* featured local and featured community added to controversy rank index, additional order_by removed (?), added post_score and post_count to PersonSortType

* Woodpecker rerun

* cargo fmt

* woodpecker rerun

* fixed controversy_rank order

* fix

* Readded migration as latest, removed second update statement for setting controversy rank

11 months agoMake resolve_object not require auth #3685 (#3716)
marsara9 [Wed, 26 Jul 2023 16:17:42 +0000 (12:17 -0400)]
Make resolve_object not require auth #3685 (#3716)

* Resolves issue #3685

If user isn't authenticated with resolve_object, only allow a local search instead of possibly making an http request.

* Making sure to validate auth before doing a potential remote lookup.

11 months agoSkip fragile API tests (#3723)
Nutomic [Wed, 26 Jul 2023 16:15:18 +0000 (18:15 +0200)]
Skip fragile API tests (#3723)

* Skip fragile API tests

These tests fail very often for no reason, eg in #3712 and #3696.
Better to disable them until they can be fixed.

* killall -s1

11 months agoUI Settings - Blur NSFW & Auto Expand (#3377)
Domenic Horner [Wed, 26 Jul 2023 11:53:45 +0000 (19:53 +0800)]
UI Settings - Blur NSFW & Auto Expand (#3377)

* add new flag to api

* add new ui settings for local user

* remove extraneous def

* add props to application reg.

* fix clippy updated these

* re-order db schema entries

* remove dupe

* update lemmy sdk

* update lemmy js client

---------

Co-authored-by: Nutomic <me@nutomic.com>
11 months agoEnable gzip for reqwest (#3696)
dullbananas [Wed, 26 Jul 2023 10:22:14 +0000 (03:22 -0700)]
Enable gzip for reqwest (#3696)

This will reduce bandwidth used by federation

Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
11 months agoDont authenticate user after successful password reset #3714 (#3715)
Into the V0id [Tue, 25 Jul 2023 17:33:02 +0000 (17:33 +0000)]
Dont authenticate user after successful password reset #3714 (#3715)

Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
11 months agodetailed error message for blocked domains (#3698) (#3701)
Freakazoid182 [Tue, 25 Jul 2023 17:26:54 +0000 (19:26 +0200)]
detailed error message for blocked domains (#3698) (#3701)

* detailed error message for blocked domains (#3698)

* Pass the domain as an error param

Not formatting the error message to support i18n

---------

Co-authored-by: Freek van Zee <freek.van.zee@mediamonks.com>
11 months agoBump version of dependency "webmention" (#3711)
Ben Wyatt [Tue, 25 Jul 2023 17:01:13 +0000 (12:01 -0500)]
Bump version of dependency "webmention" (#3711)

Webmention .4->.5 bumps a few internal dependencies that needed to be upgraded

11 months agoprevent ordering by comment path without post filter (#3717)
phiresky [Tue, 25 Jul 2023 16:46:00 +0000 (18:46 +0200)]
prevent ordering by comment path without post filter (#3717)

11 months agoUpdate Dockerfile to run process as non-privileged user. (#3709)
asimons04 [Mon, 24 Jul 2023 13:51:51 +0000 (09:51 -0400)]
Update Dockerfile to run process as non-privileged user. (#3709)

11 months agoChange logic for determining comment default language (fixes #3451) (#3672)
Nutomic [Fri, 21 Jul 2023 13:08:25 +0000 (15:08 +0200)]
Change logic for determining comment default language (fixes #3451) (#3672)

11 months agodisable rustfmt feature on rosetta-build (#3679)
Joel Beckmeyer [Fri, 21 Jul 2023 09:50:47 +0000 (05:50 -0400)]
disable rustfmt feature on rosetta-build (#3679)

11 months agoFix federation test errors with new lemmy-js-client (#3678)
Dessalines [Fri, 21 Jul 2023 09:47:56 +0000 (05:47 -0400)]
Fix federation test errors with new lemmy-js-client (#3678)

11 months agoAdding diesel migration check. Fixes #3676 (#3677)
Dessalines [Fri, 21 Jul 2023 09:46:10 +0000 (05:46 -0400)]
Adding diesel migration check. Fixes #3676 (#3677)

* Adding diesel migration check. Fixes #3676

* Fixing prettier.

11 months agoMake sure comments are sorted by hot_rank, then score. (#3667)
Dessalines [Fri, 21 Jul 2023 09:44:47 +0000 (05:44 -0400)]
Make sure comments are sorted by hot_rank, then score. (#3667)

11 months agoFix process shutdown (#3673)
Nutomic [Thu, 20 Jul 2023 15:36:48 +0000 (17:36 +0200)]
Fix process shutdown (#3673)

I noticed that stopping the Lemmy process with ctrl+c wasnt working
because the activity channel isnt properly closed. This is now fixed.

Later we should also move the channel from static into LemmyContext,
Im not doing that now to avoid conflicts with #3670.

11 months agoIgnore errors when fetching community mods (fixes #3460) (#3674)
Nutomic [Thu, 20 Jul 2023 15:34:07 +0000 (17:34 +0200)]
Ignore errors when fetching community mods (fixes #3460) (#3674)

11 months agoUpgrade activitypub library to 0.4.6 (fixes #3222) (#3675)
Nutomic [Thu, 20 Jul 2023 15:33:19 +0000 (17:33 +0200)]
Upgrade activitypub library to 0.4.6 (fixes #3222) (#3675)

11 months agoDenormalize community_id into post_aggregates for a 1000x speed-up when loading posts...
Sander Saarend [Thu, 20 Jul 2023 15:13:21 +0000 (18:13 +0300)]
Denormalize community_id into post_aggregates for a 1000x speed-up when loading posts (#3653)

* Denormalize community_id into post_aggregates for a 1000x speed-up when loading posts

* Remove unused index

* Add creator_id to post_aggregates

* Use post_aggregates as main table for PostQuery

* Make post_aggregates the main table for PostView

* Reformat SQL

11 months agoFixing hot_ranks and scores to append a published sort. (#3618)
Dessalines [Thu, 20 Jul 2023 14:44:23 +0000 (10:44 -0400)]
Fixing hot_ranks and scores to append a published sort. (#3618)

- #3428

11 months ago Handle displaying of deleted and removed posts/comments (fixes #2624) (#3286)
Nutomic [Thu, 20 Jul 2023 14:36:16 +0000 (16:36 +0200)]
 Handle displaying of deleted and removed posts/comments (fixes #2624)  (#3286)

* Handle displaying of deleted and removed posts/comments (fixes #2624)

* remove duplicate test

* fix tests

* no show_removed/show_deleted

* merge

* partially fix tests

* fix tests

* clippy

* fix tests

* get rid of build_post_response_deleted_allowed

11 months agoUse local_site.default_post_listing_type as the initial default listing type for...
Sander Saarend [Wed, 19 Jul 2023 15:04:43 +0000 (18:04 +0300)]
Use local_site.default_post_listing_type as the initial default listing type for new users (#3666)

11 months agoDont publish releases to crates.io (fixes #3272) (#3664)
Nutomic [Wed, 19 Jul 2023 14:25:46 +0000 (16:25 +0200)]
Dont publish releases to crates.io (fixes #3272) (#3664)

This is not needed anymore as from scratch installation now uses
`git clone` instead of `cargo install`.

https://github.com/LemmyNet/lemmy-docs/pull/241/files

11 months agoRemove SendActivity and Perform traits, rely on channel (#3596)
Nutomic [Wed, 19 Jul 2023 13:49:41 +0000 (15:49 +0200)]
Remove SendActivity and Perform traits, rely on channel (#3596)

* Remove SendActivity and Perform traits, rely on channel

These traits arent necessary anymore now that websocket is removed.
Removing them allows us to use normal actix http handler methods
which are much more flexible, and allow using different middlewares
as well as setting response attributes.

* compiling and create post federating

* clippy

* rename methods, join outgoing activities task

* fix api tests

* no unwrap

* conditional compile

* add back getrandom

* make crates optional

* fmt

11 months agoDon't panic when scheduled tasks can't connect to database (#3634)
Sander Saarend [Wed, 19 Jul 2023 13:00:44 +0000 (16:00 +0300)]
Don't panic when scheduled tasks can't connect to database (#3634)

* Don't panic when scheduled tasks can't connect to database

* Use map & map_err instead of match

* Empty commit for Woodpecker re-run

11 months agoAdd http cache for webfingers (#3317)
cetra3 [Wed, 19 Jul 2023 10:09:04 +0000 (19:39 +0930)]
Add http cache for webfingers (#3317)

* Add http cache for webfingers

* Remove the outgoing cache middleware & adjust the cache headers directive

* Use 1h & 3day cache header

* Update routes and adjust the cache headers location

* revert apub caching

---------

Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
Co-authored-by: Felix Ableitner <me@nutomic.com>
11 months agoprepare-drone-federation-test.sh has some more echo output and note about the LEMMY_D...
RocketDerp [Wed, 19 Jul 2023 08:28:10 +0000 (01:28 -0700)]
prepare-drone-federation-test.sh has some more echo output and note about the LEMMY_DATABASE_URL format (#3651)

11 months agoPost remove delete federation outbound fix0 (#3613)
RocketDerp [Mon, 17 Jul 2023 15:07:45 +0000 (08:07 -0700)]
Post remove delete federation outbound fix0 (#3613)

* add new function build_post_response_deleted_allowed

* PostDelete uses new function build_post_response_deleted_allowed

* RemovePost uses new build_post_response_deleted_allowed function

* code comments about mod or admin flag having other use

* reformat "cargo +nightly fmt --all"

11 months agoAdd Japanese README (#3620)
Ikko Eltociear Ashimine [Mon, 17 Jul 2023 15:05:14 +0000 (00:05 +0900)]
Add Japanese README (#3620)

* Add Japanese README

* add translate

* fix link

* Update README.ja.md

11 months agoCache & Optimize Woodpecker CI (#3450)
cetra3 [Mon, 17 Jul 2023 15:04:14 +0000 (00:34 +0930)]
Cache & Optimize Woodpecker CI (#3450)

* Try using drone cache plugin

* Try another path

* Include volume

* Fix formatting

* Include fmt

* Exclude cargo dir from prettier

* Don't override cargo

* Just do check

* Add cache key

* Use different cache plugin

* Add clippy

* Try minio

* Add quotes

* Try adding secrets

* Try again

* Again

* Use correct secret formation

* Add back clippy

* Use secret for the root bucket name

* Try drone cache instead

* Add region

* Add path-style option

* Include cargo clippy

* Include everything again

* Fix formatting

* Don't run clippy twice

* Add `allow` statements for tests to pass

* Adjust endpoint to be a secret

* Fix prettier

* Merge & fix tests

* Try to restart the woodpecker test

* Change the ENV var name

---------

Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
11 months agoRemove TypedBuilder from db_views and db_views_actor (#3637)
dullbananas [Mon, 17 Jul 2023 10:20:25 +0000 (03:20 -0700)]
Remove TypedBuilder from db_views and db_views_actor (#3637)

* change pool fields to parameters for list

* remove my_person_id and admin fields

* Change recipient id to list param

* Remove TypedBuilder from db_views and db_views_actor

11 months agoOptimize hot rank updates (#3617)
Sander Saarend [Mon, 17 Jul 2023 09:05:55 +0000 (12:05 +0300)]
Optimize hot rank updates (#3617)

11 months agoSplit activity table into sent and received parts (fixes #3103) (#3583)
Nutomic [Fri, 14 Jul 2023 15:17:06 +0000 (17:17 +0200)]
Split activity table into sent and received parts (fixes #3103) (#3583)

* Split activity table into sent and received parts (fixes #3103)

The received activities are only stored in order to avoid processing
the same incoming activity multiple times. For this purpose it is
completely unnecessary to store the data. So we can split the
table into sent_activity and received_activity parts, where
only sent_activity table needs to store activity data. This should
reduce storage use significantly.

Also reduces activity storage duration to three months, we can reduce
this further if necessary.

Additionally the id columns of activity tables are removed because
they are completely unused and risk overflowing (fixes #3560).

* address review

* move insert_received_activity() methods to verify handlers

* remove unnecessary conflict line

* clippy

* use on conflict, add tests

11 months agowork around race condition on community fetch (#3414)
phiresky [Fri, 14 Jul 2023 12:57:36 +0000 (14:57 +0200)]
work around race condition on community fetch (#3414)

11 months agoMake `lemmy_api_common` wasm-compatible (#3587)
Dessalines [Fri, 14 Jul 2023 08:45:18 +0000 (04:45 -0400)]
Make `lemmy_api_common` wasm-compatible (#3587)

* Fixing lemmy_api_common optionals

* Adding taplo for .toml files.

* Versioning taplo in woodpecker.

* Addressing PR comments.

11 months agoAdd dev profile to strip symbols and disable debug info (ref #3610) (#3611)
Nutomic [Thu, 13 Jul 2023 18:50:17 +0000 (20:50 +0200)]
Add dev profile to strip symbols and disable debug info (ref #3610) (#3611)

* Add dev profile to strip symbols and disable debug info (ref #3610)

This significantly speeds up builds:
- with strip symbols and debug 0: 43s
- without: 169s

* add comment, no strip symbols

11 months agoCheck for dead federated instances (fixes #2221) (#3427)
Nutomic [Thu, 13 Jul 2023 14:12:01 +0000 (16:12 +0200)]
Check for dead federated instances (fixes #2221) (#3427)

* Check for dead federated instances (fixes #2221)

* move to apub crate, use timestamp

* make it compile

* clippy

* use moka to cache blocklists, dead instances, restore orig scheduled tasks

* remove leftover last_alive var

* error handling

* wip

* fix alive check for instances without nodeinfo, add coalesce

* clippy

* move federation blocklist cache to #3486

* unused deps

11 months agoFix wrong SMTP port when TLS is being used (fixes #3574) (#3607)
Manuel Bleichner [Thu, 13 Jul 2023 11:10:14 +0000 (13:10 +0200)]
Fix wrong SMTP port when TLS is being used (fixes #3574) (#3607)

Co-authored-by: Manuel Bleichner <manuel.bleichner@bvu.de>
11 months agoAdd workaround for #3102 until cross-compile work complete (#3472)
Nina Blanson [Thu, 13 Jul 2023 11:02:08 +0000 (06:02 -0500)]
Add workaround for #3102 until cross-compile work complete (#3472)

* Add workaround for #3102 until cross-compile work complete

* Minor cleanup

---------

Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
11 months agoUpdated Lemmy Matrix Support link (#3599)
Jason Grim [Thu, 13 Jul 2023 10:31:35 +0000 (06:31 -0400)]
Updated Lemmy Matrix Support link (#3599)

11 months agoUpdate RELEASES.md (#3593)
nixoye [Wed, 12 Jul 2023 14:48:49 +0000 (11:48 -0300)]
Update RELEASES.md (#3593)

replaced the confusing api_key line that's commented out with the line that is now used in the new config.hjson in /lemmy-ansible/examples

Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
11 months agoAdd infinite scroll user option (#3572)
Simon Bordeyne [Wed, 12 Jul 2023 13:12:01 +0000 (15:12 +0200)]
Add infinite scroll user option (#3572)

11 months agoUse specific Rust nightly version for CI cargo fmt (fixes #3467) (#3577)
Nutomic [Wed, 12 Jul 2023 09:15:28 +0000 (11:15 +0200)]
Use specific Rust nightly version for CI cargo fmt (fixes #3467) (#3577)

* Use specific Rust nightly version for CI cargo fmt (fixes #3467)

* fix

* fix

11 months agoMake functions work with both connection and pool (#3420)
dullbananas [Tue, 11 Jul 2023 13:09:59 +0000 (06:09 -0700)]
Make functions work with both connection and pool (#3420)

* a lot

* merge

* Fix stuff broken by merge

* Get rid of repetitive `&mut *context.conn().await?`

* Add blank lines under each line with `conn =`

* Fix style mistakes (partial)

* Revert "Fix style mistakes (partial)"

This reverts commit 48a033b87f4fdc1ce14ff86cc019e1c703cd2741.

* Revert "Add blank lines under each line with `conn =`"

This reverts commit 773a6d3beba2cf89eac75913078b40c4f5190dd4.

* Revert "Get rid of repetitive `&mut *context.conn().await?`"

This reverts commit d2c6263ea13710177d49b2791278db5ad115fca5.

* Use DbConn for CaptchaAnswer methods

* DbConn trait

* Remove more `&mut *`

* Fix stuff

* Re-run CI

* try to make ci start

* fix

* fix

* Fix api_common::utils

* Fix apub::activities::block

* Fix apub::api::resolve_object

* Fix some things

* Revert "Fix some things"

This reverts commit 2bf8574bc8333d8d34ca542d61a0a5b50039c24d.

* Revert "Fix apub::api::resolve_object"

This reverts commit 3e4059aabbe485b2ff060bdeced8ef958ff62832.

* Revert "Fix apub::activities::block"

This reverts commit 3b02389abd780a7b1b8a2c89e26febdaa6a12159.

* Revert "Fix api_common::utils"

This reverts commit 7dc73de613a5618fa57eb06450f3699bbcb41254.

* Revert "Revert "Fix api_common::utils""

This reverts commit f740f115e5457e83e53cc223e48196a2c47a9975.

* Revert "Revert "Fix apub::activities::block""

This reverts commit 2ee206af7c885c10092cf209bf4a5b1d60327866.

* Revert "Revert "Fix apub::api::resolve_object""

This reverts commit 96ed8bf2e9dcadae760743929498312334e23d2e.

* Fix fetch_local_site_data

* Fix get_comment_parent_creator

* Remove unused perma deleted text

* Fix routes::feeds

* Fix lib.rs

* Update lib.rs

* rerun ci

* Attempt to create custom GetConn and RunQueryDsl traits

* Start over

* Add GetConn trait

* aaaa

* Revert "aaaa"

This reverts commit acc9ca1aed10c39efdd91cefece066e035a1fe80.

* Revert "Revert "aaaa""

This reverts commit 443a2a00a56d152bb7eb429efd0d29a78e21b163.

* still aaaaaaaaaaaaa

* Return to earlier thing

Revert "Add GetConn trait"

This reverts commit ab4e94aea5bd9d34cbcddf017339131047e75344.

* Try to use DbPool enum

* Revert "Try to use DbPool enum"

This reverts commit e4d1712646a52006b865a1fbe0dcf79976fdb027.

* DbConn and DbPool enums (db_schema only fails to compile for tests)

* fmt

* Make functions take `&mut DbPool<'_>` and make db_schema tests compile

* Add try_join_with_pool macro and run fix-clippy on more crates

* Fix some errors

* I did it

* Remove function variants that take connection

* rerun ci

* rerun ci

* rerun ci

11 months agoShrink capacity in `RateLimitStorage::remove_older_than` (#3536)
dullbananas [Mon, 10 Jul 2023 20:52:37 +0000 (13:52 -0700)]
Shrink capacity in `RateLimitStorage::remove_older_than` (#3536)

* Shrink capacity in `RateLimitStorage::remove_older_than`

* Update rate_limiter.rs

* rerun ci

* rerun ci

* rerun ci

* Update rate_limiter.rs

11 months agoFix #3366: Wrap plain-text error responses from the API in JSON (#3559)
Pawan Hegde [Mon, 10 Jul 2023 20:44:14 +0000 (02:14 +0530)]
Fix #3366: Wrap plain-text error responses from the API in JSON (#3559)

* Fix #3366: API does return plain HTML errors

* Fix Clippy errors

* Improve api response times by doing send_activity asynchronously (#3493)

* do send_activity after http response

* move to util function

* format

* fix prometheus

* make synchronous federation configurable

* cargo fmt

* empty

* empty

---------

Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
* Updating `login.rs` with generic `incorrect_login` response. (#3549)

* Adding v0.18.1 and v0.18.0 release notes. (#3530)

* Update RELEASES.md (#3556)

added instruction to find the location of your docker directory (especially useful for those who used ansible since they never had to setup docker manually)

* Use async email sender (#3554)

* Upgrade all dependencies (#3526)

* Upgrade all dependencies

* as base64

* Adding phiresky to codeowners. (#3576)

* Error enum fixed (#3487)

* Create error type enum

* Replace magic string slices with LemmyErrorTypes

* Remove unused enum

* Add rename snake case to error enum

* Rename functions

* clippy

* Fix merge errors

* Serialize in PascalCase instead of snake_case

* Revert src/lib

* Add serialization tests

* Update translations

* Fix compilation error in test

* Fix another compilation error

* Add code for generating typescript types

* Various fixes to avoid breaking api

* impl From<LemmyErrorType> for LemmyError

* with_lemmy_type

* trigger ci

---------

Co-authored-by: SleeplessOne1917 <abias1122@gmail.com>
* Only update site_aggregates for local site (#3516)

* Fix #3501 - Fix aggregation counts for elements removed and deleted (#3543)

Two bugs were found and fixed:
- previously elements removal and deletion were counted as two separate disappearances
- removing comments did not affect post aggregations

* Use LemmyErrorType also make error_type compulsory

* Add missing import for jsonify_plain_text_errors

* Fix formatting

* Trying to make woodpecker run again

---------

Co-authored-by: phiresky <phireskyde+git@gmail.com>
Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
Co-authored-by: rosenjcb <rosenjcb@gmail.com>
Co-authored-by: nixoye <12674582+nixoye@users.noreply.github.com>
Co-authored-by: dullbananas <dull.bananas0@gmail.com>
Co-authored-by: Nutomic <me@nutomic.com>
Co-authored-by: SleeplessOne1917 <abias1122@gmail.com>
Co-authored-by: Sander Saarend <sander@saarend.com>
Co-authored-by: Piotr Juszczyk <74842304+pijuszczyk@users.noreply.github.com>
11 months agoFix #3501 - Fix aggregation counts for elements removed and deleted (#3543)
Piotr Juszczyk [Mon, 10 Jul 2023 15:30:30 +0000 (17:30 +0200)]
Fix #3501 - Fix aggregation counts for elements removed and deleted (#3543)

Two bugs were found and fixed:
- previously elements removal and deletion were counted as two separate disappearances
- removing comments did not affect post aggregations

11 months agoOnly update site_aggregates for local site (#3516)
Sander Saarend [Mon, 10 Jul 2023 15:20:39 +0000 (18:20 +0300)]
Only update site_aggregates for local site (#3516)

11 months agoError enum fixed (#3487)
Nutomic [Mon, 10 Jul 2023 14:50:07 +0000 (16:50 +0200)]
Error enum fixed (#3487)

* Create error type enum

* Replace magic string slices with LemmyErrorTypes

* Remove unused enum

* Add rename snake case to error enum

* Rename functions

* clippy

* Fix merge errors

* Serialize in PascalCase instead of snake_case

* Revert src/lib

* Add serialization tests

* Update translations

* Fix compilation error in test

* Fix another compilation error

* Add code for generating typescript types

* Various fixes to avoid breaking api

* impl From<LemmyErrorType> for LemmyError

* with_lemmy_type

* trigger ci

---------

Co-authored-by: SleeplessOne1917 <abias1122@gmail.com>
11 months agoAdding phiresky to codeowners. (#3576)
Dessalines [Mon, 10 Jul 2023 14:20:40 +0000 (10:20 -0400)]
Adding phiresky to codeowners. (#3576)

11 months agoUpgrade all dependencies (#3526)
Nutomic [Mon, 10 Jul 2023 13:00:55 +0000 (15:00 +0200)]
Upgrade all dependencies (#3526)

* Upgrade all dependencies

* as base64

11 months agoUse async email sender (#3554)
dullbananas [Mon, 10 Jul 2023 12:04:39 +0000 (05:04 -0700)]
Use async email sender (#3554)

11 months agoUpdate RELEASES.md (#3556)
nixoye [Mon, 10 Jul 2023 12:00:00 +0000 (09:00 -0300)]
Update RELEASES.md (#3556)

added instruction to find the location of your docker directory (especially useful for those who used ansible since they never had to setup docker manually)

11 months agoAdding v0.18.1 and v0.18.0 release notes. (#3530)
Dessalines [Mon, 10 Jul 2023 11:51:24 +0000 (07:51 -0400)]
Adding v0.18.1 and v0.18.0 release notes. (#3530)

11 months agoUpdating `login.rs` with generic `incorrect_login` response. (#3549)
rosenjcb [Mon, 10 Jul 2023 11:27:38 +0000 (04:27 -0700)]
Updating `login.rs` with generic `incorrect_login` response. (#3549)

11 months agoImprove api response times by doing send_activity asynchronously (#3493)
phiresky [Mon, 10 Jul 2023 10:27:49 +0000 (12:27 +0200)]
Improve api response times by doing send_activity asynchronously (#3493)

* do send_activity after http response

* move to util function

* format

* fix prometheus

* make synchronous federation configurable

* cargo fmt

* empty

* empty

---------

Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
12 months agoVersion 0.18.1
Dessalines [Fri, 7 Jul 2023 13:24:49 +0000 (09:24 -0400)]
Version 0.18.1

12 months agoRevert "Make sure hot rank sorts for post and community filter by positive hot ranks...
Dessalines [Fri, 7 Jul 2023 09:29:07 +0000 (05:29 -0400)]
Revert "Make sure hot rank sorts for post and community filter by positive hot ranks. (#3497)" (#3521)

This reverts commit 6840fd64f9bee9fff263ed797350a316ebdb98c6.

12 months agoMake hot rank not crash on future (#3517)
phiresky [Fri, 7 Jul 2023 09:27:47 +0000 (11:27 +0200)]
Make hot rank not crash on future (#3517)

* make hot rank zero for future

* parallel safe