Commit Graph

11 Commits

Author SHA1 Message Date
Jeff Emmett 0b2b2d2ad4 Initialize backlog for rSpace Online project 2026-01-02 14:53:24 +01:00
Jeff Emmett 7ebf45e984 Fix shape dragging - allow drag from header elements 2026-01-02 14:32:02 +01:00
Jeff Emmett 36df10efe2 Move favicon to public folder for Vite build 2026-01-02 13:41:58 +01:00
Jeff Emmett 100825a964 Add [rS] favicon to HTML pages 2026-01-02 13:38:50 +01:00
Jeff Emmett 61b6368248 Fix static asset serving and add reserved subdomains
- Serve static assets (js, wasm, css) before subdomain routing
- Add WASM and image content types
- Reserve 'create', 'new', 'start' subdomains for community creation form
- Fixes canvas not loading on subdomains

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 10:31:19 +01:00
Jeff Emmett 40ffd135da Fix Traefik routing: only handle subdomains
- Use unique router name 'rspace-canvas' to avoid conflict with rspace-prod
- Only match subdomains, explicitly exclude main domain
- rspace-prod handles rspace.online landing page
- rspace-online handles *.rspace.online canvas

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 08:24:01 +01:00
Jeff Emmett f3e18b6124 Add FolkArrow component for shape connections
- Implement folk-arrow web component using perfect-arrows
- Curved bezier arrows with perfect-freehand stroke styling
- Dynamic position tracking via requestAnimationFrame
- Connection mode: click source then target to create arrow
- Sync arrow properties (sourceId, targetId, color) via Automerge

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 23:13:25 +01:00
Jeff Emmett ddab22abc2 Add FolkWrapper component for standardized card UI
- Port StandardizedWrapper from React to web component
- Header with title, icon, color theming
- Pin, minimize, close action buttons
- Tags footer with add/remove functionality
- Integrate into canvas with "Card" toolbar button
- Sync wrapper properties via Automerge CRDT

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 23:06:48 +01:00
Jeff Emmett d6042fcfe7 feat: Add Automerge CRDT sync for real-time collaboration
- CommunitySync class bridges FolkJS shapes with Automerge documents
- Server stores Automerge binary format with debounced persistence
- Per-peer sync state for efficient delta synchronization
- WebSocket messages carry Automerge sync protocol
- Automatic migration from JSON to Automerge format
- WASM plugin for Vite to handle Automerge bundle

Enables true CRDT-based collaboration with:
- Conflict-free concurrent editing
- Efficient delta sync (only changed data)
- Offline-capable local documents
- Automatic peer reconnection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 22:59:32 +01:00
Jeff Emmett f1224e8b75 fix: Use web entrypoint for Traefik (Cloudflare handles SSL)
- Changed from websecure to web entrypoint
- Removed obsolete version attribute
- Cloudflare tunnel connects to port 80, so no TLS config needed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 21:14:55 +01:00
Jeff Emmett 1ec463f193 Initial rspace-online: FolkJS collaborative canvas with subdomain routing
- Pure FolkJS implementation with folk-shape, folk-markdown components
- Bun server with WebSocket sync and Host header subdomain detection
- Community creation API at /api/communities
- Docker setup with Traefik labels for wildcard *.rspace.online routing
- Landing page with community creation form
- Canvas page with basic markdown note creation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 16:27:07 +01:00