squeez 1.21.0 → 1.22.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.
Files changed (3) hide show
  1. package/CHANGELOG.md +759 -1
  2. package/README.md +26 -25
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -9,6 +9,761 @@ conventional commit messages on `main`.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [1.22.0] - 2026-06-10
13
+
14
+ ### Added
15
+ - feat(context): real-context tracking, image/skill dedup, quota nudges, transcript integration
16
+ - feat(economy): enterprise-aware mode — Bedrock/Vertex/OTEL detection + USD savings (#135)
17
+ - feat(benchmark): add information-preservation guard against output-token inflation (#133)
18
+ - feat(cloud): TOON re-encoder for JSON-array outputs (gh, kubectl, aws, gcloud, az) (#134)
19
+ - feat(sig-mode): preserve attribute / decorator above kept signatures (#137)
20
+ - feat(economy): auto-curation nudges + cross-session handler stats (#118)
21
+ - feat(hosts): add Pi adapter (#116)
22
+ - feat(compress): plug Agent/Task output, HTML bash, and PreCompact telemetry gaps
23
+ - feat(bench): add pytest, jest, xcode_build scenarios — 23 → 26 scenarios
24
+ - feat(hooks): PreCompact + PostCompact lifecycle hooks (#102)
25
+ - feat(hooks): SubagentStop hook feeds sub-agent output into SessionContext (#101)
26
+ - feat(monitor): add Monitor tool to PostToolUse compress-output dispatch (#100)
27
+ - PostToolUse updatedToolOutput for Read/Grep/Glob (Claude Code v2.1.119+)
28
+ - session-analysis improvements — az JSON, vite noise, prisma generate, hook health check (#90)
29
+ - feat(fs): auto-compress cat'd markdown via compress_md pipeline (#88)
30
+ - feat(economy): compress Agent/Task prompt at PreToolUse time (#87)
31
+ - feat(handlers): xcodebuild noise filter + log-file tail detection (#84)
32
+ - feat(bench): efficiency-proof benchmark suite — quantitative savings for US-001/003/004 (#74)
33
+ - token-compression power-up — sig-mode, memory-file warn, structured summaries, hypothesis benchmark (#70)
34
+ - feat(setup): adapter-driven setup/uninstall across all hosts (#58)
35
+ - feat(hosts): Codex CLI adapter (hooks + AGENTS.md soft-budget) (#55)
36
+ - feat(hosts): Gemini CLI adapter (BeforeTool/AfterTool hooks) (#52)
37
+ - feat(hosts): full-parity OpenCode adapter + plugin rewrite (#48)
38
+ - wrangler, playwright, next build handlers + bun/drizzle routing (#34)
39
+ - feat(opus47): adapt squeez for Opus 4.7 tokenizer and xhigh effort
40
+ - feat(setup): auto-detect lang from CLAUDE.md/locale + stderr update notification (#29)
41
+ - v0.3.0 — token economy, pt-BR caveman, aggressive defaults, full hook install
42
+ - structured session memory, cross-session search, error snippets, configurable tunables
43
+ - feat(setup): create config.ini on first install
44
+ - feat(i18n): locale-aware compress-md with pt-BR support (#25)
45
+ - fuzzy dedup, adaptive intensity, benign summarize, MCP server, temporal memory, protocol payload
46
+ - Windows setup via cargo/npm + squeez update fix
47
+ - feat(benchmark): add squeez benchmark command with 19-scenario test suite
48
+ - feat(ci): re-add promote-develop workflow with correct registration
49
+ - feat(init): inject persona into ~/.claude/CLAUDE.md on every session start
50
+ - feat(npm+crates): add npm package and publish jobs to release workflow
51
+ - feat(statusline): add statusline.sh to repo; install via install.sh; show all-time stats
52
+ - compress-md, caveman persona, squeez update, track-result hook
53
+ - feat(context): adaptive intensity always picks Ultra
54
+ - feat(context): aggressive token-engine — adaptive intensity, redundancy cache, summarize fallback
55
+ - add Windows support to install.sh and release.yml
56
+ - add home_dir() helper with USERPROFILE fallback for Windows
57
+ - cross-platform wrap — shell_command() helper, cfg(unix) signal gates, libc unix-only
58
+ - add GitHub Copilot CLI support
59
+ - add OpenCode plugin for automatic Bash compression
60
+ - add universal installer support for macOS and Linux
61
+ - expand benchmarks, edge-case tests, and README polish
62
+ - add SessionStart + PostToolUse hooks, update install.sh and README
63
+ - wrap.rs — artifact capture (files/errors/git/tests) + compact warning header
64
+ - squeez init — session start, prior memory banner, session finalization (TDD)
65
+ - squeez track — token accumulation + session event log (TDD)
66
+ - memory.rs — Summary, read_last_n, write_summary, prune_old (TDD)
67
+ - session.rs — CurrentSession, append_event, date math (TDD)
68
+ - json_util helpers + compact_threshold_tokens, memory_retention_days config
69
+ - benchmark system — all fixtures passing
70
+ - build.sh compiles + installs squeez, registers hook
71
+ - PreToolUse hook script
72
+ - fs and runtime handlers — all handler tests passing
73
+ - cloud, database, network handlers (TDD)
74
+ - typescript and build handlers (TDD)
75
+ - package_mgr and test_runner handlers (TDD)
76
+ - git and docker handlers (TDD)
77
+ - wrap subcommand — sh -c, 120s timeout, signal forwarding, bypass check
78
+ - Handler trait with cmd+config, generic handler, command router, filter_stdin
79
+ - truncation strategy (TDD) — all strategy tests passing
80
+ - grouping strategy (TDD)
81
+ - dedup strategy (TDD)
82
+ - smart_filter strategy with node_modules frame removal (TDD)
83
+ - implement config.ini parser (TDD)
84
+
85
+ ### Changed
86
+ - chore(release): bump version to 1.22.0 [squeez-release-bot]
87
+ - docs: update changelog and benchmarks for v1.21.1
88
+ - chore(release): bump version to 1.21.1 [squeez-release-bot]
89
+ - refactor(skills): session-long re-injection dedup; drop lexical skill compression (#142)
90
+ - docs: update changelog and benchmarks for v1.21.0
91
+ - chore(release): bump version to 1.21.0 [squeez-release-bot]
92
+ - docs: update changelog and benchmarks for v1.20.0
93
+ - chore(release): bump version to 1.20.0 [squeez-release-bot]
94
+ - docs(readme): add "How squeez compares" table vs rtk / KRLabs squeez / sqz / LLMLingua-2 / TOON (#138)
95
+ - test(cache): lock in byte-stability of MCP and protocol payloads (#136)
96
+ - docs: update changelog and benchmarks for v1.19.4
97
+ - chore(release): bump version to 1.19.4 [squeez-release-bot]
98
+ - docs: update changelog and benchmarks for v1.19.3
99
+ - chore(release): bump version to 1.19.3 [squeez-release-bot]
100
+ - docs: update changelog and benchmarks for v1.19.2
101
+ - chore(release): bump version to 1.19.2 [squeez-release-bot]
102
+ - docs: update changelog and benchmarks for v1.19.1
103
+ - chore(release): bump version to 1.19.1 [squeez-release-bot]
104
+ - docs: update changelog and benchmarks for v1.19.0
105
+ - chore(release): bump version to 1.19.0 [squeez-release-bot]
106
+ - docs: update changelog and benchmarks for v1.18.1
107
+ - chore(release): bump version to 1.18.1 [squeez-release-bot]
108
+ - docs: update changelog and benchmarks for v1.18.0
109
+ - chore(release): bump version to 1.18.0 [squeez-release-bot]
110
+ - docs: document DCO Signed-off-by requirement in CLAUDE.md (#111)
111
+ - docs: update changelog and benchmarks for v1.17.0
112
+ - chore(release): bump version to 1.17.0 [squeez-release-bot]
113
+ - docs: update changelog and benchmarks for v1.16.0
114
+ - chore(release): bump version to 1.16.0 [squeez-release-bot]
115
+ - docs: update changelog and benchmarks for v1.15.1
116
+ - chore(release): bump version to 1.15.1 [squeez-release-bot]
117
+ - docs: update README and CLAUDE.md for new hooks and PostToolUse rewrite (#108)
118
+ - refactor(bench): unify benches/ into bench/ — single benchmark directory (#106)
119
+ - test: add missing coverage for compress-output, filter dispatch, SubagentStop, hook registration (#103)
120
+ - docs: update changelog and benchmarks for v1.15.0
121
+ - chore(release): bump version to 1.15.0 [squeez-release-bot]
122
+ - docs: update changelog and benchmarks for v1.13.0
123
+ - chore(release): bump version to 1.14.0 [squeez-release-bot]
124
+ - chore(release): bump version to 1.13.0 [squeez-release-bot]
125
+ - docs: update changelog and benchmarks for v1.12.0
126
+ - chore(release): bump version to 1.12.0 [squeez-release-bot]
127
+ - docs(codex): update adapter comments and README for 0.123.0 hook surface
128
+ - docs: update changelog and benchmarks for v1.11.2
129
+ - chore(release): bump version to 1.11.2 [squeez-release-bot]
130
+ - docs: update changelog and benchmarks for v1.11.1
131
+ - chore(release): bump version to 1.11.1 [squeez-release-bot]
132
+ - docs: update changelog and benchmarks for v1.11.0
133
+ - chore(release): bump version to 1.11.0 [squeez-release-bot]
134
+ - docs: update changelog and benchmarks for v1.10.0
135
+ - docs: update changelog and benchmarks for v1.9.0
136
+ - chore(release): bump version to 1.10.0 [squeez-release-bot]
137
+ - docs(readme): document squeez's compression scope and architectural limits (#85)
138
+ - chore(release): bump version to 1.9.0 [squeez-release-bot]
139
+ - chore(release): bump version to 1.8.0 [squeez-release-bot]
140
+ - docs: update changelog and benchmarks for v1.7.7
141
+ - chore(release): bump version to 1.7.7 [squeez-release-bot]
142
+ - docs: update changelog and benchmarks for v1.7.6
143
+ - chore(release): bump version to 1.7.6 [squeez-release-bot]
144
+ - docs: update changelog and benchmarks for v1.7.5
145
+ - chore(release): bump version to 1.7.5 [squeez-release-bot]
146
+ - docs: update changelog and benchmarks for v1.7.4
147
+ - chore(release): bump version to 1.7.4 [squeez-release-bot]
148
+ - perf: O(log n) refactor — tail read, offset index, single-pass parser
149
+ - docs: update changelog and benchmarks for v1.7.3
150
+ - chore(release): bump version to 1.7.3 [squeez-release-bot]
151
+ - chore(release): bump version to 1.7.2 [squeez-release-bot]
152
+ - restore: revert accidental deletion of auto-release.yml workflow
153
+ - docs: update changelog and benchmarks for v1.7.1
154
+ - chore(release): bump version to 1.7.1 [squeez-release-bot]
155
+ - chore: relicense to Apache 2.0 + add DCO policy + banner (#76)
156
+ - docs: update changelog and benchmarks for v1.7.0
157
+ - chore(release): bump version to 1.7.0 [squeez-release-bot]
158
+ - docs: update changelog and benchmarks for v1.6.1
159
+ - chore(release): bump version to 1.6.1 [squeez-release-bot]
160
+ - docs: update changelog and benchmarks for v1.6.0
161
+ - chore(release): bump version to 1.6.0 [squeez-release-bot]
162
+ - docs: update changelog and benchmarks for v1.5.2
163
+ - chore(release): bump version to 1.5.2 [squeez-release-bot]
164
+ - chore(release): bump version to 1.5.1 [squeez-release-bot]
165
+ - docs: five-host matrix + squeez setup/uninstall flow (#63)
166
+ - refactor(install): delegate host registration to 'squeez setup' (#60)
167
+ - chore(release): bump version to 1.5.0 [squeez-release-bot]
168
+ - chore(release): bump version to 1.4.0 [squeez-release-bot]
169
+ - chore(release): bump version to 1.3.0 [squeez-release-bot]
170
+ - chore(release): bump version to 1.2.0 [squeez-release-bot]
171
+ - chore(release): bump version to 1.1.0 [squeez-release-bot]
172
+ - chore(release): bump version to 1.0.0 [skip release]
173
+ - refactor(hosts): extract HostAdapter trait + migrate Claude Code and Copilot (#42)
174
+ - ci: conventional-commit-driven auto-release (#40)
175
+ - chore(gov): issue-form templates + refined PR template (#39)
176
+ - docs: update changelog and benchmarks for v0.4.1 [skip release] (#33)
177
+ - chore(release): bump version to 0.4.1
178
+ - chore(release): bump version to 0.4.0
179
+ - docs: update changelog and benchmarks for v0.3.2 [skip release] (#30)
180
+ - chore: bump version to 0.3.2
181
+ - docs: add shields.io badge for changelog link
182
+ - chore: bump version to 0.3.1
183
+ - chore: bump version to 0.2.3
184
+ - docs: update README with 11 MCP tools, structured memory, and advanced tunables
185
+ - chore: bump version to 0.2.2
186
+ - docs: rewrite README with full install instructions (curl/npm/cargo) and all commands
187
+ - chore: refresh bench/report.md from latest run [skip release]
188
+ - chore(ci): remove promote-develop workflow (re-adding to fix broken registration)
189
+ - chore: bump version to 0.2.1 + auto-release on merge to main [skip release]
190
+ - chore: bump version to 0.2.0; add Cargo.toml metadata
191
+ - ci: PR template, linked-issue enforcement, no-claude-trailer check
192
+ - docs: update README with PR1+PR2 features, fresh benchmarks, changelog
193
+ - ci: auto-delete branches after PR merge
194
+ - docs: update Windows installation instructions and prerequisites in README
195
+ - docs: add Windows support and Rust install instructions to README
196
+ - refactor: use session::home_dir() in config and init (Windows compat)
197
+ - ci: trigger promote workflow (test)
198
+ - ci(workflow): avoid failing promote job when PR creation is not permitted; add PR_CREATION_TOKEN guidance
199
+ - docs(readme): add changelog, contribution workflow, and benchmark notes
200
+ - ci(workflow): create/update PR from develop to main on push
201
+ - chore: add .worktrees/ to gitignore
202
+ - chore: add docs/ to gitignore (local design specs)
203
+ - docs: update README for GitHub Copilot CLI support
204
+ - security: fix remaining LOW findings in wrap.rs
205
+ - security: fix 2 follow-up findings from second audit
206
+ - security: fix all 8 findings from security audit
207
+ - ci: build and install binary before running benchmarks
208
+ - chore: add GitHub sponsor button
209
+ - chore: ignore .omc/ directory, remove from tracking
210
+ - chore: update benchmark report (7/7 passing)
211
+ - docs: update README — real benchmarks, Phase 2 config, how it works
212
+ - style: cargo fmt on session.rs and test_session.rs
213
+ - chore: open source files — README, LICENSE, CI/release workflows, install.sh
214
+ - chore: scaffold squeez Rust project
215
+
216
+ ### Fixed
217
+ - fix(codex): emit current PreToolUse/SessionStart hook shapes; silence PostToolUse (#143)
218
+ - fix(claude-code): stop writing statusline.sh + remove orphans on install (#126)
219
+ - fix(claude-code): stop registering squeez statusLine + delegate install to adapter (#124)
220
+ - fix(compress-output): close PostToolUse compression gaps for Read/Edit/Write (#121)
221
+ - fix(claude-code): write hooks under settings.hooks.<event>, not at top level (#119)
222
+ - fix(opencode): shell-quote bash command before prepending `squeez wrap` (#115)
223
+ - fix(statusline): show compression % and fix Python heredoc expansion bug
224
+ - plan-mode passthrough + release description body (#95)
225
+ - fix(session-start): health check missed top-level event keys (#92)
226
+ - fix(hosts): expand PreToolUse matcher to cover Read, Grep, Glob, Agent, Task (#86)
227
+ - fix(json_util,statusline): whitespace-tolerant JSON parser + UTF-8 statusline on Windows (#81)
228
+ - fix(hosts): preserve user settings.json when existing JSON fails to parse (#83)
229
+ - prevent OOM from unbounded file reads + data integrity fixes
230
+ - fix(ci): use native ubuntu-24.04-arm runner for aarch64 build
231
+ - eliminate memory leaks causing 16 GB RAM on MCP server startup (#79)
232
+ - fix(hooks): add hookEventName to PreToolUse hookSpecificOutput (#78)
233
+ - fix(opencode): align plugin with PluginModule SDK shape (default export + server map) (#72)
234
+ - fix(ci): push release docs directly to main (loop-safe) (#68)
235
+ - back Copilot BUDGET_HARD with Read/Grep hook + update upstream refs (#65)
236
+ - fix(ci): startsWith guard for auto-release recursion (#46)
237
+ - fix(ci): tighten auto-release bump detection + fix tag push (#44)
238
+ - fix(ci): add --allow-dirty to cargo publish for Cargo.lock changes
239
+ - fix(ci): skip publish gracefully when version already exists on crates.io/npm
240
+ - fix(ci): run update-docs even if publish jobs fail (already published)
241
+ - fix(ci): continue-on-error for publish jobs so update-docs always runs
242
+ - fix(ci): add pull-requests write permission to update-docs job
243
+ - fix(update): cargo-managed self-update + Windows deferred install + session update check (#27)
244
+ - fix(ci): update-docs creates PR instead of pushing directly to protected main
245
+ - fix(npm): copy README.md into npm package before publish; add readme field
246
+ - fix(ci): add toolchain: stable to all dtolnay/rust-toolchain steps
247
+ - fix(ci): handle no previous tags in generate-changelog.sh (pipefail + grep -v)
248
+ - fix(ci): dispatch release.yml from auto-release to bypass GITHUB_TOKEN chain limit [skip release]
249
+ - fix(ci): fix flaky test tmp dir collision + simplify auto-release
250
+ - fix(bench): exclude synthetic fixtures from filter-mode bench/run.sh
251
+ - fix(ci): remove secrets in step if-conditions — check token inside script instead
252
+ - fix(ci): rename promote-develop → promote-to-main to fix broken workflow registration
253
+ - fix(ci): bump github-script to v7 in promote-develop to force workflow re-registration
254
+ - fix(compress_md): use byte slice comparison to avoid UTF-8 char boundary panic
255
+ - fix(statusline): remove Ctx% — show only squeez compression metrics
256
+ - fix(statusline): green ✓, proper capitalization, real-time context %, all metrics
257
+ - resolve gap analysis — new handlers, wider redundancy window, token budget
258
+ - install.sh — clarify PostToolUse no-matcher intent, guard version echo
259
+ - wrap.rs — safe git hex check, O(n) dedup, full cmd in event log
260
+ - use ends_with for files_committed check in init finalize
261
+ - json_util — guard extract_u64 empty digit, add json_util test coverage
262
+ - add pre-flight binary check to bench/run.sh
263
+ - atomic settings.json write + uninstall safety guards
264
+ - harden pretooluse hook (shlex.quote, error handling, single path source)
265
+ - wrap — process_group(0) for correct signal forwarding, tighten is_streaming
266
+
267
+ ## [1.21.1] - 2026-06-03
268
+
269
+ ### Added
270
+ - feat(economy): enterprise-aware mode — Bedrock/Vertex/OTEL detection + USD savings (#135)
271
+ - feat(benchmark): add information-preservation guard against output-token inflation (#133)
272
+ - feat(cloud): TOON re-encoder for JSON-array outputs (gh, kubectl, aws, gcloud, az) (#134)
273
+ - feat(sig-mode): preserve attribute / decorator above kept signatures (#137)
274
+ - feat(economy): auto-curation nudges + cross-session handler stats (#118)
275
+ - feat(hosts): add Pi adapter (#116)
276
+ - feat(compress): plug Agent/Task output, HTML bash, and PreCompact telemetry gaps
277
+ - feat(bench): add pytest, jest, xcode_build scenarios — 23 → 26 scenarios
278
+ - feat(hooks): PreCompact + PostCompact lifecycle hooks (#102)
279
+ - feat(hooks): SubagentStop hook feeds sub-agent output into SessionContext (#101)
280
+ - feat(monitor): add Monitor tool to PostToolUse compress-output dispatch (#100)
281
+ - PostToolUse updatedToolOutput for Read/Grep/Glob (Claude Code v2.1.119+)
282
+ - session-analysis improvements — az JSON, vite noise, prisma generate, hook health check (#90)
283
+ - feat(fs): auto-compress cat'd markdown via compress_md pipeline (#88)
284
+ - feat(economy): compress Agent/Task prompt at PreToolUse time (#87)
285
+ - feat(handlers): xcodebuild noise filter + log-file tail detection (#84)
286
+ - feat(bench): efficiency-proof benchmark suite — quantitative savings for US-001/003/004 (#74)
287
+ - token-compression power-up — sig-mode, memory-file warn, structured summaries, hypothesis benchmark (#70)
288
+ - feat(setup): adapter-driven setup/uninstall across all hosts (#58)
289
+ - feat(hosts): Codex CLI adapter (hooks + AGENTS.md soft-budget) (#55)
290
+ - feat(hosts): Gemini CLI adapter (BeforeTool/AfterTool hooks) (#52)
291
+ - feat(hosts): full-parity OpenCode adapter + plugin rewrite (#48)
292
+ - wrangler, playwright, next build handlers + bun/drizzle routing (#34)
293
+ - feat(opus47): adapt squeez for Opus 4.7 tokenizer and xhigh effort
294
+ - feat(setup): auto-detect lang from CLAUDE.md/locale + stderr update notification (#29)
295
+ - v0.3.0 — token economy, pt-BR caveman, aggressive defaults, full hook install
296
+ - structured session memory, cross-session search, error snippets, configurable tunables
297
+ - feat(setup): create config.ini on first install
298
+ - feat(i18n): locale-aware compress-md with pt-BR support (#25)
299
+ - fuzzy dedup, adaptive intensity, benign summarize, MCP server, temporal memory, protocol payload
300
+ - Windows setup via cargo/npm + squeez update fix
301
+ - feat(benchmark): add squeez benchmark command with 19-scenario test suite
302
+ - feat(ci): re-add promote-develop workflow with correct registration
303
+ - feat(init): inject persona into ~/.claude/CLAUDE.md on every session start
304
+ - feat(npm+crates): add npm package and publish jobs to release workflow
305
+ - feat(statusline): add statusline.sh to repo; install via install.sh; show all-time stats
306
+ - compress-md, caveman persona, squeez update, track-result hook
307
+ - feat(context): adaptive intensity always picks Ultra
308
+ - feat(context): aggressive token-engine — adaptive intensity, redundancy cache, summarize fallback
309
+ - add Windows support to install.sh and release.yml
310
+ - add home_dir() helper with USERPROFILE fallback for Windows
311
+ - cross-platform wrap — shell_command() helper, cfg(unix) signal gates, libc unix-only
312
+ - add GitHub Copilot CLI support
313
+ - add OpenCode plugin for automatic Bash compression
314
+ - add universal installer support for macOS and Linux
315
+ - expand benchmarks, edge-case tests, and README polish
316
+ - add SessionStart + PostToolUse hooks, update install.sh and README
317
+ - wrap.rs — artifact capture (files/errors/git/tests) + compact warning header
318
+ - squeez init — session start, prior memory banner, session finalization (TDD)
319
+ - squeez track — token accumulation + session event log (TDD)
320
+ - memory.rs — Summary, read_last_n, write_summary, prune_old (TDD)
321
+ - session.rs — CurrentSession, append_event, date math (TDD)
322
+ - json_util helpers + compact_threshold_tokens, memory_retention_days config
323
+ - benchmark system — all fixtures passing
324
+ - build.sh compiles + installs squeez, registers hook
325
+ - PreToolUse hook script
326
+ - fs and runtime handlers — all handler tests passing
327
+ - cloud, database, network handlers (TDD)
328
+ - typescript and build handlers (TDD)
329
+ - package_mgr and test_runner handlers (TDD)
330
+ - git and docker handlers (TDD)
331
+ - wrap subcommand — sh -c, 120s timeout, signal forwarding, bypass check
332
+ - Handler trait with cmd+config, generic handler, command router, filter_stdin
333
+ - truncation strategy (TDD) — all strategy tests passing
334
+ - grouping strategy (TDD)
335
+ - dedup strategy (TDD)
336
+ - smart_filter strategy with node_modules frame removal (TDD)
337
+ - implement config.ini parser (TDD)
338
+
339
+ ### Changed
340
+ - chore(release): bump version to 1.21.1 [squeez-release-bot]
341
+ - refactor(skills): session-long re-injection dedup; drop lexical skill compression (#142)
342
+ - docs: update changelog and benchmarks for v1.21.0
343
+ - chore(release): bump version to 1.21.0 [squeez-release-bot]
344
+ - docs: update changelog and benchmarks for v1.20.0
345
+ - chore(release): bump version to 1.20.0 [squeez-release-bot]
346
+ - docs(readme): add "How squeez compares" table vs rtk / KRLabs squeez / sqz / LLMLingua-2 / TOON (#138)
347
+ - test(cache): lock in byte-stability of MCP and protocol payloads (#136)
348
+ - docs: update changelog and benchmarks for v1.19.4
349
+ - chore(release): bump version to 1.19.4 [squeez-release-bot]
350
+ - docs: update changelog and benchmarks for v1.19.3
351
+ - chore(release): bump version to 1.19.3 [squeez-release-bot]
352
+ - docs: update changelog and benchmarks for v1.19.2
353
+ - chore(release): bump version to 1.19.2 [squeez-release-bot]
354
+ - docs: update changelog and benchmarks for v1.19.1
355
+ - chore(release): bump version to 1.19.1 [squeez-release-bot]
356
+ - docs: update changelog and benchmarks for v1.19.0
357
+ - chore(release): bump version to 1.19.0 [squeez-release-bot]
358
+ - docs: update changelog and benchmarks for v1.18.1
359
+ - chore(release): bump version to 1.18.1 [squeez-release-bot]
360
+ - docs: update changelog and benchmarks for v1.18.0
361
+ - chore(release): bump version to 1.18.0 [squeez-release-bot]
362
+ - docs: document DCO Signed-off-by requirement in CLAUDE.md (#111)
363
+ - docs: update changelog and benchmarks for v1.17.0
364
+ - chore(release): bump version to 1.17.0 [squeez-release-bot]
365
+ - docs: update changelog and benchmarks for v1.16.0
366
+ - chore(release): bump version to 1.16.0 [squeez-release-bot]
367
+ - docs: update changelog and benchmarks for v1.15.1
368
+ - chore(release): bump version to 1.15.1 [squeez-release-bot]
369
+ - docs: update README and CLAUDE.md for new hooks and PostToolUse rewrite (#108)
370
+ - refactor(bench): unify benches/ into bench/ — single benchmark directory (#106)
371
+ - test: add missing coverage for compress-output, filter dispatch, SubagentStop, hook registration (#103)
372
+ - docs: update changelog and benchmarks for v1.15.0
373
+ - chore(release): bump version to 1.15.0 [squeez-release-bot]
374
+ - docs: update changelog and benchmarks for v1.13.0
375
+ - chore(release): bump version to 1.14.0 [squeez-release-bot]
376
+ - chore(release): bump version to 1.13.0 [squeez-release-bot]
377
+ - docs: update changelog and benchmarks for v1.12.0
378
+ - chore(release): bump version to 1.12.0 [squeez-release-bot]
379
+ - docs(codex): update adapter comments and README for 0.123.0 hook surface
380
+ - docs: update changelog and benchmarks for v1.11.2
381
+ - chore(release): bump version to 1.11.2 [squeez-release-bot]
382
+ - docs: update changelog and benchmarks for v1.11.1
383
+ - chore(release): bump version to 1.11.1 [squeez-release-bot]
384
+ - docs: update changelog and benchmarks for v1.11.0
385
+ - chore(release): bump version to 1.11.0 [squeez-release-bot]
386
+ - docs: update changelog and benchmarks for v1.10.0
387
+ - docs: update changelog and benchmarks for v1.9.0
388
+ - chore(release): bump version to 1.10.0 [squeez-release-bot]
389
+ - docs(readme): document squeez's compression scope and architectural limits (#85)
390
+ - chore(release): bump version to 1.9.0 [squeez-release-bot]
391
+ - chore(release): bump version to 1.8.0 [squeez-release-bot]
392
+ - docs: update changelog and benchmarks for v1.7.7
393
+ - chore(release): bump version to 1.7.7 [squeez-release-bot]
394
+ - docs: update changelog and benchmarks for v1.7.6
395
+ - chore(release): bump version to 1.7.6 [squeez-release-bot]
396
+ - docs: update changelog and benchmarks for v1.7.5
397
+ - chore(release): bump version to 1.7.5 [squeez-release-bot]
398
+ - docs: update changelog and benchmarks for v1.7.4
399
+ - chore(release): bump version to 1.7.4 [squeez-release-bot]
400
+ - perf: O(log n) refactor — tail read, offset index, single-pass parser
401
+ - docs: update changelog and benchmarks for v1.7.3
402
+ - chore(release): bump version to 1.7.3 [squeez-release-bot]
403
+ - chore(release): bump version to 1.7.2 [squeez-release-bot]
404
+ - restore: revert accidental deletion of auto-release.yml workflow
405
+ - docs: update changelog and benchmarks for v1.7.1
406
+ - chore(release): bump version to 1.7.1 [squeez-release-bot]
407
+ - chore: relicense to Apache 2.0 + add DCO policy + banner (#76)
408
+ - docs: update changelog and benchmarks for v1.7.0
409
+ - chore(release): bump version to 1.7.0 [squeez-release-bot]
410
+ - docs: update changelog and benchmarks for v1.6.1
411
+ - chore(release): bump version to 1.6.1 [squeez-release-bot]
412
+ - docs: update changelog and benchmarks for v1.6.0
413
+ - chore(release): bump version to 1.6.0 [squeez-release-bot]
414
+ - docs: update changelog and benchmarks for v1.5.2
415
+ - chore(release): bump version to 1.5.2 [squeez-release-bot]
416
+ - chore(release): bump version to 1.5.1 [squeez-release-bot]
417
+ - docs: five-host matrix + squeez setup/uninstall flow (#63)
418
+ - refactor(install): delegate host registration to 'squeez setup' (#60)
419
+ - chore(release): bump version to 1.5.0 [squeez-release-bot]
420
+ - chore(release): bump version to 1.4.0 [squeez-release-bot]
421
+ - chore(release): bump version to 1.3.0 [squeez-release-bot]
422
+ - chore(release): bump version to 1.2.0 [squeez-release-bot]
423
+ - chore(release): bump version to 1.1.0 [squeez-release-bot]
424
+ - chore(release): bump version to 1.0.0 [skip release]
425
+ - refactor(hosts): extract HostAdapter trait + migrate Claude Code and Copilot (#42)
426
+ - ci: conventional-commit-driven auto-release (#40)
427
+ - chore(gov): issue-form templates + refined PR template (#39)
428
+ - docs: update changelog and benchmarks for v0.4.1 [skip release] (#33)
429
+ - chore(release): bump version to 0.4.1
430
+ - chore(release): bump version to 0.4.0
431
+ - docs: update changelog and benchmarks for v0.3.2 [skip release] (#30)
432
+ - chore: bump version to 0.3.2
433
+ - docs: add shields.io badge for changelog link
434
+ - chore: bump version to 0.3.1
435
+ - chore: bump version to 0.2.3
436
+ - docs: update README with 11 MCP tools, structured memory, and advanced tunables
437
+ - chore: bump version to 0.2.2
438
+ - docs: rewrite README with full install instructions (curl/npm/cargo) and all commands
439
+ - chore: refresh bench/report.md from latest run [skip release]
440
+ - chore(ci): remove promote-develop workflow (re-adding to fix broken registration)
441
+ - chore: bump version to 0.2.1 + auto-release on merge to main [skip release]
442
+ - chore: bump version to 0.2.0; add Cargo.toml metadata
443
+ - ci: PR template, linked-issue enforcement, no-claude-trailer check
444
+ - docs: update README with PR1+PR2 features, fresh benchmarks, changelog
445
+ - ci: auto-delete branches after PR merge
446
+ - docs: update Windows installation instructions and prerequisites in README
447
+ - docs: add Windows support and Rust install instructions to README
448
+ - refactor: use session::home_dir() in config and init (Windows compat)
449
+ - ci: trigger promote workflow (test)
450
+ - ci(workflow): avoid failing promote job when PR creation is not permitted; add PR_CREATION_TOKEN guidance
451
+ - docs(readme): add changelog, contribution workflow, and benchmark notes
452
+ - ci(workflow): create/update PR from develop to main on push
453
+ - chore: add .worktrees/ to gitignore
454
+ - chore: add docs/ to gitignore (local design specs)
455
+ - docs: update README for GitHub Copilot CLI support
456
+ - security: fix remaining LOW findings in wrap.rs
457
+ - security: fix 2 follow-up findings from second audit
458
+ - security: fix all 8 findings from security audit
459
+ - ci: build and install binary before running benchmarks
460
+ - chore: add GitHub sponsor button
461
+ - chore: ignore .omc/ directory, remove from tracking
462
+ - chore: update benchmark report (7/7 passing)
463
+ - docs: update README — real benchmarks, Phase 2 config, how it works
464
+ - style: cargo fmt on session.rs and test_session.rs
465
+ - chore: open source files — README, LICENSE, CI/release workflows, install.sh
466
+ - chore: scaffold squeez Rust project
467
+
468
+ ### Fixed
469
+ - fix(codex): emit current PreToolUse/SessionStart hook shapes; silence PostToolUse (#143)
470
+ - fix(claude-code): stop writing statusline.sh + remove orphans on install (#126)
471
+ - fix(claude-code): stop registering squeez statusLine + delegate install to adapter (#124)
472
+ - fix(compress-output): close PostToolUse compression gaps for Read/Edit/Write (#121)
473
+ - fix(claude-code): write hooks under settings.hooks.<event>, not at top level (#119)
474
+ - fix(opencode): shell-quote bash command before prepending `squeez wrap` (#115)
475
+ - fix(statusline): show compression % and fix Python heredoc expansion bug
476
+ - plan-mode passthrough + release description body (#95)
477
+ - fix(session-start): health check missed top-level event keys (#92)
478
+ - fix(hosts): expand PreToolUse matcher to cover Read, Grep, Glob, Agent, Task (#86)
479
+ - fix(json_util,statusline): whitespace-tolerant JSON parser + UTF-8 statusline on Windows (#81)
480
+ - fix(hosts): preserve user settings.json when existing JSON fails to parse (#83)
481
+ - prevent OOM from unbounded file reads + data integrity fixes
482
+ - fix(ci): use native ubuntu-24.04-arm runner for aarch64 build
483
+ - eliminate memory leaks causing 16 GB RAM on MCP server startup (#79)
484
+ - fix(hooks): add hookEventName to PreToolUse hookSpecificOutput (#78)
485
+ - fix(opencode): align plugin with PluginModule SDK shape (default export + server map) (#72)
486
+ - fix(ci): push release docs directly to main (loop-safe) (#68)
487
+ - back Copilot BUDGET_HARD with Read/Grep hook + update upstream refs (#65)
488
+ - fix(ci): startsWith guard for auto-release recursion (#46)
489
+ - fix(ci): tighten auto-release bump detection + fix tag push (#44)
490
+ - fix(ci): add --allow-dirty to cargo publish for Cargo.lock changes
491
+ - fix(ci): skip publish gracefully when version already exists on crates.io/npm
492
+ - fix(ci): run update-docs even if publish jobs fail (already published)
493
+ - fix(ci): continue-on-error for publish jobs so update-docs always runs
494
+ - fix(ci): add pull-requests write permission to update-docs job
495
+ - fix(update): cargo-managed self-update + Windows deferred install + session update check (#27)
496
+ - fix(ci): update-docs creates PR instead of pushing directly to protected main
497
+ - fix(npm): copy README.md into npm package before publish; add readme field
498
+ - fix(ci): add toolchain: stable to all dtolnay/rust-toolchain steps
499
+ - fix(ci): handle no previous tags in generate-changelog.sh (pipefail + grep -v)
500
+ - fix(ci): dispatch release.yml from auto-release to bypass GITHUB_TOKEN chain limit [skip release]
501
+ - fix(ci): fix flaky test tmp dir collision + simplify auto-release
502
+ - fix(bench): exclude synthetic fixtures from filter-mode bench/run.sh
503
+ - fix(ci): remove secrets in step if-conditions — check token inside script instead
504
+ - fix(ci): rename promote-develop → promote-to-main to fix broken workflow registration
505
+ - fix(ci): bump github-script to v7 in promote-develop to force workflow re-registration
506
+ - fix(compress_md): use byte slice comparison to avoid UTF-8 char boundary panic
507
+ - fix(statusline): remove Ctx% — show only squeez compression metrics
508
+ - fix(statusline): green ✓, proper capitalization, real-time context %, all metrics
509
+ - resolve gap analysis — new handlers, wider redundancy window, token budget
510
+ - install.sh — clarify PostToolUse no-matcher intent, guard version echo
511
+ - wrap.rs — safe git hex check, O(n) dedup, full cmd in event log
512
+ - use ends_with for files_committed check in init finalize
513
+ - json_util — guard extract_u64 empty digit, add json_util test coverage
514
+ - add pre-flight binary check to bench/run.sh
515
+ - atomic settings.json write + uninstall safety guards
516
+ - harden pretooluse hook (shlex.quote, error handling, single path source)
517
+ - wrap — process_group(0) for correct signal forwarding, tighten is_streaming
518
+
519
+ ## [1.21.0] - 2026-05-18
520
+
521
+ ### Added
522
+ - feat(economy): enterprise-aware mode — Bedrock/Vertex/OTEL detection + USD savings (#135)
523
+ - feat(benchmark): add information-preservation guard against output-token inflation (#133)
524
+ - feat(cloud): TOON re-encoder for JSON-array outputs (gh, kubectl, aws, gcloud, az) (#134)
525
+ - feat(sig-mode): preserve attribute / decorator above kept signatures (#137)
526
+ - feat(economy): auto-curation nudges + cross-session handler stats (#118)
527
+ - feat(hosts): add Pi adapter (#116)
528
+ - feat(compress): plug Agent/Task output, HTML bash, and PreCompact telemetry gaps
529
+ - feat(bench): add pytest, jest, xcode_build scenarios — 23 → 26 scenarios
530
+ - feat(hooks): PreCompact + PostCompact lifecycle hooks (#102)
531
+ - feat(hooks): SubagentStop hook feeds sub-agent output into SessionContext (#101)
532
+ - feat(monitor): add Monitor tool to PostToolUse compress-output dispatch (#100)
533
+ - PostToolUse updatedToolOutput for Read/Grep/Glob (Claude Code v2.1.119+)
534
+ - session-analysis improvements — az JSON, vite noise, prisma generate, hook health check (#90)
535
+ - feat(fs): auto-compress cat'd markdown via compress_md pipeline (#88)
536
+ - feat(economy): compress Agent/Task prompt at PreToolUse time (#87)
537
+ - feat(handlers): xcodebuild noise filter + log-file tail detection (#84)
538
+ - feat(bench): efficiency-proof benchmark suite — quantitative savings for US-001/003/004 (#74)
539
+ - token-compression power-up — sig-mode, memory-file warn, structured summaries, hypothesis benchmark (#70)
540
+ - feat(setup): adapter-driven setup/uninstall across all hosts (#58)
541
+ - feat(hosts): Codex CLI adapter (hooks + AGENTS.md soft-budget) (#55)
542
+ - feat(hosts): Gemini CLI adapter (BeforeTool/AfterTool hooks) (#52)
543
+ - feat(hosts): full-parity OpenCode adapter + plugin rewrite (#48)
544
+ - wrangler, playwright, next build handlers + bun/drizzle routing (#34)
545
+ - feat(opus47): adapt squeez for Opus 4.7 tokenizer and xhigh effort
546
+ - feat(setup): auto-detect lang from CLAUDE.md/locale + stderr update notification (#29)
547
+ - v0.3.0 — token economy, pt-BR caveman, aggressive defaults, full hook install
548
+ - structured session memory, cross-session search, error snippets, configurable tunables
549
+ - feat(setup): create config.ini on first install
550
+ - feat(i18n): locale-aware compress-md with pt-BR support (#25)
551
+ - fuzzy dedup, adaptive intensity, benign summarize, MCP server, temporal memory, protocol payload
552
+ - Windows setup via cargo/npm + squeez update fix
553
+ - feat(benchmark): add squeez benchmark command with 19-scenario test suite
554
+ - feat(ci): re-add promote-develop workflow with correct registration
555
+ - feat(init): inject persona into ~/.claude/CLAUDE.md on every session start
556
+ - feat(npm+crates): add npm package and publish jobs to release workflow
557
+ - feat(statusline): add statusline.sh to repo; install via install.sh; show all-time stats
558
+ - compress-md, caveman persona, squeez update, track-result hook
559
+ - feat(context): adaptive intensity always picks Ultra
560
+ - feat(context): aggressive token-engine — adaptive intensity, redundancy cache, summarize fallback
561
+ - add Windows support to install.sh and release.yml
562
+ - add home_dir() helper with USERPROFILE fallback for Windows
563
+ - cross-platform wrap — shell_command() helper, cfg(unix) signal gates, libc unix-only
564
+ - add GitHub Copilot CLI support
565
+ - add OpenCode plugin for automatic Bash compression
566
+ - add universal installer support for macOS and Linux
567
+ - expand benchmarks, edge-case tests, and README polish
568
+ - add SessionStart + PostToolUse hooks, update install.sh and README
569
+ - wrap.rs — artifact capture (files/errors/git/tests) + compact warning header
570
+ - squeez init — session start, prior memory banner, session finalization (TDD)
571
+ - squeez track — token accumulation + session event log (TDD)
572
+ - memory.rs — Summary, read_last_n, write_summary, prune_old (TDD)
573
+ - session.rs — CurrentSession, append_event, date math (TDD)
574
+ - json_util helpers + compact_threshold_tokens, memory_retention_days config
575
+ - benchmark system — all fixtures passing
576
+ - build.sh compiles + installs squeez, registers hook
577
+ - PreToolUse hook script
578
+ - fs and runtime handlers — all handler tests passing
579
+ - cloud, database, network handlers (TDD)
580
+ - typescript and build handlers (TDD)
581
+ - package_mgr and test_runner handlers (TDD)
582
+ - git and docker handlers (TDD)
583
+ - wrap subcommand — sh -c, 120s timeout, signal forwarding, bypass check
584
+ - Handler trait with cmd+config, generic handler, command router, filter_stdin
585
+ - truncation strategy (TDD) — all strategy tests passing
586
+ - grouping strategy (TDD)
587
+ - dedup strategy (TDD)
588
+ - smart_filter strategy with node_modules frame removal (TDD)
589
+ - implement config.ini parser (TDD)
590
+
591
+ ### Changed
592
+ - chore(release): bump version to 1.21.0 [squeez-release-bot]
593
+ - docs: update changelog and benchmarks for v1.20.0
594
+ - chore(release): bump version to 1.20.0 [squeez-release-bot]
595
+ - docs(readme): add "How squeez compares" table vs rtk / KRLabs squeez / sqz / LLMLingua-2 / TOON (#138)
596
+ - test(cache): lock in byte-stability of MCP and protocol payloads (#136)
597
+ - docs: update changelog and benchmarks for v1.19.4
598
+ - chore(release): bump version to 1.19.4 [squeez-release-bot]
599
+ - docs: update changelog and benchmarks for v1.19.3
600
+ - chore(release): bump version to 1.19.3 [squeez-release-bot]
601
+ - docs: update changelog and benchmarks for v1.19.2
602
+ - chore(release): bump version to 1.19.2 [squeez-release-bot]
603
+ - docs: update changelog and benchmarks for v1.19.1
604
+ - chore(release): bump version to 1.19.1 [squeez-release-bot]
605
+ - docs: update changelog and benchmarks for v1.19.0
606
+ - chore(release): bump version to 1.19.0 [squeez-release-bot]
607
+ - docs: update changelog and benchmarks for v1.18.1
608
+ - chore(release): bump version to 1.18.1 [squeez-release-bot]
609
+ - docs: update changelog and benchmarks for v1.18.0
610
+ - chore(release): bump version to 1.18.0 [squeez-release-bot]
611
+ - docs: document DCO Signed-off-by requirement in CLAUDE.md (#111)
612
+ - docs: update changelog and benchmarks for v1.17.0
613
+ - chore(release): bump version to 1.17.0 [squeez-release-bot]
614
+ - docs: update changelog and benchmarks for v1.16.0
615
+ - chore(release): bump version to 1.16.0 [squeez-release-bot]
616
+ - docs: update changelog and benchmarks for v1.15.1
617
+ - chore(release): bump version to 1.15.1 [squeez-release-bot]
618
+ - docs: update README and CLAUDE.md for new hooks and PostToolUse rewrite (#108)
619
+ - refactor(bench): unify benches/ into bench/ — single benchmark directory (#106)
620
+ - test: add missing coverage for compress-output, filter dispatch, SubagentStop, hook registration (#103)
621
+ - docs: update changelog and benchmarks for v1.15.0
622
+ - chore(release): bump version to 1.15.0 [squeez-release-bot]
623
+ - docs: update changelog and benchmarks for v1.13.0
624
+ - chore(release): bump version to 1.14.0 [squeez-release-bot]
625
+ - chore(release): bump version to 1.13.0 [squeez-release-bot]
626
+ - docs: update changelog and benchmarks for v1.12.0
627
+ - chore(release): bump version to 1.12.0 [squeez-release-bot]
628
+ - docs(codex): update adapter comments and README for 0.123.0 hook surface
629
+ - docs: update changelog and benchmarks for v1.11.2
630
+ - chore(release): bump version to 1.11.2 [squeez-release-bot]
631
+ - docs: update changelog and benchmarks for v1.11.1
632
+ - chore(release): bump version to 1.11.1 [squeez-release-bot]
633
+ - docs: update changelog and benchmarks for v1.11.0
634
+ - chore(release): bump version to 1.11.0 [squeez-release-bot]
635
+ - docs: update changelog and benchmarks for v1.10.0
636
+ - docs: update changelog and benchmarks for v1.9.0
637
+ - chore(release): bump version to 1.10.0 [squeez-release-bot]
638
+ - docs(readme): document squeez's compression scope and architectural limits (#85)
639
+ - chore(release): bump version to 1.9.0 [squeez-release-bot]
640
+ - chore(release): bump version to 1.8.0 [squeez-release-bot]
641
+ - docs: update changelog and benchmarks for v1.7.7
642
+ - chore(release): bump version to 1.7.7 [squeez-release-bot]
643
+ - docs: update changelog and benchmarks for v1.7.6
644
+ - chore(release): bump version to 1.7.6 [squeez-release-bot]
645
+ - docs: update changelog and benchmarks for v1.7.5
646
+ - chore(release): bump version to 1.7.5 [squeez-release-bot]
647
+ - docs: update changelog and benchmarks for v1.7.4
648
+ - chore(release): bump version to 1.7.4 [squeez-release-bot]
649
+ - perf: O(log n) refactor — tail read, offset index, single-pass parser
650
+ - docs: update changelog and benchmarks for v1.7.3
651
+ - chore(release): bump version to 1.7.3 [squeez-release-bot]
652
+ - chore(release): bump version to 1.7.2 [squeez-release-bot]
653
+ - restore: revert accidental deletion of auto-release.yml workflow
654
+ - docs: update changelog and benchmarks for v1.7.1
655
+ - chore(release): bump version to 1.7.1 [squeez-release-bot]
656
+ - chore: relicense to Apache 2.0 + add DCO policy + banner (#76)
657
+ - docs: update changelog and benchmarks for v1.7.0
658
+ - chore(release): bump version to 1.7.0 [squeez-release-bot]
659
+ - docs: update changelog and benchmarks for v1.6.1
660
+ - chore(release): bump version to 1.6.1 [squeez-release-bot]
661
+ - docs: update changelog and benchmarks for v1.6.0
662
+ - chore(release): bump version to 1.6.0 [squeez-release-bot]
663
+ - docs: update changelog and benchmarks for v1.5.2
664
+ - chore(release): bump version to 1.5.2 [squeez-release-bot]
665
+ - chore(release): bump version to 1.5.1 [squeez-release-bot]
666
+ - docs: five-host matrix + squeez setup/uninstall flow (#63)
667
+ - refactor(install): delegate host registration to 'squeez setup' (#60)
668
+ - chore(release): bump version to 1.5.0 [squeez-release-bot]
669
+ - chore(release): bump version to 1.4.0 [squeez-release-bot]
670
+ - chore(release): bump version to 1.3.0 [squeez-release-bot]
671
+ - chore(release): bump version to 1.2.0 [squeez-release-bot]
672
+ - chore(release): bump version to 1.1.0 [squeez-release-bot]
673
+ - chore(release): bump version to 1.0.0 [skip release]
674
+ - refactor(hosts): extract HostAdapter trait + migrate Claude Code and Copilot (#42)
675
+ - ci: conventional-commit-driven auto-release (#40)
676
+ - chore(gov): issue-form templates + refined PR template (#39)
677
+ - docs: update changelog and benchmarks for v0.4.1 [skip release] (#33)
678
+ - chore(release): bump version to 0.4.1
679
+ - chore(release): bump version to 0.4.0
680
+ - docs: update changelog and benchmarks for v0.3.2 [skip release] (#30)
681
+ - chore: bump version to 0.3.2
682
+ - docs: add shields.io badge for changelog link
683
+ - chore: bump version to 0.3.1
684
+ - chore: bump version to 0.2.3
685
+ - docs: update README with 11 MCP tools, structured memory, and advanced tunables
686
+ - chore: bump version to 0.2.2
687
+ - docs: rewrite README with full install instructions (curl/npm/cargo) and all commands
688
+ - chore: refresh bench/report.md from latest run [skip release]
689
+ - chore(ci): remove promote-develop workflow (re-adding to fix broken registration)
690
+ - chore: bump version to 0.2.1 + auto-release on merge to main [skip release]
691
+ - chore: bump version to 0.2.0; add Cargo.toml metadata
692
+ - ci: PR template, linked-issue enforcement, no-claude-trailer check
693
+ - docs: update README with PR1+PR2 features, fresh benchmarks, changelog
694
+ - ci: auto-delete branches after PR merge
695
+ - docs: update Windows installation instructions and prerequisites in README
696
+ - docs: add Windows support and Rust install instructions to README
697
+ - refactor: use session::home_dir() in config and init (Windows compat)
698
+ - ci: trigger promote workflow (test)
699
+ - ci(workflow): avoid failing promote job when PR creation is not permitted; add PR_CREATION_TOKEN guidance
700
+ - docs(readme): add changelog, contribution workflow, and benchmark notes
701
+ - ci(workflow): create/update PR from develop to main on push
702
+ - chore: add .worktrees/ to gitignore
703
+ - chore: add docs/ to gitignore (local design specs)
704
+ - docs: update README for GitHub Copilot CLI support
705
+ - security: fix remaining LOW findings in wrap.rs
706
+ - security: fix 2 follow-up findings from second audit
707
+ - security: fix all 8 findings from security audit
708
+ - ci: build and install binary before running benchmarks
709
+ - chore: add GitHub sponsor button
710
+ - chore: ignore .omc/ directory, remove from tracking
711
+ - chore: update benchmark report (7/7 passing)
712
+ - docs: update README — real benchmarks, Phase 2 config, how it works
713
+ - style: cargo fmt on session.rs and test_session.rs
714
+ - chore: open source files — README, LICENSE, CI/release workflows, install.sh
715
+ - chore: scaffold squeez Rust project
716
+
717
+ ### Fixed
718
+ - fix(claude-code): stop writing statusline.sh + remove orphans on install (#126)
719
+ - fix(claude-code): stop registering squeez statusLine + delegate install to adapter (#124)
720
+ - fix(compress-output): close PostToolUse compression gaps for Read/Edit/Write (#121)
721
+ - fix(claude-code): write hooks under settings.hooks.<event>, not at top level (#119)
722
+ - fix(opencode): shell-quote bash command before prepending `squeez wrap` (#115)
723
+ - fix(statusline): show compression % and fix Python heredoc expansion bug
724
+ - plan-mode passthrough + release description body (#95)
725
+ - fix(session-start): health check missed top-level event keys (#92)
726
+ - fix(hosts): expand PreToolUse matcher to cover Read, Grep, Glob, Agent, Task (#86)
727
+ - fix(json_util,statusline): whitespace-tolerant JSON parser + UTF-8 statusline on Windows (#81)
728
+ - fix(hosts): preserve user settings.json when existing JSON fails to parse (#83)
729
+ - prevent OOM from unbounded file reads + data integrity fixes
730
+ - fix(ci): use native ubuntu-24.04-arm runner for aarch64 build
731
+ - eliminate memory leaks causing 16 GB RAM on MCP server startup (#79)
732
+ - fix(hooks): add hookEventName to PreToolUse hookSpecificOutput (#78)
733
+ - fix(opencode): align plugin with PluginModule SDK shape (default export + server map) (#72)
734
+ - fix(ci): push release docs directly to main (loop-safe) (#68)
735
+ - back Copilot BUDGET_HARD with Read/Grep hook + update upstream refs (#65)
736
+ - fix(ci): startsWith guard for auto-release recursion (#46)
737
+ - fix(ci): tighten auto-release bump detection + fix tag push (#44)
738
+ - fix(ci): add --allow-dirty to cargo publish for Cargo.lock changes
739
+ - fix(ci): skip publish gracefully when version already exists on crates.io/npm
740
+ - fix(ci): run update-docs even if publish jobs fail (already published)
741
+ - fix(ci): continue-on-error for publish jobs so update-docs always runs
742
+ - fix(ci): add pull-requests write permission to update-docs job
743
+ - fix(update): cargo-managed self-update + Windows deferred install + session update check (#27)
744
+ - fix(ci): update-docs creates PR instead of pushing directly to protected main
745
+ - fix(npm): copy README.md into npm package before publish; add readme field
746
+ - fix(ci): add toolchain: stable to all dtolnay/rust-toolchain steps
747
+ - fix(ci): handle no previous tags in generate-changelog.sh (pipefail + grep -v)
748
+ - fix(ci): dispatch release.yml from auto-release to bypass GITHUB_TOKEN chain limit [skip release]
749
+ - fix(ci): fix flaky test tmp dir collision + simplify auto-release
750
+ - fix(bench): exclude synthetic fixtures from filter-mode bench/run.sh
751
+ - fix(ci): remove secrets in step if-conditions — check token inside script instead
752
+ - fix(ci): rename promote-develop → promote-to-main to fix broken workflow registration
753
+ - fix(ci): bump github-script to v7 in promote-develop to force workflow re-registration
754
+ - fix(compress_md): use byte slice comparison to avoid UTF-8 char boundary panic
755
+ - fix(statusline): remove Ctx% — show only squeez compression metrics
756
+ - fix(statusline): green ✓, proper capitalization, real-time context %, all metrics
757
+ - resolve gap analysis — new handlers, wider redundancy window, token budget
758
+ - install.sh — clarify PostToolUse no-matcher intent, guard version echo
759
+ - wrap.rs — safe git hex check, O(n) dedup, full cmd in event log
760
+ - use ends_with for files_committed check in init finalize
761
+ - json_util — guard extract_u64 empty digit, add json_util test coverage
762
+ - add pre-flight binary check to bench/run.sh
763
+ - atomic settings.json write + uninstall safety guards
764
+ - harden pretooluse hook (shlex.quote, error handling, single path source)
765
+ - wrap — process_group(0) for correct signal forwarding, tighten is_streaming
766
+
12
767
  ## [1.20.0] - 2026-05-18
13
768
 
14
769
  ### Added
@@ -3587,7 +4342,7 @@ conventional commit messages on `main`.
3587
4342
  ## [1.5.1] and earlier
3588
4343
  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.
3589
4344
 
3590
- [Unreleased]: https://github.com/claudioemmanuel/squeez/compare/v1.20.0...HEAD
4345
+ [Unreleased]: https://github.com/claudioemmanuel/squeez/compare/v1.22.0...HEAD
3591
4346
  [1.7.0]: https://github.com/claudioemmanuel/squeez/compare/v1.6.1...v1.7.0
3592
4347
  [1.6.1]: https://github.com/claudioemmanuel/squeez/compare/v1.6.0...v1.6.1
3593
4348
  [1.6.0]: https://github.com/claudioemmanuel/squeez/compare/v1.5.2...v1.6.0
@@ -3616,3 +4371,6 @@ See the [git tag history](https://github.com/claudioemmanuel/squeez/tags) for pr
3616
4371
  [1.19.3]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.19.3
3617
4372
  [1.19.4]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.19.4
3618
4373
  [1.20.0]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.20.0
4374
+ [1.21.0]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.21.0
4375
+ [1.21.1]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.21.1
4376
+ [1.22.0]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.22.0
package/README.md CHANGED
@@ -158,6 +158,7 @@ squeez optimizes what it can reach — the surfaces exposed by each host's hook
158
158
  ### Secondary wins (not compression, but token-saving)
159
159
 
160
160
  - **Cross-call redundancy dedup** — exact-hash and fuzzy-trigram collapsing across 16 recent calls (see [Context engine](#what-it-does))
161
+ - **Skill re-injection dedup** — when the same skill body is injected by the Skill tool more than once in a session, the repeat collapses to `[squeez: identical to Skill #N]`. Keyed by body hash in a session-long store (not the 16-call window), so it fires even when injections recur far apart
161
162
  - **File-access cache** — subsequent Bash commands trimmed when re-reading a file squeez has already fingerprinted
162
163
  - **Burn-rate warnings** — `[budget: ~N calls left]` nudges so the user changes behavior before context pressure spikes
163
164
 
@@ -179,34 +180,34 @@ Measured on macOS (Apple Silicon). Token count = `chars / 4` (matches Claude's ~
179
180
 
180
181
  | Scenario | Before | After | Reduction | Latency |
181
182
  |----------|--------|-------|-----------|---------|
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 |
189
- | `tsc_errors` | 731 tk | 101 tk | **-86%** | 23 µs |
190
- | `cargo_build_noisy` | 2,106 tk | 439 tk | **-79%** | 195 µs |
191
- | `docker_logs` | 665 tk | 186 tk | **-72%** | 44 µs |
183
+ | `summarize_huge` | 82,257 tk | 420 tk | **-99%** | 56.4 ms |
184
+ | `repetitive_output` | 4,692 tk | 37 tk | **-99%** | 208 µs |
185
+ | `xcode_build` | 1,881 tk | 17 tk | **-99%** | 53 µs |
186
+ | `high_context_adaptive` | 4,418 tk | 52 tk | **-99%** | 833 µs |
187
+ | `agent_directory_output` | 3,348 tk | 167 tk | **-95%** | 303 µs |
188
+ | `ps_aux` | 40,373 tk | 2,338 tk | **-94%** | 2.1 ms |
189
+ | `git_log_200` | 2,692 tk | 275 tk | **-90%** | 160 µs |
190
+ | `tsc_errors` | 731 tk | 101 tk | **-86%** | 25 µs |
191
+ | `cargo_build_noisy` | 2,106 tk | 439 tk | **-79%** | 223 µs |
192
+ | `docker_logs` | 665 tk | 186 tk | **-72%** | 40 µs |
192
193
  | `curl_html_response` | 2,181 tk | 626 tk | **-71%** | 39 µs |
193
194
  | `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 |
195
+ | `git_status` | 50 tk | 16 tk | **-68%** | 12 µs |
196
+ | `pytest_failures` | 3,402 tk | 1,175 tk | **-65%** | 271 µs |
197
+ | `verbose_app_log` | 4,957 tk | 1,978 tk | **-60%** | 253 µs |
198
+ | `npm_install` | 524 tk | 218 tk | **-58%** | 39 µs |
199
+ | `crosscall_redundancy_3x` | 486 tk | 237 tk | **-51%** | 51.5 ms |
200
+ | `ls_la` | 1,782 tk | 872 tk | **-51%** | 181 µs |
201
+ | `env_dump` | 441 tk | 287 tk | **-35%** | 22 µs |
202
+ | `git_copilot` | 640 tk | 421 tk | **-34%** | 98 µs |
203
+ | `agent_heavy` | 2,306 tk | 1,551 tk | **-33%** | 303 µs |
204
+ | `md_prose` | 187 tk | 138 tk | **-26%** | 691 µs |
205
+ | `md_claude_md` | 316 tk | 247 tk | **-22%** | 869 µs |
206
+ | `claude_md_overhead` | 717 tk | 635 tk | **-11%** | 23 µs |
207
+ | `git_diff` | 502 tk | 497 tk | **-1%** | 38 µs |
207
208
  | `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 |
209
+ | `state_first_simulation` | 182 tk | 181 tk | **-1%** | 6 µs |
210
+ | `kubectl_pods` | 1,513 tk | 1,513 tk | **-0%** | 31 µs |
210
211
 
211
212
  ### Aggregate
212
213
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "squeez",
3
- "version": "1.21.0",
3
+ "version": "1.22.1",
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",