dmux 3.5.3 → 4.0.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 (77) hide show
  1. package/dist/DmuxApp.d.ts.map +1 -1
  2. package/dist/DmuxApp.js +69 -4
  3. package/dist/DmuxApp.js.map +1 -1
  4. package/dist/components/dialogs/TmuxHooksPromptDialog.d.ts +13 -0
  5. package/dist/components/dialogs/TmuxHooksPromptDialog.d.ts.map +1 -0
  6. package/dist/components/dialogs/TmuxHooksPromptDialog.js +36 -0
  7. package/dist/components/dialogs/TmuxHooksPromptDialog.js.map +1 -0
  8. package/dist/components/panes/PaneCard.d.ts.map +1 -1
  9. package/dist/components/panes/PaneCard.js +18 -3
  10. package/dist/components/panes/PaneCard.js.map +1 -1
  11. package/dist/components/panes/PanesGrid.d.ts.map +1 -1
  12. package/dist/components/panes/PanesGrid.js +3 -3
  13. package/dist/components/panes/PanesGrid.js.map +1 -1
  14. package/dist/components/ui/FooterHelp.d.ts.map +1 -1
  15. package/dist/components/ui/FooterHelp.js +3 -3
  16. package/dist/components/ui/FooterHelp.js.map +1 -1
  17. package/dist/hooks/usePanes.d.ts +10 -1
  18. package/dist/hooks/usePanes.d.ts.map +1 -1
  19. package/dist/hooks/usePanes.js +73 -13
  20. package/dist/hooks/usePanes.js.map +1 -1
  21. package/dist/index.js +22 -19
  22. package/dist/index.js.map +1 -1
  23. package/dist/server/embedded-assets.d.ts.map +1 -1
  24. package/dist/server/embedded-assets.js +93 -25
  25. package/dist/server/embedded-assets.js.map +1 -1
  26. package/dist/services/LogService.d.ts +7 -2
  27. package/dist/services/LogService.d.ts.map +1 -1
  28. package/dist/services/LogService.js +96 -17
  29. package/dist/services/LogService.js.map +1 -1
  30. package/dist/services/PaneAnalyzer.d.ts +35 -1
  31. package/dist/services/PaneAnalyzer.d.ts.map +1 -1
  32. package/dist/services/PaneAnalyzer.js +167 -65
  33. package/dist/services/PaneAnalyzer.js.map +1 -1
  34. package/dist/services/PaneEventService.d.ts +101 -0
  35. package/dist/services/PaneEventService.d.ts.map +1 -0
  36. package/dist/services/PaneEventService.js +246 -0
  37. package/dist/services/PaneEventService.js.map +1 -0
  38. package/dist/services/PopupManager.d.ts.map +1 -1
  39. package/dist/services/PopupManager.js +5 -4
  40. package/dist/services/PopupManager.js.map +1 -1
  41. package/dist/services/TmuxHookManager.d.ts +76 -0
  42. package/dist/services/TmuxHookManager.d.ts.map +1 -0
  43. package/dist/services/TmuxHookManager.js +229 -0
  44. package/dist/services/TmuxHookManager.js.map +1 -0
  45. package/dist/services/TmuxService.d.ts +33 -0
  46. package/dist/services/TmuxService.d.ts.map +1 -1
  47. package/dist/services/TmuxService.js +68 -0
  48. package/dist/services/TmuxService.js.map +1 -1
  49. package/dist/types.d.ts +1 -0
  50. package/dist/types.d.ts.map +1 -1
  51. package/dist/utils/execAsync.d.ts +78 -0
  52. package/dist/utils/execAsync.d.ts.map +1 -0
  53. package/dist/utils/execAsync.js +141 -0
  54. package/dist/utils/execAsync.js.map +1 -0
  55. package/dist/utils/generated-agents-doc.d.ts +1 -1
  56. package/dist/utils/generated-agents-doc.js +1 -1
  57. package/dist/utils/git.d.ts +27 -0
  58. package/dist/utils/git.d.ts.map +1 -1
  59. package/dist/utils/git.js +150 -0
  60. package/dist/utils/git.js.map +1 -1
  61. package/dist/utils/hooksDocs.d.ts +1 -1
  62. package/dist/utils/paneCapture.d.ts +11 -0
  63. package/dist/utils/paneCapture.d.ts.map +1 -1
  64. package/dist/utils/paneCapture.js +69 -0
  65. package/dist/utils/paneCapture.js.map +1 -1
  66. package/dist/utils/settingsManager.d.ts.map +1 -1
  67. package/dist/utils/settingsManager.js +6 -0
  68. package/dist/utils/settingsManager.js.map +1 -1
  69. package/dist/utils/shellPaneDetection.d.ts +1 -1
  70. package/dist/utils/shellPaneDetection.d.ts.map +1 -1
  71. package/dist/utils/shellPaneDetection.js +14 -21
  72. package/dist/utils/shellPaneDetection.js.map +1 -1
  73. package/dist/workers/panePollingWorker.d.ts +13 -0
  74. package/dist/workers/panePollingWorker.d.ts.map +1 -0
  75. package/dist/workers/panePollingWorker.js +129 -0
  76. package/dist/workers/panePollingWorker.js.map +1 -0
  77. package/package.json +1 -1
