diff --git a/README.md b/README.md index fce33884..9a74a5d4 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Four packages are installed directly from GitHub forks rather than the npm regis In `package.json` these use the `github:owner/repo[#branch]` syntax so npm fetches them directly from GitHub on install. -> **Lockfile caveat:** The fork dependency is resolved to a specific commit in `package-lock.json`. When fixes are pushed to the fork, run `npm update @rmdes/indiekit-endpoint-activitypub` to pull the latest commit. The current lockfile pins to `eefa46f` (v2.10.1); the fork HEAD is at `8b9bff4` with additional AP reliability fixes baked in. +> **Lockfile caveat:** The fork dependency is resolved to a specific commit in `package-lock.json`. When fixes are pushed to the fork, run `npm update @rmdes/indiekit-endpoint-activitypub` to pull the latest commit. The current lockfile pins to `eefa46f` (v2.10.1); the fork HEAD is at `d143abf` with Like/Announce addressing and nested tag fixes baked in. --- @@ -130,8 +130,8 @@ Posts are converted from Indiekit's JF2 format to ActivityStreams 2.0 in two mod |---|---|---|---| | note | Create | Note | Plain text/HTML content | | article | Create | Article | Has `name` (title) and optional `summary` | -| like | Like | URL | Outbox serves as Note for Mastodon compatibility | -| repost | Announce | URL | Outbox serves as Note for Mastodon compatibility | +| like | Like | URL | `to: Public, cc: followers`; outbox serves as Note for Mastodon compat | +| repost | Announce | URL | `to: Public, cc: followers`; outbox serves as Note for Mastodon compat | | bookmark | Create | Note | Content prefixed with bookmark emoji + URL | | reply | Create | Note | `inReplyTo` set, author CC'd and Mentioned | @@ -166,6 +166,7 @@ These patches are applied to `node_modules` via postinstall and at serve startup | `patch-ap-allow-private-address` | federation-setup.js | Adds `signatureTimeWindow` and `allowPrivateAddress` to `createFederation()` | | `patch-ap-object-url-trailing-slash` | federation-setup.js | Object dispatcher uses `$in` query to match URLs with/without trailing slash | | `patch-ap-url-lookup-api` | Adds new route | Public `GET /activitypub/api/ap-url` resolves blog URL → AP object URL | +| `patch-ap-like-announce-addressing` | jf2-to-as2.js | Adds `to: Public, cc: followers` to Like and Announce activities for shared inbox routing | | `patch-ap-normalize-nested-tags` | jf2-to-as2.js | Strips path prefix from nested hashtags (`on/art/music` → `#music`) | | `patch-inbox-skip-view-activity-parse` | federation-bridge.js | Buffers body, skips PeerTube View, preserves `_rawBody` for Digest verification | | `patch-inbox-ignore-view-activity` | inbox-listeners.js | Registers no-op View handler to suppress "Unsupported activity type" errors | @@ -405,6 +406,9 @@ Patches are Node.js `.mjs` scripts in `scripts/` that surgically modify files in **`patch-ap-allow-private-address.mjs`** Adds `signatureTimeWindow: { hours: 12 }` and `allowPrivateAddress: true` to `createFederation()`. Handles both fresh v2.10.1 and already-patched files. Without this, Fedify rejects Mastodon retry signatures and blocks own-site URL resolution on the private LAN. +**`patch-ap-like-announce-addressing.mjs`** +Adds `to: Public, cc: followers` to Like activities and `cc: followers` to Announce activities in `jf2ToAS2Activity()`. Without this, Mastodon shared inboxes accept the activities (HTTP 202) but silently drop them because they lack the followers collection in their addressing. Create/Note activities were already correctly addressed. + **`patch-ap-normalize-nested-tags.mjs`** Strips path prefix from nested hashtags in JF2→AS2 conversion (`on/art/music` → `#music`). Mastodon doesn't support slash-delimited tag paths. @@ -660,6 +664,14 @@ Environment variables are loaded from `.env` via `dotenv`. See `indiekit.config. ## Changelog +### 2026-03-19 + +**fix: add cc:followers addressing to AP Like/Announce activities** (`bee8df2`) +Like and Announce activities were missing the followers collection in their `to`/`cc` addressing. Mastodon shared inboxes silently drop activities without `cc: followers`, so likes and reposts were delivered (HTTP 202) but never appeared on remote instances. Fix applied to both the fork source and as a patch script (`patch-ap-like-announce-addressing.mjs`). + +**chore: update activitypub endpoint fork** (`d143abf`) +Pushed Like/Announce addressing fix and nested tag normalization directly to the `svemagie/indiekit-endpoint-activitypub` fork. + ### 2026-03-14 **chore: upgrade checkout and setup-node actions to v4** (`d3fb055`)