fix(activitypub): deliver outgoing notes to followers (getFollowerSharedInboxes wrong column)#702
Merged
NuSkooler merged 1 commit intoJun 18, 2026
Conversation
…redInboxes)
Public notes were persisted to the outbox but never delivered: the
followers->actors JOIN filtered `WHERE f.name = ?` bound to the followers
*endpoint URL*, but in the `collection` table `name` holds the collection
type ('followers') and the URL lives in `collection_id`. The filter matched
zero rows, so no shared-inboxes were collected and nothing was sent (while
the tosser still logged "published successfully").
Filter on `collection_id` (the endpoint URL) and `name` ('followers'),
consistent with the other queries in this file.
Fixes NuSkooler#701
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
getFollowerSharedInboxes()incore/activitypub/collection.jsfiltered the followers rows withWHERE f.name = ?bound to the followers endpoint URL. In thecollectiontable,nameholds the collection type ('followers') while the endpoint URL lives incollection_id(per the schema comments and every other query in the file). So the JOIN matched zero rows → no shared inboxes collected → outgoing public notes were written to the outbox but never delivered to followers. The tosser still logged"Note Activity published successfully", masking the failure.Fix
Verification
Confirmed at the SQL level on a live install: the original
WHERE f.name = <url>returns 0 rows; the correctedWHERE f.collection_id = <url> AND f.name = 'followers'returns the follower'sendpoints.sharedInbox. After the patch, posting a public note logs"Message delivered to Inbox" inbox=https://<remote>/inboxand the note appears in the follower's Mastodon timeline.Likely a regression from the SQL refactor that replaced the previous per-actor
Actor.fromId()fan-out loop.Fixes #701