This release introduces significant improvements to the multiplayer collaboration experience, including real-time synchronization of node positions, sizes, and content, enhanced user interface elements for easier sharing and leaving multiplayer sessions, and robust conflict prevention through node locking. Additionally, the update refines node sizing for consistent layout and smooth animations during remote changes, while also improving performance and fixing synchronization bugs.
- Added a WebRTC signaling server and integrated y-webrtc for real-time multiplayer synchronization, including a new multiplayer button with peer count and UI styles (78a2db) (Eric Ma)
- Enabled session sharing via URL parameters with automatic joining and shareable link copying, plus a toast notification system for user feedback (ade1b5) (Eric Ma)
- Implemented real-time drag synchronization with throttled position updates during node dragging for smooth multiplayer interaction (ade1b5) (Eric Ma)
- Added real-time resize synchronization to update node size changes continuously during drag operations (43e7ef) (Eric Ma)
- Introduced node locking mechanisms to prevent edit conflicts in multiplayer by showing lock indicators and restricting simultaneous edits (fcde1df) (Eric Ma)
- Improved multiplayer user experience by making the multiplayer button copy the share link on click and adding a dedicated leave button for easier session exit (3ec793) (Eric Ma)
- Animated remote position and size changes smoothly to enhance the visual experience during multiplayer layout updates (022f01) (Eric Ma)
- Refactored all nodes to have fixed dimensions with scrollable content to fix multiplayer sync bugs related to size detection (77e348) (Eric Ma)
- Enhanced multiplayer sync smoothness by increasing drag sync frequency to 60fps and adding live streaming sync for matrix cell fills (357193) (Eric Ma)
- Fixed synchronization issues where title, tags, and matrix cell content did not update correctly across multiplayer sessions (769d10) (Eric Ma)
- Fixed CRDT bypass issues ensuring all node mutations go through proper update methods for consistent multiplayer state (ade1b5) (Eric Ma)
- Removed isScrollable() overrides in favor of a unified base class implementation for consistent scrolling behavior (77e348) (Eric Ma)