Specify a Windows installer built by the Linux CI

The tree is closer to Windows than a Linux-only project usually is:
every image library, the TLS stack and the inference engine are pure
Rust, and dr-plat already keeps the Linux-only code behind cfgs with a
loud fallback where none exists for another platform. What remains is
a short list above dr-plat — five XDG path lookups, an xdg-open, the
secret store's third implementation, the models' lookup beside the
executable — and none of it touches core, which is the NFR-PORT-3 test
this would be the first real run of.

docs/windows.md decides the GNU target over MSVC-via-xwin, Vulkan only
as on every other platform, a per-user NSIS installer that leaves the
library alone on uninstall, and a CI leg in the shape of the Android
one. It is explicit about what a runner with no Windows can verify —
that it links, is PE32+, starts under Wine and installs under Wine —
and what it cannot, which is everything involving a real GPU driver.
Three FR-PLAT-WIN requirements and a channel row record the decisions;
the ordering puts a first cross-compile on the developer machine before
any container exists, because the list of cfg gaps is a reading of the
source and the compiler's list will be longer.
This commit is contained in:
2026-09-11 23:30:16 +02:00
parent a2c7789007
commit b718c70b11
4 changed files with 427 additions and 5 deletions
+18
View File
@@ -1009,6 +1009,24 @@ protocol is unavailable, FR-DSP-8's stated fallback applies.
portals and credential storage uses the Secret Service portal, both verified to satisfy FR-NC-2 and
FR-CAT-1 within the sandbox.
#### Windows
Specified in [windows.md](windows.md); a stated channel under NFR-COMPAT-2, not a v1 one.
**FR-PLAT-WIN-1 — Known folders.** Configuration under `%APPDATA%\darkroom`; data, cache and
state under `%LOCALAPPDATA%\darkroom`. Nothing under the profile root and nothing relative to the
working directory. The layout beneath those roots is the same as under XDG, so a library directory
moves between platforms unchanged.
**FR-PLAT-WIN-2 — Installer.** A per-user installer that needs no elevation, registers an
uninstaller, and whose uninstaller removes what the installer wrote and nothing the application
wrote. Models are installed beside the executable and found there last, after the user's own
directories.
**FR-PLAT-WIN-3 — Built from Linux.** The Windows binary and its installer are produced by the
Linux CI from the same commit as every other channel, with no Windows machine in the build.
Verification on Windows is a release step, recorded per release, not a build step.
### 3.9 Culling
Per D11 this is the product's primary differentiator, not an incidental capability.