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.
Files changed (2) hide show
  1. package/dist/tui/chrome.js +12 -10
  2. package/package.json +1 -1
@@ -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 : theme.dim;
73
- const statusLabel = state.status === "running"
74
- ? `running ${state.step}${state.maxSteps > 0 ? `/${state.maxSteps}` : ""}`
75
- : state.status === "idle" ? "idle" : state.status;
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "s-app-scoder-agent",
3
- "version": "0.8.19",
3
+ "version": "0.8.20",
4
4
  "description": "Autonomous coding agent CLI — writes, edits, and builds code autonomously until the project compiles without errors.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",