@yemi33/minions 0.1.997 → 0.1.999

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,6 +1,6 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.997 (2026-04-15)
3
+ ## 0.1.999 (2026-04-15)
4
4
 
5
5
  ### Features
6
6
  - fix stopAfter=0 watch expiry — run forever for all conditions (#1117)
@@ -25,6 +25,7 @@
25
25
  - gate auto-fix conflict dispatch behind autoFixConflicts flag
26
26
 
27
27
  ### Fixes
28
+ - restore CC rendering and tab bar
28
29
  - restore WATCH_ABSOLUTE_CONDITIONS import in watches.js lost in #1117 squash merge
29
30
  - remove dead 'meeting' row from routing.md — orchestrated by engine/meeting.js directly
30
31
  - gate review auto-dispatch on adoPollEnabled and evalLoop (#1116)
@@ -44,9 +45,9 @@
44
45
  - skip SessionStart hook settings test on CI
45
46
  - loop queue flush so messages queued during combined send aren't orphaned
46
47
  - set lastPushedAt on fix completion to unblock re-review without poller
47
- - restore ADO throttle test functions deleted during merge conflict resolution
48
48
 
49
49
  ### Other
50
+ - docs: update CLAUDE.md with recent Minions architecture changes
50
51
  - chore: stop tracking runtime pipeline state
51
52
  - chore: strengthen prompts and routing
52
53
  - chore: harden prompt posture
@@ -248,7 +248,7 @@ function ccShowAllConversations() {
248
248
  function ccRenderTabBar() {
249
249
  var bar = document.getElementById('cc-tab-bar');
250
250
  if (!bar) return;
251
- var html = '';
251
+ var html = '<div class="cc-tab-scroll">';
252
252
  for (var i = 0; i < _ccTabs.length; i++) {
253
253
  var t = _ccTabs[i];
254
254
  var isActive = t.id === _ccActiveTabId;
@@ -258,8 +258,9 @@ function ccRenderTabBar() {
258
258
  html += '<span class="cc-tab-close" onclick="event.stopPropagation();ccCloseTab(\'' + t.id + '\')">&times;</span>';
259
259
  html += '</div>';
260
260
  }
261
- html += '<div class="cc-tab" onclick="ccNewTab()" title="New tab" style="color:var(--muted);padding:4px 8px">+</div>';
262
- html += '<button id="cc-all-btn" onclick="ccShowAllConversations()" style="background:none;border:none;color:var(--muted);font-size:11px;padding:4px 6px;cursor:pointer;white-space:nowrap;flex-shrink:0;margin-left:auto" title="All conversations">&#x25BC;</button>';
261
+ html += '<div class="cc-tab cc-tab-new" onclick="ccNewTab()" title="New tab">+</div>';
262
+ html += '</div>';
263
+ html += '<div class="cc-tab-actions"><button id="cc-all-btn" class="cc-all-btn" onclick="ccShowAllConversations()" title="All conversations">&#x25BC;</button></div>';
263
264
  bar.innerHTML = html;
264
265
  }
265
266
 
@@ -36,7 +36,7 @@
36
36
  <button onclick="toggleCommandCenter()" style="background:none;border:none;color:var(--muted);font-size:16px;cursor:pointer;padding:2px 6px">&#10005;</button>
37
37
  </div>
38
38
  </div>
39
- <div id="cc-tab-bar" style="display:flex;gap:4px;padding:4px 12px;border-bottom:1px solid var(--border);overflow-x:auto;align-items:center;flex-shrink:0"></div>
39
+ <div id="cc-tab-bar" style="display:flex;gap:8px;padding:4px 12px;border-bottom:1px solid var(--border);overflow:hidden;align-items:center;flex-shrink:0"></div>
40
40
  <div id="cc-messages" style="flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:10px"></div>
41
41
  <div style="padding:12px 16px;border-top:1px solid var(--border)">
42
42
  <div style="display:flex;gap:8px">
@@ -625,7 +625,12 @@
625
625
  @keyframes notifPulse { 0%,100% { opacity: 1; } 50% { opacity: 0.5; } }
626
626
 
627
627
  /* Command Center tab bar */
628
+ .cc-tab-scroll { display: flex; gap: 4px; align-items: center; overflow-x: auto; overflow-y: hidden; flex: 1 1 auto; min-width: 0; scrollbar-width: thin; }
629
+ .cc-tab-actions { display: flex; align-items: center; flex: 0 0 auto; margin-left: auto; position: relative; z-index: 1; background: var(--bg); }
630
+ .cc-all-btn { background: none; border: none; color: var(--muted); font-size: 11px; padding: 4px 6px; cursor: pointer; white-space: nowrap; flex-shrink: 0; }
631
+ .cc-all-btn:hover { color: var(--text); }
628
632
  .cc-tab { padding: 4px 10px; font-size: 10px; border: 1px solid var(--border); border-bottom: none; border-radius: 6px 6px 0 0; background: var(--surface2); color: var(--muted); cursor: pointer; white-space: nowrap; max-width: 140px; display: inline-flex; align-items: center; gap: 2px; flex-shrink: 0; margin-bottom: -1px; position: relative; }
633
+ .cc-tab-new { color: var(--muted); padding: 4px 8px; }
629
634
  .cc-tab-text { overflow: hidden; text-overflow: ellipsis; flex: 1; min-width: 0; }
630
635
  .cc-tab.active { color: var(--text); background: var(--bg); border-color: var(--border); z-index: 1; font-weight: 600; }
631
636
  .cc-tab.working { border-color: var(--blue); }
package/dashboard.js CHANGED
@@ -578,10 +578,17 @@ For all state files, look under \`${MINIONS_DIR}\`.`;
578
578
  return result;
579
579
  }
580
580
 
581
+ function findCCActionsDelimiter(text) {
582
+ if (!text) return -1;
583
+ const match = /(?:^|\r?\n)===ACTIONS===[ \t]*(?=\r?\n|$)/m.exec(text);
584
+ if (!match) return -1;
585
+ return match.index + match[0].indexOf('===ACTIONS===');
586
+ }
587
+
581
588
  function parseCCActions(text) {
582
589
  let actions = [];
583
590
  let displayText = text;
584
- const delimIdx = text.indexOf('===ACTIONS===');
591
+ const delimIdx = findCCActionsDelimiter(text);
585
592
  if (delimIdx >= 0) {
586
593
  displayText = text.slice(0, delimIdx).trim();
587
594
  try {
@@ -3601,7 +3608,7 @@ What would you like to discuss or change? When you're happy, say "approve" and I
3601
3608
  allowedTools: 'Bash,Read,Write,Edit,Glob,Grep,WebFetch,WebSearch',
3602
3609
  sessionId, effort: streamEffort, direct: true,
3603
3610
  onChunk: (text) => {
3604
- const actIdx = text.indexOf('===ACTIONS===');
3611
+ const actIdx = findCCActionsDelimiter(text);
3605
3612
  const display = actIdx >= 0 ? text.slice(0, actIdx).trim() : text;
3606
3613
  try { res.write('data: ' + JSON.stringify({ type: 'chunk', text: display }) + '\n\n'); } catch {}
3607
3614
  },
@@ -3625,7 +3632,7 @@ What would you like to discuss or change? When you're happy, say "approve" and I
3625
3632
  allowedTools: 'Bash,Read,Write,Edit,Glob,Grep,WebFetch,WebSearch',
3626
3633
  effort: streamEffort, direct: true,
3627
3634
  onChunk: (text) => {
3628
- const actIdx = text.indexOf('===ACTIONS===');
3635
+ const actIdx = findCCActionsDelimiter(text);
3629
3636
  const display = actIdx >= 0 ? text.slice(0, actIdx).trim() : text;
3630
3637
  try { res.write('data: ' + JSON.stringify({ type: 'chunk', text: display }) + '\n\n'); } catch {}
3631
3638
  },
@@ -4900,4 +4907,3 @@ server.on('error', e => {
4900
4907
  }
4901
4908
  process.exit(1);
4902
4909
  });
4903
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.997",
3
+ "version": "0.1.999",
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"