Notify ActivityPub followers on actor updates #39

Merged
erik merged 1 commit from task-d213c262-actor-update-delivery into main 2026-06-28 11:14:21 -05:00
Owner

Summary

  • send ActivityPub actor Update activities after /settings/actor saves
  • include the serialized actor profile with avatar icon, banner, attachments, and follower addressing
  • use timestamped actor update activity IDs so repeated profile changes are not deduped
  • add structured logs for actor settings saves and actor update delivery start/queued/skipped states
  • wire the ActivityPub queue into settings routes and add regression coverage

Verification

  • npm run typecheck
  • npm test
  • npm run build

Task: task-d213c262

After merge/release/deploy, change the actor avatar and verify pod logs show the actor save plus ActivityPub update delivery, and verify Mastodon refreshes or receives a valid actor Update.

## Summary - send ActivityPub actor `Update` activities after `/settings/actor` saves - include the serialized actor profile with avatar `icon`, banner, attachments, and follower addressing - use timestamped actor update activity IDs so repeated profile changes are not deduped - add structured logs for actor settings saves and actor update delivery start/queued/skipped states - wire the ActivityPub queue into settings routes and add regression coverage ## Verification - npm run typecheck - npm test - npm run build Task: task-d213c262 After merge/release/deploy, change the actor avatar and verify pod logs show the actor save plus ActivityPub update delivery, and verify Mastodon refreshes or receives a valid actor Update.
Author
Owner

Review summary

Approved. The PR wires /settings/actor saves into ActivityPub actor Update delivery and adds structured logs so avatar/profile changes can be verified from pod logs.

Acceptance criteria coverage

  • Updating actor settings triggers an ActivityPub actor Update when followers exist and ActivityPub is enabled.
  • Delivered actor object includes profile icon from the avatar/image URL.
  • Repeated actor updates produce timestamped unique Update IDs.
  • Existing local actor settings behavior remains intact.
  • Structured logs are emitted for actor settings saves.
  • Structured logs are emitted for actor update delivery start/queued/skipped states.
  • Tests cover queued actor update payload shape, avatar URL serialization, follower inbox targeting, delivery logs, settings logs, and repeated unique Update IDs.

Verification

  • npm run typecheck
  • npm test
  • npm run build

Notes

The implementation intentionally logs changed field names rather than dumping full settings payloads. The delivery helper logs queued; actual remote delivery failures are still covered by the existing Fedify onOutboxError log path.

Follow-up gate

After merge/release/deploy, change the production actor avatar and verify pod logs show the actor save plus ActivityPub actor update delivery, then verify Mastodon refreshes or at least receives/applies a valid actor Update.

Blocking issues

None.

Verdict

Approved.

## Review summary Approved. The PR wires `/settings/actor` saves into ActivityPub actor `Update` delivery and adds structured logs so avatar/profile changes can be verified from pod logs. ## Acceptance criteria coverage - [x] Updating actor settings triggers an ActivityPub actor `Update` when followers exist and ActivityPub is enabled. - [x] Delivered actor object includes profile `icon` from the avatar/image URL. - [x] Repeated actor updates produce timestamped unique Update IDs. - [x] Existing local actor settings behavior remains intact. - [x] Structured logs are emitted for actor settings saves. - [x] Structured logs are emitted for actor update delivery start/queued/skipped states. - [x] Tests cover queued actor update payload shape, avatar URL serialization, follower inbox targeting, delivery logs, settings logs, and repeated unique Update IDs. ## Verification - `npm run typecheck` - `npm test` - `npm run build` ## Notes The implementation intentionally logs changed field names rather than dumping full settings payloads. The delivery helper logs `queued`; actual remote delivery failures are still covered by the existing Fedify `onOutboxError` log path. ## Follow-up gate After merge/release/deploy, change the production actor avatar and verify pod logs show the actor save plus ActivityPub actor update delivery, then verify Mastodon refreshes or at least receives/applies a valid actor Update. ## Blocking issues None. ## Verdict Approved.
erik merged commit c3f6debe63 into main 2026-06-28 11:14:21 -05:00
erik deleted branch task-d213c262-actor-update-delivery 2026-06-28 11:14:21 -05:00
Sign in to join this conversation.
No description provided.