# caveman: what changed from 1 to 2 - Product: caveman (https://whatsnew.fyi/product/caveman) - Vendor: Julius Brussee - Range: changelog entries numbered after v1.10.0 up to and including v2.6.0, stable releases only - Entries below: 8 releases (newest first) - Resolved: 1 is v1.10.0 and 2 is v2.6.0, the newest stable release of each major we track - Not shown: 8 releases whose versions could not be placed against this range - Carrying security changes: 2 · CVEs mentioned: 0 · Mentioning breaking changes: 0 · Removing or deprecating something: 3 - Page: https://whatsnew.fyi/product/caveman/compare/1...2 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (85 changes, grouped by kind) ### Added #### v2.6.0 (2026-09-04) - Firefox build of the Caveman Mode extension with AMO-clean manifest and addons-linter pass - ASD-STE100 clarity register folded into caveman skill to keep compressed answers unambiguous while maintaining caveman voice - Per-model originals and compat-mount routing for custom providers - Real-Firefox injection guard behind npm run test:firefox #### v2.5.0 (2026-09-02) - Qwen Code and Kilo Code wraps refuse extension, ACP, session-restore, control-command, daemon, and console surfaces that could carry model traffic outside the locked route - Standalone proxies prove MCP recovery from the request's own tool list, so subscription sessions compress without a wrap - Claude Code Remote Control is documented as incompatible with a proxied base URL and launches direct under wrap #### v2.3.1 (2026-08-23) - caveman learn now prices the scanned window from provider-counted usage read out of agent transcripts - Confirmed savings are attributed to a named method: deterministic_remeasure, controlled_holdout, counterfactual_replay, or interrupted_time_series - Controlled-holdout harness runs a fix on and off on the same machine and returns insufficient_data under 5 sessions per arm - caveman learn reconcile checks measured spend against a provider usage export with a privacy-safe export digest - Test asserts that bootstrap pins, installer package version, and documented one-liners all name the same release #### v2.3.0 (2026-08-23) - Confirmed savings are attributed to a named method — deterministic_remeasure, controlled_holdout, counterfactual_replay, or interrupted_time_series - A controlled-holdout harness runs a fix on and off on the same machine to judge changes whose payback lands outside the edited file - caveman learn reconcile checks measured spend against a provider usage export and generates a privacy-safe export digest #### v2.2.0 (2026-08-20) - benchmarks/run.py gains a terse control arm to separate skill improvements from baseline instruction effects #### v2.1.0 (2026-08-16) - Context-depth report showing each session's peak context-window share, bucketed, with over-30% and over-50% counts - Report UI with TLDR summary, two-card savings display showing proxy-measured saved-so-far and replay could-have-saved, and 30-day list-price cost illustration - Persisted shortcut and token telemetry in CLI - New twenty-chapter technical manual under docs/technical/ #### v2.0.0 (2026-08-11) - Add a compression engine that compresses tool outputs, logs, code, and JSON before sending to the model - Add a proxy component to integrate compression into LLM applications - Add CLI tool for compression functionality - Add SDKs for multiple programming languages - Add compression evaluation tools and contracts for measuring compression savings ### Changed #### v2.6.0 (2026-09-04) - Array-shaped tool output is now compressed - Route eligibility is now recorded - Stronger per-turn caveman reinforcement so competing mid-conversation instructions do not drift the style - Native-hook bridge returns on the first complete JSON payload instead of waiting for EOF - CLI's host hook callbacks apply same first-JSON rule - Number formatting pinned to en-US - Only the default provider's endpoints are routed for custom providers #### v2.5.0 (2026-09-02) - Provider-native cache optimizers and the breakpoint planner default on in optimization modes - README rewritten around measured savings with static charts rendered from the committed benchmark table #### v2.3.1 (2026-08-23) - Spend is reported as the actual window cost, never projected into a month or called verified - Proxy gateway buffers non-streaming upstream bodies before replying and serve-mode warnings land in ~/.caveman/proxy.log - Pinned bin-v1.1.3 companions and CLI 1.2.4 #### v2.3.0 (2026-08-23) - caveman learn now reports the actual cost of the window from provider-counted usage instead of just token movements - The gateway buffers non-streaming upstream bodies before replying - The caveman ruleset's framing clauses were rewritten and the bundled agent skill registry was regenerated #### v2.2.0 (2026-08-20) - cavecrew model overrides no longer rewrite tracked agents/*.md when the plugin root is a source checkout #### v2.1.0 (2026-08-16) - README rewritten as a landing page with proxy-first install, caveman learn showcase with real report screenshot, and skills-as-images - Skill forbids caveman phrasing that adds tokens and names defect/ticket text - Hooks resolve punctuated /caveman levels and stop prose firing mode triggers - Installer installs Cursor skills globally - Opencode agents drop provider-less model values #### v2.0.0 (2026-08-11) - Change licensing model with MIT for skill, CLI, SDKs, kit, evals, contracts, catalog, and extension shell; BSL-1.1 for engine, proxy, MCP, shrink, cavemem-core, and platform with sunset to Apache-2.0 in approximately 4 years ### Fixed #### v2.6.0 (2026-09-04) - Routing bug - Hook bug - Compression bug - Config self-corruption in wrap - Duplicate hooks stacking - x-api-key is sent on compat /v1/messages - Dropped indicator font-face that 404'd on every chat page - Cavecrew subagents dropped the Claude-only tools frontmatter so Gemini CLI loads them - Freshly started proxy's run state is awaited before judging its owner #### v2.5.0 (2026-09-02) - caveman-compress validates each candidate in a staging file before touching the live file and tolerates a leading tool_use block - caveman-stats counts each multi-block response once #### v2.4.0 (2026-08-29) - Scope repo intelligence to project source and require direct evidence in proxy - Handle stdout/stderr 'error' in UserPromptSubmit hook - Honor HTTP_PROXY/HTTPS_PROXY for outbound requests in CLI - Block sensitive directory names in compression - Add Claude 5 model output pricing to stats - Scope caveman mode to the session - Avoid CLI bin collision in installer - Serialize concurrent compress runs with a cross-session lock - Support documented version flag in CLI #### v2.3.1 (2026-08-23) - Installer pins in install.sh and install.ps1 were out of sync with bin/install.js and the documented one-liners, causing the v2.3.0 one-liner to bootstrap the previous release #### v2.3.0 (2026-08-23) - Serve-mode warnings now land in ~/.caveman/proxy.log instead of vanishing #### v2.2.0 (2026-08-20) - Uninstall no longer deletes hook files while settings.json still points at them - Settings file that cannot be parsed or rewritten now causes a hard stop - POSIX and PowerShell uninstallers exit non-zero on missing node - Install leaves another plugin's hooks/package.json alone and removes only the manifest caveman ships - Binary installers give each download its own .part file to prevent concurrent installs from publishing each other's half-written files - Compress skill outer-fence strip no longer merges a document's first and last code blocks into prose - Compress skill validator now sees CommonMark indented code blocks - Compress skill treats lost file paths and renamed headings as errors instead of warnings #### v2.1.0 (2026-08-16) - Hooks degrade instead of crashing when a sibling hook file is missing - Compress: indented fence markers no longer break inline-code validation - SSRF block errors now name the allowlist escape hatch ### Removed #### v2.5.0 (2026-09-02) - cacheengine/ removed from this repository #### v2.4.0 (2026-08-29) - Remove deprecated hooks alias from codex #### v2.3.0 (2026-08-23) - The GitHub Pages landing page is gone ### Security #### v2.5.0 (2026-09-02) - Wrap that finds a listener on the proxy port it did not start and cannot verify now launches the agent directly, so provider keys never go to a foreign process #### v2.2.0 (2026-08-20) - Installer temp downloads move to a 0700 mkdtemp to prevent a pre-planted symlink from capturing the init script ## Release notes ### v2.6.0 - Date: 2026-09-04 - Version: v2.6.0 - Original notes: https://github.com/JuliusBrussee/caveman/releases/tag/v2.6.0 - Permalink: https://whatsnew.fyi/product/caveman/releases/v2.6.0 - **added** — Firefox build of the Caveman Mode extension with AMO-clean manifest and addons-linter pass - **added** — ASD-STE100 clarity register folded into caveman skill to keep compressed answers unambiguous while maintaining caveman voice - **added** — Per-model originals and compat-mount routing for custom providers - **added** — Real-Firefox injection guard behind npm run test:firefox - **changed** — Array-shaped tool output is now compressed - **changed** — Route eligibility is now recorded - **changed** — Stronger per-turn caveman reinforcement so competing mid-conversation instructions do not drift the style - **changed** — Native-hook bridge returns on the first complete JSON payload instead of waiting for EOF - **changed** — CLI's host hook callbacks apply same first-JSON rule - **changed** — Number formatting pinned to en-US - **changed** — Only the default provider's endpoints are routed for custom providers - **fixed** — Routing bug - **fixed** — Hook bug - **fixed** — Compression bug - **fixed** — Config self-corruption in wrap - **fixed** — Duplicate hooks stacking - **fixed** — x-api-key is sent on compat /v1/messages - **fixed** — Dropped indicator font-face that 404'd on every chat page - **fixed** — Cavecrew subagents dropped the Claude-only tools frontmatter so Gemini CLI loads them - **fixed** — Freshly started proxy's run state is awaited before judging its owner Caveman 2.6.0 ships a Firefox build of the Caveman Mode extension, folds an ASD-STE100 clarity register into the caveman skill, and fixes the routing, hook, and compression bugs found since 2.5.0. Highlights: - Skill: caveman prose now always mixes in an ASD-STE100 clarity register, so compressed answers stay unambiguous without dropping out of caveman voice. - Extension: Firefox port of the Caveman Mode extension (#810), AMO-clean manifest and addons-linter pass, a Firefox pack target in the zip builder and the release gate, and a real-Firefox injection guard behind `npm run test:firefox`. Dropped an indicator font-face that 404'd on every chat page. - Codex: array-shaped tool output is compressed, route eligibility is recorded, and the wrap no longer self-corrupts its config or stacks duplicate hooks. - Pi: per-model originals and compat-mount routing for custom providers; only the default provider's endpoints are routed (#972). - Proxy: `x-api-key` is sent on compat `/v1/messages` (#969), and the native-hook bridge returns on the first complete JSON payload instead of waiting for EOF (#965). Same first-JSON rule applied to the CLI's host hook callbacks. - Hooks: stronger per-turn caveman reinforcement so competing mid-conversation instructions do not drift the style (#951). - Agents: cavecrew subagents dropped the Claude-only `tools` frontmatter so Gemini CLI loads them (#966). - Stats: number formatting pinned to en-US (#954). - CLI: a freshly started proxy's run state is awaited before judging its owner. Artifacts: - Signed binaries: bin-v1.1.6 (built by CI from that tag) - CLI: `npm install -g @caveman-ai/cli@1.3.3` (npm publish pending) Validation: - `tests/verify_repo.py`: all local verification checks passed. - Go proxy suite (`go test ./...` in `proxy/`): green. - Installer bootstrap pin lockstep test: green. ### v2.5.0 - Date: 2026-09-02 - Version: v2.5.0 - Original notes: https://github.com/JuliusBrussee/caveman/releases/tag/v2.5.0 - Permalink: https://whatsnew.fyi/product/caveman/releases/v2.5.0 - **security** — Wrap that finds a listener on the proxy port it did not start and cannot verify now launches the agent directly, so provider keys never go to a foreign process - **added** — Qwen Code and Kilo Code wraps refuse extension, ACP, session-restore, control-command, daemon, and console surfaces that could carry model traffic outside the locked route - **added** — Standalone proxies prove MCP recovery from the request's own tool list, so subscription sessions compress without a wrap - **changed** — Provider-native cache optimizers and the breakpoint planner default on in optimization modes - **fixed** — caveman-compress validates each candidate in a staging file before touching the live file and tolerates a leading tool_use block - **fixed** — caveman-stats counts each multi-block response once - **added** — Claude Code Remote Control is documented as incompatible with a proxied base URL and launches direct under wrap - **changed** — README rewritten around measured savings with static charts rendered from the committed benchmark table - **removed** — cacheengine/ removed from this repository Caveman 2.5.0 closes this week's issue and PR queue, drops the standalone cache engine from the repository, and ships a fail-closed fix for proxy-port takeover. Highlights: - Security: a wrap that finds a listener on the proxy port it did not start and cannot verify now launches the agent directly, so provider keys never go to a foreign process (#945). - Qwen Code and Kilo Code wraps refuse extension, ACP, session-restore, control-command, daemon, and console surfaces that could carry model traffic outside the locked route. - Standalone proxies prove MCP recovery from the request's own tool list, so subscription sessions compress without a wrap (#908). - Provider-native cache optimizers and the breakpoint planner default on in optimization modes; explicit off still wins. - caveman-compress validates each candidate in a staging file before touching the live file (#544, #938) and tolerates a leading tool_use block. - caveman-stats counts each multi-block response once (#793, #794). - Claude Code Remote Control is documented as incompatible with a proxied base URL and launches direct under wrap (#947). - README rewritten around measured savings with static charts rendered from the committed benchmark table. - cacheengine/ removed from this repository. Artifacts: - CLI: `npm install -g @caveman-ai/cli@1.3.2` (npm publish pending) - Signed binaries: bin-v1.1.5 (built by CI from this tag) Validation: - Full CLI suite locally: 943 tests, 942 passed, 18 skipped; the one failure is the raw-wrap base-URL test on a machine whose own caveman proxy already holds port 8787, which the new fail-closed path treats as unverifiable. - Go proxy suite green except the pre-existing learn_retro store failures, unchanged from v2.4.0. - verify_repo, Python, hook, and installer pin tests green. ### v2.4.0 - Date: 2026-08-29 - Version: v2.4.0 - Original notes: https://github.com/JuliusBrussee/caveman/releases/tag/v2.4.0 - Permalink: https://whatsnew.fyi/product/caveman/releases/v2.4.0 - **fixed** — Scope repo intelligence to project source and require direct evidence in proxy - **fixed** — Handle stdout/stderr 'error' in UserPromptSubmit hook - **fixed** — Honor HTTP_PROXY/HTTPS_PROXY for outbound requests in CLI - **fixed** — Block sensitive directory names in compression - **fixed** — Add Claude 5 model output pricing to stats - **fixed** — Scope caveman mode to the session - **removed** — Remove deprecated hooks alias from codex - **fixed** — Avoid CLI bin collision in installer - **fixed** — Serialize concurrent compress runs with a cross-session lock - **fixed** — Support documented version flag in CLI Caveman 2.4.0 closes the full weekly issue and PR queue with adversarial review, targeted fixes, and release-grade validation. Highlights: - Hardened proxy redirect, authentication, cancellation, and TLS behavior. - Request-scoped MCP recovery and per-session native-runtime locking. - Safer Windows hooks and lifecycle handling. - Stronger compression masking, isolation, accounting, and semantic doctor checks. - Integrated accepted contributor work with explicit attribution and closure messages. - Restored documented `caveman --version` behavior. Artifacts: - CLI: `npm install -g @caveman-ai/cli@1.3.1` - Signed binaries: [bin-v1.1.4](https://github.com/JuliusBrussee/caveman/releases/tag/bin-v1.1.4) Validation: - Full CLI suite: 665 tests, 647 passed, 18 skipped, 0 failed. - Required Linux, macOS, Windows, Go, TypeScript, Python, extension, and root CI passed. - Clean npm install, signed-binary checksum verification, direct wrap, compression, and byte-exact retrieval smoke passed. ##### What's Changed * fix(proxy): scope repo intelligence to project source and require direct evidence by @JuliusBrussee in https://github.com/JuliusBrussee/caveman/pull/901 * fix: harden weekly integrations and prepare v2.4.0 by @JuliusBrussee in https://github.com/JuliusBrussee/caveman/pull/929 * fix(hooks): handle stdout/stderr 'error' in UserPromptSubmit hook by @AmirF194 in https://github.com/JuliusBrussee/caveman/pull/795 * fix(cli): honour HTTP_PROXY/HTTPS_PROXY for outbound requests by @dylanneve1 in https://github.com/JuliusBrussee/caveman/pull/889 * fix(compress): block sensitive directory names by @CooperSheroy in https://github.com/JuliusBrussee/caveman/pull/891 * chore(skills): shorten skill descriptions to fit the listing budget by @smoochy in https://github.com/JuliusBrussee/caveman/pull/898 * fix(stats): add Claude 5 model output pricing by @SomSamantray in https://github.com/JuliusBrussee/caveman/pull/900 * fix: scope caveman mode to the session by @pavel-collab in https://github.com/JuliusBrussee/caveman/pull/904 * fix(codex): remove deprecated hooks alias by @cuddy-five in https://github.com/JuliusBrussee/caveman/pull/927 * fix(installer): avoid CLI bin collision by @pttydou in https://github.com/JuliusBrussee/caveman/pull/928 * fix(compress): serialize concurrent compress runs with a cross-session lock by @hunleyd in https://github.com/JuliusBrussee/caveman/pull/798 * fix(cli): support documented version flag by @JuliusBrussee in https://github.com/JuliusBrussee/caveman/pull/930 ##### New Contributors * @dylanneve1 made their first contribution in https://github.com/JuliusBrussee/caveman/pull/889 * @CooperSheroy made their first contribution in https://github.com/JuliusBrussee/caveman/pull/891 * @smoochy made their first contribution in https://github.com/JuliusBrussee/caveman/pull/898 * @SomSamantray made their first contribution in https://github.com/JuliusBrussee/caveman/pull/900 * @pavel-collab made their first contribution in https://github.com/JuliusBrussee/caveman/pull/904 * @cuddy-five made their first contribution in https://github.com/JuliusBrussee/caveman/pull/927 * @pttydou made their first contribution in https://github.com/JuliusBrussee/caveman/pull/928 * @hunleyd made their first contribution in https://github.com/JuliusBrussee/caveman/pull/798 **Full Changelog**: https://github.com/JuliusBrussee/caveman/compare/v2.3.1...v2.4.0 ### v2.3.1 - Date: 2026-08-23 - Version: v2.3.1 - Original notes: https://github.com/JuliusBrussee/caveman/releases/tag/v2.3.1 - Permalink: https://whatsnew.fyi/product/caveman/releases/v2.3.1 - **fixed** — Installer pins in install.sh and install.ps1 were out of sync with bin/install.js and the documented one-liners, causing the v2.3.0 one-liner to bootstrap the previous release - **added** — caveman learn now prices the scanned window from provider-counted usage read out of agent transcripts - **added** — Confirmed savings are attributed to a named method: deterministic_remeasure, controlled_holdout, counterfactual_replay, or interrupted_time_series - **added** — Controlled-holdout harness runs a fix on and off on the same machine and returns insufficient_data under 5 sessions per arm - **added** — caveman learn reconcile checks measured spend against a provider usage export with a privacy-safe export digest - **changed** — Spend is reported as the actual window cost, never projected into a month or called verified - **changed** — Proxy gateway buffers non-streaming upstream bodies before replying and serve-mode warnings land in ~/.caveman/proxy.log - **added** — Test asserts that bootstrap pins, installer package version, and documented one-liners all name the same release - **changed** — Pinned bin-v1.1.3 companions and CLI 1.2.4 Everything in [v2.3.0](https://github.com/JuliusBrussee/caveman/releases/tag/v2.3.0) — learn v3 spend and attributed savings — plus the installer-pin fix below. **Install v2.3.1, not v2.3.0.** ##### Installer pin fix v2.3.0 bumped `bin/install.js` and the documented one-liners but left `install.sh` and `install.ps1` pinned at `v2.2.0`. The curl-pipe path reads the shim's own default ref, so the v2.3.0 one-liner bootstrapped the previous release. The root installer package version had drifted the same way. A test now asserts that the three bootstrap pins, the installer package version, and every documented one-liner name the same release, so the next bump cannot miss one silently. ##### Learn v3 (from v2.3.0) - `caveman learn` prices the scanned window from provider-counted usage read out of agent transcripts, so the cost figure is the provider's arithmetic rather than an estimate. - Confirmed savings are attributed to a **named method** — `deterministic_remeasure`, `controlled_holdout`, `counterfactual_replay`, or `interrupted_time_series` — and rungs are never summed into one blended headline. - A **controlled-holdout harness** runs a fix on and off on the same machine; under 5 sessions per arm it returns `insufficient_data` rather than a small win. - `caveman learn reconcile` checks measured spend against a provider usage export, and a privacy-safe export digest makes that export shareable without shipping prompt text. - Spend is what the window cost — never what a fix would return, never projected into a month, never called verified. - Proxy: the gateway buffers non-streaming upstream bodies before replying, and serve-mode warnings land in `~/.caveman/proxy.log`. ##### Runtime Pins the **bin-v1.1.3** companions and **CLI 1.2.4**. All 36 binaries and the signed manifest are at [bin-v1.1.3](https://github.com/JuliusBrussee/caveman/releases/tag/bin-v1.1.3). ##### Install ```bash curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/v2.3.1/install.sh | bash ``` ```powershell irm https://raw.githubusercontent.com/JuliusBrussee/caveman/v2.3.1/install.ps1 | iex ``` ### v2.3.0 - Date: 2026-08-23 - Version: v2.3.0 - Original notes: https://github.com/JuliusBrussee/caveman/releases/tag/v2.3.0 - Permalink: https://whatsnew.fyi/product/caveman/releases/v2.3.0 - **changed** — caveman learn now reports the actual cost of the window from provider-counted usage instead of just token movements - **added** — Confirmed savings are attributed to a named method — deterministic_remeasure, controlled_holdout, counterfactual_replay, or interrupted_time_series - **added** — A controlled-holdout harness runs a fix on and off on the same machine to judge changes whose payback lands outside the edited file - **added** — caveman learn reconcile checks measured spend against a provider usage export and generates a privacy-safe export digest - **changed** — The gateway buffers non-streaming upstream bodies before replying - **fixed** — Serve-mode warnings now land in ~/.caveman/proxy.log instead of vanishing - **changed** — The caveman ruleset's framing clauses were rewritten and the bundled agent skill registry was regenerated - **removed** — The GitHub Pages landing page is gone > **Superseded by [v2.3.1](https://github.com/JuliusBrussee/caveman/releases/tag/v2.3.1).** This tag's `install.sh` / `install.ps1` are still pinned at v2.2.0, so the v2.3.0 one-liner bootstraps the previous release. Use v2.3.1. Learn v3: `caveman learn` now says what the window **cost**, not just how many tokens moved — and every savings number it reports carries the method that measured it. ##### Learn v3 — spend and attributed savings - The scan reads billing buckets and outcome signals straight from agent transcripts (Claude, Codex, Gemini, opencode) and prices the window from provider-counted usage, so the cost figure is the provider's arithmetic rather than an estimate. - Confirmed savings are attributed to a **named method** — `deterministic_remeasure`, `controlled_holdout`, `counterfactual_replay`, or `interrupted_time_series`. Rungs are never summed into one blended headline, because a re-counted file and a before/after median are not the same kind of evidence. - A **controlled-holdout harness** runs a fix on and off on the same machine, so a change whose payback lands somewhere other than the file it edited (a distilled skill, say) can still be judged. Under 5 sessions per arm it returns `insufficient_data` instead of a small win. - `caveman learn reconcile` checks measured spend against a provider usage export, and a privacy-safe **export digest** makes that export shareable without shipping prompt text. - Spend, the savings ledger, and holdout reports surface in the CLI and in the `caveman-learn` skill. Spend is what the window cost — never what a fix would return, never projected into a month, and never called verified. On a Max/Plus plan it is the API-equivalent value of the tokens, not money spent. ##### Proxy - The gateway buffers non-streaming upstream bodies before replying. - Serve-mode warnings land in `~/.caveman/proxy.log` instead of vanishing. ##### Elsewhere - The caveman ruleset's framing clauses were rewritten, and the bundled agent skill registry regenerated. - The GitHub Pages landing page is gone. ##### Runtime Installs pin the **bin-v1.1.3** companions and **CLI 1.2.4**. All 36 binaries and the signed manifest are published at [bin-v1.1.3](https://github.com/JuliusBrussee/caveman/releases/tag/bin-v1.1.3). ##### Install ```bash curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/v2.3.0/install.sh | bash ``` ```powershell irm https://raw.githubusercontent.com/JuliusBrussee/caveman/v2.3.0/install.ps1 | iex ``` ### v2.2.0 - Date: 2026-08-20 - Version: v2.2.0 - Original notes: https://github.com/JuliusBrussee/caveman/releases/tag/v2.2.0 - Permalink: https://whatsnew.fyi/product/caveman/releases/v2.2.0 - **fixed** — Uninstall no longer deletes hook files while settings.json still points at them - **fixed** — Settings file that cannot be parsed or rewritten now causes a hard stop - **fixed** — POSIX and PowerShell uninstallers exit non-zero on missing node - **fixed** — Install leaves another plugin's hooks/package.json alone and removes only the manifest caveman ships - **security** — Installer temp downloads move to a 0700 mkdtemp to prevent a pre-planted symlink from capturing the init script - **fixed** — Binary installers give each download its own .part file to prevent concurrent installs from publishing each other's half-written files - **fixed** — Compress skill outer-fence strip no longer merges a document's first and last code blocks into prose - **fixed** — Compress skill validator now sees CommonMark indented code blocks - **fixed** — Compress skill treats lost file paths and renamed headings as errors instead of warnings - **changed** — cavecrew model overrides no longer rewrite tracked agents/*.md when the plugin root is a source checkout - **added** — benchmarks/run.py gains a terse control arm to separate skill improvements from baseline instruction effects Safety fixes across the installer, the uninstaller, and the compress skill. ##### Install / uninstall - Uninstall no longer deletes hook files while `settings.json` still points at them — that is #471 on every session start. A settings file it cannot parse or rewrite is now a hard stop, and the POSIX and PowerShell uninstallers exit non-zero on a missing `node` for the same reason. - Install leaves another plugin's `hooks/package.json` alone; uninstall removes only the manifest caveman ships. - Installer temp downloads move to a `0700` mkdtemp, so a pre-planted symlink can no longer capture the init script the installer then executes. - The binary installers give each download its own `.part`. The fixed name made the `O_EXCL` guard unreachable, letting concurrent installs publish each other's half-written files as "checksum verified". ##### Compress skill - The outer-fence strip no longer merges a document's first and last code blocks into prose. It matched any file that merely started and ended with a fence line. - The validator now sees CommonMark indented code blocks — a 4-space-indented `kubectl delete` was prose to it, so a rewritten destructive command passed clean and overwrote the file. - Lost file paths and renamed headings are errors, not warnings that let the in-place overwrite stand. ##### Hooks - cavecrew model overrides no longer rewrite tracked `agents/*.md` when the plugin root is a source checkout. ##### Benchmarks - `benchmarks/run.py` gains a terse control arm, so the next regenerated table separates what the skill adds from what any "answer concisely" instruction already buys. The published 65% is against an unprompted baseline and now says so. ##### Install ```bash curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/v2.2.0/install.sh | bash ``` ```powershell irm https://raw.githubusercontent.com/JuliusBrussee/caveman/v2.2.0/install.ps1 | iex ``` ### v2.1.0 - Date: 2026-08-16 - Version: v2.1.0 - Original notes: https://github.com/JuliusBrussee/caveman/releases/tag/v2.1.0 - Permalink: https://whatsnew.fyi/product/caveman/releases/v2.1.0 - **added** — Context-depth report showing each session's peak context-window share, bucketed, with over-30% and over-50% counts - **added** — Report UI with TLDR summary, two-card savings display showing proxy-measured saved-so-far and replay could-have-saved, and 30-day list-price cost illustration - **added** — Persisted shortcut and token telemetry in CLI - **added** — New twenty-chapter technical manual under docs/technical/ - **changed** — README rewritten as a landing page with proxy-first install, caveman learn showcase with real report screenshot, and skills-as-images - **changed** — Skill forbids caveman phrasing that adds tokens and names defect/ticket text - **changed** — Hooks resolve punctuated /caveman levels and stop prose firing mode triggers - **fixed** — Hooks degrade instead of crashing when a sibling hook file is missing - **fixed** — Compress: indented fence markers no longer break inline-code validation - **changed** — Installer installs Cursor skills globally - **fixed** — SSRF block errors now name the allowlist escape hatch - **changed** — Opencode agents drop provider-less model values ##### Caveman 2.1.0 ###### caveman learn - Context-depth report: each session's peak context-window share, bucketed, with over-30%/over-50% counts. - Report UI: TLDR summary, two-card savings (proxy-measured saved-so-far + replay could-have-saved), 30-day list-price cost illustration. ###### CLI - Persisted shortcut and token telemetry (feat/cli). ###### Skill and hooks - Skill forbids caveman phrasing that adds tokens; names defect/ticket text. - Hooks resolve punctuated /caveman levels and stop prose firing mode triggers; degrade instead of crashing when a sibling hook file is missing. - Compress: indented fence markers no longer break inline-code validation. - Installer installs Cursor skills globally; SSRF block errors name the allowlist escape hatch; opencode agents drop provider-less model values. ###### Docs - New twenty-chapter technical manual under docs/technical/. - README rewritten as a landing page: proxy-first install, caveman learn showcase with a real report screenshot, skills-as-images. All local numbers remain `inferred`; benchmark numbers remain `benchmark_counterfactual`. Installer pins bumped to v2.1.0. ### v2.0.0 — Caveman 2.0.0 — the engine ships - Date: 2026-08-11 - Version: v2.0.0 - Original notes: https://github.com/JuliusBrussee/caveman/releases/tag/v2.0.0 - Permalink: https://whatsnew.fyi/product/caveman/releases/v2.0.0 - **added** — Add a compression engine that compresses tool outputs, logs, code, and JSON before sending to the model - **added** — Add a proxy component to integrate compression into LLM applications - **added** — Add CLI tool for compression functionality - **added** — Add SDKs for multiple programming languages - **changed** — Change licensing model with MIT for skill, CLI, SDKs, kit, evals, contracts, catalog, and extension shell; BSL-1.1 for engine, proxy, MCP, shrink, cavemem-core, and platform with sunset to Apache-2.0 in approximately 4 years - **added** — Add compression evaluation tools and contracts for measuring compression savings **Caveman 2 — the engine ships.** v1 shrank the model's mouth (output). v2 adds the ears: a real compression engine that squeezes what the model *reads* — tool outputs, logs, code, JSON — before it ever hits the model. One line in front of any LLM app. Free, local, BYOK. **The skill is untouched and still MIT.** Nothing about your `/caveman` install changed. Real run: a 40-record JSON went `16,098 → 1,091 tokens` (93% smaller), byte-safe, fully recoverable via CCR. Savings are **inferred** — measured on your machine, not projected, not "verified." **Licensing:** MIT for the skill, CLI, SDKs, kit, evals, contracts, catalog, and extension shell. BSL-1.1 for the engine/proxy/mcp/shrink/cavemem-core/platform — self-host your own traffic (incl. production) free; only reselling Caveman-as-a-service needs a commercial license. Sunsets to Apache-2.0 in ~4 years. **Ships now:** engine, proxy, CLI, SDKs (as the packages resolve). **Coming soon:** browser extension. Install commands and pip/npm/docker badges go live when the packages publish. Want to help? New content-type compressors are the highest-leverage contribution — check `good first issue`.