@yemi33/minions 0.1.422 → 0.1.424
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/detail-panel.js +1 -1
- package/dashboard/js/live-stream.js +16 -2
- package/dashboard/js/settings.js +2 -0
- package/dashboard.js +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.424 (2026-04-06)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
|
+
- version check interval on settings page
|
|
6
7
|
- configurable version check interval, default 1 hour
|
|
7
8
|
- Dashboard robustness — raw string fixes, plan steering clarity, safeWrite race fix
|
|
8
9
|
- Low-priority cleanup: dedupe regex, consolidate streaming parse, add path validation alignment
|
|
@@ -10,6 +11,7 @@
|
|
|
10
11
|
- Convert remaining lifecycle.js safeWrite calls to mutateJsonFileLocked
|
|
11
12
|
|
|
12
13
|
### Fixes
|
|
14
|
+
- steering messages right-aligned with immediate feedback
|
|
13
15
|
- CC retry now drains queued messages after success
|
|
14
16
|
- address review feedback — pipeline.js socket leak and magic numbers
|
|
15
17
|
|
|
@@ -67,7 +67,7 @@ function renderDetailContent(detail, tab) {
|
|
|
67
67
|
} else if (tab === 'live') {
|
|
68
68
|
el.innerHTML =
|
|
69
69
|
'<div id="live-chat" style="display:flex;flex-direction:column;height:60vh">' +
|
|
70
|
-
'<div id="live-messages" style="flex:1;overflow-y:auto;padding:8px;font-size:11px;line-height:1.6"></div>' +
|
|
70
|
+
'<div id="live-messages" style="flex:1;overflow-y:auto;padding:8px;font-size:11px;line-height:1.6;display:flex;flex-direction:column"></div>' +
|
|
71
71
|
'<div id="live-status-bar" style="padding:4px 8px;display:flex;align-items:center;gap:8px;border-top:1px solid var(--border)">' +
|
|
72
72
|
'<span class="pulse"></span><span id="live-status-label" style="font-size:11px;color:var(--green)">Streaming live</span>' +
|
|
73
73
|
'<button class="pr-pager-btn" onclick="refreshLiveOutput()" style="font-size:10px">Refresh</button>' +
|
|
@@ -129,16 +129,30 @@ async function sendSteering() {
|
|
|
129
129
|
const message = input.value.trim();
|
|
130
130
|
input.value = '';
|
|
131
131
|
|
|
132
|
+
// Immediate feedback — show the message right away
|
|
133
|
+
const el = document.getElementById('live-messages');
|
|
134
|
+
if (el) {
|
|
135
|
+
el.innerHTML += '<div style="align-self:flex-end;background:var(--blue);color:#fff;padding:6px 12px;border-radius:12px 12px 2px 12px;max-width:80%;margin:4px 0;font-size:12px">' + escHtml(message) + '</div>';
|
|
136
|
+
el.innerHTML += '<div id="steer-pending" style="align-self:flex-end;font-size:10px;color:var(--muted);padding:0 4px;margin-bottom:4px">Sending...</div>';
|
|
137
|
+
el.scrollTop = el.scrollHeight;
|
|
138
|
+
}
|
|
139
|
+
|
|
132
140
|
try {
|
|
133
141
|
const res = await fetch('/api/agents/steer', {
|
|
134
142
|
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
135
143
|
body: JSON.stringify({ agent: currentAgentId, message })
|
|
136
144
|
});
|
|
145
|
+
const pending = document.getElementById('steer-pending');
|
|
137
146
|
if (!res.ok) {
|
|
138
147
|
const d = await res.json().catch(() => ({}));
|
|
139
|
-
|
|
148
|
+
if (pending) { pending.textContent = '\u26A0 Failed: ' + (d.error || 'unknown'); pending.style.color = 'var(--red)'; }
|
|
149
|
+
} else {
|
|
150
|
+
if (pending) { pending.textContent = '\u2713 Queued — agent will see this on next turn'; pending.style.color = 'var(--green)'; }
|
|
140
151
|
}
|
|
141
|
-
} catch (e) {
|
|
152
|
+
} catch (e) {
|
|
153
|
+
const pending = document.getElementById('steer-pending');
|
|
154
|
+
if (pending) { pending.textContent = '\u26A0 ' + e.message; pending.style.color = 'var(--red)'; }
|
|
155
|
+
}
|
|
142
156
|
}
|
|
143
157
|
|
|
144
158
|
window.MinionsLive = { renderLiveChatMessage, startLiveStream, stopLiveStream, startLivePolling, stopLivePolling, refreshLiveOutput, sendSteering };
|
package/dashboard/js/settings.js
CHANGED
|
@@ -47,6 +47,7 @@ async function openSettings() {
|
|
|
47
47
|
'<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px">' +
|
|
48
48
|
settingsField('Eval Max Iterations', 'set-evalMaxIterations', e.evalMaxIterations || 3, '', 'Max review→fix cycles before escalating (1-10)') +
|
|
49
49
|
settingsField('Eval Max Cost', 'set-evalMaxCost', e.evalMaxCost === null || e.evalMaxCost === undefined ? '' : e.evalMaxCost, '$', 'USD ceiling per work item across all eval iterations (blank = no limit)') +
|
|
50
|
+
settingsField('Version Check Interval', 'set-versionCheckInterval', e.versionCheckInterval || 3600000, 'ms', 'How often to check npm for updates (default: 1 hour)') +
|
|
50
51
|
'</div>' +
|
|
51
52
|
|
|
52
53
|
'<h3 style="font-size:13px;color:var(--blue);margin-bottom:8px">Claude CLI</h3>' +
|
|
@@ -164,6 +165,7 @@ async function saveSettings() {
|
|
|
164
165
|
allowTempAgents: document.getElementById('set-allowTempAgents').checked,
|
|
165
166
|
evalMaxIterations: document.getElementById('set-evalMaxIterations').value,
|
|
166
167
|
evalMaxCost: document.getElementById('set-evalMaxCost').value || null,
|
|
168
|
+
versionCheckInterval: document.getElementById('set-versionCheckInterval').value,
|
|
167
169
|
};
|
|
168
170
|
|
|
169
171
|
const claudePayload = {
|
package/dashboard.js
CHANGED
|
@@ -3358,6 +3358,7 @@ What would you like to discuss or change? When you're happy, say "approve" and I
|
|
|
3358
3358
|
worktreeCreateTimeout: [60000], worktreeCreateRetries: [0, 3],
|
|
3359
3359
|
idleAlertMinutes: [1], shutdownTimeout: [30000], restartGracePeriod: [60000],
|
|
3360
3360
|
meetingRoundTimeout: [60000],
|
|
3361
|
+
versionCheckInterval: [60000],
|
|
3361
3362
|
};
|
|
3362
3363
|
for (const [key, [min, max]] of Object.entries(numericFields)) {
|
|
3363
3364
|
if (e[key] !== undefined) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.424",
|
|
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"
|