claude-code-plus-plus 0.3.0 → 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.
Files changed (66) hide show
  1. package/dist/constants.d.ts +6 -1
  2. package/dist/constants.d.ts.map +1 -1
  3. package/dist/constants.js +7 -2
  4. package/dist/constants.js.map +1 -1
  5. package/dist/diff/diff-handler.d.ts +15 -0
  6. package/dist/diff/diff-handler.d.ts.map +1 -0
  7. package/dist/diff/diff-handler.js +235 -0
  8. package/dist/diff/diff-handler.js.map +1 -0
  9. package/dist/diff/diff-manager.d.ts +63 -0
  10. package/dist/diff/diff-manager.d.ts.map +1 -0
  11. package/dist/diff/diff-manager.js +271 -0
  12. package/dist/diff/diff-manager.js.map +1 -0
  13. package/dist/diff/diff-pane-render.d.ts +34 -0
  14. package/dist/diff/diff-pane-render.d.ts.map +1 -0
  15. package/dist/diff/diff-pane-render.js +222 -0
  16. package/dist/diff/diff-pane-render.js.map +1 -0
  17. package/dist/diff/file-diff-content-handler.d.ts +16 -0
  18. package/dist/diff/file-diff-content-handler.d.ts.map +1 -0
  19. package/dist/diff/file-diff-content-handler.js +142 -0
  20. package/dist/diff/file-diff-content-handler.js.map +1 -0
  21. package/dist/diff/file-diff-header-handler.d.ts +16 -0
  22. package/dist/diff/file-diff-header-handler.d.ts.map +1 -0
  23. package/dist/diff/file-diff-header-handler.js +191 -0
  24. package/dist/diff/file-diff-header-handler.js.map +1 -0
  25. package/dist/diff/file-diff-header-render.d.ts +30 -0
  26. package/dist/diff/file-diff-header-render.d.ts.map +1 -0
  27. package/dist/diff/file-diff-header-render.js +101 -0
  28. package/dist/diff/file-diff-header-render.js.map +1 -0
  29. package/dist/diff/file-diff-render.d.ts +27 -0
  30. package/dist/diff/file-diff-render.d.ts.map +1 -0
  31. package/dist/diff/file-diff-render.js +211 -0
  32. package/dist/diff/file-diff-render.js.map +1 -0
  33. package/dist/diff/git-diff.d.ts +54 -0
  34. package/dist/diff/git-diff.d.ts.map +1 -0
  35. package/dist/diff/git-diff.js +599 -0
  36. package/dist/diff/git-diff.js.map +1 -0
  37. package/dist/diff/index.d.ts +8 -0
  38. package/dist/diff/index.d.ts.map +1 -0
  39. package/dist/diff/index.js +37 -0
  40. package/dist/diff/index.js.map +1 -0
  41. package/dist/sidebar/app.d.ts +69 -0
  42. package/dist/sidebar/app.d.ts.map +1 -1
  43. package/dist/sidebar/app.js +508 -10
  44. package/dist/sidebar/app.js.map +1 -1
  45. package/dist/sidebar/commands.d.ts +1 -0
  46. package/dist/sidebar/commands.d.ts.map +1 -1
  47. package/dist/sidebar/commands.js +11 -0
  48. package/dist/sidebar/commands.js.map +1 -1
  49. package/dist/sidebar/pane-orchestrator.d.ts.map +1 -1
  50. package/dist/sidebar/pane-orchestrator.js +10 -1
  51. package/dist/sidebar/pane-orchestrator.js.map +1 -1
  52. package/dist/sidebar/render.d.ts.map +1 -1
  53. package/dist/sidebar/render.js +2 -1
  54. package/dist/sidebar/render.js.map +1 -1
  55. package/dist/tmux/index.d.ts +1 -1
  56. package/dist/tmux/index.d.ts.map +1 -1
  57. package/dist/tmux/index.js +2 -1
  58. package/dist/tmux/index.js.map +1 -1
  59. package/dist/tmux/pane.d.ts +5 -0
  60. package/dist/tmux/pane.d.ts.map +1 -1
  61. package/dist/tmux/pane.js +10 -0
  62. package/dist/tmux/pane.js.map +1 -1
  63. package/dist/types.d.ts +10 -0
  64. package/dist/types.d.ts.map +1 -1
  65. package/dist/types.js.map +1 -1
  66. package/package.json +1 -1
@@ -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 = 9;
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
@@ -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,IAAI,CAAC;AAElC,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;;;;;;;CAOZ,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"}
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 = 9;
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
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
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,EAAE,CAAC;AAEnC,sCAAsC;AACzB,QAAA,eAAe,GAAG,EAAE,CAAC;AAElC,qCAAqC;AACxB,QAAA,eAAe,GAAG,EAAE,CAAC;AAElC,8DAA8D;AACjD,QAAA,iBAAiB,GAAG,CAAC,CAAC;AAEnC,0DAA0D;AAC7C,QAAA,qBAAqB,GAAG,CAAC,CAAC;AAEvC,wCAAwC;AAC3B,QAAA,aAAa,GAAG,CAAC,CAAC;AAE/B,wCAAwC;AAC3B,QAAA,gBAAgB,GAAG,CAAC,CAAC;AAElC,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E,uCAAuC;AAC1B,QAAA,kBAAkB,GAAG,uCAAuC,CAAC;AAE1E,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAElE,QAAA,OAAO,GAAG;IACrB,cAAc;IACd,SAAS,EAAE,UAAU;IACrB,YAAY,EAAE,qDAAqD;IAEnE,UAAU;IACV,mBAAmB,EAAE,gBAAgB;IAErC,eAAe;IACf,cAAc,EAAE,wBAAwB;IACxC,YAAY,EAAE,cAAc;IAC5B,mBAAmB,EAAE,KAAK;IAE1B,YAAY;IACZ,UAAU,EAAE,kBAAkB;IAC9B,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE,cAAc;IAE7B,SAAS;IACT,UAAU,EAAE,gBAAgB;IAC5B,YAAY,EAAE,gBAAgB;IAC9B,kBAAkB,EAAE,cAAc;IAClC,iBAAiB,EAAE,aAAa;IAChC,YAAY,EAAE,QAAQ;IACtB,WAAW,EAAE,OAAO;CACZ,CAAC;AAEX,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAElE,QAAA,SAAS,GAAG;IACvB,WAAW,EAAE,gBAAgB;IAC7B,YAAY,EAAE,iBAAiB;IAC/B,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,WAAW;IACnB,IAAI,EAAE,SAAS;CACP,CAAC;AAEX,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,iCAAiC;AACpB,QAAA,gBAAgB,GAAG,4BAA4B,CAAC;AAE7D,gDAAgD;AACnC,QAAA,oBAAoB,GAAG,0BAA0B,CAAC;AAE/D,0CAA0C;AAC7B,QAAA,yBAAyB,GAAG,uBAAuB,CAAC;AAEjE,sCAAsC;AACzB,QAAA,qBAAqB,GAAG,2BAA2B,CAAC;AAEjE,wDAAwD;AAC3C,QAAA,eAAe,GAAG,EAAE,CAAC"}
@@ -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"}