Repository navigation
Release v2.3.0
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 ownICollaborationParticipantResolver; register it withAddCratisCollaboration<TResolver>()and map the endpoint withMapCratisCollaboration(). 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)]) andICollaborationRoomObserver([Version(0)]), and theCollaborationRoomGraingrain. 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-parkingCollaboratorCursors, and aCollaborationIndicator, 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.