feat(refboard): canvas polish — transform box sync, dot grid, snap tuning, perf fixes

- Fix transform box not updating after alignment/arrangement/normalize/flip operations
  (shortcuts, context menu, and selection toolbar all fixed with DRY _opUpdate helper)
- Replace 100ms polling loop with event-driven viewport updates (moved + wheel-scroll)
- Add adaptive dot grid background that responds to zoom/pan
- Reduce snap guide threshold from 8px to 4px for subtler snapping
- Remove PresenceOverlay (remote selection highlighting) — too heavy for minimal benefit
- Offset multiple dropped images so they don't overlap
- Add new canvas modules: SnapGuides, clipboard, grouping, FrameSprite, DrawingSprite,
  LaserPointer, context-menu-items, SelectionToolbar, Minimap
- Extract Editor hooks into dedicated files (useBoardLoader, useCanvasSetup,
  useShortcutHandler, useLayerPanel, useSaveManager, useFollowMode)
- Sync improvements: real-time transform broadcast, board rooms, viewport sync
This commit is contained in:
Hiren Kangad
2026-03-10 03:58:53 +05:30
parent cfd7adf73d
commit e9509ef7b0
41 changed files with 4171 additions and 705 deletions
+2
View File
@@ -2,6 +2,7 @@ const { Server } = require('socket.io');
const { verifyToken } = require('../auth');
const { getUserById } = require('../db');
const { setupBoardRoom } = require('./board-room');
const { setupViewportSync } = require('./viewport-sync');
/**
* Set up Socket.IO on the given HTTP server.
@@ -49,6 +50,7 @@ function setupSocket(httpServer) {
// Set up board room handlers
setupBoardRoom(io, socket);
setupViewportSync(io, socket);
socket.on('disconnect', (reason) => {
console.log(`[socket] User disconnected: ${socket.userDisplayName} (${reason})`);