dmux 5.6.0 → 5.6.2

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 (58) hide show
  1. package/dist/DmuxApp.d.ts.map +1 -1
  2. package/dist/DmuxApp.js +38 -13
  3. package/dist/DmuxApp.js.map +1 -1
  4. package/dist/components/popups/projectSelectPopup.d.ts +6 -0
  5. package/dist/components/popups/projectSelectPopup.d.ts.map +1 -1
  6. package/dist/components/popups/projectSelectPopup.js +23 -4
  7. package/dist/components/popups/projectSelectPopup.js.map +1 -1
  8. package/dist/components/popups/reopenWorktreePopup.d.ts +34 -2
  9. package/dist/components/popups/reopenWorktreePopup.d.ts.map +1 -1
  10. package/dist/components/popups/reopenWorktreePopup.js +321 -66
  11. package/dist/components/popups/reopenWorktreePopup.js.map +1 -1
  12. package/dist/hooks/useInputHandling.d.ts +4 -1
  13. package/dist/hooks/useInputHandling.d.ts.map +1 -1
  14. package/dist/hooks/useInputHandling.js +67 -22
  15. package/dist/hooks/useInputHandling.js.map +1 -1
  16. package/dist/hooks/useNavigation.d.ts.map +1 -1
  17. package/dist/hooks/useNavigation.js +7 -8
  18. package/dist/hooks/useNavigation.js.map +1 -1
  19. package/dist/services/PaneAnalyzer.d.ts +1 -1
  20. package/dist/services/PaneAnalyzer.d.ts.map +1 -1
  21. package/dist/services/PaneAnalyzer.js +5 -2
  22. package/dist/services/PaneAnalyzer.js.map +1 -1
  23. package/dist/services/PopupManager.d.ts +11 -8
  24. package/dist/services/PopupManager.d.ts.map +1 -1
  25. package/dist/services/PopupManager.js +50 -8
  26. package/dist/services/PopupManager.js.map +1 -1
  27. package/dist/services/StatusDetector.d.ts.map +1 -1
  28. package/dist/services/StatusDetector.js +1 -1
  29. package/dist/services/StatusDetector.js.map +1 -1
  30. package/dist/services/WorktreeCleanupService.d.ts +2 -0
  31. package/dist/services/WorktreeCleanupService.d.ts.map +1 -1
  32. package/dist/services/WorktreeCleanupService.js +68 -6
  33. package/dist/services/WorktreeCleanupService.js.map +1 -1
  34. package/dist/utils/generated-agents-doc.d.ts +1 -1
  35. package/dist/utils/generated-agents-doc.js +1 -1
  36. package/dist/utils/paneAttentionHeuristics.d.ts +1 -0
  37. package/dist/utils/paneAttentionHeuristics.d.ts.map +1 -1
  38. package/dist/utils/paneAttentionHeuristics.js +89 -9
  39. package/dist/utils/paneAttentionHeuristics.js.map +1 -1
  40. package/dist/utils/paneCreation.d.ts +5 -0
  41. package/dist/utils/paneCreation.d.ts.map +1 -1
  42. package/dist/utils/paneCreation.js +88 -71
  43. package/dist/utils/paneCreation.js.map +1 -1
  44. package/dist/utils/projectRoot.d.ts +8 -0
  45. package/dist/utils/projectRoot.d.ts.map +1 -1
  46. package/dist/utils/projectRoot.js +73 -6
  47. package/dist/utils/projectRoot.js.map +1 -1
  48. package/dist/utils/reopenWorktree.d.ts +2 -0
  49. package/dist/utils/reopenWorktree.d.ts.map +1 -1
  50. package/dist/utils/reopenWorktree.js +5 -4
  51. package/dist/utils/reopenWorktree.js.map +1 -1
  52. package/dist/utils/resumeBranches.d.ts +29 -0
  53. package/dist/utils/resumeBranches.d.ts.map +1 -0
  54. package/dist/utils/resumeBranches.js +640 -0
  55. package/dist/utils/resumeBranches.js.map +1 -0
  56. package/dist/workers/PaneWorker.js +30 -17
  57. package/dist/workers/PaneWorker.js.map +1 -1
  58. package/package.json +1 -1
@@ -1,17 +1,66 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Popup for reopening closed worktrees
4
- * Shows a list of orphaned worktrees that can be reopened
3
+ * Popup for resuming local or remote branches.
5
4
  */
