claude-doom-statusbar 0.8.1 → 0.8.2

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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  A DOOM-inspired status bar for the [Claude Code](https://docs.claude.com/en/docs/claude-code) CLI. Your session, read off the Doomguy HUD: a mugshot whose face tracks your health, boxes for usage, model, project and system, and live lists of running agents and tasks.
4
4
 
5
5
  <p align="center">
6
- <img src="assets/images/hud.png" alt="claude-doom-statusbar HUD: MODEL, USAGE, PROJECT, the DOOM mugshot, ACTIVITY, AGENTS, TASKS and SYS boxes">
6
+ <img src="assets/images/hud.png" alt="claude-doom-statusbar HUD: MODEL, USAGE, PROJECT, the DOOM mugshot, ACTIVITY, AGENTS, TASKS and SYSTEM boxes">
7
7
  </p>
8
8
 
9
9
  The mugshot is the real DOOM (1993) status-face sprite, rasterised into the terminal at runtime — not ASCII art of it.
@@ -19,7 +19,7 @@ The HUD is a row of boxes centred on the mugshot. Each box is configurable; the
19
19
  - **ACTIVITY** — a tool-activity "geiger" sparkline (duty-cycle over the last 30 s), running-agent count, task progress, error count.
20
20
  - **AGENTS** — a live list of running subagents (type/description + ticking runtime), always visible. Long lists scroll within the box height, with ↑/↓ markers counting the rows hidden off-screen.
21
21
  - **TASKS** — the session's todo list: settled items (✅ done, ❌ removed) on top, open items (⏩ in-progress, 🎯 pending) below. Scrolls like AGENTS, anchored on the open/settled boundary.
22
- - **SYS** — CPU, a per-core CPU equalizer (one threshold-coloured column per core), disk, session length, wall clock.
22
+ - **SYSTEM** — a per-core CPU equalizer (one threshold-coloured column per core) with the aggregate CPU % right-aligned beside it, disk, session length, wall clock.
23
23
 
24
24
  Anything the session can't supply is hidden automatically, so the same config degrades cleanly.
25
25
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-doom-statusbar",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "description": "DOOM-inspired status bar for the Claude Code CLI — a mugshot that tracks session health, plus usage, model, project, system, and a live subagent list.",
5
5
  "type": "module",
6
6
  "bin": {
package/presets/full.toml CHANGED
@@ -85,10 +85,9 @@ metric = [
85
85
 
86
86
  [[segment]]
87
87
  type = "box"
88
- title = "SYS"
88
+ title = "SYSTEM"
89
89
  metric = [
90
- { id = "sys.cpu", render = "number", icon = "🔥" },
91
- { id = "sys.cores", render = "equalizer", icon = "📊", color = "threshold" },
90
+ { id = "sys.cores", render = "equalizer", icon = "🔥", color = "threshold", right = "sys.cpu" },
92
91
  { id = "sys.disk", render = "bar", icon = "💿", color = "threshold" },
93
92
  { id = "sys.session", render = "text", icon = "🕙" },
94
93
  { id = "sys.clock", render = "text", icon = "🕓" },
@@ -1,4 +1,4 @@
1
- # standard — full minus SAVE and SYS
1
+ # standard — full minus SAVE and SYSTEM
2
2
  [bar]
3
3
  border_style = "vertical"
4
4
  border_color = "term-bg" # seamless cuts through the panel
package/src/render.js CHANGED
@@ -321,7 +321,7 @@ export function metricFixedWidth(entry, textCap = TEXTCAP_MAX) {
321
321
  return lw + capLen(entry.group.filter((i) => i in VALUES).map((i) => String(VALUES[i])).join(sep), textCap) + rextra;
322
322
  }
323
323
  if (r === "spark") return lw + Math.floor(((VALUES[entry.id] || []).length + 1) / 2);
324
- if (r === "equalizer") return lw + Math.min((VALUES[entry.id] || []).length, EQ_MAX);
324
+ if (r === "equalizer") return lw + Math.min((VALUES[entry.id] || []).length, EQ_MAX) + rextra;
325
325
  if (r === "ammo") return lw + 5 + vlen(" " + (entry.id in VALUES ? VALUES[entry.id] : 0) + "%");
326
326
  if (r === "list") {
327
327
  const items = VALUES[entry.id] || [];
@@ -593,7 +593,7 @@ export function buildBar(cfg, target, spriteFor, tick = 0, overflow) {
593
593
  const tailW = vlen(tail);
594
594
  let body;
595
595
  if (Array.isArray(item)) { // [left, right] (agents)
596
- const right = f(TEXT) + String(item[1]) + (marker ? f(TEXT) + tail : "");
596
+ const right = f(TEXT) + String(item[1]) + (marker ? f(TITLE) + tail : "");
597
597
  const rightW = vlen(String(item[1])) + tailW;
598
598
  const labelMax = Math.max(0, w - vlen(lbl) - rightW - 1); // 1 = min gap
599
599
  const left = lbl + f(TEXT) + marquee(String(item[0]), labelMax, tick, ovf);
@@ -607,7 +607,7 @@ export function buildBar(cfg, target, spriteFor, tick = 0, overflow) {
607
607
  const max = Math.max(0, w - vlen(mPad) - 1 - tailW); // reserve gap + marker on the right
608
608
  body = head + marquee(String(item.text), max, tick, ovf);
609
609
  body += " ".repeat(Math.max(0, w - tailW - vlen(body)));
610
- if (tail) body += f(TEXT) + tail;
610
+ if (tail) body += f(TITLE) + tail;
611
611
  }
612
612
  col.push(bgsgrBox(boxRgb) + " " + body + " " + RESET);
613
613
  });