Repository navigation
feat(collaboration): live presence + session chat (cursors, mentions, emoji, pins) - #150
Open
professionalarduino-max wants to merge 2 commits into
Conversation
…indicators and avatars Add Figma-style real-time presence to live-collaboration sessions: - dash-presence: ephemeral presence channel (cursor surface/position, open sprite, dragged block) relayed over the collaboration WebSocket as best-effort 'presence' messages — never persisted, available to viewers - PresenceCursors overlay: colored cursors with name labels on the stage and in the blocks workspace (workspace coordinates stay glued across zoom/scroll), plus a colored outline on blocks being dragged remotely - Sprite tiles show colored dots and a ring for sprites open in other participants' editors - PresenceAvatars in the menu bar: who is in the session, who is online - DashCollaboration: sendPresence()/onPresence + connectionId from 'ready' Requires the matching DashBlocks/server change that relays 'presence' messages and includes connectionId in the room 'ready' message.
…ned messages - dash-chat: room chat store + panel in the collaboration status bar — history, @mentions with unread notifications, emoji picker with categories, and pinned messages pointing at sprites/costumes/blocks with click-to-focus (block pins flash-highlight the block) - Chat travels over the collaboration WebSocket as ephemeral 'chat' messages with server-side room history — never written to the project document, so viewers can chat too - Feature handshake: 'auth' advertises features ['presence', 'chat'] and 'ready' lists server support; presence/chat are only sent when both sides support them, so old servers and old clients keep working
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds Figma-style live presence and a session chat to live-collaboration sessions 🎉
1. Live presence (cursors & co.)
src/lib/dash-presence.js— ephemeral presence channel: cursor (surface + position), open sprite, dragged block. Relayed over the collaboration WebSocket as best-effortpresencemessages — never written to the persistent Yjs document, so it also works for viewers.PresenceCursorsoverlay — colored cursors with name labels:⠿badge on the cursor.PresenceAvatarsin the menu bar — who is in the session, who is currently online.2. Session chat (
src/lib/dash-chat.js+dash-chatpanel)@usernamementions — highlighted in messages, unread badge + tooltip notification when someone mentions you.Compatibility — feature handshake
authadvertisesfeatures: ['presence', 'chat'],readylists server support.presence/chatto old servers (which used to close the connection).Notes
555aa35to929071f#3 inDashBlocks/server).vm.dashCollaborationsession,DASH_COLLABORATION_STATUSevents).