@yemi33/minions 0.1.433 → 0.1.435
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 +3 -2
- package/engine/ado.js +9 -1
- package/engine/github.js +8 -1
- package/engine/lifecycle.js +2 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.435 (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
|
+
- prevent triple dispatch on same PR — 3 root causes
|
|
15
|
+
- don't show 'update available' when running from git repo
|
|
14
16
|
- CC network error shows helpful message + New Session button
|
|
15
17
|
- clicking outside command center dismisses it
|
|
16
18
|
- PR dedup prefers merged/abandoned over active regardless of order
|
package/dashboard.js
CHANGED
|
@@ -343,7 +343,8 @@ function getStatus() {
|
|
|
343
343
|
dashboardStale,
|
|
344
344
|
stale: engineStale || dashboardStale,
|
|
345
345
|
latest: _npmVersionCache?.latest || null,
|
|
346
|
-
|
|
346
|
+
// Only show "update available" for npm installs (no git repo) — repo users manage their own updates
|
|
347
|
+
updateAvailable: !diskCommit && !!(diskVersion && _npmVersionCache?.latest && _npmVersionCache.latest !== diskVersion && _compareVersions(_npmVersionCache.latest, diskVersion) > 0),
|
|
347
348
|
_npmCheckError: _npmVersionCache?.error || null,
|
|
348
349
|
};
|
|
349
350
|
})(),
|
|
@@ -3488,7 +3489,7 @@ What would you like to discuss or change? When you're happy, say "approve" and I
|
|
|
3488
3489
|
dashboardRunning: _dashboardVersion.codeVersion,
|
|
3489
3490
|
dashboardRunningCommit: _dashboardVersion.codeCommit,
|
|
3490
3491
|
latest: npm.latest,
|
|
3491
|
-
updateAvailable: !!(diskVersion && npm.latest && _compareVersions(npm.latest, diskVersion) > 0),
|
|
3492
|
+
updateAvailable: !diskCommit && !!(diskVersion && npm.latest && _compareVersions(npm.latest, diskVersion) > 0),
|
|
3492
3493
|
engineStale,
|
|
3493
3494
|
dashboardStale,
|
|
3494
3495
|
stale: engineStale || dashboardStale,
|
package/engine/ado.js
CHANGED
|
@@ -170,7 +170,15 @@ async function pollPrStatus(config) {
|
|
|
170
170
|
const votes = reviewers.map(r => r.vote).filter(v => v !== undefined);
|
|
171
171
|
let newReviewStatus = pr.reviewStatus || 'pending';
|
|
172
172
|
if (votes.length > 0) {
|
|
173
|
-
if (votes.some(v => v === -10))
|
|
173
|
+
if (votes.some(v => v === -10)) {
|
|
174
|
+
// Don't re-trigger 'changes-requested' if fix agent already responded (waiting state).
|
|
175
|
+
// Only re-trigger if there's been a new push since the fix (reviewer re-reviewed).
|
|
176
|
+
if (pr.reviewStatus === 'waiting' && pr.minionsReview?.fixedAt && (!pr.lastPushedAt || pr.lastPushedAt <= pr.minionsReview.fixedAt)) {
|
|
177
|
+
newReviewStatus = 'waiting'; // fix was submitted, same vote still present — wait for re-review
|
|
178
|
+
} else {
|
|
179
|
+
newReviewStatus = 'changes-requested';
|
|
180
|
+
}
|
|
181
|
+
}
|
|
174
182
|
else if (votes.some(v => v >= 5)) newReviewStatus = 'approved';
|
|
175
183
|
else if (votes.some(v => v === -5)) newReviewStatus = 'waiting';
|
|
176
184
|
else newReviewStatus = 'pending';
|
package/engine/github.js
CHANGED
|
@@ -204,7 +204,14 @@ async function pollPrStatus(config) {
|
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
let newReviewStatus = pr.reviewStatus || 'pending';
|
|
207
|
-
if (states.some(s => s === 'CHANGES_REQUESTED'))
|
|
207
|
+
if (states.some(s => s === 'CHANGES_REQUESTED')) {
|
|
208
|
+
// Don't re-trigger if fix agent already responded — wait for re-review
|
|
209
|
+
if (pr.reviewStatus === 'waiting' && pr.minionsReview?.fixedAt && (!pr.lastPushedAt || pr.lastPushedAt <= pr.minionsReview.fixedAt)) {
|
|
210
|
+
newReviewStatus = 'waiting';
|
|
211
|
+
} else {
|
|
212
|
+
newReviewStatus = 'changes-requested';
|
|
213
|
+
}
|
|
214
|
+
}
|
|
208
215
|
else if (states.some(s => s === 'APPROVED')) newReviewStatus = 'approved';
|
|
209
216
|
else if (states.length > 0) newReviewStatus = 'pending';
|
|
210
217
|
// If all reviews were COMMENTED (filtered out), states is empty but reviews exist.
|
package/engine/lifecycle.js
CHANGED
|
@@ -762,8 +762,9 @@ function updatePrAfterFix(pr, project, source) {
|
|
|
762
762
|
const target = prs.find(p => p.id === pr.id);
|
|
763
763
|
if (!target) return prs;
|
|
764
764
|
target.reviewStatus = 'waiting';
|
|
765
|
+
// Always clear pendingFix — a fix dispatch (regardless of source) addresses all pending feedback
|
|
766
|
+
if (target.humanFeedback) target.humanFeedback.pendingFix = false;
|
|
765
767
|
if (source === 'pr-human-feedback') {
|
|
766
|
-
if (target.humanFeedback) target.humanFeedback.pendingFix = false;
|
|
767
768
|
target.minionsReview = { ...target.minionsReview, note: 'Fixed human feedback, awaiting re-review', fixedAt: ts() };
|
|
768
769
|
log('info', `Updated ${pr.id} → cleared humanFeedback.pendingFix, reset to waiting for re-review`);
|
|
769
770
|
} else {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.435",
|
|
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"
|