@brainfile/cli 0.13.3 → 0.15.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.
- package/CHANGELOG.md +50 -0
- package/README.md +129 -354
- package/dist/cli.js +91 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts +3 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +163 -3
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/adr.d.ts +22 -0
- package/dist/commands/adr.d.ts.map +1 -0
- package/dist/commands/adr.js +182 -0
- package/dist/commands/adr.js.map +1 -0
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +147 -0
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/complete.d.ts +30 -0
- package/dist/commands/complete.d.ts.map +1 -0
- package/dist/commands/complete.js +254 -0
- package/dist/commands/complete.js.map +1 -0
- package/dist/commands/contract.d.ts.map +1 -1
- package/dist/commands/contract.js +2 -0
- package/dist/commands/contract.js.map +1 -1
- package/dist/commands/delete.d.ts.map +1 -1
- package/dist/commands/delete.js +29 -1
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +38 -19
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts +1 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +35 -12
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/log.d.ts +52 -0
- package/dist/commands/log.d.ts.map +1 -0
- package/dist/commands/log.js +246 -0
- package/dist/commands/log.js.map +1 -0
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +864 -44
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/migrate.d.ts +4 -3
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +225 -33
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/move.d.ts.map +1 -1
- package/dist/commands/move.js +90 -0
- package/dist/commands/move.js.map +1 -1
- package/dist/commands/patch.d.ts.map +1 -1
- package/dist/commands/patch.js +85 -13
- package/dist/commands/patch.js.map +1 -1
- package/dist/commands/search.d.ts +33 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +209 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +75 -1
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/subtask.d.ts.map +1 -1
- package/dist/commands/subtask.js +72 -5
- package/dist/commands/subtask.js.map +1 -1
- package/dist/commands/tui.d.ts.map +1 -1
- package/dist/commands/tui.js +10 -0
- package/dist/commands/tui.js.map +1 -1
- package/dist/commands/types.d.ts +40 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +242 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/contractRunner.d.ts.map +1 -1
- package/dist/lib/contractRunner.js +177 -12
- package/dist/lib/contractRunner.js.map +1 -1
- package/dist/schemas/board.json +105 -18
- package/dist/tui/BrainfileTUI.d.ts.map +1 -1
- package/dist/tui/BrainfileTUI.js +23 -20
- package/dist/tui/BrainfileTUI.js.map +1 -1
- package/dist/tui/actions.d.ts +5 -5
- package/dist/tui/actions.d.ts.map +1 -1
- package/dist/tui/actions.js +335 -47
- package/dist/tui/actions.js.map +1 -1
- package/dist/tui/components/ArchivePanel.js +1 -1
- package/dist/tui/components/ArchivePanel.js.map +1 -1
- package/dist/tui/components/ColumnTabs.d.ts.map +1 -1
- package/dist/tui/components/ColumnTabs.js +6 -2
- package/dist/tui/components/ColumnTabs.js.map +1 -1
- package/dist/tui/components/HelpOverlay.js +3 -3
- package/dist/tui/components/HelpOverlay.js.map +1 -1
- package/dist/tui/components/LogsPanel.d.ts +16 -0
- package/dist/tui/components/LogsPanel.d.ts.map +1 -0
- package/dist/tui/components/LogsPanel.js +115 -0
- package/dist/tui/components/LogsPanel.js.map +1 -0
- package/dist/tui/components/MainPanelTabs.d.ts +2 -2
- package/dist/tui/components/MainPanelTabs.d.ts.map +1 -1
- package/dist/tui/components/MainPanelTabs.js +3 -3
- package/dist/tui/components/MainPanelTabs.js.map +1 -1
- package/dist/tui/components/StackedTaskList.d.ts +2 -1
- package/dist/tui/components/StackedTaskList.d.ts.map +1 -1
- package/dist/tui/components/StackedTaskList.js +9 -9
- package/dist/tui/components/StackedTaskList.js.map +1 -1
- package/dist/tui/components/TaskCard.d.ts +2 -1
- package/dist/tui/components/TaskCard.d.ts.map +1 -1
- package/dist/tui/components/TaskCard.js +41 -5
- package/dist/tui/components/TaskCard.js.map +1 -1
- package/dist/tui/components/TaskCardMeasure.d.ts +2 -16
- package/dist/tui/components/TaskCardMeasure.d.ts.map +1 -1
- package/dist/tui/components/TaskCardMeasure.js +30 -25
- package/dist/tui/components/TaskCardMeasure.js.map +1 -1
- package/dist/tui/components/TaskDetail.d.ts +2 -3
- package/dist/tui/components/TaskDetail.d.ts.map +1 -1
- package/dist/tui/components/TaskDetail.js +35 -12
- package/dist/tui/components/TaskDetail.js.map +1 -1
- package/dist/tui/components/TaskList.d.ts +2 -1
- package/dist/tui/components/TaskList.d.ts.map +1 -1
- package/dist/tui/components/TaskList.js +5 -5
- package/dist/tui/components/TaskList.js.map +1 -1
- package/dist/tui/components/index.d.ts +2 -2
- package/dist/tui/components/index.d.ts.map +1 -1
- package/dist/tui/components/index.js +3 -3
- package/dist/tui/components/index.js.map +1 -1
- package/dist/tui/hooks/useBrainfileLoader.d.ts.map +1 -1
- package/dist/tui/hooks/useBrainfileLoader.js +97 -31
- package/dist/tui/hooks/useBrainfileLoader.js.map +1 -1
- package/dist/tui/hooks/useKeyboardNavigation.d.ts.map +1 -1
- package/dist/tui/hooks/useKeyboardNavigation.js +47 -47
- package/dist/tui/hooks/useKeyboardNavigation.js.map +1 -1
- package/dist/tui/types.d.ts +7 -7
- package/dist/tui/types.d.ts.map +1 -1
- package/dist/utils/board-types.d.ts +13 -0
- package/dist/utils/board-types.d.ts.map +1 -0
- package/dist/utils/board-types.js +7 -0
- package/dist/utils/board-types.js.map +1 -0
- package/dist/utils/dot-brainfile.d.ts +9 -0
- package/dist/utils/dot-brainfile.d.ts.map +1 -0
- package/dist/utils/dot-brainfile.js +74 -0
- package/dist/utils/dot-brainfile.js.map +1 -0
- package/dist/utils/strict-validation.d.ts +8 -0
- package/dist/utils/strict-validation.d.ts.map +1 -0
- package/dist/utils/strict-validation.js +41 -0
- package/dist/utils/strict-validation.js.map +1 -0
- package/dist/utils/v2-detect.d.ts +28 -0
- package/dist/utils/v2-detect.d.ts.map +1 -0
- package/dist/utils/v2-detect.js +112 -0
- package/dist/utils/v2-detect.js.map +1 -0
- package/dist/utils/v2-tasks.d.ts +121 -0
- package/dist/utils/v2-tasks.d.ts.map +1 -0
- package/dist/utils/v2-tasks.js +384 -0
- package/dist/utils/v2-tasks.js.map +1 -0
- package/dist/utils/workspace-format.d.ts +25 -0
- package/dist/utils/workspace-format.d.ts.map +1 -0
- package/dist/utils/workspace-format.js +106 -0
- package/dist/utils/workspace-format.js.map +1 -0
- package/package.json +3 -3
- package/state.json +3 -0
|
@@ -21,7 +21,7 @@ function flattenTasks(columns) {
|
|
|
21
21
|
const flat = [];
|
|
22
22
|
let globalIndex = 0;
|
|
23
23
|
for (const col of columns) {
|
|
24
|
-
for (const task of col.tasks) {
|
|
24
|
+
for (const task of (col.tasks ?? [])) {
|
|
25
25
|
flat.push({
|
|
26
26
|
task,
|
|
27
27
|
columnId: col.id,
|
|
@@ -33,7 +33,7 @@ function flattenTasks(columns) {
|
|
|
33
33
|
}
|
|
34
34
|
return flat;
|
|
35
35
|
}
|
|
36
|
-
function StackedTaskList({ columns, selectedGlobalIndex, expandedIds, viewportHeight, termWidth, }) {
|
|
36
|
+
function StackedTaskList({ columns, allTasks = [], selectedGlobalIndex, expandedIds, viewportHeight, termWidth, }) {
|
|
37
37
|
const cardWidth = termWidth - 4;
|
|
38
38
|
const contentWidth = cardWidth - 6;
|
|
39
39
|
// Flatten all tasks
|
|
@@ -54,11 +54,11 @@ function StackedTaskList({ columns, selectedGlobalIndex, expandedIds, viewportHe
|
|
|
54
54
|
if (i === 0 || flatTasks[i - 1].columnId !== ft.columnId) {
|
|
55
55
|
heightBeforeSelected += 2; // header + margin
|
|
56
56
|
}
|
|
57
|
-
heightBeforeSelected += (0, TaskCardMeasure_js_1.getTaskCardHeight)(ft.task, isExpanded, contentWidth);
|
|
57
|
+
heightBeforeSelected += (0, TaskCardMeasure_js_1.getTaskCardHeight)(ft.task, isExpanded, contentWidth, allTasks);
|
|
58
58
|
}
|
|
59
59
|
const selectedFlatTask = flatTasks[selectedGlobalIndex];
|
|
60
60
|
const selectedHeight = selectedFlatTask
|
|
61
|
-
? (0, TaskCardMeasure_js_1.getTaskCardHeight)(selectedFlatTask.task, expandedIds.has(selectedFlatTask.task.id), contentWidth)
|
|
61
|
+
? (0, TaskCardMeasure_js_1.getTaskCardHeight)(selectedFlatTask.task, expandedIds.has(selectedFlatTask.task.id), contentWidth, allTasks)
|
|
62
62
|
: 5;
|
|
63
63
|
if (heightBeforeSelected + selectedHeight > viewportHeight) {
|
|
64
64
|
scrollOffset = selectedGlobalIndex;
|
|
@@ -90,22 +90,22 @@ function StackedTaskList({ columns, selectedGlobalIndex, expandedIds, viewportHe
|
|
|
90
90
|
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent, bold: true }, ft.columnTitle.toUpperCase()),
|
|
91
91
|
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim },
|
|
92
92
|
" (",
|
|
93
|
-
columns.find(c => c.id === ft.columnId)?.tasks
|
|
93
|
+
columns.find(c => c.id === ft.columnId)?.tasks?.length || 0,
|
|
94
94
|
")")));
|
|
95
|
-
linesUsed +=
|
|
95
|
+
linesUsed += 1;
|
|
96
96
|
lastColumnId = ft.columnId;
|
|
97
97
|
}
|
|
98
|
-
const taskLines = (0, TaskCardMeasure_js_1.getTaskCardHeight)(ft.task, isExpanded, contentWidth);
|
|
98
|
+
const taskLines = (0, TaskCardMeasure_js_1.getTaskCardHeight)(ft.task, isExpanded, contentWidth, allTasks);
|
|
99
99
|
// Always include selected task
|
|
100
100
|
if (isSelected) {
|
|
101
101
|
visibleItems.push(react_1.default.createElement(ink_1.Box, { key: ft.task.id, marginTop: visibleItems.length > 0 ? 1 : 0 },
|
|
102
|
-
react_1.default.createElement(TaskCard_js_1.TaskCard, { task: ft.task, isSelected: true, isExpanded: isExpanded, width: cardWidth, hideTagsWhenCollapsed: true, showContractBadge: true })));
|
|
102
|
+
react_1.default.createElement(TaskCard_js_1.TaskCard, { task: ft.task, allTasks: allTasks, isSelected: true, isExpanded: isExpanded, width: cardWidth, hideTagsWhenCollapsed: true, showContractBadge: true })));
|
|
103
103
|
linesUsed += taskLines;
|
|
104
104
|
continue;
|
|
105
105
|
}
|
|
106
106
|
if (linesUsed + taskLines <= viewportHeight) {
|
|
107
107
|
visibleItems.push(react_1.default.createElement(ink_1.Box, { key: ft.task.id, marginTop: 1 },
|
|
108
|
-
react_1.default.createElement(TaskCard_js_1.TaskCard, { task: ft.task, isSelected: false, isExpanded: isExpanded, width: cardWidth, hideTagsWhenCollapsed: true, showContractBadge: true })));
|
|
108
|
+
react_1.default.createElement(TaskCard_js_1.TaskCard, { task: ft.task, allTasks: allTasks, isSelected: false, isExpanded: isExpanded, width: cardWidth, hideTagsWhenCollapsed: true, showContractBadge: true })));
|
|
109
109
|
linesUsed += taskLines;
|
|
110
110
|
}
|
|
111
111
|
else if (linesUsed > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackedTaskList.js","sourceRoot":"","sources":["../../../src/tui/components/StackedTaskList.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"StackedTaskList.js","sourceRoot":"","sources":["../../../src/tui/components/StackedTaskList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -15,10 +15,11 @@ export interface TaskCardProps {
|
|
|
15
15
|
isSelected: boolean;
|
|
16
16
|
isExpanded: boolean;
|
|
17
17
|
width: number;
|
|
18
|
+
allTasks?: Task[];
|
|
18
19
|
/** Hide tags in meta row when collapsed (for narrow/stacked mode) */
|
|
19
20
|
hideTagsWhenCollapsed?: boolean;
|
|
20
21
|
/** Show contract badge in the title row (tasks with contracts only) */
|
|
21
22
|
showContractBadge?: boolean;
|
|
22
23
|
}
|
|
23
|
-
export declare function TaskCard({ task, isSelected, isExpanded, width, hideTagsWhenCollapsed, showContractBadge, }: TaskCardProps): React.JSX.Element;
|
|
24
|
+
export declare function TaskCard({ task, isSelected, isExpanded, width, allTasks, hideTagsWhenCollapsed, showContractBadge, }: TaskCardProps): React.JSX.Element;
|
|
24
25
|
//# sourceMappingURL=TaskCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskCard.d.ts","sourceRoot":"","sources":["../../../src/tui/components/TaskCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAM5C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"TaskCard.d.ts","sourceRoot":"","sources":["../../../src/tui/components/TaskCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAM5C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IAClB,qEAAqE;IACrE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAkID,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,UAAU,EACV,UAAU,EACV,KAAK,EACL,QAAa,EACb,qBAA6B,EAC7B,iBAAwB,GACzB,EAAE,aAAa,qBAuJf"}
|
|
@@ -37,6 +37,31 @@ function PriorityBadge({ priority }) {
|
|
|
37
37
|
const label = abbrev[priority.toLowerCase()] || priority.toUpperCase().slice(0, 4);
|
|
38
38
|
return (react_1.default.createElement(ink_1.Text, { color: "black", backgroundColor: color, bold: true }, ` ${label} `));
|
|
39
39
|
}
|
|
40
|
+
function getTypeBadgeColor(type) {
|
|
41
|
+
switch (type.toLowerCase()) {
|
|
42
|
+
case 'epic':
|
|
43
|
+
return 'cyan';
|
|
44
|
+
case 'adr':
|
|
45
|
+
return 'yellow';
|
|
46
|
+
default:
|
|
47
|
+
return 'gray';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function getTypeBadgeLabel(type) {
|
|
51
|
+
if (!type)
|
|
52
|
+
return null;
|
|
53
|
+
const normalized = type.toLowerCase();
|
|
54
|
+
if (normalized === 'task')
|
|
55
|
+
return null;
|
|
56
|
+
return `[${normalized}]`;
|
|
57
|
+
}
|
|
58
|
+
/** Type badge for non-default task types */
|
|
59
|
+
function TypeBadge({ type }) {
|
|
60
|
+
const label = getTypeBadgeLabel(type);
|
|
61
|
+
if (!label)
|
|
62
|
+
return null;
|
|
63
|
+
return react_1.default.createElement(ink_1.Text, { color: getTypeBadgeColor(type) }, label);
|
|
64
|
+
}
|
|
40
65
|
/** Compact bracketed progress count [X/Y] */
|
|
41
66
|
function SubtaskCount({ completed, total }) {
|
|
42
67
|
if (total === 0)
|
|
@@ -105,15 +130,21 @@ function getContractStatusColor(status) {
|
|
|
105
130
|
// ============================================================================
|
|
106
131
|
// Main TaskCard Component
|
|
107
132
|
// ============================================================================
|
|
108
|
-
function TaskCard({ task, isSelected, isExpanded, width, hideTagsWhenCollapsed = false, showContractBadge =
|
|
133
|
+
function TaskCard({ task, isSelected, isExpanded, width, allTasks = [], hideTagsWhenCollapsed = false, showContractBadge = true, }) {
|
|
109
134
|
const subtasks = task.subtasks || [];
|
|
110
135
|
const completedSubtasks = subtasks.filter(s => s.completed).length;
|
|
136
|
+
const parentId = task.parentId;
|
|
111
137
|
// Indicator width: " ▌ " = 4 chars for selected, " " = 4 chars for not
|
|
112
138
|
const indicatorWidth = 4;
|
|
113
139
|
const contentWidth = width - indicatorWidth - 2; // -2 for right padding
|
|
114
140
|
// Build meta segments for row 2
|
|
115
|
-
// Order:
|
|
141
|
+
// Order: parent -> date -> tags
|
|
116
142
|
const metaSegments = [];
|
|
143
|
+
if (parentId) {
|
|
144
|
+
metaSegments.push(react_1.default.createElement(ink_1.Text, { key: "parent", color: theme_js_1.PALETTE.textDim },
|
|
145
|
+
"Child of: ",
|
|
146
|
+
parentId));
|
|
147
|
+
}
|
|
117
148
|
if (task.dueDate) {
|
|
118
149
|
metaSegments.push(react_1.default.createElement(DueDate, { key: "due", dueDate: task.dueDate }));
|
|
119
150
|
}
|
|
@@ -128,19 +159,24 @@ function TaskCard({ task, isSelected, isExpanded, width, hideTagsWhenCollapsed =
|
|
|
128
159
|
metaContent.push(react_1.default.createElement(Sep, { key: `sep-${i}` }));
|
|
129
160
|
metaContent.push(seg);
|
|
130
161
|
});
|
|
131
|
-
// Calculate title width (account for priority badge
|
|
162
|
+
// Calculate title width (account for priority badge, type badge, subtask count, contract badge)
|
|
132
163
|
const priorityWidth = task.priority ? 7 : 0; // " HIGH " = 6 + 1 space
|
|
164
|
+
const typeBadgeLabel = getTypeBadgeLabel(task.type);
|
|
165
|
+
const typeBadgeWidth = typeBadgeLabel ? typeBadgeLabel.length + 1 : 0; // +1 for trailing space
|
|
133
166
|
// Estimate subtask width: "[10/10]" = 7 chars, plus padding
|
|
134
167
|
const subtaskLabelWidth = subtasks.length > 0 ? 9 : 0;
|
|
135
168
|
const contractBadgeText = showContractBadge && task.contract ? `[C:${task.contract.status}]` : null;
|
|
136
169
|
const contractBadgeWidth = contractBadgeText ? contractBadgeText.length + 1 : 0; // +1 for leading space
|
|
137
|
-
const titleWidth = contentWidth - priorityWidth - subtaskLabelWidth - contractBadgeWidth;
|
|
170
|
+
const titleWidth = contentWidth - priorityWidth - typeBadgeWidth - subtaskLabelWidth - contractBadgeWidth;
|
|
138
171
|
return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", width: width },
|
|
139
172
|
react_1.default.createElement(ink_1.Box, null,
|
|
140
173
|
react_1.default.createElement(ink_1.Text, { color: isSelected ? theme_js_1.PALETTE.accent : theme_js_1.PALETTE.textDim }, isSelected ? ' ▌ ' : ' '),
|
|
141
174
|
task.priority && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
142
175
|
react_1.default.createElement(PriorityBadge, { priority: task.priority }),
|
|
143
176
|
react_1.default.createElement(ink_1.Text, null, " "))),
|
|
177
|
+
typeBadgeLabel && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
178
|
+
react_1.default.createElement(TypeBadge, { type: task.type }),
|
|
179
|
+
react_1.default.createElement(ink_1.Text, null, " "))),
|
|
144
180
|
react_1.default.createElement(ink_1.Text, { color: isSelected ? theme_js_1.PALETTE.text : theme_js_1.PALETTE.textSecondary, bold: isSelected }, (0, utils_js_1.truncate)(task.title, titleWidth)),
|
|
145
181
|
contractBadgeText && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
146
182
|
react_1.default.createElement(ink_1.Text, null, " "),
|
|
@@ -180,6 +216,6 @@ function TaskCard({ task, isSelected, isExpanded, width, hideTagsWhenCollapsed =
|
|
|
180
216
|
" +",
|
|
181
217
|
task.relatedFiles.length - 3,
|
|
182
218
|
" more")))),
|
|
183
|
-
react_1.default.createElement(TaskDetail_js_1.TaskDetail, { task: task, marginTop: (task.description || subtasks.length > 0 || (task.relatedFiles && task.relatedFiles.length > 0)) ? 1 : 0 })))));
|
|
219
|
+
react_1.default.createElement(TaskDetail_js_1.TaskDetail, { task: task, allTasks: allTasks, marginTop: (task.description || subtasks.length > 0 || (task.relatedFiles && task.relatedFiles.length > 0)) ? 1 : 0 })))));
|
|
184
220
|
}
|
|
185
221
|
//# sourceMappingURL=TaskCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskCard.js","sourceRoot":"","sources":["../../../src/tui/components/TaskCard.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"TaskCard.js","sourceRoot":"","sources":["../../../src/tui/components/TaskCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -21,25 +21,11 @@ export declare function wrapText(text: string, maxWidth: number): string[];
|
|
|
21
21
|
export declare function safeTruncate(text: string | undefined, maxWidth: number): string;
|
|
22
22
|
/**
|
|
23
23
|
* Calculate exact height dimensions for a TaskCard.
|
|
24
|
-
*
|
|
25
|
-
* Linear-style borderless design:
|
|
26
|
-
*
|
|
27
|
-
* COLLAPSED (always 3 lines):
|
|
28
|
-
* - Row 1: indicator + priority + title + [subtasks] = 1
|
|
29
|
-
* - Row 2: indented meta + ID = 1
|
|
30
|
-
* - Margin between cards (handled by TaskList) = 1
|
|
31
|
-
*
|
|
32
|
-
* EXPANDED (variable):
|
|
33
|
-
* - Base collapsed: 3
|
|
34
|
-
* - marginTop before expanded content: 1
|
|
35
|
-
* - Description: min(lines, 3) + overflow(1) (if present)
|
|
36
|
-
* - Subtasks: marginTop(conditional) + min(count, 5) + overflow(1) (if present)
|
|
37
|
-
* - Related files: marginTop(1) + min(count, 3) + overflow(1) (if present)
|
|
38
24
|
*/
|
|
39
|
-
export declare function measureTaskCard(task: Task, contentWidth: number): TaskCardDimensions;
|
|
25
|
+
export declare function measureTaskCard(task: Task, contentWidth: number, allTasks?: Task[]): TaskCardDimensions;
|
|
40
26
|
/**
|
|
41
27
|
* Get the height for a task card based on expanded state.
|
|
42
28
|
* Convenience wrapper for TaskList viewport calculations.
|
|
43
29
|
*/
|
|
44
|
-
export declare function getTaskCardHeight(task: Task, isExpanded: boolean, contentWidth: number): number;
|
|
30
|
+
export declare function getTaskCardHeight(task: Task, isExpanded: boolean, contentWidth: number, allTasks?: Task[]): number;
|
|
45
31
|
//# sourceMappingURL=TaskCardMeasure.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskCardMeasure.d.ts","sourceRoot":"","sources":["../../../src/tui/components/TaskCardMeasure.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CA6BjE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM/E;AAED
|
|
1
|
+
{"version":3,"file":"TaskCardMeasure.d.ts","sourceRoot":"","sources":["../../../src/tui/components/TaskCardMeasure.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CA6BjE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM/E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,GAAE,IAAI,EAAO,GAAG,kBAAkB,CAwE3G;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,GAAE,IAAI,EAAO,GAAG,MAAM,CAGtH"}
|
|
@@ -57,22 +57,8 @@ function safeTruncate(text, maxWidth) {
|
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
59
59
|
* Calculate exact height dimensions for a TaskCard.
|
|
60
|
-
*
|
|
61
|
-
* Linear-style borderless design:
|
|
62
|
-
*
|
|
63
|
-
* COLLAPSED (always 3 lines):
|
|
64
|
-
* - Row 1: indicator + priority + title + [subtasks] = 1
|
|
65
|
-
* - Row 2: indented meta + ID = 1
|
|
66
|
-
* - Margin between cards (handled by TaskList) = 1
|
|
67
|
-
*
|
|
68
|
-
* EXPANDED (variable):
|
|
69
|
-
* - Base collapsed: 3
|
|
70
|
-
* - marginTop before expanded content: 1
|
|
71
|
-
* - Description: min(lines, 3) + overflow(1) (if present)
|
|
72
|
-
* - Subtasks: marginTop(conditional) + min(count, 5) + overflow(1) (if present)
|
|
73
|
-
* - Related files: marginTop(1) + min(count, 3) + overflow(1) (if present)
|
|
74
60
|
*/
|
|
75
|
-
function measureTaskCard(task, contentWidth) {
|
|
61
|
+
function measureTaskCard(task, contentWidth, allTasks = []) {
|
|
76
62
|
// Collapsed is ALWAYS 3 lines (2 content + 1 margin)
|
|
77
63
|
const collapsed = 3;
|
|
78
64
|
// Expanded builds on top of collapsed base
|
|
@@ -105,15 +91,34 @@ function measureTaskCard(task, contentWidth) {
|
|
|
105
91
|
expanded += 1; // "+N more" line
|
|
106
92
|
}
|
|
107
93
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
94
|
+
const hasPreviousSections = Boolean(task.description) ||
|
|
95
|
+
Boolean(task.subtasks && task.subtasks.length > 0) ||
|
|
96
|
+
Boolean(task.relatedFiles && task.relatedFiles.length > 0);
|
|
97
|
+
const childrenCount = allTasks.filter(t => {
|
|
98
|
+
const parentId = t.parentId;
|
|
99
|
+
return parentId === task.id && t.id !== task.id;
|
|
100
|
+
}).length;
|
|
101
|
+
const isAdr = (task.type || 'task').toLowerCase() === 'adr';
|
|
102
|
+
const hasAdrStatus = Boolean(task.status) && isAdr;
|
|
103
|
+
const hasContract = Boolean(task.contract);
|
|
104
|
+
const parentId = task.parentId;
|
|
105
|
+
const hasDetailBlock = Boolean(parentId) || childrenCount > 0 || hasAdrStatus || hasContract;
|
|
106
|
+
if (hasDetailBlock) {
|
|
107
|
+
if (hasPreviousSections) {
|
|
108
|
+
expanded += 1; // marginTop before TaskDetail block
|
|
109
|
+
}
|
|
110
|
+
if (parentId)
|
|
111
|
+
expanded += 1; // Parent row
|
|
112
|
+
if (childrenCount > 0)
|
|
113
|
+
expanded += 1; // Children row
|
|
114
|
+
if (hasAdrStatus)
|
|
115
|
+
expanded += 1; // ADR status row
|
|
116
|
+
if (hasContract) {
|
|
117
|
+
if (parentId || childrenCount > 0 || hasAdrStatus) {
|
|
118
|
+
expanded += 1; // spacer before Contract header
|
|
119
|
+
}
|
|
120
|
+
expanded += 3; // Contract header + status + deliverables
|
|
115
121
|
}
|
|
116
|
-
expanded += 3; // "Contract" header + Status + Deliverables count
|
|
117
122
|
}
|
|
118
123
|
return { collapsed, expanded };
|
|
119
124
|
}
|
|
@@ -121,8 +126,8 @@ function measureTaskCard(task, contentWidth) {
|
|
|
121
126
|
* Get the height for a task card based on expanded state.
|
|
122
127
|
* Convenience wrapper for TaskList viewport calculations.
|
|
123
128
|
*/
|
|
124
|
-
function getTaskCardHeight(task, isExpanded, contentWidth) {
|
|
125
|
-
const dims = measureTaskCard(task, contentWidth);
|
|
129
|
+
function getTaskCardHeight(task, isExpanded, contentWidth, allTasks = []) {
|
|
130
|
+
const dims = measureTaskCard(task, contentWidth, allTasks);
|
|
126
131
|
return isExpanded ? dims.expanded : dims.collapsed;
|
|
127
132
|
}
|
|
128
133
|
//# sourceMappingURL=TaskCardMeasure.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskCardMeasure.js","sourceRoot":"","sources":["../../../src/tui/components/TaskCardMeasure.ts"],"names":[],"mappings":";;AAiBA,4BA6BC;AAMD,oCAMC;
|
|
1
|
+
{"version":3,"file":"TaskCardMeasure.js","sourceRoot":"","sources":["../../../src/tui/components/TaskCardMeasure.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,12 @@ import React from 'react';
|
|
|
2
2
|
import type { Task } from '@brainfile/core';
|
|
3
3
|
export interface TaskDetailProps {
|
|
4
4
|
task: Task;
|
|
5
|
+
allTasks?: Task[];
|
|
5
6
|
/** Optional top spacing before the detail block */
|
|
6
7
|
marginTop?: number;
|
|
7
8
|
}
|
|
8
9
|
/**
|
|
9
10
|
* TaskDetail - detail sections shown when a task card is expanded.
|
|
10
|
-
*
|
|
11
|
-
* Display-only: contract info is shown only when the task has a contract.
|
|
12
11
|
*/
|
|
13
|
-
export declare function TaskDetail({ task, marginTop }: TaskDetailProps): React.JSX.Element | null;
|
|
12
|
+
export declare function TaskDetail({ task, allTasks, marginTop }: TaskDetailProps): React.JSX.Element | null;
|
|
14
13
|
//# sourceMappingURL=TaskDetail.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskDetail.d.ts","sourceRoot":"","sources":["../../../src/tui/components/TaskDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAgB5C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED
|
|
1
|
+
{"version":3,"file":"TaskDetail.d.ts","sourceRoot":"","sources":["../../../src/tui/components/TaskDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAgB5C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IAClB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,QAAa,EAAE,SAAa,EAAE,EAAE,eAAe,4BA2DjF"}
|
|
@@ -21,21 +21,44 @@ function getContractStatusColor(status) {
|
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* TaskDetail - detail sections shown when a task card is expanded.
|
|
24
|
-
*
|
|
25
|
-
* Display-only: contract info is shown only when the task has a contract.
|
|
26
24
|
*/
|
|
27
|
-
function TaskDetail({ task, marginTop = 0 }) {
|
|
28
|
-
|
|
25
|
+
function TaskDetail({ task, allTasks = [], marginTop = 0 }) {
|
|
26
|
+
const parentId = task.parentId;
|
|
27
|
+
const children = allTasks.filter(t => {
|
|
28
|
+
const candidateParentId = t.parentId;
|
|
29
|
+
return candidateParentId === task.id && t.id !== task.id;
|
|
30
|
+
});
|
|
31
|
+
const isAdr = (task.type || 'task').toLowerCase() === 'adr';
|
|
32
|
+
const adrStatus = isAdr ? task.status : undefined;
|
|
33
|
+
const hasParentOrChildren = Boolean(parentId) || children.length > 0;
|
|
34
|
+
const hasContract = Boolean(task.contract);
|
|
35
|
+
const hasAdrStatus = Boolean(adrStatus);
|
|
36
|
+
if (!hasParentOrChildren && !hasContract && !hasAdrStatus) {
|
|
29
37
|
return null;
|
|
30
|
-
|
|
31
|
-
const
|
|
38
|
+
}
|
|
39
|
+
const status = task.contract?.status;
|
|
40
|
+
const deliverablesCount = task.contract?.deliverables?.length ?? 0;
|
|
32
41
|
return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", marginTop: marginTop },
|
|
33
|
-
react_1.default.createElement(ink_1.Text,
|
|
34
|
-
|
|
42
|
+
parentId && (react_1.default.createElement(ink_1.Text, null,
|
|
43
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "Parent: "),
|
|
44
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, parentId))),
|
|
45
|
+
children.length > 0 && (react_1.default.createElement(ink_1.Text, null,
|
|
46
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "Children: "),
|
|
47
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary },
|
|
48
|
+
"[",
|
|
49
|
+
children.map(c => c.id).join(', '),
|
|
50
|
+
"]"))),
|
|
51
|
+
hasAdrStatus && (react_1.default.createElement(ink_1.Text, null,
|
|
35
52
|
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "Status: "),
|
|
36
|
-
react_1.default.createElement(ink_1.Text, { color:
|
|
37
|
-
react_1.default.createElement(
|
|
38
|
-
react_1.default.createElement(ink_1.
|
|
39
|
-
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.
|
|
53
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, adrStatus))),
|
|
54
|
+
hasContract && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
55
|
+
(parentId || children.length > 0 || hasAdrStatus) && react_1.default.createElement(ink_1.Box, { marginTop: 1 }),
|
|
56
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim, bold: true }, "Contract"),
|
|
57
|
+
react_1.default.createElement(ink_1.Text, null,
|
|
58
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "Status: "),
|
|
59
|
+
react_1.default.createElement(ink_1.Text, { color: getContractStatusColor(status), bold: true }, status)),
|
|
60
|
+
react_1.default.createElement(ink_1.Text, null,
|
|
61
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "Deliverables: "),
|
|
62
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, deliverablesCount))))));
|
|
40
63
|
}
|
|
41
64
|
//# sourceMappingURL=TaskDetail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskDetail.js","sourceRoot":"","sources":["../../../src/tui/components/TaskDetail.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"TaskDetail.js","sourceRoot":"","sources":["../../../src/tui/components/TaskDetail.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,11 @@ import React from 'react';
|
|
|
2
2
|
import type { Task } from '@brainfile/core';
|
|
3
3
|
export interface TaskListProps {
|
|
4
4
|
tasks: Task[];
|
|
5
|
+
allTasks?: Task[];
|
|
5
6
|
selectedIndex: number;
|
|
6
7
|
expandedIds: Set<string>;
|
|
7
8
|
viewportHeight: number;
|
|
8
9
|
termWidth: number;
|
|
9
10
|
}
|
|
10
|
-
export declare function TaskList({ tasks, selectedIndex, expandedIds, viewportHeight, termWidth }: TaskListProps): React.JSX.Element;
|
|
11
|
+
export declare function TaskList({ tasks, allTasks, selectedIndex, expandedIds, viewportHeight, termWidth }: TaskListProps): React.JSX.Element;
|
|
11
12
|
//# sourceMappingURL=TaskList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskList.d.ts","sourceRoot":"","sources":["../../../src/tui/components/TaskList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAK5C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"TaskList.d.ts","sourceRoot":"","sources":["../../../src/tui/components/TaskList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAK5C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAa,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,aAAa,qBA0FtH"}
|
|
@@ -9,7 +9,7 @@ const ink_1 = require("ink");
|
|
|
9
9
|
const theme_js_1 = require("../theme.js");
|
|
10
10
|
const TaskCard_js_1 = require("./TaskCard.js");
|
|
11
11
|
const TaskCardMeasure_js_1 = require("./TaskCardMeasure.js");
|
|
12
|
-
function TaskList({ tasks, selectedIndex, expandedIds, viewportHeight, termWidth }) {
|
|
12
|
+
function TaskList({ tasks, allTasks = [], selectedIndex, expandedIds, viewportHeight, termWidth }) {
|
|
13
13
|
const cardWidth = termWidth - 4;
|
|
14
14
|
const contentWidth = cardWidth - 6; // indicator (4) + right padding (2) = 6
|
|
15
15
|
// Calculate scroll offset - ensure selected task is visible
|
|
@@ -19,12 +19,12 @@ function TaskList({ tasks, selectedIndex, expandedIds, viewportHeight, termWidth
|
|
|
19
19
|
for (let i = 0; i < selectedIndex; i++) {
|
|
20
20
|
const task = tasks[i];
|
|
21
21
|
const isExpanded = expandedIds.has(task.id);
|
|
22
|
-
heightBeforeSelected += (0, TaskCardMeasure_js_1.getTaskCardHeight)(task, isExpanded, contentWidth);
|
|
22
|
+
heightBeforeSelected += (0, TaskCardMeasure_js_1.getTaskCardHeight)(task, isExpanded, contentWidth, allTasks);
|
|
23
23
|
}
|
|
24
24
|
// If selected task would be off screen, adjust scroll
|
|
25
25
|
const selectedTask = tasks[selectedIndex];
|
|
26
26
|
const selectedHeight = selectedTask
|
|
27
|
-
? (0, TaskCardMeasure_js_1.getTaskCardHeight)(selectedTask, expandedIds.has(selectedTask.id), contentWidth)
|
|
27
|
+
? (0, TaskCardMeasure_js_1.getTaskCardHeight)(selectedTask, expandedIds.has(selectedTask.id), contentWidth, allTasks)
|
|
28
28
|
: 5;
|
|
29
29
|
if (heightBeforeSelected + selectedHeight > viewportHeight) {
|
|
30
30
|
// Need to scroll - start from selected task
|
|
@@ -41,7 +41,7 @@ function TaskList({ tasks, selectedIndex, expandedIds, viewportHeight, termWidth
|
|
|
41
41
|
const task = tasks[i];
|
|
42
42
|
const isSelected = i === selectedIndex;
|
|
43
43
|
const isExpanded = expandedIds.has(task.id);
|
|
44
|
-
const taskLines = (0, TaskCardMeasure_js_1.getTaskCardHeight)(task, isExpanded, contentWidth);
|
|
44
|
+
const taskLines = (0, TaskCardMeasure_js_1.getTaskCardHeight)(task, isExpanded, contentWidth, allTasks);
|
|
45
45
|
// Always include the selected task, even if it's tall
|
|
46
46
|
if (isSelected) {
|
|
47
47
|
visibleItems.push({ task, isSelected, isExpanded });
|
|
@@ -69,7 +69,7 @@ function TaskList({ tasks, selectedIndex, expandedIds, viewportHeight, termWidth
|
|
|
69
69
|
return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", paddingLeft: 1, height: viewportHeight },
|
|
70
70
|
visibleItems.map(({ task, isSelected, isExpanded }, index) => (react_1.default.createElement(react_1.default.Fragment, { key: task.id },
|
|
71
71
|
index > 0 && react_1.default.createElement(ink_1.Box, { height: 1 }),
|
|
72
|
-
react_1.default.createElement(TaskCard_js_1.TaskCard, { task: task, isSelected: isSelected, isExpanded: isExpanded, width: cardWidth, showContractBadge: true })))),
|
|
72
|
+
react_1.default.createElement(TaskCard_js_1.TaskCard, { task: task, allTasks: allTasks, isSelected: isSelected, isExpanded: isExpanded, width: cardWidth, showContractBadge: true })))),
|
|
73
73
|
emptyLines > 0 && react_1.default.createElement(ink_1.Box, { height: emptyLines })));
|
|
74
74
|
}
|
|
75
75
|
//# sourceMappingURL=TaskList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskList.js","sourceRoot":"","sources":["../../../src/tui/components/TaskList.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"TaskList.js","sourceRoot":"","sources":["../../../src/tui/components/TaskList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -22,8 +22,8 @@ export { MainPanelTabs } from './MainPanelTabs.js';
|
|
|
22
22
|
export type { MainPanelTabsProps } from './MainPanelTabs.js';
|
|
23
23
|
export { RulesPanel } from './RulesPanel.js';
|
|
24
24
|
export type { RulesPanelProps } from './RulesPanel.js';
|
|
25
|
-
export {
|
|
26
|
-
export type {
|
|
25
|
+
export { LogsPanel } from './LogsPanel.js';
|
|
26
|
+
export type { LogsPanelProps } from './LogsPanel.js';
|
|
27
27
|
export { ManualBorder, BorderRow } from './ManualBorder.js';
|
|
28
28
|
export type { ManualBorderProps, BorderRowProps } from './ManualBorder.js';
|
|
29
29
|
export { measureTaskCard, getTaskCardHeight, wrapText, safeTruncate } from './TaskCardMeasure.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tui/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tui/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAClG,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.safeTruncate = exports.wrapText = exports.getTaskCardHeight = exports.measureTaskCard = exports.BorderRow = exports.ManualBorder = exports.
|
|
3
|
+
exports.safeTruncate = exports.wrapText = exports.getTaskCardHeight = exports.measureTaskCard = exports.BorderRow = exports.ManualBorder = exports.LogsPanel = exports.RulesPanel = exports.MainPanelTabs = exports.NewTaskOverlay = exports.SubtaskOverlay = exports.DeleteConfirmOverlay = exports.MoveOverlay = exports.StatusMessageDisplay = exports.HelpOverlay = exports.StatusBar = exports.flattenTasks = exports.StackedTaskList = exports.TaskList = exports.TaskCard = exports.ColumnTabs = exports.SearchBar = exports.ProgressBar = exports.Header = void 0;
|
|
4
4
|
var Header_js_1 = require("./Header.js");
|
|
5
5
|
Object.defineProperty(exports, "Header", { enumerable: true, get: function () { return Header_js_1.Header; } });
|
|
6
6
|
var ProgressBar_js_1 = require("./ProgressBar.js");
|
|
@@ -30,8 +30,8 @@ var MainPanelTabs_js_1 = require("./MainPanelTabs.js");
|
|
|
30
30
|
Object.defineProperty(exports, "MainPanelTabs", { enumerable: true, get: function () { return MainPanelTabs_js_1.MainPanelTabs; } });
|
|
31
31
|
var RulesPanel_js_1 = require("./RulesPanel.js");
|
|
32
32
|
Object.defineProperty(exports, "RulesPanel", { enumerable: true, get: function () { return RulesPanel_js_1.RulesPanel; } });
|
|
33
|
-
var
|
|
34
|
-
Object.defineProperty(exports, "
|
|
33
|
+
var LogsPanel_js_1 = require("./LogsPanel.js");
|
|
34
|
+
Object.defineProperty(exports, "LogsPanel", { enumerable: true, get: function () { return LogsPanel_js_1.LogsPanel; } });
|
|
35
35
|
var ManualBorder_js_1 = require("./ManualBorder.js");
|
|
36
36
|
Object.defineProperty(exports, "ManualBorder", { enumerable: true, get: function () { return ManualBorder_js_1.ManualBorder; } });
|
|
37
37
|
Object.defineProperty(exports, "BorderRow", { enumerable: true, get: function () { return ManualBorder_js_1.BorderRow; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tui/components/index.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AAGf,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AAGpB,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAGlB,iDAA6C;AAApC,2GAAA,UAAU,OAAA;AAGnB,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AAGjB,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AAGjB,2DAAqE;AAA5D,qHAAA,eAAe,OAAA;AAAE,kHAAA,YAAY,OAAA;AAGtC,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAGlB,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AAGpB,6CAMuB;AALrB,mHAAA,oBAAoB,OAAA;AACpB,0GAAA,WAAW,OAAA;AACX,mHAAA,oBAAoB,OAAA;AACpB,6GAAA,cAAc,OAAA;AACd,6GAAA,cAAc,OAAA;AAUhB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAGtB,iDAA6C;AAApC,2GAAA,UAAU,OAAA;AAGnB
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tui/components/index.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AAGf,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AAGpB,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAGlB,iDAA6C;AAApC,2GAAA,UAAU,OAAA;AAGnB,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AAGjB,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AAGjB,2DAAqE;AAA5D,qHAAA,eAAe,OAAA;AAAE,kHAAA,YAAY,OAAA;AAGtC,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAGlB,mDAA+C;AAAtC,6GAAA,WAAW,OAAA;AAGpB,6CAMuB;AALrB,mHAAA,oBAAoB,OAAA;AACpB,0GAAA,WAAW,OAAA;AACX,mHAAA,oBAAoB,OAAA;AACpB,6GAAA,cAAc,OAAA;AACd,6GAAA,cAAc,OAAA;AAUhB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAGtB,iDAA6C;AAApC,2GAAA,UAAU,OAAA;AAGnB,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAGlB,qDAA4D;AAAnD,+GAAA,YAAY,OAAA;AAAE,4GAAA,SAAS,OAAA;AAGhC,2DAAkG;AAAzF,qHAAA,eAAe,OAAA;AAAE,uHAAA,iBAAiB,OAAA;AAAE,8GAAA,QAAQ,OAAA;AAAE,kHAAA,YAAY,OAAA"}
|