You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Every job that touches CrispSorter's own code runs on Linux. `crisp-cloud-rs`
has a windows-2025 leg, but that checks out a different repository, so this
repo had never been compiled or executed on Windows by CI. Five defects
lived in that gap, each of which passes on Linux by construction:
* every CLI verb died with "thread 'main' has overflowed its stack" —
building the clap tree costs more than MSVC's 1 MiB main thread where
Linux gives 8 MiB. `version`, `doctor`, `index stats`, `--help`: the
binary was unusable on Windows, and had been for some time.
* `crispsorter --version` launched the GUI: the argv sniff that picks
CLI-vs-GUI listed `--help` but not `--version`.
* the App-Sandbox spawn guard matched its file list with
`ends_with("tts/mod.rs")` against a backslash-separated
`Path::display()`, so seven of its eight entries could never match —
the "guard passing over an empty set" its own comment warns about.
* WebDAV built nested paths with `PathBuf::push` and percent-encoded the
separator into the URL: `MKCOL /dav/one%5Ctwo` → 501.
* `location.rs` decoded every POSIX `location_uri` into a relative
Windows path, so a .cidx or manifest written elsewhere pointed nowhere.
The smoke step asserts exactly those, and runs each command under an
explicit timeout rather than a plain `run:`. That is not belt-and-braces:
the `--version` failure mode was *launching a GUI*, which on a headless
runner never exits, so a bare invocation would have burned the job timeout
and reported "timed out" instead of naming the cause.
Deliberately narrower than the Linux `rust` job — no crispembed / crispasr
/ translate-*, so no native libraries have to be staged per platform. Those
paths are already built on Linux; what was covered nowhere is whether this
runs on Windows at all. The siblings are still checked out because
crisp-docx-{core,llm} are unconditional path deps and cargo resolves
optional ones too, so `cargo metadata` needs the directories present.
Verified locally on Windows before landing: 1405 lib tests pass with this
feature set, the CLI builds, and the smoke block completes in 8.4 s.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
throw "TIMEOUT: 'crispsorter $($CliArgs -join ' ')' did not exit in ${TimeoutSec}s. A verb missing from cli::SUBCOMMANDS launches the GUI instead of running."
0 commit comments