From 2e816f55e47a202fb8a2b6ce04307d079fedfb8d Mon Sep 17 00:00:00 2001 From: arkon Date: Tue, 24 Feb 2026 13:34:30 +0100 Subject: [PATCH] chore: bump version to 0.1613 --- CLAUDE.md | 2 +- package.json | 2 +- src/tmux-manager.ts | 17 ++++++++--------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 5bc08317..b6893070 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.1612 (must match `package.json`) +**Version**: 0.1613 (must match `package.json`) ## Project Overview diff --git a/package.json b/package.json index f3cffc15..fda20a58 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "claudeman", - "version": "0.1612", + "version": "0.1613", "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/tmux-manager.ts b/src/tmux-manager.ts index 50f9bc69..19c19ba1 100644 --- a/src/tmux-manager.ts +++ b/src/tmux-manager.ts @@ -260,25 +260,24 @@ export class TmuxManager extends EventEmitter implements TerminalMultiplexer { // Build the full command to run inside tmux const fullCmd = `${pathExport}${envExports} && ${cmd}`; - // Create tmux session in two steps to handle cold-start (no server running): - // 1. Create session with default shell (starts tmux server, session stays alive) - // 2. Set remain-on-exit + other options (server now exists) - // 3. Send actual command via send-keys - // This avoids the race where the command exits before remain-on-exit is set. - const shellCmd = fullCmd.replace(/"/g, '\\"'); + // Create tmux session in three steps to handle cold-start (no server running) + // and avoid the race where the command exits before remain-on-exit is set: + // 1. Create session with default shell (starts tmux server, stays alive) + // 2. Set remain-on-exit (server now exists, session won't vanish on exit) + // 3. Replace shell with actual command via respawn-pane (no terminal echo) execSync( `tmux new-session -ds "${muxName}" -c "${workingDir}" -x 120 -y 40`, { cwd: workingDir, timeout: EXEC_TIMEOUT_MS, stdio: 'ignore' } ); - // Set remain-on-exit now that the server is running + // Set remain-on-exit now that the server is running — must be before respawn-pane try { execSync(`tmux set-option -t "${muxName}" remain-on-exit on`, { timeout: EXEC_TIMEOUT_MS, stdio: 'ignore' }); } catch { /* Non-critical */ } - // Send the actual command to the session + // Replace the shell with the actual command (no echo in terminal) execSync( - `tmux send-keys -t "${muxName}" "${shellCmd}" Enter`, + `tmux respawn-pane -k -t "${muxName}" bash -c ${JSON.stringify(fullCmd)}`, { timeout: EXEC_TIMEOUT_MS, stdio: 'ignore' } );