@yemi33/minions 0.1.865 → 0.1.867

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.865 (2026-04-11)
3
+ ## 0.1.867 (2026-04-11)
4
4
 
5
5
  ### Features
6
+ - live runtime counter on agent live output tab
6
7
  - optimistic running state on pipeline Run Now click
7
8
 
8
9
  ### Fixes
@@ -16,6 +17,9 @@
16
17
  - pipeline modal now auto-updates on all action buttons
17
18
  - pipeline modal buttons stuck on loading state after success
18
19
 
20
+ ### Other
21
+ - revert: restore expand bar hide on clear/fresh session
22
+
19
23
  ## 0.1.854 (2026-04-11)
20
24
 
21
25
  ### Features
@@ -65,11 +65,13 @@ function renderDetailContent(detail, tab) {
65
65
 
66
66
  el.innerHTML = html;
67
67
  } else if (tab === 'live') {
68
+ var startedAt = detail.statusData?.started_at;
68
69
  el.innerHTML =
69
70
  '<div id="live-chat" style="display:flex;flex-direction:column;height:60vh">' +
70
71
  '<div id="live-messages" style="flex:1;overflow-y:auto;padding:8px;font-size:11px;line-height:1.6;display:flex;flex-direction:column"></div>' +
71
72
  '<div id="live-status-bar" style="padding:4px 8px;display:flex;align-items:center;gap:8px;border-top:1px solid var(--border)">' +
72
73
  '<span class="pulse"></span><span id="live-status-label" style="font-size:11px;color:var(--green)">Streaming live</span>' +
74
+ '<span id="live-runtime" style="font-size:10px;color:var(--muted)" data-started="' + (startedAt || '') + '"></span>' +
73
75
  '<button class="pr-pager-btn" onclick="refreshLiveOutput()" style="font-size:10px">Refresh</button>' +
74
76
  '</div>' +
75
77
  '<div id="live-steer-bar" style="display:flex;gap:8px;padding:8px;border-top:1px solid var(--border)">' +
@@ -4,6 +4,20 @@ let livePollingInterval = null;
4
4
  let liveEventSource = null;
5
5
  let _steerInFlight = false;
6
6
  let _lastRenderedText = '';
7
+ let _runtimeTimer = null;
8
+
9
+ function _updateRuntimeCounter() {
10
+ var el = document.getElementById('live-runtime');
11
+ if (!el) return;
12
+ var started = el.dataset.started;
13
+ if (!started) return;
14
+ var ms = Date.now() - new Date(started).getTime();
15
+ if (ms < 0) ms = 0;
16
+ var sec = Math.floor(ms / 1000) % 60;
17
+ var min = Math.floor(ms / 60000) % 60;
18
+ var hr = Math.floor(ms / 3600000);
19
+ el.textContent = (hr > 0 ? hr + 'h ' : '') + min + 'm ' + sec + 's';
20
+ }
7
21
 
8
22
  function renderLiveChatMessage(raw) {
9
23
  const el = document.getElementById('live-messages');
@@ -87,6 +101,10 @@ function startLiveStream(agentId) {
87
101
  if (msgEl) msgEl.innerHTML = '';
88
102
  _lastRenderedText = '';
89
103
 
104
+ // Start runtime counter
105
+ _updateRuntimeCounter();
106
+ _runtimeTimer = setInterval(_updateRuntimeCounter, 1000);
107
+
90
108
  // Use polling instead of SSE to avoid HTTP/1.1 connection exhaustion
91
109
  // (SSE holds a persistent connection, blocking CC and other API calls)
92
110
  startLivePolling();
@@ -97,6 +115,7 @@ function stopLiveStream() {
97
115
  liveEventSource.close();
98
116
  liveEventSource = null;
99
117
  }
118
+ if (_runtimeTimer) { clearInterval(_runtimeTimer); _runtimeTimer = null; }
100
119
  stopLivePolling();
101
120
  }
102
121
 
@@ -122,7 +122,7 @@ function _initQaSession() {
122
122
  var wrap = document.getElementById('modal-qa-thread-wrap');
123
123
  var expandBar = document.getElementById('qa-expand-bar');
124
124
  if (wrap) wrap.style.display = 'none';
125
- if (expandBar) expandBar.style.display = '';
125
+ if (expandBar) expandBar.style.display = 'none';
126
126
  }
127
127
  }
128
128
 
@@ -134,7 +134,7 @@ function clearQaConversation() {
134
134
  var wrap = document.getElementById('modal-qa-thread-wrap');
135
135
  var expandBar = document.getElementById('qa-expand-bar');
136
136
  if (wrap) wrap.style.display = 'none';
137
- if (expandBar) expandBar.style.display = '';
137
+ if (expandBar) expandBar.style.display = 'none';
138
138
  if (_qaSessionKey) _qaSessions.delete(_qaSessionKey);
139
139
  }
140
140
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.865",
3
+ "version": "0.1.867",
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"