@yemi33/minions 0.1.103 → 0.1.105
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 +13 -0
- package/dashboard/js/render-inbox.js +5 -4
- package/engine/lifecycle.js +27 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.105 (2026-04-01)
|
|
4
|
+
|
|
5
|
+
### Dashboard
|
|
6
|
+
- dashboard/js/render-inbox.js
|
|
7
|
+
|
|
8
|
+
### Other
|
|
9
|
+
- test/unit.test.js
|
|
10
|
+
|
|
11
|
+
## 0.1.104 (2026-04-01)
|
|
12
|
+
|
|
13
|
+
### Engine
|
|
14
|
+
- engine/lifecycle.js
|
|
15
|
+
|
|
3
16
|
## 0.1.103 (2026-04-01)
|
|
4
17
|
|
|
5
18
|
### Engine
|
|
@@ -56,16 +56,17 @@ function renderNotes(notes) {
|
|
|
56
56
|
|
|
57
57
|
if (!content || !content.trim()) { el.innerHTML = '<p class="empty">No team notes yet.</p>'; return; }
|
|
58
58
|
el.innerHTML = '<div class="notes-preview" onclick="openNotesModal()" title="Click to expand">' + renderMd(content) + '</div>';
|
|
59
|
+
el.querySelector('.notes-preview')._rawContent = content;
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
function openNotesModal() {
|
|
62
63
|
const preview = document.querySelector('.notes-preview');
|
|
63
64
|
if (!preview) return;
|
|
64
|
-
const content = preview.textContent;
|
|
65
|
+
const content = preview._rawContent || preview.textContent;
|
|
65
66
|
document.getElementById('modal-title').textContent = 'Team Notes';
|
|
66
|
-
document.getElementById('modal-body').
|
|
67
|
-
document.getElementById('modal-body').style.fontFamily = '
|
|
68
|
-
document.getElementById('modal-body').style.whiteSpace = '
|
|
67
|
+
document.getElementById('modal-body').innerHTML = '<div style="font-size:12px;line-height:1.6">' + renderMd(content) + '</div>';
|
|
68
|
+
document.getElementById('modal-body').style.fontFamily = "'Segoe UI', system-ui, sans-serif";
|
|
69
|
+
document.getElementById('modal-body').style.whiteSpace = 'normal';
|
|
69
70
|
_modalDocContext = { title: 'Team Notes', content, selection: '' };
|
|
70
71
|
_modalEditable = 'notes.md';
|
|
71
72
|
_modalFilePath = 'notes.md'; showModalQa();
|
package/engine/lifecycle.js
CHANGED
|
@@ -724,8 +724,15 @@ async function handlePostMerge(pr, project, config, newStatus) {
|
|
|
724
724
|
|
|
725
725
|
if (newStatus !== 'merged') return;
|
|
726
726
|
|
|
727
|
-
|
|
727
|
+
// Resolve linked work item from pr-links or PR branch name
|
|
728
|
+
let mergedItemId = getPrLinks()[pr.id];
|
|
729
|
+
if (!mergedItemId && pr.branch) {
|
|
730
|
+
const branchMatch = pr.branch.match(/(P-[a-z0-9]{6,})/i) || pr.branch.match(/(W-[a-z0-9]+)/i);
|
|
731
|
+
if (branchMatch) mergedItemId = branchMatch[1];
|
|
732
|
+
}
|
|
733
|
+
|
|
728
734
|
if (mergedItemId) {
|
|
735
|
+
// Mark PRD feature as implemented
|
|
729
736
|
const prdDir = path.join(MINIONS_DIR, 'prd');
|
|
730
737
|
try {
|
|
731
738
|
const planFiles = fs.readdirSync(prdDir).filter(f => f.endsWith('.json'));
|
|
@@ -742,6 +749,25 @@ async function handlePostMerge(pr, project, config, newStatus) {
|
|
|
742
749
|
}
|
|
743
750
|
if (updated > 0) log('info', `Post-merge: marked ${mergedItemId} as implemented for ${pr.id}`);
|
|
744
751
|
} catch (err) { log('warn', `Post-merge PRD update: ${err.message}`); }
|
|
752
|
+
|
|
753
|
+
// Mark work item as done
|
|
754
|
+
const wiPaths = [path.join(MINIONS_DIR, 'work-items.json')];
|
|
755
|
+
for (const p of shared.getProjects(config)) wiPaths.push(shared.projectWorkItemsPath(p));
|
|
756
|
+
for (const wiPath of wiPaths) {
|
|
757
|
+
try {
|
|
758
|
+
const items = safeJson(wiPath);
|
|
759
|
+
if (!items) continue;
|
|
760
|
+
const item = items.find(i => i.id === mergedItemId);
|
|
761
|
+
if (item && item.status !== 'done') {
|
|
762
|
+
log('info', `Post-merge: marking work item ${mergedItemId} as done (was ${item.status}) for ${pr.id}`);
|
|
763
|
+
item.status = 'done';
|
|
764
|
+
item.completedAt = e.ts();
|
|
765
|
+
item._mergedVia = pr.id;
|
|
766
|
+
shared.safeWrite(wiPath, items);
|
|
767
|
+
break;
|
|
768
|
+
}
|
|
769
|
+
} catch (err) { log('warn', `Post-merge work item update: ${err.message}`); }
|
|
770
|
+
}
|
|
745
771
|
}
|
|
746
772
|
|
|
747
773
|
const agentId = (pr.agent || '').toLowerCase();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.105",
|
|
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"
|