orchestrix-yuri 4.8.6 → 4.8.7

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.
@@ -848,10 +848,10 @@ class PhaseOrchestrator {
848
848
  }
849
849
 
850
850
  _progressBar(pct) {
851
+ const clamped = Math.min(100, Math.max(0, pct));
851
852
  const total = 20;
852
- const filled = Math.round(pct / 100 * total);
853
- const empty = total - filled;
854
- return '▓'.repeat(filled) + '░'.repeat(empty) + ` ${pct}%`;
853
+ const filled = Math.min(total, Math.round(clamped / 100 * total));
854
+ return '▓'.repeat(filled) + '░'.repeat(total - filled) + ` ${clamped}%`;
855
855
  }
856
856
 
857
857
  _formatDuration(ms) {
@@ -1076,9 +1076,9 @@ Reply with ONLY one word: small, medium, or large. Nothing else.`;
1076
1076
 
1077
1077
  // 6. Build card
1078
1078
  const total = totalPlanned || createdStories; // prefer planned, fallback to created
1079
- const pct = total > 0 ? Math.round(doneStories / total * 100) : 0;
1079
+ const pct = total > 0 ? Math.min(100, Math.round(doneStories / total * 100)) : 0;
1080
1080
  const barLen = 20;
1081
- const filled = Math.round(pct / 100 * barLen);
1081
+ const filled = Math.min(barLen, Math.round(pct / 100 * barLen));
1082
1082
  const bar = '▓'.repeat(filled) + '░'.repeat(barLen - filled);
1083
1083
 
1084
1084
  const lines = ['📊 **Dev Progress Report**', '━━━━━━━━━━━━━━━━━━━━━'];
@@ -1127,10 +1127,10 @@ Reply with ONLY one word: small, medium, or large. Nothing else.`;
1127
1127
  const passed = state.epics.filter((e) => e.status === 'passed').length;
1128
1128
  const failed = state.epics.filter((e) => e.status === 'failed').length;
1129
1129
  const tested = passed + failed;
1130
- const pct = total > 0 ? Math.round((tested / total) * 100) : 0;
1130
+ const pct = total > 0 ? Math.min(100, Math.round((tested / total) * 100)) : 0;
1131
1131
 
1132
1132
  const barTotal = 20;
1133
- const filled = Math.round(pct / 100 * barTotal);
1133
+ const filled = Math.min(barTotal, Math.round(pct / 100 * barTotal));
1134
1134
  const bar = '▓'.repeat(filled) + '░'.repeat(barTotal - filled) + ` ${pct}%`;
1135
1135
 
1136
1136
  const lines = [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orchestrix-yuri",
3
- "version": "4.8.6",
3
+ "version": "4.8.7",
4
4
  "description": "Yuri — Meta-Orchestrator for Orchestrix. Drive your entire project lifecycle with natural language.",
5
5
  "main": "lib/installer.js",
6
6
  "bin": {