# First usable Windows build Status: first Windows installer and portable package built and locally installed; unsigned initial release, not production certification. Other-platform and million-record benchmarks are deferred at Karl's request. The normal Windows x64 distribution includes the same hardware-detecting native Google worker, optimized/baseline CPU modules, Vulkan provider and loader, and app-local Microsoft C++ runtime. It is not a special CPU distribution. VM inference and WebView rendering checks force CPU/software operation. Real GPU execution and clean-machine/older-CPU compatibility remain unexecuted. ## Build procedure The checked-in Tauri bundle setting remains unchanged. An ignored temporary override enables NSIS and the silent WebView2 download bootstrapper: ```json {"bundle":{"active":true,"windows":{"webviewInstallMode":{"type":"downloadBootstrapper","silent":true}}}} ``` From `apps/desktop`, with one Cargo job: ```powershell $env:CARGO_BUILD_JOBS = '1' $env:SEARCHI_FORCE_CPU = '1' $env:WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS = '--disable-gpu --disable-accelerated-video-decode' npm run tauri -- build --features custom-protocol --bundles nsis --config ../../.searchi/qa/windows-first-release-config.json ``` The explicit `custom-protocol` feature is essential: this CLI invocation did not add it automatically, and the first attempt correctly failed the release guard before packaging. The successful artifact must contain the embedded frontend rather than depend on a development server. The portable ZIP is prepared from that same executable using `python tools/package_windows.py`, which verifies normal CPU/GPU dependency inventory, architecture, pinned decoder provenance and file hashes. Models, personal settings and indexes are excluded. Managed Google assets download on first use; cached, hash-verified assets are reused. ## Evidence to record before publication - [x] Completed embedded-frontend Release build and source/frontend/executable hashes. - [x] Portable ZIP member integrity and pinned decoder startup. - [x] Extracted normal worker auto-to-CPU query and baseline-only fallback. - [x] Extracted app starts outside the source checkout with isolated data and model cache, and genuine local Google readiness/index generation. - [x] Installer bytes/hash and generated resource mapping inspected. - [ ] Execute installation/upgrade/uninstallation on a clean Windows machine. ## Executed Windows VM evidence, 2026-10-13 Source commit: `5eeba29`. The embedded frontend bundle is `index-CtE-o2qW.js`, SHA-256 `deb3cdbeb4c4d34f17c0249674b37f7fd5cbdf7a01fef50c76d2eb50870817c5`. Release compilation completed in 1m58s after dependencies were built. | Artifact | Bytes | SHA-256 | | --- | ---: | --- | | Portable ZIP | 145,419,558 | `dbab40f77902a5183d986222fadd8417aa46f053ee6066d73a06e7f893692060` | | Embedded-frontend executable | 23,950,336 | `9f9243e15dc7fc907c44af37e45226a24eed642a32e5dc82959fab92516ff564` | | NSIS x64 installer | 98,894,969 | `1494372cfd9b87dd4de38fd347fe0d18f886a51542e2f49218699aa84979bb3d` | The ZIP contains 39 individually hash-verified application/resource files. No models, user settings or indexes are included. The normal worker SHA remains `c01cb3ec13cfca722ee768e8350e1399a8b9a4d14a24a35adc3473a5cfc82a73`. The real extracted worker ran its query role with 512 tokens, `device=auto` and a child-only disabled Vulkan provider. It selected CPU, loaded no Vulkan module and returned a finite normalized 768-dimensional Google code-query vector. Optimized `ggml-cpu-cascadelake.dll` and baseline-only `ggml-cpu-x64.dll` both passed, including a Unicode relocation directory. Startup/query/exit took 1.722s and 1.844s respectively; these are not warm-search or first-UI-input benchmarks. The packaged pinned FFprobe helper also started successfully. The extracted desktop launched outside the source tree with isolated settings, data and hardlinked hash-verified Google assets. Two owned text/code fixtures were indexed through the shared engine. The app automatically published actual Google generation 1 with two chunks and a 6,544-byte ANN blob; publication was observed 10.106s after launch. It remained alive for another five seconds. The owned application process tree was then deliberately terminated. This proves native process/setup/indexing operation, not visual interaction or paint timing. Ignored raw evidence: `.searchi/qa/windows-first-preview-worker.json`, `.searchi/qa/windows-first-preview-baseline.json`, and `.searchi/packages/first-preview-qa-Gemäß_日本/result.json`. The initial NSIS attempt failed after its official ZIP was downloaded and hash verified, during tool extraction (`access denied`). A bundle-only retry uses the cached compiler and preserves the verified executable bytes with `--no-binary-patching`; it does not disable OS security or clear caches. That retry completed successfully with official NSIS 3.11. Its generated script installs app-local worker/CPU/GPU/decoder resources and downloads the Microsoft WebView2 bootstrapper when needed. The produced installer is `apps/desktop/src-tauri/target/release/bundle/nsis/searchi_0.1.0_x64-setup.exe`. No installer was executed during this evidence run: even a custom destination registers uninstall information and creates user shortcuts. User installation is handled separately. There is no signing, clean-machine WebView2 download, upgrade or uninstall claim. Native visual interaction, fresh-machine WebView2 acquisition, installer upgrade/uninstall, SmartScreen/signing and actual GPU performance remain separate checks. A working preview does not close those production release gates. ## Local DEV-WIN11 installation The installer was executed on the existing Windows 11 development machine. Installation with an explicit `C:/Users/karl/Applications/searchi` destination returned exit code zero; uninstall registration reports version 0.1.0 at that location. The installed executable SHA matches the packaged executable above. An explicit destination avoids this Codex MSIX host's AppData filesystem virtualization. Existing local searchi data was preserved in an independent `C:/Users/karl/.searchi/desktop` profile; both genuine Google assets were hash-verified and hardlinked into the independent managed cache. No user folder was selected automatically. The desktop launcher sets only process-local CPU and software-WebView flags for this VM; the distributed package remains the normal hardware-detecting build. The installed app was started with a native `searchi` window (PID 7716, window handle 8324222) and its packaged query worker (PID 19864), using one CPU thread and the independent cache. A desktop shortcut was created. This demonstrates local installation/startup and package selection, not a clean-machine test or native visual interaction audit. The app is left running for Karl to use. ## Published download [v0.1.0](https://tea.karlcom.de/karl/searchi/releases/tag/v0.1.0) is published as an initial Windows prerelease, targeting commit `d4f7e39`. The installer and its SHA256SUMS.txt are publicly downloadable. Both were streamed again without credentials and matched their complete byte counts and SHA-256 values; the installer digest is the one recorded above. The release tag's remote Git SHA also matches the intended commit. Gitea Actions remain disabled. The 145 MB portable ZIP was rejected with HTTP 413 by the server upload limit. It remains a verified local artifact; this release publishes only the 99 MB installer and its checksum. No server limits were changed.