cc-cream 0.1.14 → 0.1.15

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/CHANGELOG.md CHANGED
@@ -4,6 +4,11 @@ All notable changes to cc-cream are documented here. Format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow
5
5
  [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.1.15] — 2026-05-29
8
+
9
+ ### Fixed
10
+ - **An orphaned status line no longer crashes on every render after `/plugin uninstall`.** If you ran `/plugin uninstall cc-cream` without first running `/cc-cream:uninstall`, the `statusLine` entry stayed in `settings.json` while the plugin cache was deleted. The cache-glob then matched nothing, the baked command collapsed to a bare relative `src/cc-cream.js`, and Claude Code hit `MODULE_NOT_FOUND` (exit 1) on every render — and `/cc-cream:uninstall` was gone, so the only fix was hand-editing `settings.json`. The auto-update command now captures the resolved version dir in `$d` and short-circuits with `[ -z "$d" ] && exit 0`, so an orphaned status line is inert (silent, exit 0) instead of a recurring error. "Degrade, never crash." New installs/auto-wires get the guarded command; existing users pick it up on their next `/cc-cream:setup`.
11
+
7
12
  ## [0.1.14] — 2026-05-29
8
13
 
9
14
  ### Changed
@@ -124,6 +129,7 @@ line and prints a colored ≤3-row bar — zero tokens, the model never sees it.
124
129
  - Supports **macOS and Linux**; Windows is a planned fast-follow.
125
130
  - Requires Claude Code **2.1.132+** (`effort` / `thinking` need 2.1.145+).
126
131
 
132
+ [0.1.15]: https://github.com/bart-turczynski/cc-cream/compare/v0.1.14...v0.1.15
127
133
  [0.1.6]: https://github.com/bart-turczynski/cc-cream/compare/v0.1.5...v0.1.6
128
134
  [0.1.5]: https://github.com/bart-turczynski/cc-cream/compare/v0.1.4...v0.1.5
129
135
  [0.1.4]: https://github.com/bart-turczynski/cc-cream/compare/v0.1.3...v0.1.4
package/README.md CHANGED
@@ -118,13 +118,24 @@ and you may need to **restart** it for the bar to appear.
118
118
 
119
119
  ### Uninstall
120
120
 
121
- Plugin users — two steps (Claude Code can't clean `settings.json` when a plugin
122
- is removed, so the wiring is cleared separately from the cache):
121
+ Plugin users — two steps, **in this order** (Claude Code can't clean
122
+ `settings.json` when a plugin is removed, so the wiring is cleared separately
123
+ from the cache):
123
124
  ```
124
- /cc-cream:uninstall # removes the statusLine wiring
125
- /plugin uninstall cc-cream # drops the plugin from the cache
125
+ /cc-cream:uninstall # 1. removes the statusLine wiring (run this FIRST)
126
+ /plugin uninstall cc-cream # 2. drops the plugin from the cache
126
127
  ```
127
128
 
129
+ > **Order matters.** `/cc-cream:uninstall` lives inside the plugin, so once you
130
+ > run `/plugin uninstall` it's gone. The status line itself degrades to nothing
131
+ > if the cache is missing (it won't error), but the now-inert `statusLine` block
132
+ > lingers in `settings.json`. To clear it after the plugin is already gone, run
133
+ > the npm bin (no global install needed):
134
+ > ```bash
135
+ > npx -y -p cc-cream cc-cream-setup --uninstall
136
+ > ```
137
+ > or remove the `statusLine` key from `~/.claude/settings.json` by hand.
138
+
128
139
  npm / manual users:
129
140
  ```bash
130
141
  cc-cream-setup --uninstall # npm (add --purge to also remove runtime + config)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cc-cream",
3
- "version": "0.1.14",
3
+ "version": "0.1.15",
4
4
  "description": "Claude Code cache/context/cost status-line tool",
5
5
  "directories": {
6
6
  "doc": "docs"
package/src/install.js CHANGED
@@ -28,8 +28,16 @@ const TRUST_NOTE =
28
28
  // it, a non-numeric cache dir (a git-sha install like `c83650b6360f/`) sorts
29
29
  // last and pins the bar to whatever version that happens to be, defeating
30
30
  // auto-update. With it, `/plugin update` is applied live with no re-run of setup.
31
+ //
32
+ // The resolved dir is captured in `$d` and GUARDED with `[ -z "$d" ] && exit 0`:
33
+ // when the glob matches nothing — the state left behind if a user runs
34
+ // `/plugin uninstall cc-cream` WITHOUT first running `/cc-cream:uninstall`, so a
35
+ // stale statusLine outlives the deleted cache — the command degrades to a silent
36
+ // exit 0 instead of running a bare relative `src/cc-cream.js` that crashes with
37
+ // MODULE_NOT_FOUND on every render. "Degrade, never crash" (CLAUDE.md). `exec`
38
+ // replaces the shell so stdin/stdout pass straight through to the renderer.
31
39
  export function autoUpdateCommand(nodePath) {
32
- return `${nodePath} "$(ls -1d "\${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/plugins/cache/*/cc-cream/*/ 2>/dev/null | grep -E '/[0-9]+(\\.[0-9]+)+/$' | sort -V | tail -1)src/cc-cream.js"`;
40
+ return `d="$(ls -1d "\${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/plugins/cache/*/cc-cream/*/ 2>/dev/null | grep -E '/[0-9]+(\\.[0-9]+)+/$' | sort -V | tail -1)"; [ -z "$d" ] && exit 0; exec ${nodePath} "\${d}src/cc-cream.js"`;
33
41
  }
34
42
 
35
43
  // `desired` is considered already installed if it matches the planned command