@yemi33/minions 0.1.36 → 0.1.38
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 +16 -0
- package/dashboard/js/refresh.js +6 -0
- package/dashboard/layout.html +1 -0
- package/dashboard/pages/inbox.html +0 -4
- package/dashboard/pages/schedule.html +0 -4
- package/dashboard/pages/tools.html +8 -0
- package/dashboard-build.js +1 -1
- package/dashboard.js +14 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.38 (2026-03-29)
|
|
4
|
+
|
|
5
|
+
### Dashboard
|
|
6
|
+
- dashboard-build.js
|
|
7
|
+
- dashboard.js
|
|
8
|
+
- dashboard/layout.html
|
|
9
|
+
- dashboard/pages/inbox.html
|
|
10
|
+
- dashboard/pages/schedule.html
|
|
11
|
+
- dashboard/pages/tools.html
|
|
12
|
+
|
|
13
|
+
## 0.1.37 (2026-03-28)
|
|
14
|
+
|
|
15
|
+
### Dashboard
|
|
16
|
+
- dashboard.js
|
|
17
|
+
- dashboard/js/refresh.js
|
|
18
|
+
|
|
3
19
|
## 0.1.36 (2026-03-28)
|
|
4
20
|
|
|
5
21
|
### Dashboard
|
package/dashboard/js/refresh.js
CHANGED
|
@@ -58,3 +58,9 @@ document.querySelectorAll('.sidebar-link').forEach(link => {
|
|
|
58
58
|
link.addEventListener('click', e => { e.preventDefault(); switchPage(link.dataset.page); });
|
|
59
59
|
});
|
|
60
60
|
switchPage(currentPage);
|
|
61
|
+
|
|
62
|
+
// Hot-reload: auto-refresh browser when dashboard files change
|
|
63
|
+
try {
|
|
64
|
+
const _hotReload = new EventSource('/api/hot-reload');
|
|
65
|
+
_hotReload.onmessage = (e) => { if (e.data === 'reload') location.reload(); };
|
|
66
|
+
} catch {}
|
package/dashboard/layout.html
CHANGED
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
<a class="sidebar-link" data-page="prs" href="/prs">Pull Requests <span class="sidebar-count" id="sidebar-pr"></span></a>
|
|
64
64
|
<a class="sidebar-link" data-page="plans" href="/plans">Plans</a>
|
|
65
65
|
<a class="sidebar-link" data-page="inbox" href="/inbox">Notes & KB</a>
|
|
66
|
+
<a class="sidebar-link" data-page="tools" href="/tools">Skills & MCP</a>
|
|
66
67
|
<a class="sidebar-link" data-page="schedule" href="/schedule">Schedules</a>
|
|
67
68
|
<a class="sidebar-link" data-page="engine" href="/engine">Engine</a>
|
|
68
69
|
</nav>
|
|
@@ -11,7 +11,3 @@
|
|
|
11
11
|
<div class="kb-tabs" id="kb-tabs"></div>
|
|
12
12
|
<div class="kb-list" id="kb-list"><p class="empty">No knowledge entries yet. Notes are classified here after consolidation.</p></div>
|
|
13
13
|
</section>
|
|
14
|
-
<section>
|
|
15
|
-
<h2>Minions Skills <span class="count" id="skills-count">0</span></h2>
|
|
16
|
-
<div id="skills-list"><p class="empty">No skills yet. Agents create these when they discover repeatable workflows.</p></div>
|
|
17
|
-
</section>
|
|
@@ -4,7 +4,3 @@
|
|
|
4
4
|
</h2>
|
|
5
5
|
<div id="scheduled-content"><p class="empty">No scheduled tasks. Add one to automate recurring work.</p></div>
|
|
6
6
|
</section>
|
|
7
|
-
<section>
|
|
8
|
-
<h2>MCP Servers <span class="count" id="mcp-count">0</span></h2>
|
|
9
|
-
<div id="mcp-list"><p class="empty">No MCP servers synced.</p></div>
|
|
10
|
-
</section>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<section>
|
|
2
|
+
<h2>Minions Skills <span class="count" id="skills-count">0</span></h2>
|
|
3
|
+
<div id="skills-list"><p class="empty">No skills yet. Agents create these when they discover repeatable workflows.</p></div>
|
|
4
|
+
</section>
|
|
5
|
+
<section>
|
|
6
|
+
<h2>MCP Servers <span class="count" id="mcp-count">0</span></h2>
|
|
7
|
+
<div id="mcp-list"><p class="empty">No MCP servers synced.</p></div>
|
|
8
|
+
</section>
|
package/dashboard-build.js
CHANGED
|
@@ -20,7 +20,7 @@ function buildDashboardHtml() {
|
|
|
20
20
|
const layout = safeRead(layoutPath);
|
|
21
21
|
const css = safeRead(path.join(dashDir, 'styles.css'));
|
|
22
22
|
|
|
23
|
-
const pages = ['home', 'work', 'prd', 'prs', 'plans', 'inbox', 'schedule', 'engine'];
|
|
23
|
+
const pages = ['home', 'work', 'prd', 'prs', 'plans', 'inbox', 'tools', 'schedule', 'engine'];
|
|
24
24
|
let pageHtml = '';
|
|
25
25
|
for (const p of pages) {
|
|
26
26
|
const content = safeRead(path.join(dashDir, 'pages', p + '.html'));
|
package/dashboard.js
CHANGED
|
@@ -63,7 +63,7 @@ function buildDashboardHtml() {
|
|
|
63
63
|
const css = safeRead(path.join(dashDir, 'styles.css'));
|
|
64
64
|
|
|
65
65
|
// Assemble page fragments
|
|
66
|
-
const pages = ['home', 'work', 'prd', 'prs', 'plans', 'inbox', 'schedule', 'engine'];
|
|
66
|
+
const pages = ['home', 'work', 'prd', 'prs', 'plans', 'inbox', 'tools', 'schedule', 'engine'];
|
|
67
67
|
let pageHtml = '';
|
|
68
68
|
for (const p of pages) {
|
|
69
69
|
const content = safeRead(path.join(dashDir, 'pages', p + '.html'));
|
|
@@ -97,7 +97,9 @@ let HTML = HTML_RAW.replace('Minions Mission Control', `Minions Mission Control
|
|
|
97
97
|
let HTML_GZ = zlib.gzipSync(HTML);
|
|
98
98
|
let HTML_ETAG = '"' + require('crypto').createHash('md5').update(HTML).digest('hex') + '"';
|
|
99
99
|
|
|
100
|
-
// Hot-reload: watch dashboard/ directory for changes and
|
|
100
|
+
// Hot-reload: watch dashboard/ directory for changes, rebuild, and push reload to browsers
|
|
101
|
+
const _hotReloadClients = new Set();
|
|
102
|
+
|
|
101
103
|
function rebuildDashboardHtml() {
|
|
102
104
|
try {
|
|
103
105
|
const newRaw = buildDashboardHtml();
|
|
@@ -107,6 +109,10 @@ function rebuildDashboardHtml() {
|
|
|
107
109
|
HTML_GZ = zlib.gzipSync(HTML);
|
|
108
110
|
HTML_ETAG = '"' + require('crypto').createHash('md5').update(HTML).digest('hex') + '"';
|
|
109
111
|
console.log(' Dashboard hot-reloaded');
|
|
112
|
+
// Push reload to all connected browsers
|
|
113
|
+
for (const res of _hotReloadClients) {
|
|
114
|
+
try { res.write('data: reload\n\n'); } catch { _hotReloadClients.delete(res); }
|
|
115
|
+
}
|
|
110
116
|
} catch (e) { console.error(' Hot-reload error:', e.message); }
|
|
111
117
|
}
|
|
112
118
|
|
|
@@ -2811,6 +2817,12 @@ What would you like to discuss or change? When you're happy, say "approve" and I
|
|
|
2811
2817
|
// Status & health
|
|
2812
2818
|
{ method: 'GET', path: '/api/status', desc: 'Full dashboard status snapshot (agents, PRDs, work items, dispatch, etc.)', handler: handleStatus },
|
|
2813
2819
|
{ method: 'GET', path: '/api/health', desc: 'Lightweight health check for monitoring', handler: handleHealth },
|
|
2820
|
+
{ method: 'GET', path: '/api/hot-reload', desc: 'SSE stream for dashboard hot-reload notifications', handler: (req, res) => {
|
|
2821
|
+
res.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive' });
|
|
2822
|
+
res.write('data: connected\n\n');
|
|
2823
|
+
_hotReloadClients.add(res);
|
|
2824
|
+
req.on('close', () => _hotReloadClients.delete(res));
|
|
2825
|
+
}},
|
|
2814
2826
|
|
|
2815
2827
|
// Work items
|
|
2816
2828
|
{ method: 'POST', path: '/api/work-items', desc: 'Create a new work item', params: 'title, type?, description?, priority?, project?, agent?, agents?, scope?, references?, acceptanceCriteria?', handler: handleWorkItemsCreate },
|
package/package.json
CHANGED