s-app-scoder-agent 0.8.19 → 0.8.20
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/tui/chrome.js +12 -10
- package/package.json +1 -1
package/dist/tui/chrome.js
CHANGED
|
@@ -69,22 +69,24 @@ export function StatusBar({ state, scroll }) {
|
|
|
69
69
|
const width = Math.max(40, (columns ?? 100) - 6);
|
|
70
70
|
const statusColor = state.status === "running" ? theme.accent :
|
|
71
71
|
state.status === "success" ? theme.success :
|
|
72
|
-
state.status === "failed" ? theme.error :
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
state.status === "failed" ? theme.error :
|
|
73
|
+
state.status === "aborted" ? theme.warn : theme.dim;
|
|
74
|
+
// Status label only — step count (x/40) and elapsed time live in the
|
|
75
|
+
// sidebar METRICS section, so they are intentionally NOT duplicated here.
|
|
76
|
+
const statusLabel = state.status === "idle" ? "idle" : state.status;
|
|
77
|
+
// Icon per status — fills the gap before the label (running keeps the
|
|
78
|
+
// animated spinner; other states get a static, status-appropriate glyph).
|
|
79
|
+
const statusIcon = state.status === "success" ? "✓" :
|
|
80
|
+
state.status === "failed" ? "✗" :
|
|
81
|
+
state.status === "aborted" ? "⚠" :
|
|
82
|
+
state.status === "idle" ? "○" : null;
|
|
76
83
|
const model = state.model || "—";
|
|
77
|
-
const elapsed = state.startedAt
|
|
78
|
-
? `${Math.floor((Date.now() - state.startedAt) / 60000)}:${String(Math.floor((Date.now() - state.startedAt) / 1000) % 60).padStart(2, "0")}`
|
|
79
|
-
: null;
|
|
80
84
|
// Right side: scroll position OR helpful keybinds
|
|
81
85
|
const rightText = scroll
|
|
82
86
|
? `scroll ${scroll} · esc→tail`
|
|
83
87
|
: `⏎ send · ctrl+s sessions · ctrl+t ${state.thinkingVisible ? "◉" : "○"} · esc abort · ctrl+c quit`;
|
|
84
88
|
const leftBudget = Math.max(24, width - rightText.length - 3);
|
|
85
89
|
let left = statusLabel;
|
|
86
|
-
if (elapsed && state.status === "running")
|
|
87
|
-
left += ` · ${elapsed}`;
|
|
88
90
|
if (model && model !== "—") {
|
|
89
91
|
const part = ` · ${model}`;
|
|
90
92
|
if (left.length + part.length <= leftBudget)
|
|
@@ -92,5 +94,5 @@ export function StatusBar({ state, scroll }) {
|
|
|
92
94
|
else
|
|
93
95
|
left = fit(left, leftBudget);
|
|
94
96
|
}
|
|
95
|
-
return (_jsxs(Box, { borderStyle: "bold", borderColor: theme.border, paddingX: 1, justifyContent: "space-between", alignItems: "center", flexShrink: 0, children: [_jsxs(Text, { children: [state.status === "running" && _jsx(Spinner, { active: true }), state.status === "running" ? " " : " ", _jsx(Text, { color: statusColor, bold: true, children: left })] }), _jsx(Text, { dimColor: true, children: fit(rightText, Math.floor(width * 0.5)) })] }));
|
|
97
|
+
return (_jsxs(Box, { borderStyle: "bold", borderColor: theme.border, paddingX: 1, justifyContent: "space-between", alignItems: "center", flexShrink: 0, children: [_jsxs(Text, { children: [state.status === "running" && _jsx(Spinner, { active: true }), state.status === "running" ? " " : statusIcon ? `${statusIcon} ` : " ", _jsx(Text, { color: statusColor, bold: true, children: left })] }), _jsx(Text, { dimColor: true, children: fit(rightText, Math.floor(width * 0.5)) })] }));
|
|
96
98
|
}
|
package/package.json
CHANGED