# caveman v2.2.0 - Product: caveman (https://whatsnew.fyi/product/caveman) - Vendor: Julius Brussee - 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 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'. --- - **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 ```