@sascha384/tic 4.7.0 → 4.9.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.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +10 -1
- package/dist/app.js +4 -1
- package/dist/app.js.map +1 -1
- package/dist/branch-links.d.ts +7 -0
- package/dist/branch-links.js +13 -0
- package/dist/branch-links.js.map +1 -0
- package/dist/cli/commands/branch.d.ts +33 -0
- package/dist/cli/commands/branch.js +61 -0
- package/dist/cli/commands/branch.js.map +1 -0
- package/dist/cli/commands/mcp.js +64 -0
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/index.js +106 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/components/BranchList.d.ts +1 -0
- package/dist/components/BranchList.js +360 -0
- package/dist/components/BranchList.js.map +1 -0
- package/dist/components/CommandBar.d.ts +8 -0
- package/dist/components/CommandBar.js +142 -0
- package/dist/components/CommandBar.js.map +1 -0
- package/dist/components/ErrorBoundary.d.ts +1 -1
- package/dist/components/HelpScreen.js +29 -0
- package/dist/components/HelpScreen.js.map +1 -1
- package/dist/components/OverlayPanel.d.ts +1 -1
- package/dist/components/PullRequestList.js +73 -12
- package/dist/components/PullRequestList.js.map +1 -1
- package/dist/components/TableLayout.d.ts +26 -10
- package/dist/components/TableLayout.js +67 -146
- package/dist/components/TableLayout.js.map +1 -1
- package/dist/components/WorkItemList.js +110 -92
- package/dist/components/WorkItemList.js.map +1 -1
- package/dist/git-async.d.ts +10 -0
- package/dist/git-async.js +39 -0
- package/dist/git-async.js.map +1 -0
- package/dist/git.d.ts +24 -0
- package/dist/git.js +60 -0
- package/dist/git.js.map +1 -1
- package/dist/stores/backendDataStore.d.ts +5 -0
- package/dist/stores/backendDataStore.js +58 -0
- package/dist/stores/backendDataStore.js.map +1 -1
- package/dist/stores/navigationStore.d.ts +5 -1
- package/dist/stores/navigationStore.js +10 -0
- package/dist/stores/navigationStore.js.map +1 -1
- package/dist/test-helpers.d.ts +7 -0
- package/dist/test-helpers.js +208 -0
- package/dist/test-helpers.js.map +1 -0
- package/package.json +1 -1
|
@@ -2,147 +2,67 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import { memo, useMemo } from 'react';
|
|
3
3
|
import { Box, Text } from 'ink';
|
|
4
4
|
import { useThemeStore } from '../stores/themeStore.js';
|
|
5
|
-
import { ColorPill } from './ColorPill.js';
|
|
6
5
|
const gap = 2;
|
|
7
6
|
const MARKER_WIDTH = 2;
|
|
8
7
|
const TITLE_MIN_WIDTH = 30;
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (capabilities.fields.assignee &&
|
|
32
|
-
hasData(treeItems, 'assignee') &&
|
|
33
|
-
budget >= FIXED_ASSIGNEE + gap) {
|
|
34
|
-
showAssignee = true;
|
|
35
|
-
assignee = FIXED_ASSIGNEE;
|
|
36
|
-
budget -= assignee + gap;
|
|
37
|
-
}
|
|
38
|
-
let showStatus = false;
|
|
39
|
-
const status = FIXED_STATUS;
|
|
40
|
-
if (budget >= status + gap) {
|
|
41
|
-
showStatus = true;
|
|
42
|
-
budget -= status + gap;
|
|
8
|
+
function computeVisibleColumns(columns, items, terminalWidth, showMarker) {
|
|
9
|
+
const markerWidth = showMarker ? MARKER_WIDTH : 0;
|
|
10
|
+
// Find the flex column (width === -1)
|
|
11
|
+
const flexIndex = columns.findIndex((c) => c.width === -1);
|
|
12
|
+
// Start by computing required columns and their fixed widths
|
|
13
|
+
const result = columns.map((col) => ({
|
|
14
|
+
key: col.key,
|
|
15
|
+
header: col.header,
|
|
16
|
+
width: col.width === -1 ? 0 : col.width,
|
|
17
|
+
visible: false,
|
|
18
|
+
sortable: col.sortable ?? false,
|
|
19
|
+
}));
|
|
20
|
+
// Always show required columns
|
|
21
|
+
let usedWidth = markerWidth;
|
|
22
|
+
for (let i = 0; i < columns.length; i++) {
|
|
23
|
+
const col = columns[i];
|
|
24
|
+
if (col.required) {
|
|
25
|
+
result[i].visible = true;
|
|
26
|
+
if (col.width !== -1) {
|
|
27
|
+
usedWidth += col.width + gap;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
43
30
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
31
|
+
// Sort optional columns by descending hidePriority
|
|
32
|
+
const optionalIndices = columns
|
|
33
|
+
.map((col, i) => ({ col, i }))
|
|
34
|
+
.filter(({ col }) => !col.required && col.width !== -1)
|
|
35
|
+
.sort((a, b) => (b.col.hidePriority ?? 0) - (a.col.hidePriority ?? 0));
|
|
36
|
+
// Try to fit optional columns
|
|
37
|
+
for (const { col, i } of optionalIndices) {
|
|
38
|
+
// Skip if hasData returns false
|
|
39
|
+
if (col.hasData && !col.hasData(items))
|
|
40
|
+
continue;
|
|
41
|
+
const needed = col.width + gap;
|
|
42
|
+
if (usedWidth + needed + TITLE_MIN_WIDTH <= terminalWidth ||
|
|
43
|
+
flexIndex === -1) {
|
|
44
|
+
result[i].visible = true;
|
|
45
|
+
usedWidth += needed;
|
|
46
|
+
}
|
|
52
47
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
showPriority = true;
|
|
59
|
-
priority = FIXED_PRIORITY;
|
|
48
|
+
// Flex column gets remaining space
|
|
49
|
+
if (flexIndex !== -1) {
|
|
50
|
+
const flexWidth = Math.max(TITLE_MIN_WIDTH, terminalWidth - usedWidth);
|
|
51
|
+
result[flexIndex].width = flexWidth;
|
|
52
|
+
result[flexIndex].visible = true;
|
|
60
53
|
}
|
|
61
|
-
|
|
62
|
-
const titleWidth = terminalWidth -
|
|
63
|
-
MARKER_WIDTH -
|
|
64
|
-
id -
|
|
65
|
-
gap -
|
|
66
|
-
(showStatus ? status + gap : 0) -
|
|
67
|
-
(showAssignee ? assignee + gap : 0) -
|
|
68
|
-
(showLabels ? labels + gap : 0) -
|
|
69
|
-
(showPriority ? priority : 0);
|
|
70
|
-
return {
|
|
71
|
-
id,
|
|
72
|
-
title: titleWidth,
|
|
73
|
-
status,
|
|
74
|
-
priority,
|
|
75
|
-
assignee,
|
|
76
|
-
labels,
|
|
77
|
-
showPriority,
|
|
78
|
-
showAssignee,
|
|
79
|
-
showLabels,
|
|
80
|
-
showStatus,
|
|
81
|
-
};
|
|
54
|
+
return result;
|
|
82
55
|
}
|
|
83
|
-
const
|
|
56
|
+
const GenericTableRow = memo(function GenericTableRow({ item, selected, marked, columns, computedColumns, showMarker, }) {
|
|
84
57
|
const { accent, accentBg } = useThemeStore((s) => s.colors);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
for (const label of item.labels) {
|
|
94
|
-
// Each pill takes label.length + 2 (padding), plus 1 gap between pills
|
|
95
|
-
const pillWidth = label.length + 2;
|
|
96
|
-
const needed = usedWidth === 0 ? pillWidth : pillWidth + 1;
|
|
97
|
-
if (usedWidth + needed > maxWidth) {
|
|
98
|
-
const remaining = item.labels.length - rendered.length;
|
|
99
|
-
if (remaining > 0) {
|
|
100
|
-
return (_jsxs(Box, { gap: 1, children: [rendered.map((l) => (_jsx(ColorPill, { field: "label", value: l }, l))), _jsxs(Text, { dimColor: true, children: ["+", remaining] })] }));
|
|
101
|
-
}
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
rendered.push(label);
|
|
105
|
-
usedWidth += needed;
|
|
106
|
-
}
|
|
107
|
-
return (_jsx(Box, { gap: 1, children: rendered.map((l) => (_jsx(ColorPill, { field: "label", value: l }, l))) }));
|
|
108
|
-
})() })), columns.showPriority && (_jsx(Box, { width: columns.priority, overflowX: "hidden", children: item.priority ? (_jsx(ColorPill, { field: "priority", value: item.priority })) : (_jsx(Text, { children: " " })) }))] }));
|
|
109
|
-
}, (prev, next) => {
|
|
110
|
-
if (prev.selected !== next.selected)
|
|
111
|
-
return false;
|
|
112
|
-
if (prev.marked !== next.marked)
|
|
113
|
-
return false;
|
|
114
|
-
if (prev.collapseIndicator !== next.collapseIndicator)
|
|
115
|
-
return false;
|
|
116
|
-
if (prev.capabilities !== next.capabilities)
|
|
117
|
-
return false;
|
|
118
|
-
if (prev.columns !== next.columns)
|
|
119
|
-
return false;
|
|
120
|
-
const prevItem = prev.treeItem.item;
|
|
121
|
-
const nextItem = next.treeItem.item;
|
|
122
|
-
if (prevItem.id !== nextItem.id)
|
|
123
|
-
return false;
|
|
124
|
-
if (prevItem.status !== nextItem.status)
|
|
125
|
-
return false;
|
|
126
|
-
if (prevItem.title !== nextItem.title)
|
|
127
|
-
return false;
|
|
128
|
-
if (prevItem.priority !== nextItem.priority)
|
|
129
|
-
return false;
|
|
130
|
-
if (prevItem.assignee !== nextItem.assignee)
|
|
131
|
-
return false;
|
|
132
|
-
if (prev.treeItem.prefix !== next.treeItem.prefix)
|
|
133
|
-
return false;
|
|
134
|
-
if (prev.treeItem.isCrossType !== next.treeItem.isCrossType)
|
|
135
|
-
return false;
|
|
136
|
-
// labels array — compare by joined string
|
|
137
|
-
if (prevItem.labels.join(',') !== nextItem.labels.join(','))
|
|
138
|
-
return false;
|
|
139
|
-
// dependsOn length affects the deps indicator
|
|
140
|
-
if (prevItem.dependsOn.length !== nextItem.dependsOn.length)
|
|
141
|
-
return false;
|
|
142
|
-
// item.type affects typeLabel for cross-type items
|
|
143
|
-
if (prevItem.type !== nextItem.type)
|
|
144
|
-
return false;
|
|
145
|
-
return true;
|
|
58
|
+
return (_jsxs(Box, { ...(marked && !selected ? { backgroundColor: accentBg } : {}), children: [showMarker && (_jsx(Box, { width: MARKER_WIDTH, children: _jsx(Text, { color: accent, children: selected ? '>' : ' ' }) })), computedColumns.map((cc, i) => {
|
|
59
|
+
if (!cc.visible)
|
|
60
|
+
return null;
|
|
61
|
+
const colDef = columns[i];
|
|
62
|
+
const lastVisibleIndex = computedColumns.findLastIndex((c) => c.visible);
|
|
63
|
+
const isLast = i === lastVisibleIndex;
|
|
64
|
+
return (_jsx(Box, { width: cc.width, marginRight: isLast ? 0 : gap, overflowX: "hidden", children: colDef.render(item, selected) }, cc.key));
|
|
65
|
+
})] }));
|
|
146
66
|
});
|
|
147
67
|
function sortedHeaderLabel(baseLabel, column, sortStack) {
|
|
148
68
|
const idx = sortStack.findIndex((e) => e.column === column);
|
|
@@ -153,12 +73,21 @@ function sortedHeaderLabel(baseLabel, column, sortStack) {
|
|
|
153
73
|
const pos = sortStack.length > 1 ? `${idx + 1}` : '';
|
|
154
74
|
return `${baseLabel} ${pos}${arrow}`;
|
|
155
75
|
}
|
|
156
|
-
function TableLayoutInner({
|
|
76
|
+
function TableLayoutInner({ items, columns, cursor, terminalWidth, getKey, showMarker = true, isMarked, sortStack, }) {
|
|
157
77
|
const { mutedDim } = useThemeStore((s) => s.colors);
|
|
158
78
|
const ss = sortStack ?? [];
|
|
159
|
-
const
|
|
160
|
-
return (_jsxs(_Fragment, { children: [_jsxs(Box, { children: [
|
|
161
|
-
|
|
79
|
+
const computedColumns = useMemo(() => computeVisibleColumns(columns, items, terminalWidth, showMarker), [columns, items, terminalWidth, showMarker]);
|
|
80
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Box, { children: [showMarker && (_jsx(Box, { width: MARKER_WIDTH, children: _jsx(Text, { children: " " }) })), computedColumns.map((cc, i) => {
|
|
81
|
+
if (!cc.visible)
|
|
82
|
+
return null;
|
|
83
|
+
const lastVisibleIndex = computedColumns.findLastIndex((c) => c.visible);
|
|
84
|
+
const isLast = i === lastVisibleIndex;
|
|
85
|
+
return (_jsx(Box, { width: cc.width, marginRight: isLast ? 0 : gap, children: _jsx(Text, { bold: true, underline: true, children: cc.sortable
|
|
86
|
+
? sortedHeaderLabel(cc.header, cc.key, ss)
|
|
87
|
+
: cc.header }) }, cc.key));
|
|
88
|
+
})] }), (() => {
|
|
89
|
+
const visibleKeys = new Set(computedColumns.filter((c) => c.visible).map((c) => c.key));
|
|
90
|
+
const nonVisibleSorts = ss.filter((e) => !visibleKeys.has(e.column));
|
|
162
91
|
if (nonVisibleSorts.length === 0)
|
|
163
92
|
return null;
|
|
164
93
|
const parts = nonVisibleSorts.map((e) => {
|
|
@@ -169,15 +98,7 @@ function TableLayoutInner({ treeItems, cursor, capabilities, collapsedIds, marke
|
|
|
169
98
|
return `${label} ${pos}${arrow}`;
|
|
170
99
|
});
|
|
171
100
|
return (_jsx(Box, { children: _jsxs(Text, { dimColor: mutedDim, children: ["Sorted by: ", parts.join(', ')] }) }));
|
|
172
|
-
})(),
|
|
173
|
-
const { item, hasChildren } = treeItem;
|
|
174
|
-
const collapseIndicator = hasChildren
|
|
175
|
-
? collapsedIds.has(item.id)
|
|
176
|
-
? '▶ '
|
|
177
|
-
: '▼ '
|
|
178
|
-
: ' ';
|
|
179
|
-
return (_jsx(TableRow, { treeItem: treeItem, selected: idx === cursor, marked: markedIds.has(item.id), collapseIndicator: collapseIndicator, capabilities: capabilities, columns: columns }, `${item.id}-${item.type}`));
|
|
180
|
-
})] }));
|
|
101
|
+
})(), items.map((item, idx) => (_jsx(GenericTableRow, { item: item, selected: idx === cursor, marked: isMarked ? isMarked(item) : false, columns: columns, computedColumns: computedColumns, showMarker: showMarker }, getKey(item))))] }));
|
|
181
102
|
}
|
|
182
103
|
export const TableLayout = memo(TableLayoutInner);
|
|
183
104
|
//# sourceMappingURL=TableLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableLayout.js","sourceRoot":"","sources":["../../src/components/TableLayout.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TableLayout.js","sourceRoot":"","sources":["../../src/components/TableLayout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsxs as _jsxs,
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useMemo, useEffect, useCallback, useRef } from 'react';
|
|
3
3
|
import { Box, Text, useInput, useApp } from 'ink';
|
|
4
4
|
import { navigationStore, useNavigationStore, } from '../stores/navigationStore.js';
|
|
@@ -9,6 +9,7 @@ import { configStore, useConfigStore } from '../stores/configStore.js';
|
|
|
9
9
|
import { uiStore, useUIStore, getOverlayTargetIds } from '../stores/uiStore.js';
|
|
10
10
|
import { getMarkedDistribution } from './getMarkedDistribution.js';
|
|
11
11
|
import { TableLayout } from './TableLayout.js';
|
|
12
|
+
import { ColorPill } from './ColorPill.js';
|
|
12
13
|
import { useTerminalSize } from '../hooks/useTerminalSize.js';
|
|
13
14
|
import { useScrollViewport } from '../hooks/useScrollViewport.js';
|
|
14
15
|
import { useBackendDataStore, backendDataStore, } from '../stores/backendDataStore.js';
|
|
@@ -18,12 +19,108 @@ import { getVisibleCommands, } from '../commands.js';
|
|
|
18
19
|
import { OverlayPanel } from './OverlayPanel.js';
|
|
19
20
|
import { DetailPanel } from './DetailPanel.js';
|
|
20
21
|
import { undoStore } from '../stores/undoStore.js';
|
|
21
|
-
import {
|
|
22
|
+
import { CommandBar } from './CommandBar.js';
|
|
22
23
|
import { isSoftDeleteBackend } from '../backends/types.js';
|
|
23
24
|
import { filterStore, useFilterStore } from '../stores/filterStore.js';
|
|
24
25
|
import { useThemeStore } from '../stores/themeStore.js';
|
|
25
26
|
import { applyFilters, countActiveFilters, summarizeFilters, } from '../filters.js';
|
|
26
27
|
const EMPTY_VIEWS = [];
|
|
28
|
+
function buildWorkItemColumns(capabilities, collapsedIds, accent) {
|
|
29
|
+
const columns = [];
|
|
30
|
+
// ID column
|
|
31
|
+
columns.push({
|
|
32
|
+
key: 'id',
|
|
33
|
+
header: 'ID',
|
|
34
|
+
width: 4, // overridden dynamically via useMemo
|
|
35
|
+
required: true,
|
|
36
|
+
sortable: true,
|
|
37
|
+
render: (ti, selected) => (_jsx(Text, { color: selected ? accent : undefined, bold: selected, dimColor: ti.isCrossType && !selected, children: ti.item.id })),
|
|
38
|
+
});
|
|
39
|
+
// Title column (flex)
|
|
40
|
+
columns.push({
|
|
41
|
+
key: 'title',
|
|
42
|
+
header: 'Title',
|
|
43
|
+
width: -1,
|
|
44
|
+
required: true,
|
|
45
|
+
sortable: true,
|
|
46
|
+
render: (ti, selected) => {
|
|
47
|
+
const { item, prefix, isCrossType, hasChildren } = ti;
|
|
48
|
+
const collapseIndicator = hasChildren
|
|
49
|
+
? collapsedIds.has(item.id)
|
|
50
|
+
? '\u25B6 '
|
|
51
|
+
: '\u25BC '
|
|
52
|
+
: ' ';
|
|
53
|
+
const typeLabel = isCrossType ? ` (${item.type})` : '';
|
|
54
|
+
return (_jsxs(Text, { color: selected ? accent : undefined, bold: selected, dimColor: isCrossType && !selected, wrap: "truncate", children: [capabilities.relationships ? prefix : '', collapseIndicator, item.title, typeLabel] }));
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
// Status column
|
|
58
|
+
columns.push({
|
|
59
|
+
key: 'status',
|
|
60
|
+
header: 'Status',
|
|
61
|
+
width: 14,
|
|
62
|
+
hidePriority: 3,
|
|
63
|
+
sortable: true,
|
|
64
|
+
render: (ti, selected) => {
|
|
65
|
+
const hasUnresolvedDeps = ti.item.dependsOn.length > 0;
|
|
66
|
+
return (_jsxs(_Fragment, { children: [capabilities.fields.dependsOn && hasUnresolvedDeps && (_jsxs(Text, { dimColor: ti.isCrossType && !selected, children: ['\u29D7', " "] })), _jsx(ColorPill, { field: "status", value: ti.item.status })] }));
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
// Assignee column (conditional)
|
|
70
|
+
if (capabilities.fields.assignee) {
|
|
71
|
+
columns.push({
|
|
72
|
+
key: 'assignee',
|
|
73
|
+
header: 'Assignee',
|
|
74
|
+
width: 20,
|
|
75
|
+
hidePriority: 4,
|
|
76
|
+
sortable: true,
|
|
77
|
+
hasData: (items) => items.some(({ item }) => !!item.assignee),
|
|
78
|
+
render: (ti, selected) => (_jsx(Text, { color: selected ? accent : undefined, bold: selected, dimColor: ti.isCrossType && !selected, wrap: "truncate", children: ti.item.assignee })),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// Labels column (conditional)
|
|
82
|
+
if (capabilities.fields.labels) {
|
|
83
|
+
columns.push({
|
|
84
|
+
key: 'labels',
|
|
85
|
+
header: 'Labels',
|
|
86
|
+
width: 20,
|
|
87
|
+
hidePriority: 2,
|
|
88
|
+
hasData: (items) => items.some(({ item }) => item.labels.length > 0),
|
|
89
|
+
render: (ti) => {
|
|
90
|
+
const maxWidth = 20;
|
|
91
|
+
const rendered = [];
|
|
92
|
+
let usedWidth = 0;
|
|
93
|
+
for (const label of ti.item.labels) {
|
|
94
|
+
const pillWidth = label.length + 2;
|
|
95
|
+
const needed = usedWidth === 0 ? pillWidth : pillWidth + 1;
|
|
96
|
+
if (usedWidth + needed > maxWidth) {
|
|
97
|
+
const remaining = ti.item.labels.length - rendered.length;
|
|
98
|
+
if (remaining > 0) {
|
|
99
|
+
return (_jsxs(Box, { gap: 1, children: [rendered.map((l) => (_jsx(ColorPill, { field: "label", value: l }, l))), _jsxs(Text, { dimColor: true, children: ["+", remaining] })] }));
|
|
100
|
+
}
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
rendered.push(label);
|
|
104
|
+
usedWidth += needed;
|
|
105
|
+
}
|
|
106
|
+
return (_jsx(Box, { gap: 1, children: rendered.map((l) => (_jsx(ColorPill, { field: "label", value: l }, l))) }));
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
// Priority column (conditional)
|
|
111
|
+
if (capabilities.fields.priority) {
|
|
112
|
+
columns.push({
|
|
113
|
+
key: 'priority',
|
|
114
|
+
header: 'Priority',
|
|
115
|
+
width: 12,
|
|
116
|
+
hidePriority: 1,
|
|
117
|
+
sortable: true,
|
|
118
|
+
hasData: (items) => items.some(({ item }) => !!item.priority),
|
|
119
|
+
render: (ti) => ti.item.priority ? (_jsx(ColorPill, { field: "priority", value: ti.item.priority })) : (_jsx(Text, { children: " " })),
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return columns;
|
|
123
|
+
}
|
|
27
124
|
export function getTargetIds(markedIds, cursorItem) {
|
|
28
125
|
if (markedIds.size > 0) {
|
|
29
126
|
return [...markedIds];
|
|
@@ -102,11 +199,9 @@ export function WorkItemList() {
|
|
|
102
199
|
const filterCount = useMemo(() => countActiveFilters(activeFilters), [activeFilters]);
|
|
103
200
|
const { setCursor, toggleExpanded, toggleMarked, clearMarked, setMarkedIds, setRangeAnchor, clampCursor, removeDeletedItem, toggleSortColumn, clearSort, } = listViewStore.getState();
|
|
104
201
|
// Local state for inputs and templates
|
|
105
|
-
const [allSearchItems, setAllSearchItems] = useState([]);
|
|
106
202
|
const [templates, setTemplates] = useState([]);
|
|
107
203
|
const [showFullDescription, setShowFullDescription] = useState(false);
|
|
108
204
|
const [descriptionScrollOffset, setDescriptionScrollOffset] = useState(0);
|
|
109
|
-
const [commandBarQuery, setCommandBarQuery] = useState('');
|
|
110
205
|
// UI overlay state from store
|
|
111
206
|
const { activeOverlay, warning, toast } = useUIStore(useShallow((s) => ({
|
|
112
207
|
activeOverlay: s.activeOverlay,
|
|
@@ -268,25 +363,6 @@ export function WorkItemList() {
|
|
|
268
363
|
setShowFullDescription(false);
|
|
269
364
|
setDescriptionScrollOffset(0);
|
|
270
365
|
}, [cursor]);
|
|
271
|
-
useEffect(() => {
|
|
272
|
-
if (activeOverlay?.type !== 'command-bar' || !backend)
|
|
273
|
-
return;
|
|
274
|
-
let cancelled = false;
|
|
275
|
-
void backend
|
|
276
|
-
.listWorkItems()
|
|
277
|
-
.then((items) => {
|
|
278
|
-
if (!cancelled)
|
|
279
|
-
setAllSearchItems(items);
|
|
280
|
-
})
|
|
281
|
-
.catch((err) => {
|
|
282
|
-
uiStore
|
|
283
|
-
.getState()
|
|
284
|
-
.setToast(err instanceof Error ? err.message : 'Failed to load items');
|
|
285
|
-
});
|
|
286
|
-
return () => {
|
|
287
|
-
cancelled = true;
|
|
288
|
-
};
|
|
289
|
-
}, [activeOverlay?.type, backend]);
|
|
290
366
|
// Description viewport calculation
|
|
291
367
|
const currentItem = treeItems[cursor]?.item;
|
|
292
368
|
const descriptionLines = currentItem?.description?.split('\n') ?? [];
|
|
@@ -428,6 +504,10 @@ export function WorkItemList() {
|
|
|
428
504
|
navigate('pr-list');
|
|
429
505
|
return;
|
|
430
506
|
}
|
|
507
|
+
if (input === 'B' && gitAvailable) {
|
|
508
|
+
navigate('branch-list');
|
|
509
|
+
return;
|
|
510
|
+
}
|
|
431
511
|
if (input === ',') {
|
|
432
512
|
if (updateInfo?.updateAvailable) {
|
|
433
513
|
setSettingsInitialFocus('update-now');
|
|
@@ -661,12 +741,6 @@ export function WorkItemList() {
|
|
|
661
741
|
}
|
|
662
742
|
}
|
|
663
743
|
}, { isActive: activeOverlay === null && !showFullDescription });
|
|
664
|
-
const handleSearchSelect = (item) => {
|
|
665
|
-
setCommandBarQuery('');
|
|
666
|
-
closeOverlay();
|
|
667
|
-
selectWorkItem(item.id);
|
|
668
|
-
navigate('form');
|
|
669
|
-
};
|
|
670
744
|
const commandContext = {
|
|
671
745
|
screen: 'list',
|
|
672
746
|
markedCount: markedIds.size,
|
|
@@ -688,52 +762,6 @@ export function WorkItemList() {
|
|
|
688
762
|
syncManager,
|
|
689
763
|
gitAvailable,
|
|
690
764
|
]);
|
|
691
|
-
const recentIds = useRecentCommandsStore((s) => s.recentIds);
|
|
692
|
-
const commandBarItems = useMemo(() => {
|
|
693
|
-
const query = commandBarQuery.toLowerCase();
|
|
694
|
-
// Build command items (recent + categorized)
|
|
695
|
-
const commandMap = new Map(paletteCommands.map((c) => [c.id, c]));
|
|
696
|
-
const recentItems = [];
|
|
697
|
-
for (const id of recentIds) {
|
|
698
|
-
const cmd = commandMap.get(id);
|
|
699
|
-
if (cmd) {
|
|
700
|
-
recentItems.push({
|
|
701
|
-
id: `recent-${cmd.id}`,
|
|
702
|
-
label: cmd.label,
|
|
703
|
-
value: cmd.id,
|
|
704
|
-
category: 'Recent',
|
|
705
|
-
kind: 'command',
|
|
706
|
-
});
|
|
707
|
-
}
|
|
708
|
-
}
|
|
709
|
-
const commandItems = paletteCommands.map((cmd) => ({
|
|
710
|
-
id: cmd.id,
|
|
711
|
-
label: cmd.label,
|
|
712
|
-
value: cmd.id,
|
|
713
|
-
category: cmd.category,
|
|
714
|
-
kind: 'command',
|
|
715
|
-
}));
|
|
716
|
-
let allItems = [...recentItems, ...commandItems];
|
|
717
|
-
// Filter commands by query
|
|
718
|
-
if (query) {
|
|
719
|
-
allItems = allItems.filter((item) => item.label.toLowerCase().includes(query));
|
|
720
|
-
// Add up to 5 matching issues
|
|
721
|
-
const matchingIssues = allSearchItems
|
|
722
|
-
.filter((item) => item.title.toLowerCase().includes(query) ||
|
|
723
|
-
item.id.toLowerCase().includes(query))
|
|
724
|
-
.slice(0, 5)
|
|
725
|
-
.map((item) => ({
|
|
726
|
-
id: `issue-${item.id}`,
|
|
727
|
-
label: `#${item.id} ${item.title}`,
|
|
728
|
-
value: item.id,
|
|
729
|
-
hint: item.type,
|
|
730
|
-
category: 'Issues',
|
|
731
|
-
kind: 'issue',
|
|
732
|
-
}));
|
|
733
|
-
allItems = [...allItems, ...matchingIssues];
|
|
734
|
-
}
|
|
735
|
-
return allItems;
|
|
736
|
-
}, [paletteCommands, recentIds, commandBarQuery, allSearchItems]);
|
|
737
765
|
const sortPickerItems = useMemo(() => {
|
|
738
766
|
const columns = [
|
|
739
767
|
{ column: 'id', label: 'ID' },
|
|
@@ -870,9 +898,7 @@ export function WorkItemList() {
|
|
|
870
898
|
return items;
|
|
871
899
|
}, [savedViews, defaultView, activeViewName, lastViewName, filterCount]);
|
|
872
900
|
const handleCommandSelect = (command) => {
|
|
873
|
-
setCommandBarQuery('');
|
|
874
901
|
closeOverlay();
|
|
875
|
-
recentCommandsStore.getState().addRecent(command.id);
|
|
876
902
|
switch (command.id) {
|
|
877
903
|
case 'create':
|
|
878
904
|
selectWorkItem(null);
|
|
@@ -1064,24 +1090,16 @@ export function WorkItemList() {
|
|
|
1064
1090
|
? activeType.charAt(0).toUpperCase() + activeType.slice(1) + 's'
|
|
1065
1091
|
: '';
|
|
1066
1092
|
const visibleTreeItems = useMemo(() => treeItems.slice(viewport.start, viewport.end), [treeItems, viewport.start, viewport.end]);
|
|
1093
|
+
const workItemColumns = useMemo(() => {
|
|
1094
|
+
const maxIdLen = visibleTreeItems.reduce((max, { item }) => Math.max(max, item.id.length), 2);
|
|
1095
|
+
const cols = buildWorkItemColumns(capabilities, collapsedIds, accent);
|
|
1096
|
+
cols[0].width = maxIdLen + 2;
|
|
1097
|
+
return cols;
|
|
1098
|
+
}, [visibleTreeItems, capabilities, collapsedIds, accent]);
|
|
1067
1099
|
const positionText = treeItems.length > viewport.maxVisible
|
|
1068
1100
|
? `${cursor + 1}/${treeItems.length}`
|
|
1069
1101
|
: '';
|
|
1070
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { wrap: "truncate", children: [_jsxs(Text, { bold: true, color: accent, children: [typeLabel, " \u2014 ", iteration] }), _jsx(Text, { dimColor: mutedDim, children: ` (${filterCount > 0 ? `${items.length}/${unfilteredCount}` : items.length} item${unfilteredCount === 1 ? '' : 's'})` }), markedCount > 0 && (_jsxs(Text, { color: marked, children: [` ● ${markedCount}`, markedDistribution.above > 0 && ` ↑${markedDistribution.above}`, markedDistribution.below > 0 && ` ↓${markedDistribution.below}`] })), filterCount > 0 && (_jsx(Text, { color: warningColor, children: ` [${filterCount} filter${filterCount === 1 ? '' : 's'}${activeViewName ? `: ${activeViewName}` : ''}]` }))] }) }), _jsx(TableLayout, {
|
|
1071
|
-
if (item.kind === 'issue') {
|
|
1072
|
-
const workItem = allSearchItems.find((i) => i.id === item.value);
|
|
1073
|
-
if (workItem)
|
|
1074
|
-
handleSearchSelect(workItem);
|
|
1075
|
-
}
|
|
1076
|
-
else {
|
|
1077
|
-
const cmd = paletteCommands.find((c) => c.id === item.value);
|
|
1078
|
-
if (cmd)
|
|
1079
|
-
handleCommandSelect(cmd);
|
|
1080
|
-
}
|
|
1081
|
-
}, onCancel: () => {
|
|
1082
|
-
setCommandBarQuery('');
|
|
1083
|
-
closeOverlay();
|
|
1084
|
-
} })) : activeOverlay?.type === 'bulk-menu' ? ((() => {
|
|
1102
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { wrap: "truncate", children: [_jsxs(Text, { bold: true, color: accent, children: [typeLabel, " \u2014 ", iteration] }), _jsx(Text, { dimColor: mutedDim, children: ` (${filterCount > 0 ? `${items.length}/${unfilteredCount}` : items.length} item${unfilteredCount === 1 ? '' : 's'})` }), markedCount > 0 && (_jsxs(Text, { color: marked, children: [` ● ${markedCount}`, markedDistribution.above > 0 && ` ↑${markedDistribution.above}`, markedDistribution.below > 0 && ` ↓${markedDistribution.below}`] })), filterCount > 0 && (_jsx(Text, { color: warningColor, children: ` [${filterCount} filter${filterCount === 1 ? '' : 's'}${activeViewName ? `: ${activeViewName}` : ''}]` }))] }) }), _jsx(TableLayout, { items: visibleTreeItems, columns: workItemColumns, cursor: viewport.visibleCursor, terminalWidth: terminalWidth, getKey: (ti) => `${ti.item.id}-${ti.item.type}`, isMarked: (ti) => markedIds.has(ti.item.id), sortStack: sortStack }), treeItems.length === 0 && !loading && initError && (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: errorColor, children: "Failed to connect to backend:" }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: errorColor, children: initError }) }), _jsx(Text, { dimColor: mutedDim, children: "Press , for settings or q to quit." })] })), treeItems.length === 0 && !loading && !initError && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: mutedDim, children: ["No ", activeType ?? 'item', "s in this iteration. Press c to create, / to search all."] }) })), loading && treeItems.length === 0 && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: mutedDim, children: "Loading..." }) })), showDetailPanel && treeItems.length > 0 && treeItems[cursor] && (_jsx(Box, { marginTop: 1, children: _jsx(DetailPanel, { item: treeItems[cursor].item, terminalWidth: terminalWidth, showFullDescription: showFullDescription, descriptionScrollOffset: descriptionScrollOffset, maxDescriptionHeight: maxDescriptionHeight }) })), _jsx(Box, { marginTop: 1, children: showFullDescription ? (_jsxs(Box, { children: [_jsx(Text, { dimColor: mutedDim, children: "\u2191\u2193 scroll space/esc close" }), positionText && _jsxs(Text, { dimColor: mutedDim, children: [" ", positionText] })] })) : activeOverlay?.type === 'command-bar' ? (_jsx(CommandBar, { commands: paletteCommands, onCommand: handleCommandSelect, onCancel: closeOverlay })) : activeOverlay?.type === 'bulk-menu' ? ((() => {
|
|
1085
1103
|
const bulkItems = [];
|
|
1086
1104
|
bulkItems.push({
|
|
1087
1105
|
id: 'status',
|