diff --git a/CHANGELOG.md b/CHANGELOG.md index 5545845f..42572ad2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # aicodeman +## 0.3.6 + +### Patch Changes + +- Re-enable WebGL renderer with 48KB/frame flush cap protection against GPU stalls + ## 0.3.5 ### Patch Changes diff --git a/CLAUDE.md b/CLAUDE.md index cc7ffc9d..8fd01a4a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -52,7 +52,7 @@ When user says "COM": 4. **Sync CLAUDE.md version**: Update the `**Version**` line below to match the new version from `package.json` 5. **Commit and deploy**: `git add -A && git commit -m "chore: version packages" && git push && npm run build && systemctl --user restart codeman-web` -**Version**: 0.3.5 (must match `package.json`) +**Version**: 0.3.6 (must match `package.json`) ## Project Overview diff --git a/package.json b/package.json index bf7ad6ab..0960c84c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aicodeman", - "version": "0.3.5", + "version": "0.3.6", "description": "The missing control plane for AI coding agents - run 20 autonomous agents with real-time monitoring and session persistence", "type": "module", "main": "dist/index.js", diff --git a/src/web/public/app.js b/src/web/public/app.js index 85dc0b5c..84ad39a5 100644 --- a/src/web/public/app.js +++ b/src/web/public/app.js @@ -618,14 +618,13 @@ class CodemanApp { const container = document.getElementById('terminalContainer'); this.terminal.open(container); - // WebGL renderer disabled — canvas renderer used instead. - // xterm.js WebGL addon causes synchronous GPU ReadPixels calls during large - // terminal writes (buffer loads, heavy Ink output) that block Chrome's main - // thread for 10+ seconds, triggering "page unresponsive" crashes. - // Canvas renderer handles the same workloads without GPU stalls. - // Re-enable with ?webgl=1 URL param for testing. + // WebGL renderer for GPU-accelerated terminal rendering. + // Previously caused "page unresponsive" crashes from synchronous GPU stalls, + // but the 48KB/frame flush cap in flushPendingWrites() now prevents + // oversized terminal.write() calls that triggered the stalls. + // Disable with ?nowebgl URL param if GPU issues return. this._webglAddon = null; - if (new URLSearchParams(location.search).has('webgl') && typeof WebglAddon !== 'undefined') { + if (!new URLSearchParams(location.search).has('nowebgl') && typeof WebglAddon !== 'undefined') { try { this._webglAddon = new WebglAddon.WebglAddon(); this._webglAddon.onContextLoss(() => {