@@ -1,9 +1,78 @@
1
1
  import { execSync } from 'child_process';
2
+ import { execAsync } from './execAsync.js';
3
+ /**
4
+ * Helper to trim trailing blank lines from captured content
5
+ */
6
+ function trimTrailingBlanks(content) {
7
+ if (!content) {
8
+ return { trimmed: '', contentLineCount: 0 };
9
+ }
10
+ const allLines = content.split('\n');
11
+ let trailingBlankCount = 0;
12
+ // Count blank lines from the end
13
+ for (let i = allLines.length - 1; i >= 0; i--) {
14
+ if (allLines[i].trim() === '') {
15
+ trailingBlankCount++;
16
+ }
17
+ else {
18
+ break;
19
+ }
20
+ }
21
+ const contentLineCount = allLines.length - trailingBlankCount;
22
+ const trimmed = allLines.slice(0, -trailingBlankCount || allLines.length).join('\n');
23
+ return { trimmed, contentLineCount };
24
+ }
25
+ /**
26
+ * Captures the last N lines from a tmux pane asynchronously (non-blocking)
27
+ * Automatically skips trailing blank lines.
28
+ *
29
+ * @param paneId - The tmux pane ID to capture from
30
+ * @param lines - Number of non-blank lines to capture (default: 50)
31
+ * @param maxAttempts - Maximum number of fetch attempts to find content (default: 5)
32
+ * @returns The captured content with trailing blank lines removed, or empty string on failure
33
+ */
34
+ export async function capturePaneContentAsync(paneId, lines = 50, maxAttempts = 5) {
35
+ try {
36
+ let currentLines = lines;
37
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
38
+ const content = await execAsync(`tmux capture-pane -t '${paneId}' -p -S -${currentLines}`, { silent: true, timeout: 5000 });
39
+ if (!content) {
40
+ return '';
41
+ }
42
+ const { trimmed, contentLineCount } = trimTrailingBlanks(content);
43
+ // If we have enough actual content lines, return trimmed content
44
+ if (contentLineCount >= lines) {
45
+ return trimmed;
46
+ }
47
+ // If we have some content but not enough, fetch more
48
+ if (contentLineCount > 0 && contentLineCount < lines) {
49
+ currentLines = currentLines + (lines - contentLineCount) + 20;
50
+ }
51
+ else if (contentLineCount === 0) {
52
+ // All blank lines - try larger window on first attempt
53
+ if (attempt === 0) {
54
+ currentLines = 200;
55
+ }
56
+ else {
57
+ return '';
58
+ }
59
+ }
60
+ }
61
+ // After max attempts, return whatever we have
62
+ const finalContent = await execAsync(`tmux capture-pane -t '${paneId}' -p -S -${currentLines}`, { silent: true, timeout: 5000 });
63
+ const { trimmed } = trimTrailingBlanks(finalContent);
64
+ return trimmed;
65
+ }
66
+ catch {
67
+ return '';
68
+ }
69
+ }
2
70
  /**
3
71
  * Captures the last N lines from a tmux pane, automatically skipping trailing blank lines.
4
72
  * If the captured content ends with blank lines, it will fetch more lines to ensure
5
73
  * we get actual content.
6
74
  *
75
+ * @deprecated Use capturePaneContentAsync for non-blocking operation
7
76
  * @param paneId - The tmux pane ID to capture from
8
77
  * @param lines - Number of non-blank lines to capture (default: 50)
9
78
  * @param maxAttempts - Maximum number of fetch attempts to find content (default: 5)
@@ -1 +1 @@
1
- {"version":3,"file":"paneCapture.js","sourceRoot":"","sources":["../../src/utils/paneCapture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paneCapture.js","sourceRoot":"","sources":["../../src/utils/paneCapture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,SAAS,kBAAkB,CAAC,OAAe;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAE3B,iCAAiC;IACjC,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC9B,kBAAkB,EAAE,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,GAAG,kBAAkB,CAAC;IAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,kBAAkB,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAErF,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AACvC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAc,EACd,QAAgB,EAAE,EAClB,cAAsB,CAAC;IAEvB,IAAI,CAAC;QACH,IAAI,YAAY,GAAG,KAAK,CAAC;QAEzB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACvD,MAAM,OAAO,GAAG,MAAM,SAAS,CAC7B,yBAAyB,MAAM,YAAY,YAAY,EAAE,EACzD,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAChC,CAAC;YAEF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAElE,iEAAiE;YACjE,IAAI,gBAAgB,IAAI,KAAK,EAAE,CAAC;gBAC9B,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,qDAAqD;YACrD,IAAI,gBAAgB,GAAG,CAAC,IAAI,gBAAgB,GAAG,KAAK,EAAE,CAAC;gBACrD,YAAY,GAAG,YAAY,GAAG,CAAC,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC;YAChE,CAAC;iBAAM,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;gBAClC,uDAAuD;gBACvD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;oBAClB,YAAY,GAAG,GAAG,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,MAAM,YAAY,GAAG,MAAM,SAAS,CAClC,yBAAyB,MAAM,YAAY,YAAY,EAAE,EACzD,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAChC,CAAC;QAEF,MAAM,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,QAAgB,EAAE,EAClB,cAAsB,CAAC;IAEvB,IAAI,CAAC;QACH,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,OAAO,GAAG,WAAW,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;YAEV,yCAAyC;YACzC,kEAAkE;YAClE,MAAM,OAAO,GAAG,QAAQ,CACtB,yBAAyB,MAAM,YAAY,YAAY,EAAE,EACzD,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CACpC,CAAC;YAEF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,kDAAkD;YAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,kBAAkB,GAAG,CAAC,CAAC;YAE3B,iCAAiC;YACjC,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAC9B,kBAAkB,EAAE,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,MAAM;gBACR,CAAC;YACH,CAAC;YAED,6CAA6C;YAC7C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,GAAG,kBAAkB,CAAC;YAE9D,iEAAiE;YACjE,IAAI,gBAAgB,IAAI,KAAK,EAAE,CAAC;gBAC9B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,kBAAkB,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9E,CAAC;YAED,wEAAwE;YACxE,IAAI,gBAAgB,GAAG,CAAC,IAAI,gBAAgB,GAAG,KAAK,EAAE,CAAC;gBACrD,oDAAoD;gBACpD,8DAA8D;gBAC9D,YAAY,GAAG,YAAY,GAAG,kBAAkB,GAAG,EAAE,CAAC;YACxD,CAAC;iBAAM,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;gBAClC,qDAAqD;gBACrD,0CAA0C;gBAC1C,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;oBAClB,YAAY,GAAG,GAAG,CAAC,CAAC,sBAAsB;gBAC5C,CAAC;qBAAM,CAAC;oBACN,0CAA0C;oBAC1C,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,MAAM,YAAY,GAAG,QAAQ,CAC3B,yBAAyB,MAAM,YAAY,YAAY,EAAE,EACzD,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CACpC,CAAC;QAEF,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,uBAAuB,GAAG,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAChC,uBAAuB,EAAE,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,uBAAuB,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iCAAiC;QACjC,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,QAAgB,EAAE;IACtE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CACtB,yBAAyB,MAAM,YAAY,KAAK,EAAE,EAClD,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CACpC,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"settingsManager.d.ts","sourceRoot":"","sources":["../../src/utils/settingsManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIlF,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,EAwBlD,CAAC;AAEF,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,eAAe,CAAoB;gBAE/B,WAAW,CAAC,EAAE,MAAM;IAMhC,OAAO,CAAC,YAAY;IAsBpB;;OAEG;IACH,WAAW,IAAI,YAAY;IAO3B;;OAEG;IACH,UAAU,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAKjE;;OAEG;IACH,iBAAiB,IAAI,YAAY;IAIjC;;OAEG;IACH,kBAAkB,IAAI,YAAY;IAIlC;;OAEG;IACH,aAAa,CAAC,CAAC,SAAS,MAAM,YAAY,EACxC,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,KAAK,EAAE,aAAa,GACnB,IAAI;IAUP;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAU3E;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,YAAY,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAUlE,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,YAAY,GAAG,OAAO;IAInD;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,YAAY,GAAG,aAAa,GAAG,IAAI;CAKjE"}
1
+ {"version":3,"file":"settingsManager.d.ts","sourceRoot":"","sources":["../../src/utils/settingsManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIlF,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,EA8BlD,CAAC;AAEF,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,eAAe,CAAoB;gBAE/B,WAAW,CAAC,EAAE,MAAM;IAMhC,OAAO,CAAC,YAAY;IAsBpB;;OAEG;IACH,WAAW,IAAI,YAAY;IAO3B;;OAEG;IACH,UAAU,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAKjE;;OAEG;IACH,iBAAiB,IAAI,YAAY;IAIjC;;OAEG;IACH,kBAAkB,IAAI,YAAY;IAIlC;;OAEG;IACH,aAAa,CAAC,CAAC,SAAS,MAAM,YAAY,EACxC,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,KAAK,EAAE,aAAa,GACnB,IAAI;IAUP;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAU3E;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,YAAY,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAUlE,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,YAAY,GAAG,OAAO;IAInD;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,YAAY,GAAG,aAAa,GAAG,IAAI;CAKjE"}
@@ -20,6 +20,12 @@ export const SETTING_DEFINITIONS = [
20
20
  { value: 'opencode', label: 'OpenCode' },
21
21
  ],
22
22
  },
23
+ {
24
+ key: 'useTmuxHooks',
25
+ label: 'Use Tmux Hooks',
26
+ description: 'Use tmux hooks for event-driven updates (lower CPU). If disabled, uses polling in a worker thread.',
27
+ type: 'boolean',
28
+ },
23
29
  {
24
30
  key: 'hooks',
25
31
  label: 'Manage Hooks',
@@ -1 +1 @@
1
- {"version":3,"file":"settingsManager.js","sourceRoot":"","sources":["../../src/utils/settingsManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settingsManager.js","sourceRoot":"","sources":["../../src/utils/settingsManager.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@ export declare function getUntrackedPanes(sessionName: string, trackedPaneIds: s
31
31
  * Creates a DmuxPane object for a shell pane
32
32
  * @param paneId The tmux pane ID
33
33
  * @param nextId The next available dmux ID number
34
- * @param existingTitle Optional existing title to preserve
34
+ * @param existingTitle Optional existing title (used for display but not for tracking)
35
35
  * @returns DmuxPane object for the shell pane
36
36
  */
