@yemi33/minions 0.1.65 → 0.1.67

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,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.67 (2026-03-31)
4
+
5
+ ### Dashboard
6
+ - dashboard/js/command-center.js
7
+ - dashboard/layout.html
8
+
9
+ ## 0.1.66 (2026-03-31)
10
+
11
+ ### Dashboard
12
+ - dashboard.js
13
+ - dashboard/js/refresh.js
14
+
3
15
  ## 0.1.65 (2026-03-31)
4
16
 
5
17
  ### Engine
@@ -55,7 +55,7 @@ function ccUpdateSessionIndicator() {
55
55
  el.textContent = `Session: ${turns} turn${turns !== 1 ? 's' : ''}`;
56
56
  el.style.color = 'var(--green)';
57
57
  } else {
58
- el.textContent = 'New session';
58
+ el.textContent = 'Ready';
59
59
  el.style.color = 'var(--muted)';
60
60
  }
61
61
  }
@@ -184,7 +184,7 @@ async function _ccDoSend(message, skipUserMsg) {
184
184
  const rendered = (data.text || '').replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>')
185
185
  .replace(/`([^`]+)`/g, '<code style="background:var(--surface);padding:1px 4px;border-radius:3px;font-size:11px">$1</code>')
186
186
  .replace(/\n/g, '<br>');
187
- ccAddMessage('assistant', rendered + '<div style="font-size:9px;color:var(--muted);margin-top:4px;text-align:right">' + ccElapsed + 's</div>');
187
+ ccAddMessage('assistant', rendered + '<div style="font-size:9px;color:var(--muted);margin-top:4px;text-align:right;padding-right:24px">' + ccElapsed + 's</div>');
188
188
 
189
189
  // Execute actions
190
190
  if (data.actions && data.actions.length > 0) {
@@ -57,15 +57,16 @@ async function refresh() {
57
57
 
58
58
  refresh();
59
59
 
60
- // SSE status stream — real-time push, falls back to 4s polling
60
+ // SSE status stream — real-time push + hot-reload on one connection
61
+ // (avoids exhausting HTTP/1.1's 6-connection-per-origin limit)
61
62
  let _statusStream = null;
62
63
  try {
63
64
  _statusStream = new EventSource('/api/status-stream');
64
65
  _statusStream.onmessage = (e) => {
65
66
  try { _processStatusUpdate(JSON.parse(e.data)); } catch (e2) { console.error('status-stream:', e2.message); }
66
67
  };
68
+ _statusStream.addEventListener('reload', () => { location.reload(); });
67
69
  _statusStream.onerror = () => {
68
- // Fall back to polling
69
70
  if (_statusStream) { _statusStream.close(); _statusStream = null; }
70
71
  setInterval(refresh, 4000);
71
72
  };
@@ -79,10 +80,4 @@ document.querySelectorAll('.sidebar-link').forEach(link => {
79
80
  });
80
81
  switchPage(currentPage);
81
82
 
82
- // Hot-reload: auto-refresh browser when dashboard files change
83
- try {
84
- const _hotReload = new EventSource('/api/hot-reload');
85
- _hotReload.onmessage = (e) => { if (e.data === 'reload') location.reload(); };
86
- } catch { /* expected */ }
87
-
88
83
  window.MinionsRefresh = { refresh };
@@ -28,7 +28,7 @@
28
28
  <span id="cc-session-info" style="font-size:10px;color:var(--muted)">New session</span>
29
29
  </div>
30
30
  <div style="display:flex;align-items:center;gap:8px">
31
- <button onclick="ccNewSession()" style="background:none;border:1px solid var(--border);color:var(--muted);font-size:10px;padding:2px 8px;border-radius:3px;cursor:pointer">New Session</button>
31
+ <button onclick="ccNewSession()" style="background:none;border:1px solid var(--border);color:var(--muted);font-size:10px;padding:2px 8px;border-radius:3px;cursor:pointer">Clear Chat</button>
32
32
  <button onclick="toggleCommandCenter()" style="background:none;border:none;color:var(--muted);font-size:16px;cursor:pointer;padding:2px 6px">&#10005;</button>
33
33
  </div>
34
34
  </div>
package/dashboard.js CHANGED
@@ -109,7 +109,11 @@ function rebuildDashboardHtml() {
109
109
  HTML_GZ = zlib.gzipSync(HTML);
110
110
  HTML_ETAG = '"' + require('crypto').createHash('md5').update(HTML).digest('hex') + '"';
111
111
  console.log(' Dashboard hot-reloaded');
112
- // Push reload to all connected browsers
112
+ // Push reload to all connected browsers via status-stream (saves a connection)
113
+ for (const res of _statusStreamClients) {
114
+ try { res.write('event: reload\ndata: reload\n\n'); } catch { _statusStreamClients.delete(res); }
115
+ }
116
+ // Legacy hot-reload clients
113
117
  for (const res of _hotReloadClients) {
114
118
  try { res.write('data: reload\n\n'); } catch { _hotReloadClients.delete(res); }
115
119
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.65",
3
+ "version": "0.1.67",
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"