@yemi33/minions 0.1.190 → 0.1.191
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 +9 -1
- package/dashboard/js/render-plans.js +3 -1
- package/dashboard/js/render-prd.js +7 -2
- package/dashboard.js +1 -0
- package/engine/queries.js +2 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -297,7 +297,9 @@ function renderPlans(plans) {
|
|
|
297
297
|
}
|
|
298
298
|
|
|
299
299
|
function openArchivedPlansModal() {
|
|
300
|
-
const plans = window._archivedPlans || []
|
|
300
|
+
const plans = (window._archivedPlans || []).slice().sort((a, b) =>
|
|
301
|
+
(b.completedAt || b.updatedAt || '').localeCompare(a.completedAt || a.updatedAt || '')
|
|
302
|
+
);
|
|
301
303
|
const render = window._archivedPlanRenderer;
|
|
302
304
|
if (!plans.length || !render) return;
|
|
303
305
|
|
|
@@ -132,7 +132,7 @@ function renderPrdProgress(prog) {
|
|
|
132
132
|
const grouped = {};
|
|
133
133
|
for (const i of (prog.items || [])) {
|
|
134
134
|
const key = i.source || '_ungrouped';
|
|
135
|
-
if (!grouped[key]) grouped[key] = { summary: i.planSummary || i.source || 'Items', project: i.planProject || '', file: i.source || '', items: [], archived: !!i._archived, planStatus: i.planStatus || 'active', sourcePlan: i.sourcePlan || '', planStale: i.planStale || false, lastSyncedFromPlan: i.lastSyncedFromPlan || null, prdUpdatedAt: i.prdUpdatedAt || null };
|
|
135
|
+
if (!grouped[key]) grouped[key] = { summary: i.planSummary || i.source || 'Items', project: i.planProject || '', file: i.source || '', items: [], archived: !!i._archived, planStatus: i.planStatus || 'active', sourcePlan: i.sourcePlan || '', planStale: i.planStale || false, lastSyncedFromPlan: i.lastSyncedFromPlan || null, prdUpdatedAt: i.prdUpdatedAt || null, completedAt: i.prdCompletedAt || '' };
|
|
136
136
|
grouped[key].items.push(i);
|
|
137
137
|
}
|
|
138
138
|
|
|
@@ -459,7 +459,10 @@ let _prdItems = []; // cache for edit lookups
|
|
|
459
459
|
function _cachePrdItems(prog) { _prdItems = prog?.items || []; }
|
|
460
460
|
|
|
461
461
|
function openArchivedPrdModal() {
|
|
462
|
-
const groups = window._archivedPrdGroups || []
|
|
462
|
+
const groups = (window._archivedPrdGroups || []).slice().sort((a, b) =>
|
|
463
|
+
(b.completedAt || b.prdUpdatedAt || '').localeCompare(a.completedAt || a.prdUpdatedAt || '')
|
|
464
|
+
);
|
|
465
|
+
window._archivedPrdGroups = groups;
|
|
463
466
|
const renderGroup = window._archivedPrdRenderGroup;
|
|
464
467
|
if (!groups.length || !renderGroup) return;
|
|
465
468
|
|
|
@@ -475,6 +478,7 @@ function openArchivedPrdModal() {
|
|
|
475
478
|
html += groups.map((g, i) => {
|
|
476
479
|
const done = g.items.filter(it => it.status === 'done').length;
|
|
477
480
|
const failed = g.items.filter(it => it.status === 'failed').length;
|
|
481
|
+
const completed = g.completedAt ? new Date(g.completedAt).toLocaleDateString() : '';
|
|
478
482
|
return '<div class="plan-card" style="cursor:pointer;margin-bottom:8px" onclick="showArchivedPrdDetail(' + i + ')">' +
|
|
479
483
|
'<div class="plan-card-title" style="font-size:13px">' + escHtml(g.summary || g.file) + '</div>' +
|
|
480
484
|
'<div class="plan-card-meta">' +
|
|
@@ -482,6 +486,7 @@ function openArchivedPrdModal() {
|
|
|
482
486
|
'<span>' + g.items.length + ' items</span>' +
|
|
483
487
|
'<span style="color:var(--green)">' + done + ' done</span>' +
|
|
484
488
|
(failed ? '<span style="color:var(--red)">' + failed + ' failed</span>' : '') +
|
|
489
|
+
(completed ? '<span>Completed ' + completed + '</span>' : '') +
|
|
485
490
|
'</div>' +
|
|
486
491
|
'</div>';
|
|
487
492
|
}).join('');
|
package/dashboard.js
CHANGED
|
@@ -1665,6 +1665,7 @@ If nothing to do: { "duplicates": [], "reclassify": [], "remove": [] }`;
|
|
|
1665
1665
|
itemCount: (content.match(/^\d+\.\s+\*\*/gm) || []).length,
|
|
1666
1666
|
generatedBy: authorMatch ? authorMatch[1].trim() : '',
|
|
1667
1667
|
generatedAt: dateMatch ? dateMatch[1].trim() : '',
|
|
1668
|
+
completedAt: archived ? updatedAt : '',
|
|
1668
1669
|
updatedAt,
|
|
1669
1670
|
requiresApproval: false,
|
|
1670
1671
|
revisionFeedback: null,
|
package/engine/queries.js
CHANGED
|
@@ -555,6 +555,7 @@ function getPrdInfo(config) {
|
|
|
555
555
|
_archived: archived, _sourcePlan: plan.source_plan || '',
|
|
556
556
|
_planStale: planStale || plan.planStale || false, _lastSyncedFromPlan: plan.lastSyncedFromPlan || null,
|
|
557
557
|
_prdUpdatedAt: new Date(stat.mtimeMs).toISOString(),
|
|
558
|
+
_prdCompletedAt: plan.completedAt || '',
|
|
558
559
|
});
|
|
559
560
|
}
|
|
560
561
|
} catch { /* optional */ }
|
|
@@ -647,7 +648,7 @@ function getPrdInfo(config) {
|
|
|
647
648
|
description: (i.description || '').slice(0, 200), projects: i.projects || [],
|
|
648
649
|
prs: prdToPr[i.id] || [], depends_on: i.depends_on || [],
|
|
649
650
|
project: i.project || '', source: i._source || '', planSummary: i._planSummary || '', planProject: i._planProject || '', planStatus: i._planStatus || 'active', _archived: i._archived || false, sourcePlan: i._sourcePlan || '',
|
|
650
|
-
planStale: i._planStale || false, lastSyncedFromPlan: i._lastSyncedFromPlan || null, prdUpdatedAt: i._prdUpdatedAt || null,
|
|
651
|
+
planStale: i._planStale || false, lastSyncedFromPlan: i._lastSyncedFromPlan || null, prdUpdatedAt: i._prdUpdatedAt || null, prdCompletedAt: i._prdCompletedAt || '',
|
|
651
652
|
})),
|
|
652
653
|
};
|
|
653
654
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.191",
|
|
4
4
|
"description": "Multi-agent AI dev team that runs from ~/.minions/ — five autonomous agents share a single engine, dashboard, and knowledge base",
|
|
5
5
|
"bin": {
|
|
6
6
|
"minions": "bin/minions.js"
|