@yemi33/minions 0.1.505 → 0.1.507

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,10 +1,14 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.505 (2026-04-07)
3
+ ## 0.1.507 (2026-04-07)
4
4
 
5
5
  ### Features
6
6
  - abort and retrigger buttons for active pipeline runs
7
7
 
8
+ ### Fixes
9
+ - PRD view shows all projects, not just the first one
10
+ - bug report shows feedback inside modal, not hidden toast
11
+
8
12
  ## 0.1.504 (2026-04-07)
9
13
 
10
14
  ### Features
@@ -132,8 +132,12 @@ function renderPrdProgress(prog) {
132
132
  const grouped = {};
133
133
  for (const i of (prog.items || [])) {
134
134
  const key = i.source || '_ungrouped';
135
- if (!grouped[key]) grouped[key] = { summary: i.planSummary || i.source || 'Items', project: i.planProject || '', file: i.source || '', items: [], archived: !!i._archived, planStatus: i.planStatus || 'active', sourcePlan: i.sourcePlan || '', planStale: i.planStale || false, lastSyncedFromPlan: i.lastSyncedFromPlan || null, prdUpdatedAt: i.prdUpdatedAt || null, completedAt: i.prdCompletedAt || '' };
135
+ if (!grouped[key]) grouped[key] = { summary: i.planSummary || i.source || 'Items', project: i.planProject || '', _projects: [], file: i.source || '', items: [], archived: !!i._archived, planStatus: i.planStatus || 'active', sourcePlan: i.sourcePlan || '', planStale: i.planStale || false, lastSyncedFromPlan: i.lastSyncedFromPlan || null, prdUpdatedAt: i.prdUpdatedAt || null, completedAt: i.prdCompletedAt || '' };
136
136
  grouped[key].items.push(i);
137
+ // Collect all unique projects across items in this group
138
+ for (const p of (i.projects || [])) { if (p && !grouped[key]._projects.includes(p)) grouped[key]._projects.push(p); }
139
+ if (i.project && !grouped[key]._projects.includes(i.project)) grouped[key]._projects.push(i.project);
140
+ if (i.planProject && !grouped[key]._projects.includes(i.planProject)) grouped[key]._projects.push(i.planProject);
137
141
  }
138
142
 
139
143
  const renderItem = (i) => {
@@ -247,7 +251,7 @@ function renderPrdProgress(prog) {
247
251
  : '';
248
252
 
249
253
  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">' +
250
- (g.project ? '<span class="prd-project-badge">' + escHtml(g.project) + '</span>' : '') +
254
+ (g._projects.length > 0 ? g._projects.map(function(p) { return '<span class="prd-project-badge">' + escHtml(p) + '</span>'; }).join(' ') : '') +
251
255
  '<span style="color:var(--text)">' + escHtml(summary || g.file) + '</span>' +
252
256
  pausedLabel +
253
257
  staleLabel +
@@ -220,8 +220,11 @@ async function submitBugReport() {
220
220
  var title = document.getElementById('bug-title')?.value?.trim();
221
221
  var desc = document.getElementById('bug-desc')?.value?.trim();
222
222
  if (!title) { alert('Title is required'); return; }
223
- try { closeModal(); } catch {}
224
- showToast('cmd-toast', 'Filing bug...', true);
223
+
224
+ // Show progress inside the modal
225
+ var btn = document.querySelector('#modal button[onclick="submitBugReport()"]');
226
+ if (btn) { btn.disabled = true; btn.textContent = 'Filing...'; }
227
+
225
228
  try {
226
229
  var res = await fetch('/api/issues/create', {
227
230
  method: 'POST', headers: { 'Content-Type': 'application/json' },
@@ -229,12 +232,27 @@ async function submitBugReport() {
229
232
  });
230
233
  var d = await res.json();
231
234
  if (!res.ok) throw new Error(d.error || 'Failed');
232
- if (d.url) {
233
- showToast('cmd-toast', 'Bug filed <a href="' + d.url + '" target="_blank" style="color:var(--blue)">view issue</a>', true);
234
- } else {
235
- showToast('cmd-toast', 'Bug filed', true);
235
+
236
+ // Show success inside the modal
237
+ document.getElementById('modal-body').innerHTML =
238
+ '<div style="padding:24px;text-align:center">' +
239
+ '<div style="font-size:32px;margin-bottom:12px">&#128027;</div>' +
240
+ '<div style="color:var(--green);font-weight:600;margin-bottom:8px">Bug filed!</div>' +
241
+ (d.url ? '<a href="' + escHtml(d.url) + '" target="_blank" style="color:var(--blue);font-size:13px">View issue on GitHub</a>' : '<span style="color:var(--muted);font-size:12px">Issue created on yemi33/minions</span>') +
242
+ '<div style="margin-top:16px"><button onclick="closeModal()" style="padding:6px 16px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;color:var(--text)">Close</button></div>' +
243
+ '</div>';
244
+ } catch (e) {
245
+ // Show error inside the modal — let user retry
246
+ if (btn) { btn.disabled = false; btn.textContent = 'File Bug'; }
247
+ var errDiv = document.getElementById('bug-error');
248
+ if (!errDiv) {
249
+ errDiv = document.createElement('div');
250
+ errDiv.id = 'bug-error';
251
+ errDiv.style.cssText = 'color:var(--red);font-size:12px;padding:8px;background:rgba(248,81,73,0.1);border-radius:4px';
252
+ btn?.parentElement?.parentElement?.appendChild(errDiv);
236
253
  }
237
- } catch (e) { showToast('cmd-toast', 'Error: ' + e.message, false); }
254
+ errDiv.textContent = 'Error: ' + e.message;
255
+ }
238
256
  }
239
257
 
240
258
  window.MinionsUtils = { wakeEngine, escHtml, renderMd, normalizePlanFile, timeAgo, statusColor, llmCopyBtn, copyLlmText, openBugReport, submitBugReport };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.505",
3
+ "version": "0.1.507",
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"