6
- import React, { useState } from 'react';
5
+ import React, { useEffect, useMemo, useState } from 'react';
7
6
  import { render, Box, Text, useInput, useApp } from 'ink';
8
7
  import * as fs from 'fs';
8
+ import { pathToFileURL } from 'url';
9
9
  import { PopupContainer, PopupWrapper, writeSuccessAndExit } from './shared/index.js';
10
- import { PopupFooters, POPUP_CONFIG } from './config.js';
10
+ import { POPUP_CONFIG } from './config.js';
11
+ import { getResumableBranches } from '../../utils/resumeBranches.js';
12
+ const MAX_VISIBLE_WORKTREES = 8;
13
+ const CONTENT_BOX_WIDTH = 72;
14
+ const CONTENT_INNER_WIDTH = CONTENT_BOX_WIDTH - 4;
15
+ const BRANCH_COLUMN_WIDTH = 34;
16
+ const LAST_WORKED_COLUMN_WIDTH = 16;
17
+ const SOURCE_FILTERS = [
18
+ { key: 'worktrees', label: 'Worktrees' },
19
+ { key: 'local', label: 'Local' },
20
+ { key: 'remote', label: 'Remote' },
21
+ ];
22
+ function toPopupBranch(worktree) {
23
+ return {
24
+ branchName: worktree.branchName,
25
+ slug: worktree.slug,
26
+ path: worktree.path,
27
+ lastModified: worktree.lastModified?.toISOString(),
28
+ hasUncommittedChanges: worktree.hasUncommittedChanges,
29
+ hasWorktree: worktree.hasWorktree,
30
+ hasLocalBranch: worktree.hasLocalBranch,
31
+ hasRemoteBranch: worktree.hasRemoteBranch,
32
+ isRemote: worktree.isRemote,
33
+ };
34
+ }
35
+ function loadRemoteResumableBranches(projectRoot, activePaneSlugs) {
36
+ return getResumableBranches(projectRoot, activePaneSlugs, {
37
+ includeRemoteBranches: true,
38
+ }).map((candidate) => toPopupBranch(candidate));
39
+ }
40
+ function isFilterTypingInput(input, key) {
41
+ if (!input) {
42
+ return false;
43
+ }
44
+ if (key.ctrl || key.meta || key.return || key.tab || key.escape) {
45
+ return false;
46
+ }
47
+ if (key.upArrow
48
+ || key.downArrow
49
+ || key.leftArrow
50
+ || key.rightArrow
51
+ || key.pageUp
52
+ || key.pageDown) {
53
+ return false;
54
+ }
55
+ return true;
56
+ }
11
57
  /**
12
58
  * Format relative time (e.g., "2 hours ago", "3 days ago")
13
59
  */
14
60
  function formatRelativeTime(dateStr) {
61
+ if (!dateStr) {
62
+ return '--';
63
+ }
15
64
  const date = new Date(dateStr);
16
65
  const now = new Date();
17
66
  const diffMs = now.getTime() - date.getTime();
@@ -30,78 +79,275 @@ function formatRelativeTime(dateStr) {
30
79
  }
31
80
  return 'just now';
32
81
  }
