lumira 1.8.2 → 1.9.0

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.
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "lumira",
3
+ "owner": {
4
+ "name": "Carlos Cativo"
5
+ },
6
+ "metadata": {
7
+ "description": "Real-time statusline HUD for Claude Code and Qwen Code — analytics, quota projection, themes, powerline",
8
+ "version": "1.9.0",
9
+ "homepage": "https://github.com/cativo23/lumira"
10
+ },
11
+ "plugins": [
12
+ {
13
+ "name": "lumira",
14
+ "source": "./",
15
+ "description": "Real-time statusline HUD for Claude Code and Qwen Code. Session analytics, API latency widget, 7-day quota projection, auto-compact warnings, 7 themes, powerline support. Zero runtime dependencies. Run /lumira:setup after install to activate.",
16
+ "version": "1.9.0",
17
+ "author": {
18
+ "name": "Carlos Cativo"
19
+ },
20
+ "homepage": "https://github.com/cativo23/lumira#readme",
21
+ "repository": "https://github.com/cativo23/lumira",
22
+ "license": "MIT",
23
+ "keywords": [
24
+ "statusline",
25
+ "hud",
26
+ "claude-code",
27
+ "qwen-code",
28
+ "analytics",
29
+ "metrics",
30
+ "terminal",
31
+ "powerline",
32
+ "themes"
33
+ ]
34
+ }
35
+ ],
36
+ "version": "1.9.0"
37
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "lumira",
3
+ "version": "1.9.0",
4
+ "description": "Real-time statusline HUD for Claude Code and Qwen Code — session analytics, API latency, 7-day quota projection, auto-compact warnings, 7 themes, powerline. Zero runtime deps.",
5
+ "author": {
6
+ "name": "Carlos Cativo"
7
+ },
8
+ "repository": "https://github.com/cativo23/lumira",
9
+ "homepage": "https://github.com/cativo23/lumira#readme",
10
+ "license": "MIT",
11
+ "keywords": [
12
+ "claude-code",
13
+ "qwen-code",
14
+ "statusline",
15
+ "hud",
16
+ "terminal",
17
+ "analytics",
18
+ "session",
19
+ "metrics",
20
+ "nerd-font",
21
+ "powerline",
22
+ "themes"
23
+ ],
24
+ "skills": "./skills/"
25
+ }
package/dist/index.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lumira",
3
- "version": "1.8.2",
3
+ "version": "1.9.0",
4
4
  "description": "Real-time statusline HUD for Claude Code and Qwen Code. Includes session analytics CLI, API latency overhead widget, 7d quota projection, auto-compact proximity warnings, themes, and powerline. Zero deps.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -15,6 +15,7 @@
15
15
  "test:coverage": "vitest run --coverage",
16
16
  "lint": "tsc --noEmit",
17
17
  "themes:validate": "npm run build && node scripts/validate-themes.mjs",
18
+ "version": "node scripts/bump-plugin-version.mjs",
18
19
  "prepublishOnly": "npm run build && npm run lint && node scripts/validate-themes.mjs && npm run test"
19
20
  },
20
21
  "devDependencies": {
@@ -50,6 +51,7 @@
50
51
  "files": [
51
52
  "dist",
52
53
  "skills",
54
+ ".claude-plugin",
53
55
  "!dist/**/*.map",
54
56
  "!dist/**/*.d.ts"
55
57
  ]
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: setup
3
+ description: Use after installing the lumira plugin to activate the statusline. Writes statusLine.command to ~/.claude/settings.json pointing to the plugin-cached binary. Run this once after /plugin marketplace add cativo23/lumira.
4
+ allowed-tools: Bash, Read, Write
5
+ license: MIT
6
+ ---
7
+
8
+ # /lumira:setup — Activate lumira statusline
9
+
10
+ You activate the **lumira** statusline for Claude Code after plugin installation.
11
+
12
+ ## Workflow
13
+
14
+ 1. **Find install path** — Read `~/.claude/plugins/installed_plugins.json`. Look for any key matching `lumira@*` (the exact marketplace key depends on how the user installed it). Extract `installPath` from the first match.
15
+ 2. **Verify binary** — Check that `<installPath>/dist/index.js` exists.
16
+ 3. **Read settings** — Read `~/.claude/settings.json`. If the file is **missing**, start from `{}`. If it is **present but invalid JSON**, stop and report the parse error — do not overwrite.
17
+ 4. **Check existing** — If `statusLine.command` is already set to any non-empty value, tell the user what's currently set and ask if they want to replace it. Do not proceed until they confirm. If it is empty or absent, skip this step.
18
+ 5. **Write command** — Set `statusLine.command` to `node "<installPath>/dist/index.js"`.
19
+ 6. **Init config** — If `~/.config/lumira/config.json` does not exist, create it with `{"preset": "balanced"}`. Never overwrite an existing config.
20
+ 7. **Confirm and instruct** — Tell the user what was written and that they must restart Claude Code.
21
+
22
+ ## Finding the install path
23
+
24
+ ```bash
25
+ cat ~/.claude/plugins/installed_plugins.json
26
+ ```
27
+
28
+ Parse the JSON and find the entry whose key starts with `lumira@`. The `installPath` field is the absolute path to the cached plugin directory.
29
+
30
+ If multiple entries match (unlikely), use the one with the most recent `lastUpdated`.
31
+
32
+ ## settings.json merge rules
33
+
34
+ - Always read the full file first, then patch only `statusLine.command`.
35
+ - Write back the complete merged object — never truncate other fields.
36
+ - If the file is missing, create it with just `{"statusLine": {"command": "<node command>"}}`.
37
+ - If the file is not valid JSON, report the parse error and stop. Do not overwrite.
38
+
39
+ ## Success output
40
+
41
+ After writing, tell the user:
42
+ - The exact command written
43
+ - That they need to **restart Claude Code** for the statusline to appear
44
+ - "Run /lumira:lumira to customize preset, theme, or display widgets"
45
+
46
+ ## Error cases
47
+
48
+ - No `lumira@*` key in installed_plugins.json → "Lumira doesn't appear to be installed as a plugin. Run: `/plugin marketplace add cativo23/lumira` then try again."
49
+ - `dist/index.js` missing at install path → "Plugin installed but dist/ is missing. Reinstall: uninstall lumira then `/plugin marketplace add cativo23/lumira`."
50
+ - settings.json parse error → show the exact error, stop, do not write.
51
+
52
+ ## Language
53
+
54
+ Respond in the user's language. Spanish input → Rioplatense Spanish (voseo: "vos tenés", "reiniciá", "fijate").