This was a busy month, with ~80 pull requests merged, as we’re trying to get all the breaking changes we can added before the 1.0 release.
The release is still several months away, as even after finishing up the rest of the 1.0 milestone issues, we still have to add this new functionality to Lemmy-UI and Jerboa, and do extensive testing.
Here are some of the major changes made over the past month:
- Added multi-communities (One of the most requested features).
- Added a new rate limiting library.
- Refactored the API structs and library for better usage in Rust projects.
- Improved the migration diff checker.
- Using an external library for checking invisible characters.
- Votes are now removed when banning + removing data.
- Added a GDPR style data export.
- Storing upvote / downvote totals you gave to each user, and a setting to display that history next to their name.
- Added ability to make a note for a user.
- Added an RSS feed for modlogs.
- Added an API action to get liked / disliked content.
Full list of changes by user
Lemmy:
- Improve migration diff check and fix old migrations (#5204) dullbananas
- Implement multi-community (fixes #818, fixes #5340) (#5601) Nutomic
- Add endpoint to get Liked / Disliked comments and posts. (#5616) dessalines
- Add permitted display characters check for post titles (#5692) SleeplessOne1917
- Adding Modlog RSS feed. (#5708) dessalines
- Decrement fail_count instead of reset to 0 (ref #5716) (#5717) Nutomic
- Leave mod teams on account deletion. (#5721) dessalines
- Throw error if the removed code_migrations.rs needed to run but didn’t (#5723) dullbananas
- Fix assumption that is_err always means the local site doesn’t exist, which may cause the local site’s keypair to be regenerated (#5724) dullbananas
- Simplifying transaction call (#5703) (#5726) momentary-lapse
- Switch to library for rate limit (fixes #5550, fixes #5548) (#5731) Nutomic
- Dont run scheduled tasks at startup (ref #5716) (#5732) Nutomic
- Adding proper NSFW filtering to search, based on user settings. (#5733) dessalines
- Move lemmy_api_common structs to view crates, make a lemmy_api_utils crate (#5735) SleeplessOne1917
- [0.19] Decrement fail_count instead of reset to 0 (#5737) Nutomic
- [0.19] Update user count from local_user table instead of person table, and only count users with accepted application (#5738) Nutomic
- Mark some *Action struct fields as serde(skip) (ref #5532) (#5739) Nutomic
- [0.19] Only use HTTP/1 (#5744) flamingos-cant
- [0.19] Dont run scheduled tasks at startup (#5732) (#5745) Nutomic
- Pin cargo-workspaces version (#5746) Nutomic
- Test case for activity send errors (#5747) Nutomic
- Revert “[0.19] Downscale proxied thumbnails (#5686)” (#5751) Nutomic
- Resolve objects as part of search api call (fixes #5740) (#5752) Nutomic
- Specify rust 1.81 (#5754) Nutomic
- Update extism (#5755) Nutomic
- Fix lemmy_federate test (#5756) Nutomic
- Fix lemmy_federate test (again) (#5757) Nutomic
- Use invisible_chars library (#5759) dessalines
- Rename timestamp fields to
_at
(#5761) dessalines - Upgrading deps. (#5764) dessalines
- Adding ability to make a note for a given person. (#5765) dessalines
- 0.19 specify rust 1.81 (#5766) Nutomic
- Remove feature
full
for api_utils (#5767) Nutomic - Rename upgrade check migration to run first (#5768) Nutomic
- Remove private instance check for get image (fixes #5763) (#5769) Nutomic
- [0.19] Remove private instance check for get image (#5770) Nutomic
- Make search query mandatory (#5772) Nutomic
- Parallel sql format (#5773) Nutomic
- Keep rustup home dir between ci steps (#5775) Nutomic
- Enable urlencoding for pictrs proxy parameter (fixes #5749) (#5776) Nutomic
- Upgrading ts-rs, and adding feature flag (#5777) dessalines
- Implement multi-community search (fixes #5778) (#5779) Nutomic
- Use binstall for diesel-cli (#5780) Nutomic
- Move db_perf check to unit test (#5781) Nutomic
- Fixing a few optionals. (#5782) dessalines
- Small
lemmy_api_common
/db_views
fixes/tweaks (#5783) SleeplessOne1917 - Keep totals of upvotes and downvotes given to each user. (#5786) dessalines
- Test migrations improvement (#5788) momentary-lapse
- Replace most uses of context.reset_request_count() with clone() (#5790) Nutomic
- chore: replace nightly API Duration::from_days with Duration::from_secs (#5791) Integral-Tech
- Add incoming activity hook for plugins (#5792) Nutomic
- Remove ts-bindings null check from CI. (#5795) dessalines
- More re-exports (#5796) SleeplessOne1917
- Delete scripts/ts_bindings_check.sh (#5797) Nutomic
- Fix migration local_image_person (#5799) Nutomic
- Optimize migrations (#5800) Nutomic
- Adding GDPR-style data export (#5801) dessalines
- Move config updated check to unit test, use diffy (#5803) Nutomic
- Removing an existing deferrable constraint, and fail test if any constraint is deferrable. (#5806) dessalines
- [0.19] Reduce false positives in URL blocklist to reduce scunthorpe problem … (#5807) Nothing4You
- Remove
creator_*_actions
fields from api (ref #5532) (#5808) Nutomic - Set
Accept: Vary
header for federation endpoints (fixes #5632) (#5809) Nutomic - Remove votes when ban + remove data for a site or community. (#5810) dessalines
- Fixes for “Move config updated check to unit test, use diffy” PR (#5812) dullbananas
- Remove outdated comment about deferrable constraints in triggers.sql (#5813) dullbananas
- Fix db_perf.sh (#5815) dullbananas
- Optimizing person_content_combined migration. (#5819) dessalines
- Fixing docker_update.sh script to not add context. (#5820) dessalines
- Optimizing a few more combined migrations (#5821) dessalines
- Better way to check if we should accept activity in remote community (#5823) Nutomic
- Rename rate limit columns (fixes #5805) (#5824) Nutomic
- Send Undo/Dislike activity (fixes #4465) (#5825) Nutomic
- Add post_actions.disable_notifications (fixes #3042) (#5826) Nutomic
- Revert "Use same federation keypair for all new users and communities (#5709) (#5830) Nutomic
- Drop table person_ban (fixes #5828) (#5831) Nutomic
- Use vec_into (#5833) dessalines
Lemmy-ui:
- Show upvoted posts, comments in user’s profile (#3057) Tyoda
- Add a denial reason using the error.message field. [0.19] (#3175) dessalines
- Add a denial reason using the error.message field. [main] (#3176) dessalines
- Fix spoiler escaped characters (#3181) bryewalks
- Hide Next button for Overview, Saved, Upvoted (#3182) Tyoda
- Click anywhere on byline to collapse a comment (#3198) philip-peterson
Or see the full list of changes at the links below:
An open source project the size of Lemmy needs constant work to manage the project, implement new features and fix bugs. Dessalines and Nutomic work full-time on these tasks and more. As there is no advertising or tracking, all of our work is funded through donations. Even so there is barely enough time in the day, and no time for a second job. The only available option are user donations. To keep it viable donations need to reach a minimum of 5000€ per month, resulting in a modest salary of 2500€ per developer. If that goal is reached we can stop worrying about money, and fully focus on improving the software for the benefit of all users and instances. We especially rely on recurring donations to secure the long-term development and make Lemmy the best it can be.
Good stuff. Donated.
Could you elaborate what multi communities is, maybe in the post?
Its basically a collection of communities, so you can browse multiple related communities at the same time. Piefed already implements this under a different name:
Ah got it thanks
Here is the issue and the pull request.
Essentially multi-communities are a federated item very similar to communities, that federated users can subscribe to. They have an id, a creator, name, description, and a list of communities. If you subscribe to it, your instance will pick up any changes to it. You can then get a list of posts filtered by that multi-community.
Here are the new endpoints:
- https://join-lemmy.org/api/main#tag/Post/operation/GetPosts
- Not new, but you can now filter by a multi-community
- https://join-lemmy.org/api/main#operation/FollowMultiCommunity
- https://join-lemmy.org/api/main#operation/CreateMultiCommunity
- https://join-lemmy.org/api/main#operation/GetMultiCommunity
- https://join-lemmy.org/api/main#operation/CreateMultiCommunityEntry
- https://join-lemmy.org/api/main#operation/ListMultiCommunities
This sounds somewhat similar to what circles used to be in Google+. A collection of users that can be created and followed.
Thanks.
Are “shared communities” between instances in the pipeline or would that cause too much headache?
For example having a shared WorldNews community between lemmy.ml and lemmy.zip, maybe with a possibility to seperate them if mods have beef in the future. Or seperate moderator teams.
Currently there are many duplicate communities between instances. Now this is important for defederation, but causes a lot of fragmentation. Maybe having admins opt in to share a community with other instances could help this while possibly keeping control over moderation of what their own instance can see.
Feeds don’t really completely solve fragmentation, as comments are still attached to a single community, and you don’t see them in a single view.
To completely solve fragmentation, you need a consolidated view of comments as well
https://piefed.zip/post/100161
All comments from 5 crossposts in a single view
I support this request, even issue on GitHub does not contain any (even short) description
I’m hoping it’ll be like multireddits (groups of subreddits that could be shared) because I’ve been wishing for that for a while
Yes exactly.
I’ve been keeping an eye on the multicommunity issue and that getting merged was a nice notification.
Thinking of further use cases, maybe a multicommunity could be used as an “Instance curated” option in addition to All/Local/etc. Because frontpages of topic-specific and regional instances seem to all be dominated by us politics.
This is already implemented, admins can specify a “suggested” multi-community which will be shown next to Subscribed/Local/All just like you say.
Nice.
What exactly is multi-community? It’s not defined above and the PR has no description.
A multi-community groups outputs of multiple communities into one entity that you can subscribe to and browse.
I elaborated on this here
Added an RSS feed for modlogs.
You’re so thoughtful omg
Storing upvote / downvote totals you gave to each user, and a setting to display that history next to their name.
Where is the instance that autobans any account that users have downvoted X times? I want to join it.
This has nothing to do with that. But we have expanded the site settings to reject federated votes (or downvotes only)
twas a joke, but that’s a nice feature!
Ah my bad.
Ya we have to deal with so many vote bots, dead account voters, and vote spying tools now from some instances, that it’s genuinely going to be one of the biggest challenges on the fediverse in the future.
If some special interests set up shop on the fediverse, and upvote their content with a lot of fake accounts, or downvote others views they don’t want popularized, without a way to combat it while still preserving overall vote privacy, we’ll be in bad shape.
Added an API action to get liked / disliked content.
Oooh! Does this mean clients/apps can then show me all the stuff that I’ve upvoted?
Yep, or the things you’ve downvoted.
Amazing, looking forward to this! :D
Hail the victorious devs!
That’s what I call a big update!
Lots of really useful sounding stuff in there. Good work :)
exciting stuff, can’t wait to get v1.0
Innit!
Will this break clients like voyager?
The 1.0 release is many months away yet, and we’ll give ample time to app devs to update.