@yemi33/minions 0.1.757 → 0.1.758
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 +2 -1
- package/dashboard/js/command-center.js +20 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.758 (2026-04-09)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
6
|
- show branch strategy badge on PRD group header
|
|
7
7
|
|
|
8
8
|
### Fixes
|
|
9
|
+
- restore full streaming state (tools + partial text) on tab switch
|
|
9
10
|
- restored thinking UX matches original exactly (same bubble, layout)
|
|
10
11
|
- skip merged dependency branches instead of failing worktree setup
|
|
11
12
|
- restore same thinking UX when switching back to processing tab
|
|
@@ -135,28 +135,38 @@ function ccSwitchTab(id) {
|
|
|
135
135
|
for (var i = 0; i < tab.messages.length; i++) {
|
|
136
136
|
ccAddMessage(tab.messages[i].role, tab.messages[i].html, true);
|
|
137
137
|
}
|
|
138
|
-
// If this tab is still processing, restore the
|
|
138
|
+
// If this tab is still processing, restore the full streaming UX (tools, partial text, thinking)
|
|
139
139
|
if (tab._sending) {
|
|
140
140
|
var dotPulse = '<span style="display:inline-flex;gap:3px;margin-left:6px;vertical-align:middle"><span style="width:4px;height:4px;background:var(--blue);border-radius:50%;animation:dotPulse 1.2s infinite"></span><span style="width:4px;height:4px;background:var(--blue);border-radius:50%;animation:dotPulse 1.2s infinite;animation-delay:0.2s"></span><span style="width:4px;height:4px;background:var(--blue);border-radius:50%;animation:dotPulse 1.2s infinite;animation-delay:0.4s"></span></span>';
|
|
141
141
|
var restoreStart = tab._sendStartedAt || Date.now();
|
|
142
142
|
var phases = [[0,'Thinking...'],[3000,'Reading minions context...'],[8000,'Analyzing...'],[15000,'Using tools to dig deeper...'],[30000,'Still working (multi-turn)...'],[60000,'Deep research in progress...']];
|
|
143
|
-
function
|
|
143
|
+
function _restoreStreamHtml() {
|
|
144
|
+
var html = '';
|
|
145
|
+
var tools = tab._toolsUsed || [];
|
|
146
|
+
if (tools.length > 0) {
|
|
147
|
+
html += '<div style="margin-bottom:6px">';
|
|
148
|
+
tools.forEach(function(t) { html += '<div style="color:var(--blue);font-size:11px">\uD83D\uDD27 ' + escHtml(t) + '</div>'; });
|
|
149
|
+
html += '</div>';
|
|
150
|
+
}
|
|
151
|
+
var text = tab._streamedText || '';
|
|
152
|
+
if (text) html += renderMd(text);
|
|
144
153
|
var ms = Date.now() - restoreStart;
|
|
145
154
|
var label = 'Thinking...';
|
|
146
155
|
for (var pi = phases.length - 1; pi >= 0; pi--) { if (ms >= phases[pi][0]) { label = phases[pi][1]; break; } }
|
|
147
156
|
var secs = Math.floor(ms / 1000);
|
|
148
|
-
|
|
157
|
+
html += '<div style="margin-top:' + (text ? '6px' : '0') + ';display:flex;align-items:center;gap:6px"><span style="color:var(--muted);font-size:11px">' + label + '</span>' + dotPulse + '<span style="margin-left:auto;font-size:10px;color:var(--muted)">' + secs + 's</span>' +
|
|
149
158
|
'<button onclick="ccAbort()" style="font-size:9px;padding:2px 8px;background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--red);cursor:pointer;margin-left:4px">Stop</button></div>';
|
|
159
|
+
return html;
|
|
150
160
|
}
|
|
151
|
-
|
|
152
|
-
ccAddMessage('assistant', _restoreThinkingHtml(), true);
|
|
161
|
+
ccAddMessage('assistant', _restoreStreamHtml(), true);
|
|
153
162
|
var restoreDiv = el.lastElementChild;
|
|
154
163
|
restoreDiv.id = 'cc-restore-thinking';
|
|
155
164
|
el.scrollTop = el.scrollHeight;
|
|
156
165
|
var restoreInterval = setInterval(function() {
|
|
157
166
|
var re = document.getElementById('cc-restore-thinking');
|
|
158
167
|
if (!re || !tab._sending) { clearInterval(restoreInterval); if (re) re.remove(); return; }
|
|
159
|
-
re.innerHTML = (
|
|
168
|
+
re.innerHTML = _restoreStreamHtml();
|
|
169
|
+
if (el.scrollHeight - el.scrollTop - el.clientHeight < 150) el.scrollTop = el.scrollHeight;
|
|
160
170
|
}, 1000);
|
|
161
171
|
}
|
|
162
172
|
ccRenderTabBar();
|
|
@@ -448,8 +458,10 @@ async function _ccDoSend(message, skipUserMsg) {
|
|
|
448
458
|
];
|
|
449
459
|
|
|
450
460
|
// Streaming state — declared before try so updateStreamDiv works during fetch
|
|
461
|
+
// Also saved on tab for restore when switching back
|
|
451
462
|
var streamedText = '';
|
|
452
463
|
var toolsUsed = [];
|
|
464
|
+
if (activeTab) { activeTab._streamedText = ''; activeTab._toolsUsed = []; }
|
|
453
465
|
|
|
454
466
|
// Get active tab's sessionId to send with request
|
|
455
467
|
var activeTab = _ccActiveTab();
|
|
@@ -526,9 +538,11 @@ async function _ccDoSend(message, skipUserMsg) {
|
|
|
526
538
|
var evt = JSON.parse(line.slice(6));
|
|
527
539
|
if (evt.type === 'chunk') {
|
|
528
540
|
streamedText = evt.text;
|
|
541
|
+
if (activeTab) activeTab._streamedText = streamedText;
|
|
529
542
|
updateStreamDiv();
|
|
530
543
|
} else if (evt.type === 'tool') {
|
|
531
544
|
toolsUsed.push(evt.name);
|
|
545
|
+
if (activeTab) activeTab._toolsUsed = toolsUsed.slice();
|
|
532
546
|
updateStreamDiv();
|
|
533
547
|
if (msgs.scrollHeight - msgs.scrollTop - msgs.clientHeight < 150) msgs.scrollTop = msgs.scrollHeight;
|
|
534
548
|
} else if (evt.type === 'done') {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.758",
|
|
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"
|