@yemi33/minions 0.1.936 → 0.1.938

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,6 +1,6 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.936 (2026-04-14)
3
+ ## 0.1.938 (2026-04-14)
4
4
 
5
5
  ### Features
6
6
  - make ADO poll frequency configurable and ungate reconcilePrs
@@ -23,6 +23,7 @@
23
23
  - add red dot notification on CC tab when response completes (#934) (#946)
24
24
 
25
25
  ### Fixes
26
+ - deduplicate work item creation by title
26
27
  - persist adoPollEnabled/ghPollEnabled in settings save
27
28
  - prevent _consolidationInFlight race from stale force-reset timeout (#1023)
28
29
  - stop perpetual ADO poll retry when token unavailable (#1021)
@@ -42,7 +43,6 @@
42
43
  - pipeline artifact links use pushModalBack instead of setTimeout race (#993)
43
44
  - close unclosed code fences and lone backticks in renderMd (#991)
44
45
  - PRD item status stuck at dispatched when fix completes (#989)
45
- - dep merge ancestor pruning + pre-flight simulation (#958) (#979)
46
46
 
47
47
  ### Other
48
48
  - test(preflight): add unit tests for findClaudeBinary, runPreflight, printPreflight, checkOrExit (#953)
package/dashboard.js CHANGED
@@ -1486,11 +1486,18 @@ const server = http.createServer(async (req, res) => {
1486
1486
  if (body.references) item.references = body.references;
1487
1487
  if (body.acceptanceCriteria) item.acceptanceCriteria = body.acceptanceCriteria;
1488
1488
  if (body.skipPr) item.skipPr = true;
1489
+ let dupId = null;
1489
1490
  mutateJsonFileLocked(wiPath, (items) => {
1490
1491
  if (!Array.isArray(items)) items = [];
1492
+ const existing = items.find(i =>
1493
+ i.title === item.title &&
1494
+ (i.status === WI_STATUS.PENDING || i.status === WI_STATUS.DISPATCHED)
1495
+ );
1496
+ if (existing) { dupId = existing.id; return items; }
1491
1497
  items.push(item);
1492
1498
  return items;
1493
1499
  });
1500
+ if (dupId) return jsonReply(res, 200, { ok: true, id: dupId, duplicate: true });
1494
1501
  return jsonReply(res, 200, { ok: true, id });
1495
1502
  } catch (e) { return jsonReply(res, 400, { error: e.message }); }
1496
1503
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.936",
3
+ "version": "0.1.938",
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"