Title: Axismundi Activities
Author: Jiwoon Kim
Published: <strong>November 11, 2026</strong>
Last modified: November 11, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/axismundi-activities.svg)

# Axismundi Activities

 By [Jiwoon Kim](https://profiles.wordpress.org/kimjiwoon/)

[Download](https://downloads.wordpress.org/plugin/axismundi-activities.0.1.6.zip)

 * [Details](https://wordpress.org/plugins/axismundi-activities/#description)
 * [Reviews](https://wordpress.org/plugins/axismundi-activities/#reviews)
 *  [Installation](https://wordpress.org/plugins/axismundi-activities/#installation)
 * [Development](https://wordpress.org/plugins/axismundi-activities/#developers)

 [Support](https://wordpress.org/support/plugin/axismundi-activities/)

## Description

Axismundi Activities is the **ledger**: an append-only, URI-keyed record of things
that
 happened — somebody followed somebody, liked something, announced something,
replied, withdrew one of those — and the relationship state derived from reading
it back.

It is deliberately not the thing that talks to other servers. There is no HTTP inbox
here,
 no outbox transport, no signatures, and no delivery queue. Those are somebody
else’s job, which is what lets this one be a plain, auditable record: an Activity
is written once and never edited, and undoing something is a new Activity rather
than a deletion.

#### What it needs

 * **Axismundi Actors** is required. Every Activity names an actor by URI, and that
   registry
    is the authority for those URIs.
 * **Axismundi Object Projections** is required for the shared ActivityStreams vocabulary.
   
   Ledger admission reads registered Activity ancestry and property exclusions instead
   of maintaining a second type list. It also supplies Object representation and
   local post integration; Activities retains ownership of ledger storage and action
   effects.
 * Axismundi Emoji and Axismundi Dialogs are optional. Emoji reactions and the anonymous
   
   remote-follow dialog use them where they are present.

#### What this version does

 * A limited **ActivityPub C2S outbox POST** for Like and Undo(Like), authenticated
   
   using WordPress REST cookies with a nonce or Application Passwords. Other C2S
   verbs and bare Object creation are not implemented by this slice.
 * An Actor **liked collection**, private by default. Account operators can publish
   
   its URI membership in Actor Profile settings. Publishing includes private-addressed
   Likes; it does not disclose member bodies or grant permission to fetch them.
 * An **immutable, URI-keyed Activity ledger** with a read-only administrator log.
 * **Follow and Block** relation state, for local actors and for cached remote ones,
   with
    the accepted inverse edge tracked separately from the outgoing one.
 * **Like, Dislike, emoji reactions, Announce, Reply and votes**, each with its 
   Undo, and
    each keyed by the URI of the thing it is about rather than by a local
   row id.
 * **FEP-044f QuoteRequest** decisions, so a quote of somebody’s post is something
   they
    agreed to rather than something that happened to them.
 * **Object lifecycle recording**: one Create when a projectable post is first published,
   
   and a Delete from its stable identity when it goes.
 * **Feed blocks** — feed, loop, item template, tabs, filters, pagination, a density
   
   switch — plus follow, interaction and reaction-bar blocks.
 * A **public-safe outbox query** for representation plugins: the stored payload
   stays
    lossless while blind recipients and non-public Activities are kept out
   of anything public.

#### What this version does not do

No HTTP inbox, no S2S delivery transport, no HTTP signatures, no delivery queue,
and no scheduled
 tasks of any kind. It also does not own notifications or read 
state — who gets told about an Activity, and whether they have seen it, belongs 
elsewhere. Uploading media stays deliberately silent: putting a file in the library
is not an announcement.

#### What is kept, and for how long

The ledger is append-only. An Undo is recorded as its own Activity pointing at the
one it
 withdraws; nothing is rewritten, because a record that can be edited afterwards
is not evidence of anything. State like “does A follow B” is read back from that
history rather than stored as a fact that could drift from it.

An Activity therefore outlives the actor it names. When an Actor is tombstoned, 
it stops
 being something anybody can follow or react to, and the record that somebody
once did stays where it is — deleting an identity does not un-happen what it did.

### External services

**This plugin makes no network request of its own.** There is no HTTP client in 
it at all:
 no inbox to receive from, no outbox to send from, nothing signed, nothing
delivered. Where Axismundi federates, it is the ActivityPub transport plugin that
does it, and that plugin discloses what it sends.

There is exactly one place where using this plugin causes a request to leave your
site, and
 it is worth naming because a visitor rather than an administrator sets
it off:

 * **Following from another server.** Somebody who is not a member of your site 
   can press
    Follow on a profile here and type their own Fediverse handle (`@you@
   example.com`). To send them back to their own server to finish the follow, this
   asks **Axismundi Actors** to look that handle up — a WebFinger request to the
   host in the handle they typed, made by that plugin under its own disclosure. 
   What comes back is the address of their server’s follow page, which they are 
   then redirected to. The handle is not stored and no account is created here. 
   To keep the endpoint from being used to make your site probe arbitrary hosts,
   attempts are limited to ten a minute per visitor address; that address is used
   only as the key of a one-minute counter and is not otherwise recorded.

Nothing else here reaches outside this site.

## Blocks

This plugin provides 11 blocks.

 *   Follow Button Follows the current Actor profile as the active Axismundi Actor.
 *   Reaction Bar The emoji reactions already on the current Object, each with the
   number of people behind it. Place it above Object Actions; the Reaction Button
   block adds new ones.
 *   Feed The Actor feed: it resolves which surface is being read, how it is walked,
   and hands that to the layouts inside it.
 *   Interaction One control for acting on the current projected object: reply, 
   like, dislike, announce, quote, react or vote.
 *   Feed Tabs One editable layout per profile surface. The reader sees the tab 
   they are on; an author edits each surface separately.
 *   Feed Tab The layout of one profile surface: its filters, its density switch,
   the cards it repeats and where its pager goes.
 *   Feed Filters Renders the current surface's filters where the template places
   them.
 *   Feed Loop Repeats the feed's entries. It holds one item template per density;
   the first is the default, and a second adds the Card/Compact switch.
 *   Feed Pagination Where the timeline continues. A cursor feed has one direction
   and no page numbers, so this is Load more rather than a numbered pager.
 *   Feed Density Switch Where the Card/Compact control appears. It changes how 
   the same entries are drawn, never which ones.
 *   Feed Item Template The card the feed repeats for every Object it lists. Edited
   once here; rendered once per Object, including the ones that arrive after Load
   more.

## Installation

 1. Install and activate **Axismundi Actors** and **Axismundi Object Projections**.
 2. Upload this plugin folder to `/wp-content/plugins/`, or install it through
     **Plugins
    > Add New**, then activate it.
 3. Place the follow, interaction, reaction or feed blocks where you want them. There
    is
     nothing to configure first.
 4. The ledger is readable, read-only, from the administrator log.

Activation creates this plugin’s own database tables. Nothing is contacted on the
internet
 during installation, and no scheduled task is added.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Axismundi Activities” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ Jiwoon Kim ](https://profiles.wordpress.org/kimjiwoon/)

[Translate “Axismundi Activities” into your language.](https://translate.wordpress.org/projects/wp-plugins/axismundi-activities)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/axismundi-activities/),
check out the [SVN repository](https://plugins.svn.wordpress.org/axismundi-activities/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/axismundi-activities/)
by [RSS](https://plugins.trac.wordpress.org/log/axismundi-activities/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.1.6

 * Add object-based Sent membership and audience and reply filters independently
   of Outbox Activity history.
 * Record Inbox receipt provenance for new deliveries without classifying historical
   receipts.
 * Accept C2S submissions at protocol-named Outbox routes while keeping previous
   POST routes available.
 * Sanitize named submitted fields and escape helper markup at output with local
   HTML allowlists.
 * Preserve Interactivity context through block wrapper attributes instead of unescaped
   attribute output.

#### 0.1.5

 * Serve and observe a Person’s featured collection, holding an unresolved member’s
   
   position instead of publishing a partial replacement.
 * Give a Community its moderators as an observed collection, without turning moderation
   
   into a grant over the Group’s own account.
 * Let a Community review what a remote Person submits to it, recording the decision
   as a
    further Activity rather than as an edit.
 * Record a reply addressed to a Group here rather than in a product plugin, and
   give a
    Community’s moderators one screen to work from.
 * Carry an existing group across to the Community contract only when an administrator
   
   asks for it, never on activation.
 * End a Follow by Block without letting the accepted inverse edge return.
 * Sanitize the publication-selection nonce before verification, and name the escaping
   
   authority at every output boundary that defers to core.

Earlier releases are recorded in changelog.txt.

## Meta

 *  Version **0.1.6**
 *  Last updated **4 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.7 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 8.1 or higher **
 * Tags
 * [activitypub](https://wordpress.org/plugins/tags/activitypub/)[ActivityStreams](https://wordpress.org/plugins/tags/activitystreams/)
   [federation](https://wordpress.org/plugins/tags/federation/)[social](https://wordpress.org/plugins/tags/social/)
 *  [Advanced View](https://wordpress.org/plugins/axismundi-activities/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/axismundi-activities/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/axismundi-activities/reviews/)

## Contributors

 *   [ Jiwoon Kim ](https://profiles.wordpress.org/kimjiwoon/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/axismundi-activities/)