@yemi33/minions 0.1.762 → 0.1.763
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 +5 -1
- package/dashboard/js/command-center.js +4 -3
- package/dashboard/styles.css +3 -0
- package/engine/lifecycle.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.763 (2026-04-10)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
- pulsing blue dot on CC tabs with active requests
|
|
4
7
|
|
|
5
8
|
### Fixes
|
|
9
|
+
- only trigger verify when all PRD items succeed, not on partial failure
|
|
6
10
|
- clean handoff between restore and original stream intervals
|
|
7
11
|
- prevent competing thinking intervals on tab switch
|
|
8
12
|
|
|
@@ -244,7 +244,7 @@ function ccRenderTabBar() {
|
|
|
244
244
|
for (var i = 0; i < _ccTabs.length; i++) {
|
|
245
245
|
var t = _ccTabs[i];
|
|
246
246
|
var isActive = t.id === _ccActiveTabId;
|
|
247
|
-
html += '<div class="cc-tab' + (isActive ? ' active' : '') + '" onclick="ccSwitchTab(\'' + t.id + '\')" title="' + escHtml(t.title) + '">';
|
|
247
|
+
html += '<div class="cc-tab' + (isActive ? ' active' : '') + (t._sending ? ' working' : '') + '" onclick="ccSwitchTab(\'' + t.id + '\')" title="' + escHtml(t.title) + '">';
|
|
248
248
|
html += '<span class="cc-tab-text">' + escHtml(t.title) + '</span>';
|
|
249
249
|
html += '<span class="cc-tab-close" onclick="event.stopPropagation();ccCloseTab(\'' + t.id + '\')">×</span>';
|
|
250
250
|
html += '</div>';
|
|
@@ -433,7 +433,8 @@ async function _ccDoSend(message, skipUserMsg) {
|
|
|
433
433
|
activeTab._sending = true;
|
|
434
434
|
activeTab._sendStartedAt = Date.now();
|
|
435
435
|
activeTab._abortController = new AbortController();
|
|
436
|
-
_ccSending = true;
|
|
436
|
+
_ccSending = true;
|
|
437
|
+
ccRenderTabBar();
|
|
437
438
|
var _wasAborted = false;
|
|
438
439
|
try { localStorage.setItem('cc-sending', JSON.stringify({ sending: true, startedAt: Date.now() })); } catch {}
|
|
439
440
|
|
|
@@ -635,9 +636,9 @@ async function _ccDoSend(message, skipUserMsg) {
|
|
|
635
636
|
} finally {
|
|
636
637
|
if (activeTab) { activeTab._sending = false; activeTab._abortController = null; delete activeTab._streamedText; delete activeTab._toolsUsed; delete activeTab._sendStartedAt; }
|
|
637
638
|
_ccSending = (_ccTabs.some(function(t) { return t._sending; }));
|
|
639
|
+
ccRenderTabBar();
|
|
638
640
|
try { clearInterval(phaseTimer); } catch { /* may not be defined if error before reader */ }
|
|
639
641
|
try { localStorage.removeItem('cc-sending'); } catch {}
|
|
640
|
-
// Show notification badge on CC button if drawer is closed
|
|
641
642
|
if (!_ccOpen) showNotifBadge(document.getElementById('cc-toggle-btn'));
|
|
642
643
|
}
|
|
643
644
|
return _wasAborted;
|
package/dashboard/styles.css
CHANGED
|
@@ -624,6 +624,9 @@
|
|
|
624
624
|
.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; }
|
|
625
625
|
.cc-tab-text { overflow: hidden; text-overflow: ellipsis; flex: 1; min-width: 0; }
|
|
626
626
|
.cc-tab.active { color: var(--text); background: var(--bg); border-color: var(--border); z-index: 1; font-weight: 600; }
|
|
627
|
+
.cc-tab.working { border-color: var(--blue); }
|
|
628
|
+
.cc-tab.working::before { content: ''; position: absolute; top: 3px; left: 5px; width: 4px; height: 4px; border-radius: 50%; background: var(--blue); animation: pulse 1.5s infinite; }
|
|
629
|
+
.cc-tab.working.active::before { background: var(--blue); }
|
|
627
630
|
.cc-tab-close { flex-shrink: 0; margin-left: 4px; opacity: 0; cursor: pointer; font-size: 12px; line-height: 1; }
|
|
628
631
|
.cc-tab:hover .cc-tab-close { opacity: 0.5; }
|
|
629
632
|
.cc-tab-close:hover { opacity: 1; color: var(--red); }
|
package/engine/lifecycle.js
CHANGED
|
@@ -185,7 +185,7 @@ function checkPlanCompletion(meta, config) {
|
|
|
185
185
|
|
|
186
186
|
// 4. Create verification work item (build, test, start webapp, write testing guide)
|
|
187
187
|
const existingVerify = allWorkItems.find(w => w.sourcePlan === planFile && w.itemType === 'verify');
|
|
188
|
-
if (!existingVerify && doneItems.length > 0) {
|
|
188
|
+
if (!existingVerify && doneItems.length > 0 && failedItems.length === 0) {
|
|
189
189
|
const verifyId = 'PL-' + shared.uid();
|
|
190
190
|
const planSlug = planFile.replace('.json', '');
|
|
191
191
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.763",
|
|
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"
|