Fixed
- Git stash compression too aggressive (#114):
git stash listwith ≤5 entries is now preserved verbatim.git stash show -pcorrectly routes to the diff compressor instead of the stash compressor. Addedsafeguard_ratiotoctx_shellto prevent over-compression (minimum 15% of original output preserved). - Windows Bash hook path stripping (#113): On Windows with Git Bash / MSYS2, the lean-ctx binary path had slashes stripped (
E:packageslean-ctx.exeinstead of/e/packages/lean-ctx.exe).resolve_binary()now appliesto_bash_compatible_pathon all platforms. - Windows UNC path breakage (
\\?\prefix):std::fs::canonicalize()on Windows adds extended-length path prefixes that break tools and string comparisons. Newcore::pathutilmodule providessafe_canonicalize()andstrip_verbatim()used consistently across graph indexing, session state, path jailing, architecture tool, and hook handlers. - Dashboard showing empty graphs:
detect_project_root_for_dashboard()was using the MCP session's temp sandbox directory instead of the actual project. Now validates project roots against.gitand project markers before using them; falls through toshell_cwdwhen project_root is invalid. Added--project=CLI flag andLEAN_CTX_DASHBOARD_PROJECTenv var for explicit override. - Dashboard Call Graph/Route Map empty states: Enriched
/api/call-graphand/api/routesresponses with metadata (indexed file count, symbol count, route candidates) so the UI shows actionable guidance instead of generic "nothing found" messages. - Codex uninstall incomplete (#116):
lean-ctx uninstallnow correctly removes the[mcp_servers.lean-ctx]section from Codex's TOML config, removes~/.codex/hooks.json, and resets thecodex_hooksfeature flag. - Repo-local config missing fields (#98):
merge_local()now supportsauto_consolidate,dedup_threshold,consolidate_every_calls,consolidate_cooldown_secs, and bidirectionalsilent_preloadoverride from.lean-ctx.toml.
Added
- Hermes Agent support (#112): Full integration for Hermes Agent (Nous Research).
lean-ctx init --agent hermes --globalconfigures MCP via YAML (~/.hermes/config.yaml), createsHERMES.mdrules. Setup auto-detects~/.hermes/, doctor checks Hermes config, uninstall cleans up YAML + rules. - Kotlin graph analysis (#96):
ctx_graph,ctx_callers, andctx_calleesnow produce meaningful results for Kotlin projects. Tree-sitter-backed import extraction, call-site analysis, type-definition extraction, and Java interop with stdlib filtering. - Repo-local configuration (#98):
.lean-ctx.tomlin project root for per-project overrides. Supportsextra_ignore_patterns(graph/overview exclusions), autonomy settings, and all config fields.lean-ctx cache reset --projectclears only current project's cache. - Post-update MCP refresh:
lean-ctx updatenow verifies and refreshes MCP configurations for all detected editors after binary replacement. - Dashboard "Savings by Source": Live Observatory and
lean-ctx gainnow show a breakdown of MCP Tools vs. Shell Hooks with individual compression rates and proportional bars. - Pi MCP bridge resilience: Host-cancelled tool calls are handled cleanly with abort signal forwarding and error normalization. Hung MCP calls timeout after 120s with automatic reconnect and retry for read-safe tools. Bridge status includes diagnostics (last error, hung tool, retry state).
Community
- Merged PR #111 — fix Windows graph path compatibility (@Chokitus)
- Merged PR #115 — handle host-cancelled MCP tool calls in Pi bridge (@frpboy)
- Merged PR #118 — improve dashboard empty-state UX for Route Map and Call Graph (@frpboy)
- Merged PR #122 — timeout and retry hung MCP tool calls in Pi bridge (@frpboy)
Upgrade
lean-ctx update # recommended (auto-downloads + refreshes shell hooks)
cargo install lean-ctx # or
npm update -g lean-ctx-bin # or
brew upgrade lean-ctxNote: After upgrading via cargo/npm/brew, run
lean-ctx setupto refresh shell aliases.lean-ctx updatedoes this automatically.
Full Changelog: v3.2.4...v3.2.4