claude-code-plus-plus 0.3.1 → 0.4.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/constants.d.ts +6 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +7 -2
- package/dist/constants.js.map +1 -1
- package/dist/diff/diff-handler.d.ts +15 -0
- package/dist/diff/diff-handler.d.ts.map +1 -0
- package/dist/diff/diff-handler.js +235 -0
- package/dist/diff/diff-handler.js.map +1 -0
- package/dist/diff/diff-manager.d.ts +63 -0
- package/dist/diff/diff-manager.d.ts.map +1 -0
- package/dist/diff/diff-manager.js +271 -0
- package/dist/diff/diff-manager.js.map +1 -0
- package/dist/diff/diff-pane-render.d.ts +34 -0
- package/dist/diff/diff-pane-render.d.ts.map +1 -0
- package/dist/diff/diff-pane-render.js +222 -0
- package/dist/diff/diff-pane-render.js.map +1 -0
- package/dist/diff/file-diff-content-handler.d.ts +16 -0
- package/dist/diff/file-diff-content-handler.d.ts.map +1 -0
- package/dist/diff/file-diff-content-handler.js +142 -0
- package/dist/diff/file-diff-content-handler.js.map +1 -0
- package/dist/diff/file-diff-header-handler.d.ts +16 -0
- package/dist/diff/file-diff-header-handler.d.ts.map +1 -0
- package/dist/diff/file-diff-header-handler.js +191 -0
- package/dist/diff/file-diff-header-handler.js.map +1 -0
- package/dist/diff/file-diff-header-render.d.ts +30 -0
- package/dist/diff/file-diff-header-render.d.ts.map +1 -0
- package/dist/diff/file-diff-header-render.js +101 -0
- package/dist/diff/file-diff-header-render.js.map +1 -0
- package/dist/diff/file-diff-render.d.ts +27 -0
- package/dist/diff/file-diff-render.d.ts.map +1 -0
- package/dist/diff/file-diff-render.js +211 -0
- package/dist/diff/file-diff-render.js.map +1 -0
- package/dist/diff/git-diff.d.ts +54 -0
- package/dist/diff/git-diff.d.ts.map +1 -0
- package/dist/diff/git-diff.js +599 -0
- package/dist/diff/git-diff.js.map +1 -0
- package/dist/diff/index.d.ts +8 -0
- package/dist/diff/index.d.ts.map +1 -0
- package/dist/diff/index.js +37 -0
- package/dist/diff/index.js.map +1 -0
- package/dist/sidebar/app.d.ts +69 -0
- package/dist/sidebar/app.d.ts.map +1 -1
- package/dist/sidebar/app.js +508 -10
- package/dist/sidebar/app.js.map +1 -1
- package/dist/sidebar/commands.d.ts +1 -0
- package/dist/sidebar/commands.d.ts.map +1 -1
- package/dist/sidebar/commands.js +11 -0
- package/dist/sidebar/commands.js.map +1 -1
- package/dist/sidebar/pane-orchestrator.d.ts.map +1 -1
- package/dist/sidebar/pane-orchestrator.js +10 -1
- package/dist/sidebar/pane-orchestrator.js.map +1 -1
- package/dist/sidebar/render.d.ts.map +1 -1
- package/dist/sidebar/render.js +2 -1
- package/dist/sidebar/render.js.map +1 -1
- package/dist/tmux/index.d.ts +1 -1
- package/dist/tmux/index.d.ts.map +1 -1
- package/dist/tmux/index.js +2 -1
- package/dist/tmux/index.js.map +1 -1
- package/dist/tmux/pane.d.ts +5 -0
- package/dist/tmux/pane.d.ts.map +1 -1
- package/dist/tmux/pane.js +10 -0
- package/dist/tmux/pane.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/constants.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export declare const DEFAULT_ROWS = 24;
|
|
|
17
17
|
/** Number of header rows before the list starts */
|
|
18
18
|
export declare const HEADER_ROW_COUNT = 3;
|
|
19
19
|
/** Reserved rows at the bottom for help text (including version line) */
|
|
20
|
-
export declare const FOOTER_ROW_COUNT =
|
|
20
|
+
export declare const FOOTER_ROW_COUNT = 10;
|
|
21
21
|
/** Maximum width for modal content */
|
|
22
22
|
export declare const MODAL_MAX_WIDTH = 60;
|
|
23
23
|
/** Maximum width for input fields */
|
|
@@ -54,6 +54,7 @@ export declare const KEY_HINTS: {
|
|
|
54
54
|
readonly NEW_SESSION: "↵ new session";
|
|
55
55
|
readonly NEW_WORKTREE: "n new worktree";
|
|
56
56
|
readonly TERMINAL: "^T terminal";
|
|
57
|
+
readonly DIFF: "^D diff";
|
|
57
58
|
readonly DELETE: "d delete";
|
|
58
59
|
readonly RENAME: "r rename";
|
|
59
60
|
readonly QUIT: "^Q quit";
|
|
@@ -64,4 +65,8 @@ export declare const SIDEBAR_LOG_PATH = "/tmp/claude-pp-sidebar.log";
|
|
|
64
65
|
export declare const BAR_HANDLER_LOG_PATH = "/tmp/cpp-bar-handler.log";
|
|
65
66
|
/** Path prefix for resize hook scripts */
|
|
66
67
|
export declare const RESIZE_HOOK_SCRIPT_PREFIX = "/tmp/cpp-resize-hook-";
|
|
68
|
+
/** Path for diff handler debug log */
|
|
69
|
+
export declare const DIFF_HANDLER_LOG_PATH = "/tmp/cpp-diff-handler.log";
|
|
70
|
+
/** Width of the diff pane (right sidebar) in columns */
|
|
71
|
+
export declare const DIFF_PANE_WIDTH = 30;
|
|
67
72
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,eAAO,MAAM,OAAO,QAAe,CAAC;AAMpC,2CAA2C;AAC3C,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,6CAA6C;AAC7C,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,6DAA6D;AAC7D,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,YAAY,KAAK,CAAC;AAM/B,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,eAAO,MAAM,OAAO,QAAe,CAAC;AAMpC,2CAA2C;AAC3C,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,6CAA6C;AAC7C,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,6DAA6D;AAC7D,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,YAAY,KAAK,CAAC;AAM/B,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,sCAAsC;AACtC,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,qCAAqC;AACrC,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,wCAAwC;AACxC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,wCAAwC;AACxC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAMlC,uCAAuC;AACvC,eAAO,MAAM,kBAAkB,0CAA0C,CAAC;AAM1E,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;CA0BV,CAAC;AAMX,eAAO,MAAM,SAAS;;;;;;;;CAQZ,CAAC;AAMX,iCAAiC;AACjC,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AAE7D,gDAAgD;AAChD,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAE/D,0CAA0C;AAC1C,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAEjE,sCAAsC;AACtC,eAAO,MAAM,qBAAqB,8BAA8B,CAAC;AAEjE,wDAAwD;AACxD,eAAO,MAAM,eAAe,KAAK,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* This ensures consistency and makes it easy to modify values across the application.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.RESIZE_HOOK_SCRIPT_PREFIX = exports.BAR_HANDLER_LOG_PATH = exports.SIDEBAR_LOG_PATH = exports.KEY_HINTS = exports.UI_TEXT = exports.DEFAULT_CLAUDE_CMD = exports.TAB_PREFIX_WIDTH = exports.MIN_TAB_WIDTH = exports.WORKTREE_ITEM_PADDING = exports.LIST_ITEM_PADDING = exports.INPUT_MAX_WIDTH = exports.MODAL_MAX_WIDTH = exports.FOOTER_ROW_COUNT = exports.HEADER_ROW_COUNT = exports.DEFAULT_ROWS = exports.DEFAULT_COLS = exports.CLAUDE_PANE_PERCENT = exports.TERMINAL_BAR_HEIGHT = exports.SIDEBAR_WIDTH = exports.VERSION = void 0;
|
|
9
|
+
exports.DIFF_PANE_WIDTH = exports.DIFF_HANDLER_LOG_PATH = exports.RESIZE_HOOK_SCRIPT_PREFIX = exports.BAR_HANDLER_LOG_PATH = exports.SIDEBAR_LOG_PATH = exports.KEY_HINTS = exports.UI_TEXT = exports.DEFAULT_CLAUDE_CMD = exports.TAB_PREFIX_WIDTH = exports.MIN_TAB_WIDTH = exports.WORKTREE_ITEM_PADDING = exports.LIST_ITEM_PADDING = exports.INPUT_MAX_WIDTH = exports.MODAL_MAX_WIDTH = exports.FOOTER_ROW_COUNT = exports.HEADER_ROW_COUNT = exports.DEFAULT_ROWS = exports.DEFAULT_COLS = exports.CLAUDE_PANE_PERCENT = exports.TERMINAL_BAR_HEIGHT = exports.SIDEBAR_WIDTH = exports.VERSION = void 0;
|
|
10
10
|
const fs_1 = require("fs");
|
|
11
11
|
const path_1 = require("path");
|
|
12
12
|
// ============================================================================
|
|
@@ -42,7 +42,7 @@ exports.DEFAULT_ROWS = 24;
|
|
|
42
42
|
/** Number of header rows before the list starts */
|
|
43
43
|
exports.HEADER_ROW_COUNT = 3;
|
|
44
44
|
/** Reserved rows at the bottom for help text (including version line) */
|
|
45
|
-
exports.FOOTER_ROW_COUNT =
|
|
45
|
+
exports.FOOTER_ROW_COUNT = 10;
|
|
46
46
|
/** Maximum width for modal content */
|
|
47
47
|
exports.MODAL_MAX_WIDTH = 60;
|
|
48
48
|
/** Maximum width for input fields */
|
|
@@ -93,6 +93,7 @@ exports.KEY_HINTS = {
|
|
|
93
93
|
NEW_SESSION: '↵ new session',
|
|
94
94
|
NEW_WORKTREE: 'n new worktree',
|
|
95
95
|
TERMINAL: '^T terminal',
|
|
96
|
+
DIFF: '^D diff',
|
|
96
97
|
DELETE: 'd delete',
|
|
97
98
|
RENAME: 'r rename',
|
|
98
99
|
QUIT: '^Q quit',
|
|
@@ -106,4 +107,8 @@ exports.SIDEBAR_LOG_PATH = '/tmp/claude-pp-sidebar.log';
|
|
|
106
107
|
exports.BAR_HANDLER_LOG_PATH = '/tmp/cpp-bar-handler.log';
|
|
107
108
|
/** Path prefix for resize hook scripts */
|
|
108
109
|
exports.RESIZE_HOOK_SCRIPT_PREFIX = '/tmp/cpp-resize-hook-';
|
|
110
|
+
/** Path for diff handler debug log */
|
|
111
|
+
exports.DIFF_HANDLER_LOG_PATH = '/tmp/cpp-diff-handler.log';
|
|
112
|
+
/** Width of the diff pane (right sidebar) in columns */
|
|
113
|
+
exports.DIFF_PANE_WIDTH = 30;
|
|
109
114
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,2BAAkC;AAClC,+BAA+B;AAE/B,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,4CAA4C;AAC5C,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,OAAO,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAEY,QAAA,OAAO,GAAG,UAAU,EAAE,CAAC;AAEpC,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,2CAA2C;AAC9B,QAAA,aAAa,GAAG,EAAE,CAAC;AAEhC,6CAA6C;AAChC,QAAA,mBAAmB,GAAG,CAAC,CAAC;AAErC,sEAAsE;AACzD,QAAA,mBAAmB,GAAG,EAAE,CAAC;AAEtC,6DAA6D;AAChD,QAAA,YAAY,GAAG,EAAE,CAAC;AAClB,QAAA,YAAY,GAAG,EAAE,CAAC;AAE/B,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,mDAAmD;AACtC,QAAA,gBAAgB,GAAG,CAAC,CAAC;AAElC,yEAAyE;AAC5D,QAAA,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Diff Pane Handler
|
|
4
|
+
*
|
|
5
|
+
* Lightweight process that runs in the right diff pane.
|
|
6
|
+
* Shows the list of changed files and sends view commands to the sidebar.
|
|
7
|
+
*
|
|
8
|
+
* Communication:
|
|
9
|
+
* - Receives render data from sidebar via stdin
|
|
10
|
+
* - Sends actions to sidebar via tmux send-keys
|
|
11
|
+
*
|
|
12
|
+
* Usage: node diff-handler.js <sidebarPaneId> <sessionId> <worktreePath>
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=diff-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-handler.d.ts","sourceRoot":"","sources":["../../src/diff/diff-handler.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Diff Pane Handler
|
|
5
|
+
*
|
|
6
|
+
* Lightweight process that runs in the right diff pane.
|
|
7
|
+
* Shows the list of changed files and sends view commands to the sidebar.
|
|
8
|
+
*
|
|
9
|
+
* Communication:
|
|
10
|
+
* - Receives render data from sidebar via stdin
|
|
11
|
+
* - Sends actions to sidebar via tmux send-keys
|
|
12
|
+
*
|
|
13
|
+
* Usage: node diff-handler.js <sidebarPaneId> <sessionId> <worktreePath>
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
const child_process_1 = require("child_process");
|
|
17
|
+
const diff_pane_render_1 = require("./diff-pane-render");
|
|
18
|
+
const git_diff_1 = require("./git-diff");
|
|
19
|
+
const ansi_1 = require("../ansi");
|
|
20
|
+
let state = {
|
|
21
|
+
sidebarPaneId: '',
|
|
22
|
+
sessionId: '',
|
|
23
|
+
worktreePath: '',
|
|
24
|
+
files: [],
|
|
25
|
+
selectedIndex: 0,
|
|
26
|
+
filePositions: [],
|
|
27
|
+
};
|
|
28
|
+
let running = false;
|
|
29
|
+
// ============================================================================
|
|
30
|
+
// Communication with Sidebar
|
|
31
|
+
// ============================================================================
|
|
32
|
+
/**
|
|
33
|
+
* Send a command to the sidebar via tmux send-keys
|
|
34
|
+
* Protocol: Ctrl+U followed by "DIFF:<action>:<data>" then Enter
|
|
35
|
+
*/
|
|
36
|
+
function sendToSidebar(action, data = '') {
|
|
37
|
+
try {
|
|
38
|
+
// Send Ctrl+U to clear any existing input and enter command mode
|
|
39
|
+
(0, child_process_1.execSync)(`tmux send-keys -t ${state.sidebarPaneId} C-u`, { stdio: 'ignore' });
|
|
40
|
+
// Send the command
|
|
41
|
+
const cmd = data ? `DIFF:${action}:${data}` : `DIFF:${action}`;
|
|
42
|
+
(0, child_process_1.execSync)(`tmux send-keys -t ${state.sidebarPaneId} -l "${cmd}"`, { stdio: 'ignore' });
|
|
43
|
+
// Send Enter to execute
|
|
44
|
+
(0, child_process_1.execSync)(`tmux send-keys -t ${state.sidebarPaneId} Enter`, { stdio: 'ignore' });
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
// Failed to send - sidebar may have exited
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// ============================================================================
|
|
51
|
+
// Rendering
|
|
52
|
+
// ============================================================================
|
|
53
|
+
function render() {
|
|
54
|
+
const width = process.stdout.columns || 30;
|
|
55
|
+
const height = process.stdout.rows || 24;
|
|
56
|
+
const { output, filePositions } = (0, diff_pane_render_1.renderDiffPane)(state.files, state.selectedIndex, width, height);
|
|
57
|
+
state.filePositions = filePositions;
|
|
58
|
+
process.stdout.write(output);
|
|
59
|
+
}
|
|
60
|
+
// ============================================================================
|
|
61
|
+
// Input Handling
|
|
62
|
+
// ============================================================================
|
|
63
|
+
function handleInput(data) {
|
|
64
|
+
const input = data.toString();
|
|
65
|
+
// Check for render command from sidebar: "RENDER:<json>"
|
|
66
|
+
if (input.startsWith('RENDER:')) {
|
|
67
|
+
try {
|
|
68
|
+
const json = input.slice(7).trim();
|
|
69
|
+
const renderData = JSON.parse(json);
|
|
70
|
+
state.files = renderData.files || [];
|
|
71
|
+
state.selectedIndex = Math.min(state.selectedIndex, Math.max(0, state.files.length - 1));
|
|
72
|
+
render();
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
// Invalid render data
|
|
76
|
+
}
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// Check for SGR mouse events: \x1b[<button;col;rowM or \x1b[<button;col;rowm
|
|
80
|
+
const mouseMatch = input.match(/\x1b\[<(\d+);(\d+);(\d+)([Mm])/);
|
|
81
|
+
if (mouseMatch) {
|
|
82
|
+
const button = parseInt(mouseMatch[1], 10);
|
|
83
|
+
const col = parseInt(mouseMatch[2], 10);
|
|
84
|
+
const row = parseInt(mouseMatch[3], 10);
|
|
85
|
+
const isRelease = mouseMatch[4] === 'm';
|
|
86
|
+
// Handle left click release
|
|
87
|
+
if (button === 0 && isRelease) {
|
|
88
|
+
handleClick(row);
|
|
89
|
+
}
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
// Handle keyboard input
|
|
93
|
+
const key = input;
|
|
94
|
+
// Up/k: move selection up
|
|
95
|
+
if (key === '\x1b[A' || key === 'k') {
|
|
96
|
+
if (state.selectedIndex > 0) {
|
|
97
|
+
state.selectedIndex--;
|
|
98
|
+
render();
|
|
99
|
+
}
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
// Down/j: move selection down
|
|
103
|
+
if (key === '\x1b[B' || key === 'j') {
|
|
104
|
+
if (state.selectedIndex < state.files.length - 1) {
|
|
105
|
+
state.selectedIndex++;
|
|
106
|
+
render();
|
|
107
|
+
}
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
// g: go to top
|
|
111
|
+
if (key === 'g') {
|
|
112
|
+
state.selectedIndex = 0;
|
|
113
|
+
render();
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
// G: go to bottom
|
|
117
|
+
if (key === 'G') {
|
|
118
|
+
state.selectedIndex = Math.max(0, state.files.length - 1);
|
|
119
|
+
render();
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
// Enter: view selected file diff
|
|
123
|
+
if (key === '\r') {
|
|
124
|
+
viewSelectedFile();
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
// Escape/q: close diff pane
|
|
128
|
+
if (key === '\x1b' && input.length === 1 || key === 'q') {
|
|
129
|
+
sendToSidebar('close');
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
// r: refresh
|
|
133
|
+
if (key === 'r') {
|
|
134
|
+
sendToSidebar('refresh');
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function handleClick(row) {
|
|
139
|
+
const clickedIndex = (0, diff_pane_render_1.findClickedFile)(row, state.filePositions);
|
|
140
|
+
if (clickedIndex === null)
|
|
141
|
+
return;
|
|
142
|
+
if (clickedIndex === state.selectedIndex) {
|
|
143
|
+
// Double-click on already selected - view file
|
|
144
|
+
viewSelectedFile();
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
// Select the clicked file
|
|
148
|
+
state.selectedIndex = clickedIndex;
|
|
149
|
+
render();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function viewSelectedFile() {
|
|
153
|
+
if (state.files.length === 0)
|
|
154
|
+
return;
|
|
155
|
+
const file = state.files[state.selectedIndex];
|
|
156
|
+
if (file) {
|
|
157
|
+
// Escape the filename for shell
|
|
158
|
+
const escapedFile = file.file.replace(/"/g, '\\"');
|
|
159
|
+
sendToSidebar('viewfile', escapedFile);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// ============================================================================
|
|
163
|
+
// Lifecycle
|
|
164
|
+
// ============================================================================
|
|
165
|
+
function start() {
|
|
166
|
+
running = true;
|
|
167
|
+
// Set up terminal
|
|
168
|
+
process.stdout.write(ansi_1.ansi.hideCursor);
|
|
169
|
+
process.stdout.write(ansi_1.ansi.enableMouse);
|
|
170
|
+
// Set up raw mode for input
|
|
171
|
+
if (process.stdin.isTTY) {
|
|
172
|
+
process.stdin.setRawMode(true);
|
|
173
|
+
}
|
|
174
|
+
process.stdin.resume();
|
|
175
|
+
process.stdin.on('data', handleInput);
|
|
176
|
+
// Handle resize
|
|
177
|
+
process.stdout.on('resize', () => {
|
|
178
|
+
render();
|
|
179
|
+
});
|
|
180
|
+
// Initial render
|
|
181
|
+
render();
|
|
182
|
+
}
|
|
183
|
+
function stop() {
|
|
184
|
+
running = false;
|
|
185
|
+
process.stdout.write(ansi_1.ansi.disableMouse);
|
|
186
|
+
process.stdout.write(ansi_1.ansi.showCursor);
|
|
187
|
+
process.stdout.write(ansi_1.ansi.reset);
|
|
188
|
+
if (process.stdin.isTTY) {
|
|
189
|
+
process.stdin.setRawMode(false);
|
|
190
|
+
}
|
|
191
|
+
process.stdin.pause();
|
|
192
|
+
}
|
|
193
|
+
// ============================================================================
|
|
194
|
+
// Main
|
|
195
|
+
// ============================================================================
|
|
196
|
+
async function main() {
|
|
197
|
+
const args = process.argv.slice(2);
|
|
198
|
+
if (args.length < 3) {
|
|
199
|
+
console.error('Usage: diff-handler <sidebarPaneId> <sessionId> <worktreePath>');
|
|
200
|
+
process.exit(1);
|
|
201
|
+
}
|
|
202
|
+
state.sidebarPaneId = args[0];
|
|
203
|
+
state.sessionId = args[1];
|
|
204
|
+
state.worktreePath = args[2];
|
|
205
|
+
// Parse initial state from remaining args
|
|
206
|
+
if (args[3]) {
|
|
207
|
+
try {
|
|
208
|
+
const initialData = JSON.parse(args[3]);
|
|
209
|
+
state.files = initialData.files || [];
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
// Invalid initial data - fetch fresh
|
|
213
|
+
state.files = await (0, git_diff_1.getDiffSummary)(state.worktreePath);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
// Fetch initial diff data
|
|
218
|
+
state.files = await (0, git_diff_1.getDiffSummary)(state.worktreePath);
|
|
219
|
+
}
|
|
220
|
+
// Handle graceful shutdown
|
|
221
|
+
process.on('SIGTERM', () => {
|
|
222
|
+
stop();
|
|
223
|
+
process.exit(0);
|
|
224
|
+
});
|
|
225
|
+
process.on('SIGINT', () => {
|
|
226
|
+
stop();
|
|
227
|
+
process.exit(0);
|
|
228
|
+
});
|
|
229
|
+
start();
|
|
230
|
+
}
|
|
231
|
+
main().catch((err) => {
|
|
232
|
+
console.error('Diff handler error:', err);
|
|
233
|
+
process.exit(1);
|
|
234
|
+
});
|
|
235
|
+
//# sourceMappingURL=diff-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-handler.js","sourceRoot":"","sources":["../../src/diff/diff-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diff Pane Manager
|
|
3
|
+
*
|
|
4
|
+
* Handles creating, updating, and closing the diff pane.
|
|
5
|
+
* Manages the diff handler process lifecycle.
|
|
6
|
+
* Also manages file diff header pane for viewing individual file diffs.
|
|
7
|
+
*/
|
|
8
|
+
import type { DiffViewMode } from '../types';
|
|
9
|
+
import type { DiffFileSummary } from './git-diff';
|
|
10
|
+
/**
|
|
11
|
+
* Create the diff pane to the right of the Claude pane
|
|
12
|
+
* Returns the new pane ID
|
|
13
|
+
*/
|
|
14
|
+
export declare function createDiffPane(sessionName: string, claudePaneId: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Start the diff handler process in a pane
|
|
17
|
+
* Note: We start without initial files - send RENDER command after handler starts
|
|
18
|
+
*/
|
|
19
|
+
export declare function startDiffHandler(diffPaneId: string, sidebarPaneId: string, sessionId: string, worktreePath: string, initialFiles?: DiffFileSummary[]): void;
|
|
20
|
+
/**
|
|
21
|
+
* Send updated file list to the diff handler
|
|
22
|
+
*/
|
|
23
|
+
export declare function updateDiffPane(diffPaneId: string, files: DiffFileSummary[]): void;
|
|
24
|
+
/**
|
|
25
|
+
* Close the diff pane
|
|
26
|
+
*/
|
|
27
|
+
export declare function closeDiffPane(diffPaneId: string): void;
|
|
28
|
+
/**
|
|
29
|
+
* Break the diff pane to background (for session switching or fullscreen)
|
|
30
|
+
*/
|
|
31
|
+
export declare function breakDiffPane(diffPaneId: string): void;
|
|
32
|
+
/**
|
|
33
|
+
* Join the diff pane back (after session switching or fullscreen)
|
|
34
|
+
*/
|
|
35
|
+
export declare function joinDiffPane(diffPaneId: string, claudePaneId: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* Create the file diff content pane (fills Claude pane's space)
|
|
38
|
+
* Returns the content pane ID
|
|
39
|
+
*/
|
|
40
|
+
export declare function createFileDiffContentPane(sessionName: string, sidebarPaneId: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Create the file diff header pane (1-row above content pane)
|
|
43
|
+
* Returns the header pane ID
|
|
44
|
+
*/
|
|
45
|
+
export declare function createFileDiffHeaderPane(sessionName: string, contentPaneId: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Start the file diff header handler in a pane
|
|
48
|
+
*/
|
|
49
|
+
export declare function startFileDiffHeaderHandler(headerPaneId: string, sidebarPaneId: string, filename: string, insertions: number, deletions: number, mode?: DiffViewMode): void;
|
|
50
|
+
/**
|
|
51
|
+
* Close the file diff header pane
|
|
52
|
+
*/
|
|
53
|
+
export declare function closeFileDiffHeaderPane(headerPaneId: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* Close the file diff content pane
|
|
56
|
+
*/
|
|
57
|
+
export declare function closeFileDiffContentPane(contentPaneId: string): void;
|
|
58
|
+
/**
|
|
59
|
+
* Start the file diff content handler in a pane
|
|
60
|
+
* This streams the full file with inline diffs and handles Esc to close
|
|
61
|
+
*/
|
|
62
|
+
export declare function startFileDiffContentHandler(contentPaneId: string, sidebarPaneId: string, repoPath: string, filename: string, mode?: DiffViewMode): void;
|
|
63
|
+
//# sourceMappingURL=diff-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-manager.d.ts","sourceRoot":"","sources":["../../src/diff/diff-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAW,YAAY,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAalD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAahF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,eAAe,EAAE,GAC/B,IAAI,CA6BN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,IAAI,CAIjF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAMtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAMtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAS3E;AAMD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAK5F;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CA8B3F;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,YAA2B,GAChC,IAAI,CAoBN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAMlE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAMpE;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,YAA2B,GAChC,IAAI,CAuBN"}
|