claude-code-plus-plus 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ansi.d.ts +42 -0
- package/dist/ansi.d.ts.map +1 -0
- package/dist/ansi.js +53 -0
- package/dist/ansi.js.map +1 -0
- package/dist/constants.d.ts +67 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +109 -0
- package/dist/constants.js.map +1 -0
- package/dist/sidebar/app.d.ts +2 -1
- package/dist/sidebar/app.d.ts.map +1 -1
- package/dist/sidebar/app.js +129 -205
- package/dist/sidebar/app.js.map +1 -1
- package/dist/sidebar/commands.d.ts +64 -0
- package/dist/sidebar/commands.d.ts.map +1 -0
- package/dist/sidebar/commands.js +180 -0
- package/dist/sidebar/commands.js.map +1 -0
- package/dist/sidebar/pane-orchestrator.d.ts +31 -0
- package/dist/sidebar/pane-orchestrator.d.ts.map +1 -0
- package/dist/sidebar/pane-orchestrator.js +185 -0
- package/dist/sidebar/pane-orchestrator.js.map +1 -0
- package/dist/sidebar/render.d.ts +2 -23
- package/dist/sidebar/render.d.ts.map +1 -1
- package/dist/sidebar/render.js +100 -129
- package/dist/sidebar/render.js.map +1 -1
- package/dist/sidebar/session-manager.d.ts +23 -0
- package/dist/sidebar/session-manager.d.ts.map +1 -0
- package/dist/sidebar/session-manager.js +122 -0
- package/dist/sidebar/session-manager.js.map +1 -0
- package/dist/sidebar/terminal-manager.d.ts +48 -0
- package/dist/sidebar/terminal-manager.d.ts.map +1 -0
- package/dist/sidebar/terminal-manager.js +223 -0
- package/dist/sidebar/terminal-manager.js.map +1 -0
- package/dist/terminal/bar-handler.js +6 -19
- package/dist/terminal/bar-handler.js.map +1 -1
- package/dist/terminal/bar-render.d.ts.map +1 -1
- package/dist/terminal/bar-render.js +15 -35
- package/dist/terminal/bar-render.js.map +1 -1
- package/package.json +1 -2
- package/assets/screenshot.png +0 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Session Manager
|
|
4
|
+
*
|
|
5
|
+
* Utility functions for session operations.
|
|
6
|
+
* These are pure functions that don't manage state directly.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.generateSessionId = generateSessionId;
|
|
43
|
+
exports.createClaudePane = createClaudePane;
|
|
44
|
+
exports.cleanupSession = cleanupSession;
|
|
45
|
+
exports.findNextSession = findNextSession;
|
|
46
|
+
const tmux = __importStar(require("../tmux"));
|
|
47
|
+
const constants_1 = require("../constants");
|
|
48
|
+
const pane_orchestrator_1 = require("./pane-orchestrator");
|
|
49
|
+
/** Generate a unique session ID */
|
|
50
|
+
function generateSessionId() {
|
|
51
|
+
return `session-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Create and launch a Claude pane for a new session
|
|
55
|
+
* Returns the pane ID
|
|
56
|
+
*/
|
|
57
|
+
function createClaudePane(worktree, state, isFirstSession) {
|
|
58
|
+
const claudeCmd = constants_1.DEFAULT_CLAUDE_CMD;
|
|
59
|
+
if (isFirstSession) {
|
|
60
|
+
// First session - use existing main pane
|
|
61
|
+
tmux.sendControlKey(state.mainPaneId, 'C-c');
|
|
62
|
+
tmux.sendKeys(state.mainPaneId, `cd "${worktree.path}" && clear && ${claudeCmd}`, true);
|
|
63
|
+
return state.mainPaneId;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
// Additional session - create new pane
|
|
67
|
+
const paneId = tmux.splitHorizontal(state.sessionName, constants_1.CLAUDE_PANE_PERCENT, worktree.path);
|
|
68
|
+
tmux.sendKeys(paneId, claudeCmd, true);
|
|
69
|
+
return paneId;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Clean up resources for a session being deleted
|
|
74
|
+
*/
|
|
75
|
+
function cleanupSession(session, sessionName) {
|
|
76
|
+
// Remove resize hook if this session has terminals
|
|
77
|
+
if (session.terminalBarPaneId) {
|
|
78
|
+
(0, pane_orchestrator_1.removeTerminalBarResize)(sessionName);
|
|
79
|
+
}
|
|
80
|
+
// Kill terminal panes
|
|
81
|
+
for (const terminal of session.terminals) {
|
|
82
|
+
try {
|
|
83
|
+
tmux.killPane(terminal.paneId);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// Pane may already be gone
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Kill terminal bar pane
|
|
90
|
+
if (session.terminalBarPaneId) {
|
|
91
|
+
try {
|
|
92
|
+
tmux.killPane(session.terminalBarPaneId);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Pane may already be gone
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Kill Claude pane
|
|
99
|
+
try {
|
|
100
|
+
tmux.killPane(session.paneId);
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Pane may already be gone
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Find the next session to activate after deletion
|
|
108
|
+
*/
|
|
109
|
+
function findNextSession(sessions, deletedSession) {
|
|
110
|
+
// Prefer session in same worktree
|
|
111
|
+
const sameWorktreeSessions = sessions.filter(s => s.id !== deletedSession.id && s.worktreeId === deletedSession.worktreeId);
|
|
112
|
+
if (sameWorktreeSessions.length > 0) {
|
|
113
|
+
return sameWorktreeSessions[0];
|
|
114
|
+
}
|
|
115
|
+
// Otherwise any session
|
|
116
|
+
const otherSessions = sessions.filter(s => s.id !== deletedSession.id);
|
|
117
|
+
if (otherSessions.length > 0) {
|
|
118
|
+
return otherSessions[0];
|
|
119
|
+
}
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=session-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/sidebar/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal Manager
|
|
3
|
+
*
|
|
4
|
+
* Utility functions for terminal operations.
|
|
5
|
+
* These are pure functions that don't manage state directly.
|
|
6
|
+
*/
|
|
7
|
+
import type { Session, Terminal } from '../types';
|
|
8
|
+
/** Generate a unique terminal ID */
|
|
9
|
+
export declare function generateTerminalId(): string;
|
|
10
|
+
/**
|
|
11
|
+
* Create the initial terminal layout for a session (bar + terminal pane)
|
|
12
|
+
* Returns the pane IDs for bar and terminal
|
|
13
|
+
*/
|
|
14
|
+
export declare function createFirstTerminalLayout(session: Session, worktreePath: string, sessionName: string): {
|
|
15
|
+
barPaneId: string;
|
|
16
|
+
terminalPaneId: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Create an additional terminal pane
|
|
20
|
+
* Breaks the current terminal and returns the new pane ID
|
|
21
|
+
*/
|
|
22
|
+
export declare function createAdditionalTerminal(currentTerminalPaneId: string, sessionName: string, worktreePath: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Switch to a different terminal in a session
|
|
25
|
+
*/
|
|
26
|
+
export declare function switchToTerminal(session: Session, currentIndex: number, targetIndex: number, sessionName: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Delete a terminal and handle layout adjustments
|
|
29
|
+
* Returns whether cleanup of bar is needed and the terminal to show next
|
|
30
|
+
*/
|
|
31
|
+
export declare function deleteTerminal(session: Session, terminal: Terminal, index: number, sessionName: string): {
|
|
32
|
+
cleanupBar: boolean;
|
|
33
|
+
nextTerminalToShow: Terminal | null;
|
|
34
|
+
newActiveIndex: number;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Clean up terminal bar resources
|
|
38
|
+
*/
|
|
39
|
+
export declare function cleanupTerminalBar(session: Session, sessionName: string): void;
|
|
40
|
+
/**
|
|
41
|
+
* Start the terminal bar handler process
|
|
42
|
+
*/
|
|
43
|
+
export declare function startTerminalBarHandler(barPaneId: string, sidebarPaneId: string, sessionId: string): void;
|
|
44
|
+
/**
|
|
45
|
+
* Send update to terminal bar
|
|
46
|
+
*/
|
|
47
|
+
export declare function updateTerminalBar(session: Session, sidebarPaneId: string): void;
|
|
48
|
+
//# sourceMappingURL=terminal-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-manager.d.ts","sourceRoot":"","sources":["../../src/sidebar/terminal-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIlD,oCAAoC;AACpC,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAmB/C;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,qBAAqB,EAAE,MAAM,EAC7B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,IAAI,CA8BN;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,kBAAkB,EAAE,QAAQ,GAAG,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAgCtF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,GAClB,IAAI,CAUN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,IAAI,CAwBN;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,MAAM,GACpB,IAAI,CAkCN"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Terminal Manager
|
|
4
|
+
*
|
|
5
|
+
* Utility functions for terminal operations.
|
|
6
|
+
* These are pure functions that don't manage state directly.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.generateTerminalId = generateTerminalId;
|
|
43
|
+
exports.createFirstTerminalLayout = createFirstTerminalLayout;
|
|
44
|
+
exports.createAdditionalTerminal = createAdditionalTerminal;
|
|
45
|
+
exports.switchToTerminal = switchToTerminal;
|
|
46
|
+
exports.deleteTerminal = deleteTerminal;
|
|
47
|
+
exports.cleanupTerminalBar = cleanupTerminalBar;
|
|
48
|
+
exports.startTerminalBarHandler = startTerminalBarHandler;
|
|
49
|
+
exports.updateTerminalBar = updateTerminalBar;
|
|
50
|
+
const child_process_1 = require("child_process");
|
|
51
|
+
const fs_1 = require("fs");
|
|
52
|
+
const path_1 = require("path");
|
|
53
|
+
const tmux = __importStar(require("../tmux"));
|
|
54
|
+
const constants_1 = require("../constants");
|
|
55
|
+
const terminal_1 = require("../terminal");
|
|
56
|
+
const pane_orchestrator_1 = require("./pane-orchestrator");
|
|
57
|
+
/** Generate a unique terminal ID */
|
|
58
|
+
function generateTerminalId() {
|
|
59
|
+
return `terminal-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Create the initial terminal layout for a session (bar + terminal pane)
|
|
63
|
+
* Returns the pane IDs for bar and terminal
|
|
64
|
+
*/
|
|
65
|
+
function createFirstTerminalLayout(session, worktreePath, sessionName) {
|
|
66
|
+
// Split Claude pane vertically (Claude gets top 70%, terminal area gets bottom 30%)
|
|
67
|
+
tmux.selectPane(session.paneId);
|
|
68
|
+
const terminalAreaPaneId = tmux.splitVertical(sessionName, 100 - constants_1.CLAUDE_PANE_PERCENT, worktreePath);
|
|
69
|
+
// Split terminal area: top 1 row for bar, rest for terminal
|
|
70
|
+
tmux.selectPane(terminalAreaPaneId);
|
|
71
|
+
const terminalPaneId = tmux.splitVertical(sessionName, 95, worktreePath);
|
|
72
|
+
// The terminalAreaPaneId is now the bar pane (top part after split)
|
|
73
|
+
const barPaneId = terminalAreaPaneId;
|
|
74
|
+
// Resize bar pane to exactly 1 row
|
|
75
|
+
tmux.resizePane(barPaneId, undefined, constants_1.TERMINAL_BAR_HEIGHT);
|
|
76
|
+
// Set up resize enforcement
|
|
77
|
+
(0, pane_orchestrator_1.setupTerminalBarResize)(sessionName, session.paneId, barPaneId, terminalPaneId);
|
|
78
|
+
return { barPaneId, terminalPaneId };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Create an additional terminal pane
|
|
82
|
+
* Breaks the current terminal and returns the new pane ID
|
|
83
|
+
*/
|
|
84
|
+
function createAdditionalTerminal(currentTerminalPaneId, sessionName, worktreePath) {
|
|
85
|
+
// Split from current terminal to create new one
|
|
86
|
+
tmux.selectPane(currentTerminalPaneId);
|
|
87
|
+
const newTerminalPaneId = tmux.splitVertical(sessionName, 50, worktreePath);
|
|
88
|
+
// Break the current terminal to background
|
|
89
|
+
tmux.breakPane(currentTerminalPaneId);
|
|
90
|
+
return newTerminalPaneId;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Switch to a different terminal in a session
|
|
94
|
+
*/
|
|
95
|
+
function switchToTerminal(session, currentIndex, targetIndex, sessionName) {
|
|
96
|
+
if (targetIndex < 0 || targetIndex >= session.terminals.length) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const currentTerminal = session.terminals[currentIndex];
|
|
100
|
+
const targetTerminal = session.terminals[targetIndex];
|
|
101
|
+
if (currentTerminal.id === targetTerminal.id) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
// Break current terminal
|
|
105
|
+
tmux.breakPane(currentTerminal.paneId);
|
|
106
|
+
// Join target terminal below bar
|
|
107
|
+
if (session.terminalBarPaneId) {
|
|
108
|
+
tmux.joinPane(targetTerminal.paneId, session.terminalBarPaneId, false);
|
|
109
|
+
// Re-setup resize hook with new terminal pane
|
|
110
|
+
(0, pane_orchestrator_1.setupTerminalBarResize)(sessionName, session.paneId, session.terminalBarPaneId, targetTerminal.paneId);
|
|
111
|
+
}
|
|
112
|
+
// Focus the terminal pane
|
|
113
|
+
tmux.selectPane(targetTerminal.paneId);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Delete a terminal and handle layout adjustments
|
|
117
|
+
* Returns whether cleanup of bar is needed and the terminal to show next
|
|
118
|
+
*/
|
|
119
|
+
function deleteTerminal(session, terminal, index, sessionName) {
|
|
120
|
+
const isActive = index === session.activeTerminalIndex;
|
|
121
|
+
const remainingCount = session.terminals.length - 1;
|
|
122
|
+
// Kill the terminal pane
|
|
123
|
+
try {
|
|
124
|
+
tmux.killPane(terminal.paneId);
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
// Pane may already be gone
|
|
128
|
+
}
|
|
129
|
+
if (remainingCount === 0) {
|
|
130
|
+
// No more terminals - need to clean up bar
|
|
131
|
+
return { cleanupBar: true, nextTerminalToShow: null, newActiveIndex: 0 };
|
|
132
|
+
}
|
|
133
|
+
// Calculate new active index
|
|
134
|
+
let newActiveIndex = session.activeTerminalIndex;
|
|
135
|
+
if (isActive) {
|
|
136
|
+
newActiveIndex = Math.min(index, remainingCount - 1);
|
|
137
|
+
}
|
|
138
|
+
else if (index < session.activeTerminalIndex) {
|
|
139
|
+
newActiveIndex = session.activeTerminalIndex - 1;
|
|
140
|
+
}
|
|
141
|
+
// Find terminal to show if we deleted the active one
|
|
142
|
+
let nextTerminalToShow = null;
|
|
143
|
+
if (isActive) {
|
|
144
|
+
const terminalsAfterRemoval = session.terminals.filter((_, i) => i !== index);
|
|
145
|
+
nextTerminalToShow = terminalsAfterRemoval[newActiveIndex] || null;
|
|
146
|
+
}
|
|
147
|
+
return { cleanupBar: false, nextTerminalToShow, newActiveIndex };
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Clean up terminal bar resources
|
|
151
|
+
*/
|
|
152
|
+
function cleanupTerminalBar(session, sessionName) {
|
|
153
|
+
(0, pane_orchestrator_1.removeTerminalBarResize)(sessionName);
|
|
154
|
+
if (session.terminalBarPaneId) {
|
|
155
|
+
try {
|
|
156
|
+
tmux.killPane(session.terminalBarPaneId);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// Pane may already be gone
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Start the terminal bar handler process
|
|
165
|
+
*/
|
|
166
|
+
function startTerminalBarHandler(barPaneId, sidebarPaneId, sessionId) {
|
|
167
|
+
// Find the bar-handler script
|
|
168
|
+
const distPath = (0, path_1.resolve)(__dirname, '../../dist/terminal/bar-handler.js');
|
|
169
|
+
const tsPath = (0, path_1.resolve)(__dirname, '../terminal/bar-handler.ts');
|
|
170
|
+
const jsPath = (0, path_1.resolve)(__dirname, './bar-handler.js');
|
|
171
|
+
let handlerPath;
|
|
172
|
+
let runner;
|
|
173
|
+
if ((0, fs_1.existsSync)(distPath)) {
|
|
174
|
+
handlerPath = distPath;
|
|
175
|
+
runner = 'node';
|
|
176
|
+
}
|
|
177
|
+
else if ((0, fs_1.existsSync)(jsPath)) {
|
|
178
|
+
handlerPath = jsPath;
|
|
179
|
+
runner = 'node';
|
|
180
|
+
}
|
|
181
|
+
else if ((0, fs_1.existsSync)(tsPath)) {
|
|
182
|
+
handlerPath = tsPath;
|
|
183
|
+
runner = 'npx tsx';
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const cmd = `${runner} "${handlerPath}" "${sidebarPaneId}" "${sessionId}"`;
|
|
189
|
+
tmux.sendKeys(barPaneId, cmd, true);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Send update to terminal bar
|
|
193
|
+
*/
|
|
194
|
+
function updateTerminalBar(session, sidebarPaneId) {
|
|
195
|
+
if (!session.terminalBarPaneId)
|
|
196
|
+
return;
|
|
197
|
+
// Get pane width
|
|
198
|
+
let width = 80;
|
|
199
|
+
try {
|
|
200
|
+
const output = (0, child_process_1.execSync)(`tmux display-message -p -t "${session.terminalBarPaneId}" '#{pane_width}'`, { encoding: 'utf-8' }).trim();
|
|
201
|
+
width = parseInt(output, 10) || 80;
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
// Use default width
|
|
205
|
+
}
|
|
206
|
+
// Render the bar (we don't use the output directly, just validate)
|
|
207
|
+
(0, terminal_1.renderTerminalBar)(session.terminals, session.activeTerminalIndex, width);
|
|
208
|
+
// Send the rendered content to the bar pane via the handler
|
|
209
|
+
const encodedData = Buffer.from(JSON.stringify({
|
|
210
|
+
terminals: session.terminals,
|
|
211
|
+
activeIndex: session.activeTerminalIndex,
|
|
212
|
+
})).toString('base64');
|
|
213
|
+
try {
|
|
214
|
+
(0, child_process_1.execSync)(`tmux send-keys -t "${sidebarPaneId}" C-u`, { stdio: 'ignore' });
|
|
215
|
+
const cmd = `__CPP_UPDATE__:${session.id}:${encodedData}`;
|
|
216
|
+
(0, child_process_1.execSync)(`tmux send-keys -t "${sidebarPaneId}" -l "${cmd}"`, { stdio: 'ignore' });
|
|
217
|
+
(0, child_process_1.execSync)(`tmux send-keys -t "${sidebarPaneId}" Enter`, { stdio: 'ignore' });
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
// Ignore errors
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=terminal-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-manager.js","sourceRoot":"","sources":["../../src/sidebar/terminal-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,20 +15,7 @@
|
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
const child_process_1 = require("child_process");
|
|
17
17
|
const bar_render_1 = require("./bar-render");
|
|
18
|
-
|
|
19
|
-
// ANSI Escape Codes
|
|
20
|
-
// ============================================================================
|
|
21
|
-
const ESC = '\x1b';
|
|
22
|
-
const CSI = `${ESC}[`;
|
|
23
|
-
const ansi = {
|
|
24
|
-
clearScreen: `${CSI}2J`,
|
|
25
|
-
moveTo: (row, col) => `${CSI}${row};${col}H`,
|
|
26
|
-
reset: `${CSI}0m`,
|
|
27
|
-
hideCursor: `${CSI}?25l`,
|
|
28
|
-
showCursor: `${CSI}?25h`,
|
|
29
|
-
enableMouse: `${CSI}?1000h${CSI}?1006h`,
|
|
30
|
-
disableMouse: `${CSI}?1000l${CSI}?1006l`,
|
|
31
|
-
};
|
|
18
|
+
const ansi_1 = require("../ansi");
|
|
32
19
|
let state = {
|
|
33
20
|
sidebarPaneId: '',
|
|
34
21
|
sessionId: '',
|
|
@@ -179,8 +166,8 @@ function cycleTab(direction) {
|
|
|
179
166
|
function start() {
|
|
180
167
|
running = true;
|
|
181
168
|
// Set up terminal
|
|
182
|
-
process.stdout.write(ansi.hideCursor);
|
|
183
|
-
process.stdout.write(ansi.enableMouse);
|
|
169
|
+
process.stdout.write(ansi_1.ansi.hideCursor);
|
|
170
|
+
process.stdout.write(ansi_1.ansi.enableMouse);
|
|
184
171
|
// Set up raw mode for input
|
|
185
172
|
if (process.stdin.isTTY) {
|
|
186
173
|
process.stdin.setRawMode(true);
|
|
@@ -196,9 +183,9 @@ function start() {
|
|
|
196
183
|
}
|
|
197
184
|
function stop() {
|
|
198
185
|
running = false;
|
|
199
|
-
process.stdout.write(ansi.disableMouse);
|
|
200
|
-
process.stdout.write(ansi.showCursor);
|
|
201
|
-
process.stdout.write(ansi.reset);
|
|
186
|
+
process.stdout.write(ansi_1.ansi.disableMouse);
|
|
187
|
+
process.stdout.write(ansi_1.ansi.showCursor);
|
|
188
|
+
process.stdout.write(ansi_1.ansi.reset);
|
|
202
189
|
if (process.stdin.isTTY) {
|
|
203
190
|
process.stdin.setRawMode(false);
|
|
204
191
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-handler.js","sourceRoot":"","sources":["../../src/terminal/bar-handler.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;GAWG;;AAEH,iDAAyC;AACzC,6CAAmF;
|
|
1
|
+
{"version":3,"file":"bar-handler.js","sourceRoot":"","sources":["../../src/terminal/bar-handler.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;GAWG;;AAEH,iDAAyC;AACzC,6CAAmF;AAEnF,kCAA+B;AAc/B,IAAI,KAAK,GAAa;IACpB,aAAa,EAAE,EAAE;IACjB,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE;IACb,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,EAAE;CACjB,CAAC;AAEF,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,aAAa,CAAC,MAAc,EAAE,OAAe,EAAE;IACtD,IAAI,CAAC;QACH,0EAA0E;QAC1E,IAAA,wBAAQ,EAAC,qBAAqB,KAAK,CAAC,aAAa,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9E,mBAAmB;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC;QAC/D,IAAA,wBAAQ,EAAC,qBAAqB,KAAK,CAAC,aAAa,QAAQ,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtF,wBAAwB;QACxB,IAAA,wBAAQ,EAAC,qBAAqB,KAAK,CAAC,aAAa,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,2CAA2C;IAC7C,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,SAAS,MAAM;IACb,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAC3C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,8BAAiB,EAChD,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,WAAW,EACjB,KAAK,CACN,CAAC;IACF,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAE9B,yDAAyD;IACzD,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC;YAC7C,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,CAAC,CAAC;YAChD,MAAM,EAAE,CAAC;QACX,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sBAAsB;QACxB,CAAC;QACD,OAAO;IACT,CAAC;IAED,6EAA6E;IAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACjE,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;QAExC,qCAAqC;QACrC,IAAI,MAAM,KAAK,CAAC,IAAI,SAAS,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YAC3C,cAAc,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,OAAO;IACT,CAAC;IAED,wBAAwB;IACxB,MAAM,GAAG,GAAG,KAAK,CAAC;IAElB,iCAAiC;IACjC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACtC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO;IACT,CAAC;IAED,qBAAqB;IACrB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,QAAQ,CAAC,CAAC,CAAC,CAAC;QACZ,OAAO;IACT,CAAC;IAED,4BAA4B;IAC5B,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,OAAO;IACT,CAAC;IAED,4BAA4B;IAC5B,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,OAAO;IACT,CAAC;IAED,yBAAyB;IACzB,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACZ,OAAO;IACT,CAAC;IAED,uBAAuB;IACvB,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAC/B,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,6BAA6B;IAC7B,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO;IACT,CAAC;IAED,iCAAiC;IACjC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,aAAa,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IAED,wBAAwB;IACxB,IAAI,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO;IACT,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,YAAY,GAAG,IAAA,2BAAc,EAAC,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7D,IAAI,YAAY,KAAK,IAAI;QAAE,OAAO;IAElC,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,qBAAqB;QACrB,aAAa,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;SAAM,IAAI,YAAY,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9C,0BAA0B;QAC1B,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,SAAiB;IACjC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEzC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC;IAC/C,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACvD,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,SAAS,KAAK;IACZ,OAAO,GAAG,IAAI,CAAC;IAEf,kBAAkB;IAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAI,CAAC,UAAU,CAAC,CAAC;IACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAI,CAAC,WAAW,CAAC,CAAC;IAEvC,4BAA4B;IAC5B,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAEtC,gBAAgB;IAChB,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QAC/B,MAAM,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,iBAAiB;IACjB,MAAM,EAAE,CAAC;AACX,CAAC;AAED,SAAS,IAAI;IACX,OAAO,GAAG,KAAK,CAAC;IAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAI,CAAC,YAAY,CAAC,CAAC;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAI,CAAC,UAAU,CAAC,CAAC;IACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAI,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC;AAED,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAE1B,mDAAmD;IACnD,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,IAAI,EAAE,CAAC;YAC9C,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,uBAAuB;QACzB,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,IAAI,EAAE,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,IAAI,EAAE,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,KAAK,EAAE,CAAC;AACV,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-render.d.ts","sourceRoot":"","sources":["../../src/terminal/bar-render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"bar-render.d.ts","sourceRoot":"","sources":["../../src/terminal/bar-render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAQzC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,QAAQ,EAAE,EACrB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,WAAW,EAAE,CAAA;CAAE,CAgFjD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,GAAG,IAAI,CAOtF"}
|
|
@@ -8,28 +8,8 @@
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.renderTerminalBar = renderTerminalBar;
|
|
10
10
|
exports.findClickedTab = findClickedTab;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// ============================================================================
|
|
14
|
-
const ESC = '\x1b';
|
|
15
|
-
const CSI = `${ESC}[`;
|
|
16
|
-
const ansi = {
|
|
17
|
-
clearLine: `${CSI}2K`,
|
|
18
|
-
moveTo: (row, col) => `${CSI}${row};${col}H`,
|
|
19
|
-
reset: `${CSI}0m`,
|
|
20
|
-
bold: `${CSI}1m`,
|
|
21
|
-
dim: `${CSI}2m`,
|
|
22
|
-
fg: {
|
|
23
|
-
black: `${CSI}30m`,
|
|
24
|
-
white: `${CSI}37m`,
|
|
25
|
-
gray: `${CSI}90m`,
|
|
26
|
-
cyan: `${CSI}36m`,
|
|
27
|
-
},
|
|
28
|
-
bg: {
|
|
29
|
-
cyan: `${CSI}46m`,
|
|
30
|
-
},
|
|
31
|
-
hideCursor: `${CSI}?25l`,
|
|
32
|
-
};
|
|
11
|
+
const ansi_1 = require("../ansi");
|
|
12
|
+
const constants_1 = require("../constants");
|
|
33
13
|
// ============================================================================
|
|
34
14
|
// Rendering
|
|
35
15
|
// ============================================================================
|
|
@@ -44,21 +24,21 @@ const ansi = {
|
|
|
44
24
|
function renderTerminalBar(terminals, activeIndex, width) {
|
|
45
25
|
const tabPositions = [];
|
|
46
26
|
// Hints shown on the right
|
|
47
|
-
const hints =
|
|
27
|
+
const hints = constants_1.UI_TEXT.TERMINAL_HINTS;
|
|
48
28
|
const hintsLen = hints.length;
|
|
49
|
-
let output = ansi.hideCursor + ansi.clearLine + ansi.moveTo(1, 1);
|
|
29
|
+
let output = ansi_1.ansi.hideCursor + ansi_1.ansi.clearLine + ansi_1.ansi.moveTo(1, 1);
|
|
50
30
|
if (terminals.length === 0) {
|
|
51
31
|
// No terminals message
|
|
52
|
-
const msg =
|
|
32
|
+
const msg = `${constants_1.UI_TEXT.NO_TERMINALS}. Press 'n' to create.`;
|
|
53
33
|
const padding = Math.max(1, width - msg.length - hintsLen - 2);
|
|
54
|
-
output += `${ansi.dim}${msg}${ansi.reset}`;
|
|
34
|
+
output += `${ansi_1.ansi.dim}${msg}${ansi_1.ansi.reset}`;
|
|
55
35
|
output += ' '.repeat(padding);
|
|
56
|
-
output += `${ansi.dim}${hints}${ansi.reset}`;
|
|
36
|
+
output += `${ansi_1.ansi.dim}${hints}${ansi_1.ansi.reset}`;
|
|
57
37
|
return { output, tabPositions };
|
|
58
38
|
}
|
|
59
39
|
// Calculate available space for tabs
|
|
60
|
-
const availableForTabs = width - hintsLen -
|
|
61
|
-
const maxTabWidth = Math.max(
|
|
40
|
+
const availableForTabs = width - hintsLen - constants_1.TAB_PREFIX_WIDTH;
|
|
41
|
+
const maxTabWidth = Math.max(constants_1.MIN_TAB_WIDTH, Math.floor(availableForTabs / terminals.length) - 1);
|
|
62
42
|
let currentCol = 1;
|
|
63
43
|
for (let i = 0; i < terminals.length; i++) {
|
|
64
44
|
const terminal = terminals[i];
|
|
@@ -80,32 +60,32 @@ function renderTerminalBar(terminals, activeIndex, width) {
|
|
|
80
60
|
});
|
|
81
61
|
// Render tab
|
|
82
62
|
if (isActive) {
|
|
83
|
-
output += `${ansi.bg.cyan}${ansi.fg.black}${ansi.bold}${tabText}${ansi.reset}`;
|
|
63
|
+
output += `${ansi_1.ansi.bg.cyan}${ansi_1.ansi.fg.black}${ansi_1.ansi.bold}${tabText}${ansi_1.ansi.reset}`;
|
|
84
64
|
}
|
|
85
65
|
else {
|
|
86
|
-
output += `${ansi.dim}${tabText}${ansi.reset}`;
|
|
66
|
+
output += `${ansi_1.ansi.dim}${tabText}${ansi_1.ansi.reset}`;
|
|
87
67
|
}
|
|
88
68
|
currentCol += tabText.length;
|
|
89
69
|
// Add separator between tabs
|
|
90
70
|
if (i < terminals.length - 1) {
|
|
91
|
-
output += `${ansi.fg.gray}|${ansi.reset}`;
|
|
71
|
+
output += `${ansi_1.ansi.fg.gray}|${ansi_1.ansi.reset}`;
|
|
92
72
|
currentCol += 1;
|
|
93
73
|
}
|
|
94
74
|
}
|
|
95
75
|
// Add [+] button for new terminal
|
|
96
|
-
const plusBtn =
|
|
76
|
+
const plusBtn = ` ${constants_1.UI_TEXT.NEW_TERMINAL_BUTTON}`;
|
|
97
77
|
tabPositions.push({
|
|
98
78
|
index: -1, // Special index for "new terminal"
|
|
99
79
|
startCol: currentCol,
|
|
100
80
|
endCol: currentCol + plusBtn.length - 1,
|
|
101
81
|
});
|
|
102
|
-
output += `${ansi.fg.cyan}${plusBtn}${ansi.reset}`;
|
|
82
|
+
output += `${ansi_1.ansi.fg.cyan}${plusBtn}${ansi_1.ansi.reset}`;
|
|
103
83
|
currentCol += plusBtn.length;
|
|
104
84
|
// Padding and hints on right
|
|
105
85
|
const tabsWidth = currentCol - 1;
|
|
106
86
|
const padding = Math.max(1, width - tabsWidth - hintsLen - 1);
|
|
107
87
|
output += ' '.repeat(padding);
|
|
108
|
-
output += `${ansi.dim}${hints}${ansi.reset}`;
|
|
88
|
+
output += `${ansi_1.ansi.dim}${hints}${ansi_1.ansi.reset}`;
|
|
109
89
|
return { output, tabPositions };
|
|
110
90
|
}
|
|
111
91
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-render.js","sourceRoot":"","sources":["../../src/terminal/bar-render.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"bar-render.js","sourceRoot":"","sources":["../../src/terminal/bar-render.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-code-plus-plus",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Multi-pane terminal interface for parallel Claude Code agents with git worktree isolation",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
19
19
|
"dist/**/*",
|
|
20
|
-
"assets/**/*",
|
|
21
20
|
"README.md",
|
|
22
21
|
"LICENSE"
|
|
23
22
|
],
|
package/assets/screenshot.png
DELETED
|
Binary file
|