lumira 1.2.1 → 1.2.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.
@@ -4,16 +4,25 @@ import { truncField } from './text.js';
4
4
  import { getActiveTodo } from './shared.js';
5
5
  import { formatDuration } from '../utils/format.js';
6
6
  import { hyperlink } from './hyperlink.js';
7
+ import { isNamedAgentType } from '../parsers/subagents.js';
7
8
  import { renderPowerline, resolveStyle, } from './powerline.js';
8
9
  import { derivePowerlinePalette, DEFAULT_POWERLINE_PALETTE, } from '../themes.js';
9
10
  /**
10
11
  * Build the line1 segment list for the powerline renderer. Segment priorities
11
- * control which get dropped first when the terminal is narrow:
12
- * model: 100 (always kept)
13
- * branch: 80
14
- * dir: 60
15
- * task: 40
16
- * version: 20 (dropped first)
12
+ * control which get dropped first when the terminal is narrow (lower = drops first):
13
+ * model: 100 (always kept)
14
+ * branch: 80
15
+ * dir: 60
16
+ * task: 40
17
+ * duration: 35
18
+ * memory: 30
19
+ * tokenSpeed: 25
20
+ * linesChanged: 24
21
+ * worktree: 23
22
+ * agent: 22
23
+ * sessionName: 21
24
+ * version: 20
25
+ * style: 18 (dropped first)
17
26
  */
18
27
  function buildSegments(ctx, palette) {
19
28
  const { input, git, transcript, config: { display }, icons, memory, tokenSpeed } = ctx;
@@ -102,6 +111,67 @@ function buildSegments(ctx, palette) {
102
111
  priority: 25,
103
112
  });
104
113
  }
