diff --git a/CLAUDE.md b/CLAUDE.md index 800830d2..f3080ebe 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -35,7 +35,7 @@ When user says "COM": 1. Increment version in BOTH `package.json` AND `CLAUDE.md` (verify they match with `grep version package.json && grep Version CLAUDE.md`) 2. Run: `git add -A && git commit -m "chore: bump version to X.XXXX" && git push && npm run build && systemctl --user restart claudeman-web` -**Version**: 0.1586 (must match `package.json` for npm publish) +**Version**: 0.1587 (must match `package.json` for npm publish) ## Project Overview diff --git a/package.json b/package.json index a5a4818c..1e3c356f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "claudeman", - "version": "0.1586", + "version": "0.1587", "description": "The missing control plane for Claude Code - 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 3f5b515c..9d1f1dbc 100644 --- a/src/web/public/app.js +++ b/src/web/public/app.js @@ -1017,25 +1017,9 @@ class LocalEchoOverlay { const cellW = dims.css.cell.width; const cellH = dims.css.cell.height; const totalCols = this.terminal.cols; - // Position after existing text on the prompt line. Normally this is - // just "❯ " (col+2), but after a tab switch the flushed text is echoed - // by the PTY and sits in the terminal buffer — the overlay must start - // AFTER it to avoid covering it with its opaque background. - // _flushedOffset provides immediate offset even before echo arrives. - let startCol = activePrompt.col + 2 + (this._flushedOffset || 0); - try { - const buf = this.terminal.buffer.active; - const promptLine = buf.getLine(buf.viewportY + activePrompt.row); - if (promptLine) { - const existingEnd = promptLine.translateToString(true).trimEnd().length; - if (existingEnd > startCol) startCol = existingEnd; - // Once echo has arrived in the buffer, we can drop the offset - if (this._flushedOffset && existingEnd >= activePrompt.col + 2 + this._flushedOffset) { - this._flushedOffset = 0; - } - } - } catch {} - startCol = Math.min(startCol, totalCols - 1); + // Position right after "❯ " (prompt col + 2), plus any chars flushed + // to PTY during a tab switch that may not be echoed yet. + const startCol = Math.min(activePrompt.col + 2 + (this._flushedOffset || 0), totalCols - 1); const firstLineCols = Math.max(1, totalCols - startCol); // Skip redundant re-renders (e.g. from flushPendingWrites at 60fps)