dmux 5.6.3 → 5.7.1

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 (280) hide show
  1. package/README.ja.md +93 -0
  2. package/README.md +16 -1
  3. package/dist/DmuxApp.d.ts.map +1 -1
  4. package/dist/DmuxApp.js +282 -43
  5. package/dist/DmuxApp.js.map +1 -1
  6. package/dist/actions/implementations/closeAction.d.ts.map +1 -1
  7. package/dist/actions/implementations/closeAction.js +85 -70
  8. package/dist/actions/implementations/closeAction.js.map +1 -1
  9. package/dist/actions/implementations/createPullRequestAction.d.ts +4 -0
  10. package/dist/actions/implementations/createPullRequestAction.d.ts.map +1 -0
  11. package/dist/actions/implementations/createPullRequestAction.js +218 -0
  12. package/dist/actions/implementations/createPullRequestAction.js.map +1 -0
  13. package/dist/actions/implementations/index.d.ts +1 -0
  14. package/dist/actions/implementations/index.d.ts.map +1 -1
  15. package/dist/actions/implementations/index.js +1 -0
  16. package/dist/actions/implementations/index.js.map +1 -1
  17. package/dist/actions/implementations/mergeAction.js +8 -3
  18. package/dist/actions/implementations/mergeAction.js.map +1 -1
  19. package/dist/actions/index.d.ts.map +1 -1
  20. package/dist/actions/index.js +2 -0
  21. package/dist/actions/index.js.map +1 -1
  22. package/dist/actions/paneActions.d.ts +1 -1
  23. package/dist/actions/paneActions.d.ts.map +1 -1
  24. package/dist/actions/paneActions.js +1 -1
  25. package/dist/actions/paneActions.js.map +1 -1
  26. package/dist/actions/types.d.ts +11 -2
  27. package/dist/actions/types.d.ts.map +1 -1
  28. package/dist/actions/types.js +9 -0
  29. package/dist/actions/types.js.map +1 -1
  30. package/dist/components/inputs/CleanTextInput.d.ts +1 -0
  31. package/dist/components/inputs/CleanTextInput.d.ts.map +1 -1
  32. package/dist/components/inputs/CleanTextInput.js +40 -42
  33. package/dist/components/inputs/CleanTextInput.js.map +1 -1
  34. package/dist/components/inputs/InlineCursorInput.d.ts +10 -0
  35. package/dist/components/inputs/InlineCursorInput.d.ts.map +1 -0
  36. package/dist/components/inputs/InlineCursorInput.js +101 -0
  37. package/dist/components/inputs/InlineCursorInput.js.map +1 -0
  38. package/dist/components/panes/PaneCard.d.ts +3 -1
  39. package/dist/components/panes/PaneCard.d.ts.map +1 -1
  40. package/dist/components/panes/PaneCard.js +14 -4
  41. package/dist/components/panes/PaneCard.js.map +1 -1
  42. package/dist/components/panes/PanesGrid.d.ts +4 -1
  43. package/dist/components/panes/PanesGrid.d.ts.map +1 -1
  44. package/dist/components/panes/PanesGrid.js +27 -15
  45. package/dist/components/panes/PanesGrid.js.map +1 -1
  46. package/dist/components/popups/config.d.ts +4 -4
  47. package/dist/components/popups/config.js +6 -6
  48. package/dist/components/popups/config.js.map +1 -1
  49. package/dist/components/popups/inputPopup.js +3 -3
  50. package/dist/components/popups/inputPopup.js.map +1 -1
  51. package/dist/components/popups/newPaneFieldNavigation.d.ts +9 -0
  52. package/dist/components/popups/newPaneFieldNavigation.d.ts.map +1 -0
  53. package/dist/components/popups/newPaneFieldNavigation.js +20 -0
  54. package/dist/components/popups/newPaneFieldNavigation.js.map +1 -0
  55. package/dist/components/popups/newPaneGitOptions.d.ts +23 -0
  56. package/dist/components/popups/newPaneGitOptions.d.ts.map +1 -0
  57. package/dist/components/popups/newPaneGitOptions.js +91 -0
  58. package/dist/components/popups/newPaneGitOptions.js.map +1 -0
  59. package/dist/components/popups/newPanePopup.d.ts +7 -2
  60. package/dist/components/popups/newPanePopup.d.ts.map +1 -1
  61. package/dist/components/popups/newPanePopup.js +256 -19
  62. package/dist/components/popups/newPanePopup.js.map +1 -1
  63. package/dist/components/popups/prReviewPopup.d.ts +12 -0
  64. package/dist/components/popups/prReviewPopup.d.ts.map +1 -0
  65. package/dist/components/popups/prReviewPopup.js +278 -0
  66. package/dist/components/popups/prReviewPopup.js.map +1 -0
  67. package/dist/components/popups/reopenWorktreePopup.js +1 -1
  68. package/dist/components/popups/reopenWorktreePopup.js.map +1 -1
  69. package/dist/components/popups/settingsPopup.js +72 -6
  70. package/dist/components/popups/settingsPopup.js.map +1 -1
  71. package/dist/components/ui/FooterHelp.d.ts.map +1 -1
  72. package/dist/components/ui/FooterHelp.js +5 -4
  73. package/dist/components/ui/FooterHelp.js.map +1 -1
  74. package/dist/hooks/useActionSystem.d.ts +12 -2
  75. package/dist/hooks/useActionSystem.d.ts.map +1 -1
  76. package/dist/hooks/useActionSystem.js +19 -1
  77. package/dist/hooks/useActionSystem.js.map +1 -1
  78. package/dist/hooks/useInputHandling.d.ts +5 -3
  79. package/dist/hooks/useInputHandling.d.ts.map +1 -1
  80. package/dist/hooks/useInputHandling.js +93 -32
  81. package/dist/hooks/useInputHandling.js.map +1 -1
  82. package/dist/hooks/usePaneCreation.d.ts +5 -3
  83. package/dist/hooks/usePaneCreation.d.ts.map +1 -1
  84. package/dist/hooks/usePaneCreation.js +16 -3
  85. package/dist/hooks/usePaneCreation.js.map +1 -1
  86. package/dist/hooks/usePaneLoading.d.ts.map +1 -1
  87. package/dist/hooks/usePaneLoading.js +28 -3
  88. package/dist/hooks/usePaneLoading.js.map +1 -1
  89. package/dist/hooks/usePaneSync.d.ts.map +1 -1
  90. package/dist/hooks/usePaneSync.js +8 -5
  91. package/dist/hooks/usePaneSync.js.map +1 -1
  92. package/dist/hooks/usePanes.d.ts.map +1 -1
  93. package/dist/hooks/usePanes.js +8 -1
  94. package/dist/hooks/usePanes.js.map +1 -1
  95. package/dist/hooks/useShellDetection.d.ts.map +1 -1
  96. package/dist/hooks/useShellDetection.js +7 -1
  97. package/dist/hooks/useShellDetection.js.map +1 -1
  98. package/dist/index.js +49 -22
  99. package/dist/index.js.map +1 -1
  100. package/dist/panes/decorative-pane.js +57 -27
  101. package/dist/panes/decorative-pane.js.map +1 -1
  102. package/dist/server/embedded-assets.d.ts.map +1 -1
  103. package/dist/server/embedded-assets.js +4 -12
  104. package/dist/server/embedded-assets.js.map +1 -1
  105. package/dist/services/DmuxFocusService.d.ts.map +1 -1
  106. package/dist/services/DmuxFocusService.js +19 -14
  107. package/dist/services/DmuxFocusService.js.map +1 -1
  108. package/dist/services/PaneEventService.d.ts +11 -0
  109. package/dist/services/PaneEventService.d.ts.map +1 -1
  110. package/dist/services/PaneEventService.js +31 -3
  111. package/dist/services/PaneEventService.js.map +1 -1
  112. package/dist/services/PaneWorkerManager.d.ts.map +1 -1
  113. package/dist/services/PaneWorkerManager.js +1 -0
  114. package/dist/services/PaneWorkerManager.js.map +1 -1
  115. package/dist/services/PopupManager.d.ts +23 -6
  116. package/dist/services/PopupManager.d.ts.map +1 -1
  117. package/dist/services/PopupManager.js +170 -33
  118. package/dist/services/PopupManager.js.map +1 -1
  119. package/dist/services/StatusDetector.d.ts +1 -0
  120. package/dist/services/StatusDetector.d.ts.map +1 -1
  121. package/dist/services/StatusDetector.js +44 -0
  122. package/dist/services/StatusDetector.js.map +1 -1
  123. package/dist/services/TmuxHookManager.d.ts.map +1 -1
  124. package/dist/services/TmuxHookManager.js +3 -2
  125. package/dist/services/TmuxHookManager.js.map +1 -1
  126. package/dist/services/TmuxService.d.ts +7 -0
  127. package/dist/services/TmuxService.d.ts.map +1 -1
  128. package/dist/services/TmuxService.js +15 -1
  129. package/dist/services/TmuxService.js.map +1 -1
  130. package/dist/theme/colors.d.ts +24 -10
  131. package/dist/theme/colors.d.ts.map +1 -1
  132. package/dist/theme/colors.js +143 -19
  133. package/dist/theme/colors.js.map +1 -1
  134. package/dist/theme/themePalette.d.ts +6 -0
  135. package/dist/theme/themePalette.d.ts.map +1 -0
  136. package/dist/theme/themePalette.js +18 -0
  137. package/dist/theme/themePalette.js.map +1 -0
  138. package/dist/types.d.ts +13 -0
  139. package/dist/types.d.ts.map +1 -1
  140. package/dist/utils/agentLaunch.d.ts +2 -0
  141. package/dist/utils/agentLaunch.d.ts.map +1 -1
  142. package/dist/utils/agentLaunch.js +10 -9
  143. package/dist/utils/agentLaunch.js.map +1 -1
  144. package/dist/utils/aiMerge.d.ts +4 -0
  145. package/dist/utils/aiMerge.d.ts.map +1 -1
  146. package/dist/utils/aiMerge.js +7 -4
  147. package/dist/utils/aiMerge.js.map +1 -1
  148. package/dist/utils/asciiArt.d.ts.map +1 -1
  149. package/dist/utils/asciiArt.js +2 -1
  150. package/dist/utils/asciiArt.js.map +1 -1
  151. package/dist/utils/attachAgent.d.ts.map +1 -1
  152. package/dist/utils/attachAgent.js +20 -1
  153. package/dist/utils/attachAgent.js.map +1 -1
  154. package/dist/utils/codexHooks.d.ts +25 -0
  155. package/dist/utils/codexHooks.d.ts.map +1 -0
  156. package/dist/utils/codexHooks.js +131 -0
  157. package/dist/utils/codexHooks.js.map +1 -0
  158. package/dist/utils/conflictResolutionPane.d.ts.map +1 -1
  159. package/dist/utils/conflictResolutionPane.js +4 -0
  160. package/dist/utils/conflictResolutionPane.js.map +1 -1
  161. package/dist/utils/devWatchCommand.d.ts.map +1 -1
  162. package/dist/utils/devWatchCommand.js +6 -2
  163. package/dist/utils/devWatchCommand.js.map +1 -1
  164. package/dist/utils/dmuxCommand.d.ts +4 -3
  165. package/dist/utils/dmuxCommand.d.ts.map +1 -1
  166. package/dist/utils/dmuxCommand.js +15 -14
  167. package/dist/utils/dmuxCommand.js.map +1 -1
  168. package/dist/utils/generated-agents-doc.d.ts +1 -1
  169. package/dist/utils/generated-agents-doc.d.ts.map +1 -1
  170. package/dist/utils/generated-agents-doc.js +46 -11
  171. package/dist/utils/generated-agents-doc.js.map +1 -1
  172. package/dist/utils/git.d.ts +8 -0
  173. package/dist/utils/git.d.ts.map +1 -1
  174. package/dist/utils/git.js +26 -0
  175. package/dist/utils/git.js.map +1 -1
  176. package/dist/utils/githubPullRequest.d.ts +18 -0
  177. package/dist/utils/githubPullRequest.d.ts.map +1 -0
  178. package/dist/utils/githubPullRequest.js +196 -0
  179. package/dist/utils/githubPullRequest.js.map +1 -0
  180. package/dist/utils/hooks.d.ts +15 -0
  181. package/dist/utils/hooks.d.ts.map +1 -1
  182. package/dist/utils/hooks.js +105 -0
  183. package/dist/utils/hooks.js.map +1 -1
  184. package/dist/utils/hooksDocs.d.ts +1 -1
  185. package/dist/utils/hooksDocs.d.ts.map +1 -1
  186. package/dist/utils/hooksDocs.js +21 -11
  187. package/dist/utils/hooksDocs.js.map +1 -1
  188. package/dist/utils/input.d.ts +7 -6
  189. package/dist/utils/input.d.ts.map +1 -1
  190. package/dist/utils/input.js +47 -24
  191. package/dist/utils/input.js.map +1 -1
  192. package/dist/utils/paneBootstrapConfig.d.ts +27 -0
  193. package/dist/utils/paneBootstrapConfig.d.ts.map +1 -0
  194. package/dist/utils/paneBootstrapConfig.js +2 -0
  195. package/dist/utils/paneBootstrapConfig.js.map +1 -0
  196. package/dist/utils/paneBootstrapRunner.d.ts +3 -0
  197. package/dist/utils/paneBootstrapRunner.d.ts.map +1 -0
  198. package/dist/utils/paneBootstrapRunner.js +517 -0
  199. package/dist/utils/paneBootstrapRunner.js.map +1 -0
  200. package/dist/utils/paneColors.d.ts +7 -0
  201. package/dist/utils/paneColors.d.ts.map +1 -0
  202. package/dist/utils/paneColors.js +42 -0
  203. package/dist/utils/paneColors.js.map +1 -0
  204. package/dist/utils/paneCreation.d.ts +3 -1
  205. package/dist/utils/paneCreation.d.ts.map +1 -1
  206. package/dist/utils/paneCreation.js +165 -225
  207. package/dist/utils/paneCreation.js.map +1 -1
  208. package/dist/utils/paneNaming.d.ts +16 -0
  209. package/dist/utils/paneNaming.d.ts.map +1 -0
  210. package/dist/utils/paneNaming.js +47 -0
  211. package/dist/utils/paneNaming.js.map +1 -0
  212. package/dist/utils/paneTitle.d.ts +1 -0
  213. package/dist/utils/paneTitle.d.ts.map +1 -1
  214. package/dist/utils/paneTitle.js +5 -1
  215. package/dist/utils/paneTitle.js.map +1 -1
  216. package/dist/utils/paneTitlePrefix.d.ts +8 -0
  217. package/dist/utils/paneTitlePrefix.d.ts.map +1 -0
  218. package/dist/utils/paneTitlePrefix.js +20 -0
  219. package/dist/utils/paneTitlePrefix.js.map +1 -0
  220. package/dist/utils/pathEnvironment.d.ts +6 -0
  221. package/dist/utils/pathEnvironment.d.ts.map +1 -0
  222. package/dist/utils/pathEnvironment.js +59 -0
  223. package/dist/utils/pathEnvironment.js.map +1 -0
  224. package/dist/utils/popup.d.ts +1 -0
  225. package/dist/utils/popup.d.ts.map +1 -1
  226. package/dist/utils/popup.js +9 -2
  227. package/dist/utils/popup.js.map +1 -1
  228. package/dist/utils/prSummary.d.ts +34 -0
  229. package/dist/utils/prSummary.d.ts.map +1 -0
  230. package/dist/utils/prSummary.js +130 -0
  231. package/dist/utils/prSummary.js.map +1 -0
  232. package/dist/utils/projectActions.d.ts +6 -0
  233. package/dist/utils/projectActions.d.ts.map +1 -1
  234. package/dist/utils/projectActions.js +46 -0
  235. package/dist/utils/projectActions.js.map +1 -1
  236. package/dist/utils/reopenWorktree.d.ts.map +1 -1
  237. package/dist/utils/reopenWorktree.js +37 -5
  238. package/dist/utils/reopenWorktree.js.map +1 -1
  239. package/dist/utils/resumeBranches.d.ts.map +1 -1
  240. package/dist/utils/resumeBranches.js +9 -3
  241. package/dist/utils/resumeBranches.js.map +1 -1
  242. package/dist/utils/settingsManager.d.ts +11 -3
  243. package/dist/utils/settingsManager.d.ts.map +1 -1
  244. package/dist/utils/settingsManager.js +106 -21
  245. package/dist/utils/settingsManager.js.map +1 -1
  246. package/dist/utils/shellPaneDetection.d.ts.map +1 -1
  247. package/dist/utils/shellPaneDetection.js +4 -0
  248. package/dist/utils/shellPaneDetection.js.map +1 -1
  249. package/dist/utils/sidebarProjects.d.ts +10 -3
  250. package/dist/utils/sidebarProjects.d.ts.map +1 -1
  251. package/dist/utils/sidebarProjects.js +125 -10
  252. package/dist/utils/sidebarProjects.js.map +1 -1
  253. package/dist/utils/tmuxHookCommands.d.ts +6 -0
  254. package/dist/utils/tmuxHookCommands.d.ts.map +1 -1
  255. package/dist/utils/tmuxHookCommands.js +12 -0
  256. package/dist/utils/tmuxHookCommands.js.map +1 -1
  257. package/dist/utils/tmuxSendKeys.d.ts +2 -0
  258. package/dist/utils/tmuxSendKeys.d.ts.map +1 -0
  259. package/dist/utils/tmuxSendKeys.js +8 -0
  260. package/dist/utils/tmuxSendKeys.js.map +1 -0
  261. package/dist/utils/toastLayout.d.ts +10 -0
  262. package/dist/utils/toastLayout.d.ts.map +1 -0
  263. package/dist/utils/toastLayout.js +24 -0
  264. package/dist/utils/toastLayout.js.map +1 -0
  265. package/dist/utils/welcomePane.d.ts +5 -1
  266. package/dist/utils/welcomePane.d.ts.map +1 -1
  267. package/dist/utils/welcomePane.js +33 -3
  268. package/dist/utils/welcomePane.js.map +1 -1
  269. package/dist/utils/welcomePaneManager.d.ts +3 -1
  270. package/dist/utils/welcomePaneManager.d.ts.map +1 -1
  271. package/dist/utils/welcomePaneManager.js +40 -2
  272. package/dist/utils/welcomePaneManager.js.map +1 -1
  273. package/dist/workers/PaneWorker.js +77 -0
  274. package/dist/workers/PaneWorker.js.map +1 -1
  275. package/dist/workers/WorkerMessages.d.ts +9 -1
  276. package/dist/workers/WorkerMessages.d.ts.map +1 -1
  277. package/dist/workers/WorkerMessages.js.map +1 -1
  278. package/dist/workers/panePollingWorker.js +33 -2
  279. package/dist/workers/panePollingWorker.js.map +1 -1
  280. package/package.json +1 -1