33
- const ReopenWorktreePopupApp = ({ resultFile, worktrees, }) => {
34
- const [selectedIndex, setSelectedIndex] = useState(0);
35
- const { exit } = useApp();
36
- const maxVisible = 8;
37
- useInput((input, key) => {
38
- if (key.upArrow) {
39
- setSelectedIndex(Math.max(0, selectedIndex - 1));
40
- }
41
- else if (key.downArrow) {
42
- setSelectedIndex(Math.min(worktrees.length - 1, selectedIndex + 1));
43
- }
44
- else if (key.return && worktrees.length > 0) {
45
- // User selected a worktree to reopen
46
- const selected = worktrees[selectedIndex];
47
- writeSuccessAndExit(resultFile, { slug: selected.slug, path: selected.path }, exit);
48
- }
49
- });
50
- if (worktrees.length === 0) {
51
- return (React.createElement(PopupWrapper, { resultFile: resultFile },
52
- React.createElement(PopupContainer, { footer: "Press ESC to close" },
53
- React.createElement(Box, { flexDirection: "column" },
54
- React.createElement(Text, { dimColor: true }, "No closed worktrees found."),
55
- React.createElement(Text, { dimColor: true }, "All worktrees have active panes.")))));
56
- }
57
- const totalWorktrees = worktrees.length;
82
+ function getVisibleWindow(totalItems, selectedIndex, maxVisible) {
58
83
  let startIndex = 0;
59
- let endIndex = Math.min(maxVisible, totalWorktrees);
84
+ let endIndex = Math.min(maxVisible, totalItems);
60
85
  if (selectedIndex >= endIndex) {
61
86
  endIndex = selectedIndex + 1;
62
87
  startIndex = Math.max(0, endIndex - maxVisible);
63
88
  }
64
89
  else if (selectedIndex < startIndex) {
65
90
  startIndex = selectedIndex;
66
- endIndex = Math.min(startIndex + maxVisible, totalWorktrees);
91
+ endIndex = Math.min(startIndex + maxVisible, totalItems);
67
92
  }
68
- if (selectedIndex >= maxVisible / 2 && totalWorktrees > maxVisible) {
93
+ if (selectedIndex >= maxVisible / 2 && totalItems > maxVisible) {
69
94
  startIndex = Math.max(0, selectedIndex - Math.floor(maxVisible / 2));
70
- endIndex = Math.min(startIndex + maxVisible, totalWorktrees);
95
+ endIndex = Math.min(startIndex + maxVisible, totalItems);
71
96
  startIndex = Math.max(0, endIndex - maxVisible);
72
97
  }
73
- const visibleWorktrees = worktrees.slice(startIndex, endIndex);
74
- const showScrollIndicators = totalWorktrees > maxVisible;
98
+ return { startIndex, endIndex };
99
+ }
100
+ function getWorktreeDetails(worktree) {
101
+ const details = [];
102
+ if (worktree.hasRemoteBranch) {
103
+ details.push('remote');
104
+ }
105
+ if (worktree.hasUncommittedChanges) {
106
+ details.push('dirty');
107
+ }
108
+ return details.join(' ');
109
+ }
110
+ export const ReopenWorktreePopupApp = ({ resultFile, projectName, worktrees, initialState, projectRoot, activePaneSlugs = [], loadRemoteBranches = loadRemoteResumableBranches, }) => {
111
+ const [availableWorktrees, setAvailableWorktrees] = useState(worktrees);
112
+ const [selectedIndex, setSelectedIndex] = useState(0);
113
+ const [filterQuery, setFilterQuery] = useState(initialState.filterQuery);
114
+ const [includeWorktrees, setIncludeWorktrees] = useState(initialState.includeWorktrees);
115
+ const [includeLocalBranches, setIncludeLocalBranches] = useState(initialState.includeLocalBranches);
116
+ const [includeRemoteBranches, setIncludeRemoteBranches] = useState(initialState.includeRemoteBranches);
117
+ const [remoteLoaded, setRemoteLoaded] = useState(initialState.remoteLoaded);
118
+ const [isLoadingRemote, setIsLoadingRemote] = useState(false);
119
+ const [remoteLoadError, setRemoteLoadError] = useState(null);
120
+ const [focusedSourceIndex, setFocusedSourceIndex] = useState(0);
121
+ const [focusArea, setFocusArea] = useState('list');
122
+ const { exit } = useApp();
123
+ useEffect(() => {
124
+ setAvailableWorktrees(worktrees);
125
+ }, [worktrees]);
126
+ useEffect(() => {
127
+ if (!includeRemoteBranches || remoteLoaded || !projectRoot) {
128
+ return;
129
+ }
130
+ let cancelled = false;
131
+ setIsLoadingRemote(true);
132
+ setRemoteLoadError(null);
133
+ const timer = setTimeout(() => {
134
+ try {
135
+ const remoteBranches = loadRemoteBranches(projectRoot, activePaneSlugs);
136
+ if (cancelled) {
137
+ return;
138
+ }
139
+ setAvailableWorktrees(remoteBranches);
140
+ setRemoteLoaded(true);
141
+ }
142
+ catch (error) {
143
+ if (cancelled) {
144
+ return;
145
+ }
146
+ setRemoteLoadError(error instanceof Error ? error.message : String(error));
147
+ }
148
+ finally {
149
+ if (!cancelled) {
150
+ setIsLoadingRemote(false);
151
+ }
152
+ }
153
+ }, 0);
154
+ return () => {
155
+ cancelled = true;
156
+ clearTimeout(timer);
157
+ };
158
+ }, [
159
+ activePaneSlugs,
160
+ includeRemoteBranches,
161
+ loadRemoteBranches,
162
+ projectRoot,
163
+ remoteLoaded,
164
+ ]);
165
+ const sourceFilteredWorktrees = useMemo(() => (availableWorktrees.filter((worktree) => ((includeWorktrees && worktree.hasWorktree)
166
+ || (includeLocalBranches && worktree.hasLocalBranch)
167
+ || (includeRemoteBranches && worktree.hasRemoteBranch)))), [availableWorktrees, includeLocalBranches, includeRemoteBranches, includeWorktrees]);
168
+ const filteredWorktrees = useMemo(() => {
169
+ const normalizedQuery = filterQuery.trim().toLowerCase();
170
+ if (!normalizedQuery) {
171
+ return sourceFilteredWorktrees;
172
+ }
173
+ return sourceFilteredWorktrees.filter((worktree) => {
174
+ const branchName = worktree.branchName.toLowerCase();
175
+ const slug = worktree.slug?.toLowerCase() || '';
176
+ return branchName.includes(normalizedQuery) || slug.includes(normalizedQuery);
177
+ });
178
+ }, [filterQuery, sourceFilteredWorktrees]);
179
+ useEffect(() => {
180
+ setSelectedIndex((current) => Math.min(current, Math.max(0, filteredWorktrees.length - 1)));
181
+ }, [filteredWorktrees.length]);
182
+ const toggleSourceFilter = (sourceKey) => {
183
+ if (sourceKey === 'worktrees') {
184
+ setIncludeWorktrees((current) => !current);
185
+ setSelectedIndex(0);
186
+ return;
187
+ }
188
+ if (sourceKey === 'local') {
189
+ setIncludeLocalBranches((current) => !current);
190
+ setSelectedIndex(0);
191
+ return;
192
+ }
193
+ setIncludeRemoteBranches((current) => !current);
194
+ setSelectedIndex(0);
195
+ };
196
+ useInput((input, key) => {
197
+ if (key.tab) {
198
+ setFocusArea((current) => current === 'list' ? 'sources' : 'list');
199
+ return;
200
+ }
201
+ if (focusArea === 'sources') {
202
+ if (key.leftArrow) {
203
+ setFocusedSourceIndex((current) => Math.max(0, current - 1));
204
+ }
205
+ else if (key.rightArrow) {
206
+ setFocusedSourceIndex((current) => Math.min(SOURCE_FILTERS.length - 1, current + 1));
207
+ }
208
+ else if (key.downArrow) {
209
+ setFocusArea('list');
210
+ }
211
+ else if (input === '1') {
212
+ setFocusedSourceIndex(0);
213
+ toggleSourceFilter('worktrees');
214
+ }
215
+ else if (input === '2') {
216
+ setFocusedSourceIndex(1);
217
+ toggleSourceFilter('local');
218
+ }
219
+ else if (input === '3') {
220
+ setFocusedSourceIndex(2);
221
+ toggleSourceFilter('remote');
222
+ }
223
+ else if (input === ' ' || key.return) {
224
+ toggleSourceFilter(SOURCE_FILTERS[focusedSourceIndex]?.key ?? 'worktrees');
225
+ }
226
+ return;
227
+ }
228
+ if (key.backspace || key.delete) {
229
+ setFilterQuery((current) => current.slice(0, -1));
230
+ setSelectedIndex(0);
231
+ }
232
+ else if (isFilterTypingInput(input, key)) {
233
+ setFilterQuery((current) => `${current}${input}`);
234
+ setSelectedIndex(0);
235
+ }
236
+ else if (key.leftArrow || (key.upArrow && selectedIndex === 0)) {
237
+ setFocusArea('sources');
238
+ }
239
+ else if (key.upArrow) {
240
+ setSelectedIndex((current) => Math.max(0, current - 1));
241
+ }
242
+ else if (key.downArrow) {
243
+ setSelectedIndex((current) => (filteredWorktrees.length === 0
244
+ ? 0
245
+ : Math.min(filteredWorktrees.length - 1, current + 1)));
246
+ }
247
+ else if (key.return && filteredWorktrees.length > 0 && !isLoadingRemote) {
248
+ const selected = filteredWorktrees[selectedIndex];
249
+ writeSuccessAndExit(resultFile, {
250
+ action: 'select',
251
+ candidate: selected,
252
+ }, exit);
253
+ }
254
+ });
255
+ const totalWorktrees = availableWorktrees.length;
256
+ const totalSourceFilteredWorktrees = sourceFilteredWorktrees.length;
257
+ const totalFilteredWorktrees = filteredWorktrees.length;
258
+ const showEmptyState = totalFilteredWorktrees === 0;
259
+ const { startIndex, endIndex } = getVisibleWindow(totalFilteredWorktrees, selectedIndex, MAX_VISIBLE_WORKTREES);
260
+ const visibleWorktrees = filteredWorktrees.slice(startIndex, endIndex);
261
+ const renderedRowCount = showEmptyState ? 1 : visibleWorktrees.length;
262
+ const emptyRows = Math.max(0, MAX_VISIBLE_WORKTREES - renderedRowCount);
263
+ const moreAbove = startIndex > 0;
264
+ const moreBelow = endIndex < totalFilteredWorktrees;
265
+ const filterActive = filterQuery.trim().length > 0;
266
+ const filterDisplay = filterQuery || 'Search branches';
267
+ const filterCursor = focusArea === 'list' ? '|' : '';
268
+ const searchFocused = focusArea === 'list';
269
+ const footer = focusArea === 'sources'
270
+ ? '←→ move • Space toggle • ↓ back • 1/2/3 quick toggle • ESC cancel'
271
+ : 'Type filter • ↑↓ navigate • ↑/← filters • Enter resume • ESC cancel';
272
+ const filterMessage = isLoadingRemote
273
+ ? 'Loading remote branches...'
274
+ : remoteLoadError
275
+ ? `Remote scan failed: ${remoteLoadError}`
276
+ : filterActive
277
+ ? `No matches for "${filterQuery}"`
278
+ : totalSourceFilteredWorktrees === 0 && !remoteLoaded && !includeRemoteBranches
279
+ ? 'No local branches or worktrees. Enable remote to scan remotes.'
280
+ : 'No branches match the selected sources.';
281
+ const remoteLabel = isLoadingRemote ? 'Remote…' : 'Remote';
282
+ const remoteLabelColor = remoteLoadError
283
+ ? POPUP_CONFIG.errorColor
284
+ : isLoadingRemote
285
+ ? POPUP_CONFIG.titleColor
286
+ : undefined;
75
287
  return (React.createElement(PopupWrapper, { resultFile: resultFile },
76
- React.createElement(PopupContainer, { footer: PopupFooters.choice() },
77
- React.createElement(Box, { marginBottom: 1 },
78
- React.createElement(Text, { dimColor: true }, "Select a worktree to reopen:")),
79
- showScrollIndicators && startIndex > 0 && (React.createElement(Box, { marginBottom: 1 },
80
- React.createElement(Text, { dimColor: true },
81
- "\u2191 ",
82
- startIndex,
83
- " more above"))),
84
- React.createElement(Box, { flexDirection: "column" }, visibleWorktrees.map((worktree, idx) => {
85
- const index = startIndex + idx;
86
- const isSelected = index === selectedIndex;
87
- return (React.createElement(Box, { key: worktree.slug, marginBottom: idx < visibleWorktrees.length - 1 ? 1 : 0 },
88
- React.createElement(Box, { flexDirection: "column" },
89
- React.createElement(Text, { color: isSelected ? POPUP_CONFIG.titleColor : 'white', bold: isSelected },
90
- isSelected ? '▶ ' : ' ',
91
- worktree.slug,
92
- worktree.hasUncommittedChanges && (React.createElement(Text, { color: "yellow" }, " *"))),
93
- React.createElement(Box, { marginLeft: 3 },
94
- React.createElement(Text, { dimColor: true },
95
- formatRelativeTime(worktree.lastModified),
96
- worktree.branch !== worktree.slug && ` • branch: ${worktree.branch}`)))));
97
- })),
98
- showScrollIndicators && endIndex < totalWorktrees && (React.createElement(Box, { marginTop: 1 },
99
- React.createElement(Text, { dimColor: true },
100
- "\u2193 ",
101
- totalWorktrees - endIndex,
102
- " more below"))),
103
- React.createElement(Box, { marginTop: 1 },
104
- React.createElement(Text, { dimColor: true, italic: true }, "* = has uncommitted changes")))));
288
+ React.createElement(PopupContainer, { footer: footer },
289
+ React.createElement(Box, { borderStyle: POPUP_CONFIG.inputBorderStyle, borderColor: searchFocused ? POPUP_CONFIG.inputBorderColor : POPUP_CONFIG.borderColor, paddingX: 1, marginTop: 1, width: CONTENT_BOX_WIDTH, flexDirection: "column" },
290
+ React.createElement(Box, { width: CONTENT_INNER_WIDTH },
291
+ React.createElement(Text, { bold: true, color: searchFocused ? POPUP_CONFIG.inputBorderColor : POPUP_CONFIG.borderColor },
292
+ "\uF002",
293
+ ' '),
294
+ React.createElement(Text, { color: searchFocused ? 'white' : undefined, dimColor: !filterQuery, wrap: "truncate-end" }, `${filterDisplay}${filterCursor}`))),
295
+ React.createElement(Box, { borderStyle: POPUP_CONFIG.inputBorderStyle, borderColor: focusArea === 'sources' ? POPUP_CONFIG.inputBorderColor : POPUP_CONFIG.borderColor, paddingX: 1, marginTop: 1, width: CONTENT_BOX_WIDTH, flexDirection: "column" },
296
+ React.createElement(Box, { width: CONTENT_INNER_WIDTH }, SOURCE_FILTERS.map((source, index) => {
297
+ const isFocused = focusArea === 'sources' && focusedSourceIndex === index;
298
+ const isEnabled = source.key === 'worktrees'
299
+ ? includeWorktrees
300
+ : source.key === 'local'
301
+ ? includeLocalBranches
302
+ : includeRemoteBranches;
303
+ const marker = isEnabled ? '◉' : '◎';
304
+ const label = source.key === 'remote' ? remoteLabel : source.label;
305
+ const color = source.key === 'remote' && remoteLabelColor
306
+ ? remoteLabelColor
307
+ : isFocused
308
+ ? POPUP_CONFIG.titleColor
309
+ : 'white';
310
+ return (React.createElement(Box, { key: source.key, marginRight: 2 },
311
+ React.createElement(Text, { color: isEnabled ? POPUP_CONFIG.successColor : POPUP_CONFIG.dimColor, bold: isEnabled }, marker),
312
+ React.createElement(Text, { color: color, bold: isFocused },
313
+ ' ',
314
+ label)));
315
+ }))),
316
+ React.createElement(Box, { flexDirection: "column", borderStyle: POPUP_CONFIG.inputBorderStyle, borderColor: POPUP_CONFIG.borderColor, paddingX: 1, marginTop: 1, width: CONTENT_BOX_WIDTH },
317
+ React.createElement(Box, { width: CONTENT_INNER_WIDTH },
318
+ React.createElement(Box, { width: BRANCH_COLUMN_WIDTH, paddingRight: 1 },
319
+ React.createElement(Text, { dimColor: true }, "Branch")),
320
+ React.createElement(Box, { width: LAST_WORKED_COLUMN_WIDTH, paddingRight: 1 },
321
+ React.createElement(Text, { dimColor: true }, "Last worked")),
322
+ React.createElement(Box, { flexGrow: 1 },
323
+ React.createElement(Text, { dimColor: true }, "Status"))),
324
+ showEmptyState ? (React.createElement(Box, { width: CONTENT_INNER_WIDTH },
325
+ React.createElement(Text, { dimColor: true, wrap: "truncate-end" }, filterMessage))) : (visibleWorktrees.map((worktree, idx) => {
326
+ const index = startIndex + idx;
327
+ const isSelected = index === selectedIndex;
328
+ const details = getWorktreeDetails(worktree);
329
+ return (React.createElement(Box, { key: worktree.branchName, width: CONTENT_INNER_WIDTH },
330
+ React.createElement(Box, { width: BRANCH_COLUMN_WIDTH, paddingRight: 1 },
331
+ React.createElement(Text, { color: isSelected ? POPUP_CONFIG.titleColor : 'white', bold: isSelected, wrap: "truncate-end" },
332
+ isSelected ? '▶ ' : ' ',
333
+ worktree.branchName)),
334
+ React.createElement(Box, { width: LAST_WORKED_COLUMN_WIDTH, paddingRight: 1 },
335
+ React.createElement(Text, { color: isSelected ? POPUP_CONFIG.titleColor : undefined, dimColor: !isSelected, wrap: "truncate-end" }, formatRelativeTime(worktree.lastModified))),
336
+ React.createElement(Box, { flexGrow: 1 },
337
+ React.createElement(Text, { color: worktree.hasUncommittedChanges ? 'yellow' : undefined, dimColor: !worktree.hasUncommittedChanges, wrap: "truncate-end" }, details || ' '))));
338
+ })),
339
+ Array.from({ length: emptyRows }).map((_, index) => (React.createElement(Box, { key: `empty-${index}`, width: CONTENT_INNER_WIDTH },
340
+ React.createElement(Text, null, " ")))),
341
+ React.createElement(Box, { width: CONTENT_INNER_WIDTH },
342
+ React.createElement(Text, { dimColor: true },
343
+ totalFilteredWorktrees,
344
+ " of ",
345
+ totalWorktrees,
346
+ " resumable branch",
347
+ totalWorktrees === 1 ? '' : 'es',
348
+ moreAbove ? ` • ${startIndex} above` : '',
349
+ moreBelow ? ` • ${totalFilteredWorktrees - endIndex} below` : '',
350
+ filterActive ? ' • filtered' : ''))))));
105
351
  };
