Fixes
Issue #78: install.sh CRLF line endings
- Added .gitattributes to force LF for *.sh, *.py, *.json, and 20+ file types
- Prevents git autocrlf from converting install.sh to CRLF on Windows clone
Issue #57: Token optimizer targets .claude instead of .opencode
- Process tree scan now uses ps args= (full command line) instead of comm=
- Detects wrapper launches: node /path/opencode, bun run opencode
- Added _opencode_config_signal() tertiary fallback: checks ~/.config/opencode/ with real content
- Claude plugin env vars suppress the config signal (Claude takes priority)
utf8_io.py: os.execv fails on Windows with spaces in path
- Use subprocess.Popen on Windows (quotes paths correctly)
- Keep os.execv on Unix (no quoting issue)
- Wrap child.wait() in try/except, flush streams before os._exit
Code quality (torture room gauntlet — 16 agents, 0 findings)
Code quality (torture room gauntlet — 16 agents, 0 findings)
riority)
de/ with real content
logging
- Narrowed all bare except E- Narron t- Narrowed all bare except E- N/59 tests pass, 0 regressions