All notable changes to whetstone will be documented in this file.
- add Tool Search toggle and Headroom rollout/shaper knobs (#97)
- add scroll support and update model defaults to Opus (#125)
- correctly update mise-managed Claude Code installs (#98)
- bump ureq from 3.4.1 to 3.4.2 (#124)
- bump ureq from 2.12.1 to 3.4.1 (#119)
- bump dirs from 6.0.0 to 7.0.0 (#118)
- bump serde_json from 1.0.149 to 1.0.151 (#116)
- bump tar from 0.4.45 to 0.4.46 (#117)
- bump rusqlite from 0.31.0 to 0.40.2 (#115)
- bump actions/checkout from 4 to 7 (#101)
- bump actions/upload-artifact from 4 to 7 (#102)
- bump softprops/action-gh-release from 2 to 3 (#103)
- bump which from 6.0.3 to 8.0.6 (#113)
- bump clap from 4.6.1 to 4.6.6 (#108)
- bump crossterm from 0.28.1 to 0.29.0 (#110)
- bump serde from 1.0.228 to 1.0.229 (#107)
- bump ratatui from 0.30.0 to 0.30.2 (#111)
- bump actions/download-artifact from 4 to 8 (#104)
- bump anyhow from 1.0.102 to 1.0.104 (#106)
- bump chrono from 0.4.44 to 0.4.45 (#109)
- bump flate2 from 1.1.9 to 1.1.10 (#112)
- bump dirs from 5.0.1 to 6.0.0 (#114)
- add Tool Search toggle and Headroom rollout/shaper knobs (#97)
- add scroll support and update model defaults to Opus (#125)
- correctly update mise-managed Claude Code installs (#98)
- bump ureq from 3.4.1 to 3.4.2 (#124)
- bump ureq from 2.12.1 to 3.4.1 (#119)
- bump dirs from 6.0.0 to 7.0.0 (#118)
- bump serde_json from 1.0.149 to 1.0.151 (#116)
- bump tar from 0.4.45 to 0.4.46 (#117)
- bump rusqlite from 0.31.0 to 0.40.2 (#115)
- bump actions/checkout from 4 to 7 (#101)
- bump actions/upload-artifact from 4 to 7 (#102)
- bump softprops/action-gh-release from 2 to 3 (#103)
- bump which from 6.0.3 to 8.0.6 (#113)
- bump clap from 4.6.1 to 4.6.6 (#108)
- bump crossterm from 0.28.1 to 0.29.0 (#110)
- bump serde from 1.0.228 to 1.0.229 (#107)
- bump ratatui from 0.30.0 to 0.30.2 (#111)
- bump actions/download-artifact from 4 to 8 (#104)
- bump anyhow from 1.0.102 to 1.0.104 (#106)
- bump chrono from 0.4.44 to 0.4.45 (#109)
- bump flate2 from 1.1.9 to 1.1.10 (#112)
- bump dirs from 5.0.1 to 6.0.0 (#114)
- add Tool Search toggle and Headroom rollout/shaper knobs (#97)
- add scroll support and update model defaults to Opus (#125)
- correctly update mise-managed Claude Code installs (#98)
- bump ureq from 3.4.1 to 3.4.2 (#124)
- bump ureq from 2.12.1 to 3.4.1 (#119)
- bump dirs from 6.0.0 to 7.0.0 (#118)
- bump serde_json from 1.0.149 to 1.0.151 (#116)
- bump tar from 0.4.45 to 0.4.46 (#117)
- bump rusqlite from 0.31.0 to 0.40.2 (#115)
- bump actions/checkout from 4 to 7 (#101)
- bump actions/upload-artifact from 4 to 7 (#102)
- bump softprops/action-gh-release from 2 to 3 (#103)
- bump which from 6.0.3 to 8.0.6 (#113)
- bump clap from 4.6.1 to 4.6.6 (#108)
- bump crossterm from 0.28.1 to 0.29.0 (#110)
- bump serde from 1.0.228 to 1.0.229 (#107)
- bump ratatui from 0.30.0 to 0.30.2 (#111)
- bump actions/download-artifact from 4 to 8 (#104)
- bump anyhow from 1.0.102 to 1.0.104 (#106)
- bump chrono from 0.4.44 to 0.4.45 (#109)
- bump flate2 from 1.1.9 to 1.1.10 (#112)
- bump dirs from 5.0.1 to 6.0.0 (#114)
- add Tool Search toggle and Headroom rollout/shaper knobs (#97)
- correctly update mise-managed Claude Code installs (#98)
- add Headroom Savings Profile setting
- kill registered proxies on global uninstall
- per-config proxy selection; drop memory-conflict prompt
- prune + reuse/spawn resolve orchestrator
- launch-order 8787 port anchor
- add lockfile guard for the registry
- add proxy registry load/save
- add ProxySpec config fingerprint
- add install-tools command and doctor startup/extras verification (#89)
- add HEADROOM_BEACON opt-out toggle to settings (#87)
- point wrap claude at the managed per-config proxy port (#95)
- tolerate transient probe + surface registry save errors
- remove dead test scaffolding struct
- add PID ownership check to lockfile guard, fix deadline check, and remove unused imports
- use fixed-size arrays for mode/profile consts
- per-config proxy plan + launch-order anchor spec refinement
- per-config headroom proxy reuse design
- add Headroom Savings Profile setting
- kill registered proxies on global uninstall
- per-config proxy selection; drop memory-conflict prompt
- prune + reuse/spawn resolve orchestrator
- launch-order 8787 port anchor
- add lockfile guard for the registry
- add proxy registry load/save
- add ProxySpec config fingerprint
- add install-tools command and doctor startup/extras verification (#89)
- add HEADROOM_BEACON opt-out toggle to settings (#87)
- tolerate transient probe + surface registry save errors
- remove dead test scaffolding struct
- add PID ownership check to lockfile guard, fix deadline check, and remove unused imports
- use fixed-size arrays for mode/profile consts
- per-config proxy plan + launch-order anchor spec refinement
- per-config headroom proxy reuse design
- kill registered proxies on global uninstall
- per-config proxy selection; drop memory-conflict prompt
- prune + reuse/spawn resolve orchestrator
- launch-order 8787 port anchor
- add lockfile guard for the registry
- add proxy registry load/save
- add ProxySpec config fingerprint
- add install-tools command and doctor startup/extras verification (#89)
- add HEADROOM_BEACON opt-out toggle to settings (#87)
- tolerate transient probe + surface registry save errors
- remove dead test scaffolding struct
- add PID ownership check to lockfile guard, fix deadline check, and remove unused imports
- per-config proxy plan + launch-order anchor spec refinement
- per-config headroom proxy reuse design
- add install-tools command and doctor startup/extras verification (#89)
- add HEADROOM_BEACON opt-out toggle to settings (#87)
-
whetstone install-tools— install or repair every managed dependency (headroom, rtk, claude code, memory provider), re-run theirinithooks, and resync the project manifest;--forcereinstalls everything -
whetstone doctornow checks that the managed dependencies still exist before inspecting~/.claude/settings.json, offers to reinstall the missing ones (--fixskips the prompt), and reports missing system prerequisites -
launching a managed tool that was uninstalled now offers to reinstall it instead of failing with a bare
execerror -
whetstone doctornow verifies that headroom actually starts: it probes the running proxy, or spawns a throwaway one on a free port with the same args and env whetstone launches with, and reports headroom's own startup error when it dies. A start blocked by a rollout-gated flag (e.g.read_maturationin~/.headroom/settings.json) is offered for removal —--fixremoves it, with a backup, and re-checks
- whetstone now verifies headroom's extras, not just its version: an install
recorded by uv without
proxy/code/mcpis reported bydoctorand reinstalled asheadroom-ai[proxy,code,mcp]instead of passing as healthy
- add HEADROOM_BEACON opt-out toggle to settings (#87)
- add configurable Claude Code edit mode setting (#81)
- actually check and upgrade ICM in whetstone update (#85)
- pin Headroom memory to a global root, stop cross-project litter (#83)
- stop passing --no-rtk to headroom wrap (#79)
- stop v3 slash commands from triggering false v2 migration (#78)
- add configurable Claude Code edit mode setting (#81)
- pin Headroom memory to a global root, stop cross-project litter (#83)
- stop passing --no-rtk to headroom wrap (#79)
- stop v3 slash commands from triggering false v2 migration (#78)
- add configurable Claude Code edit mode setting (#81)
- stop passing --no-rtk to headroom wrap (#79)
- stop v3 slash commands from triggering false v2 migration (#78)
- stop passing --no-rtk to headroom wrap (#79)
- stop v3 slash commands from triggering false v2 migration (#78)
- add curated HEADROOM_* knobs to settings TUI (#75)
- headroom_env launch passthrough + 80-char reflow (#74)
- launch-time model-update prompt (#72)
- scope uninstall into project/global; add Anthropic API URL setting (#71)
- add superpowers planning and spec for model-update-prompt (#73)
- Launch-time model-update prompt: when Anthropic ships a model newer than the one this project runs — or a brand-new model family —
whetstoneshows a full-screen modal offering to pin it as the project default, use it for one session only, or dismiss it. Dismissals are remembered per-project (dismissed_modelsin.claude/whetstone.json). The prompt is skipped when non-interactive, offline, not a v3 project, or when--modelis passed explicitly. - Anthropic API URL setting in
whetstone settings— a custom upstream Anthropic API URL for the Headroom proxy, exported asANTHROPIC_TARGET_API_URLbefore launch (project- or global-scoped; an externally-set env var takes precedence) - Opinionated Headroom launch defaults with full override control: whetstone
now sets
HEADROOM_CODE_AWARE_ENABLED=1(and suppresses Headroom's own memory tools when ICM is the provider) alongside the existingagent-90savings profile. Every Headroom knob is overridable via aheadroom_envmap in.claude/whetstone.jsonor~/.whetstone/settings.json(project-over-global), with externalHEADROOM_*env vars winning over both.HEADROOM_PORTstays whetstone-owned.
- Split
whetstone uninstallintowhetstone project uninstall(removes per-project files) andwhetstone global uninstall(removes the whetstone binary, RTK, and Headroom). The top-leveluninstallcommand is deprecated: it now removes nothing and prints guidance toward the two scoped commands.
- add --memory flag and Headroom Memory setting (#67)
- re-sync headroom MCP on update; prefer newest Sonnet as default model (#68)
- integrate self-update and migration into setup command (#62)
- settings TUI with global/project layering (#57)
- store changelog regex patterns in variables for bash compatibility
- update the claude models (#64)
- integrate self-update and migration into setup command (#62)
- settings TUI with global/project layering (#57)
- store changelog regex patterns in variables for bash compatibility
- update the claude models (#64)
- integrate self-update and migration into setup command (#62)
- settings TUI with global/project layering (#57)
- store changelog regex patterns in variables for bash compatibility
- settings TUI with global/project layering (#57)
- store changelog regex patterns in variables for bash compatibility
- settings TUI with global/project layering
- prompt to run setup in unconfigured projects
- pass --no-proxy so headroom wrap never hot-restarts the proxy
- start headroom proxy with HEADROOM_SAVINGS_PROFILE
- conditional --savings-profile and installMethod mismatch fix
- version bump (no user-facing changes)
- detect and fix stale headroom pip installs shadowing uv-managed binary
- detect and fix stale Claude Code native binary installs
- clause update logic
- correct MIN_VERSION grep patterns in metadata generation
- metadata-driven dynamic site content
- ratatui inline viewport for wizard, pin default model
- site changelog driven from CHANGELOG.md
- drive Releases section from CHANGELOG.md
v3 is a structural rewrite. whetstone setup will refuse to silently install
over a v2 project and hand off to whetstone migrate instead. Migrating is
one command, archive-backed, and reversible. See the
Migration Guide.
- AutoMem provider removed.
MemoryProvideris now{ Icm, Skip }. ThemcpServers.memoryblock is torn out of~/.claude/settings.json(backed up in the migration archive) and the external FalkorDB + Qdrant service, if one was running, is no longer in whetstone's blast radius — tear it down yourself. - Whetstone no longer bundles skills, rules, or hook scripts. The five
hand-rolled
assets/hooks/*.shscripts, the 20-skill / 8-ruleassets/skills/+assets/rules/trees, theMEMSTACK.mdshim, and thewhetstone-managed entries in~/.claude/settings.jsonare all gone. ICM owns its own assets; whetstone delegates toicm init --mode standard. - Hooks are tool-managed.
~/.claude/settings.jsonis no longer hand-merged by whetstone.rtk init --auto-patchandicm initwrite their own hook entries;whetstone doctorinspects ordering and reports drift. - Migration is required. Existing v2 installs (detected by
.claude/memstack/, the v2 hook scripts, the AutoMem MCP block, or the v2-flavoured skills/rules layout) must runwhetstone migratebefore any v3 command will configure them.whetstone setupauto-detects v2 and routes tomigrate.--rollback <id>restores the v2 state byte-for-byte (except the external AutoMem service). config.local.jsonremoved. Replaced by.claude/whetstone.json(schema version, integration version, provider, tool versions, timestamps).- Hardcoded
--modelinjection removed.whetstone claudeno longer forces a specific model; Claude Code's own settings choose it.
whetstone migrate— staged, reversible v2 → v3 migration with--dry-run,-y, and--rollback <id>. Archives backups under.whetstone/migration-<id>/. Seedocs/migration.md.whetstone doctor— inspects installed tool versions,~/.claude/settings.jsonhooks, and the per-project manifest.whetstone dashboard— TUI for installed tool versions vs. pinned floors.whetstone stats— token-savings summary from RTK + Headroom stats endpoints.whetstone setupauto-detects v2 and hands off tomigratein both the wizard and headless paths.install.shre-execswhetstone setupagainst/dev/ttyso the TUI wizard actually runs undercurl | bash; offers to installuvinstead of aborting the preflight.whetstone(default cmd) waits for the proxy before exec'ing claude so the first API call doesn't fire against a deadANTHROPIC_BASE_URL.
- v3 phase 1 — thin orchestrator: whetstone no longer hand-writes
~/.claude/settings.jsonhooks. Setup delegates tortk init --auto-patchandicm init --mode standard. Newwhetstone doctorsubcommand inspects hook ordering and reports drift. whetstone.jsonmanifest: replacesconfig.local.json. Records schema version, integration version, provider, tool versions, and timestamps. Lives at.claude/whetstone.json.- MemoryProvider collapsed to
{ Icm, Skip }— AutoMem install path,preflight::check_npm, and AutoMem detection removed.
- All five
assets/hooks/*.shscripts andsrc/hooks.rs— the tools own their own Claude Code hooks now. - Hardcoded
--modelinjection inwrapper.rs. Claude Code's own settings choose the model. Model-upgrade prompt + dismissal-file machinery removed.
- RTK
MIN_VERSION: was0.39.0, which never shipped — everyinstall()re-installed. Raised to0.42.0(interface-contract pin). whetstone update --full: flag was previously ignored. Now forces a refresh ofrtkandheadroomeven when up-to-date.- Version drift: the marketing site reads
WHETSTONE_VERSIONfromsite/src/version.js, regenerated byjust releasefrom the repo-rootVERSIONfile. No more hardcoded2.2.2inReleases.jsx/InstallTerminal.jsx.
- Release workflow: give verify-release job explicit repo context so
gh releasecommands work without a local git checkout.
- Justfile release recipe corrections.
whetstone versioncommand showing component versions with outdated indicators.- TUI setup wizard.
- Suppressed noisy installer output during
whetstone update.