@yemi33/minions 0.1.277 → 0.1.279
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 +7 -1
- package/dashboard/js/command-center.js +1 -2
- package/dashboard/js/modal-qa.js +20 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.279 (2026-04-03)
|
|
4
|
+
|
|
5
|
+
### Fixes
|
|
6
|
+
- doc chat elapsed time no longer overlaps copy button
|
|
7
|
+
|
|
8
|
+
## 0.1.278 (2026-04-03)
|
|
4
9
|
|
|
5
10
|
### Features
|
|
6
11
|
- sending a new CC message aborts the current request instead of queuing
|
|
7
12
|
- CC streaming shows cumulative tool list with loading dots
|
|
8
13
|
|
|
9
14
|
### Fixes
|
|
15
|
+
- thinking indicator persists alongside streamed text until done
|
|
10
16
|
- queued messages show as individual bubbles always at the bottom
|
|
11
17
|
- queued messages show as pinned indicator at bottom of chat
|
|
12
18
|
- queued message pill shows on user side (right-aligned)
|
|
@@ -226,9 +226,8 @@ async function _ccDoSend(message, skipUserMsg) {
|
|
|
226
226
|
}
|
|
227
227
|
if (streamedText) {
|
|
228
228
|
html += renderMd(streamedText);
|
|
229
|
-
} else {
|
|
230
|
-
html += '<span style="color:var(--muted);font-size:11px">Thinking...' + dotPulse + '</span>';
|
|
231
229
|
}
|
|
230
|
+
html += '<div style="margin-top:' + (streamedText ? '6px' : '0') + '"><span style="color:var(--muted);font-size:11px">Thinking...' + dotPulse + '</span></div>';
|
|
232
231
|
streamDiv.innerHTML = html;
|
|
233
232
|
// Re-append queue indicators so they stay below the streaming content
|
|
234
233
|
if (_ccQueue.length > 0) _renderQueueIndicator();
|
package/dashboard/js/modal-qa.js
CHANGED
|
@@ -6,8 +6,22 @@ let _modalFilePath = null; // file path for steering (null = read-only Q&A only)
|
|
|
6
6
|
function showModalQa() {
|
|
7
7
|
document.getElementById('modal-qa').style.display = '';
|
|
8
8
|
}
|
|
9
|
+
|
|
10
|
+
function _qaNotifySidebar(filePath) {
|
|
11
|
+
if (!filePath) return;
|
|
12
|
+
let page = '';
|
|
13
|
+
if (/^plans\//.test(filePath) || /^prd\//.test(filePath)) page = 'plans';
|
|
14
|
+
else if (/^knowledge\//.test(filePath) || /^notes/.test(filePath) || /^pinned/.test(filePath)) page = 'inbox';
|
|
15
|
+
else if (/^meetings\//.test(filePath)) page = 'inbox';
|
|
16
|
+
else return;
|
|
17
|
+
// Don't badge if user is already on that page
|
|
18
|
+
const currentPage = document.querySelector('.sidebar-link.active')?.getAttribute('data-page');
|
|
19
|
+
if (currentPage === page) return;
|
|
20
|
+
const link = document.querySelector('.sidebar-link[data-page="' + page + '"]');
|
|
21
|
+
if (link && !link.querySelector('.notif-badge')) showNotifBadge(link);
|
|
22
|
+
}
|
|
9
23
|
let _qaHistory = []; // multi-turn conversation history [{role:'user',text:''},{role:'assistant',text:''}]
|
|
10
|
-
let _qaProcessing = false; // true while waiting for
|
|
24
|
+
let _qaProcessing = false; // true while waiting for response
|
|
11
25
|
let _qaQueue = []; // queued messages while processing
|
|
12
26
|
let _qaSessionKey = ''; // key for current conversation (title or filePath)
|
|
13
27
|
const _qaSessions = new Map(); // persist conversations across modal open/close {key → {history, threadHtml}}
|
|
@@ -199,13 +213,16 @@ async function _processQaMessage(message, selection) {
|
|
|
199
213
|
const borderColor = data.edited ? 'var(--green)' : 'var(--blue)';
|
|
200
214
|
const suffix = data.edited ? '\n\n\u2713 Document saved.' : '';
|
|
201
215
|
const qaElapsed = Math.round((Date.now() - qaStartTime) / 1000);
|
|
202
|
-
const qaTimeLabel = '<div style="font-size:9px;color:var(--muted);margin-top:4px;text-align:right">' + qaElapsed + 's</div>';
|
|
216
|
+
const qaTimeLabel = '<div style="font-size:9px;color:var(--muted);margin-top:4px;text-align:right;padding-right:24px">' + qaElapsed + 's</div>';
|
|
203
217
|
thread.innerHTML += '<div class="modal-qa-a" style="border-left-color:' + borderColor + '">' + llmCopyBtn() + renderMd(data.answer + suffix) + qaTimeLabel + '</div>';
|
|
204
218
|
|
|
205
219
|
// Track conversation history
|
|
206
220
|
_qaHistory.push({ role: 'user', text: message });
|
|
207
221
|
_qaHistory.push({ role: 'assistant', text: data.answer });
|
|
208
222
|
|
|
223
|
+
// Notify sidebar page link
|
|
224
|
+
_qaNotifySidebar(capturedFilePath);
|
|
225
|
+
|
|
209
226
|
// Execute any CC actions (dispatch, note, etc.)
|
|
210
227
|
if (data.actions && data.actions.length > 0) {
|
|
211
228
|
for (const action of data.actions) { await ccExecuteAction(action); }
|
|
@@ -267,7 +284,7 @@ async function _processQaMessage(message, selection) {
|
|
|
267
284
|
filePath: sessionFilePath,
|
|
268
285
|
});
|
|
269
286
|
_saveQaSessions();
|
|
270
|
-
//
|
|
287
|
+
// Show notification badge on source card when modal was closed during processing
|
|
271
288
|
if (!modalIsOpen) {
|
|
272
289
|
const card = findCardForFile(sessionFilePath);
|
|
273
290
|
if (card) showNotifBadge(card);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.279",
|
|
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"
|