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
+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);