feat: full Agent Teams support with tmux split-pane mode

- Enable tmux mouse mode on session creation for click-to-select panes
- Auto-discover teammate panes via tmux list-panes when config.json lacks paneIds
- Enable mouse mode dynamically when team pane streams start (restored sessions)
- Suppress teammate subagent popup windows (false info); teammates use main tmux panes
- Remove standalone teammate terminal windows in favor of native tmux interaction

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
arkon
2026-02-12 13:54:40 +01:00
co-authored by Claude Opus 4.6
parent a4e778c7c4
commit 2b685cea65
3 changed files with 11 additions and 18 deletions
+1 -1
View File
@@ -26,7 +26,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.1486 (must match `package.json` for npm publish)
**Version**: 0.1487 (must match `package.json` for npm publish)
## Project Overview
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "claudeman",
"version": "0.1486",
"version": "0.1487",
"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",
+9 -16
View File
@@ -2943,22 +2943,8 @@ class ClaudemanApp {
sessionId: data.sessionId,
color: data.color,
});
// Upgrade any existing subagent windows for this teammate to terminal mode
let foundExisting = false;
for (const [agentId, agent] of this.subagents) {
const info = this.getTeammateInfo(agent);
if (info && info.name === data.teammateName && !this.teammateTerminals.has(agentId)) {
const windowData = this.subagentWindows.get(agentId);
if (windowData) {
this.initTeammateTerminal(agentId, data, windowData.element);
foundExisting = true;
}
}
}
// If no existing subagent window found, create a standalone teammate terminal window
if (!foundExisting) {
this.openTeammateTerminalWindow(data);
}
// Teammate pane windows are disabled — users interact with teammates
// directly through the main tmux split-pane terminal instead.
});
addListener('teammate:terminal', (e) => {
@@ -12021,6 +12007,13 @@ class ClaudemanApp {
// ========== Subagent Floating Windows ==========
openSubagentWindow(agentId) {
// Skip teammate agents — they use tmux split panes in the main terminal,
// not floating popup windows. Prevents false-info activity log popups.
const agentForTeammateCheck = this.subagents.get(agentId);
if (agentForTeammateCheck && this.getTeammateInfo(agentForTeammateCheck)) {
return;
}
// If window already exists, focus it
if (this.subagentWindows.has(agentId)) {
const existing = this.subagentWindows.get(agentId);