@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 CHANGED
@@ -1,12 +1,18 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.277 (2026-04-03)
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();
@@ -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 Haiku response
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
- // If modal was closed while processing, show notification badge on source card
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.277",
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"