context-carwash 0.1.7 → 0.1.9

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.
Files changed (3) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +30 -73
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.9
4
+
5
+ - Friendlier README wording.
6
+
7
+ ## 0.1.8
8
+
9
+ - Shorter, clearer README.
10
+
3
11
  ## 0.1.7
4
12
 
5
13
  - `carwash doctor` checks that the Node Carwash runs with is still there, and says how to fix it if not. Removing that Node, for example an old version in nvm, stops the meter and `/wash` until install is run again. The installer now says which Node that is.
package/README.md CHANGED
@@ -1,59 +1,40 @@
1
1
  # Context Carwash
2
2
 
3
- A small, local-first utility for Claude Code.
3
+ Context Carwash adds a line to Claude Code in your terminal that:
4
4
 
5
- - **Meter:** a quiet estimate of the active context window in the status line.
6
- - **Wash:** when you ask, Claude writes a short handoff brief, and your next `/clear` starts a fresh session that begins with it.
5
+ 1. Shows the current conversation's context size.
6
+ 2. Lets you compress your context and start a new session without losing the important details.
7
7
 
8
- Nothing happens automatically, and nothing about you is ever sent. Carwash goes online only for these: once a day it reads its own public page on npm to see if a newer version is out (you can turn that off); `install` and `doctor` read the same page when you run them, and `install` downloads the newer version if there is one; and `carwash stats --share` sends anonymous totals if you run it and say yes.
9
-
10
- **Status:** pre-release. The meter and the typed `/wash` command work today. Clickable links in the status line and the one-step restart are not built yet. See [plan-3.md](plan-3.md) for the design.
8
+ Pretty simple app, but I've found it helpful. Everything is local, but you can share your token savings anonymously with me if you'd like with `npx context-carwash stats --share`.
11
9
 
12
10
  ## Install
13
11
 
14
- Requires Node 18 or later.
12
+ You'll need Node 18 or later.
15
13
 
16
14
  ```sh
17
- npx context-carwash preview # sample meters in your terminal, nothing installed
18
- npx context-carwash install # lists what it will change, then asks
15
+ npx context-carwash install
19
16
  ```
20
17
 
21
- To update later, run `npx context-carwash@latest install`. Waiting briefs are kept. If npx reruns an older copy it downloaded before, the installer notices that npm has a newer version and installs that one instead.
22
-
23
- You do not have to watch for new versions. Once a day, when a session starts, Carwash checks npm in the background. If a newer version is out, or the version you have has a known problem, a line under the meter says so, with the command to update. `/wash help` shows the version you have.
24
-
25
- The installer copies itself to `~/.carwash/app` and makes three changes to Claude Code, all listed before you confirm:
18
+ It shows you what it's going to change and asks before doing anything. Then start a new Claude Code session and you're set.
26
19
 
27
- - **Status line** in `~/.claude/settings.json`. If you already have one, yours keeps running and the meter is added after it.
28
- - **Three hooks** in the same file, added after any hooks you already have. They are how `/wash` saves a brief and how a fresh session receives it.
29
- - **The `/wash` command** at `~/.claude/skills/wash`.
20
+ When there's a new version, a line under the meter will tell you. To update, run `npx context-carwash@latest install`.
30
21
 
31
- Start a new Claude Code session afterwards. The first one explains the meter and `/wash` in a short note, shown once.
22
+ Under the hood, it adds a status line and three hooks to `~/.claude/settings.json` (after whatever you already have there) and a `/wash` command in `~/.claude/skills/wash`.
32
23
 
33
- The status line and hooks run with the Node you installed with. If you later remove that Node, for example an old version in nvm, they stop working until you run install again. `carwash doctor` points this out.
34
-
35
- ## The meter
24
+ ## The Meter
36
25
 
37
26
  ```text
38
27
  session context ~136k [██████████░░░░░] /wash to compress & save context, then /clear keeps compressed context
39
28
  ```
40
29
 