106
352
  // Entry point
107
353
  function main() {
@@ -120,7 +366,16 @@ function main() {
120
366
  console.error('Error: Failed to read or parse data file');
121
367
  process.exit(1);
122
368
  }
123
- render(React.createElement(ReopenWorktreePopupApp, { resultFile: resultFile, worktrees: data.worktrees }));
369
+ render(React.createElement(ReopenWorktreePopupApp, { resultFile: resultFile, projectName: data.projectName, worktrees: data.worktrees, initialState: data.initialState ?? {
370
+ includeWorktrees: true,
371
+ includeLocalBranches: true,
372
+ includeRemoteBranches: false,
373
+ remoteLoaded: false,
374
+ filterQuery: '',
375
+ }, projectRoot: data.projectRoot, activePaneSlugs: data.activePaneSlugs }));
376
+ }
377
+ const entryPointHref = process.argv[1] ? pathToFileURL(process.argv[1]).href : '';
378
+ if (import.meta.url === entryPointHref) {
379
+ main();
124
380
  }
125
- main();
126
381
  //# sourceMappingURL=reopenWorktreePopup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reopenWorktreePopup.js","sourceRoot":"","sources":["../../../src/components/popups/reopenWorktreePopup.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reopenWorktreePopup.js","sourceRoot":"","sources":["../../../src/components/popups/reopenWorktreePopup.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import type { DmuxPane, SidebarProject } from "../types.js";
