@yemi33/minions 0.1.311 → 0.1.313
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,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.313 (2026-04-03)
|
|
4
|
+
|
|
5
|
+
### Other
|
|
6
|
+
- perf: CC message handling — debounce localStorage, cap array, batch scroll
|
|
7
|
+
|
|
8
|
+
## 0.1.312 (2026-04-03)
|
|
4
9
|
|
|
5
10
|
### Fixes
|
|
11
|
+
- truncate work item title tooltip + description in modal to prevent UI lag
|
|
6
12
|
- wrap all tickInner phases in try-catch for resilient dispatch
|
|
7
13
|
|
|
8
14
|
### Other
|
|
@@ -72,13 +72,20 @@ function ccRestoreMessages() {
|
|
|
72
72
|
} catch {}
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
let _ccSaveDebounce = null;
|
|
75
76
|
function ccSaveState() {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
// Trim in-memory array to prevent unbounded growth
|
|
78
|
+
if (_ccMessages.length > 100) _ccMessages = _ccMessages.slice(-100);
|
|
79
|
+
// Debounce localStorage writes — no need to serialize on every message during streaming
|
|
80
|
+
if (_ccSaveDebounce) return;
|
|
81
|
+
_ccSaveDebounce = setTimeout(() => {
|
|
82
|
+
_ccSaveDebounce = null;
|
|
83
|
+
try {
|
|
84
|
+
if (_ccSessionId) localStorage.setItem('cc-session-id', _ccSessionId);
|
|
85
|
+
const toSave = _ccMessages.slice(-30);
|
|
86
|
+
localStorage.setItem('cc-messages', JSON.stringify(toSave));
|
|
87
|
+
} catch { /* localStorage might be full */ }
|
|
88
|
+
}, 500);
|
|
82
89
|
}
|
|
83
90
|
|
|
84
91
|
function ccUpdateSessionIndicator() {
|
|
@@ -104,7 +111,7 @@ function ccAddMessage(role, html, skipSave) {
|
|
|
104
111
|
(isUser ? 'background:var(--blue);color:#fff;align-self:flex-end' : 'background:var(--surface2);color:var(--text);align-self:flex-start;border:1px solid var(--border);position:relative');
|
|
105
112
|
div.innerHTML = (isAssistant && !html.includes('color:var(--red)') && !html.includes('cc-queued-pill') ? llmCopyBtn() : '') + html;
|
|
106
113
|
el.appendChild(div);
|
|
107
|
-
el.scrollTop = el.scrollHeight;
|
|
114
|
+
requestAnimationFrame(() => { el.scrollTop = el.scrollHeight; });
|
|
108
115
|
if (!skipSave) {
|
|
109
116
|
_ccMessages.push({ role, html });
|
|
110
117
|
ccSaveState();
|
|
@@ -40,7 +40,7 @@ function wiRow(item) {
|
|
|
40
40
|
: '<span style="color:var(--muted)">—</span>';
|
|
41
41
|
return '<tr style="cursor:pointer" onclick="openWorkItemDetail(\'' + escHtml(item.id) + '\')">' +
|
|
42
42
|
'<td><span class="pr-id">' + escHtml(item.id || '') + '</span></td>' +
|
|
43
|
-
'<td style="max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap" title="' + escHtml(item.
|
|
43
|
+
'<td style="max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap" title="' + escHtml((item.title || '').slice(0, 200)) + '">' + escHtml(item.title || '') + '</td>' +
|
|
44
44
|
'<td><span style="font-size:10px;color:var(--muted)">' + escHtml(item._source || '') + '</span>' +
|
|
45
45
|
(item.scope === 'fan-out' ? ' <span class="pr-badge ' + (item.status === 'done' || item.status === 'failed' ? 'draft' : 'building') + '" style="font-size:8px">fan-out</span>' : '') + '</td>' +
|
|
46
46
|
'<td>' + typeBadge(item.type) + '</td>' +
|
|
@@ -423,7 +423,7 @@ function openWorkItemDetail(id) {
|
|
|
423
423
|
'<span class="dispatch-type ' + (item.type || 'implement') + '">' + escHtml(item.type || 'implement') + '</span>' +
|
|
424
424
|
'<span class="prd-item-priority ' + (item.priority || '') + '">' + escHtml(item.priority || 'medium') + '</span>' +
|
|
425
425
|
'</div>';
|
|
426
|
-
html += field('Description', '<div style="font-size:12px">' + renderMd(item.description || item.title || '—') + '</div>');
|
|
426
|
+
html += field('Description', '<div style="font-size:12px">' + renderMd((item.description || item.title || '—').slice(0, 3000)) + '</div>');
|
|
427
427
|
html += field('Agent', escHtml(item.dispatched_to || item.agent || 'Auto'));
|
|
428
428
|
html += field('Source', escHtml(item._source || 'central'));
|
|
429
429
|
if (item.created) html += field('Created', escHtml(new Date(item.created).toLocaleString()));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.313",
|
|
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"
|