mirror of
https://github.com/Jeuners/ECC.git
synced 2026-09-09 23:12:30 +02:00
* fix(windows): prefer PowerShell over bash to prevent zombie process accumulation On Windows, ECC hook scripts were spawning bash.exe (MSYS2/Git Bash) on every tool use via findShellBinary(). These processes were not reaped by Windows, causing 40+ zombie bash.exe/conhost.exe processes per session with noticeable system lag. Changes to scripts/hooks/plugin-hook-bootstrap.js: - Add isPowerShellBin(bin) helper: basename-based detection so full paths like C:\Windows\...\powershell.exe are handled correctly - findShellBinary(): check BASH env var first (preserves escape hatch), then on win32 probe pwsh.exe -> powershell.exe -> bash.exe -> bash; use correct probe args per shell type; cache result in _cachedShell - findBashBinary(): separate cached bash-only finder used by spawnShell .sh fallback; skips PowerShell binaries even if BASH points to one - spawnShell(): use isPowerShellBin() to select -NoProfile -NonInteractive -File args for PowerShell; .sh scripts fall back to findBashBinary() with a skip-warning if no bash found on Windows observe-runner.js is intentionally unchanged: it always invokes observe.sh which is bash-only; routing it through PowerShell would silently break it. The observe.sh -> observe.js migration is tracked separately. Fixes #2345 * fix(windows): address CodeRabbit and Greptile review comments - Add timeout: 30000 to all spawnSync probe calls in findShellBinary and findBashBinary to prevent hangs on broken/stalled shell candidates - Add -ExecutionPolicy Bypass to PowerShell -File invocation to fix execution on machines with the default Restricted policy (Win10/11) - Add PowerShell availability skip guard to PS selection test (mirrors existing bash skip guard) - Fix no-bash test to keep PowerShell on PATH so the .sh fallback branch is actually exercised rather than hitting shell-unavailable early exit * test: add timeout to spawnSync probes in Windows test skip guards --------- Co-authored-by: Christopher J Diamond <diamondcj@leidos.com> |
||
|---|---|---|
| .. | ||
| auto-tmux-dev.js | ||
| bash-hook-dispatcher.js | ||
| block-no-verify.js | ||
| check-console-log.js | ||
| check-hook-enabled.js | ||
| config-protection.js | ||
| cost-tracker.js | ||
| cursor-session-env.js | ||
| design-quality-check.js | ||
| desktop-notify.js | ||
| doc-file-warning.js | ||
| ecc-context-monitor.js | ||
| ecc-metrics-bridge.js | ||
| ecc-statusline.js | ||
| evaluate-session.js | ||
| gateguard-fact-force.js | ||
| governance-capture.js | ||
| insaits-security-monitor.py | ||
| insaits-security-wrapper.js | ||
| mcp-health-check.js | ||
| observe-runner.js | ||
| plugin-hook-bootstrap.js | ||
| post-bash-build-complete.js | ||
| post-bash-command-log.js | ||
| post-bash-dispatcher.js | ||
| post-bash-pr-created.js | ||
| post-edit-accumulator.js | ||
| post-edit-console-warn.js | ||
| post-edit-format.js | ||
| post-edit-typecheck.js | ||
| pre-bash-commit-quality.js | ||
| pre-bash-dev-server-block.js | ||
| pre-bash-dispatcher.js | ||
| pre-bash-git-push-reminder.js | ||
| pre-bash-tmux-reminder.js | ||
| pre-compact.js | ||
| pre-write-doc-warn.js | ||
| pretooluse-visible-output.js | ||
| quality-gate.js | ||
| run-with-flags-shell.sh | ||
| run-with-flags.js | ||
| session-activity-tracker.js | ||
| session-end-marker.js | ||
| session-end.js | ||
| session-start-bootstrap.js | ||
| session-start.js | ||
| stop-format-typecheck.js | ||
| suggest-compact.js | ||