@yemi33/minions 0.1.275 → 0.1.277

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,14 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.275 (2026-04-03)
3
+ ## 0.1.277 (2026-04-03)
4
4
 
5
5
  ### Features
6
6
  - sending a new CC message aborts the current request instead of queuing
7
7
  - CC streaming shows cumulative tool list with loading dots
8
8
 
9
9
  ### Fixes
10
+ - queued messages show as individual bubbles always at the bottom
11
+ - queued messages show as pinned indicator at bottom of chat
10
12
  - queued message pill shows on user side (right-aligned)
11
13
  - queued messages show as fresh user bubbles when processing starts
12
14
  - restore CC message queuing + scroll to queued message when processing
@@ -110,10 +110,10 @@ async function ccSend() {
110
110
  if (!message) return;
111
111
  input.value = '';
112
112
 
113
- // If already processing, queue the message — don't show user bubble yet
113
+ // If already processing, queue the message
114
114
  if (_ccSending) {
115
115
  _ccQueue.push(message);
116
- ccAddMessage('user', '<span class="cc-queued-pill" style="opacity:0.6;font-size:11px">' + escHtml(message) + '<br><span style="font-size:9px;font-style:italic">queued</span></span>');
116
+ _renderQueueIndicator();
117
117
  return;
118
118
  }
119
119
  await _ccDoSend(message);
@@ -121,17 +121,27 @@ async function ccSend() {
121
121
  // Drain queue — show each as a fresh user message + process
122
122
  while (_ccQueue.length > 0) {
123
123
  const next = _ccQueue.shift();
124
- // Remove the "Queued" pill
125
- const msgs = document.getElementById('cc-messages');
126
- const queuedPills = msgs.querySelectorAll('.cc-queued-pill');
127
- for (const pill of queuedPills) {
128
- if (pill.closest('div')) { pill.closest('div').remove(); break; }
129
- }
130
- // Show as a normal user message being sent now
124
+ _renderQueueIndicator(); // update or remove indicator
131
125
  await _ccDoSend(next);
132
126
  }
133
127
  }
134
128
 
129
+ function _renderQueueIndicator() {
130
+ // Remove all existing queue indicators
131
+ document.querySelectorAll('.cc-queue-item').forEach(function(el) { el.remove(); });
132
+ if (_ccQueue.length === 0) return;
133
+ var msgs = document.getElementById('cc-messages');
134
+ // Add each queued message as its own bubble at the bottom
135
+ _ccQueue.forEach(function(m) {
136
+ var el = document.createElement('div');
137
+ el.className = 'cc-queue-item';
138
+ el.style.cssText = 'padding:8px 12px;border-radius:8px;font-size:12px;line-height:1.6;max-width:95%;align-self:flex-end;background:var(--blue);color:#fff;opacity:0.5;order:9999';
139
+ el.innerHTML = escHtml(m) + '<div style="font-size:9px;opacity:0.7;font-style:italic;margin-top:2px">queued</div>';
140
+ msgs.appendChild(el);
141
+ });
142
+ msgs.scrollTop = msgs.scrollHeight;
143
+ }
144
+
135
145
  async function _ccDoSend(message, skipUserMsg) {
136
146
  _ccSending = true;
137
147
  _ccAbortController = new AbortController();
@@ -139,6 +149,10 @@ async function _ccDoSend(message, skipUserMsg) {
139
149
 
140
150
  if (!skipUserMsg) ccAddMessage('user', escHtml(message));
141
151
 
152
+ // Remove queue indicator before processing (it'll be re-added if more queued)
153
+ var existingQueueEl = document.getElementById('cc-queue-indicator');
154
+ if (existingQueueEl) existingQueueEl.remove();
155
+
142
156
  // Show thinking indicator with timer + queue count
143
157
  const queueCount = _ccQueue.length;
144
158
  const queueBadge = queueCount > 0 ? ' <span style="font-size:9px;background:var(--surface);padding:1px 5px;border-radius:8px;border:1px solid var(--border)">+' + queueCount + ' queued</span>' : '';
@@ -216,6 +230,8 @@ async function _ccDoSend(message, skipUserMsg) {
216
230
  html += '<span style="color:var(--muted);font-size:11px">Thinking...' + dotPulse + '</span>';
217
231
  }
218
232
  streamDiv.innerHTML = html;
233
+ // Re-append queue indicators so they stay below the streaming content
234
+ if (_ccQueue.length > 0) _renderQueueIndicator();
219
235
  if (msgs.scrollHeight - msgs.scrollTop - msgs.clientHeight < 150) msgs.scrollTop = msgs.scrollHeight;
220
236
  }
221
237
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.275",
3
+ "version": "0.1.277",
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"