@yemi33/minions 0.1.430 → 0.1.432
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/command-center.js +2 -0
- package/dashboard/layout.html +1 -0
- package/engine/ado.js +10 -6
- package/engine/github.js +10 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.432 (2026-04-06)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
6
|
- version check interval on settings page
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
- Convert remaining lifecycle.js safeWrite calls to mutateJsonFileLocked
|
|
12
12
|
|
|
13
13
|
### Fixes
|
|
14
|
+
- clicking outside command center dismisses it
|
|
15
|
+
- PR dedup prefers merged/abandoned over active regardless of order
|
|
14
16
|
- extract skills from inbox notes, not just agent stdout
|
|
15
17
|
- deduplicate PR entries during poll write-back
|
|
16
18
|
- agent inbox notes include work item ID and time in filename
|
|
@@ -19,8 +19,10 @@ function ccAbort() {
|
|
|
19
19
|
function toggleCommandCenter() {
|
|
20
20
|
_ccOpen = !_ccOpen;
|
|
21
21
|
const drawer = document.getElementById('cc-drawer');
|
|
22
|
+
const overlay = document.getElementById('cc-overlay');
|
|
22
23
|
if (_ccOpen) ccApplySavedWidth();
|
|
23
24
|
drawer.style.display = _ccOpen ? 'flex' : 'none';
|
|
25
|
+
if (overlay) overlay.style.display = _ccOpen ? 'block' : 'none';
|
|
24
26
|
if (_ccOpen) {
|
|
25
27
|
clearNotifBadge(document.getElementById('cc-toggle-btn'));
|
|
26
28
|
document.getElementById('cc-input').focus();
|
package/dashboard/layout.html
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
<div class="engine-alert" id="engine-alert"></div>
|
|
23
23
|
|
|
24
24
|
<!-- Command Center Drawer -->
|
|
25
|
+
<div id="cc-overlay" style="display:none;position:fixed;inset:0;background:rgba(0,0,0,0.4);z-index:340" onclick="toggleCommandCenter()"></div>
|
|
25
26
|
<div id="cc-drawer" style="display:none;position:fixed;top:0;right:0;bottom:0;width:420px;background:var(--surface);border-left:1px solid var(--border);z-index:350;flex-direction:column;overscroll-behavior:contain">
|
|
26
27
|
<div id="cc-resize-handle" class="cc-resize-handle"></div>
|
|
27
28
|
<div style="padding:12px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between">
|
package/engine/ado.js
CHANGED
|
@@ -108,12 +108,16 @@ async function forEachActivePr(config, token, callback) {
|
|
|
108
108
|
if (idx >= 0) currentPrs[idx] = updatedPr;
|
|
109
109
|
// Don't push if not found — it was deleted by another writer, respect that
|
|
110
110
|
}
|
|
111
|
-
// Remove duplicates
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
111
|
+
// Remove duplicates — prefer merged/abandoned over active
|
|
112
|
+
const bestById = new Map();
|
|
113
|
+
const statusRank = { merged: 3, abandoned: 2, closed: 2, active: 1 };
|
|
114
|
+
for (const p of currentPrs) {
|
|
115
|
+
const existing = bestById.get(p.id);
|
|
116
|
+
if (!existing || (statusRank[p.status] || 0) > (statusRank[existing.status] || 0)) {
|
|
117
|
+
bestById.set(p.id, p);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return [...bestById.values()];
|
|
117
121
|
}, { defaultValue: [] });
|
|
118
122
|
totalUpdated += projectUpdated;
|
|
119
123
|
}
|
package/engine/github.js
CHANGED
|
@@ -77,12 +77,16 @@ async function forEachActiveGhPr(config, callback) {
|
|
|
77
77
|
const idx = currentPrs.findIndex(p => p.id === updatedPr.id);
|
|
78
78
|
if (idx >= 0) currentPrs[idx] = updatedPr;
|
|
79
79
|
}
|
|
80
|
-
// Remove duplicates
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
// Remove duplicates — prefer merged/abandoned over active
|
|
81
|
+
const bestById = new Map();
|
|
82
|
+
const statusRank = { merged: 3, abandoned: 2, closed: 2, active: 1 };
|
|
83
|
+
for (const p of currentPrs) {
|
|
84
|
+
const existing = bestById.get(p.id);
|
|
85
|
+
if (!existing || (statusRank[p.status] || 0) > (statusRank[existing.status] || 0)) {
|
|
86
|
+
bestById.set(p.id, p);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return [...bestById.values()];
|
|
86
90
|
}, { defaultValue: [] });
|
|
87
91
|
totalUpdated += projectUpdated;
|
|
88
92
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.432",
|
|
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"
|