squeez 1.25.0 → 1.27.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 +550 -1
  2. package/README.md +28 -28
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -9,6 +9,553 @@ conventional commit messages on `main`.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [1.26.0] - 2026-06-22
13
+
14
+ ### Added
15
+ - feat(config): add `squeez config` CLI + `/squeez` slash command (#152)
16
+ - feat(sig-mode): capture indented method signatures inside impl/class blocks (#147)
17
+ - feat(safety): workflow abuse prevention — all 8 gap items from transcript audit
18
+ - feat(context): real-context tracking, image/skill dedup, quota nudges, transcript integration
19
+ - feat(economy): enterprise-aware mode — Bedrock/Vertex/OTEL detection + USD savings (#135)
20
+ - feat(benchmark): add information-preservation guard against output-token inflation (#133)
21
+ - feat(cloud): TOON re-encoder for JSON-array outputs (gh, kubectl, aws, gcloud, az) (#134)
22
+ - feat(sig-mode): preserve attribute / decorator above kept signatures (#137)
23
+ - feat(economy): auto-curation nudges + cross-session handler stats (#118)
24
+ - feat(hosts): add Pi adapter (#116)
25
+ - feat(compress): plug Agent/Task output, HTML bash, and PreCompact telemetry gaps
26
+ - feat(bench): add pytest, jest, xcode_build scenarios — 23 → 26 scenarios
27
+ - feat(hooks): PreCompact + PostCompact lifecycle hooks (#102)
28
+ - feat(hooks): SubagentStop hook feeds sub-agent output into SessionContext (#101)
29
+ - feat(monitor): add Monitor tool to PostToolUse compress-output dispatch (#100)
30
+ - PostToolUse updatedToolOutput for Read/Grep/Glob (Claude Code v2.1.119+)
31
+ - session-analysis improvements — az JSON, vite noise, prisma generate, hook health check (#90)
32
+ - feat(fs): auto-compress cat'd markdown via compress_md pipeline (#88)
33
+ - feat(economy): compress Agent/Task prompt at PreToolUse time (#87)
34
+ - feat(handlers): xcodebuild noise filter + log-file tail detection (#84)
35
+ - feat(bench): efficiency-proof benchmark suite — quantitative savings for US-001/003/004 (#74)
36
+ - token-compression power-up — sig-mode, memory-file warn, structured summaries, hypothesis benchmark (#70)
37
+ - feat(setup): adapter-driven setup/uninstall across all hosts (#58)
38
+ - feat(hosts): Codex CLI adapter (hooks + AGENTS.md soft-budget) (#55)
39
+ - feat(hosts): Gemini CLI adapter (BeforeTool/AfterTool hooks) (#52)
40
+ - feat(hosts): full-parity OpenCode adapter + plugin rewrite (#48)
41
+ - wrangler, playwright, next build handlers + bun/drizzle routing (#34)
42
+ - feat(opus47): adapt squeez for Opus 4.7 tokenizer and xhigh effort
43
+ - feat(setup): auto-detect lang from CLAUDE.md/locale + stderr update notification (#29)
44
+ - v0.3.0 — token economy, pt-BR caveman, aggressive defaults, full hook install
45
+ - structured session memory, cross-session search, error snippets, configurable tunables
46
+ - feat(setup): create config.ini on first install
47
+ - feat(i18n): locale-aware compress-md with pt-BR support (#25)
48
+ - fuzzy dedup, adaptive intensity, benign summarize, MCP server, temporal memory, protocol payload
49
+ - Windows setup via cargo/npm + squeez update fix
50
+ - feat(benchmark): add squeez benchmark command with 19-scenario test suite
51
+ - feat(ci): re-add promote-develop workflow with correct registration
52
+ - feat(init): inject persona into ~/.claude/CLAUDE.md on every session start
53
+ - feat(npm+crates): add npm package and publish jobs to release workflow
54
+ - feat(statusline): add statusline.sh to repo; install via install.sh; show all-time stats
55
+ - compress-md, caveman persona, squeez update, track-result hook
56
+ - feat(context): adaptive intensity always picks Ultra
57
+ - feat(context): aggressive token-engine — adaptive intensity, redundancy cache, summarize fallback
58
+ - add Windows support to install.sh and release.yml
59
+ - add home_dir() helper with USERPROFILE fallback for Windows
60
+ - cross-platform wrap — shell_command() helper, cfg(unix) signal gates, libc unix-only
61
+ - add GitHub Copilot CLI support
62
+ - add OpenCode plugin for automatic Bash compression
63
+ - add universal installer support for macOS and Linux
64
+ - expand benchmarks, edge-case tests, and README polish
65
+ - add SessionStart + PostToolUse hooks, update install.sh and README
66
+ - wrap.rs — artifact capture (files/errors/git/tests) + compact warning header
67
+ - squeez init — session start, prior memory banner, session finalization (TDD)
68
+ - squeez track — token accumulation + session event log (TDD)
69
+ - memory.rs — Summary, read_last_n, write_summary, prune_old (TDD)
70
+ - session.rs — CurrentSession, append_event, date math (TDD)
71
+ - json_util helpers + compact_threshold_tokens, memory_retention_days config
72
+ - benchmark system — all fixtures passing
73
+ - build.sh compiles + installs squeez, registers hook
74
+ - PreToolUse hook script
75
+ - fs and runtime handlers — all handler tests passing
76
+ - cloud, database, network handlers (TDD)
77
+ - typescript and build handlers (TDD)
78
+ - package_mgr and test_runner handlers (TDD)
79
+ - git and docker handlers (TDD)
80
+ - wrap subcommand — sh -c, 120s timeout, signal forwarding, bypass check
81
+ - Handler trait with cmd+config, generic handler, command router, filter_stdin
82
+ - truncation strategy (TDD) — all strategy tests passing
83
+ - grouping strategy (TDD)
84
+ - dedup strategy (TDD)
85
+ - smart_filter strategy with node_modules frame removal (TDD)
86
+ - implement config.ini parser (TDD)
87
+
88
+ ### Changed
89
+ - chore(release): bump version to 1.26.0 [squeez-release-bot]
90
+ - docs: update changelog and benchmarks for v1.25.0
91
+ - chore(release): bump version to 1.25.0 [squeez-release-bot]
92
+ - docs: update changelog and benchmarks for v1.24.0
93
+ - docs: update changelog and benchmarks for v1.23.1
94
+ - chore(release): bump version to 1.24.0 [squeez-release-bot]
95
+ - chore(release): bump version to 1.23.1 [squeez-release-bot]
96
+ - docs: update changelog and benchmarks for v1.23.0
97
+ - chore(release): bump version to 1.23.0 [squeez-release-bot]
98
+ - docs: update changelog and benchmarks for v1.22.1
99
+ - docs: update changelog and benchmarks for v1.22.1
100
+ - docs: update changelog and benchmarks for v1.22.1
101
+ - chore(release): bump version to 1.22.1 [squeez-release-bot]
102
+ - docs: update changelog and benchmarks for v1.22.0
103
+ - chore(release): bump version to 1.22.0 [squeez-release-bot]
104
+ - docs: update changelog and benchmarks for v1.21.1
105
+ - chore(release): bump version to 1.21.1 [squeez-release-bot]
106
+ - refactor(skills): session-long re-injection dedup; drop lexical skill compression (#142)
107
+ - docs: update changelog and benchmarks for v1.21.0
108
+ - chore(release): bump version to 1.21.0 [squeez-release-bot]
109
+ - docs: update changelog and benchmarks for v1.20.0
110
+ - chore(release): bump version to 1.20.0 [squeez-release-bot]
111
+ - docs(readme): add "How squeez compares" table vs rtk / KRLabs squeez / sqz / LLMLingua-2 / TOON (#138)
112
+ - test(cache): lock in byte-stability of MCP and protocol payloads (#136)
113
+ - docs: update changelog and benchmarks for v1.19.4
114
+ - chore(release): bump version to 1.19.4 [squeez-release-bot]
115
+ - docs: update changelog and benchmarks for v1.19.3
116
+ - chore(release): bump version to 1.19.3 [squeez-release-bot]
117
+ - docs: update changelog and benchmarks for v1.19.2
118
+ - chore(release): bump version to 1.19.2 [squeez-release-bot]
119
+ - docs: update changelog and benchmarks for v1.19.1
120
+ - chore(release): bump version to 1.19.1 [squeez-release-bot]
121
+ - docs: update changelog and benchmarks for v1.19.0
122
+ - chore(release): bump version to 1.19.0 [squeez-release-bot]
123
+ - docs: update changelog and benchmarks for v1.18.1
124
+ - chore(release): bump version to 1.18.1 [squeez-release-bot]
125
+ - docs: update changelog and benchmarks for v1.18.0
126
+ - chore(release): bump version to 1.18.0 [squeez-release-bot]
127
+ - docs: document DCO Signed-off-by requirement in CLAUDE.md (#111)
128
+ - docs: update changelog and benchmarks for v1.17.0
129
+ - chore(release): bump version to 1.17.0 [squeez-release-bot]
130
+ - docs: update changelog and benchmarks for v1.16.0
131
+ - chore(release): bump version to 1.16.0 [squeez-release-bot]
132
+ - docs: update changelog and benchmarks for v1.15.1
133
+ - chore(release): bump version to 1.15.1 [squeez-release-bot]
134
+ - docs: update README and CLAUDE.md for new hooks and PostToolUse rewrite (#108)
135
+ - refactor(bench): unify benches/ into bench/ — single benchmark directory (#106)
136
+ - test: add missing coverage for compress-output, filter dispatch, SubagentStop, hook registration (#103)
137
+ - docs: update changelog and benchmarks for v1.15.0
138
+ - chore(release): bump version to 1.15.0 [squeez-release-bot]
139
+ - docs: update changelog and benchmarks for v1.13.0
140
+ - chore(release): bump version to 1.14.0 [squeez-release-bot]
141
+ - chore(release): bump version to 1.13.0 [squeez-release-bot]
142
+ - docs: update changelog and benchmarks for v1.12.0
143
+ - chore(release): bump version to 1.12.0 [squeez-release-bot]
144
+ - docs(codex): update adapter comments and README for 0.123.0 hook surface
145
+ - docs: update changelog and benchmarks for v1.11.2
146
+ - chore(release): bump version to 1.11.2 [squeez-release-bot]
147
+ - docs: update changelog and benchmarks for v1.11.1
148
+ - chore(release): bump version to 1.11.1 [squeez-release-bot]
149
+ - docs: update changelog and benchmarks for v1.11.0
150
+ - chore(release): bump version to 1.11.0 [squeez-release-bot]
151
+ - docs: update changelog and benchmarks for v1.10.0
152
+ - docs: update changelog and benchmarks for v1.9.0
153
+ - chore(release): bump version to 1.10.0 [squeez-release-bot]
154
+ - docs(readme): document squeez's compression scope and architectural limits (#85)
155
+ - chore(release): bump version to 1.9.0 [squeez-release-bot]
156
+ - chore(release): bump version to 1.8.0 [squeez-release-bot]
157
+ - docs: update changelog and benchmarks for v1.7.7
158
+ - chore(release): bump version to 1.7.7 [squeez-release-bot]
159
+ - docs: update changelog and benchmarks for v1.7.6
160
+ - chore(release): bump version to 1.7.6 [squeez-release-bot]
161
+ - docs: update changelog and benchmarks for v1.7.5
162
+ - chore(release): bump version to 1.7.5 [squeez-release-bot]
163
+ - docs: update changelog and benchmarks for v1.7.4
164
+ - chore(release): bump version to 1.7.4 [squeez-release-bot]
165
+ - perf: O(log n) refactor — tail read, offset index, single-pass parser
166
+ - docs: update changelog and benchmarks for v1.7.3
167
+ - chore(release): bump version to 1.7.3 [squeez-release-bot]
168
+ - chore(release): bump version to 1.7.2 [squeez-release-bot]
169
+ - restore: revert accidental deletion of auto-release.yml workflow
170
+ - docs: update changelog and benchmarks for v1.7.1
171
+ - chore(release): bump version to 1.7.1 [squeez-release-bot]
172
+ - chore: relicense to Apache 2.0 + add DCO policy + banner (#76)
173
+ - docs: update changelog and benchmarks for v1.7.0
174
+ - chore(release): bump version to 1.7.0 [squeez-release-bot]
175
+ - docs: update changelog and benchmarks for v1.6.1
176
+ - chore(release): bump version to 1.6.1 [squeez-release-bot]
177
+ - docs: update changelog and benchmarks for v1.6.0
178
+ - chore(release): bump version to 1.6.0 [squeez-release-bot]
179
+ - docs: update changelog and benchmarks for v1.5.2
180
+ - chore(release): bump version to 1.5.2 [squeez-release-bot]
181
+ - chore(release): bump version to 1.5.1 [squeez-release-bot]
182
+ - docs: five-host matrix + squeez setup/uninstall flow (#63)
183
+ - refactor(install): delegate host registration to 'squeez setup' (#60)
184
+ - chore(release): bump version to 1.5.0 [squeez-release-bot]
185
+ - chore(release): bump version to 1.4.0 [squeez-release-bot]
186
+ - chore(release): bump version to 1.3.0 [squeez-release-bot]
187
+ - chore(release): bump version to 1.2.0 [squeez-release-bot]
188
+ - chore(release): bump version to 1.1.0 [squeez-release-bot]
189
+ - chore(release): bump version to 1.0.0 [skip release]
190
+ - refactor(hosts): extract HostAdapter trait + migrate Claude Code and Copilot (#42)
191
+ - ci: conventional-commit-driven auto-release (#40)
192
+ - chore(gov): issue-form templates + refined PR template (#39)
193
+ - docs: update changelog and benchmarks for v0.4.1 [skip release] (#33)
194
+ - chore(release): bump version to 0.4.1
195
+ - chore(release): bump version to 0.4.0
196
+ - docs: update changelog and benchmarks for v0.3.2 [skip release] (#30)
197
+ - chore: bump version to 0.3.2
198
+ - docs: add shields.io badge for changelog link
199
+ - chore: bump version to 0.3.1
200
+ - chore: bump version to 0.2.3
201
+ - docs: update README with 11 MCP tools, structured memory, and advanced tunables
202
+ - chore: bump version to 0.2.2
203
+ - docs: rewrite README with full install instructions (curl/npm/cargo) and all commands
204
+ - chore: refresh bench/report.md from latest run [skip release]
205
+ - chore(ci): remove promote-develop workflow (re-adding to fix broken registration)
206
+ - chore: bump version to 0.2.1 + auto-release on merge to main [skip release]
207
+ - chore: bump version to 0.2.0; add Cargo.toml metadata
208
+ - ci: PR template, linked-issue enforcement, no-claude-trailer check
209
+ - docs: update README with PR1+PR2 features, fresh benchmarks, changelog
210
+ - ci: auto-delete branches after PR merge
211
+ - docs: update Windows installation instructions and prerequisites in README
212
+ - docs: add Windows support and Rust install instructions to README
213
+ - refactor: use session::home_dir() in config and init (Windows compat)
214
+ - ci: trigger promote workflow (test)
215
+ - ci(workflow): avoid failing promote job when PR creation is not permitted; add PR_CREATION_TOKEN guidance
216
+ - docs(readme): add changelog, contribution workflow, and benchmark notes
217
+ - ci(workflow): create/update PR from develop to main on push
218
+ - chore: add .worktrees/ to gitignore
219
+ - chore: add docs/ to gitignore (local design specs)
220
+ - docs: update README for GitHub Copilot CLI support
221
+ - security: fix remaining LOW findings in wrap.rs
222
+ - security: fix 2 follow-up findings from second audit
223
+ - security: fix all 8 findings from security audit
224
+ - ci: build and install binary before running benchmarks
225
+ - chore: add GitHub sponsor button
226
+ - chore: ignore .omc/ directory, remove from tracking
227
+ - chore: update benchmark report (7/7 passing)
228
+ - docs: update README — real benchmarks, Phase 2 config, how it works
229
+ - style: cargo fmt on session.rs and test_session.rs
230
+ - chore: open source files — README, LICENSE, CI/release workflows, install.sh
231
+ - chore: scaffold squeez Rust project
232
+
233
+ ### Fixed
234
+ - fix(fs): stop collapsing ls/find listings to "N modified" count (#151)
235
+ - fix(hooks): strip --no-squeez marker in codex and gemini pretooluse hooks (#146)
236
+ - fix(release): make publish-npm non-blocking; add npm whoami diagnostic
237
+ - fix(codex): emit current PreToolUse/SessionStart hook shapes; silence PostToolUse (#143)
238
+ - fix(claude-code): stop writing statusline.sh + remove orphans on install (#126)
239
+ - fix(claude-code): stop registering squeez statusLine + delegate install to adapter (#124)
240
+ - fix(compress-output): close PostToolUse compression gaps for Read/Edit/Write (#121)
241
+ - fix(claude-code): write hooks under settings.hooks.<event>, not at top level (#119)
242
+ - fix(opencode): shell-quote bash command before prepending `squeez wrap` (#115)
243
+ - fix(statusline): show compression % and fix Python heredoc expansion bug
244
+ - plan-mode passthrough + release description body (#95)
245
+ - fix(session-start): health check missed top-level event keys (#92)
246
+ - fix(hosts): expand PreToolUse matcher to cover Read, Grep, Glob, Agent, Task (#86)
247
+ - fix(json_util,statusline): whitespace-tolerant JSON parser + UTF-8 statusline on Windows (#81)
248
+ - fix(hosts): preserve user settings.json when existing JSON fails to parse (#83)
249
+ - prevent OOM from unbounded file reads + data integrity fixes
250
+ - fix(ci): use native ubuntu-24.04-arm runner for aarch64 build
251
+ - eliminate memory leaks causing 16 GB RAM on MCP server startup (#79)
252
+ - fix(hooks): add hookEventName to PreToolUse hookSpecificOutput (#78)
253
+ - fix(opencode): align plugin with PluginModule SDK shape (default export + server map) (#72)
254
+ - fix(ci): push release docs directly to main (loop-safe) (#68)
255
+ - back Copilot BUDGET_HARD with Read/Grep hook + update upstream refs (#65)
256
+ - fix(ci): startsWith guard for auto-release recursion (#46)
257
+ - fix(ci): tighten auto-release bump detection + fix tag push (#44)
258
+ - fix(ci): add --allow-dirty to cargo publish for Cargo.lock changes
259
+ - fix(ci): skip publish gracefully when version already exists on crates.io/npm
260
+ - fix(ci): run update-docs even if publish jobs fail (already published)
261
+ - fix(ci): continue-on-error for publish jobs so update-docs always runs
262
+ - fix(ci): add pull-requests write permission to update-docs job
263
+ - fix(update): cargo-managed self-update + Windows deferred install + session update check (#27)
264
+ - fix(ci): update-docs creates PR instead of pushing directly to protected main
265
+ - fix(npm): copy README.md into npm package before publish; add readme field
266
+ - fix(ci): add toolchain: stable to all dtolnay/rust-toolchain steps
267
+ - fix(ci): handle no previous tags in generate-changelog.sh (pipefail + grep -v)
268
+ - fix(ci): dispatch release.yml from auto-release to bypass GITHUB_TOKEN chain limit [skip release]
269
+ - fix(ci): fix flaky test tmp dir collision + simplify auto-release
270
+ - fix(bench): exclude synthetic fixtures from filter-mode bench/run.sh
271
+ - fix(ci): remove secrets in step if-conditions — check token inside script instead
272
+ - fix(ci): rename promote-develop → promote-to-main to fix broken workflow registration
273
+ - fix(ci): bump github-script to v7 in promote-develop to force workflow re-registration
274
+ - fix(compress_md): use byte slice comparison to avoid UTF-8 char boundary panic
275
+ - fix(statusline): remove Ctx% — show only squeez compression metrics
276
+ - fix(statusline): green ✓, proper capitalization, real-time context %, all metrics
277
+ - resolve gap analysis — new handlers, wider redundancy window, token budget
278
+ - install.sh — clarify PostToolUse no-matcher intent, guard version echo
279
+ - wrap.rs — safe git hex check, O(n) dedup, full cmd in event log
280
+ - use ends_with for files_committed check in init finalize
281
+ - json_util — guard extract_u64 empty digit, add json_util test coverage
282
+ - add pre-flight binary check to bench/run.sh
283
+ - atomic settings.json write + uninstall safety guards
284
+ - harden pretooluse hook (shlex.quote, error handling, single path source)
285
+ - wrap — process_group(0) for correct signal forwarding, tighten is_streaming
286
+
287
+ ## [1.25.0] - 2026-06-21
288
+
289
+ ### Added
290
+ - feat(sig-mode): capture indented method signatures inside impl/class blocks (#147)
291
+ - feat(safety): workflow abuse prevention — all 8 gap items from transcript audit
292
+ - feat(context): real-context tracking, image/skill dedup, quota nudges, transcript integration
293
+ - feat(economy): enterprise-aware mode — Bedrock/Vertex/OTEL detection + USD savings (#135)
294
+ - feat(benchmark): add information-preservation guard against output-token inflation (#133)
295
+ - feat(cloud): TOON re-encoder for JSON-array outputs (gh, kubectl, aws, gcloud, az) (#134)
296
+ - feat(sig-mode): preserve attribute / decorator above kept signatures (#137)
297
+ - feat(economy): auto-curation nudges + cross-session handler stats (#118)
298
+ - feat(hosts): add Pi adapter (#116)
299
+ - feat(compress): plug Agent/Task output, HTML bash, and PreCompact telemetry gaps
300
+ - feat(bench): add pytest, jest, xcode_build scenarios — 23 → 26 scenarios
301
+ - feat(hooks): PreCompact + PostCompact lifecycle hooks (#102)
302
+ - feat(hooks): SubagentStop hook feeds sub-agent output into SessionContext (#101)
303
+ - feat(monitor): add Monitor tool to PostToolUse compress-output dispatch (#100)
304
+ - PostToolUse updatedToolOutput for Read/Grep/Glob (Claude Code v2.1.119+)
305
+ - session-analysis improvements — az JSON, vite noise, prisma generate, hook health check (#90)
306
+ - feat(fs): auto-compress cat'd markdown via compress_md pipeline (#88)
307
+ - feat(economy): compress Agent/Task prompt at PreToolUse time (#87)
308
+ - feat(handlers): xcodebuild noise filter + log-file tail detection (#84)
309
+ - feat(bench): efficiency-proof benchmark suite — quantitative savings for US-001/003/004 (#74)
310
+ - token-compression power-up — sig-mode, memory-file warn, structured summaries, hypothesis benchmark (#70)
311
+ - feat(setup): adapter-driven setup/uninstall across all hosts (#58)
312
+ - feat(hosts): Codex CLI adapter (hooks + AGENTS.md soft-budget) (#55)
313
+ - feat(hosts): Gemini CLI adapter (BeforeTool/AfterTool hooks) (#52)
314
+ - feat(hosts): full-parity OpenCode adapter + plugin rewrite (#48)
315
+ - wrangler, playwright, next build handlers + bun/drizzle routing (#34)
316
+ - feat(opus47): adapt squeez for Opus 4.7 tokenizer and xhigh effort
317
+ - feat(setup): auto-detect lang from CLAUDE.md/locale + stderr update notification (#29)
318
+ - v0.3.0 — token economy, pt-BR caveman, aggressive defaults, full hook install
319
+ - structured session memory, cross-session search, error snippets, configurable tunables
320
+ - feat(setup): create config.ini on first install
321
+ - feat(i18n): locale-aware compress-md with pt-BR support (#25)
322
+ - fuzzy dedup, adaptive intensity, benign summarize, MCP server, temporal memory, protocol payload
323
+ - Windows setup via cargo/npm + squeez update fix
324
+ - feat(benchmark): add squeez benchmark command with 19-scenario test suite
325
+ - feat(ci): re-add promote-develop workflow with correct registration
326
+ - feat(init): inject persona into ~/.claude/CLAUDE.md on every session start
327
+ - feat(npm+crates): add npm package and publish jobs to release workflow
328
+ - feat(statusline): add statusline.sh to repo; install via install.sh; show all-time stats
329
+ - compress-md, caveman persona, squeez update, track-result hook
330
+ - feat(context): adaptive intensity always picks Ultra
331
+ - feat(context): aggressive token-engine — adaptive intensity, redundancy cache, summarize fallback
332
+ - add Windows support to install.sh and release.yml
333
+ - add home_dir() helper with USERPROFILE fallback for Windows
334
+ - cross-platform wrap — shell_command() helper, cfg(unix) signal gates, libc unix-only
335
+ - add GitHub Copilot CLI support
336
+ - add OpenCode plugin for automatic Bash compression
337
+ - add universal installer support for macOS and Linux
338
+ - expand benchmarks, edge-case tests, and README polish
339
+ - add SessionStart + PostToolUse hooks, update install.sh and README
340
+ - wrap.rs — artifact capture (files/errors/git/tests) + compact warning header
341
+ - squeez init — session start, prior memory banner, session finalization (TDD)
342
+ - squeez track — token accumulation + session event log (TDD)
343
+ - memory.rs — Summary, read_last_n, write_summary, prune_old (TDD)
344
+ - session.rs — CurrentSession, append_event, date math (TDD)
345
+ - json_util helpers + compact_threshold_tokens, memory_retention_days config
346
+ - benchmark system — all fixtures passing
347
+ - build.sh compiles + installs squeez, registers hook
348
+ - PreToolUse hook script
349
+ - fs and runtime handlers — all handler tests passing
350
+ - cloud, database, network handlers (TDD)
351
+ - typescript and build handlers (TDD)
352
+ - package_mgr and test_runner handlers (TDD)
353
+ - git and docker handlers (TDD)
354
+ - wrap subcommand — sh -c, 120s timeout, signal forwarding, bypass check
355
+ - Handler trait with cmd+config, generic handler, command router, filter_stdin
356
+ - truncation strategy (TDD) — all strategy tests passing
357
+ - grouping strategy (TDD)
358
+ - dedup strategy (TDD)
359
+ - smart_filter strategy with node_modules frame removal (TDD)
360
+ - implement config.ini parser (TDD)
361
+
362
+ ### Changed
363
+ - chore(release): bump version to 1.25.0 [squeez-release-bot]
364
+ - docs: update changelog and benchmarks for v1.24.0
365
+ - docs: update changelog and benchmarks for v1.23.1
366
+ - chore(release): bump version to 1.24.0 [squeez-release-bot]
367
+ - chore(release): bump version to 1.23.1 [squeez-release-bot]
368
+ - docs: update changelog and benchmarks for v1.23.0
369
+ - chore(release): bump version to 1.23.0 [squeez-release-bot]
370
+ - docs: update changelog and benchmarks for v1.22.1
371
+ - docs: update changelog and benchmarks for v1.22.1
372
+ - docs: update changelog and benchmarks for v1.22.1
373
+ - chore(release): bump version to 1.22.1 [squeez-release-bot]
374
+ - docs: update changelog and benchmarks for v1.22.0
375
+ - chore(release): bump version to 1.22.0 [squeez-release-bot]
376
+ - docs: update changelog and benchmarks for v1.21.1
377
+ - chore(release): bump version to 1.21.1 [squeez-release-bot]
378
+ - refactor(skills): session-long re-injection dedup; drop lexical skill compression (#142)
379
+ - docs: update changelog and benchmarks for v1.21.0
380
+ - chore(release): bump version to 1.21.0 [squeez-release-bot]
381
+ - docs: update changelog and benchmarks for v1.20.0
382
+ - chore(release): bump version to 1.20.0 [squeez-release-bot]
383
+ - docs(readme): add "How squeez compares" table vs rtk / KRLabs squeez / sqz / LLMLingua-2 / TOON (#138)
384
+ - test(cache): lock in byte-stability of MCP and protocol payloads (#136)
385
+ - docs: update changelog and benchmarks for v1.19.4
386
+ - chore(release): bump version to 1.19.4 [squeez-release-bot]
387
+ - docs: update changelog and benchmarks for v1.19.3
388
+ - chore(release): bump version to 1.19.3 [squeez-release-bot]
389
+ - docs: update changelog and benchmarks for v1.19.2
390
+ - chore(release): bump version to 1.19.2 [squeez-release-bot]
391
+ - docs: update changelog and benchmarks for v1.19.1
392
+ - chore(release): bump version to 1.19.1 [squeez-release-bot]
393
+ - docs: update changelog and benchmarks for v1.19.0
394
+ - chore(release): bump version to 1.19.0 [squeez-release-bot]
395
+ - docs: update changelog and benchmarks for v1.18.1
396
+ - chore(release): bump version to 1.18.1 [squeez-release-bot]
397
+ - docs: update changelog and benchmarks for v1.18.0
398
+ - chore(release): bump version to 1.18.0 [squeez-release-bot]
399
+ - docs: document DCO Signed-off-by requirement in CLAUDE.md (#111)
400
+ - docs: update changelog and benchmarks for v1.17.0
401
+ - chore(release): bump version to 1.17.0 [squeez-release-bot]
402
+ - docs: update changelog and benchmarks for v1.16.0
403
+ - chore(release): bump version to 1.16.0 [squeez-release-bot]
404
+ - docs: update changelog and benchmarks for v1.15.1
405
+ - chore(release): bump version to 1.15.1 [squeez-release-bot]
406
+ - docs: update README and CLAUDE.md for new hooks and PostToolUse rewrite (#108)
407
+ - refactor(bench): unify benches/ into bench/ — single benchmark directory (#106)
408
+ - test: add missing coverage for compress-output, filter dispatch, SubagentStop, hook registration (#103)
409
+ - docs: update changelog and benchmarks for v1.15.0
410
+ - chore(release): bump version to 1.15.0 [squeez-release-bot]
411
+ - docs: update changelog and benchmarks for v1.13.0
412
+ - chore(release): bump version to 1.14.0 [squeez-release-bot]
413
+ - chore(release): bump version to 1.13.0 [squeez-release-bot]
414
+ - docs: update changelog and benchmarks for v1.12.0
415
+ - chore(release): bump version to 1.12.0 [squeez-release-bot]
416
+ - docs(codex): update adapter comments and README for 0.123.0 hook surface
417
+ - docs: update changelog and benchmarks for v1.11.2
418
+ - chore(release): bump version to 1.11.2 [squeez-release-bot]
419
+ - docs: update changelog and benchmarks for v1.11.1
420
+ - chore(release): bump version to 1.11.1 [squeez-release-bot]
421
+ - docs: update changelog and benchmarks for v1.11.0
422
+ - chore(release): bump version to 1.11.0 [squeez-release-bot]
423
+ - docs: update changelog and benchmarks for v1.10.0
424
+ - docs: update changelog and benchmarks for v1.9.0
425
+ - chore(release): bump version to 1.10.0 [squeez-release-bot]
426
+ - docs(readme): document squeez's compression scope and architectural limits (#85)
427
+ - chore(release): bump version to 1.9.0 [squeez-release-bot]
428
+ - chore(release): bump version to 1.8.0 [squeez-release-bot]
429
+ - docs: update changelog and benchmarks for v1.7.7
430
+ - chore(release): bump version to 1.7.7 [squeez-release-bot]
431
+ - docs: update changelog and benchmarks for v1.7.6
432
+ - chore(release): bump version to 1.7.6 [squeez-release-bot]
433
+ - docs: update changelog and benchmarks for v1.7.5
434
+ - chore(release): bump version to 1.7.5 [squeez-release-bot]
435
+ - docs: update changelog and benchmarks for v1.7.4
436
+ - chore(release): bump version to 1.7.4 [squeez-release-bot]
437
+ - perf: O(log n) refactor — tail read, offset index, single-pass parser
438
+ - docs: update changelog and benchmarks for v1.7.3
439
+ - chore(release): bump version to 1.7.3 [squeez-release-bot]
440
+ - chore(release): bump version to 1.7.2 [squeez-release-bot]
441
+ - restore: revert accidental deletion of auto-release.yml workflow
442
+ - docs: update changelog and benchmarks for v1.7.1
443
+ - chore(release): bump version to 1.7.1 [squeez-release-bot]
444
+ - chore: relicense to Apache 2.0 + add DCO policy + banner (#76)
445
+ - docs: update changelog and benchmarks for v1.7.0
446
+ - chore(release): bump version to 1.7.0 [squeez-release-bot]
447
+ - docs: update changelog and benchmarks for v1.6.1
448
+ - chore(release): bump version to 1.6.1 [squeez-release-bot]
449
+ - docs: update changelog and benchmarks for v1.6.0
450
+ - chore(release): bump version to 1.6.0 [squeez-release-bot]
451
+ - docs: update changelog and benchmarks for v1.5.2
452
+ - chore(release): bump version to 1.5.2 [squeez-release-bot]
453
+ - chore(release): bump version to 1.5.1 [squeez-release-bot]
454
+ - docs: five-host matrix + squeez setup/uninstall flow (#63)
455
+ - refactor(install): delegate host registration to 'squeez setup' (#60)
456
+ - chore(release): bump version to 1.5.0 [squeez-release-bot]
457
+ - chore(release): bump version to 1.4.0 [squeez-release-bot]
458
+ - chore(release): bump version to 1.3.0 [squeez-release-bot]
459
+ - chore(release): bump version to 1.2.0 [squeez-release-bot]
460
+ - chore(release): bump version to 1.1.0 [squeez-release-bot]
461
+ - chore(release): bump version to 1.0.0 [skip release]
462
+ - refactor(hosts): extract HostAdapter trait + migrate Claude Code and Copilot (#42)
463
+ - ci: conventional-commit-driven auto-release (#40)
464
+ - chore(gov): issue-form templates + refined PR template (#39)
465
+ - docs: update changelog and benchmarks for v0.4.1 [skip release] (#33)
466
+ - chore(release): bump version to 0.4.1
467
+ - chore(release): bump version to 0.4.0
468
+ - docs: update changelog and benchmarks for v0.3.2 [skip release] (#30)
469
+ - chore: bump version to 0.3.2
470
+ - docs: add shields.io badge for changelog link
471
+ - chore: bump version to 0.3.1
472
+ - chore: bump version to 0.2.3
473
+ - docs: update README with 11 MCP tools, structured memory, and advanced tunables
474
+ - chore: bump version to 0.2.2
475
+ - docs: rewrite README with full install instructions (curl/npm/cargo) and all commands
476
+ - chore: refresh bench/report.md from latest run [skip release]
477
+ - chore(ci): remove promote-develop workflow (re-adding to fix broken registration)
478
+ - chore: bump version to 0.2.1 + auto-release on merge to main [skip release]
479
+ - chore: bump version to 0.2.0; add Cargo.toml metadata
480
+ - ci: PR template, linked-issue enforcement, no-claude-trailer check
481
+ - docs: update README with PR1+PR2 features, fresh benchmarks, changelog
482
+ - ci: auto-delete branches after PR merge
483
+ - docs: update Windows installation instructions and prerequisites in README
484
+ - docs: add Windows support and Rust install instructions to README
485
+ - refactor: use session::home_dir() in config and init (Windows compat)
486
+ - ci: trigger promote workflow (test)
487
+ - ci(workflow): avoid failing promote job when PR creation is not permitted; add PR_CREATION_TOKEN guidance
488
+ - docs(readme): add changelog, contribution workflow, and benchmark notes
489
+ - ci(workflow): create/update PR from develop to main on push
490
+ - chore: add .worktrees/ to gitignore
491
+ - chore: add docs/ to gitignore (local design specs)
492
+ - docs: update README for GitHub Copilot CLI support
493
+ - security: fix remaining LOW findings in wrap.rs
494
+ - security: fix 2 follow-up findings from second audit
495
+ - security: fix all 8 findings from security audit
496
+ - ci: build and install binary before running benchmarks
497
+ - chore: add GitHub sponsor button
498
+ - chore: ignore .omc/ directory, remove from tracking
499
+ - chore: update benchmark report (7/7 passing)
500
+ - docs: update README — real benchmarks, Phase 2 config, how it works
501
+ - style: cargo fmt on session.rs and test_session.rs
502
+ - chore: open source files — README, LICENSE, CI/release workflows, install.sh
503
+ - chore: scaffold squeez Rust project
504
+
505
+ ### Fixed
506
+ - fix(fs): stop collapsing ls/find listings to "N modified" count (#151)
507
+ - fix(hooks): strip --no-squeez marker in codex and gemini pretooluse hooks (#146)
508
+ - fix(release): make publish-npm non-blocking; add npm whoami diagnostic
509
+ - fix(codex): emit current PreToolUse/SessionStart hook shapes; silence PostToolUse (#143)
510
+ - fix(claude-code): stop writing statusline.sh + remove orphans on install (#126)
511
+ - fix(claude-code): stop registering squeez statusLine + delegate install to adapter (#124)
512
+ - fix(compress-output): close PostToolUse compression gaps for Read/Edit/Write (#121)
513
+ - fix(claude-code): write hooks under settings.hooks.<event>, not at top level (#119)
514
+ - fix(opencode): shell-quote bash command before prepending `squeez wrap` (#115)
515
+ - fix(statusline): show compression % and fix Python heredoc expansion bug
516
+ - plan-mode passthrough + release description body (#95)
517
+ - fix(session-start): health check missed top-level event keys (#92)
518
+ - fix(hosts): expand PreToolUse matcher to cover Read, Grep, Glob, Agent, Task (#86)
519
+ - fix(json_util,statusline): whitespace-tolerant JSON parser + UTF-8 statusline on Windows (#81)
520
+ - fix(hosts): preserve user settings.json when existing JSON fails to parse (#83)
521
+ - prevent OOM from unbounded file reads + data integrity fixes
522
+ - fix(ci): use native ubuntu-24.04-arm runner for aarch64 build
523
+ - eliminate memory leaks causing 16 GB RAM on MCP server startup (#79)
524
+ - fix(hooks): add hookEventName to PreToolUse hookSpecificOutput (#78)
525
+ - fix(opencode): align plugin with PluginModule SDK shape (default export + server map) (#72)
526
+ - fix(ci): push release docs directly to main (loop-safe) (#68)
527
+ - back Copilot BUDGET_HARD with Read/Grep hook + update upstream refs (#65)
528
+ - fix(ci): startsWith guard for auto-release recursion (#46)
529
+ - fix(ci): tighten auto-release bump detection + fix tag push (#44)
530
+ - fix(ci): add --allow-dirty to cargo publish for Cargo.lock changes
531
+ - fix(ci): skip publish gracefully when version already exists on crates.io/npm
532
+ - fix(ci): run update-docs even if publish jobs fail (already published)
533
+ - fix(ci): continue-on-error for publish jobs so update-docs always runs
534
+ - fix(ci): add pull-requests write permission to update-docs job
535
+ - fix(update): cargo-managed self-update + Windows deferred install + session update check (#27)
536
+ - fix(ci): update-docs creates PR instead of pushing directly to protected main
537
+ - fix(npm): copy README.md into npm package before publish; add readme field
538
+ - fix(ci): add toolchain: stable to all dtolnay/rust-toolchain steps
539
+ - fix(ci): handle no previous tags in generate-changelog.sh (pipefail + grep -v)
540
+ - fix(ci): dispatch release.yml from auto-release to bypass GITHUB_TOKEN chain limit [skip release]
541
+ - fix(ci): fix flaky test tmp dir collision + simplify auto-release
542
+ - fix(bench): exclude synthetic fixtures from filter-mode bench/run.sh
543
+ - fix(ci): remove secrets in step if-conditions — check token inside script instead
544
+ - fix(ci): rename promote-develop → promote-to-main to fix broken workflow registration
545
+ - fix(ci): bump github-script to v7 in promote-develop to force workflow re-registration
546
+ - fix(compress_md): use byte slice comparison to avoid UTF-8 char boundary panic
547
+ - fix(statusline): remove Ctx% — show only squeez compression metrics
548
+ - fix(statusline): green ✓, proper capitalization, real-time context %, all metrics
549
+ - resolve gap analysis — new handlers, wider redundancy window, token budget
550
+ - install.sh — clarify PostToolUse no-matcher intent, guard version echo
551
+ - wrap.rs — safe git hex check, O(n) dedup, full cmd in event log
552
+ - use ends_with for files_committed check in init finalize
553
+ - json_util — guard extract_u64 empty digit, add json_util test coverage
554
+ - add pre-flight binary check to bench/run.sh
555
+ - atomic settings.json write + uninstall safety guards
556
+ - harden pretooluse hook (shlex.quote, error handling, single path source)
557
+ - wrap — process_group(0) for correct signal forwarding, tighten is_streaming
558
+
12
559
  ## [1.24.0] - 2026-06-18
13
560
 
14
561
  ### Added
@@ -5649,7 +6196,7 @@ conventional commit messages on `main`.
5649
6196
  ## [1.5.1] and earlier
5650
6197
  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.
5651
6198
 
5652
- [Unreleased]: https://github.com/claudioemmanuel/squeez/compare/v1.24.0...HEAD
6199
+ [Unreleased]: https://github.com/claudioemmanuel/squeez/compare/v1.26.0...HEAD
5653
6200
  [1.7.0]: https://github.com/claudioemmanuel/squeez/compare/v1.6.1...v1.7.0
5654
6201
  [1.6.1]: https://github.com/claudioemmanuel/squeez/compare/v1.6.0...v1.6.1
5655
6202
  [1.6.0]: https://github.com/claudioemmanuel/squeez/compare/v1.5.2...v1.6.0
@@ -5685,3 +6232,5 @@ See the [git tag history](https://github.com/claudioemmanuel/squeez/tags) for pr
5685
6232
  [1.23.0]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.23.0
5686
6233
  [1.23.1]: https://github.com/claudioemmanuel/squeez/compare/v1.24.0...v1.23.1
5687
6234
  [1.24.0]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.24.0
6235
+ [1.25.0]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.25.0
6236
+ [1.26.0]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.26.0
package/README.md CHANGED
@@ -180,54 +180,54 @@ Measured on macOS (Apple Silicon). Token count = `chars / 4` (matches Claude's ~
180
180
 
181
181
  | Scenario | Before | After | Reduction | Latency |
182
182
  |----------|--------|-------|-----------|---------|
183
- | `summarize_huge` | 82,257 tk | 420 tk | **-99%** | 57.0 ms |
183
+ | `summarize_huge` | 82,257 tk | 420 tk | **-99%** | 56.6 ms |
184
184
  | `repetitive_output` | 4,692 tk | 37 tk | **-99%** | 201 µs |
185
- | `xcode_build` | 1,881 tk | 17 tk | **-99%** | 56 µs |
186
- | `high_context_adaptive` | 4,418 tk | 52 tk | **-99%** | 807 µs |
187
- | `agent_directory_output` | 3,348 tk | 167 tk | **-95%** | 330 µs |
188
- | `ps_aux` | 40,373 tk | 2,338 tk | **-94%** | 2.7 ms |
185
+ | `xcode_build` | 1,881 tk | 17 tk | **-99%** | 54 µs |
186
+ | `high_context_adaptive` | 4,418 tk | 52 tk | **-99%** | 796 µs |
187
+ | `agent_directory_output` | 3,348 tk | 167 tk | **-95%** | 327 µs |
188
+ | `ps_aux` | 40,373 tk | 2,338 tk | **-94%** | 856 µs |
189
189
  | `git_log_200` | 2,692 tk | 275 tk | **-90%** | 206 µs |
190
- | `tsc_errors` | 731 tk | 101 tk | **-86%** | 21 µs |
191
- | `cargo_build_noisy` | 2,106 tk | 439 tk | **-79%** | 262 µs |
192
- | `docker_logs` | 665 tk | 186 tk | **-72%** | 47 µs |
193
- | `curl_html_response` | 2,181 tk | 626 tk | **-71%** | 47 µs |
194
- | `find_deep` | 424 tk | 134 tk | **-68%** | 83 µs |
190
+ | `tsc_errors` | 731 tk | 101 tk | **-86%** | 22 µs |
191
+ | `cargo_build_noisy` | 2,106 tk | 439 tk | **-79%** | 246 µs |
192
+ | `docker_logs` | 665 tk | 186 tk | **-72%** | 57 µs |
193
+ | `curl_html_response` | 2,181 tk | 626 tk | **-71%** | 44 µs |
195
194
  | `git_status` | 50 tk | 16 tk | **-68%** | 14 µs |
196
- | `pytest_failures` | 3,402 tk | 1,175 tk | **-65%** | 293 µs |
197
- | `verbose_app_log` | 4,957 tk | 1,978 tk | **-60%** | 288 µs |
198
- | `npm_install` | 524 tk | 218 tk | **-58%** | 48 µs |
195
+ | `pytest_failures` | 3,402 tk | 1,175 tk | **-65%** | 303 µs |
196
+ | `verbose_app_log` | 4,957 tk | 1,978 tk | **-60%** | 287 µs |
197
+ | `npm_install` | 524 tk | 218 tk | **-58%** | 46 µs |
199
198
  | `crosscall_redundancy_3x` | 486 tk | 237 tk | **-51%** | 51.7 ms |
200
- | `ls_la` | 1,782 tk | 872 tk | **-51%** | 195 µs |
201
- | `env_dump` | 441 tk | 287 tk | **-35%** | 26 µs |
202
- | `git_copilot` | 640 tk | 421 tk | **-34%** | 102 µs |
203
- | `agent_heavy` | 2,306 tk | 1,551 tk | **-33%** | 328 µs |
204
- | `md_prose` | 187 tk | 138 tk | **-26%** | 862 µs |
205
- | `md_claude_md` | 316 tk | 247 tk | **-22%** | 1.1 ms |
199
+ | `ls_la` | 1,782 tk | 872 tk | **-51%** | 42 µs |
200
+ | `env_dump` | 441 tk | 287 tk | **-35%** | 24 µs |
201
+ | `git_copilot` | 640 tk | 421 tk | **-34%** | 101 µs |
202
+ | `find_deep` | 424 tk | 279 tk | **-34%** | 23 µs |
203
+ | `agent_heavy` | 2,306 tk | 1,551 tk | **-33%** | 318 µs |
204
+ | `md_prose` | 187 tk | 138 tk | **-26%** | 807 µs |
205
+ | `md_claude_md` | 316 tk | 247 tk | **-22%** | 994 µs |
206
206
  | `claude_md_overhead` | 717 tk | 635 tk | **-11%** | 22 µs |
207
- | `git_diff` | 502 tk | 497 tk | **-1%** | 41 µs |
208
- | `jest_failures` | 451 tk | 448 tk | **-1%** | 49 µs |
207
+ | `git_diff` | 502 tk | 497 tk | **-1%** | 42 µs |
208
+ | `jest_failures` | 451 tk | 448 tk | **-1%** | 52 µs |
209
209
  | `state_first_simulation` | 182 tk | 181 tk | **-1%** | 5 µs |
210
- | `kubectl_pods` | 1,513 tk | 1,513 tk | **-0%** | 32 µs |
210
+ | `kubectl_pods` | 1,513 tk | 1,513 tk | **-0%** | 31 µs |
211
211
 
212
212
  ### Aggregate
213
213
 
214
214
  | Metric | Value |
215
215
  |--------|-------|
216
- | **Total token reduction** | **90.7%** — 164,224 tk → 15,206 tk |
217
- | Bash output | **-84.0%** |
216
+ | **Total token reduction** | **90.7%** — 164,224 tk → 15,351 tk |
217
+ | Bash output | **-83.8%** |
218
218
  | Markdown / context files | **-23.5%** |
219
219
  | Wrap / cross-call engine | **-99.2%** |
220
220
  | Quality (signal terms preserved) | **28 / 28 pass** |
221
- | Latency p50 (filter mode) | **4.2 ms** |
221
+ | Latency p50 (filter mode) | **4.1 ms** |
222
222
  | Latency p95 (incl. wrap/summarize) | **52 ms** |
223
223
 
224
224
  ### Estimated cost savings — Claude Sonnet 4.6 · $3.00 / MTok input
225
225
 
226
226
  | Usage | Baseline / month | Saved / month |
227
227
  |-------|-----------------|---------------|
228
- | 100 calls / day | $18.00 | **$16.33 (91%)** |
229
- | 1,000 calls / day | $180.00 | **$163.33 (91%)** |
230
- | 10,000 calls / day | $1800.00 | **$1633.32 (91%)** |
228
+ | 100 calls / day | $18.00 | **$16.32 (91%)** |
229
+ | 1,000 calls / day | $180.00 | **$163.17 (91%)** |
230
+ | 10,000 calls / day | $1800.00 | **$1631.70 (91%)** |
231
231
  <!-- BENCHMARK:END -->
232
232
 
233
233
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "squeez",
3
- "version": "1.25.0",
3
+ "version": "1.27.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",