command and env keys/values are str()-coerced before Popen (pasted JSON can legally carry numbers that never round-trip through the editor).
spawn_test is now a fail-safe wrapper around _spawn_test_impl: any unexpected exception returns {"outcome": "error", ...} instead of escaping the tester thread — previously the GUI's Test launch / Test all buttons were left permanently disabled because done never fired.
New outcome "error" maps to FAILED in health_from_spawn_result and to the generic failure styling in _on_spawn_done (no GUI change needed).
3 new tests: numeric env value round-trip, non-string command, engineered internal error.
Closes #34.
- `command` and `env` keys/values are `str()`-coerced before `Popen` (pasted JSON can legally carry numbers that never round-trip through the editor).
- `spawn_test` is now a fail-safe wrapper around `_spawn_test_impl`: any unexpected exception returns `{"outcome": "error", ...}` instead of escaping the tester thread — previously the GUI's **Test launch** / **Test all** buttons were left permanently disabled because `done` never fired.
- New outcome `"error"` maps to FAILED in `health_from_spawn_result` and to the generic failure styling in `_on_spawn_done` (no GUI change needed).
- 3 new tests: numeric env value round-trip, non-string command, engineered internal error.
166→169 tests pass; ruff check/format clean.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #34.
commandandenvkeys/values arestr()-coerced beforePopen(pasted JSON can legally carry numbers that never round-trip through the editor).spawn_testis now a fail-safe wrapper around_spawn_test_impl: any unexpected exception returns{"outcome": "error", ...}instead of escaping the tester thread — previously the GUI's Test launch / Test all buttons were left permanently disabled becausedonenever fired."error"maps to FAILED inhealth_from_spawn_resultand to the generic failure styling in_on_spawn_done(no GUI change needed).166→169 tests pass; ruff check/format clean.
🤖 Generated with Claude Code
8309e42dd8toc7b2c90518