Added
- Built-in
passthroughprofile: No output modification — always full content, zero compression. Use viaLEAN_CTX_PROFILE=passthroughorlean-ctx config set profile passthrough. Includesdefault_mode=full,crp_mode=off,degradation.enforce=false,pipeline: all false,max_tokens_per_file=10M,max_context_tokens=1M. - Persistent profile selection via config.toml: New
profilefield in config.toml provides a fallback whenLEAN_CTX_PROFILEenv var is not set. Resolution order: env var → config.toml → "coder" default. Set vialean-ctx config set profile <name>. - Profile config schema entry:
lean-ctx config shownow displays theprofilekey.
Fixed
LEAN_CTX_FULL_TOOLS=0incorrectly treated as ON:is_ok()only checked existence, not value. Now=0and=falseare correctly treated as disabled.mode=fullreturning stubs/deltas in passthrough mode:handle_full_with_auto_deltaignoredno_degradeand passthrough profiles. Cache stubs and auto-deltas are now skipped whenno_degrade=trueor when the active profile hasdefault_mode=full+crp_mode=off.- MCP schema claimed default mode was
full: Thectx_readtool description said "default: full" but the actual default wasauto(resolved by AutoModeResolver). Agents that omitted themodeargument got compressed output instead of full content. Schema now correctly states "default: auto". - Silent fallback to
coderprofile: WhenLEAN_CTX_PROFILEpointed to a non-existent profile name, lean-ctx silently fell back tocoderwithout any warning. Now logs atracing::warnwith the missing profile name and creation instructions.
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.19...v3.6.19