82ccfeb6a9
Input tarpitting fixes: - terminal.ts: batch stdin writes with 10ms coalescing window (flushes immediately for large payloads like paste), replacing per-keystroke WebSocket messages with fewer, larger frames - server.go: replace per-message time.After() with a reusable timer to eliminate GC pressure from repeated key input - server.go: coalesce queued stdin writes (up to 4KB) into a single PTY write to reduce syscall overhead Screenshot/rendering pipeline optimizations: - tracker.go: stop forcing empty cells to space; let exporters decide what to render, drastically reducing work for mostly-blank terminals - tracker.go: use clear() for dirty map instead of delete-in-loop - svg_exporter.go: skip visually empty cells (blank glyph, default BG, no reverse/underline); still render background rects for colored or reverse-video cells - png_exporter.go: add color parsing cache to avoid redundant hex parsing per cell; add empty cell fast-path; short-circuit blend math for coverage 0 and 255 Dashboard thumbnail concurrency: - server.go: replace single-flight screenshot fetching with limited parallelism (2-4 concurrent requests based on hardwareConcurrency) so large dashboards with many tiles update faster Also fixes typo in dashboard JS (tetagBySlug -> etagBySlug) that silently broke ETag caching for screenshot refreshes. Bumps version to 1.3.32.