Skip to content

Release v2.3.0

Choose a tag to compare

@github-actions github-actions released this 05 Nov 13:18
275a9a8

Live collaboration presence for Orleans applications: who is present in a room and where their cursor is, shared across replicas, with the matching React client.

Added

  • Live collaboration in Cratis.Choreography: a WebSocket hub that tracks the collaborators in a room and broadcasts their presence and cursor positions. Identity and tenancy come from your own ICollaborationParticipantResolver; register it with AddCratisCollaboration<TResolver>() and map the endpoint with MapCratisCollaboration().
  • AddCratisCollaborationOrleans() shares the roster across replicas through an Orleans grain, so presence is correct at any replica count, and sessions of a replica that goes away expire instead of lingering.
  • New grain interfaces ICollaborationRoomGrain ([Version(0)]) and ICollaborationRoomObserver ([Version(0)]), and the CollaborationRoomGrain grain. No existing grain interface changes.
  • Collaboration client in @cratis/choreography/collaboration: a resilient WebSocket client, roster, session identity and cursor geometry, with no dependency on React.
  • React bindings in @cratis/choreography/collaboration/react: useCollaborators, interpolated and edge-parking CollaboratorCursors, and a CollaborationIndicator, with a CSS export. Avatars, glass layer attributes, canvas transform activity and the trigger button are supplied by the host.
  • Documentation for the wire protocol, backend setup, running at more than one replica and the frontend client.