@yemi33/minions 0.1.67 → 0.1.69

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,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.69 (2026-03-31)
4
+
5
+ ### Dashboard
6
+ - dashboard/js/command-center.js
7
+
8
+ ## 0.1.68 (2026-03-31)
9
+
10
+ ### Dashboard
11
+ - dashboard.js
12
+
3
13
  ## 0.1.67 (2026-03-31)
4
14
 
5
15
  ### Dashboard
@@ -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;padding-right:24px">' + ccElapsed + 's</div>');
187
+ ccAddMessage('assistant', rendered + '<div style="font-size:9px;color:var(--muted);margin-top:6px;display:flex;justify-content:flex-end;padding-right:30px">' + ccElapsed + 's</div>');
188
188
 
189
189
  // Execute actions
190
190
  if (data.actions && data.actions.length > 0) {
@@ -195,7 +195,9 @@ async function _ccDoSend(message, skipUserMsg) {
195
195
  } catch (e) {
196
196
  clearInterval(ccTimer);
197
197
  thinking.remove();
198
- ccAddMessage('assistant', '<span style="color:var(--red)">Error: ' + escHtml(e.message) + '</span>');
198
+ const retryId = 'cc-retry-' + Date.now();
199
+ ccAddMessage('assistant', '<span style="color:var(--red)">Error: ' + escHtml(e.message) + '</span>' +
200
+ '<button id="' + retryId + '" onclick="ccRetryLast()" style="margin-top:6px;padding:4px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--blue);cursor:pointer;font-size:11px">Retry</button>');
199
201
  } finally {
200
202
  _ccSending = false;
201
203
  // Show notification badge on CC button if drawer is closed
@@ -203,6 +205,23 @@ async function _ccDoSend(message, skipUserMsg) {
203
205
  }
204
206
  }
205
207
 
208
+ function ccRetryLast() {
209
+ // Find the last user message and resend it
210
+ const last = _ccMessages.filter(m => m.role === 'user').pop();
211
+ if (!last) return;
212
+ // Extract text from the HTML (strip tags)
213
+ const tmp = document.createElement('div');
214
+ tmp.innerHTML = last.html;
215
+ const text = tmp.textContent || tmp.innerText || '';
216
+ if (!text.trim()) return;
217
+ // Remove the error message (last assistant message)
218
+ const el = document.getElementById('cc-messages');
219
+ if (el?.lastElementChild) el.lastElementChild.remove();
220
+ _ccMessages = _ccMessages.slice(0, -1); // remove error from history
221
+ // Resend
222
+ _ccDoSend(text.trim());
223
+ }
224
+
206
225
  async function ccExecuteAction(action) {
207
226
  const msgs = document.getElementById('cc-messages');
208
227
  const status = document.createElement('div');
package/dashboard.js CHANGED
@@ -263,7 +263,7 @@ const CC_SESSION_MAX_TURNS = 50;
263
263
  let ccSession = { sessionId: null, createdAt: null, lastActiveAt: null, turnCount: 0 };
264
264
  let ccInFlight = false;
265
265
  let ccInFlightSince = 0; // timestamp — auto-release stuck guard
266
- const CC_INFLIGHT_TIMEOUT_MS = 11 * 60 * 1000; // 11 minutes (slightly > LLM timeout)
266
+ const CC_INFLIGHT_TIMEOUT_MS = 2 * 60 * 1000; // 2 minutes auto-release if request hangs
267
267
 
268
268
  function ccSessionValid() {
269
269
  if (!ccSession.sessionId) return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.67",
3
+ "version": "0.1.69",
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"