squeez 1.19.4 → 1.21.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.
Files changed (3) hide show
  1. package/CHANGELOG.md +486 -1
  2. package/README.md +45 -28
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -9,6 +9,489 @@ conventional commit messages on `main`.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [1.20.0] - 2026-05-18
13
+
14
+ ### Added
15
+ - feat(benchmark): add information-preservation guard against output-token inflation (#133)
16
+ - feat(cloud): TOON re-encoder for JSON-array outputs (gh, kubectl, aws, gcloud, az) (#134)
17
+ - feat(sig-mode): preserve attribute / decorator above kept signatures (#137)
18
+ - feat(economy): auto-curation nudges + cross-session handler stats (#118)
19
+ - feat(hosts): add Pi adapter (#116)
20
+ - feat(compress): plug Agent/Task output, HTML bash, and PreCompact telemetry gaps
21
+ - feat(bench): add pytest, jest, xcode_build scenarios — 23 → 26 scenarios
22
+ - feat(hooks): PreCompact + PostCompact lifecycle hooks (#102)
23
+ - feat(hooks): SubagentStop hook feeds sub-agent output into SessionContext (#101)
24
+ - feat(monitor): add Monitor tool to PostToolUse compress-output dispatch (#100)
25
+ - PostToolUse updatedToolOutput for Read/Grep/Glob (Claude Code v2.1.119+)
26
+ - session-analysis improvements — az JSON, vite noise, prisma generate, hook health check (#90)
27
+ - feat(fs): auto-compress cat'd markdown via compress_md pipeline (#88)
28
+ - feat(economy): compress Agent/Task prompt at PreToolUse time (#87)
29
+ - feat(handlers): xcodebuild noise filter + log-file tail detection (#84)
30
+ - feat(bench): efficiency-proof benchmark suite — quantitative savings for US-001/003/004 (#74)
31
+ - token-compression power-up — sig-mode, memory-file warn, structured summaries, hypothesis benchmark (#70)
32
+ - feat(setup): adapter-driven setup/uninstall across all hosts (#58)
33
+ - feat(hosts): Codex CLI adapter (hooks + AGENTS.md soft-budget) (#55)
34
+ - feat(hosts): Gemini CLI adapter (BeforeTool/AfterTool hooks) (#52)
35
+ - feat(hosts): full-parity OpenCode adapter + plugin rewrite (#48)
36
+ - wrangler, playwright, next build handlers + bun/drizzle routing (#34)
37
+ - feat(opus47): adapt squeez for Opus 4.7 tokenizer and xhigh effort
38
+ - feat(setup): auto-detect lang from CLAUDE.md/locale + stderr update notification (#29)
39
+ - v0.3.0 — token economy, pt-BR caveman, aggressive defaults, full hook install
40
+ - structured session memory, cross-session search, error snippets, configurable tunables
41
+ - feat(setup): create config.ini on first install
42
+ - feat(i18n): locale-aware compress-md with pt-BR support (#25)
43
+ - fuzzy dedup, adaptive intensity, benign summarize, MCP server, temporal memory, protocol payload
44
+ - Windows setup via cargo/npm + squeez update fix
45
+ - feat(benchmark): add squeez benchmark command with 19-scenario test suite
46
+ - feat(ci): re-add promote-develop workflow with correct registration
47
+ - feat(init): inject persona into ~/.claude/CLAUDE.md on every session start
48
+ - feat(npm+crates): add npm package and publish jobs to release workflow
49
+ - feat(statusline): add statusline.sh to repo; install via install.sh; show all-time stats
50
+ - compress-md, caveman persona, squeez update, track-result hook
51
+ - feat(context): adaptive intensity always picks Ultra
52
+ - feat(context): aggressive token-engine — adaptive intensity, redundancy cache, summarize fallback
53
+ - add Windows support to install.sh and release.yml
54
+ - add home_dir() helper with USERPROFILE fallback for Windows
55
+ - cross-platform wrap — shell_command() helper, cfg(unix) signal gates, libc unix-only
56
+ - add GitHub Copilot CLI support
57
+ - add OpenCode plugin for automatic Bash compression
58
+ - add universal installer support for macOS and Linux
59
+ - expand benchmarks, edge-case tests, and README polish
60
+ - add SessionStart + PostToolUse hooks, update install.sh and README
61
+ - wrap.rs — artifact capture (files/errors/git/tests) + compact warning header
62
+ - squeez init — session start, prior memory banner, session finalization (TDD)
63
+ - squeez track — token accumulation + session event log (TDD)
64
+ - memory.rs — Summary, read_last_n, write_summary, prune_old (TDD)
65
+ - session.rs — CurrentSession, append_event, date math (TDD)
66
+ - json_util helpers + compact_threshold_tokens, memory_retention_days config
67
+ - benchmark system — all fixtures passing
68
+ - build.sh compiles + installs squeez, registers hook
69
+ - PreToolUse hook script
70
+ - fs and runtime handlers — all handler tests passing
71
+ - cloud, database, network handlers (TDD)
72
+ - typescript and build handlers (TDD)
73
+ - package_mgr and test_runner handlers (TDD)
74
+ - git and docker handlers (TDD)
75
+ - wrap subcommand — sh -c, 120s timeout, signal forwarding, bypass check
76
+ - Handler trait with cmd+config, generic handler, command router, filter_stdin
77
+ - truncation strategy (TDD) — all strategy tests passing
78
+ - grouping strategy (TDD)
79
+ - dedup strategy (TDD)
80
+ - smart_filter strategy with node_modules frame removal (TDD)
81
+ - implement config.ini parser (TDD)
82
+
83
+ ### Changed
84
+ - chore(release): bump version to 1.20.0 [squeez-release-bot]
85
+ - docs(readme): add "How squeez compares" table vs rtk / KRLabs squeez / sqz / LLMLingua-2 / TOON (#138)
86
+ - test(cache): lock in byte-stability of MCP and protocol payloads (#136)
87
+ - docs: update changelog and benchmarks for v1.19.4
88
+ - chore(release): bump version to 1.19.4 [squeez-release-bot]
89
+ - docs: update changelog and benchmarks for v1.19.3
90
+ - chore(release): bump version to 1.19.3 [squeez-release-bot]
91
+ - docs: update changelog and benchmarks for v1.19.2
92
+ - chore(release): bump version to 1.19.2 [squeez-release-bot]
93
+ - docs: update changelog and benchmarks for v1.19.1
94
+ - chore(release): bump version to 1.19.1 [squeez-release-bot]
95
+ - docs: update changelog and benchmarks for v1.19.0
96
+ - chore(release): bump version to 1.19.0 [squeez-release-bot]
97
+ - docs: update changelog and benchmarks for v1.18.1
98
+ - chore(release): bump version to 1.18.1 [squeez-release-bot]
99
+ - docs: update changelog and benchmarks for v1.18.0
100
+ - chore(release): bump version to 1.18.0 [squeez-release-bot]
101
+ - docs: document DCO Signed-off-by requirement in CLAUDE.md (#111)
102
+ - docs: update changelog and benchmarks for v1.17.0
103
+ - chore(release): bump version to 1.17.0 [squeez-release-bot]
104
+ - docs: update changelog and benchmarks for v1.16.0
105
+ - chore(release): bump version to 1.16.0 [squeez-release-bot]
106
+ - docs: update changelog and benchmarks for v1.15.1
107
+ - chore(release): bump version to 1.15.1 [squeez-release-bot]
108
+ - docs: update README and CLAUDE.md for new hooks and PostToolUse rewrite (#108)
109
+ - refactor(bench): unify benches/ into bench/ — single benchmark directory (#106)
110
+ - test: add missing coverage for compress-output, filter dispatch, SubagentStop, hook registration (#103)
111
+ - docs: update changelog and benchmarks for v1.15.0
112
+ - chore(release): bump version to 1.15.0 [squeez-release-bot]
113
+ - docs: update changelog and benchmarks for v1.13.0
114
+ - chore(release): bump version to 1.14.0 [squeez-release-bot]
115
+ - chore(release): bump version to 1.13.0 [squeez-release-bot]
116
+ - docs: update changelog and benchmarks for v1.12.0
117
+ - chore(release): bump version to 1.12.0 [squeez-release-bot]
118
+ - docs(codex): update adapter comments and README for 0.123.0 hook surface
119
+ - docs: update changelog and benchmarks for v1.11.2
120
+ - chore(release): bump version to 1.11.2 [squeez-release-bot]
121
+ - docs: update changelog and benchmarks for v1.11.1
122
+ - chore(release): bump version to 1.11.1 [squeez-release-bot]
123
+ - docs: update changelog and benchmarks for v1.11.0
124
+ - chore(release): bump version to 1.11.0 [squeez-release-bot]
125
+ - docs: update changelog and benchmarks for v1.10.0
126
+ - docs: update changelog and benchmarks for v1.9.0
127
+ - chore(release): bump version to 1.10.0 [squeez-release-bot]
128
+ - docs(readme): document squeez's compression scope and architectural limits (#85)
129
+ - chore(release): bump version to 1.9.0 [squeez-release-bot]
130
+ - chore(release): bump version to 1.8.0 [squeez-release-bot]
131
+ - docs: update changelog and benchmarks for v1.7.7
132
+ - chore(release): bump version to 1.7.7 [squeez-release-bot]
133
+ - docs: update changelog and benchmarks for v1.7.6
134
+ - chore(release): bump version to 1.7.6 [squeez-release-bot]
135
+ - docs: update changelog and benchmarks for v1.7.5
136
+ - chore(release): bump version to 1.7.5 [squeez-release-bot]
137
+ - docs: update changelog and benchmarks for v1.7.4
138
+ - chore(release): bump version to 1.7.4 [squeez-release-bot]
139
+ - perf: O(log n) refactor — tail read, offset index, single-pass parser
140
+ - docs: update changelog and benchmarks for v1.7.3
141
+ - chore(release): bump version to 1.7.3 [squeez-release-bot]
142
+ - chore(release): bump version to 1.7.2 [squeez-release-bot]
143
+ - restore: revert accidental deletion of auto-release.yml workflow
144
+ - docs: update changelog and benchmarks for v1.7.1
145
+ - chore(release): bump version to 1.7.1 [squeez-release-bot]
146
+ - chore: relicense to Apache 2.0 + add DCO policy + banner (#76)
147
+ - docs: update changelog and benchmarks for v1.7.0
148
+ - chore(release): bump version to 1.7.0 [squeez-release-bot]
149
+ - docs: update changelog and benchmarks for v1.6.1
150
+ - chore(release): bump version to 1.6.1 [squeez-release-bot]
151
+ - docs: update changelog and benchmarks for v1.6.0
152
+ - chore(release): bump version to 1.6.0 [squeez-release-bot]
153
+ - docs: update changelog and benchmarks for v1.5.2
154
+ - chore(release): bump version to 1.5.2 [squeez-release-bot]
155
+ - chore(release): bump version to 1.5.1 [squeez-release-bot]
156
+ - docs: five-host matrix + squeez setup/uninstall flow (#63)
157
+ - refactor(install): delegate host registration to 'squeez setup' (#60)
158
+ - chore(release): bump version to 1.5.0 [squeez-release-bot]
159
+ - chore(release): bump version to 1.4.0 [squeez-release-bot]
160
+ - chore(release): bump version to 1.3.0 [squeez-release-bot]
161
+ - chore(release): bump version to 1.2.0 [squeez-release-bot]
162
+ - chore(release): bump version to 1.1.0 [squeez-release-bot]
163
+ - chore(release): bump version to 1.0.0 [skip release]
164
+ - refactor(hosts): extract HostAdapter trait + migrate Claude Code and Copilot (#42)
165
+ - ci: conventional-commit-driven auto-release (#40)
166
+ - chore(gov): issue-form templates + refined PR template (#39)
167
+ - docs: update changelog and benchmarks for v0.4.1 [skip release] (#33)
168
+ - chore(release): bump version to 0.4.1
169
+ - chore(release): bump version to 0.4.0
170
+ - docs: update changelog and benchmarks for v0.3.2 [skip release] (#30)
171
+ - chore: bump version to 0.3.2
172
+ - docs: add shields.io badge for changelog link
173
+ - chore: bump version to 0.3.1
174
+ - chore: bump version to 0.2.3
175
+ - docs: update README with 11 MCP tools, structured memory, and advanced tunables
176
+ - chore: bump version to 0.2.2
177
+ - docs: rewrite README with full install instructions (curl/npm/cargo) and all commands
178
+ - chore: refresh bench/report.md from latest run [skip release]
179
+ - chore(ci): remove promote-develop workflow (re-adding to fix broken registration)
180
+ - chore: bump version to 0.2.1 + auto-release on merge to main [skip release]
181
+ - chore: bump version to 0.2.0; add Cargo.toml metadata
182
+ - ci: PR template, linked-issue enforcement, no-claude-trailer check
183
+ - docs: update README with PR1+PR2 features, fresh benchmarks, changelog
184
+ - ci: auto-delete branches after PR merge
185
+ - docs: update Windows installation instructions and prerequisites in README
186
+ - docs: add Windows support and Rust install instructions to README
187
+ - refactor: use session::home_dir() in config and init (Windows compat)
188
+ - ci: trigger promote workflow (test)
189
+ - ci(workflow): avoid failing promote job when PR creation is not permitted; add PR_CREATION_TOKEN guidance
190
+ - docs(readme): add changelog, contribution workflow, and benchmark notes
191
+ - ci(workflow): create/update PR from develop to main on push
192
+ - chore: add .worktrees/ to gitignore
193
+ - chore: add docs/ to gitignore (local design specs)
194
+ - docs: update README for GitHub Copilot CLI support
195
+ - security: fix remaining LOW findings in wrap.rs
196
+ - security: fix 2 follow-up findings from second audit
197
+ - security: fix all 8 findings from security audit
198
+ - ci: build and install binary before running benchmarks
199
+ - chore: add GitHub sponsor button
200
+ - chore: ignore .omc/ directory, remove from tracking
201
+ - chore: update benchmark report (7/7 passing)
202
+ - docs: update README — real benchmarks, Phase 2 config, how it works
203
+ - style: cargo fmt on session.rs and test_session.rs
204
+ - chore: open source files — README, LICENSE, CI/release workflows, install.sh
205
+ - chore: scaffold squeez Rust project
206
+
207
+ ### Fixed
208
+ - fix(claude-code): stop writing statusline.sh + remove orphans on install (#126)
209
+ - fix(claude-code): stop registering squeez statusLine + delegate install to adapter (#124)
210
+ - fix(compress-output): close PostToolUse compression gaps for Read/Edit/Write (#121)
211
+ - fix(claude-code): write hooks under settings.hooks.<event>, not at top level (#119)
212
+ - fix(opencode): shell-quote bash command before prepending `squeez wrap` (#115)
213
+ - fix(statusline): show compression % and fix Python heredoc expansion bug
214
+ - plan-mode passthrough + release description body (#95)
215
+ - fix(session-start): health check missed top-level event keys (#92)
216
+ - fix(hosts): expand PreToolUse matcher to cover Read, Grep, Glob, Agent, Task (#86)
217
+ - fix(json_util,statusline): whitespace-tolerant JSON parser + UTF-8 statusline on Windows (#81)
218
+ - fix(hosts): preserve user settings.json when existing JSON fails to parse (#83)
219
+ - prevent OOM from unbounded file reads + data integrity fixes
220
+ - fix(ci): use native ubuntu-24.04-arm runner for aarch64 build
221
+ - eliminate memory leaks causing 16 GB RAM on MCP server startup (#79)
222
+ - fix(hooks): add hookEventName to PreToolUse hookSpecificOutput (#78)
223
+ - fix(opencode): align plugin with PluginModule SDK shape (default export + server map) (#72)
224
+ - fix(ci): push release docs directly to main (loop-safe) (#68)
225
+ - back Copilot BUDGET_HARD with Read/Grep hook + update upstream refs (#65)
226
+ - fix(ci): startsWith guard for auto-release recursion (#46)
227
+ - fix(ci): tighten auto-release bump detection + fix tag push (#44)
228
+ - fix(ci): add --allow-dirty to cargo publish for Cargo.lock changes
229
+ - fix(ci): skip publish gracefully when version already exists on crates.io/npm
230
+ - fix(ci): run update-docs even if publish jobs fail (already published)
231
+ - fix(ci): continue-on-error for publish jobs so update-docs always runs
232
+ - fix(ci): add pull-requests write permission to update-docs job
233
+ - fix(update): cargo-managed self-update + Windows deferred install + session update check (#27)
234
+ - fix(ci): update-docs creates PR instead of pushing directly to protected main
235
+ - fix(npm): copy README.md into npm package before publish; add readme field
236
+ - fix(ci): add toolchain: stable to all dtolnay/rust-toolchain steps
237
+ - fix(ci): handle no previous tags in generate-changelog.sh (pipefail + grep -v)
238
+ - fix(ci): dispatch release.yml from auto-release to bypass GITHUB_TOKEN chain limit [skip release]
239
+ - fix(ci): fix flaky test tmp dir collision + simplify auto-release
240
+ - fix(bench): exclude synthetic fixtures from filter-mode bench/run.sh
241
+ - fix(ci): remove secrets in step if-conditions — check token inside script instead
242
+ - fix(ci): rename promote-develop → promote-to-main to fix broken workflow registration
243
+ - fix(ci): bump github-script to v7 in promote-develop to force workflow re-registration
244
+ - fix(compress_md): use byte slice comparison to avoid UTF-8 char boundary panic
245
+ - fix(statusline): remove Ctx% — show only squeez compression metrics
246
+ - fix(statusline): green ✓, proper capitalization, real-time context %, all metrics
247
+ - resolve gap analysis — new handlers, wider redundancy window, token budget
248
+ - install.sh — clarify PostToolUse no-matcher intent, guard version echo
249
+ - wrap.rs — safe git hex check, O(n) dedup, full cmd in event log
250
+ - use ends_with for files_committed check in init finalize
251
+ - json_util — guard extract_u64 empty digit, add json_util test coverage
252
+ - add pre-flight binary check to bench/run.sh
253
+ - atomic settings.json write + uninstall safety guards
254
+ - harden pretooluse hook (shlex.quote, error handling, single path source)
255
+ - wrap — process_group(0) for correct signal forwarding, tighten is_streaming
256
+
257
+ ## [1.19.4] - 2026-05-18
258
+
259
+ ### Added
260
+ - feat(economy): auto-curation nudges + cross-session handler stats (#118)
261
+ - feat(hosts): add Pi adapter (#116)
262
+ - feat(compress): plug Agent/Task output, HTML bash, and PreCompact telemetry gaps
263
+ - feat(bench): add pytest, jest, xcode_build scenarios — 23 → 26 scenarios
264
+ - feat(hooks): PreCompact + PostCompact lifecycle hooks (#102)
265
+ - feat(hooks): SubagentStop hook feeds sub-agent output into SessionContext (#101)
266
+ - feat(monitor): add Monitor tool to PostToolUse compress-output dispatch (#100)
267
+ - PostToolUse updatedToolOutput for Read/Grep/Glob (Claude Code v2.1.119+)
268
+ - session-analysis improvements — az JSON, vite noise, prisma generate, hook health check (#90)
269
+ - feat(fs): auto-compress cat'd markdown via compress_md pipeline (#88)
270
+ - feat(economy): compress Agent/Task prompt at PreToolUse time (#87)
271
+ - feat(handlers): xcodebuild noise filter + log-file tail detection (#84)
272
+ - feat(bench): efficiency-proof benchmark suite — quantitative savings for US-001/003/004 (#74)
273
+ - token-compression power-up — sig-mode, memory-file warn, structured summaries, hypothesis benchmark (#70)
274
+ - feat(setup): adapter-driven setup/uninstall across all hosts (#58)
275
+ - feat(hosts): Codex CLI adapter (hooks + AGENTS.md soft-budget) (#55)
276
+ - feat(hosts): Gemini CLI adapter (BeforeTool/AfterTool hooks) (#52)
277
+ - feat(hosts): full-parity OpenCode adapter + plugin rewrite (#48)
278
+ - wrangler, playwright, next build handlers + bun/drizzle routing (#34)
279
+ - feat(opus47): adapt squeez for Opus 4.7 tokenizer and xhigh effort
280
+ - feat(setup): auto-detect lang from CLAUDE.md/locale + stderr update notification (#29)
281
+ - v0.3.0 — token economy, pt-BR caveman, aggressive defaults, full hook install
282
+ - structured session memory, cross-session search, error snippets, configurable tunables
283
+ - feat(setup): create config.ini on first install
284
+ - feat(i18n): locale-aware compress-md with pt-BR support (#25)
285
+ - fuzzy dedup, adaptive intensity, benign summarize, MCP server, temporal memory, protocol payload
286
+ - Windows setup via cargo/npm + squeez update fix
287
+ - feat(benchmark): add squeez benchmark command with 19-scenario test suite
288
+ - feat(ci): re-add promote-develop workflow with correct registration
289
+ - feat(init): inject persona into ~/.claude/CLAUDE.md on every session start
290
+ - feat(npm+crates): add npm package and publish jobs to release workflow
291
+ - feat(statusline): add statusline.sh to repo; install via install.sh; show all-time stats
292
+ - compress-md, caveman persona, squeez update, track-result hook
293
+ - feat(context): adaptive intensity always picks Ultra
294
+ - feat(context): aggressive token-engine — adaptive intensity, redundancy cache, summarize fallback
295
+ - add Windows support to install.sh and release.yml
296
+ - add home_dir() helper with USERPROFILE fallback for Windows
297
+ - cross-platform wrap — shell_command() helper, cfg(unix) signal gates, libc unix-only
298
+ - add GitHub Copilot CLI support
299
+ - add OpenCode plugin for automatic Bash compression
300
+ - add universal installer support for macOS and Linux
301
+ - expand benchmarks, edge-case tests, and README polish
302
+ - add SessionStart + PostToolUse hooks, update install.sh and README
303
+ - wrap.rs — artifact capture (files/errors/git/tests) + compact warning header
304
+ - squeez init — session start, prior memory banner, session finalization (TDD)
305
+ - squeez track — token accumulation + session event log (TDD)
306
+ - memory.rs — Summary, read_last_n, write_summary, prune_old (TDD)
307
+ - session.rs — CurrentSession, append_event, date math (TDD)
308
+ - json_util helpers + compact_threshold_tokens, memory_retention_days config
309
+ - benchmark system — all fixtures passing
310
+ - build.sh compiles + installs squeez, registers hook
311
+ - PreToolUse hook script
312
+ - fs and runtime handlers — all handler tests passing
313
+ - cloud, database, network handlers (TDD)
314
+ - typescript and build handlers (TDD)
315
+ - package_mgr and test_runner handlers (TDD)
316
+ - git and docker handlers (TDD)
317
+ - wrap subcommand — sh -c, 120s timeout, signal forwarding, bypass check
318
+ - Handler trait with cmd+config, generic handler, command router, filter_stdin
319
+ - truncation strategy (TDD) — all strategy tests passing
320
+ - grouping strategy (TDD)
321
+ - dedup strategy (TDD)
322
+ - smart_filter strategy with node_modules frame removal (TDD)
323
+ - implement config.ini parser (TDD)
324
+
325
+ ### Changed
326
+ - chore(release): bump version to 1.19.4 [squeez-release-bot]
327
+ - docs: update changelog and benchmarks for v1.19.3
328
+ - chore(release): bump version to 1.19.3 [squeez-release-bot]
329
+ - docs: update changelog and benchmarks for v1.19.2
330
+ - chore(release): bump version to 1.19.2 [squeez-release-bot]
331
+ - docs: update changelog and benchmarks for v1.19.1
332
+ - chore(release): bump version to 1.19.1 [squeez-release-bot]
333
+ - docs: update changelog and benchmarks for v1.19.0
334
+ - chore(release): bump version to 1.19.0 [squeez-release-bot]
335
+ - docs: update changelog and benchmarks for v1.18.1
336
+ - chore(release): bump version to 1.18.1 [squeez-release-bot]
337
+ - docs: update changelog and benchmarks for v1.18.0
338
+ - chore(release): bump version to 1.18.0 [squeez-release-bot]
339
+ - docs: document DCO Signed-off-by requirement in CLAUDE.md (#111)
340
+ - docs: update changelog and benchmarks for v1.17.0
341
+ - chore(release): bump version to 1.17.0 [squeez-release-bot]
342
+ - docs: update changelog and benchmarks for v1.16.0
343
+ - chore(release): bump version to 1.16.0 [squeez-release-bot]
344
+ - docs: update changelog and benchmarks for v1.15.1
345
+ - chore(release): bump version to 1.15.1 [squeez-release-bot]
346
+ - docs: update README and CLAUDE.md for new hooks and PostToolUse rewrite (#108)
347
+ - refactor(bench): unify benches/ into bench/ — single benchmark directory (#106)
348
+ - test: add missing coverage for compress-output, filter dispatch, SubagentStop, hook registration (#103)
349
+ - docs: update changelog and benchmarks for v1.15.0
350
+ - chore(release): bump version to 1.15.0 [squeez-release-bot]
351
+ - docs: update changelog and benchmarks for v1.13.0
352
+ - chore(release): bump version to 1.14.0 [squeez-release-bot]
353
+ - chore(release): bump version to 1.13.0 [squeez-release-bot]
354
+ - docs: update changelog and benchmarks for v1.12.0
355
+ - chore(release): bump version to 1.12.0 [squeez-release-bot]
356
+ - docs(codex): update adapter comments and README for 0.123.0 hook surface
357
+ - docs: update changelog and benchmarks for v1.11.2
358
+ - chore(release): bump version to 1.11.2 [squeez-release-bot]
359
+ - docs: update changelog and benchmarks for v1.11.1
360
+ - chore(release): bump version to 1.11.1 [squeez-release-bot]
361
+ - docs: update changelog and benchmarks for v1.11.0
362
+ - chore(release): bump version to 1.11.0 [squeez-release-bot]
363
+ - docs: update changelog and benchmarks for v1.10.0
364
+ - docs: update changelog and benchmarks for v1.9.0
365
+ - chore(release): bump version to 1.10.0 [squeez-release-bot]
366
+ - docs(readme): document squeez's compression scope and architectural limits (#85)
367
+ - chore(release): bump version to 1.9.0 [squeez-release-bot]
368
+ - chore(release): bump version to 1.8.0 [squeez-release-bot]
369
+ - docs: update changelog and benchmarks for v1.7.7
370
+ - chore(release): bump version to 1.7.7 [squeez-release-bot]
371
+ - docs: update changelog and benchmarks for v1.7.6
372
+ - chore(release): bump version to 1.7.6 [squeez-release-bot]
373
+ - docs: update changelog and benchmarks for v1.7.5
374
+ - chore(release): bump version to 1.7.5 [squeez-release-bot]
375
+ - docs: update changelog and benchmarks for v1.7.4
376
+ - chore(release): bump version to 1.7.4 [squeez-release-bot]
377
+ - perf: O(log n) refactor — tail read, offset index, single-pass parser
378
+ - docs: update changelog and benchmarks for v1.7.3
379
+ - chore(release): bump version to 1.7.3 [squeez-release-bot]
380
+ - chore(release): bump version to 1.7.2 [squeez-release-bot]
381
+ - restore: revert accidental deletion of auto-release.yml workflow
382
+ - docs: update changelog and benchmarks for v1.7.1
383
+ - chore(release): bump version to 1.7.1 [squeez-release-bot]
384
+ - chore: relicense to Apache 2.0 + add DCO policy + banner (#76)
385
+ - docs: update changelog and benchmarks for v1.7.0
386
+ - chore(release): bump version to 1.7.0 [squeez-release-bot]
387
+ - docs: update changelog and benchmarks for v1.6.1
388
+ - chore(release): bump version to 1.6.1 [squeez-release-bot]
389
+ - docs: update changelog and benchmarks for v1.6.0
390
+ - chore(release): bump version to 1.6.0 [squeez-release-bot]
391
+ - docs: update changelog and benchmarks for v1.5.2
392
+ - chore(release): bump version to 1.5.2 [squeez-release-bot]
393
+ - chore(release): bump version to 1.5.1 [squeez-release-bot]
394
+ - docs: five-host matrix + squeez setup/uninstall flow (#63)
395
+ - refactor(install): delegate host registration to 'squeez setup' (#60)
396
+ - chore(release): bump version to 1.5.0 [squeez-release-bot]
397
+ - chore(release): bump version to 1.4.0 [squeez-release-bot]
398
+ - chore(release): bump version to 1.3.0 [squeez-release-bot]
399
+ - chore(release): bump version to 1.2.0 [squeez-release-bot]
400
+ - chore(release): bump version to 1.1.0 [squeez-release-bot]
401
+ - chore(release): bump version to 1.0.0 [skip release]
402
+ - refactor(hosts): extract HostAdapter trait + migrate Claude Code and Copilot (#42)
403
+ - ci: conventional-commit-driven auto-release (#40)
404
+ - chore(gov): issue-form templates + refined PR template (#39)
405
+ - docs: update changelog and benchmarks for v0.4.1 [skip release] (#33)
406
+ - chore(release): bump version to 0.4.1
407
+ - chore(release): bump version to 0.4.0
408
+ - docs: update changelog and benchmarks for v0.3.2 [skip release] (#30)
409
+ - chore: bump version to 0.3.2
410
+ - docs: add shields.io badge for changelog link
411
+ - chore: bump version to 0.3.1
412
+ - chore: bump version to 0.2.3
413
+ - docs: update README with 11 MCP tools, structured memory, and advanced tunables
414
+ - chore: bump version to 0.2.2
415
+ - docs: rewrite README with full install instructions (curl/npm/cargo) and all commands
416
+ - chore: refresh bench/report.md from latest run [skip release]
417
+ - chore(ci): remove promote-develop workflow (re-adding to fix broken registration)
418
+ - chore: bump version to 0.2.1 + auto-release on merge to main [skip release]
419
+ - chore: bump version to 0.2.0; add Cargo.toml metadata
420
+ - ci: PR template, linked-issue enforcement, no-claude-trailer check
421
+ - docs: update README with PR1+PR2 features, fresh benchmarks, changelog
422
+ - ci: auto-delete branches after PR merge
423
+ - docs: update Windows installation instructions and prerequisites in README
424
+ - docs: add Windows support and Rust install instructions to README
425
+ - refactor: use session::home_dir() in config and init (Windows compat)
426
+ - ci: trigger promote workflow (test)
427
+ - ci(workflow): avoid failing promote job when PR creation is not permitted; add PR_CREATION_TOKEN guidance
428
+ - docs(readme): add changelog, contribution workflow, and benchmark notes
429
+ - ci(workflow): create/update PR from develop to main on push
430
+ - chore: add .worktrees/ to gitignore
431
+ - chore: add docs/ to gitignore (local design specs)
432
+ - docs: update README for GitHub Copilot CLI support
433
+ - security: fix remaining LOW findings in wrap.rs
434
+ - security: fix 2 follow-up findings from second audit
435
+ - security: fix all 8 findings from security audit
436
+ - ci: build and install binary before running benchmarks
437
+ - chore: add GitHub sponsor button
438
+ - chore: ignore .omc/ directory, remove from tracking
439
+ - chore: update benchmark report (7/7 passing)
440
+ - docs: update README — real benchmarks, Phase 2 config, how it works
441
+ - style: cargo fmt on session.rs and test_session.rs
442
+ - chore: open source files — README, LICENSE, CI/release workflows, install.sh
443
+ - chore: scaffold squeez Rust project
444
+
445
+ ### Fixed
446
+ - fix(claude-code): stop writing statusline.sh + remove orphans on install (#126)
447
+ - fix(claude-code): stop registering squeez statusLine + delegate install to adapter (#124)
448
+ - fix(compress-output): close PostToolUse compression gaps for Read/Edit/Write (#121)
449
+ - fix(claude-code): write hooks under settings.hooks.<event>, not at top level (#119)
450
+ - fix(opencode): shell-quote bash command before prepending `squeez wrap` (#115)
451
+ - fix(statusline): show compression % and fix Python heredoc expansion bug
452
+ - plan-mode passthrough + release description body (#95)
453
+ - fix(session-start): health check missed top-level event keys (#92)
454
+ - fix(hosts): expand PreToolUse matcher to cover Read, Grep, Glob, Agent, Task (#86)
455
+ - fix(json_util,statusline): whitespace-tolerant JSON parser + UTF-8 statusline on Windows (#81)
456
+ - fix(hosts): preserve user settings.json when existing JSON fails to parse (#83)
457
+ - prevent OOM from unbounded file reads + data integrity fixes
458
+ - fix(ci): use native ubuntu-24.04-arm runner for aarch64 build
459
+ - eliminate memory leaks causing 16 GB RAM on MCP server startup (#79)
460
+ - fix(hooks): add hookEventName to PreToolUse hookSpecificOutput (#78)
461
+ - fix(opencode): align plugin with PluginModule SDK shape (default export + server map) (#72)
462
+ - fix(ci): push release docs directly to main (loop-safe) (#68)
463
+ - back Copilot BUDGET_HARD with Read/Grep hook + update upstream refs (#65)
464
+ - fix(ci): startsWith guard for auto-release recursion (#46)
465
+ - fix(ci): tighten auto-release bump detection + fix tag push (#44)
466
+ - fix(ci): add --allow-dirty to cargo publish for Cargo.lock changes
467
+ - fix(ci): skip publish gracefully when version already exists on crates.io/npm
468
+ - fix(ci): run update-docs even if publish jobs fail (already published)
469
+ - fix(ci): continue-on-error for publish jobs so update-docs always runs
470
+ - fix(ci): add pull-requests write permission to update-docs job
471
+ - fix(update): cargo-managed self-update + Windows deferred install + session update check (#27)
472
+ - fix(ci): update-docs creates PR instead of pushing directly to protected main
473
+ - fix(npm): copy README.md into npm package before publish; add readme field
474
+ - fix(ci): add toolchain: stable to all dtolnay/rust-toolchain steps
475
+ - fix(ci): handle no previous tags in generate-changelog.sh (pipefail + grep -v)
476
+ - fix(ci): dispatch release.yml from auto-release to bypass GITHUB_TOKEN chain limit [skip release]
477
+ - fix(ci): fix flaky test tmp dir collision + simplify auto-release
478
+ - fix(bench): exclude synthetic fixtures from filter-mode bench/run.sh
479
+ - fix(ci): remove secrets in step if-conditions — check token inside script instead
480
+ - fix(ci): rename promote-develop → promote-to-main to fix broken workflow registration
481
+ - fix(ci): bump github-script to v7 in promote-develop to force workflow re-registration
482
+ - fix(compress_md): use byte slice comparison to avoid UTF-8 char boundary panic
483
+ - fix(statusline): remove Ctx% — show only squeez compression metrics
484
+ - fix(statusline): green ✓, proper capitalization, real-time context %, all metrics
485
+ - resolve gap analysis — new handlers, wider redundancy window, token budget
486
+ - install.sh — clarify PostToolUse no-matcher intent, guard version echo
487
+ - wrap.rs — safe git hex check, O(n) dedup, full cmd in event log
488
+ - use ends_with for files_committed check in init finalize
489
+ - json_util — guard extract_u64 empty digit, add json_util test coverage
490
+ - add pre-flight binary check to bench/run.sh
491
+ - atomic settings.json write + uninstall safety guards
492
+ - harden pretooluse hook (shlex.quote, error handling, single path source)
493
+ - wrap — process_group(0) for correct signal forwarding, tighten is_streaming
494
+
12
495
  ## [1.19.3] - 2026-05-18
13
496
 
14
497
  ### Added
@@ -3104,7 +3587,7 @@ conventional commit messages on `main`.
3104
3587
  ## [1.5.1] and earlier
3105
3588
  See the [git tag history](https://github.com/claudioemmanuel/squeez/tags) for pre-1.5.2 details. release-please takes over changelog generation from 1.7.1 onwards.
3106
3589
 
3107
- [Unreleased]: https://github.com/claudioemmanuel/squeez/compare/v1.19.3...HEAD
3590
+ [Unreleased]: https://github.com/claudioemmanuel/squeez/compare/v1.20.0...HEAD
3108
3591
  [1.7.0]: https://github.com/claudioemmanuel/squeez/compare/v1.6.1...v1.7.0
3109
3592
  [1.6.1]: https://github.com/claudioemmanuel/squeez/compare/v1.6.0...v1.6.1
3110
3593
  [1.6.0]: https://github.com/claudioemmanuel/squeez/compare/v1.5.2...v1.6.0
@@ -3131,3 +3614,5 @@ See the [git tag history](https://github.com/claudioemmanuel/squeez/tags) for pr
3131
3614
  [1.19.1]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.19.1
3132
3615
  [1.19.2]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.19.2
3133
3616
  [1.19.3]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.19.3
3617
+ [1.19.4]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.19.4
3618
+ [1.20.0]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.20.0
package/README.md CHANGED
@@ -111,6 +111,23 @@ squeez update --insecure # skip checksum (not recommended)
111
111
 
112
112
  ---
113
113
 
114
+ ## How squeez compares
115
+
116
+ There are now several token-reduction tools targeting AI coding CLIs. They make different bets — the right one depends on what you care about: zero deps, lossless filtering, structural reformatting, or task-conditioned ML.
117
+
118
+ | Tool | Approach | Hosts | Deps | Key wins | Trade-off |
119
+ |------|----------|-------|------|----------|-----------|
120
+ | **squeez** (this project) | Hook + 4-stage filter pipeline + context engine (MinHash dedup, summarize, adaptive intensity) + MCP server | Claude Code, Copilot CLI, OpenCode, Gemini CLI, Codex CLI | **Zero runtime deps** (`libc` only on Unix) | Up to 95% on bash; cross-call dedup; signature-mode for source files; TOON re-encoder for JSON outputs; 14 MCP tools; enterprise (Bedrock/Vertex) USD-saved estimate | Heuristic, not ML — no per-task understanding |
121
+ | [rtk-ai/rtk](https://github.com/rtk-ai/rtk) | Hook proxy that **rewrites bash commands** (`git status` → `rtk git status`), then compresses 100+ command outputs | Claude Code, Cursor | Zero deps (Rust) | 60-90% on 100+ commands; `rtk read -l aggressive` for signature mode | [rtk#582](https://github.com/rtk-ai/rtk/issues/582): aggressive rewriting can **increase** total cost by 18% because Claude emits +50% more output tokens to compensate for stripped context. squeez ships [a guard](https://github.com/jhonatanjunio/squeez/issues/1) against this regime. |
122
+ | [KRLabsOrg/squeez](https://github.com/KRLabsOrg/squeez) | **Task-conditioned ML** (Qwen 2B / ModernBERT 150M) — pipe tool output + task description, get back only relevant lines | Any (CLI tool) | Python, PyTorch / vLLM server | 92% compression, F1 0.80; task-aware (same log slices kept differently per query) | Requires running an LLM locally; not zero-dep. Same project name, different design. |
123
+ | [ojuschugh1/sqz](https://github.com/ojuschugh1/sqz) | CLI context compressor | Any | Python | Single-command compression | Lower coverage than the others. |
124
+ | [LLMLingua-2](https://github.com/microsoft/LLMLingua) (Microsoft) | Neural prompt compressor that removes 50-80% of a prompt while preserving meaning | API / library | Python, transformers | Strong on long static prompts | Latency + model dep; not a CLI hook. |
125
+ | [TOON](https://github.com/toon-format/toon) | Schema-aware JSON replacement (`users[100]{id,name,role}:`) — ~40% fewer tokens on arrays of uniform objects | Library, not a CLI | TypeScript SDK | Lossless on the right shape; squeez [embeds a TOON encoder](https://github.com/jhonatanjunio/squeez/pull/4) for `gh`/`kubectl`/`aws`/`gcloud`/`az` JSON outputs | Only helps on uniform JSON shapes. |
126
+
127
+ If you want a CLI hook that just works, never needs a Python runtime, and never silently inflates your output tokens, squeez is the safe default. If you can run an LLM next to your shell and want task-aware filtering, KRLabsOrg/squeez is worth a look as a complement. The two squeez projects share a name but are independent.
128
+
129
+ ---
130
+
114
131
  ## Scope & Limits
115
132
 
116
133
  squeez optimizes what it can reach — the surfaces exposed by each host's hook API. It cannot fix token leaks outside those surfaces.
@@ -162,34 +179,34 @@ Measured on macOS (Apple Silicon). Token count = `chars / 4` (matches Claude's ~
162
179
 
163
180
  | Scenario | Before | After | Reduction | Latency |
164
181
  |----------|--------|-------|-----------|---------|
165
- | `summarize_huge` | 82,257 tk | 420 tk | **-99%** | 56.0 ms |
166
- | `repetitive_output` | 4,692 tk | 37 tk | **-99%** | 227 µs |
167
- | `xcode_build` | 1,881 tk | 17 tk | **-99%** | 80 µs |
168
- | `high_context_adaptive` | 4,418 tk | 52 tk | **-99%** | 847 µs |
169
- | `agent_directory_output` | 3,348 tk | 167 tk | **-95%** | 366 µs |
170
- | `ps_aux` | 40,373 tk | 2,338 tk | **-94%** | 3.2 ms |
171
- | `git_log_200` | 2,692 tk | 275 tk | **-90%** | 228 µs |
182
+ | `summarize_huge` | 82,257 tk | 420 tk | **-99%** | 55.5 ms |
183
+ | `repetitive_output` | 4,692 tk | 37 tk | **-99%** | 195 µs |
184
+ | `xcode_build` | 1,881 tk | 17 tk | **-99%** | 46 µs |
185
+ | `high_context_adaptive` | 4,418 tk | 52 tk | **-99%** | 764 µs |
186
+ | `agent_directory_output` | 3,348 tk | 167 tk | **-95%** | 282 µs |
187
+ | `ps_aux` | 40,373 tk | 2,338 tk | **-94%** | 2.2 ms |
188
+ | `git_log_200` | 2,692 tk | 275 tk | **-90%** | 171 µs |
172
189
  | `tsc_errors` | 731 tk | 101 tk | **-86%** | 23 µs |
173
- | `cargo_build_noisy` | 2,106 tk | 439 tk | **-79%** | 266 µs |
174
- | `docker_logs` | 665 tk | 186 tk | **-72%** | 53 µs |
175
- | `curl_html_response` | 2,181 tk | 626 tk | **-71%** | 53 µs |
176
- | `find_deep` | 424 tk | 134 tk | **-68%** | 84 µs |
177
- | `git_status` | 50 tk | 16 tk | **-68%** | 16 µs |
178
- | `pytest_failures` | 3,402 tk | 1,175 tk | **-65%** | 338 µs |
179
- | `verbose_app_log` | 4,957 tk | 1,978 tk | **-60%** | 324 µs |
180
- | `npm_install` | 524 tk | 218 tk | **-58%** | 51 µs |
181
- | `crosscall_redundancy_3x` | 486 tk | 237 tk | **-51%** | 51.8 ms |
182
- | `ls_la` | 1,782 tk | 872 tk | **-51%** | 221 µs |
183
- | `env_dump` | 441 tk | 287 tk | **-35%** | 26 µs |
184
- | `git_copilot` | 640 tk | 421 tk | **-34%** | 126 µs |
185
- | `agent_heavy` | 2,306 tk | 1,551 tk | **-33%** | 345 µs |
186
- | `md_prose` | 187 tk | 138 tk | **-26%** | 799 µs |
187
- | `md_claude_md` | 316 tk | 247 tk | **-22%** | 1.2 ms |
188
- | `claude_md_overhead` | 717 tk | 635 tk | **-11%** | 24 µs |
189
- | `git_diff` | 502 tk | 497 tk | **-1%** | 47 µs |
190
- | `jest_failures` | 451 tk | 448 tk | **-1%** | 56 µs |
191
- | `state_first_simulation` | 182 tk | 181 tk | **-1%** | 6 µs |
192
- | `kubectl_pods` | 1,513 tk | 1,513 tk | **-0%** | 39 µs |
190
+ | `cargo_build_noisy` | 2,106 tk | 439 tk | **-79%** | 195 µs |
191
+ | `docker_logs` | 665 tk | 186 tk | **-72%** | 44 µs |
192
+ | `curl_html_response` | 2,181 tk | 626 tk | **-71%** | 39 µs |
193
+ | `find_deep` | 424 tk | 134 tk | **-68%** | 71 µs |
194
+ | `git_status` | 50 tk | 16 tk | **-68%** | 13 µs |
195
+ | `pytest_failures` | 3,402 tk | 1,175 tk | **-65%** | 243 µs |
196
+ | `verbose_app_log` | 4,957 tk | 1,978 tk | **-60%** | 234 µs |
197
+ | `npm_install` | 524 tk | 218 tk | **-58%** | 40 µs |
198
+ | `crosscall_redundancy_3x` | 486 tk | 237 tk | **-51%** | 51.6 ms |
199
+ | `ls_la` | 1,782 tk | 872 tk | **-51%** | 164 µs |
200
+ | `env_dump` | 441 tk | 287 tk | **-35%** | 21 µs |
201
+ | `git_copilot` | 640 tk | 421 tk | **-34%** | 83 µs |
202
+ | `agent_heavy` | 2,306 tk | 1,551 tk | **-33%** | 291 µs |
203
+ | `md_prose` | 187 tk | 138 tk | **-26%** | 707 µs |
204
+ | `md_claude_md` | 316 tk | 247 tk | **-22%** | 887 µs |
205
+ | `claude_md_overhead` | 717 tk | 635 tk | **-11%** | 22 µs |
206
+ | `git_diff` | 502 tk | 497 tk | **-1%** | 59 µs |
207
+ | `jest_failures` | 451 tk | 448 tk | **-1%** | 43 µs |
208
+ | `state_first_simulation` | 182 tk | 181 tk | **-1%** | 5 µs |
209
+ | `kubectl_pods` | 1,513 tk | 1,513 tk | **-0%** | 30 µs |
193
210
 
194
211
  ### Aggregate
195
212
 
@@ -200,7 +217,7 @@ Measured on macOS (Apple Silicon). Token count = `chars / 4` (matches Claude's ~
200
217
  | Markdown / context files | **-23.5%** |
201
218
  | Wrap / cross-call engine | **-99.2%** |
202
219
  | Quality (signal terms preserved) | **28 / 28 pass** |
203
- | Latency p50 (filter mode) | **4.2 ms** |
220
+ | Latency p50 (filter mode) | **4.1 ms** |
204
221
  | Latency p95 (incl. wrap/summarize) | **52 ms** |
205
222
 
206
223
  ### Estimated cost savings — Claude Sonnet 4.6 · $3.00 / MTok input
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "squeez",
3
- "version": "1.19.4",
3
+ "version": "1.21.0",
4
4
  "description": "Hook-based token compressor for Claude Code, Copilot CLI, and OpenCode. Compresses bash output up to 95%, collapses redundant calls, injects caveman persona.",
5
5
  "keywords": [
6
6
  "claude-code",