What's New
⚡ 70x Faster Scanning
- In-memory
ProcessTree replaces per-process execSync calls
- Single
ps call builds complete process tree — all checks via O(1) memory lookup
- 4 seconds → 57ms for 100 processes
🎯 Expanded AI Tool Detection
- New patterns:
claude --session-id, codex-sandbox, aider, gemini-cli
- AI tool directory detection framework (
AI_TOOL_DIRS) for future tool support
- User-extensible via
config.customAiDirs
🛡️ Zero False Positives
- Generic patterns (
tsx, npx, vite, esbuild, webpack, next dev) now require AI tool path context
tsx watch server.ts → ignored (not AI-related)
tsx .claude/mcp-server/index.ts → detected (AI-related orphan)
🐛 Bug Fixes
- tmux orphan detection: Orphaned processes (PPID=1) are no longer skipped by the tmux/screen check
- CPU spin wait removed: Sleep-based wait replaces 100% CPU busy-loops during kill
- Kill rate limiting:
maxKillBatch (default 20) prevents killing too many processes at once
📦 Installer Improvements
- macOS launchd plist uses absolute binary path (no more
npx failures)
- NVM node bin path auto-detected for launchd environment
Upgrade
npx @thestackai/zclean@latest
Full Changelog
v0.1.0...v0.2.0