Shell Hook Hardening: Complete Developer Environment Coverage
Addresses user-reported issues where npm run dev hangs and shell compression is too aggressive for human-readable output. Massively expands passthrough command coverage across all developer ecosystems.
Bug fixes
npm run devno longer hangs: Script runner commands (npm run dev,yarn start,pnpm serve,bun run watch, etc.) are now recognized as long-running processes and bypass compression entirely. Previously,exec_bufferedwould wait forever for the dev server to exit.npm runcompression less aggressive:compress_runnow shows up to 15 lines verbatim (was 5) and keeps the last 10 lines of longer output (was 3).- Case-sensitive passthrough patterns fixed: Patterns like
bootRun,-S,-A,-Bnow correctly match after case normalization inis_excluded_command.
Shell passthrough expansion (~85 new entries)
- Package manager script runners:
npm run dev/start/serve/watch/preview/storybook,npm start,npx,pnpm run dev/start/serve/watch,pnpm dev/start/preview,yarn dev/start/serve/watch/preview/storybook,bun run dev/start/serve/watch/preview,bun start,deno task dev/start/serve,deno run --watch - Python:
flask run,uvicorn,gunicorn,hypercorn,daphne,django-admin runserver,manage.py runserver,python -m http.server,streamlit run,gradio,celery worker/beat,dramatiq,rq worker,ptw,pytest-watch - Ruby/Rails:
rails server/s,puma,unicorn,thin start,foreman start,overmind start,guard,sidekiq,resque - PHP/Laravel:
php artisan serve/queue:work/queue:listen/horizon/tinker,php -S,sail up - Java/JVM:
gradlew bootRun/run,gradle bootRun,mvn spring-boot:run,mvn quarkus:dev,sbt run/~compile,lein run/repl - Go:
go run,air,gin,realize start,reflex,gowatch - .NET:
dotnet run,dotnet watch,dotnet ef - Elixir:
mix phx.server,iex -S mix - Swift:
swift run,swift package,vapor serve - Zig:
zig build run - Rust:
cargo run,cargo leptos watch,bacon - Task runners:
make dev/serve/watch/run/start,just dev/serve/watch/start/run,task dev/serve/watch,nix develop,devenv up - CI/CD:
docker compose watch,skaffold dev,tilt up,garden dev,telepresence,act - Networking/monitoring:
mtr,nmap,iperf/iperf3,ss -l,netstat -l,lsof -i,socat - Load testing:
ab,wrk,hey,vegeta,k6 run,artillery run
Smart script-runner detection
- New heuristic: any
npm run/pnpm run/yarn/bun run/deno taskcommand where the script name containsdev,start,serve,watch,preview,storybook,hot,live, orhmris automatically treated as passthrough. Catches variants likenpm run dev:ssr,yarn start:production,pnpm run serve:local,bun run watch:css.
New adversarial tests (12 tests)
npm installpackage name/count preservationnpm installexplicit package names (express,lodash,axios)cargo builderror codes (E0308, E0599) with file:lineeslintrule IDs and error countsgo buildfile:line error locationsdocker buildstep failure errorstsctype error codes (TS2304, TS2339) with file referencesdotnet buildCS0246 errors and build resultcomposer installpackage countscargo testfailure countskubectl get podsCrashLoopBackOff/Error statusterraform plandestructive action preservation
New passthrough tests (15 test functions)
Organized by ecosystem: npm, pnpm, yarn, bun/deno, Python, Ruby, PHP, Java, Go, .NET, Elixir, Swift/Zig, Rust, task runners, CI/CD, networking, load testing, smart detection, false-positive guard.
Website
- Fixed i18n validation: removed duplicate
docsGettingStarted.evalInit*keys from 10 locale files that caused GitLab CI pipeline failure.
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.3.1...v3.3.1