Six improvements to the testmode harness:
1. Shell passthrough tests use the resolved shell instead of
hardcoded /bin/zsh.
2. Exit code reflects test results (non-zero on any failure).
3. JSON summary line for machine-readable parsing.
4. IPC round-trip smoke (ping, version, unknown-cmd, encode/decode).
5. Extension lifecycle smoke (register + activate files, diff,
git, terminal; theme loading for all four bundled themes).
6. Test categories via CLIDE_TESTMODE dart-define (toolchain, ipc,
extensions, all). Makefile exposes TESTMODE_CATEGORY variable.
Also switches main.dart from bool.fromEnvironment to
String.fromEnvironment so category values other than "true" work.
Co-Authored-By: Claude <noreply@anthropic.com>
Standalone test harness activated via CLIDE_TESTMODE=true dart-define.
Runs a table of existence checks and exec tests against all external
binaries (git, pql, tmux, ptyc, zsh), including zsh-passthrough and
env variants. Results printed to stdout and shown in a minimal UI.
Auto-exits after 15 seconds.
make run-testmode launches it with a 60-second kill timer and pipes
output to /tmp/clide-testmode.log.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>