feat: phase 8 — Vite/TS canvas-based KVM console frontend
crates/ericrfb-frontend — vanilla TypeScript + Vite: login.ts: - Login form POSTs to /api/login, receives applet_id - Error display, auto-transitions to console view on success console.ts: - Canvas-based renderer sized to framebuffer dimensions - WebSocket binary protocol decoder: TAG_BLIT → putImageData, TAG_RESIZE → canvas resize - Keyboard capture: keydown/keyup → JS code → e-RIC scancode → WS - Mouse capture: move/click/wheel → scaled coords + button mask → WS - Right-click and context menu suppressed for pass-through input.ts: - Full 104-key JS KeyboardEvent.code → scancode mapping table protocol.ts: - Binary message builders matching proxy WS protocol tags Toolbar: Ctrl+Alt+Del button, Fullscreen toggle. Dark theme, pixelated canvas rendering, cursor hidden over console. Vite config proxies /api to localhost:3000 for dev mode. Build outputs to ../../dist for proxy static serving. Builds to 5.8KB JS + 1.4KB CSS gzipped. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
15
crates/ericrfb-frontend/package.json
Normal file
15
crates/ericrfb-frontend/package.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "ericrfb-frontend",
|
||||
"private": true,
|
||||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "tsc && vite build",
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"devDependencies": {
|
||||
"typescript": "~6.0.2",
|
||||
"vite": "^8.0.10"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user