dmux 1.3.3 → 1.5.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 (38) hide show
  1. package/dist/AutoUpdater.d.ts +35 -0
  2. package/dist/AutoUpdater.d.ts.map +1 -0
  3. package/dist/AutoUpdater.js +225 -0
  4. package/dist/AutoUpdater.js.map +1 -0
  5. package/dist/BetterTextInput.d.ts +10 -0
  6. package/dist/BetterTextInput.d.ts.map +1 -0
  7. package/dist/BetterTextInput.js +177 -0
  8. package/dist/BetterTextInput.js.map +1 -0
  9. package/dist/CleanTextInput.d.ts +10 -0
  10. package/dist/CleanTextInput.d.ts.map +1 -0
  11. package/dist/CleanTextInput.js +572 -0
  12. package/dist/CleanTextInput.js.map +1 -0
  13. package/dist/DmuxApp.d.ts +2 -0
  14. package/dist/DmuxApp.d.ts.map +1 -1
  15. package/dist/DmuxApp.js +330 -165
  16. package/dist/DmuxApp.js.map +1 -1
  17. package/dist/EnhancedTextInput.d.ts.map +1 -1
  18. package/dist/EnhancedTextInput.js +155 -50
  19. package/dist/EnhancedTextInput.js.map +1 -1
  20. package/dist/GeminiTextInput.d.ts +12 -0
  21. package/dist/GeminiTextInput.d.ts.map +1 -0
  22. package/dist/GeminiTextInput.js +210 -0
  23. package/dist/GeminiTextInput.js.map +1 -0
  24. package/dist/MultilineTextInput.d.ts +10 -0
  25. package/dist/MultilineTextInput.d.ts.map +1 -0
  26. package/dist/MultilineTextInput.js +184 -0
  27. package/dist/MultilineTextInput.js.map +1 -0
  28. package/dist/SimpleGeminiInput.d.ts +12 -0
  29. package/dist/SimpleGeminiInput.d.ts.map +1 -0
  30. package/dist/SimpleGeminiInput.js +223 -0
  31. package/dist/SimpleGeminiInput.js.map +1 -0
  32. package/dist/StyledTextInput.d.ts +10 -0
  33. package/dist/StyledTextInput.d.ts.map +1 -0
  34. package/dist/StyledTextInput.js +10 -0
  35. package/dist/StyledTextInput.js.map +1 -0
  36. package/dist/index.js +48 -3
  37. package/dist/index.js.map +1 -1
  38. package/package.json +1 -1