2
+ import type { TrackProjectActivity } from "../types/activity.js";
3
+ import { type ResumableBranchCandidate } from "../utils/resumeBranches.js";
2
4
  import type { PopupManager } from "../services/PopupManager.js";
3
5
  import { type ProjectActionItem } from "../utils/projectActions.js";
4
6
  import type { AgentName } from "../utils/agentLaunch.js";
@@ -40,12 +42,13 @@ interface UseInputHandlingParams {
40
42
  popupManager: PopupManager;
41
43
  actionSystem: ActionSystem;
42
44
  controlPaneId: string | undefined;
45
+ trackProjectActivity: TrackProjectActivity;
43
46
  setStatusMessage: (message: string) => void;
44
47
  copyNonGitFiles: (worktreePath: string, sourceProjectRoot?: string) => Promise<void>;
45
48
  runCommandInternal: (type: "test" | "dev", pane: DmuxPane) => Promise<void>;
46
49
  handlePaneCreationWithAgent: (prompt: string, targetProjectRoot?: string) => Promise<void>;
47
50
  handleCreateChildWorktree: (pane: DmuxPane) => Promise<void>;
48
- handleReopenWorktree: (slug: string, worktreePath: string, targetProjectRoot?: string) => Promise<void>;
51
+ handleReopenWorktree: (candidate: ResumableBranchCandidate, targetProjectRoot?: string) => Promise<void>;
49
52
  setDevSourceFromPane: (pane: DmuxPane) => Promise<void>;
50
53
  savePanes: (panes: DmuxPane[]) => Promise<void>;
51
54
  sidebarProjects: SidebarProject[];
@@ -1 +1 @@
1
- {"version":3,"file":"useInputHandling.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputHandling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useInputHandling.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputHandling.ts"],"names":[],"mappings":"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"}