@yemi33/minions 0.1.811 → 0.1.813

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,8 +1,9 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.811 (2026-04-10)
3
+ ## 0.1.813 (2026-04-11)
4
4
 
5
5
  ### Features
6
+ - show branch strategy on PRD view (#762)
6
7
  - Restructure decompose.md sub-task output format (#655)
7
8
  - CC race condition fixes, doc-chat expand, settings save fix, metric rate
8
9
  - configurable ignored comment authors — auto-filtered, never trigger fixes
@@ -11,6 +12,7 @@
11
12
  - cap review→fix cycles at evalMaxIterations (default 3)
12
13
 
13
14
  ### Fixes
15
+ - CC queue drain uses combined flush, not one-at-a-time while loop (#818)
14
16
  - allow agents to explain rationale instead of blindly fixing review feedback
15
17
  - don't URL-encode ADO branchName filter (refs/heads/ format expected raw)
16
18
  - ADO build query filters by source branch (not all org builds)
@@ -30,7 +32,6 @@
30
32
  - repair invalid JSON in daily-arch-improvement pipeline
31
33
  - flush queued CC messages as single combined request
32
34
  - human feedback fixes are never capped (only minion review→fix loop is)
33
- - 5 bugs from comprehensive audit
34
35
 
35
36
  ## 0.1.782 (2026-04-10)
36
37
 
@@ -378,14 +378,11 @@ async function ccSend() {
378
378
  }
379
379
  var wasAborted = await _ccDoSend(message);
380
380
 
381
- // Drain queued messages one at a time with abort delay
382
- while (tab._queue && tab._queue.length > 0) {
383
- if (wasAborted) {
384
- await new Promise(function(r) { setTimeout(r, 600); });
385
- }
386
- var next = tab._queue.shift();
381
+ // Flush queued messages combine into single request
382
+ if (tab._queue && tab._queue.length > 0) {
383
+ var combined = tab._queue.splice(0).join('\n\n');
387
384
  _renderQueueIndicator();
388
- wasAborted = await _ccDoSend(next);
385
+ await _ccDoSend(combined);
389
386
  }
390
387
  }
391
388
 
@@ -171,6 +171,12 @@ function renderPrdProgress(prog) {
171
171
  const agentLabel = wiAgent ? '<span style="font-size:9px;color:var(--muted)" title="' + escHtml(wiAgent.name || wi.dispatched_to) + '">' +
172
172
  (wiAgent.emoji || '') + ' ' + escHtml(wiAgent.name || wi.dispatched_to) + '</span>' : '';
173
173
 
174
+ // Branch label — show the target branch for this item
175
+ const wiBranch = wi ? (wi.branch || wi.featureBranch || (wi._artifacts && wi._artifacts.branch) || '') : '';
176
+ const branchLabel = wiBranch
177
+ ? '<span style="font-size:9px;color:var(--muted);background:var(--surface);padding:1px 5px;border-radius:3px;border:1px solid var(--border);font-family:monospace;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:middle" title="Branch: ' + escHtml(wiBranch) + '">&#x1F33F; ' + escHtml(wiBranch) + '</span>'
178
+ : '';
179
+
174
180
  // Requeue button for failed items or PRD items with no work item (orphaned/deleted)
175
181
  const canRequeue = (wi && (wi.status === 'failed' || i.status === 'failed')) ||
176
182
  (!wi && i.status && i.status !== 'missing' && i.status !== 'done' && i.status !== 'planned');
@@ -195,6 +201,7 @@ function renderPrdProgress(prog) {
195
201
  requeueBtn +
196
202
  (projBadges ? '<span>' + projBadges + '</span>' : '') +
197
203
  (prLinks ? '<span>' + prLinks + '</span>' : '') +
204
+ branchLabel +
198
205
  '<span class="prd-item-priority ' + (i.priority || '') + '">' + escHtml(i.priority || '') + '</span>' +
199
206
  '<span onclick="event.stopPropagation();prdItemRemove(\'' + src + '\',\'' + iid + '\')" style="color:var(--red);cursor:pointer;font-size:10px;padding:0 4px" title="Remove item">x</span>' +
200
207
  (i.description ? '<div style="width:100%;font-size:11px;color:var(--muted);padding:2px 0 2px 42px;line-height:1.4">' + renderMd(i.description) + '</div>' : '') +
@@ -283,7 +290,9 @@ function renderPrdProgress(prog) {
283
290
  return '<div style="font-size:11px;font-weight:600;color:var(--blue);margin-bottom:4px;padding:6px 8px;background:var(--surface2);border-radius:4px;display:flex;align-items:center;gap:8px;flex-wrap:wrap">' +
284
291
  (g._projects.length > 0 ? g._projects.map(function(p) { return '<span class="prd-project-badge">' + escHtml(p) + '</span>'; }).join(' ') : '') +
285
292
  '<span style="color:var(--text)">' + escHtml(summary || g.file) + '</span>' +
286
- (g.branchStrategy === 'shared-branch' ? '<span style="font-size:9px;padding:1px 5px;border-radius:3px;background:rgba(210,153,34,0.15);color:var(--yellow);font-weight:400">shared branch</span>' : '') +
293
+ (g.branchStrategy === 'shared-branch'
294
+ ? '<span style="font-size:9px;padding:1px 5px;border-radius:3px;background:rgba(210,153,34,0.15);color:var(--yellow);font-weight:400" title="All items commit to a single shared feature branch">&#x1F333; shared branch</span>'
295
+ : '<span style="font-size:9px;padding:1px 5px;border-radius:3px;background:rgba(56,139,253,0.12);color:var(--blue);font-weight:400" title="Each item gets its own branch (work/P-xxx) and PR">&#x1F500; parallel branches</span>') +
287
296
  pausedLabel +
288
297
  staleLabel +
289
298
  '<span style="font-weight:700;font-size:11px;color:' + (done === g.items.length && g.items.length > 0 ? 'var(--green)' : 'var(--text)') + '">' + (g.items.length > 0 ? Math.round((done / g.items.length) * 100) : 0) + '%</span>' +
@@ -400,6 +409,12 @@ function renderPrdProgress(prog) {
400
409
  return '<span onclick="event.stopPropagation();prdItemRequeue(\'' + escHtml(rqId) + '\',\'' + escHtml(w ? (w._source || '') : '') + '\',\'' + escHtml(i.source || '') + '\')" style="font-size:8px;color:var(--green);cursor:pointer;padding:1px 4px;background:rgba(63,185,80,0.1);border:1px solid rgba(63,185,80,0.3);border-radius:3px">retry</span>';
401
410
  })() +
402
411
  (deps ? '<span style="font-size:8px;color:var(--muted)" title="Depends on: ' + escHtml(deps) + '">deps: ' + escHtml(deps) + '</span>' : '') +
412
+ (function() {
413
+ var w = wi[i.id];
414
+ var b = w ? (w.branch || w.featureBranch || (w._artifacts && w._artifacts.branch) || '') : '';
415
+ if (!b) return '';
416
+ return '<span style="font-size:8px;color:var(--muted);font-family:monospace;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:middle" title="Branch: ' + escHtml(b) + '">&#x1F33F; ' + escHtml(b) + '</span>';
417
+ })() +
403
418
  '</div>' +
404
419
  ((i.prs || []).length ? '<div style="margin-top:3px">' + (i.prs || []).map(function(pr) { return _renderPrLink(pr, { size: '9px' }); }).join(' ') + '</div>' : '') +
405
420
  (i.status === 'decomposed' ? (function() {
package/engine/queries.js CHANGED
@@ -989,6 +989,7 @@ function getPrdInfo(config) {
989
989
  description: i.description || '', projects: i.projects || [],
990
990
  prs: prdToPr[i.id] || [], depends_on: i.depends_on || [],
991
991
  project: i.project || '', source: i._source || '', planSummary: i._planSummary || '', planProject: i._planProject || '', planStatus: i._planStatus || 'active', _archived: i._archived || false, sourcePlan: i._sourcePlan || '',
992
+ branchStrategy: i._branchStrategy || 'parallel',
992
993
  planStale: i._planStale || false, lastSyncedFromPlan: i._lastSyncedFromPlan || null, prdUpdatedAt: i._prdUpdatedAt || null, prdCompletedAt: i._prdCompletedAt || '',
993
994
  agent: i._agent || '', failReason: i._failReason || '',
994
995
  })),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.811",
3
+ "version": "0.1.813",
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"