dmux 3.1.1 → 3.2.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/CleanTextInput.d.ts +9 -0
- package/dist/CleanTextInput.d.ts.map +1 -1
- package/dist/CleanTextInput.js +127 -47
- package/dist/CleanTextInput.js.map +1 -1
- package/dist/DmuxApp.d.ts +2 -2
- package/dist/DmuxApp.d.ts.map +1 -1
- package/dist/DmuxApp.js +1396 -750
- package/dist/DmuxApp.js.map +1 -1
- package/dist/actions/paneActions.d.ts.map +1 -1
- package/dist/actions/paneActions.js +68 -11
- package/dist/actions/paneActions.js.map +1 -1
- package/dist/actions/types.d.ts +1 -0
- package/dist/actions/types.d.ts.map +1 -1
- package/dist/actions/types.js +1 -0
- package/dist/actions/types.js.map +1 -1
- package/dist/components/ActionInputDialog.d.ts.map +1 -1
- package/dist/components/ActionInputDialog.js +3 -2
- package/dist/components/ActionInputDialog.js.map +1 -1
- package/dist/components/DialogBox.d.ts +16 -0
- package/dist/components/DialogBox.d.ts.map +1 -0
- package/dist/components/DialogBox.js +12 -0
- package/dist/components/DialogBox.js.map +1 -0
- package/dist/components/FooterHelp.d.ts +9 -0
- package/dist/components/FooterHelp.d.ts.map +1 -1
- package/dist/components/FooterHelp.js +41 -5
- package/dist/components/FooterHelp.js.map +1 -1
- package/dist/components/PaneCard.d.ts +3 -1
- package/dist/components/PaneCard.d.ts.map +1 -1
- package/dist/components/PaneCard.js +50 -33
- package/dist/components/PaneCard.js.map +1 -1
- package/dist/components/PanesGrid.d.ts +3 -5
- package/dist/components/PanesGrid.d.ts.map +1 -1
- package/dist/components/PanesGrid.js +40 -10
- package/dist/components/PanesGrid.js.map +1 -1
- package/dist/dashboard.js +1 -1
- package/dist/decorative-pane.d.ts +3 -0
- package/dist/decorative-pane.d.ts.map +1 -0
- package/dist/decorative-pane.js +136 -0
- package/dist/decorative-pane.js.map +1 -0
- package/dist/hooks/useActionSystem.d.ts +14 -1
- package/dist/hooks/useActionSystem.d.ts.map +1 -1
- package/dist/hooks/useActionSystem.js +93 -4
- package/dist/hooks/useActionSystem.js.map +1 -1
- package/dist/hooks/useNavigation.js +1 -1
- package/dist/hooks/useNavigation.js.map +1 -1
- package/dist/hooks/usePaneCreation.d.ts +1 -2
- package/dist/hooks/usePaneCreation.d.ts.map +1 -1
- package/dist/hooks/usePaneCreation.js +13 -27
- package/dist/hooks/usePaneCreation.js.map +1 -1
- package/dist/hooks/usePaneRunner.d.ts.map +1 -1
- package/dist/hooks/usePaneRunner.js +8 -3
- package/dist/hooks/usePaneRunner.js.map +1 -1
- package/dist/hooks/usePanes.d.ts.map +1 -1
- package/dist/hooks/usePanes.js +210 -37
- package/dist/hooks/usePanes.js.map +1 -1
- package/dist/hooks/useWorktreeActions.d.ts.map +1 -1
- package/dist/hooks/useWorktreeActions.js +7 -13
- package/dist/hooks/useWorktreeActions.js.map +1 -1
- package/dist/index.js +217 -29
- package/dist/index.js.map +1 -1
- package/dist/popups/agentChoicePopup.d.ts +7 -0
- package/dist/popups/agentChoicePopup.d.ts.map +1 -0
- package/dist/popups/agentChoicePopup.js +74 -0
- package/dist/popups/agentChoicePopup.js.map +1 -0
- package/dist/popups/choicePopup.d.ts +7 -0
- package/dist/popups/choicePopup.d.ts.map +1 -0
- package/dist/popups/choicePopup.js +64 -0
- package/dist/popups/choicePopup.js.map +1 -0
- package/dist/popups/components/FileList.d.ts +13 -0
- package/dist/popups/components/FileList.d.ts.map +1 -0
- package/dist/popups/components/FileList.js +61 -0
- package/dist/popups/components/FileList.js.map +1 -0
- package/dist/popups/components/PopupContainer.d.ts +14 -0
- package/dist/popups/components/PopupContainer.d.ts.map +1 -0
- package/dist/popups/components/PopupContainer.js +15 -0
- package/dist/popups/components/PopupContainer.js.map +1 -0
- package/dist/popups/components/PopupInputBox.d.ts +11 -0
- package/dist/popups/components/PopupInputBox.d.ts.map +1 -0
- package/dist/popups/components/PopupInputBox.js +10 -0
- package/dist/popups/components/PopupInputBox.js.map +1 -0
- package/dist/popups/components/PopupWrapper.d.ts +37 -0
- package/dist/popups/components/PopupWrapper.d.ts.map +1 -0
- package/dist/popups/components/PopupWrapper.js +88 -0
- package/dist/popups/components/PopupWrapper.js.map +1 -0
- package/dist/popups/components/index.d.ts +8 -0
- package/dist/popups/components/index.d.ts.map +1 -0
- package/dist/popups/components/index.js +8 -0
- package/dist/popups/components/index.js.map +1 -0
- package/dist/popups/config.d.ts +40 -0
- package/dist/popups/config.d.ts.map +1 -0
- package/dist/popups/config.js +40 -0
- package/dist/popups/config.js.map +1 -0
- package/dist/popups/confirmPopup.d.ts +7 -0
- package/dist/popups/confirmPopup.d.ts.map +1 -0
- package/dist/popups/confirmPopup.js +72 -0
- package/dist/popups/confirmPopup.js.map +1 -0
- package/dist/popups/hooksPopup.d.ts +7 -0
- package/dist/popups/hooksPopup.d.ts.map +1 -0
- package/dist/popups/hooksPopup.js +71 -0
- package/dist/popups/hooksPopup.js.map +1 -0
- package/dist/popups/inputPopup.d.ts +7 -0
- package/dist/popups/inputPopup.d.ts.map +1 -0
- package/dist/popups/inputPopup.js +48 -0
- package/dist/popups/inputPopup.js.map +1 -0
- package/dist/popups/kebabMenuPopup.d.ts +7 -0
- package/dist/popups/kebabMenuPopup.d.ts.map +1 -0
- package/dist/popups/kebabMenuPopup.js +52 -0
- package/dist/popups/kebabMenuPopup.js.map +1 -0
- package/dist/popups/logsPopup.d.ts +12 -0
- package/dist/popups/logsPopup.d.ts.map +1 -0
- package/dist/popups/logsPopup.js +364 -0
- package/dist/popups/logsPopup.js.map +1 -0
- package/dist/popups/mergePopup.d.ts +7 -0
- package/dist/popups/mergePopup.d.ts.map +1 -0
- package/dist/popups/mergePopup.js +310 -0
- package/dist/popups/mergePopup.js.map +1 -0
- package/dist/popups/newPanePopup.d.ts +7 -0
- package/dist/popups/newPanePopup.d.ts.map +1 -0
- package/dist/popups/newPanePopup.js +234 -0
- package/dist/popups/newPanePopup.js.map +1 -0
- package/dist/popups/progressPopup.d.ts +8 -0
- package/dist/popups/progressPopup.d.ts.map +1 -0
- package/dist/popups/progressPopup.js +54 -0
- package/dist/popups/progressPopup.js.map +1 -0
- package/dist/popups/remotePopup.d.ts +6 -0
- package/dist/popups/remotePopup.d.ts.map +1 -0
- package/dist/popups/remotePopup.js +166 -0
- package/dist/popups/remotePopup.js.map +1 -0
- package/dist/popups/settingsPopup.d.ts +7 -0
- package/dist/popups/settingsPopup.d.ts.map +1 -0
- package/dist/popups/settingsPopup.js +212 -0
- package/dist/popups/settingsPopup.js.map +1 -0
- package/dist/popups/shortcutsPopup.d.ts +6 -0
- package/dist/popups/shortcutsPopup.d.ts.map +1 -0
- package/dist/popups/shortcutsPopup.js +74 -0
- package/dist/popups/shortcutsPopup.js.map +1 -0
- package/dist/popups/templates/SimpleInputPopup.d.ts +15 -0
- package/dist/popups/templates/SimpleInputPopup.d.ts.map +1 -0
- package/dist/popups/templates/SimpleInputPopup.js +28 -0
- package/dist/popups/templates/SimpleInputPopup.js.map +1 -0
- package/dist/server/embedded-assets.d.ts.map +1 -1
- package/dist/server/embedded-assets.js +2066 -968
- package/dist/server/embedded-assets.js.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes.d.ts +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +73 -6
- package/dist/server/routes.js.map +1 -1
- package/dist/services/ConfigWatcher.d.ts.map +1 -1
- package/dist/services/ConfigWatcher.js +10 -3
- package/dist/services/ConfigWatcher.js.map +1 -1
- package/dist/services/LogService.d.ts +112 -0
- package/dist/services/LogService.d.ts.map +1 -0
- package/dist/services/LogService.js +252 -0
- package/dist/services/LogService.js.map +1 -0
- package/dist/services/PaneWorkerManager.d.ts.map +1 -1
- package/dist/services/PaneWorkerManager.js +35 -9
- package/dist/services/PaneWorkerManager.js.map +1 -1
- package/dist/services/TunnelService.d.ts +1 -0
- package/dist/services/TunnelService.d.ts.map +1 -1
- package/dist/services/TunnelService.js +56 -15
- package/dist/services/TunnelService.js.map +1 -1
- package/dist/shared/StateManager.d.ts +49 -1
- package/dist/shared/StateManager.d.ts.map +1 -1
- package/dist/shared/StateManager.js +97 -2
- package/dist/shared/StateManager.js.map +1 -1
- package/dist/spacer-pane.d.ts +8 -0
- package/dist/spacer-pane.d.ts.map +1 -0
- package/dist/spacer-pane.js +40 -0
- package/dist/spacer-pane.js.map +1 -0
- package/dist/theme/colors.d.ts +25 -0
- package/dist/theme/colors.d.ts.map +1 -0
- package/dist/theme/colors.js +33 -0
- package/dist/theme/colors.js.map +1 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/asciiArt.d.ts +26 -0
- package/dist/utils/asciiArt.d.ts.map +1 -0
- package/dist/utils/asciiArt.js +88 -0
- package/dist/utils/asciiArt.js.map +1 -0
- package/dist/utils/conflictResolutionPane.d.ts.map +1 -1
- package/dist/utils/conflictResolutionPane.js +8 -4
- package/dist/utils/conflictResolutionPane.js.map +1 -1
- package/dist/utils/fileScanner.d.ts +23 -0
- package/dist/utils/fileScanner.d.ts.map +1 -0
- package/dist/utils/fileScanner.js +123 -0
- package/dist/utils/fileScanner.js.map +1 -0
- package/dist/utils/generated-agents-doc.d.ts +1 -1
- package/dist/utils/generated-agents-doc.js +1 -1
- package/dist/utils/hooks.d.ts.map +1 -1
- package/dist/utils/hooks.js +65 -36
- package/dist/utils/hooks.js.map +1 -1
- package/dist/utils/hooksDocs.d.ts +1 -1
- package/dist/utils/layoutManager.d.ts +45 -0
- package/dist/utils/layoutManager.d.ts.map +1 -0
- package/dist/utils/layoutManager.js +500 -0
- package/dist/utils/layoutManager.js.map +1 -0
- package/dist/utils/paneCreation.d.ts.map +1 -1
- package/dist/utils/paneCreation.js +125 -11
- package/dist/utils/paneCreation.js.map +1 -1
- package/dist/utils/popup.d.ts +97 -0
- package/dist/utils/popup.d.ts.map +1 -0
- package/dist/utils/popup.js +509 -0
- package/dist/utils/popup.js.map +1 -0
- package/dist/utils/postPaneCleanup.d.ts +12 -0
- package/dist/utils/postPaneCleanup.d.ts.map +1 -0
- package/dist/utils/postPaneCleanup.js +53 -0
- package/dist/utils/postPaneCleanup.js.map +1 -0
- package/dist/utils/shellPaneDetection.d.ts +44 -0
- package/dist/utils/shellPaneDetection.d.ts.map +1 -0
- package/dist/utils/shellPaneDetection.js +175 -0
- package/dist/utils/shellPaneDetection.js.map +1 -0
- package/dist/utils/tmux.d.ts +53 -1
- package/dist/utils/tmux.d.ts.map +1 -1
- package/dist/utils/tmux.js +352 -84
- package/dist/utils/tmux.js.map +1 -1
- package/dist/utils/welcomePane.d.ts +22 -0
- package/dist/utils/welcomePane.d.ts.map +1 -0
- package/dist/utils/welcomePane.js +119 -0
- package/dist/utils/welcomePane.js.map +1 -0
- package/dist/utils/welcomePaneManager.d.ts +36 -0
- package/dist/utils/welcomePaneManager.d.ts.map +1 -0
- package/dist/utils/welcomePaneManager.js +160 -0
- package/dist/utils/welcomePaneManager.js.map +1 -0
- package/dist/workers/PaneWorker.js +2 -0
- package/dist/workers/PaneWorker.js.map +1 -1
- package/package.json +5 -2
- package/dist/components/NewPaneDialog.d.ts +0 -9
- package/dist/components/NewPaneDialog.d.ts.map +0 -1
- package/dist/components/NewPaneDialog.js +0 -11
- package/dist/components/NewPaneDialog.js.map +0 -1
package/dist/utils/tmux.js
CHANGED
|
@@ -1,4 +1,52 @@
|
|
|
1
1
|
import { execSync } from 'child_process';
|
|
2
|
+
import { LogService } from '../services/LogService.js';
|
|
3
|
+
import { recalculateAndApplyLayout } from './layoutManager.js';
|
|
4
|
+
// Layout configuration - adjust these to change layout behavior
|
|
5
|
+
export const SIDEBAR_WIDTH = 40;
|
|
6
|
+
export const MIN_COMFORTABLE_WIDTH = 60; // Minimum chars for comfortable code viewing
|
|
7
|
+
export const MAX_COMFORTABLE_WIDTH = 100; // Maximum chars before too wide for comfort
|
|
8
|
+
export const MIN_COMFORTABLE_HEIGHT = 15; // Minimum lines for comfortable pane viewing
|
|
9
|
+
/**
|
|
10
|
+
* Calculate tmux layout checksum
|
|
11
|
+
* Based on tmux source: layout.c - layout_checksum()
|
|
12
|
+
*/
|
|
13
|
+
function calculateLayoutChecksum(layout) {
|
|
14
|
+
let checksum = 0;
|
|
15
|
+
for (let i = 0; i < layout.length; i++) {
|
|
16
|
+
checksum = (checksum >> 1) + ((checksum & 1) << 15);
|
|
17
|
+
checksum += layout.charCodeAt(i);
|
|
18
|
+
checksum &= 0xFFFF; // Mask to 16 bits (critical!)
|
|
19
|
+
}
|
|
20
|
+
// Tmux expects a 4-digit hex checksum (pad with leading zeros)
|
|
21
|
+
return checksum.toString(16).padStart(4, '0');
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Gets current window dimensions
|
|
25
|
+
*/
|
|
26
|
+
export const getWindowDimensions = () => {
|
|
27
|
+
try {
|
|
28
|
+
const output = execSync('tmux display-message -p "#{window_width} #{window_height}"', { encoding: 'utf-8', stdio: 'pipe' }).trim();
|
|
29
|
+
const [width, height] = output.split(' ').map(n => parseInt(n));
|
|
30
|
+
return { width, height };
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return { width: 120, height: 40 }; // Fallback dimensions
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Gets current terminal (client) dimensions
|
|
38
|
+
* This is the actual terminal size, not the tmux window size
|
|
39
|
+
*/
|
|
40
|
+
export const getTerminalDimensions = () => {
|
|
41
|
+
try {
|
|
42
|
+
const output = execSync('tmux display-message -p "#{client_width} #{client_height}"', { encoding: 'utf-8', stdio: 'pipe' }).trim();
|
|
43
|
+
const [width, height] = output.split(' ').map(n => parseInt(n));
|
|
44
|
+
return { width, height };
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return { width: 120, height: 40 }; // Fallback dimensions
|
|
48
|
+
}
|
|
49
|
+
};
|
|
2
50
|
export const getPanePositions = () => {
|
|
3
51
|
try {
|
|
4
52
|
const output = execSync(`tmux list-panes -F '#{pane_id} #{pane_left} #{pane_top} #{pane_width} #{pane_height}'`, { encoding: 'utf-8', stdio: 'pipe' }).trim();
|
|
@@ -17,105 +65,325 @@ export const getPanePositions = () => {
|
|
|
17
65
|
return [];
|
|
18
66
|
}
|
|
19
67
|
};
|
|
20
|
-
|
|
68
|
+
/**
|
|
69
|
+
* Gets all pane IDs in current window
|
|
70
|
+
*/
|
|
71
|
+
export const getAllPaneIds = () => {
|
|
21
72
|
try {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
73
|
+
const output = execSync('tmux list-panes -F "#{pane_id}"', {
|
|
74
|
+
encoding: 'utf-8',
|
|
75
|
+
stdio: 'pipe',
|
|
76
|
+
}).trim();
|
|
77
|
+
return output.split('\n').filter(id => id.trim());
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Gets content pane IDs (excludes control pane and spacer pane)
|
|
85
|
+
*/
|
|
86
|
+
export const getContentPaneIds = (controlPaneId) => {
|
|
87
|
+
const allPanes = getAllPaneIds();
|
|
88
|
+
return allPanes.filter(id => {
|
|
89
|
+
if (id === controlPaneId)
|
|
90
|
+
return false;
|
|
91
|
+
// Filter out spacer pane
|
|
92
|
+
try {
|
|
93
|
+
const title = execSync(`tmux display-message -t '${id}' -p '#{pane_title}'`, { encoding: 'utf-8', stdio: 'pipe' }).trim();
|
|
94
|
+
return title !== 'dmux-spacer';
|
|
30
95
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
applyCustomTwoRowLayout(paneCount);
|
|
96
|
+
catch {
|
|
97
|
+
return true; // Include pane if we can't get title
|
|
34
98
|
}
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Creates initial sidebar layout by splitting from control pane
|
|
103
|
+
* @param controlPaneId The pane ID running dmux TUI (left sidebar)
|
|
104
|
+
* @returns The newly created content area pane ID
|
|
105
|
+
*/
|
|
106
|
+
export const setupSidebarLayout = (controlPaneId) => {
|
|
107
|
+
try {
|
|
108
|
+
// Split horizontally (left-right) from control pane
|
|
109
|
+
const newPaneId = execSync(`tmux split-window -h -t '${controlPaneId}' -P -F '#{pane_id}'`, { encoding: 'utf-8', stdio: 'pipe' }).trim();
|
|
110
|
+
// Wait for split to settle
|
|
111
|
+
execSync('sleep 0.1', { stdio: 'pipe' });
|
|
112
|
+
// Resize control pane to fixed width
|
|
113
|
+
enforceControlPaneSize(controlPaneId, SIDEBAR_WIDTH);
|
|
114
|
+
// Refresh to ensure panes are painted correctly after layout
|
|
35
115
|
execSync('tmux refresh-client', { stdio: 'pipe' });
|
|
116
|
+
return newPaneId;
|
|
36
117
|
}
|
|
37
118
|
catch (error) {
|
|
119
|
+
throw new Error(`Failed to setup sidebar layout: ${error}`);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Generates a custom tmux layout string for [Sidebar | Grid] arrangement
|
|
124
|
+
* Format: checksum,WxH,X,Y{child1,child2,...}
|
|
125
|
+
* Each child: WxH,X,Y[pane_id] for leaf or WxH,X,Y{...} for container
|
|
126
|
+
*/
|
|
127
|
+
export const generateSidebarGridLayout = (controlPaneId, contentPanes, sidebarWidth, windowWidth, windowHeight, columns, maxComfortableWidth = MAX_COMFORTABLE_WIDTH) => {
|
|
128
|
+
// Calculate grid dimensions for content panes
|
|
129
|
+
const numContentPanes = contentPanes.length;
|
|
130
|
+
// Use provided column count
|
|
131
|
+
const cols = columns;
|
|
132
|
+
const rows = Math.ceil(numContentPanes / cols);
|
|
133
|
+
// Content area dimensions
|
|
134
|
+
// Account for borders: horizontal split adds 1 char, vertical splits add 1 char per row
|
|
135
|
+
const contentWidth = windowWidth - sidebarWidth - 1; // -1 for border between sidebar and content
|
|
136
|
+
const contentStartX = sidebarWidth + 1; // +1 to account for border
|
|
137
|
+
// For width, account for borders between columns
|
|
138
|
+
const bordersWidth = cols - 1;
|
|
139
|
+
const availableWidth = contentWidth - bordersWidth;
|
|
140
|
+
const paneWidth = Math.floor(availableWidth / cols);
|
|
141
|
+
// Check if last pane is a spacer
|
|
142
|
+
const lastPaneIsSpacer = contentPanes.length > 0 && (() => {
|
|
38
143
|
try {
|
|
39
|
-
|
|
144
|
+
const lastPaneId = contentPanes[contentPanes.length - 1];
|
|
145
|
+
const title = execSync(`tmux display-message -t '${lastPaneId}' -p '#{pane_title}'`, { encoding: 'utf-8', stdio: 'pipe' }).trim();
|
|
146
|
+
return title === 'dmux-spacer';
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
})();
|
|
152
|
+
// For height, account for borders between rows
|
|
153
|
+
// If we have 2 rows with 1 border, total consumed = row1 + 1 + row2 = windowHeight
|
|
154
|
+
const bordersHeight = rows - 1; // Number of borders between rows
|
|
155
|
+
const availableHeight = windowHeight - bordersHeight;
|
|
156
|
+
const paneHeight = Math.floor(availableHeight / rows);
|
|
157
|
+
// Extract numeric ID from controlPaneId (e.g., %1 -> 1)
|
|
158
|
+
const sidebarId = controlPaneId.replace('%', '');
|
|
159
|
+
// Debug logging
|
|
160
|
+
LogService.getInstance().debug(`generateSidebarGridLayout: ${numContentPanes} panes, ${cols} cols x ${rows} rows`, 'Layout');
|
|
161
|
+
LogService.getInstance().debug(`Window: ${windowWidth}x${windowHeight}, Content: ${contentWidth}x${windowHeight} starting at X=${contentStartX}`, 'Layout');
|
|
162
|
+
LogService.getInstance().debug(`Pane width: ${paneWidth}, borders: ${bordersWidth}`, 'Layout');
|
|
163
|
+
// Build grid rows (vertical splits within content area)
|
|
164
|
+
// Use ABSOLUTE coordinates everywhere (tmux requirement - yes, even inside containers!)
|
|
165
|
+
const gridRows = [];
|
|
166
|
+
let paneIndex = 0;
|
|
167
|
+
let currentY = 0; // Track Y position (starts at 0, relative to content area)
|
|
168
|
+
for (let row = 0; row < rows; row++) {
|
|
169
|
+
const rowPanes = [];
|
|
170
|
+
let absoluteX = contentStartX; // Track X position as ABSOLUTE from window origin
|
|
171
|
+
// Calculate height for this row
|
|
172
|
+
// Last row gets remainder to account for rounding
|
|
173
|
+
let rowHeight;
|
|
174
|
+
if (row === rows - 1) {
|
|
175
|
+
// Last row: use all remaining height
|
|
176
|
+
rowHeight = windowHeight - currentY;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
rowHeight = paneHeight;
|
|
180
|
+
}
|
|
181
|
+
// Determine panes in this row
|
|
182
|
+
const panesInThisRow = [];
|
|
183
|
+
for (let col = 0; col < cols && paneIndex + col < numContentPanes; col++) {
|
|
184
|
+
panesInThisRow.push(contentPanes[paneIndex + col]);
|
|
40
185
|
}
|
|
41
|
-
|
|
186
|
+
// Check if this row has a spacer (last pane is spacer)
|
|
187
|
+
const rowHasSpacer = lastPaneIsSpacer && row === rows - 1 && panesInThisRow.length > 0 &&
|
|
188
|
+
panesInThisRow[panesInThisRow.length - 1] === contentPanes[numContentPanes - 1];
|
|
189
|
+
const numContentPanesInRow = rowHasSpacer ? panesInThisRow.length - 1 : panesInThisRow.length;
|
|
190
|
+
// Calculate widths for this row
|
|
191
|
+
let contentPaneWidths;
|
|
192
|
+
let spacerWidth = null;
|
|
193
|
+
if (rowHasSpacer) {
|
|
194
|
+
// Row with spacer: content panes get MAX_COMFORTABLE_WIDTH (from config), spacer gets remainder
|
|
195
|
+
const contentPaneWidth = maxComfortableWidth;
|
|
196
|
+
const bordersInRow = panesInThisRow.length - 1; // borders between ALL panes in row
|
|
197
|
+
const totalContentWidth = numContentPanesInRow * contentPaneWidth;
|
|
198
|
+
const remainingWidth = contentWidth - totalContentWidth - bordersInRow;
|
|
199
|
+
LogService.getInstance().debug(`Row ${row} with spacer: ${numContentPanesInRow} content panes @ ${contentPaneWidth} = ${totalContentWidth}, borders=${bordersInRow}, spacer=${remainingWidth}`, 'Layout');
|
|
200
|
+
if (remainingWidth < 0) {
|
|
201
|
+
LogService.getInstance().debug(`WARNING: Negative spacer width! contentWidth=${contentWidth}, totalContent=${totalContentWidth}, borders=${bordersInRow}`, 'Layout');
|
|
202
|
+
}
|
|
203
|
+
contentPaneWidths = Array(numContentPanesInRow).fill(contentPaneWidth);
|
|
204
|
+
spacerWidth = remainingWidth;
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
// Row without spacer: divide width evenly
|
|
208
|
+
const bordersInRow = panesInThisRow.length - 1;
|
|
209
|
+
const availableWidth = contentWidth - bordersInRow;
|
|
210
|
+
const evenWidth = Math.floor(availableWidth / panesInThisRow.length);
|
|
211
|
+
const remainder = availableWidth - (evenWidth * panesInThisRow.length);
|
|
212
|
+
// CRITICAL: Distribute width evenly, with remainder going to FIRST pane (matches tmux behavior)
|
|
213
|
+
contentPaneWidths = Array(panesInThisRow.length).fill(evenWidth);
|
|
214
|
+
contentPaneWidths[0] += remainder; // First pane gets remainder, not last!
|
|
215
|
+
}
|
|
216
|
+
// Build row panes with calculated widths using ABSOLUTE coordinates
|
|
217
|
+
for (let col = 0; col < panesInThisRow.length; col++) {
|
|
218
|
+
const paneId = panesInThisRow[col].replace('%', '');
|
|
219
|
+
const isSpacerPane = rowHasSpacer && col === panesInThisRow.length - 1;
|
|
220
|
+
const colWidth = isSpacerPane ? spacerWidth : contentPaneWidths[col];
|
|
221
|
+
// Use ABSOLUTE coordinates (from window origin) - tmux requirement
|
|
222
|
+
rowPanes.push(`${colWidth}x${rowHeight},${absoluteX},${currentY},${paneId}`);
|
|
223
|
+
// Move X position right by pane width + border
|
|
224
|
+
absoluteX += colWidth;
|
|
225
|
+
if (col < panesInThisRow.length - 1) {
|
|
226
|
+
absoluteX += 1; // Add border
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
paneIndex += panesInThisRow.length;
|
|
230
|
+
// Wrap multi-pane rows in horizontal container (uses ABSOLUTE coordinates)
|
|
231
|
+
if (rowPanes.length > 1) {
|
|
232
|
+
// Horizontal split = use curly braces {}
|
|
233
|
+
// Row container also uses ABSOLUTE coordinates
|
|
234
|
+
const rowString = `${contentWidth}x${rowHeight},${contentStartX},${currentY}{${rowPanes.join(',')}}`;
|
|
235
|
+
LogService.getInstance().debug(`Row ${row}: ${rowPanes.length} panes → ${rowString}`, 'Layout');
|
|
236
|
+
gridRows.push(rowString);
|
|
237
|
+
}
|
|
238
|
+
else if (rowPanes.length === 1) {
|
|
239
|
+
// Single pane - no container needed, use ABSOLUTE coordinates
|
|
240
|
+
const paneStr = rowPanes[0];
|
|
241
|
+
const parts = paneStr.split(',');
|
|
242
|
+
parts[1] = contentStartX.toString(); // X absolute
|
|
243
|
+
parts[2] = currentY.toString(); // Y absolute
|
|
244
|
+
const singlePaneString = parts.join(',');
|
|
245
|
+
LogService.getInstance().debug(`Row ${row}: 1 pane → ${singlePaneString}`, 'Layout');
|
|
246
|
+
gridRows.push(singlePaneString);
|
|
247
|
+
}
|
|
248
|
+
// Move Y position down by pane height + 1 for border (except on last row)
|
|
249
|
+
if (row < rows - 1) {
|
|
250
|
+
currentY += paneHeight + 1;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// Build root container
|
|
254
|
+
const sidebar = `${sidebarWidth}x${windowHeight},0,0,${sidebarId}`;
|
|
255
|
+
let layoutWithoutChecksum;
|
|
256
|
+
if (gridRows.length > 1) {
|
|
257
|
+
// Multiple rows: wrap in vertical split container
|
|
258
|
+
const contentArea = `${contentWidth}x${windowHeight},${contentStartX},0[${gridRows.join(',')}]`;
|
|
259
|
+
layoutWithoutChecksum = `${windowWidth}x${windowHeight},0,0{${sidebar},${contentArea}}`;
|
|
260
|
+
}
|
|
261
|
+
else if (gridRows.length === 1) {
|
|
262
|
+
// Single row: keep the container structure to maintain binary splits
|
|
263
|
+
// tmux only supports 2 children per split, so we need {sidebar, content_container}
|
|
264
|
+
const row = gridRows[0];
|
|
265
|
+
// Adjust the container's X position from 0 to contentStartX
|
|
266
|
+
const contentArea = row.replace(/^(\d+x\d+),0,/, `$1,${contentStartX},`);
|
|
267
|
+
layoutWithoutChecksum = `${windowWidth}x${windowHeight},0,0{${sidebar},${contentArea}}`;
|
|
268
|
+
LogService.getInstance().debug(`Single row layout: {sidebar, content}`, 'Layout');
|
|
42
269
|
}
|
|
270
|
+
else {
|
|
271
|
+
// No content panes
|
|
272
|
+
return '';
|
|
273
|
+
}
|
|
274
|
+
// Calculate checksum and prepend to layout string
|
|
275
|
+
const checksum = calculateLayoutChecksum(layoutWithoutChecksum);
|
|
276
|
+
const finalLayout = `${checksum},${layoutWithoutChecksum}`;
|
|
277
|
+
LogService.getInstance().debug(`Generated layout string: ${finalLayout}`, 'Layout');
|
|
278
|
+
return finalLayout;
|
|
279
|
+
};
|
|
280
|
+
/**
|
|
281
|
+
* Calculates optimal number of columns for pane layout based on dimensions
|
|
282
|
+
* @param numPanes Number of panes to arrange
|
|
283
|
+
* @param contentWidth Available width for content panes
|
|
284
|
+
* @param contentHeight Available height for content panes
|
|
285
|
+
* @returns Optimal number of columns
|
|
286
|
+
*/
|
|
287
|
+
export const calculateOptimalColumns = (numPanes, contentWidth, contentHeight) => {
|
|
288
|
+
// Try different numbers of columns to find optimal layout
|
|
289
|
+
let bestCols = 1;
|
|
290
|
+
let bestScore = -1;
|
|
291
|
+
for (let cols = 1; cols <= numPanes; cols++) {
|
|
292
|
+
// Calculate width for this column count
|
|
293
|
+
const bordersWidth = cols - 1;
|
|
294
|
+
const paneWidth = Math.floor((contentWidth - bordersWidth) / cols);
|
|
295
|
+
// Calculate height for this column count
|
|
296
|
+
const rows = Math.ceil(numPanes / cols);
|
|
297
|
+
const bordersHeight = rows - 1;
|
|
298
|
+
const paneHeight = Math.floor((contentHeight - bordersHeight) / rows);
|
|
299
|
+
// Skip if width or height is too small
|
|
300
|
+
if (paneWidth < MIN_COMFORTABLE_WIDTH || paneHeight < MIN_COMFORTABLE_HEIGHT) {
|
|
301
|
+
continue;
|
|
302
|
+
}
|
|
303
|
+
// Score this configuration (prefer balanced layouts)
|
|
304
|
+
// Heavily penalize heights below comfortable threshold
|
|
305
|
+
const widthScore = paneWidth <= MAX_COMFORTABLE_WIDTH ? 1 : 0.5;
|
|
306
|
+
const heightScore = paneHeight >= MIN_COMFORTABLE_HEIGHT * 1.5 ? 1 : 0.7;
|
|
307
|
+
const score = widthScore * heightScore;
|
|
308
|
+
if (score > bestScore) {
|
|
309
|
+
bestScore = score;
|
|
310
|
+
bestCols = cols;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
// If no valid layout found, fall back to what gives best height
|
|
314
|
+
if (bestScore === -1) {
|
|
315
|
+
// Find column count that maximizes height while keeping width above minimum
|
|
316
|
+
for (let cols = numPanes; cols >= 1; cols--) {
|
|
317
|
+
const bordersWidth = cols - 1;
|
|
318
|
+
const paneWidth = Math.floor((contentWidth - bordersWidth) / cols);
|
|
319
|
+
if (paneWidth >= MIN_COMFORTABLE_WIDTH * 0.8) { // Allow slightly narrower
|
|
320
|
+
bestCols = cols;
|
|
321
|
+
break;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return bestCols;
|
|
43
326
|
};
|
|
44
327
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
328
|
+
* Enforces left sidebar layout: 40-char wide sidebar on left, content panes in grid on right
|
|
329
|
+
* This maintains the structure: [Sidebar (40 chars, full height) | Content Grid Area]
|
|
330
|
+
*
|
|
331
|
+
* @deprecated This function now delegates to the centralized layout manager.
|
|
332
|
+
* Consider using recalculateAndApplyLayout() directly from layoutManager.ts
|
|
49
333
|
*/
|
|
50
|
-
const
|
|
334
|
+
export const enforceControlPaneSize = (controlPaneId, width) => {
|
|
335
|
+
const logService = LogService.getInstance();
|
|
51
336
|
try {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
//
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
//
|
|
96
|
-
|
|
97
|
-
// Bottom row layout (remaining panes side by side)
|
|
98
|
-
let bottomRowParts = [];
|
|
99
|
-
let currentX = 0;
|
|
100
|
-
for (let i = 2; i < paneCount; i++) {
|
|
101
|
-
const isLast = i === paneCount - 1;
|
|
102
|
-
const width = isLast ? windowWidth - currentX : bottomPaneWidth;
|
|
103
|
-
const paneNum = paneInfo[i].id.replace('%', '');
|
|
104
|
-
bottomRowParts.push(`${width}x${bottomRowHeight},${currentX},${topRowHeight + 1},${paneNum}`);
|
|
105
|
-
currentX += width + 1;
|
|
106
|
-
}
|
|
107
|
-
const bottomRowLayout = `${windowWidth}x${bottomRowHeight},0,${topRowHeight + 1}{${bottomRowParts.join(',')}}`;
|
|
108
|
-
// Complete layout
|
|
109
|
-
const layoutString = `${windowWidth}x${windowHeight},0,0[${topRowLayout},${bottomRowLayout}]`;
|
|
110
|
-
// Apply the layout
|
|
111
|
-
execSync(`tmux select-layout '${layoutString}'`, { stdio: 'pipe' });
|
|
337
|
+
const contentPanes = getContentPaneIds(controlPaneId);
|
|
338
|
+
logService.debug(`enforceControlPaneSize called: ${contentPanes.length} content panes`, 'Layout');
|
|
339
|
+
// If we only have the control pane, nothing to enforce
|
|
340
|
+
if (contentPanes.length === 0) {
|
|
341
|
+
// Just resize the sidebar
|
|
342
|
+
try {
|
|
343
|
+
execSync(`tmux resize-pane -t '${controlPaneId}' -x ${width}`, { stdio: 'pipe' });
|
|
344
|
+
}
|
|
345
|
+
catch {
|
|
346
|
+
// Ignore errors
|
|
347
|
+
}
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
// Check if we have only the welcome pane (should not be width-constrained)
|
|
351
|
+
if (contentPanes.length === 1) {
|
|
352
|
+
try {
|
|
353
|
+
const title = execSync(`tmux display-message -t '${contentPanes[0]}' -p '#{pane_title}'`, {
|
|
354
|
+
encoding: 'utf-8',
|
|
355
|
+
stdio: 'pipe'
|
|
356
|
+
}).trim();
|
|
357
|
+
if (title === 'Welcome') {
|
|
358
|
+
// Welcome pane should use full terminal width, not be constrained
|
|
359
|
+
// Get terminal dimensions and let window follow terminal
|
|
360
|
+
const termDims = getTerminalDimensions();
|
|
361
|
+
// Set window size to match terminal (manual mode but always tracking terminal)
|
|
362
|
+
execSync(`tmux set-window-option window-size manual`, { stdio: 'pipe' });
|
|
363
|
+
execSync(`tmux resize-window -x ${termDims.width} -y ${termDims.height}`, { stdio: 'pipe' });
|
|
364
|
+
// Apply main-vertical layout with fixed sidebar width
|
|
365
|
+
execSync(`tmux set-window-option main-pane-width ${width}`, { stdio: 'pipe' });
|
|
366
|
+
execSync('tmux select-layout main-vertical', { stdio: 'pipe' });
|
|
367
|
+
execSync('tmux refresh-client', { stdio: 'pipe' });
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
catch {
|
|
372
|
+
// If we can't get the title, fall through to normal layout
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
// Use the new layout manager for regular content panes
|
|
376
|
+
// Read terminal dimensions (not window dimensions which may be stale in manual mode)
|
|
377
|
+
const dimensions = getTerminalDimensions();
|
|
378
|
+
logService.debug(`Terminal dimensions: ${dimensions.width}x${dimensions.height}`, 'Layout');
|
|
379
|
+
recalculateAndApplyLayout(controlPaneId, contentPanes, dimensions.width, dimensions.height);
|
|
380
|
+
// Refresh to apply changes (but don't select the pane - don't steal focus!)
|
|
381
|
+
execSync('tmux refresh-client', { stdio: 'pipe' });
|
|
112
382
|
}
|
|
113
383
|
catch (error) {
|
|
114
|
-
//
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
catch { }
|
|
384
|
+
// Log error for debugging but don't crash
|
|
385
|
+
const msg = 'Layout enforcement failed';
|
|
386
|
+
LogService.getInstance().error(msg, 'tmux', undefined, error instanceof Error ? error : undefined);
|
|
119
387
|
}
|
|
120
388
|
};
|
|
121
389
|
//# sourceMappingURL=tmux.js.map
|
package/dist/utils/tmux.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/utils/tmux.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/utils/tmux.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a welcome pane in the tmux session
|
|
3
|
+
* This pane displays ASCII art and has no command prompt
|
|
4
|
+
*
|
|
5
|
+
* @param controlPaneId - The ID of the control (sidebar) pane
|
|
6
|
+
* @returns The pane ID of the created welcome pane, or undefined if creation failed
|
|
7
|
+
*/
|
|
8
|
+
export declare function createWelcomePane(controlPaneId: string): Promise<string | undefined>;
|
|
9
|
+
/**
|
|
10
|
+
* Destroys the welcome pane if it exists
|
|
11
|
+
*
|
|
12
|
+
* @param welcomePaneId - The pane ID of the welcome pane to destroy
|
|
13
|
+
*/
|
|
14
|
+
export declare function destroyWelcomePane(welcomePaneId: string | undefined): void;
|
|
15
|
+
/**
|
|
16
|
+
* Checks if a welcome pane exists and is still alive
|
|
17
|
+
*
|
|
18
|
+
* @param welcomePaneId - The pane ID to check
|
|
19
|
+
* @returns true if the pane exists, false otherwise
|
|
20
|
+
*/
|
|
21
|
+
export declare function welcomePaneExists(welcomePaneId: string | undefined): boolean;
|
|
22
|
+
//# sourceMappingURL=welcomePane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welcomePane.d.ts","sourceRoot":"","sources":["../../src/utils/welcomePane.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoE1F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAwB1E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAkB5E"}
|