Salta al contenuto principale


Lemmy Development Update June 2025


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.

::: spoiler 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:

:::

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.

Donate

in reply to Dessalines

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?

in reply to whimsy

Yep, or the things you've downvoted.
in reply to Dessalines

That's what I call a big update!
in reply to jaybone

The 1.0 release is many months away yet, and we'll give ample time to app devs to update.
in reply to Dessalines

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.

in reply to Mark With a Z

What exactly is multi-community? It's not defined above and the PR has no description.
in reply to fmstrat

A multi-community groups outputs of multiple communities into one entity that you can subscribe to and browse.
in reply to fmstrat

I elaborated on this here


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:


in reply to Dessalines

Could you elaborate what multi communities is, maybe in the post?
in reply to geneva_convenience

I support this request, even issue on GitHub does not contain any (even short) description
in reply to geneva_convenience

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
in reply to geneva_convenience

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:

in reply to Dessalines

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.

Questa voce è stata modificata (2 mesi fa)
in reply to geneva_convenience

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

piefed.zip/post/100161

All comments from 5 crossposts in a single view

in reply to Dessalines

This sounds somewhat similar to what circles used to be in Google+. A collection of users that can be created and followed.
in reply to geneva_convenience

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:

piefed.social/feeds

piefed.social/f/cinema

in reply to Dessalines

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.

Questa voce è stata modificata (2 mesi fa)
in reply to James R Kirk

This has nothing to do with that. But we have expanded the site settings to reject federated votes (or downvotes only)
in reply to James R Kirk

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.

Questa voce è stata modificata (2 mesi fa)
in reply to Dessalines

Good stuff. Donated.
Questa voce è stata modificata (2 mesi fa)
in reply to Dessalines

Whoa lots of good stuff in this update. Thank you for all the work!