Phase 1 - Bug fixes:
- Fix color labels not showing on active line in format preview
- Replace eye emoji with SVG icon showing clear preview/raw state
- Replace // button with comment icon + better tooltip
- Fix ThemePicker accent colors when using system theme
Phase 2 - Font:
- Load JetBrains Mono via Google Fonts with offline fallback
- Add font size control (A-/A+) with keyboard shortcuts
- Persist font size preference in localStorage
Phase 3 - Auth:
- Supabase-based email/password authentication
- Device session management with configurable password renewal TTL
- AuthModal, UserMenu, SecuritySettings components
Phase 4 - Cloud sync:
- Document metadata sync to Supabase PostgreSQL
- Legacy localStorage migration on first login
- IndexedDB persistence via y-indexeddb
Phase 5 - Real-time collaboration:
- Y.js CRDT integration with CodeMirror 6
- Hocuspocus WebSocket server with JWT auth
- Collaborative cursor awareness
- CollabIndicator component
Phase 6 - Sharing:
- Share links with view/edit permissions
- ShareDialog component with copy-to-clipboard
- Minimal client-side router for /s/{token} URLs
Infrastructure:
- Docker Compose with PostgreSQL, GoTrue, PostgREST, Hocuspocus
- Nginx reverse proxy for all backend services
- SQL migrations with RLS policies
- Production-ready Dockerfile with build args
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
40 lines
1.0 KiB
JSON
40 lines
1.0 KiB
JSON
{
|
|
"name": "calcpad-web",
|
|
"private": true,
|
|
"version": "0.1.0",
|
|
"type": "module",
|
|
"description": "CalcPad web app — React + CodeMirror 6 + WASM engine",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc -b && vite build",
|
|
"preview": "vite preview",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest"
|
|
},
|
|
"dependencies": {
|
|
"@codemirror/commands": "^6.8.0",
|
|
"@codemirror/language": "^6.11.0",
|
|
"@codemirror/state": "^6.5.2",
|
|
"@codemirror/view": "^6.36.5",
|
|
"@lezer/highlight": "^1.2.1",
|
|
"@supabase/supabase-js": "^2.99.3",
|
|
"codemirror": "^6.0.1",
|
|
"nanoid": "^5.1.7",
|
|
"react": "^19.2.4",
|
|
"react-dom": "^19.2.4",
|
|
"y-codemirror.next": "^0.3.5",
|
|
"y-indexeddb": "^9.0.12",
|
|
"y-websocket": "^3.0.0",
|
|
"yjs": "^13.6.30"
|
|
},
|
|
"devDependencies": {
|
|
"@types/react": "^19.2.14",
|
|
"@types/react-dom": "^19.2.3",
|
|
"@vitejs/plugin-react": "^4.0.0 || ^5.0.0",
|
|
"typescript": "~5.9.3",
|
|
"vite": "^7.0.0",
|
|
"vite-plugin-pwa": "^1.2.0",
|
|
"vitest": "^4.1.0"
|
|
}
|
|
}
|