Files
openchamber/packages/web
Nguyễn Ngô ThượngandBohdan Triapitsyn 3cd6d051cb perf: fix streaming lag, memory leaks, stuck spinners, and proxy timeout (#483)
* perf: fix streaming lag, memory leaks, and proxy timeout

- PERF-001: Batch all streaming parts via requestAnimationFrame instead of
  per-token Zustand set() calls (~100/sec → 1 per frame)
- PERF-002: Fix direct state.sessionMemoryState mutation inside set() callback
- PERF-003: Debounce messageStore→sessionStore subscription via rAF + 500ms
  title computation delay
- PERF-004: Stabilize SSE callbacks with refs to prevent reconnection storms;
  add 5-min stuck session idle timeout
- PERF-005: Bound messageCache (500 max, LRU eviction), cap registry Maps,
  cleanup on session eviction
- PERF-006: Replace toast duration: Infinity with 30s + id-based dedup
- Fix proxy timeout: POST /session/:id/message 45s → 4min (matches CLI)
- Add vitest + jsdom test infrastructure (61 tests across 7 files)

Addresses: #476 (stuck spinner), #358 (34GB memory leak), #190 (browser lag)

* perf: virtualize tool output rendering (read, edit, write)

- PERF-007: Replace per-line <SyntaxHighlighter> with VirtualizedCodeBlock:
  - ONE Prism.highlight() call for entire file instead of N per-line calls
  - @tanstack/react-virtual renders only visible rows (~30 vs 2000+)
  - Applied to: ToolPart (read, DiffPreview, WriteInputPreview) and
    ToolOutputDialog (unified diff, read content)
- PERF-008: Memoize parseReadToolOutput/parseDiffToUnified via useMemo
  to prevent re-parsing on every re-render

A 2000-line file read now mounts ~30 DOM nodes instead of 2000
SyntaxHighlighter instances, eliminating the main-thread blocking
that caused UI freezes during file operations.

* fix: resolve lint errors (unused vars in tests and VirtualizedCodeBlock)

* chore: trim PR scope to core perf fixes

* fix: restore tool-card highlight stability

---------

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
2026-02-23 12:05:53 +02:00
..
2025-12-07 19:32:53 +02:00
2026-02-17 19:36:19 +02:00

@openchamber/web

GitHub stars GitHub forks GitHub release Created with OpenCode Ask Zread Discord Support the project

Web/PWA interface for the OpenCode AI coding agent.

This package installs the openchamber CLI that runs a local web server. For the full project overview and screenshots, see the main repo:

https://github.com/btriapitsyn/openchamber

Installation

# Quick install (auto-detects your package manager)
curl -fsSL https://raw.githubusercontent.com/btriapitsyn/openchamber/main/scripts/install.sh | bash

# Or install manually
bun add -g @openchamber/web    # or npm, pnpm, yarn

Usage

openchamber                          # Start on port 3000
openchamber --port 8080              # Custom port
openchamber --daemon                 # Background mode
openchamber --ui-password secret     # Password-protect UI
OPENCODE_PORT=4096 OPENCODE_SKIP_START=true openchamber  # Connect to external OpenCode server
openchamber stop                     # Stop server
openchamber update                   # Update to latest version

Environment Variables

  • OPENCODE_PORT - Port of external OpenCode server to connect to (instead of starting embedded server)
  • OPENCODE_SKIP_START - Skip starting embedded OpenCode server (use with OPENCODE_PORT to connect to external instance)

Prerequisites

Features

Core UI

  • Branchable chat timeline with /undo, /redo, and one-click forks from earlier turns
  • Smart tool UIs for diffs, file operations, permissions, and long-running task progress
  • Multi-agent runs from one prompt with isolated worktrees for safe comparisons
  • Git workflows in-app: identities, commits, PR creation, checks, and merge actions
  • Context visibility tools (token/cost breakdowns, raw message inspection, and activity summaries)
  • Integrated terminal with per-directory sessions and stable performance on heavy output

Web / PWA

  • Cloudflare Quick Tunnel for instant remote access (--try-cf-tunnel)
  • One-scan onboarding with tunnel QR + password URL helpers
  • Mobile-first experience: optimized chat controls, keyboard-safe layouts, and attachment-friendly UI
  • Background notifications plus reliable cross-tab session activity tracking
  • Built-in self-update + restart flow that keeps your server settings intact

License

MIT