41
- The number is how many tokens the conversation is using. It comes from Claude Code and is an estimate. The bar shows how close that is to the most the model's context window holds, and changes colour as it fills. From three quarters on, the meter also says so in words:
30
+ The number is roughly how many tokens your conversation is using (Claude Code's estimate). The bar shows how full the context window is and changes colour as it fills up. In a narrow window the text shortens to fit. It's just a meter, so it never does anything on its own.
42
31
 
43
- ```text
44
- session context ~150k [███████████░░░░] getting full · /wash to compress & save context, then /clear keeps compressed context
45
- ```
32
+ ## /wash
46
33
 
47
- Narrower windows show less. The sentence shortens first: `/wash to compress & save context, then /clear` fits about half a Mac screen, `/wash to compress, then /clear` fits an 80-column window, and the narrowest windows show `/wash to compress`. Then the bar goes.
34
+ 1. Type `/wash`. Claude writes a short brief: what you're working on, where things stand, and what's next. The status line switches to `Brief ready ✓`.
35
+ 2. Type `/clear`. Your new session starts with the brief already loaded.
48
36
 
49
- A full meter is information. It never triggers anything.
50
-
51
- ## Starting fresh with a brief
52
-
53
- 1. Type `/wash` (or `/wash light`, `/wash detailed`). Claude replies with a brief: what you are doing, where things stand, and what to do next. The status line changes to `Brief ready ✓`.
54
- 2. Type `/clear`. The new session starts with that brief already loaded, and says so: `Loaded your Carwash brief (mid ~1.1k, 2m ago), down from ~136k in the old session.`
55
-
56
- Your old conversation is not deleted. It stays in `/resume`.
37
+ Your old conversation isn't gone. You can still find it in `/resume`.
57
38
 
58
39
  | Command | What it does |
59
40
  |---|---|
@@ -63,21 +44,17 @@ Your old conversation is not deleted. It stays in `/resume`.
63
44
  | `/wash detailed` | Adds rationale, history, test results, risks, a step checklist |
64
45
  | `/wash discard` | Drop the brief. `/clear` is a normal clear again |
65
46
  | `/wash load [id]` | Make a waiting brief the one your next `/clear` uses |
66
- | `/wash stats` | How much context your washes have saved (see below) |
67
- | `/wash help` | Explain the meter and these options, with this session's size limits |
68
-
69
- Each level has a size limit: the most tokens its brief may take, worked out from what the conversation is using (a hundredth for `light`, three hundredths for `mid`, a tenth for `detailed`). `/wash help` shows the limits for the session you are in.
70
-
71
- Words after the level are passed to Claude as a note on what to emphasise: `/wash mid focus on the failing test`.
47
+ | `/wash stats` | How much context your washes have saved |
48
+ | `/wash help` | Explain the meter and these options |
72
49
 
73
- Things worth knowing:
50
+ A few things worth knowing:
74
51
 
75
- - **A `/clear` with no brief ready is a normal clear.** Carwash only acts when you have asked for a brief in that terminal.
76
- - **Writing a brief costs tokens.** It is an ordinary Claude reply. `help`, `discard` and `load` cost nothing: they never reach Claude.
77
- - **The cap is a ceiling, not a target.** A brief is as short as it can be. If one comes out over its cap, Claude is asked to shorten it, up to twice. If it is still over, it is kept and the message says so.
78
- - **Sizes are estimates.** The brief's size is worked out from its length. It covers the brief alone, so the meter in the new session reads higher: it also counts Claude Code's own baseline.
79
- - **Closed the terminal before clearing?** Start `claude` in the same folder. If exactly one brief is waiting for that folder, it is under 12 hours old, and the session that wrote it has ended, it is loaded. If there is any doubt about which brief is meant, nothing is loaded and you are shown what is waiting, with the `/wash load <id>` to use.
80
- - **Briefs expire after 48 hours.** A delivered brief is kept for 24 hours in case you want it again (`/wash load <id>`), then deleted.
52
+ - You can tell Claude what to focus on: `/wash mid focus on the failing test`.
53
+ - If you `/clear` without a brief ready, it's just a normal clear.
54
+ - Writing a brief is a normal Claude reply, so it uses some tokens. `help`, `discard` and `load` are free.
55
+ - Bigger conversations get bigger briefs. `/wash help` shows the size limit for each level.
56
+ - Closed the terminal before you got to `/clear`? Run `claude` in the same folder and your brief loads. If there's more than one waiting, it'll list them so you can pick with `/wash load <id>`.
57
+ - Briefs expire after 48 hours.
81
58
 
82
59
  ## Stats
83
60
 
@@ -96,19 +73,9 @@ Carwash stats, since 3 Oct 2026 (12 days)
96
73
  Net saved ~20M tokens
97
74
  ```
98
75
 
99
- `/wash stats` shows the same inside Claude Code, at no cost.
76
+ Every request to Claude sends the whole conversation again. After a wash, each request starts from the small brief instead, so Carwash counts the requests you actually made and adds up the difference. Claude charges about a tenth of the price for repeated context, so in dollars you're saving roughly a tenth of these numbers. You can also see this inside Claude Code with `/wash stats`.
100
77
 
101
- How it is worked out: every request to Claude carries the whole conversation, and a single prompt can make many requests while Claude uses tools. After a wash, each request in the fresh session starts from the brief instead of the old conversation. Claude Code's transcript of that session records the size of every request, so Carwash counts the requests and multiplies by the gap. Nothing is assumed about how long you would have kept going: only requests you actually made count. Counting stops where the old session would have compacted on its own.
102
-
103
- Claude caches repeated context and charges about a tenth for it, so in money terms the saving is roughly a tenth of these numbers. The brief cost counts every brief written, used or not.
104
-
105
- ### Sharing your stats
106
-
107
- ```sh
108
- npx context-carwash stats --share
109
- ```
110
-
111
- This shows every field it would send, and sends only if you say yes. It sends totals to a Google Form: a random share id made for sharing only (so sharing again replaces your last share), the Carwash version, your operating system, days since your first brief, and the numbers above. No names, folders, projects, prompts or briefs. You are not signed in to send it.
78
+ If you run `stats --share`, it shows you exactly what it would send before asking.
112
79
 
113
80
  ## Something not working?
114
81
 
@@ -116,15 +83,11 @@ This shows every field it would send, and sends only if you say yes. It sends to
116
83
  npx context-carwash doctor
117
84
  ```
118
85
 
119
- This checks that the status line, hooks and `/wash` command are still in place and that the Node they run with is still there, and shows your Carwash, Node, Claude Code and operating system versions, the newest version on npm, and the last few errors. Paste it into a [new issue](https://github.com/Spobi/context-carwash/issues/new). Issues are public, so look it over first: error details can include folder names.
120
-
121
- If a hook fails, the status line shows `Carwash hit an error` until you run `doctor`.
86
+ This checks that everything's still installed and working, and shows your versions and any recent errors. Paste the output into a [new issue](https://github.com/Spobi/context-carwash/issues/new) and I'll take a look. Issues are public and errors can include folder names, so give it a quick read first.
122
87
 
123
88
  ## Where things are kept
124
89
 
125
- Briefs are stored in `~/.carwash`, readable only by you, and never inside your project. So is the stats ledger (`~/.carwash/stats`): one small file per brief with its size, its level, and which fresh sessions it went to, but never the brief or your prompts. Nothing about you is uploaded, and there is no telemetry. Once a day, a new session reads Carwash's public page on npm: the newest version, and any warning about the one you have. That is a download, like opening a web page, and it sends nothing about you, your projects or your use. The answer is kept in `~/.carwash/notice.json`. `install` and `doctor` read the same page when you run them. Set `CARWASH_NO_UPDATE_CHECK=1` to turn all of this off. `stats --share` sends only when you run it and say yes.
126
-
127
- If a hook fails it stays silent, writes the error to `~/.carwash/errors.log`, and the status line says so.
90
+ Your briefs, stats and error logs live in `~/.carwash`, and only you can read them. Nothing about you gets uploaded. Once a day, Carwash checks npm for a newer version. If you'd rather it didn't, set `CARWASH_NO_UPDATE_CHECK=1`.
128
91
 
129
92
  ## Uninstall
130
93
 
@@ -132,17 +95,11 @@ If a hook fails it stays silent, writes the error to `~/.carwash/errors.log`, an
132
95
  npx context-carwash uninstall
133
96
  ```
134
97
 
135
- This puts `settings.json` back exactly as it was. If you have edited the file since installing, it removes only Carwash's own status line and hooks and keeps your edits. It then removes the `/wash` command and deletes `~/.carwash`, including any briefs still waiting and your stats.
136
-
137
- ## Limitations
138
-
139
- - Terminal.app cannot click links. When clickable links arrive for other terminals, Terminal.app will keep showing the command to type.
140
- - The status line re-runs every 5 seconds while a session is open, so it stays correct after `/wash discard` and `/wash load`. Each run reads a few small local files. If your own status line sets a refresh interval, yours is kept.
141
- - Claude Code shows `help`, `discard`, `load`, and mistyped arguments under the heading "operation blocked by hook". That is Carwash answering the command itself instead of sending it to Claude.
98
+ This puts `settings.json` back exactly as it was. If you've edited the file since installing, it only removes Carwash's status line and hooks and leaves your changes alone. It also removes the `/wash` command and deletes `~/.carwash`, including any waiting briefs and your stats.
142
99
 
143
100
  ## Platforms
144
101
 
145
- Developed and tested on macOS. Automated tests also run on Linux and Windows; neither has been tried by hand yet.
102
+ Built and tested on macOS. Automated tests also run on Linux and Windows, but I haven't tried those by hand yet.
146
103
 
147
104
  ## License
148
105
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "context-carwash",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "A quiet context meter and deliberate fresh-session handoff for Claude Code.",
5
5
  "license": "MIT",
6
6
  "repository": {