@yemi33/minions 0.1.825 → 0.1.827
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 +3 -1
- package/dashboard/js/render-plans.js +3 -1
- package/dashboard/js/render-prd.js +6 -3
- package/dashboard.js +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.827 (2026-04-11)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
6
|
- stale PRD shows Regenerate PRD + Resume as-is buttons
|
|
7
7
|
|
|
8
8
|
### Fixes
|
|
9
|
+
- hide plan card action buttons when stale banner is showing
|
|
10
|
+
- hide conflicting action buttons when stale PRD banner is showing
|
|
9
11
|
- diff-aware plan-to-prd triggered by Resume, not auto-dispatch
|
|
10
12
|
|
|
11
13
|
## 0.1.823 (2026-04-11)
|
|
@@ -210,8 +210,10 @@ function renderPlans(plans) {
|
|
|
210
210
|
const isDraft = p.format === 'draft' && !isCompleted;
|
|
211
211
|
// For .md drafts: show Execute only if no PRD exists yet (not already executed)
|
|
212
212
|
|
|
213
|
+
const isStale = p.planStale && !isArchived;
|
|
214
|
+
|
|
213
215
|
let actions = '';
|
|
214
|
-
if (needsAction) {
|
|
216
|
+
if (needsAction && !isStale) {
|
|
215
217
|
const actionTarget = prdFile || p.file;
|
|
216
218
|
// For awaiting-approval: show Execute (re-generate PRD from updated plan) + Approve (use current PRD as-is)
|
|
217
219
|
if (effectiveStatus === 'awaiting-approval' && isDraft && prdFile) {
|
|
@@ -30,8 +30,9 @@ function renderPrd(prd, prog) {
|
|
|
30
30
|
const prdStatus = existing[0]?.status || '';
|
|
31
31
|
const effectiveStatus = allDone && !hasActive ? 'completed' : hasActive ? 'dispatched' : prdStatus || 'active';
|
|
32
32
|
|
|
33
|
+
const headerStale = existing[0]?.planStale || prdItems.some(i => i.planStale);
|
|
33
34
|
let actions = '';
|
|
34
|
-
if (prdFile) {
|
|
35
|
+
if (prdFile && !headerStale) {
|
|
35
36
|
if (effectiveStatus === 'awaiting-approval') {
|
|
36
37
|
actions = ' <button class="pr-pager-btn" style="font-size:9px;padding:1px 6px;color:var(--green);border-color:var(--green);margin-left:4px" onclick="planApprove(\'' + escHtml(prdFile) + '\',this)">Approve</button>';
|
|
37
38
|
} else if (effectiveStatus === 'completed') {
|
|
@@ -275,14 +276,16 @@ function renderPrdProgress(prog) {
|
|
|
275
276
|
'</div>'
|
|
276
277
|
: '';
|
|
277
278
|
const isCompleted = done > 0 && done === g.items.length;
|
|
278
|
-
|
|
279
|
+
// Hide regular action buttons when stale banner is showing — stale banner has its own actions
|
|
280
|
+
const isStale = !isBlocked && g.planStale;
|
|
281
|
+
const pauseResumeBtn = isStale ? '' : isAwaitingApproval
|
|
279
282
|
? '<span onclick="event.stopPropagation();planApprove(\'' + escHtml(g.file) + '\',this)" style="color:var(--green);cursor:pointer;font-size:9px;padding:1px 6px;background:rgba(63,185,80,0.1);border:1px solid rgba(63,185,80,0.3);border-radius:3px">Approve</span>'
|
|
280
283
|
: isPaused
|
|
281
284
|
? '<span onclick="event.stopPropagation();planApprove(\'' + escHtml(g.file) + '\',this)" style="color:var(--green);cursor:pointer;font-size:9px;padding:1px 6px;background:rgba(63,185,80,0.1);border:1px solid rgba(63,185,80,0.3);border-radius:3px">Resume</span>'
|
|
282
285
|
: isCompleted && !(window._lastWorkItems || []).some(w => w.itemType === 'verify' && w.sourcePlan === g.file)
|
|
283
286
|
? '<span onclick="event.stopPropagation();triggerVerify(\'' + escHtml(g.file) + '\',this)" style="color:var(--green);cursor:pointer;font-size:9px;padding:1px 6px;background:rgba(63,185,80,0.1);border:1px solid rgba(63,185,80,0.3);border-radius:3px">Verify</span>'
|
|
284
287
|
: isCompleted ? '' : '<span onclick="event.stopPropagation();planPause(\'' + escHtml(g.file) + '\',this)" style="color:var(--yellow);cursor:pointer;font-size:9px;padding:1px 6px;background:rgba(210,153,34,0.1);border:1px solid rgba(210,153,34,0.3);border-radius:3px">Pause</span>';
|
|
285
|
-
const archiveBtn = (isCompleted || isPaused) ? '<span onclick="event.stopPropagation();planArchive(\'' + escHtml(g.file) + '\',this)" style="color:var(--muted);cursor:pointer;font-size:9px;padding:1px 6px;background:rgba(139,148,158,0.1);border:1px solid rgba(139,148,158,0.3);border-radius:3px">Archive</span>' : '';
|
|
288
|
+
const archiveBtn = (!isStale && (isCompleted || isPaused)) ? '<span onclick="event.stopPropagation();planArchive(\'' + escHtml(g.file) + '\',this)" style="color:var(--muted);cursor:pointer;font-size:9px;padding:1px 6px;background:rgba(139,148,158,0.1);border:1px solid rgba(139,148,158,0.3);border-radius:3px">Archive</span>' : '';
|
|
286
289
|
const deleteBtn = '<span onclick="event.stopPropagation();planDelete(\'' + escHtml(g.file) + '\')" style="color:var(--red);cursor:pointer;font-size:9px;padding:1px 6px;background:rgba(248,81,73,0.1);border:1px solid rgba(248,81,73,0.3);border-radius:3px">Delete</span>';
|
|
287
290
|
const sourcePlanLink = g.sourcePlan
|
|
288
291
|
? '<span onclick="event.stopPropagation();planView(\'' + escHtml(g.sourcePlan) + '\')" style="color:var(--blue);cursor:pointer;font-size:9px;padding:1px 6px;background:rgba(56,139,253,0.1);border:1px solid rgba(56,139,253,0.3);border-radius:3px" title="View source plan">📄 Plan</span>'
|
package/dashboard.js
CHANGED
|
@@ -2074,6 +2074,7 @@ If nothing to do: { "duplicates": [], "reclassify": [], "remove": [] }`;
|
|
|
2074
2074
|
sourcePlan: plan.source_plan || null,
|
|
2075
2075
|
archiveReady: plan._archiveReady || false,
|
|
2076
2076
|
archiveReadyAt: plan._archiveReadyAt || null,
|
|
2077
|
+
planStale: plan.planStale || false,
|
|
2077
2078
|
});
|
|
2078
2079
|
} catch { /* JSON parse fallback */ }
|
|
2079
2080
|
} else {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.827",
|
|
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"
|