mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-08 16:39:42 +02:00
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:
@@ -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`)
|
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`
|
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
|
## Project Overview
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "claudeman",
|
"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",
|
"description": "The missing control plane for Claude Code - run 20 autonomous agents with real-time monitoring and session persistence",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
|
|||||||
+9
-16
@@ -2943,22 +2943,8 @@ class ClaudemanApp {
|
|||||||
sessionId: data.sessionId,
|
sessionId: data.sessionId,
|
||||||
color: data.color,
|
color: data.color,
|
||||||
});
|
});
|
||||||
// Upgrade any existing subagent windows for this teammate to terminal mode
|
// Teammate pane windows are disabled — users interact with teammates
|
||||||
let foundExisting = false;
|
// directly through the main tmux split-pane terminal instead.
|
||||||
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);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
addListener('teammate:terminal', (e) => {
|
addListener('teammate:terminal', (e) => {
|
||||||
@@ -12021,6 +12007,13 @@ class ClaudemanApp {
|
|||||||
// ========== Subagent Floating Windows ==========
|
// ========== Subagent Floating Windows ==========
|
||||||
|
|
||||||
openSubagentWindow(agentId) {
|
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 window already exists, focus it
|
||||||
if (this.subagentWindows.has(agentId)) {
|
if (this.subagentWindows.has(agentId)) {
|
||||||
const existing = this.subagentWindows.get(agentId);
|
const existing = this.subagentWindows.get(agentId);
|
||||||
|
|||||||
Reference in New Issue
Block a user