@yemi33/minions 0.1.366 → 0.1.367
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.
|
|
3
|
+
## 0.1.367 (2026-04-06)
|
|
4
4
|
|
|
5
5
|
### Fixes
|
|
6
|
+
- low-severity dashboard polish — null guards, event params, UI gaps (#213)
|
|
6
7
|
- medium dashboard bugs — settings reset, work items, schedules, plans (#212)
|
|
7
8
|
- XSS vulnerabilities across dashboard components (#211)
|
|
8
9
|
|
|
@@ -6,9 +6,9 @@ let _completedPage = 0;
|
|
|
6
6
|
let _logPage = 0;
|
|
7
7
|
|
|
8
8
|
function _completedPrev() { if (_completedPage > 0) { _completedPage--; refresh(); } }
|
|
9
|
-
function _completedNext() { _completedPage++; refresh(); }
|
|
9
|
+
function _completedNext() { _completedPage++; refresh(); } // clamped in renderDispatch
|
|
10
10
|
function _logPrev() { if (_logPage > 0) { _logPage--; refresh(); } }
|
|
11
|
-
function _logNext() { _logPage++; refresh(); }
|
|
11
|
+
function _logNext() { _logPage++; refresh(); } // clamped in renderEngineLog
|
|
12
12
|
|
|
13
13
|
function renderEngineStatus(engine) {
|
|
14
14
|
const badge = document.getElementById('engine-badge');
|
|
@@ -153,6 +153,7 @@ function renderDispatch(dispatch) {
|
|
|
153
153
|
|
|
154
154
|
function renderEngineLog(log) {
|
|
155
155
|
const el = document.getElementById('engine-log');
|
|
156
|
+
if (!el) return;
|
|
156
157
|
if (!log || log.length === 0) {
|
|
157
158
|
el.innerHTML = '<div class="empty">No log entries yet.</div>';
|
|
158
159
|
return;
|
|
@@ -140,7 +140,7 @@ async function modalSaveEdit() {
|
|
|
140
140
|
function modalCancelEdit() {
|
|
141
141
|
const body = document.getElementById('modal-body');
|
|
142
142
|
body.contentEditable = 'false';
|
|
143
|
-
body.
|
|
143
|
+
body.innerHTML = renderMd(_modalDocContext.content); // revert (render Markdown, not raw text)
|
|
144
144
|
body.style.border = '';
|
|
145
145
|
body.style.padding = '';
|
|
146
146
|
document.getElementById('modal-edit-btn').style.display = '';
|
|
@@ -151,14 +151,14 @@ function editWorkItem(id, source) {
|
|
|
151
151
|
'</label>' +
|
|
152
152
|
'<div style="display:flex;justify-content:flex-end;gap:8px;margin-top:8px">' +
|
|
153
153
|
'<button onclick="closeModal()" class="pr-pager-btn" style="padding:6px 16px;font-size:var(--text-md)">Cancel</button>' +
|
|
154
|
-
'<button onclick="submitWorkItemEdit(\'' + escHtml(id) + '\',\'' + escHtml(source || '') + '\')" style="padding:6px 16px;font-size:var(--text-md);background:var(--blue);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer">Save</button>' +
|
|
154
|
+
'<button onclick="submitWorkItemEdit(\'' + escHtml(id) + '\',\'' + escHtml(source || '') + '\',event)" style="padding:6px 16px;font-size:var(--text-md);background:var(--blue);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer">Save</button>' +
|
|
155
155
|
'</div>' +
|
|
156
156
|
'</div>';
|
|
157
157
|
document.getElementById('modal').classList.add('open');
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
async function submitWorkItemEdit(id, source) {
|
|
161
|
-
var btn = event?.target; if (btn) { btn.disabled = true; btn.textContent = 'Saving...'; }
|
|
160
|
+
async function submitWorkItemEdit(id, source, e) {
|
|
161
|
+
var btn = (e || window.event)?.target; if (btn) { btn.disabled = true; btn.textContent = 'Saving...'; }
|
|
162
162
|
const title = document.getElementById('wi-edit-title').value.trim();
|
|
163
163
|
const description = document.getElementById('wi-edit-desc').value;
|
|
164
164
|
const type = document.getElementById('wi-edit-type').value;
|
|
@@ -320,7 +320,7 @@ function openCreateWorkItemModal() {
|
|
|
320
320
|
const typeOpts = ['implement', 'fix', 'explore', 'test', 'review', 'ask', 'plan', 'verify', 'decompose', 'meeting'].map(t =>
|
|
321
321
|
'<option value="' + t + '"' + (t === 'implement' ? ' selected' : '') + '>' + t + '</option>'
|
|
322
322
|
).join('');
|
|
323
|
-
const priOpts = ['high', 'medium', 'low'].map(p =>
|
|
323
|
+
const priOpts = ['critical', 'high', 'medium', 'low'].map(p =>
|
|
324
324
|
'<option value="' + p + '"' + (p === 'medium' ? ' selected' : '') + '>' + p + '</option>'
|
|
325
325
|
).join('');
|
|
326
326
|
const agentOpts = (typeof cmdAgents !== 'undefined' ? cmdAgents : []).map(a =>
|
|
@@ -349,7 +349,7 @@ function openCreateWorkItemModal() {
|
|
|
349
349
|
'<label id="wi-new-skippr-row" style="color:var(--text);font-size:var(--text-md);display:flex;gap:8px;align-items:center;cursor:pointer"><input type="checkbox" id="wi-new-skippr"> Skip PR creation (push branch only)</label>' +
|
|
350
350
|
'<div style="display:flex;justify-content:flex-end;gap:8px;margin-top:4px">' +
|
|
351
351
|
'<button onclick="closeModal()" class="pr-pager-btn">Cancel</button>' +
|
|
352
|
-
'<button onclick="_submitCreateWorkItem()" style="padding:6px 16px;background:var(--blue);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer">Create</button>' +
|
|
352
|
+
'<button onclick="_submitCreateWorkItem(event)" style="padding:6px 16px;background:var(--blue);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer">Create</button>' +
|
|
353
353
|
'</div>' +
|
|
354
354
|
'</div>';
|
|
355
355
|
document.getElementById('modal').classList.add('open');
|
|
@@ -365,8 +365,8 @@ function openCreateWorkItemModal() {
|
|
|
365
365
|
setTimeout(() => document.getElementById('wi-new-title')?.focus(), 100);
|
|
366
366
|
}
|
|
367
367
|
|
|
368
|
-
async function _submitCreateWorkItem() {
|
|
369
|
-
var btn = event?.target; if (btn) { btn.disabled = true; btn.textContent = 'Creating...'; }
|
|
368
|
+
async function _submitCreateWorkItem(e) {
|
|
369
|
+
var btn = (e || window.event)?.target; if (btn) { btn.disabled = true; btn.textContent = 'Creating...'; }
|
|
370
370
|
const title = document.getElementById('wi-new-title')?.value?.trim();
|
|
371
371
|
if (!title) { if (btn) { btn.disabled = false; btn.textContent = 'Create'; } alert('Title is required'); return; }
|
|
372
372
|
const desc = document.getElementById('wi-new-desc')?.value || '';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.367",
|
|
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"
|