Security
-
Installs now pinned + integrity-checked (#261, #262)
curl|bashand detached installs no longer fetch hook files from the moving
mainbranch — they download from the immutablev1.9.0tag and verify
every hook againstsrc/hooks/checksums.sha256(SHA-256) before anything
executes. Mismatch aborts the install. This is the first tag shipping the
manifest, so enforcement is fully active as of this release. -
fix(docs): escape user input in the demo terminal (#438)
The docs site demo interpolated user input viainnerHTML— a real
reflected DOM XSS. Nodes are built withtextContentnow.
opencode actually works now
Smoke-tested against a real opencode runtime for the first time — and the
plugin turned out to never load: opencode runs plugins inside a compiled Bun
binary where both require() of on-disk files and await import() of CJS
silently fail. Fixed by evaluating the shared config as CommonJS by hand.
Also fixed in the same pass, all verified end-to-end against opencode 1.4.0:
- Real lifecycle hooks:
eventdispatcher for session init,chat.message
for mode parsing,experimental.chat.system.transformfor per-turn
reinforcement — the old hook keys never existed and were silently ignored (#418, #421) - Session-init flag write no longer misses one-shot
opencode runsessions /caveman <level>works both through the TUI command template expansion
and the quoted non-interactiverunpath/caveman-compresscommand file now ships (was gitignored) (#398, #426, #451, #464)
Features
- Repo-local config (#429) — check in
.caveman/config.json(or
.caveman.json) to pin a per-project default mode for the whole team.
Resolution order: env var → repo config → user config →full. - Natural-language brevity triggers (#248) — "less tokens", "be brief",
"be terse" now activate caveman mode.
Fixes
- Installer: Copilot detection via extension dirs (#437),
npx skills add
honors the agent profile again (#395), orphaned managed hooks pruned from
settings.json(#472), no double hook-wiring when the plugin manifest
already wires them (#393), MCP-shrink is opt-in and requires an upstream
(#380), opencode config dir corrected to~/.config/opencodeon Windows
(#376), PowerShell$Argscollision (#414), cavecrew agent copies strip
tools:for opencode (#443) - caveman-compress: UTF-8 pinned subprocess (fixes Windows cp1252 crash,
#388/#152),claude.cmdresolution on Windows (#435), YAML frontmatter
preserved (#424), backups written outside the source tree (#420) - Skill: replies preserve the user's language (#446), no self-reference
(#469), full-mode output guardrails (#322), fixed corrupted wenyan example - Stats: Opus 4.5+ output price corrected $75 → $25/M (#466), statusline
pickaxe renders on Windows (#459) - MCP-shrink:
npx/.cmdupstream resolution on Windows (#387)
Maintenance
- Sponsors section (welcome, Atlas Cloud), caveman-code + cavegemma in the
ecosystem table, stale pre-cleanup dotdir mirrors removed, init tests no
longer touch the developer's real~/.openclawworkspace.
Upgrade
curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.sh | bash
Existing installs: re-run the same one-liner — idempotent. opencode users
should re-run with --force to pick up the fixed plugin:
npx -y github:JuliusBrussee/caveman -- --only opencode --force
🤖 Generated with Claude Code