specsmd 0.1.37 → 0.1.38
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/lib/dashboard/tui/app.js +26 -6
- package/package.json +1 -1
package/lib/dashboard/tui/app.js
CHANGED
|
@@ -906,7 +906,8 @@ function collectSimpleSpecFiles(spec) {
|
|
|
906
906
|
}));
|
|
907
907
|
}
|
|
908
908
|
|
|
909
|
-
function getRunFileEntries(snapshot, flow) {
|
|
909
|
+
function getRunFileEntries(snapshot, flow, options = {}) {
|
|
910
|
+
const includeBacklog = options.includeBacklog !== false;
|
|
910
911
|
const effectiveFlow = getEffectiveFlow(flow, snapshot);
|
|
911
912
|
const entries = [];
|
|
912
913
|
const seenPaths = new Set();
|
|
@@ -917,6 +918,10 @@ function getRunFileEntries(snapshot, flow) {
|
|
|
917
918
|
pushFileEntry(entries, seenPaths, { ...file, scope: 'active' });
|
|
918
919
|
}
|
|
919
920
|
|
|
921
|
+
if (!includeBacklog) {
|
|
922
|
+
return entries;
|
|
923
|
+
}
|
|
924
|
+
|
|
920
925
|
const pendingBolts = Array.isArray(snapshot?.pendingBolts) ? snapshot.pendingBolts : [];
|
|
921
926
|
for (const pendingBolt of pendingBolts) {
|
|
922
927
|
for (const file of collectAidlcBoltFiles(pendingBolt)) {
|
|
@@ -963,6 +968,10 @@ function getRunFileEntries(snapshot, flow) {
|
|
|
963
968
|
pushFileEntry(entries, seenPaths, { ...file, scope: 'active' });
|
|
964
969
|
}
|
|
965
970
|
|
|
971
|
+
if (!includeBacklog) {
|
|
972
|
+
return entries;
|
|
973
|
+
}
|
|
974
|
+
|
|
966
975
|
const pendingSpecs = Array.isArray(snapshot?.pendingSpecs) ? snapshot.pendingSpecs : [];
|
|
967
976
|
for (const pendingSpec of pendingSpecs) {
|
|
968
977
|
for (const file of collectSimpleSpecFiles(pendingSpec)) {
|
|
@@ -985,6 +994,10 @@ function getRunFileEntries(snapshot, flow) {
|
|
|
985
994
|
pushFileEntry(entries, seenPaths, { ...file, scope: 'active' });
|
|
986
995
|
}
|
|
987
996
|
|
|
997
|
+
if (!includeBacklog) {
|
|
998
|
+
return entries;
|
|
999
|
+
}
|
|
1000
|
+
|
|
988
1001
|
const pendingItems = Array.isArray(snapshot?.pendingItems) ? snapshot.pendingItems : [];
|
|
989
1002
|
for (const pendingItem of pendingItems) {
|
|
990
1003
|
pushFileEntry(entries, seenPaths, {
|
|
@@ -1154,10 +1167,10 @@ function getFileEntityLabel(fileEntry, fallbackIndex = 0) {
|
|
|
1154
1167
|
return `item-${fallbackIndex + 1}`;
|
|
1155
1168
|
}
|
|
1156
1169
|
|
|
1157
|
-
function buildRunFileEntityGroups(snapshot, flow) {
|
|
1170
|
+
function buildRunFileEntityGroups(snapshot, flow, options = {}) {
|
|
1158
1171
|
const order = ['active', 'upcoming', 'completed', 'intent', 'other'];
|
|
1159
1172
|
const rankByScope = new Map(order.map((scope, index) => [scope, index]));
|
|
1160
|
-
const entries = filterExistingFiles(getRunFileEntries(snapshot, flow));
|
|
1173
|
+
const entries = filterExistingFiles(getRunFileEntries(snapshot, flow, options));
|
|
1161
1174
|
const groupsByEntity = new Map();
|
|
1162
1175
|
|
|
1163
1176
|
for (let index = 0; index < entries.length; index += 1) {
|
|
@@ -2115,7 +2128,9 @@ function createDashboardApp(deps) {
|
|
|
2115
2128
|
currentExpandedGroups
|
|
2116
2129
|
);
|
|
2117
2130
|
const shouldHydrateSecondaryTabs = deferredTabsReady || ui.view !== 'runs';
|
|
2118
|
-
const runFileGroups = buildRunFileEntityGroups(snapshot, activeFlow
|
|
2131
|
+
const runFileGroups = buildRunFileEntityGroups(snapshot, activeFlow, {
|
|
2132
|
+
includeBacklog: shouldHydrateSecondaryTabs
|
|
2133
|
+
});
|
|
2119
2134
|
const runFileExpandedGroups = { ...expandedGroups };
|
|
2120
2135
|
for (const group of runFileGroups) {
|
|
2121
2136
|
if (runFileExpandedGroups[group.key] == null) {
|
|
@@ -2592,14 +2607,19 @@ function createDashboardApp(deps) {
|
|
|
2592
2607
|
}, [activeFlow, rowLengthSignature, snapshot?.generatedAt]);
|
|
2593
2608
|
|
|
2594
2609
|
useEffect(() => {
|
|
2610
|
+
if (ui.view !== 'runs') {
|
|
2611
|
+
setDeferredTabsReady(true);
|
|
2612
|
+
return undefined;
|
|
2613
|
+
}
|
|
2614
|
+
|
|
2595
2615
|
setDeferredTabsReady(false);
|
|
2596
2616
|
const timer = setTimeout(() => {
|
|
2597
2617
|
setDeferredTabsReady(true);
|
|
2598
|
-
},
|
|
2618
|
+
}, 250);
|
|
2599
2619
|
return () => {
|
|
2600
2620
|
clearTimeout(timer);
|
|
2601
2621
|
};
|
|
2602
|
-
}, [activeFlow, snapshot?.generatedAt]);
|
|
2622
|
+
}, [activeFlow, snapshot?.generatedAt, ui.view]);
|
|
2603
2623
|
|
|
2604
2624
|
useEffect(() => {
|
|
2605
2625
|
setPaneFocus('main');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specsmd",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.38",
|
|
4
4
|
"description": "Multi-agent orchestration system for AI-native software development. Delivers AI-DLC, Agile, and custom SDLC flows as markdown-based agent systems.",
|
|
5
5
|
"main": "lib/installer.js",
|
|
6
6
|
"bin": {
|