@@ -1,22 +1,24 @@
1
1
  import path from 'path';
2
2
  import * as fs from 'fs';
3
3
  import { execSync } from 'child_process';
4
+ import { fileURLToPath } from 'url';
4
5
  import { TmuxService } from '../services/TmuxService.js';
5
6
  import { ensurePaneBorderStatusForCurrentSession, setupSidebarLayout, getTerminalDimensions, splitPane, } from './tmux.js';
6
7
  import { SIDEBAR_WIDTH, recalculateAndApplyLayout } from './layoutManager.js';
7
8
  import { generateSlug } from './slug.js';
8
9
  import { capturePaneContent } from './paneCapture.js';
9
- import { triggerHook, initializeHooksDirectory } from './hooks.js';
10
- import { TMUX_LAYOUT_APPLY_DELAY, TMUX_SPLIT_DELAY } from '../constants/timing.js';
10
+ import { triggerHook } from './hooks.js';
11
+ import { TMUX_SPLIT_DELAY } from '../constants/timing.js';
11
12
  import { atomicWriteJsonSync } from './atomicWrite.js';
12
13
  import { LogService } from '../services/LogService.js';
13
- import { appendSlugSuffix, buildAgentCommand, buildInitialPromptCommand, getAgentProcessName, getPromptTransport, getSendKeysPostPasteDelayMs, getSendKeysPrePrompt, getSendKeysReadyDelayMs, getSendKeysSubmit, } from './agentLaunch.js';
14
- import { buildWorktreePaneTitle } from './paneTitle.js';
15
- import { buildPromptReadAndDeleteSnippet, writePromptFile, } from './promptStore.js';
16
- import { ensureGeminiFolderTrusted } from './geminiTrust.js';
17
- import { isValidBranchName } from './git.js';
18
- import { sendPromptViaTmux } from './agentPromptDispatch.js';
19
- import { readWorktreeMetadata, writeWorktreeMetadata } from './worktreeMetadata.js';
14
+ import { getPaneTmuxTitle } from './paneTitle.js';
15
+ import { shellQuote } from './promptStore.js';
16
+ import { isValidBranchName, isValidFullBranchName } from './git.js';
17
+ import { resolvePaneNaming } from './paneNaming.js';
18
+ import { readWorktreeMetadata } from './worktreeMetadata.js';
19
+ import { resolveProjectColorTheme } from './paneColors.js';
20
+ import { StateManager } from '../shared/StateManager.js';
21
+ import { DMUX_BOOTSTRAP_PANE_TITLE_PREFIX, } from './paneBootstrapConfig.js';
20
22
  async function waitForPaneReady(tmuxService, paneId, timeoutMs = 600) {
21
23
  const start = Date.now();
22
24
  while ((Date.now() - start) < timeoutMs) {
@@ -26,12 +28,59 @@ async function waitForPaneReady(tmuxService, paneId, timeoutMs = 600) {
26
28
  await new Promise((resolve) => setTimeout(resolve, 30));
27
29
  }
28
30
  }
31
+ function getCurrentWindowPaneIds(tmuxService) {
32
+ try {
33
+ return tmuxService.getAllPaneIdsSync();
34
+ }
35
+ catch {
36
+ return [];
37
+ }
38
+ }
39
+ function getVisibleExistingPaneIds(existingPanes, currentWindowPaneIds) {
40
+ return existingPanes
41
+ .filter((pane) => {
42
+ if (currentWindowPaneIds.length > 0) {
43
+ return currentWindowPaneIds.includes(pane.paneId);
44
+ }
45
+ return !pane.hidden;
46
+ })
47
+ .map((pane) => pane.paneId);
48
+ }
49
+ function getPaneSplitTarget(existingPanes, currentWindowPaneIds, controlPaneId) {
50
+ const visibleExistingPaneIds = getVisibleExistingPaneIds(existingPanes, currentWindowPaneIds);
51
+ return visibleExistingPaneIds[visibleExistingPaneIds.length - 1] || controlPaneId;
52
+ }
53
+ function resolvePaneBootstrapRunnerPath() {
54
+ const currentFile = fileURLToPath(import.meta.url);
55
+ const utilsDir = path.dirname(currentFile);
56
+ const compiledRunner = path.join(utilsDir, 'paneBootstrapRunner.js');
57
+ if (fs.existsSync(compiledRunner)) {
58
+ return compiledRunner;
59
+ }
60
+ return path.join(utilsDir, 'paneBootstrapRunner.ts');
61
+ }
62
+ function writePaneBootstrapConfig(projectRoot, slug, config) {
63
+ const bootstrapDir = path.join(projectRoot, '.dmux', 'bootstrap');
64
+ fs.mkdirSync(bootstrapDir, { recursive: true });
65
+ const configPath = path.join(bootstrapDir, `${slug}-${Date.now()}-${Math.random().toString(36).slice(2, 8)}.json`);
66
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
67
+ return configPath;
68
+ }
69
+ function buildPaneBootstrapCommand(runnerPath, configPath, worktreePath) {
70
+ const statusVar = '__dmux_bootstrap_status';
71
+ return [
72
+ `${shellQuote(process.execPath)} ${shellQuote(runnerPath)} ${shellQuote(configPath)}`,
73
+ `${statusVar}=$?`,
74
+ `if [ -d ${shellQuote(worktreePath)} ]; then cd ${shellQuote(worktreePath)}; fi`,
75
+ `test $${statusVar} -eq 0 || true`,
76
+ ].join('; ');
77
+ }
29
78
  /**
30
79
  * Core pane creation logic that can be used by both TUI and API
31
80
  * Returns the newly created pane and whether agent choice is needed
32
81
  */
33
82
  export async function createPane(options, availableAgents) {
34
- const { prompt, projectName, existingPanes, slugSuffix, slugBase, existingWorktree, startPointBranch, mergeTargetChain, skipAgentSelection = false, sessionConfigPath: optionsSessionConfigPath, sessionProjectRoot: optionsSessionProjectRoot, } = options;
83
+ const { prompt, projectName, existingPanes, slugSuffix, slugBase, baseBranchOverride, branchNameOverride, existingWorktree, startPointBranch, mergeTargetChain, skipAgentSelection = false, sessionConfigPath: optionsSessionConfigPath, sessionProjectRoot: optionsSessionProjectRoot, } = options;
35
84
  let { agent, projectRoot: optionsProjectRoot } = options;
36
85
  // Load settings to check for default agent and autopilot
37
86
  const { SettingsManager } = await import('./settingsManager.js');
@@ -103,28 +152,48 @@ export async function createPane(options, availableAgents) {
103
152
  if (branchPrefix && !isValidBranchName(branchPrefix)) {
104
153
  throw new Error(`Invalid branch prefix: ${branchPrefix}`);
105
154
  }
106
- // Generate slug (filesystem-safe directory name) and branch name (may include prefix).
155
+ const overrideBranchName = (branchNameOverride || '').trim();
156
+ if (overrideBranchName && !isValidFullBranchName(overrideBranchName)) {
157
+ throw new Error(`Invalid branch name override: ${overrideBranchName}`);
158
+ }
159
+ const overrideBaseBranch = (baseBranchOverride || '').trim();
160
+ if (overrideBaseBranch && !isValidFullBranchName(overrideBaseBranch)) {
161
+ throw new Error(`Invalid base branch override: ${overrideBaseBranch}`);
162
+ }
163
+ // Generate slug/worktree + branch names.
164
+ // Explicit branch name override takes precedence over branchPrefix.
107
165
  const generatedSlug = existingWorktree
108
166
  ? existingWorktree.slug
109
167
  : (slugBase || await generateSlug(prompt));
110
- const slug = existingWorktree
111
- ? existingWorktree.slug
112
- : appendSlugSuffix(generatedSlug, slugSuffix);
113
- const branchName = existingWorktree
114
- ? existingWorktree.branchName
115
- : (branchPrefix ? `${branchPrefix}${slug}` : slug);
168
+ const naming = resolvePaneNaming({
169
+ generatedSlug,
170
+ slugSuffix,
171
+ branchPrefix,
172
+ baseBranchSetting: settings.baseBranch,
173
+ baseBranchOverride: overrideBaseBranch,
174
+ branchNameOverride: overrideBranchName,
175
+ });
176
+ const slug = existingWorktree ? existingWorktree.slug : naming.slug;
177
+ const branchName = existingWorktree ? existingWorktree.branchName : naming.branchName;
178
+ const effectiveBaseBranch = naming.baseBranch;
116
179
  const tmuxService = TmuxService.getInstance();
117
180
  const worktreePath = existingWorktree?.worktreePath
118
181
  || path.join(projectRoot, '.dmux', 'worktrees', slug);
182
+ if (!existingWorktree && fs.existsSync(worktreePath)) {
183
+ throw new Error(`Worktree path already exists: ${worktreePath}. Choose a different branch/worktree name.`);
184
+ }
119
185
  const originalPaneId = tmuxService.getCurrentPaneIdSync();
186
+ let currentWindowPaneIds = getCurrentWindowPaneIds(tmuxService);
120
187
  // Load config to get control pane info
121
188
  const configPath = optionsSessionConfigPath
122
189
  || path.join(sessionProjectRoot, '.dmux', 'dmux.config.json');
123
190
  let controlPaneId;
191
+ let configSidebarProjects = [];
124
192
  try {
125
193
  const configContent = fs.readFileSync(configPath, 'utf-8');
126
194
  const config = JSON.parse(configContent);
127
195
  controlPaneId = config.controlPaneId;
196
+ configSidebarProjects = Array.isArray(config.sidebarProjects) ? config.sidebarProjects : [];
128
197
  // Verify the control pane ID from config still exists
129
198
  if (controlPaneId) {
130
199
  const exists = await tmuxService.paneExists(controlPaneId);
@@ -171,11 +240,9 @@ export async function createPane(options, availableAgents) {
171
240
  paneInfo = setupSidebarLayout(controlPaneId, projectRoot);
172
241
  }
173
242
  else {
174
- // Subsequent panes - always split horizontally, let layout manager organize
175
- // Get actual dmux pane IDs (not welcome pane) from existingPanes
176
- const dmuxPaneIds = existingPanes.map(p => p.paneId);
177
- const targetPane = dmuxPaneIds[dmuxPaneIds.length - 1]; // Split from the most recent dmux pane
178
- // Always split horizontally - the layout manager will organize panes optimally
243
+ // Split from a pane in the active dmux window. Hidden panes live in
244
+ // detached tmux windows, so targeting them would create a hidden pane.
245
+ const targetPane = getPaneSplitTarget(existingPanes, currentWindowPaneIds, controlPaneId);
179
246
  paneInfo = splitPane({ targetPane, cwd: projectRoot });
180
247
  }
181
248
  }
@@ -204,8 +271,8 @@ export async function createPane(options, availableAgents) {
204
271
  paneInfo = setupSidebarLayout(controlPaneId, projectRoot);
205
272
  }
206
273
  else {
207
- const dmuxPaneIds = existingPanes.map(p => p.paneId);
208
- const targetPane = dmuxPaneIds[dmuxPaneIds.length - 1];
274
+ currentWindowPaneIds = getCurrentWindowPaneIds(tmuxService);
275
+ const targetPane = getPaneSplitTarget(existingPanes, currentWindowPaneIds, controlPaneId);
209
276
  paneInfo = splitPane({ targetPane, cwd: projectRoot });
210
277
  }
211
278
  }
@@ -215,12 +282,11 @@ export async function createPane(options, availableAgents) {
215
282
  }
216
283
  }
217
284
  await waitForPaneReady(tmuxService, paneInfo);
218
- // Set pane title (project-tagged for collision-safe rebinding across projects)
285
+ // Mark the pane as dmux-owned immediately. Without this, the shell-pane
286
+ // detector can race the config save and classify a still-bootstrapping
287
+ // worktree pane as a user-created shell pane.
219
288
  try {
220
- const paneTitle = projectRoot === sessionProjectRoot
221
- ? slug
222
- : buildWorktreePaneTitle(slug, projectRoot, paneProjectName);
223
- await tmuxService.setPaneTitle(paneInfo, paneTitle);
289
+ await tmuxService.setPaneTitle(paneInfo, `${DMUX_BOOTSTRAP_PANE_TITLE_PREFIX}${slug}`);
224
290
  }
225
291
  catch {
226
292
  // Ignore if setting title fails
@@ -228,7 +294,8 @@ export async function createPane(options, availableAgents) {
228
294
  // Apply optimal layout using the layout manager
229
295
  if (controlPaneId) {
230
296
  const dimensions = getTerminalDimensions();
231
- const allContentPaneIds = [...existingPanes.map(p => p.paneId), paneInfo];
297
+ const visibleContentPaneIds = getVisibleExistingPaneIds(existingPanes, currentWindowPaneIds);
298
+ const allContentPaneIds = [...visibleContentPaneIds, paneInfo];
232
299
  await recalculateAndApplyLayout(controlPaneId, allContentPaneIds, dimensions.width, dimensions.height);
233
300
  // Refresh tmux to apply changes
234
301
  await tmuxService.refreshClient();
@@ -244,211 +311,78 @@ export async function createPane(options, availableAgents) {
244
311
  // Check if this is a hooks editing session (before worktree creation)
245
312
  const isHooksEditingSession = !!prompt && (/(create|edit|modify).*(dmux|\.)?.*hooks/i.test(prompt)
246
313
  || /\.dmux-hooks/i.test(prompt));
247
- // Create git worktree and cd into it
248
- try {
249
- if (existingWorktree) {
250
- if (!fs.existsSync(path.join(worktreePath, '.git'))) {
251
- throw new Error(`Existing worktree not found at ${worktreePath}`);
252
- }
253
- await tmuxService.sendShellCommand(paneInfo, `cd "${worktreePath}"`);
254
- await tmuxService.sendTmuxKeys(paneInfo, 'Enter');
255
- await new Promise((resolve) => setTimeout(resolve, 300));
256
- }
257
- else {
258
- // IMPORTANT: Prune stale worktrees first to avoid conflicts
259
- // This must run synchronously from dmux, not in the pane
260
- try {
261
- execSync('git worktree prune', {
262
- encoding: 'utf-8',
263
- stdio: 'pipe',
264
- cwd: projectRoot,
265
- });
266
- }
267
- catch {
268
- // Ignore prune errors, proceed anyway
269
- }
270
- // Validate and resolve base branch for new worktrees
271
- const baseBranch = settings.baseBranch || '';
272
- if (baseBranch && !isValidBranchName(baseBranch)) {
273
- throw new Error(`Invalid base branch name: ${baseBranch}`);
274
- }
275
- const resolvedStartPoint = startPointBranch || baseBranch;
276
- if (resolvedStartPoint && !isValidBranchName(resolvedStartPoint)) {
277
- throw new Error(`Invalid worktree start-point branch name: ${resolvedStartPoint}`);
278
- }
279
- if (resolvedStartPoint) {
280
- try {
281
- execSync(`git rev-parse --verify "refs/heads/${resolvedStartPoint}"`, {
282
- stdio: 'pipe',
283
- cwd: projectRoot,
284
- });
285
- }
286
- catch {
287
- if (startPointBranch) {
288
- throw new Error(`Worktree start-point branch "${resolvedStartPoint}" does not exist anymore. Reopen the parent worktree or recreate it before branching again.`);
289
- }
290
- throw new Error(`Base branch "${resolvedStartPoint}" does not exist. Update the baseBranch setting to a valid branch name.`);
291
- }
292
- }
293
- const maxWorktreeAttempts = 3;
294
- const maxWaitTime = 5000; // 5 seconds max
295
- const checkInterval = 100; // Check every 100ms
296
- let worktreeCreated = fs.existsSync(worktreePath);
297
- for (let attempt = 1; attempt <= maxWorktreeAttempts && !worktreeCreated; attempt++) {
298
- // Check if branch already exists (from a deleted worktree or a previous attempt)
299
- let branchExists = false;
300
- try {
301
- execSync(`git show-ref --verify --quiet "refs/heads/${branchName}"`, {
302
- stdio: 'pipe',
303
- cwd: projectRoot,
304
- });
305
- branchExists = true;
306
- }
307
- catch {
308
- // Branch doesn't exist yet
309
- }
310
- // Build worktree command:
311
- // - If branch exists, use it (don't create with -b)
312
- // - If branch doesn't exist, create it with -b, optionally from a configured base branch
313
- const startPoint = resolvedStartPoint ? ` "${resolvedStartPoint}"` : '';
314
- const worktreeAddCmd = branchExists
315
- ? `git worktree add "${worktreePath}" "${branchName}"`
316
- : `git worktree add "${worktreePath}" -b "${branchName}"${startPoint}`;
317
- const worktreeCmd = `cd "${projectRoot}" && ${worktreeAddCmd} && cd "${worktreePath}"`;
318
- // Send the git worktree command (auto-quoted by sendShellCommand)
319
- await tmuxService.sendShellCommand(paneInfo, worktreeCmd);
320
- await tmuxService.sendTmuxKeys(paneInfo, 'Enter');
321
- const startTime = Date.now();
322
- while (!fs.existsSync(worktreePath) && (Date.now() - startTime) < maxWaitTime) {
323
- await new Promise((resolve) => setTimeout(resolve, checkInterval));
324
- }
325
- worktreeCreated = fs.existsSync(worktreePath);
326
- if (!worktreeCreated && attempt < maxWorktreeAttempts) {
327
- await new Promise((resolve) => setTimeout(resolve, 250 * attempt));
328
- }
329
- }
330
- // Verify worktree was created successfully
331
- if (!worktreeCreated) {
332
- throw new Error(`Worktree directory not created at ${worktreePath} after ${maxWorktreeAttempts} attempts`);
333
- }
334
- // Give a bit more time for git to finish setting up the worktree
335
- await new Promise((resolve) => setTimeout(resolve, 500));
336
- }
337
- try {
338
- writeWorktreeMetadata(worktreePath, {
339
- agent,
340
- permissionMode: settings.permissionMode,
341
- displayName: existingWorktreeMetadata?.displayName,
342
- branchName: branchName !== slug ? branchName : undefined,
343
- mergeTargetChain,
344
- });
345
- }
346
- catch (metadataError) {
347
- LogService.getInstance().warn(`Failed to persist worktree metadata for ${slug}: ${metadataError}`, 'paneCreation');
348
- }
349
- // Initialize .dmux-hooks if this is a hooks editing session
350
- if (isHooksEditingSession) {
351
- initializeHooksDirectory(worktreePath);
352
- }
314
+ // Validate branch settings before handing the slow setup work to the pane.
315
+ const resolvedStartPoint = startPointBranch || effectiveBaseBranch || undefined;
316
+ if (resolvedStartPoint && !isValidBranchName(resolvedStartPoint)) {
317
+ throw new Error(`Invalid worktree start-point branch name: ${resolvedStartPoint}`);
353
318
  }
354
- catch (error) {
355
- // Worktree creation failed - send helpful error message to the pane
356
- const errorMsg = error instanceof Error ? error.message : String(error);
357
- await tmuxService.sendShellCommand(paneInfo, `echo "❌ Failed to create worktree: ${errorMsg}"`);
358
- await tmuxService.sendTmuxKeys(paneInfo, 'Enter');
359
- await tmuxService.sendShellCommand(paneInfo, `echo "Tip: Try running: git worktree prune && git branch -D ${branchName}"`);
360
- await tmuxService.sendTmuxKeys(paneInfo, 'Enter');
361
- await new Promise((resolve) => setTimeout(resolve, TMUX_LAYOUT_APPLY_DELAY));
362
- // Don't throw - let the pane stay open so user can debug
363
- }
364
- // Launch agent if specified
365
- const hasInitialPrompt = !!(prompt && prompt.trim());
366
- if (agent) {
367
- if (agent === 'gemini') {
368
- const geminiWorkspacePath = fs.existsSync(worktreePath)
369
- ? worktreePath
370
- : projectRoot;
371
- ensureGeminiFolderTrusted(geminiWorkspacePath);
372
- }
373
- const promptTransport = getPromptTransport(agent);
374
- const shouldSendPromptViaTmux = hasInitialPrompt && promptTransport === 'send-keys';
375
- let baselineCommand;
376
- if (shouldSendPromptViaTmux) {
377
- try {
378
- baselineCommand = await tmuxService.getPaneCurrentCommand(paneInfo);
379
- }
380
- catch {
381
- baselineCommand = undefined;
382
- }
383
- }
384
- let launchCommand;
385
- if (hasInitialPrompt && !shouldSendPromptViaTmux) {
386
- let promptFilePath = null;
387
- try {
388
- promptFilePath = await writePromptFile(projectRoot, slug, prompt);
389
- }
390
- catch {
391
- // Fall back to inline escaping if prompt file write fails
392
- }
393
- if (promptFilePath) {
394
- const promptBootstrap = buildPromptReadAndDeleteSnippet(promptFilePath);
395
- launchCommand = `${promptBootstrap}; ${buildInitialPromptCommand(agent, '"$DMUX_PROMPT_CONTENT"', settings.permissionMode)}`;
396
- }
397
- else {
398
- const escapedPrompt = prompt
399
- .replace(/\\/g, '\\\\')
400
- .replace(/"/g, '\\"')
401
- .replace(/`/g, '\\`')
402
- .replace(/\$/g, '\\$');
403
- launchCommand = buildInitialPromptCommand(agent, `"${escapedPrompt}"`, settings.permissionMode);
404
- }
405
- }
406
- else {
407
- launchCommand = buildAgentCommand(agent, settings.permissionMode);
408
- }
409
- await tmuxService.sendShellCommand(paneInfo, launchCommand);
410
- await tmuxService.sendTmuxKeys(paneInfo, 'Enter');
411
- if (shouldSendPromptViaTmux) {
412
- await sendPromptViaTmux({
413
- paneId: paneInfo,
414
- prompt,
415
- tmuxService,
416
- expectedCommand: getAgentProcessName(agent),
417
- baselineCommand,
418
- prePromptKeys: getSendKeysPrePrompt(agent),
419
- submitKeys: getSendKeysSubmit(agent),
420
- postPasteDelayMs: getSendKeysPostPasteDelayMs(agent),
421
- readyDelayMs: getSendKeysReadyDelayMs(agent),
422
- });
423
- }
424
- if (agent === 'claude') {
425
- // Auto-approve trust prompts for Claude (workspace trust, not edit permissions)
426
- autoApproveTrustPrompt(paneInfo, prompt).catch(() => {
427
- // Ignore errors in background monitoring
428
- });
429
- }
430
- }
431
- // Keep focus on the new pane
432
- await tmuxService.selectPane(paneInfo);
433
- // Create the pane object
434
319
  const newPane = {
435
320
  id: `dmux-${Date.now()}`,
436
321
  slug,
437
322
  displayName: existingWorktreeMetadata?.displayName,
438
- branchName: branchName !== slug ? branchName : undefined, // Only store if different from slug
323
+ branchName: branchName !== slug ? branchName : undefined,
439
324
  prompt: prompt || 'No initial prompt',
440
325
  paneId: paneInfo,
441
326
  projectRoot,
442
327
  projectName: paneProjectName,
328
+ colorTheme: resolveProjectColorTheme(projectRoot, configSidebarProjects),
443
329
  worktreePath,
444
330
  agent,
331
+ hidden: false,
445
332
  permissionMode: settings.permissionMode,
446
- // Set autopilot based on settings (use ?? to properly handle false vs undefined)
447
333
  autopilot: settings.enableAutopilotByDefault ?? false,
448
334
  mergeTargetChain,
449
335
  };
450
- // CRITICAL: Save the pane to config IMMEDIATELY before destroying welcome pane
451
- // This is the event that triggers welcome pane destruction (event-based, no polling)
336
+ const state = StateManager.getInstance().getState();
337
+ const tmuxTitle = getPaneTmuxTitle(newPane, sessionProjectRoot);
338
+ const hookExtraEnv = state.serverPort
339
+ ? { DMUX_SERVER_PORT: String(state.serverPort) }
340
+ : undefined;
341
+ const bootstrapConfig = {
342
+ version: 1,
343
+ projectRoot,
344
+ worktreePath,
345
+ branchName,
346
+ slug,
347
+ prompt,
348
+ agent,
349
+ permissionMode: settings.permissionMode,
350
+ pane: newPane,
351
+ tmuxTitle,
352
+ existingWorktree: !!existingWorktree,
353
+ resolvedStartPoint,
354
+ isHooksEditingSession,
355
+ metadata: {
356
+ agent,
357
+ permissionMode: settings.permissionMode,
358
+ displayName: existingWorktreeMetadata?.displayName,
359
+ branchName: branchName !== slug ? branchName : undefined,
360
+ mergeTargetChain,
361
+ },
362
+ hookExtraEnv,
363
+ };
364
+ try {
365
+ const bootstrapConfigPath = writePaneBootstrapConfig(projectRoot, slug, bootstrapConfig);
366
+ const bootstrapCommand = buildPaneBootstrapCommand(resolvePaneBootstrapRunnerPath(), bootstrapConfigPath, worktreePath);
367
+ await tmuxService.sendShellCommand(paneInfo, bootstrapCommand);
368
+ await tmuxService.sendTmuxKeys(paneInfo, 'Enter');
369
+ }
370
+ catch (error) {
371
+ const errorMsg = error instanceof Error ? error.message : String(error);
372
+ LogService.getInstance().error(`Failed to start pane bootstrap for ${slug}: ${errorMsg}`, 'paneCreation', undefined, error instanceof Error ? error : undefined);
373
+ try {
374
+ await tmuxService.killPane(paneInfo);
375
+ }
376
+ catch {
377
+ // best-effort cleanup
378
+ }
379
+ throw new Error(`Failed to start pane bootstrap for "${slug}": ${errorMsg}`);
380
+ }
381
+ // Keep focus on the new pane
382
+ await tmuxService.selectPane(paneInfo);
383
+ // CRITICAL: Save the pane to config IMMEDIATELY before destroying welcome pane.
384
+ // Only needed for the first content pane — ensures loadPanes sees a pane in config
385
+ // before we kill the welcome pane (prevents spurious "0 panes" welcome recreation).
452
386
  if (isFirstContentPane) {
453
387
  try {
454
388
  const configContent = fs.readFileSync(configPath, 'utf-8');
@@ -457,16 +391,22 @@ export async function createPane(options, availableAgents) {
457
391
  config.panes = [...existingPanes, newPane];
458
392
  config.lastUpdated = new Date().toISOString();
459
393
  atomicWriteJsonSync(configPath, config);
460
- // NOW destroy the welcome pane (event-based destruction)
461
- const { destroyWelcomePaneCoordinated } = await import('./welcomePaneManager.js');
462
- destroyWelcomePaneCoordinated(sessionProjectRoot);
463
394
  }
464
395
  catch (error) {
465
396
  // Log but don't fail - welcome pane cleanup is not critical
466
397
  }
467
398
  }
468
- // Trigger worktree_created hook (after full pane setup)
469
- await triggerHook('worktree_created', projectRoot, newPane);
399
+ // Always destroy the welcome pane if one exists in config.
400
+ // We do this unconditionally because shell panes detected by detectAndAddShellPanes
401
+ // can make existingPanes.length > 0 even when no real content panes exist yet,
402
+ // which causes isFirstContentPane to be false and skips welcome pane destruction.
403
+ try {
404
+ const { destroyWelcomePaneCoordinated } = await import('./welcomePaneManager.js');
405
+ destroyWelcomePaneCoordinated(sessionProjectRoot);
406
+ }
407
+ catch {
408
+ // Ignore - welcome pane cleanup is not critical
409
+ }
470
410
  // Switch back to the original pane
471
411
  await tmuxService.selectPane(originalPaneId);
472
412
  // Re-set the title for the dmux pane
@@ -1 +1 @@
1
- {"version":3,"file":"paneCreation.js","sourceRoot":"","sources":["../../src/utils/paneCreation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paneCreation.js","sourceRoot":"","sources":["../../src/utils/paneCreation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface ResolvePaneNamingInput {
2
+ generatedSlug: string;
3
+ slugSuffix?: string;
4
+ branchPrefix?: string;
5
+ baseBranchSetting?: string;
6
+ baseBranchOverride?: string;
7
+ branchNameOverride?: string;
8
+ }
9
+ export interface ResolvedPaneNaming {
10
+ slug: string;
11
+ branchName: string;
12
+ baseBranch: string;
13
+ }
14
+ export declare function sanitizeWorktreeSlugFromBranch(branchName: string): string;
15
+ export declare function resolvePaneNaming(input: ResolvePaneNamingInput): ResolvedPaneNaming;
16
+ //# sourceMappingURL=paneNaming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paneNaming.d.ts","sourceRoot":"","sources":["../../src/utils/paneNaming.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAmBD,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAWzE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,kBAAkB,CAmBnF"}
@@ -0,0 +1,47 @@
1
+ function normalizeSuffix(slugSuffix) {
2
+ if (!slugSuffix)
3
+ return '';
4
+ return slugSuffix
5
+ .trim()
6
+ .toLowerCase()
7
+ .replace(/[^a-z0-9-]/g, '-')
8
+ .replace(/-+/g, '-')
9
+ .replace(/^-+|-+$/g, '');
10
+ }
11
+ function appendNormalizedSuffix(value, slugSuffix) {
12
+ const suffix = normalizeSuffix(slugSuffix);
13
+ if (!suffix)
14
+ return value;
15
+ if (value.toLowerCase().endsWith(`-${suffix}`))
16
+ return value;
17
+ return `${value}-${suffix}`;
18
+ }
19
+ export function sanitizeWorktreeSlugFromBranch(branchName) {
20
+ const normalized = branchName
21
+ .trim()
22
+ .toLowerCase()
23
+ .replace(/[\\/]+/g, '-')
24
+ .replace(/[^a-z0-9._-]+/g, '-')
25
+ .replace(/-+/g, '-')
26
+ .replace(/^-+|-+$/g, '')
27
+ .replace(/^\.+|\.+$/g, '');
28
+ return normalized || 'pane';
29
+ }
30
+ export function resolvePaneNaming(input) {
31
+ const generatedSlug = (input.generatedSlug || '').trim() || 'pane';
32
+ const configuredBaseBranch = (input.baseBranchSetting || '').trim();
33
+ const overrideBaseBranch = (input.baseBranchOverride || '').trim();
34
+ const explicitBranchName = (input.branchNameOverride || '').trim();
35
+ const branchPrefix = input.branchPrefix || '';
36
+ const baseBranch = overrideBaseBranch || configuredBaseBranch;
37
+ const baseBranchName = explicitBranchName || `${branchPrefix}${generatedSlug}`;
38
+ const baseSlug = explicitBranchName
39
+ ? sanitizeWorktreeSlugFromBranch(explicitBranchName)
40
+ : generatedSlug;
41
+ return {
42
+ slug: appendNormalizedSuffix(baseSlug, input.slugSuffix),
43
+ branchName: appendNormalizedSuffix(baseBranchName, input.slugSuffix),
44
+ baseBranch,
45
+ };
46
+ }
47
+ //# sourceMappingURL=paneNaming.js.map