- v3-task_plan.md: mark Phases 1-5 complete, update adversarial review results with 12 resolved issues, finalize component tree and layout - v3-findings.md: add adversarial review agent findings - v3-progress.md: document Phases 1-5 implementation details - progress.md: add v3 MVP session entry - docs/README.md: reorganize with v2/v3 sections
62 lines
2.5 KiB
Markdown
62 lines
2.5 KiB
Markdown
# BTerminal v3 — Research Findings
|
|
|
|
## Adversarial Review Results (2026-03-07)
|
|
|
|
### Agent: Architect (Advocate)
|
|
- Proposed full component tree, data model, 10-phase plan
|
|
- JSON config at `~/.config/bterminal/groups.json`
|
|
- Single shared sidecar (multiplexed sessions)
|
|
- ClaudeSession + TeamAgentsPanel split from AgentPane
|
|
- SQLite tables: agent_messages, project_agent_state
|
|
- MVP at Phase 5
|
|
|
|
### Agent: Devil's Advocate
|
|
- Found 12 issues, 4 critical:
|
|
1. xterm.js 4-instance ceiling (hard OOM wall)
|
|
2. Single sidecar SPOF
|
|
3. Layout store has no workspace concept
|
|
4. 384px per project unusable on 1920px
|
|
- Recommended: fix workspace concept, xterm budget, UI density, persistence before anything else
|
|
- Proposed suspend/resume ring buffer for terminals
|
|
- Proposed per-project sidecar pool (max 3) — deferred to v3.1
|
|
|
|
### Agent: UX + Performance Specialist
|
|
- Wireframes for 5120px (5 projects) and 1920px (3 projects)
|
|
- Adaptive project count: `Math.floor(width / 520)`
|
|
- xterm budget: lazy-init + scrollback serialization
|
|
- RAF batching for 5 concurrent streams
|
|
- <100ms workspace switch via serialize/unmount/remount
|
|
- Memory budget: ~225MB total (within WebKit2GTK limits)
|
|
- Team panel: inline >2560px, overlay <2560px
|
|
- Command palette: Ctrl+K, floating overlay, fuzzy search
|
|
|
|
## Codebase Reuse Analysis
|
|
|
|
### Survives (with modifications)
|
|
- TerminalPane.svelte — add suspend/resume lifecycle
|
|
- MarkdownPane.svelte — unchanged
|
|
- AgentTree.svelte — reused inside ClaudeSession
|
|
- ContextPane.svelte — extracted to workspace tab
|
|
- StatusBar.svelte — modified for per-project costs
|
|
- ToastContainer.svelte — unchanged
|
|
- agents.svelte.ts — add projectId field
|
|
- theme.svelte.ts — unchanged
|
|
- notifications.svelte.ts — unchanged
|
|
- All adapters (agent-bridge, pty-bridge, claude-bridge, sdk-messages, session-bridge, ctx-bridge, ssh-bridge)
|
|
- All Rust backend (sidecar, pty, session, ctx, watcher)
|
|
- highlight.ts, agent-tree.ts utils
|
|
|
|
### Replaced
|
|
- layout.svelte.ts → workspace.svelte.ts
|
|
- TilingGrid.svelte → ProjectGrid.svelte
|
|
- PaneContainer.svelte → ProjectBox.svelte
|
|
- SessionList.svelte → ProjectHeader + command palette
|
|
- SettingsDialog.svelte → SettingsTab.svelte
|
|
- AgentPane.svelte → ClaudeSession.svelte + TeamAgentsPanel.svelte
|
|
- App.svelte → full rewrite
|
|
|
|
### Dropped (v3.0)
|
|
- Detached pane mode (doesn't fit workspace model)
|
|
- Drag-resize splitters (project boxes have fixed internal layout)
|
|
- Layout presets (1-col, 2-col, etc.) — replaced by adaptive project count
|
|
- Remote machine integration (deferred to v3.1, elevated to project level)
|