mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-02 13:39:41 +02:00
chore: bump version to 0.1594
This commit is contained in:
@@ -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.1593 (must match `package.json` for npm publish)
|
||||
**Version**: 0.1594 (must match `package.json` for npm publish)
|
||||
|
||||
## Project Overview
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "claudeman",
|
||||
"version": "0.1593",
|
||||
"version": "0.1594",
|
||||
"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",
|
||||
|
||||
+58
-7
@@ -955,7 +955,33 @@ class LocalEchoOverlay {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Auto-detect text already on the prompt line in the terminal buffer.
|
||||
// Called on first keystroke when overlay is empty (pendingText='' and
|
||||
// flushedOffset=0). Handles Tab completion, arrow-key edits, and any
|
||||
// other case where the PTY has prompt text the overlay doesn't know about.
|
||||
// Without this, the overlay's opaque background covers the canvas text.
|
||||
_detectBufferText() {
|
||||
try {
|
||||
const prompt = this._findPrompt();
|
||||
if (!prompt) return;
|
||||
const buf = this.terminal.buffer.active;
|
||||
const absRow = buf.viewportY + prompt.row;
|
||||
const line = buf.getLine(absRow);
|
||||
if (!line) return;
|
||||
const lineText = line.translateToString(true);
|
||||
const textStart = prompt.col + 2; // after "❯ "
|
||||
const afterPrompt = lineText.slice(textStart).trimEnd();
|
||||
if (afterPrompt.length > 0) {
|
||||
this._flushedOffset = afterPrompt.length;
|
||||
this._flushedText = afterPrompt;
|
||||
this._lastPromptPos = prompt;
|
||||
}
|
||||
} catch {}
|
||||
}
|
||||
|
||||
addChar(char) {
|
||||
// On first keystroke after overlay was empty, detect existing buffer text
|
||||
if (!this.pendingText && !this._flushedOffset) this._detectBufferText();
|
||||
this.pendingText += char;
|
||||
this._persist();
|
||||
this._render();
|
||||
@@ -981,6 +1007,7 @@ class LocalEchoOverlay {
|
||||
|
||||
appendText(text) {
|
||||
if (!text) return;
|
||||
if (!this.pendingText && !this._flushedOffset) this._detectBufferText();
|
||||
this.pendingText += text;
|
||||
this._persist();
|
||||
this._render();
|
||||
@@ -2227,8 +2254,29 @@ class ClaudemanApp {
|
||||
}
|
||||
this._pendingInput += data;
|
||||
flushInput();
|
||||
} else if (this._localEchoOverlay) {
|
||||
// No pending or flushed text — try detecting buffer text first
|
||||
// (handles Tab completion, arrow edits, etc.)
|
||||
this._localEchoOverlay._detectBufferText();
|
||||
if (this._localEchoOverlay._flushedOffset > 0) {
|
||||
// Found buffer text — delete last char
|
||||
this._localEchoOverlay._flushedOffset--;
|
||||
if (this._localEchoOverlay._flushedText) {
|
||||
this._localEchoOverlay._flushedText = this._localEchoOverlay._flushedText.slice(0, -1);
|
||||
}
|
||||
this._localEchoOverlay._lastRenderKey = '';
|
||||
if (this._localEchoOverlay._flushedOffset > 0) {
|
||||
this._localEchoOverlay._render();
|
||||
} else {
|
||||
this._localEchoOverlay._lastPromptPos = null;
|
||||
this._localEchoOverlay.overlay.innerHTML = '';
|
||||
this._localEchoOverlay.overlay.style.display = 'none';
|
||||
}
|
||||
this._pendingInput += data;
|
||||
flushInput();
|
||||
}
|
||||
// else: truly nothing to delete — swallow the backspace
|
||||
}
|
||||
// else: nothing to delete — swallow the backspace
|
||||
return;
|
||||
}
|
||||
if (/^[\r\n]+$/.test(data)) {
|
||||
@@ -4789,16 +4837,19 @@ class ClaudemanApp {
|
||||
// the PTY echo arrives in the terminal buffer.
|
||||
if (this.activeSessionId) {
|
||||
const echoText = this._localEchoOverlay?.pendingText || '';
|
||||
// Include buffer-detected flushed text (from Tab completion, etc.)
|
||||
// so it's preserved across tab switches.
|
||||
const existingFlushed = this._localEchoOverlay?._flushedOffset || 0;
|
||||
const existingFlushedText = this._localEchoOverlay?._flushedText || '';
|
||||
if (echoText) {
|
||||
this._sendInputAsync(this.activeSessionId, echoText);
|
||||
// Store flushed length AND text PER SESSION so it's available when switching back.
|
||||
// The text is needed because the terminal buffer may be stale after async reload.
|
||||
}
|
||||
const totalOffset = existingFlushed + echoText.length;
|
||||
if (totalOffset > 0) {
|
||||
if (!this._flushedOffsets) this._flushedOffsets = new Map();
|
||||
if (!this._flushedTexts) this._flushedTexts = new Map();
|
||||
const prev = this._flushedOffsets.get(this.activeSessionId) || 0;
|
||||
const prevText = this._flushedTexts.get(this.activeSessionId) || '';
|
||||
this._flushedOffsets.set(this.activeSessionId, prev + echoText.length);
|
||||
this._flushedTexts.set(this.activeSessionId, prevText + echoText);
|
||||
this._flushedOffsets.set(this.activeSessionId, totalOffset);
|
||||
this._flushedTexts.set(this.activeSessionId, existingFlushedText + echoText);
|
||||
}
|
||||
}
|
||||
this._localEchoOverlay?.clear();
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
<meta name="google" content="notranslate">
|
||||
<title>Claudeman</title>
|
||||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0%25' y1='0%25' x2='100%25' y2='100%25'%3E%3Cstop offset='0%25' stop-color='%2360a5fa'/%3E%3Cstop offset='100%25' stop-color='%233b82f6'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width='32' height='32' rx='6' fill='%230a0a0a'/%3E%3Cpath d='M18 4L8 18h6l-2 10 10-14h-6z' fill='url(%23g)'/%3E%3C/svg%3E">
|
||||
<link rel="stylesheet" href="styles.css?v=0.1593">
|
||||
<link rel="stylesheet" href="mobile.css?v=0.1593" media="(max-width: 1023px)">
|
||||
<link rel="stylesheet" href="styles.css?v=0.1594">
|
||||
<link rel="stylesheet" href="mobile.css?v=0.1594" media="(max-width: 1023px)">
|
||||
<!-- xterm.css loaded async — terminal won't display until xterm.js runs anyway -->
|
||||
<link rel="preload" href="vendor/xterm.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||||
<noscript><link rel="stylesheet" href="vendor/xterm.css"></noscript>
|
||||
@@ -1559,6 +1559,6 @@
|
||||
<!-- Lines drawn dynamically -->
|
||||
</svg>
|
||||
|
||||
<script defer src="app.js?v=0.1593"></script>
|
||||
<script defer src="app.js?v=0.1594"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user