squeez 1.15.0 → 1.16.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 +417 -1
  2. package/README.md +26 -20
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -9,6 +9,420 @@ conventional commit messages on `main`.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [1.15.1] - 2026-05-06
13
+
14
+ ### Added
15
+ - feat(hooks): PreCompact + PostCompact lifecycle hooks (#102)
16
+ - feat(hooks): SubagentStop hook feeds sub-agent output into SessionContext (#101)
17
+ - feat(monitor): add Monitor tool to PostToolUse compress-output dispatch (#100)
18
+ - PostToolUse updatedToolOutput for Read/Grep/Glob (Claude Code v2.1.119+)
19
+ - session-analysis improvements — az JSON, vite noise, prisma generate, hook health check (#90)
20
+ - feat(fs): auto-compress cat'd markdown via compress_md pipeline (#88)
21
+ - feat(economy): compress Agent/Task prompt at PreToolUse time (#87)
22
+ - feat(handlers): xcodebuild noise filter + log-file tail detection (#84)
23
+ - feat(bench): efficiency-proof benchmark suite — quantitative savings for US-001/003/004 (#74)
24
+ - token-compression power-up — sig-mode, memory-file warn, structured summaries, hypothesis benchmark (#70)
25
+ - feat(setup): adapter-driven setup/uninstall across all hosts (#58)
26
+ - feat(hosts): Codex CLI adapter (hooks + AGENTS.md soft-budget) (#55)
27
+ - feat(hosts): Gemini CLI adapter (BeforeTool/AfterTool hooks) (#52)
28
+ - feat(hosts): full-parity OpenCode adapter + plugin rewrite (#48)
29
+ - wrangler, playwright, next build handlers + bun/drizzle routing (#34)
30
+ - feat(opus47): adapt squeez for Opus 4.7 tokenizer and xhigh effort
31
+ - feat(setup): auto-detect lang from CLAUDE.md/locale + stderr update notification (#29)
32
+ - v0.3.0 — token economy, pt-BR caveman, aggressive defaults, full hook install
33
+ - structured session memory, cross-session search, error snippets, configurable tunables
34
+ - feat(setup): create config.ini on first install
35
+ - feat(i18n): locale-aware compress-md with pt-BR support (#25)
36
+ - fuzzy dedup, adaptive intensity, benign summarize, MCP server, temporal memory, protocol payload
37
+ - Windows setup via cargo/npm + squeez update fix
38
+ - feat(benchmark): add squeez benchmark command with 19-scenario test suite
39
+ - feat(ci): re-add promote-develop workflow with correct registration
40
+ - feat(init): inject persona into ~/.claude/CLAUDE.md on every session start
41
+ - feat(npm+crates): add npm package and publish jobs to release workflow
42
+ - feat(statusline): add statusline.sh to repo; install via install.sh; show all-time stats
43
+ - compress-md, caveman persona, squeez update, track-result hook
44
+ - feat(context): adaptive intensity always picks Ultra
45
+ - feat(context): aggressive token-engine — adaptive intensity, redundancy cache, summarize fallback
46
+ - add Windows support to install.sh and release.yml
47
+ - add home_dir() helper with USERPROFILE fallback for Windows
48
+ - cross-platform wrap — shell_command() helper, cfg(unix) signal gates, libc unix-only
49
+ - add GitHub Copilot CLI support
50
+ - add OpenCode plugin for automatic Bash compression
51
+ - add universal installer support for macOS and Linux
52
+ - expand benchmarks, edge-case tests, and README polish
53
+ - add SessionStart + PostToolUse hooks, update install.sh and README
54
+ - wrap.rs — artifact capture (files/errors/git/tests) + compact warning header
55
+ - squeez init — session start, prior memory banner, session finalization (TDD)
56
+ - squeez track — token accumulation + session event log (TDD)
57
+ - memory.rs — Summary, read_last_n, write_summary, prune_old (TDD)
58
+ - session.rs — CurrentSession, append_event, date math (TDD)
59
+ - json_util helpers + compact_threshold_tokens, memory_retention_days config
60
+ - benchmark system — all fixtures passing
61
+ - build.sh compiles + installs squeez, registers hook
62
+ - PreToolUse hook script
63
+ - fs and runtime handlers — all handler tests passing
64
+ - cloud, database, network handlers (TDD)
65
+ - typescript and build handlers (TDD)
66
+ - package_mgr and test_runner handlers (TDD)
67
+ - git and docker handlers (TDD)
68
+ - wrap subcommand — sh -c, 120s timeout, signal forwarding, bypass check
69
+ - Handler trait with cmd+config, generic handler, command router, filter_stdin
70
+ - truncation strategy (TDD) — all strategy tests passing
71
+ - grouping strategy (TDD)
72
+ - dedup strategy (TDD)
73
+ - smart_filter strategy with node_modules frame removal (TDD)
74
+ - implement config.ini parser (TDD)
75
+
76
+ ### Changed
77
+ - chore(release): bump version to 1.15.1 [squeez-release-bot]
78
+ - docs: update README and CLAUDE.md for new hooks and PostToolUse rewrite (#108)
79
+ - refactor(bench): unify benches/ into bench/ — single benchmark directory (#106)
80
+ - test: add missing coverage for compress-output, filter dispatch, SubagentStop, hook registration (#103)
81
+ - docs: update changelog and benchmarks for v1.15.0
82
+ - chore(release): bump version to 1.15.0 [squeez-release-bot]
83
+ - docs: update changelog and benchmarks for v1.13.0
84
+ - chore(release): bump version to 1.14.0 [squeez-release-bot]
85
+ - chore(release): bump version to 1.13.0 [squeez-release-bot]
86
+ - docs: update changelog and benchmarks for v1.12.0
87
+ - chore(release): bump version to 1.12.0 [squeez-release-bot]
88
+ - docs(codex): update adapter comments and README for 0.123.0 hook surface
89
+ - docs: update changelog and benchmarks for v1.11.2
90
+ - chore(release): bump version to 1.11.2 [squeez-release-bot]
91
+ - docs: update changelog and benchmarks for v1.11.1
92
+ - chore(release): bump version to 1.11.1 [squeez-release-bot]
93
+ - docs: update changelog and benchmarks for v1.11.0
94
+ - chore(release): bump version to 1.11.0 [squeez-release-bot]
95
+ - docs: update changelog and benchmarks for v1.10.0
96
+ - docs: update changelog and benchmarks for v1.9.0
97
+ - chore(release): bump version to 1.10.0 [squeez-release-bot]
98
+ - docs(readme): document squeez's compression scope and architectural limits (#85)
99
+ - chore(release): bump version to 1.9.0 [squeez-release-bot]
100
+ - chore(release): bump version to 1.8.0 [squeez-release-bot]
101
+ - docs: update changelog and benchmarks for v1.7.7
102
+ - chore(release): bump version to 1.7.7 [squeez-release-bot]
103
+ - docs: update changelog and benchmarks for v1.7.6
104
+ - chore(release): bump version to 1.7.6 [squeez-release-bot]
105
+ - docs: update changelog and benchmarks for v1.7.5
106
+ - chore(release): bump version to 1.7.5 [squeez-release-bot]
107
+ - docs: update changelog and benchmarks for v1.7.4
108
+ - chore(release): bump version to 1.7.4 [squeez-release-bot]
109
+ - perf: O(log n) refactor — tail read, offset index, single-pass parser
110
+ - docs: update changelog and benchmarks for v1.7.3
111
+ - chore(release): bump version to 1.7.3 [squeez-release-bot]
112
+ - chore(release): bump version to 1.7.2 [squeez-release-bot]
113
+ - restore: revert accidental deletion of auto-release.yml workflow
114
+ - docs: update changelog and benchmarks for v1.7.1
115
+ - chore(release): bump version to 1.7.1 [squeez-release-bot]
116
+ - chore: relicense to Apache 2.0 + add DCO policy + banner (#76)
117
+ - docs: update changelog and benchmarks for v1.7.0
118
+ - chore(release): bump version to 1.7.0 [squeez-release-bot]
119
+ - docs: update changelog and benchmarks for v1.6.1
120
+ - chore(release): bump version to 1.6.1 [squeez-release-bot]
121
+ - docs: update changelog and benchmarks for v1.6.0
122
+ - chore(release): bump version to 1.6.0 [squeez-release-bot]
123
+ - docs: update changelog and benchmarks for v1.5.2
124
+ - chore(release): bump version to 1.5.2 [squeez-release-bot]
125
+ - chore(release): bump version to 1.5.1 [squeez-release-bot]
126
+ - docs: five-host matrix + squeez setup/uninstall flow (#63)
127
+ - refactor(install): delegate host registration to 'squeez setup' (#60)
128
+ - chore(release): bump version to 1.5.0 [squeez-release-bot]
129
+ - chore(release): bump version to 1.4.0 [squeez-release-bot]
130
+ - chore(release): bump version to 1.3.0 [squeez-release-bot]
131
+ - chore(release): bump version to 1.2.0 [squeez-release-bot]
132
+ - chore(release): bump version to 1.1.0 [squeez-release-bot]
133
+ - chore(release): bump version to 1.0.0 [skip release]
134
+ - refactor(hosts): extract HostAdapter trait + migrate Claude Code and Copilot (#42)
135
+ - ci: conventional-commit-driven auto-release (#40)
136
+ - chore(gov): issue-form templates + refined PR template (#39)
137
+ - docs: update changelog and benchmarks for v0.4.1 [skip release] (#33)
138
+ - chore(release): bump version to 0.4.1
139
+ - chore(release): bump version to 0.4.0
140
+ - docs: update changelog and benchmarks for v0.3.2 [skip release] (#30)
141
+ - chore: bump version to 0.3.2
142
+ - docs: add shields.io badge for changelog link
143
+ - chore: bump version to 0.3.1
144
+ - chore: bump version to 0.2.3
145
+ - docs: update README with 11 MCP tools, structured memory, and advanced tunables
146
+ - chore: bump version to 0.2.2
147
+ - docs: rewrite README with full install instructions (curl/npm/cargo) and all commands
148
+ - chore: refresh bench/report.md from latest run [skip release]
149
+ - chore(ci): remove promote-develop workflow (re-adding to fix broken registration)
150
+ - chore: bump version to 0.2.1 + auto-release on merge to main [skip release]
151
+ - chore: bump version to 0.2.0; add Cargo.toml metadata
152
+ - ci: PR template, linked-issue enforcement, no-claude-trailer check
153
+ - docs: update README with PR1+PR2 features, fresh benchmarks, changelog
154
+ - ci: auto-delete branches after PR merge
155
+ - docs: update Windows installation instructions and prerequisites in README
156
+ - docs: add Windows support and Rust install instructions to README
157
+ - refactor: use session::home_dir() in config and init (Windows compat)
158
+ - ci: trigger promote workflow (test)
159
+ - ci(workflow): avoid failing promote job when PR creation is not permitted; add PR_CREATION_TOKEN guidance
160
+ - docs(readme): add changelog, contribution workflow, and benchmark notes
161
+ - ci(workflow): create/update PR from develop to main on push
162
+ - chore: add .worktrees/ to gitignore
163
+ - chore: add docs/ to gitignore (local design specs)
164
+ - docs: update README for GitHub Copilot CLI support
165
+ - security: fix remaining LOW findings in wrap.rs
166
+ - security: fix 2 follow-up findings from second audit
167
+ - security: fix all 8 findings from security audit
168
+ - ci: build and install binary before running benchmarks
169
+ - chore: add GitHub sponsor button
170
+ - chore: ignore .omc/ directory, remove from tracking
171
+ - chore: update benchmark report (7/7 passing)
172
+ - docs: update README — real benchmarks, Phase 2 config, how it works
173
+ - style: cargo fmt on session.rs and test_session.rs
174
+ - chore: open source files — README, LICENSE, CI/release workflows, install.sh
175
+ - chore: scaffold squeez Rust project
176
+
177
+ ### Fixed
178
+ - fix(statusline): show compression % and fix Python heredoc expansion bug
179
+ - plan-mode passthrough + release description body (#95)
180
+ - fix(session-start): health check missed top-level event keys (#92)
181
+ - fix(hosts): expand PreToolUse matcher to cover Read, Grep, Glob, Agent, Task (#86)
182
+ - fix(json_util,statusline): whitespace-tolerant JSON parser + UTF-8 statusline on Windows (#81)
183
+ - fix(hosts): preserve user settings.json when existing JSON fails to parse (#83)
184
+ - prevent OOM from unbounded file reads + data integrity fixes
185
+ - fix(ci): use native ubuntu-24.04-arm runner for aarch64 build
186
+ - eliminate memory leaks causing 16 GB RAM on MCP server startup (#79)
187
+ - fix(hooks): add hookEventName to PreToolUse hookSpecificOutput (#78)
188
+ - fix(opencode): align plugin with PluginModule SDK shape (default export + server map) (#72)
189
+ - fix(ci): push release docs directly to main (loop-safe) (#68)
190
+ - back Copilot BUDGET_HARD with Read/Grep hook + update upstream refs (#65)
191
+ - fix(ci): startsWith guard for auto-release recursion (#46)
192
+ - fix(ci): tighten auto-release bump detection + fix tag push (#44)
193
+ - fix(ci): add --allow-dirty to cargo publish for Cargo.lock changes
194
+ - fix(ci): skip publish gracefully when version already exists on crates.io/npm
195
+ - fix(ci): run update-docs even if publish jobs fail (already published)
196
+ - fix(ci): continue-on-error for publish jobs so update-docs always runs
197
+ - fix(ci): add pull-requests write permission to update-docs job
198
+ - fix(update): cargo-managed self-update + Windows deferred install + session update check (#27)
199
+ - fix(ci): update-docs creates PR instead of pushing directly to protected main
200
+ - fix(npm): copy README.md into npm package before publish; add readme field
201
+ - fix(ci): add toolchain: stable to all dtolnay/rust-toolchain steps
202
+ - fix(ci): handle no previous tags in generate-changelog.sh (pipefail + grep -v)
203
+ - fix(ci): dispatch release.yml from auto-release to bypass GITHUB_TOKEN chain limit [skip release]
204
+ - fix(ci): fix flaky test tmp dir collision + simplify auto-release
205
+ - fix(bench): exclude synthetic fixtures from filter-mode bench/run.sh
206
+ - fix(ci): remove secrets in step if-conditions — check token inside script instead
207
+ - fix(ci): rename promote-develop → promote-to-main to fix broken workflow registration
208
+ - fix(ci): bump github-script to v7 in promote-develop to force workflow re-registration
209
+ - fix(compress_md): use byte slice comparison to avoid UTF-8 char boundary panic
210
+ - fix(statusline): remove Ctx% — show only squeez compression metrics
211
+ - fix(statusline): green ✓, proper capitalization, real-time context %, all metrics
212
+ - resolve gap analysis — new handlers, wider redundancy window, token budget
213
+ - install.sh — clarify PostToolUse no-matcher intent, guard version echo
214
+ - wrap.rs — safe git hex check, O(n) dedup, full cmd in event log
215
+ - use ends_with for files_committed check in init finalize
216
+ - json_util — guard extract_u64 empty digit, add json_util test coverage
217
+ - add pre-flight binary check to bench/run.sh
218
+ - atomic settings.json write + uninstall safety guards
219
+ - harden pretooluse hook (shlex.quote, error handling, single path source)
220
+ - wrap — process_group(0) for correct signal forwarding, tighten is_streaming
221
+
222
+ ## [1.15.0] - 2026-05-05
223
+
224
+ ### Added
225
+ - feat(hooks): PreCompact + PostCompact lifecycle hooks (#102)
226
+ - feat(hooks): SubagentStop hook feeds sub-agent output into SessionContext (#101)
227
+ - feat(monitor): add Monitor tool to PostToolUse compress-output dispatch (#100)
228
+ - PostToolUse updatedToolOutput for Read/Grep/Glob (Claude Code v2.1.119+)
229
+ - session-analysis improvements — az JSON, vite noise, prisma generate, hook health check (#90)
230
+ - feat(fs): auto-compress cat'd markdown via compress_md pipeline (#88)
231
+ - feat(economy): compress Agent/Task prompt at PreToolUse time (#87)
232
+ - feat(handlers): xcodebuild noise filter + log-file tail detection (#84)
233
+ - feat(bench): efficiency-proof benchmark suite — quantitative savings for US-001/003/004 (#74)
234
+ - token-compression power-up — sig-mode, memory-file warn, structured summaries, hypothesis benchmark (#70)
235
+ - feat(setup): adapter-driven setup/uninstall across all hosts (#58)
236
+ - feat(hosts): Codex CLI adapter (hooks + AGENTS.md soft-budget) (#55)
237
+ - feat(hosts): Gemini CLI adapter (BeforeTool/AfterTool hooks) (#52)
238
+ - feat(hosts): full-parity OpenCode adapter + plugin rewrite (#48)
239
+ - wrangler, playwright, next build handlers + bun/drizzle routing (#34)
240
+ - feat(opus47): adapt squeez for Opus 4.7 tokenizer and xhigh effort
241
+ - feat(setup): auto-detect lang from CLAUDE.md/locale + stderr update notification (#29)
242
+ - v0.3.0 — token economy, pt-BR caveman, aggressive defaults, full hook install
243
+ - structured session memory, cross-session search, error snippets, configurable tunables
244
+ - feat(setup): create config.ini on first install
245
+ - feat(i18n): locale-aware compress-md with pt-BR support (#25)
246
+ - fuzzy dedup, adaptive intensity, benign summarize, MCP server, temporal memory, protocol payload
247
+ - Windows setup via cargo/npm + squeez update fix
248
+ - feat(benchmark): add squeez benchmark command with 19-scenario test suite
249
+ - feat(ci): re-add promote-develop workflow with correct registration
250
+ - feat(init): inject persona into ~/.claude/CLAUDE.md on every session start
251
+ - feat(npm+crates): add npm package and publish jobs to release workflow
252
+ - feat(statusline): add statusline.sh to repo; install via install.sh; show all-time stats
253
+ - compress-md, caveman persona, squeez update, track-result hook
254
+ - feat(context): adaptive intensity always picks Ultra
255
+ - feat(context): aggressive token-engine — adaptive intensity, redundancy cache, summarize fallback
256
+ - add Windows support to install.sh and release.yml
257
+ - add home_dir() helper with USERPROFILE fallback for Windows
258
+ - cross-platform wrap — shell_command() helper, cfg(unix) signal gates, libc unix-only
259
+ - add GitHub Copilot CLI support
260
+ - add OpenCode plugin for automatic Bash compression
261
+ - add universal installer support for macOS and Linux
262
+ - expand benchmarks, edge-case tests, and README polish
263
+ - add SessionStart + PostToolUse hooks, update install.sh and README
264
+ - wrap.rs — artifact capture (files/errors/git/tests) + compact warning header
265
+ - squeez init — session start, prior memory banner, session finalization (TDD)
266
+ - squeez track — token accumulation + session event log (TDD)
267
+ - memory.rs — Summary, read_last_n, write_summary, prune_old (TDD)
268
+ - session.rs — CurrentSession, append_event, date math (TDD)
269
+ - json_util helpers + compact_threshold_tokens, memory_retention_days config
270
+ - benchmark system — all fixtures passing
271
+ - build.sh compiles + installs squeez, registers hook
272
+ - PreToolUse hook script
273
+ - fs and runtime handlers — all handler tests passing
274
+ - cloud, database, network handlers (TDD)
275
+ - typescript and build handlers (TDD)
276
+ - package_mgr and test_runner handlers (TDD)
277
+ - git and docker handlers (TDD)
278
+ - wrap subcommand — sh -c, 120s timeout, signal forwarding, bypass check
279
+ - Handler trait with cmd+config, generic handler, command router, filter_stdin
280
+ - truncation strategy (TDD) — all strategy tests passing
281
+ - grouping strategy (TDD)
282
+ - dedup strategy (TDD)
283
+ - smart_filter strategy with node_modules frame removal (TDD)
284
+ - implement config.ini parser (TDD)
285
+
286
+ ### Changed
287
+ - chore(release): bump version to 1.15.0 [squeez-release-bot]
288
+ - docs: update changelog and benchmarks for v1.13.0
289
+ - chore(release): bump version to 1.14.0 [squeez-release-bot]
290
+ - chore(release): bump version to 1.13.0 [squeez-release-bot]
291
+ - docs: update changelog and benchmarks for v1.12.0
292
+ - chore(release): bump version to 1.12.0 [squeez-release-bot]
293
+ - docs(codex): update adapter comments and README for 0.123.0 hook surface
294
+ - docs: update changelog and benchmarks for v1.11.2
295
+ - chore(release): bump version to 1.11.2 [squeez-release-bot]
296
+ - docs: update changelog and benchmarks for v1.11.1
297
+ - chore(release): bump version to 1.11.1 [squeez-release-bot]
298
+ - docs: update changelog and benchmarks for v1.11.0
299
+ - chore(release): bump version to 1.11.0 [squeez-release-bot]
300
+ - docs: update changelog and benchmarks for v1.10.0
301
+ - docs: update changelog and benchmarks for v1.9.0
302
+ - chore(release): bump version to 1.10.0 [squeez-release-bot]
303
+ - docs(readme): document squeez's compression scope and architectural limits (#85)
304
+ - chore(release): bump version to 1.9.0 [squeez-release-bot]
305
+ - chore(release): bump version to 1.8.0 [squeez-release-bot]
306
+ - docs: update changelog and benchmarks for v1.7.7
307
+ - chore(release): bump version to 1.7.7 [squeez-release-bot]
308
+ - docs: update changelog and benchmarks for v1.7.6
309
+ - chore(release): bump version to 1.7.6 [squeez-release-bot]
310
+ - docs: update changelog and benchmarks for v1.7.5
311
+ - chore(release): bump version to 1.7.5 [squeez-release-bot]
312
+ - docs: update changelog and benchmarks for v1.7.4
313
+ - chore(release): bump version to 1.7.4 [squeez-release-bot]
314
+ - perf: O(log n) refactor — tail read, offset index, single-pass parser
315
+ - docs: update changelog and benchmarks for v1.7.3
316
+ - chore(release): bump version to 1.7.3 [squeez-release-bot]
317
+ - chore(release): bump version to 1.7.2 [squeez-release-bot]
318
+ - restore: revert accidental deletion of auto-release.yml workflow
319
+ - docs: update changelog and benchmarks for v1.7.1
320
+ - chore(release): bump version to 1.7.1 [squeez-release-bot]
321
+ - chore: relicense to Apache 2.0 + add DCO policy + banner (#76)
322
+ - docs: update changelog and benchmarks for v1.7.0
323
+ - chore(release): bump version to 1.7.0 [squeez-release-bot]
324
+ - docs: update changelog and benchmarks for v1.6.1
325
+ - chore(release): bump version to 1.6.1 [squeez-release-bot]
326
+ - docs: update changelog and benchmarks for v1.6.0
327
+ - chore(release): bump version to 1.6.0 [squeez-release-bot]
328
+ - docs: update changelog and benchmarks for v1.5.2
329
+ - chore(release): bump version to 1.5.2 [squeez-release-bot]
330
+ - chore(release): bump version to 1.5.1 [squeez-release-bot]
331
+ - docs: five-host matrix + squeez setup/uninstall flow (#63)
332
+ - refactor(install): delegate host registration to 'squeez setup' (#60)
333
+ - chore(release): bump version to 1.5.0 [squeez-release-bot]
334
+ - chore(release): bump version to 1.4.0 [squeez-release-bot]
335
+ - chore(release): bump version to 1.3.0 [squeez-release-bot]
336
+ - chore(release): bump version to 1.2.0 [squeez-release-bot]
337
+ - chore(release): bump version to 1.1.0 [squeez-release-bot]
338
+ - chore(release): bump version to 1.0.0 [skip release]
339
+ - refactor(hosts): extract HostAdapter trait + migrate Claude Code and Copilot (#42)
340
+ - ci: conventional-commit-driven auto-release (#40)
341
+ - chore(gov): issue-form templates + refined PR template (#39)
342
+ - docs: update changelog and benchmarks for v0.4.1 [skip release] (#33)
343
+ - chore(release): bump version to 0.4.1
344
+ - chore(release): bump version to 0.4.0
345
+ - docs: update changelog and benchmarks for v0.3.2 [skip release] (#30)
346
+ - chore: bump version to 0.3.2
347
+ - docs: add shields.io badge for changelog link
348
+ - chore: bump version to 0.3.1
349
+ - chore: bump version to 0.2.3
350
+ - docs: update README with 11 MCP tools, structured memory, and advanced tunables
351
+ - chore: bump version to 0.2.2
352
+ - docs: rewrite README with full install instructions (curl/npm/cargo) and all commands
353
+ - chore: refresh bench/report.md from latest run [skip release]
354
+ - chore(ci): remove promote-develop workflow (re-adding to fix broken registration)
355
+ - chore: bump version to 0.2.1 + auto-release on merge to main [skip release]
356
+ - chore: bump version to 0.2.0; add Cargo.toml metadata
357
+ - ci: PR template, linked-issue enforcement, no-claude-trailer check
358
+ - docs: update README with PR1+PR2 features, fresh benchmarks, changelog
359
+ - ci: auto-delete branches after PR merge
360
+ - docs: update Windows installation instructions and prerequisites in README
361
+ - docs: add Windows support and Rust install instructions to README
362
+ - refactor: use session::home_dir() in config and init (Windows compat)
363
+ - ci: trigger promote workflow (test)
364
+ - ci(workflow): avoid failing promote job when PR creation is not permitted; add PR_CREATION_TOKEN guidance
365
+ - docs(readme): add changelog, contribution workflow, and benchmark notes
366
+ - ci(workflow): create/update PR from develop to main on push
367
+ - chore: add .worktrees/ to gitignore
368
+ - chore: add docs/ to gitignore (local design specs)
369
+ - docs: update README for GitHub Copilot CLI support
370
+ - security: fix remaining LOW findings in wrap.rs
371
+ - security: fix 2 follow-up findings from second audit
372
+ - security: fix all 8 findings from security audit
373
+ - ci: build and install binary before running benchmarks
374
+ - chore: add GitHub sponsor button
375
+ - chore: ignore .omc/ directory, remove from tracking
376
+ - chore: update benchmark report (7/7 passing)
377
+ - docs: update README — real benchmarks, Phase 2 config, how it works
378
+ - style: cargo fmt on session.rs and test_session.rs
379
+ - chore: open source files — README, LICENSE, CI/release workflows, install.sh
380
+ - chore: scaffold squeez Rust project
381
+
382
+ ### Fixed
383
+ - plan-mode passthrough + release description body (#95)
384
+ - fix(session-start): health check missed top-level event keys (#92)
385
+ - fix(hosts): expand PreToolUse matcher to cover Read, Grep, Glob, Agent, Task (#86)
386
+ - fix(json_util,statusline): whitespace-tolerant JSON parser + UTF-8 statusline on Windows (#81)
387
+ - fix(hosts): preserve user settings.json when existing JSON fails to parse (#83)
388
+ - prevent OOM from unbounded file reads + data integrity fixes
389
+ - fix(ci): use native ubuntu-24.04-arm runner for aarch64 build
390
+ - eliminate memory leaks causing 16 GB RAM on MCP server startup (#79)
391
+ - fix(hooks): add hookEventName to PreToolUse hookSpecificOutput (#78)
392
+ - fix(opencode): align plugin with PluginModule SDK shape (default export + server map) (#72)
393
+ - fix(ci): push release docs directly to main (loop-safe) (#68)
394
+ - back Copilot BUDGET_HARD with Read/Grep hook + update upstream refs (#65)
395
+ - fix(ci): startsWith guard for auto-release recursion (#46)
396
+ - fix(ci): tighten auto-release bump detection + fix tag push (#44)
397
+ - fix(ci): add --allow-dirty to cargo publish for Cargo.lock changes
398
+ - fix(ci): skip publish gracefully when version already exists on crates.io/npm
399
+ - fix(ci): run update-docs even if publish jobs fail (already published)
400
+ - fix(ci): continue-on-error for publish jobs so update-docs always runs
401
+ - fix(ci): add pull-requests write permission to update-docs job
402
+ - fix(update): cargo-managed self-update + Windows deferred install + session update check (#27)
403
+ - fix(ci): update-docs creates PR instead of pushing directly to protected main
404
+ - fix(npm): copy README.md into npm package before publish; add readme field
405
+ - fix(ci): add toolchain: stable to all dtolnay/rust-toolchain steps
406
+ - fix(ci): handle no previous tags in generate-changelog.sh (pipefail + grep -v)
407
+ - fix(ci): dispatch release.yml from auto-release to bypass GITHUB_TOKEN chain limit [skip release]
408
+ - fix(ci): fix flaky test tmp dir collision + simplify auto-release
409
+ - fix(bench): exclude synthetic fixtures from filter-mode bench/run.sh
410
+ - fix(ci): remove secrets in step if-conditions — check token inside script instead
411
+ - fix(ci): rename promote-develop → promote-to-main to fix broken workflow registration
412
+ - fix(ci): bump github-script to v7 in promote-develop to force workflow re-registration
413
+ - fix(compress_md): use byte slice comparison to avoid UTF-8 char boundary panic
414
+ - fix(statusline): remove Ctx% — show only squeez compression metrics
415
+ - fix(statusline): green ✓, proper capitalization, real-time context %, all metrics
416
+ - resolve gap analysis — new handlers, wider redundancy window, token budget
417
+ - install.sh — clarify PostToolUse no-matcher intent, guard version echo
418
+ - wrap.rs — safe git hex check, O(n) dedup, full cmd in event log
419
+ - use ends_with for files_committed check in init finalize
420
+ - json_util — guard extract_u64 empty digit, add json_util test coverage
421
+ - add pre-flight binary check to bench/run.sh
422
+ - atomic settings.json write + uninstall safety guards
423
+ - harden pretooluse hook (shlex.quote, error handling, single path source)
424
+ - wrap — process_group(0) for correct signal forwarding, tighten is_streaming
425
+
12
426
  ## [1.13.0] - 2026-05-05
13
427
 
14
428
  ## [1.12.0] - 2026-05-05
@@ -896,7 +1310,7 @@ conventional commit messages on `main`.
896
1310
  ## [1.5.1] and earlier
897
1311
  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.
898
1312
 
899
- [Unreleased]: https://github.com/claudioemmanuel/squeez/compare/v1.13.0...HEAD
1313
+ [Unreleased]: https://github.com/claudioemmanuel/squeez/compare/v1.15.1...HEAD
900
1314
  [1.7.0]: https://github.com/claudioemmanuel/squeez/compare/v1.6.1...v1.7.0
901
1315
  [1.6.1]: https://github.com/claudioemmanuel/squeez/compare/v1.6.0...v1.6.1
902
1316
  [1.6.0]: https://github.com/claudioemmanuel/squeez/compare/v1.5.2...v1.6.0
@@ -913,3 +1327,5 @@ See the [git tag history](https://github.com/claudioemmanuel/squeez/tags) for pr
913
1327
  [1.11.2]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.11.2
914
1328
  [1.12.0]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.12.0
915
1329
  [1.13.0]: https://github.com/claudioemmanuel/squeez/compare/v1.14.0...v1.13.0
1330
+ [1.15.0]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.15.0
1331
+ [1.15.1]: https://github.com/claudioemmanuel/squeez/releases/tag/v1.15.1
package/README.md CHANGED
@@ -104,7 +104,7 @@ squeez update --insecure # skip checksum (not recommended)
104
104
  | **Caveman persona** | Injects an ultra-terse prompt at session start so the model responds with fewer tokens. |
105
105
  | **Memory-file compression** | `squeez compress-md` compresses CLAUDE.md / AGENTS.md / copilot-instructions.md in-place — pure Rust, zero LLM. i18n-aware: set `lang = pt` (or `--lang pt`) for pt-BR article/filler/phrase dropping and Unicode-correct matching. |
106
106
  | **Session memory** | On `SessionStart`, injects a structured summary of the previous session: files investigated, learned facts (errors + git events), completed work (builds, test passes), and next steps (unresolved errors, failing tests). Summaries carry temporal validity (`valid_from`/`valid_to`). |
107
- | **Token tracking** | Every `PostToolUse` result (Bash, Read, Grep, Glob) feeds a `SessionContext` so squeez knows what the agent has already seen. |
107
+ | **Token tracking** | Every `PostToolUse` result (Bash, Read, Grep, Glob, Monitor, SubagentStop) feeds a `SessionContext` so squeez knows what the agent has already seen. Read/Grep/Glob/Monitor outputs are also rewritten via `updatedToolOutput` (Claude Code v2.1.119+) when content is redundant or oversized. |
108
108
  | **Token economy** | Sub-agent cost tracking (~200K tokens/spawn), burn rate prediction (`[budget: ~N calls left]`), session efficiency scoring, tool result size budgets. |
109
109
  | **Auto-calibration** | `squeez calibrate` runs benchmarks on install and generates an optimized `config.ini` (aggressive / balanced / conservative profiles). |
110
110
 
@@ -120,13 +120,16 @@ squeez optimizes what it can reach — the surfaces exposed by each host's hook
120
120
  |---|---|---|---|
121
121
  | **Bash stdout/stderr** | `PreToolUse` wraps command w/ 4-stage pipeline (smart-filter → dedup → grouping → truncation) | Every Bash invocation | all 5 |
122
122
  | **Read / Grep / Glob limits** | `PreToolUse` injects `limit` / `head_limit` per `read_max_lines` / `grep_max_results` | Every Read/Grep/Glob call | Claude Code, Copilot, OpenCode (hard); Gemini + Codex soft via GEMINI.md / AGENTS.md |
123
+ | **Read / Grep / Glob / Monitor output rewrite** | `PostToolUse` runs `squeez compress-output` and returns `updatedToolOutput` when content is redundant or oversized | Claude Code v2.1.119+ | Claude Code |
123
124
  | **Agent / Task prompt** | `PreToolUse` compresses `tool_input.prompt` (markdown-aware, via `compress-prompt`) | When prompt > `agent_prompt_max_tokens` | Claude Code (post–v1.8.0) |
125
+ | **Sub-agent output** | `SubagentStop` hook feeds `last_assistant_message` into SessionContext for cross-call dedup | On every sub-agent completion | Claude Code |
126
+ | **Compaction lifecycle** | `PreCompact` logs the event; `PostCompact` emits a re-arm reminder so the model knows compression is still active | On context compaction | Claude Code |
124
127
  | **Session memory** | `SessionStart` injects prior session summary + file-access cache | Once per session start | all 5 |
125
128
  | **Markdown viewing** | Bash handler routes `.md` reads through `compress-md` when `auto_compress_md=true` | Viewer commands on .md paths | all 5 |
126
129
 
127
130
  ### What squeez CANNOT compress
128
131
 
129
- **Agent/Task returned output.** `PostToolUse` hooks are observation-only squeez sees the result *after* the model has received it. No hook API surface exists to rewrite an Agent's return value. Workaround: keep agent prompts compact (squeez compresses at dispatch time), and use `squeez_agent_costs` MCP tool to monitor spawn overhead.
132
+ **Agent/Task returned output.** No hook API surface exists to rewrite an Agent's return value. `PostToolUse updatedToolOutput` (Claude Code v2.1.119+) covers built-in tools (Read, Grep, Glob, Monitor) but not the Agent/Task result. Workaround: keep agent prompts compact (squeez compresses at dispatch time via PreToolUse), and use `squeez_agent_costs` MCP tool to monitor spawn overhead.
130
133
 
131
134
  **Skills & slash-command files.** Claude Code loads these into the system prompt before any hook fires. squeez has no visibility into session-start system prompt construction.
132
135
 
@@ -158,27 +161,27 @@ Measured on macOS (Apple Silicon). Token count = `chars / 4` (matches Claude's ~
158
161
 
159
162
  | Scenario | Before | After | Reduction | Latency |
160
163
  |----------|--------|-------|-----------|---------|
161
- | `summarize_huge` | 82,257 tk | 420 tk | **-99%** | 55.6 ms |
162
- | `repetitive_output` | 4,692 tk | 37 tk | **-99%** | 208 µs |
163
- | `high_context_adaptive` | 4,418 tk | 52 tk | **-99%** | 819 µs |
164
+ | `summarize_huge` | 82,257 tk | 420 tk | **-99%** | 55.5 ms |
165
+ | `repetitive_output` | 4,692 tk | 37 tk | **-99%** | 204 µs |
166
+ | `high_context_adaptive` | 4,418 tk | 52 tk | **-99%** | 787 µs |
164
167
  | `ps_aux` | 40,373 tk | 2,352 tk | **-94%** | 2.7 ms |
165
- | `git_log_200` | 2,692 tk | 289 tk | **-89%** | 213 µs |
168
+ | `git_log_200` | 2,692 tk | 289 tk | **-89%** | 207 µs |
166
169
  | `tsc_errors` | 731 tk | 101 tk | **-86%** | 27 µs |
167
- | `cargo_build_noisy` | 2,106 tk | 452 tk | **-79%** | 241 µs |
168
- | `docker_logs` | 665 tk | 186 tk | **-72%** | 44 µs |
169
- | `find_deep` | 424 tk | 134 tk | **-68%** | 79 µs |
170
+ | `cargo_build_noisy` | 2,106 tk | 452 tk | **-79%** | 246 µs |
171
+ | `docker_logs` | 665 tk | 186 tk | **-72%** | 46 µs |
172
+ | `find_deep` | 424 tk | 134 tk | **-68%** | 82 µs |
170
173
  | `git_status` | 50 tk | 16 tk | **-68%** | 11 µs |
171
174
  | `verbose_app_log` | 4,957 tk | 1,991 tk | **-60%** | 288 µs |
172
- | `npm_install` | 524 tk | 232 tk | **-56%** | 45 µs |
173
- | `crosscall_redundancy_3x` | 486 tk | 241 tk | **-50%** | 51.6 ms |
174
- | `ls_la` | 1,782 tk | 886 tk | **-50%** | 208 µs |
175
- | `env_dump` | 441 tk | 287 tk | **-35%** | 24 µs |
176
- | `git_copilot` | 640 tk | 421 tk | **-34%** | 102 µs |
177
- | `agent_heavy` | 2,306 tk | 1,564 tk | **-32%** | 379 µs |
178
- | `md_prose` | 187 tk | 138 tk | **-26%** | 624 µs |
175
+ | `npm_install` | 524 tk | 232 tk | **-56%** | 47 µs |
176
+ | `crosscall_redundancy_3x` | 486 tk | 241 tk | **-50%** | 51.5 ms |
177
+ | `ls_la` | 1,782 tk | 886 tk | **-50%** | 213 µs |
178
+ | `env_dump` | 441 tk | 287 tk | **-35%** | 23 µs |
179
+ | `git_copilot` | 640 tk | 421 tk | **-34%** | 114 µs |
180
+ | `agent_heavy` | 2,306 tk | 1,564 tk | **-32%** | 373 µs |
181
+ | `md_prose` | 187 tk | 138 tk | **-26%** | 619 µs |
179
182
  | `md_claude_md` | 316 tk | 247 tk | **-22%** | 1.1 ms |
180
183
  | `claude_md_overhead` | 717 tk | 649 tk | **-9%** | 22 µs |
181
- | `git_diff` | 502 tk | 497 tk | **-1%** | 42 µs |
184
+ | `git_diff` | 502 tk | 497 tk | **-1%** | 43 µs |
182
185
  | `state_first_simulation` | 182 tk | 181 tk | **-1%** | 5 µs |
183
186
  | `kubectl_pods` | 1,513 tk | 1,513 tk | **-0%** | 28 µs |
184
187
 
@@ -420,11 +423,14 @@ Each bash command passes through four strategies in order:
420
423
 
421
424
  ### Hooks (Claude Code & Copilot CLI)
422
425
 
423
- Three hooks work together automatically after install:
426
+ Six hooks work together automatically after install on Claude Code (three on Copilot CLI):
424
427
 
425
- - **`PreToolUse`** — rewrites every Bash call: `git status` → `squeez wrap git status`
428
+ - **`PreToolUse`** — rewrites every Bash call: `git status` → `squeez wrap git status`; injects Read/Grep/Glob limits; compresses Agent/Task prompts
426
429
  - **`SessionStart`** — runs `squeez init`: finalizes previous session into a memory summary, injects the persona prompt
427
- - **`PostToolUse`** — runs `squeez track-result`: scans every tool result (Bash, Read, Grep, Glob) for file paths and errors, feeding `SessionContext`
430
+ - **`PostToolUse`** — tracks every tool result; rewrites Read/Grep/Glob/Monitor output via `updatedToolOutput` when content is redundant or oversized (Claude Code v2.1.119+)
431
+ - **`SubagentStop`** *(Claude Code only)* — feeds `last_assistant_message` into SessionContext so the parent agent can dedup against what the sub-agent saw
432
+ - **`PreCompact`** *(Claude Code only)* — logs compaction events for session efficiency metrics; allows compaction to proceed
433
+ - **`PostCompact`** *(Claude Code only)* — emits a re-arm reminder after compaction so the model knows compression is still active
428
434
 
429
435
  ### Cross-call redundancy
430
436
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "squeez",
3
- "version": "1.15.0",
3
+ "version": "1.16.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",