@ekkos/cli 1.0.20 → 1.0.21
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/dist/commands/dashboard.js +22 -4
- package/package.json +1 -1
|
@@ -697,6 +697,13 @@ async function launchDashboard(initialSessionName, jsonlPath, refreshMs) {
|
|
|
697
697
|
footerBox.left = H_PAD;
|
|
698
698
|
footerBox.width = contentWidth;
|
|
699
699
|
footerBox.height = layout.footer.height;
|
|
700
|
+
// Force blessed-contrib to re-render the chart canvas at the new dimensions
|
|
701
|
+
if (lastChartSeries) {
|
|
702
|
+
try {
|
|
703
|
+
tokenChart.setData(lastChartSeries);
|
|
704
|
+
}
|
|
705
|
+
catch { }
|
|
706
|
+
}
|
|
700
707
|
}
|
|
701
708
|
// Track geometry so we can re-anchor widgets even if tmux resize events are flaky
|
|
702
709
|
let lastLayoutW = screen.width || 0;
|
|
@@ -766,6 +773,7 @@ async function launchDashboard(initialSessionName, jsonlPath, refreshMs) {
|
|
|
766
773
|
// ── Update function ──
|
|
767
774
|
let lastFileSize = 0;
|
|
768
775
|
let lastData = null;
|
|
776
|
+
let lastChartSeries = null;
|
|
769
777
|
let lastScrollPerc = 0; // Preserve scroll position across updates
|
|
770
778
|
const debugLog = path.join(os.homedir(), '.ekkos', 'dashboard.log');
|
|
771
779
|
function dlog(msg) {
|
|
@@ -848,11 +856,12 @@ async function launchDashboard(initialSessionName, jsonlPath, refreshMs) {
|
|
|
848
856
|
const recent = data.turns.slice(-30);
|
|
849
857
|
if (recent.length >= 2) {
|
|
850
858
|
const x = recent.map(t => String(t.turn));
|
|
851
|
-
|
|
859
|
+
lastChartSeries = [
|
|
852
860
|
{ title: 'Rd', x, y: recent.map(t => Math.round(t.cacheRead / 1000)), style: { line: 'green' } },
|
|
853
861
|
{ title: 'Wr', x, y: recent.map(t => Math.round(t.cacheCreate / 1000)), style: { line: 'yellow' } },
|
|
854
862
|
{ title: 'Out', x, y: recent.map(t => Math.round(t.output / 1000)), style: { line: 'cyan' } },
|
|
855
|
-
]
|
|
863
|
+
];
|
|
864
|
+
tokenChart.setData(lastChartSeries);
|
|
856
865
|
}
|
|
857
866
|
}
|
|
858
867
|
catch (err) {
|
|
@@ -1078,10 +1087,19 @@ async function launchDashboard(initialSessionName, jsonlPath, refreshMs) {
|
|
|
1078
1087
|
screen.on('resize', () => {
|
|
1079
1088
|
try {
|
|
1080
1089
|
ensureLayoutSynced();
|
|
1081
|
-
if (lastData)
|
|
1090
|
+
if (lastData) {
|
|
1082
1091
|
updateDashboard();
|
|
1083
|
-
|
|
1092
|
+
}
|
|
1093
|
+
else {
|
|
1094
|
+
// Even without data, re-apply chart series so the canvas redraws at new size
|
|
1095
|
+
if (lastChartSeries) {
|
|
1096
|
+
try {
|
|
1097
|
+
tokenChart.setData(lastChartSeries);
|
|
1098
|
+
}
|
|
1099
|
+
catch { }
|
|
1100
|
+
}
|
|
1084
1101
|
screen.render();
|
|
1102
|
+
}
|
|
1085
1103
|
}
|
|
1086
1104
|
catch (err) {
|
|
1087
1105
|
dlog(`Resize: ${err.message}`);
|