Repository navigation
Conversation
5 tasks done
…des where the OS has them
ts-morph names a file with `/` on every platform, while node:path builds a module root with the platform's separator. On Windows the builder's containment checks compared the two as text, so no file belonged to any module: mapped modules were never detected, GetMapping and remaps saw no mapped records, pages and resources lost their source module, and a page or resource placed by folder was refused as escaping src. The scaffolded local module's path was also written into antelope.config.ts with `\`. isInsideFolder compares through path.relative, which normalizes separators and drive-letter case, and replaces the startsWith checks in modules.ts, placement.ts and project-config-ops.ts. posixRelative writes the module path with `/`. Both take the path functions as a parameter so a spec runs the Windows branch through path.win32. Tests that compared paths as text now compare them the way Windows reports them, and three reads that rebuild the index run under the file's OP_TIMEOUT instead of mocha's 2 s default, which a Windows runner exceeds.
On Windows npm and pnpm are .cmd shims. execFile without a shell cannot run them, so `npm view`, `npm pack` and `pnpm exec tsc` failed with ENOENT and the store, the update notifications and the MCP typecheck tool swallowed the error. runPackageManager runs a package-manager command with no shell outside Windows. On Windows it passes cmd.exe a command line in which every argument is double-quoted, so cmd.exe and the shim read & | < > ^ ( ) as text, with trailing backslashes doubled. It refuses an argument holding ", %, ! or a control character, which cmd.exe reads even inside quotes. The four call sites move onto it, and the process pins follow. The tests now run on Windows: package-contents packs through the helper, the registry stand-in gets an npm.cmd beside it, and the manifest fixtures no longer name a folder with a double quote.
This branch has not been deployed
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.
Why
dms's CI runs only on Linux, so Windows-only breaks reach developers first. This PR runs the CI on Windows in parallel with Linux and fixes what breaks there (ANT-2185).
Status: blocked. The run was frozen before the
dms-controltests were fixed. The Windows Test job still fails and then hangs on them (see Open).What
ci-node.yml@v1now runs withwindows: true.backend,frontend-test,frontend-verifyandverify-mapgain awindows-latestmatrix leg and use Git Bash as the package-script shell.docs-playgroundstays Linux-only because it builds Linux Docker images.formalstays Linux-only because model checking does not depend on the OS..gitattributes.* text=auto eol=lf, andsymlink=dirfor the.claude/skills/*directory links. The index was already LF everywhere, so nothing is renormalised.fscalls use native paths (engine/file-paths.ts). On Windows,moduleOfFilematched no module, and the project config recordedmodules\erp-tables.npm view,npm packandpnpm exec tscfailed with ENOENT on Windows, becausenpmis a.cmdshim. This hit the module store, update notifications and the MCP typecheck tool.utils/package-manager.tsnow runs them through cmd.exe on Windows, with every argument double-quoted.",%,!or a control character are refused.execFilewith no shell.backend-checks.cjs, the auto-import and playground import checkers, andtest-files.mjs. That script now lists/paths, so the shards match across OSes.ajsthrough Node.OP_TIMEOUTtheir siblings use.Windows-only skip
The MCP credential test asserts mode
0o600only where the OS has POSIX modes (it.skipon win32). Measured: Node on Windows reports0o666(438) afterchmod(0o600), because it only toggles the read-only flag. Restricting the file to its user on Windows needs an ACL change. That is a follow-up.Proof
windows: true: https://github.com/AntelopeJS/dms/actions/runs/43492195752. 9 Windows jobs failed: Node, Test, backend unit, integration and builder:2, builder:1 (cancelled at 20 min with 36 failing), frontend-test shard 2, frontend-verify, and the gate.dms-control(see Open).Open
dms-controlon Windows. Inpackages/dms/bin/control, 30 tests fail: backend-records, backend, backend-mode, build-cache, build-key, journey (a stand-inmongodgives ENOENT) and mongo. The suite then hangs aftermongo.test.mjs, even with--test-timeout=90000. This was seen on a probe run of those tests alone./path with a native path:writes a resource into the module namedwrites a category and a page into the module namedmounts the summary route on a controller whose route map names its routes without itTemporary dependencies
@antelopejs/dms-frontendis pinned to a tarball of main 8e5ca35 (dms-frontend #336 and #337, unreleased) in.tgz-deps/. That makesajs dms verify-sourcebuild its workspace on the project's drive. Swap it for the release that carries 8e5ca35, and note that this commit range also includes dms-frontend #335,fix(auth)!.