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 +2 -2
- package/package.json +1 -1
- package/presets/full.toml +2 -3
- package/presets/standard.toml +1 -1
- package/src/render.js +3 -3
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
|
|
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
|
-
- **
|
|
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.
|
|
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 = "
|
|
88
|
+
title = "SYSTEM"
|
|
89
89
|
metric = [
|
|
90
|
-
{ id = "sys.
|
|
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 = "🕓" },
|
package/presets/standard.toml
CHANGED
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(
|
|
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(
|
|
610
|
+
if (tail) body += f(TITLE) + tail;
|
|
611
611
|
}
|
|
612
612
|
col.push(bgsgrBox(boxRgb) + " " + body + " " + RESET);
|
|
613
613
|
});
|