fix(federation): serialize featured-pin resync per site (4fk)
resyncFeaturedPins() runs a long Remove-all -> wait 5s -> Add-in-order
sequence and was fired fire-and-forget from /save. Two concurrent saves on
the same site interleaved their Remove/Add sequences and scrambled the
StatusPin order on Mastodon. Wrap it in a per-site serializer: a resync
already in flight coalesces later requests into one rerun after it finishes
(accumulating their extra unpins), so saves never interleave and rapid saves
don't pile up N full resyncs. Renamed the worker to doResyncFeaturedPins();
the exported resyncFeaturedPins() is now the serializing wrapper.
- src/services/ActivityPubService.js — per-site resync serializer + coalescing
Co-Authored-By: Claude <noreply@…>