Pushing a tag matching v* now creates / updates a GitHub release with
install.sh and install.ps1 attached, plus auto-generated changelog
(commit log between prev and current tag) and standard install
snippets in the body. Idempotent: re-pushing a tag updates the
existing release rather than failing.
For routine patch releases this replaces the manual `gh release create`
flow. For larger releases that need a hand-written narrative, you can
still overwrite the body via `gh release edit` afterward.
Anthropic stopped shipping cli.js in the npm package starting v2.1.113;
the package became a thin loader that dispatches to a per-platform Bun
standalone binary. The previous installer cp'd cli.js from the npm
tarball, which is why every install on v2.1.113+ fails with ENOENT.
This release rewrites the install pipeline to extract cli.js source
directly from the user's locally-installed Bun standalone binary
(__BUN segment, anchored on the file:///$bunfs/.../cli.js path),
rewrites virtual /$bunfs paths to local vendor/, runs cli.js under Bun
runtime instead of Node, and reapplies the existing 23 regex patches.
Highlights
- Extract cli.js from Mach-O / ELF / PE __BUN segment (the same source
Bun bundled at build time — not stale, not injected).
- Auto-install Bun runtime; require ripgrep up front (Bun's bundled rg
is unreachable when running extracted cli.js outside the standalone
bundle, so we depend on system rg).
- Wrapper now stamps the source version and detects drift on every
launch. When the user upgrades Claude Code, ClawGod transparently
re-extracts and re-patches before invoking the user's command.
- Patcher made resilient: regex tokens widened to [\\w$]+ for Bun's
newer minified identifiers; updated message-list filter and
auto-mode patches for v2.1.119 source shape; sentinel-based
verification catches future silent regex misses.
- New `clawgod` command alongside `claude` — unambiguous entry point
that survives Windows .exe / .cmd shadowing and official
self-update overwriting `claude`.
- Critical fix: launcher write no longer follows symlinks. Previously
`echo > $CLAUDE_BIN` clobbered the real binary when $CLAUDE_BIN was
the official symlink to ~/.local/share/claude/versions/<v>; we now
rm the entry first.
- Default features.json adds tengu_prompt_cache_1h_config allowlist
so 1h prompt cache actually engages (fixes silent 5m TTL fallback
that drove cache_creation token waste).
Verified: macOS arm64 against v2.1.117/2.1.118/2.1.119 native binaries;
23 patches applied with 0 failures; auto-repatch correctly handles
version transitions; claude / clawgod / claude.orig coexist cleanly.
Closes#40Closes#41Closes#42Closes#43Closes#45
- Patcher now requires sentinel absence (not just 0 regex matches) to
declare a patch "already applied", catching the v2.1.110 regression
where filter regexes silently missed their targets and the patcher
still reported success.
- Attachment filter regex extended to match v2.1.92+ form
(fn()!=="ant"&&paY.has(...)); marked optional since paY is empty in
current versions, making the filter effectively a no-op.
- Message list filter split into legacy ternary and v2.1.92+ s_8
branches so both old and new source shapes patch cleanly.
- Unique check only fails on >1 matches; 0 matches now fall through to
sentinel verification instead of being reported as success.
- Added sentinels for USER_TYPE, CYBER_RISK_INSTRUCTION, URL
restriction, and cautious-actions patches.
Verified: v2.1.92 and v2.1.110 both patch clean (23 applied, 0 failed);
re-running on a patched file correctly reports "already applied" via
sentinel without false positives.
- Requirements now lists OAuth login OR an API key in
~/.clawgod/provider.json as valid startup paths, instead of
implying claude auth login is mandatory
- New Configuration / 配置 / 設定 section documents provider.json
fields (apiKey / baseURL / model / smallModel / timeoutMs) and
explains the two wrapper paths: forced env override + config
isolation when apiKey is set vs OAuth reuse of ~/.claude when
apiKey is empty, plus auto-injected ANTHROPIC_AUTH_TOKEN for
non-Anthropic baseURL gateways
- Applied identically to README.md, README_ZH.md, README_JP.md
Fixes#38Closes#38
- Launcher now prints a clean error + reinstall hint when
~/.clawgod/cli.js is missing, instead of the Node module loader
stack trace users see after deleting the install dir.
- Patcher drops the firstParty/anthropicAws gate in iG6 so
third-party API users can use auto-mode.
- Wrapper force-sets CLAUDE_CONFIG_DIR=~/.clawgod when provider.json
has an apiKey, preventing ~/.claude/settings.json from shadowing
base URL / model. OAuth users keep ~/.claude so subagents and
skills continue to work.
Closes#19Closes#23Closes#27Closes#31
Refs #22
Refs #29
Refs #30
- Embed extract-natives.mjs in install.sh/install.ps1 to pull
image-processor, audio-capture, computer-use-*, url-handler .node
modules out of the user's local Bun single-file binary
(Mach-O/ELF/PE), enabling Voice Mode / Computer Use on the npm build
- Add tengu_prompt_cache_1h_config allowlist ["*"] to default
features.json so IuY() grants 1h TTL; previously empty allowlist
silently downgraded all requests to 5m cache, causing heavy
cache_creation token burn after short idle periods
- Fix: grep whole file instead of head -1 when checking if claude
is a ClawGod launcher (head -1 only reads #!/bin/bash, never
matches "clawgod" which is on line 2)
- Add: Computer Use gate bypass (bypass GrowthBook override)
- Add: Voice Mode enable (bypass GrowthBook kill switch)
- Add: tengu_malort_pedway and tengu_amber_quartz_disabled to
default features.json
Fixes#20
- Clean up all claude.*.exe (except claude.orig.exe) before each install
- First install: rename claude.exe → claude.orig.exe
- Repeat install: delete claude.exe, fallback to timestamp rename if locked
- No more accumulation of claude.old.exe / claude.timestamp.exe
Fixes#17
- Use `which claude` to detect actual binary location instead of
hardcoding ~/.local/bin/ — supports pnpm, npm, yarn global installs
- Add `|| true` to prevent set -e from killing script when
grep fails to match Mach-O/ELF in versions directory
- Backup and restore now handle both detected path and default path
- Uninstall checks both locations for claude.orig
Fixes#7
Windows fixes:
- Rename claude.exe → claude.orig.exe instead of delete (works even
if exe is running, handles repeated installs safely)
- Fix package.json: merge "type":"module" instead of overwriting
(was destroying npm dependencies)
- Fix launcher path: proper expansion for paths with spaces
README (EN/ZH/JP):
- Clarify this is NOT a third-party client, but a runtime patch
on top of official Claude Code that works across versions
- Add "type": "module" to package.json after npm install (fixes#2)
- Run hash -r after install + warn user to restart terminal (fixes#1)
- Fix cautious actions removal: replace entire function body instead
of deleting template content (was causing SyntaxError)
- Remove 'lin' alias from public release
Closes#1, closes#2