@yemi33/minions 0.1.383 → 0.1.384

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 CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.384 (2026-04-06)
4
+
5
+ ### Features
6
+ - show engine version and stale-code warning in dashboard
7
+
3
8
  ## 0.1.383 (2026-04-06)
4
9
 
5
10
  ### Fixes
@@ -57,6 +57,7 @@ function _processStatusUpdate(data) {
57
57
  renderPrs(data.pullRequests || []);
58
58
  renderArchiveButtons(data.archivedPrds || []);
59
59
  renderEngineStatus(data.engine);
60
+ renderVersionBanner(data.version);
60
61
  renderDispatch(data.dispatch);
61
62
  window._lastDispatch = data.dispatch;
62
63
  window._lastWorkItems = data.workItems || [];
@@ -210,4 +210,25 @@ async function showErrorDetails(agentId, reason, task) {
210
210
  }
211
211
  }
212
212
 
213
- window.MinionsDispatch = { renderEngineStatus, renderEngineAlert, renderDispatch, renderEngineLog, shortTime, showErrorDetails };
213
+ function renderVersionBanner(version) {
214
+ const el = document.getElementById('version-banner');
215
+ if (!el) return;
216
+ if (!version) { el.style.display = 'none'; return; }
217
+
218
+ // Show version in footer area
219
+ const label = version.running ? 'v' + version.running : '';
220
+ const commitLabel = version.runningCommit ? ' (' + version.runningCommit + ')' : '';
221
+ el.textContent = label + commitLabel;
222
+ el.title = 'Engine: v' + (version.running || '?') + ' ' + (version.runningCommit || '') +
223
+ '\nDisk: v' + (version.disk || '?') + ' ' + (version.diskCommit || '');
224
+
225
+ if (version.stale) {
226
+ el.style.cssText = 'font-size:9px;padding:2px 8px;background:rgba(210,153,34,0.15);border:1px solid rgba(210,153,34,0.3);border-radius:4px;color:var(--yellow);cursor:help';
227
+ el.textContent = '\u26A0 Engine running v' + (version.running || '?') + ' (' + (version.runningCommit || '?') + ') — disk has v' + (version.disk || '?') + ' (' + (version.diskCommit || '?') + '). Restart to apply.';
228
+ el.title = 'The engine process is running older code than what is on disk. Run: minions restart';
229
+ } else {
230
+ el.style.cssText = 'font-size:9px;color:var(--muted)';
231
+ }
232
+ }
233
+
234
+ window.MinionsDispatch = { renderEngineStatus, renderEngineAlert, renderVersionBanner, renderDispatch, renderEngineLog, shortTime, showErrorDetails };
@@ -19,6 +19,7 @@
19
19
  </div>
20
20
  </header>
21
21
  <div class="engine-alert" id="engine-alert"></div>
22
+ <div id="version-banner" style="font-size:9px;color:var(--muted);padding:0 16px"></div>
22
23
 
23
24
  <!-- Command Center Drawer -->
24
25
  <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">
package/dashboard.js CHANGED
@@ -248,6 +248,21 @@ function getStatus() {
248
248
  },
249
249
  initialized: !!(CONFIG.agents && Object.keys(CONFIG.agents).length > 0),
250
250
  installId: safeRead(path.join(MINIONS_DIR, '.install-id')).trim() || null,
251
+ version: (() => {
252
+ const engine = getEngineState();
253
+ let diskVersion = null;
254
+ try { diskVersion = require('./package.json').version; } catch {}
255
+ let diskCommit = null;
256
+ try { diskCommit = require('child_process').execSync('git rev-parse --short HEAD', { cwd: MINIONS_DIR, encoding: 'utf8', timeout: 5000, windowsHide: true }).trim(); } catch {}
257
+ return {
258
+ running: engine.codeVersion || null,
259
+ runningCommit: engine.codeCommit || null,
260
+ disk: diskVersion,
261
+ diskCommit,
262
+ stale: !!(engine.codeVersion && diskVersion && engine.codeVersion !== diskVersion) ||
263
+ !!(engine.codeCommit && diskCommit && engine.codeCommit !== diskCommit),
264
+ };
265
+ })(),
251
266
  timestamp: new Date().toISOString(),
252
267
  };
253
268
  _statusCacheTs = now;
package/engine/cli.js CHANGED
@@ -84,7 +84,12 @@ const commands = {
84
84
  console.log(`Engine was running (PID ${control.pid}) but process is dead — restarting.`);
85
85
  }
86
86
 
87
- safeWrite(CONTROL_PATH, { state: 'running', pid: process.pid, started_at: e.ts() });
87
+ // Record version + git commit so dashboard can detect stale engine code
88
+ let codeVersion = null;
89
+ try { codeVersion = require('../package.json').version; } catch {}
90
+ let codeCommit = null;
91
+ try { codeCommit = require('child_process').execSync('git rev-parse --short HEAD', { cwd: path.resolve(__dirname, '..'), encoding: 'utf8', timeout: 5000, windowsHide: true }).trim(); } catch {}
92
+ safeWrite(CONTROL_PATH, { state: 'running', pid: process.pid, started_at: e.ts(), codeVersion, codeCommit });
88
93
  e.log('info', 'Engine started');
89
94
  console.log(`Engine started (PID: ${process.pid})`);
90
95
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.383",
3
+ "version": "0.1.384",
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"