Tag: Moderation

  • 7.8.0 – Happy Holidays

    7.8.0 – Happy Holidays

    As the year winds down, weโ€™ve wrapped up a release that brings better moderation tools, a new way to display reactions, and a small surprise, just in time for the holidays.

    Stronger Tools for Moderation

    Moderation can be hard work, especially on the Fediverse, where conversations flow in from all directions. This release introduces new tools that help you stay in control with less manual effort.

    You can now subscribe to shared blocklists and let the plugin keep them up to date automatically. Subscribed lists are synced on a weekly cadence, so changes made upstream are reflected on your site without you having to lift a finger.

    A screenshot of the block list subscription feature.

    On top of that, weโ€™ve added a bulk domain blocklist importer. You can upload a CSV or plain text file, including Mastodon-style exports, and quickly add large numbers of domains at once. To make it even easier to get started, the importer includes a one-click option for the popular community-maintained IFTAS DNI list (@about.iftas.org).

    A screenshot of the block list importer feature.

    Together, these features make moderation more scalable and less stressful, so you can spend more time engaging and less time firefighting.

    Reactions, Your Way

    Reactions are a big part of how conversations feel alive on the Fediverse, and now you have more control over how they appear on your site.

    The Fediverse Reactions block gained a new Summary display style. Instead of showing a facepile of avatars, this option presents reactions as clean, inline counters for comments, likes, boosts, and replies. Itโ€™s a great fit for minimal layouts, feeds, or sites where avatars are disabled.

    A screenshot of the compact reactions.

    You can switch between the classic facepile and the new summary style directly in the block settings. And if avatars are turned off in discussion settings, the block automatically falls back to the summary view.

    A Sneak Peek at the Reader (Experimental)

    One more thing, for the curious among you, there’s now an early preview of the ActivityPub Reader, hidden behind a feature flag in the Advanced settings tab. If you don’t see it yet, open Screen Options at the top right of the ActivityPub settings page, check “Advanced Settings,” and save. That reveals the Advanced tab where you can enable the Reader.

    A screenshot of the reader implementation.

    When enabled, this adds a new โ€œSocial Webโ€ submenu to your Dashboard menu item. An place where you can read posts and shares from accounts you follow, turning your WordPress admin into a lightweight Fediverse reader.

    Because this is still very much a work in progress, the Reader is disabled by default and clearly marked as experimental. The UI, behavior, and feature set will change significantly in future releases as we explore what a great native Fediverse reading experience inside WordPress could look like.

    If you enjoy testing new ideas, weโ€™d love to hear your feedback, whether itโ€™s bug reports, rough edges youโ€™ve noticed, or ideas about what this Reader should become. Early input helps shape where this goes next, so feel free to share your thoughts in whatever form works best for you.

    Changelog

    Added

    • Add blocklist subscriptions for automatic weekly synchronization of remote blocklists.
    • Add compact display style to Reactions block that hides avatars.
    • Add domain blocklist importer for bulk importing blocked domains.
    • Add image optimization for imported attachments (resize to 1200px max, convert to WebP).
    • Add local caching for remote actor avatars.
    • Add relay mode to forward public activities to all followers.
    • Add scheduled cleanup for remote posts, preserving posts with local user interactions.
    • Add site health check to warn when DISABLE_WP_CRON may impact ActivityPub functionality.
    • Add Social Web Reader for browsing ActivityPub content directly in WordPress admin.
    • Delete remote posts on plugin uninstall.
    • Mastodon importer now imports self-replies as comments, preserving thread structure.

    Changed

    • Cache expensive operations in Post transformer to improve performance.
    • Improve performance and reliability of @-mention detection.
    • Reduce federated content size by removing unnecessary HTML attributes.
    • Skip downloading video and audio attachments, embedding remote URLs directly to avoid storage limits.
    • Use stable term_id-based IDs for Term transformer to ensure federation consistency.
    • Wrap blocked domains and keywords tables in collapsible details element.

    Fixed

    • Respect WordPress “show avatars” setting for remote actor avatars.
    • Ensure NodeInfo accurately represents site administrators to the Fediverse.
    • Fediverse Followers block now works correctly when the “Hide Social Graph” privacy option is enabled.
    • Fix NodeInfo documents to comply with schema specification.
    • Follow Me block button-only style now respects width settings from the inner Button block.
    • Preserve whitespace inside preformatted elements when federating content.

    Downloads

    Holiday Thanks

    A special thank-you to everyone who joined us during the recent office hours โ€” for the questions, the thoughtful feedback, and the great conversations about where ActivityPub for WordPress should go next. Talking directly with you helps shape these releases more than any roadmap ever could.

    See you in 2026 โ€” and happy holidays!

  • Help Shape the Future of Moderation in the Fediverse

    Running a community in the Fediverse means balancing openness with safety. Every year, @iftas takes the pulse of administrators, moderators, and community managers with their Annual Needs Assessment. This survey helps identify whatโ€™s working, where support is needed, and which tools can make a difference for those keeping decentralized spaces safe.

    The 2025 survey is now open

    Take part in the IFTAS Needs Assessment (5โ€“10 minutes).

    (If you havenโ€™t seen them before, you can also take a look at last yearโ€™s report)

    Last yearโ€™s responses represented moderators of over 4.3 million accounts across ActivityPub platforms. With WordPress now the largest group of federating instances, itโ€™s especially important for our community of hosts, site admins, and moderators to be heard.

    Moderation in WordPress: From Site-Wide to Personal Controls

    We recently introduced a major update to the ActivityPub plugin for WordPress: personalized and site-wide moderation tools.

    • Site administrators can now set domain, keyword, and actor-level blocks that protect the entire site.
    • Individual users can fine-tune their own experience with personal blocks, managed directly from their profiles.
    • Content is checked against both global and personal rulesโ€”so moderation works at every level.

    These improvements directly address needs raised in previous IFTAS surveys, making moderation more discoverable, flexible, and effective for WordPress communities in the Fediverse.

    Your Input Matters

    IFTAS uses the Needs Assessment to guide tools, policies, and advocacy that reflect the real-world challenges of moderatorsโ€”especially those in under-resourced communities. The more representative the responses, the stronger the outcomes for everyone.

    If youโ€™re running a federating WordPress site, please consider:

    1. Filling out the survey yourself.
    2. Sharing it with other admins, moderators, and community organizers.
    3. Reminding folks that itโ€™s anonymous, quick, and impactful.

    Together, we can keep building a safer, healthier Fediverseโ€”one that reflects the needs of its communities.

  • 7.3.0 โ€“ Ctrl+Fed+Delete

    A cute Wapuu astronaut inside a futuristic space station, sitting at a glowing control desk with holographic message icons floating in front of them. Some messages have a green checkmark for approval, others a red X or trash bin icon for deletion. The Wapuu looks focused, managing which messages can enter from the Fediverse and which should be removed. The background shows the curved windows of the space station with stars and a planet outside, blending sci-fi tech with Wapuuโ€™s cartoon charm.

    Ready for a smoother ride on the Fediverse? ActivityPub for WordPress 7.3.0 is here to make your experience friendlier and more flexible than ever. Whether youโ€™re keeping out unwanted guests, bringing stray conversations home, or just tidying up your digital footprint, this release puts powerful new tools right at your fingertips. Letโ€™s take a look at whatโ€™s new!

    Personalized & Site-Wide Moderation

    With this release, Moderation tools are easier to discover and manage, thanks to a revamped two-tiered system that empowers both site admins and individual users with greater control over their Fediverse experience.

    Now, site administrators can set up site-wide blocksโ€”covering domains, keywords, and even specific actorsโ€”right from the Settings screen or the new Blocked Actors table. These tools work together to keep out unwanted content and spammy actors for everyone on your site.

    But we didnโ€™t stop there! Every user can fine-tune their own experience. Head to your Profile to add personal domain and keyword blocks, or visit the new Blocked Actors submenu under Users to manage who can interact with you. Blocking someone is easier than everโ€”just paste their profile ID or webfinger, or use the handy new โ€œBlockโ€ link right from your Followers list.

    • Followers table in WordPress with options to delete, block, or follow back ActivityPub followers.
    • Confirmation screen in WordPress for blocking an ActivityPub account, including options for site-wide blocking.
    • Followers page in WordPress showing an empty list and a notification that an account has been blocked.

    Whenever new ActivityPub content comes in, the plugin checks it against both global and personal blocks. Domains are matched not just to the sender, but also to the activity and object IDs. Keywords are scanned throughout the content, summaries, and even actor names. Site-wide rules always run first, followed by your personal settingsโ€”so youโ€™re protected at every level. (For the blog actor, only site-wide blocks apply.)

    For backwards compatibility, the classic comment disallow list is still supported, ensuring your existing moderation rules continue to work seamlessly.

    Saying Goodbye, the Right Way

    Sometimes, a clean break is necessary. Whether youโ€™re retiring a blog, removing a user, or handling old content, this release makes sure your presence in the Fediverse can be removed gracefully and consistently.

    Weโ€™ve added a self-destruct feature for sites that want to step away entirely. With a single CLI command (wp activitypub self_destruct), WordPress will send out Delete activities to all followers. Built-in progress tracking and admin notifications let you know when the process has finished, so you can be sure your Fediverse footprint is fully cleared.

    User deletion is now handled with the same care. When a user is removed from WordPress, a corresponding Delete activity is sent to their followers, ensuring that connections across the network are properly closed.

    Bring the Conversation to You

    Sometimes a reply you care about doesnโ€™t make it all the way to your Inbox. Maybe it was posted on a remote server with finicky delivery, or slipped past the usual flow of ActivityPub. With this release, you donโ€™t have to miss out.

    Now you can search for any remote URL directly. If the comment is already in your database, youโ€™ll be taken straight to the matching comment thread on your blog post. If not, the plugin will fetch and import the remote reply to that post, so you can fold scattered conversations back into your site seamlessly.

    This means youโ€™re no longer limited to what arrives automatically. If youโ€™ve got a link to a discussion happening elsewhere in the Fediverse, you can pull it right into your own comment threads and keep the context intact.

    A Persistent Inbox for Better Debugging

    Fediverse interactions can get complex, and sometimes you need deeper insight into whatโ€™s really happening under the hood. Thatโ€™s where the new persistent inbox comes in.

    When enabled in Advanced Settings, the plugin now logs all incoming Create or Update activities. Instead of vanishing once processed, these entries are collected in a dedicated Inbox Collectionโ€”giving you a complete trail to reference when debugging.

    Full Changelog

    Added

    • Add actor blocking functionality with list table interface for managing blocked users and site-wide blocks.
    • Add code coverage reporting to GitHub Actions PHPUnit workflow with dedicated coverage job using Xdebug.
    • Add comprehensive blocking and moderation system for ActivityPub with user-specific and site-wide controls for actors, domains, and keywords.
    • Add comprehensive unit tests for Followers and Following table classes with proper ActivityPub icon object handling.
    • Added link and explanation for the existing Starter Kit importer on the help tab of the Following pages.
    • Adds a self-destruct feature to remove a blog from the Fediverse by sending Delete activities to followers.
    • Adds a User Interface to select accounts during Starter Kit import.
    • Adds support for importing Starter Kits from a link (URL).
    • Adds support for searching (remote) URLs similar to Mastodon, redirecting to existing replies or importing them if missing.
    • Adds support for sending Delete activities when a user is removed.
    • Adds support for Starter Kit collections in the ActivityPub API.
    • A global Inbox handler and persistence layer to log incoming Create and Update requests for debugging and verifying Activity handling.
    • Follower lists now include the option to block individual accounts.
    • Improved handling of deleted content with a new unified system for better tracking and compatibility.
    • Moderation now checks blocked keywords across all language variants of the content, summary and name fields.
    • When activated or deactivated network-wide, the plugin now refreshes rewrite rules across all sites.

    Changed

    • Add default avatars for actors without icons in admin tables.
    • Added support for list of Actor IDs in Starter Kits.
    • Improve Following class documentation and optimize count methods for better performance.
    • Refactor actor blocking with unified API for better maintainability.

    Fixed

    • Blocks relying on user selectors no longer error due to a race condition when fetching users.
    • Fix duplicate HTML IDs and missing form labels in modal blocks.
    • Fix malformed ActivityPub handles for users with email-based logins (e.g., from Site Kit Google authentication).
    • Fix PHP 8.4 deprecation warnings by preventing null values from being passed to WordPress core functions.
    • Improves handling of author URLs by converting them to a proper format.
    • Improves REST responses by skipping invalid actors in Followers and Following controllers.
    • More reliable Actor checks during the follow process.
    • Prevents Application users from being followed.
    • Proper implementation of FEP 844e.
    • Switches ActivityPub summaries to plain text for better compatibility.

    Downloads

    Thank you!

    Big thanks to everyone who contributed code, shared feedback, tested, or encouraged us along the way! Together, weโ€™re making the fediverse more connectedโ€”one release at a time. โค๏ธ

    Weโ€™ve just rolled out version 7.3.0โ€”try it out and let us know what you think!

  • Your Site, Your Rules: Filtering Fediverse Activity

    When running a WordPress site with the ActivityPub plugin, you’re not just managing a websiteโ€”you’re also operating a node in the Fediverse. This means you need effective tools to block unwanted activities, users, servers, and content from other instances across the network.

    How Blocking Works in ActivityPub for WordPress

    The ActivityPub plugin takes a pragmatic approach to blocking unwanted content by building on WordPressโ€™s existing โ€œDisallowed Comment Keysโ€ feature. While this leverages familiar comment filtering tools, it may be less immediately obvious than the dedicated blocking interfaces found in some other Fediverse applications.

    The Disallowed Comment Keys System

    At its core, WordPress has long had a built-in system to filter comments based on specific keywords or domains. The ActivityPub plugin builds on this system to also block incoming Fediverse activities.

    When an activity arrives at your WordPress site’s inbox, the plugin runs it through the same filtering mechanism used for regular WordPress comments. This means that if you’ve configured WordPress to block certain domains or keywords in comments, those same rules will apply to incoming ActivityPub activities like follows, likes, or replies.

    Where to Find and Configure Blocking Settings

    The blocking settings aren’t located within the ActivityPub plugin’s own settings page. Instead, they’re accessed through WordPress’s standard Discussion Settings:

    1. Navigate to Settings โ†’ Discussion in your WordPress admin panel.
    2. Scroll down to the Disallowed Comment Keys section.
    3. Add domains, keywords, or IP addresses you want to block, one per line.

    For example, to block a problematic Fediverse server, you would add its domain (like bad-instance.com) to the disallowed comment keys list.

    The ActivityPub settings page also links to this under Settings โ†’ ActivityPub โ†’ Settings tab, where the “Blocklist” section points you to the same Disallowed Comment Keys setting.

    Tracking Blocked Activities

    When the plugin blocks an incoming activity, it logs relevant details to your PHP error logs. This typically includes information about the actor (user) who sent the activity, helping you monitor and refine your blocking strategy over time.

    Best Practices for Blocking

    When managing your WordPress site as a Fediverse node:

    1. Be specific: Block particular profiles or domains instead of using broad keyword filters. Precision helps avoid false positives.
    2. Review your logs: Periodically check your PHP error logs to understand whatโ€™s being blocked.
    3. Adjust as needed: Refine your blocking strategy based on the patterns you observe.

    Unlike centralized social networks, the Fediverse gives you direct control over what appears on your site. Your blocklist is a reflection of your site’s values and the kind of interactions you want to support.

    Fediverse Reactions