fix(windows): native Windows support — 0 failures on windows-latest (2.1.1) - #142
Merged
Conversation
kit 2.1 reach — native Windows. Build + ~all tests already ran on windows-latest;
this closes the remaining 17 failures so kit runs natively on Windows (not only WSL2).
Verified cross-platform-safe (macOS suite stays green); windows-latest CI is the
Windows verifier.
- Path handling separator-agnostic: path.isAbsolute (not startsWith('/')),
path.relative containment (memoryDirInsideRepo), path.posix.join for shell-profile
content (mise-path), manual / + \ split for repo-name derivation (clone).
- Bare-tool resolution uses `where` on win32 (mise which fast path already worked).
- Plugin adapters import via pathToFileURL (a bare C:\... path is not a valid ESM URL).
- ~/.kit/bin/kit also emits a managed kit.cmd shim on win32 (the sh wrapper can't run).
- Secret-file hardening asserts the platform guarantee (icacls on NTFS, 0600 on POSIX).
- bumblebee cache-reuse + integrity no longer short-circuit on the platform gate.
- public-surface golden canonicalized (forward-slash + LF, pinned via .gitattributes
eol=lf) so ONE committed snapshot matches macOS/Linux/Windows.
- PLATFORM_SUPPORT.md updated (native Windows builds + passes; residual gaps honest,
e.g. bumblebee binary ships POSIX-only -> honest-skip on Windows).
macOS Node 22: build clean, 1802/1803 (only the known iCloud ' 2' junk), self-audit 0 fail.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…c (no cmd.exe quote bug)
Last 3 native-Windows subtests. (1) generateKitCmdWrapper wrote the marker minus
its leading '# ' so the managed-check missed the shim; emit WRAPPER_MARKER verbatim
after 'rem'. (2+3) clone.test before() used execSync('git commit -m ...') which
cmd.exe tokenizes wrong on Windows -> empty source repo -> clone had no files ->
haskitToml=false + README ENOENT. Use execFileSync('git',[...]) (no shell) so the
setup commit succeeds on every OS. macOS stays green (1802/1803, only known junk).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
✅ Docker image built successfully
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
kit 2.1 reach — native Windows. Verified on a real windows-latest runner via the
windows.ymlprobe loop: 17 → 3 → 0 failures, now 1798/1798 pass. kit runs natively on Windows (PowerShell/cmd), not only via WSL2.Cross-platform fixes (all separator/shell/perm-safe; macOS suite stays green at 1802/1803, only the known iCloud
' 2'junk):path.isAbsolute,path.relativecontainment,path.posix.joinfor shell-profile content, manual/+\repo-name split.whereon win32; plugin adapters import viapathToFileURL.~/.kit/bin/kitemits a managedkit.cmdshim on win32 (marker verbatim).0600on POSIX); bumblebee cache-reuse no longer short-circuits on the platform gate.public-surfacegolden canonicalized (forward-slash + LF,.gitattributes eol=lf) so one snapshot matches all OSes.clone.testusedexecSync('git commit -m \'…\'')which cmd.exe tokenizes wrong on Windows (empty source repo → failing clone); nowexecFileSync('git', [...]).PLATFORM_SUPPORT.mdupdated; residual gaps honest (bumblebee binary ships POSIX-only → honest-skip).🤖 Generated with Claude Code