Repository navigation
feat(collaboration): control center, follow mode, presenter mode and activity feed - #152
Open
professionalarduino-max wants to merge 4 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
…activity feed Control center (replaces the basic collaborators modal): - Participant list with colorful avatars, online status, role badges - Owner moderation: change roles, remove collaborators (server-enforced kick), remove + ban with a persistent session block list - Invite link with one-click copy - Tabs: participants, activity feed and the session chat Follow mode and presentation: - Share your view (editor tab, sprite, zoom, scroll) over the presence channel and follow any participant with one click - Presenter mode for lessons and streams: the owner presents, everyone else watches read-only and can raise a hand; the presenter grants speech - Floating follow bar: follow state, live presentation chip, raise-hand button, raised-hand counter Activity feed and per-user undo: - Live feed of sprite/costume/sound edits, presentation and moderation events with author, target name and time - Personal undo: each participant undoes only their own changes (restore functions captured from the VM), never other people's work - Per-entry Undo buttons plus a global 'undo my last change' Presence: action events are dispatched per message so consecutive edits never collapse; presentation and view state ride the best-effort channel.
… the presenter - Activity entries capture before/after diffs (renames show old and new names, deletes show a sprite summary); click an entry to expand the diff, including entries relayed from other participants - Targeted Restore: bring back a deleted sprite/costume/sound or roll a name back straight from the history, independent of the undo stack - While a presentation is live the audience automatically follows the presenter's view (tab, sprite, zoom, scroll); dismissing the follow chip keeps it off until the presenter changes - Owner crown badge and a gold ring on the presenting participant
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.
What
The collaboration experience, upgraded: a beautiful control center, follow mode with live presentations, and an activity feed with per-user undo. Built on top of the live-presence and chat work (PR #150).
🎛 Control center (replaces the basic collaborators modal)
📡 Follow mode and presentation
🕒 Activity feed and per-user undo
Technical notes
presencechannel (newview,control,actionfields) — no server changes required; the kick uses the existing collaborator REST API for real enforcementactionevents are dispatched per message (newonEventhook) so consecutive edits never collapse in the feedsessionControl.canEdit()in the operation tracking wrappers andDashCollaborationSession.canEdit()webpackbuild passes with 0 errorsTesting