114
+ // Lines changed — emitted as a single segment in powerline (classic uses
115
+ // two-color spans inside one cell, which the segment model can't express).
116
+ // Signed numbers carry the semantic without needing per-token color.
117
+ if (display.linesChanged) {
118
+ const added = input.linesAdded;
119
+ const removed = input.linesRemoved;
120
+ if (added > 0 || removed > 0) {
121
+ segments.push({
122
+ text: `+${added} -${removed}`,
123
+ bg: palette.branchCleanBg,
124
+ fg: palette.fg,
125
+ priority: 24,
126
+ });
127
+ }
128
+ }
129
+ if (display.worktree && input.worktreeName) {
130
+ segments.push({
131
+ text: truncField(input.worktreeName, 15),
132
+ icon: icons.tree,
133
+ bg: palette.dirBg,
134
+ fg: palette.fg,
135
+ priority: 23,
136
+ });
137
+ }
138
+ // Mirrors classic line1: prefer the explicit input.agentName (subagent
139
+ // session render), else show the cubes badge when exactly one *named*
140
+ // subagent is running on the parent. Anonymous agents stay collapsed
141
+ // under the line 3 ⚡N agents widget to avoid noise.
142
+ if (display.agent) {
143
+ let agentName = input.agentName;
144
+ if (!agentName) {
145
+ const named = transcript.agents.filter(a => a.status === 'running' && isNamedAgentType(a.type));
146
+ if (named.length === 1)
147
+ agentName = named[0].type;
148
+ }
149
+ if (agentName) {
150
+ segments.push({
151
+ text: truncField(agentName, 15),
152
+ icon: icons.cubes,
153
+ bg: palette.taskBg,
154
+ fg: palette.fg,
155
+ priority: 22,
156
+ });
157
+ }
158
+ }
159
+ if (display.sessionName && input.sessionName) {
160
+ segments.push({
161
+ text: truncField(input.sessionName, 20),
162
+ bg: palette.branchCleanBg,
163
+ fg: palette.fg,
164
+ priority: 21,
165
+ });
166
+ }
167
+ if (display.style && input.outputStyle) {
168
+ segments.push({
169
+ text: input.outputStyle,
170
+ bg: palette.branchCleanBg,
171
+ fg: palette.fg,
172
+ priority: 18,
173
+ });
174
+ }
105
175
  if (display.version && input.version) {
106
176
  segments.push({
107
177
  text: hyperlink(`https://www.npmjs.com/package/@anthropic-ai/claude-code/v/${encodeURIComponent(input.version)}`, `v${input.version}`),
@@ -1 +1 @@
1
- {"version":3,"file":"powerline-line1.js","sourceRoot":"","sources":["../../src/render/powerline-line1.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"powerline-line1.js","sourceRoot":"","sources":["../../src/render/powerline-line1.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lumira",
3
- "version": "1.2.1",
3
+ "version": "1.2.2",
4
4
  "description": "Real-time statusline HUD for Claude Code and Qwen Code — context bar, burn rate, themes, powerline, zero deps.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,66 +1,69 @@
1
1
  ---
2
2
  name: lumira
3
- description: Configure the lumira statusline HUD via natural language
3
+ description: Use when the user wants to configure the lumira statusline change preset, theme, icons, powerline style, layout, or toggle widgets like cost, tokens, cache metrics, MCP, agents, or context-bar thresholds.
4
+ allowed-tools: Read, Write
5
+ license: MIT
4
6
  ---
5
7
 
6
8
  # /lumira — Statusline Configuration Skill
7
9
 
8
- You are configuring **lumira**, a terminal statusline/HUD for Claude Code.
10
+ You configure **lumira**, a terminal statusline/HUD for Claude Code and Qwen Code.
9
11
 
10
- ## Config File
12
+ Your job: read the user's current config, translate their natural-language request into a **minimal JSON patch**, merge into the existing config, and write the result.
11
13
 
12
- Location: `~/.config/lumira/config.json`
14
+ ## Workflow
13
15
 
14
- Read the current config before making changes. If the file doesn't exist, create it with just the fields the user wants to change.
16
+ 1. **Read** `~/.config/lumira/config.json`. If missing or invalid JSON, treat the current config as `{}`.
17
+ 2. **Interpret** the user's request against the catalog below. Reject unknown keys/values explicitly — do not silently drop them.
18
+ 3. **Merge** changes into the existing object. Never overwrite unrelated fields.
19
+ 4. **Write** the merged JSON back to the file.
20
+ 5. **Tell the user** to restart their Claude Code (or Qwen Code) session for changes to take effect.
15
21
 
16
- ## Available Settings
22
+ ## Configuration catalog
17
23
 
18
- ### Presets (`preset`)
19
- - `"full"` — all widgets, multi-line layout
20
- - `"balanced"` — essential widgets, auto layout (hides burn rate, duration, token speed, lines changed, session name, style, version, memory)
21
- - `"minimal"` — compact single-line (model, branch, directory, context bar, cost)
24
+ ### Top-level fields
22
25
 
23
- ### Layout (`layout`)
24
- Internal render mode. Prefer setting `preset` instead.
25
- - `"multiline"` full multi-line renderer
26
- - `"singleline"` compact single-line renderer
27
- - `"auto"` switches based on terminal width
26
+ | Field | Type | Allowed values | Notes |
27
+ |---|---|---|---|
28
+ | `preset` | string | `"full"` \| `"balanced"` \| `"minimal"` | Sets `layout` + a bundle of `display.*` defaults |
29
+ | `layout` | string | `"multiline"` \| `"singleline"` \| `"auto"` | Internal render mode. Prefer `preset` |
30
+ | `icons` | string | `"nerd"` \| `"emoji"` \| `"none"` | Default `"nerd"` (requires Nerd Font) |
31
+ | `theme` | string | `"dracula"` \| `"nord"` \| `"tokyo-night"` \| `"catppuccin"` \| `"monokai"` \| `"gruvbox"` \| `"solarized"` | Requires `colors.mode: "truecolor"` to take effect |
32
+ | `style` | string | `"classic"` \| `"powerline"` | Visual style for line 1 |
33
+ | `powerline.style` | string | `"arrow"` \| `"flame"` \| `"slant"` \| `"round"` \| `"diamond"` \| `"compatible"` \| `"plain"` \| `"auto"` | Separator preset; only meaningful when `style: "powerline"` |
34
+ | `colors.mode` | string | `"auto"` \| `"named"` \| `"256"` \| `"truecolor"` | Color depth |
35
+ | `gsd` | boolean | `true` \| `false` | Show GSD task info section |
28
36
 
29
- ### Icons (`icons`)
30
- - `"nerd"` — Nerd Font icons (default, requires a Nerd Font)
31
- - `"emoji"` — Unicode emoji icons
32
- - `"none"` — no icons, ASCII fallbacks
37
+ ### Presets — what they do
33
38
 
34
- ### Theme (`theme`)
35
- Named color themes (requires truecolor terminal):
36
- - `"dracula"`, `"nord"`, `"tokyo-night"`, `"catppuccin"`, `"monokai"`
39
+ - **`full`** `layout: "multiline"`, every widget on.
40
+ - **`balanced`** `layout: "auto"`, hides `burnRate`, `duration`, `tokenSpeed`, `linesChanged`, `sessionName`, `style`, `version`, `memory`, `contextTokens`, `cacheMetrics`.
41
+ - **`minimal`** → `layout: "singleline"`, hides nearly everything except `model`, `branch`, `directory`, `contextBar`, `cost`.
37
42
 
38
- ### Display Toggles (`display`)
39
- Each is a boolean (`true`/`false`):
40
- `model`, `branch`, `gitChanges`, `directory`, `contextBar`, `contextTokens`, `tokens`, `cost`, `burnRate`, `duration`, `tokenSpeed`, `rateLimits`, `tools`, `todos`, `vim`, `effort`, `worktree`, `agent`, `sessionName`, `style`, `version`, `linesChanged`, `memory`
43
+ ### Display toggles (`display.*`, booleans)
41
44
 
42
- ### Colors (`colors.mode`)
43
- - `"auto"` — detect from terminal
44
- - `"named"` — basic ANSI
45
- - `"256"` — 256-color
46
- - `"truecolor"` — 24-bit RGB
45
+ Valid keys (anything else must be rejected):
47
46
 
48
- ### GSD Integration (`gsd`)
49
- - `true` — show GSD task info
50
- - `false` — hide GSD section
47
+ `model`, `branch`, `gitChanges`, `directory`, `contextBar`, `contextTokens`, `tokens`, `cost`, `burnRate`, `duration`, `tokenSpeed`, `rateLimits`, `paceDelta`, `tools`, `todos`, `vim`, `effort`, `worktree`, `agent`, `agents`, `sessionName`, `style`, `version`, `linesChanged`, `memory`, `cacheMetrics`, `mcp`, `health`
51
48
 
52
- ## Platform Support
49
+ ### Display thresholds (`display.*`, numeric)
53
50
 
54
- Lumira auto-detects the caller's platform:
51
+ | Field | Default | Range | Notes |
52
+ |---|---|---|---|
53
+ | `contextWarningThreshold` | 70 | 0–100 | Context bar turns orange + 🔥 at this % |
54
+ | `contextCriticalThreshold` | 85 | 0–100 | Context bar turns red/blink + 💀. **Must be strictly greater than warning** |
55
55
 
56
- - **Claude Code** renders per your configured `layout` / `preset`.
57
- - **Qwen Code** — renders compact single-line output automatically, regardless of `layout`. Qwen Code only displays the first line of statusline commands, so lumira always uses the single-line renderer (which fits model, branch, context bar, cost, cached tokens, and thoughts into one line).
56
+ If the pair is invalid, the runtime silently falls back to defaults. You should reject invalid pairs upfront and tell the user why.
58
57
 
59
- No configuration needed. One `config.json` serves both CLIs.
58
+ ## Platform detection
60
59
 
61
- ## Example Configs
60
+ Lumira auto-detects the caller (Claude Code vs Qwen Code) at runtime. Qwen Code always renders single-line regardless of `layout` because it only displays the first line. **One `config.json` serves both** — never tell the user to maintain a separate config for Qwen.
62
61
 
63
- Minimal with emoji icons:
62
+ ## Few-shot examples
63
+
64
+ User intent → minimal JSON patch (assume existing config is preserved unless explicitly changed).
65
+
66
+ **"hacelo minimal con emoji"**
64
67
  ```json
65
68
  {
66
69
  "preset": "minimal",
@@ -68,16 +71,17 @@ Minimal with emoji icons:
68
71
  }
69
72
  ```
70
73
 
71
- Full with Dracula theme:
74
+ **"powerline con flame y theme dracula"**
72
75
  ```json
73
76
  {
74
- "preset": "full",
77
+ "style": "powerline",
78
+ "powerline": { "style": "flame" },
75
79
  "theme": "dracula",
76
80
  "colors": { "mode": "truecolor" }
77
81
  }
78
82
  ```
79
83
 
80
- Custom — hide cost and tokens, keep everything else:
84
+ **"hide cost and tokens, keep everything else"** (patch only the toggles requested)
81
85
  ```json
82
86
  {
83
87
  "display": {
@@ -87,10 +91,50 @@ Custom — hide cost and tokens, keep everything else:
87
91
  }
88
92
  ```
89
93
 
94
+ **"avisame antes con el contexto: alarma al 60% y crítico al 80%"**
95
+ ```json
96
+ {
97
+ "display": {
98
+ "contextWarningThreshold": 60,
99
+ "contextCriticalThreshold": 80
100
+ }
101
+ }
102
+ ```
103
+
104
+ **"show me cache hit rate and MCP servers"**
105
+ ```json
106
+ {
107
+ "display": {
108
+ "cacheMetrics": true,
109
+ "mcp": true
110
+ }
111
+ }
112
+ ```
113
+
114
+ **"full preset pero sin burn rate"** (preset + override)
115
+ ```json
116
+ {
117
+ "preset": "full",
118
+ "display": {
119
+ "burnRate": false
120
+ }
121
+ }
122
+ ```
123
+
90
124
  ## Rules
91
125
 
92
- 1. Always read the existing config first
93
- 2. Merge changes don't overwrite the entire file
94
- 3. Preset sets defaults; explicit display toggles override preset
95
- 4. Theme requires `colors.mode: "truecolor"` to take effect
96
- 5. After writing, tell the user to restart their Claude Code session
126
+ 1. **Read first, write minimal.** Always load existing config before patching. Only emit fields the user actually asked to change.
127
+ 2. **Validate before writing.** Reject unknown preset / icon / theme / style / powerline-style / display-toggle names with a clear message. Clamp threshold numbers to [0, 100] and enforce `warning < critical`.
128
+ 3. **Preset then overlay.** When the user provides both a preset and explicit `display.*` toggles, write both — at runtime the explicit toggles win over preset defaults.
129
+ 4. **Themes need truecolor.** When applying a theme, also set `colors.mode: "truecolor"` if it isn't already.
130
+ 5. **Restart instruction is mandatory.** End every successful change with a one-line reminder to restart the session.
131
+ 6. **Language match.** Respond in the user's language (Spanish → Spanish, English → English).
132
+
133
+ ## Anti-patterns (do NOT do)
134
+
135
+ - ❌ Overwriting the whole config file with just the new fields — destroys unrelated settings.
136
+ - ❌ Inventing display toggle names that aren't in the list above.
137
+ - ❌ Using the removed `"qwen"` preset — it was deprecated and silently rewrites to `"minimal"`. Direct the user to `"minimal"` instead.
138
+ - ❌ Setting a `theme` without ensuring `colors.mode: "truecolor"` (the theme will appear broken).
139
+ - ❌ Forgetting the restart reminder.
140
+ - ❌ Setting `contextWarningThreshold >= contextCriticalThreshold` — runtime falls back to defaults and your "change" is invisible.