37
37
  export declare function createShellPane(paneId: string, nextId: number, existingTitle?: string): Promise<DmuxPane>;
@@ -1 +1 @@
1
- {"version":3,"file":"shellPaneDetection.d.ts","sourceRoot":"","sources":["../../src/utils/shellPaneDetection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI5C;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6DrE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EAAE,EACxB,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAqD9B;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiC/G;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,GAAG,MAAM,CAc/D"}
1
+ {"version":3,"file":"shellPaneDetection.d.ts","sourceRoot":"","sources":["../../src/utils/shellPaneDetection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI5C;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6DrE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EAAE,EACxB,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAqD9B;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CA4B/G;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,GAAG,MAAM,CAc/D"}
@@ -117,33 +117,26 @@ export async function getUntrackedPanes(sessionName, trackedPaneIds, controlPane
117
117
  * Creates a DmuxPane object for a shell pane
118
118
  * @param paneId The tmux pane ID
119
119
  * @param nextId The next available dmux ID number
120
- * @param existingTitle Optional existing title to preserve
120
+ * @param existingTitle Optional existing title (used for display but not for tracking)
121
121
  * @returns DmuxPane object for the shell pane
122
122
  */
123
123
  export async function createShellPane(paneId, nextId, existingTitle) {
124
124
  const tmuxService = TmuxService.getInstance();
125
125
  const shellType = await detectShellType(paneId);
126
- // Use existing title if available and it's not a dmux internal title
127
- // Otherwise generate shell-N naming
128
- let slug;
129
- if (existingTitle &&
130
- existingTitle !== 'dmux-spacer' &&
131
- !existingTitle.startsWith('dmux v') &&
132
- existingTitle !== 'Welcome') {
133
- slug = existingTitle;
126
+ // CRITICAL: Always generate unique shell-N slugs for shell panes.
127
+ // Using existing titles (like hostname "Gigablaster.local") causes tracking bugs
128
+ // because multiple panes can have the same title, and titleToId Map can only
129
+ // store one mapping per title. This leads to duplicate pane entries.
130
+ const slug = `shell-${nextId}`;
131
+ // Always set the title to ensure unique titles for proper rebinding
132
+ try {
133
+ await tmuxService.setPaneTitle(paneId, slug);
134
134
  }
135
- else {
136
- slug = `shell-${nextId}`;
137
- // Only set the title if we're generating a new one
138
- try {
139
- await tmuxService.setPaneTitle(paneId, slug);
140
- }
141
- catch (error) {
142
- // LogService.getInstance().debug(
143
- // `Failed to set title for shell pane ${paneId}`,
144
- // 'shellDetection'
145
- // );
146
- }
135
+ catch (error) {
136
+ // LogService.getInstance().debug(
137
+ // `Failed to set title for shell pane ${paneId}`,
138
+ // 'shellDetection'
139
+ // );
147
140
  }
148
141
  return {
149
142
  id: `dmux-${nextId}`,
@@ -1 +1 @@
1
- {"version":3,"file":"shellPaneDetection.js","sourceRoot":"","sources":["../../src/utils/shellPaneDetection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shellPaneDetection.js","sourceRoot":"","sources":["../../src/utils/shellPaneDetection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc;IAClD,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,CAAC;QACH,sCAAsC;QACtC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,QAAQ,CACtB,4BAA4B,MAAM,gCAAgC,EAClE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CACrC,CAAC,IAAI,EAAE,CAAC;QAET,gBAAgB;QAChB,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAExE,8BAA8B;QAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,IAAI,YAAY,KAAK,KAAK,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;gBACjE,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,6DAA6D;QAC7D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,QAAQ,CAClB,4BAA4B,MAAM,oBAAoB,EACtD,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CACrC,CAAC,IAAI,EAAE,CAAC;YAET,qBAAqB;YACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,kBAAkB,GAAG,EAAE,EAAE;gBAC7C,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,MAAM;aACd,CAAC,CAAC,IAAI,EAAE,CAAC;YAEV,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,aAAa,GAAG,QAAQ,CAAC,kBAAkB,IAAI,EAAE,EAAE;oBACvD,QAAQ,EAAE,OAAO;oBACjB,KAAK,EAAE,MAAM;iBACd,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEV,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;gBAChD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;oBAChC,IAAI,WAAW,KAAK,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;wBAC/D,OAAO,KAAK,CAAC;oBACf,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,6CAA6C;QAC/C,CAAC;QAED,8BAA8B;QAC9B,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACjB,sCAAsC;QACtC,0DAA0D;QAC1D,yBAAyB;QACzB,SAAS;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAWD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAmB,EACnB,cAAwB,EACxB,aAAsB,EACtB,aAAsB;IAEtB,IAAI,CAAC;QACH,2EAA2E;QAC3E,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,QAAQ,CACrB,4EAA4E,EAC5E,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CACrC,CAAC,IAAI,EAAE,CAAC;QAET,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,cAAc,GAAwB,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAElD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAEjD,8CAA8C;YAC9C,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;gBAC5B,SAAS;YACX,CAAC;YACD,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxC,SAAS;YACX,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YAED,wEAAwE;YACxE,IAAI,aAAa,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;gBAC9C,SAAS;YACX,CAAC;YACD,IAAI,aAAa,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;gBAC9C,SAAS;YACX,CAAC;YAED,uEAAuE;YACvE,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAChE,SAAS;YACX,CAAC;YAED,6BAA6B;YAC7B,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YAE9C,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,MAAc,EAAE,aAAsB;IAC1F,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;IAEhD,kEAAkE;IAClE,iFAAiF;IACjF,6EAA6E;IAC7E,qEAAqE;IACrE,MAAM,IAAI,GAAG,SAAS,MAAM,EAAE,CAAC;IAE/B,oEAAoE;IACpE,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kCAAkC;QAClC,oDAAoD;QACpD,qBAAqB;QACrB,KAAK;IACP,CAAC;IAED,OAAO;QACL,EAAE,EAAE,QAAQ,MAAM,EAAE;QACpB,IAAI;QACJ,MAAM,EAAE,EAAE,EAAE,uCAAuC;QACnD,MAAM;QACN,IAAI,EAAE,OAAO;QACb,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,aAAyB;IACrD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEzC,qCAAqC;IACrC,MAAM,GAAG,GAAG,aAAa;SACtB,GAAG,CAAC,CAAC,CAAC,EAAE;QACP,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;SACD,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAExB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAE/B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Pane Polling Worker
3
+ *
4
+ * Runs in a separate thread to poll for pane changes without blocking the main UI.
5
+ * This is the fallback when tmux hooks are not installed.
6
+ *
7
+ * The worker:
8
+ * - Polls tmux for pane list at configurable intervals
9
+ * - Detects added/removed panes by comparing snapshots
10
+ * - Posts messages to main thread when changes detected
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=panePollingWorker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panePollingWorker.d.ts","sourceRoot":"","sources":["../../src/workers/panePollingWorker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Pane Polling Worker
3
+ *
4
+ * Runs in a separate thread to poll for pane changes without blocking the main UI.
5
+ * This is the fallback when tmux hooks are not installed.
6
+ *
7
+ * The worker:
8
+ * - Polls tmux for pane list at configurable intervals
9
+ * - Detects added/removed panes by comparing snapshots
10
+ * - Posts messages to main thread when changes detected
11
+ */
12
+ import { parentPort, workerData } from 'worker_threads';
13
+ import { execSync } from 'child_process';
14
+ // Get config from main thread
15
+ const config = workerData || {
16
+ sessionName: '',
17
+ pollInterval: 5000,
18
+ };
19
+ let lastSnapshot = null;
20
+ let isRunning = true;
21
+ /**
22
+ * Get current pane IDs from tmux
23
+ */
24
+ function getPaneIds() {
25
+ try {
26
+ const output = execSync('tmux list-panes -F "#{pane_id}"', {
27
+ encoding: 'utf8',
28
+ stdio: 'pipe',
29
+ timeout: 2000,
30
+ });
31
+ return output.trim().split('\n').filter(Boolean);
32
+ }
33
+ catch {
34
+ return [];
35
+ }
36
+ }
37
+ /**
38
+ * Compare two snapshots and detect changes
39
+ */
40
+ function detectChanges(oldSnapshot, newSnapshot) {
41
+ if (!oldSnapshot) {
42
+ return { added: [], removed: [], changed: false };
43
+ }
44
+ const oldSet = new Set(oldSnapshot.paneIds);
45
+ const newSet = new Set(newSnapshot.paneIds);
46
+ const added = newSnapshot.paneIds.filter(id => !oldSet.has(id));
47
+ const removed = oldSnapshot.paneIds.filter(id => !newSet.has(id));
48
+ const changed = added.length > 0 || removed.length > 0;
49
+ return { added, removed, changed };
50
+ }
51
+ /**
52
+ * Main polling loop
53
+ */
54
+ async function poll() {
55
+ while (isRunning) {
56
+ try {
57
+ const paneIds = getPaneIds();
58
+ const newSnapshot = {
59
+ paneIds,
60
+ timestamp: Date.now(),
61
+ };
62
+ const changes = detectChanges(lastSnapshot, newSnapshot);
63
+ if (changes.changed) {
64
+ // Post change event to main thread
65
+ parentPort?.postMessage({
66
+ type: 'panes-changed',
67
+ added: changes.added,
68
+ removed: changes.removed,
69
+ paneIds: paneIds,
70
+ timestamp: newSnapshot.timestamp,
71
+ });
72
+ }
73
+ lastSnapshot = newSnapshot;
74
+ // Also send periodic heartbeat so main thread knows worker is alive
75
+ parentPort?.postMessage({
76
+ type: 'heartbeat',
77
+ paneCount: paneIds.length,
78
+ timestamp: Date.now(),
79
+ });
80
+ }
81
+ catch (error) {
82
+ parentPort?.postMessage({
83
+ type: 'error',
84
+ message: error instanceof Error ? error.message : String(error),
85
+ });
86
+ }
87
+ // Wait for next poll interval
88
+ await new Promise(resolve => setTimeout(resolve, config.pollInterval));
89
+ }
90
+ }
91
+ // Handle messages from main thread
92
+ parentPort?.on('message', (message) => {
93
+ switch (message.type) {
94
+ case 'stop':
95
+ isRunning = false;
96
+ parentPort?.postMessage({ type: 'stopped' });
97
+ break;
98
+ case 'set-interval':
99
+ if (message.pollInterval && message.pollInterval > 0) {
100
+ config.pollInterval = message.pollInterval;
101
+ parentPort?.postMessage({
102
+ type: 'interval-updated',
103
+ pollInterval: config.pollInterval,
104
+ });
105
+ }
106
+ break;
107
+ case 'force-poll':
108
+ // Force an immediate poll
109
+ const paneIds = getPaneIds();
110
+ parentPort?.postMessage({
111
+ type: 'panes-changed',
112
+ added: [],
113
+ removed: [],
114
+ paneIds,
115
+ timestamp: Date.now(),
116
+ forced: true,
117
+ });
118
+ break;
119
+ }
120
+ });
121
+ // Start polling
122
+ parentPort?.postMessage({ type: 'started', pollInterval: config.pollInterval });
123
+ poll().catch(error => {
124
+ parentPort?.postMessage({
125
+ type: 'fatal-error',
126
+ message: error instanceof Error ? error.message : String(error),
127
+ });
128
+ });
129
+ //# sourceMappingURL=panePollingWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panePollingWorker.js","sourceRoot":"","sources":["../../src/workers/panePollingWorker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dmux",
3
- "version": "3.5.3",
3
+ "version": "4.0.0",
4
4
  "description": "Tmux pane manager with AI agent integration for parallel development workflows",
5
5
  "type": "module",
6
6
  "author": "Justin Schroeder",