@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 CHANGED
@@ -1,6 +1,14 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.190 (2026-04-02)
3
+ ## 0.1.191 (2026-04-02)
4
+
5
+ ### Engine
6
+ - engine/queries.js
7
+
8
+ ### Dashboard
9
+ - dashboard.js
10
+ - dashboard/js/render-plans.js
11
+ - dashboard/js/render-prd.js
4
12
 
5
13
  ### Documentation
6
14
  - README.md
@@ -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.190",
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"