packlight-cli 0.1.0 → 0.1.1
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 +25 -0
- package/README.md +4 -0
- package/dist/cli.js +1 -1
- package/dist/report/client.js +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
What changed in each release of packlight. The newest is first. Every release is also on
|
|
4
|
+
[GitHub Releases](https://github.com/cooperism-lab/packlight/releases); choose Watch › Custom › Releases there to hear about new ones.
|
|
5
|
+
|
|
6
|
+
## 0.1.1 (2026-10-10)
|
|
7
|
+
|
|
8
|
+
- The savings line never shows more than 100% of your setup. Before, a fix plan larger than the measured
|
|
9
|
+
setup could show a share over 100%, in the report and in `packlight fix`.
|
|
10
|
+
|
|
11
|
+
## 0.1.0 (2026-10-09)
|
|
12
|
+
|
|
13
|
+
The first release, on npm as `packlight-cli`.
|
|
14
|
+
|
|
15
|
+
- Measures the tokens each Claude Code and Codex session starts with, split by source: skill listing, MCP tool
|
|
16
|
+
names and instructions, hook text, agent descriptions, CLAUDE.md and AGENTS.md. For Codex the number is measured
|
|
17
|
+
from the input tokens Codex logs.
|
|
18
|
+
- Shows which skills, agents, plugins, MCP servers and hooks you used, and which you never did, from your own
|
|
19
|
+
session logs. Runs offline and sends nothing.
|
|
20
|
+
- `packlight fix` and the report's Fix it button archive everything unused since it was installed, after one
|
|
21
|
+
question. Items only you can remove (claude.ai connectors, app plugins, Codex config) come with the exact place
|
|
22
|
+
to turn them off.
|
|
23
|
+
- `packlight restore` puts archived items back byte for byte. Skills installed by a suite like gstack are never
|
|
24
|
+
archived.
|
|
25
|
+
- One report per agent: `report-claude-code.html` and `report-codex.html` in `~/.packlight`.
|
package/README.md
CHANGED
|
@@ -60,6 +60,10 @@ Planned releases:
|
|
|
60
60
|
- **v0.2:** overlap detection, plus a packlight skill that rates items and writes "which one" cards. This is the public launch.
|
|
61
61
|
- **v0.3:** Codex adapter.
|
|
62
62
|
|
|
63
|
+
## What's new
|
|
64
|
+
|
|
65
|
+
See [CHANGELOG.md](CHANGELOG.md), or [GitHub Releases](https://github.com/cooperism-lab/packlight/releases) to be told about new versions (Watch › Custom › Releases). `npx packlight-cli` always runs the newest version; a global install updates with `npm install -g packlight-cli`.
|
|
66
|
+
|
|
63
67
|
## Who made it
|
|
64
68
|
|
|
65
69
|
Built by Cooper Kao ([cooperism-lab](https://github.com/cooperism-lab)). Issues and pull requests are welcome.
|
package/dist/cli.js
CHANGED
|
@@ -140,7 +140,7 @@ const KIND_WORD = { skill: ['skill', 'skills'], command: ['command', 'commands']
|
|
|
140
140
|
const count = (n, kind) => `${n} ${KIND_WORD[kind]?.[n === 1 ? 0 : 1] ?? kind}`;
|
|
141
141
|
/** "about 2k tokens less per session (10% of your setup; 7.9k characters)": tokens estimated at CHARS_PER_TOKEN. */
|
|
142
142
|
const saving = (savedChars, setup) => {
|
|
143
|
-
const pct = setup ? (savedChars / setup) * 100 : 0;
|
|
143
|
+
const pct = setup ? Math.min(100, (savedChars / setup) * 100) : 0;
|
|
144
144
|
return `about ${kchars(savedChars / CHARS_PER_TOKEN)} tokens less per session (${setup ? `${pct > 0 && pct < 1 ? 'under 1' : Math.round(pct)}% of your setup; ` : ''}${kchars(savedChars)} characters)`;
|
|
145
145
|
};
|
|
146
146
|
const kchars = (n) => (n >= 1000 ? `${(n / 1000).toFixed(1).replace(/\.0$/, '')}k` : String(n));
|
package/dist/report/client.js
CHANGED
|
@@ -67,7 +67,7 @@ export function clientMain() {
|
|
|
67
67
|
// Tokens are estimated from characters (logs record characters): about 4 per token, the same as CHARS_PER_TOKEN in model.ts.
|
|
68
68
|
const tokens = (c) => chars(c / 4);
|
|
69
69
|
const setupTotal = () => { const l = data.sessionLoad; return !l ? 0 : l.measuredTokens ? l.measuredTokens * 4 : l.skillListing + l.mcpTools + l.mcpInstructions + l.hookStart + l.agents + (l.agentsMd ?? 0) + (l.pluginInstructions ?? 0); };
|
|
70
|
-
const share = (part, whole) => { const p = (part / whole) * 100; return p > 0 && p < 1 ? 'under 1%' : `${Math.round(p)}%`; };
|
|
70
|
+
const share = (part, whole) => { const p = Math.min(100, (part / whole) * 100); return p > 0 && p < 1 ? 'under 1%' : `${Math.round(p)}%`; };
|
|
71
71
|
const plural = (n, one, many = `${one}s`) => `${n} ${n === 1 ? one : many}`;
|
|
72
72
|
const tildify = (p) => (p.startsWith(data.home) ? `~${p.slice(data.home.length)}` : p);
|
|
73
73
|
const live = document.getElementById('live');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "packlight-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "See what your coding agent carries, keep what you use, archive the rest.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude-code",
|
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
"packlight": "dist/cli.js"
|
|
29
29
|
},
|
|
30
30
|
"files": [
|
|
31
|
-
"dist"
|
|
31
|
+
"dist",
|
|
32
|
+
"CHANGELOG.md"
|
|
32
33
|
],
|
|
33
34
|
"engines": {
|
|
34
35
|
"node": ">=20"
|