v3.6.17
Added
- Antigravity CLI 2.0 as separate init target —
lean-ctx init --agent antigravity-cliwrites MCP config to~/.gemini/antigravity-cli/mcp_config.json, distinct from the IDE target (antigravity).lean-ctx init --agent gemininow auto-configures both Antigravity IDE and CLI paths (#284) - Doctor: daemon diagnostics —
lean-ctx doctorshowssystemctl --user is-activestate on Linux, warns whenloginctl enable-lingeris not set (required for boot-time start without login), and displays crash-loop log restart count with file path (#288, #289) - Crash-loop log path API — New
crash_loop_log_path()public function for programmatic access to the MCP server restart history
Fixed
- Uninstall completeness (#274) —
.bakfiles containing lean-ctx content,.lean-ctx.invalid.*.baktemporaries,~/.config/lean-ctxXDG data directory, and project-local.lean-ctx/+.lean-ctx-idfiles are now cleaned up. Claude CLI MCP registry entries removed viaclaude mcp remove.--keep-configflag preserves MCP configs and rules for reinstall - Linux daemon autostart (#288, #289) —
systemctl --user enablefailures now print actionable error messages with manual fix commands.is_installed()checkssystemctl is-enabledin addition to service file existence. Linger hint displayed when linger is not active - Windows paths with spaces — Shell hook rewrites use
shell_tokenize()(respects single/double quotes, backslash escapes) instead ofsplit_whitespace().shell_quote()properly quotes arguments containing special characters - Windows drive-letter grep parsing —
parse_grep_line()andextract_file_from_match()correctly skipC:drive prefix, preventing misinterpretation as file path separator - Panic loop-undo (#277, #271) —
catch_unwindhandler incall_toolnow callsrecord_error_outcome()on the loop detector, so panicking tools are correctly counted as failures and subject to throttling instead of infinite retry - PowerShell detection DRY (#286) — Replaced inline
shell.to_lowercase().contains("powershell")check inshell/exec.rswithplatform::is_powershell(), single source of truth - Windows CI (#286) — Fixed
unused variable: quietindaemon_autostart.rson non-Unix platforms. Shell wrapping tests now use platform-aware assertions (expect_wrapped()helper) that work on both Unix (single-quotes) and Windows (double-quotes with escaping) - Index scoping — Project index scans restricted to project root via
is_safe_scan_root()guard.index statusCLI output shows real values instead of nulls - Workflow singleton — Workflow state is now agent-scoped (
workflow-{agent_id}.json) instead of globalactive.json. Stale workflows auto-cleaned after TTL expiry - JSONC UTF-8 safety —
strip_json_commentsusesfloor_char_boundary/ceil_char_boundaryfor all string slicing, preventing panics on multi-byte characters in comments ls -lahsize passthrough — Human-readable sizes (e.g.4.0K,1.2M) fromls -lh/ls -lahare preserved instead of being converted to0B- MCP server crash hardening —
Mutex::lock().unwrap()in hot paths replaced with graceful fallbacks.memory_guarduses eviction loop instead ofprocess::exit. CSPRNG fallback for dashboard nonce generation - Proxy: accept provider API keys on loopback — Provider routes now accept API keys from local clients (#276)
Changed
- Antigravity IDE renamed — The existing Antigravity target is now labeled "Antigravity IDE" in display names and doctor output, distinguishing it from the new "Antigravity CLI" target
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.6.17...v3.6.17