Problem
Currently, CI only runs tests on ubuntu-latest. Windows binaries are built in the release workflow but never tested. This means Windows-specific bugs (path separators, file locking, symlinks, worktree paths) go undetected until users report them.
Current State
| Job |
ubuntu |
macOS |
Windows |
| cargo test |
✅ |
- |
- |
| cargo build |
✅ |
✅ |
- |
| Release binary |
✅ |
✅ |
✅ |
Proposal
Step 1: Add Windows to CI matrix (low effort, high impact)
Expand test and build jobs in ci.yml to include windows-latest:
test:
name: Test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
build:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
Step 2: Fix failing tests (medium effort)
Identify and fix Windows-specific issues:
- Path separator handling (
/ vs \)
- File locking behavior differences (
.parsec/state.json)
- Symlink permissions
- Sibling worktree layout path resolution (
../repo.ticket/)
- Process signal handling
Step 3: Add Windows-specific tests (optional)
- Path handling edge cases (
C:\, UNC paths)
cfg(windows) branch coverage
Acceptance Criteria
Notes
- Windows runners are 2x cost vs Linux, but free for public repos
- Step 1 alone provides immediate visibility into what's broken
Problem
Currently, CI only runs tests on
ubuntu-latest. Windows binaries are built in the release workflow but never tested. This means Windows-specific bugs (path separators, file locking, symlinks, worktree paths) go undetected until users report them.Current State
Proposal
Step 1: Add Windows to CI matrix (low effort, high impact)
Expand
testandbuildjobs inci.ymlto includewindows-latest:Step 2: Fix failing tests (medium effort)
Identify and fix Windows-specific issues:
/vs\).parsec/state.json)../repo.ticket/)Step 3: Add Windows-specific tests (optional)
C:\, UNC paths)cfg(windows)branch coverageAcceptance Criteria
cargo testpasses onwindows-latestin CIcargo build --releasepasses onwindows-latestin CINotes