@yemi33/minions 0.1.350 → 0.1.352
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
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
let _showArchived = false;
|
|
4
4
|
const MTG_PER_PAGE = 10;
|
|
5
5
|
let _mtgPage = 0;
|
|
6
|
+
let _lastMeetingHash = '';
|
|
6
7
|
|
|
7
8
|
function renderMeetings(meetings) {
|
|
8
9
|
meetings = (meetings || []).filter(function(m) { return !isDeleted('mtg:' + m.id); });
|
|
@@ -213,6 +214,7 @@ function openMeetingDetail(id) {
|
|
|
213
214
|
.then(r => r.json())
|
|
214
215
|
.then(data => {
|
|
215
216
|
if (!data.meeting) { alert('Meeting not found'); return; }
|
|
217
|
+
_lastMeetingHash = JSON.stringify(data.meeting);
|
|
216
218
|
_renderMeetingDetail(data.meeting);
|
|
217
219
|
|
|
218
220
|
// Live-poll while modal is open
|
|
@@ -225,10 +227,10 @@ function openMeetingDetail(id) {
|
|
|
225
227
|
.then(r => r.json())
|
|
226
228
|
.then(d => {
|
|
227
229
|
if (d.meeting && _meetingPollId === id) {
|
|
228
|
-
const
|
|
229
|
-
|
|
230
|
+
const hash = JSON.stringify(d.meeting);
|
|
231
|
+
if (hash === _lastMeetingHash) return; // no change — skip re-render
|
|
232
|
+
_lastMeetingHash = hash;
|
|
230
233
|
_renderMeetingDetail(d.meeting);
|
|
231
|
-
if (body) body.scrollTop = savedScroll;
|
|
232
234
|
}
|
|
233
235
|
})
|
|
234
236
|
.catch(function() {});
|
|
@@ -253,13 +253,21 @@ async function _togglePipelineEnabled(id, enabled, btn) {
|
|
|
253
253
|
}
|
|
254
254
|
|
|
255
255
|
async function _continuePipeline(id, stageId, btn) {
|
|
256
|
-
if (btn) { btn.textContent = 'Continuing...'; btn.style.pointerEvents = 'none'; }
|
|
256
|
+
if (btn) { btn.textContent = 'Continuing...'; btn.style.pointerEvents = 'none'; btn.style.opacity = '0.6'; }
|
|
257
257
|
try {
|
|
258
258
|
var res = await fetch('/api/pipelines/continue', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ id: id, stageId: stageId }) });
|
|
259
|
-
if (res.ok) {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
259
|
+
if (res.ok) {
|
|
260
|
+
showToast('cmd-toast', 'Stage continued — dispatching next tick', true);
|
|
261
|
+
if (btn) { btn.textContent = '\u2713 Continued'; btn.style.color = 'var(--green)'; btn.style.borderColor = 'var(--green)'; btn.style.opacity = '1'; }
|
|
262
|
+
setTimeout(function() { openPipelineDetail(id); }, 2000);
|
|
263
|
+
} else {
|
|
264
|
+
var d = await res.json().catch(function() { return {}; }); alert('Failed: ' + (d.error || 'unknown'));
|
|
265
|
+
if (btn) { btn.textContent = 'Continue'; btn.style.pointerEvents = ''; btn.style.opacity = ''; }
|
|
266
|
+
}
|
|
267
|
+
} catch (e) {
|
|
268
|
+
alert('Error: ' + e.message);
|
|
269
|
+
if (btn) { btn.textContent = 'Continue'; btn.style.pointerEvents = ''; btn.style.opacity = ''; }
|
|
270
|
+
}
|
|
263
271
|
}
|
|
264
272
|
|
|
265
273
|
async function _deletePipelineConfirm(id) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.352",
|
|
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"
|