@yemi33/minions 0.1.124 → 0.1.126
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 +17 -0
- package/dashboard/js/detail-panel.js +1 -0
- package/dashboard/js/render-meetings.js +1 -1
- package/dashboard/js/render-schedules.js +3 -3
- package/dashboard/js/render-work-items.js +4 -2
- package/dashboard/js/settings.js +2 -0
- package/engine/shared.js +1 -0
- package/engine.js +2 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.126 (2026-04-01)
|
|
4
|
+
|
|
5
|
+
### Engine
|
|
6
|
+
- engine.js
|
|
7
|
+
- engine/shared.js
|
|
8
|
+
|
|
9
|
+
### Dashboard
|
|
10
|
+
- dashboard/js/detail-panel.js
|
|
11
|
+
- dashboard/js/render-meetings.js
|
|
12
|
+
- dashboard/js/render-work-items.js
|
|
13
|
+
- dashboard/js/settings.js
|
|
14
|
+
|
|
15
|
+
## 0.1.125 (2026-04-01)
|
|
16
|
+
|
|
17
|
+
### Dashboard
|
|
18
|
+
- dashboard/js/render-schedules.js
|
|
19
|
+
|
|
3
20
|
## 0.1.124 (2026-04-01)
|
|
4
21
|
|
|
5
22
|
### Dashboard
|
|
@@ -135,6 +135,7 @@ function _cancelCharterEdit() {
|
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
async function _saveCharter() {
|
|
138
|
+
if (!currentAgentId) { alert('No agent selected'); return; }
|
|
138
139
|
const content = document.getElementById('charter-editor').value;
|
|
139
140
|
const btn = document.getElementById('charter-save-btn');
|
|
140
141
|
btn.textContent = 'Saving...'; btn.style.pointerEvents = 'none';
|
|
@@ -305,7 +305,7 @@ async function _unarchiveMeeting(id) {
|
|
|
305
305
|
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
306
306
|
body: JSON.stringify({ id })
|
|
307
307
|
});
|
|
308
|
-
if (!res.ok) { const d = await res.json().catch(() => ({})); alert('
|
|
308
|
+
if (!res.ok) { const d = await res.json().catch(() => ({})); alert('Unarchive failed: ' + (d.error || 'unknown')); refresh(); }
|
|
309
309
|
} catch (e) { alert('Error: ' + e.message); refresh(); }
|
|
310
310
|
}
|
|
311
311
|
|
|
@@ -223,9 +223,9 @@ function _renderScheduleCalendar(schedules) {
|
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
// Build grid: header row + one row per hour
|
|
226
|
-
// Columns: Mon(1) Tue(2) Wed(3) Thu(4) Fri(5) Sat(6)
|
|
227
|
-
var dayOrder = [1, 2, 3, 4, 5, 6
|
|
228
|
-
var dayLabels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'
|
|
226
|
+
// Columns: Sun(0) Mon(1) Tue(2) Wed(3) Thu(4) Fri(5) Sat(6)
|
|
227
|
+
var dayOrder = [0, 1, 2, 3, 4, 5, 6];
|
|
228
|
+
var dayLabels = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
|
|
229
229
|
|
|
230
230
|
var html = '<div class="sched-cal">';
|
|
231
231
|
// Header row
|
|
@@ -161,7 +161,8 @@ async function submitWorkItemEdit(id, source) {
|
|
|
161
161
|
async function deleteWorkItem(id, source) {
|
|
162
162
|
if (!confirm('Delete work item ' + id + '? This will kill any running agent and remove all dispatch history.')) return;
|
|
163
163
|
markDeleted('wi:' + id);
|
|
164
|
-
document.
|
|
164
|
+
var wiTable = document.getElementById('work-items-content');
|
|
165
|
+
(wiTable || document).querySelectorAll('tr').forEach(function(r) { if (r.textContent.includes(id)) r.remove(); });
|
|
165
166
|
try {
|
|
166
167
|
const res = await fetch('/api/work-items/delete', {
|
|
167
168
|
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
@@ -173,7 +174,8 @@ async function deleteWorkItem(id, source) {
|
|
|
173
174
|
|
|
174
175
|
async function archiveWorkItem(id, source) {
|
|
175
176
|
markDeleted('wi:' + id);
|
|
176
|
-
document.
|
|
177
|
+
var wiTable = document.getElementById('work-items-content');
|
|
178
|
+
(wiTable || document).querySelectorAll('tr').forEach(function(r) { if (r.textContent.includes(id)) r.remove(); });
|
|
177
179
|
showToast('cmd-toast', 'Archived ' + id, true);
|
|
178
180
|
try {
|
|
179
181
|
const res = await fetch('/api/work-items/archive', {
|
package/dashboard/js/settings.js
CHANGED
|
@@ -39,6 +39,7 @@ async function openSettings() {
|
|
|
39
39
|
'</div>' +
|
|
40
40
|
'<div style="display:flex;flex-direction:column;gap:6px;margin-bottom:16px">' +
|
|
41
41
|
settingsToggle('Auto-approve Plans', 'set-autoApprovePlans', !!e.autoApprovePlans, 'PRDs are approved automatically without human review') +
|
|
42
|
+
settingsToggle('Auto-review PRs', 'set-autoReview', e.autoReview !== false, 'Automatically dispatch review agents for new PRs') +
|
|
42
43
|
settingsToggle('Auto-decompose', 'set-autoDecompose', e.autoDecompose !== false, 'Large implement items are auto-split into sub-tasks') +
|
|
43
44
|
settingsToggle('Allow Temp Agents', 'set-allowTempAgents', !!e.allowTempAgents, 'Spawn ephemeral agents when all permanent agents are busy') +
|
|
44
45
|
'</div>' +
|
|
@@ -121,6 +122,7 @@ async function saveSettings() {
|
|
|
121
122
|
restartGracePeriod: document.getElementById('set-restartGracePeriod').value,
|
|
122
123
|
meetingRoundTimeout: document.getElementById('set-meetingRoundTimeout').value,
|
|
123
124
|
autoApprovePlans: document.getElementById('set-autoApprovePlans').checked,
|
|
125
|
+
autoReview: document.getElementById('set-autoReview').checked,
|
|
124
126
|
autoDecompose: document.getElementById('set-autoDecompose').checked,
|
|
125
127
|
allowTempAgents: document.getElementById('set-allowTempAgents').checked,
|
|
126
128
|
};
|
package/engine/shared.js
CHANGED
|
@@ -337,6 +337,7 @@ const ENGINE_DEFAULTS = {
|
|
|
337
337
|
allowTempAgents: false, // opt-in: spawn ephemeral agents when all permanent agents are busy
|
|
338
338
|
autoDecompose: true, // auto-decompose implement:large items into sub-tasks
|
|
339
339
|
autoApprovePlans: false, // auto-approve PRDs without waiting for human approval
|
|
340
|
+
autoReview: true, // auto-dispatch review agents for new PRs (disable for manual review workflow)
|
|
340
341
|
meetingRoundTimeout: 600000, // 10min per meeting round before auto-advance
|
|
341
342
|
};
|
|
342
343
|
|
package/engine.js
CHANGED
|
@@ -1245,7 +1245,8 @@ function discoverFromPrs(config, project) {
|
|
|
1245
1245
|
const reviewStatus = pr.reviewStatus || 'pending';
|
|
1246
1246
|
|
|
1247
1247
|
// PRs needing review: pending or waiting (review dispatched but no verdict yet)
|
|
1248
|
-
const
|
|
1248
|
+
const autoReview = config.engine?.autoReview !== false;
|
|
1249
|
+
const needsReview = autoReview && (reviewStatus === 'pending' || reviewStatus === 'waiting');
|
|
1249
1250
|
if (needsReview) {
|
|
1250
1251
|
const key = `review-${project?.name || 'default'}-${pr.id}`;
|
|
1251
1252
|
if (isAlreadyDispatched(key) || isOnCooldown(key, cooldownMs)) continue;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.126",
|
|
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"
|