Commit b96f713
Add Windows support and CI (#7)
* Add Windows support via interprocess crate
- Replace Unix domain sockets with interprocess local sockets (Unix
sockets on Unix, named pipes on Windows)
- Add process.rs module for cross-platform process management
- Move nix crate to Unix-only, add windows-sys for Windows
- Update force_stop() to use platform-specific termination
- Document Windows limitation: no graceful shutdown (immediate kill)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add comprehensive test coverage for identified gaps
- Add 9 tests for ErrorContextBuffer (circular eviction, cloning, timestamps)
- Add 4 process termination tests (SIGTERM→SIGKILL escalation, Windows)
- Add 8 integration tests (panic recovery, large output, stale cleanup, stress)
- Add 2 version tests (mismatch detection, protocol behavior)
- Add Debug derive to TerminateResult for better test output
Total test count increased from ~30 to 57 tests.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add GitHub Actions CI with fmt, clippy, and nextest
Runs on Linux, macOS, and Windows.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix clippy warnings and formatting issues
- Fix collapsible if statement in client.rs
- Use inspect_err instead of map_err in client.rs
- Use assert! instead of assert_eq! with bool literal
- Remove redundant trim() before split_whitespace()
- Use .first() instead of .get(0)
- Fix redundant guards in match statements
- Apply cargo fmt fixes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix unused imports on Windows
Add #[cfg(unix)] to imports only used on Unix:
- bail, Duration, sleep in process.rs
- fs in transport.rs
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix graceful timeout skipped when < 100ms
Use ceiling division so any positive timeout performs at least one
iteration before escalating to SIGKILL.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Remove redundant INVALID_HANDLE_VALUE checks on Windows
OpenProcess returns null on failure, not INVALID_HANDLE_VALUE.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add owner-only security descriptor for Windows named pipes
Apply SDDL security descriptor D:P(A;;GA;;;OW) to restrict pipe access
to the owner only, equivalent to Unix 0o600 socket permissions.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix Windows process_exists to check actual process status
Use GetExitCodeProcess to verify process is still running, not just
that OpenProcess succeeds. Fixes test_terminate_spawned_process_windows
which was failing because OpenProcess can succeed on terminated
processes during kernel cleanup.
Also fix clippy warning by using div_ceil().
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fmt
* Fix STILL_ACTIVE type mismatch on Windows
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Complete test_multiple_commands_same_connection test
Actually send a second command and verify the connection is closed,
confirming the server's one-shot semantics.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Bump windows-sys to 0.61.2
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add cargo-husky for git hooks
- pre-commit: runs cargo fmt --check and clippy
- pre-push: runs cargo nextest
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Bump version to 0.6.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 2b73324 commit b96f713
16 files changed
Lines changed: 1309 additions & 188 deletions
File tree
- .cargo-husky/hooks
- .github/workflows
- examples
- common
- src
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
3 | 4 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
8 | 15 | | |
9 | 16 | | |
10 | 17 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
21 | 24 | | |
22 | 25 | | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
23 | 33 | | |
24 | 34 | | |
25 | 35 | | |
26 | 36 | | |
27 | 37 | | |
28 | 38 | | |
29 | 39 | | |
| 40 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
| 33 | + | |
34 | 34 | | |
35 | | - | |
| 35 | + | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
86 | | - | |
| 86 | + | |
87 | 87 | | |
88 | | - | |
| 88 | + | |
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
| |||
0 commit comments