@@ -0,0 +1,223 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import { Box, Text, useInput, useFocus } from 'ink';
3
+ const SimpleGeminiInput = ({ value, onChange, onSubmit, onCancel, multiline = false, placeholder = '' }) => {
4
+ const { isFocused } = useFocus({ autoFocus: true });
5
+ const [cursorOffset, setCursorOffset] = useState(0);
6
+ // Keep cursor in bounds when value changes
7
+ useEffect(() => {
8
+ if (cursorOffset > value.length) {
9
+ setCursorOffset(value.length);
10
+ }
11
+ }, [value, cursorOffset]);
12
+ useInput((input, key) => {
13
+ if (!isFocused)
14
+ return;
15
+ // Handle special keys
16
+ if (key.escape) {
17
+ onCancel?.();
18
+ return;
19
+ }
20
+ if (key.return && !multiline) {
21
+ onSubmit?.();
22
+ return;
23
+ }
24
+ if (key.return && multiline && !key.shift) {
25
+ // Add newline in multiline mode
26
+ const before = value.slice(0, cursorOffset);
27
+ const after = value.slice(cursorOffset);
28
+ onChange(before + '\n' + after);
29
+ setCursorOffset(cursorOffset + 1);
30
+ return;
31
+ }
32
+ if (key.return && multiline && key.shift) {
33
+ // Shift+Enter submits in multiline mode
34
+ onSubmit?.();
35
+ return;
36
+ }
37
+ // Handle backspace - delete character BEFORE cursor
38
+ if (key.backspace) {
39
+ if (cursorOffset > 0) {
40
+ const before = value.slice(0, cursorOffset - 1);
41
+ const after = value.slice(cursorOffset);
42
+ onChange(before + after);
43
+ setCursorOffset(cursorOffset - 1);
44
+ }
45
+ return;
46
+ }
47
+ // Handle delete - delete character AT cursor
48
+ if (key.delete) {
49
+ if (cursorOffset < value.length) {
50
+ const before = value.slice(0, cursorOffset);
51
+ const after = value.slice(cursorOffset + 1);
52
+ onChange(before + after);
53
+ // Cursor stays in same position
54
+ }
55
+ return;
56
+ }
57
+ // Handle arrow keys
58
+ if (key.leftArrow) {
59
+ if (cursorOffset > 0) {
60
+ setCursorOffset(cursorOffset - 1);
61
+ }
62
+ return;
63
+ }
64
+ if (key.rightArrow) {
65
+ if (cursorOffset < value.length) {
66
+ setCursorOffset(cursorOffset + 1);
67
+ }
68
+ return;
69
+ }
70
+ // Handle up/down for multiline
71
+ if (multiline) {
72
+ const lines = value.split('\n');
73
+ let currentPos = 0;
74
+ let currentLine = 0;
75
+ let colInLine = 0;
76
+ // Find current line and column
77
+ for (let i = 0; i < lines.length; i++) {
78
+ const lineLength = lines[i].length;
79
+ if (currentPos + lineLength >= cursorOffset) {
80
+ currentLine = i;
81
+ colInLine = cursorOffset - currentPos;
82
+ break;
83
+ }
84
+ currentPos += lineLength + 1; // +1 for newline
85
+ }
86
+ if (key.upArrow) {
87
+ if (currentLine > 0) {
88
+ // Move to previous line, same column or end of line
89
+ const prevLine = lines[currentLine - 1];
90
+ const newCol = Math.min(colInLine, prevLine.length);
91
+ let newOffset = 0;
92
+ for (let i = 0; i < currentLine - 1; i++) {
93
+ newOffset += lines[i].length + 1;
94
+ }
95
+ newOffset += newCol;
96
+ setCursorOffset(newOffset);
97
+ }
98
+ else {
99
+ // Already at first line, move to start
100
+ setCursorOffset(0);
101
+ }
102
+ return;
103
+ }
104
+ if (key.downArrow) {
105
+ if (currentLine < lines.length - 1) {
106
+ // Move to next line, same column or end of line
107
+ const nextLine = lines[currentLine + 1];
108
+ const newCol = Math.min(colInLine, nextLine.length);
109
+ let newOffset = 0;
110
+ for (let i = 0; i <= currentLine; i++) {
111
+ newOffset += lines[i].length + 1;
112
+ }
113
+ newOffset += newCol;
114
+ setCursorOffset(newOffset);
115
+ }
116
+ else {
117
+ // Already at last line, move to end
118
+ setCursorOffset(value.length);
119
+ }
120
+ return;
121
+ }
122
+ }
123
+ // Handle Home/End
124
+ if (key.ctrl && input === 'a') {
125
+ if (multiline) {
126
+ // Move to start of current line
127
+ const beforeCursor = value.slice(0, cursorOffset);
128
+ const lastNewline = beforeCursor.lastIndexOf('\n');
129
+ setCursorOffset(lastNewline === -1 ? 0 : lastNewline + 1);
130
+ }
131
+ else {
132
+ setCursorOffset(0);
133
+ }
134
+ return;
135
+ }
136
+ if (key.ctrl && input === 'e') {
137
+ if (multiline) {
138
+ // Move to end of current line
139
+ const afterCursor = value.slice(cursorOffset);
140
+ const nextNewline = afterCursor.indexOf('\n');
141
+ if (nextNewline === -1) {
142
+ setCursorOffset(value.length);
143
+ }
144
+ else {
145
+ setCursorOffset(cursorOffset + nextNewline);
146
+ }
147
+ }
148
+ else {
149
+ setCursorOffset(value.length);
150
+ }
151
+ return;
152
+ }
153
+ // Handle regular text input
154
+ if (input && !key.ctrl && !key.meta) {
155
+ const before = value.slice(0, cursorOffset);
156
+ const after = value.slice(cursorOffset);
157
+ onChange(before + input + after);
158
+ setCursorOffset(cursorOffset + input.length);
159
+ }
160
+ });
161
+ // Render the display with cursor
162
+ const renderDisplay = () => {
163
+ // Show placeholder when empty
164
+ if (value === '' && placeholder) {
165
+ return (React.createElement(React.Fragment, null,
166
+ React.createElement(Text, { dimColor: true }, placeholder),
167
+ React.createElement(Text, { inverse: true }, ' ')));
168
+ }
169
+ // For multiline, split and render each line
170
+ if (multiline) {
171
+ const lines = value.split('\n');
172
+ let currentPos = 0;
173
+ const elements = [];
174
+ for (let i = 0; i < lines.length; i++) {
175
+ const line = lines[i];
176
+ const lineStart = currentPos;
177
+ const lineEnd = currentPos + line.length;
178
+ if (i > 0) {
179
+ elements.push(React.createElement(Text, { key: `indent-${i}` }, ' '));
180
+ }
181
+ if (cursorOffset >= lineStart && cursorOffset <= lineEnd) {
182
+ // This line contains the cursor
183
+ const posInLine = cursorOffset - lineStart;
184
+ const before = line.slice(0, posInLine);
185
+ const cursorChar = line[posInLine] || ' ';
186
+ const after = line.slice(posInLine + 1);
187
+ elements.push(React.createElement(React.Fragment, { key: `line-${i}` },
188
+ React.createElement(Text, null, before),
189
+ React.createElement(Text, { inverse: true }, cursorChar),
190
+ React.createElement(Text, null, after)));
191
+ }
192
+ else {
193
+ // Normal line without cursor
194
+ elements.push(React.createElement(Text, { key: `line-${i}` }, line || ' '));
195
+ }
196
+ // Add newline representation except for last line
197
+ if (i < lines.length - 1) {
198
+ elements.push(React.createElement(Text, { key: `newline-${i}` }, '\n'));
199
+ }
200
+ currentPos = lineEnd + 1; // +1 for newline
201
+ }
202
+ // Handle cursor at very end after a newline
203
+ if (cursorOffset === value.length && value.endsWith('\n')) {
204
+ elements.push(React.createElement(Text, { key: "indent-end" }, ' '));
205
+ elements.push(React.createElement(Text, { key: "cursor-end", inverse: true }, ' '));
206
+ }
207
+ return React.createElement(React.Fragment, null, elements);
208
+ }
209
+ // Single line rendering
210
+ const before = value.slice(0, cursorOffset);
211
+ const cursorChar = value[cursorOffset] || ' ';
212
+ const after = value.slice(cursorOffset + 1);
213
+ return (React.createElement(React.Fragment, null,
214
+ React.createElement(Text, null, before),
215
+ React.createElement(Text, { inverse: true }, cursorChar),
216
+ React.createElement(Text, null, after)));
217
+ };
218
+ return (React.createElement(Box, null,
219
+ React.createElement(Text, null, '> '),
220
+ renderDisplay()));
221
+ };
222
+ export default SimpleGeminiInput;
223
+ //# sourceMappingURL=SimpleGeminiInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleGeminiInput.js","sourceRoot":"","sources":["../src/SimpleGeminiInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface StyledTextInputProps {
3
+ value: string;
4
+ onChange: (value: string) => void;
5
+ onSubmit?: () => void;
6
+ placeholder?: string;
7
+ }
8
+ declare const StyledTextInput: React.FC<StyledTextInputProps>;
9
+ export default StyledTextInput;
10
+ //# sourceMappingURL=StyledTextInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StyledTextInput.d.ts","sourceRoot":"","sources":["../src/StyledTextInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAkBnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import TextInput from 'ink-text-input';
4
+ const StyledTextInput = ({ value, onChange, onSubmit, placeholder = 'Type your message...' }) => {
5
+ return (React.createElement(Box, null,
6
+ React.createElement(Text, null, '> '),
7
+ React.createElement(TextInput, { value: value, onChange: onChange, onSubmit: onSubmit, placeholder: placeholder, showCursor: true })));
8
+ };
9
+ export default StyledTextInput;
10
+ //# sourceMappingURL=StyledTextInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StyledTextInput.js","sourceRoot":"","sources":["../src/StyledTextInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,SAAS,MAAM,gBAAgB,CAAC;AASvC,MAAM,eAAe,GAAmC,CAAC,EACvD,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,WAAW,GAAG,sBAAsB,EACrC,EAAE,EAAE;IACH,OAAO,CACL,oBAAC,GAAG;QACF,oBAAC,IAAI,QAAE,IAAI,CAAQ;QACnB,oBAAC,SAAS,IACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,IAAI,GAChB,CACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -7,6 +7,7 @@ import { render } from 'ink';
7
7
  import React from 'react';
