@yemi33/minions 0.1.759 → 0.1.760

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,11 +1,12 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.759 (2026-04-09)
3
+ ## 0.1.760 (2026-04-10)
4
4
 
5
5
  ### Features
6
6
  - show branch strategy badge on PRD group header
7
7
 
8
8
  ### Fixes
9
+ - prevent completed SSE stream from aborting other tab's LLM process
9
10
  - eliminate global ccSession corruption, clean up streaming state
10
11
  - restore full streaming state (tools + partial text) on tab switch
11
12
  - restored thinking UX matches original exactly (same bubble, layout)
package/dashboard.js CHANGED
@@ -3325,8 +3325,15 @@ What would you like to discuss or change? When you're happy, say "approve" and I
3325
3325
 
3326
3326
  res.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive' });
3327
3327
  let _ccStreamAbort = null;
3328
+ let _ccStreamEnded = false;
3328
3329
  // Kill LLM process immediately if client disconnects mid-stream
3329
- req.on('close', () => { ccInFlightTabs.delete(tabId); if (_ccStreamAbort) _ccStreamAbort(); });
3330
+ req.on('close', () => {
3331
+ ccInFlightTabs.delete(tabId);
3332
+ if (!_ccStreamEnded && _ccStreamAbort) {
3333
+ console.log(`[CC-stream] Client disconnected for tab ${tabId} — aborting LLM`);
3334
+ _ccStreamAbort();
3335
+ }
3336
+ });
3330
3337
 
3331
3338
  try {
3332
3339
  // Session management — per-tab: use sessionId from request, don't mutate global ccSession
@@ -3367,7 +3374,7 @@ What would you like to discuss or change? When you're happy, say "approve" and I
3367
3374
  // Return null sessionId on resume failure so client clears the stale session
3368
3375
  const errorSessionId = (wasResume && result.code !== 0) ? null : tabSessionId;
3369
3376
  res.write('data: ' + JSON.stringify({ type: 'done', text: `I had trouble processing that ${debugInfo}. ${stderrTail ? 'Detail: ' + stderrTail : ''}\n\n${retryHint}`, actions: [], sessionId: errorSessionId }) + '\n\n');
3370
- res.end();
3377
+ _ccStreamEnded = true; res.end();
3371
3378
  return;
3372
3379
  }
3373
3380
 
@@ -3396,14 +3403,14 @@ What would you like to discuss or change? When you're happy, say "approve" and I
3396
3403
  // Send final result with actions
3397
3404
  const { text: displayText, actions } = parseCCActions(result.text);
3398
3405
  res.write('data: ' + JSON.stringify({ type: 'done', text: displayText, actions, sessionId: responseSessionId, newSession: !wasResume }) + '\n\n');
3399
- res.end();
3406
+ _ccStreamEnded = true; res.end();
3400
3407
  } finally {
3401
3408
  ccInFlightTabs.delete(tabId);
3402
3409
  }
3403
3410
  } catch (e) {
3404
3411
  ccInFlightTabs.delete(tabId);
3405
3412
  try { res.write('data: ' + JSON.stringify({ type: 'error', error: e.message }) + '\n\n'); } catch {}
3406
- try { res.end(); } catch {}
3413
+ _ccStreamEnded = true; try { res.end(); } catch {}
3407
3414
  }
3408
3415
  }
3409
3416
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.759",
3
+ "version": "0.1.760",
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"