feat: update defaults, schema, and installer for new capabilities
Configuration and deployment updates to match the new feature set.
defaults.json:
- Dark theme palette switched from named ANSI to Dracula-inspired hex:
success=#50fa7b, warning=#f1fa8c, danger=#ff5555, accent=#8be9fd,
info=#bd93f9. Light theme unchanged (named ANSI with bold).
- Glyph characters normalized to Unicode escapes (clean/ahead/behind).
- Verbose layout (3 lines) reorganized:
Line 1: model, provider, spacer, lines_changed, project, vcs, beads
Line 2: context_bar, context_usage, cache_efficiency, spacer, cost,
cost_velocity, cost_trend, duration
Line 3: context_trend, tokens_raw, spacer, tools, turns, load,
cloud_profile, k8s_context, python_env, toolchain
- context_usage, cost_trend, context_trend now enabled by default.
- Trend widths increased from 8 to 12 characters.
- Context bar: bar_style=block, gradient=true.
- Tools: show_breakdown=true, top_n=7.
- New sections enabled: cloud_profile (P2), k8s_context (P3, ttl=30),
python_env (P3), toolchain (P3).
schema.json:
- Added $schema self-reference field for editor autocomplete.
- Expanded colorName from fixed enum to freeform string with docs
covering hex, bg:, modifiers, and palette refs.
- New section schemas: trendSection, contextTrendSection with width,
gradient, and threshold properties.
- context_bar: added bar_style, gradient, fill_char, empty_char.
- tools: added show_breakdown, top_n, palette array.
- All section types: added background and placeholder properties.
- Width description updated to clarify it's a max cap + fallback,
not an override.
- colorMatch additionalProperties relaxed from enum to string.
install.sh:
Complete rewrite for Rust binary workflow:
- Checks cargo and jq prerequisites.
- Builds release binary via cargo build --release.
- Installs to ~/.local/bin/claude-statusline with PATH check.
- Creates/updates ~/.claude/settings.json with statusLine command
(type: "command", --color=always, padding: 0).
- Symlinks statusline.json config if present in project.
- Removed all bash-script-era logic (symlinks, bash version checks).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
"version": 1,
|
"version": 1,
|
||||||
"global": {
|
"global": {
|
||||||
"separator": " | ",
|
"separator": " | ",
|
||||||
|
"separator_style": "text",
|
||||||
"justify": "space-between",
|
"justify": "space-between",
|
||||||
"vcs": "auto",
|
"vcs": "auto",
|
||||||
"cache_dir": "/tmp/claude-sl-{session_id}-{cache_version}-{config_hash}",
|
"cache_dir": "/tmp/claude-sl-{session_id}-{cache_version}-{config_hash}",
|
||||||
@@ -14,14 +15,14 @@
|
|||||||
},
|
},
|
||||||
"colors": {
|
"colors": {
|
||||||
"dark": {
|
"dark": {
|
||||||
"success": "green",
|
"success": "#50fa7b",
|
||||||
"warning": "yellow",
|
"warning": "#f1fa8c",
|
||||||
"danger": "red",
|
"danger": "#ff5555",
|
||||||
"critical": "red bold",
|
"critical": "#ff5555 bold",
|
||||||
"muted": "dim",
|
"muted": "dim",
|
||||||
"accent": "cyan",
|
"accent": "#8be9fd",
|
||||||
"highlight": "bold",
|
"highlight": "bold",
|
||||||
"info": "blue"
|
"info": "#bd93f9"
|
||||||
},
|
},
|
||||||
"light": {
|
"light": {
|
||||||
"success": "green bold",
|
"success": "green bold",
|
||||||
@@ -41,9 +42,9 @@
|
|||||||
"separator_alt": "",
|
"separator_alt": "",
|
||||||
"branch": "",
|
"branch": "",
|
||||||
"dirty": "*",
|
"dirty": "*",
|
||||||
"clean": "✓",
|
"clean": "\u2713",
|
||||||
"ahead": "↑",
|
"ahead": "\u2191",
|
||||||
"behind": "↓",
|
"behind": "\u2193",
|
||||||
"folder": "",
|
"folder": "",
|
||||||
"clock": "",
|
"clock": "",
|
||||||
"dollar": ""
|
"dollar": ""
|
||||||
@@ -93,24 +94,33 @@
|
|||||||
[
|
[
|
||||||
"model",
|
"model",
|
||||||
"provider",
|
"provider",
|
||||||
|
"spacer",
|
||||||
|
"lines_changed",
|
||||||
"project",
|
"project",
|
||||||
"vcs",
|
"vcs",
|
||||||
"beads"
|
"beads"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"context_bar",
|
"context_bar",
|
||||||
"tokens_raw",
|
"context_usage",
|
||||||
"cache_efficiency",
|
"cache_efficiency",
|
||||||
|
"spacer",
|
||||||
"cost",
|
"cost",
|
||||||
"cost_velocity"
|
"cost_velocity",
|
||||||
|
"cost_trend",
|
||||||
|
"duration"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"lines_changed",
|
"context_trend",
|
||||||
"duration",
|
"tokens_raw",
|
||||||
|
"spacer",
|
||||||
"tools",
|
"tools",
|
||||||
"turns",
|
"turns",
|
||||||
"load",
|
"load",
|
||||||
"version"
|
"cloud_profile",
|
||||||
|
"k8s_context",
|
||||||
|
"python_env",
|
||||||
|
"toolchain"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -167,6 +177,8 @@
|
|||||||
"flex": true,
|
"flex": true,
|
||||||
"min_width": 15,
|
"min_width": 15,
|
||||||
"bar_width": 10,
|
"bar_width": 10,
|
||||||
|
"bar_style": "block",
|
||||||
|
"gradient": true,
|
||||||
"thresholds": {
|
"thresholds": {
|
||||||
"warn": 50,
|
"warn": 50,
|
||||||
"danger": 70,
|
"danger": 70,
|
||||||
@@ -174,7 +186,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"context_usage": {
|
"context_usage": {
|
||||||
"enabled": false,
|
"enabled": true,
|
||||||
"priority": 2,
|
"priority": 2,
|
||||||
"capacity": 200000,
|
"capacity": 200000,
|
||||||
"thresholds": {
|
"thresholds": {
|
||||||
@@ -210,14 +222,16 @@
|
|||||||
"priority": 3
|
"priority": 3
|
||||||
},
|
},
|
||||||
"cost_trend": {
|
"cost_trend": {
|
||||||
"enabled": false,
|
"enabled": true,
|
||||||
"priority": 3,
|
"priority": 3,
|
||||||
"width": 8
|
"width": 12,
|
||||||
|
"gradient": true
|
||||||
},
|
},
|
||||||
"context_trend": {
|
"context_trend": {
|
||||||
"enabled": false,
|
"enabled": true,
|
||||||
"priority": 3,
|
"priority": 3,
|
||||||
"width": 8,
|
"width": 12,
|
||||||
|
"gradient": true,
|
||||||
"thresholds": {
|
"thresholds": {
|
||||||
"warn": 50,
|
"warn": 50,
|
||||||
"danger": 70,
|
"danger": 70,
|
||||||
@@ -237,6 +251,8 @@
|
|||||||
"priority": 2,
|
"priority": 2,
|
||||||
"min_width": 6,
|
"min_width": 6,
|
||||||
"show_last_name": true,
|
"show_last_name": true,
|
||||||
|
"show_breakdown": true,
|
||||||
|
"top_n": 7,
|
||||||
"ttl": 2
|
"ttl": 2
|
||||||
},
|
},
|
||||||
"turns": {
|
"turns": {
|
||||||
@@ -265,6 +281,23 @@
|
|||||||
"hostname": {
|
"hostname": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"priority": 3
|
"priority": 3
|
||||||
|
},
|
||||||
|
"cloud_profile": {
|
||||||
|
"enabled": true,
|
||||||
|
"priority": 2
|
||||||
|
},
|
||||||
|
"k8s_context": {
|
||||||
|
"enabled": true,
|
||||||
|
"priority": 3,
|
||||||
|
"ttl": 30
|
||||||
|
},
|
||||||
|
"python_env": {
|
||||||
|
"enabled": true,
|
||||||
|
"priority": 3
|
||||||
|
},
|
||||||
|
"toolchain": {
|
||||||
|
"enabled": true,
|
||||||
|
"priority": 3
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"custom": []
|
"custom": []
|
||||||
|
|||||||
130
install.sh
130
install.sh
@@ -1,75 +1,109 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# install.sh — Set up claude-statusline symlinks
|
# install.sh — Build and install claude-statusline (Rust binary)
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
INSTALL_DIR="$HOME/.local/bin"
|
||||||
|
BINARY_NAME="claude-statusline"
|
||||||
CLAUDE_DIR="$HOME/.claude"
|
CLAUDE_DIR="$HOME/.claude"
|
||||||
|
SETTINGS="$CLAUDE_DIR/settings.json"
|
||||||
|
|
||||||
echo "claude-statusline installer"
|
echo "claude-statusline installer"
|
||||||
echo "==========================="
|
echo "==========================="
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Check dependencies
|
# ── Check toolchain ──────────────────────────────────────────────────
|
||||||
|
if ! command -v cargo &>/dev/null; then
|
||||||
|
echo "ERROR: cargo (Rust toolchain) is required but not installed."
|
||||||
|
echo " Install via: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "[ok] cargo found ($(cargo --version))"
|
||||||
|
|
||||||
if ! command -v jq &>/dev/null; then
|
if ! command -v jq &>/dev/null; then
|
||||||
echo "ERROR: jq is required but not installed."
|
echo "ERROR: jq is required for settings.json updates."
|
||||||
echo " macOS: brew install jq"
|
echo " macOS: brew install jq"
|
||||||
echo " Ubuntu: sudo apt install jq"
|
echo " Ubuntu: sudo apt install jq"
|
||||||
echo " Fedora: sudo dnf install jq"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "[ok] jq found"
|
echo "[ok] jq found"
|
||||||
|
|
||||||
# Check bash version
|
# ── Build release binary ─────────────────────────────────────────────
|
||||||
if (( BASH_VERSINFO[0] < 4 )); then
|
echo ""
|
||||||
echo "WARNING: bash 4+ recommended (you have ${BASH_VERSION})"
|
echo "Building release binary..."
|
||||||
echo " macOS ships bash 3. Install bash 4+:"
|
(cd "$SCRIPT_DIR" && cargo build --release --quiet)
|
||||||
echo " brew install bash"
|
echo "[ok] Built: $(ls -lh "$SCRIPT_DIR/target/release/$BINARY_NAME" | awk '{print $5}')"
|
||||||
|
|
||||||
|
# ── Install binary ───────────────────────────────────────────────────
|
||||||
|
mkdir -p "$INSTALL_DIR"
|
||||||
|
cp "$SCRIPT_DIR/target/release/$BINARY_NAME" "$INSTALL_DIR/$BINARY_NAME"
|
||||||
|
chmod +x "$INSTALL_DIR/$BINARY_NAME"
|
||||||
|
echo "[ok] Installed to $INSTALL_DIR/$BINARY_NAME"
|
||||||
|
|
||||||
|
# Verify it's on PATH
|
||||||
|
if ! command -v "$BINARY_NAME" &>/dev/null; then
|
||||||
|
echo "[warn] $INSTALL_DIR is not on your PATH"
|
||||||
|
echo " Add to your shell config: export PATH=\"$INSTALL_DIR:\$PATH\""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Ensure ~/.claude exists
|
# ── Configure Claude Code settings.json ──────────────────────────────
|
||||||
|
echo ""
|
||||||
mkdir -p "$CLAUDE_DIR"
|
mkdir -p "$CLAUDE_DIR"
|
||||||
|
|
||||||
# Create symlinks
|
BINARY_PATH="$INSTALL_DIR/$BINARY_NAME"
|
||||||
create_link() {
|
|
||||||
local src="$1" dst="$2" name="$3"
|
# The binary runs in a non-TTY context, so force color on.
|
||||||
if [[ -L "$dst" ]]; then
|
STATUSLINE_CMD="$BINARY_PATH --color=always"
|
||||||
local existing
|
|
||||||
existing="$(readlink "$dst")"
|
if [[ -f "$SETTINGS" ]]; then
|
||||||
if [[ "$existing" == "$src" ]]; then
|
# Update existing settings.json
|
||||||
echo "[ok] $name already linked"
|
CURRENT_CMD=$(jq -r '.statusLine.command // empty' "$SETTINGS" 2>/dev/null || true)
|
||||||
return
|
if [[ -n "$CURRENT_CMD" ]]; then
|
||||||
fi
|
echo "[info] Current statusLine command: $CURRENT_CMD"
|
||||||
echo "[update] $name: updating symlink"
|
|
||||||
ln -sf "$src" "$dst"
|
|
||||||
elif [[ -f "$dst" ]]; then
|
|
||||||
echo "[skip] $name: $dst exists as a regular file"
|
|
||||||
echo " To use the symlink, rename or remove the existing file first."
|
|
||||||
return
|
|
||||||
else
|
|
||||||
ln -s "$src" "$dst"
|
|
||||||
echo "[ok] $name linked"
|
|
||||||
fi
|
fi
|
||||||
}
|
|
||||||
|
|
||||||
create_link "$SCRIPT_DIR/statusline.sh" "$CLAUDE_DIR/statusline.sh" "statusline.sh"
|
# Write updated settings
|
||||||
|
TMP="$SETTINGS.tmp.$$"
|
||||||
# Optionally link user config if they want to start from an example
|
jq --arg cmd "$STATUSLINE_CMD" '.statusLine = {"type": "command", "command": $cmd, "padding": 0}' "$SETTINGS" > "$TMP"
|
||||||
if [[ ! -f "$CLAUDE_DIR/statusline.json" ]]; then
|
mv "$TMP" "$SETTINGS"
|
||||||
echo "[info] No statusline.json found. You can copy an example from:"
|
echo "[ok] Updated statusLine in $SETTINGS"
|
||||||
echo " $SCRIPT_DIR/examples/"
|
else
|
||||||
|
# Create minimal settings.json
|
||||||
|
jq -n --arg cmd "$STATUSLINE_CMD" '{"statusLine": {"type": "command", "command": $cmd, "padding": 0}}' > "$SETTINGS"
|
||||||
|
echo "[ok] Created $SETTINGS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# ── Symlink config ───────────────────────────────────────────────────
|
||||||
|
CONFIG_SRC="$SCRIPT_DIR/statusline.json"
|
||||||
|
CONFIG_DST="$CLAUDE_DIR/statusline.json"
|
||||||
|
|
||||||
|
if [[ -f "$CONFIG_SRC" ]]; then
|
||||||
|
if [[ -L "$CONFIG_DST" ]]; then
|
||||||
|
EXISTING="$(readlink "$CONFIG_DST")"
|
||||||
|
if [[ "$EXISTING" == "$CONFIG_SRC" ]]; then
|
||||||
|
echo "[ok] Config already linked"
|
||||||
|
else
|
||||||
|
ln -sf "$CONFIG_SRC" "$CONFIG_DST"
|
||||||
|
echo "[ok] Config symlink updated (was: $EXISTING)"
|
||||||
|
fi
|
||||||
|
elif [[ -f "$CONFIG_DST" ]]; then
|
||||||
|
echo "[skip] $CONFIG_DST exists as a regular file"
|
||||||
|
echo " To use the symlink, remove it first: rm $CONFIG_DST"
|
||||||
|
else
|
||||||
|
ln -s "$CONFIG_SRC" "$CONFIG_DST"
|
||||||
|
echo "[ok] Config linked: $CONFIG_DST -> $CONFIG_SRC"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "[info] No statusline.json in project. To customize, create:"
|
||||||
|
echo " $CONFIG_SRC"
|
||||||
|
echo ""
|
||||||
|
echo " Print defaults: $BINARY_NAME --print-defaults"
|
||||||
|
echo " Print schema: $BINARY_NAME --config-schema"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ── Done ─────────────────────────────────────────────────────────────
|
||||||
echo ""
|
echo ""
|
||||||
echo "Symlinks created. Now add the status line to your Claude Code settings."
|
echo "Done. Restart Claude Code to see the status line."
|
||||||
echo ""
|
echo ""
|
||||||
echo "Add this to ~/.claude/settings.json:"
|
echo "Quick test: $BINARY_NAME --test --color=always"
|
||||||
echo ""
|
echo "Debug: $BINARY_NAME --test --dump-state=json"
|
||||||
echo ' "statusLine": "'$CLAUDE_DIR'/statusline.sh"'
|
|
||||||
echo ""
|
|
||||||
echo "If ~/.claude/settings.json doesn't exist yet, create it:"
|
|
||||||
echo ""
|
|
||||||
echo ' {'
|
|
||||||
echo ' "statusLine": "'$CLAUDE_DIR'/statusline.sh"'
|
|
||||||
echo ' }'
|
|
||||||
echo ""
|
|
||||||
echo "Then restart Claude Code to see the status line."
|
|
||||||
|
|||||||
296
schema.json
296
schema.json
@@ -4,11 +4,12 @@
|
|||||||
"title": "Claude Code Status Line Configuration",
|
"title": "Claude Code Status Line Configuration",
|
||||||
"description": "Configuration for the claude-statusline status line script",
|
"description": "Configuration for the claude-statusline status line script",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
|
||||||
"version"
|
|
||||||
],
|
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"properties": {
|
"properties": {
|
||||||
|
"$schema": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "JSON Schema reference for editor support"
|
||||||
|
},
|
||||||
"version": {
|
"version": {
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"const": 1,
|
"const": 1,
|
||||||
@@ -77,6 +78,15 @@
|
|||||||
"token_velocity": {
|
"token_velocity": {
|
||||||
"$ref": "#/$defs/basicSection"
|
"$ref": "#/$defs/basicSection"
|
||||||
},
|
},
|
||||||
|
"cost_trend": {
|
||||||
|
"$ref": "#/$defs/trendSection"
|
||||||
|
},
|
||||||
|
"context_trend": {
|
||||||
|
"$ref": "#/$defs/contextTrendSection"
|
||||||
|
},
|
||||||
|
"context_remaining": {
|
||||||
|
"$ref": "#/$defs/basicSection"
|
||||||
|
},
|
||||||
"lines_changed": {
|
"lines_changed": {
|
||||||
"$ref": "#/$defs/basicSection"
|
"$ref": "#/$defs/basicSection"
|
||||||
},
|
},
|
||||||
@@ -154,9 +164,15 @@
|
|||||||
"properties": {
|
"properties": {
|
||||||
"separator": {
|
"separator": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "Separator between sections on a line. When justify is 'left', this is used as-is. When justify is 'spread' or 'space-between', the non-space characters (e.g. '|') are kept as a visual anchor and extra space is added around them.",
|
"description": "Separator text between sections (used when separator_style is 'text'). When justify is 'spread' or 'space-between', the non-space characters are kept as visual anchors.",
|
||||||
"default": " | "
|
"default": " | "
|
||||||
},
|
},
|
||||||
|
"separator_style": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["text", "powerline", "arrow", "none"],
|
||||||
|
"description": "Separator style between sections. 'text': use the separator string. 'powerline': Nerd Font triangle (auto-falls-back to arrow if glyphs disabled). 'arrow': Unicode heavy angle quotation mark. 'none': spaces only.",
|
||||||
|
"default": "text"
|
||||||
|
},
|
||||||
"justify": {
|
"justify": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": [
|
"enum": [
|
||||||
@@ -181,7 +197,7 @@
|
|||||||
"width": {
|
"width": {
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"minimum": 40,
|
"minimum": 40,
|
||||||
"description": "Explicit terminal width override. If omitted, auto-detection walks the process tree to find an ancestor with a real TTY, falling back to stty via /dev/tty, COLUMNS, tput cols, or 120."
|
"description": "Maximum terminal width cap and fallback. Dynamic sources (ioctl, process tree, stty) take priority when available."
|
||||||
},
|
},
|
||||||
"width_margin": {
|
"width_margin": {
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
@@ -227,22 +243,11 @@
|
|||||||
},
|
},
|
||||||
"colorName": {
|
"colorName": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": [
|
"description": "Color specifier. Supports: named colors (red, green, yellow, blue, magenta, cyan, white), modifiers (dim, bold, italic, underline, strikethrough), hex (#FF6B35, #F00), backgrounds (bg:red, bg:#FF6B35), palette refs (p:success). Multiple can be space-separated (e.g., '#FF6B35 bold')."
|
||||||
"red",
|
|
||||||
"green",
|
|
||||||
"yellow",
|
|
||||||
"blue",
|
|
||||||
"magenta",
|
|
||||||
"cyan",
|
|
||||||
"white",
|
|
||||||
"dim",
|
|
||||||
"bold"
|
|
||||||
],
|
|
||||||
"description": "Named ANSI color"
|
|
||||||
},
|
},
|
||||||
"colorPalette": {
|
"colorPalette": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "Semantic color palette for a theme",
|
"description": "Semantic color palette for a theme. Values support all colorName formats.",
|
||||||
"properties": {
|
"properties": {
|
||||||
"success": { "type": "string" },
|
"success": { "type": "string" },
|
||||||
"warning": { "type": "string" },
|
"warning": { "type": "string" },
|
||||||
@@ -343,6 +348,14 @@
|
|||||||
},
|
},
|
||||||
"color": {
|
"color": {
|
||||||
"$ref": "#/$defs/colorName"
|
"$ref": "#/$defs/colorName"
|
||||||
|
},
|
||||||
|
"background": {
|
||||||
|
"$ref": "#/$defs/colorName",
|
||||||
|
"description": "Background color for the section. Accepts named colors (green, red), hex (#50fa7b), or palette refs (p:success). Applied as a background wrap around the section output, preserving foreground colors."
|
||||||
|
},
|
||||||
|
"placeholder": {
|
||||||
|
"type": ["string", "null"],
|
||||||
|
"description": "Text shown when the section has no data (e.g. after /clear). Set to empty string or null to hide the section instead. Default: '--'."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
@@ -415,6 +428,14 @@
|
|||||||
},
|
},
|
||||||
"color": {
|
"color": {
|
||||||
"$ref": "#/$defs/colorName"
|
"$ref": "#/$defs/colorName"
|
||||||
|
},
|
||||||
|
"background": {
|
||||||
|
"$ref": "#/$defs/colorName",
|
||||||
|
"description": "Background color for the section. Accepts named colors (green, red), hex (#50fa7b), or palette refs (p:success). Applied as a background wrap around the section output, preserving foreground colors."
|
||||||
|
},
|
||||||
|
"placeholder": {
|
||||||
|
"type": ["string", "null"],
|
||||||
|
"description": "Text shown when the section has no data (e.g. after /clear). Set to empty string or null to hide the section instead. Default: '--'."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
@@ -475,6 +496,14 @@
|
|||||||
},
|
},
|
||||||
"color": {
|
"color": {
|
||||||
"$ref": "#/$defs/colorName"
|
"$ref": "#/$defs/colorName"
|
||||||
|
},
|
||||||
|
"background": {
|
||||||
|
"$ref": "#/$defs/colorName",
|
||||||
|
"description": "Background color for the section. Accepts named colors (green, red), hex (#50fa7b), or palette refs (p:success). Applied as a background wrap around the section output, preserving foreground colors."
|
||||||
|
},
|
||||||
|
"placeholder": {
|
||||||
|
"type": ["string", "null"],
|
||||||
|
"description": "Text shown when the section has no data (e.g. after /clear). Set to empty string or null to hide the section instead. Default: '--'."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
@@ -503,6 +532,25 @@
|
|||||||
"minimum": 3,
|
"minimum": 3,
|
||||||
"default": 10
|
"default": 10
|
||||||
},
|
},
|
||||||
|
"bar_style": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["classic", "block"],
|
||||||
|
"default": "block",
|
||||||
|
"description": "Bar rendering style. 'classic': = and - characters. 'block': Unicode block characters with optional gradient."
|
||||||
|
},
|
||||||
|
"gradient": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true,
|
||||||
|
"description": "Enable per-character gradient coloring (green to yellow to red). Only applies when bar_style is 'block'."
|
||||||
|
},
|
||||||
|
"fill_char": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Override character for filled portion. Default: '=' (classic) or full block (block)."
|
||||||
|
},
|
||||||
|
"empty_char": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Override character for empty portion. Default: '-' (classic) or light shade (block)."
|
||||||
|
},
|
||||||
"thresholds": {
|
"thresholds": {
|
||||||
"$ref": "#/$defs/thresholds"
|
"$ref": "#/$defs/thresholds"
|
||||||
},
|
},
|
||||||
@@ -523,6 +571,14 @@
|
|||||||
},
|
},
|
||||||
"color": {
|
"color": {
|
||||||
"$ref": "#/$defs/colorName"
|
"$ref": "#/$defs/colorName"
|
||||||
|
},
|
||||||
|
"background": {
|
||||||
|
"$ref": "#/$defs/colorName",
|
||||||
|
"description": "Background color for the section. Accepts named colors (green, red), hex (#50fa7b), or palette refs (p:success). Applied as a background wrap around the section output, preserving foreground colors."
|
||||||
|
},
|
||||||
|
"placeholder": {
|
||||||
|
"type": ["string", "null"],
|
||||||
|
"description": "Text shown when the section has no data (e.g. after /clear). Set to empty string or null to hide the section instead. Default: '--'."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
@@ -563,6 +619,14 @@
|
|||||||
},
|
},
|
||||||
"color": {
|
"color": {
|
||||||
"$ref": "#/$defs/colorName"
|
"$ref": "#/$defs/colorName"
|
||||||
|
},
|
||||||
|
"background": {
|
||||||
|
"$ref": "#/$defs/colorName",
|
||||||
|
"description": "Background color for the section. Accepts named colors (green, red), hex (#50fa7b), or palette refs (p:success). Applied as a background wrap around the section output, preserving foreground colors."
|
||||||
|
},
|
||||||
|
"placeholder": {
|
||||||
|
"type": ["string", "null"],
|
||||||
|
"description": "Text shown when the section has no data (e.g. after /clear). Set to empty string or null to hide the section instead. Default: '--'."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
@@ -599,6 +663,14 @@
|
|||||||
},
|
},
|
||||||
"color": {
|
"color": {
|
||||||
"$ref": "#/$defs/colorName"
|
"$ref": "#/$defs/colorName"
|
||||||
|
},
|
||||||
|
"background": {
|
||||||
|
"$ref": "#/$defs/colorName",
|
||||||
|
"description": "Background color for the section. Accepts named colors (green, red), hex (#50fa7b), or palette refs (p:success). Applied as a background wrap around the section output, preserving foreground colors."
|
||||||
|
},
|
||||||
|
"placeholder": {
|
||||||
|
"type": ["string", "null"],
|
||||||
|
"description": "Text shown when the section has no data (e.g. after /clear). Set to empty string or null to hide the section instead. Default: '--'."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
@@ -633,6 +705,135 @@
|
|||||||
},
|
},
|
||||||
"color": {
|
"color": {
|
||||||
"$ref": "#/$defs/colorName"
|
"$ref": "#/$defs/colorName"
|
||||||
|
},
|
||||||
|
"background": {
|
||||||
|
"$ref": "#/$defs/colorName",
|
||||||
|
"description": "Background color for the section. Accepts named colors (green, red), hex (#50fa7b), or palette refs (p:success). Applied as a background wrap around the section output, preserving foreground colors."
|
||||||
|
},
|
||||||
|
"placeholder": {
|
||||||
|
"type": ["string", "null"],
|
||||||
|
"description": "Text shown when the section has no data (e.g. after /clear). Set to empty string or null to hide the section instead. Default: '--'."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"trendSection": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Sparkline trend visualization",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true
|
||||||
|
},
|
||||||
|
"priority": {
|
||||||
|
"$ref": "#/$defs/priority"
|
||||||
|
},
|
||||||
|
"width": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 3,
|
||||||
|
"default": 8,
|
||||||
|
"description": "Number of sparkline characters"
|
||||||
|
},
|
||||||
|
"gradient": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true,
|
||||||
|
"description": "Enable per-character gradient coloring based on value"
|
||||||
|
},
|
||||||
|
"flex": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"min_width": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0
|
||||||
|
},
|
||||||
|
"prefix": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"suffix": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"pad": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 1
|
||||||
|
},
|
||||||
|
"align": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["left", "right", "center"],
|
||||||
|
"default": "left"
|
||||||
|
},
|
||||||
|
"color": {
|
||||||
|
"$ref": "#/$defs/colorName"
|
||||||
|
},
|
||||||
|
"background": {
|
||||||
|
"$ref": "#/$defs/colorName",
|
||||||
|
"description": "Background color for the section. Accepts named colors (green, red), hex (#50fa7b), or palette refs (p:success). Applied as a background wrap around the section output, preserving foreground colors."
|
||||||
|
},
|
||||||
|
"placeholder": {
|
||||||
|
"type": ["string", "null"],
|
||||||
|
"description": "Text shown when the section has no data (e.g. after /clear). Set to empty string or null to hide the section instead. Default: '--'."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"contextTrendSection": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Context usage sparkline trend with threshold coloring",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true
|
||||||
|
},
|
||||||
|
"priority": {
|
||||||
|
"$ref": "#/$defs/priority"
|
||||||
|
},
|
||||||
|
"width": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 3,
|
||||||
|
"default": 8,
|
||||||
|
"description": "Number of sparkline characters"
|
||||||
|
},
|
||||||
|
"gradient": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true,
|
||||||
|
"description": "Enable per-character gradient coloring based on value"
|
||||||
|
},
|
||||||
|
"thresholds": {
|
||||||
|
"$ref": "#/$defs/thresholds"
|
||||||
|
},
|
||||||
|
"flex": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
|
"min_width": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0
|
||||||
|
},
|
||||||
|
"prefix": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"suffix": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"pad": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 1
|
||||||
|
},
|
||||||
|
"align": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["left", "right", "center"],
|
||||||
|
"default": "left"
|
||||||
|
},
|
||||||
|
"color": {
|
||||||
|
"$ref": "#/$defs/colorName"
|
||||||
|
},
|
||||||
|
"background": {
|
||||||
|
"$ref": "#/$defs/colorName",
|
||||||
|
"description": "Background color for the section. Accepts named colors (green, red), hex (#50fa7b), or palette refs (p:success). Applied as a background wrap around the section output, preserving foreground colors."
|
||||||
|
},
|
||||||
|
"placeholder": {
|
||||||
|
"type": ["string", "null"],
|
||||||
|
"description": "Text shown when the section has no data (e.g. after /clear). Set to empty string or null to hide the section instead. Default: '--'."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
@@ -656,6 +857,26 @@
|
|||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": true
|
"default": true
|
||||||
},
|
},
|
||||||
|
"show_breakdown": {
|
||||||
|
"type": "boolean",
|
||||||
|
"description": "Show per-tool breakdown in wide terminals (e.g. Bash: 84/Read: 35/Edit: 34)",
|
||||||
|
"default": true
|
||||||
|
},
|
||||||
|
"top_n": {
|
||||||
|
"type": "integer",
|
||||||
|
"minimum": 0,
|
||||||
|
"description": "Max number of tools to show in breakdown (0 = all). Adaptively reduced to fit terminal width.",
|
||||||
|
"default": 7
|
||||||
|
},
|
||||||
|
"palette": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Hex color string (#RRGGBB or #RGB)"
|
||||||
|
},
|
||||||
|
"description": "Rotating color palette for tool names. Override to customize; leave empty (default) to auto-detect from terminal config (WezTerm/Kitty/Alacritty) or fall back to built-in Dracula palette.",
|
||||||
|
"default": []
|
||||||
|
},
|
||||||
"ttl": {
|
"ttl": {
|
||||||
"type": "number",
|
"type": "number",
|
||||||
"default": 2
|
"default": 2
|
||||||
@@ -677,6 +898,14 @@
|
|||||||
},
|
},
|
||||||
"color": {
|
"color": {
|
||||||
"$ref": "#/$defs/colorName"
|
"$ref": "#/$defs/colorName"
|
||||||
|
},
|
||||||
|
"background": {
|
||||||
|
"$ref": "#/$defs/colorName",
|
||||||
|
"description": "Background color for the section. Accepts named colors (green, red), hex (#50fa7b), or palette refs (p:success). Applied as a background wrap around the section output, preserving foreground colors."
|
||||||
|
},
|
||||||
|
"placeholder": {
|
||||||
|
"type": ["string", "null"],
|
||||||
|
"description": "Text shown when the section has no data (e.g. after /clear). Set to empty string or null to hide the section instead. Default: '--'."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
@@ -711,6 +940,14 @@
|
|||||||
},
|
},
|
||||||
"color": {
|
"color": {
|
||||||
"$ref": "#/$defs/colorName"
|
"$ref": "#/$defs/colorName"
|
||||||
|
},
|
||||||
|
"background": {
|
||||||
|
"$ref": "#/$defs/colorName",
|
||||||
|
"description": "Background color for the section. Accepts named colors (green, red), hex (#50fa7b), or palette refs (p:success). Applied as a background wrap around the section output, preserving foreground colors."
|
||||||
|
},
|
||||||
|
"placeholder": {
|
||||||
|
"type": ["string", "null"],
|
||||||
|
"description": "Text shown when the section has no data (e.g. after /clear). Set to empty string or null to hide the section instead. Default: '--'."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
@@ -747,26 +984,23 @@
|
|||||||
},
|
},
|
||||||
"color": {
|
"color": {
|
||||||
"$ref": "#/$defs/colorName"
|
"$ref": "#/$defs/colorName"
|
||||||
|
},
|
||||||
|
"background": {
|
||||||
|
"$ref": "#/$defs/colorName",
|
||||||
|
"description": "Background color for the section. Accepts named colors (green, red), hex (#50fa7b), or palette refs (p:success). Applied as a background wrap around the section output, preserving foreground colors."
|
||||||
|
},
|
||||||
|
"placeholder": {
|
||||||
|
"type": ["string", "null"],
|
||||||
|
"description": "Text shown when the section has no data (e.g. after /clear). Set to empty string or null to hide the section instead. Default: '--'."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
"colorMatch": {
|
"colorMatch": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "Map of output value to color name",
|
"description": "Map of output value to color specifier",
|
||||||
"additionalProperties": {
|
"additionalProperties": {
|
||||||
"type": "string",
|
"type": "string"
|
||||||
"enum": [
|
|
||||||
"red",
|
|
||||||
"green",
|
|
||||||
"yellow",
|
|
||||||
"blue",
|
|
||||||
"magenta",
|
|
||||||
"cyan",
|
|
||||||
"white",
|
|
||||||
"dim",
|
|
||||||
"bold"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"customCommand": {
|
"customCommand": {
|
||||||
|
|||||||
Reference in New Issue
Block a user