8
8
  import { createHash } from 'crypto';
9
9
  import DmuxApp from './DmuxApp.js';
10
+ import { AutoUpdater } from './AutoUpdater.js';
10
11
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
11
12
  class Dmux {
12
13
  dmuxDir;
@@ -15,9 +16,11 @@ class Dmux {
15
16
  projectName;
16
17
  sessionName;
17
18
  projectRoot;
19
+ autoUpdater;
20
+ static cachedProjectRoot = null;
18
21
  constructor() {
19
22
  this.dmuxDir = path.join(process.env.HOME, '.dmux');
20
- // Get git root directory to determine project scope
23
+ // Get git root directory to determine project scope (cached)
21
24
  this.projectRoot = this.getProjectRoot();
22
25
  // Get project name from git root directory
23
26
  this.projectName = path.basename(this.projectRoot);
@@ -33,12 +36,16 @@ class Dmux {
33
36
  this.panesFile = path.join(this.dmuxDir, `${projectIdentifier}-panes.json`);
34
37
  // Store project settings (test/dev commands) per project
35
38
  this.settingsFile = path.join(this.dmuxDir, `${projectIdentifier}-settings.json`);
39
+ // Initialize auto-updater
40
+ this.autoUpdater = new AutoUpdater(this.dmuxDir);
36
41
  }
37
42
  async init() {
38
43
  await fs.mkdir(this.dmuxDir, { recursive: true });
39
44
  if (!await this.fileExists(this.panesFile)) {
40
45
  await fs.writeFile(this.panesFile, '[]');
41
46
  }
47
+ // Check for updates in background if needed
48
+ this.checkForUpdatesBackground();
42
49
  const inTmux = process.env.TMUX !== undefined;
43
50
  if (!inTmux) {
44
51
  // Check if project-specific session already exists
@@ -81,7 +88,8 @@ class Dmux {
81
88
  settingsFile: this.settingsFile,
82
89
  projectName: this.projectName,
83
90
  sessionName: this.sessionName,
84
- projectRoot: this.projectRoot
91
+ projectRoot: this.projectRoot,
92
+ autoUpdater: this.autoUpdater
85
93
  }));
86
94
  }
87
95
  async fileExists(path) {
@@ -94,19 +102,56 @@ class Dmux {
94
102
  }
95
103
  }
96
104
  getProjectRoot() {
105
+ // Return cached value if available
106
+ if (Dmux.cachedProjectRoot) {
107
+ return Dmux.cachedProjectRoot;
108
+ }
97
109
  try {
98
110
  // Try to get git root directory
99
111
  const gitRoot = execSync('git rev-parse --show-toplevel', {
100
112
  encoding: 'utf-8',
101
113
  stdio: 'pipe'
102
114
  }).trim();
115
+ Dmux.cachedProjectRoot = gitRoot;
103
116
  return gitRoot;
104
117
  }
105
118
  catch {
106
119
  // Fallback to current directory if not in a git repo
107
- return process.cwd();
120
+ const cwd = process.cwd();
121
+ Dmux.cachedProjectRoot = cwd;
122
+ return cwd;
108
123
  }
109
124
  }
125
+ checkForUpdatesBackground() {
126
+ // Run update check in background without blocking startup
127
+ setImmediate(async () => {
128
+ try {
129
+ const shouldCheck = await this.autoUpdater.shouldCheckForUpdates();
130
+ if (shouldCheck) {
131
+ // Check for updates asynchronously
132
+ this.autoUpdater.checkForUpdates().catch(() => {
133
+ // Silently ignore update check failures
134
+ });
135
+ }
136
+ }
137
+ catch {
138
+ // Silently ignore errors in background update check
139
+ }
140
+ });
141
+ }
142
+ async getUpdateInfo() {
143
+ return await this.autoUpdater.checkForUpdates();
144
+ }
145
+ async performUpdate() {
146
+ const updateInfo = await this.autoUpdater.checkForUpdates();
147
+ return await this.autoUpdater.performUpdate(updateInfo);
148
+ }
149
+ async skipUpdate(version) {
150
+ return await this.autoUpdater.skipVersion(version);
151
+ }
152
+ getAutoUpdater() {
153
+ return this.autoUpdater;
154
+ }
110
155
  }
111
156
  const dmux = new Dmux();
112
157
  dmux.init().catch(() => process.exit(1));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dmux",
3
- "version": "1.3.3",
3
+ "version": "1.5.0",
4
4
  "description": "Tmux pane manager with AI agent integration for parallel development workflows",
5
5
  "type": "module",
6
6
  "author": "Justin Schroeder",