Fix Pleroma WebSocket recovery and subscriptions #1

Merged
fediverse.org merged 6 commits from fix/pleroma-websocket-support into main 2026-08-04 23:59:19 +00:00
Collaborator

Summary

  • prevent first-connect and reconnect gaps by preserving streamed pending rows and draining contiguous min_id pages
  • encode Mastodon-compatible list and hashtag subscription parameters
  • fall back to active-feed polling when a server rejects a subscription, with stale-socket protection
  • poll mounted Tier-B feeds and remove duplicate notification delivery from the shared user stream
  • document Pleroma WebSocket origin allowlisting for separately hosted clients

Testing

  • test-first regressions added for every behavioral slice
  • independent review performed before each commit
  • npm run lint passes
  • npm run test:coverage passes: 103 files, 662 tests
  • TypeScript and production build pass
  • npm run verify reaches the existing Brotli budget gate; current pre-existing failures are app JS 34,648 / 25,600 bytes, worker JS 18,377 / 12,288 bytes, and CSS 6,934 / 4,096 bytes

Notes

The implementation was validated against the current Pleroma streaming handler, streamer view, integration tests, and pagination source.

## Summary - prevent first-connect and reconnect gaps by preserving streamed pending rows and draining contiguous `min_id` pages - encode Mastodon-compatible list and hashtag subscription parameters - fall back to active-feed polling when a server rejects a subscription, with stale-socket protection - poll mounted Tier-B feeds and remove duplicate notification delivery from the shared `user` stream - document Pleroma WebSocket origin allowlisting for separately hosted clients ## Testing - test-first regressions added for every behavioral slice - independent review performed before each commit - `npm run lint` passes - `npm run test:coverage` passes: 103 files, 662 tests - TypeScript and production build pass - `npm run verify` reaches the existing Brotli budget gate; current pre-existing failures are app JS 34,648 / 25,600 bytes, worker JS 18,377 / 12,288 bytes, and CSS 6,934 / 4,096 bytes ## Notes The implementation was validated against the current Pleroma streaming handler, streamer view, integration tests, and pagination source.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
fediverse.org/lightfs!1
No description provided.